Today I present to you the Silver Reed EB-50. Made in 1985, this thing has a bit of an identity crisis. It’s a printer, a plotter and a typewriter all in one. The reason I got it was because it uses the same tiny ball-point pens that the Commodore 1520 printer/plotter uses. However, this prints on normal 8.5″ wide paper. It’s also very portable, has a lid that covers the keyboard and a flip out handle. It can run on batteries (5 x D cells OMG heavy) or on DC 7.5V power (center negative in case you want to know). For $9.99 it was a bargain curiosity that I couldn’t pass up.
In normal typewriter mode, you press a key and it will “draw” that character in one of 3 sizes, styles or directions in one of 4 colors. You can position the print head anywhere you’d like to print text. In addition, there are function keys to create graphs, right on the typewriter. Pie charts, bar graphs and line graphs are simple– select the type, enter the data points and it prints a graph at the print head position. Pretty clever for something that works sans computer.
Switch it to printer mode and now a computer takes over via the parallel port. This is where things got weird. I found reference to someone that wrote a program to convert HPGL plotter files to ones that printed on this one. This was key since there was no manual and I ran out of internets. But the file was locked up in a “drivers” ad supported nightmare of a website that had me install some bullshit driver manager on Windows to “install” a C code source file. What-fucking-ever. It’s included below in you want it.
A quick Processing sketch later and I’ve produced some output on it from my Mac using an old PowerPrint serial to parallel adapter via a KeySpan USB to serial adapter. Lots of adaptation, but what do you expect from a nearly 26 year old printer.
# hp2eb50.c #include <stdio.h> #define SCAL(x) (((x)+halfscale)/scale) #define NUMV(x) ((x)=='-' || ((x) <= '9' && (x) >= '0')) #define SP ('S'<<8)+'P' #define PU ('P'<<8)+'U' #define PD ('P'<<8)+'D' #define PA ('P'<<8)+'A' #define IW ('I'<<8)+'W' #define SC ('S'<<8)+'C' #define LB ('L'<<8)+'B' FILE *source, *plotter; short c,i,j,pen,scale,x1,x2,y1,y2,hx,hy,halfscale; short befehl,ende,rot, colour[] = {0,1,2,3,0,1,2,3}; char param[100], *output; void upcase(s) char *s; { register char c; register int i=0; while ((c = *(s++)) && i<99) { param[i++] = (c>='a' && c<='z')? c-'a'+'A' : c; } param[i] = 0; } short get_num() { register short c,x=0; short s; if (ende) return(0); else { while(((c = getc(source)) & 0x1ff) <= ' '); if (c == '-') { s=-1; c = getc(source); } else s=1; while (c >= '0' && c <= '9') { x = x*10+c-'0'; while(((c = getc(source)) & 0x1ff) <= ' '); } if (c == ';') ende = -1; return(x*s); } } void rotate() { register short h; if (rot) { y2 = y1; h = x1; x1 = y1; y1 = -h; } } main(argc,argv) int argc; char *argv[]; { if (argc<2) { printf("Usage: %s <hpgl-file> [SCALE <scale>] [ROT] [COLOUR <n1..n8>] [TO <output filename>]n",argv[0]); exit(0); } rot = 0; output = "par:"; for (i=2;i<argc;i++) { upcase(argv[i]); if (!strcmp(param,"ROT")) rot=1; if (!strcmp(param,"SCALE") && i<argc-1) { scale = atol(argv[++i]); if (scale == 0) scale = 1; } if (!strcmp(param,"TO") && i<argc-1) output = argv[++i]; if (!strcmp(param,"COLOUR") && i<argc-1) { for (i++,j=0;j<8;j++) colour[j]=(argv[i][j]-'0') & 0x03; } } halfscale = scale/2; if (!(source = fopen(argv[1],"r"))) { puts("Sorry - Can't open file!"); exit(0); } if (!(plotter = fopen(output,"w"))) { puts("Sorry - Can't open output file"); fclose(source); exit(0); } pen = 0; fputc(18,plotter); puts(" Command no.:"); j = 1; do { i = ende = 0; do { c = getc(source); } while (((c < 'A') || (c > 'Z')) && (c != -1)); befehl = (c==-1)? 0 : (c & 0xff)<<8 | (getc(source) & 0xff); printf("2331A23313C %5dn",j++); switch(befehl) { case SP : { x1 = get_num(); if (x1) fprintf(plotter,"C%d;n",colour[(x1-1)&7]); break; } case PU : { pen = 0; break; } case PD : { pen = 1; break; } case PA : { while (!ende) { x1 = SCAL(get_num()); if (!ende) { y1 = SCAL(get_num()); rotate(); if (pen==1) fprintf(plotter,"D%d,%d;n",x1,y1); else fprintf(plotter,"M%d,%d;n",x1,y1); } } break; } case LB : { fputc('P',plotter); while((c = getc(source)) >= 32) putc(c,plotter); putc(13,plotter); putc(10,plotter); break; } case SC : { x1 = get_num(); if (ende) break; x2 = get_num(); y1 = get_num(); y2 = get_num(); } case IW : { if (befehl==IW) { x1 = get_num(); y1 = get_num(); y2 = get_num(); y2 = get_num(); } hx = (x2-x1+999)/1000; hy = (y2-y1+999)/1000; hx = (hx>hy)? hx : hy; if (scale<hx) { scale = hx; halfscale = scale/2; printf("New scale: %dn2331A",scale); } rotate(); fprintf(plotter,"M%d,%d;nI;n",SCAL(-x1),SCAL(-y2)); } } } while (c!=-1); fputc(17,plotter); fclose(source); fclose(plotter); puts("nReady.n"); }
George
September 7, 2011 at 10:36amI love it. My father bought one new for me in 1986 while in sixth grade (I know, I was a geek). I would love to acquire one of these again some day (I’ve been looking). Thanks for the memory!
Andy Scott
June 8, 2012 at 4:08amSame here. My Dad bought me one in 1986 and I’ve still got it! Currently it’s in the attic covered in years of dust. Think I’ll dig it out. Wonder if you can still get the pens?
admin
June 8, 2012 at 8:20amPens are hard to come by. There’s a company in Germany that makes new (rather expensive) pens that fit this machine (along with several small plotters for 8-bit machines like the Commodore 1520, Atari 1020 and the Sharp CE-150). Old stock is possible but are also expensive on eBay when they appear. I think the last I saw was a pack of three pens for $15.
I’ve had some success in soaking the tips of old pens in very small amount of water. Sometimes that’s enough to get them going again.
B Hooton
August 27, 2012 at 4:46amI have one of these machines, including many ‘pens’. Do not know if the pens are any good though.
Surprisingly I was looking at it this afternoon as I wanted to show it at a meeting. The code will be usefull, thanks.
I also have Sharp Computer Projection Panel, model QA-25, which I also intend to show at the same event.
admin
August 27, 2012 at 9:06amIt’s a great piece of tech and mesmerizing to watch it plot. Glad you’ll be able to use the code. You have a 50/50 chance of the pens being usable if they were capped properly.
Ronny
March 13, 2014 at 9:25pmI have one with swedish keyboard. What I did to resurrect the pens was this: heat the metal end with a cigarette lighter until it “crackles” then drop the pen into a glass of water. The temperature difference sucks water in, and the next day the pen is working. you fingers will be miscolored by ink escaping when you heat the pen.
paulrickards
March 16, 2014 at 1:46pm@Ronny That’s a great tip, I’ll have to give it a try. Thanks for sharing!
ronn
August 6, 2014 at 11:40pmMy method above dilutes the ink left in the pen, the ywork nice but draw a lighter line after the second and third filling… best would be to get new ink and refill ethem, I found it’s posible to pull the plastic part out of the metal and there is a sponge for ink and a small tube leading to the tip.
I am going to try ink from a technical pen (unixline) when more retroputing time bacomes available to me 🙂
ronny
August 7, 2014 at 8:39pmTried yesterday to cut the inner piece of a standard ballpoint pen to length and shim it with sticky tape to fit into the steel end of a dead pen. It works, but gives about thrice the linewidth, making less readable text in small mode and loss of detail when plotting dots and short lines. nevertheless this will be my test/play pen for now. Will buy stanrdard black ink and try refilling the sponge in the next few days. I also had to rebuild the plottermechanism since the small spring that tensions the wire broke. I cut off a ballpoint pen spring to length and rewound the machanism. it take a few tries to decide how far to wind the wire in each end.
Ronny
August 29, 2014 at 8:52pmI made a improvised messy video of the EB50 plotting from applesoft basic running on an emulated appleIIe on my raspberry PI, over a usb->parallel dongle. Thanks a lot for the sample code above, it got me started. watch it at the web address above
ronny
August 29, 2014 at 8:53pmhttps://www.youtube.com/watch?v=HoMjjQO_1lE
this one…
Mark Blair, NF6X
September 21, 2014 at 8:38pmNeat! I don’t think I’ve seen these before.
Back in the day, I had a Radio Shack CGP-115 printer/plotter for my Color Computer. I think it used the same little ballpoint pens. I’m not sure if I still have the plotter in a box somewhere.
paulrickards
September 21, 2014 at 11:01pmHi Mark, They’re certainly an odd piece of retro computing history.
Yes, the Radio CGP-115 used the same ALPS mechanism that a lot of other companies used to make their variation of the plotter like the Commodore 1520 and Atari 1020. You can still get NOS plotter pens from @futurewas8bit’s web store.
I also have a Pinterest page full of pics for the Commodore 1520 along with lots of videos of the plotter printing, even some with high-speed which are mesmerizing to watch.
Enjoy!
Elliott Savva
March 11, 2022 at 10:25amI have one of these someone gave me when I was 7 or 8 in probably about 2011 when this article was written. I can’t remember who gave me it. I think it was my nan. I used to think the idea of having a typewriter was really cool because old fashioned and all that. I typed up a few random things with it at the time maybe a bit of homework or something but I stopped using it at some point and I can’t remember what it draws like and nor do I know much about typewriters so assumed it was daisywheel until I read this. I never found it that interesting before. Thank you as well for telling me the polarity as that has come in handy.