Download, unpack, cd into it:
$ cd ~/installs/gopherus-1.1 $ sudo apt install libsdl2-dev $ cp Makefile.lin Makefile $ make
And there is the binary. make install does nothing, but it would be easy to make a soft link in your local bin directory.
$ gopherus gopher://tilde.club/1/~mz721
And that’s it. There’s also gopherus-sdl.
Useful example gopher code
is used to beat https://gopherproxy.meulie.net/sdf.org/0/users/jstg/sample_gophermap.txt
View gopherspace in browser at: http://gopher.floodgap.com/gopher/gw
Ever heard of a Sanplé 3000EL? I am guessing EL means electric.
Advertised as ‘keys stuck’ for free. Clearly otherwise in very good nick. I’d almost say perfect.
Plug in, turn on, verify that the belt is in good nick but the fluted rod cannot turn. Notice the first problem — return band is all over the place…
Slip the band back into place; that seems to have fixed some of the problems, but the return still doe not work. Time to dismantle… undo screws in middle of feet and under carriage ends. Also undid the screws that that hold the plastic cover on the carriage and removed that.
Now, tilt and remove the top.
With the top off; note the conventional ribbons rather than some custom cassette (see Brother 3912) — good. Very plasticky — the spool mountings, for example, are almost entirely plastic. I’d guess this is a very late example of an electric basket typewriter.
Space bar works, return does not, nor do any letter keys — shaft is not turning. Looks like the return key is not releasing and the lug is not letting go of the end of the fluted shaft.
Following a trail of rods and levers shows that a sliding strip at the back is connected to the carriage stop. When the carriage returns, it should hit the stop, which disengages the lug in the picture above and allows the fluted rod to rotate. This is currently not happening. If I give the carriage a push, I can force it to work.
Give the strip a drop of sewing machine oil and clean the carriage movement to make it move more easily so it can whack into the stop harder and so release the return more cleanly.
That sort of works; it looks like the return and draw bands could use more tension; or just a clean and some use. Gave some key points a thorough clean and a light oil, wiping off as much oil as I could after application. Yes, that seems to help. Works pretty well now.
The typing feel is very light once it works. The keys respond well, the sound is not too loud, and the alignment is adequate though no more. The electric return is slow. Perhaps the springs have got old and soft, I don’t know. But otherwise it seems to perform well. There is a lug on the right for attaching a spring, but it’s not clear where it would go. There’s no exclamation mark — I guess we use a single quote ‘ and backspace and a stop . to get !
Because the return spring seems too weak, when I hit return close to the start of a line, the carriage does not get up enough speed to actuate the return release, ad the thing jams up. The solution is to tug on the carriage end to trip the release. If you’re too slow, the drive band may slip off … this seems to be improving with use.
I can’t find out much about it. There are no identifying marks on the chassis anywhere (that I can find). Is it a Citizen? Nakajima? I’ve no idea, though the repeat spacer makes it look like a cheaper Brother (were Brothers ever this plasticky?). On the typebars, between the upper and lower case letters, is a thing that could be a 10 or a 70, but looks more like a tent peg followed by a high o, and below that what looks like an underlined AR with the letters merged, kind of like they’re back to back. Apart from the badge on the casing and the serial number on the back:
Made in Japan, Ser. No. 006375
that’s it. No more. For free, it’s very nice. Still a bit gummy, though.
Oh, and here’s the character set, though low quality — I’ve not yet replaced the ribbon and so the type was very faint and the scan was very noisy. I’ve used ImageJ to increase the contrast, and it’s still not very good. Nothing interesting in this font.
Virtual terminals need PSF fonts.
Construction of the BDF fonts is explained elsewhere (https://darrengoossens.wordpress.com/2017/03/08/the-sharp-mz-721-font-in-a-terminal-emulator/); they were converted to PSF by opening in gbdfed and exporting to PSFU. Nothing fancy.
The files are all just versions of the same font, but in different sizes. Note that outside of the US keyboard characters, the encoding is a bit random!
MZ7int1_recode_double.psfu MZ7int1_recode_fiveontwo.psfu MZ7int1_recode.psfu MZ7int1_recode_quad.psfu MZ7int1_recode_sixteenonsix.psfu MZ7int1_recode_triple.psfu
They could be copied to wherever your *.psf and *.psfu files live on your system, but the easiest way to test them out, at least on Debian (untried elsewhere!) is simply to use setfont. For example:
$ setfont MZ7int1_recode_double.psfu
The character set is shown here:
The glyph positions outside of the US keyboard characters are not all good. I really need to do something about that… the drawing characters especially would be better in the right slots, since ncurses applications would work a lot better.
I was trying to set up tin to read Gmane and Usenet. They don’t cover the same territory.
In the end, I found that I just need to have two different configurations for tin.
$ vim ~/.tin/newsrctable
and made it look like this:
$ cat ~/.tin/newsrctable news.gmane.org .newsrc.gmane gmane news.eternal-september.org .newsrc es
So now the list of subscribed Gmane groups will be written to ~/.newsrc.gmane, not .newsrc
I also created ~/.newsauth to hold the authentication information for news.eternal-september.org:
$ cat .newsauth news.eternal-september.org PASSWORD USERNAME
I then created 2 little scripts and put them in ~/bin:
$ cat ~/bin/myes tin -r -A -g es $ cat ~/bin/mygmane tin -r -g gmane
So, the first says:
-r = read a remote news server
-A = get authentication information — if ~/.newsauth is present, use that, otherwise prompt the user
-g es = look up entry ‘es’ in ~/.tin/newsrctable
The Gmane one is much the same but does not need authentication.
This seems to work.
Copied .newsrc and .newsrc.gmane to backups then tried to get it to work in Alpine.
In Alpine, I went (S)etup (C)onfig and checked ‘Enable Multiple Newsrcs’, then went to (S)etup Co(L)lections and (A)dded the following:
Nickname : EternalSeptember Server : reader80.eternal-september.org:80/user=USERNAME/service=NNTP Path : #news. View :
Nickname : Gmane Server : news.gmane.org/service=NNTP Path : #news. View :
Then went to Folder List and under EternalSeptember chose:
[Select Here to See Expanded List]
This asked me if I wanted to rename .newsrc. I said yes and it renamed it to ‘.newsrc-reader02.eternal-september.org‘. It then showed my subscribed groups — good!
But when I went to expand Gmane, .newsrc was gone (having been renamed) and it found nothing, even though I have the .newsrc.gmane from tin — because why would Alpine know to look for that file? So, I tricked it. I exited Alpine and typed:
$ cp ~/.newsrc.gmane ~/.newsrc
The opened Alpine again, and went straight to the Gmane list and expand it. It went to the default file for the list of groups — .newsrc — and then asked me if I wanted to rename it. I said yes.
So now I have 2 .newsrc files, one for each NNTP server:
But, the original .newsrc files I set up using tin have been renamed away. But that is OK. I can now edit
and change the names in that file to match the ones created by Alpine. That way, I can read mail in either application — handy, since Alpine aggregates but tin is better for managing subscriptions. So here is ~/.tin/newsrctable:
$ tail -4 ~/.tin/newsrctable #news.gmane.org .newsrc.gmane gmane #news.eternal-september.org .newsrc es news.gmane.org .newsrc-blaine.gmane.org gmane news.eternal-september.org .newsrc-reader02.eternal-september.org es</.pre>
And that’s the way to access some slowly dying bits of the internet.
I rigged up a dodgy way to print to the Brother EP44 using a simple three-wire cable. The problem with that is the printer cannot keep up with the serial port and the text starts to go funny.
Later, trying to play with it as a terminal device, I made a null modem cable. I tried using that as a print cable, and because it has the full complement of wires for flow control, if I set the printer spooler to use XON/XOFF (software) flow control, I can print using lp without using a script that sends one line at a time — the printer can use the extra wires to signal to the computer to wait.
The end result is that printing to the machine is very simple — if the full null modem cable is used. The 24-pin typeface is quite nice and very readable, and the only disadvantage really is the thin thermal paper (fax roll) that I have to use.
Printing from GUI applications does not work unless (like, say, nedit) they call lp to send the job. Using the CUPS browser interface to set up the printer works, but I have to use lp to send the job. Maybe I can figure it out, but it’s not really important.
The EP44 is a very portable printer. Works for ages off its batteries, or can even be run from the 5V output from a USB powerpack, if you don’t mind butchering a USB cable, as shown on YouTube.
It’s just a curiosity, but an impressive little one.
Okay — modifying the AlphaSmart 2000 with a stick and some tape. I say ‘modifying’ because I don’t like the word hacking. It’s kind of pseudocool. I think the phrase ‘lifehack’ should be hacked to death.
But anyway. There is one massive design flaw of the 2000, at least when it is being used as a portable device chucked carelessly into a backpack. It’s old now and uses a PS/2 cable to type the text into a computer — which is fine, plenty of machines have PS/2 ports still, and PS/2-to-USB adapters are cheap. It’s in that nice zone where it’s useful but kind of worth little (at most $20 on ebay). So they are perfect for taking places you might hesitate to take a nice machine. Problem is, the on/off key is exposed (it’s just another keyboard key, at the top-left where Esc would usually be) and gets pushed and jabbed by other items in the bag and the thing turns on and off over and over again and you end up with a string of nonsense (or just one character over and over again), and since it is an older AlphaSmart, you have to delete the unwanted characters one by one using backspace (it calls it delete, but it is really backspace — the thing has got some kind of Mac’s disease; symptoms include a curly command key, ⌘, and a company address in Cupertino). That is clearly a pain. The newer ones (sorry, the ‘newer’ ones) — like the Neo — have a two-button-on option, whereby they won’t turn on unless you hold down Enter then on/off.
No such option on the 2000, so for the 2000 the simplest answer is to use a bit of tape and attach a Paddle Pop/Icy Pole/iced lolly/popsicle/icy pop (choose your local term, sorry if I’ve left it out) stick over most of the button, leaving just enough poking out to turn it on and off. Version 1 used Sellotape (ie sticky tape). Version 2 stuck some blue insulation tape over the stick so you can’t tell it’s a stick. Now that’s technological advancement!
Works a treat. Now the old thing can go in my bag and only turn on when I want it to, not when it gets bumped. It’s so light and easy to carry, has space for 8 files and batteries last months — recommended for typing and hiking, typing and biking, that kind of thing.
The FreeDOS edlin code is clearly very carefully written to allow cross-platform use. For example, it can be readily and simply compiled for Windows 10. It will also compile on a POSIX system — I’ve used Cygwin. That means I have an editor that will work on pretty much any system I’m ever likely to encounter. Impressive.
First I got the FreeDOS edlin code from here: https://sourceforge.net/projects/freedos-edlin/
I installed CodeBlocks with gcc from here: https://www.fosshub.com/Code-Blocks.html
Then I opened a CMD.EXE window and (temporarily) added the path to the gcc binary to my path:
C:\> path=%path%;C:\Program Files (x86)\CodeBlocks\MinGW\bin
Then I went to where the edlin code was unzipped and …
C:\edlin>copy config-h.bc config.h C:\edlin>make
And that was it! Now can put edlin.exe into some directory and away I go!
C:\>which make C:\Users\username\installs\getgnuwin32\GetGnuWin32\gnuwin32\bin\make.EXE C:\>which gcc C:\Program Files (x86)\CodeBlocks\MinGW\bin\gcc.EXE
So it is getting make from gnuwin32, but gcc from CodeBlocks, which installs MinGW. So what I have done in my ignorance seems to need gnuwin32 (http://gnuwin32.sourceforge.net/) to be installed and in your path as well (which also comes from gnuwin32).
Hybrid, but it works.
C:\edlin>copy edlin.exe \users\username\bin
And it is in my path (only 100 kB).
When compiled for, say, Cygwin, the commands are case sensitive, so that 23,43l needs to be 23,43L.
edlin is also scriptable using input redirection.
C:\> type edlin.inp i insert lines That is line 1 That is line too. . l list lines 1,2rThat,This 1,1r1,1. l 2i Insert a line before line 2 New line in front of line too. . 1,1,3m Move lines 1 to 1 to above line 3 l 3,3,3,1c copy line 3 3,4,3,c copy lines 3 and 4 w q
C:\> edlin blarg < edlin.inp edlin 2.17, copyright (c) 2003 Gregory Pietsch This program comes with ABSOLUTELY NO WARRANTY. It is free software, and you are welcome to redistribute it under the terms of the GNU General Public License -- either version 2 of the license, or, at your option, any later version. blarg: 0 lines read * : : : *1: That is line 1 2:*That is line too. *1: This is line 1 2: This is line too. *1: This is line 1. *1:*This is line 1. 2: This is line too. * : : **1: New line in front of line too. 2: This is line 1. 3:*This is line too. ***blarg: 6 lines written C:\> type blarg New line in front of line too. This is line 1. This is line too. This is line too. This is line too. This is line too.
Note, though, that if the file (blarg in this case) is not empty, edlin will open it and apply the commands to the existing file.
The HP 200LX has a serial port on the side. It’s little and rectangular, but pretty standard apart from that. Since I have acquired an appropriately vintage serial printer, I thought I’d give printing from the LX a try.
It turns out to be remarkably simple once the hardware is in place.
The printer has a female DB25 plug on it. I had an old serial line that had a male DB9 (DE9) on one end and a female DB25 on the other, but I also have an adapter that will make a male DB9 into a male DB25. Thus, it seemed to me I could put a rectangular plug on the end of the cable attached to the male DB9, then convert that to DB25 and plug it into the printer.
The first way I tried to get a plug that would fit the 200LX serial port was using a 5 x 2 section of IDE ribbon connector — but the pin spacing is too big by a factor ot 5/4 (4 pins fit in the space where 5 need to go). Purely by chance, I found a broken Conner CP2121 hard drive, and you can see that on the PCB there are some pins and on them is a sort of socket plug thingy (see, I know all the technical terms). Since the drive was cactus, I pulled this off, filed it down to be 5 x 2 and found that it fitted perfectly!
Soldering the wires on was tricky, but since I was making a 3 wire null modem (see this page), I did not need to deal with all of them. I decided to solder them all because I might want to make up a full handshaking cable at some time, but I could not use them all because the DE9 was missing some wires. I think it was a commercial ‘dumb’ null modem cable or something. Checked for continuity and crosstalk frequently.
I then used a multimeter to check which wire went with what pin on the DB9 plug, and soldered the two halves together to get my LX null modem cable. The main challenge is really anchoring the wires such that you don’t break the connections when pulling out the plug (my main tactic — very subtle — is to use lots of tape). The other trick is that a rectangular plug can be put in upside down. The LX socket has a rebate in the top edge to prevent this, so I glued and taped a waste bit of wire insulation to the appropriate side of the plug so it would only go in one way. The other trick is to remember that the pin numbering you see on the LX has to be mirrored (right to left become left to right) when numbering the wires on the plug.
Here is a picture of the final cable — hardly a professional job, but I could confirm using a multimeter that the three wires I needed (2-3, 3-2 and 5-5) were unbroken, and that there was no crosstalk between wires. Ready to go!
I set the printer to 300 baud (it is very old), 8 data bits, no parity.
I used the Setup menu on the LX to turn on the COM1 port (to save batteries, I keep this turned off whenever I am not actually using it) and to configure the printer. The old printer is plain text, so Epson FX-80 is the most suitable of the three printers built into the LX; chose 300 baud.
Saved all the changes and exited Setup.
Opened Memo, opened a memo and sent it to the printer. No worries! Almost … the printer is really a typewriter, and it prints slowly and has only 160 bytes (not KB, B) of a print buffer, so even at 300 baud the characters are soon coming too fast for it. It can only print small files, or bits of a file. But I can print from:
- Lotus 123
- And probably other things if I could be bothered.
What about printing from the command line?
Opened the DOS prompt and typed:
a:\> mode com1:300,n,1,8,b
Now, it is tempting to then use mode to redirect the printer (lpt1:) to the COM1 port, but Setup has already done this, so now I just need to go:
a:\> copy file.txt lpt1:
the serctl program that comes with the LX can turn the serial port on or off, wired or infrared, from the command line.
So there it is, the LX can print to the EP44. There was one other thing to try. The LX comes with a terminal program, and the EP44 can store 2 pages of text in its own memory, Can the EP44 text be dumped into the LX?
If I run the terminal program, set the baud rate to match the typewriter, and then start capturing the session (but without echoing local commands to the file!) then I can hit ‘Text’ on the typewriter and the contents of its memory will appear on the screen of the LX and then in the capture file.
Thus, the battery-powered HP 200LX can be paired with the battery-powered (but much larger) EP-44 in some weird kind of 1990s mobile office situation.
Serial port pinout
[1 2 3 4 5 ]
[6 7 8 9 10]
1 – DcD
2 – Rx
3 – Tx
4 – DTR
5 – GND
6 – DSR
7 – RtS
8 – CtS
9 – RI
10 – Shield ground