{"id":842,"date":"2011-03-28T22:21:10","date_gmt":"2011-03-29T02:21:10","guid":{"rendered":"http:\/\/biosrhythm.com\/?p=842"},"modified":"2016-12-19T16:22:37","modified_gmt":"2016-12-19T21:22:37","slug":"ebay-oddity-silver-reed-eb-50","status":"publish","type":"post","link":"https:\/\/biosrhythm.com\/?p=842","title":{"rendered":"eBay Oddity: Silver Reed EB-50"},"content":{"rendered":"<p><a href=\"http:\/\/paulrickards.com\/wp-content\/uploads\/2011\/03\/silver-reed-eb50-e1301364034349.jpg\"><img loading=\"lazy\" class=\"alignleft size-medium wp-image-843\" title=\"Silver Reed EB-50 Printer\" src=\"http:\/\/biosrhythm.com\/wp-content\/uploads\/2011\/03\/silver-reed-eb50-300x225.jpg\" alt=\"Silver Reed EB-50 Printer\" width=\"300\" height=\"225\" \/><\/a>Today I present to you the Silver Reed EB-50. Made in 1985, this thing has a bit of an identity crisis. It&#8217;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&#8243; wide paper. It&#8217;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&#8217;t pass up.<br \/>\n<br clear=\"all\"><br \/>\n<a href=\"http:\/\/paulrickards.com\/wp-content\/uploads\/2011\/03\/silver-reed-eb-50-ad.png\"><img loading=\"lazy\" class=\"alignleft size-medium wp-image-847\" title=\"Ad for Silver Reed EB 50\" src=\"http:\/\/paulrickards.com\/wp-content\/uploads\/2011\/03\/silver-reed-eb-50-ad-296x300.png\" alt=\"\" width=\"296\" height=\"300\" srcset=\"https:\/\/biosrhythm.com\/wp-content\/uploads\/2011\/03\/silver-reed-eb-50-ad-296x300.png 296w, https:\/\/biosrhythm.com\/wp-content\/uploads\/2011\/03\/silver-reed-eb-50-ad.png 412w\" sizes=\"(max-width: 296px) 100vw, 296px\" \/><\/a>In normal typewriter mode, you press a key and it will &#8220;draw&#8221; that character in one of 3 sizes, styles or directions in one of 4 colors. You can position the print head anywhere you&#8217;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&#8211; 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.<\/p>\n<p>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 &#8220;drivers&#8221; ad supported nightmare of a website that had me install some bullshit driver manager on Windows to &#8220;install&#8221; a C code source file. What-fucking-ever. It&#8217;s included below in you want it.<br \/>\n<br clear=\"all\"><br \/>\n<a href=\"http:\/\/paulrickards.com\/wp-content\/uploads\/2011\/03\/silver-reed-print.jpg\"><img loading=\"lazy\" class=\"alignleft size-medium wp-image-850\" title=\"silver reed print\" src=\"http:\/\/paulrickards.com\/wp-content\/uploads\/2011\/03\/silver-reed-print-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"https:\/\/biosrhythm.com\/wp-content\/uploads\/2011\/03\/silver-reed-print-300x225.jpg 300w, https:\/\/biosrhythm.com\/wp-content\/uploads\/2011\/03\/silver-reed-print-1024x768.jpg 1024w, https:\/\/biosrhythm.com\/wp-content\/uploads\/2011\/03\/silver-reed-print-624x468.jpg 624w, https:\/\/biosrhythm.com\/wp-content\/uploads\/2011\/03\/silver-reed-print.jpg 2048w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a>A quick Processing sketch later and I&#8217;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.<br \/>\n<br clear=\"all\"><br \/>\n<code> <\/code><\/p>\n<pre># hp2eb50.c\r\n#include &lt;stdio.h&gt;\r\n\r\n#define SCAL(x) (((x)+halfscale)\/scale)\r\n#define NUMV(x) ((x)=='-' || ((x) &lt;= '9' &amp;&amp; (x) &gt;= '0'))\r\n#define SP ('S'&lt;&lt;8)+'P'\r\n#define PU ('P'&lt;&lt;8)+'U'\r\n#define PD ('P'&lt;&lt;8)+'D'\r\n#define PA ('P'&lt;&lt;8)+'A'\r\n#define IW ('I'&lt;&lt;8)+'W'\r\n#define SC ('S'&lt;&lt;8)+'C'\r\n#define LB ('L'&lt;&lt;8)+'B'\r\n\r\nFILE *source, *plotter;\r\nshort c,i,j,pen,scale,x1,x2,y1,y2,hx,hy,halfscale;\r\nshort befehl,ende,rot, colour[] = {0,1,2,3,0,1,2,3};\r\nchar param[100], *output;\r\n\r\nvoid upcase(s)\r\n   char *s;\r\n  {\r\n   register char c;\r\n   register int  i=0;\r\n\r\n   while ((c = *(s++)) &amp;&amp; i&lt;99)\r\n     {\r\n      param[i++] = (c&gt;='a' &amp;&amp; c&lt;='z')? c-'a'+'A' : c;\r\n     }\r\n   param[i] = 0;\r\n  }\r\n\r\nshort get_num()\r\n  {\r\n   register short c,x=0;\r\n   short s;\r\n\r\n   if (ende) return(0);\r\n   else\r\n     {\r\n      while(((c = getc(source)) &amp; 0x1ff) &lt;= ' ');\r\n      if (c == '-')  \r\n        {\r\n         s=-1;\r\n         c = getc(source);\r\n        }\r\n      else s=1;\r\n      while (c &gt;= '0' &amp;&amp; c &lt;= '9')\r\n\t{\r\n\t x = x*10+c-'0';\r\n         while(((c = getc(source)) &amp; 0x1ff) &lt;= ' ');\r\n\t}\r\n      if (c == ';') ende = -1;\r\n      return(x*s);\r\n     }\r\n  }\r\n\r\nvoid rotate()\r\n  {\r\n   register short h;\r\n\r\n   if (rot)\r\n     {\r\n      y2 = y1;\r\n      h = x1; x1 = y1; y1 = -h;\r\n     }\r\n  }\r\n\r\nmain(argc,argv)\r\n   int argc;\r\n   char *argv[];\r\n  {\r\n   if (argc&lt;2)\r\n     {\r\n      printf(\"Usage: %s &lt;hpgl-file&gt; [SCALE &lt;scale&gt;] [ROT] [COLOUR &lt;n1..n8&gt;] [TO &lt;output filename&gt;]n\",argv[0]);\r\n      exit(0);\r\n     }\r\n\r\n   rot = 0;\r\n   output = \"par:\";\r\n   for (i=2;i&lt;argc;i++)\r\n     {\r\n      upcase(argv[i]);\r\n      if (!strcmp(param,\"ROT\")) rot=1;\r\n      if (!strcmp(param,\"SCALE\") &amp;&amp; i&lt;argc-1)\r\n\t{\r\n\t scale = atol(argv[++i]);\r\n\t if (scale == 0) scale = 1;\r\n\t}\r\n      if (!strcmp(param,\"TO\") &amp;&amp; i&lt;argc-1) output = argv[++i];\r\n      if (!strcmp(param,\"COLOUR\") &amp;&amp; i&lt;argc-1)\r\n\t{\r\n\t for (i++,j=0;j&lt;8;j++) colour[j]=(argv[i][j]-'0') &amp; 0x03;\r\n\t}\r\n     }\r\n   halfscale = scale\/2;\r\n\r\n   if (!(source = fopen(argv[1],\"r\")))\r\n     {\r\n      puts(\"Sorry - Can't open file!\");\r\n      exit(0);\r\n     }\r\n   if (!(plotter = fopen(output,\"w\")))\r\n     {\r\n      puts(\"Sorry - Can't open output file\");\r\n      fclose(source);\r\n      exit(0);\r\n     }\r\n\r\n   pen = 0;\r\n   fputc(18,plotter);  \r\n   puts(\" Command no.:\");\r\n   j = 1;\r\n   do\r\n     {\r\n      i = ende = 0;\r\n\r\n      do\r\n\t{\r\n\t c = getc(source);\r\n\t} while (((c &lt; 'A') || (c &gt; 'Z')) &amp;&amp; (c != -1));\r\n      befehl = (c==-1)? 0 : (c &amp; 0xff)&lt;&lt;8 | (getc(source) &amp; 0xff);\r\n\r\n      printf(\"2331A23313C %5dn\",j++);   \r\n\r\n      switch(befehl)\r\n        {\r\n         case SP : {\r\n\t\t    x1 = get_num();\r\n\t\t    if (x1)\r\n                      fprintf(plotter,\"C%d;n\",colour[(x1-1)&amp;7]);\r\n                    break;\r\n\t\t   }\r\n         case PU : {\r\n         \t    pen = 0;\r\n\t\t    break;\r\n\t\t   }\r\n         case PD : {\r\n\t\t    pen = 1;\r\n\t\t    break;\r\n\t\t   }\r\n         case PA : {\r\n\t\t    while (!ende)\r\n\t\t      {\r\n\t\t       x1 = SCAL(get_num());\r\n\t\t       if (!ende)\r\n\t\t\t{\r\n\t\t  \t y1 = SCAL(get_num());\r\n\t\t\t rotate();\r\n\t\t         if (pen==1) \r\n                             fprintf(plotter,\"D%d,%d;n\",x1,y1);\r\n\t\t           else \r\n                             fprintf(plotter,\"M%d,%d;n\",x1,y1);\r\n\t\t\t}\r\n\t\t      }\r\n\t\t    break;\r\n\t\t   }\r\n\t case LB : {\r\n\t\t    fputc('P',plotter);\r\n\t            while((c = getc(source)) &gt;= 32) \r\n\t\t      putc(c,plotter);\r\n\t\t    putc(13,plotter);\r\n\t\t    putc(10,plotter);\r\n\t\t    break;\r\n\t\t   }\r\n         case SC : {\r\n\t\t    x1 = get_num();\r\n\t\t    if (ende) break; \r\n\t\t    x2 = get_num();\r\n\t\t    y1 = get_num(); y2 = get_num();\t\t    \r\n\t\t   }\r\n         case IW : {\r\n\t\t    if (befehl==IW)\r\n\t\t      {\r\n\t\t       x1 = get_num(); y1 = get_num();\r\n\t\t       y2 = get_num(); y2 = get_num();\r\n\t\t      }\r\n\t\t    hx = (x2-x1+999)\/1000;\r\n\t\t    hy = (y2-y1+999)\/1000;\r\n\t\t    hx = (hx&gt;hy)? hx : hy;\r\n\t\t    if (scale&lt;hx)\r\n\t\t      {\r\n\t\t       scale = hx;\r\n\t\t       halfscale = scale\/2;\r\n\t\t       printf(\"New scale: %dn2331A\",scale);\r\n\t\t      }\r\n\t\t    rotate();\r\n\t\t    fprintf(plotter,\"M%d,%d;nI;n\",SCAL(-x1),SCAL(-y2));\r\n\t\t   }\r\n        }\r\n     } while (c!=-1);\r\n   fputc(17,plotter);\r\n   fclose(source);\r\n   fclose(plotter);\r\n   puts(\"nReady.n\");\r\n  }\r\n<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today I present to you the Silver Reed EB-50. Made in 1985, this thing has a bit of an identity crisis. It&#8217;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 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[6,15],"tags":[],"_links":{"self":[{"href":"https:\/\/biosrhythm.com\/index.php?rest_route=\/wp\/v2\/posts\/842"}],"collection":[{"href":"https:\/\/biosrhythm.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/biosrhythm.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/biosrhythm.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/biosrhythm.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=842"}],"version-history":[{"count":3,"href":"https:\/\/biosrhythm.com\/index.php?rest_route=\/wp\/v2\/posts\/842\/revisions"}],"predecessor-version":[{"id":1437,"href":"https:\/\/biosrhythm.com\/index.php?rest_route=\/wp\/v2\/posts\/842\/revisions\/1437"}],"wp:attachment":[{"href":"https:\/\/biosrhythm.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=842"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/biosrhythm.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=842"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/biosrhythm.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=842"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}