A couple of years back, I said I was building a single board computer … and then things went quiet. Yes, I screwed up. A mix of dry joints and possibly burning through traces caused by following old instructions, impatience and a very unforgiving solder type made the original board almost unusable. I finally got a replacement board (thanks, Andrew!) and put in a humongous Digikey order for all the projects that I want to finish, and got going …
I took quite a bit more care building this, but it was still only a couple of evenings to put it together. While I still used lead-free solder, I hardly needed extra flux at all. The nice ($$$) turned-pin sockets hold the chips much more securely than the cheaper plain sockets I used before.
After a minor hiccup (homebrew null modem cable needs both RX and TX to be useful), it lives!
SBC6120 ROM Monitor V320 Checksum 3752 6072 3515 09-APR-10 21:15:39 Copyright (C) 1983-2010 by Spare Time Gizmos. All rights reserved. NVR: Not detected IDE: 489MB - LEXAR ATA FLASH IOB: Not detected B -IDA0 .BASIC NEW OR OLD--OLD FILE NAME--ASCART READY LIST ASCART BA 5B 100 FOR Y=-12 TO 12 110 FOR X=-39 TO 39 120 C1=X.0458 130 C2= Y.08333 140 A=C1 150 B=C2 160 FOR I=0 TO 15 170 T=AA-BB+C1 180 B=2AB+C2 190 A=T 200 IF (AA+BB)>4 GOTO 240 210 NEXT I 220 PRINT " "; 230 GOTO 270 240 IF I<=9 GOTO 260 250 I=I-57 260 PRINT CHR$(48+I); 270 NEXT X 280 PRINT 290 NEXT Y 300 END READY RUN ASCART BA 5B 000000011111111111111111122222233347E7AB322222111100000000000000000000000000000 000001111111111111111122222222333557BF75433222211111000000000000000000000000000 000111111111111111112222222233445C 643332222111110000000000000000000000000 011111111111111111222222233444556C 654433332211111100000000000000000000000 11111111111111112222233346 D978 BCF DF9 6556F4221111110000000000000000000000 111111111111122223333334469 D 6322111111000000000000000000000 1111111111222333333334457DB 85332111111100000000000000000000 11111122234B744444455556A 96532211111110000000000000000000 122222233347BAA7AB776679 A32211111110000000000000000000 2222233334567 9A A532221111111000000000000000000 222333346679 9432221111111000000000000000000 234445568 F B5432221111111000000000000000000 864332221111111000000000000000000 234445568 F B5432221111111000000000000000000 222333346679 9432221111111000000000000000000 2222233334567 9A A532221111111000000000000000000 122222233347BAA7AB776679 A32211111110000000000000000000 11111122234B744444455556A 96532211111110000000000000000000 1111111111222333333334457DB 85332111111100000000000000000000 111111111111122223333334469 D 6322111111000000000000000000000 11111111111111112222233346 D978 BCF DF9 6556F4221111110000000000000000000000 011111111111111111222222233444556C 654433332211111100000000000000000000000 000111111111111111112222222233445C 643332222111110000000000000000000000000 000001111111111111111122222222333557BF75433222211111000000000000000000000000000 000000011111111111111111122222233347E7AB322222111100000000000000000000000000000 READY
It compiles and runs a slightly modified ASCIIART.BAS Mandelbrot set benchmark in 144 seconds. This is comparable to many 8-bit computers. The modifications were:
- PDP-8 BASIC doesn’t quite use ASCII. Its six-bit character set has digits 0–9 at decimal 48–57 like ASCII, but characters A–F are at decimal 1–6 (instead of 65–). The manual claims that CHR$() works modulo 64, so maybe I didn’t need to make this change.
- Variable names can be called Letter+Number at most, so the original’s CA and CB had to become C1 and C2.
- PDP-8 BASIC doesn’t support a familiar IF … THEN … structure, but only effectively an IF … GOTO …. I mean, sure, you can use THEN if you want, but only a line number or a GOTO … following it will avoid the dreaded terse NM error. ELSE? Who needs it?!