{"id":264,"date":"2024-01-05T11:36:21","date_gmt":"2024-01-05T11:36:21","guid":{"rendered":"http:\/\/maddox.pro\/?p=264"},"modified":"2024-01-05T11:39:28","modified_gmt":"2024-01-05T11:39:28","slug":"pdp-11-hack","status":"publish","type":"post","link":"https:\/\/www.maddox.pro\/?p=264","title":{"rendered":"PDP\/11 Hack+"},"content":{"rendered":"\n<p>I&#8217;m really pleased to say that over the holiday I managed to get some time and built up my RAM\/ROM\/Text Display PCB for my DCJ11 system.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"735\" height=\"1024\" src=\"https:\/\/www.maddox.pro\/wp-content\/uploads\/2024\/01\/DCJ11-735x1024.png\" alt=\"PCB with DEC DCJ11 processor on, running with RAM.\" class=\"wp-image-267\" srcset=\"https:\/\/www.maddox.pro\/wp-content\/uploads\/2024\/01\/DCJ11-735x1024.png 735w, https:\/\/www.maddox.pro\/wp-content\/uploads\/2024\/01\/DCJ11-215x300.png 215w, https:\/\/www.maddox.pro\/wp-content\/uploads\/2024\/01\/DCJ11-768x1070.png 768w, https:\/\/www.maddox.pro\/wp-content\/uploads\/2024\/01\/DCJ11.png 973w\" sizes=\"auto, (max-width: 735px) 100vw, 735px\" \/><\/figure>\n<\/div>\n\n\n<p>First power up (just RAM) worked, I could write and read from the memory, YAY! Next up I added the display and that also worked (you can see the block on the right hand most character), however I couldn&#8217;t then write to the UART memory address, after a bit of digging I&#8217;d got my PAL code wrong for the memory address decoding. I forgot that the DCJ11, despite being a 16 bit chip, can only access 16bits of address.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" src=\"https:\/\/www.maddox.pro\/wp-content\/uploads\/2024\/01\/power-up-768x1024.png\" alt=\"RAM\/ROM\/DISPLAY board powered up and writeable\" class=\"wp-image-265\" srcset=\"https:\/\/www.maddox.pro\/wp-content\/uploads\/2024\/01\/power-up-768x1024.png 768w, https:\/\/www.maddox.pro\/wp-content\/uploads\/2024\/01\/power-up-225x300.png 225w, https:\/\/www.maddox.pro\/wp-content\/uploads\/2024\/01\/power-up-1140x1520.png 1140w, https:\/\/www.maddox.pro\/wp-content\/uploads\/2024\/01\/power-up.png 1152w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n<\/div>\n\n\n<p>A quick bit of rework of the PAL and I got that working too!<\/p>\n\n\n\n<p>So the first test had to be &#8220;Hello World!&#8221;, initially I did this by writing a value to a memory address;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"691\" height=\"921\" src=\"https:\/\/www.maddox.pro\/wp-content\/uploads\/2024\/01\/Hello-World-Working.png\" alt=\"Display showing &quot;Hello World!&quot;\" class=\"wp-image-266\" srcset=\"https:\/\/www.maddox.pro\/wp-content\/uploads\/2024\/01\/Hello-World-Working.png 691w, https:\/\/www.maddox.pro\/wp-content\/uploads\/2024\/01\/Hello-World-Working-225x300.png 225w\" sizes=\"auto, (max-width: 691px) 100vw, 691px\" \/><\/figure>\n<\/div>\n\n\n<p>Next I added the ROMs and sure enough I could now read a value of  &#8220;377&#8221; (0xFF in hex) in the places where the ROM was, and writing a value then reading it back showed it hadn&#8217;t changed, yay.<\/p>\n\n\n\n<p>The reason the display is on the back is that I want to be able to have the DCJ11 chip facing out as well as the displays, so you can just rotate the back plane to see all the cool stuff (yes I know, it&#8217;s daft, but..)<\/p>\n\n\n\n<p>So what next? Well if you follow <a href=\"https:\/\/www.youtube.com\/@UsagiElectric\">Usagi Electric on YouTube<\/a> you&#8217;ll know he made a typo whilst entering his &#8220;Hello World!&#8221; text on his Centurion mini computer resulting in &#8220;Hellorld!&#8221; being displayed, so I had to do the same of course.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" src=\"https:\/\/www.maddox.pro\/wp-content\/uploads\/2024\/01\/hellorld-working-768x1024.png\" alt=\"Display showing &quot;Hellorld!&quot;\" class=\"wp-image-268\" srcset=\"https:\/\/www.maddox.pro\/wp-content\/uploads\/2024\/01\/hellorld-working-768x1024.png 768w, https:\/\/www.maddox.pro\/wp-content\/uploads\/2024\/01\/hellorld-working-225x300.png 225w, https:\/\/www.maddox.pro\/wp-content\/uploads\/2024\/01\/hellorld-working-1140x1520.png 1140w, https:\/\/www.maddox.pro\/wp-content\/uploads\/2024\/01\/hellorld-working.png 1152w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n<\/div>\n\n\n<p>So what&#8217;s next for the project?<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>I&#8217;d like to add a dot matrix style display and see if I can get Game of Life running on it, and ideally from ROM, so I need to make a board for that. <\/li>\n\n\n\n<li>I would also like to add a reset signal to the display so it starts clear rather than being full of junk. This was a mistake on my part as brought the active HIGH reset from the DCJ11 board onto the back plane and the displays need an active low, simple enough to fix with a bodge wire.<\/li>\n\n\n\n<li>What I&#8217;ll then do is create a github account and repository for the schematics, PAL code and any test code I make.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;m really pleased to say that over the holiday I managed to get some time and built up my RAM\/ROM\/Text Display PCB for my DCJ11 system. First power up (just RAM) worked, I could write and read from the memory, YAY! Next up I added the display and that also worked (you can see the block on the right hand most character), however I couldn&#8217;t then write to the UART memory address, after a bit of digging I&#8217;d got my PAL code wrong for the memory address decoding. I forgot that the DCJ11, despite being a 16 bit chip, can only access 16bits of address. A quick bit of rework of the PAL and I got that working too! So the first test had to be &#8220;Hello World!&#8221;, initially I did this by writing a value to a memory address; Next I added the ROMs and sure enough I could now read a value of &#8220;377&#8221; (0xFF in hex) in the places where the ROM was, and writing a value then reading it back showed it hadn&#8217;t changed, yay. The reason the display is on the back is that I want to be able to have the DCJ11 chip facing out as well as the displays, so you can just rotate the back plane to see all the cool stuff (yes I know, it&#8217;s daft, but..) So what next? Well if you follow Usagi Electric on YouTube you&#8217;ll know he made a typo whilst entering his &#8220;Hello World!&#8221; text on his Centurion mini computer resulting in &#8220;Hellorld!&#8221; being displayed, so I had to do the same of course. So what&#8217;s next for the project?<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[25],"tags":[32,26,28,31],"class_list":["post-264","post","type-post","status-publish","format-standard","hentry","category-pdp11hackplus","tag-dcj11","tag-pdp11","tag-pdp11-hack","tag-retro-computer"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.maddox.pro\/index.php?rest_route=\/wp\/v2\/posts\/264","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.maddox.pro\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.maddox.pro\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.maddox.pro\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.maddox.pro\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=264"}],"version-history":[{"count":2,"href":"https:\/\/www.maddox.pro\/index.php?rest_route=\/wp\/v2\/posts\/264\/revisions"}],"predecessor-version":[{"id":270,"href":"https:\/\/www.maddox.pro\/index.php?rest_route=\/wp\/v2\/posts\/264\/revisions\/270"}],"wp:attachment":[{"href":"https:\/\/www.maddox.pro\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=264"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.maddox.pro\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=264"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.maddox.pro\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=264"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}