{"id":16652,"date":"2021-03-14T16:53:57","date_gmt":"2021-03-14T20:53:57","guid":{"rendered":"https:\/\/scruss.com\/blog\/?p=16652"},"modified":"2021-03-14T18:36:46","modified_gmt":"2021-03-14T22:36:46","slug":"niche-knowledge-z80-parallel-port-sd-card-on-zeta2","status":"publish","type":"post","link":"https:\/\/scruss.com\/blog\/2021\/03\/14\/niche-knowledge-z80-parallel-port-sd-card-on-zeta2\/","title":{"rendered":"Niche Knowledge: Z80 parallel port SD card on Zeta2"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2015\/07\/ppisd-20150724.jpg\" alt=\"green circuit board with secure digital card slot on left and 40-pin parallel interface connectors on the right\"\/><figcaption>Mini PPISD board: a slow SD card mass-storage system for 8-bit computers<\/figcaption><\/figure>\n\n\n\n<p>Almost no-one will need this knowledge, but I might need to remember it. In order to add Mini PPISD support to a <a href=\"https:\/\/github.com\/wwarthen\/RomWBW\/\">RomWBW<\/a> 3.01-supported system, you need to create a file called something like <strong>Source\/HBIOS\/Config\/ZETA2_ppisd.asm<\/strong> (for yes, I&#8217;m using a <a href=\"http:\/\/www.malinov.com\/Home\/sergeys-projects\/zeta-sbc-v2\">Zeta SBC V2<\/a>) containing:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#include \"cfg_zeta2.asm\"\nUARTCFG\t\t.SET\tUARTCFG | SER_RTS\nCRTACT\t\t.SET\tTRUE\t\t\nPPIDEENABLE\t.SET\tFALSE\t\t\nSDENABLE\t.SET\tTRUE\t\t\nPPPENABLE\t.SET\tFALSE\t\t\nPPISD\t\t.EQU\tTRUE<\/pre>\n\n\n\n<p>Running make from the top-level directory should create a ROM image called <strong>Binary\/ZETA2_ppisd.rom<\/strong> for you to write to flash. Since my floppy drive isn&#8217;t feeling too happy, I had to resort to buying a <a href=\"http:\/\/www.autoelectric.cn\/en\/tl866_main.html\">TL866II Plus<\/a> programmer to write the chip. <\/p>\n\n\n\n<p>And it worked!<\/p>\n\n\n\n<pre id=\"block-6268eabd-180e-4dfd-841f-ee8548078294\" class=\"wp-block-preformatted\"> RomWBW HBIOS v3.0.1, 2021-03-12\n\n ZETA V2 Z80 @ 8.000MHz\n 0 MEM W\/S, 1 I\/O W\/S, INT MODE 2\n 512KB ROM, 512KB RAM\n\n CTC: MODE=Z2 IO=0x20\n UART0: IO=0x68 16550A MODE=38400,8,N,1\n DSRTC: MODE=STD IO=0x70 Sun 2021-03-14 17:47:13 CHARGE=OFF\n MD: UNITS=2 ROMDISK=384KB RAMDISK=384KB\n FD: IO=0x30 UNITS=2\n SD: MODE=PPI IO=0x60 DEVICES=1\n SD0: SDSC NAME=SD    BLOCKS=0x003C7800 SIZE=1935MB\n\n Unit        Device      Type              Capacity\/Mode\n ----------  ----------  ----------------  --------------------\n Char 0      UART0:      RS-232            38400,8,N,1\n Disk 0      MD1:        RAM Disk          384KB,LBA\n Disk 1      MD0:        ROM Disk          384KB,LBA\n Disk 2      FD0:        Floppy Disk       3.5\",DS\/HD,CHS\n Disk 3      FD1:        Floppy Disk       3.5\",DS\/HD,CHS\n Disk 4      SD0:        SD Card           1935MB,LBA\n\n ZETA V2 Boot Loader\n\n ROM: (M)onitor (C)P\/M (Z)-System (F)orth (B)ASIC (T)-BASIC (P)LAY (U)SER ROM  \n Disk: (0)MD1 (1)MD0 (2)FD0 (3)FD1 (4)SD0 \n\n Boot Selection? <\/pre>\n\n\n\n<p>I was pleasantly surprised how easy it is to use a TL866 programmer under Linux. <a href=\"https:\/\/gitlab.com\/DavidGriffith\/minipro\/\">minipro<\/a> does all the work, though. To write and verify the whole 512K Flash ROM, it&#8217;s:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">minipro -p SST39SF040 -w ZETA2_ppisd.rom<\/pre>\n\n\n\n<p>The programmer supports over 16000 devices, of which around 10000 are variants (form factor, programming voltage, speed, OTP, etc). It&#8217;ll also verify over 100 different 74-series logic chips. It&#8217;s not a super cheap device (mine was a little over $80, from <a href=\"https:\/\/www.simcoe-diy.ca\/product-page\/xgecu-pro-tl866ii-plus-universal-programmer\">Simcoe Diy<\/a>) but it does a lot for that price.<\/p>\n\n\n\n<p>Next stop: try rebuilding <a href=\"https:\/\/github.com\/davidgiven\/cpmish\/tree\/master\/third_party\/bbcbasic\">BBC BASIC<\/a> with RomWBW&#8217;s timer support included ..<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Almost no-one will need this knowledge, but I might need to remember it. In order to add Mini PPISD support to a RomWBW 3.01-supported system, you need to create a file called something like Source\/HBIOS\/Config\/ZETA2_ppisd.asm (for yes, I&#8217;m using a Zeta SBC V2) containing: #include &#8220;cfg_zeta2.asm&#8221; UARTCFG .SET UARTCFG | SER_RTS CRTACT .SET TRUE PPIDEENABLE [&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,2],"tags":[2062,800,2557,2893],"class_list":["post-16652","post","type-post","status-publish","format-standard","hentry","category-computers-suck","category-goatee-stroking-musing-or-something","tag-basic","tag-flash","tag-z80","tag-zeta"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pQNZZ-4kA","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/posts\/16652","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=16652"}],"version-history":[{"count":3,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/posts\/16652\/revisions"}],"predecessor-version":[{"id":16656,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/posts\/16652\/revisions\/16656"}],"wp:attachment":[{"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/media?parent=16652"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/categories?post=16652"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/tags?post=16652"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}