{"id":16157,"date":"2020-04-18T09:35:41","date_gmt":"2020-04-18T13:35:41","guid":{"rendered":"https:\/\/scruss.com\/blog\/?p=16157"},"modified":"2022-11-03T10:14:38","modified_gmt":"2022-11-03T14:14:38","slug":"single-board-pdp-8-take-2","status":"publish","type":"post","link":"https:\/\/scruss.com\/blog\/2020\/04\/18\/single-board-pdp-8-take-2\/","title":{"rendered":"Single board PDP-8: take 2 &#8230;"},"content":{"rendered":"\n<p>A couple of years back, I said I was <a href=\"https:\/\/scruss.com\/blog\/2018\/10\/03\/sbc6120-build-day-1-ish\/\">building a single board computer<\/a>  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 <a href=\"https:\/\/retrobrewcomputers.org\/doku.php?id=boards:sbc:sbc6120-rbc-edition:start\">replacement board<\/a> (thanks, Andrew!) and put in a <em>humongous<\/em> Digikey order for all the projects that I want to finish, and got going.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"684\" height=\"1007\" src=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2020\/04\/sbc6120-rbc-sr-take2.jpeg\" alt=\"circuit board with many chips\" class=\"wp-image-16158\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2020\/04\/sbc6120-rbc-sr-take2.jpeg 684w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2020\/04\/sbc6120-rbc-sr-take2-217x320.jpeg 217w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2020\/04\/sbc6120-rbc-sr-take2-109x160.jpeg 109w\" sizes=\"auto, (max-width: 684px) 100vw, 684px\" \/><figcaption>I swapped out the 5 MHz crystal for a <em>blazingly<\/em> fast 8 MHz one<\/figcaption><\/figure>\n\n\n\n<p>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.<\/p>\n\n\n\n<p>After a minor hiccup (homebrew null modem cable needs <span style=\"text-decoration: underline;\">both<\/span> RX and TX to be useful), it lives!<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">SBC6120 ROM Monitor V320 Checksum 3752 6072 3515 09-APR-10 21:15:39\nCopyright (C) 1983-2010 by Spare Time Gizmos. All rights reserved.\nNVR: Not detected\nIDE: 489MB - LEXAR ATA FLASH\nIOB: Not detected\nB\n-IDA0\n.BASIC\nNEW OR OLD--OLD\nFILE NAME--ASCART\nREADY\nLIST\nASCART BA 5B\n100 FOR Y=-12 TO 12\n110 FOR X=-39 TO 39\n120 C1=X*.0458\n130 C2=Y*.08333\n140 A=C1\n150 B=C2\n160 FOR I=0 TO 15\n170 T=A*A-B*B+C1\n180 B=2*A*B+C2\n190 A=T\n200 IF (A*A+B*B)>4 GOTO 240\n210 NEXT I\n220 PRINT \" \";\n230 GOTO 270\n240 IF I&lt;=9 GOTO 260\n250 I=I-57\n260 PRINT CHR$(48+I);\n270 NEXT X\n280 PRINT\n290 NEXT Y\n300 END\nREADY\nRUN\nASCART BA 5B\n000000011111111111111111122222233347E7AB322222111100000000000000000000000000000\n000001111111111111111122222222333557BF75433222211111000000000000000000000000000\n000111111111111111112222222233445C 643332222111110000000000000000000000000\n011111111111111111222222233444556C 654433332211111100000000000000000000000\n11111111111111112222233346 D978 BCF DF9 6556F4221111110000000000000000000000\n111111111111122223333334469 D 6322111111000000000000000000000\n1111111111222333333334457DB 85332111111100000000000000000000\n11111122234B744444455556A 96532211111110000000000000000000\n122222233347BAA7AB776679 A32211111110000000000000000000\n2222233334567 9A A532221111111000000000000000000\n222333346679 9432221111111000000000000000000\n234445568 F B5432221111111000000000000000000\n864332221111111000000000000000000\n234445568 F B5432221111111000000000000000000\n222333346679 9432221111111000000000000000000\n2222233334567 9A A532221111111000000000000000000\n122222233347BAA7AB776679 A32211111110000000000000000000\n11111122234B744444455556A 96532211111110000000000000000000\n1111111111222333333334457DB 85332111111100000000000000000000\n111111111111122223333334469 D 6322111111000000000000000000000\n11111111111111112222233346 D978 BCF DF9 6556F4221111110000000000000000000000\n011111111111111111222222233444556C 654433332211111100000000000000000000000\n000111111111111111112222222233445C 643332222111110000000000000000000000000\n000001111111111111111122222222333557BF75433222211111000000000000000000000000000\n000000011111111111111111122222233347E7AB322222111100000000000000000000000000000\nREADY<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"407\" height=\"272\" src=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2020\/04\/asciiart.jpg\" alt=\"ASCII art Mandelbrot set\" class=\"wp-image-16159\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2020\/04\/asciiart.jpg 407w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2020\/04\/asciiart-320x214.jpg 320w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2020\/04\/asciiart-160x107.jpg 160w\" sizes=\"auto, (max-width: 407px) 100vw, 407px\" \/><figcaption>If WordPress&#8217;s line wrapping has mangled the above, it should look like this<\/figcaption><\/figure>\n\n\n\n<p>It compiles and runs a slightly modified <a href=\"https:\/\/www.retrobrewcomputers.org\/forum\/index.php?t=msg&amp;th=201&amp;goto=4704&amp;#msg_4704\">ASCIIART.BAS<\/a> Mandelbrot set benchmark in 144 seconds. This is comparable to many 8-bit computers. The modifications were:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>PDP-8 BASIC doesn&#8217;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-70). The <a href=\"https:\/\/www.grc.com\/pdp-8\/docs\/OS8_BASIC_Reference.pdf\">manual<\/a> claims that <em>CHR$()<\/em> works modulo 64, so maybe I didn&#8217;t need to make this change.<\/li><li>Variable names can be called <em>Letter<\/em>+<em>Number<\/em> at <span style=\"text-decoration: underline;\">most<\/span>, so the original&#8217;s <em>CA<\/em> and <em>CB<\/em> had to become <em>C1<\/em> and <em>C2<\/em>.<\/li><li>PDP-8 BASIC doesn&#8217;t support a familiar <em>IF &#8230; THEN &#8230;<\/em> structure, but only effectively an <em>IF &#8230; GOTO &#8230;<\/em>. I mean, sure, you can use <em>THEN<\/em> if you want, but only a line number or a <em>GOTO &#8230;<\/em> following it will avoid <a href=\"https:\/\/scruss.com\/blog\/2017\/03\/02\/the-error-message-as-a-bourgeois-construct\/\">the dreaded terse NM error<\/a>. <em>ELSE<\/em>? Who needs it?!<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>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 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[7],"tags":[3219,3044,3154,2995],"class_list":["post-16157","post","type-post","status-publish","format-standard","hentry","category-computers-suck","tag-homebrew","tag-pdp8","tag-sbc6120","tag-soldering"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pQNZZ-4cB","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/posts\/16157","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/comments?post=16157"}],"version-history":[{"count":5,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/posts\/16157\/revisions"}],"predecessor-version":[{"id":17116,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/posts\/16157\/revisions\/17116"}],"wp:attachment":[{"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/media?parent=16157"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/categories?post=16157"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/tags?post=16157"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}