{"id":1516,"date":"2025-08-20T21:55:52","date_gmt":"2025-08-20T21:55:52","guid":{"rendered":"https:\/\/pdp2011.sytse.net\/wordpress\/?p=1516"},"modified":"2025-08-20T21:58:38","modified_gmt":"2025-08-20T21:58:38","slug":"testing-rsx-on-the-enc28j60","status":"publish","type":"post","link":"https:\/\/pdp2011.sytse.net\/wordpress\/testing-rsx-on-the-enc28j60\/","title":{"rendered":"Testing RSX on the ENC28J60"},"content":{"rendered":"\n<p>One of the things that has been on my list of things to do is to refresh my RSX-11M-Plus image. Time to catch up and test if the new ENC28J60 works as well with RSX as with 2.11BSD!<\/p>\n\n\n\n<p>The previous image that I was using up to now &#8211; the one that&#8217;s in the setup walkthrough in the sessions pages &#8211; I&#8217;m not quite sure when I created that. Some time early 2014 from looking at when the page was published, but it might have been even earlier &#8211; I remember doing a lot of work on the page text. <\/p>\n\n\n\n<p>High time for a new setup, and where else to start than with Johnny Billquist&#8217;s image. Get it from <a href=\"ftp:\/\/ftp.dfupdate.se\/pub\/pdp11\/rsx\/pidp\/\">ftp:\/\/ftp.dfupdate.se\/pub\/pdp11\/rsx\/pidp\/<\/a> and read the documentation <a href=\"http:\/\/mim.softjar.se\/pidp.htm\">http:\/\/mim.softjar.se\/pidp.htm<\/a>. <\/p>\n\n\n\n<p>There&#8217;s one thing though: Johnny&#8217;s image is for an MSCP type disk, and PDP2011 doesn&#8217;t do those. So we&#8217;ll have to copy it to an RP06 &#8211; RP07 would&#8217;ve been nicer, but RSX doesn&#8217;t do those.<\/p>\n\n\n\n<p>Here&#8217;s how. Begin by downloading the disk image, and gunzip it, then copy it to a file named work.dsk Then put this in a simh.ini file:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">set cpu 11\/70 4m<br>set rq0 rauser=1024<br>att rq0 work.dsk<br>set rp0 rp06<br>att rp0 rsxrp06.dsk<\/pre>\n\n\n\n<p>and start simh, as<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pdp11 simh.ini<\/pre>\n\n\n\n<p>You&#8217;ll get a question &#8216;Overwrite last track? [N]&#8217;, that&#8217;s the rp06 image being initialized. Answer Y.<\/p>\n\n\n\n<p>Then boot Johnny&#8217;s image: <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">boot rq0<\/pre>\n\n\n\n<p>You&#8217;ll get lots and lots of questions about setting up networking. Answer them for the target system &#8211; the one you&#8217;ll be running on your PDP2011 FPGA. <\/p>\n\n\n\n<p>Yes, you do want the DECnet protocols enabled &#8211; that&#8217;s the whole point. Think up a node number (I usually use something like 1.20, but if you want to connect to HECnet maybe you should choose more wisely). And you also want TCP\/IP &#8211; even more strongly, that&#8217;s the point of this image. <\/p>\n\n\n\n<p>If you don&#8217;t know what to answer, the defaults are usually ok. I&#8217;ve skipped the Multinet questions so far &#8211; that&#8217;s only relevant if you want your node to join HECnet.<\/p>\n\n\n\n<p>After the networking question-and-answer, you&#8217;ll set the time (yay, y2k!) and the system will come up. Log in (&#8216;hello system&#8217;, three guesses for the password) and do the following:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&gt;<strong>mou\/for db0:<\/strong><br>&gt;<strong>run $bad<\/strong><br>BAD&gt;<strong>db0:<\/strong><br>BAD -- DB0: Total bad blocks= 0.<br>BAD&gt;<strong>^Z<\/strong><br>&gt;<strong>run $bru<\/strong><br>BRU&gt;<strong>\/init\/mou du: db0:<\/strong><br>BRU - Completed<br><br>BRU&gt;<strong>^Z<\/strong><br>&gt;<\/pre>\n\n\n\n<p>Then shut down (&#8216;run $shutup&#8217;), copy the rsxrp06.dsk image to an sd card, and boot that on your FPGA. <\/p>\n\n\n\n<p>Have fun!<\/p>\n\n\n\n<p>Oh. Wait. There&#8217;s just one thing. <\/p>\n\n\n\n<p>I haven&#8217;t published the ENC28J60 support yet. And while working on that, I found a tiny little bug in the ENC28J60 microcode that prevents the initialization of the DEUNA &#8211; and that same bug is also present in the ENC424J600 version. <\/p>\n\n\n\n<p>It&#8217;s about the card driver in RSX trying to load &#8216;new and improved&#8217; microcode into the DEUNA by function code 21 &#8216;load internal memory&#8217; &#8211; which goes ok if we just tell it that we did so by setting up for a DNI interrupt. But then it logically tries function code 1 &#8216;start microaddress&#8217; to which my old microcode truthfully answers with a PCEI interrupt &#8211; somewhat like saying &#8216;sorry I can&#8217;t do that&#8217;. It&#8217;s a simple fix: change the PCEI to a DNI &#8216;sure I did what you asked&#8217; and everything works as it should.<\/p>\n\n\n\n<p>If you&#8217;re impatient, it&#8217;s easy enough to do. Go and look for the xubr.mac file, about line 428, and change <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">         bis    #40000,@#174510           ; pcei - this function is not implemented<\/pre>\n\n\n\n<p>into<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">         bis    #4000,@#174510            ; dni<\/pre>\n\n\n\n<p>That&#8217;s all. Well, you&#8217;ll have to run make (ie, compile the mac source into the binary form in xubr.vhd) and then run Quartus on your project.<\/p>\n\n\n\n<p>Or else wait for a bit, a week or two maybe. I &#8216;just&#8217; have a couple tiny things to finish up before I publish the new version. <\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>One of the things that has been on my list of things to do is to refresh my RSX-11M-Plus image. Time to catch up and test if the new ENC28J60 works as well with RSX as with 2.11BSD! The previous image that I was using up to now &#8211; the one that&#8217;s in the setup [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,5,6],"tags":[],"class_list":["post-1516","post","type-post","status-publish","format-standard","hentry","category-hardware","category-pdp11","category-update","missing-thumbnail"],"_links":{"self":[{"href":"https:\/\/pdp2011.sytse.net\/wordpress\/wp-json\/wp\/v2\/posts\/1516","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pdp2011.sytse.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pdp2011.sytse.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pdp2011.sytse.net\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pdp2011.sytse.net\/wordpress\/wp-json\/wp\/v2\/comments?post=1516"}],"version-history":[{"count":2,"href":"https:\/\/pdp2011.sytse.net\/wordpress\/wp-json\/wp\/v2\/posts\/1516\/revisions"}],"predecessor-version":[{"id":1518,"href":"https:\/\/pdp2011.sytse.net\/wordpress\/wp-json\/wp\/v2\/posts\/1516\/revisions\/1518"}],"wp:attachment":[{"href":"https:\/\/pdp2011.sytse.net\/wordpress\/wp-json\/wp\/v2\/media?parent=1516"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pdp2011.sytse.net\/wordpress\/wp-json\/wp\/v2\/categories?post=1516"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pdp2011.sytse.net\/wordpress\/wp-json\/wp\/v2\/tags?post=1516"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}