From 74b80aaeeb14a0be709fa62255900673b6c20e41 Mon Sep 17 00:00:00 2001 From: wwarthen Date: Mon, 8 Sep 2014 04:11:55 +0000 Subject: [PATCH] Reintegrate wbw -> trunk --- Build.cmd | 2 +- BuildApps.cmd | 7 - BuildCPM22.cmd | 7 - BuildCommon.cmd | 7 +- BuildUNA.cmd | 4 - BuildUNALOAD.cmd | 4 - BuildZCPR-DJ.cmd | 7 - BuildZCPR.cmd | 7 - CPM22/Build.cmd | 72 - Clean.cmd | 30 +- Doc/Build.txt | 10 +- Doc/ChangeLog.txt | 5 + Doc/Source/RomWBW Architecture.docx | Bin 262102 -> 262923 bytes .../Experimental}/PropIO2_test/PropIO2.eeprom | Bin .../Experimental}/PropIO2_test/Spin/Build.cmd | 0 .../PropIO2_test}/Spin/E555_SPKEngine.spin | 0 .../PropIO2_test}/Spin/Keyboard.spin | Bin .../Spin/Parallax Serial Terminal.spin | Bin .../PropIO2_test/Spin/PropIO2.list | 0 .../PropIO2_test/Spin/PropIO2.spin | Bin .../PropIO2_test}/Spin/safe_spi.spin | 0 .../PropIO2_test/Spin/vga8x8d.spin | 0 .../PropIO2_test/Spin/vgacolour.spin | 0 .../PropIO2_test/Spin/vt100.spin | 0 .../Experimental}/vga2/Build.cmd | 0 .../Experimental}/vga2/Makefile | 0 .../Experimental}/vga2/bstc.exe | Bin .../Experimental}/vga2/vga8x8d.spin | 0 .../Experimental}/vga2/vgacolour.spin | 0 .../Experimental}/vga2/vgademo.eeprom | Bin .../Experimental}/vga2/vgademo.list | 0 .../Experimental}/vga2/vgademo.spin | 0 .../Experimental}/vga2/vt100.spin | 0 .../ParPortProp/ParPortProp.eeprom | Bin .../ParPortProp}/Spin/E555_SPKEngine.spin | 0 .../ParPortProp/Spin/FullDuplexSerial.spin | Bin .../Spin/FullDuplexSerialNull.spin | Bin .../ParPortProp}/Spin/Keyboard.spin | Bin .../ParPortProp/Spin/ParPortProp.spin | Bin .../Spin/Parallax Serial Terminal Null.spin | Bin .../Spin/Parallax Serial Terminal.spin | Bin .../ParPortProp/Spin/VGA_1024.spin | 0 .../ParPortProp/Spin/VGA_HiRes_Text.spin | Bin .../ParPortProp}/Spin/safe_spi.spin | 0 {Support => Hardware}/ParPortProp/TstPPP.com | Bin {Support => Hardware}/PropIO/PropIO.eeprom | Bin .../PropIO}/Spin/Keyboard.spin | Bin .../PropIO/Spin/Parallax Serial Terminal.spin | Bin {Support => Hardware}/PropIO/Spin/PropIO.spin | Bin .../PropIO/Spin/VGA_1024.spin | 0 .../PropIO/Spin/VGA_HiRes_Text.spin | Bin .../PropIO}/Spin/safe_spi.spin | 0 {Support => Hardware}/PropIO2/PropIO2.eeprom | Bin .../PropIO2}/Spin/E555_SPKEngine.spin | 0 .../PropIO2}/Spin/Keyboard.spin | Bin .../Spin/Parallax Serial Terminal.spin | Bin .../PropIO2/Spin/PropIO2.spin | Bin .../PropIO2/Spin/VGA_1024.spin | 0 .../PropIO2/Spin/VGA_HiRes_Text.spin | Bin .../PropIO2}/Spin/safe_spi.spin | 0 {Support => Hardware}/ReadMe.txt | 8 +- {Support => Hardware/VDU}/vdu.rom | Bin Make.cmd | 4 - ReadMe.txt | 20 +- RomDsk/CPM_1024KB/CR.COM | Bin 6144 -> 0 bytes RomDsk/CPM_1024KB/DDTZ.DOC | 564 --- RomDsk/CPM_1024KB/MAC.COM | Bin 11776 -> 0 bytes RomDsk/CPM_1024KB/UNCR.COM | Bin 8576 -> 0 bytes RomDsk/CPM_1024KB/ZDE40.COM | Bin 16896 -> 0 bytes RomDsk/CPM_512KB/CR.COM | Bin 6144 -> 0 bytes RomDsk/CPM_512KB/DIRX.COM | Bin 3072 -> 0 bytes RomDsk/CPM_512KB/LIB.COM | Bin 7168 -> 0 bytes RomDsk/CPM_512KB/SID.COM | Bin 7936 -> 0 bytes RomDsk/CPM_512KB/UNCR.COM | Bin 8576 -> 0 bytes RomDsk/CPM_512KB/UNZIP.COM | Bin 3328 -> 0 bytes RomDsk/CPM_512KB/ZDE40.COM | Bin 16896 -> 0 bytes RomDsk/ZSYS_1024KB/ASM.COM | Bin 8192 -> 0 bytes RomDsk/ZSYS_1024KB/CLRDIR.COM | Bin 1619 -> 0 bytes RomDsk/ZSYS_1024KB/CR.COM | Bin 6144 -> 0 bytes RomDsk/ZSYS_1024KB/DDT.COM | Bin 4864 -> 0 bytes RomDsk/ZSYS_1024KB/DDTZ.COM | Bin 7424 -> 0 bytes RomDsk/ZSYS_1024KB/DDTZ.DOC | 564 --- RomDsk/ZSYS_1024KB/DIF.COM | Bin 2944 -> 0 bytes RomDsk/ZSYS_1024KB/DUMP.COM | Bin 512 -> 0 bytes RomDsk/ZSYS_1024KB/ED.COM | Bin 6656 -> 0 bytes RomDsk/ZSYS_1024KB/FLASH.COM | Bin 12000 -> 0 bytes RomDsk/ZSYS_1024KB/LBREXT.COM | Bin 8576 -> 0 bytes RomDsk/ZSYS_1024KB/LIB.COM | Bin 7168 -> 0 bytes RomDsk/ZSYS_1024KB/LINK.COM | Bin 15744 -> 0 bytes RomDsk/ZSYS_1024KB/LOAD.COM | Bin 1792 -> 0 bytes RomDsk/ZSYS_1024KB/MAC.COM | Bin 11776 -> 0 bytes RomDsk/ZSYS_1024KB/MBASIC.COM | Bin 24320 -> 0 bytes RomDsk/ZSYS_1024KB/NULU.COM | Bin 15616 -> 0 bytes RomDsk/ZSYS_1024KB/PIP.COM | Bin 7424 -> 0 bytes RomDsk/ZSYS_1024KB/RMAC.COM | Bin 13568 -> 0 bytes RomDsk/ZSYS_1024KB/SID.COM | Bin 7936 -> 0 bytes RomDsk/ZSYS_1024KB/STAT.COM | Bin 5248 -> 0 bytes RomDsk/ZSYS_1024KB/SUBMIT.COM | Bin 1280 -> 0 bytes RomDsk/ZSYS_1024KB/SUPERSUB.COM | Bin 2176 -> 0 bytes RomDsk/ZSYS_1024KB/UNARC.COM | Bin 4736 -> 0 bytes RomDsk/ZSYS_1024KB/UNCR.COM | Bin 8576 -> 0 bytes RomDsk/ZSYS_1024KB/UNZIP.COM | Bin 3328 -> 0 bytes RomDsk/ZSYS_1024KB/XSUB.COM | Bin 768 -> 0 bytes RomDsk/ZSYS_1024KB/ZAP.COM | Bin 9856 -> 0 bytes RomDsk/ZSYS_1024KB/ZDE.COM | Bin 16896 -> 0 bytes RomDsk/ZSYS_1024KB/ZDE40.COM | Bin 16896 -> 0 bytes RomDsk/ZSYS_1024KB/ZDENST.COM | Bin 10624 -> 0 bytes RomDsk/ZSYS_512KB/CLRDIR.COM | Bin 1619 -> 0 bytes RomDsk/ZSYS_512KB/DDT.COM | Bin 4864 -> 0 bytes RomDsk/ZSYS_512KB/DIF.COM | Bin 2944 -> 0 bytes RomDsk/ZSYS_512KB/DUMP.COM | Bin 512 -> 0 bytes RomDsk/ZSYS_512KB/ED.COM | Bin 6656 -> 0 bytes RomDsk/ZSYS_512KB/FLASH.COM | Bin 12000 -> 0 bytes RomDsk/ZSYS_512KB/LBREXT.COM | Bin 8576 -> 0 bytes RomDsk/ZSYS_512KB/LOAD.COM | Bin 1792 -> 0 bytes RomDsk/ZSYS_512KB/NULU.COM | Bin 15616 -> 0 bytes RomDsk/ZSYS_512KB/PIP.COM | Bin 7424 -> 0 bytes RomDsk/ZSYS_512KB/STAT.COM | Bin 5248 -> 0 bytes RomDsk/ZSYS_512KB/SUBMIT.COM | Bin 1280 -> 0 bytes RomDsk/ZSYS_512KB/SUPERSUB.COM | Bin 2176 -> 0 bytes RomDsk/ZSYS_512KB/UNARC.COM | Bin 4736 -> 0 bytes RomDsk/ZSYS_512KB/UNCR.COM | Bin 8576 -> 0 bytes RomDsk/ZSYS_512KB/XSUB.COM | Bin 768 -> 0 bytes RomDsk/ZSYS_512KB/ZAP.COM | Bin 9856 -> 0 bytes RomDsk/ZSYS_512KB/ZDE.COM | Bin 16896 -> 0 bytes RomDsk/cfg_mk4_std/SURVEY.COM | Bin 1152 -> 0 bytes RomDsk/cfg_n8_2312/SURVEY.COM | Bin 1152 -> 0 bytes RomDsk/cfg_n8_2511/SURVEY.COM | Bin 1152 -> 0 bytes RomDsk/cfg_una_std/RTC.COM | Bin 2048 -> 0 bytes RomDsk/cfg_una_std/SURVEY.COM | Bin 1152 -> 0 bytes RomDsk/cfg_zeta_ppisd/SURVEY.COM | Bin 1152 -> 0 bytes RomDsk/cfg_zeta_ppp/SURVEY.COM | Bin 1152 -> 0 bytes RomDsk/cfg_zeta_std/SURVEY.COM | Bin 1152 -> 0 bytes Sim.cfg | 43 + {Apps => Source/Apps}/Assign - Copy.asm | 0 {Apps => Source/Apps}/Assign.asm | 161 +- {Apps => Source/Apps}/Build.cmd | 13 +- {Apps => Source/Apps}/Clean.cmd | 0 {Apps => Source/Apps}/Format.asm | 0 {Apps => Source/Apps}/SysCopy.asm | 0 {Apps => Source/Apps}/SysGen.z80 | 0 {Apps => Source/Apps}/Talk.asm | 0 Source/{ => BIOS}/Blank1024KB-UNA.dat | 0 Source/{ => BIOS}/Blank1024KB-UNALOAD.dat | 0 Source/{ => BIOS}/Blank512KB-UNA.dat | 0 Source/{ => BIOS}/Blank512KB-UNALOAD.dat | 0 Source/BIOS/Build.cmd | 4 + Source/BIOS/Build.ps1 | 157 + Source/{ => BIOS}/BuildUNALOAD.ps1 | 0 Source/BIOS/Clean.cmd | 10 + .../Config/mk4_diskio3.asm} | 13 +- .../Config/mk4_propio.asm} | 13 +- .../Config/mk4_std.asm} | 13 +- .../Config/n8_2312.asm} | 15 +- .../Config/n8_2511.asm} | 15 +- .../Config/n8vem_ci.asm} | 9 +- .../Config/n8vem_cvdu.asm} | 11 +- .../Config/n8vem_dide.asm} | 19 +- .../Config/n8vem_diskio.asm} | 15 +- .../Config/n8vem_diskio3+cvdu.asm} | 15 +- .../Config/n8vem_diskio3.asm} | 15 +- .../Config/n8vem_dsd.asm} | 15 +- .../Config/n8vem_mfp.asm} | 15 +- .../Config/n8vem_ppide.asm} | 15 +- .../Config/n8vem_ppisd.asm} | 15 +- .../Config/n8vem_propio.asm} | 13 +- .../Config/n8vem_rf.asm} | 11 +- .../Config/n8vem_simh.asm} | 17 +- .../Config/n8vem_std.asm} | 9 +- .../Config/n8vem_vdu.asm} | 15 +- .../Config/una_std.asm} | 2 +- .../Config/zeta_ppisd.asm} | 15 +- .../Config/zeta_ppp.asm} | 15 +- .../Config/zeta_std.asm} | 15 +- Source/{ => BIOS}/Make.cmd | 0 Source/{ => BIOS}/MakeBlankROM.ps1 | 5 +- {UNA => Source/BIOS/UNA}/FSFAT.BIN | Bin {UNA => Source/BIOS/UNA}/UNA-BIOS.BIN | Bin Source/{ => BIOS}/ansi.asm | 0 Source/{ => BIOS}/asci.asm | 0 Source/{ => BIOS}/bioshdr.inc | 0 Source/{ => BIOS}/blank1024KB.dat | 0 Source/{ => BIOS}/blank512KB.dat | 0 Source/{ => BIOS}/bootapp.asm | 6 +- Source/{ => BIOS}/bootgen.asm | 0 Source/{ => BIOS}/bootrom.asm | 8 +- Source/{ => BIOS}/cbios.asm | 264 +- Source/{ => BIOS}/cvdu.asm | 0 Source/{ => BIOS}/cvdu_font.asm | 0 Source/{ => BIOS}/dbgmon.asm | 2 +- Source/{ => BIOS}/diskdefs | 66 +- Source/{ => BIOS}/dsrtc.asm | 0 Source/{ => BIOS}/fd.asm | 0 Source/{ => BIOS}/hbfill.asm | 0 Source/{ => BIOS}/hbios.asm | 99 + Source/{ => BIOS}/hdsk.asm | 0 Source/{ => BIOS}/ide.asm | 0 Source/{ => BIOS}/infolist.inc | 0 Source/{ => BIOS}/kbd.asm | 0 Source/{ => BIOS}/loader.asm | 325 +- Source/{ => BIOS}/makefile | 0 Source/{ => BIOS}/md.asm | 0 Source/{ => BIOS}/memmgr.asm | 0 Source/{ => BIOS}/mk4.inc | 0 Source/{ => BIOS}/n8.inc | 0 Source/{ => BIOS}/n8v.asm | 0 Source/{ => BIOS}/n8v_font.inc | 0 Source/{ => BIOS}/n8vem.inc | 0 Source/{ => BIOS}/pgzero.asm | 0 Source/{ => BIOS}/ppide.asm | 0 Source/{ => BIOS}/ppk.asm | 0 Source/{ => BIOS}/ppp.asm | 0 Source/{prefix_una.asm => BIOS/prefix.asm} | 77 +- Source/{ => BIOS}/prp.asm | 0 Source/{ => BIOS}/rf.asm | 0 Source/{ => BIOS}/rom0.asm | 0 Source/{ => BIOS}/romfill.asm | 0 Source/{ => BIOS}/sd.asm | 0 Source/{ => BIOS}/simrtc.asm | 0 Source/{ => BIOS}/std-n8vem.inc | 0 Source/{ => BIOS}/std.asm | 4 + Source/{ => BIOS}/syscfg.asm | 2 +- Source/{ => BIOS}/time.asm | 0 Source/{ => BIOS}/tty.asm | 0 Source/{ => BIOS}/uart.asm | 0 Source/{ => BIOS}/ubios.asm | 0 Source/{ => BIOS}/una.inc | 0 Source/{ => BIOS}/util.asm | 0 Source/{ => BIOS}/vdu.asm | 0 Source/BIOS/ver.inc | 7 + Source/{ => BIOS}/xio.asm | 0 Source/Build.cmd | 4 + Source/Build.ps1 | 157 - Source/BuildCommon.cmd | 8 + Source/BuildUNA.ps1 | 156 - {CPM22 => Source/CPM22}/BDOS.ASM | 0 {CPM22 => Source/CPM22}/BDOS.BAK | 0 {CPM22 => Source/CPM22}/BDOS22.ASM | 0 {CPM22 => Source/CPM22}/BDOS22.BAK | 0 Source/CPM22/Build.cmd | 41 + {CPM22 => Source/CPM22}/CCP.ASM | 0 {CPM22 => Source/CPM22}/CCP.BAK | 0 {CPM22 => Source/CPM22}/CCP22.ASM | 0 {CPM22 => Source/CPM22}/CCP22.BAK | 0 {CPM22 => Source/CPM22}/Clean.cmd | 0 {CPM22 => Source/CPM22}/OS2CCP.ASM | 0 {CPM22 => Source/CPM22}/OS2CCP.BAK | 0 {CPM22 => Source/CPM22}/OS3BDOS.ASM | 0 {CPM22 => Source/CPM22}/OS3BDOS.BAK | 0 {CPM22 => Source/CPM22}/bdosb01.asm | 0 {CPM22 => Source/CPM22}/ccpb03.asm | 0 Source/Clean.cmd | 18 +- .../RomDsk/ROM_1024KB}/ASM.COM | Bin .../RomDsk/ROM_1024KB}/CLOCKS.DAT | Bin .../RomDsk/ROM_1024KB}/CLRDIR.COM | Bin .../RomDsk/ROM_1024KB}/COPY.CFG | Bin .../RomDsk/ROM_1024KB}/COPY.COM | Bin .../RomDsk/ROM_1024KB}/DATSWEEP.COM | Bin .../RomDsk/ROM_1024KB}/DDT.COM | Bin .../RomDsk/ROM_1024KB}/DDTZ.COM | Bin .../RomDsk/ROM_1024KB}/DIF.COM | Bin .../RomDsk/ROM_1024KB}/DIRX.COM | Bin .../RomDsk/ROM_1024KB}/DSCONFIG.COM | Bin .../RomDsk/ROM_1024KB}/DUMP.COM | Bin .../RomDsk/ROM_1024KB}/ED.COM | Bin .../RomDsk/ROM_1024KB}/FA16.CFG | Bin .../RomDsk/ROM_1024KB}/FA16.DOC | 0 .../RomDsk/ROM_1024KB}/FA16A.FOR | 0 .../RomDsk/ROM_1024KB}/FA16CFG.TXT | 0 .../RomDsk/ROM_1024KB}/FILEATTR.COM | Bin .../RomDsk/ROM_1024KB}/FILEDATE.CFG | Bin .../RomDsk/ROM_1024KB}/FILEDATE.COM | Bin .../RomDsk/ROM_1024KB}/FLASH.COM | Bin .../RomDsk/ROM_1024KB}/INITDIR.CFG | Bin .../RomDsk/ROM_1024KB}/INITDIR.COM | Bin .../RomDsk/ROM_1024KB}/LBREXT.COM | Bin .../RomDsk/ROM_1024KB}/LDDS.COM | Bin .../RomDsk/ROM_1024KB}/LDP2D.COM | Bin .../RomDsk/ROM_1024KB}/LIB.COM | Bin .../RomDsk/ROM_1024KB}/LINK.COM | Bin .../RomDsk/ROM_1024KB}/LOAD.COM | Bin .../RomDsk/ROM_1024KB}/MBASIC.COM | Bin .../RomDsk/ROM_1024KB}/NULU.COM | Bin .../RomDsk/ROM_1024KB}/PIP.COM | Bin .../RomDsk/ROM_1024KB}/PUTBG.COM | Bin .../RomDsk/ROM_1024KB}/PUTDS.COM | Bin .../RomDsk/ROM_1024KB}/RELOG.COM | Bin .../RomDsk/ROM_1024KB}/RMAC.COM | Bin .../RomDsk/ROM_1024KB}/SETTERM.COM | Bin .../RomDsk/ROM_1024KB}/SETUPZST.COM | Bin .../RomDsk/ROM_1024KB}/SID.COM | Bin .../RomDsk/ROM_1024KB}/STAMPS.DAT | Bin .../RomDsk/ROM_1024KB}/STAT.COM | Bin .../RomDsk/ROM_1024KB}/SUBMIT.COM | Bin .../RomDsk/ROM_1024KB}/SUPERSUB.COM | Bin .../RomDsk/ROM_1024KB}/SURVEY.COM | Bin .../RomDsk/ROM_1024KB}/TD.CFG | Bin .../RomDsk/ROM_1024KB}/TD.COM | Bin .../RomDsk/ROM_1024KB}/TERMBASE.DAT | Bin .../RomDsk/ROM_1024KB}/TESTCLOK.COM | Bin .../RomDsk/ROM_1024KB}/UNARC.COM | Bin .../RomDsk/ROM_1024KB}/UNZIP.COM | Bin .../RomDsk/ROM_1024KB}/VIDATT.Z80 | 0 .../RomDsk/ROM_1024KB}/WS.COM | Bin .../RomDsk/ROM_1024KB}/WS.OVR | Bin .../RomDsk/ROM_1024KB}/WSCHANGE.COM | Bin .../RomDsk/ROM_1024KB}/WSCHANGE.OVR | Bin .../RomDsk/ROM_1024KB}/WSCHHELP.OVR | Bin .../RomDsk/ROM_1024KB}/WSHELP.OVR | Bin .../RomDsk/ROM_1024KB}/WSMSGS.OVR | Bin .../RomDsk/ROM_1024KB}/WSPRINT.OVR | Bin .../RomDsk/ROM_1024KB}/WSREADME.TXT | 0 .../RomDsk/ROM_1024KB}/WSSHORT.OVR | Bin .../RomDsk/ROM_1024KB}/WSU.COM | Bin .../RomDsk/ROM_1024KB}/XSUB.COM | Bin .../RomDsk/ROM_1024KB}/ZAP.COM | Bin .../RomDsk/ROM_1024KB}/ZCAL.COM | Bin .../RomDsk/ROM_1024KB}/ZCNFG.COM | Bin .../RomDsk/ROM_1024KB}/ZCNFG24.CFG | Bin .../RomDsk/ROM_1024KB}/ZDE.COM | Bin .../RomDsk/ROM_1024KB}/ZDENST.COM | Bin .../RomDsk/ROM_1024KB}/ZPATH.COM | Bin .../RomDsk/ROM_1024KB}/ZSCONFIG.COM | Bin .../RomDsk/ROM_1024KB}/ZSVSTAMP.COM | Bin .../RomDsk/ROM_1024KB}/ZSVSTAMP.DOC | 0 .../RomDsk/ROM_1024KB}/ZXD.CFG | Bin .../RomDsk/ROM_1024KB}/ZXD.COM | Bin .../RomDsk/ROM_512KB}/ASM.COM | Bin .../RomDsk/ROM_512KB}/CLRDIR.COM | Bin .../RomDsk/ROM_512KB}/COPY.CFG | Bin .../RomDsk/ROM_512KB}/COPY.COM | Bin .../RomDsk/ROM_512KB}/DDT.COM | Bin .../RomDsk/ROM_512KB}/DDTZ.COM | Bin .../RomDsk/ROM_512KB}/DIF.COM | Bin .../RomDsk/ROM_512KB}/DUMP.COM | Bin .../RomDsk/ROM_512KB}/ED.COM | Bin .../RomDsk/ROM_512KB}/FA16.CFG | Bin .../RomDsk/ROM_512KB}/FILEATTR.COM | Bin .../RomDsk/ROM_512KB}/FILEDATE.CFG | Bin .../RomDsk/ROM_512KB}/FILEDATE.COM | Bin .../RomDsk/ROM_512KB}/FLASH.COM | Bin .../RomDsk/ROM_512KB}/INITDIR.CFG | Bin .../RomDsk/ROM_512KB}/INITDIR.COM | Bin .../RomDsk/ROM_512KB}/LBREXT.COM | Bin .../RomDsk/ROM_512KB}/LDDS.COM | Bin .../RomDsk/ROM_512KB}/LDP2D.COM | Bin .../RomDsk/ROM_512KB}/LINK.COM | Bin .../RomDsk/ROM_512KB}/LOAD.COM | Bin .../RomDsk/ROM_512KB}/MBASIC.COM | Bin .../RomDsk/ROM_512KB}/NULU.COM | Bin .../RomDsk/ROM_512KB}/PIP.COM | Bin .../RomDsk/ROM_512KB}/PUTDS.COM | Bin .../RomDsk/ROM_512KB}/RELOG.COM | Bin .../RomDsk/ROM_512KB}/RMAC.COM | Bin .../RomDsk/ROM_512KB}/STAT.COM | Bin .../RomDsk/ROM_512KB}/SUBMIT.COM | Bin .../RomDsk/ROM_512KB}/SUPERSUB.COM | Bin .../RomDsk/ROM_512KB}/SURVEY.COM | Bin .../RomDsk/ROM_512KB}/TD.CFG | Bin .../RomDsk/ROM_512KB}/TD.COM | Bin .../RomDsk/ROM_512KB}/UNARC.COM | Bin .../RomDsk/ROM_512KB}/XSUB.COM | Bin .../RomDsk/ROM_512KB}/ZAP.COM | Bin .../RomDsk/ROM_512KB}/ZCAL.COM | Bin .../RomDsk/ROM_512KB}/ZCNFG.COM | Bin .../RomDsk/ROM_512KB}/ZCNFG24.CFG | Bin .../RomDsk/ROM_512KB}/ZDE.COM | Bin .../RomDsk/ROM_512KB}/ZDENST.COM | Bin .../RomDsk/ROM_512KB}/ZPATH.COM | Bin .../RomDsk/ROM_512KB}/ZSCONFIG.COM | Bin .../RomDsk/ROM_512KB}/ZXD.CFG | Bin .../RomDsk/ROM_512KB}/ZXD.COM | Bin {RomDsk => Source/RomDsk}/ReadMe.txt | 22 +- .../RomDsk/mk4_diskio3}/FDTST.COM | Bin .../RomDsk/mk4_diskio3}/RTC.COM | Bin .../RomDsk/mk4_diskio3}/XM-A0.COM | Bin .../RomDsk/mk4_diskio3}/XM-A1.COM | Bin .../RomDsk/mk4_diskio3}/XM5-A0.COM | Bin .../RomDsk/mk4_diskio3}/XM5-A1.COM | Bin .../RomDsk/mk4_propio}/RTC.COM | Bin .../RomDsk/mk4_propio}/XM-A0.COM | Bin .../RomDsk/mk4_propio}/XM-A1.COM | Bin .../RomDsk/mk4_propio}/XM5-A0.COM | Bin .../RomDsk/mk4_propio}/XM5-A1.COM | Bin .../RomDsk/mk4_std}/RTC.COM | Bin .../RomDsk/mk4_std}/XM-A0.COM | Bin .../RomDsk/mk4_std}/XM-A1.COM | Bin .../RomDsk/mk4_std}/XM5-A0.COM | Bin .../RomDsk/mk4_std}/XM5-A1.COM | Bin .../RomDsk/n8_2312}/FDTST.COM | Bin .../RomDsk/n8_2312}/RTC.COM | Bin .../RomDsk/n8_2312}/XM-A0.COM | Bin .../RomDsk/n8_2312}/XM-A1.COM | Bin .../RomDsk/n8_2312}/XM5-A0.COM | Bin .../RomDsk/n8_2312}/XM5-A1.COM | Bin .../RomDsk/n8_2511}/FDTST.COM | Bin .../RomDsk/n8_2511}/RTC.COM | Bin .../RomDsk/n8_2511}/XM-A0.COM | Bin .../RomDsk/n8_2511}/XM-A1.COM | Bin .../RomDsk/n8_2511}/XM5-A0.COM | Bin .../RomDsk/n8_2511}/XM5-A1.COM | Bin .../RomDsk/n8vem_ci}/1200.COM | Bin .../RomDsk/n8vem_ci}/38400.COM | Bin .../RomDsk/n8vem_ci}/9600.COM | Bin .../RomDsk/n8vem_ci}/RTC.COM | Bin .../RomDsk/n8vem_ci}/T5.COM | Bin .../RomDsk/n8vem_ci}/VT3.COM | Bin .../RomDsk/n8vem_ci}/XM.COM | Bin .../RomDsk/n8vem_ci}/XM5.COM | Bin .../RomDsk/n8vem_cvdu}/1200.COM | Bin .../RomDsk/n8vem_cvdu}/38400.COM | Bin .../RomDsk/n8vem_cvdu}/9600.COM | Bin .../RomDsk/n8vem_cvdu}/RTC.COM | Bin .../RomDsk/n8vem_cvdu}/T5.COM | Bin .../RomDsk/n8vem_cvdu}/XM.COM | Bin .../RomDsk/n8vem_cvdu}/XM5.COM | Bin .../RomDsk/n8vem_dide}/1200.COM | Bin .../RomDsk/n8vem_dide}/38400.COM | Bin .../RomDsk/n8vem_dide}/9600.COM | Bin .../RomDsk/n8vem_dide}/FDTST.COM | Bin .../RomDsk/n8vem_dide}/RTC.COM | Bin .../RomDsk/n8vem_dide}/T5.COM | Bin .../RomDsk/n8vem_dide}/XM.COM | Bin .../RomDsk/n8vem_dide}/XM5.COM | Bin .../RomDsk/n8vem_diskio}/1200.COM | Bin .../RomDsk/n8vem_diskio}/38400.COM | Bin .../RomDsk/n8vem_diskio}/9600.COM | Bin .../RomDsk/n8vem_diskio}/ECIDETST.COM | Bin .../RomDsk/n8vem_diskio}/FDCMON.COM | Bin .../RomDsk/n8vem_diskio}/FDTST.COM | Bin .../RomDsk/n8vem_diskio}/RTC.COM | Bin .../RomDsk/n8vem_diskio}/T5.COM | Bin .../RomDsk/n8vem_diskio}/TP-IDE.COM | Bin .../RomDsk/n8vem_diskio}/XM.COM | Bin .../RomDsk/n8vem_diskio}/XM5.COM | Bin .../RomDsk/n8vem_diskio3+cvdu}/1200.COM | Bin .../RomDsk/n8vem_diskio3+cvdu}/38400.COM | Bin .../RomDsk/n8vem_diskio3+cvdu}/9600.COM | Bin .../RomDsk/n8vem_diskio3+cvdu}/FDTST.COM | Bin .../RomDsk/n8vem_diskio3+cvdu}/RTC.COM | Bin .../RomDsk/n8vem_diskio3+cvdu}/T5.COM | Bin .../RomDsk/n8vem_diskio3+cvdu}/XM.COM | Bin .../RomDsk/n8vem_diskio3+cvdu}/XM5.COM | Bin .../RomDsk/n8vem_diskio3}/1200.COM | Bin .../RomDsk/n8vem_diskio3}/38400.COM | Bin .../RomDsk/n8vem_diskio3}/9600.COM | Bin .../RomDsk/n8vem_diskio3}/FDTST.COM | Bin .../RomDsk/n8vem_diskio3}/RTC.COM | Bin .../RomDsk/n8vem_diskio3}/T5.COM | Bin .../RomDsk/n8vem_diskio3}/XM.COM | Bin .../RomDsk/n8vem_diskio3}/XM5.COM | Bin .../RomDsk/n8vem_dsd}/1200.COM | Bin .../RomDsk/n8vem_dsd}/38400.COM | Bin .../RomDsk/n8vem_dsd}/9600.COM | Bin .../RomDsk/n8vem_dsd}/RTC.COM | Bin .../RomDsk/n8vem_dsd}/T5.COM | Bin .../RomDsk/n8vem_dsd}/VT3.COM | Bin .../RomDsk/n8vem_dsd}/XM.COM | Bin .../RomDsk/n8vem_dsd}/XM5.COM | Bin .../RomDsk/n8vem_mfp}/1200.COM | Bin .../RomDsk/n8vem_mfp}/38400.COM | Bin .../RomDsk/n8vem_mfp}/9600.COM | Bin .../RomDsk/n8vem_mfp}/RTC.COM | Bin .../RomDsk/n8vem_mfp}/T5.COM | Bin .../RomDsk/n8vem_mfp}/VT3.COM | Bin .../RomDsk/n8vem_mfp}/XM.COM | Bin .../RomDsk/n8vem_mfp}/XM5.COM | Bin .../RomDsk/n8vem_ppide}/1200.COM | Bin .../RomDsk/n8vem_ppide}/38400.COM | Bin .../RomDsk/n8vem_ppide}/9600.COM | Bin .../RomDsk/n8vem_ppide}/PPIDETST.COM | Bin .../RomDsk/n8vem_ppide}/RTC.COM | Bin .../RomDsk/n8vem_ppide}/T5.COM | Bin .../RomDsk/n8vem_ppide}/VT3.COM | Bin .../RomDsk/n8vem_ppide}/XM.COM | Bin .../RomDsk/n8vem_ppide}/XM5.COM | Bin .../RomDsk/n8vem_ppisd}/1200.COM | Bin .../RomDsk/n8vem_ppisd}/38400.COM | Bin .../RomDsk/n8vem_ppisd}/9600.COM | Bin .../RomDsk/n8vem_ppisd}/RTC.COM | Bin .../RomDsk/n8vem_ppisd}/T5.COM | Bin .../RomDsk/n8vem_ppisd}/VT3.COM | Bin .../RomDsk/n8vem_ppisd}/XM.COM | Bin .../RomDsk/n8vem_ppisd}/XM5.COM | Bin .../RomDsk/n8vem_propio}/1200.COM | Bin .../RomDsk/n8vem_propio}/38400.COM | Bin .../RomDsk/n8vem_propio}/9600.COM | Bin .../RomDsk/n8vem_propio}/RTC.COM | Bin .../RomDsk/n8vem_propio}/T5.COM | Bin .../RomDsk/n8vem_propio}/XM.COM | Bin .../RomDsk/n8vem_propio}/XM5.COM | Bin .../RomDsk/n8vem_rf}/1200.COM | Bin .../RomDsk/n8vem_rf}/38400.COM | Bin .../RomDsk/n8vem_rf}/9600.COM | Bin .../RomDsk/n8vem_rf}/RTC.COM | Bin .../RomDsk/n8vem_rf}/T5.COM | Bin .../RomDsk/n8vem_rf}/VT3.COM | Bin .../RomDsk/n8vem_rf}/XM.COM | Bin .../RomDsk/n8vem_rf}/XM5.COM | Bin .../RomDsk/n8vem_simh}/HDIR.COM | Bin .../RomDsk/n8vem_simh}/R.COM | Bin .../RomDsk/n8vem_simh}/RSETSIMH.COM | Bin .../RomDsk/n8vem_simh}/TIMER.COM | Bin .../RomDsk/n8vem_simh}/URL.COM | Bin .../RomDsk/n8vem_simh}/W.COM | Bin .../RomDsk/n8vem_std}/1200.COM | Bin .../RomDsk/n8vem_std}/38400.COM | Bin .../RomDsk/n8vem_std}/9600.COM | Bin .../RomDsk/n8vem_std}/RTC.COM | Bin .../RomDsk/n8vem_std}/T5.COM | Bin .../RomDsk/n8vem_std}/VT3.COM | Bin .../RomDsk/n8vem_std}/XM.COM | Bin .../RomDsk/n8vem_std}/XM5.COM | Bin .../RomDsk/n8vem_vdu}/1200.COM | Bin .../RomDsk/n8vem_vdu}/38400.COM | Bin .../RomDsk/n8vem_vdu}/9600.COM | Bin .../RomDsk/n8vem_vdu}/RTC.COM | Bin .../RomDsk/n8vem_vdu}/T5.COM | Bin .../RomDsk/n8vem_vdu}/XM.COM | Bin .../RomDsk/n8vem_vdu}/XM5.COM | Bin .../RomDsk/una_std}/XM-A0.COM | Bin .../RomDsk/una_std}/XM-A1.COM | Bin .../RomDsk/una_std}/XM.COM | Bin .../RomDsk/una_std}/XM5-A0.COM | Bin .../RomDsk/una_std}/XM5-A1.COM | Bin .../RomDsk/una_std}/XM5.COM | Bin .../RomDsk/zeta_ppisd}/1200.COM | Bin .../RomDsk/zeta_ppisd}/38400.COM | Bin .../RomDsk/zeta_ppisd}/9600.COM | Bin .../RomDsk/zeta_ppisd}/FDTST.COM | Bin .../RomDsk/zeta_ppisd}/RTC.COM | Bin .../RomDsk/zeta_ppisd}/XM.COM | Bin .../RomDsk/zeta_ppisd}/XM5.COM | Bin .../RomDsk/zeta_ppp}/1200.COM | Bin .../RomDsk/zeta_ppp}/38400.COM | Bin .../RomDsk/zeta_ppp}/9600.COM | Bin .../RomDsk/zeta_ppp}/FDTST.COM | Bin .../RomDsk/zeta_ppp}/RTC.COM | Bin .../RomDsk/zeta_ppp}/TSTPPP.COM | Bin .../RomDsk/zeta_ppp}/XM.COM | Bin .../RomDsk/zeta_ppp}/XM5.COM | Bin .../RomDsk/zeta_std}/1200.COM | Bin .../RomDsk/zeta_std}/38400.COM | Bin .../RomDsk/zeta_std}/9600.COM | Bin .../RomDsk/zeta_std}/FDTST.COM | Bin .../RomDsk/zeta_std}/PPIDETST.COM | Bin .../RomDsk/zeta_std}/RTC.COM | Bin Source/RomDsk/zeta_std/XM.COM | Bin 0 -> 5375 bytes Source/RomDsk/zeta_std/XM5.COM | Bin 0 -> 3072 bytes Source/ZCPR-DJ/Build.cmd | 15 + {ZCPR-DJ => Source/ZCPR-DJ}/Clean.cmd | 0 {ZCPR-DJ => Source/ZCPR-DJ}/zcpr.doc | 0 {ZCPR-DJ => Source/ZCPR-DJ}/zcpr.mac | 0 {ZCPR-DJ => Source/ZCPR-DJ}/zcpr.mac.bak | 0 {ZCPR-DJ => Source/ZCPR-DJ}/zcprdemo.com | Bin Source/ZCPR/Build.cmd | 18 + {ZCPR => Source/ZCPR}/Clean.cmd | 0 {ZCPR => Source/ZCPR}/bdloc.asm | 0 {ZCPR => Source/ZCPR}/zcpr.asm | 0 {ZCPR => Source/ZCPR}/zcpr.bak | 0 {ZCPR => Source/ZCPR}/zcpr.doc | 0 {ZCPR => Source/ZCPR}/zcpr.hlp | 0 {ZCPR => Source/ZCPR}/zcpr.msg | 0 Source/ZSDOS/Build.cmd | 16 + {ZSDOS => Source/ZSDOS}/Clean.cmd | 0 Source/ZSDOS/Clock/Build.cmd | 14 + {ZSDOS => Source/ZSDOS}/Clock/CLOCKS.DAT | Bin {ZSDOS => Source/ZSDOS}/Clock/Clean.cmd | 0 {ZSDOS => Source/ZSDOS}/Clock/LDDS.COM | Bin {ZSDOS => Source/ZSDOS}/Clock/LDP2D.COM | Bin {ZSDOS => Source/ZSDOS}/Clock/ReadMe.txt | 0 {ZSDOS => Source/ZSDOS}/Clock/clock.lib | 0 {ZSDOS => Source/ZSDOS}/Clock/hbclk.z80 | 0 {ZSDOS => Source/ZSDOS}/Clock/preclock.lib | 0 {ZSDOS => Source/ZSDOS}/Clock/zsdosbio.not | 0 {ZSDOS => Source/ZSDOS}/Clock/zsdosbio.z80 | 0 .../ZSDOS/Distribution}/-README.0 | 0 .../ZSDOS/Distribution}/BGPATCH.HEX | Bin .../ZSDOS/Distribution}/CLOCKS.DAT | Bin .../ZSDOS/Distribution}/COPY.CFG | Bin .../ZSDOS/Distribution}/COPY.COM | Bin .../ZSDOS/Distribution}/COPY.UPD | 0 .../ZSDOS/Distribution}/DATSWEEP.COM | Bin .../ZSDOS/Distribution}/DSCONFIG.COM | Bin .../ZSDOS/Distribution}/FA16.CFG | Bin .../ZSDOS/Distribution}/FA16.DOC | 0 .../ZSDOS/Distribution}/FA16A.FOR | 0 .../ZSDOS/Distribution}/FA16CFG.TXT | 0 .../ZSDOS/Distribution}/FILEATTR.COM | Bin .../ZSDOS/Distribution}/FILEDATE.CFG | Bin .../ZSDOS/Distribution}/FILEDATE.COM | Bin .../ZSDOS/Distribution}/FILEDATX.CFG | Bin .../ZSDOS/Distribution}/INITDIR.CFG | Bin .../ZSDOS/Distribution}/INITDIR.COM | Bin .../ZSDOS/Distribution}/INSTALOS.COM | Bin .../ZSDOS/Distribution}/LDTIMD.COM | Bin .../ZSDOS/Distribution}/LDTIMP.COM | Bin .../ZSDOS/Distribution}/LICENSE.TXT | 0 .../ZSDOS/Distribution}/NZCOMPAT.HEX | 0 .../ZSDOS/Distribution}/PUTBG.COM | Bin .../ZSDOS/Distribution}/PUTDS.COM | Bin .../ZSDOS/Distribution}/README.1ST | 0 .../ZSDOS/Distribution}/README.2ND | 0 .../ZSDOS/Distribution}/RELOG.COM | Bin .../ZSDOS/Distribution}/SETTERM.COM | Bin .../ZSDOS/Distribution}/SETUPZST.COM | Bin .../ZSDOS/Distribution}/STAMPS.DAT | Bin .../ZSDOS/Distribution}/TD.CFG | Bin .../ZSDOS/Distribution}/TD.COM | Bin .../ZSDOS/Distribution}/TERMBASE.DAT | Bin .../ZSDOS/Distribution}/TESTCLOK.COM | Bin .../ZSDOS/Distribution}/USERCLOK.TEM | 0 .../ZSDOS/Distribution}/ZCAL.COM | Bin .../ZSDOS/Distribution}/ZCNFG.COM | Bin .../ZSDOS/Distribution}/ZCNFG24.CFG | Bin .../ZSDOS/Distribution}/ZDDOS.HEX | 0 .../ZSDOS/Distribution}/ZDDOS.ZRL | Bin .../ZSDOS/Distribution}/ZPATH.COM | Bin .../ZSDOS/Distribution}/ZSCONFIG.COM | Bin .../ZSDOS/Distribution}/ZSDOS.HEX | 0 .../ZSDOS/Distribution}/ZSDOS.ZRL | Bin .../ZSDOS/Distribution}/ZSVSTAMP.CIM | Bin .../ZSDOS/Distribution}/ZSVSTAMP.COM | Bin .../ZSDOS/Distribution}/ZSVSTAMP.DOC | 0 .../ZSDOS/Distribution}/ZXD.CFG | Bin .../ZSDOS/Distribution}/ZXD.COM | Bin {ZSDOS => Source/ZSDOS}/license.txt | 0 {ZSDOS => Source/ZSDOS}/readme | 0 {ZSDOS => Source/ZSDOS}/zsdos-gp.z80 | 0 {ZSDOS => Source/ZSDOS}/zsdos.lib | 0 {ZSDOS => Source/ZSDOS}/zsdos.pdf | 0 {ZSDOS => Source/ZSDOS}/zsdos.z80 | 0 Source/loader - Copy.asm | 1016 ------ Source/prefix.asm | 53 - Source/ver.inc | 7 - Support/ZSDOS/COPY.UPD | 43 - Support/ZSDOS/DSCONFIG.COM | Bin 16384 -> 0 bytes Support/ZSDOS/SETTERM.COM | Bin 19840 -> 0 bytes Support/ZSDOS/SETUPZST.COM | Bin 7936 -> 0 bytes Support/ZSDOS/TERMBASE.DAT | Bin 6400 -> 0 bytes Support/ZSDOS/TESTCLOK.COM | Bin 6400 -> 0 bytes Tools/cpmtools/diskdefs | 66 +- ZCPR-DJ/Build.cmd | 12 - ZCPR/Build.cmd | 15 - ZSDOS/Build.cmd | 13 - ZSDOS/Clock/Build.cmd | 11 - ZSDOS/Clock/hbclk.err | 0 ZSDOS/Clock/hbclk.prn | 178 - ZSDOS/Clock/hbclk.rel | Bin 384 -> 0 bytes ZSDOS/zsdos.bin | Bin 3584 -> 0 bytes ZSDOS/zsdos.err | 0 ZSDOS/zsdos.prn | 3226 ----------------- ZSDOS/zsdos.rel | Bin 4224 -> 0 bytes ZSDOS/zsdos.sym | 2 - 654 files changed, 1161 insertions(+), 6850 deletions(-) delete mode 100644 BuildApps.cmd delete mode 100644 BuildCPM22.cmd delete mode 100644 BuildUNA.cmd delete mode 100644 BuildUNALOAD.cmd delete mode 100644 BuildZCPR-DJ.cmd delete mode 100644 BuildZCPR.cmd delete mode 100644 CPM22/Build.cmd rename {Support => Hardware/Experimental}/PropIO2_test/PropIO2.eeprom (100%) rename {Support => Hardware/Experimental}/PropIO2_test/Spin/Build.cmd (100%) rename {Support/ParPortProp => Hardware/Experimental/PropIO2_test}/Spin/E555_SPKEngine.spin (100%) rename {Support/ParPortProp => Hardware/Experimental/PropIO2_test}/Spin/Keyboard.spin (100%) rename {Support => Hardware/Experimental}/PropIO2_test/Spin/Parallax Serial Terminal.spin (100%) rename {Support => Hardware/Experimental}/PropIO2_test/Spin/PropIO2.list (100%) rename {Support => Hardware/Experimental}/PropIO2_test/Spin/PropIO2.spin (100%) rename {Support/ParPortProp => Hardware/Experimental/PropIO2_test}/Spin/safe_spi.spin (100%) rename {Support => Hardware/Experimental}/PropIO2_test/Spin/vga8x8d.spin (100%) rename {Support => Hardware/Experimental}/PropIO2_test/Spin/vgacolour.spin (100%) rename {Support => Hardware/Experimental}/PropIO2_test/Spin/vt100.spin (100%) rename {Support => Hardware/Experimental}/vga2/Build.cmd (100%) rename {Support => Hardware/Experimental}/vga2/Makefile (100%) rename {Support => Hardware/Experimental}/vga2/bstc.exe (100%) rename {Support => Hardware/Experimental}/vga2/vga8x8d.spin (100%) rename {Support => Hardware/Experimental}/vga2/vgacolour.spin (100%) rename {Support => Hardware/Experimental}/vga2/vgademo.eeprom (100%) rename {Support => Hardware/Experimental}/vga2/vgademo.list (100%) rename {Support => Hardware/Experimental}/vga2/vgademo.spin (100%) rename {Support => Hardware/Experimental}/vga2/vt100.spin (100%) rename {Support => Hardware}/ParPortProp/ParPortProp.eeprom (100%) rename {Support/PropIO2 => Hardware/ParPortProp}/Spin/E555_SPKEngine.spin (100%) rename {Support => Hardware}/ParPortProp/Spin/FullDuplexSerial.spin (100%) rename {Support => Hardware}/ParPortProp/Spin/FullDuplexSerialNull.spin (100%) rename {Support/PropIO => Hardware/ParPortProp}/Spin/Keyboard.spin (100%) rename {Support => Hardware}/ParPortProp/Spin/ParPortProp.spin (100%) rename {Support => Hardware}/ParPortProp/Spin/Parallax Serial Terminal Null.spin (100%) rename {Support => Hardware}/ParPortProp/Spin/Parallax Serial Terminal.spin (100%) rename {Support => Hardware}/ParPortProp/Spin/VGA_1024.spin (100%) rename {Support => Hardware}/ParPortProp/Spin/VGA_HiRes_Text.spin (100%) rename {Support/PropIO => Hardware/ParPortProp}/Spin/safe_spi.spin (100%) rename {Support => Hardware}/ParPortProp/TstPPP.com (100%) rename {Support => Hardware}/PropIO/PropIO.eeprom (100%) rename {Support/PropIO2 => Hardware/PropIO}/Spin/Keyboard.spin (100%) rename {Support => Hardware}/PropIO/Spin/Parallax Serial Terminal.spin (100%) rename {Support => Hardware}/PropIO/Spin/PropIO.spin (100%) rename {Support => Hardware}/PropIO/Spin/VGA_1024.spin (100%) rename {Support => Hardware}/PropIO/Spin/VGA_HiRes_Text.spin (100%) rename {Support/PropIO2 => Hardware/PropIO}/Spin/safe_spi.spin (100%) rename {Support => Hardware}/PropIO2/PropIO2.eeprom (100%) rename {Support/PropIO2_test => Hardware/PropIO2}/Spin/E555_SPKEngine.spin (100%) rename {Support/PropIO2_test => Hardware/PropIO2}/Spin/Keyboard.spin (100%) rename {Support => Hardware}/PropIO2/Spin/Parallax Serial Terminal.spin (100%) rename {Support => Hardware}/PropIO2/Spin/PropIO2.spin (100%) rename {Support => Hardware}/PropIO2/Spin/VGA_1024.spin (100%) rename {Support => Hardware}/PropIO2/Spin/VGA_HiRes_Text.spin (100%) rename {Support/PropIO2_test => Hardware/PropIO2}/Spin/safe_spi.spin (100%) rename {Support => Hardware}/ReadMe.txt (54%) rename {Support => Hardware/VDU}/vdu.rom (100%) delete mode 100644 Make.cmd delete mode 100644 RomDsk/CPM_1024KB/CR.COM delete mode 100644 RomDsk/CPM_1024KB/DDTZ.DOC delete mode 100644 RomDsk/CPM_1024KB/MAC.COM delete mode 100644 RomDsk/CPM_1024KB/UNCR.COM delete mode 100644 RomDsk/CPM_1024KB/ZDE40.COM delete mode 100644 RomDsk/CPM_512KB/CR.COM delete mode 100644 RomDsk/CPM_512KB/DIRX.COM delete mode 100644 RomDsk/CPM_512KB/LIB.COM delete mode 100644 RomDsk/CPM_512KB/SID.COM delete mode 100644 RomDsk/CPM_512KB/UNCR.COM delete mode 100644 RomDsk/CPM_512KB/UNZIP.COM delete mode 100644 RomDsk/CPM_512KB/ZDE40.COM delete mode 100644 RomDsk/ZSYS_1024KB/ASM.COM delete mode 100644 RomDsk/ZSYS_1024KB/CLRDIR.COM delete mode 100644 RomDsk/ZSYS_1024KB/CR.COM delete mode 100644 RomDsk/ZSYS_1024KB/DDT.COM delete mode 100644 RomDsk/ZSYS_1024KB/DDTZ.COM delete mode 100644 RomDsk/ZSYS_1024KB/DDTZ.DOC delete mode 100644 RomDsk/ZSYS_1024KB/DIF.COM delete mode 100644 RomDsk/ZSYS_1024KB/DUMP.COM delete mode 100644 RomDsk/ZSYS_1024KB/ED.COM delete mode 100644 RomDsk/ZSYS_1024KB/FLASH.COM delete mode 100644 RomDsk/ZSYS_1024KB/LBREXT.COM delete mode 100644 RomDsk/ZSYS_1024KB/LIB.COM delete mode 100644 RomDsk/ZSYS_1024KB/LINK.COM delete mode 100644 RomDsk/ZSYS_1024KB/LOAD.COM delete mode 100644 RomDsk/ZSYS_1024KB/MAC.COM delete mode 100644 RomDsk/ZSYS_1024KB/MBASIC.COM delete mode 100644 RomDsk/ZSYS_1024KB/NULU.COM delete mode 100644 RomDsk/ZSYS_1024KB/PIP.COM delete mode 100644 RomDsk/ZSYS_1024KB/RMAC.COM delete mode 100644 RomDsk/ZSYS_1024KB/SID.COM delete mode 100644 RomDsk/ZSYS_1024KB/STAT.COM delete mode 100644 RomDsk/ZSYS_1024KB/SUBMIT.COM delete mode 100644 RomDsk/ZSYS_1024KB/SUPERSUB.COM delete mode 100644 RomDsk/ZSYS_1024KB/UNARC.COM delete mode 100644 RomDsk/ZSYS_1024KB/UNCR.COM delete mode 100644 RomDsk/ZSYS_1024KB/UNZIP.COM delete mode 100644 RomDsk/ZSYS_1024KB/XSUB.COM delete mode 100644 RomDsk/ZSYS_1024KB/ZAP.COM delete mode 100644 RomDsk/ZSYS_1024KB/ZDE.COM delete mode 100644 RomDsk/ZSYS_1024KB/ZDE40.COM delete mode 100644 RomDsk/ZSYS_1024KB/ZDENST.COM delete mode 100644 RomDsk/ZSYS_512KB/CLRDIR.COM delete mode 100644 RomDsk/ZSYS_512KB/DDT.COM delete mode 100644 RomDsk/ZSYS_512KB/DIF.COM delete mode 100644 RomDsk/ZSYS_512KB/DUMP.COM delete mode 100644 RomDsk/ZSYS_512KB/ED.COM delete mode 100644 RomDsk/ZSYS_512KB/FLASH.COM delete mode 100644 RomDsk/ZSYS_512KB/LBREXT.COM delete mode 100644 RomDsk/ZSYS_512KB/LOAD.COM delete mode 100644 RomDsk/ZSYS_512KB/NULU.COM delete mode 100644 RomDsk/ZSYS_512KB/PIP.COM delete mode 100644 RomDsk/ZSYS_512KB/STAT.COM delete mode 100644 RomDsk/ZSYS_512KB/SUBMIT.COM delete mode 100644 RomDsk/ZSYS_512KB/SUPERSUB.COM delete mode 100644 RomDsk/ZSYS_512KB/UNARC.COM delete mode 100644 RomDsk/ZSYS_512KB/UNCR.COM delete mode 100644 RomDsk/ZSYS_512KB/XSUB.COM delete mode 100644 RomDsk/ZSYS_512KB/ZAP.COM delete mode 100644 RomDsk/ZSYS_512KB/ZDE.COM delete mode 100644 RomDsk/cfg_mk4_std/SURVEY.COM delete mode 100644 RomDsk/cfg_n8_2312/SURVEY.COM delete mode 100644 RomDsk/cfg_n8_2511/SURVEY.COM delete mode 100644 RomDsk/cfg_una_std/RTC.COM delete mode 100644 RomDsk/cfg_una_std/SURVEY.COM delete mode 100644 RomDsk/cfg_zeta_ppisd/SURVEY.COM delete mode 100644 RomDsk/cfg_zeta_ppp/SURVEY.COM delete mode 100644 RomDsk/cfg_zeta_std/SURVEY.COM create mode 100644 Sim.cfg rename {Apps => Source/Apps}/Assign - Copy.asm (100%) rename {Apps => Source/Apps}/Assign.asm (85%) rename {Apps => Source/Apps}/Build.cmd (53%) rename {Apps => Source/Apps}/Clean.cmd (100%) rename {Apps => Source/Apps}/Format.asm (100%) rename {Apps => Source/Apps}/SysCopy.asm (100%) rename {Apps => Source/Apps}/SysGen.z80 (100%) rename {Apps => Source/Apps}/Talk.asm (100%) rename Source/{ => BIOS}/Blank1024KB-UNA.dat (100%) rename Source/{ => BIOS}/Blank1024KB-UNALOAD.dat (100%) rename Source/{ => BIOS}/Blank512KB-UNA.dat (100%) rename Source/{ => BIOS}/Blank512KB-UNALOAD.dat (100%) create mode 100644 Source/BIOS/Build.cmd create mode 100644 Source/BIOS/Build.ps1 rename Source/{ => BIOS}/BuildUNALOAD.ps1 (100%) create mode 100644 Source/BIOS/Clean.cmd rename Source/{config_mk4_diskio3.asm => BIOS/Config/mk4_diskio3.asm} (90%) rename Source/{config_mk4_propio.asm => BIOS/Config/mk4_propio.asm} (89%) rename Source/{config_mk4_std.asm => BIOS/Config/mk4_std.asm} (90%) rename Source/{config_n8_2312.asm => BIOS/Config/n8_2312.asm} (87%) rename Source/{config_n8_2511.asm => BIOS/Config/n8_2511.asm} (87%) rename Source/{config_n8vem_ci.asm => BIOS/Config/n8vem_ci.asm} (93%) rename Source/{config_n8vem_cvdu.asm => BIOS/Config/n8vem_cvdu.asm} (93%) rename Source/{config_n8vem_dide.asm => BIOS/Config/n8vem_dide.asm} (87%) rename Source/{config_n8vem_diskio.asm => BIOS/Config/n8vem_diskio.asm} (87%) rename Source/{config_n8vem_diskio3+cvdu.asm => BIOS/Config/n8vem_diskio3+cvdu.asm} (87%) rename Source/{config_n8vem_diskio3.asm => BIOS/Config/n8vem_diskio3.asm} (87%) rename Source/{config_n8vem_dsd.asm => BIOS/Config/n8vem_dsd.asm} (87%) rename Source/{config_n8vem_mfp.asm => BIOS/Config/n8vem_mfp.asm} (87%) rename Source/{config_n8vem_ppide.asm => BIOS/Config/n8vem_ppide.asm} (87%) rename Source/{config_n8vem_ppisd.asm => BIOS/Config/n8vem_ppisd.asm} (87%) rename Source/{config_n8vem_propio.asm => BIOS/Config/n8vem_propio.asm} (89%) rename Source/{config_n8vem_rf.asm => BIOS/Config/n8vem_rf.asm} (92%) rename Source/{config_n8vem_simh.asm => BIOS/Config/n8vem_simh.asm} (87%) rename Source/{config_n8vem_std.asm => BIOS/Config/n8vem_std.asm} (93%) rename Source/{config_n8vem_vdu.asm => BIOS/Config/n8vem_vdu.asm} (87%) rename Source/{config_una_std.asm => BIOS/Config/una_std.asm} (92%) rename Source/{config_zeta_ppisd.asm => BIOS/Config/zeta_ppisd.asm} (87%) rename Source/{config_zeta_ppp.asm => BIOS/Config/zeta_ppp.asm} (87%) rename Source/{config_zeta_std.asm => BIOS/Config/zeta_std.asm} (87%) rename Source/{ => BIOS}/Make.cmd (100%) rename Source/{ => BIOS}/MakeBlankROM.ps1 (98%) rename {UNA => Source/BIOS/UNA}/FSFAT.BIN (100%) rename {UNA => Source/BIOS/UNA}/UNA-BIOS.BIN (100%) rename Source/{ => BIOS}/ansi.asm (100%) rename Source/{ => BIOS}/asci.asm (100%) rename Source/{ => BIOS}/bioshdr.inc (100%) rename Source/{ => BIOS}/blank1024KB.dat (100%) rename Source/{ => BIOS}/blank512KB.dat (100%) rename Source/{ => BIOS}/bootapp.asm (92%) rename Source/{ => BIOS}/bootgen.asm (100%) rename Source/{ => BIOS}/bootrom.asm (90%) rename Source/{ => BIOS}/cbios.asm (90%) rename Source/{ => BIOS}/cvdu.asm (100%) rename Source/{ => BIOS}/cvdu_font.asm (100%) rename Source/{ => BIOS}/dbgmon.asm (96%) rename Source/{ => BIOS}/diskdefs (85%) rename Source/{ => BIOS}/dsrtc.asm (100%) rename Source/{ => BIOS}/fd.asm (100%) rename Source/{ => BIOS}/hbfill.asm (100%) rename Source/{ => BIOS}/hbios.asm (89%) rename Source/{ => BIOS}/hdsk.asm (100%) rename Source/{ => BIOS}/ide.asm (100%) rename Source/{ => BIOS}/infolist.inc (100%) rename Source/{ => BIOS}/kbd.asm (100%) rename Source/{ => BIOS}/loader.asm (75%) rename Source/{ => BIOS}/makefile (100%) rename Source/{ => BIOS}/md.asm (100%) rename Source/{ => BIOS}/memmgr.asm (100%) rename Source/{ => BIOS}/mk4.inc (100%) rename Source/{ => BIOS}/n8.inc (100%) rename Source/{ => BIOS}/n8v.asm (100%) rename Source/{ => BIOS}/n8v_font.inc (100%) rename Source/{ => BIOS}/n8vem.inc (100%) rename Source/{ => BIOS}/pgzero.asm (100%) rename Source/{ => BIOS}/ppide.asm (100%) rename Source/{ => BIOS}/ppk.asm (100%) rename Source/{ => BIOS}/ppp.asm (100%) rename Source/{prefix_una.asm => BIOS/prefix.asm} (61%) rename Source/{ => BIOS}/prp.asm (100%) rename Source/{ => BIOS}/rf.asm (100%) rename Source/{ => BIOS}/rom0.asm (100%) rename Source/{ => BIOS}/romfill.asm (100%) rename Source/{ => BIOS}/sd.asm (100%) rename Source/{ => BIOS}/simrtc.asm (100%) rename Source/{ => BIOS}/std-n8vem.inc (100%) rename Source/{ => BIOS}/std.asm (95%) rename Source/{ => BIOS}/syscfg.asm (93%) rename Source/{ => BIOS}/time.asm (100%) rename Source/{ => BIOS}/tty.asm (100%) rename Source/{ => BIOS}/uart.asm (100%) rename Source/{ => BIOS}/ubios.asm (100%) rename Source/{ => BIOS}/una.inc (100%) rename Source/{ => BIOS}/util.asm (100%) rename Source/{ => BIOS}/vdu.asm (100%) create mode 100644 Source/BIOS/ver.inc rename Source/{ => BIOS}/xio.asm (100%) create mode 100644 Source/Build.cmd delete mode 100644 Source/Build.ps1 create mode 100644 Source/BuildCommon.cmd delete mode 100644 Source/BuildUNA.ps1 rename {CPM22 => Source/CPM22}/BDOS.ASM (100%) rename {CPM22 => Source/CPM22}/BDOS.BAK (100%) rename {CPM22 => Source/CPM22}/BDOS22.ASM (100%) rename {CPM22 => Source/CPM22}/BDOS22.BAK (100%) create mode 100644 Source/CPM22/Build.cmd rename {CPM22 => Source/CPM22}/CCP.ASM (100%) rename {CPM22 => Source/CPM22}/CCP.BAK (100%) rename {CPM22 => Source/CPM22}/CCP22.ASM (100%) rename {CPM22 => Source/CPM22}/CCP22.BAK (100%) rename {CPM22 => Source/CPM22}/Clean.cmd (100%) rename {CPM22 => Source/CPM22}/OS2CCP.ASM (100%) rename {CPM22 => Source/CPM22}/OS2CCP.BAK (100%) rename {CPM22 => Source/CPM22}/OS3BDOS.ASM (100%) rename {CPM22 => Source/CPM22}/OS3BDOS.BAK (100%) rename {CPM22 => Source/CPM22}/bdosb01.asm (100%) rename {CPM22 => Source/CPM22}/ccpb03.asm (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/ASM.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/CLOCKS.DAT (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/CLRDIR.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/COPY.CFG (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/COPY.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/DATSWEEP.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/DDT.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/DDTZ.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/DIF.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/DIRX.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/DSCONFIG.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/DUMP.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/ED.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/FA16.CFG (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/FA16.DOC (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/FA16A.FOR (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/FA16CFG.TXT (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/FILEATTR.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/FILEDATE.CFG (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/FILEDATE.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/FLASH.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/INITDIR.CFG (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/INITDIR.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/LBREXT.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/LDDS.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/LDP2D.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/LIB.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/LINK.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/LOAD.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/MBASIC.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/NULU.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/PIP.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/PUTBG.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/PUTDS.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/RELOG.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/RMAC.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/SETTERM.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/SETUPZST.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/SID.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/STAMPS.DAT (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/STAT.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/SUBMIT.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/SUPERSUB.COM (100%) rename {RomDsk/cfg_mk4_diskio3 => Source/RomDsk/ROM_1024KB}/SURVEY.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/TD.CFG (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/TD.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/TERMBASE.DAT (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/TESTCLOK.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/UNARC.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/UNZIP.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/VIDATT.Z80 (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/WS.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/WS.OVR (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/WSCHANGE.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/WSCHANGE.OVR (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/WSCHHELP.OVR (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/WSHELP.OVR (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/WSMSGS.OVR (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/WSPRINT.OVR (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/WSREADME.TXT (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/WSSHORT.OVR (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/WSU.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/XSUB.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/ZAP.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/ZCAL.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/ZCNFG.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/ZCNFG24.CFG (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/ZDE.COM (100%) rename {RomDsk/CPM_1024KB => Source/RomDsk/ROM_1024KB}/ZDENST.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/ZPATH.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/ZSCONFIG.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/ZSVSTAMP.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/ZSVSTAMP.DOC (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/ZXD.CFG (100%) rename {RomDsk/ZSYS_1024KB => Source/RomDsk/ROM_1024KB}/ZXD.COM (100%) rename {RomDsk/CPM_512KB => Source/RomDsk/ROM_512KB}/ASM.COM (100%) rename {RomDsk/CPM_512KB => Source/RomDsk/ROM_512KB}/CLRDIR.COM (100%) rename {RomDsk/ZSYS_512KB => Source/RomDsk/ROM_512KB}/COPY.CFG (100%) rename {RomDsk/ZSYS_512KB => Source/RomDsk/ROM_512KB}/COPY.COM (100%) rename {RomDsk/CPM_512KB => Source/RomDsk/ROM_512KB}/DDT.COM (100%) rename {RomDsk/CPM_512KB => Source/RomDsk/ROM_512KB}/DDTZ.COM (100%) rename {RomDsk/CPM_512KB => Source/RomDsk/ROM_512KB}/DIF.COM (100%) rename {RomDsk/CPM_512KB => Source/RomDsk/ROM_512KB}/DUMP.COM (100%) rename {RomDsk/CPM_512KB => Source/RomDsk/ROM_512KB}/ED.COM (100%) rename {RomDsk/ZSYS_512KB => Source/RomDsk/ROM_512KB}/FA16.CFG (100%) rename {RomDsk/ZSYS_512KB => Source/RomDsk/ROM_512KB}/FILEATTR.COM (100%) rename {RomDsk/ZSYS_512KB => Source/RomDsk/ROM_512KB}/FILEDATE.CFG (100%) rename {RomDsk/ZSYS_512KB => Source/RomDsk/ROM_512KB}/FILEDATE.COM (100%) rename {RomDsk/CPM_512KB => Source/RomDsk/ROM_512KB}/FLASH.COM (100%) rename {RomDsk/ZSYS_512KB => Source/RomDsk/ROM_512KB}/INITDIR.CFG (100%) rename {RomDsk/ZSYS_512KB => Source/RomDsk/ROM_512KB}/INITDIR.COM (100%) rename {RomDsk/CPM_512KB => Source/RomDsk/ROM_512KB}/LBREXT.COM (100%) rename {RomDsk/ZSYS_512KB => Source/RomDsk/ROM_512KB}/LDDS.COM (100%) rename {RomDsk/ZSYS_512KB => Source/RomDsk/ROM_512KB}/LDP2D.COM (100%) rename {RomDsk/CPM_512KB => Source/RomDsk/ROM_512KB}/LINK.COM (100%) rename {RomDsk/CPM_512KB => Source/RomDsk/ROM_512KB}/LOAD.COM (100%) rename {RomDsk/CPM_512KB => Source/RomDsk/ROM_512KB}/MBASIC.COM (100%) rename {RomDsk/CPM_512KB => Source/RomDsk/ROM_512KB}/NULU.COM (100%) rename {RomDsk/CPM_512KB => Source/RomDsk/ROM_512KB}/PIP.COM (100%) rename {RomDsk/ZSYS_512KB => Source/RomDsk/ROM_512KB}/PUTDS.COM (100%) rename {RomDsk/ZSYS_512KB => Source/RomDsk/ROM_512KB}/RELOG.COM (100%) rename {RomDsk/CPM_512KB => Source/RomDsk/ROM_512KB}/RMAC.COM (100%) rename {RomDsk/CPM_512KB => Source/RomDsk/ROM_512KB}/STAT.COM (100%) rename {RomDsk/CPM_512KB => Source/RomDsk/ROM_512KB}/SUBMIT.COM (100%) rename {RomDsk/CPM_512KB => Source/RomDsk/ROM_512KB}/SUPERSUB.COM (100%) rename {RomDsk/cfg_mk4_propio => Source/RomDsk/ROM_512KB}/SURVEY.COM (100%) rename {RomDsk/ZSYS_512KB => Source/RomDsk/ROM_512KB}/TD.CFG (100%) rename {RomDsk/ZSYS_512KB => Source/RomDsk/ROM_512KB}/TD.COM (100%) rename {RomDsk/CPM_512KB => Source/RomDsk/ROM_512KB}/UNARC.COM (100%) rename {RomDsk/CPM_512KB => Source/RomDsk/ROM_512KB}/XSUB.COM (100%) rename {RomDsk/CPM_512KB => Source/RomDsk/ROM_512KB}/ZAP.COM (100%) rename {RomDsk/ZSYS_512KB => Source/RomDsk/ROM_512KB}/ZCAL.COM (100%) rename {RomDsk/ZSYS_512KB => Source/RomDsk/ROM_512KB}/ZCNFG.COM (100%) rename {RomDsk/ZSYS_512KB => Source/RomDsk/ROM_512KB}/ZCNFG24.CFG (100%) rename {RomDsk/CPM_512KB => Source/RomDsk/ROM_512KB}/ZDE.COM (100%) rename {RomDsk/CPM_512KB => Source/RomDsk/ROM_512KB}/ZDENST.COM (100%) rename {RomDsk/ZSYS_512KB => Source/RomDsk/ROM_512KB}/ZPATH.COM (100%) rename {RomDsk/ZSYS_512KB => Source/RomDsk/ROM_512KB}/ZSCONFIG.COM (100%) rename {RomDsk/ZSYS_512KB => Source/RomDsk/ROM_512KB}/ZXD.CFG (100%) rename {RomDsk/ZSYS_512KB => Source/RomDsk/ROM_512KB}/ZXD.COM (100%) rename {RomDsk => Source/RomDsk}/ReadMe.txt (57%) rename {RomDsk/cfg_mk4_diskio3 => Source/RomDsk/mk4_diskio3}/FDTST.COM (100%) rename {RomDsk/cfg_mk4_diskio3 => Source/RomDsk/mk4_diskio3}/RTC.COM (100%) rename {RomDsk/cfg_mk4_diskio3 => Source/RomDsk/mk4_diskio3}/XM-A0.COM (100%) rename {RomDsk/cfg_mk4_diskio3 => Source/RomDsk/mk4_diskio3}/XM-A1.COM (100%) rename {RomDsk/cfg_mk4_diskio3 => Source/RomDsk/mk4_diskio3}/XM5-A0.COM (100%) rename {RomDsk/cfg_mk4_diskio3 => Source/RomDsk/mk4_diskio3}/XM5-A1.COM (100%) rename {RomDsk/cfg_mk4_propio => Source/RomDsk/mk4_propio}/RTC.COM (100%) rename {RomDsk/cfg_mk4_propio => Source/RomDsk/mk4_propio}/XM-A0.COM (100%) rename {RomDsk/cfg_mk4_propio => Source/RomDsk/mk4_propio}/XM-A1.COM (100%) rename {RomDsk/cfg_mk4_propio => Source/RomDsk/mk4_propio}/XM5-A0.COM (100%) rename {RomDsk/cfg_mk4_propio => Source/RomDsk/mk4_propio}/XM5-A1.COM (100%) rename {RomDsk/cfg_mk4_std => Source/RomDsk/mk4_std}/RTC.COM (100%) rename {RomDsk/cfg_mk4_std => Source/RomDsk/mk4_std}/XM-A0.COM (100%) rename {RomDsk/cfg_mk4_std => Source/RomDsk/mk4_std}/XM-A1.COM (100%) rename {RomDsk/cfg_mk4_std => Source/RomDsk/mk4_std}/XM5-A0.COM (100%) rename {RomDsk/cfg_mk4_std => Source/RomDsk/mk4_std}/XM5-A1.COM (100%) rename {RomDsk/cfg_n8_2312 => Source/RomDsk/n8_2312}/FDTST.COM (100%) rename {RomDsk/cfg_n8_2312 => Source/RomDsk/n8_2312}/RTC.COM (100%) rename {RomDsk/cfg_n8_2312 => Source/RomDsk/n8_2312}/XM-A0.COM (100%) rename {RomDsk/cfg_n8_2312 => Source/RomDsk/n8_2312}/XM-A1.COM (100%) rename {RomDsk/cfg_n8_2312 => Source/RomDsk/n8_2312}/XM5-A0.COM (100%) rename {RomDsk/cfg_n8_2312 => Source/RomDsk/n8_2312}/XM5-A1.COM (100%) rename {RomDsk/cfg_n8_2511 => Source/RomDsk/n8_2511}/FDTST.COM (100%) rename {RomDsk/cfg_n8_2511 => Source/RomDsk/n8_2511}/RTC.COM (100%) rename {RomDsk/cfg_n8_2511 => Source/RomDsk/n8_2511}/XM-A0.COM (100%) rename {RomDsk/cfg_n8_2511 => Source/RomDsk/n8_2511}/XM-A1.COM (100%) rename {RomDsk/cfg_n8_2511 => Source/RomDsk/n8_2511}/XM5-A0.COM (100%) rename {RomDsk/cfg_n8_2511 => Source/RomDsk/n8_2511}/XM5-A1.COM (100%) rename {RomDsk/cfg_n8vem_ci => Source/RomDsk/n8vem_ci}/1200.COM (100%) rename {RomDsk/cfg_n8vem_ci => Source/RomDsk/n8vem_ci}/38400.COM (100%) rename {RomDsk/cfg_n8vem_ci => Source/RomDsk/n8vem_ci}/9600.COM (100%) rename {RomDsk/cfg_n8vem_ci => Source/RomDsk/n8vem_ci}/RTC.COM (100%) rename {RomDsk/cfg_n8vem_ci => Source/RomDsk/n8vem_ci}/T5.COM (100%) rename {RomDsk/cfg_n8vem_ci => Source/RomDsk/n8vem_ci}/VT3.COM (100%) rename {RomDsk/cfg_n8vem_ci => Source/RomDsk/n8vem_ci}/XM.COM (100%) rename {RomDsk/cfg_n8vem_ci => Source/RomDsk/n8vem_ci}/XM5.COM (100%) rename {RomDsk/cfg_n8vem_cvdu => Source/RomDsk/n8vem_cvdu}/1200.COM (100%) rename {RomDsk/cfg_n8vem_cvdu => Source/RomDsk/n8vem_cvdu}/38400.COM (100%) rename {RomDsk/cfg_n8vem_cvdu => Source/RomDsk/n8vem_cvdu}/9600.COM (100%) rename {RomDsk/cfg_n8vem_cvdu => Source/RomDsk/n8vem_cvdu}/RTC.COM (100%) rename {RomDsk/cfg_n8vem_cvdu => Source/RomDsk/n8vem_cvdu}/T5.COM (100%) rename {RomDsk/cfg_n8vem_cvdu => Source/RomDsk/n8vem_cvdu}/XM.COM (100%) rename {RomDsk/cfg_n8vem_cvdu => Source/RomDsk/n8vem_cvdu}/XM5.COM (100%) rename {RomDsk/cfg_n8vem_dide => Source/RomDsk/n8vem_dide}/1200.COM (100%) rename {RomDsk/cfg_n8vem_dide => Source/RomDsk/n8vem_dide}/38400.COM (100%) rename {RomDsk/cfg_n8vem_dide => Source/RomDsk/n8vem_dide}/9600.COM (100%) rename {RomDsk/cfg_n8vem_dide => Source/RomDsk/n8vem_dide}/FDTST.COM (100%) rename {RomDsk/cfg_n8vem_dide => Source/RomDsk/n8vem_dide}/RTC.COM (100%) rename {RomDsk/cfg_n8vem_dide => Source/RomDsk/n8vem_dide}/T5.COM (100%) rename {RomDsk/cfg_n8vem_dide => Source/RomDsk/n8vem_dide}/XM.COM (100%) rename {RomDsk/cfg_n8vem_dide => Source/RomDsk/n8vem_dide}/XM5.COM (100%) rename {RomDsk/cfg_n8vem_diskio => Source/RomDsk/n8vem_diskio}/1200.COM (100%) rename {RomDsk/cfg_n8vem_diskio => Source/RomDsk/n8vem_diskio}/38400.COM (100%) rename {RomDsk/cfg_n8vem_diskio => Source/RomDsk/n8vem_diskio}/9600.COM (100%) rename {RomDsk/cfg_n8vem_diskio => Source/RomDsk/n8vem_diskio}/ECIDETST.COM (100%) rename {RomDsk/cfg_n8vem_diskio => Source/RomDsk/n8vem_diskio}/FDCMON.COM (100%) rename {RomDsk/cfg_n8vem_diskio => Source/RomDsk/n8vem_diskio}/FDTST.COM (100%) rename {RomDsk/cfg_n8vem_diskio => Source/RomDsk/n8vem_diskio}/RTC.COM (100%) rename {RomDsk/cfg_n8vem_diskio => Source/RomDsk/n8vem_diskio}/T5.COM (100%) rename {RomDsk/cfg_n8vem_diskio => Source/RomDsk/n8vem_diskio}/TP-IDE.COM (100%) rename {RomDsk/cfg_n8vem_diskio => Source/RomDsk/n8vem_diskio}/XM.COM (100%) rename {RomDsk/cfg_n8vem_diskio => Source/RomDsk/n8vem_diskio}/XM5.COM (100%) rename {RomDsk/cfg_n8vem_diskio3+cvdu => Source/RomDsk/n8vem_diskio3+cvdu}/1200.COM (100%) rename {RomDsk/cfg_n8vem_diskio3+cvdu => Source/RomDsk/n8vem_diskio3+cvdu}/38400.COM (100%) rename {RomDsk/cfg_n8vem_diskio3+cvdu => Source/RomDsk/n8vem_diskio3+cvdu}/9600.COM (100%) rename {RomDsk/cfg_n8vem_diskio3+cvdu => Source/RomDsk/n8vem_diskio3+cvdu}/FDTST.COM (100%) rename {RomDsk/cfg_n8vem_diskio3+cvdu => Source/RomDsk/n8vem_diskio3+cvdu}/RTC.COM (100%) rename {RomDsk/cfg_n8vem_diskio3+cvdu => Source/RomDsk/n8vem_diskio3+cvdu}/T5.COM (100%) rename {RomDsk/cfg_n8vem_diskio3+cvdu => Source/RomDsk/n8vem_diskio3+cvdu}/XM.COM (100%) rename {RomDsk/cfg_n8vem_diskio3+cvdu => Source/RomDsk/n8vem_diskio3+cvdu}/XM5.COM (100%) rename {RomDsk/cfg_n8vem_diskio3 => Source/RomDsk/n8vem_diskio3}/1200.COM (100%) rename {RomDsk/cfg_n8vem_diskio3 => Source/RomDsk/n8vem_diskio3}/38400.COM (100%) rename {RomDsk/cfg_n8vem_diskio3 => Source/RomDsk/n8vem_diskio3}/9600.COM (100%) rename {RomDsk/cfg_n8vem_diskio3 => Source/RomDsk/n8vem_diskio3}/FDTST.COM (100%) rename {RomDsk/cfg_n8vem_diskio3 => Source/RomDsk/n8vem_diskio3}/RTC.COM (100%) rename {RomDsk/cfg_n8vem_diskio3 => Source/RomDsk/n8vem_diskio3}/T5.COM (100%) rename {RomDsk/cfg_n8vem_diskio3 => Source/RomDsk/n8vem_diskio3}/XM.COM (100%) rename {RomDsk/cfg_n8vem_diskio3 => Source/RomDsk/n8vem_diskio3}/XM5.COM (100%) rename {RomDsk/cfg_n8vem_dsd => Source/RomDsk/n8vem_dsd}/1200.COM (100%) rename {RomDsk/cfg_n8vem_dsd => Source/RomDsk/n8vem_dsd}/38400.COM (100%) rename {RomDsk/cfg_n8vem_dsd => Source/RomDsk/n8vem_dsd}/9600.COM (100%) rename {RomDsk/cfg_n8vem_dsd => Source/RomDsk/n8vem_dsd}/RTC.COM (100%) rename {RomDsk/cfg_n8vem_dsd => Source/RomDsk/n8vem_dsd}/T5.COM (100%) rename {RomDsk/cfg_n8vem_dsd => Source/RomDsk/n8vem_dsd}/VT3.COM (100%) rename {RomDsk/cfg_n8vem_dsd => Source/RomDsk/n8vem_dsd}/XM.COM (100%) rename {RomDsk/cfg_n8vem_dsd => Source/RomDsk/n8vem_dsd}/XM5.COM (100%) rename {RomDsk/cfg_n8vem_mfp => Source/RomDsk/n8vem_mfp}/1200.COM (100%) rename {RomDsk/cfg_n8vem_mfp => Source/RomDsk/n8vem_mfp}/38400.COM (100%) rename {RomDsk/cfg_n8vem_mfp => Source/RomDsk/n8vem_mfp}/9600.COM (100%) rename {RomDsk/cfg_n8vem_mfp => Source/RomDsk/n8vem_mfp}/RTC.COM (100%) rename {RomDsk/cfg_n8vem_mfp => Source/RomDsk/n8vem_mfp}/T5.COM (100%) rename {RomDsk/cfg_n8vem_mfp => Source/RomDsk/n8vem_mfp}/VT3.COM (100%) rename {RomDsk/cfg_n8vem_mfp => Source/RomDsk/n8vem_mfp}/XM.COM (100%) rename {RomDsk/cfg_n8vem_mfp => Source/RomDsk/n8vem_mfp}/XM5.COM (100%) rename {RomDsk/cfg_n8vem_ppide => Source/RomDsk/n8vem_ppide}/1200.COM (100%) rename {RomDsk/cfg_n8vem_ppide => Source/RomDsk/n8vem_ppide}/38400.COM (100%) rename {RomDsk/cfg_n8vem_ppide => Source/RomDsk/n8vem_ppide}/9600.COM (100%) rename {RomDsk/cfg_n8vem_ppide => Source/RomDsk/n8vem_ppide}/PPIDETST.COM (100%) rename {RomDsk/cfg_n8vem_ppide => Source/RomDsk/n8vem_ppide}/RTC.COM (100%) rename {RomDsk/cfg_n8vem_ppide => Source/RomDsk/n8vem_ppide}/T5.COM (100%) rename {RomDsk/cfg_n8vem_ppide => Source/RomDsk/n8vem_ppide}/VT3.COM (100%) rename {RomDsk/cfg_n8vem_ppide => Source/RomDsk/n8vem_ppide}/XM.COM (100%) rename {RomDsk/cfg_n8vem_ppide => Source/RomDsk/n8vem_ppide}/XM5.COM (100%) rename {RomDsk/cfg_n8vem_ppisd => Source/RomDsk/n8vem_ppisd}/1200.COM (100%) rename {RomDsk/cfg_n8vem_ppisd => Source/RomDsk/n8vem_ppisd}/38400.COM (100%) rename {RomDsk/cfg_n8vem_ppisd => Source/RomDsk/n8vem_ppisd}/9600.COM (100%) rename {RomDsk/cfg_n8vem_ppisd => Source/RomDsk/n8vem_ppisd}/RTC.COM (100%) rename {RomDsk/cfg_n8vem_ppisd => Source/RomDsk/n8vem_ppisd}/T5.COM (100%) rename {RomDsk/cfg_n8vem_ppisd => Source/RomDsk/n8vem_ppisd}/VT3.COM (100%) rename {RomDsk/cfg_n8vem_ppisd => Source/RomDsk/n8vem_ppisd}/XM.COM (100%) rename {RomDsk/cfg_n8vem_ppisd => Source/RomDsk/n8vem_ppisd}/XM5.COM (100%) rename {RomDsk/cfg_n8vem_propio => Source/RomDsk/n8vem_propio}/1200.COM (100%) rename {RomDsk/cfg_n8vem_propio => Source/RomDsk/n8vem_propio}/38400.COM (100%) rename {RomDsk/cfg_n8vem_propio => Source/RomDsk/n8vem_propio}/9600.COM (100%) rename {RomDsk/cfg_n8vem_propio => Source/RomDsk/n8vem_propio}/RTC.COM (100%) rename {RomDsk/cfg_n8vem_propio => Source/RomDsk/n8vem_propio}/T5.COM (100%) rename {RomDsk/cfg_n8vem_propio => Source/RomDsk/n8vem_propio}/XM.COM (100%) rename {RomDsk/cfg_n8vem_propio => Source/RomDsk/n8vem_propio}/XM5.COM (100%) rename {RomDsk/cfg_n8vem_rf => Source/RomDsk/n8vem_rf}/1200.COM (100%) rename {RomDsk/cfg_n8vem_rf => Source/RomDsk/n8vem_rf}/38400.COM (100%) rename {RomDsk/cfg_n8vem_rf => Source/RomDsk/n8vem_rf}/9600.COM (100%) rename {RomDsk/cfg_n8vem_rf => Source/RomDsk/n8vem_rf}/RTC.COM (100%) rename {RomDsk/cfg_n8vem_rf => Source/RomDsk/n8vem_rf}/T5.COM (100%) rename {RomDsk/cfg_n8vem_rf => Source/RomDsk/n8vem_rf}/VT3.COM (100%) rename {RomDsk/cfg_n8vem_rf => Source/RomDsk/n8vem_rf}/XM.COM (100%) rename {RomDsk/cfg_n8vem_rf => Source/RomDsk/n8vem_rf}/XM5.COM (100%) rename {RomDsk/cfg_n8vem_simh => Source/RomDsk/n8vem_simh}/HDIR.COM (100%) rename {RomDsk/cfg_n8vem_simh => Source/RomDsk/n8vem_simh}/R.COM (100%) rename {RomDsk/cfg_n8vem_simh => Source/RomDsk/n8vem_simh}/RSETSIMH.COM (100%) rename {RomDsk/cfg_n8vem_simh => Source/RomDsk/n8vem_simh}/TIMER.COM (100%) rename {RomDsk/cfg_n8vem_simh => Source/RomDsk/n8vem_simh}/URL.COM (100%) rename {RomDsk/cfg_n8vem_simh => Source/RomDsk/n8vem_simh}/W.COM (100%) rename {RomDsk/cfg_n8vem_std => Source/RomDsk/n8vem_std}/1200.COM (100%) rename {RomDsk/cfg_n8vem_std => Source/RomDsk/n8vem_std}/38400.COM (100%) rename {RomDsk/cfg_n8vem_std => Source/RomDsk/n8vem_std}/9600.COM (100%) rename {RomDsk/cfg_n8vem_std => Source/RomDsk/n8vem_std}/RTC.COM (100%) rename {RomDsk/cfg_n8vem_std => Source/RomDsk/n8vem_std}/T5.COM (100%) rename {RomDsk/cfg_n8vem_std => Source/RomDsk/n8vem_std}/VT3.COM (100%) rename {RomDsk/cfg_n8vem_std => Source/RomDsk/n8vem_std}/XM.COM (100%) rename {RomDsk/cfg_n8vem_std => Source/RomDsk/n8vem_std}/XM5.COM (100%) rename {RomDsk/cfg_n8vem_vdu => Source/RomDsk/n8vem_vdu}/1200.COM (100%) rename {RomDsk/cfg_n8vem_vdu => Source/RomDsk/n8vem_vdu}/38400.COM (100%) rename {RomDsk/cfg_n8vem_vdu => Source/RomDsk/n8vem_vdu}/9600.COM (100%) rename {RomDsk/cfg_n8vem_vdu => Source/RomDsk/n8vem_vdu}/RTC.COM (100%) rename {RomDsk/cfg_n8vem_vdu => Source/RomDsk/n8vem_vdu}/T5.COM (100%) rename {RomDsk/cfg_n8vem_vdu => Source/RomDsk/n8vem_vdu}/XM.COM (100%) rename {RomDsk/cfg_n8vem_vdu => Source/RomDsk/n8vem_vdu}/XM5.COM (100%) rename {RomDsk/cfg_una_std => Source/RomDsk/una_std}/XM-A0.COM (100%) rename {RomDsk/cfg_una_std => Source/RomDsk/una_std}/XM-A1.COM (100%) rename {RomDsk/cfg_zeta_ppisd => Source/RomDsk/una_std}/XM.COM (100%) rename {RomDsk/cfg_una_std => Source/RomDsk/una_std}/XM5-A0.COM (100%) rename {RomDsk/cfg_una_std => Source/RomDsk/una_std}/XM5-A1.COM (100%) rename {RomDsk/cfg_zeta_ppisd => Source/RomDsk/una_std}/XM5.COM (100%) rename {RomDsk/cfg_zeta_ppisd => Source/RomDsk/zeta_ppisd}/1200.COM (100%) rename {RomDsk/cfg_zeta_ppisd => Source/RomDsk/zeta_ppisd}/38400.COM (100%) rename {RomDsk/cfg_zeta_ppisd => Source/RomDsk/zeta_ppisd}/9600.COM (100%) rename {RomDsk/cfg_zeta_ppisd => Source/RomDsk/zeta_ppisd}/FDTST.COM (100%) rename {RomDsk/cfg_zeta_ppisd => Source/RomDsk/zeta_ppisd}/RTC.COM (100%) rename {RomDsk/cfg_zeta_ppp => Source/RomDsk/zeta_ppisd}/XM.COM (100%) rename {RomDsk/cfg_zeta_ppp => Source/RomDsk/zeta_ppisd}/XM5.COM (100%) rename {RomDsk/cfg_zeta_ppp => Source/RomDsk/zeta_ppp}/1200.COM (100%) rename {RomDsk/cfg_zeta_ppp => Source/RomDsk/zeta_ppp}/38400.COM (100%) rename {RomDsk/cfg_zeta_ppp => Source/RomDsk/zeta_ppp}/9600.COM (100%) rename {RomDsk/cfg_zeta_ppp => Source/RomDsk/zeta_ppp}/FDTST.COM (100%) rename {RomDsk/cfg_zeta_ppp => Source/RomDsk/zeta_ppp}/RTC.COM (100%) rename {RomDsk/cfg_zeta_ppp => Source/RomDsk/zeta_ppp}/TSTPPP.COM (100%) rename {RomDsk/cfg_zeta_std => Source/RomDsk/zeta_ppp}/XM.COM (100%) rename {RomDsk/cfg_zeta_std => Source/RomDsk/zeta_ppp}/XM5.COM (100%) rename {RomDsk/cfg_zeta_std => Source/RomDsk/zeta_std}/1200.COM (100%) rename {RomDsk/cfg_zeta_std => Source/RomDsk/zeta_std}/38400.COM (100%) rename {RomDsk/cfg_zeta_std => Source/RomDsk/zeta_std}/9600.COM (100%) rename {RomDsk/cfg_zeta_std => Source/RomDsk/zeta_std}/FDTST.COM (100%) rename {RomDsk/cfg_zeta_std => Source/RomDsk/zeta_std}/PPIDETST.COM (100%) rename {RomDsk/cfg_zeta_std => Source/RomDsk/zeta_std}/RTC.COM (100%) create mode 100644 Source/RomDsk/zeta_std/XM.COM create mode 100644 Source/RomDsk/zeta_std/XM5.COM create mode 100644 Source/ZCPR-DJ/Build.cmd rename {ZCPR-DJ => Source/ZCPR-DJ}/Clean.cmd (100%) rename {ZCPR-DJ => Source/ZCPR-DJ}/zcpr.doc (100%) rename {ZCPR-DJ => Source/ZCPR-DJ}/zcpr.mac (100%) rename {ZCPR-DJ => Source/ZCPR-DJ}/zcpr.mac.bak (100%) rename {ZCPR-DJ => Source/ZCPR-DJ}/zcprdemo.com (100%) create mode 100644 Source/ZCPR/Build.cmd rename {ZCPR => Source/ZCPR}/Clean.cmd (100%) rename {ZCPR => Source/ZCPR}/bdloc.asm (100%) rename {ZCPR => Source/ZCPR}/zcpr.asm (100%) rename {ZCPR => Source/ZCPR}/zcpr.bak (100%) rename {ZCPR => Source/ZCPR}/zcpr.doc (100%) rename {ZCPR => Source/ZCPR}/zcpr.hlp (100%) rename {ZCPR => Source/ZCPR}/zcpr.msg (100%) create mode 100644 Source/ZSDOS/Build.cmd rename {ZSDOS => Source/ZSDOS}/Clean.cmd (100%) create mode 100644 Source/ZSDOS/Clock/Build.cmd rename {ZSDOS => Source/ZSDOS}/Clock/CLOCKS.DAT (100%) rename {ZSDOS => Source/ZSDOS}/Clock/Clean.cmd (100%) rename {ZSDOS => Source/ZSDOS}/Clock/LDDS.COM (100%) rename {ZSDOS => Source/ZSDOS}/Clock/LDP2D.COM (100%) rename {ZSDOS => Source/ZSDOS}/Clock/ReadMe.txt (100%) rename {ZSDOS => Source/ZSDOS}/Clock/clock.lib (100%) rename {ZSDOS => Source/ZSDOS}/Clock/hbclk.z80 (100%) rename {ZSDOS => Source/ZSDOS}/Clock/preclock.lib (100%) rename {ZSDOS => Source/ZSDOS}/Clock/zsdosbio.not (100%) rename {ZSDOS => Source/ZSDOS}/Clock/zsdosbio.z80 (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/-README.0 (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/BGPATCH.HEX (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/CLOCKS.DAT (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/COPY.CFG (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/COPY.COM (100%) rename {RomDsk/ZSYS_1024KB => Source/ZSDOS/Distribution}/COPY.UPD (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/DATSWEEP.COM (100%) rename {RomDsk/ZSYS_512KB => Source/ZSDOS/Distribution}/DSCONFIG.COM (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/FA16.CFG (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/FA16.DOC (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/FA16A.FOR (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/FA16CFG.TXT (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/FILEATTR.COM (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/FILEDATE.CFG (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/FILEDATE.COM (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/FILEDATX.CFG (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/INITDIR.CFG (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/INITDIR.COM (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/INSTALOS.COM (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/LDTIMD.COM (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/LDTIMP.COM (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/LICENSE.TXT (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/NZCOMPAT.HEX (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/PUTBG.COM (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/PUTDS.COM (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/README.1ST (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/README.2ND (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/RELOG.COM (100%) rename {RomDsk/ZSYS_512KB => Source/ZSDOS/Distribution}/SETTERM.COM (100%) rename {RomDsk/ZSYS_512KB => Source/ZSDOS/Distribution}/SETUPZST.COM (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/STAMPS.DAT (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/TD.CFG (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/TD.COM (100%) rename {RomDsk/ZSYS_512KB => Source/ZSDOS/Distribution}/TERMBASE.DAT (100%) rename {RomDsk/ZSYS_512KB => Source/ZSDOS/Distribution}/TESTCLOK.COM (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/USERCLOK.TEM (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/ZCAL.COM (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/ZCNFG.COM (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/ZCNFG24.CFG (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/ZDDOS.HEX (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/ZDDOS.ZRL (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/ZPATH.COM (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/ZSCONFIG.COM (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/ZSDOS.HEX (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/ZSDOS.ZRL (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/ZSVSTAMP.CIM (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/ZSVSTAMP.COM (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/ZSVSTAMP.DOC (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/ZXD.CFG (100%) rename {Support/ZSDOS => Source/ZSDOS/Distribution}/ZXD.COM (100%) rename {ZSDOS => Source/ZSDOS}/license.txt (100%) rename {ZSDOS => Source/ZSDOS}/readme (100%) rename {ZSDOS => Source/ZSDOS}/zsdos-gp.z80 (100%) rename {ZSDOS => Source/ZSDOS}/zsdos.lib (100%) rename {ZSDOS => Source/ZSDOS}/zsdos.pdf (100%) rename {ZSDOS => Source/ZSDOS}/zsdos.z80 (100%) delete mode 100644 Source/loader - Copy.asm delete mode 100644 Source/prefix.asm delete mode 100644 Source/ver.inc delete mode 100644 Support/ZSDOS/COPY.UPD delete mode 100644 Support/ZSDOS/DSCONFIG.COM delete mode 100644 Support/ZSDOS/SETTERM.COM delete mode 100644 Support/ZSDOS/SETUPZST.COM delete mode 100644 Support/ZSDOS/TERMBASE.DAT delete mode 100644 Support/ZSDOS/TESTCLOK.COM delete mode 100644 ZCPR-DJ/Build.cmd delete mode 100644 ZCPR/Build.cmd delete mode 100644 ZSDOS/Build.cmd delete mode 100644 ZSDOS/Clock/Build.cmd delete mode 100644 ZSDOS/Clock/hbclk.err delete mode 100644 ZSDOS/Clock/hbclk.prn delete mode 100644 ZSDOS/Clock/hbclk.rel delete mode 100644 ZSDOS/zsdos.bin delete mode 100644 ZSDOS/zsdos.err delete mode 100644 ZSDOS/zsdos.prn delete mode 100644 ZSDOS/zsdos.rel delete mode 100644 ZSDOS/zsdos.sym diff --git a/Build.cmd b/Build.cmd index d3ef4d1e..13a64142 100644 --- a/Build.cmd +++ b/Build.cmd @@ -1,4 +1,4 @@ @echo off setlocal cd Source -PowerShell .\Build.ps1 %* +call Build %* diff --git a/BuildApps.cmd b/BuildApps.cmd deleted file mode 100644 index 6919ae84..00000000 --- a/BuildApps.cmd +++ /dev/null @@ -1,7 +0,0 @@ -@echo off - -setlocal - -echo Building Apps... -cd Apps -call Build.cmd \ No newline at end of file diff --git a/BuildCPM22.cmd b/BuildCPM22.cmd deleted file mode 100644 index 6363dc48..00000000 --- a/BuildCPM22.cmd +++ /dev/null @@ -1,7 +0,0 @@ -@echo off - -setlocal - -echo Building CP/M 2.2... -cd CPM22 -call Build.cmd \ No newline at end of file diff --git a/BuildCommon.cmd b/BuildCommon.cmd index 4dafb2d6..efe4c6d8 100644 --- a/BuildCommon.cmd +++ b/BuildCommon.cmd @@ -1,7 +1,4 @@ @echo off setlocal - -call BuildCPM22 -call BuildZCPR -call BuildZCPR-DJ -call BuildApps.cmd \ No newline at end of file +cd Source +call BuildCommon %* diff --git a/BuildUNA.cmd b/BuildUNA.cmd deleted file mode 100644 index f642f5d4..00000000 --- a/BuildUNA.cmd +++ /dev/null @@ -1,4 +0,0 @@ -@echo off -setlocal -cd Source -PowerShell .\BuildUNA.ps1 %* diff --git a/BuildUNALOAD.cmd b/BuildUNALOAD.cmd deleted file mode 100644 index 77fc6e63..00000000 --- a/BuildUNALOAD.cmd +++ /dev/null @@ -1,4 +0,0 @@ -@echo off -setlocal -cd Source -PowerShell .\BuildUNALOAD.ps1 %* diff --git a/BuildZCPR-DJ.cmd b/BuildZCPR-DJ.cmd deleted file mode 100644 index f9b3ecb0..00000000 --- a/BuildZCPR-DJ.cmd +++ /dev/null @@ -1,7 +0,0 @@ -@echo off - -setlocal - -echo Building ZCPR-DJ... -cd ZCPR-DJ -call Build.cmd \ No newline at end of file diff --git a/BuildZCPR.cmd b/BuildZCPR.cmd deleted file mode 100644 index c3202335..00000000 --- a/BuildZCPR.cmd +++ /dev/null @@ -1,7 +0,0 @@ -@echo off - -setlocal - -echo Building ZCPR... -cd ZCPR -call Build.cmd \ No newline at end of file diff --git a/CPM22/Build.cmd b/CPM22/Build.cmd deleted file mode 100644 index 1fd7d782..00000000 --- a/CPM22/Build.cmd +++ /dev/null @@ -1,72 +0,0 @@ -@echo off - -setlocal - -set PATH=..\Tools\tasm32;..\Tools\zx;%PATH% - -set TASMTABS=..\Tools\tasm32 - -set ZXBINDIR=../tools/cpm/bin/ -set ZXLIBDIR=../tools/cpm/lib/ -set ZXINCDIR=../tools/cpm/include/ - -call :asm ccpb03 || goto :eof -call :asm bdosb01 || goto :eof - -zx MAC -CCP.ASM -$PO -zx MLOAD25 -CCP.BIN=CCP.HEX - -zx MAC -BDOS.ASM -$PO -zx MLOAD25 -BDOS.BIN=BDOS.HEX - -zx MAC -CCP22.ASM -$PO -zx MLOAD25 -CCP22.BIN=CCP22.HEX - -zx MAC -BDOS22.ASM -$PO -zx MLOAD25 -BDOS22.BIN=BDOS22.HEX - -zx MAC -OS2CCP.ASM -$PO -zx MLOAD25 -OS2CCP.BIN=OS2CCP.HEX - -zx MAC -OS3BDOS.ASM -$PO -zx MLOAD25 -OS3BDOS.BIN=OS3BDOS.HEX - -goto :eof - -:asm -echo. -echo Building %1... -tasm -t80 -b -g3 -fFF %1.asm %1.bin %1.lst -goto :eof - - - - - - -@echo off - -setlocal - -set PATH=..\Tools\tasm32;..\Tools\zx;%PATH% - -set TASMTABS=..\Tools\tasm32 - -set ZXBINDIR=../tools/cpm/bin/ -set ZXLIBDIR=../tools/cpm/lib/ -set ZXINCDIR=../tools/cpm/include/ - -call :asm SysCopy || goto :eof -call :asm Assign || goto :eof -call :asm Format || goto :eof -call :asm Talk || goto :eof - -zx Z80ASM -SYSGEN/F - -goto :eof - -:asm -echo. -echo Building %1... -tasm -t80 -b -g3 -fFF %1.asm %1.com %1.lst -goto :eof \ No newline at end of file diff --git a/Clean.cmd b/Clean.cmd index be5d127b..493b709b 100644 --- a/Clean.cmd +++ b/Clean.cmd @@ -1,37 +1,9 @@ @echo off setlocal -echo Cleaning Source... -pushd Source -call Clean.cmd -popd - -echo Cleaning Apps... -pushd Apps -call Clean.cmd -popd - -echo Cleaning CPM22... -pushd CPM22 -call Clean.cmd -popd - -echo Cleaning ZCPR... -pushd ZCPR -call Clean.cmd -popd - -echo Cleaning ZCPR-DJ... -pushd ZCPR-DJ -call Clean.cmd -popd +pushd Source && call Clean && popd if exist *.img del *.img /Q if exist debug.log del debug.log -choice /m "Clean Output directories?" -if errorlevel 2 goto :eof -echo Cleaning Output directories... if exist Output\*.* del Output\*.* /Q -if exist OutputUNA\*.* del OutputUNA\*.* /Q -if exist OutputUNALOAD\*.* del OutputUNALOAD\*.* /Q diff --git a/Doc/Build.txt b/Doc/Build.txt index 4d55f97b..47d78f76 100644 --- a/Doc/Build.txt +++ b/Doc/Build.txt @@ -173,13 +173,6 @@ It is important that you choose a ROM size that is no larger than the szie of the ROM you will ultimately be burning. This is dependant on your hardware. -System [CPM|ZSYS]: - -Respond with the type of system you wish to create. If you are -not sure which you want, you should enter "CPM". Refer to the -ReadMe.txt file for more information on the difference between -the two system types. - At this point, the build should run and you will see output related to the assembler runs and some utility invocations. Just review the output for any obvioius errors. Normally, all errors will @@ -224,7 +217,7 @@ command, you can specify the options right on the command line. For example: - Build ZETA std 512 CPM + Build ZETA std 512 In this case, you will not be prompted. This is useful if you wish to automate your build process. @@ -239,7 +232,6 @@ Configurations available: > std Configuration: std ROM Size [512|1024]: 512 -System [CPM|ZSYS]: CPM Building ZETA_std: 512KB ROM configuration std for Z80... diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index 163c8152..f3e7efe3 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -1,3 +1,8 @@ +Version 2.6.1 +------------- +- WBW: Both CP/M and ZSystem are imbedded in the ROM + image. + Version 2.6 ----------- - WBW: Old Apps removed (MULTIFMT, CPMNAME, SETLABEL, etc.) diff --git a/Doc/Source/RomWBW Architecture.docx b/Doc/Source/RomWBW Architecture.docx index 93f261af475eee17cf348fce27fb72f29f5e717a..0688151d8a14000ac7c214cedaad29d1c67cff20 100644 GIT binary patch delta 48266 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°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 Ar2qf` delta 47598 zcmV(?K-a&Eh7i{O53n5yf5Pa5(dfquL}4y~Ewz zz?g`s9_&ml!*>JsD%>&L>8^WqWf@|3=KAJtv)-uFZ=UZOA_(An1KqjRgPLq^ns3eZ zgabFPTz{&E@TY&he>>Ivo5*_$t$TWCjV;>>@1gDbo@&NDszttYD4Td2cL-lOJ7ijclni}qyT+!*B3VQ!F7U(EcrZ)Gyyv0Vn0!Ofk_>C%E$bM7xWU5ED^>`d`?FYC8+TCol zI`q`N2PF0k$r^Z|4>AI-iT-juMG}-3Ti_ePuSd1k9{uJ4lcf+Cu8mzf==b}b18NwV zH{h$fe_;R#TKtKz8-hqYe!CV3h$-GbcEh_lqKxfh1!!J;?Oi%Mpm$C|+ z<@=3Bir(@4m>3INAbu`xg1eXQ(AfR}nySc9Z}+IxE6WeUa~E5|KW$z9mE44(M^l6& z>b|c{Ph}se?lAF_jdiDlRT>)2~qk12ASv3aD6!J z^!q0y`*7*f$7_RLv(fL9A$kI{q1%>@O%drXtq=r=Wh*f!txl)aXe(o)hkD;~5V*ku zo-eMfyN|l(!QWt;*-Se@{piojohgXs4Hz8hLq(`#+q;JAi??90J>iFz2>vWhzY{d# ze>T0yw;2%_yTTR-W`f+=kD}}fBp}| ze!j7Im>^>>bC77Al#>Nx7zqDX)Q+{DZ%nLE7-8g#3;~eeQX`ap#X7}*@?CCy6<@Kw zJ`PUyd;9GoecbES_XY$RVttekuc(g+b=&nkb@^IeH5RzRRT`UfbQjT>oItU!>qva{ z8hl+4jeh|-{EFU=DWCBTMRNOKf5wH!pSoX0A2k>oj$~e)iZp1h2knDSZ*PqrjB$+R z1}tr-AM?`>w4#sNg#|Y53up7R=FVK_GG9;Gi3bv3?`t-nVlA8I$`~bUEuY*b@;?uw z=wJTw7j1anJGs>0w|RZaxTk0FLlCGpz|j`aeAL))4Tl+;%ZDFK^JX_se=)vRmFCM^ zfN;|`2NNC1D1W;oN{j_&Gg8Lo;a{+vAoMYBvOrredS6Dv-sMQs{`s9&`w0JO=C*bZ z|JC5qU$l>-^LL|@&*vX|ml`%3xAz#GTQK}Uc)G8LaqvV0+h%6?;xO`lv`31YVCDS z4k)RT&oCvIFDAMP&BBOQ=H{GAjuSuV0mv#Kdof5@mR`w_Gs&$KkTY{LL(9yagqCphcp$p+VDJ9DKi_6c0_d-X=FX@vOwD4FBFk?Mf%;vg~jhR;L z0wo#Y3;LK7uzD;ZakATnUJ6hv)1^N>7ebPQR!2E|_3FG#7fEhx28>1aL2bT2Xn)^oI?2d(luJ$PUqmD(Ioav zER2foF|$kGC}H9mft~uO189dImSoBB@4fo!B6_0ee7*$&SYkHsh6=u3s1pFH#Q42s zn!?GptfOImwB{=Fdfg8#lasUFyV3dRM9Z)b1!j?`tkZaViQ{RGMli% z*B_M*h1$LvbMmVF7#-W_@!yu~F@-EopvUioBYfS~h9a=89ql4Sk-5I#D0QpxT9vxB zQR-(>YRWG@e}Ph;M^0!>h4xWQ;Y->F{oakTa~La2&8tx9=4(~yvc%#>rN5?1x1LC) zFYbd-Otrr2hBzsSrKKB%ZnZWF{jDmrOas3-g{IlnCs62~2EJKnrU-S*7N#cdJX?2Y zkp(8T!wCq!7S3F4j4JQ3%8Nj=0*#cy3E`!&u-(~?f2RH9Mw+2JnlG+|uZ1qYt_8wK zT7%c(H7y1v(oJoE-#>{QdTL`$fc3A{nsheSHf2+F*xjiwRr zItIUgu}tA=7g)b;Y`irxWTWF79e-RMf2#7dfA{^<&lj7FcAE09Rhb)&7q87PG#S=@ zs>-xe=ho$1*hZ1tueKm!s@RlhuU9 zq4cTaMd9w}D1;x{*5LH>n~iF>Uu|hvfuJKi36`zt2Y&& zf6t}WPgWczbX&W`g_{H0HEy)6^UJ|Tr-A;jR;OS7%=Amu>8C0cOXje)MjyZ5Xfsg$ z)ozwj-)QqQY4cN+it#M;kPhCt*LtSzVR*guW!T$jHgMt9YW61i{Y;wOd8!IBxxd2J z#ZMO-RR*%ZT2+4eMb^6s-jBRxK z*>w7;D#kWD8!Xc5S6e>T+Uz9!Tw489Y#h> zEYJX~;C`uw>s(pa5sD9}*f_FmQ`0?Y-}5c-lXxF(JdZqxfH*picxRr-kEf1hoxe=z z%Q_R`G~~9^I_ z1Iu_Q=hJ15kH~+X@Oh(MsYJ1cCpE+C__K^gok6qJAC}R`a7}?i6_8(`t$2BMX?#z+ z`Qp*ex})K#$vXWZZ(sTD6c}e(!3`+Ng#|Hj%7C5mQN*zp!jp;Se^DQ{S10kJfvtZ6 z@NzPx4gVBXiZ(<>arVVT09d&N!ns#r+7AF-P8~2jM!2n6A#R2YT50(L%n(FdfrVxt zDDOw80ap>INX%d)G*eQ}_06nsqB(9j!8_xKIaN)m<=_gGI(z4v@v*T#1);Jdp!wk= z4>HB>LIm{z9N-zme;n7o?oDJE8BJwaW#8KBIeGLX+&hgAhipr?CttwMrm$i>cT4IP zc^awT7AhJ9T)LN?&VAV#rzgLzmn4XVlgCzn(UZK#kChN&o zf&pRAD70)Vv?R#J2XidO$0kZQ#scp|5DI-g-j)sPl)P{nD}(<9uZqwGU?(|t8MKjM z#?B{7DId~re}o2>I~4#vka3S6oXYqUNevM@U=ovY8a(q>+<|-}`7!7MX!6koI|O5g z=o6qh4%wQHg=xY&IVR5aF@v32%|^S`BGQM)K;6Iss@!wPA;Vt7^~lm)?Sc{1~?ZC=C$QuB!Sk|j0`+e0@@`De*)3mSonczg>9;#!srSpNe-hx z+_HCy#qIbKKI)4ps081&WBhY-^QIQI% zCrSdzu6lsX446g`K;1x%a!oXxI>s&JA5vanf1BdLoRDm1y+B&CE6B&mpbq~OI)Y)R zRgb60h$!;m6j6G1Zf2*T^)jw(k9gHd%f#h_?qpXoO`jeb{tMqh* z<}VTXL+B+=kSI4F!;_rEIK%{=Ne31~NBYIWS=Q!3x3Ra!;3GU{DPFS+q(F|qt#OSBf)Yfk zWo>3G<>h)`&nSu1Vzw`UtI@=)f1r~R;9r5wUawPNJyMnpdsbBx$(`k@$ya1ZS`?(6 z!dO7V(|T94QJ}c%DG>xsc3~lHN%{iwso;CjvXN*hy9eBbs23S5?t~E$Or^j{&cJ4j zW!_NAmgvZ04vw@GcAygvA#?)UE6gmBc2~o;**nG9cEL0jcs(2S2n3K4e>A_UEDn|@ zkPnLadfxlUvxJ^7tSbo3rP=57PA~)c$Co8(4A=J|qM&xP8Tw;K2ooa;p592$YVem4 z?2m&`cS4Im49%Jlv_#JjJ%J8@n)ijFM|gx}9JhKrfkcsu1MW4B_;n3Nrsi>Pb>9*k z5LdPoDhydcoM?R5ld*sRe+UI9gjgTvajYr2b{HNG8519Z!u^a);Jm+UM-=D7Q)L|; z)!QfgDwmRqwpI~+q~SD&=oWtE&YDJ3jslU4agb&T+Ps+L0AVGj1=Q@6Zdc2x%t`ms zT9>@Y%LtEJUN5qz1WrD(mxYoseF`G`cN`XLLju>@MTo^{*YoBme;?+z7KZs>L+cS7 zG5puAUFa>EJr|6bLBYC=?dEfArtq+~2aj2$bZ1J1u`UuGcPKf8+S=!|-JCUaC|Ts@ zBwm3Db{snxoRHq~M1PrdrdS^G>~t`(rrK7a4q$A1SBg9`%@wYeT%<@qK_(v#k&V9V zY0b`_Hogzpj-q>re@95cFZBmsg?2n}LPSfnu%!x_61U>cfc9BvdMWk=0>&JalTSS9 zgn?p!Inmf~W3MY)MgTk}pG|;d2h_7(pIIX2y$wlA*3YUeyDeyZc+(dU*#}_(0$id3 zx%?ysHjYlTqPPalxN8^@crp{kGN44O?~=y&B8+^*+Om(8e@W-A(9O7qm0K@d7r3Bx znQ+TcxSwbujxtu#v2NV(3ctX%6MGCuPk;U**gm|f}CHskn=o& zgVPn)jvIskfMg0A0TDTMBxHWx67YcO3WO%1cH;m(0Sz}$#%2f!3x$yKR#wPqvVt~o zUP;cLa88R1e>nFQ4XlA@YEwX<-0>nLv&j4{P}8`mXaPUc)je|7f{Yw$k%x1C2+mV> zQ6Xe7ma*8eKo-toBsP@h=H_#Lg%gToBJ%0ytmv#x3A6@Rx{rRa@Y5tRKngSw+vy6= z#GxkkQvyZ+$y5DW=I~;KNIoUNq%5?6A(fL*kbP&Ce~OAw8Sh&`Q=}PrsHS}H*wzge zHcd-~ES(H^KoVutYM%6)%96rRv*jVGHw#+E#CSG)s|5yDcysa#%ZN}B%FRA0#{?!YB+aW&xtIMu>2A%^Yq&0tzV=z#@tKsiF(kAU&xbH{7-dGhpRZvQqGiqa@gAIFHw7* zwy=SfH$r%<{OlXX%H*)LgkLD&G`5D8?QR*S{~Ml#TTLXPF! z%g$@doW$J4@@eo^w|!FQl+%;WdF!d zWC<{LF@t5&cZdM;5_NKJ4IU-Gsy2PlX*H51d)#!dGwkoDY5R+z=!$F1grB7pzG4of=4(>zje~ zD=?$k*sIsK>ED{>f^CKF;v?=M*w-uJt16tMT3FM-;7yKd)9>2fb!_;j(fICw|LNR` zns#O31o~0!s)jW{?hXG=J)u9fe_vc&4+`Rg>wV?;ZVxfZ9oc$7ziZ-O&QZ;}(rn8S zLtmdcnrGb!`vd&>gJpu9r5c*}$sn3)-_^B7!R0#q?>myr_%ddHweOnnII(o@dP^fR z@CWH*%N}|!XccrphoDOZFYhh*@_zZ3sm-o@COgoA_ZM}lQBSw9nb!10-=41WSTUc)TX< z0G|l0ke*3(1-t(F!{{?>e-^KM9bpM$4VRx>pAL^|Uo4=>4vHfdbu=0^?E>G#TiI^o zBRv}QQB5w9t!dmcJ=|z_4qEN{0dB7xcdVh-%CmB>g6Ni|!V99a$4iCNnGSiAPWkE- zxGPA7%f$nKgu9wuN12`ntPoCUc(Hbe-M1kdb+<4O=QQlw_@pD9aPkXT-M# zBax%DoXQ^k2~8iuTM&k1{vr;5lB;o9kj#jYbP%wOV>S@BU4*+F-QZ$Q z7%8AXj@|%@0NO5ysmkX;hy6zPgdtXV3`mA&v0?~~uTQ{(f27K%02g7=BGA^caIP7r zp0UTN@T6+&)atg{`-MfgvRlt7#Z8%mkSZ%MCQ-%XFjShEXI2zj0AwBqoHA@JPXkF> zlyqxb)jQzSip+w>Jdj1fC=#n_ol{DzbgzzCDkMQjjcgZpwyCVQ6-45s*KQ-uewauw z_lbXHok}~We+A0kQnnh0h}tJv9|&7c4(6vSFeFYdy?cW>hh>IM4p?@7y>enOm^RQ!k#G1anAshDnaOd#pq$nDe38cilvD%Dh4w zh&dt9Qvv{B#(dogFjiyl&(o0PALJy_T+a;Mqp1<#f4XXP@%QBd?No^jnNcc3<%PA& zlFj>rMth`+$f>ZOrZ>1Iq}tl!ta?0-ElrYB$PZppo$;T9s?|S|g)^7_TbD7SB4rmhV*jOlqSbd{pkWQT%Pi|22o8lB|}4o}2=< zMA&g@e|mOiRCi=LO&{Yt2ThP7woFl#%Y?ZlLL3pzmKAI}z#lLuFNl*U&b>qhq!*ls z!)7pf{8>#}rs<87a`L0eH>D`CO2ZvRC{9A+(k-Q_IW6r45Th&GAdB_2zzQR#^o)}3 z$(L{)Tj8*jQ5OZP@3;qOFr=%UXW-HWhq(u?e|>$rXlsRx+FK!3`B(a0yhgF`YsDKc zESEOTojG%Wg10@v-O*I8ImR*-Op)^)#&8i;~aSZXxi3 zcRh-85gq$ns;VdW6g$jw5i6AHE|#0@omJ!}Hc?4|fhud*%9#N+4{wT!ZGA!hFV&Lt z{;FLvJ~`Ur%5nKfDtRH($25__=Bi98f4aS9>p)>~kfuU$Jnkj)pTxHnTFh0U@eS4C zsle3&Rxp*TRI9eUK!R~$8P@coYg5aXQ)ES%#`z~{s;NjCFm)kGsk8&+&W51bypI{1 zEn{&wzLvU@`ji?UUyc{MaX@|*p$9tD8gH~xQf5rKz!jVjgU@9B19opsYGuT0e@wAH zA{w;!y0x1{ig!kyxqq?iJQ#raoDD1JniYFWc&rwmCf) zSFKK?4gb|k&;D7hkA<6)76>OxL&<3mD@u0u&b(wx;X6&`#Z)N=iKA}b>JF}^$W-)e zTb>X4=c9J!3SQo*YAQlGn0Z33b1Es>mW&h141`FMP3_jgUBYPH$SwTifBIBEg%#tN z57ijCD+EsJB~5Os)^IH&P)@29jDV!-@?HK_2g9)~f5^COY-cxW#<9QiEs2cb_78At z20g^yGIrLZ(2Z|@05hasuD5&i7y-z0cP6*kI#-=8@8!$FAb9*YFeCf8f5h_q%e()WXZ$gnBb9(hYg((#LD9&VFmyVSO?9U-^AQ z5{Fuj>0{o}w$u0-`QXFFBK2*_ax4k?1onZ(hkxLFHtso_lM0sB(gtOd-=DBbXz^(92S52ubGX}XboScoarhQXB7nPJKL366ZSi-Vf6*a-vuCmYG5LD| zj;)XLo?92A%l@aozb+2%Z8)sGi#h!66>>OxWZWNfw-HjHm;7^IypzX{i?X!$euX#$L8`6u5U^%|M0rF+}UuM zxO^5Rx_tKiYt!ZKf1_|Ym7;pVTvoaaTz+M`oGpqf;xhi=1mI&PD!EbRjh;e}^gXpzXKe<c$+8}b*EzwpSTuRwp&1N!9G*QkTeKF#rGSjy@Sly>6rJQ}C-^E1Vq zF7ibS77bJ^e;Ayv2V|z=nM86s`YH`nJEUN)mMH0r)|;Kd%EQTO2mV+Wd44_6v3UM$iR3WkD4L{-$Gd?X8_1Ct z!xslRV#CrulJT^RF^axM?=94t?E5QMj>~?W>Hc)3e=2a+OKFy#L4f+h`e?)~|3iYN zm~%bDaDDQxq1sJOm1~s=)A9GT2{8CIt_izO{9A$jm3$_PL9c&(+wv{h z(K>tdaRR5bo?HkRuRi661C0+KDcUeQy{|gyf7(>1eeiHq95{L02!eNZN7x5|Kz?3+ zDAyS})IjcfiTh$Z++q1RE#)X&7$1bVe{`}$V5dMr{@4hjEF>#Zz3}+m{N=@sAIG?4 z{iYrYY>KK4V@7O%%?8-yQE7NQ_q#l)RsIBU`$;AsLlzd^Uv<{@(P(JPG>0P$9Nv;hTe)Q8)i1Z*he zX@;>Cpj-$D18%y8dxzf2oxk8K(zF!4!3R+AE<*T)5FXNflQ(dqCiN?xn2Fmfe~_<7 z2R&8&LYkRHqK-elRghG9-ItQmQn*yKxGEm}1}?o0xb!02 zQFDsEm%=WogmmudjJw$|_1SPsv3ctqkzs^}BC3QO9B#e;@TPFGJe$?&J^n@+uOCzt z^Wa>Bz9nwu!88dwD6OMZ%X)Av`2hG@>D6lMiIioa9MevL5Nu#arOh>#e~_7BN6`)z z@u)Yj<8{D};i%n~n+b1VM+`eqbBexK3_Eg9v#v;kv0>^r20MnMBeIMS!5!P$aI~1! zq{#IA279cEJ!T0@HrV53V~_GJpO%oBu}9IqO7W;S*kgk|^1`^m9)(ZKAo~ki)&ixH zmSw~JZ@rRblk<2q+;M@YfB48VM3amM`1KynXnb?PBU4zjQy>K!;8AH8!X;#8;8C>I zUp(p!@Yn#4yfAKnN8!^d%>MR}$EKP@eq)0?o)3AX@*PwhyMZ1LfgbYEwrXwX4{Mi& zr62TrJg#_12lvg9Pn`w`1k==6fK0f8e&F>5hsTL{uOya|1#d6ne*{R!MA)7dIi~Qb zJcpzxK18qrbL1J11+>cEVVIU22w4WxDjc0i=YHppPTbGPtvcg%De>vG6^ADeOk6O$ zG6m>`@@!ex(Y9PXQ98Y2;hSw*g^#-wYjrxE79ieK5Ag_FJXVj_^wV+K*oImccb_z4 zi(6sG$6;nROI&jLfB10J=ylZbz-QQle+b{zwg@L`&CZ@Iu9wU724~;L%1ontBNzGO zIH`~Fz*x<+;C^V(Dc*EsVkD3I!#Xp|35D-R9_}`j+`?0OW!rzkO_tSBySQ9{&;5(5 z%90cRyonwNt-&V&2lxQ(g#^9gArMvZ5Xv!A8~a&7$R%A0f21ILr&tQ;$o5Rn9CwDx z4{+^6((5MQqdawnw=mEMm>&O)YKjz~MGka^c=7?+2!0^uy!;ABG-E!M78!vTQPhAC zw3&n2+zUGpi(mskg8M=6Uwr0$5RC)zuZWjuqFkoGFt7IVi$({4jA% zuKi3MuFj`Fe=a=IK0be5vKtz?7Gd@fS?Dew=w4+%s`_5N-)I*xHhX6QW8>48>FiZH z($|kqdJob^y)WqPHdVLE(VVe}Y|CGoe5QArJbXMoXuufmxOfh;GTEelNLbe}A`ds^ zuyBPko^1{+a&Lt{^Q|z%l`i-6!u;XTYnl4WTCl((e`kzPg;Rs2gQCSfQ_rToLujLu zba^Wsr2PAD|3=<`K<((kGaG!@ULjx0Oe21h8A61Wth5cBW=W7mxElv$K{Xu}92-3GU_`%%+V zW8Q*$f2{Mg{oT$0jTavxO%1&P<3p+nfDGK^EgnCs4%4Q_&qPSLs)IRR2Oex!0YM>v0TGJSf)pZ2Bg1(-e@Lr$al3Csynx?r>jsUt6413kOM&0cOW!4p zZ&kPf%#?6rc?aC*0i#S^6TLV#P9K3UrnbfbV@(!C#!Gk!-bHP!pel`C{h(Q> zDp_%SZXRGH;S+pxTnI%y&-Hn0f8->QVEWcA+8q1=#$6==LTie4>mq_6Q@t2W+{nf~ z48e>AyfvYPaP?OAtx|(8$;DkN%&CXRga>B&eZa2NL7LWyXDV=UvFZ3G zxro#VLKOVKodOSRP%TOgqx=rYkIb0eA#Z8vSYBi^{7DIZ0IKE-BeZcxe@imjNf(nOz~;>(67+-Rn!2#T_e6z^tX9lMBI6Dx7y-_6b&hbidR?9Rps%$ zI|I|;^H9-J14jag5WuZun5u*i9SR17x^u6AQ`W)6Ur{WHu z3>1tULS5Wh-=>5oe=}xcT~AV*_R3E|Y-yQs@`QUvtFP0bK;epD#!`gjUzEZ}YwM%~ z%4NN;z?Z?v{-{Bjta-j3or1S>YgFNsr; z?I2}H*OIotWCW^3<#e`}ePT#6I#K{ zxike?O!DZir&HhGJBg=9AKUd%sZiea(5t1crx-rtd?ueLv8#=yr91?Cu? zL~{a$6f>0fe;y`LGN*ocQMk(q*KO(F$lLOXYVfx584&!3eEbJFPgH)&+`a{sx|N4&5yK=*RHd&GlAjibG?P!Petqc(FKprcbuMqfO{#CNlWADn*v zv8=zngJ!oU`+J;wvSb)ProY76PxytmJSS9<>LPg#e{eHGpQ6tNPy{w6ff;zF-MuCp zN>784X3k!7jVZszO@!_)C6b^M7O)wu47Qi#EmPE@lVLKlP(jt05MCf6(|udaA$iV> z+&b;|-~L^>*}?hc3KYh990{f3A*c;UbaPitbt#e{x4%+P(u}0RvuqJZkkm9|fuJl- z%OXsWf2sp-O$iwZGJ1FxGD^!fc`5>3dn0x#YsoC|Bx5MeRw@UC~{PrS!OsnY`3~z_}7U5 zf5;miwwrY?tZD9{iw{t{ls6|G^U2ZrrzT<&_b{|VdI-BMKY#o;_we(F(P!>9mraeP zV`0{`GvB>F9Uj%bSb^p441FDiVFz2fz&G($w%_L?i{q* z^@BD*+N5V{nwKe8%Dxe_uveG{&E6@Nf9hi4`Xs9WWLz^Jd{A&8Lq}l=I3#FTyCJHNybqjxbl#dx3>U^a0E*lg_He}X5l zIB@w|u1EG7V+g7&;aFN%oKv)?ActrYdm{`=kv?%ym!R&1icE|+2XcA&)3(<8baBcy zS`&eR%FT5^@Pgz?K}+k2P^Q*s1@icKVjaR`=oCA$s(e_mz&q;(SLsSj3C!vw$Q|Sf z8strD^)Y4|h+itOlsPZ#KjQ-=f2x|vq{Joih7RV79Gx-~GN_kz67%A{r3A*|vweW1 zD79aMI9q@pir2p5Hgu92@zi;orccjysIX;H*0XxI)jHs*ukbj11Y$gP_N+?+i{*ax z>lo$~G*2lG+P(GIf#_`s@q1^d>0~Bm;$z}T`C=5G%Bv4u@*8fPpu!q7f6DrCl!A#` zGP9WJz`Qz6#o*W=5`eHR6oA{6j3y#&yVsWSOf2XNh{;eRZrvNI2FjXFWm#1!^Xpo2 zGSrwS5{LqEyUSQOs6gAMs!cK(fTtfOFDM!-^z04Ii}?r|Fd-gSl&X`!3aq`7jnu=G zQzx&>sa{hAAXH{b1}J?ke+xYl-Cbu;>1WfCe8s@18OV4S{=kAq{r0@%TnDf;x~I=Fb6K6^(lh>Pd8*G)J! zvEh8ek&tyc)hg7wH23<=j%3NXxDr0%nYlL#l6!IW=95sVLaivre|>o>(L}7G((!4$ zrTp?Cswv#Z8{%?SWu20${sCZ%Q^U#-BQz%ylA6P^9GcCDC$Pwr2qP_x7D9#{NL1F7jT`CgJOt(>NM34oG@#m#5g?~=TJ>x*=0D;&$=VEG{P2!EK zv#s&m5=M&Y@5l0l^NnDuky^5$Wbz7aKG2>U^N8Z4txE*+&;;V20#*^K#HVDoru(K z6oVwtX!HqwapYupXVQ}meZ~B$ z%yI}23ekBGe=-t8;|&9n1vG~{Elw-|=d$3cB@{Og&!7X9>GzNO;A+^0p+e+)7Ye|U zYU%+v7;rpi3=5pV(_?E4#ZArs)GtM%Io<+{ytnMwl1UZ-E$AzWfrqVbt6gJ)#D_XJ zTQ&R5VV}70qAMppiD9c51nz_k<2#W^R45D5@K2-Zf2p+}f+e;x|2-4z)U@Hwzlj-4 z;&-8dEgYqQv?pw`#3{AIkXU8H`o*vfIW8a&nLlRZ0xjg*+t&!!c{3SKxWP7m)OzS!=a> zQtA{3C)C-kbvk1q@5&ztZ9b#F;PO5F<0G6yZyzJ<3>1jz1%^!SowG(qq^w(bZS;;G$_Pe_;$=zg;e7o7V9 zf4txBPYpayzG3*%h_`O7Ih3=M_=Lenn)1W<2`vrX2k+A)#qu5&zB@P}1XltB@$TdZ zkd#3p`>r5Y2!k~uRs`AHYIV9jfAb90lfKETI3AO9Vii>Ga))XY! z3Jxs_5TW7_LX48|ghnlgV`oMsmYyr^f5BKIZA9wJUfn;8N>>nvo87~RFaVh#PzP?n z)ckPwX*V?=6i6Uu9?01#0tuM>{2km$B(rgd&*ASW6vx5wxeY4t`^kaIVU=(oht`iD zP8Y2_tbkW3tW0Xa5AEfo<>(%pvD@&J|7!B-Tj>(CJ8ku`_LR&^d_q+%ZQ65Qf1w)$ zPcV&#;RrBtZjjRja?1?@pr$gtkA_eY*i`$3Nv}4RC!Z9b5MWu;-iQ^Fa0FCvS1`22 zp!Odgvgy771No18@i1Bt8Sq0t7sTfQ{3r1iJ&P*j(bDSFd+mBYv`DW}2pD;ZKS_!6 zbtHYCB{oVpwJBY+Py5|rONw*xe?A|RRm5A1Mhw!-q4YPcPhlmiQu&KBz(?Y z1B061+KAq`q6ev`K+Cg{T8*#l{@aNx$kz%lNN}n&a9!J&!@Z%CSd>8ue@pa27Db%6 zuqY!dnxiIuIWb?I20MxV=gP1XJrD}l?i3c|xBF2w7h?)xt*5X8)4PwmS76lbOdBN3 zKe__qlOk3C%aqNl_VdqR8IHcDFkCNE^^rUGCn7IXoE=}{8hk*nb4$0EoDb^gi}4|i z1MH#~W4iL3r_)%AX$r|1fA7bVti?X=y<@C}9{_XwrI3c-K+CxYfyJ)(jNSyfn*Ba2 z-7$#&8TF)B5X2{B9;_+jJV;Ch4rQ$Vqdm1CVb{wqy0b8hhbIL0pw{}oEc^YybPVVV>5e;a44r>C zVQujI30{d#-W-QN=W!`#!%|G(;hbE_05DQgeX}PhvD2e(ugwH zzL7>MH6~N_`P>tdUV8IuQA!T$8}-¥!@A4QV2TU@6$kf84Y}yvS2uYV2MlyL7yj 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 -or - ddtz [d:]filespec - -In the second form, DDTZ will load the specified file into -memory starting at 0100H, unless it's a .HEX file that sets its -own load address. Besides reporting the NEXT free address and -the PC (program counter) after a successful load, DDTZ also shows -the number of memory pages needed for a SAVE. Instead of having -to write all this down, just use the 'X' command at any time to -redisplay these three values for the current application. - -NOTE: loading more code above the NEXT pointer revises these - values. - -As in DDT, when a program is loaded above the area holding the -'A' and 'U' (and now 'W') command code, these commands are -disabled, and the extra memory is released to the user. Thus, -DDTZ can occupy as little as 3K total memory space. Unlike DDT, -however, DDTZ will not overwrite itself or the system on program -loads (except .HEX files). - -At initialization, the stack pointer (SP) points to a return to -DDTZ, just like for the CCP. Thus, programs that normally return -to the CCP will be returned to DDTZ. The 'B' command -reinitializes this condition. - - -The intercept vector copies the BDOS version number, etc., so -an object program does not know that DDTZ is running (except -for BIOS-BDOS vector size). Thus, programs that check the version -number should execute correctly under DDTZ. - -All input parameters can now be entered in any of three formats: - - (1) hexadecimal (as in DDT), - (2) decimal, by adding a leading '#' character, - (3) ASCII, by enclosing between either single or double - quotes; either one or two characters are allowed. - -Leading blanks in command lines and parameters are absorbed. -Either a comma or a (single) space is a valid delimiter. -Either uppercase or lowercase input is accepted. - -The default command (for anything not otherwise recognizable) -is 'H'. This allows convenient calculation, along with the other -features described below. So, to convert a number, just enter -it! - -As in DDT, the prompt character is '-', and the only error -message is the query ('?'), which generally kicks you back to -command mode. - -New Commands (Over DDT): -======================= - -NOTE: letters in parenthesis, e.g. "(U)", show the equivalent - command for DDTZM version (compatible with MSDOS debug). - - @ Sets or shows (with no parameter) the internally stored - "base" value. Also used with the 'S' and 'D' commands as - an optional parameter (though without the '@') to display - memory from an arbitrary base marker (offset). When set to - zero (the default), it does not affect any screen displays. - - B B)egin: resets the USER stack pointer to its initial value, - such that any program that exits by an RET will return to - DDTZ. DDTZ provides a default stack space of - approximately 24 bytes for user programs. - - C C)ompare first_address,last_address,against_address: shows - all the byte differences between two memory areas, in the - format - - XXXX aa YYYY bb - - where XXXX and YYYY are the comparative memory addresses, - and aa and bb are the corresponding byte values. Can be - used to verify the identity of two files by first - loading them into different memory areas with the 'R' - command (see below). - - - W Write: stores the modified memory area to disk under the - (K) filename specified by the 'I' command, overwriting the - original file from which it was loaded (the user is queried - before doing so). By default, the image of memory from - 0100H through the "NEXT" value -1 is saved. "K first_addr, - last_address" overrides this and allows writing ANY memory - area to a file. Almost a necessity for CPM 3.0 (no SAVE!). - K)eep on DDTZ - - X eXamine: redisplays the "NEXT PC SAVE" report at any time. - (Q) Q)uery size on DDTZ. - - S S)earch first_address, last_addr, value: searches the - (W) specified memory area for the value (a 16-bit word, not a - byte) and shows the locations of all such. Very useful for - finding CALL's or JMP's to a particular address, etc. - W)here on DDTZ - - Y Y)our_option parm1,parm2,address: executes an arbitrary - routine at the specified address, with the BC and DE - registers set to parm1 and parm2, respectively. - - Z Displays (but does not alter) the Z80's alternate register - set, including the index registers (disabled if running on - an 8080). On Z80's, automatically included as the last - part of the display by the 'X' command. - - -Based (Offset) Displays: -======================= - -The 'D' and 'E' commands can use a stored base value (offset), -as set by the '@' command. The current @ value may be -overridden for a single execution of these commands by adding the -base as an extra parameter in the command line. The effect is -to add this value to the first/last address and display -accordingly. The address listing on the left becomes XXXX:YYYY, -where XXXX is the offset address and YYYY is the actual memory -address being displayed. For example, if you have a data area -located at 42B7H and wish to preserve easy access, just enter -"@42b7". Now, "d0,3f" will dump memory starting at 4237H. - - -Further Changes from DDT: -======================== - - A A)ssemble now accepts the full Z80 as well as 8080 - instruction set, although it expects them in Intel rather - than Zilog format (see notes below under the 'L' - command). When in doubt, see the mnemnonic list below. - - D D)isplay or D)ump will accept an optional third parameter - to set the base value for a single execution only. Format - has been cleaned up. - - H H)ex_arithmetic on two values also shows their - difference in decimal. With only one value, converts to - hexadecimal, decimal, and ASCII (low-order byte only). - - - N N)ame now allows drive specification (d:...) and sets up - (I) the complete command line, including both FCB's (at - addresses 005CH and 006CH). The tail (stored at 0081H up) - is NOT upshifted. - I)nput on DDTZ - - U U)nassemble now displays the raw hexcode, especially handy - (L) when examining non-code areas. Intel (8080 style) mnemonics - are used, so some disassembled instructions may look - strange. E.g., the Z80's 'IN B,(C)' and 'OUT (C),B' become - 'INP B' and 'OUTP B', respectively; 'LD (nnnn),BC' becomes - 'SBCD nnnn', 'ADD IX, BC' becomes 'DADX B', and 'JP (IX)' - becomes 'PCIX'. - L)ist on DDTZ - - L L)oad now permits loading a file into memory with an - (R) offset, which is added to the default load address of - 0100H. When reading in a .HEX file with a preset bias, - the 'R' command will not transfer control to an invalid - execution point. Another execution of the 'R' command will - reread the input file, e.g.: - - n blah - l - ...modify the code and generally mess about... - l - - The original file is reloaded, and the modifications are - removed. - R)ead on DDTZ - - E E)nter, like D)isplay, now accepts an optional second - (S) parameter to set the base value for a single execution - only. - S)ubstitute or S)et on DDTZ - - T T)rap/trace on termination now shows the complete CPU - state. Traps and traces no longer lock up when a user RST - 7 instruction is executed. Tracing of BDOS/BIOS calls is - heavily trun cated, avoiding clutter and preventing system - crashes. - -NOTE: Most of the UNDOCUMENTED Z80 op-codes are handled. Others - can crash the system. - - R R)egisters also shows what two-byte values the HL and SP - (X) registers are actually pointing to. On Z80's, displays the - alternate register set. - eX)amine on DDTZ - -NOTE: Any use of the 'W' or 'L' command resets the system DMA - transfer address to the standard default value of 0080H. - - -; This is the output of DDTZ when disassembling OPTYPE.TRY -NOP LDA 06A4 MOV M,H -LXI B,06A4 DCX SP MOV M,L -STAX B INR A HLT -INX B DCR A MOV M,A -INR B MVI A,20 MOV A,B -DCR B CMC MOV A,C -MVI B,20 MOV B,B MOV A,D -RLC MOV B,C MOV A,E -EXAF MOV B,D MOV A,H -DAD B MOV B,E MOV A,L -LDAX B MOV B,H MOV A,M -DCX B MOV B,L MOV A,A -INR C MOV B,M ADD B -DCR C MOV B,A ADD C -MVI C,20 MOV C,B ADD D -RRC MOV C,C ADD E -DJNZ 0134 MOV C,D ADD H -LXI D,06A4 MOV C,E ADD L -STAX D MOV C,H ADD M -INX D MOV C,L ADD A -INR D MOV C,M ADC B -DCR D MOV C,A ADC C -MVI D,20 MOV D,B ADC D -RAL MOV D,C ADC E -JR 0134 MOV D,D ADC H -DAD D MOV D,E ADC L -LDAX D MOV D,H ADC M -DCX D MOV D,L ADC A -INR E MOV D,M SUB B -DCR E MOV D,A SUB C -MVI E,20 MOV E,B SUB D -RAR MOV E,C SUB E -JRNZ 0134 MOV E,D SUB H -LXI H,06A4 MOV E,E SUB L -SHLD 06A4 MOV E,H SUB M -INX H MOV E,L SUB A -INR H MOV E,M SBB B -DCR H MOV E,A SBB C -MVI H,20 MOV H,B SBB D -DAA MOV H,C SBB E -JRZ 0134 MOV H,D SBB H -DAD H MOV H,E SBB L -LHLD 06A4 MOV H,H SBB M -DCX H MOV H,L SBB A -INR L MOV H,M ANA B -DCR L MOV H,A ANA C -MVI L,20 MOV L,B ANA D -CMA MOV L,C ANA E -JRNC 0134 MOV L,D ANA H -LXI SP,06A4 MOV L,E ANA L -STA 06A4 MOV L,H ANA M -INX SP MOV L,L ANA A -INR M MOV L,M XRA B -DCR M MOV L,A XRA C -MVI M,20 MOV M,B XRA D -STC MOV M,C XRA E -JRC 0134 MOV M,D XRA H -DAD SP MOV M,E XRA L - - -XRA M JPE 06A4 SLAR M -XRA A XCHG SLAR A -ORA B CPE 06A4 SRAR B -ORA C XRI 20 SRAR C -ORA D RST 5 SRAR D -ORA E RP SRAR E -ORA H POP PSW SRAR H -ORA L JP 06A4 SRAR L -ORA M DI SRAR M -ORA A CP 06A4 SRAR A -CMP B PUSH PSW SLLR B -CMP C ORI 20 SLLR C -CMP D RST 6 SLLR D -CMP E RM SLLR E -CMP H SPHL SLLR H -CMP L JM 06A4 SLLR L -CMP M EI SLLR M -CMP A CM 06A4 SLLR A -RNZ CPI 20 SRLR B -POP B RST 7 SRLR C -JNZ 06A4 RLCR B SRLR D -JMP 06A4 RLCR C SRLR E -CNZ 06A4 RLCR D SRLR H -PUSH B RLCR E SRLR L -ADI 20 RLCR H SRLR M -RST 0 RLCR L SRLR A -RZ RLCR M BIT 0,B -RET RLCR A BIT 0,C -JZ 06A4 RRCR B BIT 0,D -CZ 06A4 RRCR C BIT 0,E -CALL 06A4 RRCR D BIT 0,H -ACI 20 RRCR E BIT 0,L -RST 1 RRCR H BIT 0,M -RNC RRCR L BIT 0,A -POP D RRCR M BIT 1,B -JNC 06A4 RRCR A BIT 1,C -OUT 20 RALR B BIT 1,D -CNC 06A4 RALR C BIT 1,E -PUSH D RALR D BIT 1,H -SUI 20 RALR E BIT 1,L -RST 2 RALR H BIT 1,M -RC RALR L BIT 1,A -EXX RALR M BIT 2,B -JC 06A4 RALR A BIT 2,C -IN 20 RARR B BIT 2,D -CC 06A4 RARR C BIT 2,E -SBI 20 RARR D BIT 2,H -RST 3 RARR E BIT 2,L -RPO RARR H BIT 2,M -POP H RARR L BIT 2,A -JPO 06A4 RARR M BIT 3,B -XTHL RARR A BIT 3,C -CPO 06A4 SLAR B BIT 3,D -PUSH H SLAR C BIT 3,E -ANI 20 SLAR D BIT 3,H -RST 4 SLAR E BIT 3,L -RPE SLAR H BIT 3,M -PCHL SLAR L BIT 3,A - - -BIT 4,B RES 3,D SET 2,H -BIT 4,C RES 3,E SET 2,L -BIT 4,D RES 3,H SET 2,M -BIT 4,E RES 3,L SET 2,A -BIT 4,H RES 3,M SET 3,B -BIT 4,L RES 3,A SET 3,C -BIT 4,M RES 4,B SET 3,D -BIT 4,A RES 4,C SET 3,E -BIT 5,B RES 4,D SET 3,H -BIT 5,C RES 4,E SET 3,L -BIT 5,D RES 4,H SET 3,M -BIT 5,E RES 4,L SET 3,A -BIT 5,H RES 4,M SET 4,B -BIT 5,L RES 4,A SET 4,C -BIT 5,M RES 5,B SET 4,D -BIT 5,A RES 5,C SET 4,E -BIT 6,B RES 5,D SET 4,H -BIT 6,C RES 5,E SET 4,L -BIT 6,D RES 5,H SET 4,M -BIT 6,E RES 5,L SET 4,A -BIT 6,H RES 5,M SET 5,B -BIT 6,L RES 5,A SET 5,C -BIT 6,M RES 6,B SET 5,D -BIT 6,A RES 6,C SET 5,E -BIT 7,B RES 6,D SET 5,H -BIT 7,C RES 6,E SET 5,L -BIT 7,D RES 6,H SET 5,M -BIT 7,E RES 6,L SET 5,A -BIT 7,H RES 6,M SET 6,B -BIT 7,L RES 6,A SET 6,C -BIT 7,M RES 7,B SET 6,D -BIT 7,A RES 7,C SET 6,E -RES 0,B RES 7,D SET 6,H -RES 0,C RES 7,E SET 6,L -RES 0,D RES 7,H SET 6,M -RES 0,E RES 7,L SET 6,A -RES 0,H RES 7,M SET 7,B -RES 0,L RES 7,A SET 7,C -RES 0,M SET 0,B SET 7,D -RES 0,A SET 0,C SET 7,E -RES 1,B SET 0,D SET 7,H -RES 1,C SET 0,E SET 7,L -RES 1,D SET 0,H SET 7,M -RES 1,E SET 0,L SET 7,A -RES 1,H SET 0,M DADX B -RES 1,L SET 0,A DADX D -RES 1,M SET 1,B LXI X,06A4 -RES 1,A SET 1,C SIXD 06A4 -RES 2,B SET 1,D INX X -RES 2,C SET 1,E DADX X -RES 2,D SET 1,H LIXD 06A4 -RES 2,E SET 1,L DCX X -RES 2,H SET 1,M INR [X+05] -RES 2,L SET 1,A DCR [X+05] -RES 2,M SET 2,B MVI [X+05],20 -RES 2,A SET 2,C DADX SP -RES 3,B SET 2,D MOV B,[X+05] -RES 3,C SET 2,E MOV C,[X+05] - - -MOV D,[X+05] DSBC B DADY B -MOV E,[X+05] SBCD 06A4 DADY D -MOV H,[X+05] NEG LXI Y,06A4 -MOV L,[X+05] RETN SIYD 06A4 -MOV [X+05],B IM0 INX Y -MOV [X+05],C LDIA DADY Y -MOV [X+05],D INP C LIYD 06A4 -MOV [X+05],E OUTP C DCX Y -MOV [X+05],H DADC B INR [Y+05] -MOV [X+05],L LBCD 06A4 DCR [Y+05] -MOV [X+05],A RETI MVI [Y+05],2 -MOV A,[X+05] LDRA DADY SP -ADD [X+05] INP D MOV B,[Y+05] -ADC [X+05] OUTP D MOV C,[Y+05] -SUB [X+05] DSBC D MOV D,[Y+05] -SBB [X+05] SDED 06A4 MOV E,[Y+05] -ANA [X+05] IM1 MOV H,[Y+05] -XRA [X+05] LDAI MOV L,[Y+05] -ORA [X+05] INP E MOV [Y+05],B -CMP [X+05] OUTP E MOV [Y+05],C -POP X DADC D MOV [Y+05],D -XTIX LDED 06A4 MOV [Y+05],E -PUSH X IM2 MOV [Y+05],H -PCIX LDAR MOV [Y+05],L -SPIX INP H MOV [Y+05],A -RLCR [X+05] OUTP H MOV A,[Y+05] -RRCR [X+05] DSBC H ADD [Y+05] -RALR [X+05] shld 06A4 ADC [Y+05] -RARR [X+05] RRD SUB [Y+05] -SLAR [X+05] INP L SBB [Y+05] -SRAR [X+05] OUTP L ANA [Y+05] -SRLR [X+05] DADC H XRA [Y+05] -BIT 0,[X+05] lhld 06A4 ORA [Y+05] -BIT 1,[X+05] RLD CMP [Y+05] -BIT 2,[X+05] INP M POP Y -BIT 3,[X+05] OUTP M XTIY -BIT 4,[X+05] DSBC SP PUSH Y -BIT 5,[X+05] SSPD 06A4 PCIY -BIT 6,[X+05] INP A SPIY -BIT 7,[X+05] OUTP A RLCR [Y+05] -RES 0,[X+05] DADC SP RRCR [Y+05] -RES 1,[X+05] LSPD 06A4 RALR [Y+05] -RES 2,[X+05] LDI RARR [Y+05] -RES 3,[X+05] CCI SLAR [Y+05] -RES 4,[X+05] INI SRAR [Y+05] -RES 5,[X+05] OTI SRLR [Y+05] -RES 6,[X+05] LDD BIT 0,[Y+05] -RES 7,[X+05] CCD BIT 1,[Y+05] -SET 0,[X+05] IND BIT 2,[Y+05] -SET 1,[X+05] OTD BIT 3,[Y+05] -SET 2,[X+05] LDIR BIT 4,[Y+05] -SET 3,[X+05] CCIR BIT 5,[Y+05] -SET 4,[X+05] INIR BIT 6,[Y+05] -SET 5,[X+05] OTIR BIT 7,[Y+05] -SET 6,[X+05] LDDR RES 0,[Y+05] -SET 7,[X+05] CCDR RES 1,[Y+05] -INP B INDR RES 2,[Y+05] -OUTP B OTDR RES 3,[Y+05] - - -RES 4,[Y+05] SET 0,[Y+05] SET 4,[Y+05] -RES 5,[Y+05] SET 1,[Y+05] SET 5,[Y+05] -RES 6,[Y+05] SET 2,[Y+05] SET 6,[Y+05] -RES 7,[Y+05] SET 3,[Y+05] SET 7,[Y+05] - -; These are the result of disassembling 64180OPS.TRY -; These opcodes are available ONLY on the 64180 CPU -; DDTZ will both assemble and disassemble these. -IN0 B,20 TST E MLT B -OUT0 20,B IN0 H,20 MLT D -TST B OUT0 20,H TSTI 20 -IN0 C,20 TST H MLT H -OUT0 20,C IN0 L,20 TSIO 20 -TST C OUT0 20,L SLP -IN0 D,20 TST L MLT SP -OUT0 20,D TST M OTIM -TST D IN0 A,20 OTDM -IN0 E,20 OUT0 20,A OIMR -OUT0 20,E TST A ODMR - -; The following are UNDOCUMENTED z80 opcodes from XTDOPS.TRY. -; DDTZ will disassemble these, but will not assemble them. -; They use xh/xl (or yh/yl) as separate byte registers. -; Use these at your own risk. -INRX H ACXR H MOVY H,B -DCRX H ACXR L MOVY H,C -MVIX H,20 SUXR H MOVY H,D -INRX L SUXR L MOVY H,E -DCRX L SBXR H MOVY H,A -MVIX L,20 SBXR L MOVY L,B -MOVX B,H NDXR H MOVY L,C -MOVX B,L NDXR L MOVY L,D -MOVX C,H XRXR H MOVY L,E -MOVX C,L XRXR L MOVY L,A -MOVX D,H ORXR H MOVY A,H -MOVX D,L ORXR L MOVY A,L -MOVX E,H CPXR H ADYR H -MOVX E,L CPXR L ADYR L -MOVX H,B INRY H ACYR H -MOVX H,C DCRY H ACYR L -MOVX H,D MVIY H,20 SUYR H -MOVX H,E INRY L SUYR L -MOVX H,A DCRY L SBYR H -MOVX L,B MVIY L,20 SBYR L -MOVX L,C MOVY B,H NDYR H -MOVX L,D MOVY B,L NDYR L -MOVX L,E MOVY C,H XRYR H -MOVX L,A MOVY C,L XRYR L -MOVX A,H MOVY D,H ORYR H -MOVX A,L MOVY D,L ORYR L -ADXR H MOVY E,H CPYR H -ADXR L MOVY E,L CPYR L - - -Command Summary: -=============== - -DDTZM command DDTZ command -============= ============ -@ (base) -A)ssemble first_address A -B)egin {i.e., initialize stack and return} B -C)ompare first_address,last_address,against_address C -D)ump first_address[,last_address[,base]] D -E)nter_in_memory first_address[,base] S)ubstitute -F)ill first_address,last_address,value F -G)o_to [address][,trap1[,trap2]] G -H)ex_arithmetic value1(,value2) H -L)oad_file (offset) R)ead -M)ove first_address,last_address,destination M -N)nput FCBs_command_line I)nput -Q)uit (not avail) -R)egister examine/change [register|flag] X)amine -S)earch first_address,last_address,word W)hereis -T)race_execution [count] T - Untrace_execution [count] (i.e. do count instr) U)ntrace -U)nassemble_code first_address[,last_address] L)ist code -W)rite [first_address,last_address] K)eep -X)amine {i.e. display memory parameters for application} Q)uery -Y)our_option BC:=parm1,DE:=parm2,call_address Y -Z)80_register_display Z - - -If you find this program useful, contributions will be gratefully -accepted and will encourage further development and release of -useful CPM programs. My practice is to include source. - -C.B. Falconer -680 Hartford Turnpike, -Hamden, Conn. 06517 (203) 281-1438 - -DDTZ and its associated documentation and other files are -copyright (c) 1980-1988 by C.B. Falconer. They may be freely -copied and used for non-commercial purposes ONLY. - diff --git a/RomDsk/CPM_1024KB/MAC.COM b/RomDsk/CPM_1024KB/MAC.COM deleted file mode 100644 index f49e835a181bb857bfa4f40c77063233894174dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11776 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 LleoA4|BnA}sttr@ diff --git a/RomDsk/CPM_1024KB/UNCR.COM b/RomDsk/CPM_1024KB/UNCR.COM deleted file mode 100644 index 42385dddd1f46384dfeb781a5de4da71417318b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8576 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 diff --git a/RomDsk/CPM_1024KB/ZDE40.COM b/RomDsk/CPM_1024KB/ZDE40.COM deleted file mode 100644 index 6a2d37dee3350010df364e9ca1e7cccc61be7c44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16896 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 Zx%h1LrVc_oe`n)IvvbR*{2$uV{wMiPr_}%e diff --git a/RomDsk/CPM_512KB/CR.COM b/RomDsk/CPM_512KB/CR.COM deleted file mode 100644 index 8a824bcc4108a87e72b8e2925f3402628e7f9e60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6144 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 Xjkg6C+_HFa8FqO=E#G7E9sd3YUd-_( diff --git a/RomDsk/CPM_512KB/SID.COM b/RomDsk/CPM_512KB/SID.COM deleted file mode 100644 index 3b073ba56b94c4941177430d541180dbd706f15a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7936 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 diff --git a/RomDsk/CPM_512KB/UNCR.COM b/RomDsk/CPM_512KB/UNCR.COM deleted file mode 100644 index 42385dddd1f46384dfeb781a5de4da71417318b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8576 zcmbU`3v^S*mG4;}OSbiSmOoFDEssV{EnCEP)PT*yeh>_CC<#vZZg7A)Mi>XMK(b>S ze=yq*ZL?=fyG^%elkRR$n$ULBb)X^2hfpkG*U#o{B3cpb#7Pt)H$hPo2MmFhr@ixJ zlizMnPe*$5xpU{5`1!p$EIsx^h(S^LW}G^!QqI8O8tl&Ow?f z&Iwf*68;nTHtGrSYg&kTow&>}=>9o&zm1tjEdEe$Dti(42auM|qO|x$%wCd`W4|@b za?j#GglWh*Q(_1^=u9f{3{;9QWb*^=DLf;kp>*!|I1oIn5F?qDYUVjp=m`ZgAQR*f z@UR2%mBv9g^_V!5S*c>4GO=dqVPt@kBst5a8_p6b=`@M4Oy*zIVu@jnTIdnly%GbG z7rqw!CT10+rw6e*3jhJ<=II0C18S+?< z3e^VYNkXXl@qn{fN+P-fT71YSVeIT{QX~33Lp{c-0b$aXmTd~4S;%s4;{Y;3MnaR9 zR8Au^tPcHBLCQvSDRha@cTW)4Iu@X>JY!Kc03k$DxnYpkLeI+r&-cBS=@a04LTu)yzRP=@`zJKk zo+e!ieM>PL6T4L5vMNmYac|&bodn5GqM1$rJ7CNXj>9KTjhDbsxy86f(m9ndbb*&Z z5CTI{0IcVx@Oa6YZ!5=5xb3U#8CGzfQF2p2>fBWQrw~w59tLij030a9?UO2 zd5SBdI|bM^Q+CQR)lW&u(SS2&sy{>8?9@s3JGIh%P8FXv)k#fh*|+S}V`^uAU{u~4 zkirg;wv0NAmj&i6HFPSJtrYK5$r2s3CzG*RSSd5n8gxai9JVJ93_@|pI7`GV*r_^( zuA?dAqJhLSizqr-lz7HY`5D?zQ%(Zo54b76P%pl&x|>XiO8lXUolP`WVPEe^PK#ei zG@iufUddmnWF9e@1;7Ke(HP8JPD>k^>G3wFI!apoF`Q_u#iqo%TAXN<7jQk$n46-# z!j@79PkVc&4I};*M~vy{Hsg~xN`#%-Ca~M;Fxe|)f1detznocUn6OhzChX<-_Oc4> z!WEdWbg#xRG0?r}uDz*w7is{=j@{l)0@={! z>DudQZU>qx8}5`L{-zcWr^^7g#VLhOdO$+Y_F}HDX-8WsgL*2wd)qpacg zw(V$dldoxyryZEK`q6fezrD4siJ$=8h7>N^;oS|aTiaTYe|M9AXNu8%K>fasR!=+H z1rj+ThI=W zi9bbd9jR{K-2n{Nb^F^rd*&+PoPeD&l3aS8dDH~TJ#`o`Em(X~59h`C)IlNMrGd3k zsRFH2CGf@W6`1H!SQ})ss$j>lS8nR9BZB<_`54ITpFWW7Fu~4bw&Z{sA)4_OSU8SY z*(;zhUcu4zTlxdnuWDw8BLpOVCz~&a-6n6mXn4q>)`$gK8KhQ_90!#%PBUKysrVJG zv;o<9&3uDFR!?B-kxs7X>1=VKf&G!R99<>EU4841q4X#d$q7B6aS`Usdr31vInVr- z^bQ&`=W?VqV-ILRC8YD|K$yMA-%ofgGzc&j2V{*`1+iK?eLzycLBi&SP8g=&5=i%H zicwQ$ag`Q2F1*jBQ|JD>S}7?jvlv4T88~R~69#EnbsE3SJ&s47aG$|tTDtF9r!8*J zN$-~s%C#3$=Bbc)x_Xu`x#_j`zcJFbtQoNR7rw|^1`Jl+mhH_(5B=u!-4`2z6-D?p4 zD>GdEkR8l{Q0^2-e3<~^4nnPSU25yvw^0331>njJTq#?GHj>V@QoxSeMFoOSW^&yW zFy?wvh24~U0NV$sHEN1)OdNG}9X-8K4c*}yL0u@gQS27rG#HpKjA8La<}ci50k#=8 za0l=&pK*slcf(R57R^y7J?Q>D40jlF&*2L9X{^r@RTN+Ga&_(?DOEzLS6b&(N-K~8 zu$Tvlr6O+9i=vWr_&<#>Utsy1Fo+*za{(MUeZNM06Ao(!*h&I7Km|tYM+UrKp?Gu> zDP6|vf}VE4s8Kq^$l=svbxZ13jUNbiETSA@c_twA$KjA&=d{7$Q6#N$B5A#|K&o@H z(n_aUYH;Q;bTl?8ouob57+VDlRNa#)Vk#lQqtgss1EbJ!+W0 zsm^3s0lnbmN*x?i#V4ZYnWcotTr4ZnRKEAPQ_~NokxJaCt`Zza1lU7x#MY{f=jd_E zxYhVcV%;BbcxXld8Gr!v1~I9xIdTe)*HqaEWnrRkyd-euMrOZbLg31At-Bl_Iit@y zFD_(`z^VpRwT7XVlvCVkFxu*}Y?RoXg|Zgd21u%0kYh~rL7VW<5hsXpiBKizEkM_1 z)GvU9u+4!qfRwzEeT@rY_H0B(n6C*31o2)yQ5w0|H$6;wW^cH4- z0up+L=ph(^vxITwl9?UR!)dwDP$dvWGwYoB?$~k z^E-7!4e&cy6-ipcFwj}(!AvyV07>nTFfp55&@*0wETWyM&duS@;1`j8m>UOss9yYr zZiu0tn3*8m>h#uLJkazzM>&=kXxJO|v31AL4sKLWofQ5)j zoyjBc2L7UE2T2kZBJAaqeaw7MKCk4}LS|!b;$h$SjPNPt8|39_5UXTaG&_TV;s8q~@AuEfCbG%Qs{kxmxutwyFm&X|o1n$MJy45;|P z>8pk_9~+qO$Yt}*@>6m-AIeDs6C?%ZH5p{117}pm(*`3GC1tjR&`BN1;4HvN%6yk> z6Ue*zp5^_gml>Gv%ll@PKGAama~3)fq@eR{AvkY$K<6Q4Hs*v%4E!o6rQj<`t_y19 zlZx*cgJLUz`2aR|YANi7bTz0VMC@dT@rvNO)6wrpsrZp)0MqNbq>Sopotjdf%aAfE zug!LiR04cPj^#65trZU&Q|G*r41+r~gE& zvm&grzaeF_T#Z6Y2XG6}R9a&Bc_vBr#O!da>^1=3hVA!Zabb28^ee#hnZPvQ%$;9( zS+Gc8C#LKJ+3C#ZDsXK*w*o&io$gGZrq6tXVHM(23|Q0-u&C{;=cz@&xVjrNcVd`4 za53)2VL|rqQTlKU@Cn1nR4i2w%snWzlQ|83i?F5xgoE1=?G(}Aak(fHm zvL>Fr4~)>OFiI$AI!u<6NMZb>3d)JqB2Ltu$FO`J+%+t|o&ASbv&r4cP-fTB;En8_ zk*sa||A*R?SbZL661=XX=rtkTVGGYqo<6(%kO#b$_`k z>+8z7F#2+1uWYwiFY` z2epBRw8Pucw!J)6ZuWU(-(${`0v`any`t5>3*FhVdp9rvvgySQ9qoHN+UIfBd%b8+ zQ(Je+Gbk@6UYDoM+tIQU?eXk^v6O=gvH8~ON>q362INcmS-=q8dMgjzg18vf)i}@agI-@d@$WplLFU9KLk+8u^Ztr8rAtw9x-Nq_ zmQ8If;98}|yPe3PsSP|f;!u8uGq`c!H+6WB69_jEvi{O?lyaazWHKZ06beOf)Hqu4l2(hn;#LZ0v((Hqw)j~l3PYffGMN~X59uLSEZXjVv&j)Rq z7P84?lE8F?Y9*>5adFJGDCrO_`O%oTINvJ%IdAOoyog#!GVkY_RKdyIaA;?q#D#-9 z^Pn+-SLd0|RZbqulQPa0RK!ci=jAxJKx%wS7!DD%$k8_o(vEn?}KF2wR zppv@V7eY-m z^7!<_0I^WoP79C&UZWB+O&-lts;(c+%hCn^lqZ#qUCQfpr~<;Gr4H4{m+}Nl%zkJ7 z$+67*+ZQ^5RDK{j3Kteq&)NL^>21>oguza@SVf{cpH@;N*2wuRYOg~Vbmt2e6Szi; z^Cc}rf=-Ld7jR1&x760~y%dwA%;gl0V*8_TF%reH-&6+aM~1{R;=L?fw5F3J=~Pw; z#7t%3uSO8T6_xP{dvUz_jFPQZ@NigD0!%m5G{9GXF751rd>}-$D3d{nWBKqmgXTh) z+2zA?Sb^)8^2hC;{_DAS@Id|WqR@h&eGB$37!u%uSJPdwpmPD_X$Q-`OGsCZv%&-1o@ zso(LPY?FM>M=kand8B%-iQI;=+Dmi}Tg2KVK=p5LP4Gv71L&p!C2-aD7 z>Sc(<>sGsxS`18}7g{YzmuR%w+qXJ`TdlWmbU6B5FHU-`!ML^mrL%GCa7^Jy!S-2$ z-vHR;K5P7f)n(}~SKRYi)HkiccVyIeK1Bt(Lx3Z95M;L23L~+1q{V;^1CpYs$W{lRc5>2E z5UefW+h00cThJ3HOgbIVtysTfhu6^?C~D~|ip0qPJE5Nng(GY-U2ydtzYx?EMC}|+ zKb!_4jYR;%Oa=gQ-{CdK$vkQ^GhO>nx+Yr-g8K`4PC}|sL}QWRd++c2K|}9P>W_{+ zS3vO0+VxvZuKsM7mCWsr3x>iG=*H)vPZtakieVTO>EaN{L|rD6LeYCXxUPWiNXsN} z?Po;Dr@c6Ny&!mnj14kGgh2jW!H_V^Cqo&93|!v7hi7mMi$AqZUS_X}@7f04f5hB- za0${-2-VW0RPMfZfE+Pu%Se>#0rBs5SMe5$ZdqQ>4X zWYUu6759j_Hb*$p^Qd?K4*!o_AG!A!7 z(QuVO7gKgsQPF2C+{pXH zQlisYZ_zoehU^7aht6$fvR7M|Xx3Q|&LaqG?I^XYjQ__XikW06)Y;XC<(FqKhBd z!QwEHL~>er6|3i!YzD7j)qENYZg5qiX9f#{>?eQ`K-VFLe?4zJTzw&x7whatH1f-7 z0*e>Xq!vZQt;qgi>g65yI@H8)a88JW)Ded_#kcyyLT4~Y1fHuMB{s@nAMK}N3*i2Hhjr#~s z8#e9#4LpqqpEY=NIA!qY=bs-%9X9@1HhG|G$}YjJvwd(DWDatesX?}6>S_UXWH;Pua~Div{aywo@w xFU?Q=c264!bGY+LSz~i18eDO~Mc3p^k!+~ltevyfQnfR}h7Et!R{DD@{}-JkC7J*L diff --git a/RomDsk/CPM_512KB/UNZIP.COM b/RomDsk/CPM_512KB/UNZIP.COM deleted file mode 100644 index afde72047347290bcc1fcee1b9977a3c2572b545..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3328 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 diff --git a/RomDsk/CPM_512KB/ZDE40.COM b/RomDsk/CPM_512KB/ZDE40.COM deleted file mode 100644 index 6a2d37dee3350010df364e9ca1e7cccc61be7c44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16896 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 Zx%h1LrVc_oe`n)IvvbR*{2$uV{wMiPr_}%e diff --git a/RomDsk/ZSYS_1024KB/ASM.COM b/RomDsk/ZSYS_1024KB/ASM.COM deleted file mode 100644 index a63e5aec663546b7aac7b330a9ebe8be3a46ba33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 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 RFgWss^26~5s=npH`Zq8hC}98q diff --git a/RomDsk/ZSYS_1024KB/CR.COM b/RomDsk/ZSYS_1024KB/CR.COM deleted file mode 100644 index 8a824bcc4108a87e72b8e2925f3402628e7f9e60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6144 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 diff --git a/RomDsk/ZSYS_1024KB/DDTZ.COM b/RomDsk/ZSYS_1024KB/DDTZ.COM deleted file mode 100644 index e30a34c0c31b568fb7d3e9ece2d375524b8905b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7424 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 VA`-*10cn8gmj)aQKKRAX{|4B&cRm0B diff --git a/RomDsk/ZSYS_1024KB/DDTZ.DOC b/RomDsk/ZSYS_1024KB/DDTZ.DOC deleted file mode 100644 index e4470528..00000000 --- a/RomDsk/ZSYS_1024KB/DDTZ.DOC +++ /dev/null @@ -1,564 +0,0 @@ - - DDTZ v2.7 - by C.B. Falconer - edited by George A. Havach - -Introduction: -============ -DDTZ v2.7 is a complete replacement for DDT, Digital Research's -famous Dynamic Debugging Tool, with improved functionality, bug -extermination, and full Z80 support. In general, DDTZ is fully -compatible with the original utility, but it has extra and -extended commands and many fewer quirks. All Z80-specific -instructions can be (dis)assembled, though in Intel rather then -Zilog format. Furthermore, DDTZ will correctly trace ('T' and 'U' -commands) both 8080 and Z80 instructions, depending on which CPU -is operating. On startup, the program announces which CPU it is -running on. - -DDTZ v2.7 now handles the 64180 added opcodes. It does NOT test -for a 64180 CPU, since this cannot be done without executing -illegal Z80 instructions, which in turn will crash some -simulators. However v2.7 does not execute any 64180 instructions -internally, only in the subject program. - -This issue supplies the "M" version assembled, to avoid errors -when switching between MSDOS and CPM systems. The command table -is updated accordingly. Most CPM users are also MSDOS users, but -not vice-versa. - -The program is invoked by typing - - ddtz -or - ddtz [d:]filespec - -In the second form, DDTZ will load the specified file into -memory starting at 0100H, unless it's a .HEX file that sets its -own load address. Besides reporting the NEXT free address and -the PC (program counter) after a successful load, DDTZ also shows -the number of memory pages needed for a SAVE. Instead of having -to write all this down, just use the 'X' command at any time to -redisplay these three values for the current application. - -NOTE: loading more code above the NEXT pointer revises these - values. - -As in DDT, when a program is loaded above the area holding the -'A' and 'U' (and now 'W') command code, these commands are -disabled, and the extra memory is released to the user. Thus, -DDTZ can occupy as little as 3K total memory space. Unlike DDT, -however, DDTZ will not overwrite itself or the system on program -loads (except .HEX files). - -At initialization, the stack pointer (SP) points to a return to -DDTZ, just like for the CCP. Thus, programs that normally return -to the CCP will be returned to DDTZ. The 'B' command -reinitializes this condition. - - -The intercept vector copies the BDOS version number, etc., so -an object program does not know that DDTZ is running (except -for BIOS-BDOS vector size). Thus, programs that check the version -number should execute correctly under DDTZ. - -All input parameters can now be entered in any of three formats: - - (1) hexadecimal (as in DDT), - (2) decimal, by adding a leading '#' character, - (3) ASCII, by enclosing between either single or double - quotes; either one or two characters are allowed. - -Leading blanks in command lines and parameters are absorbed. -Either a comma or a (single) space is a valid delimiter. -Either uppercase or lowercase input is accepted. - -The default command (for anything not otherwise recognizable) -is 'H'. This allows convenient calculation, along with the other -features described below. So, to convert a number, just enter -it! - -As in DDT, the prompt character is '-', and the only error -message is the query ('?'), which generally kicks you back to -command mode. - -New Commands (Over DDT): -======================= - -NOTE: letters in parenthesis, e.g. "(U)", show the equivalent - command for DDTZM version (compatible with MSDOS debug). - - @ Sets or shows (with no parameter) the internally stored - "base" value. Also used with the 'S' and 'D' commands as - an optional parameter (though without the '@') to display - memory from an arbitrary base marker (offset). When set to - zero (the default), it does not affect any screen displays. - - B B)egin: resets the USER stack pointer to its initial value, - such that any program that exits by an RET will return to - DDTZ. DDTZ provides a default stack space of - approximately 24 bytes for user programs. - - C C)ompare first_address,last_address,against_address: shows - all the byte differences between two memory areas, in the - format - - XXXX aa YYYY bb - - where XXXX and YYYY are the comparative memory addresses, - and aa and bb are the corresponding byte values. Can be - used to verify the identity of two files by first - loading them into different memory areas with the 'R' - command (see below). - - - W Write: stores the modified memory area to disk under the - (K) filename specified by the 'I' command, overwriting the - original file from which it was loaded (the user is queried - before doing so). By default, the image of memory from - 0100H through the "NEXT" value -1 is saved. "K first_addr, - last_address" overrides this and allows writing ANY memory - area to a file. Almost a necessity for CPM 3.0 (no SAVE!). - K)eep on DDTZ - - X eXamine: redisplays the "NEXT PC SAVE" report at any time. - (Q) Q)uery size on DDTZ. - - S S)earch first_address, last_addr, value: searches the - (W) specified memory area for the value (a 16-bit word, not a - byte) and shows the locations of all such. Very useful for - finding CALL's or JMP's to a particular address, etc. - W)here on DDTZ - - Y Y)our_option parm1,parm2,address: executes an arbitrary - routine at the specified address, with the BC and DE - registers set to parm1 and parm2, respectively. - - Z Displays (but does not alter) the Z80's alternate register - set, including the index registers (disabled if running on - an 8080). On Z80's, automatically included as the last - part of the display by the 'X' command. - - -Based (Offset) Displays: -======================= - -The 'D' and 'E' commands can use a stored base value (offset), -as set by the '@' command. The current @ value may be -overridden for a single execution of these commands by adding the -base as an extra parameter in the command line. The effect is -to add this value to the first/last address and display -accordingly. The address listing on the left becomes XXXX:YYYY, -where XXXX is the offset address and YYYY is the actual memory -address being displayed. For example, if you have a data area -located at 42B7H and wish to preserve easy access, just enter -"@42b7". Now, "d0,3f" will dump memory starting at 4237H. - - -Further Changes from DDT: -======================== - - A A)ssemble now accepts the full Z80 as well as 8080 - instruction set, although it expects them in Intel rather - than Zilog format (see notes below under the 'L' - command). When in doubt, see the mnemnonic list below. - - D D)isplay or D)ump will accept an optional third parameter - to set the base value for a single execution only. Format - has been cleaned up. - - H H)ex_arithmetic on two values also shows their - difference in decimal. With only one value, converts to - hexadecimal, decimal, and ASCII (low-order byte only). - - - N N)ame now allows drive specification (d:...) and sets up - (I) the complete command line, including both FCB's (at - addresses 005CH and 006CH). The tail (stored at 0081H up) - is NOT upshifted. - I)nput on DDTZ - - U U)nassemble now displays the raw hexcode, especially handy - (L) when examining non-code areas. Intel (8080 style) mnemonics - are used, so some disassembled instructions may look - strange. E.g., the Z80's 'IN B,(C)' and 'OUT (C),B' become - 'INP B' and 'OUTP B', respectively; 'LD (nnnn),BC' becomes - 'SBCD nnnn', 'ADD IX, BC' becomes 'DADX B', and 'JP (IX)' - becomes 'PCIX'. - L)ist on DDTZ - - L L)oad now permits loading a file into memory with an - (R) offset, which is added to the default load address of - 0100H. When reading in a .HEX file with a preset bias, - the 'R' command will not transfer control to an invalid - execution point. Another execution of the 'R' command will - reread the input file, e.g.: - - n blah - l - ...modify the code and generally mess about... - l - - The original file is reloaded, and the modifications are - removed. - R)ead on DDTZ - - E E)nter, like D)isplay, now accepts an optional second - (S) parameter to set the base value for a single execution - only. - S)ubstitute or S)et on DDTZ - - T T)rap/trace on termination now shows the complete CPU - state. Traps and traces no longer lock up when a user RST - 7 instruction is executed. Tracing of BDOS/BIOS calls is - heavily trun cated, avoiding clutter and preventing system - crashes. - -NOTE: Most of the UNDOCUMENTED Z80 op-codes are handled. Others - can crash the system. - - R R)egisters also shows what two-byte values the HL and SP - (X) registers are actually pointing to. On Z80's, displays the - alternate register set. - eX)amine on DDTZ - -NOTE: Any use of the 'W' or 'L' command resets the system DMA - transfer address to the standard default value of 0080H. - - -; This is the output of DDTZ when disassembling OPTYPE.TRY -NOP LDA 06A4 MOV M,H -LXI B,06A4 DCX SP MOV M,L -STAX B INR A HLT -INX B DCR A MOV M,A -INR B MVI A,20 MOV A,B -DCR B CMC MOV A,C -MVI B,20 MOV B,B MOV A,D -RLC MOV B,C MOV A,E -EXAF MOV B,D MOV A,H -DAD B MOV B,E MOV A,L -LDAX B MOV B,H MOV A,M -DCX B MOV B,L MOV A,A -INR C MOV B,M ADD B -DCR C MOV B,A ADD C -MVI C,20 MOV C,B ADD D -RRC MOV C,C ADD E -DJNZ 0134 MOV C,D ADD H -LXI D,06A4 MOV C,E ADD L -STAX D MOV C,H ADD M -INX D MOV C,L ADD A -INR D MOV C,M ADC B -DCR D MOV C,A ADC C -MVI D,20 MOV D,B ADC D -RAL MOV D,C ADC E -JR 0134 MOV D,D ADC H -DAD D MOV D,E ADC L -LDAX D MOV D,H ADC M -DCX D MOV D,L ADC A -INR E MOV D,M SUB B -DCR E MOV D,A SUB C -MVI E,20 MOV E,B SUB D -RAR MOV E,C SUB E -JRNZ 0134 MOV E,D SUB H -LXI H,06A4 MOV E,E SUB L -SHLD 06A4 MOV E,H SUB M -INX H MOV E,L SUB A -INR H MOV E,M SBB B -DCR H MOV E,A SBB C -MVI H,20 MOV H,B SBB D -DAA MOV H,C SBB E -JRZ 0134 MOV H,D SBB H -DAD H MOV H,E SBB L -LHLD 06A4 MOV H,H SBB M -DCX H MOV H,L SBB A -INR L MOV H,M ANA B -DCR L MOV H,A ANA C -MVI L,20 MOV L,B ANA D -CMA MOV L,C ANA E -JRNC 0134 MOV L,D ANA H -LXI SP,06A4 MOV L,E ANA L -STA 06A4 MOV L,H ANA M -INX SP MOV L,L ANA A -INR M MOV L,M XRA B -DCR M MOV L,A XRA C -MVI M,20 MOV M,B XRA D -STC MOV M,C XRA E -JRC 0134 MOV M,D XRA H -DAD SP MOV M,E XRA L - - -XRA M JPE 06A4 SLAR M -XRA A XCHG SLAR A -ORA B CPE 06A4 SRAR B -ORA C XRI 20 SRAR C -ORA D RST 5 SRAR D -ORA E RP SRAR E -ORA H POP PSW SRAR H -ORA L JP 06A4 SRAR L -ORA M DI SRAR M -ORA A CP 06A4 SRAR A -CMP B PUSH PSW SLLR B -CMP C ORI 20 SLLR C -CMP D RST 6 SLLR D -CMP E RM SLLR E -CMP H SPHL SLLR H -CMP L JM 06A4 SLLR L -CMP M EI SLLR M -CMP A CM 06A4 SLLR A -RNZ CPI 20 SRLR B -POP B RST 7 SRLR C -JNZ 06A4 RLCR B SRLR D -JMP 06A4 RLCR C SRLR E -CNZ 06A4 RLCR D SRLR H -PUSH B RLCR E SRLR L -ADI 20 RLCR H SRLR M -RST 0 RLCR L SRLR A -RZ RLCR M BIT 0,B -RET RLCR A BIT 0,C -JZ 06A4 RRCR B BIT 0,D -CZ 06A4 RRCR C BIT 0,E -CALL 06A4 RRCR D BIT 0,H -ACI 20 RRCR E BIT 0,L -RST 1 RRCR H BIT 0,M -RNC RRCR L BIT 0,A -POP D RRCR M BIT 1,B -JNC 06A4 RRCR A BIT 1,C -OUT 20 RALR B BIT 1,D -CNC 06A4 RALR C BIT 1,E -PUSH D RALR D BIT 1,H -SUI 20 RALR E BIT 1,L -RST 2 RALR H BIT 1,M -RC RALR L BIT 1,A -EXX RALR M BIT 2,B -JC 06A4 RALR A BIT 2,C -IN 20 RARR B BIT 2,D -CC 06A4 RARR C BIT 2,E -SBI 20 RARR D BIT 2,H -RST 3 RARR E BIT 2,L -RPO RARR H BIT 2,M -POP H RARR L BIT 2,A -JPO 06A4 RARR M BIT 3,B -XTHL RARR A BIT 3,C -CPO 06A4 SLAR B BIT 3,D -PUSH H SLAR C BIT 3,E -ANI 20 SLAR D BIT 3,H -RST 4 SLAR E BIT 3,L -RPE SLAR H BIT 3,M -PCHL SLAR L BIT 3,A - - -BIT 4,B RES 3,D SET 2,H -BIT 4,C RES 3,E SET 2,L -BIT 4,D RES 3,H SET 2,M -BIT 4,E RES 3,L SET 2,A -BIT 4,H RES 3,M SET 3,B -BIT 4,L RES 3,A SET 3,C -BIT 4,M RES 4,B SET 3,D -BIT 4,A RES 4,C SET 3,E -BIT 5,B RES 4,D SET 3,H -BIT 5,C RES 4,E SET 3,L -BIT 5,D RES 4,H SET 3,M -BIT 5,E RES 4,L SET 3,A -BIT 5,H RES 4,M SET 4,B -BIT 5,L RES 4,A SET 4,C -BIT 5,M RES 5,B SET 4,D -BIT 5,A RES 5,C SET 4,E -BIT 6,B RES 5,D SET 4,H -BIT 6,C RES 5,E SET 4,L -BIT 6,D RES 5,H SET 4,M -BIT 6,E RES 5,L SET 4,A -BIT 6,H RES 5,M SET 5,B -BIT 6,L RES 5,A SET 5,C -BIT 6,M RES 6,B SET 5,D -BIT 6,A RES 6,C SET 5,E -BIT 7,B RES 6,D SET 5,H -BIT 7,C RES 6,E SET 5,L -BIT 7,D RES 6,H SET 5,M -BIT 7,E RES 6,L SET 5,A -BIT 7,H RES 6,M SET 6,B -BIT 7,L RES 6,A SET 6,C -BIT 7,M RES 7,B SET 6,D -BIT 7,A RES 7,C SET 6,E -RES 0,B RES 7,D SET 6,H -RES 0,C RES 7,E SET 6,L -RES 0,D RES 7,H SET 6,M -RES 0,E RES 7,L SET 6,A -RES 0,H RES 7,M SET 7,B -RES 0,L RES 7,A SET 7,C -RES 0,M SET 0,B SET 7,D -RES 0,A SET 0,C SET 7,E -RES 1,B SET 0,D SET 7,H -RES 1,C SET 0,E SET 7,L -RES 1,D SET 0,H SET 7,M -RES 1,E SET 0,L SET 7,A -RES 1,H SET 0,M DADX B -RES 1,L SET 0,A DADX D -RES 1,M SET 1,B LXI X,06A4 -RES 1,A SET 1,C SIXD 06A4 -RES 2,B SET 1,D INX X -RES 2,C SET 1,E DADX X -RES 2,D SET 1,H LIXD 06A4 -RES 2,E SET 1,L DCX X -RES 2,H SET 1,M INR [X+05] -RES 2,L SET 1,A DCR [X+05] -RES 2,M SET 2,B MVI [X+05],20 -RES 2,A SET 2,C DADX SP -RES 3,B SET 2,D MOV B,[X+05] -RES 3,C SET 2,E MOV C,[X+05] - - -MOV D,[X+05] DSBC B DADY B -MOV E,[X+05] SBCD 06A4 DADY D -MOV H,[X+05] NEG LXI Y,06A4 -MOV L,[X+05] RETN SIYD 06A4 -MOV [X+05],B IM0 INX Y -MOV [X+05],C LDIA DADY Y -MOV [X+05],D INP C LIYD 06A4 -MOV [X+05],E OUTP C DCX Y -MOV [X+05],H DADC B INR [Y+05] -MOV [X+05],L LBCD 06A4 DCR [Y+05] -MOV [X+05],A RETI MVI [Y+05],2 -MOV A,[X+05] LDRA DADY SP -ADD [X+05] INP D MOV B,[Y+05] -ADC [X+05] OUTP D MOV C,[Y+05] -SUB [X+05] DSBC D MOV D,[Y+05] -SBB [X+05] SDED 06A4 MOV E,[Y+05] -ANA [X+05] IM1 MOV H,[Y+05] -XRA [X+05] LDAI MOV L,[Y+05] -ORA [X+05] INP E MOV [Y+05],B -CMP [X+05] OUTP E MOV [Y+05],C -POP X DADC D MOV [Y+05],D -XTIX LDED 06A4 MOV [Y+05],E -PUSH X IM2 MOV [Y+05],H -PCIX LDAR MOV [Y+05],L -SPIX INP H MOV [Y+05],A -RLCR [X+05] OUTP H MOV A,[Y+05] -RRCR [X+05] DSBC H ADD [Y+05] -RALR [X+05] shld 06A4 ADC [Y+05] -RARR [X+05] RRD SUB [Y+05] -SLAR [X+05] INP L SBB [Y+05] -SRAR [X+05] OUTP L ANA [Y+05] -SRLR [X+05] DADC H XRA [Y+05] -BIT 0,[X+05] lhld 06A4 ORA [Y+05] -BIT 1,[X+05] RLD CMP [Y+05] -BIT 2,[X+05] INP M POP Y -BIT 3,[X+05] OUTP M XTIY -BIT 4,[X+05] DSBC SP PUSH Y -BIT 5,[X+05] SSPD 06A4 PCIY -BIT 6,[X+05] INP A SPIY -BIT 7,[X+05] OUTP A RLCR [Y+05] -RES 0,[X+05] DADC SP RRCR [Y+05] -RES 1,[X+05] LSPD 06A4 RALR [Y+05] -RES 2,[X+05] LDI RARR [Y+05] -RES 3,[X+05] CCI SLAR [Y+05] -RES 4,[X+05] INI SRAR [Y+05] -RES 5,[X+05] OTI SRLR [Y+05] -RES 6,[X+05] LDD BIT 0,[Y+05] -RES 7,[X+05] CCD BIT 1,[Y+05] -SET 0,[X+05] IND BIT 2,[Y+05] -SET 1,[X+05] OTD BIT 3,[Y+05] -SET 2,[X+05] LDIR BIT 4,[Y+05] -SET 3,[X+05] CCIR BIT 5,[Y+05] -SET 4,[X+05] INIR BIT 6,[Y+05] -SET 5,[X+05] OTIR BIT 7,[Y+05] -SET 6,[X+05] LDDR RES 0,[Y+05] -SET 7,[X+05] CCDR RES 1,[Y+05] -INP B INDR RES 2,[Y+05] -OUTP B OTDR RES 3,[Y+05] - - -RES 4,[Y+05] SET 0,[Y+05] SET 4,[Y+05] -RES 5,[Y+05] SET 1,[Y+05] SET 5,[Y+05] -RES 6,[Y+05] SET 2,[Y+05] SET 6,[Y+05] -RES 7,[Y+05] SET 3,[Y+05] SET 7,[Y+05] - -; These are the result of disassembling 64180OPS.TRY -; These opcodes are available ONLY on the 64180 CPU -; DDTZ will both assemble and disassemble these. -IN0 B,20 TST E MLT B -OUT0 20,B IN0 H,20 MLT D -TST B OUT0 20,H TSTI 20 -IN0 C,20 TST H MLT H -OUT0 20,C IN0 L,20 TSIO 20 -TST C OUT0 20,L SLP -IN0 D,20 TST L MLT SP -OUT0 20,D TST M OTIM -TST D IN0 A,20 OTDM -IN0 E,20 OUT0 20,A OIMR -OUT0 20,E TST A ODMR - -; The following are UNDOCUMENTED z80 opcodes from XTDOPS.TRY. -; DDTZ will disassemble these, but will not assemble them. -; They use xh/xl (or yh/yl) as separate byte registers. -; Use these at your own risk. -INRX H ACXR H MOVY H,B -DCRX H ACXR L MOVY H,C -MVIX H,20 SUXR H MOVY H,D -INRX L SUXR L MOVY H,E -DCRX L SBXR H MOVY H,A -MVIX L,20 SBXR L MOVY L,B -MOVX B,H NDXR H MOVY L,C -MOVX B,L NDXR L MOVY L,D -MOVX C,H XRXR H MOVY L,E -MOVX C,L XRXR L MOVY L,A -MOVX D,H ORXR H MOVY A,H -MOVX D,L ORXR L MOVY A,L -MOVX E,H CPXR H ADYR H -MOVX E,L CPXR L ADYR L -MOVX H,B INRY H ACYR H -MOVX H,C DCRY H ACYR L -MOVX H,D MVIY H,20 SUYR H -MOVX H,E INRY L SUYR L -MOVX H,A DCRY L SBYR H -MOVX L,B MVIY L,20 SBYR L -MOVX L,C MOVY B,H NDYR H -MOVX L,D MOVY B,L NDYR L -MOVX L,E MOVY C,H XRYR H -MOVX L,A MOVY C,L XRYR L -MOVX A,H MOVY D,H ORYR H -MOVX A,L MOVY D,L ORYR L -ADXR H MOVY E,H CPYR H -ADXR L MOVY E,L CPYR L - - -Command Summary: -=============== - -DDTZM command DDTZ command -============= ============ -@ (base) -A)ssemble first_address A -B)egin {i.e., initialize stack and return} B -C)ompare first_address,last_address,against_address C -D)ump first_address[,last_address[,base]] D -E)nter_in_memory first_address[,base] S)ubstitute -F)ill first_address,last_address,value F -G)o_to [address][,trap1[,trap2]] G -H)ex_arithmetic value1(,value2) H -L)oad_file (offset) R)ead -M)ove first_address,last_address,destination M -N)nput FCBs_command_line I)nput -Q)uit (not avail) -R)egister examine/change [register|flag] X)amine -S)earch first_address,last_address,word W)hereis -T)race_execution [count] T - Untrace_execution [count] (i.e. do count instr) U)ntrace -U)nassemble_code first_address[,last_address] L)ist code -W)rite [first_address,last_address] K)eep -X)amine {i.e. display memory parameters for application} Q)uery -Y)our_option BC:=parm1,DE:=parm2,call_address Y -Z)80_register_display Z - - -If you find this program useful, contributions will be gratefully -accepted and will encourage further development and release of -useful CPM programs. My practice is to include source. - -C.B. Falconer -680 Hartford Turnpike, -Hamden, Conn. 06517 (203) 281-1438 - -DDTZ and its associated documentation and other files are -copyright (c) 1980-1988 by C.B. Falconer. They may be freely -copied and used for non-commercial purposes ONLY. - diff --git a/RomDsk/ZSYS_1024KB/DIF.COM b/RomDsk/ZSYS_1024KB/DIF.COM deleted file mode 100644 index 87b89d75568272353e76a85046282781b8a406bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2944 zcmcImU2GIp6rSbI>~?1;IDudbMDMMI%GB1~p|qu;+t3zLBgn5stcc6*bh=P>aCZ?T zAYdZpN1%oPX?W0(_@FPNM%2Va#Er^o=E34mvdKgn924BEjfsg?BlX<7v%7`VC*wZs zoO{0SoO^!mxw+}I(EZ42yrMrgs0BlXuNuOAT?Yf(Dn*Q=T1rdoj>WYkP7P={8td=Z z5?VY0>m6EZpQgo2w&8fRXiqKsVtU+2#Ns-Rgp=CA(khSy$F-Fr-L|(O*cfQV4+feW zR_@gs)IgwV34rqzMZu3uHE+bA0^|-LkSwZM_)mmz)PT6+Mha{DW64w_7~mBl44d_a z2V+qj83-rB5lASB!wId8M!BMEV+gn5aP+w_B!!JQ-eIH$FfB)t;wv%y%J|-RDmI8$ zL8j~a@oFGZPVi0+_;AZfL3Mgi4NyI2m zP0B0iftpuPh75sx4&-wvW8Fkm<5p54e$KJuyxlK2)-PguNTRwKOsBgV4pg$p*>SJk z@3S70vO9ToF>gQ3+r5IanAfcyDZ7;?i}@ykImepISKTB5&VJf!_xh^oI(>mJ+t*0$ ze)W!3H$`73$pNlFe_09y)um0#np;|zuk7sVUbUJ=a1TTPo7G722wxqC;O6pFp&$Bb zwqcfag%s?#0E{;ngMQt_9%k{mW`_;a-pd#==B%w!_Fh3g%+UlF36#P@e@GyW%*gf7 zSM)$DMg&;Z@nqY-GOX{Wpv3k#7RP6ZhjR>Y|F?KZeF>S$OGvjCO4(NhTKKyFIm|+P zN01M2)^;iTi6H+lNiC|GZN|zmp65GSD!;4J(j_L|bT0Dl3$;1-o(Ij$Q5n_{`@X01z-o z`PC(ZaUWf~#PK2#1R$Pd#8V~D!v)W<2Ow}<=x$(456-*_>o1hvB`PCuMT{U81gL`* z?pUW=D@YeR=?e7%(3%posRBlx4vg&Kl+%DhN3T?n7ok!d5BHB_JuHy+f-!9D5Cn1^ zPlIr*JWqaLy`zzoASzSHwK~Uqq$exL;j+^WcQ}PPpUxpwPvdNZpqweB(I8s;1a}Hs zf3plhuH@Jfn$hHktBZC81a@Sz?S5J&MU;a@Qg*!`u2ZT~OR9+98fU7;qH6T8UtYjm zfq>Z99rwezpmse)QueZ+PR|IchYnDryM%n?C#T_nO~F={uy6h33}9|xFh}%Cffh{o z^L=O07PxTC{Ki8tqozxNIdUlr#eCmznKE3Y5U0=*H7fB+t(3hak|aANx*N@kL_=_c9YD=$`bV}<=^{v;DNz5A#=g3_)^;p`v&W2Q%*@!en~uI^+Y*=~ z4_9qF&sz&5d+gde^Mj9Ldgj)lcU!KT8LLjpWjY_tnT8&c^E>mM0gt~Um*1Id$G>Jw zC%@j<}J#i~nCEqtAS0&xY=c>H9ZhiU0fDU0SpU8ch@zmDV(w7R}^mymAuLMYE6oNK0 zv;1=XOh`?BO`0_)EpP@18>AyNbnIV6HP70IEO(YK`!-p4oZ`##yTvE#b4CQAW{9MI{t&zjaD7R5=qCS|aj0YqPpO3+r-)ccYO2i- zP=3S1@Brt<)-_m+Zq|nB{X_9(ZVwVq!FD1qEsglqi&YP*k1DLZ{g!E*Zm6$S8kJg;kzB4ema~5{lcWA{)7GRhH8}2`3dI5y57ezdS%G>R zF6zRzWD0DPK*;!IWraCiW+7YxJC^Z`B6BU?1Y0Nmiu6d@1~+o~&tSnb6caxR$~@_v zsi_m6vP(c(0ssLh6W>=X{0edhUOvA`MGu}HUwW-#{3G07-qmA5z5|}qMMj6BU-apZ xW(*MNbb53*!t|&h#yQUz?{@faaNl%-d_HgSUtkF%)=zlG^$yq2P3n9C{{b^Cz8e4l diff --git a/RomDsk/ZSYS_1024KB/ED.COM b/RomDsk/ZSYS_1024KB/ED.COM deleted file mode 100644 index a0f0f5410f0542e3e6d05bfcd0fb361d84c73f26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6656 zcmcIpeQ;dWb$?GEyV}+6YTtfp_w8l(tyD*PvMpG{Vn0hOWLdI>^+6`*?`@E-N_iMi8eDe|x>?I^7csm4iZN2H;) z+~2uxh1Ea$XEft|_nv$1Ip>~x&bj9tTR)dGU4yr68R}iPeq*Mot2uMSs+(6W&8+QR z*SoQ^FEi9V+}%0UwH|=s4Vl3qe22QbHVzJL$@JXb*Vow7+t;1x-rPI9ad>H_d#H1` zJJY+daiDushE^JNU3@dW!=Ti;wsmlzZ%ank8?(b(hBtQiXPwo7!Ht>DuCDIk;odda zw5D@IV`KSuS<{x*f##0Jfx%3FcR$!Rt^uJ9nQUV=)44Izc*CBg+|Lx3#Q!sq-IEM> z`T0c4thQ3!cc^X9C2ijwsNp=3U8O2gmA*<%D0`CpN}^a%A-^hfua8TTj5Po+VOz_- zh6e(&wo2t6B*cW)K>AW5yIQ63YL&*@R9$fOVEP8T1o;LH5RRw;LvIxm?=EBHVAFtom3Vcey*W29}B z@{)0%lpCe>(*(xQdZWS^#rmkqy94}ozt+$4UQL#=S*DLAvyDvK1-4eQ5^B+0EZ<)v!P} z|FAw?9I52*M72>BvQ18Htu(5ni~lhP`7YMsh`B0>yZzR0yn*!s`AI^?VoqbuSqzQQ ziQlRK4#xAn=3iB7PpRN=LTJm)rX>vCU4JU)W9i}#EBR){*rn!ntGqInE`GO~Hc3-Y z(|0;5wqQ^%ww#_LV8|J#i%Y9CNy?^}mcc0+4$X(miYlCt_r$H{D*m$&-y9)gQ8OXH zn-zeK-71thSp>qWS}RdyjS7Y}=2R6)agRD!kp8;ZQx(YYzFAoEfQfOBn%kusfRZq0 zg)py_CD1e+$3ZAd_n7IeF31XG`66+~oTN`-;j@^_*|*Fu~gcWHUmSjQ$Y($}#il6*GlIYb_? zjKF4wRNIji$nfXH(JWtpz%^S?Waq%M|fUL_dzB-XE z{*#N}nxG}a{K!R$?c)z6u;_q*bgmuF1)tx>xlwN&ahG>*G+%WSf)gQbHz(aVf^(BWR)*eTUUq2y#w}-= z(#Q~^*Y@+*f`L{TJHn!vkOlqz+U`iIyxVU!)fhDn%{iF%Ld;1Q|ELCX;||LF%Y5e` zz6jv6B4~A*2Wm)vGJI^Y!o(qW)bPFa;$(Yk_ZmJ?60*emN#kj@Izn zxb>}?^3ttl(nCv)F{6s*su>0XE$#uDQOVj7h9P$wK3X*l?Bg1}h79avN*EYf*4s5C zR4>!3S-)PzX8BkQ&i#1}TmxG`_Jk8CAh$39$ffr(JSEm&mZg~P7h!d=Rt|bJ56fRg zkb(VBkm>R87ejnhnKL|)#>4RFYUz~c-Sy)K=KWK5d8{4}R&s7e`=kpnz1bOhCCld= zFh3UOr28*<^h!1xkQ_nJd-!|4bnz7r`PfXHpN&GBLQuyzAuj(kE|f2iC7pXO{i6q` zv!3x-M?7T)!{+r~N0CB*%e;>Mpf~6A;+@y3NSTvG-TQyESXMA8)8(~h7f5b03ts+E zw9H_$`4cbyT0q?RRxjRViYB8z>qlPWW)%v5oM76`2>Z?g{T}x@Q3Pwt{O}ij3CnI^ zN)wYekolH=fKlPTGe$D*YD>!m5|1a-+(&S!JlhC4j7`exEv@DK*w2 zgx^SGuXzKFk@4K8_VdeL8$lk=z?xbc309;QuONPC1f-j8vb8-Ru}7Wu2m^B71NTvS z%lE1Wkp0vGA)nF4K+xE$;yYP-p;q4m(x5P=-e`Wa*4FL^jr&QA*J}&1jp4Lkki)=> z0o-tofW!l1TN_u$^>L7Ru{K@$q!w@3rdnfMJ$FlPTov$55Y~^FfM@4@kl&}?-!iU0 zpw0$7;?xh)9C1SbhKi8!1u!NA#zVmH3XF%v`~c>4nCJGZwsuf}9swx006HWAD zfDQ}LV*rH(p>K-$A7dU7^KXgy2jBr+hYD zXf1&0;xBy*mkWgzB(ahZ=>F8W?oZJb2gJNCMTZZhW&=r@!&KA7h~KeLB*nHC69~~1 zRDm=Z$&%Y|)9cjXlbdB;@3*yj!dPB;L5~AT=}~8#=d{mnBhk)oS1G|6LEeHyR=bCO z4&rCIrnIZ_R>{HL?_WqCU-s*xxVle#SmQ&EdrZCTmv13n`dwcxEiHS_c|Rd8_|f}* z_>p{v$ml81`;Ae_oi5J$Q`&Iy1<$ff6uM(#Pw0sg9U0?D!luM?NtjKlP+dzAhDZ6~?fLj}((g*cZDz)zsWI0-$ z&F`+$RFXKA!gsPXQm2nV;%y5OLoZMGAnrgNq$H6>Akv6xs1Qj_nay<|AVeC0x3JVW zi3KhY>oAx>0y z!>c~5%ikx&Mb`1E&jxb83Jk}TyMneBVB;b?p4t+$^?)d(Y)t`BVbeQKw$2qE#_Yt& zR>VPD3$bxM1e_hgbn%&>5n>nbwDD_eVQi>F_V{v84`cm6&^E#VM;Y8r3w|YA&$Kw6 z(t@Paizj%hUeP0LR>$o1#3Q*FyEe;47{IfdSHjXPb{a8cIH*BE;cU7XREUxc;JNFm zGO(fw0y(~K;xH=lLk^B7tVyx;Bold5z@Pw1NCs79z2yx9N;+Qrb|?E!xY; z#Q^^vltTP%1<&80nEEk|hp1$g@HUA&4)r(62Pt$dKllQVsRa3~D+&a&szX9-{)SKU z!N$eIAYQp^g=miGt_bNq1W)--R8QWI3bifgO9^2B5W*}t`(cTk9pwg$cV7r~2^9_x zl7H+C6_Pd;5E53~a>tTl|6$45uU);0gdB=0r&V~;gwp_qXC7DZ(-1PJ7T`F6odQoN zMftpB{tGQpK2PbM&dB|j19d60J`3rM1ft%+az=ZWGHnIj_zE2Ak+8g+DLN$_XJ8V! z9MhM=jC7TAnLtg;vvaP z%fv;7W$h0Oru!G@d>(S7e>Mz`lscnQ&NeaYR2VWh5J1PLiP>0aKvHT8aHE*Fl;?PT~S^6BmfSY=$Cw6FZPDeHI4t%#4jdJM)W2j~;x!*cCx5z-#&= z7s@1NLSgIkFmf@0bKu$iF91hPQtl&gs9K(xGj4?LIwGG7W9_@z>4C}KM&eJ(<`(L{NtjO6)JqWJ9y-N_PW9g6@$`6#+em|79K$|X#0 zWQu4_kyTttl-`KYO+raPKpst}Bn=Uo*jxG_VqL1>B^1h4(Oe!ysd+Ji^qh1^9RMTG zCiqKXd~hZy%FVECy%)jrg@_X*_lfE^BjS*A-3+o{X4NfGBEny%t8qFBE73{VQ)jFs zLcIm8j|v*6 z1n#k@426lBu6QOYl6_JrF?tC6P!p5_PWAm^R5UOU>VF>P@7G;Z${F+5QD|jB1)8G* zRLkgr#7G4wUO-|R9Rjp(FmRGgAEPjhyt366y@jvFsGRnhx5TKz_VXd}6=j@cZiped z2FPlR*(kM~It=&|sIuB}Rc!vQ(%u+^ur-72L*4~DSk1Hog{lH;RaP_TdJfuh+D4zm z^wq-lfn=;=xpt_B06^)+;gVa13nH z#s7{0MotD50$`)+K~vAEFe~9mi;AyQ95LD!8a)u4TO6_WC8@Tv5d>!8Hk7s?+QZJN zLnu2gHyWoHga`p6?qJrvaVl>*nBGzDh2=V#NZ{v0oL-19e-@|QTVPTl)FBF?kK#rr z-PAjAzA_G;4InEXk#|TyP;|_(Q#7`yQ0jn7bg<&_xUI#hChnf#pCmmTE0_40VK?6Xe^noom5#2N>>u&$4yqCtkr z)7I*sSaB0Og1NO!jJ_A7Cem8gieB^CmI;9)Id;rn0*!7qj(;#frf?_ZQDCur(Kdh<{oNJzau6g$9qhkl3-x)4i36J_&yLmccZ)>79?J$Nc8`gnegBdgS=n!+*Zh-o1UGp(lBCES!9Pr#-erN*>1$aKboo=fe$uv1!(J m`PTc*NV44wCvE8u^Oq_A_4Tg#e;91W|9{Y*gOU6L{{1h?8!qes diff --git a/RomDsk/ZSYS_1024KB/FLASH.COM b/RomDsk/ZSYS_1024KB/FLASH.COM deleted file mode 100644 index bde88e28a46b35c0a94cd38f04d7f6f03238ee92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12000 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 diff --git a/RomDsk/ZSYS_1024KB/LBREXT.COM b/RomDsk/ZSYS_1024KB/LBREXT.COM deleted file mode 100644 index c0c950e3bc93d8e23bb2c375debc83c719373ed1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8576 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 Xjkg6C+_HFa8FqO=E#G7E9sd3YUd-_( diff --git a/RomDsk/ZSYS_1024KB/LINK.COM b/RomDsk/ZSYS_1024KB/LINK.COM deleted file mode 100644 index e188fb92b474883e1fdd1cc2013d3ac735dadf0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15744 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 diff --git a/RomDsk/ZSYS_1024KB/LOAD.COM b/RomDsk/ZSYS_1024KB/LOAD.COM deleted file mode 100644 index b9601e002cc09df45e29331795412a0f0be8e217..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1792 zcmbtUUu+ab7@xV@Kkaq)%2KFuYT3OzE8PR3=jAMGuXKC6&A<>jV zVhvbnVw6ba!3WR>A@RXzeA7rmeZaJv5~j&SX(A+j!3QZZ_h4c|l&G!W%w1D`c5^p7 zzu)ise)HYTHx~{@jG}*FG$`#Gt{K~kJx1^D=lixBZfRes=9G=Vt9njQ95%cl@B`aO zZ#T-m;~I|Zf>brqZmGH-q8v9}svPoyn&Aj_(T3gR9JAl^Vx|sn_I`E2q;8qP@N6o7kX)s1b zr&952hJOHvs(&yjdg-D+Qt^!uKk#5#NUHh4s8K!OaH$bpEc;c@*jp-lY3qUdh?)rP zPCii0DDK8|?oQN+HF@^Mv+Yq4KPupWWfkVe?gBI-)hg+_1>SJ+Px_Ckc38kw*((v9lz z2zynfagF^DiN|1|W}Hk6w8D5}QHk1da?`mJ^FavP1=_{u)NCgcb~{=AV=Fv9t4BC! z=M!q`T+Cbj&*@h^*r}&$i9fICS>hV^-qPdx4D974F+z~be5nDKedoT;4*5eHl z_hOK&PL48BQTda?=Lzs>XD8Hbf>5(dP)`B1VU02bwG}A6N$Cj1H?GM^A)6p~h+@(L zrvPt)5NdV{{50Ur0&f%e8Ni)u7M7rTfO?Ef%P=Dt3EQ~+eJ4qqC6V7kph-78R zeQO7qjZMNVmCO(TspJk4_Da-hgJ~PlSEKB*x^zkcjAJdWZ}X06@Marf*VUyZDf~#% zrx65f0b%h?DO{3x=iG~Ccaaq|_pOAd(R?%C9qF2eJ_+wiHi&rPmV_PNL`^xLFju4C z5}ubD>)5dtv0|Pi`$*CzQ`vrvH)@U~3z`{g$tT#Tv|=x4au|`#EXgBQP_w;!T|*8( zmF-@l+k~A`>zUK3Q=mPB@3GloR#v%3CmBF`p0F>~Yjaf@jxz}W44xy9Sl~XZ3vbB4 z`0Q^krywI7mGwS?I|;j@F22v%4AjP+Rblz}R?xy#8GpfBg-t6^6Zgy!oFjTc;|X(e z9R17da~aQwzREW`3EvW^uZivoWH-^WK>gYX^er?fHTP%}xS;8cQaTj8pKqnUimZaR zrEUU!U0pn>n1fm#4V;75jinYAA@N1caJ8j1= zl#h--AkQpztN5}gU|JF6%@}2WDd*vN2=Ce9uPB^Zc1YvLHfaxO)O5Ae@CQ+ZJ&Cul zi>mEv?3_wNghH8rn2ac;^<$l=o_Ke>Bk{o)h56ZQ<7d7Zqc5fo)qAwLi>lx*ji32s mjGlO@lG>a25JEp5qvPEuaS5it^Q_Cq&ZMp$uG7T-d;S66tN&L3 diff --git a/RomDsk/ZSYS_1024KB/MAC.COM b/RomDsk/ZSYS_1024KB/MAC.COM deleted file mode 100644 index f49e835a181bb857bfa4f40c77063233894174dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11776 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 LleoA4|BnA}sttr@ diff --git a/RomDsk/ZSYS_1024KB/MBASIC.COM b/RomDsk/ZSYS_1024KB/MBASIC.COM deleted file mode 100644 index c9ec3cd39f6cf66c899bd0eca759de3275045991..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24320 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 OZ_b|!NSK7;-~R&C%=L`` diff --git a/RomDsk/ZSYS_1024KB/NULU.COM b/RomDsk/ZSYS_1024KB/NULU.COM deleted file mode 100644 index fc5594b1e2c4eddb679645296eaeeb9d32991990..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15616 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 E1<9OScK`qY diff --git a/RomDsk/ZSYS_1024KB/PIP.COM b/RomDsk/ZSYS_1024KB/PIP.COM deleted file mode 100644 index 4b2ce4b689b9be798eec94cd4275aee957c8bd07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7424 zcmds6eRNdSwZAu$kD1AQWHR}jWbT=pq#zdrGKQ#kkby z76jrKwAK$0M6Eyw1Q4nyC{R!bxEIiyaM3H*0OTclH+6zz_yU7gJ>;c@@p@jxKZ678HF zYnwhJ9=M`qT%i8itFN69XlIUxM56IPbD(8LbF8@~9*zaN+9EUSXg0y|XlG|zWV+K{_rJ)Z-LaN%UGojmSUlWX zcLSt#f<;FdJnGsaH#WDowFbJoz$DV$aRd5d;g)EuH4u+R1MShs^oumyRdwM=Yalu; zFs-dUJR#5$Z@==E>*`u&gj;5Ib$4VG#dPq9r?Clv`0UOwtc-WZB7tZuJ?A3RY0+3m zbG&Xw_-1$+x?@3TZZtMKz~hp-NLF1-w4<&o-W-bu$iQjQ?nrChtnRkU(U#^2jkUB# zyTXCia96x7(j0G#M$!x}?`Z1^#3n_t`r&rCA#la)Ns)2a)hP;1PxrMd3Mqu&C2BzzN`2!jIA&Tx!No>P9Gp{E|Ak-d6;4RK;wj0ju&bw}Az?`D3vQRpcI$8`U_R#jH^n&;R5dQlnVgD9B&> z8-?1&5p}!7lGF2Cidk(n7u(EAyRwfXZZ z{b(Ms0ld$re_Q|#Lpdi$`{Z-}11vd2Gt8~k|HLR)%gZ-^S#6%I#>5knOd=}m=ASQd z7|GG<@=Z^%`jRx_9IVQRW;B5d;Kp54d?+U)sU=_R$u(cK$$2o1%*fGh%O}ZqRmd+% zjidUqd~h4`_Dwn$%0thFzDdVs>}APi`QjRyhry}AZPJKadpzHKzx1NnLn4ehM^l>s z@F{!p#Z6q)PSz-@I~hwR3eu~To+am|RT#>_YM+C@AgP}vKj$_iGU|A_r!2%gWKZh@ z#Wp}fKNsRH5MSeZ-NwN0Ko8e%KteO()g~7}MSXbzVI|u21umZ%cBS#5ygs;K2TOJp z$TyLGu*t41Es*CDau-8PEG&@kVvSaH9w8W+hY|B$pIKb_FRY%BHQ&k2Pb>FYf%sO& zX+zW>+{yIU^GTFjdoQgG6eL{GJ}z(xW_=~1GjW;J9*B>M)tjP>!Wr`6Qos0uyCU|1QVh0baxLL5>^1>p1>xbgUVnIOxOYOGln{6Lk&a5=#B}8aWvMKkm z)(&Jbmr5%Vz(?(1!TXsSVepAXiByS$S~TV{eec2jMN-+ zy;a>Kjf@U@?1a5;#fs{#JVWkb4~&PX@gE$+_an6j*{O$tE@D?6V5gOzvSaohK(#dw zFd(%xKV|w@yCDlg%_d2)z&l8QSKH*DBZ;ct`Ozj)3A?gM8dgN95~{DVQRwT|;4iQz z24AtOXvM+j?Be!kW^!F9ea*AUOG%vv8QMguzEJ6x#6f1OSul+RXC+f+NVPRHBzYN0UdD!c z`{b1j$zp4vvW%9cSFoYm(=VMi8~mirG5ZEOvQ{!oY0wuIUeZ8a$yn-8p}3zE%KIKnUI?Q+N8Q*|c55QU&tLHiOCdcJ}qDGpaU+HBX=9vOOvPEd@)t5Lj z;L%H9rWd4?4)PG@8JZ$}OO`xv37nh;Gvv9K$OZlVEV+0Iw4}idIVCG_w>u^}>KzS^ zs~xJN$uZ5*>6qjAv15s2rQ>nOvyLr}J&r?;O(AOK_Yn=zI&LB*amBy%EPee z4~6<7XF7v7T;B7gKllhkMpqv}7|n8~p$+KMRj2$2!;B3*a6Cqni>PA?HYj+_b`p1| zw#>;d5{CRJP?fDQREkUhrEe8cdInh!b&aT8$3 ztLTWC%Z5Y>nR}VKn5`NcT+Gx(>^)&@a1m1%a$q4-7Q&uwPGwQLSj!Tn?dF^W|q&27kpoy`yHUzh*U~m{`pyLQgBdV#ByUpczBEz>pt@hTYf~vt8=r zY{a3>b{Xmp+>v&r@jCbC$Y+TEmV-zdq<3E3y`OimHpo76pscr)Zz4ajfJsMYyZL5Arst(W^X-wF?C`NKES8 z;51AVxb^CMpy!LYu)iT%<^Z*MI9lp9KxH84&Lc%$;Ze`~n}X;42-6>ULUscjG4u_F zrg_jz86QF7#Cf_RxR%NP@HZIdR5w7ZcifYvy%Vv!+@stHyI%3I4|-57ocA~8gq()DmKmVq%@rO)eg<**tsl**o@iEu zbtLys9_5+LArIo7kZ8zjnYxZ8w9h>9xBdqGzo=;xLV|%C!qgyc38$n)%2Es=N+dHg zV!|!v7oH&QxB-n7>z-mm-ar=)lon8G7q;Q}#(=z=w&QNlB)f{KEz~-S>BcXZ3rh5B zim8f-uwVyMUc%9PO$kfhS8N_DrRh*>J(>3$KA}o9iPW>j%5x;YliBz{gSNC-{+h&n zgAa->s=G*HmRl;tg<4aIVuNnuiuPWy%WAGJ(LX4L0%`sA-Mo@fwIf~>R!BR;Acm@< zHo=R)?JpT>o*G=wq9Na*WWLvc%31cwabDs&M`K=dZwX4DDWrI=q3`t)1IyqP?Bjmc zI10T&CGu97@S0cNLhHH(j@<&DmbJ(mz(BT&mMNZtl(_{f++Xquo$WkBtnlhHy&yvI z*Y70}7HAH!8?s{6tqcocsQv7uCD_j(sX=SY%gA(-uLUlb;o`rd0KtPK{ zGW6|;i{G#%@{6>Lb~K69{1W9wTE?~n7Y1HuPM!h+mjh!XmYR*5^aZ)ca_S0$oBeWBQNlg)RU!3AM7!s{?p0}0FK#) zLHdAxSE;g@T!@{Z_OTvyGaJd*4wi-(Mia@srD7RRYJCik6S|f$gvY}??Y&a+UXvkj zqa_)OCXqT@iZU?l0^FeevDA=v@fzbLc3QHCld1kk4ae>u&#(E)%WTC+-Qd+_075Hw zD7)D?G{MP6jAC<}bVTt)>dGHOYncpcR z9sqrVhs#V5>?%`VMgBfcvqCwBdAz*lAS3bvOnn1aDwN2Ok9+pt%j7rM6dHM*=^vJv zFPDS!DrAJ5a`9G+SzHcooRzyAhJuy6m;A)LCX|y6g7R9r)-u#R5IMD6-b1RNwG>SyJmLNd`yhYHzrhz(7qfJr@5 zt`cm}x0$XL$$@fQ7Koa9PTCD~dHHJmaLFh~02&!ndJGtcjdlCo$b$3zr-6N9-sm^X zIc34ah&b_3Dp;W&PTvvbo8gmGb%p#U-9$D@XcIuyH(3*9DkvPGka-g!bDwY-@V8sgIwutuf=^K9l}_kC$FPeS~i zKokxzdZe3-7lzh-%ry8s4>OowKF=3G7)uV zrsAZMa*-AFpn3;G3NDfgc&`0xg}et3QoPXB&R2-P<9x<|kLRdGbW0|b%9WJw{kUe) zNl&M@TqzzWvdkGhxl;Tiw?=*oXYgBC_i&}^m4XeD{=-VSfzBs>V@6=zL3l&@f#`>o zc;lg)^Q9{Ep^QBbSBjq!NAkjFrSer^LFO*X)Z=F>;g|xJ{IpX2G0MJ=Dn*gMT6(Qf z9MdDS2a}azE$^9V6|c&@=rRNAlXWTa%jY#McjXDGNW7XhzSx+h|Jq8G^Qa${b7<6T z_KzQyzwX>@&-J>dg$#W_Y<==QC5~`hd?= z%UEi_#}8z@v90r|M7!6A9f!wRgC1z3biKekqlve@1R|Nv;!61lVtHJZawL;PS70q_ zs?;NFD4*wU0IqcIK1ZFN%iz+>;IcH#QZ-e?TL9Yz&G4xSC^4@J3Y+&-vDEA;+|mh3 zc2p^S5|zhYRqzV{EVq7D71Y%4timIolEBGdUulS=qm&}o`S&9?@rRP5tmZhoEO_~2 z0=@FCw^Dp-3;{bd3Tp8v^JwfGrB@!$$Ey?#nOI}yPOHADisGH#aJ17^A;ANdFZ%au zpHzw0(t{zw!Qj+KiQO3sWsueL$^^Mrs635;K!{Y><*|sqYzR`A@b_Wt$bw1o9ke## zYUMa29%muZTng^jRf{b=_}cgz@k3PBDK0&IZ5j^OUH4)&e+RcndVe)8A3+N)Kwsna`{io9YG-JU zq-kbK`Uy@m69wo|Nj)Yd20y4a@Y=4I$1*my#D z7nxm>;Q>628)P+qo9E?p`URQ?LqAJh>8FQyTx+Au7>4_XeUB~n`kq)|0A99z@zQ|> z2EC$;J3VgPF&ppPzj)~znNFuR-_M61JjfO-XN#TMB0r~jcJb1U3k+o5Wos8NeSU#) m_wA9|X}-1K3}o>b!S^gcP~*X85!S3Fk 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 I|Fz%$1St4NTL1t6 diff --git a/RomDsk/ZSYS_1024KB/SID.COM b/RomDsk/ZSYS_1024KB/SID.COM deleted file mode 100644 index 3b073ba56b94c4941177430d541180dbd706f15a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7936 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 diff --git a/RomDsk/ZSYS_1024KB/STAT.COM b/RomDsk/ZSYS_1024KB/STAT.COM deleted file mode 100644 index 1de359f27a749da7d3127749f3720426be6fea56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5248 zcmc&%e{fXQy+4QSX0yB5O*XryHCWkucNMueNMxmXa%<9wiH@{{&?G={LS;$TuoAMc zyO3f_z|m@dsBOn-#c3_J0z#>+)B!Zr6!zNaja+^1o5!0;$9coEFt*!Hbvk*kzUhR1 zzUS^Hsh#)t+ktz&-|zXJ@ArGYKTphCT#BM}WOnV#riZrYm1P5(vU2smtX{5kriaq` z@9Qx(^sL1HL>XUiY*-I`y@M0~+V$XHyVB@s?q)sBn^^DWUe>v$ z2XMCnTmh~CS9D!z-GUIrLu}q!R|~Cr*a0v{S>BjW{II=dor6G z$fvUDTs}RJV=bTl^eruh!d513Rc_yxPvN!$ne3p_k=&IWNay#l&!>ko+i1f%KfiHH zLUB%Xrn9Mmd?ve3xnm@sO{a3KV|!{~2ke3iKfdLN&owJ|d^w*Q$+J29_TkLH4%RCr zVY?4j?!YeYvlo&inqx{jr?9@%&Ry_CH>Brw7|Nj0O0Mcn<&`xfgXw`JOd;yMxco?R zXKF=$-!A2P;>Tx`ay|L)dU7ZoS9q|5yy1H4Qg&cVeylj)K4$dJ-Kq9CqpxzY=7 zr@&AVLXn%l4nwT_G8v^SIkHcYL8XvOo^_eLa%X1G$RJaC)Ay$kXLuC%aWs*amG*%F zC(KOA!AbcH>FkDd$6o1%1x9bmW?)&z`sOZWV=9|VXGWA|J*nM$5XzjASaGw)RK`}v z5<=}0AK8C$%__xi7Z17YqRaf2OWh(`xY5rpvWxuijIo7XQ~;d6>&MYz)@9!k01I|! z+0;Roy(j|Ae#F-tEn*!H=n3(WrN+c=Jtmg2QgD&IHev+>_IF%CA3j!4p|5(q*wwUK zkBc!#dB+7{9mrVXvA8hLf?+8!*w4818$@T9eadBp7z_IC?uZ0x2~d|o%QC4YNLo}~ z3e`j@Scm<@jlxowOHva^p)!f&G%SD{rKlB>?Mmy7pT>)T*osoFeHjmwrGNZlsBf4F&O?Ba5nD5n4!bC5m< zt(b$_=Ahf=pjHQp7XNczX$v>sbIj_Ki=__0JxQ_}H!=pqD2!cYsY4>$lxre4Y)9_4 zvCzH3{zK&SRMw*pijofOKtxT89AWkYk=USEzghJ$P)o6UMH{pKEpmGD>S3Hd7M~e= zLRx}!PkQW=E;HjHsmw@=$(y^8r)Is!Qg>D~>cb+`hj`o_DP79Nvp`Fnx$OUnOrP=0 zBc&$VyHBi(-&xhPJHE?&6f#D{Zq#8cBVxP7{=^=US;}HL!QBk0;Vto;u-}bL2WyNG z5iNe`(Q{M^zjcGr*dwCTye70;@Qko?o)Bl)ZN%Z?TOK_lEdDY_EnEC`TI_GSyQ^6U z*X17m??h4eQnEy`OiX{FM&C>R92MRcwl&?fs?buy-`4DQH`lq{=r(Q?vsb5{sKI)r z>Jj=unEJNn9ZT#LvzMnHt1gEvMOatG9`LOy9ICPS zd(zTd-IML);-G;Kf1jiB7nVuv$%=Q#kNT4c<};DlQ{@06YU-0>#{R2}rR-NXc==Tl zY~JM6pCb32^K#E3NDVUktjEC>!nsE}ox~E)YDx1;+Lz)ROPc2J_DQ-+(#LK?yqv;y zHZ!ydqa5sj#FkLRN#f)3WT2vjNKX?9JJhOD3DWK}jv^)Z`;22~ zSjP~-n|#z)ehN|c>gpvmd^Ix1mv~Ohvchqn@l$b;p}L4+l>wr=aE;%nVu=$%J&q$y z(tzh+fbe76NwC%23qPi7`Sau@_K;Wv-?{CcABGpX;p{6Y?Y_*YroxCgBDyS)D&#L{jS%+TH!e=G{}ZK zjm=`Vb?VQ4{u#0sM?lk$%ixe3mbl>RRd)j9JBhh%OnswPKk3Zv zlbG8lg_)_9No%P;mjkK(#@H#LzCg}pp;J!Y{;gJj9{m{Dfyh@9zYv5`KYo5eKR&gf zoL>-Un$VAtJm>E^6)k>LOY*q!i%KVcrZ%_(oq~$U{(?KE2)oij_U!$VB}?Lb?8coSs8ajGY0p(Rnt#9KhPzjjFXU;_VXw^*R`!UeH>u+QZ>! z@pl2^f`-bO4p;zM6Bjh|g8-gk2+aopduhO;q45$XMn6-xvzE`Q_u<3)*<7>ksGo1v zlLu+4jBDzf8g$^`gl4>{HS?E5XhNI8fN>snhl2K&usW$>c>1wSOg|pfCpCIQjBDrx z4)}`Jc-}WLwJ%7Fe)FNAF{xejqwOZ%)BxU=nA8egL487tLyOrQgraEi1QD8uu(eKq zNdSn$cxVf;MJj;5Mh=JSnGV?{wVF})KHMyW{ih&5N)dC6#yiP525Ed;Xx_^JZE{1&D+LC<1I{L*J<84SX}_$umHvhnhxOq4Ic+`9#dQ%1{1Gi zm*FVy*gJMA!fPFbyRc%Ak6k)8Hz>|av-vpA(0TQBIJ`XX+pgL(kz%oqXp87h^%&3; ziPn1a!#d-24amcz#s8=?TkGd9IhJ@s!`|$o!lxW6=gcdEX1t-Dq0KjtN>fI?G!=Iv zxAAdYxO5&52lKr;n%BM{N))j``WL=f&&SE_W`CH{@M__S20ZYv3F`(!6ozwJ8&l6| zWdc&_oJKKvO+$E_no8||}|{VF^uz#QzM$5k`6Eicuacgzzlu4!-@+PVhW z(7-m=MV)t;ugr>cf)5&k%c$j^3nR6n#RnUL8ql&^%?CqhP)Hq02)JR+EB#^ncdlsh zg$BE!#sagG5AX}*=od7+2h~r8y)q?!UpB4n;2E-T)QpBJlmo}+D2`1FdCHV|p0^t= zHTNZIsHO!BN<-NEMq72;n6VO zJ1bnF&4Q0GC!7bu7?~G)(G6#eyT$yU%+H0Xz4NwNYl(}WknbYd-Cqs!$0?UEYgOAx ze;d`#Bf2g7E*fInfn$lcv{_~9f5L{X&3X$Tgo7){*>7oGSU|fiVQYoogy~68c_|c{ zBLMkKl|Ac@7MDgaU+e+5xje!@lBs(aQ7TWg*_y%~5xgBuP{#w7$(ZS;f3}-hmX+R$ zq+0wyCcOCTLssdYPq5PBuK{_qf*b{MWXS65LbTiJXSC9jTIsRxX1;o8C|o=g@m~93 zYvJKYWm_w0rQ-7uZ)@Rb#2WJi3NJ=1`LqrcUUi_ao{bLek7fde*CQ5`edT+Z`+qo8 hHsZTbb!f;!BVGJGfS?n{_wTts{-aGLYw`c@@9!f(#y9`~ diff --git a/RomDsk/ZSYS_1024KB/SUBMIT.COM b/RomDsk/ZSYS_1024KB/SUBMIT.COM deleted file mode 100644 index 2e788827b2a45aea667092573f2263b67f9243f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1280 zcmbVMOK2Nc6n#%KPeBGx|AC4&ej`ttbd*wOk|=nPRj|^KLR^KUpG_Mxk;ayYJmZYV z`uHQu-INBhDqXa+gl2a29xys?v)EWAUQ*uqpOO&iVF=1E*Iy^l#W`aV+ zbjHed^&kF4+os2CYg{>QIL3tOLQc2vd8=ZSO9h&>E!VNjG+Ts(Jj9`gW9D7ksna9V z<+74BEX#Ijwro$Cd+7<&C_Iz1%JpXz8KJ?%Z6d!V-3>mA1m}dHBL;5}U;c(nCeNy0 zlMN{roCEwV$2S1q7n~>B8c^SJ>N}wB-===#)DJ*C#H-dhz6tnYNb%*LIsOUoBOL$A z@h^aPZcA*EsU);ce!c?VFZ4|^q-~PU*6PKGxbx`(Tot|jEZ80ZgONFMt4nPP@jE&=2%MFpANPIv5gYPA2KyQGuiOr8c|71<5`B4A zI;&Qsez>^@wsr*XkZ?`J1vUz>xDt)&vr<*BNolPHH!!~({w3l$e&_5Jo{q?05!e!N zU%R&%j}v^E#e*55H6(Z>ljsdeYa+G)iwJf~ZLq0d2Up1;xglK%M+sziX;_gea0k6% z64V3_)Id9aPrFX=b>16hOTxr#zJ~810k;jZ#dZ(5F5W`jDqWTLddb7C}nft);VcKm$t1i_JrduzeEjk1dm)J8M#_v~Q*R zaQEJG&OPTl-}&wYC~8j-@w@Ny_RI88J}2u#!~5{a?&jTIA#}^fN5?1!S3mLC9?CxD zu_tMJFKz!s+xHk7u@#C6$W##mhG~Bz-@w{!T=^yFVJEzfr^n7a`3!ZnWBqg={v~s5$*8cguq4nGQC*&h&Wn_XAV5D>?m0);W(;= zM^Ld;zRMY+E(S-?^6kb33PP(t&=3m?56i|zu2Q9I!8lsZ)gVi!6`-i#F%*@N(^73< z{G*ibIcTfBdX)awF$V6x1%5`SxbEYFQi|$`!VqPoOWQBnbQ2Z@&)G?_($FT&O|r!kuYx&(xeRGnk(m$;<`4ve3YNP7cU zNwanju{BVYYp(ly*8uAS_Rg-OQ?s)(v*!+0zGSC59xiY;Cb0)OPc_XJ#T7`f?5Qle z2wx;bmp|aFz$hwqwEkKMj}b!05J+Q&dL5=29!CWckXzAF!e6n|a)gDuoc0Q}-9Ldg zL-VJXt?O3I3!9h#8X5O7fCe;RInttY=H`#%mi?M%zha!k6ZuRgPx|YGoNw}UQIpM1S(EY=8-GM~xKF-d%3Tp%hd=#*(>zaWbkM|6aGgA$*ax?C=J0uu-xaA0*c_#O(}=ix2IX5fW@>@ELik18Pk zH_Iy=(h2|<=M5PT4G;7T!gng_6}-aQp}l)B#`Dpfu4GMYPAUdI)YCVBRoO74wER~b zZg~`$)-Z&+i%eQm-jT7YrT!k8R8wvfMvRZvOZWG84ZihcVEcjIzMdFvALttFAA(TH zfZW(HrEE&lQvi5he{a0G`)EHw+kchUp~(GE!;qMrKwd;b(QL)G8j|JOf24uwK6P)r2% JR0IE+;ZFpd#_0e6 diff --git a/RomDsk/ZSYS_1024KB/UNARC.COM b/RomDsk/ZSYS_1024KB/UNARC.COM deleted file mode 100644 index 8cc907464fefc5bf64db6ef689a1eb58346d2a88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4736 zcmb7I4R90Joquadt1oM{>lJuy;QZDyWGy?!xQS4NC7+N#8tM;fLueqx2z#-Gg=8cd z*~EzS?&f-T6K>L*`{>-YolGa!>9mt`CwZ9Xn81JaFW8AP4clg5CvD0Mm z?%m#jJ>kAV|0xl-`U4_v8I6X0ebG?ZWH9WH_y$BL#>An1=V4#C?-(!~s*8>dAI8d) zL%w4{=yi_o9rqpv_LfoKiQ#}4aheRf-Gs;4<9Vi~4m`rPIvd8jaJxSe#lAoQD|#Z> zAH)UoptxXOVaK5$?hh-@cpg>a{bD5@J&!kc_24g5<8c!O)p-5dg?oG_MC^-T(H|WY z!#H#d`;LZAi6+Aux8if>io`m1fd>o05RUYPMKOqneIpSuQvI-4a~I@UxmE){J_1qK zDNhSwud{Zyc$(`vT2@&1jSY*Tkthal3Ve8#`ajvhsa^Ps*#A%8JTR53*RHjBerP_T zq4m_SWns6|R&X7})K8S2xMu~kbrgbUry42q8&bnsLKD<}4v^VSz zK9q|!nv(cqq3{V`H0loyJd$-AevozVpx8HrPx%7=et&eVFtrb_xz%+7>(v_?9t-;i z2BTQ;R^uH{IqbE{eJ4IThPy*Y#c&jR>ToMebU!NpJ4(;IW&TiuvJp}v@6_zL&hpn; z0+q;D&2ms9|47TLP>Z}k=F0^=eZSDbt9^GOn zIwfB)F)1_L?joA*L!;Mwf-bwA`g*FfE*$<8=&$ z<=>blVy=dHmVXX8HN<5`qTfBD$xvqbTO=;wZ?cz|Mp~G&BYptcz1&YAAm&pgMyHxc z+=!5vb()9-Hc=H2pVexOH=51nhWA)WjzD?@wUZMfHuVX8y}6@;lJxgw6a9 z2vQC6#iv!|X=t5V;CrWtJPBl`ow#yLleQU%cq)O58l?$|c@DXee2#=r-6%oPS2d_n zf&mz9l&ErOC?nhwGZX>M;@Lb)5jP4Qm7vNSC$IEr=BJZsm}*iTe=>p1R{9fCT@#~! zx09oQV4G)aZ~U69oM+>yxhaXVFfXFywEP_s3{Qc^RAPqNPhUBrv5sGyiOb~*2`2~1xS zo?{+kT`^geTL6+rBWUjZ+y4j~H>Pg+$54&_fqJML8Ypkjk-;vH=ZP(2(W`a+%q^dk2(BK+znHALZ zXI#cgXC)U{l^`-$sqUuic}ekVrp>9h^&-)f0I$n((0<*azFbelobNz5ZG0jl6j4Rb%LKKmR0gM^q`;% z{?7|EsXqPk0qB-k=ubDB@Le#Mo}UQiW}C1fEngw$9h*}-E0(sE))!S(#j9G?Si5~5 zT;SfNRSEn~YW~Xabv!B^*>{+QRl-LN_Wr!Cek1d3BeC4YZ!_je_kO|Uc#{9Bk+TbW zdw^K(bz=^SBI(fOiM9?zFcSv;oWZRZ$ORq(Rxj}H8y6}i zW91n`wx`t4P;D8#scQJd0C8l!Hj8n3VrqIx9ya6}@jY;VUPfr@-9Of++1VzcV|MfG7W&?7uX{) z@kOm*X`6_Bo&J4AMa81IZCaU&Df$y0l@rUg@?YqAf&f2KxB2De+iC9A>B3~Crf$uC z4XbxnaNi3IjNa6>;Sad)G6;o^>Sy1Zt)1P{ekOa+VJ3@}jiSnwWvc0=Om*qXFTj<; zLf3=4)n&?`@>8y|@kR51lFhkzVunC%=~O0Nt$*J7%;^jGH59TS+ac^DhgZc9pyq8sE0zpQ?_9Hcwid+bsVwnFjHRP$t_g zlutKz*mz5JcO`GB*V?R>no6rBDc2XzO{FB~OK{kJ>FAK2Q`^g}sxymc@%`5Y!?fH} z41ZJfz4J40$d#p)-MRtx;+$)S`D3QocyZ8A{${W?EV9OCXg!be)y|(9B4zB9=WQv+@p#Gy(Gz12+08(gOYL zp|@GN#?1V>#E!Uac`erP6!HC;WUoumQbkJXmEZs@&toC0gv>2Lj8MniCK$O5aN~c* zJ~;`e;0zoyJ4@C|+!Etf`nkDZ;mJmLGmt>6JTddJqT+s%Q7gnb?h-s@UMWeI=Us4~ zV8uXr0)I4DU>5!Xj25|F1+#a_VmM~pb%LgxeM2aUS?Rk{8s^(+wJ^)7vVTJrvzy^> zu_-X%e2;bY!u!hhf9&07li9LLnN2|+>_b*bo-}9p;S#8@ON0*PRSrfkQ2M-D(ChPh zhgvTX`t0kO9I3kUWiy<&?dG}LNhqsF{K*_O!Gh5( zy0YE3v%7EC-%q9FR;LJd#J*a zw!ICJzYURZH}{0IA=z#|eedpL`6KUF028U9Fjq#Z;Z74+pPWy@u7(PAEW_y_bugYd z&`TM1F3EpxzE?j_lQC02%n~=Y0&LpsA{0)a@ zf}}Z(Scgbmb?F<9qHosH_a#Mjr?pig)rs=Ij9KCBLL!SOd=eB$dEc%43;%KL=aTlI zqaKIFlOz7H*w0sK2>?{#D0EQ)37!(e5kDZn1{@0GL3lFUxm0a-Zl zZr`I~cu@59i{V;;22p^nks<%^u-K1XxL&!yHw>TzU~F)pfZl{iwE}Nfp~nAivjB4+ zkO2D)1N>Wg=y@2ByKw8%?Jb?24h2hlQP&D%a{(l~u*ZoCct^3kYOb!XZY_Lq12I*cUo6?2G!30s`y{j|BS$!Ht5_6)cC=z-+)D6mh_R z!VeQY+6T@8?pmLc)ejSEvV#EL{h&Imc!7}@QWFq^1JOZr2o{HU7@1a~uHJ;2nws|b zg013F`0U{s4tMy*_KXDgj08L*13lt!S6{R-6$q`XJE%tj? zorbY50?zLb4h2K8Am0fK&9!=A>}oHV$GDIp?CKDsgQ0#Geg@L*>VZUo;vU~AxPwTu zFAAdAwa*VKFb3~kXw_eZ43F0J7KUrYLi;f75yI*~p_>f*LQ!7;_CC<#vZZg7A)Mi>XMK(b>S ze=yq*ZL?=fyG^%elkRR$n$ULBb)X^2hfpkG*U#o{B3cpb#7Pt)H$hPo2MmFhr@ixJ zlizMnPe*$5xpU{5`1!p$EIsx^h(S^LW}G^!QqI8O8tl&Ow?f z&Iwf*68;nTHtGrSYg&kTow&>}=>9o&zm1tjEdEe$Dti(42auM|qO|x$%wCd`W4|@b za?j#GglWh*Q(_1^=u9f{3{;9QWb*^=DLf;kp>*!|I1oIn5F?qDYUVjp=m`ZgAQR*f z@UR2%mBv9g^_V!5S*c>4GO=dqVPt@kBst5a8_p6b=`@M4Oy*zIVu@jnTIdnly%GbG z7rqw!CT10+rw6e*3jhJ<=II0C18S+?< z3e^VYNkXXl@qn{fN+P-fT71YSVeIT{QX~33Lp{c-0b$aXmTd~4S;%s4;{Y;3MnaR9 zR8Au^tPcHBLCQvSDRha@cTW)4Iu@X>JY!Kc03k$DxnYpkLeI+r&-cBS=@a04LTu)yzRP=@`zJKk zo+e!ieM>PL6T4L5vMNmYac|&bodn5GqM1$rJ7CNXj>9KTjhDbsxy86f(m9ndbb*&Z z5CTI{0IcVx@Oa6YZ!5=5xb3U#8CGzfQF2p2>fBWQrw~w59tLij030a9?UO2 zd5SBdI|bM^Q+CQR)lW&u(SS2&sy{>8?9@s3JGIh%P8FXv)k#fh*|+S}V`^uAU{u~4 zkirg;wv0NAmj&i6HFPSJtrYK5$r2s3CzG*RSSd5n8gxai9JVJ93_@|pI7`GV*r_^( zuA?dAqJhLSizqr-lz7HY`5D?zQ%(Zo54b76P%pl&x|>XiO8lXUolP`WVPEe^PK#ei zG@iufUddmnWF9e@1;7Ke(HP8JPD>k^>G3wFI!apoF`Q_u#iqo%TAXN<7jQk$n46-# z!j@79PkVc&4I};*M~vy{Hsg~xN`#%-Ca~M;Fxe|)f1detznocUn6OhzChX<-_Oc4> z!WEdWbg#xRG0?r}uDz*w7is{=j@{l)0@={! z>DudQZU>qx8}5`L{-zcWr^^7g#VLhOdO$+Y_F}HDX-8WsgL*2wd)qpacg zw(V$dldoxyryZEK`q6fezrD4siJ$=8h7>N^;oS|aTiaTYe|M9AXNu8%K>fasR!=+H z1rj+ThI=W zi9bbd9jR{K-2n{Nb^F^rd*&+PoPeD&l3aS8dDH~TJ#`o`Em(X~59h`C)IlNMrGd3k zsRFH2CGf@W6`1H!SQ})ss$j>lS8nR9BZB<_`54ITpFWW7Fu~4bw&Z{sA)4_OSU8SY z*(;zhUcu4zTlxdnuWDw8BLpOVCz~&a-6n6mXn4q>)`$gK8KhQ_90!#%PBUKysrVJG zv;o<9&3uDFR!?B-kxs7X>1=VKf&G!R99<>EU4841q4X#d$q7B6aS`Usdr31vInVr- z^bQ&`=W?VqV-ILRC8YD|K$yMA-%ofgGzc&j2V{*`1+iK?eLzycLBi&SP8g=&5=i%H zicwQ$ag`Q2F1*jBQ|JD>S}7?jvlv4T88~R~69#EnbsE3SJ&s47aG$|tTDtF9r!8*J zN$-~s%C#3$=Bbc)x_Xu`x#_j`zcJFbtQoNR7rw|^1`Jl+mhH_(5B=u!-4`2z6-D?p4 zD>GdEkR8l{Q0^2-e3<~^4nnPSU25yvw^0331>njJTq#?GHj>V@QoxSeMFoOSW^&yW zFy?wvh24~U0NV$sHEN1)OdNG}9X-8K4c*}yL0u@gQS27rG#HpKjA8La<}ci50k#=8 za0l=&pK*slcf(R57R^y7J?Q>D40jlF&*2L9X{^r@RTN+Ga&_(?DOEzLS6b&(N-K~8 zu$Tvlr6O+9i=vWr_&<#>Utsy1Fo+*za{(MUeZNM06Ao(!*h&I7Km|tYM+UrKp?Gu> zDP6|vf}VE4s8Kq^$l=svbxZ13jUNbiETSA@c_twA$KjA&=d{7$Q6#N$B5A#|K&o@H z(n_aUYH;Q;bTl?8ouob57+VDlRNa#)Vk#lQqtgss1EbJ!+W0 zsm^3s0lnbmN*x?i#V4ZYnWcotTr4ZnRKEAPQ_~NokxJaCt`Zza1lU7x#MY{f=jd_E zxYhVcV%;BbcxXld8Gr!v1~I9xIdTe)*HqaEWnrRkyd-euMrOZbLg31At-Bl_Iit@y zFD_(`z^VpRwT7XVlvCVkFxu*}Y?RoXg|Zgd21u%0kYh~rL7VW<5hsXpiBKizEkM_1 z)GvU9u+4!qfRwzEeT@rY_H0B(n6C*31o2)yQ5w0|H$6;wW^cH4- z0up+L=ph(^vxITwl9?UR!)dwDP$dvWGwYoB?$~k z^E-7!4e&cy6-ipcFwj}(!AvyV07>nTFfp55&@*0wETWyM&duS@;1`j8m>UOss9yYr zZiu0tn3*8m>h#uLJkazzM>&=kXxJO|v31AL4sKLWofQ5)j zoyjBc2L7UE2T2kZBJAaqeaw7MKCk4}LS|!b;$h$SjPNPt8|39_5UXTaG&_TV;s8q~@AuEfCbG%Qs{kxmxutwyFm&X|o1n$MJy45;|P z>8pk_9~+qO$Yt}*@>6m-AIeDs6C?%ZH5p{117}pm(*`3GC1tjR&`BN1;4HvN%6yk> z6Ue*zp5^_gml>Gv%ll@PKGAama~3)fq@eR{AvkY$K<6Q4Hs*v%4E!o6rQj<`t_y19 zlZx*cgJLUz`2aR|YANi7bTz0VMC@dT@rvNO)6wrpsrZp)0MqNbq>Sopotjdf%aAfE zug!LiR04cPj^#65trZU&Q|G*r41+r~gE& zvm&grzaeF_T#Z6Y2XG6}R9a&Bc_vBr#O!da>^1=3hVA!Zabb28^ee#hnZPvQ%$;9( zS+Gc8C#LKJ+3C#ZDsXK*w*o&io$gGZrq6tXVHM(23|Q0-u&C{;=cz@&xVjrNcVd`4 za53)2VL|rqQTlKU@Cn1nR4i2w%snWzlQ|83i?F5xgoE1=?G(}Aak(fHm zvL>Fr4~)>OFiI$AI!u<6NMZb>3d)JqB2Ltu$FO`J+%+t|o&ASbv&r4cP-fTB;En8_ zk*sa||A*R?SbZL661=XX=rtkTVGGYqo<6(%kO#b$_`k z>+8z7F#2+1uWYwiFY` z2epBRw8Pucw!J)6ZuWU(-(${`0v`any`t5>3*FhVdp9rvvgySQ9qoHN+UIfBd%b8+ zQ(Je+Gbk@6UYDoM+tIQU?eXk^v6O=gvH8~ON>q362INcmS-=q8dMgjzg18vf)i}@agI-@d@$WplLFU9KLk+8u^Ztr8rAtw9x-Nq_ zmQ8If;98}|yPe3PsSP|f;!u8uGq`c!H+6WB69_jEvi{O?lyaazWHKZ06beOf)Hqu4l2(hn;#LZ0v((Hqw)j~l3PYffGMN~X59uLSEZXjVv&j)Rq z7P84?lE8F?Y9*>5adFJGDCrO_`O%oTINvJ%IdAOoyog#!GVkY_RKdyIaA;?q#D#-9 z^Pn+-SLd0|RZbqulQPa0RK!ci=jAxJKx%wS7!DD%$k8_o(vEn?}KF2wR zppv@V7eY-m z^7!<_0I^WoP79C&UZWB+O&-lts;(c+%hCn^lqZ#qUCQfpr~<;Gr4H4{m+}Nl%zkJ7 z$+67*+ZQ^5RDK{j3Kteq&)NL^>21>oguza@SVf{cpH@;N*2wuRYOg~Vbmt2e6Szi; z^Cc}rf=-Ld7jR1&x760~y%dwA%;gl0V*8_TF%reH-&6+aM~1{R;=L?fw5F3J=~Pw; z#7t%3uSO8T6_xP{dvUz_jFPQZ@NigD0!%m5G{9GXF751rd>}-$D3d{nWBKqmgXTh) z+2zA?Sb^)8^2hC;{_DAS@Id|WqR@h&eGB$37!u%uSJPdwpmPD_X$Q-`OGsCZv%&-1o@ zso(LPY?FM>M=kand8B%-iQI;=+Dmi}Tg2KVK=p5LP4Gv71L&p!C2-aD7 z>Sc(<>sGsxS`18}7g{YzmuR%w+qXJ`TdlWmbU6B5FHU-`!ML^mrL%GCa7^Jy!S-2$ z-vHR;K5P7f)n(}~SKRYi)HkiccVyIeK1Bt(Lx3Z95M;L23L~+1q{V;^1CpYs$W{lRc5>2E z5UefW+h00cThJ3HOgbIVtysTfhu6^?C~D~|ip0qPJE5Nng(GY-U2ydtzYx?EMC}|+ zKb!_4jYR;%Oa=gQ-{CdK$vkQ^GhO>nx+Yr-g8K`4PC}|sL}QWRd++c2K|}9P>W_{+ zS3vO0+VxvZuKsM7mCWsr3x>iG=*H)vPZtakieVTO>EaN{L|rD6LeYCXxUPWiNXsN} z?Po;Dr@c6Ny&!mnj14kGgh2jW!H_V^Cqo&93|!v7hi7mMi$AqZUS_X}@7f04f5hB- za0${-2-VW0RPMfZfE+Pu%Se>#0rBs5SMe5$ZdqQ>4X zWYUu6759j_Hb*$p^Qd?K4*!o_AG!A!7 z(QuVO7gKgsQPF2C+{pXH zQlisYZ_zoehU^7aht6$fvR7M|Xx3Q|&LaqG?I^XYjQ__XikW06)Y;XC<(FqKhBd z!QwEHL~>er6|3i!YzD7j)qENYZg5qiX9f#{>?eQ`K-VFLe?4zJTzw&x7whatH1f-7 z0*e>Xq!vZQt;qgi>g65yI@H8)a88JW)Ded_#kcyyLT4~Y1fHuMB{s@nAMK}N3*i2Hhjr#~s z8#e9#4LpqqpEY=NIA!qY=bs-%9X9@1HhG|G$}YjJvwd(DWDatesX?}6>S_UXWH;Pua~Div{aywo@w xFU?Q=c264!bGY+LSz~i18eDO~Mc3p^k!+~ltevyfQnfR}h7Et!R{DD@{}-JkC7J*L diff --git a/RomDsk/ZSYS_1024KB/UNZIP.COM b/RomDsk/ZSYS_1024KB/UNZIP.COM deleted file mode 100644 index afde72047347290bcc1fcee1b9977a3c2572b545..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3328 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 diff --git a/RomDsk/ZSYS_1024KB/XSUB.COM b/RomDsk/ZSYS_1024KB/XSUB.COM deleted file mode 100644 index 15e86abfc94ac7ae15b0db899aec96d711d56e58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 768 zcmaJ-Ur19?82`SZbGy2mb7AblcK>F2M6D4sMuW6^oJmsllHu|`jC9jEbE6uwq?cZL z2z=-{=%I+BkU|FA#fN+0K1^AGK_H?ad+MRr*>|<)&cpe>^EWg|hr`^;SmQvJ9SI37E$JA6N z?XaaxR+^p8=~-q}kFc|QHe;7%{=PB@kp=OJhH|(riuHkN33wm z)TxRl(m_>vMB^N1$^gn(n0*c<>?w~u?3MdO@_84cTHYyhY%JVhpF+WF3H!Mh*F(19 zi7>GV)_X2S6|FT6U%BiLULq>vC)}t&^N~K$Sm*pDpo<_mkX{L-lIFTn8XeI(0X(wb Y+cM%=k)A5D2B>txs!Q>=Q276^zh*|>DF6Tf diff --git a/RomDsk/ZSYS_1024KB/ZAP.COM b/RomDsk/ZSYS_1024KB/ZAP.COM deleted file mode 100644 index 47ffcbb8372e3560e5564daa0b2ea165d31a0930..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9856 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 F{~uk{?9TuI diff --git a/RomDsk/ZSYS_1024KB/ZDE.COM b/RomDsk/ZSYS_1024KB/ZDE.COM deleted file mode 100644 index 9bc493c310e79d8d50a32177d10bcdbcb4b18694..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16896 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 Zx%h1LrVc_oe`n)IvvbR*{2$uV{wMiPr_}%e diff --git a/RomDsk/ZSYS_1024KB/ZDENST.COM b/RomDsk/ZSYS_1024KB/ZDENST.COM deleted file mode 100644 index 8ccc976739f96507289890bf7df565aba040127e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10624 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 RFgWss^26~5s=npH`Zq8hC}98q diff --git a/RomDsk/ZSYS_512KB/DDT.COM b/RomDsk/ZSYS_512KB/DDT.COM deleted file mode 100644 index 83f8603f93e61057d63c994de083a1fd83e29781..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4864 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 diff --git a/RomDsk/ZSYS_512KB/DIF.COM b/RomDsk/ZSYS_512KB/DIF.COM deleted file mode 100644 index 87b89d75568272353e76a85046282781b8a406bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2944 zcmcImU2GIp6rSbI>~?1;IDudbMDMMI%GB1~p|qu;+t3zLBgn5stcc6*bh=P>aCZ?T zAYdZpN1%oPX?W0(_@FPNM%2Va#Er^o=E34mvdKgn924BEjfsg?BlX<7v%7`VC*wZs zoO{0SoO^!mxw+}I(EZ42yrMrgs0BlXuNuOAT?Yf(Dn*Q=T1rdoj>WYkP7P={8td=Z z5?VY0>m6EZpQgo2w&8fRXiqKsVtU+2#Ns-Rgp=CA(khSy$F-Fr-L|(O*cfQV4+feW zR_@gs)IgwV34rqzMZu3uHE+bA0^|-LkSwZM_)mmz)PT6+Mha{DW64w_7~mBl44d_a z2V+qj83-rB5lASB!wId8M!BMEV+gn5aP+w_B!!JQ-eIH$FfB)t;wv%y%J|-RDmI8$ zL8j~a@oFGZPVi0+_;AZfL3Mgi4NyI2m zP0B0iftpuPh75sx4&-wvW8Fkm<5p54e$KJuyxlK2)-PguNTRwKOsBgV4pg$p*>SJk z@3S70vO9ToF>gQ3+r5IanAfcyDZ7;?i}@ykImepISKTB5&VJf!_xh^oI(>mJ+t*0$ ze)W!3H$`73$pNlFe_09y)um0#np;|zuk7sVUbUJ=a1TTPo7G722wxqC;O6pFp&$Bb zwqcfag%s?#0E{;ngMQt_9%k{mW`_;a-pd#==B%w!_Fh3g%+UlF36#P@e@GyW%*gf7 zSM)$DMg&;Z@nqY-GOX{Wpv3k#7RP6ZhjR>Y|F?KZeF>S$OGvjCO4(NhTKKyFIm|+P zN01M2)^;iTi6H+lNiC|GZN|zmp65GSD!;4J(j_L|bT0Dl3$;1-o(Ij$Q5n_{`@X01z-o z`PC(ZaUWf~#PK2#1R$Pd#8V~D!v)W<2Ow}<=x$(456-*_>o1hvB`PCuMT{U81gL`* z?pUW=D@YeR=?e7%(3%posRBlx4vg&Kl+%DhN3T?n7ok!d5BHB_JuHy+f-!9D5Cn1^ zPlIr*JWqaLy`zzoASzSHwK~Uqq$exL;j+^WcQ}PPpUxpwPvdNZpqweB(I8s;1a}Hs zf3plhuH@Jfn$hHktBZC81a@Sz?S5J&MU;a@Qg*!`u2ZT~OR9+98fU7;qH6T8UtYjm zfq>Z99rwezpmse)QueZ+PR|IchYnDryM%n?C#T_nO~F={uy6h33}9|xFh}%Cffh{o z^L=O07PxTC{Ki8tqozxNIdUlr#eCmznKE3Y5U0=*H7fB+t(3hak|aANx*N@kL_=_c9YD=$`bV}<=^{v;DNz5A#=g3_)^;p`v&W2Q%*@!en~uI^+Y*=~ z4_9qF&sz&5d+gde^Mj9Ldgj)lcU!KT8LLjpWjY_tnT8&c^E>mM0gt~Um*1Id$G>Jw zC%@j<}J#i~nCEqtAS0&xY=c>H9ZhiU0fDU0SpU8ch@zmDV(w7R}^mymAuLMYE6oNK0 zv;1=XOh`?BO`0_)EpP@18>AyNbnIV6HP70IEO(YK`!-p4oZ`##yTvE#b4CQAW{9MI{t&zjaD7R5=qCS|aj0YqPpO3+r-)ccYO2i- zP=3S1@Brt<)-_m+Zq|nB{X_9(ZVwVq!FD1qEsglqi&YP*k1DLZ{g!E*Zm6$S8kJg;kzB4ema~5{lcWA{)7GRhH8}2`3dI5y57ezdS%G>R zF6zRzWD0DPK*;!IWraCiW+7YxJC^Z`B6BU?1Y0Nmiu6d@1~+o~&tSnb6caxR$~@_v zsi_m6vP(c(0ssLh6W>=X{0edhUOvA`MGu}HUwW-#{3G07-qmA5z5|}qMMj6BU-apZ xW(*MNbb53*!t|&h#yQUz?{@faaNl%-d_HgSUtkF%)=zlG^$yq2P3n9C{{b^Cz8e4l diff --git a/RomDsk/ZSYS_512KB/ED.COM b/RomDsk/ZSYS_512KB/ED.COM deleted file mode 100644 index a0f0f5410f0542e3e6d05bfcd0fb361d84c73f26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6656 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 diff --git a/RomDsk/ZSYS_512KB/FLASH.COM b/RomDsk/ZSYS_512KB/FLASH.COM deleted file mode 100644 index bde88e28a46b35c0a94cd38f04d7f6f03238ee92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12000 zcmdUV4OCP|mj7#LzM7~Y2|UP$_0p@`;tW9`yZXG&q?!F}s=UWV4$#9~(LQHHq|K26}on7@L{NnVXfECNbD*YY_Qp*k8T( znh#_0-`W2;d(Luruj<{pRdws$Tet4L)smn~6&QsPh_OqG5sHG9vt!WICyyK6y=9hC@0u-mu*7fkQ=`NKOnDZ6-M> zRJ4U;L#W6~@^zsi8_BamMb*VIp`yo%mxqe#v6Lkrc-l?+Wv2M99sc;SF5ReZK>C-R z!R(WsGiqDHGE*`b(&bMY!{UJ;NFS>016@+QP$c&!>|W%PO)-~sK_K`K@9eAa{mY`t zF8`l)W;w(~D2(`%=Zb6~%3G>5P(?D8UPqQ$paCfU)~{Gn znlV|tl%o?*4*$9#EW1@~_w!o-4*}Z?J&) z_o=HALJ!`QBfR^Ku84HP6R|^zMx9>h4Ej$#9}X+9Mj`cgp6nBz1wy91OZwHWp#R+$ z!`|(!Yig}kPAjw4Rn^oocTH{WT~3GF+OVn7<#Oh1cGR&N8*6ejGPk3#b_=VmdDP0B zjrH}81{bqA8hBHK!P(?=S?gHUmMzvT%;jLNtu;K1HbAEBT27EPp8nE?RnE(CmDPQW&CqB(5_b+=K%=q6UC3i4C zBE^20x6$=qi>)e+Q4N2R@AxOveOcrlN(*#Kvp7nUhH|Wj3a+qOR4~jEsbGY~Qo(3vfaIaUe6o*| zZ6ZkaF|tLb1le;;^pHKCYzb)6lP!+(pN6qfQ`cB-Y<`Q4P8z_$!NEUcS^KWBEdOtx zP}B=jjw<#;=|Vt(>84;k3xpkSI$GYU&d(1PU-*h~8g?J+#HPm14NJ^(YlkOvUx%mW zVQjAEw@g_ikL+jhB#%C0nk{vBW%L}uTerLBVWW|6+gEnuMB!70zSrRiMEW9jeZ&^06NJHt zbb}|-C@6(XCuMl*CDHR(xHv(9_=E*&sY_SO7_E#=U&e?JR2d(sNZ^dP+AL7R1Ubja z6`{tl)Kt%;Hst6ODOqZ(oLgC)wa(Gd#5QlOsb{N77)(y?w)wdQ-&w+ha{Hrphuh9< z3L?jV8Jh1j2vO~YSO+oj=_BMGA@?Y`$H*O#QaxZ{8yIMOf#fm%iWpxw@$XLo+RnZM zcz-PWHddX=O{`MbbV^YXqZE~~;dq1Z4qukCT{|)kSEug# zK`@}Kib~_jl0fG1Q=sjLy0stObYsigrtfw}`eNy^c&bmpE>$;ZWO5%~X~n8~j$vJF z$1+pgj$S>}<7E8H1wv;aC>{90c|`tsPS`h4TxD} z{+y9{K-keg&onFbpZ92M^}n@?`#eMIYq5MoJViExvnA zDO~Gq@ezB%e0Kegc9!D1%alR#*=2m&hT7qWoZO?VkPm4-Cy@C(o_;)^sszjNEK1Y#bhA!NDP@r_ks}f2%gcsswzsMJyd#yEW@2t z+E12G!BbTS!^ir9Ff7vJVQRcYt}nf8=mD3=2i(i{Q)%2ph$7 z0Z&*U`7=eg&Ooyuc)*~P@&#%;OLCZA2%UKEX)67kECYP1s1}bt1$p~cn4l^{I`4Z= zOQ()d>1Sj)!%+swb{WMbvV9TE?vCyU-wJTcd{Gcrll%!i3C4dya*+0d_d${`(UaKA zmq`AC_D0D41<8Z7cbwdVBwwbz6Xd>31sC{M3Uk`{-Uwr7coUx{-$hHu+&xrqj<=rY zjO@mzJW5ALOyB-<`E%`sQsYpRYYK1WMBhr2@hjKtKlgobC+wZO$5&>G^S|@Bm^PCs z{%-+66)m>XXJk7Q#9&u*?zd6S^`vcwG@2oc+z0<>yu&P?lWhPqd_uM$3ib3b7Ci zja1oB6`$THEsJ)Ds;ihn_A6u?4oVO0RW%qUjgF3)GNlIKa(kFw zRIRLH@5=4gZS~g8E;y}D6!2!9HO*ESK!adezUuxJC2ZaD(pBppVE5d+;-34~u_Y#$ z!1>N4QEbIhGRA}r+(rr&)`l8elQ2v9Vo@u(gsrt|u5cYDQv0aWIblI(t*L5o)l}88 zzgBuP(+q@#!Yp-E4%eo2E)=E>J_QEQ?y9P>GiyVGqk)fY$j;7Y6)V=RvOK`F1p#6( zOz&TIpEPC0qvAZ&8eUzZC}^-RHC_oDRa4msi^na%vGNC-o?(gG_AACYOOfl`rf0T2 zpL-o5l*FcX1s;P(La!IF*e?IB zT`&W&Ir^>~Vbc4O-dC*kFl@<5JR>?Od%q%YGM|9``2hCi1hwf&{(xSH`*_cf&$V7G z*~ho)LWGG=Y(V_^qm7SjE;U*L(j)tWoqmEB)6?=cgS8padkgnzZO-X!uq`7o;wG(W z`_)ac;!3UQ`_r0CH)z1!(}3Je4eP{=M>fNa%Idw1&64)**HqX$e?JwR=xF&d6@1{u zTOPp~;Gg$nY8)xnQ`^XgOMZfVoi0dQ_GM;fp7GxH6aN3!KK}3AC%vk&!QcG6blhWJ zEWPJ3KPUZ~J9wSE_8X76O6uaZ-+IgwlHX(gnbgf+KES*fS{~_*Vftd7sDlSI$`77D z?T4=gk4sFFPHR=EWB>HM1cM1o{Q^OZS)dE%`(J)OpHDu_C*L_a`7S=Wkx#yhPhQ3+ z-^C{{;FIqXlclp7?QiY!2cCd2PnM(u(L-+#zE!0(*Ha;-c}k`0J(ihnlWH_^297Cb zV5D=>anzhA>3(G>={fZdrVsGJ_8!0<;d%x&)1yla$tT;f#slga zx!mQGy}A!?+Fu+?Z6{Gu<;j~N==-06oJGC3R9wO-dT2eyd8#$sr&L;7!{rb5ZGY30 zK1KHFXQy;2=>NyvVed`*c~5GD=RBc#R{kHgf)bOYc9X#lBVLgxyCTo3=2P5AmE%+~ zLGtime!$nhPIL@I3W#GB>p0TOKY%BY9~AXSYn>*!hmO8)nxi5d ziMDfkg8uKfhE>1){^jfLEnu6P*ajpT*t*F?16z8H%tJA^iOw2_oh{DE&B=$|y6wA* z3v)|WFBfiGTef<`-5Z44%1f8uy{c@TaN8REFJHTU)$;q{{5M!PJF4w9PS{&Vy^D`< z>wM>}2BF+pW3Og>5Qb5h)m~j==WeVDpYLRws_c(4r@O|5kilM!mbH#LJ`bj0$~^Z} z+3gM&+XDBup$?tdR)?EsJgPQtwmO|kHbe_LK%o+vV2}rpBhjGKV-^G~e5@&AfjT3y z*;?hqc@Z`H%wc2mk%HOOcTi}Rt$cI}w>8VqINYYky2Q+VuTCXEYqR@YX?79NmQHM$(% zsn|?ii#^~d2KCts6=X9I#sN;s-fD-IR9)7$UjvvXI)iot+j#G z)K#H@lZft`DkNDP4V$f3%M|UZhA^#NmE%?N1(v2i8dg-ySK|qq*f%4faH$k18U=xA zEslCCqD@d1g|C{VRdp)1IIOC;>#Cq!%IdhYv4kz(gj5<9Zh)4sx~eADh-_SxIb5|g z=YcuwwN1#ZA^qlp%fPjPe_)y4;7Vx4Uf~HjgR{zJbu~e&s+?${y4WTw zm|6!h)F6)I16j9KZFXVw{5-^cwGKt|^NK9Fi*p5D6yyra*B79YySQ}yR5e=5E1jxE zo0TqkMfcpkI1i1esDtnd22~+>xx#8~7Nta=e05S@pp_Q@uKtcjL^OsQ98?{Z_`fg< z#*|UjXg|8iXrod+S>jrHm$3M({=+e8Y4q4Q)lbCc=XWAqkyVXgxi`m@ju#dB7GYbv>Ben*K-Jb}MvV1o z+k0c1)d4@6tnvXf%`8m}DOPZ58Hh=6Kp_N)!yz0hZ0?_vfWQ6=js*ghj*w*(^WdmH zfP?qvxp6fQdq;oDu`X1@v64rg1^7_zouR@ee#n_4aFEoXYcO1V9r?x(fJV~EH;!il zfoKTP|4s+|>@HO2p9P1JiUe(XGUsJBl{TH6Umm83S906=lvX!*)bfg zdL-@duG*@IO8psEnez!RP`NLM;v1zU^(%dcJ|2Pz5m>^}?p z7t^SghIm3)&oi?~&nn4VHSIG!gL^NsRTDgetKcP0%ixak4DJ}u;6`}-J4~@nqnsD;`2Th1t+#l(kPa`ZTx9p}IOP3@Lt%b#Ht2tX*S+)p z#(Vnb-rX;FOAdR}Uo4LM5AVof{;oU3-)}4L_kYgof34Ktd!E-{RUrSaKq{2?zbTLm z<$YO!99QZ_l?%mRB=c1~YQw z4?gQSe4yIbY>Gd)f8*h2Hu&E=6n=lD3f(V*I3Y8z)TwUHq5 zHgS>Q9k@7f>$QZUh)v2f5|!ylhw`0ZUm$FM*3o>ZTD4Rvk+w(T6BlAJDIJF=Y)P8h-x=w9zpEsC>9WVR`YlKM*dFN zAYP|Zp&m@sI7+TDaz?0OoP5c$(k-!!qb9B7Z-X*Kay7b@CXywI>;|$W2Rq3gA=@}q zf0S%vL4Ut;VTMhC`{N_eqR$~r`aGum*@hX%ieiY8eISyR42H>KkaEi_2BPv!8 zgTn58dDKlew6wEVXK-lB^hqN;;MZ6@qOn-vRh+`BX)IRGdX2?$vLX|NrxIk6hyzVw zF9IEf!B8Atf}ROcgq`FE9yAYOkgO^dZ_xrKEiyuK{;bCE5%P>)o8{`hELnZT@p^m; z)5j+^E%c>kaLpQ;JbUhd=fOo{o?uuP7fUtgi5^mkgGA!-B&7S8FV&ako9inv#rWRc zh9xwCq1(YrB`oVUEJ34 z<8!j)mz@V*4Eo=EiDws;_TX1FMm7HqbxW%Jh6iNWh@GMCPWTiP$o;GP>}{5;sAybl z#3+8qNr{f2h?YA5t4oYVHP;ZmVVXTNXqAmN2R~wYrm6fvY-xUb*I;yV^r?;rV@G%_ zJE{s!xvQ#qczR#l5RC97(CCjg&KTpgHZKYu5NrKyfljI%%Mr?>#^G2`CQ{W-V}puN z33OZM^!5R*XE4%-iMb=E+-4Z%K<7prTGLT`_%)eJry&@Pr>D9`J7Lk8D%LxpwZ%e4 zU(o%)8bg`dYzsUvZMdG*B~5eFw#`-B%y0(v^kgFB5J!8H;N8X3UIYBQ1lkKV;n$kl zb*?NN&#f*lI*@yP%khM2?E=^*SWNns;|$;N{0!ARt9*VB%el#~;`1k^h^Z7Gb2>98FGEDCQ$~+bykI)C)Wj%&+}vwt`jcsWD+6}?hIBy9}~%y)Lh-( zz2LRp`5p1Ek@-Um_eVS*XwdTiW;iChXer-m>mO1#M0D6Tjr&>$=zc9WU2wXyx6-O8a-ZOO*1vfP2@x0tx6i z$>xvMqE9V;uNI#uh41$k)9tYS$DvL*3zD@2AsCMH5DZUN4aOqX+^8RrO|N(-?-cX( zov!YsrQEnUdnYB>`y~lBzrrQh{EDh{JQu5a0^H~s$d$Zk5%P;FDKJU_|I*iRSqB}0 zh!JJrW-CCx4=rptueXin7QygQ+r$Pc4Uy#>KXpwv^9xsHyB4z<)At;U6^R}TQT;h; zz%_Az+{pHZ$bC_{zPY5%%Cp$GKWjIwAbXf@4o8M1x;-@tQ*sNtM=KkNa&xiE-#fyrOm&9uB?~Q2qAK;B>C{q>;*r zf5xp1$5JlMhj0mwn{DFzvV7WlRDo*xFLR%xY$e$*lI;?9`&4B!@vk zjTWOVU4YLu1Ir5x-zOH+U#V)sxrEaaJgQcQ-f?`)(ek^A>cD_>W0W5~Ql`cVaji;G zkX-#&s~Dzi&N$483X-jV8d2j`q{hAbXme zL2Bs7r2u}Ag}sXVKAdSf^8L}m5JJET6;kQYb(*?ZMw|BK-tyJkH!V*5NL31|hfe>& zVu~Jg#owHlN`Yik!EZg>$()!fev|g|C|aBKr-jpXfz5Zjo_{!>SFHiD|P1 zan20$S9+N$gH!>I!sx=v;LaTNAc!{z?CL{uqI4|~~Qc0UP`=F2l$V2lo4q~Il=zcMe9gGps7?`(^L-e{2 z=jCyTUdPxS2bC#4X7?Oarg;0E`wlXJ3Bu8L)}nHkAhf^p04l8@qvK%}N4VBs%WdC$ nP?!(|-BE$xdZ#jvbl+>C*SoHT`+p90&zjY1)|RaldOiOIC5nk3 diff --git a/RomDsk/ZSYS_512KB/LBREXT.COM b/RomDsk/ZSYS_512KB/LBREXT.COM deleted file mode 100644 index c0c950e3bc93d8e23bb2c375debc83c719373ed1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8576 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 diff --git a/RomDsk/ZSYS_512KB/NULU.COM b/RomDsk/ZSYS_512KB/NULU.COM deleted file mode 100644 index fc5594b1e2c4eddb679645296eaeeb9d32991990..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15616 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 E1<9OScK`qY diff --git a/RomDsk/ZSYS_512KB/PIP.COM b/RomDsk/ZSYS_512KB/PIP.COM deleted file mode 100644 index 4b2ce4b689b9be798eec94cd4275aee957c8bd07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7424 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 diff --git a/RomDsk/ZSYS_512KB/SUBMIT.COM b/RomDsk/ZSYS_512KB/SUBMIT.COM deleted file mode 100644 index 2e788827b2a45aea667092573f2263b67f9243f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1280 zcmbVMOK2Nc6n#%KPeBGx|AC4&ej`ttbd*wOk|=nPRj|^KLR^KUpG_Mxk;ayYJmZYV z`uHQu-INBhDqXa+gl2a29xys?v)EWAUQ*uqpOO&iVF=1E*Iy^l#W`aV+ zbjHed^&kF4+os2CYg{>QIL3tOLQc2vd8=ZSO9h&>E!VNjG+Ts(Jj9`gW9D7ksna9V z<+74BEX#Ijwro$Cd+7<&C_Iz1%JpXz8KJ?%Z6d!V-3>mA1m}dHBL;5}U;c(nCeNy0 zlMN{roCEwV$2S1q7n~>B8c^SJ>N}wB-===#)DJ*C#H-dhz6tnYNb%*LIsOUoBOL$A z@h^aPZcA*EsU);ce!c?VFZ4|^q-~PU*6PKGxbx`(Tot|jEZ80ZgONFMt4nPP@jE&=2%MFpANPIv5gYPA2KyQGuiOr8c|71<5`B4A zI;&Qsez>^@wsr*XkZ?`J1vUz>xDt)&vr<*BNolPHH!!~({w3l$e&_5Jo{q?05!e!N zU%R&%j}v^E#e*55H6(Z>ljsdeYa+G)iwJf~ZLq0d2Up1;xglK%M+sziX;_gea0k6% z64V3_)Id9aPrFX=b>16hOTxr#zJ~810k;jZ#dZ(5F5W`jDqWTLddb7C}nft);VcKm$t1i_JrduzeEjk1dm)J8M#_v~Q*R zaQEJG&OPTl-}&wYC~8j-@w@Ny_RI88J}2u#!~5{a?&jTIA#}^fN5?1!S3mLC9?CxD zu_tMJFKz!s+xHk7u@#C6$W##mhG~Bz-@w{!T=^yFVJEzfr^n7a`3!ZnWBqg={v~s5$*8cguq4nGQC*&h&Wn_XAV5D>?m0);W(;= zM^Ld;zRMY+E(S-?^6kb33PP(t&=3m?56i|zu2Q9I!8lsZ)gVi!6`-i#F%*@N(^73< z{G*ibIcTfBdX)awF$V6x1%5`SxbEYFQi|$`!VqPoOWQBnbQ2Z@&)G?_($FT&O|r!kuYx&(xeRGnk(m$;<`4ve3YNP7cU zNwanju{BVYYp(ly*8uAS_Rg-OQ?s)(v*!+0zGSC59xiY;Cb0)OPc_XJ#T7`f?5Qle z2wx;bmp|aFz$hwqwEkKMj}b!05J+Q&dL5=29!CWckXzAF!e6n|a)gDuoc0Q}-9Ldg zL-VJXt?O3I3!9h#8X5O7fCe;RInttY=H`#%mi?M%zha!k6ZuRgPx|YGoNw}UQIpM1S(EY=8-GM~xKF-d%3Tp%hd=#*(>zaWbkM|6aGgA$*ax?C=J0uu-xaA0*c_#O(}=ix2IX5fW@>@ELik18Pk zH_Iy=(h2|<=M5PT4G;7T!gng_6}-aQp}l)B#`Dpfu4GMYPAUdI)YCVBRoO74wER~b zZg~`$)-Z&+i%eQm-jT7YrT!k8R8wvfMvRZvOZWG84ZihcVEcjIzMdFvALttFAA(TH zfZW(HrEE&lQvi5he{a0G`)EHw+kchUp~(GE!;qMrKwd;b(QL)G8j|JOf24uwK6P)r2% JR0IE+;ZFpd#_0e6 diff --git a/RomDsk/ZSYS_512KB/UNARC.COM b/RomDsk/ZSYS_512KB/UNARC.COM deleted file mode 100644 index 8cc907464fefc5bf64db6ef689a1eb58346d2a88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4736 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 diff --git a/RomDsk/ZSYS_512KB/XSUB.COM b/RomDsk/ZSYS_512KB/XSUB.COM deleted file mode 100644 index 15e86abfc94ac7ae15b0db899aec96d711d56e58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 768 zcmaJ-Ur19?82`SZbGy2mb7AblcK>F2M6D4sMuW6^oJmsllHu|`jC9jEbE6uwq?cZL z2z=-{=%I+BkU|FA#fN+0K1^AGK_H?ad+MRr*>|<)&cpe>^EWg|hr`^;SmQvJ9SI37E$JA6N z?XaaxR+^p8=~-q}kFc|QHe;7%{=PB@kp=OJhH|(riuHkN33wm z)TxRl(m_>vMB^N1$^gn(n0*c<>?w~u?3MdO@_84cTHYyhY%JVhpF+WF3H!Mh*F(19 zi7>GV)_X2S6|FT6U%BiLULq>vC)}t&^N~K$Sm*pDpo<_mkX{L-lIFTn8XeI(0X(wb Y+cM%=k)A5D2B>txs!Q>=Q276^zh*|>DF6Tf diff --git a/RomDsk/ZSYS_512KB/ZAP.COM b/RomDsk/ZSYS_512KB/ZAP.COM deleted file mode 100644 index 47ffcbb8372e3560e5564daa0b2ea165d31a0930..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9856 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 F{~uk{?9TuI diff --git a/RomDsk/ZSYS_512KB/ZDE.COM b/RomDsk/ZSYS_512KB/ZDE.COM deleted file mode 100644 index 9bc493c310e79d8d50a32177d10bcdbcb4b18694..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16896 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", $_.Name.Substring($Platform.Length + 1, $_.Name.Length - $Platform.Length - 5)} + $Config = (Read-Host -prompt "Configuration").Trim() +} + +while ($true) +{ + if (($RomSize -eq "512") -or ($RomSize -eq "1024")) {break} + $RomSize = (Read-Host -prompt "ROM Size [512|1024]").Trim() +} + +if (($Platform -eq "N8") -or ($Platform -eq "MK4")) {$CPUType = "180"} else {$CPUType = "80"} + +if ($Platform -eq "UNA") {$BIOS = "ubios"} else {$BIOS = "hbios"} + +if ($RomName -eq "") {$RomName = "${Platform}_${Config}"} +while ($RomName -eq "") +{ + $CP = (Read-Host -prompt "ROM Name [${Config}]").Trim() + if ($RomName -eq "") {$RomName = $Config} +} + +$ErrorAction = 'Stop' + +$TasmPath = '..\..\tools\tasm32' +$CpmToolsPath = '..\..\tools\cpmtools' + +$env:TASMTABS = $TasmPath +$env:PATH = $TasmPath + ';' + $CpmToolsPath + ';' + $env:PATH + +$OutDir = "../../Output" +#$RomFmt = "wbw_rom${RomSize}" +if ($Platform -eq "UNA") {$RomFmt = "una_rom${RomSize}"} else {$RomFmt = "wbw_rom${RomSize}"} +if ($Platform -eq "UNA") {$BlankFile = "blank${RomSize}KB-UNA.dat"} else {$BlankFile = "blank${RomSize}KB.dat"} +$RomDiskFile = "RomDisk.tmp" +$RomFile = "${OutDir}/${RomName}.rom" +$CPMImgFile = "${OutDir}/${RomName}_CPM.sys" +$ZSYSImgFile = "${OutDir}/${RomName}_ZSYS.sys" +$CPMLoader = "${OutDir}/${RomName}_CPM.com" +$ZSYSLoader = "${OutDir}/${RomName}_ZSYS.com" + +"" +"Building ${RomName}: ${ROMSize}KB ROM configuration ${Config} for Z${CPUType}..." +"" + +$TimeStamp = '"' + (Get-Date -Format 'dd-MMM-yyyy') + '"' + +Function Asm($Component, $Opt, $Architecture=$CPUType, $Output="${Component}.bin") +{ + $Cmd = "tasm -t${Architecture} -g3 ${Opt} ${Component}.asm ${Output}" + $Cmd | write-host + Invoke-Expression $Cmd | write-host + if ($LASTEXITCODE -gt 0) {throw "TASM returned exit code $LASTEXITCODE"} +} + +Function Concat($InputFileList, $OutputFile) +{ + Set-Content $OutputFile -Value $null + foreach ($InputFile in $InputFileList) + { + Add-Content $OutputFile -Value ([System.IO.File]::ReadAllBytes($InputFile)) -Encoding byte + } +} + +# Generate the build settings include file + +@" +; RomWBW Configured for ${Platform} ${Config}, $(Get-Date -Format "s") +; +#DEFINE TIMESTAMP ${TimeStamp} +; +ROMSIZE .EQU ${ROMSize} ; SIZE OF ROM IN KB +PLATFORM .EQU PLT_${Platform} ; HARDWARE PLATFORM +; +; INCLUDE PLATFORM SPECIFIC DEVICE DEFINITIONS +; +#INCLUDE "std-n8vem.inc" +; +#INCLUDE "${ConfigFile}" +; +"@ | Out-File "build.inc" -Encoding ASCII + +Copy-Item '..\cpm22\os2ccp.bin' 'ccp.bin' +Copy-Item '..\cpm22\os3bdos.bin' 'bdos.bin' + +Copy-Item '..\zcpr-dj\zcpr.bin' 'zcpr.bin' +Copy-Item '..\zsdos\zsdos.bin' 'zsdos.bin' + +Asm 'syscfg' +Asm 'cbios' "-dBLD_SYS=SYS_CPM" -Output "cbios.bin" +Asm 'cbios' "-dBLD_SYS=SYS_ZSYS" -Output "zbios.bin" +Asm 'dbgmon' +Asm 'prefix' +Asm 'bootrom' +Asm 'bootapp' +Asm 'loader' +Asm 'pgzero' +Asm $BIOS +Asm 'hbfill' +Asm 'romfill' + +# Generate result files using components above + +"Building ${RomName} output files..." + +Concat 'ccp.bin','bdos.bin','cbios.bin' 'cpm.bin' +Concat 'zcpr.bin','zsdos.bin','zbios.bin' 'zsys.bin' + +Concat 'prefix.bin','cpm.bin' $CPMImgFile +Concat 'prefix.bin','zsys.bin' $ZSYSImgFile + +Concat 'pgzero.bin','bootrom.bin','syscfg.bin','loader.bin','zsys.bin','hbfill.bin','dbgmon.bin','cpm.bin','hbfill.bin' 'rom1.bin' +Concat 'pgzero.bin','bootrom.bin','syscfg.bin','loader.bin',"${BIOS}.bin" 'rom2.bin' + +Concat 'bootapp.bin','syscfg.bin','loader.bin',"${BIOS}.bin",'dbgmon.bin','cpm.bin' $CPMLoader +Concat 'bootapp.bin','syscfg.bin','loader.bin',"${BIOS}.bin",'dbgmon.bin','zsys.bin' $ZSYSLoader + +# Create the RomDisk image + +"Building ${RomSize}KB ${RomName} ROM disk data file..." + +Copy-Item $BlankFile $RomDiskFile +cpmcp -f $RomFmt $RomDiskFile ../RomDsk/ROM_${RomSize}KB/*.* 0: +cpmcp -f $RomFmt $RomDiskFile ../RomDsk/${Platform}_${Config}/*.* 0: +cpmcp -f $RomFmt $RomDiskFile ../Apps/*.com 0: +cpmcp -f $RomFmt $RomDiskFile ${OutDir}/${RomName}_CPM.sys 0:CPM.sys +cpmcp -f $RomFmt $RomDiskFile ${OutDir}/${RomName}_ZSYS.sys 0:ZSYS.sys + +if ($Platform -eq "UNA") +{ + Copy-Item 'rom1.bin' ${OutDir}\UNA_WBW_SYS.bin + Copy-Item $RomDiskFile ${OutDir}\UNA_WBW_ROM${ROMSize}.bin + + Concat 'UNA\UNA-BIOS.BIN','rom1.bin','UNA\FSFAT.BIN',$RomDiskFile $RomFile +} +else +{ + Concat 'rom1.bin','rom2.bin',$RomDiskFile $RomFile +} + +# Cleanup +Remove-Item $RomDiskFile \ No newline at end of file diff --git a/Source/BuildUNALOAD.ps1 b/Source/BIOS/BuildUNALOAD.ps1 similarity index 100% rename from Source/BuildUNALOAD.ps1 rename to Source/BIOS/BuildUNALOAD.ps1 diff --git a/Source/BIOS/Clean.cmd b/Source/BIOS/Clean.cmd new file mode 100644 index 00000000..c354d414 --- /dev/null +++ b/Source/BIOS/Clean.cmd @@ -0,0 +1,10 @@ +@echo off +if exist *.bin del *.bin +if exist *.com del *.com +if exist *.img del *.img +if exist *.rom del *.rom +if exist *.lst del *.lst +if exist *.exp del *.exp +if exist *.tmp del *.tmp +if exist *.mrk del *.mrk +if exist build.inc del build.inc \ No newline at end of file diff --git a/Source/config_mk4_diskio3.asm b/Source/BIOS/Config/mk4_diskio3.asm similarity index 90% rename from Source/config_mk4_diskio3.asm rename to Source/BIOS/Config/mk4_diskio3.asm index 75967882..044cb292 100644 --- a/Source/config_mk4_diskio3.asm +++ b/Source/BIOS/Config/mk4_diskio3.asm @@ -99,7 +99,7 @@ ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABL ; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 21 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT ; #DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M ; @@ -118,14 +118,3 @@ Z180_MEMWAIT .EQU 1 ; MEMORY WAIT STATES TO INSERT (0-3) Z180_IOWAIT .EQU 3 ; IO WAIT STATES TO INSERT (0-3) Z180_CNTLB0 .EQU 21H ; SERIAL PORT 0 DIV, SEE Z180 CLOCKING DOCUMENT Z180_CNTLB1 .EQU 21H ; SERIAL PORT 1 DIV, SEE Z180 CLOCKING DOCUMENT -; -; CPM DRIVE MAPPING TABLE, DRIVE LETTERS ARE ASSIGNED SEQUENTIALLY -; DRVENT(DEVICE,UNIT,SLICE,DPH) -; -#DEFINE DRVLST \ -#DEFCONT DRVENT(DIODEV_MD,1,0,0) ; A: = MD1 = RAM DISK -#DEFCONT DRVENT(DIODEV_MD,0,0,0) ; B: = MD0 = ROM DISK -#DEFCONT DRVENT(DIODEV_FD,0,0,0) ; C: = FD0 = FLOPPY DISK UNIT 0 -#DEFCONT DRVENT(DIODEV_FD,1,0,0) ; D: = FD1 = FLOPPY DISK UNIT 1 -#DEFCONT DRVENT(DIODEV_PPIDE,0,0,0) ; E: = PPIDE0:0 = SD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PPIDE,0,1,0) ; F: = PPIDE0:1 = SD UNIT 0, SLICE 0 diff --git a/Source/config_mk4_propio.asm b/Source/BIOS/Config/mk4_propio.asm similarity index 89% rename from Source/config_mk4_propio.asm rename to Source/BIOS/Config/mk4_propio.asm index e11b470e..f8c6288b 100644 --- a/Source/config_mk4_propio.asm +++ b/Source/BIOS/Config/mk4_propio.asm @@ -99,7 +99,7 @@ ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABL ; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT ; #DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M ; @@ -118,14 +118,3 @@ Z180_MEMWAIT .EQU 1 ; MEMORY WAIT STATES TO INSERT (0-3) Z180_IOWAIT .EQU 1 ; IO WAIT STATES TO INSERT (0-3) Z180_CNTLB0 .EQU 21H ; SERIAL PORT 0 DIV, SEE Z180 CLOCKING DOCUMENT Z180_CNTLB1 .EQU 21H ; SERIAL PORT 1 DIV, SEE Z180 CLOCKING DOCUMENT -; -; CPM DRIVE MAPPING TABLE, DRIVE LETTERS ARE ASSIGNED SEQUENTIALLY -; DRVENT(DEVICE,UNIT,SLICE,DPH) -; -#DEFINE DRVLST \ -#DEFCONT DRVENT(DIODEV_MD,1,0,0) ; A: = MD1 = RAM DISK -#DEFCONT DRVENT(DIODEV_MD,0,0,0) ; B: = MD0 = ROM DISK -#DEFCONT DRVENT(DIODEV_PRPSD,0,0,0) ; C: = PRPSD0:0 = PRPSD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PRPSD,0,1,0) ; D: = PRPSD0:1 = PRPSD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PRPSD,0,2,0) ; E: = PRPSD0:2 = PRPSD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PRPSD,0,3,0) ; F: = PRPSD0:3 = PRPSD UNIT 0, SLICE 0 diff --git a/Source/config_mk4_std.asm b/Source/BIOS/Config/mk4_std.asm similarity index 90% rename from Source/config_mk4_std.asm rename to Source/BIOS/Config/mk4_std.asm index 17495dff..ac45570c 100644 --- a/Source/config_mk4_std.asm +++ b/Source/BIOS/Config/mk4_std.asm @@ -99,7 +99,7 @@ ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABL ; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 21 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT ; #DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M ; @@ -118,14 +118,3 @@ Z180_MEMWAIT .EQU 1 ; MEMORY WAIT STATES TO INSERT (0-3) Z180_IOWAIT .EQU 1 ; IO WAIT STATES TO INSERT (0-3) Z180_CNTLB0 .EQU 21H ; SERIAL PORT 0 DIV, SEE Z180 CLOCKING DOCUMENT Z180_CNTLB1 .EQU 21H ; SERIAL PORT 1 DIV, SEE Z180 CLOCKING DOCUMENT -; -; CPM DRIVE MAPPING TABLE, DRIVE LETTERS ARE ASSIGNED SEQUENTIALLY -; DRVENT(DEVICE,UNIT,SLICE,DPH) -; -#DEFINE DRVLST \ -#DEFCONT DRVENT(DIODEV_MD,1,0,0) ; A: = MD1 = RAM DISK -#DEFCONT DRVENT(DIODEV_MD,0,0,0) ; B: = MD0 = ROM DISK -#DEFCONT DRVENT(DIODEV_IDE,0,0,0) ; C: = IDE0:0 = IDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_IDE,0,1,0) ; D: = IDE0:0 = IDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_SD,0,0,0) ; E: = SD0:0 = SD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_SD,0,1,0) ; F: = SD0:1 = SD UNIT 0, SLICE 0 diff --git a/Source/config_n8_2312.asm b/Source/BIOS/Config/n8_2312.asm similarity index 87% rename from Source/config_n8_2312.asm rename to Source/BIOS/Config/n8_2312.asm index 17579395..b5c1a5ee 100644 --- a/Source/config_n8_2312.asm +++ b/Source/BIOS/Config/n8_2312.asm @@ -99,7 +99,7 @@ ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABL ; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT ; #DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M ; @@ -108,16 +108,3 @@ Z180_MEMWAIT .EQU 0 ; MEMORY WAIT STATES TO INSERT (0-3) Z180_IOWAIT .EQU 3 ; IO WAIT STATES TO INSERT (0-3) Z180_CNTLB0 .EQU 20H ; SERIAL PORT 0 DIV, SEE Z180 CLOCKING DOCUMENT Z180_CNTLB1 .EQU 20H ; SERIAL PORT 1 DIV, SEE Z180 CLOCKING DOCUMENT -; -; CPM DRIVE MAPPING TABLE, DRIVE LETTERS ARE ASSIGNED SEQUENTIALLY -; DRVENT(DEVICE,UNIT,SLICE,DPH) -; -#DEFINE DRVLST \ -#DEFCONT DRVENT(DIODEV_MD,1,0,0) ; A: = MD1 = RAM DISK -#DEFCONT DRVENT(DIODEV_MD,0,0,0) ; B: = MD0 = ROM DISK -#DEFCONT DRVENT(DIODEV_FD,0,0,0) ; C: = FD0 = FLOPPY DISK UNIT 0 -#DEFCONT DRVENT(DIODEV_FD,1,0,0) ; D: = FD1 = FLOPPY DISK UNIT 1 -#DEFCONT DRVENT(DIODEV_SD,0,0,0) ; E: = SD0:0 = SD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_SD,0,1,0) ; F: = SD0:1 = SD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_SD,0,2,0) ; G: = SD0:2 = SD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_SD,0,3,0) ; H: = SD0:3 = SD UNIT 0, SLICE 0 diff --git a/Source/config_n8_2511.asm b/Source/BIOS/Config/n8_2511.asm similarity index 87% rename from Source/config_n8_2511.asm rename to Source/BIOS/Config/n8_2511.asm index 1b250641..cb13daec 100644 --- a/Source/config_n8_2511.asm +++ b/Source/BIOS/Config/n8_2511.asm @@ -99,7 +99,7 @@ ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABL ; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT ; #DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M ; @@ -108,16 +108,3 @@ Z180_MEMWAIT .EQU 0 ; MEMORY WAIT STATES TO INSERT (0-3) Z180_IOWAIT .EQU 3 ; IO WAIT STATES TO INSERT (0-3) Z180_CNTLB0 .EQU 20H ; SERIAL PORT 0 DIV, SEE Z180 CLOCKING DOCUMENT Z180_CNTLB1 .EQU 20H ; SERIAL PORT 1 DIV, SEE Z180 CLOCKING DOCUMENT -; -; CPM DRIVE MAPPING TABLE, DRIVE LETTERS ARE ASSIGNED SEQUENTIALLY -; DRVENT(DEVICE,UNIT,SLICE,DPH) -; -#DEFINE DRVLST \ -#DEFCONT DRVENT(DIODEV_MD,1,0,0) ; A: = MD1 = RAM DISK -#DEFCONT DRVENT(DIODEV_MD,0,0,0) ; B: = MD0 = ROM DISK -#DEFCONT DRVENT(DIODEV_FD,0,0,0) ; C: = FD0 = FLOPPY DISK UNIT 0 -#DEFCONT DRVENT(DIODEV_FD,1,0,0) ; D: = FD1 = FLOPPY DISK UNIT 1 -#DEFCONT DRVENT(DIODEV_SD,0,0,0) ; E: = SD0:0 = SD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_SD,0,1,0) ; F: = SD0:1 = SD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_SD,0,2,0) ; G: = SD0:2 = SD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_SD,0,3,0) ; H: = SD0:3 = SD UNIT 0, SLICE 0 diff --git a/Source/config_n8vem_ci.asm b/Source/BIOS/Config/n8vem_ci.asm similarity index 93% rename from Source/config_n8vem_ci.asm rename to Source/BIOS/Config/n8vem_ci.asm index dfd35288..819bee0e 100644 --- a/Source/config_n8vem_ci.asm +++ b/Source/BIOS/Config/n8vem_ci.asm @@ -107,13 +107,6 @@ ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABL ; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT ; #DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M -; -; CPM DRIVE MAPPING TABLE, DRIVE LETTERS ARE ASSIGNED SEQUENTIALLY -; DRVENT(DEVICE,UNIT,SLICE,DPH) -; -#DEFINE DRVLST \ -#DEFCONT DRVENT(DIODEV_MD,1,0,0) ; A: = MD1 = RAM DISK -#DEFCONT DRVENT(DIODEV_MD,0,0,0) ; B: = MD0 = ROM DISK diff --git a/Source/config_n8vem_cvdu.asm b/Source/BIOS/Config/n8vem_cvdu.asm similarity index 93% rename from Source/config_n8vem_cvdu.asm rename to Source/BIOS/Config/n8vem_cvdu.asm index 24396765..573cccf4 100644 --- a/Source/config_n8vem_cvdu.asm +++ b/Source/BIOS/Config/n8vem_cvdu.asm @@ -101,15 +101,8 @@ TTYENABLE .EQU TRUE ; INCLUDE TTY EMULATION SUPPORT ANSIENABLE .EQU TRUE ; INCLUDE ANSI EMULATION SUPPORT ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABLE = TRUE) ; -#DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M -; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT ; -; CPM DRIVE MAPPING TABLE, DRIVE LETTERS ARE ASSIGNED SEQUENTIALLY -; DRVENT(DEVICE,UNIT,SLICE,DPH) -; -#DEFINE DRVLST \ -#DEFCONT DRVENT(DIODEV_MD,1,0,0) ; A: = MD1 = RAM DISK -#DEFCONT DRVENT(DIODEV_MD,0,0,0) ; B: = MD0 = ROM DISK +#DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M diff --git a/Source/config_n8vem_dide.asm b/Source/BIOS/Config/n8vem_dide.asm similarity index 87% rename from Source/config_n8vem_dide.asm rename to Source/BIOS/Config/n8vem_dide.asm index 03138419..22d5effe 100644 --- a/Source/config_n8vem_dide.asm +++ b/Source/BIOS/Config/n8vem_dide.asm @@ -101,21 +101,8 @@ TTYENABLE .EQU FALSE ; INCLUDE TTY EMULATION SUPPORT ANSIENABLE .EQU FALSE ; INCLUDE ANSI EMULATION SUPPORT ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABLE = TRUE) ; -#DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M -; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT -; -; CPM DRIVE MAPPING TABLE, DRIVE LETTERS ARE ASSIGNED SEQUENTIALLY -; DRVENT(DEVICE,UNIT,SLICE,DPH) -; -#DEFINE DRVLST \ -#DEFCONT DRVENT(DIODEV_MD,1,0,0) ; A: = MD1 = RAM DISK -#DEFCONT DRVENT(DIODEV_MD,0,0,0) ; B: = MD0 = ROM DISK -#DEFCONT DRVENT(DIODEV_FD,0,0,0) ; C: = FD0 = FLOPPY DISK UNIT 0 -#DEFCONT DRVENT(DIODEV_FD,1,0,0) ; D: = FD1 = FLOPPY DISK UNIT 1 -#DEFCONT DRVENT(DIODEV_IDE,0,0,0) ; E: = IDE0:0 = IDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_IDE,0,1,0) ; F: = IDE0:1 = IDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_IDE,0,2,0) ; G: = IDE0:2 = IDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_IDE,0,3,0) ; H: = IDE0:3 = IDE UNIT 0, SLICE 0 +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT +; +#DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M diff --git a/Source/config_n8vem_diskio.asm b/Source/BIOS/Config/n8vem_diskio.asm similarity index 87% rename from Source/config_n8vem_diskio.asm rename to Source/BIOS/Config/n8vem_diskio.asm index 27f9e2a3..9d7fa376 100644 --- a/Source/config_n8vem_diskio.asm +++ b/Source/BIOS/Config/n8vem_diskio.asm @@ -103,19 +103,6 @@ ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABL ; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT ; #DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M -; -; CPM DRIVE MAPPING TABLE, DRIVE LETTERS ARE ASSIGNED SEQUENTIALLY -; DRVENT(DEVICE,UNIT,SLICE,DPH) -; -#DEFINE DRVLST \ -#DEFCONT DRVENT(DIODEV_MD,1,0,0) ; A: = MD1 = RAM DISK -#DEFCONT DRVENT(DIODEV_MD,0,0,0) ; B: = MD0 = ROM DISK -#DEFCONT DRVENT(DIODEV_FD,0,0,0) ; C: = FD0 = FLOPPY DISK UNIT 0 -#DEFCONT DRVENT(DIODEV_FD,1,0,0) ; D: = FD1 = FLOPPY DISK UNIT 1 -#DEFCONT DRVENT(DIODEV_IDE,0,0,0) ; E: = IDE0:0 = IDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_IDE,0,1,0) ; F: = IDE0:1 = IDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_IDE,0,2,0) ; G: = IDE0:2 = IDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_IDE,0,3,0) ; H: = IDE0:3 = IDE UNIT 0, SLICE 0 diff --git a/Source/config_n8vem_diskio3+cvdu.asm b/Source/BIOS/Config/n8vem_diskio3+cvdu.asm similarity index 87% rename from Source/config_n8vem_diskio3+cvdu.asm rename to Source/BIOS/Config/n8vem_diskio3+cvdu.asm index 9a6c25de..7a44bb3b 100644 --- a/Source/config_n8vem_diskio3+cvdu.asm +++ b/Source/BIOS/Config/n8vem_diskio3+cvdu.asm @@ -103,19 +103,6 @@ ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABL ; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT ; #DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M -; -; CPM DRIVE MAPPING TABLE, DRIVE LETTERS ARE ASSIGNED SEQUENTIALLY -; DRVENT(DEVICE,UNIT,SLICE,DPH) -; -#DEFINE DRVLST \ -#DEFCONT DRVENT(DIODEV_MD,1,0,0) ; A: = MD1 = RAM DISK -#DEFCONT DRVENT(DIODEV_MD,0,0,0) ; B: = MD0 = ROM DISK -#DEFCONT DRVENT(DIODEV_FD,0,0,0) ; C: = FD0 = FLOPPY DISK UNIT 0 -#DEFCONT DRVENT(DIODEV_FD,1,0,0) ; D: = FD1 = FLOPPY DISK UNIT 1 -#DEFCONT DRVENT(DIODEV_PPIDE,0,0,0) ; E: = PPIDE0:0 = PPIDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PPIDE,0,1,0) ; F: = PPIDE0:1 = PPIDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PPIDE,0,2,0) ; G: = PPIDE0:2 = PPIDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PPIDE,0,3,0) ; H: = PPIDE0:3 = PPIDE UNIT 0, SLICE 0 diff --git a/Source/config_n8vem_diskio3.asm b/Source/BIOS/Config/n8vem_diskio3.asm similarity index 87% rename from Source/config_n8vem_diskio3.asm rename to Source/BIOS/Config/n8vem_diskio3.asm index 2bb7bfef..8e9c11be 100644 --- a/Source/config_n8vem_diskio3.asm +++ b/Source/BIOS/Config/n8vem_diskio3.asm @@ -103,19 +103,6 @@ ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABL ; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT ; #DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M -; -; CPM DRIVE MAPPING TABLE, DRIVE LETTERS ARE ASSIGNED SEQUENTIALLY -; DRVENT(DEVICE,UNIT,SLICE,DPH) -; -#DEFINE DRVLST \ -#DEFCONT DRVENT(DIODEV_MD,1,0,0) ; A: = MD1 = RAM DISK -#DEFCONT DRVENT(DIODEV_MD,0,0,0) ; B: = MD0 = ROM DISK -#DEFCONT DRVENT(DIODEV_FD,0,0,0) ; C: = FD0 = FLOPPY DISK UNIT 0 -#DEFCONT DRVENT(DIODEV_FD,1,0,0) ; D: = FD1 = FLOPPY DISK UNIT 1 -#DEFCONT DRVENT(DIODEV_PPIDE,0,0,0) ; E: = PPIDE0:0 = PPIDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PPIDE,0,1,0) ; F: = PPIDE0:1 = PPIDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PPIDE,0,2,0) ; G: = PPIDE0:2 = PPIDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PPIDE,0,3,0) ; H: = PPIDE0:3 = PPIDE UNIT 0, SLICE 0 diff --git a/Source/config_n8vem_dsd.asm b/Source/BIOS/Config/n8vem_dsd.asm similarity index 87% rename from Source/config_n8vem_dsd.asm rename to Source/BIOS/Config/n8vem_dsd.asm index 7d515c2c..142dadcd 100644 --- a/Source/config_n8vem_dsd.asm +++ b/Source/BIOS/Config/n8vem_dsd.asm @@ -103,19 +103,6 @@ ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABL ; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT ; #DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M -; -; CPM DRIVE MAPPING TABLE, DRIVE LETTERS ARE ASSIGNED SEQUENTIALLY -; DRVENT(DEVICE,UNIT,SLICE,DPH) -; -#DEFINE DRVLST \ -#DEFCONT DRVENT(DIODEV_MD,1,0,0) ; A: = MD1 = RAM DISK -#DEFCONT DRVENT(DIODEV_MD,0,0,0) ; B: = MD0 = ROM DISK -#DEFCONT DRVENT(DIODEV_FD,0,0,0) ; C: = FD0 = FLOPPY DISK UNIT 0 -#DEFCONT DRVENT(DIODEV_FD,1,0,0) ; D: = FD1 = FLOPPY DISK UNIT 1 -#DEFCONT DRVENT(DIODEV_SD,0,0,0) ; E: = SD0:0 = SD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_SD,0,1,0) ; F: = SD0:1 = SD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_SD,0,2,0) ; G: = SD0:2 = SD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_SD,0,3,0) ; H: = SD0:3 = SD UNIT 0, SLICE 0 diff --git a/Source/config_n8vem_mfp.asm b/Source/BIOS/Config/n8vem_mfp.asm similarity index 87% rename from Source/config_n8vem_mfp.asm rename to Source/BIOS/Config/n8vem_mfp.asm index e48bb61d..821e4577 100644 --- a/Source/config_n8vem_mfp.asm +++ b/Source/BIOS/Config/n8vem_mfp.asm @@ -107,19 +107,6 @@ ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABL ; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT ; #DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M -; -; CPM DRIVE MAPPING TABLE, DRIVE LETTERS ARE ASSIGNED SEQUENTIALLY -; DRVENT(DEVICE,UNIT,SLICE,DPH) -; -#DEFINE DRVLST \ -#DEFCONT DRVENT(DIODEV_MD,1,0,0) ; A: = MD1 = RAM DISK -#DEFCONT DRVENT(DIODEV_MD,0,0,0) ; B: = MD0 = ROM DISK -#DEFCONT DRVENT(DIODEV_FD,0,0,0) ; C: = FD0 = FLOPPY DISK UNIT 0 -#DEFCONT DRVENT(DIODEV_FD,1,0,0) ; D: = FD1 = FLOPPY DISK UNIT 1 -#DEFCONT DRVENT(DIODEV_PPIDE,0,0,0) ; E: = PPIDE0:0 = PPIDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PPIDE,0,1,0) ; F: = PPIDE0:1 = PPIDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PPIDE,0,2,0) ; G: = PPIDE0:2 = PPIDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PPIDE,0,3,0) ; H: = PPIDE0:3 = PPIDE UNIT 0, SLICE 0 diff --git a/Source/config_n8vem_ppide.asm b/Source/BIOS/Config/n8vem_ppide.asm similarity index 87% rename from Source/config_n8vem_ppide.asm rename to Source/BIOS/Config/n8vem_ppide.asm index 45c0d9e8..cc21195e 100644 --- a/Source/config_n8vem_ppide.asm +++ b/Source/BIOS/Config/n8vem_ppide.asm @@ -103,19 +103,6 @@ ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABL ; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT ; #DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M -; -; CPM DRIVE MAPPING TABLE, DRIVE LETTERS ARE ASSIGNED SEQUENTIALLY -; DRVENT(DEVICE,UNIT,SLICE,DPH) -; -#DEFINE DRVLST \ -#DEFCONT DRVENT(DIODEV_MD,1,0,0) ; A: = MD1 = RAM DISK -#DEFCONT DRVENT(DIODEV_MD,0,0,0) ; B: = MD0 = ROM DISK -#DEFCONT DRVENT(DIODEV_FD,0,0,0) ; C: = FD0 = FLOPPY DISK UNIT 0 -#DEFCONT DRVENT(DIODEV_FD,1,0,0) ; D: = FD1 = FLOPPY DISK UNIT 1 -#DEFCONT DRVENT(DIODEV_PPIDE,0,0,0) ; E: = PPIDE0:0 = PPIDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PPIDE,0,1,0) ; F: = PPIDE0:1 = PPIDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PPIDE,0,2,0) ; G: = PPIDE0:2 = PPIDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PPIDE,0,3,0) ; H: = PPIDE0:3 = PPIDE UNIT 0, SLICE 0 diff --git a/Source/config_n8vem_ppisd.asm b/Source/BIOS/Config/n8vem_ppisd.asm similarity index 87% rename from Source/config_n8vem_ppisd.asm rename to Source/BIOS/Config/n8vem_ppisd.asm index 04cc02ed..eaa0a2b4 100644 --- a/Source/config_n8vem_ppisd.asm +++ b/Source/BIOS/Config/n8vem_ppisd.asm @@ -103,19 +103,6 @@ ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABL ; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT ; #DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M -; -; CPM DRIVE MAPPING TABLE, DRIVE LETTERS ARE ASSIGNED SEQUENTIALLY -; DRVENT(DEVICE,UNIT,SLICE,DPH) -; -#DEFINE DRVLST \ -#DEFCONT DRVENT(DIODEV_MD,1,0,0) ; A: = MD1 = RAM DISK -#DEFCONT DRVENT(DIODEV_MD,0,0,0) ; B: = MD0 = ROM DISK -#DEFCONT DRVENT(DIODEV_FD,0,0,0) ; C: = FD0 = FLOPPY DISK UNIT 0 -#DEFCONT DRVENT(DIODEV_FD,1,0,0) ; D: = FD1 = FLOPPY DISK UNIT 1 -#DEFCONT DRVENT(DIODEV_SD,0,0,0) ; E: = SD0:0 = SD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_SD,0,1,0) ; F: = SD0:1 = SD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_SD,0,2,0) ; G: = SD0:2 = SD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_SD,0,3,0) ; H: = SD0:3 = SD UNIT 0, SLICE 0 diff --git a/Source/config_n8vem_propio.asm b/Source/BIOS/Config/n8vem_propio.asm similarity index 89% rename from Source/config_n8vem_propio.asm rename to Source/BIOS/Config/n8vem_propio.asm index 328c1330..df7b14d1 100644 --- a/Source/config_n8vem_propio.asm +++ b/Source/BIOS/Config/n8vem_propio.asm @@ -103,17 +103,6 @@ ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABL ; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT ; #DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M -; -; CPM DRIVE MAPPING TABLE, DRIVE LETTERS ARE ASSIGNED SEQUENTIALLY -; DRVENT(DEVICE,UNIT,SLICE,DPH) -; -#DEFINE DRVLST \ -#DEFCONT DRVENT(DIODEV_MD,1,0,0) ; A: = MD1 = RAM DISK -#DEFCONT DRVENT(DIODEV_MD,0,0,0) ; B: = MD0 = ROM DISK -#DEFCONT DRVENT(DIODEV_PRPSD,0,0,0) ; C: = PRPSD0:0 = PRPSD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PRPSD,0,1,0) ; D: = PRPSD0:1 = PRPSD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PRPSD,0,2,0) ; E: = PRPSD0:2 = PRPSD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PRPSD,0,3,0) ; F: = PRPSD0:3 = PRPSD UNIT 0, SLICE 0 diff --git a/Source/config_n8vem_rf.asm b/Source/BIOS/Config/n8vem_rf.asm similarity index 92% rename from Source/config_n8vem_rf.asm rename to Source/BIOS/Config/n8vem_rf.asm index 6f6a9f5f..f973fcf7 100644 --- a/Source/config_n8vem_rf.asm +++ b/Source/BIOS/Config/n8vem_rf.asm @@ -103,15 +103,6 @@ ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABL ; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT ; #DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M -; -; CPM DRIVE MAPPING TABLE, DRIVE LETTERS ARE ASSIGNED SEQUENTIALLY -; DRVENT(DEVICE,UNIT,SLICE,DPH) -; -#DEFINE DRVLST \ -#DEFCONT DRVENT(DIODEV_MD,1,0,0) ; A: = MD1 = RAM DISK -#DEFCONT DRVENT(DIODEV_MD,0,0,0) ; B: = MD0 = ROM DISK -#DEFCONT DRVENT(DIODEV_RF,0,0,0) ; C: = RF0 -#DEFCONT DRVENT(DIODEV_RF,1,0,0) ; D: = RF1 diff --git a/Source/config_n8vem_simh.asm b/Source/BIOS/Config/n8vem_simh.asm similarity index 87% rename from Source/config_n8vem_simh.asm rename to Source/BIOS/Config/n8vem_simh.asm index a78b8ea5..2e3eddc5 100644 --- a/Source/config_n8vem_simh.asm +++ b/Source/BIOS/Config/n8vem_simh.asm @@ -103,21 +103,6 @@ ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABL ; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT ; #DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M -; -; CPM DRIVE MAPPING TABLE, DRIVE LETTERS ARE ASSIGNED SEQUENTIALLY -; DRVENT(DEVICE,UNIT,SLICE,DPH) -; -#DEFINE DRVLST \ -#DEFCONT DRVENT(DIODEV_MD,1,0,0) ; A: = MD1 = RAM DISK -#DEFCONT DRVENT(DIODEV_MD,0,0,0) ; B: = MD0 = ROM DISK -#DEFCONT DRVENT(DIODEV_HDSK,0,0,0) ; C: = HDSK0:0 -#DEFCONT DRVENT(DIODEV_HDSK,0,1,0) ; D: = HDSK0:1 -#DEFCONT DRVENT(DIODEV_HDSK,0,2,0) ; E: = HDSK0:2 -#DEFCONT DRVENT(DIODEV_HDSK,0,3,0) ; F: = HDSK0:3 -#DEFCONT DRVENT(DIODEV_HDSK,1,0,0) ; G: = HDSK1:0 -#DEFCONT DRVENT(DIODEV_HDSK,1,1,0) ; H: = HDSK1:1 -#DEFCONT DRVENT(DIODEV_HDSK,1,2,0) ; I: = HDSK1:2 -#DEFCONT DRVENT(DIODEV_HDSK,1,3,0) ; J: = HDSK1:3 diff --git a/Source/config_n8vem_std.asm b/Source/BIOS/Config/n8vem_std.asm similarity index 93% rename from Source/config_n8vem_std.asm rename to Source/BIOS/Config/n8vem_std.asm index cf997ea6..68eaf108 100644 --- a/Source/config_n8vem_std.asm +++ b/Source/BIOS/Config/n8vem_std.asm @@ -103,13 +103,6 @@ ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABL ; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT ; #DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M -; -; CPM DRIVE MAPPING TABLE, DRIVE LETTERS ARE ASSIGNED SEQUENTIALLY -; DRVENT(DEVICE,UNIT,SLICE,DPH) -; -#DEFINE DRVLST \ -#DEFCONT DRVENT(DIODEV_MD,1,0,0) ; A: = MD1 = RAM DISK -#DEFCONT DRVENT(DIODEV_MD,0,0,0) ; B: = MD0 = ROM DISK diff --git a/Source/config_n8vem_vdu.asm b/Source/BIOS/Config/n8vem_vdu.asm similarity index 87% rename from Source/config_n8vem_vdu.asm rename to Source/BIOS/Config/n8vem_vdu.asm index acf81e1c..cc7ea309 100644 --- a/Source/config_n8vem_vdu.asm +++ b/Source/BIOS/Config/n8vem_vdu.asm @@ -103,19 +103,6 @@ ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABL ; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT ; #DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M -; -; CPM DRIVE MAPPING TABLE, DRIVE LETTERS ARE ASSIGNED SEQUENTIALLY -; DRVENT(DEVICE,UNIT,SLICE,DPH) -; -#DEFINE DRVLST \ -#DEFCONT DRVENT(DIODEV_MD,1,0,0) ; A: = MD1 = RAM DISK -#DEFCONT DRVENT(DIODEV_MD,0,0,0) ; B: = MD0 = ROM DISK -#DEFCONT DRVENT(DIODEV_FD,0,0,0) ; C: = FD0 = FLOPPY DISK UNIT 0 -#DEFCONT DRVENT(DIODEV_FD,1,0,0) ; D: = FD1 = FLOPPY DISK UNIT 1 -#DEFCONT DRVENT(DIODEV_PPIDE,0,0,0) ; E: = PPIDE0:0 = PPIDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PPIDE,0,1,0) ; F: = PPIDE0:1 = PPIDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PPIDE,0,2,0) ; G: = PPIDE0:2 = PPIDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PPIDE,0,3,0) ; H: = PPIDE0:3 = PPIDE UNIT 0, SLICE 0 diff --git a/Source/config_una_std.asm b/Source/BIOS/Config/una_std.asm similarity index 92% rename from Source/config_una_std.asm rename to Source/BIOS/Config/una_std.asm index 3b482816..6a7aa4ff 100644 --- a/Source/config_una_std.asm +++ b/Source/BIOS/Config/una_std.asm @@ -17,6 +17,6 @@ DSKTRACE .EQU FALSE ; ENABLE TRACING OF CBIOS DISK FUNCTION CALLS ; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 21 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT ; #DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M diff --git a/Source/config_zeta_ppisd.asm b/Source/BIOS/Config/zeta_ppisd.asm similarity index 87% rename from Source/config_zeta_ppisd.asm rename to Source/BIOS/Config/zeta_ppisd.asm index 5a5f6914..075a56af 100644 --- a/Source/config_zeta_ppisd.asm +++ b/Source/BIOS/Config/zeta_ppisd.asm @@ -103,19 +103,6 @@ ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABL ; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT ; #DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M -; -; CPM DRIVE MAPPING TABLE, DRIVE LETTERS ARE ASSIGNED SEQUENTIALLY -; DRVENT(DEVICE,UNIT,SLICE,DPH) -; -#DEFINE DRVLST \ -#DEFCONT DRVENT(DIODEV_MD,1,0,0) ; A: = MD1 = RAM DISK -#DEFCONT DRVENT(DIODEV_MD,0,0,0) ; B: = MD0 = ROM DISK -#DEFCONT DRVENT(DIODEV_FD,0,0,0) ; C: = FD0 = FLOPPY DISK UNIT 0 -#DEFCONT DRVENT(DIODEV_FD,1,0,0) ; D: = FD1 = FLOPPY DISK UNIT 1 -#DEFCONT DRVENT(DIODEV_SD,0,0,0) ; E: = SD0:0 = SD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_SD,0,1,0) ; F: = SD0:1 = SD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_SD,0,2,0) ; G: = SD0:2 = SD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_SD,0,3,0) ; H: = SD0:3 = SD UNIT 0, SLICE 0 diff --git a/Source/config_zeta_ppp.asm b/Source/BIOS/Config/zeta_ppp.asm similarity index 87% rename from Source/config_zeta_ppp.asm rename to Source/BIOS/Config/zeta_ppp.asm index 58a62d37..1ddfe8dd 100644 --- a/Source/config_zeta_ppp.asm +++ b/Source/BIOS/Config/zeta_ppp.asm @@ -103,19 +103,6 @@ ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABL ; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT ; #DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M -; -; CPM DRIVE MAPPING TABLE, DRIVE LETTERS ARE ASSIGNED SEQUENTIALLY -; DRVENT(DEVICE,UNIT,SLICE,DPH) -; -#DEFINE DRVLST \ -#DEFCONT DRVENT(DIODEV_MD,1,0,0) ; A: = MD1 = RAM DISK -#DEFCONT DRVENT(DIODEV_MD,0,0,0) ; B: = MD0 = ROM DISK -#DEFCONT DRVENT(DIODEV_FD,0,0,0) ; C: = FD0 = FLOPPY DISK UNIT 0 -#DEFCONT DRVENT(DIODEV_FD,1,0,0) ; D: = FD1 = FLOPPY DISK UNIT 1 -#DEFCONT DRVENT(DIODEV_PPPSD,0,0,0) ; E: = PPPSD0:0 = PPPSD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PPPSD,0,1,0) ; F: = PPPSD0:1 = PPPSD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PPPSD,0,2,0) ; G: = PPPSD0:2 = PPPSD UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PPPSD,0,3,0) ; H: = PPPSD0:3 = PPPSD UNIT 0, SLICE 0 diff --git a/Source/config_zeta_std.asm b/Source/BIOS/Config/zeta_std.asm similarity index 87% rename from Source/config_zeta_std.asm rename to Source/BIOS/Config/zeta_std.asm index ce4fe4a0..d17e590b 100644 --- a/Source/config_zeta_std.asm +++ b/Source/BIOS/Config/zeta_std.asm @@ -103,19 +103,6 @@ ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABL ; BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE -BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT +BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT ; #DEFINE AUTOCMD "" ; AUTO STARTUP COMMAND FOR CP/M -; -; CPM DRIVE MAPPING TABLE, DRIVE LETTERS ARE ASSIGNED SEQUENTIALLY -; DRVENT(DEVICE,UNIT,SLICE,DPH) -; -#DEFINE DRVLST \ -#DEFCONT DRVENT(DIODEV_MD,1,0,0) ; A: = MD1 = RAM DISK -#DEFCONT DRVENT(DIODEV_MD,0,0,0) ; B: = MD0 = ROM DISK -#DEFCONT DRVENT(DIODEV_FD,0,0,0) ; C: = FD0 = FLOPPY DISK UNIT 0 -#DEFCONT DRVENT(DIODEV_FD,1,0,0) ; D: = FD1 = FLOPPY DISK UNIT 1 -#DEFCONT DRVENT(DIODEV_PPIDE,0,0,0) ; E: = PPIDE0:0 = PPIDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PPIDE,0,1,0) ; F: = PPIDE0:1 = PPIDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PPIDE,0,2,0) ; G: = PPIDE0:2 = PPIDE UNIT 0, SLICE 0 -#DEFCONT DRVENT(DIODEV_PPIDE,0,3,0) ; H: = PPIDE0:3 = PPIDE UNIT 0, SLICE 0 diff --git a/Source/Make.cmd b/Source/BIOS/Make.cmd similarity index 100% rename from Source/Make.cmd rename to Source/BIOS/Make.cmd diff --git a/Source/MakeBlankROM.ps1 b/Source/BIOS/MakeBlankROM.ps1 similarity index 98% rename from Source/MakeBlankROM.ps1 rename to Source/BIOS/MakeBlankROM.ps1 index ffa9b132..00e280a2 100644 --- a/Source/MakeBlankROM.ps1 +++ b/Source/BIOS/MakeBlankROM.ps1 @@ -3,9 +3,8 @@ Set-Content -Value ([byte[]](0xE5) * (512KB - 64KB)) -Encoding byte -Path 'Blank512KB.dat' Set-Content -Value ([byte[]](0xE5) * (1MB - 64KB)) -Encoding byte -Path 'Blank1024KB.dat' -Set-Content -Value ([byte[]](0xE5) * (512KB - 160KB)) -Encoding byte -Path 'Blank512KB-UNALOAD.dat' -Set-Content -Value ([byte[]](0xE5) * (1MB - 160KB)) -Encoding byte -Path 'Blank1024KB-UNALOAD.dat' - Set-Content -Value ([byte[]](0xE5) * (512KB - 128KB)) -Encoding byte -Path 'Blank512KB-UNA.dat' Set-Content -Value ([byte[]](0xE5) * (1MB - 128KB)) -Encoding byte -Path 'Blank1024KB-UNA.dat' +Set-Content -Value ([byte[]](0xE5) * (512KB - 160KB)) -Encoding byte -Path 'Blank512KB-UNALOAD.dat' +Set-Content -Value ([byte[]](0xE5) * (1MB - 160KB)) -Encoding byte -Path 'Blank1024KB-UNALOAD.dat' diff --git a/UNA/FSFAT.BIN b/Source/BIOS/UNA/FSFAT.BIN similarity index 100% rename from UNA/FSFAT.BIN rename to Source/BIOS/UNA/FSFAT.BIN diff --git a/UNA/UNA-BIOS.BIN b/Source/BIOS/UNA/UNA-BIOS.BIN similarity index 100% rename from UNA/UNA-BIOS.BIN rename to Source/BIOS/UNA/UNA-BIOS.BIN diff --git a/Source/ansi.asm b/Source/BIOS/ansi.asm similarity index 100% rename from Source/ansi.asm rename to Source/BIOS/ansi.asm diff --git a/Source/asci.asm b/Source/BIOS/asci.asm similarity index 100% rename from Source/asci.asm rename to Source/BIOS/asci.asm diff --git a/Source/bioshdr.inc b/Source/BIOS/bioshdr.inc similarity index 100% rename from Source/bioshdr.inc rename to Source/BIOS/bioshdr.inc diff --git a/Source/blank1024KB.dat b/Source/BIOS/blank1024KB.dat similarity index 100% rename from Source/blank1024KB.dat rename to Source/BIOS/blank1024KB.dat diff --git a/Source/blank512KB.dat b/Source/BIOS/blank512KB.dat similarity index 100% rename from Source/blank512KB.dat rename to Source/BIOS/blank512KB.dat diff --git a/Source/bootapp.asm b/Source/BIOS/bootapp.asm similarity index 92% rename from Source/bootapp.asm rename to Source/BIOS/bootapp.asm index 42276a6d..26430385 100644 --- a/Source/bootapp.asm +++ b/Source/BIOS/bootapp.asm @@ -91,7 +91,8 @@ ; #IF (PLATFORM == PLT_UNA) ; IF RUNNING UNDER UNA, WE ARE DONE, PROCEED TO LOADER - JP $8400 ; JUMP TO LOADER + LD DE,$0100 ; *** FIX *** ASSUME WE WANT DEFAULT DRIVE TO BE ROM + JP CPM_ENT ; JUMP TO OS #ELSE ; NON-UNA REQUIRES PHASE 2 JP PHASE2 ; JUMP TO PHASE 2 BOOT IN UPPER MEMORY @@ -158,7 +159,8 @@ LOOP: CALL PGSEL ; SELECT IT CALL HBX_LOC ; CALL HBIOS PROXY INITIALIZATION ; - JP $8400 ; JUMP TO LOADER + LD DE,$0000 ; ASSUME WE WANT DEFAULT DRIVE TO BE ROM + JP CPM_ENT ; JUMP TO OS ;______________________________________________________________________________________________________________________ ; ; NOTE THAT MEMORY MANAGER CODE IS IN UPPER MEMORY! diff --git a/Source/bootgen.asm b/Source/BIOS/bootgen.asm similarity index 100% rename from Source/bootgen.asm rename to Source/BIOS/bootgen.asm diff --git a/Source/bootrom.asm b/Source/BIOS/bootrom.asm similarity index 90% rename from Source/bootrom.asm rename to Source/BIOS/bootrom.asm index 2c9a980b..2cdd801b 100644 --- a/Source/bootrom.asm +++ b/Source/BIOS/bootrom.asm @@ -67,13 +67,11 @@ LD HL,STR_BOOT ; POINT TO MESSAGE CALL XIO_OUTS ; SAY HELLO ; -; COPY ENTIRE CONTENTS OF ROM BANK TO HI RAM -; THIS INCLUDES OURSELVES (FOR PHASE 2) AND THE LOADER CODE -; CAREFUL, WORKING STACK AREA IS WIPED OUT!!! +; COPY OURSELVES AND LOADER TO HI RAM FOR PHASE 2 ; LD HL,0 ; COPY FROM START OF ROM IMAGE LD DE,$8000 ; TO HIMEM $8000 - LD BC,$8000 - $400 ; ALL BUT TOP 1K TO AVOID OVERLAYING PROXY + LD BC,$1000 ; COPY 4K LDIR ; CALL XIO_DOT ; MARK PROGRESS @@ -145,7 +143,7 @@ LOOP: CP $80 ; HIGH BYTE WILL BE $80 WHEN WE ARE DONE JP NZ,LOOP ; IF NOT DONE, LOOP TO DO NEXT 4K CHUNK ; - LD A,BID_BOOT ; ROM PAGE WITH HBIOS IMAGE + LD A,BID_BOOT ; ROM PAGE WITH BOOT IMAGE CALL PGSEL ; SELECT IT CALL XIO_DOT ; MARK PROGRESS ; diff --git a/Source/cbios.asm b/Source/BIOS/cbios.asm similarity index 90% rename from Source/cbios.asm rename to Source/BIOS/cbios.asm index e2b076f2..9ddf0e1b 100644 --- a/Source/cbios.asm +++ b/Source/BIOS/cbios.asm @@ -67,9 +67,10 @@ STPSIZ .EQU $ - STPIMG ; RomWBW CBIOS. A pointer to the start of this section is stored with ; with the ZPX data in page zero at $44 (see above). ; -CBX: .DW DEVMAP ; DEVICE MAP ADDRESS - .DW DRVMAP ; DRIVE MAP ADDRESS - .DW DPBMAP ; DPB MAP ADDRESS +CBX: +DEVMAPADR .DW DEVMAP ; DEVICE MAP ADDRESS +DRVMAPADR .DW 0 ; DRIVE MAP ADDRESS (FILLED IN LATER) +DPBMAPADR .DW DPBMAP ; DPB MAP ADDRESS ; CBXSIZ .EQU $ - CBX .ECHO "CBIOS extension info occupies " @@ -171,40 +172,18 @@ DEVCNT .EQU ($ - DEVMAP) .ECHO " Input/Output devices defined.\n" ; ;================================================================================================== -; DISK MAPPING TABLE +; DRIVE MAPPING TABLE ;================================================================================================== ; -; This table maps logical CP/M drive letters to the physical device, -; unit, and slice within the HBIOS. Additionally, each entry is mapped -; to a dedicated CP/M DPH structure for the drive. +; Disk mapping is done using a drive map table (DRVMAP) which is built +; dynamically at cold boot. See the DRV_INIT routine. This table is +; made up of entries as documented below. The table is prefixed with one +; byte indicating the number of entries. The index of the entry indicates +; the drive letter, so the first entry is A:, the second entry is B:, etc. ; -; The position of the entry in the table determines the CP/M drive being -; mapped. First entry is A:, second entry is B:, etc. -; -; Note that this table is intended to be modified dynamically to allow -; user remapping of drives. Warning: BDOS drives must be reset and -; warm start performed if this table is changed dynamically. The application -; making changes to this table is responsible for ensuring the changes -; are valid and appropriate or very bad things will happen. -; - -#IF (PLATFORM == PLT_UNA) -DRVMAP .EQU 0 ; MANAGED DYNAMICALLY FOR UNA -#ELSE -; -#DEFINE DRVENT(DEV,UNIT,SLICE,DPHADR) \ -#DEFCONT .DB DEV | UNIT \ -#DEFCONT .DB SLICE \ -#DEFCONT .DW DPHADR -; - .DB DRVCNT -DRVMAP: DRVLST -; -DRVCNT .EQU ($ - DRVMAP) / 4 - .ECHO DRVCNT - .ECHO " drive letters defined.\n" -; -#ENDIF +; BYTE: DEVICE/UNIT (OR JUST UNIT FOR UNA) +; BYTE: SLICE +; WORD: ADDRESS OF DPH FOR THE DRIVE ; ;================================================================================================== ; DPB MAPPING TABLE @@ -340,7 +319,7 @@ GOCPM: ; ; ENSURE VALID DISK AND JUMP TO CCP LD A,(CDISK) ; GET CURRENT USER/DISK - AND $F ; ISOLATE DISK PART + AND $0F ; ISOLATE DISK PART LD C,A ; SETUP C WITH CURRENT USER/DISK, ASSUME IT IS OK CALL DSK_STATUS ; CHECK DISK STATUS JR Z,CURDSK ; ZERO MEANS OK @@ -381,7 +360,7 @@ GOMON: ; ;__________________________________________________________________________________________________ CONST: -; CONSOLE STATUS, RETURN 0FFH IF CHARACTER READY, 00H IF NOT +; CONSOLE STATUS, RETURN $FF IF CHARACTER READY, $00 IF NOT ; LD B,BF_CIOIST ; B = FUNCTION LD HL,CIOST ; HL = ADDRESS OF COMPLETION ROUTINE @@ -525,7 +504,7 @@ CIO_DISP: PUSH HL ; PUT COMPLETION ROUTINE ON STACK ; LOOKUP IOBYTE MAPPED DEVICE CODE - AND 0FH ; ISOLATE INDEX INTO DEVICE MAP + AND $0F ; ISOLATE INDEX INTO DEVICE MAP LD HL,DEVMAP ; HL = ADDRESS OF DEVICE MAP CALL ADDHLA ; ADD OFFSET @@ -545,7 +524,7 @@ CIO_DISP: CIO_DISP1: ; HANDLE SPECIAL DEVICES - AND 0F0H ; ISOLATE DEVICE + AND $F0 ; ISOLATE DEVICE CP CIODEV_BAT ; BAT: ? JR Z,CIO_BAT ; YES, GO TO BAT DEVICE HANDLER CP CIODEV_NUL ; NUL: ? @@ -1068,11 +1047,7 @@ BLK_SETUP: ; ON RETURN, D=DEVICE/UNIT, E=SLICE, HL=DPH ADDRESS ; DSK_GETINF: -#IF (PLATFORM == PLT_UNA) - LD HL,(UNA_DRVMAP) ; HL := START OF UNA DRIVE MAP -#ELSE - LD HL,DRVMAP ; HL := START OF DRIVE MAP -#ENDIF + LD HL,(DRVMAPADR) ; HL := START OF UNA DRIVE MAP DEC HL ; POINT TO DRIVE COUNT LD A,C ; A := CPM DRIVE CP (HL) ; COMPARE TO NUMBER OF DRIVES CONFIGURED @@ -1415,7 +1390,7 @@ DSKOP: .DB 0 ; DISK OPERATION (DOP_READ/DOP_WRITE) WRTYPE: .DB 0 ; WRITE TYPE (0=NORMAL, 1=DIR (FORCE), 2=FIRST RECORD OF BLOCK) DMAADR: .DW 0 ; DIRECT MEMORY ADDRESS HSTWRT: .DB 0 ; TRUE = BUFFER IS DIRTY -BUFADR: .DW $8000-$400 ; ADDRESS OF PHYSICAL SECTOR BUFFER (DEFAULT MATCHES HBIOS) +BUFADR: .DW $8000-$0400 ; ADDRESS OF PHYSICAL SECTOR BUFFER (DEFAULT MATCHES HBIOS) ; ; DISK I/O REQUEST PENDING ; @@ -1464,10 +1439,6 @@ UNASIZ .EQU $ - UNA UNACNT: .DB 0 ; COUNT DOWN UNALLOCATED RECORDS IN BLOCK UNASPT: .DW 0 ; SECTORS PER TRACK ; -#IF (PLATFORM == PLT_UNA) -UNA_DRVMAP .DW 0 -#ENDIF -; ;================================================================================================== ; DISK CONTROL STRUCTURES (DPB, DPH) ;================================================================================================== @@ -1713,6 +1684,9 @@ BUFPOOL .EQU $ ; START OF BUFFER POOL .FILL 16 * 16,0 ; RESERVED FOR DPH TABLE ; INIT: + ; SAVE INCOMING BOOT DEVICE/UNIT & LU + LD (BOOTDL),DE ; D -> BOOTDEV, E -> BOOTLU + ; THIS INIT CODE WILL BE OVERLAID, SO WE ARE GOING ; TO MODIFY THE BOOT ENTRY POINT TO CAUSE A PANIC ; TO EASILY IDENTIFY IF SOMETHING TRIES TO INVOKE @@ -1749,10 +1723,9 @@ INIT1: LD (IOBYTE),A ; SET THE ACTIVE IOBYTE #ENDIF - ; DEFAULT DRIVE + ; INIT DEFAULT DRIVE TO A: FOR NOW XOR A ; ZERO LD (DEFDRIVE),A ; STORE IT - LD (CDISK),A ; SETUP CDISK ; STARTUP MESSAGE CALL NEWLINE ; FORMATTING @@ -1767,12 +1740,12 @@ INIT1: RST 08 ; DO IT CALL NZ,PANIC ; BIG PROBLEM LD (CCPBUF),HL ; SAVE THE ADDRESS (IN BIOS MEM) - + LD BC,$01FB ; UNA FUNC = SET BANK LD DE,$800D ; UBIOS_PAGE (SEE PAGES.INC) RST 08 ; DO IT PUSH DE ; SAVE PREVIOUS BANK - + LD HL,CPM_LOC ; ADDRESS IN HI MEM OF CCP LD DE,(CCPBUF) ; ADDRESS OF CCP BUF IN BIOS MEM LD BC,CCPSIZ ; SIZE OF CCP @@ -1787,17 +1760,15 @@ INIT1: LD B,BID_HB ; C = DEST BANK = HB BANK CALL HB_XCOPY ; SET BANKS FOR INTERBANK COPY LD HL,CPM_LOC ; COPY FROM CCP LOCATION IN USR BANK - LD DE,$800 ; TO FIXED LOCATION IN HB BANK + LD DE,$0800 ; TO FIXED LOCATION IN HB BANK LD BC,CCPSIZ ; COPY CONTENTS OF COMMAND PROCESSOR CALL HB_COPY ; DO IT #ENDIF - ; SYSTEM INITIALIZATION + ; DISK SYSTEM INITIALIZATION CALL BLKRES ; RESET DISK (DE)BLOCKING ALGORITHM CALL MD_INIT ; INITIALIZE MEMORY DISK DRIVER (RAM/ROM) -#IF (PLATFORM == PLT_UNA) - CALL UNA_INIT -#ENDIF + CALL DRV_INIT ; INITIALIZE DRIVE MAP CALL DPH_INIT ; INITIALIZE DPH TABLE AND BUFFERS CALL NEWLINE ; FORMATTING ; @@ -1811,6 +1782,9 @@ INIT1: CALL PRTDEC ; PRINT IT LD DE,STR_MEMFREE ; ADD DESCRIPTION CALL WRITESTR ; AND PRINT IT +; + LD A,(DEFDRIVE) ; GET DEFAULT DRIVE + LD (CDISK),A ; ... AND SETUP CDISK ; ; SETUP AUTOSTART COMMAND LD HL,CMD ; ADDRESS OF STARTUP COMMAND @@ -1833,8 +1807,8 @@ STR_MEMFREE .DB " Disk Buffer Bytes Free\r\n$" ; ;__________________________________________________________________________________________________ MD_INIT: +; #IF (PLATFORM == PLT_UNA) - ; ; INITIALIZE RAM DISK BY FILLING DIRECTORY WITH 'E5' BYTES ; FILL FIRST 8K OF RAM DISK TRACK 1 WITH 'E5' @@ -1853,7 +1827,7 @@ MD_INIT: LD B,32 CLRRAM0: LD A,(HL) - CP 0E5H + CP $E5 JR Z,CLRRAM1 ; E5 IS VALID CP 16 JR C,CLRRAM1 ; 0-15 IS ALSO VALID @@ -1914,7 +1888,7 @@ CLRRAM3: LD B,32 CLRRAM0: LD A,(HL) - CP 0E5H + CP $E5 JR Z,CLRRAM1 ; E5 IS VALID CP 16 JR C,CLRRAM1 ; 0-15 IS ALSO VALID @@ -1940,97 +1914,140 @@ CLRRAM3: LD A,BID_USR ; USR BANK (TPA) CALL HB_SETBNK ; SELECT IT #ENDIF - +; #ENDIF - +; RET ; ; ;__________________________________________________________________________________________________ #IF (PLATFORM == PLT_UNA) ; -UNA_INIT: +DRV_INIT: ; ; PERFORM UNA BIOS SPECIFIC INITIALIZATION ; UPDATE DRVMAP BASED ON AVAILABLE UNA UNITS ; ; SETUP THE DRVMAP STRUCTURE LD HL,(BUFTOP) ; GET CURRENT BUFFER TOP -; LD (UNA_DRVCNT),HL ; SAVE POINTER TO DRIVE COUNT INC HL ; SKIP 1 BYTE FOR ENTRY COUNT PREFIX - LD (UNA_DRVMAP),HL ; SAVE AS UNA DRIVE MAP + LD (DRVMAPADR),HL ; SAVE AS DRIVE MAP ADDRESS LD (BUFTOP),HL ; ... AND AS NEW BUFTOP -; -; PUSH HL ; *DEBUG* -; POP BC ; *DEBUG* -; CALL PRTHEXWORD ; *DEBUG* -; - EX DE,HL ; DE := UNA DRIVE MAP PTR - LD HL,CBX ; HL := CBX - INC HL ; BUMP TO - INC HL ; ... DRVMAP ENTRY OF CBX - LD (HL),E ; RECORD ADDRESS - INC HL ; ... OF DRVMAP - LD (HL),D ; ... IN CBX ; LD B,0 ; START WITH UNIT 0 ; -UNA_INIT1: ; LOOP THRU ALL UNITS AVAILABLE +DRV_INIT1: ; LOOP THRU ALL UNITS AVAILABLE LD C,$48 ; UNA FUNC: GET DISK TYPE LD L,0 ; PRESET UNIT COUNT TO ZERO CALL $FFFD ; CALL UNA, B IS ASSUMED TO BE UNTOUCHED!!! LD A,L ; UNIT COUNT TO A OR A ; PAST END? - JR Z,UNA_INIT2 ; WE ARE DONE + JR Z,DRV_INIT2 ; WE ARE DONE PUSH BC ; SAVE UNIT - CALL UNA_INIT3 ; PROCESS THE UNIT + CALL DRV_INIT3 ; PROCESS THE UNIT POP BC ; RESTORE UNIT INC B ; NEXT UNIT - JR UNA_INIT1 ; LOOP + JR DRV_INIT1 ; LOOP ; -UNA_INIT2: ; FINALIZE THE DRIVE MAP +DRV_INIT2: ; FINALIZE THE DRIVE MAP RET ; DONE ; -UNA_INIT3: ; PROCESS CURRENT UNIT (SEE UNA PROTOIDS.INC) +DRV_INIT3: ; PROCESS CURRENT UNIT (SEE UNA PROTOIDS.INC) LD A,D ; MOVE DISK TYPE TO A ; CALL PC_LBKT ; *DEBUG* ; CALL PRTHEXBYTE ; *DEBUG* ; CALL PC_RBKT ; *DEBUG* ; - CALL UNA_INIT4 ; MAKE A DRIVE MAP ENTRY + CALL DRV_INIT4 ; MAKE A DRIVE MAP ENTRY LD A,D ; LOAD DRIVE TYPE CP $40 ; RAM/ROM? RET Z ; DONE IF SO ; CP $?? ; FLOPPY DRIVE? ; RET Z ; DONE IF SO - CALL UNA_INIT4 ; ANOTHER ENTRY FOR HARD DISK + CALL DRV_INIT4 ; ANOTHER ENTRY FOR HARD DISK LD A,1 ; BUT WITH SLICE VALUE OF 1 INC HL ; BUMP TO SLICE POSITION LD (HL),A ; SAVE IT RET ; DONE ; -UNA_INIT4: +DRV_INIT4: ; ALLOCATE SPACE IN DRVMAP PUSH BC ; SAVE INCOMING UNIT NUM LD BC,4 ; 4 BYTES PER ENTRY CALL ALLOC ; ALLOCATE CALL NZ,PANIC ; SHOULD NEVER ERROR HERE -; CALL PC_LBKT ; *DEBUG* -; CALL PRTHEXWORD ; *DEBUG* -; CALL PC_RBKT ; *DEBUG* PUSH BC ; MOVE MEM PTR POP HL ; ... TO HL POP BC ; RECOVER UNIT NUM LD (HL),B ; SAVE IT IN FIRST BYTE OF DRV MAP ENTRY PUSH HL ; SAVE HL - LD HL,(UNA_DRVMAP) ; POINT TO DRIVE MAP + LD HL,(DRVMAPADR) ; POINT TO DRIVE MAP DEC HL ; BACK TO ENTRY COUNT INC (HL) ; INCREMENT THE ENTRY COUNT -; LD A,(HL) ; *DEBUG* -; CALL PRTHEXBYTE ; *DEBUG* POP HL ; RECOVER HL RET ; DONE ; +#ELSE +; +DRV_INIT: +; +; PERFORM HBIOS SPECIFIC INITIALIZATION +; BUILD DRVMAP BASED ON AVAILABLE HBIOS DISK DEVICE LIST +; + ; SETUP THE DRVMAP STRUCTURE + LD HL,(BUFTOP) ; GET CURRENT BUFFER TOP + INC HL ; SKIP 1 BYTE FOR ENTRY COUNT PREFIX + LD (DRVMAPADR),HL ; SAVE AS DRVMAP ADDRESS + LD (BUFTOP),HL ; AND AS NEW BUFTOP +; + ; SETUP TO LOOP THROUGH AVAILABLE DEVICES + LD B,BF_DIODEVCNT ; HBIOS FUNC: DEVICE COUNT + RST 08 ; CALL HBIOS, DEVICE COUNT TO B + LD A,B ; COUNT TO A + OR A ; SET FLAGS + RET Z ; HANDLE ZERO DEVICES (ALBEIT POORLY) + LD C,0 ; USE C AS DEVICE LIST INDEX +; +DRV_INIT1: ; DEVICE ENUMERATION LOOP + PUSH BC ; PRESERVE LOOP CONTROL + LD B,BF_DIODEVINF ; HBIOS FUNC: DEVICE INFO + RST 08 ; CALL HBIOS, DEVICE/UNIT TO C + CALL DRV_INIT3 ; MAKE DRIVE MAP ENTRY(S) + POP BC ; RESTORE LOOP CONTROL + INC C ; INCREMENT LIST INDEX + DJNZ DRV_INIT1 ; LOOP AS NEEDED + RET ; FINISHED +; +DRV_INIT3: ; PROCESS DEVICE/UNIT + LD A,C ; DEVICE/UNIT TO A + PUSH AF ; SAVE DEVICE/UNIT + CALL DRV_INIT4 ; MAKE A DRIVE MAP ENTRY + POP AF ; RESTORE DEVICE/UNIT + CP DIODEV_IDE ; FIRST SLICE CAPABLE DEVICE? + RET C ; DONE IF NOT SLICE WORTHY + CALL DRV_INIT4 ; MAKE ANOTHER ENTRY IF HARD DISK + LD A,1 ; ... BUT WITH SLICE = 1 + INC HL ; BUMP TO SLICE POSITION + LD (HL),A ; SAVE IT + RET ; DONE +; +DRV_INIT4: ; MAKE A DRIVE MAP ENTRY + ; ALLOCATE SPACE FOR ENTRY + PUSH AF ; SAVE INCOMING DEVICE/UNIT + LD BC,4 ; 4 BYTES PER ENTRY + CALL ALLOC ; ALLOCATE SPACE + CALL NZ,PANIC ; SHOULD NEVER ERROR HERE + PUSH BC ; MOVE MEM PTR + POP HL ; ... TO HL + POP AF ; RECOVER DEVICE/UNIT + LD (HL),A ; SAVE IT IN FIRST BYTE OF DRVMAP + PUSH HL ; SAVE ENTRY PTR + LD HL,(DRVMAPADR) ; POINT TO DRIVE MAP + DEC HL ; BACKUP TO ENTRY COUNT + INC (HL) ; INCREMENT THE ENTRY COUNT + POP HL ; RECOVER ENTRY POINTER + RET ; DONE +; #ENDIF ; ; @@ -2045,11 +2062,7 @@ DPH_INIT: CALL NEWLINE ; FORMATTING ; ; ALLOCATE DPH POOL SPACE BASED ON DRIVE COUNT -#IF (PLATFORM == PLT_UNA) - LD HL,(UNA_DRVMAP) ; LOAD DRIVE MAP POINTER -#ELSE - LD HL,DRVMAP ; LOAD DRIVE MAP POINTER -#ENDIF + LD HL,(DRVMAPADR) ; LOAD DRIVE MAP POINTER DEC HL ; BACKUP TO ENTRY COUNT LD A,(HL) ; GET THE ENTRY COUNT LD L,A ; PUT DRIVE COUNT @@ -2077,11 +2090,7 @@ DPH_INIT: LD (DIRBUF),HL ; ... AND SAVE IN DIRBUF ; ; SETUP FOR DPH BUILD LOOP -#IF (PLATFORM == PLT_UNA) - LD HL,(UNA_DRVMAP) ; POINT TO DRIVE MAP -#ELSE - LD HL,DRVMAP ; POINT TO DRIVE MAP -#ENDIF + LD HL,(DRVMAPADR) ; POINT TO DRIVE MAP DEC HL ; BACKUP TO ENTRY COUNT LD B,(HL) ; LOOP DRVCNT TIMES LD C,0 ; DRIVE INDEX @@ -2104,19 +2113,31 @@ DPH_INIT1: INC HL ; BUMP CALL PRTDUS ; PRINT DEVICE/UNIT/SLICE LD A,D ; A := DEV/UNIT - PUSH HL ; SAVE IT + PUSH HL ; SAVE DRIVE MAP POINTER + ; MATCH AND SAVE DEFAULT DRIVE BASED ON BOOT DEVICE/UNIT/SLICE + LD HL,BOOTDEV ; POINT TO BOOT DEVICE/UNIT + LD A,D ; LOAD CURRENT DEVICE/UNIT + CP (HL) ; MATCH? + JR NZ,DPH_INIT1A ; BYPASS IF NOT BOOT DEVICE/UNIT + DEC HL ; POINT TO BOOT SLICE + LD A,E ; LOAD CURRENT SLICE + CP (HL) ; MATCH? + JR NZ,DPH_INIT1A ; BYPASS IF NOT BOOT SLICE + LD A,C ; LOAD THE CURRENT DRIVE NUM + LD (DEFDRIVE),A ; SAVE AS DEFAULT +DPH_INIT1A: LD DE,(DPHTOP) ; GET ADDRESS OF NEXT DPH - PUSH DE ; SAVE IT + PUSH DE ; ... AND SAVE IT ; INVOKE THE DPH BUILD ROUTINE PUSH BC ; SAVE LOOP CONTROL CALL MAKDPH ; MAKE THE DPH AT DE, DEV/UNIT IN A ;CALL NZ,PANIC ; FOR NOW, PANIC ON ANY ERROR POP BC ; RESTORE LOOP CONTROL ; STORE THE DPH POINTER IN DRIVE MAP - POP DE ; RESTORE DPH ADDRESS - POP HL ; RESTORE HL := DPH PTR LOC + POP DE ; RESTORE DPH ADDRESS TO DE + POP HL ; RESTORE DRIVE MAP POINTER TO HL ;RET NZ ; ABORT ON ERROR - JR Z,DPH_INIT2 ; IF OK, CONTINUE + JR Z,DPH_INIT2 ; IF MAKDPH OK, CONTINUE LD DE,0 ; ... OTHERWISE ZERO OUT THE DPH POINTER DPH_INIT2: LD (HL),E ; SAVE DPH POINTER @@ -2274,10 +2295,6 @@ ERR: OR $FF RET ; -DPHTOP .DW 0 ; CURRENT TOP OF DPH POOL -DIRBUF .DW 0 ; DIR BUF POINTER -BUFTOP .DW BUFPOOL ; CURRENT TOP OF BUF POOL -; PRTDUS: ; ; PRINT THE DEVICE/UNIT/SLICE INFO @@ -2301,9 +2318,15 @@ PRTDUS: LD DE,DEVIDE ; IDE STRING CP $41 ; IDE? JR Z,PRTDUSX ; IF YES, PRINT + LD DE,DEVPPIDE ; PPIDE STRING + CP $42 ; PPIDE? + JR Z,PRTDUSX ; IF YES, PRINT LD DE,DEVSD ; SD STRING CP $43 ; SD? JR Z,PRTDUSX ; IF YES, PRINT + LD DE,DEVDSD ; DSD STRING + CP $44 ; DSD? + JR Z,PRTDUSX ; IF YES, PRINT LD DE,DEVUNK ; OTHERWISE, UNKNOWN JR PRTDUSX ; PRINT IT @@ -2330,11 +2353,13 @@ PRTDUSX: CALL PRTDECB ; PRINT IT RET ; -DEVRAM .DB "RAM$" -DEVROM .DB "ROM$" -DEVIDE .DB "IDE$" -DEVSD .DB "SD$" -DEVUNK .DB "UNK$" +DEVRAM .DB "RAM$" +DEVROM .DB "ROM$" +DEVIDE .DB "IDE$" +DEVPPIDE .DB "PPIDE$" +DEVSD .DB "SD$" +DEVDSD .DB "DSD$" +DEVUNK .DB "UNK$" ; #ELSE ; @@ -2390,6 +2415,13 @@ DEV15 .EQU DEVUNK ; #ENDIF ; +DPHTOP .DW 0 ; CURRENT TOP OF DPH POOL +DIRBUF .DW 0 ; DIR BUF POINTER +BUFTOP .DW BUFPOOL ; CURRENT TOP OF BUF POOL +BOOTDL: +BOOTLU .DB 0 +BOOTDEV .DB 0 +; STR_INITRAMDISK .DB "\r\nFormatting RAMDISK...$" STR_LDR .DB "\r\n $" STR_DPHINIT .DB "\r\n\r\nConfiguring Drives...$" diff --git a/Source/cvdu.asm b/Source/BIOS/cvdu.asm similarity index 100% rename from Source/cvdu.asm rename to Source/BIOS/cvdu.asm diff --git a/Source/cvdu_font.asm b/Source/BIOS/cvdu_font.asm similarity index 100% rename from Source/cvdu_font.asm rename to Source/BIOS/cvdu_font.asm diff --git a/Source/dbgmon.asm b/Source/BIOS/dbgmon.asm similarity index 96% rename from Source/dbgmon.asm rename to Source/BIOS/dbgmon.asm index d5bba771..5d4b14df 100644 --- a/Source/dbgmon.asm +++ b/Source/BIOS/dbgmon.asm @@ -37,7 +37,7 @@ BS: .EQU 08H ; ASCII BACKSPACE CHARACTER JP DSKY_ENTRY JP UART_ENTRY ; -#DEFINE CIOMODE_CBIOS +#DEFINE CIOMODE_HBIOS #INCLUDE "util.asm" ; #INCLUDE "memmgr.asm" diff --git a/Source/diskdefs b/Source/BIOS/diskdefs similarity index 85% rename from Source/diskdefs rename to Source/BIOS/diskdefs index 6d59d823..534674f6 100644 --- a/Source/diskdefs +++ b/Source/BIOS/diskdefs @@ -266,16 +266,42 @@ diskdef interak sectrk 20 blocksize 4096 maxdir 256 - skew 1 + skew 0 boottrk 2 os 2.2 end -# For 512KB ROM, less 96K reserved for system +# RomWBW 512KB ROM (64KB reserved, 448KB ROM Disk) + +diskdef wbw_rom512 + seclen 512 + tracks 14 + sectrk 64 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 0 + os 2.2 +end + +# RomWBW 1024KB ROM (64KB reserved, 960KB ROM Disk) + +diskdef wbw_rom1024 + seclen 512 + tracks 30 + sectrk 64 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 0 + os 2.2 +end + +# UNA 512KB ROM (128KB reserved, 384KB ROM Disk) -diskdef n8vem_rom512 +diskdef una_rom512 seclen 512 - tracks 13 + tracks 12 sectrk 64 blocksize 2048 maxdir 256 @@ -284,11 +310,11 @@ diskdef n8vem_rom512 os 2.2 end -# For 1024KB ROM, less 96K reserved for system +# UNA 512KB ROM (128KB reserved, 896KB ROM Disk) -diskdef n8vem_rom1024 +diskdef una_rom1024 seclen 512 - tracks 29 + tracks 28 sectrk 64 blocksize 2048 maxdir 256 @@ -297,8 +323,8 @@ diskdef n8vem_rom1024 os 2.2 end -# N8VEM Hard Disks, hd0 - hd3 are first 4 slices of disk -diskdef n8vem_hd0 +# RomWBW 8MB Hard Disk, LU 0-3 +diskdef wbw_hd0 seclen 512 tracks 65 sectrk 256 @@ -309,7 +335,7 @@ diskdef n8vem_hd0 os 2.2 end -diskdef n8vem_hd1 +diskdef wbw_hd1 seclen 512 tracks 130 sectrk 256 @@ -320,7 +346,7 @@ diskdef n8vem_hd1 os 2.2 end -diskdef n8vem_hd2 +diskdef wbw_hd2 seclen 512 tracks 195 sectrk 256 @@ -331,7 +357,7 @@ diskdef n8vem_hd2 os 2.2 end -diskdef n8vem_hd3 +diskdef wbw_hd3 seclen 512 tracks 260 sectrk 256 @@ -342,8 +368,8 @@ diskdef n8vem_hd3 os 2.2 end -# N8VEM 720K floppy media -diskdef n8vem_fd720 +# RomWBW 720K floppy media +diskdef wbw_fd720 seclen 512 tracks 160 sectrk 9 @@ -354,8 +380,8 @@ diskdef n8vem_fd720 os 2.2 end -# N8VEM 1.44M floppy media -diskdef n8vem_fd144 +# RomWBW 1.44M floppy media +diskdef wbw_fd144 seclen 512 tracks 160 sectrk 18 @@ -366,8 +392,8 @@ diskdef n8vem_fd144 os 2.2 end -# N8VEM 360K floppy media -diskdef n8vem_fd360 +# RomWBW 360K floppy media +diskdef wbw_fd360 seclen 512 tracks 80 sectrk 9 @@ -378,8 +404,8 @@ diskdef n8vem_fd360 os 2.2 end -# N8VEM 1.20M floppy media -diskdef n8vem_fd120 +# RomWBW 1.20M floppy media +diskdef wbw_fd120 seclen 512 tracks 160 sectrk 15 diff --git a/Source/dsrtc.asm b/Source/BIOS/dsrtc.asm similarity index 100% rename from Source/dsrtc.asm rename to Source/BIOS/dsrtc.asm diff --git a/Source/fd.asm b/Source/BIOS/fd.asm similarity index 100% rename from Source/fd.asm rename to Source/BIOS/fd.asm diff --git a/Source/hbfill.asm b/Source/BIOS/hbfill.asm similarity index 100% rename from Source/hbfill.asm rename to Source/BIOS/hbfill.asm diff --git a/Source/hbios.asm b/Source/BIOS/hbios.asm similarity index 89% rename from Source/hbios.asm rename to Source/BIOS/hbios.asm index f13aa40e..11d529a7 100644 --- a/Source/hbios.asm +++ b/Source/BIOS/hbios.asm @@ -32,6 +32,75 @@ HBXX_COPY JP HBXI_COPY HBXX_XCOPY JP HBXI_XCOPY ; ;================================================================================================== +; HBIOS INTERNAL PROXY JUMP TABLE +;================================================================================================== +; +#DEFINE DEVENT(DEV,UNIT) \ +#DEFCONT .DB DEV | UNIT +; + .DB DEVCNT +DEVMAP: +#IFDEF DEVLST + DEVLST +#ELSE + +; RAM/ROM MEMORY DISK UNITS +#IF MDENABLE + DEVENT(DIODEV_MD,1) ; MD1: (RAM DISK) + DEVENT(DIODEV_MD,0) ; MD0: (ROM DISK) +#ENDIF + +#IF FDENABLE + DEVENT(DIODEV_FD,0) ; FD0: (PRIMARY FLOPPY DRIVE) + DEVENT(DIODEV_FD,1) ; FD1: (SECONDARY FLOPPY DRIVE) +#ENDIF + +; RAM FLOPPY MEMORY DISK UNITS +#IF RFENABLE + DEVENT(DIODEV_RF,0) ; RF0: (RAMFLOPPY DISK UNIT 0) +; DEVENT(DIODEV_RF,1) ; RF1: (RAMFLOPPY DISK UNIT 1) +#ENDIF + +; IDE DISK UNITS +#IF IDEENABLE + DEVENT(DIODEV_IDE,0) ; IDE0: (IDE PRIMARY MASTER DISK) +; DEVENT(DIODEV_IDE,1) ; IDE1: (IDE PRIMARY SLAVE DISK) +#ENDIF + +; PPIDE DISK UNITS +#IF PPIDEENABLE + DEVENT(DIODEV_PPIDE,0) ; PPIDE0: (PAR PORT IDE PRIMARY MASTER DISK) +; DEVENT(DIODEV_PPIDE,1) ; PPIDE1: (PAR PORT IDE PRIMARY SLAVE DISK) +#ENDIF + +; SD CARD DISK UNITS +#IF SDENABLE + DEVENT(DIODEV_SD,0) ; SD0: (SD CARD DISK) +#ENDIF + +; PROPIO SD CARD DISK UNITS +#IF (PRPENABLE & PRPSDENABLE) + DEVENT(DIODEV_PRPSD,0) ; PRPSD0: (PROPIO SD DISK) +#ENDIF + +; PARPORTPROP SD CARD DISK UNITS +#IF (PPPENABLE & PPPSDENABLE) + DEVENT(DIODEV_PPPSD,0) ; PPPSD0: (PARPORTPROP SD DISK) +#ENDIF + +; SIMH EMULATOR DISK UNITS +#IF HDSKENABLE + DEVENT(DIODEV_HDSK,0) ; HDSK0: (SIMH DISK DRIVE 0) + DEVENT(DIODEV_HDSK,1) ; HDSK1: (SIMH DISK DRIVE 1) +#ENDIF + +#ENDIF +; +DEVCNT .EQU ($ - DEVMAP) / 1 + .ECHO DEVCNT + .ECHO " devices defined.\n" +; +;================================================================================================== ; SYSTEM INITIALIZATION ;================================================================================================== ; @@ -381,6 +450,10 @@ DIO_COMMON: JR Z,DIO_GETBUF ; YES, HANDLE IT DEC A ; FUNCTION = DIOSETBUF? JR Z,DIO_SETBUF ; YES, HANDLE IT + DEC A ; FUNCTION = DIODEVCNT? + JR Z,DIO_DEVCNT ; YES, HANDLE IT + DEC A ; FUNCTION = DIODEVINF? + JR Z,DIO_DEVINF ; YES, HANDLE IT CALL PANIC ; INVALID FUNCTION SPECFIED ; ; DISK: GET BUFFER ADDRESS @@ -399,6 +472,32 @@ DIO_SETBUF: XOR A ; SIGNALS SUCCESS RET ; +; DISK: GET DEVICE COUNT +; +DIO_DEVCNT: + LD A,(DEVMAP - 1) ; GET DEVICE COUNT + LD B,A ; PUT IT IN B + XOR A ; SIGNALS SUCCESS + RET +; +; DISK: GET DEVICE INFO +; +DIO_DEVINF: + LD HL,DEVMAP - 1 ; POINT TO DEVICE MAP ENTRY COUNT + LD B,(HL) ; ENTRY COUNT TO B + LD A,C ; INDEX TO A + CP B ; CHECK INDEX AGAINST MAX VALUE (INDEX - COUNT) + JR NC,DIO_DEVINF1 ; IF INDEX TOO HIGH, ERR + INC HL ; BUMP TO START OF DEV MAP ENTRIES + CALL ADDHLA ; AND POINT TO REQUESTED INDEX + LD C,(HL) ; DEVICE/UNIT TO C + XOR A ; SIGNAL SUCCESS + RET ; DONE + +DIO_DEVINF1: + OR $FF ; SIGNAL ERROR + RET ; RETURN +; ;================================================================================================== ; REAL TIME CLOCK DEVICE DISPATCHER ;================================================================================================== diff --git a/Source/hdsk.asm b/Source/BIOS/hdsk.asm similarity index 100% rename from Source/hdsk.asm rename to Source/BIOS/hdsk.asm diff --git a/Source/ide.asm b/Source/BIOS/ide.asm similarity index 100% rename from Source/ide.asm rename to Source/BIOS/ide.asm diff --git a/Source/infolist.inc b/Source/BIOS/infolist.inc similarity index 100% rename from Source/infolist.inc rename to Source/BIOS/infolist.inc diff --git a/Source/kbd.asm b/Source/BIOS/kbd.asm similarity index 100% rename from Source/kbd.asm rename to Source/BIOS/kbd.asm diff --git a/Source/loader.asm b/Source/BIOS/loader.asm similarity index 75% rename from Source/loader.asm rename to Source/BIOS/loader.asm index 119e3c66..fd8bacb0 100644 --- a/Source/loader.asm +++ b/Source/BIOS/loader.asm @@ -11,6 +11,20 @@ ; ; SETUP OUR STACK LD SP,BL_STACK ; SET UP LOADER STACK + + ; ENSURE THAT USER BANK IS MAPPED TO LOWER 32K +#IF (PLATFORM == PLT_UNA) + ; SWITCH TO EXEC PAGE IN BANKED MEMORY + LD BC,$01FB ; SET BANK + LD DE,$800E ; EXEC_PAGE (SEE PAGES.INC) + RST 08 ; DO IT + + LD HL,BL_UNAMOD ; POINT TO UNA MODE FLAG + LD (HL),$FF ; SET UNA MODE +#ELSE + LD A,BID_USR ; USER RAM PAGE + CALL PGSEL ; SELECT IT +#ENDIF ; TEST FOR UNA, CONFIG INVOCATION VECTOR IF FOUND CALL UNACHK @@ -51,20 +65,22 @@ DB_BOOTLOOP: ; CALL CST OR A - JR Z,DB_CONEND + JP Z,DB_CONEND CALL CINUC CP 'M' ; MONITOR - JR Z,GOMON - CP 'R' ; ROM BOOT - JR Z,GOROM + JP Z,GOMON + CP 'C' ; CP/M BOOT FROM ROM + JP Z,GOCPM + CP 'Z' ; ZSYSTEM BOOT FROM ROM + JP Z,GOZSYS CP 'L' ; LIST DRIVES - JR Z,GOLIST - CP 'A' ; A-P, DISK BOOT - JR C,DB_INVALID - CP 'P' + 1 ; HMMM... 'M' DRIVE CONFLICTS WITH MONITOR SELECTION - JR NC,DB_INVALID - SUB 'A' - JR GOBOOTDISK + JP Z,GOLIST + CP '0' ; 0-9, DISK DEVICE + JP C,DB_INVALID + CP '9' + 1 + JP NC,DB_INVALID + SUB '0' + JP GOBOOTDISK DB_CONEND: ; ; CHECK FOR DSKY BOOT KEYPRESS @@ -72,18 +88,18 @@ DB_CONEND: #IF (DSKYENABLE) CALL KY_STAT ; GET KEY FROM KB INTO A OR A - JR Z,DB_DSKYEND + JP Z,DB_DSKYEND CALL KY_GET CP KY_GO ; GO = MONITOR - JR Z,GOMONDSKY + JP Z,GOMONDSKY CP KY_BO ; BO = BOOT ROM - JR Z,GOROM - CP 0AH ; A-F, DISK BOOT - JR C,DB_INVALID - CP 0FH + 1 - JR NC,DB_INVALID - SUB 0AH - JR GOBOOTDISK + JP Z,GOCPM +; CP 0AH ; A-F, DISK BOOT +; JP C,DB_INVALID + CP 0FH + 1 ; 0-F, DISK BOOT +; JP NC,DB_INVALID +; SUB 0AH + JP GOBOOTDISK ; LD HL,BOOT ; POINT TO BOOT MESSAGE ; LD A,00H ; BLANK OUT SELECTION,IT WAS INVALID ; LD (HL),A ; STORE IT IN DISPLAY BUFFER @@ -105,20 +121,24 @@ DB_DSKYEND: LD (BL_TIMEOUT),BC LD A,B OR C - JR NZ,DB_BOOTLOOP + JP NZ,DB_BOOTLOOP ; TIMEOUT EXPIRED, PERFORM DEFAULT BOOT ACTION LD A,BOOT_DEFAULT CP 'M' ; MONITOR - JR Z,GOMON - CP 'R' ; ROM BOOT - JR Z,GOROM - CP 'A' ; A-P, DISK BOOT - JR C,DB_INVALID - CP 'P' + 1 ; HMMM... DRIVE M CONFLICTS WITH "MONITOR" SELECTION - JR NC,DB_INVALID - SUB 'A' - JR GOBOOTDISK + JP Z,GOMON + CP 'C' ; CP/M BOOT FROM ROM + JP Z,GOCPM + CP 'Z' ; ZSYSTEM BOOT FROM ROM + JP Z,GOZSYS + CP 'L' ; LIST DRIVES + JP Z,GOLIST + CP '0' ; 0-9, DISK DEVICE + JP C,DB_INVALID + CP '9' + 1 + JP NC,DB_INVALID + SUB '0' + JP GOBOOTDISK #ENDIF JP DB_BOOTLOOP @@ -131,18 +151,47 @@ DB_INVALID: JP DOBOOTMENU ; GOMON: - LD DE,STR_BOOTMON - CALL WRITESTR + CALL LDMON JP MON_SERIAL ; GOMONDSKY: + CALL LDMON + JP MON_DSKY +; +LDMON: LD DE,STR_BOOTMON CALL WRITESTR - JP MON_DSKY + LD HL,$4000 + LD DE,$C000 + LD BC,$1000 + JP LDIMG +; +GOCPM: + LD DE,STR_BOOTCPM + CALL WRITESTR + LD HL,$5000 + LD DE,CPM_LOC + LD BC,$3000 - $400 + CALL LDIMG +#IF (PLATFORM == PLT_UNA) + LD DE,$0100 ; BOOT DEV/UNIT/LU=0 (ROM DRIVE) +#ELSE + LD DE,$0000 ; BOOT DEV/UNIT/LU=0 (ROM DRIVE) +#ENDIF + JP CPM_ENT ; -GOROM: - LD DE,STR_BOOTROM +GOZSYS: + LD DE,STR_BOOTZSYS CALL WRITESTR + LD HL,$1000 + LD DE,CPM_LOC + LD BC,$3000 - $400 + CALL LDIMG +#IF (PLATFORM == PLT_UNA) + LD DE,$0100 ; BOOT DEV/UNIT/LU=0 (ROM DRIVE) +#ELSE + LD DE,$0000 ; BOOT DEV/UNIT/LU=0 (ROM DRIVE) +#ENDIF JP CPM_ENT ; GOLIST: @@ -151,14 +200,50 @@ GOLIST: LD DE,STR_DRVLIST CALL WRITESTR CALL PRTALL - JR DOBOOTMENU + JP DOBOOTMENU ; GOBOOTDISK: - LD C,A + LD (BL_BOOTID),A LD DE,STR_BOOTDISK CALL WRITESTR JP BOOTDISK ; +LDIMG: +; +; LOAD IMAGE FROM ROM +; +; INPUT: HL=IMAGE SOURCE ADDRESS +; DE=IMAGE TARGET ADDRESS +; BC=IMAGE SIZE +; + PUSH HL + PUSH DE + PUSH BC +; +#IF (PLATFORM == PLT_UNA) + ; SWITCH TO ROM IMAGE IN THIRD ROM PAGE + LD BC,$01FB ; SET BANK + LD DE,$0002 ; THIRD ROM PAGE (SEE PAGES.INC) + CALL $FFFD ; DO IT +#ELSE + LD A,BID_BOOT ; ROM PAGE WITH OS IMAGE + CALL PGSEL ; SELECT IT +#ENDIF + POP BC + POP DE + POP HL + LDIR +#IF (PLATFORM == PLT_UNA) + ; SWITCH BACK TO EXEC PAGE IN BANKED MEMORY + LD BC,$01FB ; SET BANK + LD DE,$800E ; EXEC_PAGE (SEE PAGES.INC) + CALL $FFFD ; DO IT +#ELSE + LD A,BID_USR ; USER RAM PAGE + CALL PGSEL ; SELECT IT +#ENDIF + RET +; ; CHECK FOR UNA, SETUP INVOCATION VECTOR IF FOUND ; UNACHK: @@ -195,20 +280,23 @@ BOOTDISK: JP NZ,BOOTUNA ; HANDLE UNA AS NEEDED ; CHECK FOR VALID DRIVE LETTER - LD A,C ; GET BOOT DRIVE - LD HL,DRVMAP - 1 ; POINT TO DRIVE COUNT - CP (HL) ; ... AND COMPARE - JP NC,DB_NODISK ; ERROR IF DRIVE ID >= COUNT - - ; GET DEVICE/UNIT, SLICE - ADD A,A ; DRIVE MAP ENTRIES ARE 2 BYTES EACH - LD HL,DRVMAP ; POINT TO DRIVE MAP - CALL ADDHLA ; ... AND ADD DRIVE OFFSET - LD A,(HL) ; GET DEVICE/UNIT - LD (BL_DEVICE),A ; ... AND SAVE IT - INC HL ; NEXT BYTE IS SLICE - LD A,(HL) ; GET SLICE - LD (BL_LU),A ; ... AND SAVE IT + LD A,(BL_BOOTID) ; BOOT DEVICE TO A + PUSH AF ; SAVE BOOT DEVICE + LD B,BF_DIODEVCNT ; HBIOS FUNC: DEVICE COUNT + RST 08 ; CALL HBIOS, DEVICE COUNT TO B + POP AF ; RESTORE BOOT DEVICE + CP B ; CHECK MAX (INDEX - COUNT) + JP NC,DB_NODISK ; HANDLE INVALID SELECTION + + ; GET DEVICE/UNIT, LU + LD B,BF_DIODEVINF ; HBIOS FUNC: DEVICE INFO + LD A,(BL_BOOTID) ; GET BOOT DEVICE ID + LD C,A ; PUT IN C + RST 08 ; CALL HBIOS, DEV INFO TO C + LD A,C ; DEVICE/UNIT TO A + LD (BL_DEVICE),A ; STORE IT + XOR A ; LU ALWAYS ZERO + LD (BL_LU),A ; STORE IT ; SENSE MEDIA LD A,(BL_DEVICE) ; GET DEVICE/UNIT @@ -244,7 +332,7 @@ BOOTDISK1: ; DETERMINE STARTING TRACK FOR LU LD A,(BL_LU) ; GET LU SPECIFIED LD E,A ; LU INDEX - LD H,65 ; 65 TRACKS PER SLICE + LD H,65 ; 65 TRACKS PER LU CALL MULT8 ; HL := H * E LD (BL_LUTRK),HL ; SAVE IT @@ -328,6 +416,12 @@ DB_LOOP: DEC (HL) ; ... AND DECREMENT IT JR NZ,DB_LOOP ; LOOP IF NEEDED CALL NEWLINE ; FORMATTING + + ; PASS BOOT DEVICE/UNIT/LU TO CBIOS COLD BOOT + LD A,(BL_DEVICE) ; LOAD BOOT DEVICE/UNIT + LD D,A ; SAVE IN D + LD A,(BL_LU) ; LOAD BOOT LU + LD E,A ; SAVE IN E ; JUMP TO COLD BOOT ENTRY LD HL,(BB_CPMENT) @@ -337,7 +431,8 @@ DB_LOOP: ; BOOT FROM UNA DISK DRIVE ; BOOTUNA: - LD B,C ; MOVE UNIT CODE TO B + LD A,(BL_BOOTID) ; GET BOOT DEVICE ID + LD B,A ; MOVE TO B ; LOAD SECTOR 2 (BOOT INFO) LD C,$41 ; UNA FUNC: SET LBA @@ -353,8 +448,6 @@ BOOTUNA: RST 08 ; DO READ JP NZ,DB_ERR ; HANDLE ERROR CALL PC_PERIOD ; MARK PROGRESS -; - PUSH BC ; SAVE UNIT ; ; CHECK SIGNATURE CALL NEWLINE ; FORMATTING @@ -399,13 +492,14 @@ BOOTUNA: LD DE,STR_LOADING ; LOADING MESSAGE CALL WRITESTR ; PRINT IT ; - POP BC ; RESTORE UNIT + LD A,(BL_BOOTID) ; GET BOOT DEVICE ID + LD B,A ; MOVE TO B ; LD C,$41 ; UNA FUNC: SET LBA LD DE,0 ; HI WORD OF LBA IS ALWAYS ZERO LD HL,3 ; LOAD STARTING AT SECTOR 3 RST 08 ; SET LBA - JR NZ,DB_ERR ; HANDLE ERROR + JP NZ,DB_ERR ; HANDLE ERROR CALL PC_PERIOD ; MARK PROGRESS ; LD C,$42 ; UNA FUNC: READ SECTORS @@ -418,8 +512,14 @@ BOOTUNA: LD L,A ; SECTORS TO READ LD DE,(BB_CPMLOC) ; DEST OF CPM IMAGE RST 08 ; DO READ - JR NZ,DB_ERR ; HANDLE ERROR + JP NZ,DB_ERR ; HANDLE ERROR CALL PC_PERIOD ; MARK PROGRESS +; + ; PASS BOOT DEVICE/UNIT/LU TO CBIOS COLD BOOT + LD A,(BL_BOOTID) ; LOAD BOOT DEVICE/UNIT + LD D,A ; SAVE IN D + XOR A ; BOOT LU IS ALWAYS 0 + LD E,A ; SAVE IN E ; ; JUMP TO COLD BOOT ENTRY CALL NEWLINE ; FORMATTING @@ -482,7 +582,7 @@ DB_READSEC: ; SET HL=TRACK (ADD IN TRACK OFFSET) LD DE,(BL_LUTRK) ; DE = TRACK OFFSET FOR LU SUPPORT LD HL,(BL_CURTRK) ; HL = TRACK # - ADD HL,DE ; APPLY OFFSET FOR ACTIVE SLICE + ADD HL,DE ; APPLY OFFSET FOR ACTIVE LU ; SET DE=SECTOR LD A,(BL_CURSEC) ; GET THE SECTOR INTO A LD E,A ; MOVE IT TO LSB @@ -506,7 +606,7 @@ DB_READSEC2: AND $0F ; GET RID OF TOP NIBBLE OR E ; COMBINE WITH E LD E,A ; BACK IN E - LD HL,0 ; HL:DE NOW HAS SLICE RELATIVE LBA + LD HL,0 ; HL:DE NOW HAS LU RELATIVE LBA ; APPLY LU OFFSET NOW ; LU OFFSET IS EXPRESSED AS NUMBER OF BLOCKS * 256 TO LU OFFSET! LD A,(BL_LUTRK) ; LSB OF LU TRACK TO A @@ -558,34 +658,35 @@ PRTALL: OR A ; SET FLAGS JP NZ,UPRTALL ; HANDLE UNA MODE - LD HL,DRVMAP - 1 ; POINT TO DRIVE COUNT - LD B,(HL) ; DRIVE COUNT TO B - LD C,0 ; DRIVE INDEX - INC HL ; POINT TO FIRST ENTRY + LD B,BF_DIODEVCNT ; HBIOS FUNC: DEVICE COUNT + RST 08 ; CALL HBIOS + LD A,B ; COUNT TO A + OR A ; SET FLAGS + RET Z ; BAIL OUT IF ZERO + LD C,0 ; INIT DEVICE INDEX ; PRTALL1: LD DE,STR_PREFIX ; FORMATTING CALL WRITESTR ; PRINT IT - LD A,C ; DRIVE INDEX - ADD A,'A' ; MAKE IS ALPHA - CALL COUT ; PRINT IT - LD A,':' ; DRIVE COLON + LD A,C ; INDEX TO A + ADD A,'0' ; MAKE NUMERIC CHAR CALL COUT ; PRINT IT - LD A,'=' ; SEPARATOR + LD A,')' ; FORMATTING CALL COUT ; PRINT IT - LD D,(HL) ; GET DEVICE/UNIT - INC HL ; BUMP TO LU - LD E,(HL) ; GET LU - INC HL ; MOVE TO NEXT DRIVE - PUSH BC ; PRESERVE LOOP CONTROL - CALL PRTDRV ; PRINT IT + CALL PC_SPACE ; SPACING + PUSH BC ; SAVE LOOP CONTROL + LD B,BF_DIODEVINF ; HBIOS FUNC: DEVICE INFO + RST 08 ; CALL HBIOS + LD D,C ; DEVICE/UNIT TO D + LD E,0 ; LU IS ZERO + CALL PRTDRV ; PRINT IT POP BC ; RESTORE LOOP CONTROL - INC C ; NEXT DRIVE - DJNZ PRTALL1 ; LOOP TILL DONE - RET ; AND DONE + INC C ; BUMP INDEX + DJNZ PRTALL1 ; LOOP AS NEEDED + RET ; DONE ; -; PRINT THE DEVICE/UNIT/SLICE INFO -; ON INPUT D HAS DEVICE/UNIT, E HAS SLICE +; PRINT THE DEVICE/UNIT/LU INFO +; ON INPUT D HAS DEVICE/UNIT, E HAS LU ; DESTROY NO REGISTERS OTHER THAN A ; PRTDRV: @@ -611,8 +712,8 @@ PRTDRV: AND $0F ; ISOLATE UNIT CALL PRTDECB ; PRINT IT CALL PC_COLON ; FORMATTING - LD A,E ; LOAD SLICE - CALL PRTDECB ; PRINT IT +; LD A,E ; LOAD LU +; CALL PRTDECB ; PRINT IT RET ; DEVTBL: ; DEVICE TABLE @@ -666,12 +767,11 @@ UPRTDRV: LD DE,STR_PREFIX ; NEWLINE AND SPACING CALL WRITESTR ; PRINT IT LD A,B ; DRIVE LETTER TO A - ADD A,'A' ; MAKE IT ALPHA + ADD A,'0' ; MAKE IT DISPLAY NUMERIC CALL COUT ; PRINT IT - LD A,':' ; DRIVE LETTER COLON - CALL COUT ; PRINT IT - LD A,'=' ; SEPARATOR + LD A,')' ; DRIVE LETTER COLON CALL COUT ; PRINT IT + CALL PC_SPACE POP DE ; RECOVER DISK TYPE LD A,D ; DISK TYPE TO A CP $40 ; RAM/ROM? @@ -679,9 +779,15 @@ UPRTDRV: LD DE,UDEVIDE ; ASSUME IDE CP $41 ; IDE? JR Z,UPRTDRV2 ; PRINT IT + LD DE,UDEVPPIDE ; ASSUME PPIDE + CP $42 ; PPIDE? + JR Z,UPRTDRV2 ; PRINT IT LD DE,UDEVSD ; ASSUME SD CP $43 ; SD? JR Z,UPRTDRV2 ; PRINT IT + LD DE,UDEVDSD ; ASSUME DSD + CP $44 ; DSD? + JR Z,UPRTDRV2 ; PRINT IT LD DE,UDEVUNK ; OTHERWISE UNKNOWN JR UPRTDRV2 ; @@ -705,11 +811,13 @@ UPRTDRV2: ; PRINT DEVICE CALL COUT ; PRINT IT RET ; DONE ; -UDEVRAM .DB "RAM$" -UDEVROM .DB "ROM$" -UDEVIDE .DB "IDE$" -UDEVSD .DB "SD$" -UDEVUNK .DB "UNK$" +UDEVRAM .DB "RAM$" +UDEVROM .DB "ROM$" +UDEVIDE .DB "IDE$" +UDEVPPIDE .DB "PPIDE$" +UDEVSD .DB "SD$" +UDEVDSD .DB "DSD$" +UDEVUNK .DB "UNK$" ; #IF (DSKYENABLE) ; @@ -764,8 +872,9 @@ SEGDISPLAY_LP: STR_BOOTDISK .DB "BOOT FROM DISK\r\n$" STR_BOOTDISK1 .DB "\r\nReading disk information...$" STR_BOOTMON .DB "START MONITOR\r\n$" -STR_BOOTROM .DB "BOOT FROM ROM\r\n$" -STR_LIST .DB "LIST DRIVES\r\n$" +STR_BOOTCPM .DB "BOOT CPM FROM ROM\r\n$" +STR_BOOTZSYS .DB "BOOT ZSYSTEM FROM ROM\r\n$" +STR_LIST .DB "LIST DEVICES\r\n$" STR_INVALID .DB "INVALID SELECTION\r\n$" STR_SETUP .DB "SYSTEM SETUP\r\n$" STR_SIG .DB "SIGNATURE=$" @@ -773,7 +882,7 @@ STR_CPMLOC .DB "LOC=$" STR_CPMEND .DB "END=$" STR_CPMENT .DB "ENT=$" STR_LABEL .DB "LABEL=$" -STR_DRVLIST .DB "\r\nDrives:\r\n$" +STR_DRVLIST .DB "\r\nDevices:\r\n$" STR_PREFIX .DB "\r\n $" STR_LOADING .DB "\r\nLoading$" STR_NODISK .DB "\r\nNo disk!$" @@ -781,7 +890,8 @@ STR_NOBOOT .DB "\r\nDisk not bootable!$" STR_BOOTERR .DB "\r\nBoot failure!$" ; STR_BANNER .DB "\r\n", PLATFORM_NAME, " Boot Loader$" -STR_BOOTMENU .DB "\r\nBoot: (M)onitor, (R)OM, (L)ist, or Drive Letter ===> $" +STR_BOOTMENU .DB "\r\nBoot: (C)PM, (Z)System, (M)onitor,\r\n" + .DB " (L)ist devices, or Device ID ===> $" ; .IF DSKYENABLE BOOT: @@ -793,6 +903,10 @@ BOOT: #DEFINE DSKY_KBD #INCLUDE "util.asm" ; +#IF (PLATFORM != PLT_UNA) +#INCLUDE "memmgr.asm" +#ENDIF +; ; READ A CONSOLE CHARACTER AND CONVERT TO UPPER CASE ; CINUC: @@ -820,27 +934,11 @@ BL_CURSEC .DB 0 ; CURRENT SECTOR FOR LOAD BL_CURDMA .DW 0 ; CURRENT MEM LOC BEING LOADED BL_COUNT .DB 0 ; LOAD COUNTER BL_TIMEOUT .DW 0 ; AUTOBOOT TIMEOUT COUNTDOWN COUNTER +BL_BOOTID .DB 0 ; BOOT DEVICE ID CHOSEN BY USER BL_DEVICE .DB 0 ; DEVICE TO LOAD FROM BL_LU .DB 0 ; LU TO LOAD FROM BL_UNAMOD .DB 0 ; UNA MODE FLAG, NONZERO IS UNA ; -#IF (PLATFORM == PLT_UNA) -DRVMAP .EQU 0 ; MANAGED DYNAMICALLY FOR UNA -#ELSE -; -#DEFINE DRVENT(DEV,UNIT,SLICE,DPHADR) \ -#DEFCONT .DB DEV | UNIT \ -#DEFCONT .DB SLICE -; - .DB DRVCNT -DRVMAP: DRVLST -; -DRVCNT .EQU ($ - DRVMAP) / 2 - .ECHO DRVCNT - .ECHO " drive letters defined.\n" -; -#ENDIF -; ; BOOT INFO SECTOR IS READ INTO AREA BELOW ; THE THIRD SECTOR OF A DISK DEVICE IS RESERVED FOR BOOT INFO ; @@ -852,7 +950,8 @@ BB_PLATFORM .DB 0 ; FORMATTING PLATFORM BB_DEVICE .DB 0 ; FORMATTING DEVICE BB_FORMATTER .FILL 8,0 ; FORMATTING PROGRAM BB_DRIVE .DB 0 ; PHYSICAL DISK DRIVE # -BB_LU .DW 0 ; LOGICAL UNIT (SLICE) +BB_LU .DB 0 ; LOGICAL UNIT (LU) + .DB 0 ; MSB OF LU, NOW DEPRECATED .FILL (BB_METABUF + 128) - $ - 32,0 BB_PROTECT .DB 0 ; WRITE PROTECT BOOLEAN BB_UPDATES .DW 0 ; UPDATE COUNTER diff --git a/Source/makefile b/Source/BIOS/makefile similarity index 100% rename from Source/makefile rename to Source/BIOS/makefile diff --git a/Source/md.asm b/Source/BIOS/md.asm similarity index 100% rename from Source/md.asm rename to Source/BIOS/md.asm diff --git a/Source/memmgr.asm b/Source/BIOS/memmgr.asm similarity index 100% rename from Source/memmgr.asm rename to Source/BIOS/memmgr.asm diff --git a/Source/mk4.inc b/Source/BIOS/mk4.inc similarity index 100% rename from Source/mk4.inc rename to Source/BIOS/mk4.inc diff --git a/Source/n8.inc b/Source/BIOS/n8.inc similarity index 100% rename from Source/n8.inc rename to Source/BIOS/n8.inc diff --git a/Source/n8v.asm b/Source/BIOS/n8v.asm similarity index 100% rename from Source/n8v.asm rename to Source/BIOS/n8v.asm diff --git a/Source/n8v_font.inc b/Source/BIOS/n8v_font.inc similarity index 100% rename from Source/n8v_font.inc rename to Source/BIOS/n8v_font.inc diff --git a/Source/n8vem.inc b/Source/BIOS/n8vem.inc similarity index 100% rename from Source/n8vem.inc rename to Source/BIOS/n8vem.inc diff --git a/Source/pgzero.asm b/Source/BIOS/pgzero.asm similarity index 100% rename from Source/pgzero.asm rename to Source/BIOS/pgzero.asm diff --git a/Source/ppide.asm b/Source/BIOS/ppide.asm similarity index 100% rename from Source/ppide.asm rename to Source/BIOS/ppide.asm diff --git a/Source/ppk.asm b/Source/BIOS/ppk.asm similarity index 100% rename from Source/ppk.asm rename to Source/BIOS/ppk.asm diff --git a/Source/ppp.asm b/Source/BIOS/ppp.asm similarity index 100% rename from Source/ppp.asm rename to Source/BIOS/ppp.asm diff --git a/Source/prefix_una.asm b/Source/BIOS/prefix.asm similarity index 61% rename from Source/prefix_una.asm rename to Source/BIOS/prefix.asm index 2fe94ca8..0d5bfeda 100644 --- a/Source/prefix_una.asm +++ b/Source/BIOS/prefix.asm @@ -23,14 +23,20 @@ BOOT: CALL PRTSTR ; PRINT CALL PRTDOT ; PROGRESS ; - LD BC,$0241 ; UNIT=2, FUNCTION: SET LBA + LD BC,$00FC ; UNA FUNC: GET BOOTSTRAP HISTORY + CALL $FFFD ; CALL UNA + JR NZ,ERROR ; HANDLE ERROR + CALL PRTDOT ; PROGRESS + LD B,L ; MOVE BOOT UNIT ID TO B +; + LD C,$41 ; UNA FUNC: SET LBA LD DE,0 ; HI WORD ALWAYS ZERO LD HL,3 ; IMAGE STARTS AT FOURTH SECTOR CALL $FFFD ; SET LBA JR NZ,ERROR ; HANDLE ERROR CALL PRTDOT ; PROGRESS ; - LD BC,$0242 ; UNIT=2, FUNCTION: READ SECTORS + LD C,$42 ; UNA FUNC: READ SECTORS LD DE,$D000 ; STARTING ADDRESS FOR IMAGE LD L,22 ; READ 22 SECTORS CALL $FFFD ; DO READ @@ -40,21 +46,76 @@ BOOT: LD DE,STR_DONE ; DONE MESSAGE CALL PRTSTR ; PRINT IT ; + LD D,B ; PASS BOOT UNIT TO OS + LD E,0 ; ASSUME LU IS ZERO JP CPM_ENT ; GO TO CPM ; +PRTCHR: + PUSH BC + PUSH DE + LD BC,$0012 ; UNIT 0, WRITE CHAR + LD E,A ; CHAR TO PRINT + CALL $FFFD ; PRINT + POP DE + POP BC + RET +; PRTSTR: + PUSH BC + PUSH HL LD BC,$0015 ; UNIT 0, WRITE CHARS UNTIL TERMINATOR LD L,0 ; TERMINATOR IS NULL - JP $FFFD ; PRINT + CALL $FFFD ; PRINT + POP HL + POP BC + RET ; PRTDOT: - LD BC,$0012 ; UNIT 0, WRITE CHAR - LD E,'.' ; DOT - JP $FFFD ; PRINT + LD A,'.' ; DOT CHARACTER + JR PRTCHR ; PRINT AND RETURN +; +; PRINT THE HEX BYTE VALUE IN A +; +PRTHEXBYTE: + PUSH AF + PUSH DE + CALL HEXASCII + LD A,D + CALL PRTCHR + LD A,E + CALL PRTCHR + POP DE + POP AF + RET +; +; CONVERT BINARY VALUE IN A TO ASCII HEX CHARACTERS IN DE +; +HEXASCII: + LD D,A + CALL HEXCONV + LD E,A + LD A,D + RLCA + RLCA + RLCA + RLCA + CALL HEXCONV + LD D,A + RET +; +; CONVERT LOW NIBBLE OF A TO ASCII HEX +; +HEXCONV: + AND 0FH ;LOW NIBBLE ONLY + ADD A,90H + DAA + ADC A,40H + DAA + RET ; ERROR: - LD DE,STR_ERR ; POINT TO ERROR STRINT - JR PRTSTR ; PRINT IT + LD DE,STR_ERR ; POINT TO ERROR STRING + CALL PRTSTR ; PRINT IT HALT ; HALT ; STR_LOAD .DB "\r\nLoading",0 diff --git a/Source/prp.asm b/Source/BIOS/prp.asm similarity index 100% rename from Source/prp.asm rename to Source/BIOS/prp.asm diff --git a/Source/rf.asm b/Source/BIOS/rf.asm similarity index 100% rename from Source/rf.asm rename to Source/BIOS/rf.asm diff --git a/Source/rom0.asm b/Source/BIOS/rom0.asm similarity index 100% rename from Source/rom0.asm rename to Source/BIOS/rom0.asm diff --git a/Source/romfill.asm b/Source/BIOS/romfill.asm similarity index 100% rename from Source/romfill.asm rename to Source/BIOS/romfill.asm diff --git a/Source/sd.asm b/Source/BIOS/sd.asm similarity index 100% rename from Source/sd.asm rename to Source/BIOS/sd.asm diff --git a/Source/simrtc.asm b/Source/BIOS/simrtc.asm similarity index 100% rename from Source/simrtc.asm rename to Source/BIOS/simrtc.asm diff --git a/Source/std-n8vem.inc b/Source/BIOS/std-n8vem.inc similarity index 100% rename from Source/std-n8vem.inc rename to Source/BIOS/std-n8vem.inc diff --git a/Source/std.asm b/Source/BIOS/std.asm similarity index 95% rename from Source/std.asm rename to Source/BIOS/std.asm index 585799ef..ab685144 100644 --- a/Source/std.asm +++ b/Source/BIOS/std.asm @@ -256,6 +256,8 @@ BF_DIOMED .EQU $FF ; DISK MEDIA BF_DIOID .EQU $FF ; DISK IDENTIFY BF_DIOGETBUF .EQU $FF ; DISK GET BUFFER ADR BF_DIOSETBUF .EQU $FF ; DISK SET BUFFER ADR +BF_DIODEVCNT .EQU $FF ; DISK DEVICE COUNT +BF_DIODEVINF .EQU $FF ; DISK DEVICE INFO ; BF_RTC .EQU $20 BF_RTCGETTIM .EQU BF_RTC + 0 ; GET TIME @@ -311,6 +313,8 @@ BF_DIOMED .EQU BF_DIO + 3 ; DISK MEDIA BF_DIOID .EQU BF_DIO + 4 ; DISK IDENTIFY BF_DIOGETBUF .EQU BF_DIO + 8 ; DISK GET BUFFER ADR BF_DIOSETBUF .EQU BF_DIO + 9 ; DISK SET BUFFER ADR +BF_DIODEVCNT .EQU BF_DIO + 10 ; DISK DEVICE COUNT +BF_DIODEVINF .EQU BF_DIO + 11 ; DISK DEVICE INFO ; BF_RTC .EQU $20 BF_RTCGETTIM .EQU BF_RTC + 0 ; GET TIME diff --git a/Source/syscfg.asm b/Source/BIOS/syscfg.asm similarity index 93% rename from Source/syscfg.asm rename to Source/BIOS/syscfg.asm index 36e44f2d..03a10e9c 100644 --- a/Source/syscfg.asm +++ b/Source/BIOS/syscfg.asm @@ -181,7 +181,7 @@ BOOTTIME .DB 0,0,0,0,0,0 ; SYSTEM STARTUP TIME (YY,MM,DD,HH,MM,SS) SC_TIMESTAMP .DB TIMESTAMP, "$" SC_BUILD .DB BIOSBLD, "$" ; - .EXPORT DISKBOOT,BOOTDEVICE,BOOTLU +; .EXPORT DISKBOOT,BOOTDEVICE,BOOTLU ; #ENDIF ; diff --git a/Source/time.asm b/Source/BIOS/time.asm similarity index 100% rename from Source/time.asm rename to Source/BIOS/time.asm diff --git a/Source/tty.asm b/Source/BIOS/tty.asm similarity index 100% rename from Source/tty.asm rename to Source/BIOS/tty.asm diff --git a/Source/uart.asm b/Source/BIOS/uart.asm similarity index 100% rename from Source/uart.asm rename to Source/BIOS/uart.asm diff --git a/Source/ubios.asm b/Source/BIOS/ubios.asm similarity index 100% rename from Source/ubios.asm rename to Source/BIOS/ubios.asm diff --git a/Source/una.inc b/Source/BIOS/una.inc similarity index 100% rename from Source/una.inc rename to Source/BIOS/una.inc diff --git a/Source/util.asm b/Source/BIOS/util.asm similarity index 100% rename from Source/util.asm rename to Source/BIOS/util.asm diff --git a/Source/vdu.asm b/Source/BIOS/vdu.asm similarity index 100% rename from Source/vdu.asm rename to Source/BIOS/vdu.asm diff --git a/Source/BIOS/ver.inc b/Source/BIOS/ver.inc new file mode 100644 index 00000000..4a2edb0f --- /dev/null +++ b/Source/BIOS/ver.inc @@ -0,0 +1,7 @@ +#DEFINE RMJ 2 +#DEFINE RMN 6 +#DEFINE RUP 1 +#DEFINE RTP 12 +#DEFINE BIOSVER "2.6.1" +#DEFINE BIOSBLD "Build 13" +#DEFINE REVISION 500 diff --git a/Source/xio.asm b/Source/BIOS/xio.asm similarity index 100% rename from Source/xio.asm rename to Source/BIOS/xio.asm diff --git a/Source/Build.cmd b/Source/Build.cmd new file mode 100644 index 00000000..aa70ae82 --- /dev/null +++ b/Source/Build.cmd @@ -0,0 +1,4 @@ +@echo off +setlocal + +pushd BIOS && Powershell .\Build.ps1 %* && popd diff --git a/Source/Build.ps1 b/Source/Build.ps1 deleted file mode 100644 index 2353440f..00000000 --- a/Source/Build.ps1 +++ /dev/null @@ -1,157 +0,0 @@ -param([string]$Platform = "", [string]$Config = "", [string]$RomSize = "", [string]$SYS = "", [string]$RomName = "") - -$Platform = $Platform.ToUpper() -while ($true) -{ - if (($Platform -eq "N8VEM") -or ($Platform -eq "ZETA") -or ($Platform -eq "N8") -or ($Platform -eq "MK4") -or ($Platform -eq "S2I") -or ($Platform -eq "S100")) {break} - $Platform = (Read-Host -prompt "Platform [N8VEM|ZETA|N8|MK4|S2I|S100]").Trim().ToUpper() -} - -while ($true) -{ - $ConfigFile = "config_${Platform}_${Config}.asm" - if (Test-Path $ConfigFile) {break} - if ($Config -ne "") {Write-Host "${ConfigFile} does not exist!"} - - "Configurations available:" - Get-Item "config_${Platform}_*.asm" | foreach {Write-Host " >", $_.Name.Substring(8 + $Platform.Length, $_.Name.Length - 12 - $Platform.Length)} - $Config = (Read-Host -prompt "Configuration").Trim() -} - -while ($true) -{ - if (($RomSize -eq "512") -or ($RomSize -eq "1024")) {break} - $RomSize = (Read-Host -prompt "ROM Size [512|1024]").Trim() -} - -if (($Platform -eq "N8") -or ($Platform -eq "MK4")) {$CPUType = "180"} else {$CPUType = "80"} - -$SYS = $SYS.ToUpper() -while ($true) -{ - if (($SYS -eq "CPM") -or ($SYS -eq "ZSYS")) {break} - $SYS = (Read-Host -prompt "System [CPM|ZSYS]").Trim().ToUpper() -} - -if ($RomName -eq "") {$RomName = "${Platform}_${Config}"} -while ($RomName -eq "") -{ - $CP = (Read-Host -prompt "ROM Name [${Config}]").Trim() - if ($RomName -eq "") {$RomName = $Config} -} - -$ErrorAction = 'Stop' - -$TasmPath = '..\tools\tasm32' -$CpmToolsPath = '..\tools\cpmtools' - -$env:TASMTABS = $TasmPath -$env:PATH = $TasmPath + ';' + $CpmToolsPath + ';' + $env:PATH - -$OutDir = "../Output" -$RomFmt = "n8vem_rom${RomSize}" -$BlankFile = "blank${RomSize}KB.dat" -$RomDiskFile = "RomDisk.tmp" -$RomFile = "${OutDir}/${RomName}.rom" -$SysImgFile = "${OutDir}/${RomName}.sys" -$LoaderFile = "${OutDir}/${RomName}.com" - -"" -"Building ${RomName}: ${ROMSize}KB ROM configuration ${Config} for Z${CPUType}..." -"" - -$TimeStamp = '"' + (Get-Date -Format 'dd-MMM-yyyy') + '"' - -Function Asm($Component, $Opt, $Architecture=$CPUType, $Output="${Component}.bin") -{ - $Cmd = "tasm -t${Architecture} -g3 ${Opt} ${Component}.asm ${Output}" - $Cmd | write-host - Invoke-Expression $Cmd | write-host - if ($LASTEXITCODE -gt 0) {throw "TASM returned exit code $LASTEXITCODE"} -} - -Function Concat($InputFileList, $OutputFile) -{ - Set-Content $OutputFile -Value $null - foreach ($InputFile in $InputFileList) - { - Add-Content $OutputFile -Value ([System.IO.File]::ReadAllBytes($InputFile)) -Encoding byte - } -} - -# Generate the build settings include file - -@" -; RomWBW Configured for ${Platform} ${Config}, $(Get-Date -Format "s") -; -#DEFINE TIMESTAMP ${TimeStamp} -; -ROMSIZE .EQU ${ROMSize} ; SIZE OF ROM IN KB -PLATFORM .EQU PLT_${Platform} ; HARDWARE PLATFORM -; -; INCLUDE PLATFORM SPECIFIC DEVICE DEFINITIONS -; -#INCLUDE "std-n8vem.inc" -; -#INCLUDE "${ConfigFile}" -; -"@ | Out-File "build.inc" -Encoding ASCII - -# Build components - -if ($SYS -eq "CPM") -{ -# Asm 'ccpb03' -Output 'cp.bin' -# Asm 'bdosb01' -Output 'dos.bin' - -# Copy-Item '..\cpm22\ccpb03.bin' 'cp.bin' -# Copy-Item '..\cpm22\bdosb01.bin' 'dos.bin' - -# Copy-Item '..\cpm22\ccp22.bin' 'cp.bin' -# Copy-Item '..\cpm22\bdos22.bin' 'dos.bin' - - Copy-Item '..\cpm22\os2ccp.bin' 'cp.bin' - Copy-Item '..\cpm22\os3bdos.bin' 'dos.bin' -} -if ($SYS -eq "ZSYS") -{ - Copy-Item '..\zcpr-dj\zcpr.bin' 'cp.bin' - Copy-Item '..\zsdos\zsdos.bin' 'dos.bin' -} - -Asm 'syscfg' -Asm 'cbios' "-dBLD_SYS=SYS_${SYS}" -Asm 'dbgmon' -Asm 'prefix' -Asm 'bootrom' -Asm 'bootapp' -Asm 'loader' -Asm 'pgzero' -Asm 'hbios' -Asm 'hbfill' -Asm 'romfill' - -# Generate result files using components above - -"Building ${RomName} output files..." - -Concat 'cp.bin','dos.bin','cbios.bin' 'os.bin' -Concat 'prefix.bin','os.bin' $SysImgFile -Concat 'pgzero.bin','bootrom.bin','syscfg.bin','loader.bin','romfill.bin','dbgmon.bin','os.bin','hbfill.bin' 'rom1.bin' -Concat 'pgzero.bin','bootrom.bin','syscfg.bin','loader.bin','hbios.bin' 'rom2.bin' -Concat 'bootapp.bin','syscfg.bin','loader.bin','hbios.bin','dbgmon.bin','os.bin' $LoaderFile - -# Create the RomDisk image - -"Building ${RomSize}KB ${RomName} ROM disk data file..." - -Copy-Item $BlankFile $RomDiskFile -cpmcp -f $RomFmt $RomDiskFile ../RomDsk/${SYS}_${RomSize}KB/*.* 0: -cpmcp -f $RomFmt $RomDiskFile ../RomDsk/cfg_${Platform}_${Config}/*.* 0: -cpmcp -f $RomFmt $RomDiskFile ../Apps/*.com 0: -cpmcp -f $RomFmt $RomDiskFile ${OutDir}/${RomName}.sys 0:${SYS}.sys - -Concat 'rom1.bin','rom2.bin',$RomDiskFile $RomFile - -# Cleanup -Remove-Item $RomDiskFile \ No newline at end of file diff --git a/Source/BuildCommon.cmd b/Source/BuildCommon.cmd new file mode 100644 index 00000000..96c1def1 --- /dev/null +++ b/Source/BuildCommon.cmd @@ -0,0 +1,8 @@ +@echo off +setlocal + +pushd Apps && call Build && popd +pushd CPM22 && call Build && popd +pushd ZCPR && call Build && popd +pushd ZCPR-DJ && call Build && popd +pushd ZSDOS && call Build && popd diff --git a/Source/BuildUNA.ps1 b/Source/BuildUNA.ps1 deleted file mode 100644 index 74931af5..00000000 --- a/Source/BuildUNA.ps1 +++ /dev/null @@ -1,156 +0,0 @@ -param([string]$Config = "", [string]$RomSize = "", [string]$SYS = "", [string]$RomName = "") - -$Platform = "UNA" - -while ($true) -{ - $ConfigFile = "config_${Platform}_${Config}.asm" - if (Test-Path $ConfigFile) {break} - if ($Config -ne "") {Write-Host "${ConfigFile} does not exist!"} - - "Configurations available:" - Get-Item "config_${Platform}_*.asm" | foreach {Write-Host " >", $_.Name.Substring(8 + $Platform.Length, $_.Name.Length - 12 - $Platform.Length)} - $Config = (Read-Host -prompt "Configuration").Trim() -} - -while ($true) -{ - if (($RomSize -eq "512") -or ($RomSize -eq "1024")) {break} - $RomSize = (Read-Host -prompt "ROM Size [512|1024]").Trim() -} - -if (($Platform -eq "N8") -or ($Platform -eq "MK4")) {$CPUType = "180"} else {$CPUType = "80"} - -$SYS = $SYS.ToUpper() -while ($true) -{ - if (($SYS -eq "CPM") -or ($SYS -eq "ZSYS")) {break} - $SYS = (Read-Host -prompt "System [CPM|ZSYS]").Trim().ToUpper() -} - -if ($RomName -eq "") {$RomName = "${Platform}_${Config}"} -while ($RomName -eq "") -{ - $CP = (Read-Host -prompt "ROM Name [${Config}]").Trim() - if ($RomName -eq "") {$RomName = $Config} -} - -$ErrorAction = 'Stop' - -$TasmPath = '..\tools\tasm32' -$CpmToolsPath = '..\tools\cpmtools' - -$env:TASMTABS = $TasmPath -$env:PATH = $TasmPath + ';' + $CpmToolsPath + ';' + $env:PATH - -$OutDir = "../OutputUNA" -$RomFmt = "n8vem_rom${RomSize}" -$BlankFile = "blank${RomSize}KB-UNA.dat" -$RomDiskFile = "RomDisk.tmp" -$RomFile = "${OutDir}/${RomName}.rom" -$SysImgFile = "${OutDir}/${RomName}.sys" -$LoaderFile = "${OutDir}/${RomName}.com" - -"" -"Building ${RomName}: ${ROMSize}KB ROM configuration ${Config} for Z${CPUType}..." -"" - -$TimeStamp = '"' + (Get-Date -Format 'dd-MMM-yyyy') + '"' - -Function Asm($Component, $Opt, $Architecture=$CPUType, $Output="${Component}.bin") -{ - $Cmd = "tasm -t${Architecture} -g3 ${Opt} ${Component}.asm ${Output}" - $Cmd | write-host - Invoke-Expression $Cmd | write-host - if ($LASTEXITCODE -gt 0) {throw "TASM returned exit code $LASTEXITCODE"} -} - -Function Concat($InputFileList, $OutputFile) -{ - Set-Content $OutputFile -Value $null - foreach ($InputFile in $InputFileList) - { - Add-Content $OutputFile -Value ([System.IO.File]::ReadAllBytes($InputFile)) -Encoding byte - } -} - -# Generate the build settings include file - -@" -; RomWBW Configured for ${Platform} ${Config}, $(Get-Date -Format "s") -; -#DEFINE TIMESTAMP ${TimeStamp} -; -ROMSIZE .EQU ${ROMSize} ; SIZE OF ROM IN KB -PLATFORM .EQU PLT_${Platform} ; HARDWARE PLATFORM -; -; INCLUDE PLATFORM SPECIFIC DEVICE DEFINITIONS -; -#INCLUDE "std-n8vem.inc" -; -#INCLUDE "${ConfigFile}" -; -"@ | Out-File "build.inc" -Encoding ASCII - -# Build components - -if ($SYS -eq "CPM") -{ -# Asm 'ccpb03' -Output 'cp.bin' -# Asm 'bdosb01' -Output 'dos.bin' - -# Copy-Item '..\cpm22\ccpb03.bin' 'cp.bin' -# Copy-Item '..\cpm22\bdosb01.bin' 'dos.bin' - -# Copy-Item '..\cpm22\ccp22.bin' 'cp.bin' -# Copy-Item '..\cpm22\bdos22.bin' 'dos.bin' - - Copy-Item '..\cpm22\os2ccp.bin' 'cp.bin' - Copy-Item '..\cpm22\os3bdos.bin' 'dos.bin' -} -if ($SYS -eq "ZSYS") -{ - Copy-Item '..\zcpr-dj\zcpr.bin' 'cp.bin' - Copy-Item '..\zsdos\zsdos.bin' 'dos.bin' -} - -Asm 'syscfg' -Asm 'cbios' "-dBLD_SYS=SYS_${SYS}" -Asm 'dbgmon' -Asm 'prefix_una' -Asm 'bootrom' -Asm 'bootapp' -Asm 'loader' -Asm 'pgzero' -Asm 'ubios' -Asm 'hbfill' -Asm 'romfill' - -# Generate result files using components above - -"Building ${RomName} output files..." - -Concat 'cp.bin','dos.bin','cbios.bin' 'os.bin' -Concat 'prefix_una.bin','os.bin' $SysImgFile -Concat 'pgzero.bin','bootrom.bin','syscfg.bin','loader.bin','romfill.bin','dbgmon.bin','os.bin','hbfill.bin' 'rom1.bin' -Concat 'bootapp.bin','syscfg.bin','loader.bin','ubios.bin','dbgmon.bin','os.bin' $LoaderFile - -# Create the RomDisk image - -"Building ${RomSize}KB ${RomName} ROM disk data file..." - -Copy-Item $BlankFile $RomDiskFile -cpmcp -f $RomFmt $RomDiskFile ../RomDsk/${SYS}_${RomSize}KB/*.* 0: -cpmcp -f $RomFmt $RomDiskFile ../RomDsk/cfg_${Platform}_${Config}/*.* 0: -cpmcp -f $RomFmt $RomDiskFile ../Apps/*.com 0: -cpmcp -f $RomFmt $RomDiskFile ${OutDir}/${RomName}.sys 0:${SYS}.sys - -Concat '..\UNA\UNA-BIOS.BIN','rom1.bin','..\UNA\FSFAT.BIN',$RomDiskFile $RomFile - -# Save UNA distribution files - -Copy-Item 'rom1.bin' ${OutDir}\${SYS}WBW.bin -Copy-Item $RomDiskFile ${OutDir}\${SYS}WBW_ROM${ROMSize}.bin - -# Cleanup -Remove-Item $RomDiskFile \ No newline at end of file diff --git a/CPM22/BDOS.ASM b/Source/CPM22/BDOS.ASM similarity index 100% rename from CPM22/BDOS.ASM rename to Source/CPM22/BDOS.ASM diff --git a/CPM22/BDOS.BAK b/Source/CPM22/BDOS.BAK similarity index 100% rename from CPM22/BDOS.BAK rename to Source/CPM22/BDOS.BAK diff --git a/CPM22/BDOS22.ASM b/Source/CPM22/BDOS22.ASM similarity index 100% rename from CPM22/BDOS22.ASM rename to Source/CPM22/BDOS22.ASM diff --git a/CPM22/BDOS22.BAK b/Source/CPM22/BDOS22.BAK similarity index 100% rename from CPM22/BDOS22.BAK rename to Source/CPM22/BDOS22.BAK diff --git a/Source/CPM22/Build.cmd b/Source/CPM22/Build.cmd new file mode 100644 index 00000000..93a836cb --- /dev/null +++ b/Source/CPM22/Build.cmd @@ -0,0 +1,41 @@ +@echo off +setlocal + +set TOOLS=../../Tools + +set PATH=%TOOLS%\tasm32;%TOOLS%\zx;%PATH% + +set TASMTABS=%TOOLS%\tasm32 + +set ZXBINDIR=%TOOLS%/cpm/bin/ +set ZXLIBDIR=%TOOLS%/cpm/lib/ +set ZXINCDIR=%TOOLS%/cpm/include/ + +call :asm ccpb03 || goto :eof +call :asm bdosb01 || goto :eof + +zx MAC -CCP.ASM -$PO +zx MLOAD25 -CCP.BIN=CCP.HEX + +zx MAC -BDOS.ASM -$PO +zx MLOAD25 -BDOS.BIN=BDOS.HEX + +zx MAC -CCP22.ASM -$PO +zx MLOAD25 -CCP22.BIN=CCP22.HEX + +zx MAC -BDOS22.ASM -$PO +zx MLOAD25 -BDOS22.BIN=BDOS22.HEX + +zx MAC -OS2CCP.ASM -$PO +zx MLOAD25 -OS2CCP.BIN=OS2CCP.HEX + +zx MAC -OS3BDOS.ASM -$PO +zx MLOAD25 -OS3BDOS.BIN=OS3BDOS.HEX + +goto :eof + +:asm +echo. +echo Building %1... +tasm -t80 -b -g3 -fFF %1.asm %1.bin %1.lst +goto :eof diff --git a/CPM22/CCP.ASM b/Source/CPM22/CCP.ASM similarity index 100% rename from CPM22/CCP.ASM rename to Source/CPM22/CCP.ASM diff --git a/CPM22/CCP.BAK b/Source/CPM22/CCP.BAK similarity index 100% rename from CPM22/CCP.BAK rename to Source/CPM22/CCP.BAK diff --git a/CPM22/CCP22.ASM b/Source/CPM22/CCP22.ASM similarity index 100% rename from CPM22/CCP22.ASM rename to Source/CPM22/CCP22.ASM diff --git a/CPM22/CCP22.BAK b/Source/CPM22/CCP22.BAK similarity index 100% rename from CPM22/CCP22.BAK rename to Source/CPM22/CCP22.BAK diff --git a/CPM22/Clean.cmd b/Source/CPM22/Clean.cmd similarity index 100% rename from CPM22/Clean.cmd rename to Source/CPM22/Clean.cmd diff --git a/CPM22/OS2CCP.ASM b/Source/CPM22/OS2CCP.ASM similarity index 100% rename from CPM22/OS2CCP.ASM rename to Source/CPM22/OS2CCP.ASM diff --git a/CPM22/OS2CCP.BAK b/Source/CPM22/OS2CCP.BAK similarity index 100% rename from CPM22/OS2CCP.BAK rename to Source/CPM22/OS2CCP.BAK diff --git a/CPM22/OS3BDOS.ASM b/Source/CPM22/OS3BDOS.ASM similarity index 100% rename from CPM22/OS3BDOS.ASM rename to Source/CPM22/OS3BDOS.ASM diff --git a/CPM22/OS3BDOS.BAK b/Source/CPM22/OS3BDOS.BAK similarity index 100% rename from CPM22/OS3BDOS.BAK rename to Source/CPM22/OS3BDOS.BAK diff --git a/CPM22/bdosb01.asm b/Source/CPM22/bdosb01.asm similarity index 100% rename from CPM22/bdosb01.asm rename to Source/CPM22/bdosb01.asm diff --git a/CPM22/ccpb03.asm b/Source/CPM22/ccpb03.asm similarity index 100% rename from CPM22/ccpb03.asm rename to Source/CPM22/ccpb03.asm diff --git a/Source/Clean.cmd b/Source/Clean.cmd index c354d414..60d6a7fd 100644 --- a/Source/Clean.cmd +++ b/Source/Clean.cmd @@ -1,10 +1,10 @@ @echo off -if exist *.bin del *.bin -if exist *.com del *.com -if exist *.img del *.img -if exist *.rom del *.rom -if exist *.lst del *.lst -if exist *.exp del *.exp -if exist *.tmp del *.tmp -if exist *.mrk del *.mrk -if exist build.inc del build.inc \ No newline at end of file +setlocal + +pushd Apps && call Clean.cmd && popd +pushd CPM22 && call Clean.cmd && popd +pushd ZCPR && call Clean.cmd && popd +pushd ZCPR-DJ && call Clean.cmd && popd +pushd ZSDOS && call Clean.cmd && popd + +pushd BIOS && call Clean.cmd && popd diff --git a/RomDsk/CPM_1024KB/ASM.COM b/Source/RomDsk/ROM_1024KB/ASM.COM similarity index 100% rename from RomDsk/CPM_1024KB/ASM.COM rename to Source/RomDsk/ROM_1024KB/ASM.COM diff --git a/RomDsk/ZSYS_1024KB/CLOCKS.DAT b/Source/RomDsk/ROM_1024KB/CLOCKS.DAT similarity index 100% rename from RomDsk/ZSYS_1024KB/CLOCKS.DAT rename to Source/RomDsk/ROM_1024KB/CLOCKS.DAT diff --git a/RomDsk/CPM_1024KB/CLRDIR.COM b/Source/RomDsk/ROM_1024KB/CLRDIR.COM similarity index 100% rename from RomDsk/CPM_1024KB/CLRDIR.COM rename to Source/RomDsk/ROM_1024KB/CLRDIR.COM diff --git a/RomDsk/ZSYS_1024KB/COPY.CFG b/Source/RomDsk/ROM_1024KB/COPY.CFG similarity index 100% rename from RomDsk/ZSYS_1024KB/COPY.CFG rename to Source/RomDsk/ROM_1024KB/COPY.CFG diff --git a/RomDsk/ZSYS_1024KB/COPY.COM b/Source/RomDsk/ROM_1024KB/COPY.COM similarity index 100% rename from RomDsk/ZSYS_1024KB/COPY.COM rename to Source/RomDsk/ROM_1024KB/COPY.COM diff --git a/RomDsk/ZSYS_1024KB/DATSWEEP.COM b/Source/RomDsk/ROM_1024KB/DATSWEEP.COM similarity index 100% rename from RomDsk/ZSYS_1024KB/DATSWEEP.COM rename to Source/RomDsk/ROM_1024KB/DATSWEEP.COM diff --git a/RomDsk/CPM_1024KB/DDT.COM b/Source/RomDsk/ROM_1024KB/DDT.COM similarity index 100% rename from RomDsk/CPM_1024KB/DDT.COM rename to Source/RomDsk/ROM_1024KB/DDT.COM diff --git a/RomDsk/CPM_1024KB/DDTZ.COM b/Source/RomDsk/ROM_1024KB/DDTZ.COM similarity index 100% rename from RomDsk/CPM_1024KB/DDTZ.COM rename to Source/RomDsk/ROM_1024KB/DDTZ.COM diff --git a/RomDsk/CPM_1024KB/DIF.COM b/Source/RomDsk/ROM_1024KB/DIF.COM similarity index 100% rename from RomDsk/CPM_1024KB/DIF.COM rename to Source/RomDsk/ROM_1024KB/DIF.COM diff --git a/RomDsk/CPM_1024KB/DIRX.COM b/Source/RomDsk/ROM_1024KB/DIRX.COM similarity index 100% rename from RomDsk/CPM_1024KB/DIRX.COM rename to Source/RomDsk/ROM_1024KB/DIRX.COM diff --git a/RomDsk/ZSYS_1024KB/DSCONFIG.COM b/Source/RomDsk/ROM_1024KB/DSCONFIG.COM similarity index 100% rename from RomDsk/ZSYS_1024KB/DSCONFIG.COM rename to Source/RomDsk/ROM_1024KB/DSCONFIG.COM diff --git a/RomDsk/CPM_1024KB/DUMP.COM b/Source/RomDsk/ROM_1024KB/DUMP.COM similarity index 100% rename from RomDsk/CPM_1024KB/DUMP.COM rename to Source/RomDsk/ROM_1024KB/DUMP.COM diff --git a/RomDsk/CPM_1024KB/ED.COM b/Source/RomDsk/ROM_1024KB/ED.COM similarity index 100% rename from RomDsk/CPM_1024KB/ED.COM rename to Source/RomDsk/ROM_1024KB/ED.COM diff --git a/RomDsk/ZSYS_1024KB/FA16.CFG b/Source/RomDsk/ROM_1024KB/FA16.CFG similarity index 100% rename from RomDsk/ZSYS_1024KB/FA16.CFG rename to Source/RomDsk/ROM_1024KB/FA16.CFG diff --git a/RomDsk/ZSYS_1024KB/FA16.DOC b/Source/RomDsk/ROM_1024KB/FA16.DOC similarity index 100% rename from RomDsk/ZSYS_1024KB/FA16.DOC rename to Source/RomDsk/ROM_1024KB/FA16.DOC diff --git a/RomDsk/ZSYS_1024KB/FA16A.FOR b/Source/RomDsk/ROM_1024KB/FA16A.FOR similarity index 100% rename from RomDsk/ZSYS_1024KB/FA16A.FOR rename to Source/RomDsk/ROM_1024KB/FA16A.FOR diff --git a/RomDsk/ZSYS_1024KB/FA16CFG.TXT b/Source/RomDsk/ROM_1024KB/FA16CFG.TXT similarity index 100% rename from RomDsk/ZSYS_1024KB/FA16CFG.TXT rename to Source/RomDsk/ROM_1024KB/FA16CFG.TXT diff --git a/RomDsk/ZSYS_1024KB/FILEATTR.COM b/Source/RomDsk/ROM_1024KB/FILEATTR.COM similarity index 100% rename from RomDsk/ZSYS_1024KB/FILEATTR.COM rename to Source/RomDsk/ROM_1024KB/FILEATTR.COM diff --git a/RomDsk/ZSYS_1024KB/FILEDATE.CFG b/Source/RomDsk/ROM_1024KB/FILEDATE.CFG similarity index 100% rename from RomDsk/ZSYS_1024KB/FILEDATE.CFG rename to Source/RomDsk/ROM_1024KB/FILEDATE.CFG diff --git a/RomDsk/ZSYS_1024KB/FILEDATE.COM b/Source/RomDsk/ROM_1024KB/FILEDATE.COM similarity index 100% rename from RomDsk/ZSYS_1024KB/FILEDATE.COM rename to Source/RomDsk/ROM_1024KB/FILEDATE.COM diff --git a/RomDsk/CPM_1024KB/FLASH.COM b/Source/RomDsk/ROM_1024KB/FLASH.COM similarity index 100% rename from RomDsk/CPM_1024KB/FLASH.COM rename to Source/RomDsk/ROM_1024KB/FLASH.COM diff --git a/RomDsk/ZSYS_1024KB/INITDIR.CFG b/Source/RomDsk/ROM_1024KB/INITDIR.CFG similarity index 100% rename from RomDsk/ZSYS_1024KB/INITDIR.CFG rename to Source/RomDsk/ROM_1024KB/INITDIR.CFG diff --git a/RomDsk/ZSYS_1024KB/INITDIR.COM b/Source/RomDsk/ROM_1024KB/INITDIR.COM similarity index 100% rename from RomDsk/ZSYS_1024KB/INITDIR.COM rename to Source/RomDsk/ROM_1024KB/INITDIR.COM diff --git a/RomDsk/CPM_1024KB/LBREXT.COM b/Source/RomDsk/ROM_1024KB/LBREXT.COM similarity index 100% rename from RomDsk/CPM_1024KB/LBREXT.COM rename to Source/RomDsk/ROM_1024KB/LBREXT.COM diff --git a/RomDsk/ZSYS_1024KB/LDDS.COM b/Source/RomDsk/ROM_1024KB/LDDS.COM similarity index 100% rename from RomDsk/ZSYS_1024KB/LDDS.COM rename to Source/RomDsk/ROM_1024KB/LDDS.COM diff --git a/RomDsk/ZSYS_1024KB/LDP2D.COM b/Source/RomDsk/ROM_1024KB/LDP2D.COM similarity index 100% rename from RomDsk/ZSYS_1024KB/LDP2D.COM rename to Source/RomDsk/ROM_1024KB/LDP2D.COM diff --git a/RomDsk/CPM_1024KB/LIB.COM b/Source/RomDsk/ROM_1024KB/LIB.COM similarity index 100% rename from RomDsk/CPM_1024KB/LIB.COM rename to Source/RomDsk/ROM_1024KB/LIB.COM diff --git a/RomDsk/CPM_1024KB/LINK.COM b/Source/RomDsk/ROM_1024KB/LINK.COM similarity index 100% rename from RomDsk/CPM_1024KB/LINK.COM rename to Source/RomDsk/ROM_1024KB/LINK.COM diff --git a/RomDsk/CPM_1024KB/LOAD.COM b/Source/RomDsk/ROM_1024KB/LOAD.COM similarity index 100% rename from RomDsk/CPM_1024KB/LOAD.COM rename to Source/RomDsk/ROM_1024KB/LOAD.COM diff --git a/RomDsk/CPM_1024KB/MBASIC.COM b/Source/RomDsk/ROM_1024KB/MBASIC.COM similarity index 100% rename from RomDsk/CPM_1024KB/MBASIC.COM rename to Source/RomDsk/ROM_1024KB/MBASIC.COM diff --git a/RomDsk/CPM_1024KB/NULU.COM b/Source/RomDsk/ROM_1024KB/NULU.COM similarity index 100% rename from RomDsk/CPM_1024KB/NULU.COM rename to Source/RomDsk/ROM_1024KB/NULU.COM diff --git a/RomDsk/CPM_1024KB/PIP.COM b/Source/RomDsk/ROM_1024KB/PIP.COM similarity index 100% rename from RomDsk/CPM_1024KB/PIP.COM rename to Source/RomDsk/ROM_1024KB/PIP.COM diff --git a/RomDsk/ZSYS_1024KB/PUTBG.COM b/Source/RomDsk/ROM_1024KB/PUTBG.COM similarity index 100% rename from RomDsk/ZSYS_1024KB/PUTBG.COM rename to Source/RomDsk/ROM_1024KB/PUTBG.COM diff --git a/RomDsk/ZSYS_1024KB/PUTDS.COM b/Source/RomDsk/ROM_1024KB/PUTDS.COM similarity index 100% rename from RomDsk/ZSYS_1024KB/PUTDS.COM rename to Source/RomDsk/ROM_1024KB/PUTDS.COM diff --git a/RomDsk/ZSYS_1024KB/RELOG.COM b/Source/RomDsk/ROM_1024KB/RELOG.COM similarity index 100% rename from RomDsk/ZSYS_1024KB/RELOG.COM rename to Source/RomDsk/ROM_1024KB/RELOG.COM diff --git a/RomDsk/CPM_1024KB/RMAC.COM b/Source/RomDsk/ROM_1024KB/RMAC.COM similarity index 100% rename from RomDsk/CPM_1024KB/RMAC.COM rename to Source/RomDsk/ROM_1024KB/RMAC.COM diff --git a/RomDsk/ZSYS_1024KB/SETTERM.COM b/Source/RomDsk/ROM_1024KB/SETTERM.COM similarity index 100% rename from RomDsk/ZSYS_1024KB/SETTERM.COM rename to Source/RomDsk/ROM_1024KB/SETTERM.COM diff --git a/RomDsk/ZSYS_1024KB/SETUPZST.COM b/Source/RomDsk/ROM_1024KB/SETUPZST.COM similarity index 100% rename from RomDsk/ZSYS_1024KB/SETUPZST.COM rename to Source/RomDsk/ROM_1024KB/SETUPZST.COM diff --git a/RomDsk/CPM_1024KB/SID.COM b/Source/RomDsk/ROM_1024KB/SID.COM similarity index 100% rename from RomDsk/CPM_1024KB/SID.COM rename to Source/RomDsk/ROM_1024KB/SID.COM diff --git a/RomDsk/ZSYS_1024KB/STAMPS.DAT b/Source/RomDsk/ROM_1024KB/STAMPS.DAT similarity index 100% rename from RomDsk/ZSYS_1024KB/STAMPS.DAT rename to Source/RomDsk/ROM_1024KB/STAMPS.DAT diff --git a/RomDsk/CPM_1024KB/STAT.COM b/Source/RomDsk/ROM_1024KB/STAT.COM similarity index 100% rename from RomDsk/CPM_1024KB/STAT.COM rename to Source/RomDsk/ROM_1024KB/STAT.COM diff --git a/RomDsk/CPM_1024KB/SUBMIT.COM b/Source/RomDsk/ROM_1024KB/SUBMIT.COM similarity index 100% rename from RomDsk/CPM_1024KB/SUBMIT.COM rename to Source/RomDsk/ROM_1024KB/SUBMIT.COM diff --git a/RomDsk/CPM_1024KB/SUPERSUB.COM b/Source/RomDsk/ROM_1024KB/SUPERSUB.COM similarity index 100% rename from RomDsk/CPM_1024KB/SUPERSUB.COM rename to Source/RomDsk/ROM_1024KB/SUPERSUB.COM diff --git a/RomDsk/cfg_mk4_diskio3/SURVEY.COM b/Source/RomDsk/ROM_1024KB/SURVEY.COM similarity index 100% rename from RomDsk/cfg_mk4_diskio3/SURVEY.COM rename to Source/RomDsk/ROM_1024KB/SURVEY.COM diff --git a/RomDsk/ZSYS_1024KB/TD.CFG b/Source/RomDsk/ROM_1024KB/TD.CFG similarity index 100% rename from RomDsk/ZSYS_1024KB/TD.CFG rename to Source/RomDsk/ROM_1024KB/TD.CFG diff --git a/RomDsk/ZSYS_1024KB/TD.COM b/Source/RomDsk/ROM_1024KB/TD.COM similarity index 100% rename from RomDsk/ZSYS_1024KB/TD.COM rename to Source/RomDsk/ROM_1024KB/TD.COM diff --git a/RomDsk/ZSYS_1024KB/TERMBASE.DAT b/Source/RomDsk/ROM_1024KB/TERMBASE.DAT similarity index 100% rename from RomDsk/ZSYS_1024KB/TERMBASE.DAT rename to Source/RomDsk/ROM_1024KB/TERMBASE.DAT diff --git a/RomDsk/ZSYS_1024KB/TESTCLOK.COM b/Source/RomDsk/ROM_1024KB/TESTCLOK.COM similarity index 100% rename from RomDsk/ZSYS_1024KB/TESTCLOK.COM rename to Source/RomDsk/ROM_1024KB/TESTCLOK.COM diff --git a/RomDsk/CPM_1024KB/UNARC.COM b/Source/RomDsk/ROM_1024KB/UNARC.COM similarity index 100% rename from RomDsk/CPM_1024KB/UNARC.COM rename to Source/RomDsk/ROM_1024KB/UNARC.COM diff --git a/RomDsk/CPM_1024KB/UNZIP.COM b/Source/RomDsk/ROM_1024KB/UNZIP.COM similarity index 100% rename from RomDsk/CPM_1024KB/UNZIP.COM rename to Source/RomDsk/ROM_1024KB/UNZIP.COM diff --git a/RomDsk/CPM_1024KB/VIDATT.Z80 b/Source/RomDsk/ROM_1024KB/VIDATT.Z80 similarity index 100% rename from RomDsk/CPM_1024KB/VIDATT.Z80 rename to Source/RomDsk/ROM_1024KB/VIDATT.Z80 diff --git a/RomDsk/CPM_1024KB/WS.COM b/Source/RomDsk/ROM_1024KB/WS.COM similarity index 100% rename from RomDsk/CPM_1024KB/WS.COM rename to Source/RomDsk/ROM_1024KB/WS.COM diff --git a/RomDsk/CPM_1024KB/WS.OVR b/Source/RomDsk/ROM_1024KB/WS.OVR similarity index 100% rename from RomDsk/CPM_1024KB/WS.OVR rename to Source/RomDsk/ROM_1024KB/WS.OVR diff --git a/RomDsk/CPM_1024KB/WSCHANGE.COM b/Source/RomDsk/ROM_1024KB/WSCHANGE.COM similarity index 100% rename from RomDsk/CPM_1024KB/WSCHANGE.COM rename to Source/RomDsk/ROM_1024KB/WSCHANGE.COM diff --git a/RomDsk/CPM_1024KB/WSCHANGE.OVR b/Source/RomDsk/ROM_1024KB/WSCHANGE.OVR similarity index 100% rename from RomDsk/CPM_1024KB/WSCHANGE.OVR rename to Source/RomDsk/ROM_1024KB/WSCHANGE.OVR diff --git a/RomDsk/CPM_1024KB/WSCHHELP.OVR b/Source/RomDsk/ROM_1024KB/WSCHHELP.OVR similarity index 100% rename from RomDsk/CPM_1024KB/WSCHHELP.OVR rename to Source/RomDsk/ROM_1024KB/WSCHHELP.OVR diff --git a/RomDsk/CPM_1024KB/WSHELP.OVR b/Source/RomDsk/ROM_1024KB/WSHELP.OVR similarity index 100% rename from RomDsk/CPM_1024KB/WSHELP.OVR rename to Source/RomDsk/ROM_1024KB/WSHELP.OVR diff --git a/RomDsk/CPM_1024KB/WSMSGS.OVR b/Source/RomDsk/ROM_1024KB/WSMSGS.OVR similarity index 100% rename from RomDsk/CPM_1024KB/WSMSGS.OVR rename to Source/RomDsk/ROM_1024KB/WSMSGS.OVR diff --git a/RomDsk/CPM_1024KB/WSPRINT.OVR b/Source/RomDsk/ROM_1024KB/WSPRINT.OVR similarity index 100% rename from RomDsk/CPM_1024KB/WSPRINT.OVR rename to Source/RomDsk/ROM_1024KB/WSPRINT.OVR diff --git a/RomDsk/CPM_1024KB/WSREADME.TXT b/Source/RomDsk/ROM_1024KB/WSREADME.TXT similarity index 100% rename from RomDsk/CPM_1024KB/WSREADME.TXT rename to Source/RomDsk/ROM_1024KB/WSREADME.TXT diff --git a/RomDsk/CPM_1024KB/WSSHORT.OVR b/Source/RomDsk/ROM_1024KB/WSSHORT.OVR similarity index 100% rename from RomDsk/CPM_1024KB/WSSHORT.OVR rename to Source/RomDsk/ROM_1024KB/WSSHORT.OVR diff --git a/RomDsk/CPM_1024KB/WSU.COM b/Source/RomDsk/ROM_1024KB/WSU.COM similarity index 100% rename from RomDsk/CPM_1024KB/WSU.COM rename to Source/RomDsk/ROM_1024KB/WSU.COM diff --git a/RomDsk/CPM_1024KB/XSUB.COM b/Source/RomDsk/ROM_1024KB/XSUB.COM similarity index 100% rename from RomDsk/CPM_1024KB/XSUB.COM rename to Source/RomDsk/ROM_1024KB/XSUB.COM diff --git a/RomDsk/CPM_1024KB/ZAP.COM b/Source/RomDsk/ROM_1024KB/ZAP.COM similarity index 100% rename from RomDsk/CPM_1024KB/ZAP.COM rename to Source/RomDsk/ROM_1024KB/ZAP.COM diff --git a/RomDsk/ZSYS_1024KB/ZCAL.COM b/Source/RomDsk/ROM_1024KB/ZCAL.COM similarity index 100% rename from RomDsk/ZSYS_1024KB/ZCAL.COM rename to Source/RomDsk/ROM_1024KB/ZCAL.COM diff --git a/RomDsk/ZSYS_1024KB/ZCNFG.COM b/Source/RomDsk/ROM_1024KB/ZCNFG.COM similarity index 100% rename from RomDsk/ZSYS_1024KB/ZCNFG.COM rename to Source/RomDsk/ROM_1024KB/ZCNFG.COM diff --git a/RomDsk/ZSYS_1024KB/ZCNFG24.CFG b/Source/RomDsk/ROM_1024KB/ZCNFG24.CFG similarity index 100% rename from RomDsk/ZSYS_1024KB/ZCNFG24.CFG rename to Source/RomDsk/ROM_1024KB/ZCNFG24.CFG diff --git a/RomDsk/CPM_1024KB/ZDE.COM b/Source/RomDsk/ROM_1024KB/ZDE.COM similarity index 100% rename from RomDsk/CPM_1024KB/ZDE.COM rename to Source/RomDsk/ROM_1024KB/ZDE.COM diff --git a/RomDsk/CPM_1024KB/ZDENST.COM b/Source/RomDsk/ROM_1024KB/ZDENST.COM similarity index 100% rename from RomDsk/CPM_1024KB/ZDENST.COM rename to Source/RomDsk/ROM_1024KB/ZDENST.COM diff --git a/RomDsk/ZSYS_1024KB/ZPATH.COM b/Source/RomDsk/ROM_1024KB/ZPATH.COM similarity index 100% rename from RomDsk/ZSYS_1024KB/ZPATH.COM rename to Source/RomDsk/ROM_1024KB/ZPATH.COM diff --git a/RomDsk/ZSYS_1024KB/ZSCONFIG.COM b/Source/RomDsk/ROM_1024KB/ZSCONFIG.COM similarity index 100% rename from RomDsk/ZSYS_1024KB/ZSCONFIG.COM rename to Source/RomDsk/ROM_1024KB/ZSCONFIG.COM diff --git a/RomDsk/ZSYS_1024KB/ZSVSTAMP.COM b/Source/RomDsk/ROM_1024KB/ZSVSTAMP.COM similarity index 100% rename from RomDsk/ZSYS_1024KB/ZSVSTAMP.COM rename to Source/RomDsk/ROM_1024KB/ZSVSTAMP.COM diff --git a/RomDsk/ZSYS_1024KB/ZSVSTAMP.DOC b/Source/RomDsk/ROM_1024KB/ZSVSTAMP.DOC similarity index 100% rename from RomDsk/ZSYS_1024KB/ZSVSTAMP.DOC rename to Source/RomDsk/ROM_1024KB/ZSVSTAMP.DOC diff --git a/RomDsk/ZSYS_1024KB/ZXD.CFG b/Source/RomDsk/ROM_1024KB/ZXD.CFG similarity index 100% rename from RomDsk/ZSYS_1024KB/ZXD.CFG rename to Source/RomDsk/ROM_1024KB/ZXD.CFG diff --git a/RomDsk/ZSYS_1024KB/ZXD.COM b/Source/RomDsk/ROM_1024KB/ZXD.COM similarity index 100% rename from RomDsk/ZSYS_1024KB/ZXD.COM rename to Source/RomDsk/ROM_1024KB/ZXD.COM diff --git a/RomDsk/CPM_512KB/ASM.COM b/Source/RomDsk/ROM_512KB/ASM.COM similarity index 100% rename from RomDsk/CPM_512KB/ASM.COM rename to Source/RomDsk/ROM_512KB/ASM.COM diff --git a/RomDsk/CPM_512KB/CLRDIR.COM b/Source/RomDsk/ROM_512KB/CLRDIR.COM similarity index 100% rename from RomDsk/CPM_512KB/CLRDIR.COM rename to Source/RomDsk/ROM_512KB/CLRDIR.COM diff --git a/RomDsk/ZSYS_512KB/COPY.CFG b/Source/RomDsk/ROM_512KB/COPY.CFG similarity index 100% rename from RomDsk/ZSYS_512KB/COPY.CFG rename to Source/RomDsk/ROM_512KB/COPY.CFG diff --git a/RomDsk/ZSYS_512KB/COPY.COM b/Source/RomDsk/ROM_512KB/COPY.COM similarity index 100% rename from RomDsk/ZSYS_512KB/COPY.COM rename to Source/RomDsk/ROM_512KB/COPY.COM diff --git a/RomDsk/CPM_512KB/DDT.COM b/Source/RomDsk/ROM_512KB/DDT.COM similarity index 100% rename from RomDsk/CPM_512KB/DDT.COM rename to Source/RomDsk/ROM_512KB/DDT.COM diff --git a/RomDsk/CPM_512KB/DDTZ.COM b/Source/RomDsk/ROM_512KB/DDTZ.COM similarity index 100% rename from RomDsk/CPM_512KB/DDTZ.COM rename to Source/RomDsk/ROM_512KB/DDTZ.COM diff --git a/RomDsk/CPM_512KB/DIF.COM b/Source/RomDsk/ROM_512KB/DIF.COM similarity index 100% rename from RomDsk/CPM_512KB/DIF.COM rename to Source/RomDsk/ROM_512KB/DIF.COM diff --git a/RomDsk/CPM_512KB/DUMP.COM b/Source/RomDsk/ROM_512KB/DUMP.COM similarity index 100% rename from RomDsk/CPM_512KB/DUMP.COM rename to Source/RomDsk/ROM_512KB/DUMP.COM diff --git a/RomDsk/CPM_512KB/ED.COM b/Source/RomDsk/ROM_512KB/ED.COM similarity index 100% rename from RomDsk/CPM_512KB/ED.COM rename to Source/RomDsk/ROM_512KB/ED.COM diff --git a/RomDsk/ZSYS_512KB/FA16.CFG b/Source/RomDsk/ROM_512KB/FA16.CFG similarity index 100% rename from RomDsk/ZSYS_512KB/FA16.CFG rename to Source/RomDsk/ROM_512KB/FA16.CFG diff --git a/RomDsk/ZSYS_512KB/FILEATTR.COM b/Source/RomDsk/ROM_512KB/FILEATTR.COM similarity index 100% rename from RomDsk/ZSYS_512KB/FILEATTR.COM rename to Source/RomDsk/ROM_512KB/FILEATTR.COM diff --git a/RomDsk/ZSYS_512KB/FILEDATE.CFG b/Source/RomDsk/ROM_512KB/FILEDATE.CFG similarity index 100% rename from RomDsk/ZSYS_512KB/FILEDATE.CFG rename to Source/RomDsk/ROM_512KB/FILEDATE.CFG diff --git a/RomDsk/ZSYS_512KB/FILEDATE.COM b/Source/RomDsk/ROM_512KB/FILEDATE.COM similarity index 100% rename from RomDsk/ZSYS_512KB/FILEDATE.COM rename to Source/RomDsk/ROM_512KB/FILEDATE.COM diff --git a/RomDsk/CPM_512KB/FLASH.COM b/Source/RomDsk/ROM_512KB/FLASH.COM similarity index 100% rename from RomDsk/CPM_512KB/FLASH.COM rename to Source/RomDsk/ROM_512KB/FLASH.COM diff --git a/RomDsk/ZSYS_512KB/INITDIR.CFG b/Source/RomDsk/ROM_512KB/INITDIR.CFG similarity index 100% rename from RomDsk/ZSYS_512KB/INITDIR.CFG rename to Source/RomDsk/ROM_512KB/INITDIR.CFG diff --git a/RomDsk/ZSYS_512KB/INITDIR.COM b/Source/RomDsk/ROM_512KB/INITDIR.COM similarity index 100% rename from RomDsk/ZSYS_512KB/INITDIR.COM rename to Source/RomDsk/ROM_512KB/INITDIR.COM diff --git a/RomDsk/CPM_512KB/LBREXT.COM b/Source/RomDsk/ROM_512KB/LBREXT.COM similarity index 100% rename from RomDsk/CPM_512KB/LBREXT.COM rename to Source/RomDsk/ROM_512KB/LBREXT.COM diff --git a/RomDsk/ZSYS_512KB/LDDS.COM b/Source/RomDsk/ROM_512KB/LDDS.COM similarity index 100% rename from RomDsk/ZSYS_512KB/LDDS.COM rename to Source/RomDsk/ROM_512KB/LDDS.COM diff --git a/RomDsk/ZSYS_512KB/LDP2D.COM b/Source/RomDsk/ROM_512KB/LDP2D.COM similarity index 100% rename from RomDsk/ZSYS_512KB/LDP2D.COM rename to Source/RomDsk/ROM_512KB/LDP2D.COM diff --git a/RomDsk/CPM_512KB/LINK.COM b/Source/RomDsk/ROM_512KB/LINK.COM similarity index 100% rename from RomDsk/CPM_512KB/LINK.COM rename to Source/RomDsk/ROM_512KB/LINK.COM diff --git a/RomDsk/CPM_512KB/LOAD.COM b/Source/RomDsk/ROM_512KB/LOAD.COM similarity index 100% rename from RomDsk/CPM_512KB/LOAD.COM rename to Source/RomDsk/ROM_512KB/LOAD.COM diff --git a/RomDsk/CPM_512KB/MBASIC.COM b/Source/RomDsk/ROM_512KB/MBASIC.COM similarity index 100% rename from RomDsk/CPM_512KB/MBASIC.COM rename to Source/RomDsk/ROM_512KB/MBASIC.COM diff --git a/RomDsk/CPM_512KB/NULU.COM b/Source/RomDsk/ROM_512KB/NULU.COM similarity index 100% rename from RomDsk/CPM_512KB/NULU.COM rename to Source/RomDsk/ROM_512KB/NULU.COM diff --git a/RomDsk/CPM_512KB/PIP.COM b/Source/RomDsk/ROM_512KB/PIP.COM similarity index 100% rename from RomDsk/CPM_512KB/PIP.COM rename to Source/RomDsk/ROM_512KB/PIP.COM diff --git a/RomDsk/ZSYS_512KB/PUTDS.COM b/Source/RomDsk/ROM_512KB/PUTDS.COM similarity index 100% rename from RomDsk/ZSYS_512KB/PUTDS.COM rename to Source/RomDsk/ROM_512KB/PUTDS.COM diff --git a/RomDsk/ZSYS_512KB/RELOG.COM b/Source/RomDsk/ROM_512KB/RELOG.COM similarity index 100% rename from RomDsk/ZSYS_512KB/RELOG.COM rename to Source/RomDsk/ROM_512KB/RELOG.COM diff --git a/RomDsk/CPM_512KB/RMAC.COM b/Source/RomDsk/ROM_512KB/RMAC.COM similarity index 100% rename from RomDsk/CPM_512KB/RMAC.COM rename to Source/RomDsk/ROM_512KB/RMAC.COM diff --git a/RomDsk/CPM_512KB/STAT.COM b/Source/RomDsk/ROM_512KB/STAT.COM similarity index 100% rename from RomDsk/CPM_512KB/STAT.COM rename to Source/RomDsk/ROM_512KB/STAT.COM diff --git a/RomDsk/CPM_512KB/SUBMIT.COM b/Source/RomDsk/ROM_512KB/SUBMIT.COM similarity index 100% rename from RomDsk/CPM_512KB/SUBMIT.COM rename to Source/RomDsk/ROM_512KB/SUBMIT.COM diff --git a/RomDsk/CPM_512KB/SUPERSUB.COM b/Source/RomDsk/ROM_512KB/SUPERSUB.COM similarity index 100% rename from RomDsk/CPM_512KB/SUPERSUB.COM rename to Source/RomDsk/ROM_512KB/SUPERSUB.COM diff --git a/RomDsk/cfg_mk4_propio/SURVEY.COM b/Source/RomDsk/ROM_512KB/SURVEY.COM similarity index 100% rename from RomDsk/cfg_mk4_propio/SURVEY.COM rename to Source/RomDsk/ROM_512KB/SURVEY.COM diff --git a/RomDsk/ZSYS_512KB/TD.CFG b/Source/RomDsk/ROM_512KB/TD.CFG similarity index 100% rename from RomDsk/ZSYS_512KB/TD.CFG rename to Source/RomDsk/ROM_512KB/TD.CFG diff --git a/RomDsk/ZSYS_512KB/TD.COM b/Source/RomDsk/ROM_512KB/TD.COM similarity index 100% rename from RomDsk/ZSYS_512KB/TD.COM rename to Source/RomDsk/ROM_512KB/TD.COM diff --git a/RomDsk/CPM_512KB/UNARC.COM b/Source/RomDsk/ROM_512KB/UNARC.COM similarity index 100% rename from RomDsk/CPM_512KB/UNARC.COM rename to Source/RomDsk/ROM_512KB/UNARC.COM diff --git a/RomDsk/CPM_512KB/XSUB.COM b/Source/RomDsk/ROM_512KB/XSUB.COM similarity index 100% rename from RomDsk/CPM_512KB/XSUB.COM rename to Source/RomDsk/ROM_512KB/XSUB.COM diff --git a/RomDsk/CPM_512KB/ZAP.COM b/Source/RomDsk/ROM_512KB/ZAP.COM similarity index 100% rename from RomDsk/CPM_512KB/ZAP.COM rename to Source/RomDsk/ROM_512KB/ZAP.COM diff --git a/RomDsk/ZSYS_512KB/ZCAL.COM b/Source/RomDsk/ROM_512KB/ZCAL.COM similarity index 100% rename from RomDsk/ZSYS_512KB/ZCAL.COM rename to Source/RomDsk/ROM_512KB/ZCAL.COM diff --git a/RomDsk/ZSYS_512KB/ZCNFG.COM b/Source/RomDsk/ROM_512KB/ZCNFG.COM similarity index 100% rename from RomDsk/ZSYS_512KB/ZCNFG.COM rename to Source/RomDsk/ROM_512KB/ZCNFG.COM diff --git a/RomDsk/ZSYS_512KB/ZCNFG24.CFG b/Source/RomDsk/ROM_512KB/ZCNFG24.CFG similarity index 100% rename from RomDsk/ZSYS_512KB/ZCNFG24.CFG rename to Source/RomDsk/ROM_512KB/ZCNFG24.CFG diff --git a/RomDsk/CPM_512KB/ZDE.COM b/Source/RomDsk/ROM_512KB/ZDE.COM similarity index 100% rename from RomDsk/CPM_512KB/ZDE.COM rename to Source/RomDsk/ROM_512KB/ZDE.COM diff --git a/RomDsk/CPM_512KB/ZDENST.COM b/Source/RomDsk/ROM_512KB/ZDENST.COM similarity index 100% rename from RomDsk/CPM_512KB/ZDENST.COM rename to Source/RomDsk/ROM_512KB/ZDENST.COM diff --git a/RomDsk/ZSYS_512KB/ZPATH.COM b/Source/RomDsk/ROM_512KB/ZPATH.COM similarity index 100% rename from RomDsk/ZSYS_512KB/ZPATH.COM rename to Source/RomDsk/ROM_512KB/ZPATH.COM diff --git a/RomDsk/ZSYS_512KB/ZSCONFIG.COM b/Source/RomDsk/ROM_512KB/ZSCONFIG.COM similarity index 100% rename from RomDsk/ZSYS_512KB/ZSCONFIG.COM rename to Source/RomDsk/ROM_512KB/ZSCONFIG.COM diff --git a/RomDsk/ZSYS_512KB/ZXD.CFG b/Source/RomDsk/ROM_512KB/ZXD.CFG similarity index 100% rename from RomDsk/ZSYS_512KB/ZXD.CFG rename to Source/RomDsk/ROM_512KB/ZXD.CFG diff --git a/RomDsk/ZSYS_512KB/ZXD.COM b/Source/RomDsk/ROM_512KB/ZXD.COM similarity index 100% rename from RomDsk/ZSYS_512KB/ZXD.COM rename to Source/RomDsk/ROM_512KB/ZXD.COM diff --git a/RomDsk/ReadMe.txt b/Source/RomDsk/ReadMe.txt similarity index 57% rename from RomDsk/ReadMe.txt rename to Source/RomDsk/ReadMe.txt index 0a74378c..fcc442ac 100644 --- a/RomDsk/ReadMe.txt +++ b/Source/RomDsk/ReadMe.txt @@ -5,26 +5,24 @@ When constructing the ROM disk as part of a build, the build process first grabs all of the "standard" files for the size of ROM being built and the type of the OS being used. So, if you are building a -ZSystem, 1MB ROM, all of the files in zsys_1024KB +ZSystem, 1MB ROM, all of the files in ZSYS_1024KB will be pulled in. If you are building a CP/M -512KB ROM, then all the files in cpm_512KB will +512KB ROM, then all the files in CPM_512KB will be pulled in. After adding all of the standard files for the size of ROM being built, the build process will add the files from the appropriate configuration -directory. So, if you are building the "zeta" -configuration, all of the files in the cfg_zeta -directory will be added. - -Finally, the build process will gather all of the -custom applications created by Douglas in the -Apps directory and add those. +directory. So, if you are building the standard +Zeta configuration (zeta_std), all of the files +in the zeta_std directory will be added. If you are building your own ROM, you will need to -add a new directory of the name cfg_xxx where xxx -is the name of your configuration that matches the -config_xxx.asm file in the Source directory. You +add a new directory of the name xxx_yyy where xxx +is the name of your platform (N8VEM, N8, ZETA, etc.) +and yyy is the name of the configuration you have +created. The xxx_yyy name must match the +xxx_yyy.asm file in the Config directory. You will want to add any specific files you want added to your ROM build to this directory. Note that the build will complain if there are no files in your diff --git a/RomDsk/cfg_mk4_diskio3/FDTST.COM b/Source/RomDsk/mk4_diskio3/FDTST.COM similarity index 100% rename from RomDsk/cfg_mk4_diskio3/FDTST.COM rename to Source/RomDsk/mk4_diskio3/FDTST.COM diff --git a/RomDsk/cfg_mk4_diskio3/RTC.COM b/Source/RomDsk/mk4_diskio3/RTC.COM similarity index 100% rename from RomDsk/cfg_mk4_diskio3/RTC.COM rename to Source/RomDsk/mk4_diskio3/RTC.COM diff --git a/RomDsk/cfg_mk4_diskio3/XM-A0.COM b/Source/RomDsk/mk4_diskio3/XM-A0.COM similarity index 100% rename from RomDsk/cfg_mk4_diskio3/XM-A0.COM rename to Source/RomDsk/mk4_diskio3/XM-A0.COM diff --git a/RomDsk/cfg_mk4_diskio3/XM-A1.COM b/Source/RomDsk/mk4_diskio3/XM-A1.COM similarity index 100% rename from RomDsk/cfg_mk4_diskio3/XM-A1.COM rename to Source/RomDsk/mk4_diskio3/XM-A1.COM diff --git a/RomDsk/cfg_mk4_diskio3/XM5-A0.COM b/Source/RomDsk/mk4_diskio3/XM5-A0.COM similarity index 100% rename from RomDsk/cfg_mk4_diskio3/XM5-A0.COM rename to Source/RomDsk/mk4_diskio3/XM5-A0.COM diff --git a/RomDsk/cfg_mk4_diskio3/XM5-A1.COM b/Source/RomDsk/mk4_diskio3/XM5-A1.COM similarity index 100% rename from RomDsk/cfg_mk4_diskio3/XM5-A1.COM rename to Source/RomDsk/mk4_diskio3/XM5-A1.COM diff --git a/RomDsk/cfg_mk4_propio/RTC.COM b/Source/RomDsk/mk4_propio/RTC.COM similarity index 100% rename from RomDsk/cfg_mk4_propio/RTC.COM rename to Source/RomDsk/mk4_propio/RTC.COM diff --git a/RomDsk/cfg_mk4_propio/XM-A0.COM b/Source/RomDsk/mk4_propio/XM-A0.COM similarity index 100% rename from RomDsk/cfg_mk4_propio/XM-A0.COM rename to Source/RomDsk/mk4_propio/XM-A0.COM diff --git a/RomDsk/cfg_mk4_propio/XM-A1.COM b/Source/RomDsk/mk4_propio/XM-A1.COM similarity index 100% rename from RomDsk/cfg_mk4_propio/XM-A1.COM rename to Source/RomDsk/mk4_propio/XM-A1.COM diff --git a/RomDsk/cfg_mk4_propio/XM5-A0.COM b/Source/RomDsk/mk4_propio/XM5-A0.COM similarity index 100% rename from RomDsk/cfg_mk4_propio/XM5-A0.COM rename to Source/RomDsk/mk4_propio/XM5-A0.COM diff --git a/RomDsk/cfg_mk4_propio/XM5-A1.COM b/Source/RomDsk/mk4_propio/XM5-A1.COM similarity index 100% rename from RomDsk/cfg_mk4_propio/XM5-A1.COM rename to Source/RomDsk/mk4_propio/XM5-A1.COM diff --git a/RomDsk/cfg_mk4_std/RTC.COM b/Source/RomDsk/mk4_std/RTC.COM similarity index 100% rename from RomDsk/cfg_mk4_std/RTC.COM rename to Source/RomDsk/mk4_std/RTC.COM diff --git a/RomDsk/cfg_mk4_std/XM-A0.COM b/Source/RomDsk/mk4_std/XM-A0.COM similarity index 100% rename from RomDsk/cfg_mk4_std/XM-A0.COM rename to Source/RomDsk/mk4_std/XM-A0.COM diff --git a/RomDsk/cfg_mk4_std/XM-A1.COM b/Source/RomDsk/mk4_std/XM-A1.COM similarity index 100% rename from RomDsk/cfg_mk4_std/XM-A1.COM rename to Source/RomDsk/mk4_std/XM-A1.COM diff --git a/RomDsk/cfg_mk4_std/XM5-A0.COM b/Source/RomDsk/mk4_std/XM5-A0.COM similarity index 100% rename from RomDsk/cfg_mk4_std/XM5-A0.COM rename to Source/RomDsk/mk4_std/XM5-A0.COM diff --git a/RomDsk/cfg_mk4_std/XM5-A1.COM b/Source/RomDsk/mk4_std/XM5-A1.COM similarity index 100% rename from RomDsk/cfg_mk4_std/XM5-A1.COM rename to Source/RomDsk/mk4_std/XM5-A1.COM diff --git a/RomDsk/cfg_n8_2312/FDTST.COM b/Source/RomDsk/n8_2312/FDTST.COM similarity index 100% rename from RomDsk/cfg_n8_2312/FDTST.COM rename to Source/RomDsk/n8_2312/FDTST.COM diff --git a/RomDsk/cfg_n8_2312/RTC.COM b/Source/RomDsk/n8_2312/RTC.COM similarity index 100% rename from RomDsk/cfg_n8_2312/RTC.COM rename to Source/RomDsk/n8_2312/RTC.COM diff --git a/RomDsk/cfg_n8_2312/XM-A0.COM b/Source/RomDsk/n8_2312/XM-A0.COM similarity index 100% rename from RomDsk/cfg_n8_2312/XM-A0.COM rename to Source/RomDsk/n8_2312/XM-A0.COM diff --git a/RomDsk/cfg_n8_2312/XM-A1.COM b/Source/RomDsk/n8_2312/XM-A1.COM similarity index 100% rename from RomDsk/cfg_n8_2312/XM-A1.COM rename to Source/RomDsk/n8_2312/XM-A1.COM diff --git a/RomDsk/cfg_n8_2312/XM5-A0.COM b/Source/RomDsk/n8_2312/XM5-A0.COM similarity index 100% rename from RomDsk/cfg_n8_2312/XM5-A0.COM rename to Source/RomDsk/n8_2312/XM5-A0.COM diff --git a/RomDsk/cfg_n8_2312/XM5-A1.COM b/Source/RomDsk/n8_2312/XM5-A1.COM similarity index 100% rename from RomDsk/cfg_n8_2312/XM5-A1.COM rename to Source/RomDsk/n8_2312/XM5-A1.COM diff --git a/RomDsk/cfg_n8_2511/FDTST.COM b/Source/RomDsk/n8_2511/FDTST.COM similarity index 100% rename from RomDsk/cfg_n8_2511/FDTST.COM rename to Source/RomDsk/n8_2511/FDTST.COM diff --git a/RomDsk/cfg_n8_2511/RTC.COM b/Source/RomDsk/n8_2511/RTC.COM similarity index 100% rename from RomDsk/cfg_n8_2511/RTC.COM rename to Source/RomDsk/n8_2511/RTC.COM diff --git a/RomDsk/cfg_n8_2511/XM-A0.COM b/Source/RomDsk/n8_2511/XM-A0.COM similarity index 100% rename from RomDsk/cfg_n8_2511/XM-A0.COM rename to Source/RomDsk/n8_2511/XM-A0.COM diff --git a/RomDsk/cfg_n8_2511/XM-A1.COM b/Source/RomDsk/n8_2511/XM-A1.COM similarity index 100% rename from RomDsk/cfg_n8_2511/XM-A1.COM rename to Source/RomDsk/n8_2511/XM-A1.COM diff --git a/RomDsk/cfg_n8_2511/XM5-A0.COM b/Source/RomDsk/n8_2511/XM5-A0.COM similarity index 100% rename from RomDsk/cfg_n8_2511/XM5-A0.COM rename to Source/RomDsk/n8_2511/XM5-A0.COM diff --git a/RomDsk/cfg_n8_2511/XM5-A1.COM b/Source/RomDsk/n8_2511/XM5-A1.COM similarity index 100% rename from RomDsk/cfg_n8_2511/XM5-A1.COM rename to Source/RomDsk/n8_2511/XM5-A1.COM diff --git a/RomDsk/cfg_n8vem_ci/1200.COM b/Source/RomDsk/n8vem_ci/1200.COM similarity index 100% rename from RomDsk/cfg_n8vem_ci/1200.COM rename to Source/RomDsk/n8vem_ci/1200.COM diff --git a/RomDsk/cfg_n8vem_ci/38400.COM b/Source/RomDsk/n8vem_ci/38400.COM similarity index 100% rename from RomDsk/cfg_n8vem_ci/38400.COM rename to Source/RomDsk/n8vem_ci/38400.COM diff --git a/RomDsk/cfg_n8vem_ci/9600.COM b/Source/RomDsk/n8vem_ci/9600.COM similarity index 100% rename from RomDsk/cfg_n8vem_ci/9600.COM rename to Source/RomDsk/n8vem_ci/9600.COM diff --git a/RomDsk/cfg_n8vem_ci/RTC.COM b/Source/RomDsk/n8vem_ci/RTC.COM similarity index 100% rename from RomDsk/cfg_n8vem_ci/RTC.COM rename to Source/RomDsk/n8vem_ci/RTC.COM diff --git a/RomDsk/cfg_n8vem_ci/T5.COM b/Source/RomDsk/n8vem_ci/T5.COM similarity index 100% rename from RomDsk/cfg_n8vem_ci/T5.COM rename to Source/RomDsk/n8vem_ci/T5.COM diff --git a/RomDsk/cfg_n8vem_ci/VT3.COM b/Source/RomDsk/n8vem_ci/VT3.COM similarity index 100% rename from RomDsk/cfg_n8vem_ci/VT3.COM rename to Source/RomDsk/n8vem_ci/VT3.COM diff --git a/RomDsk/cfg_n8vem_ci/XM.COM b/Source/RomDsk/n8vem_ci/XM.COM similarity index 100% rename from RomDsk/cfg_n8vem_ci/XM.COM rename to Source/RomDsk/n8vem_ci/XM.COM diff --git a/RomDsk/cfg_n8vem_ci/XM5.COM b/Source/RomDsk/n8vem_ci/XM5.COM similarity index 100% rename from RomDsk/cfg_n8vem_ci/XM5.COM rename to Source/RomDsk/n8vem_ci/XM5.COM diff --git a/RomDsk/cfg_n8vem_cvdu/1200.COM b/Source/RomDsk/n8vem_cvdu/1200.COM similarity index 100% rename from RomDsk/cfg_n8vem_cvdu/1200.COM rename to Source/RomDsk/n8vem_cvdu/1200.COM diff --git a/RomDsk/cfg_n8vem_cvdu/38400.COM b/Source/RomDsk/n8vem_cvdu/38400.COM similarity index 100% rename from RomDsk/cfg_n8vem_cvdu/38400.COM rename to Source/RomDsk/n8vem_cvdu/38400.COM diff --git a/RomDsk/cfg_n8vem_cvdu/9600.COM b/Source/RomDsk/n8vem_cvdu/9600.COM similarity index 100% rename from RomDsk/cfg_n8vem_cvdu/9600.COM rename to Source/RomDsk/n8vem_cvdu/9600.COM diff --git a/RomDsk/cfg_n8vem_cvdu/RTC.COM b/Source/RomDsk/n8vem_cvdu/RTC.COM similarity index 100% rename from RomDsk/cfg_n8vem_cvdu/RTC.COM rename to Source/RomDsk/n8vem_cvdu/RTC.COM diff --git a/RomDsk/cfg_n8vem_cvdu/T5.COM b/Source/RomDsk/n8vem_cvdu/T5.COM similarity index 100% rename from RomDsk/cfg_n8vem_cvdu/T5.COM rename to Source/RomDsk/n8vem_cvdu/T5.COM diff --git a/RomDsk/cfg_n8vem_cvdu/XM.COM b/Source/RomDsk/n8vem_cvdu/XM.COM similarity index 100% rename from RomDsk/cfg_n8vem_cvdu/XM.COM rename to Source/RomDsk/n8vem_cvdu/XM.COM diff --git a/RomDsk/cfg_n8vem_cvdu/XM5.COM b/Source/RomDsk/n8vem_cvdu/XM5.COM similarity index 100% rename from RomDsk/cfg_n8vem_cvdu/XM5.COM rename to Source/RomDsk/n8vem_cvdu/XM5.COM diff --git a/RomDsk/cfg_n8vem_dide/1200.COM b/Source/RomDsk/n8vem_dide/1200.COM similarity index 100% rename from RomDsk/cfg_n8vem_dide/1200.COM rename to Source/RomDsk/n8vem_dide/1200.COM diff --git a/RomDsk/cfg_n8vem_dide/38400.COM b/Source/RomDsk/n8vem_dide/38400.COM similarity index 100% rename from RomDsk/cfg_n8vem_dide/38400.COM rename to Source/RomDsk/n8vem_dide/38400.COM diff --git a/RomDsk/cfg_n8vem_dide/9600.COM b/Source/RomDsk/n8vem_dide/9600.COM similarity index 100% rename from RomDsk/cfg_n8vem_dide/9600.COM rename to Source/RomDsk/n8vem_dide/9600.COM diff --git a/RomDsk/cfg_n8vem_dide/FDTST.COM b/Source/RomDsk/n8vem_dide/FDTST.COM similarity index 100% rename from RomDsk/cfg_n8vem_dide/FDTST.COM rename to Source/RomDsk/n8vem_dide/FDTST.COM diff --git a/RomDsk/cfg_n8vem_dide/RTC.COM b/Source/RomDsk/n8vem_dide/RTC.COM similarity index 100% rename from RomDsk/cfg_n8vem_dide/RTC.COM rename to Source/RomDsk/n8vem_dide/RTC.COM diff --git a/RomDsk/cfg_n8vem_dide/T5.COM b/Source/RomDsk/n8vem_dide/T5.COM similarity index 100% rename from RomDsk/cfg_n8vem_dide/T5.COM rename to Source/RomDsk/n8vem_dide/T5.COM diff --git a/RomDsk/cfg_n8vem_dide/XM.COM b/Source/RomDsk/n8vem_dide/XM.COM similarity index 100% rename from RomDsk/cfg_n8vem_dide/XM.COM rename to Source/RomDsk/n8vem_dide/XM.COM diff --git a/RomDsk/cfg_n8vem_dide/XM5.COM b/Source/RomDsk/n8vem_dide/XM5.COM similarity index 100% rename from RomDsk/cfg_n8vem_dide/XM5.COM rename to Source/RomDsk/n8vem_dide/XM5.COM diff --git a/RomDsk/cfg_n8vem_diskio/1200.COM b/Source/RomDsk/n8vem_diskio/1200.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio/1200.COM rename to Source/RomDsk/n8vem_diskio/1200.COM diff --git a/RomDsk/cfg_n8vem_diskio/38400.COM b/Source/RomDsk/n8vem_diskio/38400.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio/38400.COM rename to Source/RomDsk/n8vem_diskio/38400.COM diff --git a/RomDsk/cfg_n8vem_diskio/9600.COM b/Source/RomDsk/n8vem_diskio/9600.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio/9600.COM rename to Source/RomDsk/n8vem_diskio/9600.COM diff --git a/RomDsk/cfg_n8vem_diskio/ECIDETST.COM b/Source/RomDsk/n8vem_diskio/ECIDETST.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio/ECIDETST.COM rename to Source/RomDsk/n8vem_diskio/ECIDETST.COM diff --git a/RomDsk/cfg_n8vem_diskio/FDCMON.COM b/Source/RomDsk/n8vem_diskio/FDCMON.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio/FDCMON.COM rename to Source/RomDsk/n8vem_diskio/FDCMON.COM diff --git a/RomDsk/cfg_n8vem_diskio/FDTST.COM b/Source/RomDsk/n8vem_diskio/FDTST.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio/FDTST.COM rename to Source/RomDsk/n8vem_diskio/FDTST.COM diff --git a/RomDsk/cfg_n8vem_diskio/RTC.COM b/Source/RomDsk/n8vem_diskio/RTC.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio/RTC.COM rename to Source/RomDsk/n8vem_diskio/RTC.COM diff --git a/RomDsk/cfg_n8vem_diskio/T5.COM b/Source/RomDsk/n8vem_diskio/T5.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio/T5.COM rename to Source/RomDsk/n8vem_diskio/T5.COM diff --git a/RomDsk/cfg_n8vem_diskio/TP-IDE.COM b/Source/RomDsk/n8vem_diskio/TP-IDE.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio/TP-IDE.COM rename to Source/RomDsk/n8vem_diskio/TP-IDE.COM diff --git a/RomDsk/cfg_n8vem_diskio/XM.COM b/Source/RomDsk/n8vem_diskio/XM.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio/XM.COM rename to Source/RomDsk/n8vem_diskio/XM.COM diff --git a/RomDsk/cfg_n8vem_diskio/XM5.COM b/Source/RomDsk/n8vem_diskio/XM5.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio/XM5.COM rename to Source/RomDsk/n8vem_diskio/XM5.COM diff --git a/RomDsk/cfg_n8vem_diskio3+cvdu/1200.COM b/Source/RomDsk/n8vem_diskio3+cvdu/1200.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio3+cvdu/1200.COM rename to Source/RomDsk/n8vem_diskio3+cvdu/1200.COM diff --git a/RomDsk/cfg_n8vem_diskio3+cvdu/38400.COM b/Source/RomDsk/n8vem_diskio3+cvdu/38400.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio3+cvdu/38400.COM rename to Source/RomDsk/n8vem_diskio3+cvdu/38400.COM diff --git a/RomDsk/cfg_n8vem_diskio3+cvdu/9600.COM b/Source/RomDsk/n8vem_diskio3+cvdu/9600.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio3+cvdu/9600.COM rename to Source/RomDsk/n8vem_diskio3+cvdu/9600.COM diff --git a/RomDsk/cfg_n8vem_diskio3+cvdu/FDTST.COM b/Source/RomDsk/n8vem_diskio3+cvdu/FDTST.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio3+cvdu/FDTST.COM rename to Source/RomDsk/n8vem_diskio3+cvdu/FDTST.COM diff --git a/RomDsk/cfg_n8vem_diskio3+cvdu/RTC.COM b/Source/RomDsk/n8vem_diskio3+cvdu/RTC.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio3+cvdu/RTC.COM rename to Source/RomDsk/n8vem_diskio3+cvdu/RTC.COM diff --git a/RomDsk/cfg_n8vem_diskio3+cvdu/T5.COM b/Source/RomDsk/n8vem_diskio3+cvdu/T5.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio3+cvdu/T5.COM rename to Source/RomDsk/n8vem_diskio3+cvdu/T5.COM diff --git a/RomDsk/cfg_n8vem_diskio3+cvdu/XM.COM b/Source/RomDsk/n8vem_diskio3+cvdu/XM.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio3+cvdu/XM.COM rename to Source/RomDsk/n8vem_diskio3+cvdu/XM.COM diff --git a/RomDsk/cfg_n8vem_diskio3+cvdu/XM5.COM b/Source/RomDsk/n8vem_diskio3+cvdu/XM5.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio3+cvdu/XM5.COM rename to Source/RomDsk/n8vem_diskio3+cvdu/XM5.COM diff --git a/RomDsk/cfg_n8vem_diskio3/1200.COM b/Source/RomDsk/n8vem_diskio3/1200.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio3/1200.COM rename to Source/RomDsk/n8vem_diskio3/1200.COM diff --git a/RomDsk/cfg_n8vem_diskio3/38400.COM b/Source/RomDsk/n8vem_diskio3/38400.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio3/38400.COM rename to Source/RomDsk/n8vem_diskio3/38400.COM diff --git a/RomDsk/cfg_n8vem_diskio3/9600.COM b/Source/RomDsk/n8vem_diskio3/9600.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio3/9600.COM rename to Source/RomDsk/n8vem_diskio3/9600.COM diff --git a/RomDsk/cfg_n8vem_diskio3/FDTST.COM b/Source/RomDsk/n8vem_diskio3/FDTST.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio3/FDTST.COM rename to Source/RomDsk/n8vem_diskio3/FDTST.COM diff --git a/RomDsk/cfg_n8vem_diskio3/RTC.COM b/Source/RomDsk/n8vem_diskio3/RTC.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio3/RTC.COM rename to Source/RomDsk/n8vem_diskio3/RTC.COM diff --git a/RomDsk/cfg_n8vem_diskio3/T5.COM b/Source/RomDsk/n8vem_diskio3/T5.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio3/T5.COM rename to Source/RomDsk/n8vem_diskio3/T5.COM diff --git a/RomDsk/cfg_n8vem_diskio3/XM.COM b/Source/RomDsk/n8vem_diskio3/XM.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio3/XM.COM rename to Source/RomDsk/n8vem_diskio3/XM.COM diff --git a/RomDsk/cfg_n8vem_diskio3/XM5.COM b/Source/RomDsk/n8vem_diskio3/XM5.COM similarity index 100% rename from RomDsk/cfg_n8vem_diskio3/XM5.COM rename to Source/RomDsk/n8vem_diskio3/XM5.COM diff --git a/RomDsk/cfg_n8vem_dsd/1200.COM b/Source/RomDsk/n8vem_dsd/1200.COM similarity index 100% rename from RomDsk/cfg_n8vem_dsd/1200.COM rename to Source/RomDsk/n8vem_dsd/1200.COM diff --git a/RomDsk/cfg_n8vem_dsd/38400.COM b/Source/RomDsk/n8vem_dsd/38400.COM similarity index 100% rename from RomDsk/cfg_n8vem_dsd/38400.COM rename to Source/RomDsk/n8vem_dsd/38400.COM diff --git a/RomDsk/cfg_n8vem_dsd/9600.COM b/Source/RomDsk/n8vem_dsd/9600.COM similarity index 100% rename from RomDsk/cfg_n8vem_dsd/9600.COM rename to Source/RomDsk/n8vem_dsd/9600.COM diff --git a/RomDsk/cfg_n8vem_dsd/RTC.COM b/Source/RomDsk/n8vem_dsd/RTC.COM similarity index 100% rename from RomDsk/cfg_n8vem_dsd/RTC.COM rename to Source/RomDsk/n8vem_dsd/RTC.COM diff --git a/RomDsk/cfg_n8vem_dsd/T5.COM b/Source/RomDsk/n8vem_dsd/T5.COM similarity index 100% rename from RomDsk/cfg_n8vem_dsd/T5.COM rename to Source/RomDsk/n8vem_dsd/T5.COM diff --git a/RomDsk/cfg_n8vem_dsd/VT3.COM b/Source/RomDsk/n8vem_dsd/VT3.COM similarity index 100% rename from RomDsk/cfg_n8vem_dsd/VT3.COM rename to Source/RomDsk/n8vem_dsd/VT3.COM diff --git a/RomDsk/cfg_n8vem_dsd/XM.COM b/Source/RomDsk/n8vem_dsd/XM.COM similarity index 100% rename from RomDsk/cfg_n8vem_dsd/XM.COM rename to Source/RomDsk/n8vem_dsd/XM.COM diff --git a/RomDsk/cfg_n8vem_dsd/XM5.COM b/Source/RomDsk/n8vem_dsd/XM5.COM similarity index 100% rename from RomDsk/cfg_n8vem_dsd/XM5.COM rename to Source/RomDsk/n8vem_dsd/XM5.COM diff --git a/RomDsk/cfg_n8vem_mfp/1200.COM b/Source/RomDsk/n8vem_mfp/1200.COM similarity index 100% rename from RomDsk/cfg_n8vem_mfp/1200.COM rename to Source/RomDsk/n8vem_mfp/1200.COM diff --git a/RomDsk/cfg_n8vem_mfp/38400.COM b/Source/RomDsk/n8vem_mfp/38400.COM similarity index 100% rename from RomDsk/cfg_n8vem_mfp/38400.COM rename to Source/RomDsk/n8vem_mfp/38400.COM diff --git a/RomDsk/cfg_n8vem_mfp/9600.COM b/Source/RomDsk/n8vem_mfp/9600.COM similarity index 100% rename from RomDsk/cfg_n8vem_mfp/9600.COM rename to Source/RomDsk/n8vem_mfp/9600.COM diff --git a/RomDsk/cfg_n8vem_mfp/RTC.COM b/Source/RomDsk/n8vem_mfp/RTC.COM similarity index 100% rename from RomDsk/cfg_n8vem_mfp/RTC.COM rename to Source/RomDsk/n8vem_mfp/RTC.COM diff --git a/RomDsk/cfg_n8vem_mfp/T5.COM b/Source/RomDsk/n8vem_mfp/T5.COM similarity index 100% rename from RomDsk/cfg_n8vem_mfp/T5.COM rename to Source/RomDsk/n8vem_mfp/T5.COM diff --git a/RomDsk/cfg_n8vem_mfp/VT3.COM b/Source/RomDsk/n8vem_mfp/VT3.COM similarity index 100% rename from RomDsk/cfg_n8vem_mfp/VT3.COM rename to Source/RomDsk/n8vem_mfp/VT3.COM diff --git a/RomDsk/cfg_n8vem_mfp/XM.COM b/Source/RomDsk/n8vem_mfp/XM.COM similarity index 100% rename from RomDsk/cfg_n8vem_mfp/XM.COM rename to Source/RomDsk/n8vem_mfp/XM.COM diff --git a/RomDsk/cfg_n8vem_mfp/XM5.COM b/Source/RomDsk/n8vem_mfp/XM5.COM similarity index 100% rename from RomDsk/cfg_n8vem_mfp/XM5.COM rename to Source/RomDsk/n8vem_mfp/XM5.COM diff --git a/RomDsk/cfg_n8vem_ppide/1200.COM b/Source/RomDsk/n8vem_ppide/1200.COM similarity index 100% rename from RomDsk/cfg_n8vem_ppide/1200.COM rename to Source/RomDsk/n8vem_ppide/1200.COM diff --git a/RomDsk/cfg_n8vem_ppide/38400.COM b/Source/RomDsk/n8vem_ppide/38400.COM similarity index 100% rename from RomDsk/cfg_n8vem_ppide/38400.COM rename to Source/RomDsk/n8vem_ppide/38400.COM diff --git a/RomDsk/cfg_n8vem_ppide/9600.COM b/Source/RomDsk/n8vem_ppide/9600.COM similarity index 100% rename from RomDsk/cfg_n8vem_ppide/9600.COM rename to Source/RomDsk/n8vem_ppide/9600.COM diff --git a/RomDsk/cfg_n8vem_ppide/PPIDETST.COM b/Source/RomDsk/n8vem_ppide/PPIDETST.COM similarity index 100% rename from RomDsk/cfg_n8vem_ppide/PPIDETST.COM rename to Source/RomDsk/n8vem_ppide/PPIDETST.COM diff --git a/RomDsk/cfg_n8vem_ppide/RTC.COM b/Source/RomDsk/n8vem_ppide/RTC.COM similarity index 100% rename from RomDsk/cfg_n8vem_ppide/RTC.COM rename to Source/RomDsk/n8vem_ppide/RTC.COM diff --git a/RomDsk/cfg_n8vem_ppide/T5.COM b/Source/RomDsk/n8vem_ppide/T5.COM similarity index 100% rename from RomDsk/cfg_n8vem_ppide/T5.COM rename to Source/RomDsk/n8vem_ppide/T5.COM diff --git a/RomDsk/cfg_n8vem_ppide/VT3.COM b/Source/RomDsk/n8vem_ppide/VT3.COM similarity index 100% rename from RomDsk/cfg_n8vem_ppide/VT3.COM rename to Source/RomDsk/n8vem_ppide/VT3.COM diff --git a/RomDsk/cfg_n8vem_ppide/XM.COM b/Source/RomDsk/n8vem_ppide/XM.COM similarity index 100% rename from RomDsk/cfg_n8vem_ppide/XM.COM rename to Source/RomDsk/n8vem_ppide/XM.COM diff --git a/RomDsk/cfg_n8vem_ppide/XM5.COM b/Source/RomDsk/n8vem_ppide/XM5.COM similarity index 100% rename from RomDsk/cfg_n8vem_ppide/XM5.COM rename to Source/RomDsk/n8vem_ppide/XM5.COM diff --git a/RomDsk/cfg_n8vem_ppisd/1200.COM b/Source/RomDsk/n8vem_ppisd/1200.COM similarity index 100% rename from RomDsk/cfg_n8vem_ppisd/1200.COM rename to Source/RomDsk/n8vem_ppisd/1200.COM diff --git a/RomDsk/cfg_n8vem_ppisd/38400.COM b/Source/RomDsk/n8vem_ppisd/38400.COM similarity index 100% rename from RomDsk/cfg_n8vem_ppisd/38400.COM rename to Source/RomDsk/n8vem_ppisd/38400.COM diff --git a/RomDsk/cfg_n8vem_ppisd/9600.COM b/Source/RomDsk/n8vem_ppisd/9600.COM similarity index 100% rename from RomDsk/cfg_n8vem_ppisd/9600.COM rename to Source/RomDsk/n8vem_ppisd/9600.COM diff --git a/RomDsk/cfg_n8vem_ppisd/RTC.COM b/Source/RomDsk/n8vem_ppisd/RTC.COM similarity index 100% rename from RomDsk/cfg_n8vem_ppisd/RTC.COM rename to Source/RomDsk/n8vem_ppisd/RTC.COM diff --git a/RomDsk/cfg_n8vem_ppisd/T5.COM b/Source/RomDsk/n8vem_ppisd/T5.COM similarity index 100% rename from RomDsk/cfg_n8vem_ppisd/T5.COM rename to Source/RomDsk/n8vem_ppisd/T5.COM diff --git a/RomDsk/cfg_n8vem_ppisd/VT3.COM b/Source/RomDsk/n8vem_ppisd/VT3.COM similarity index 100% rename from RomDsk/cfg_n8vem_ppisd/VT3.COM rename to Source/RomDsk/n8vem_ppisd/VT3.COM diff --git a/RomDsk/cfg_n8vem_ppisd/XM.COM b/Source/RomDsk/n8vem_ppisd/XM.COM similarity index 100% rename from RomDsk/cfg_n8vem_ppisd/XM.COM rename to Source/RomDsk/n8vem_ppisd/XM.COM diff --git a/RomDsk/cfg_n8vem_ppisd/XM5.COM b/Source/RomDsk/n8vem_ppisd/XM5.COM similarity index 100% rename from RomDsk/cfg_n8vem_ppisd/XM5.COM rename to Source/RomDsk/n8vem_ppisd/XM5.COM diff --git a/RomDsk/cfg_n8vem_propio/1200.COM b/Source/RomDsk/n8vem_propio/1200.COM similarity index 100% rename from RomDsk/cfg_n8vem_propio/1200.COM rename to Source/RomDsk/n8vem_propio/1200.COM diff --git a/RomDsk/cfg_n8vem_propio/38400.COM b/Source/RomDsk/n8vem_propio/38400.COM similarity index 100% rename from RomDsk/cfg_n8vem_propio/38400.COM rename to Source/RomDsk/n8vem_propio/38400.COM diff --git a/RomDsk/cfg_n8vem_propio/9600.COM b/Source/RomDsk/n8vem_propio/9600.COM similarity index 100% rename from RomDsk/cfg_n8vem_propio/9600.COM rename to Source/RomDsk/n8vem_propio/9600.COM diff --git a/RomDsk/cfg_n8vem_propio/RTC.COM b/Source/RomDsk/n8vem_propio/RTC.COM similarity index 100% rename from RomDsk/cfg_n8vem_propio/RTC.COM rename to Source/RomDsk/n8vem_propio/RTC.COM diff --git a/RomDsk/cfg_n8vem_propio/T5.COM b/Source/RomDsk/n8vem_propio/T5.COM similarity index 100% rename from RomDsk/cfg_n8vem_propio/T5.COM rename to Source/RomDsk/n8vem_propio/T5.COM diff --git a/RomDsk/cfg_n8vem_propio/XM.COM b/Source/RomDsk/n8vem_propio/XM.COM similarity index 100% rename from RomDsk/cfg_n8vem_propio/XM.COM rename to Source/RomDsk/n8vem_propio/XM.COM diff --git a/RomDsk/cfg_n8vem_propio/XM5.COM b/Source/RomDsk/n8vem_propio/XM5.COM similarity index 100% rename from RomDsk/cfg_n8vem_propio/XM5.COM rename to Source/RomDsk/n8vem_propio/XM5.COM diff --git a/RomDsk/cfg_n8vem_rf/1200.COM b/Source/RomDsk/n8vem_rf/1200.COM similarity index 100% rename from RomDsk/cfg_n8vem_rf/1200.COM rename to Source/RomDsk/n8vem_rf/1200.COM diff --git a/RomDsk/cfg_n8vem_rf/38400.COM b/Source/RomDsk/n8vem_rf/38400.COM similarity index 100% rename from RomDsk/cfg_n8vem_rf/38400.COM rename to Source/RomDsk/n8vem_rf/38400.COM diff --git a/RomDsk/cfg_n8vem_rf/9600.COM b/Source/RomDsk/n8vem_rf/9600.COM similarity index 100% rename from RomDsk/cfg_n8vem_rf/9600.COM rename to Source/RomDsk/n8vem_rf/9600.COM diff --git a/RomDsk/cfg_n8vem_rf/RTC.COM b/Source/RomDsk/n8vem_rf/RTC.COM similarity index 100% rename from RomDsk/cfg_n8vem_rf/RTC.COM rename to Source/RomDsk/n8vem_rf/RTC.COM diff --git a/RomDsk/cfg_n8vem_rf/T5.COM b/Source/RomDsk/n8vem_rf/T5.COM similarity index 100% rename from RomDsk/cfg_n8vem_rf/T5.COM rename to Source/RomDsk/n8vem_rf/T5.COM diff --git a/RomDsk/cfg_n8vem_rf/VT3.COM b/Source/RomDsk/n8vem_rf/VT3.COM similarity index 100% rename from RomDsk/cfg_n8vem_rf/VT3.COM rename to Source/RomDsk/n8vem_rf/VT3.COM diff --git a/RomDsk/cfg_n8vem_rf/XM.COM b/Source/RomDsk/n8vem_rf/XM.COM similarity index 100% rename from RomDsk/cfg_n8vem_rf/XM.COM rename to Source/RomDsk/n8vem_rf/XM.COM diff --git a/RomDsk/cfg_n8vem_rf/XM5.COM b/Source/RomDsk/n8vem_rf/XM5.COM similarity index 100% rename from RomDsk/cfg_n8vem_rf/XM5.COM rename to Source/RomDsk/n8vem_rf/XM5.COM diff --git a/RomDsk/cfg_n8vem_simh/HDIR.COM b/Source/RomDsk/n8vem_simh/HDIR.COM similarity index 100% rename from RomDsk/cfg_n8vem_simh/HDIR.COM rename to Source/RomDsk/n8vem_simh/HDIR.COM diff --git a/RomDsk/cfg_n8vem_simh/R.COM b/Source/RomDsk/n8vem_simh/R.COM similarity index 100% rename from RomDsk/cfg_n8vem_simh/R.COM rename to Source/RomDsk/n8vem_simh/R.COM diff --git a/RomDsk/cfg_n8vem_simh/RSETSIMH.COM b/Source/RomDsk/n8vem_simh/RSETSIMH.COM similarity index 100% rename from RomDsk/cfg_n8vem_simh/RSETSIMH.COM rename to Source/RomDsk/n8vem_simh/RSETSIMH.COM diff --git a/RomDsk/cfg_n8vem_simh/TIMER.COM b/Source/RomDsk/n8vem_simh/TIMER.COM similarity index 100% rename from RomDsk/cfg_n8vem_simh/TIMER.COM rename to Source/RomDsk/n8vem_simh/TIMER.COM diff --git a/RomDsk/cfg_n8vem_simh/URL.COM b/Source/RomDsk/n8vem_simh/URL.COM similarity index 100% rename from RomDsk/cfg_n8vem_simh/URL.COM rename to Source/RomDsk/n8vem_simh/URL.COM diff --git a/RomDsk/cfg_n8vem_simh/W.COM b/Source/RomDsk/n8vem_simh/W.COM similarity index 100% rename from RomDsk/cfg_n8vem_simh/W.COM rename to Source/RomDsk/n8vem_simh/W.COM diff --git a/RomDsk/cfg_n8vem_std/1200.COM b/Source/RomDsk/n8vem_std/1200.COM similarity index 100% rename from RomDsk/cfg_n8vem_std/1200.COM rename to Source/RomDsk/n8vem_std/1200.COM diff --git a/RomDsk/cfg_n8vem_std/38400.COM b/Source/RomDsk/n8vem_std/38400.COM similarity index 100% rename from RomDsk/cfg_n8vem_std/38400.COM rename to Source/RomDsk/n8vem_std/38400.COM diff --git a/RomDsk/cfg_n8vem_std/9600.COM b/Source/RomDsk/n8vem_std/9600.COM similarity index 100% rename from RomDsk/cfg_n8vem_std/9600.COM rename to Source/RomDsk/n8vem_std/9600.COM diff --git a/RomDsk/cfg_n8vem_std/RTC.COM b/Source/RomDsk/n8vem_std/RTC.COM similarity index 100% rename from RomDsk/cfg_n8vem_std/RTC.COM rename to Source/RomDsk/n8vem_std/RTC.COM diff --git a/RomDsk/cfg_n8vem_std/T5.COM b/Source/RomDsk/n8vem_std/T5.COM similarity index 100% rename from RomDsk/cfg_n8vem_std/T5.COM rename to Source/RomDsk/n8vem_std/T5.COM diff --git a/RomDsk/cfg_n8vem_std/VT3.COM b/Source/RomDsk/n8vem_std/VT3.COM similarity index 100% rename from RomDsk/cfg_n8vem_std/VT3.COM rename to Source/RomDsk/n8vem_std/VT3.COM diff --git a/RomDsk/cfg_n8vem_std/XM.COM b/Source/RomDsk/n8vem_std/XM.COM similarity index 100% rename from RomDsk/cfg_n8vem_std/XM.COM rename to Source/RomDsk/n8vem_std/XM.COM diff --git a/RomDsk/cfg_n8vem_std/XM5.COM b/Source/RomDsk/n8vem_std/XM5.COM similarity index 100% rename from RomDsk/cfg_n8vem_std/XM5.COM rename to Source/RomDsk/n8vem_std/XM5.COM diff --git a/RomDsk/cfg_n8vem_vdu/1200.COM b/Source/RomDsk/n8vem_vdu/1200.COM similarity index 100% rename from RomDsk/cfg_n8vem_vdu/1200.COM rename to Source/RomDsk/n8vem_vdu/1200.COM diff --git a/RomDsk/cfg_n8vem_vdu/38400.COM b/Source/RomDsk/n8vem_vdu/38400.COM similarity index 100% rename from RomDsk/cfg_n8vem_vdu/38400.COM rename to Source/RomDsk/n8vem_vdu/38400.COM diff --git a/RomDsk/cfg_n8vem_vdu/9600.COM b/Source/RomDsk/n8vem_vdu/9600.COM similarity index 100% rename from RomDsk/cfg_n8vem_vdu/9600.COM rename to Source/RomDsk/n8vem_vdu/9600.COM diff --git a/RomDsk/cfg_n8vem_vdu/RTC.COM b/Source/RomDsk/n8vem_vdu/RTC.COM similarity index 100% rename from RomDsk/cfg_n8vem_vdu/RTC.COM rename to Source/RomDsk/n8vem_vdu/RTC.COM diff --git a/RomDsk/cfg_n8vem_vdu/T5.COM b/Source/RomDsk/n8vem_vdu/T5.COM similarity index 100% rename from RomDsk/cfg_n8vem_vdu/T5.COM rename to Source/RomDsk/n8vem_vdu/T5.COM diff --git a/RomDsk/cfg_n8vem_vdu/XM.COM b/Source/RomDsk/n8vem_vdu/XM.COM similarity index 100% rename from RomDsk/cfg_n8vem_vdu/XM.COM rename to Source/RomDsk/n8vem_vdu/XM.COM diff --git a/RomDsk/cfg_n8vem_vdu/XM5.COM b/Source/RomDsk/n8vem_vdu/XM5.COM similarity index 100% rename from RomDsk/cfg_n8vem_vdu/XM5.COM rename to Source/RomDsk/n8vem_vdu/XM5.COM diff --git a/RomDsk/cfg_una_std/XM-A0.COM b/Source/RomDsk/una_std/XM-A0.COM similarity index 100% rename from RomDsk/cfg_una_std/XM-A0.COM rename to Source/RomDsk/una_std/XM-A0.COM diff --git a/RomDsk/cfg_una_std/XM-A1.COM b/Source/RomDsk/una_std/XM-A1.COM similarity index 100% rename from RomDsk/cfg_una_std/XM-A1.COM rename to Source/RomDsk/una_std/XM-A1.COM diff --git a/RomDsk/cfg_zeta_ppisd/XM.COM b/Source/RomDsk/una_std/XM.COM similarity index 100% rename from RomDsk/cfg_zeta_ppisd/XM.COM rename to Source/RomDsk/una_std/XM.COM diff --git a/RomDsk/cfg_una_std/XM5-A0.COM b/Source/RomDsk/una_std/XM5-A0.COM similarity index 100% rename from RomDsk/cfg_una_std/XM5-A0.COM rename to Source/RomDsk/una_std/XM5-A0.COM diff --git a/RomDsk/cfg_una_std/XM5-A1.COM b/Source/RomDsk/una_std/XM5-A1.COM similarity index 100% rename from RomDsk/cfg_una_std/XM5-A1.COM rename to Source/RomDsk/una_std/XM5-A1.COM diff --git a/RomDsk/cfg_zeta_ppisd/XM5.COM b/Source/RomDsk/una_std/XM5.COM similarity index 100% rename from RomDsk/cfg_zeta_ppisd/XM5.COM rename to Source/RomDsk/una_std/XM5.COM diff --git a/RomDsk/cfg_zeta_ppisd/1200.COM b/Source/RomDsk/zeta_ppisd/1200.COM similarity index 100% rename from RomDsk/cfg_zeta_ppisd/1200.COM rename to Source/RomDsk/zeta_ppisd/1200.COM diff --git a/RomDsk/cfg_zeta_ppisd/38400.COM b/Source/RomDsk/zeta_ppisd/38400.COM similarity index 100% rename from RomDsk/cfg_zeta_ppisd/38400.COM rename to Source/RomDsk/zeta_ppisd/38400.COM diff --git a/RomDsk/cfg_zeta_ppisd/9600.COM b/Source/RomDsk/zeta_ppisd/9600.COM similarity index 100% rename from RomDsk/cfg_zeta_ppisd/9600.COM rename to Source/RomDsk/zeta_ppisd/9600.COM diff --git a/RomDsk/cfg_zeta_ppisd/FDTST.COM b/Source/RomDsk/zeta_ppisd/FDTST.COM similarity index 100% rename from RomDsk/cfg_zeta_ppisd/FDTST.COM rename to Source/RomDsk/zeta_ppisd/FDTST.COM diff --git a/RomDsk/cfg_zeta_ppisd/RTC.COM b/Source/RomDsk/zeta_ppisd/RTC.COM similarity index 100% rename from RomDsk/cfg_zeta_ppisd/RTC.COM rename to Source/RomDsk/zeta_ppisd/RTC.COM diff --git a/RomDsk/cfg_zeta_ppp/XM.COM b/Source/RomDsk/zeta_ppisd/XM.COM similarity index 100% rename from RomDsk/cfg_zeta_ppp/XM.COM rename to Source/RomDsk/zeta_ppisd/XM.COM diff --git a/RomDsk/cfg_zeta_ppp/XM5.COM b/Source/RomDsk/zeta_ppisd/XM5.COM similarity index 100% rename from RomDsk/cfg_zeta_ppp/XM5.COM rename to Source/RomDsk/zeta_ppisd/XM5.COM diff --git a/RomDsk/cfg_zeta_ppp/1200.COM b/Source/RomDsk/zeta_ppp/1200.COM similarity index 100% rename from RomDsk/cfg_zeta_ppp/1200.COM rename to Source/RomDsk/zeta_ppp/1200.COM diff --git a/RomDsk/cfg_zeta_ppp/38400.COM b/Source/RomDsk/zeta_ppp/38400.COM similarity index 100% rename from RomDsk/cfg_zeta_ppp/38400.COM rename to Source/RomDsk/zeta_ppp/38400.COM diff --git a/RomDsk/cfg_zeta_ppp/9600.COM b/Source/RomDsk/zeta_ppp/9600.COM similarity index 100% rename from RomDsk/cfg_zeta_ppp/9600.COM rename to Source/RomDsk/zeta_ppp/9600.COM diff --git a/RomDsk/cfg_zeta_ppp/FDTST.COM b/Source/RomDsk/zeta_ppp/FDTST.COM similarity index 100% rename from RomDsk/cfg_zeta_ppp/FDTST.COM rename to Source/RomDsk/zeta_ppp/FDTST.COM diff --git a/RomDsk/cfg_zeta_ppp/RTC.COM b/Source/RomDsk/zeta_ppp/RTC.COM similarity index 100% rename from RomDsk/cfg_zeta_ppp/RTC.COM rename to Source/RomDsk/zeta_ppp/RTC.COM diff --git a/RomDsk/cfg_zeta_ppp/TSTPPP.COM b/Source/RomDsk/zeta_ppp/TSTPPP.COM similarity index 100% rename from RomDsk/cfg_zeta_ppp/TSTPPP.COM rename to Source/RomDsk/zeta_ppp/TSTPPP.COM diff --git a/RomDsk/cfg_zeta_std/XM.COM b/Source/RomDsk/zeta_ppp/XM.COM similarity index 100% rename from RomDsk/cfg_zeta_std/XM.COM rename to Source/RomDsk/zeta_ppp/XM.COM diff --git a/RomDsk/cfg_zeta_std/XM5.COM b/Source/RomDsk/zeta_ppp/XM5.COM similarity index 100% rename from RomDsk/cfg_zeta_std/XM5.COM rename to Source/RomDsk/zeta_ppp/XM5.COM diff --git a/RomDsk/cfg_zeta_std/1200.COM b/Source/RomDsk/zeta_std/1200.COM similarity index 100% rename from RomDsk/cfg_zeta_std/1200.COM rename to Source/RomDsk/zeta_std/1200.COM diff --git a/RomDsk/cfg_zeta_std/38400.COM b/Source/RomDsk/zeta_std/38400.COM similarity index 100% rename from RomDsk/cfg_zeta_std/38400.COM rename to Source/RomDsk/zeta_std/38400.COM diff --git a/RomDsk/cfg_zeta_std/9600.COM b/Source/RomDsk/zeta_std/9600.COM similarity index 100% rename from RomDsk/cfg_zeta_std/9600.COM rename to Source/RomDsk/zeta_std/9600.COM diff --git a/RomDsk/cfg_zeta_std/FDTST.COM b/Source/RomDsk/zeta_std/FDTST.COM similarity index 100% rename from RomDsk/cfg_zeta_std/FDTST.COM rename to Source/RomDsk/zeta_std/FDTST.COM diff --git a/RomDsk/cfg_zeta_std/PPIDETST.COM b/Source/RomDsk/zeta_std/PPIDETST.COM similarity index 100% rename from RomDsk/cfg_zeta_std/PPIDETST.COM rename to Source/RomDsk/zeta_std/PPIDETST.COM diff --git a/RomDsk/cfg_zeta_std/RTC.COM b/Source/RomDsk/zeta_std/RTC.COM similarity index 100% rename from RomDsk/cfg_zeta_std/RTC.COM rename to Source/RomDsk/zeta_std/RTC.COM diff --git a/Source/RomDsk/zeta_std/XM.COM b/Source/RomDsk/zeta_std/XM.COM new file mode 100644 index 0000000000000000000000000000000000000000..abcc6828ee42c017913236211641ddcf5558b163 GIT binary patch literal 5375 zcmb7IeQ+Da72mV1vp&z!$C{Wl&dPFekdxRJbpR1mY!TALNu4SI(n2t@bxzdCmXYK* z4z_B-*K}w*nNI&`2Rd{*olKi{Muj#J%`o8HC8_V=APzXBf->UpcK5xvZ{NO;-=6#kCnF@caB_r`+c??J$!pjzz{%@5c{3+>a`GxpUd`nc zMR{{K{QFK`niV$8&vH7q@3=Dm+HUBYB|1?;W+h}*6!c}TcA*`45xTi9Tiuea_H)SR z^VJ2-+MdeV%L36%DDV#~)X?XJYHMYcPv$h#9|19Mo9sMnVHvN}$VHkE3cP}~<}%|a=b1F=ma=&u(6>srmjy0hMGs5KGD-&m!@I?v zJ?X)|FBYrlJEWhMfzaaYftyJ8a7MgBoa|2w)A^Nom`lSP{qbB7marwP`xpVzm+ z8#Be71BqlbmL|RNgqS9oBuNj5J@MYS7$eCP=^0F=#QqG4#nXG52Ge2+F{Z7l_}(Z? zxxj>iW1RM^C-@L|9ZG7W&QOrH#<&f^1KdG%Z8>m}m6Ry(iCO#99J(HcnIuHjYEv&% zYS~I{-qYAf*6)k<4NzT@y<~4R5eGd6GVx@8I!Iu2B`86{nN(tRnCi#gI;h&w?qn(h zt1j*BHu8=2n>Tl^xxF(?N>^I!kC7c3eFXV~qC`aE$Im61H-IdNT>PZC|swJ;I*h&MlzYVy%j^CF0$wXlnQh zTgTOWUoZ&>+rC>Q4RnGAW0~T#7LH9u;TXb(uh@v+~P~pq5akY?{`4f zfcO;qA&Y{gV#CzlMNe>8w}b7Y{XJqLXawqxRb(Iv0lcc%gdC-%t%WU>+9ns6OS9YM zTPpptU=Qh@O0B|17dYsGZtX5-E}&uB{$u4hB>2X=8t?PkQO!q}hm_BC<%SgAoSpri zPEI`Q@tLF_SBBQWBKh(~eTOQQl8`D?bD!@nUv{=jZy#rmZyS&GibPy{KO0`{kFmr=Cf@us8^iXWQ95vRAx%u* zX4=A_`kFZi0yub;UNh^0dd{r#AgwEKnh%8nukx&j0!bHW@O#>o;{^e9mJ1dHK6JLN zi#3H6(C71I14m$HpAYOhS9cW8u@}J(W22z^b_;O44IFErLn!wiKzw;VyJD!(B(+-{ z(mIQO49QPegk>;1=Rb;l970pq)|#&=eAiNbcjM?E)dwy6mrJ5$(k(|Vlkxk5NATHl z^$E-Mw@Qy$p!R@U?jg~=(Rd=-4c@sZYLVg{Lw8hY=PT8m1@6)ji_fsMa|#O;u-Aox z#pQE@4I^fgL;ABtQ{5B>=tSbJMtS;X(nzedAb_VoFes)WokD4<=WSX2>uQZv_rnbw z&umo;mb>GL*y^5WYN3+RtU~&enPPndUa-q1s~$XOFl_7tJTU;N%BVNA?vkElUw6De zN-H6qjHQ-Vb5I8lsj%@D?QK_KuTAIFVVhp2j@k0+kW~-U8>Y9V>P4$wapMHf0pXd$ z*5I2sAHvcZD@{!7B^0LVh323sYp8?17a-LXux?c=Y`RGrvWCI{Pvjx1*5%fgav+tj zptBwZ>C*SD5TYzMIIK{mjr=1Pqd&pygR~7cV|iPnsZ2bYFzgruz*ID#^IjylVb|A< z8+74le?tRc4@ObSDlvl%Odub&!gl85M{S|YUQ|){5(Y%Xb0IG9CN|7*H(M^)rRkXZ z8ynE?54?i~r1fI|OL)%zF;E+XL%wDE{~-OzMy;VaKoB}R*&Q(a+b$+6_IsW&tukL-=qoU(%qX373 zvd>t)p3XD@w4=J|+#KXr&F>u6O{a5UF9iTITh5sm?V+VGjnR179&$j#*oPuoW(do0 z^%)T2tDD9C4={5Xs{;@>yXro`{t6BXTAu?pLc=V@sI9bCIH-0|lZcNXc|GeX`bms- zF+uk^KxDB3QW&`!GB@-XQB9U2t<^lO(6o5stC+frle)`7ADg_oj5IbAM zzHW&3|001NE8qx1vAi@?RVq7z$516NnO*)Lp}I*7k&(@-Ck4Ya?a>%vsB>X8tLOyr z-eIzBIGr3Y(pQN1UXY#?Og>2!pdvmC?~ulis!s|`8gKJSr0Uui;O29iqzeMe?{5|J zdn4Gu{}!$rMY+KDN+$Ng8s(uXNQR_}^B{}!7#_*1?+E@$TI27lGPL{OE3R*ZBZ!lcBlpME^FU+N6?&{HPD?WJJ}OB&w`3-MKXq1m=9wPVt)b?(;B>$rk9XC~2^O#kG;~v_`E_;(BHhtJz~fZz{{fg36LKIoszJ4=8QqC~ zh|Zv;P$8j|B8-+Hf?AP?UO<~TM;Sunn{K#{cx+}a_APeMRJ=oN>zv*r_Xk1fXXm#2qYm_-JLhEjw zsFB0Y(G|)3$ckO3Lt{sh3XRbvEJ#M2hNIAekRd&ZBm_6hau9_SM{yrrc3!@0aTgwQ za#m!S8#!`f)cN44X1X5$rf6o7a?ao<_|}ilJM#*>4ZRpJM9~nx;Gc-Y$ zY-@Zwn5wnr#+FNeb8T==)X>V$yO&FIE)0K@^mmt5#hq}wCvQ|V7dLrH8^aHE&gYd{ z4}}R;+{AJTyN!zQEjOzO;N}b?grg}qgrx}VW`@9_u~=mq8zB^EXhtMJ`y1#P;3RkI zm$rS+NImZ3iZOwwg0XNhI28Eutv-+iXs4uty{v34!{P~?5;Lr2+%}QSsLmy z3IW@U#X!?20iey=&AzqmzO@m#%p-6VydLuCYt&zOTyAhR$C*mOM^7#CBOdLLNB*g2 zSht)G5trR9AM!xZbOkjCi&Gw<419)$NrzU>(dVTVaA|LN=4Y!;9c*~zwg&lG&-tt` zufFGjfRfL9&MQn?Nc3}9;A<}fzh16-v2KIgbk;Yc*Q?7grTusDBhNHFxvgX888~H1 ztvL8F*ToJMteC^uRN9E)Q&H(4p=1Gto1_R_F literal 0 HcmV?d00001 diff --git a/Source/RomDsk/zeta_std/XM5.COM b/Source/RomDsk/zeta_std/XM5.COM new file mode 100644 index 0000000000000000000000000000000000000000..8ea2b66108110674084d8d5a4be9e590645554e1 GIT binary patch literal 3072 zcmeHI?Qc_67(chY?Y*bEvWb%y1D=hEZXGad5Ur!8+}@2!*E?@JUZRtXQ5n#!%Q|oy zWzHDm2R{)L`G$$a4}NM)Bqbn*-8#~HnVJ;~_^~*y9OB_6NeD zAW=GFAtgfKS9T;R9UXy4(Br9cb(~5KlOu5wB_Ab+NK}pl-zF-7DR^c(sw~N&{c@G7 zfd*{!q=VjeZ0@8NMH&-k?{M@xKI1)&>5`p_yl)g|f8EUgvVo@_e)cymr*VFsekrom z9WEzeX5k)Bi332lg~BofCPx6QDhGmxNKC0XL-c}ecBhR_3*dqNVP9Iz)q$=6Q;GyI zRo9KiO`@H!SwJHSvFt?x9Wse_%2KE;BwO$roX?D#?-(PtEeODVn;183 zehGm3PUBWkHC?mc+8|6o>G5<$0($^y1svHER-}D^I+LetLX@qzy)QtZJ|QBYFzUHa<8Qh)O!6%P$i*%YFe03E^Etp$FKzfa2;5k?6_il zWrxEt?+|t)N^so-T0Q%?S^LJ$z#0Ynd#jsQG)TY@Zuh0|W#g{B^|E$?*Eic%k2h&I z?eqw!TxV9HV7Uu6zZ0^f`#F}Q6fXVmU|XvW$6?W|RrC5N+okW}F?gSWC!<3l-W6w$ z@uoBXIKQ`^gv>Y##Fb)-`md}uU)23o6rrYJyrq5^(>!cU&CGKTS87&P@Y>k|&$$r3 zpT6`jV1NWeZEdnDM`DEWx6Hsk0;fW!TnrC!k5I!ttjRj#D^P8V?+HQ)^{)1zhDDc^7)N5$u^J21CrV0 zTaKTn&pSrEgLoWV<<2`Y;I<55jpfwkw47RZ-a=v_h4!^Dp>1?RYg?Ew!X=s5-cYne zdU%%tR3S~#m>SyC#d=vYi7Kjk$g;qi$?-&-D1-3<$SFZhgP6X|ZXbCS(RORHH$Kux zqE>=ZRjyZi1_y_dBggxDhU1CRlEPi*{8m&}>pwn_Y9^?d76eE^c{3I7O_AXwNyP__ zlAdAmdP@sA(sSx)ap`$a6VZmX0@%N<)BLYQ^@?ss!lhFZgyv_=t|^2poUn_tR#tj_hv@EXs_wa&Gj#E z(60N%O&3y(un#lkLquCK5}8}X;gVpiY$HT^`?r??jb&y4(_eI`!or6bTKCNaJd zX9~G<;^NId-D(tOZQhiOpG0%Laf06jPwt|~KDv5cf@RTJP1oTJupGF~dck404Un#)vxPJKTv>Pu7ePEl#<$D@LBc3m>P?$~r2PCuwVcJ@IXaLJ3A)a0VRlmUeBn+MTY icX3f?lk}xx-oK)wCx*nKYZ$FO9ZxgxGz0%%2L1+F7h!t< literal 0 HcmV?d00001 diff --git a/Source/ZCPR-DJ/Build.cmd b/Source/ZCPR-DJ/Build.cmd new file mode 100644 index 00000000..b9842ca4 --- /dev/null +++ b/Source/ZCPR-DJ/Build.cmd @@ -0,0 +1,15 @@ +@echo off +setlocal + +set TOOLS=../../Tools + +set PATH=%TOOLS%\tasm32;%TOOLS%\zx;%PATH% + +set TASMTABS=%TOOLS%\tasm32 + +set ZXBINDIR=%TOOLS%/cpm/bin/ +set ZXLIBDIR=%TOOLS%/cpm/lib/ +set ZXINCDIR=%TOOLS%/cpm/include/ + +zx M80 -=zcpr +zx L80 -zcpr,zcpr.bin/n/e \ No newline at end of file diff --git a/ZCPR-DJ/Clean.cmd b/Source/ZCPR-DJ/Clean.cmd similarity index 100% rename from ZCPR-DJ/Clean.cmd rename to Source/ZCPR-DJ/Clean.cmd diff --git a/ZCPR-DJ/zcpr.doc b/Source/ZCPR-DJ/zcpr.doc similarity index 100% rename from ZCPR-DJ/zcpr.doc rename to Source/ZCPR-DJ/zcpr.doc diff --git a/ZCPR-DJ/zcpr.mac b/Source/ZCPR-DJ/zcpr.mac similarity index 100% rename from ZCPR-DJ/zcpr.mac rename to Source/ZCPR-DJ/zcpr.mac diff --git a/ZCPR-DJ/zcpr.mac.bak b/Source/ZCPR-DJ/zcpr.mac.bak similarity index 100% rename from ZCPR-DJ/zcpr.mac.bak rename to Source/ZCPR-DJ/zcpr.mac.bak diff --git a/ZCPR-DJ/zcprdemo.com b/Source/ZCPR-DJ/zcprdemo.com similarity index 100% rename from ZCPR-DJ/zcprdemo.com rename to Source/ZCPR-DJ/zcprdemo.com diff --git a/Source/ZCPR/Build.cmd b/Source/ZCPR/Build.cmd new file mode 100644 index 00000000..55b3113c --- /dev/null +++ b/Source/ZCPR/Build.cmd @@ -0,0 +1,18 @@ +@echo off +setlocal + +set TOOLS=../../Tools + +set PATH=%TOOLS%\tasm32;%TOOLS%\zx;%PATH% + +set TASMTABS=%TOOLS%\tasm32 + +set ZXBINDIR=%TOOLS%/cpm/bin/ +set ZXLIBDIR=%TOOLS%/cpm/lib/ +set ZXINCDIR=%TOOLS%/cpm/include/ + +zx MAC -ZCPR.ASM -$PO +zx MLOAD25 -ZCPR.BIN=ZCPR.HEX + +zx MAC -BDLOC.ASM -$PO +zx MLOAD25 -BDLOC.COM=BDLOC.HEX diff --git a/ZCPR/Clean.cmd b/Source/ZCPR/Clean.cmd similarity index 100% rename from ZCPR/Clean.cmd rename to Source/ZCPR/Clean.cmd diff --git a/ZCPR/bdloc.asm b/Source/ZCPR/bdloc.asm similarity index 100% rename from ZCPR/bdloc.asm rename to Source/ZCPR/bdloc.asm diff --git a/ZCPR/zcpr.asm b/Source/ZCPR/zcpr.asm similarity index 100% rename from ZCPR/zcpr.asm rename to Source/ZCPR/zcpr.asm diff --git a/ZCPR/zcpr.bak b/Source/ZCPR/zcpr.bak similarity index 100% rename from ZCPR/zcpr.bak rename to Source/ZCPR/zcpr.bak diff --git a/ZCPR/zcpr.doc b/Source/ZCPR/zcpr.doc similarity index 100% rename from ZCPR/zcpr.doc rename to Source/ZCPR/zcpr.doc diff --git a/ZCPR/zcpr.hlp b/Source/ZCPR/zcpr.hlp similarity index 100% rename from ZCPR/zcpr.hlp rename to Source/ZCPR/zcpr.hlp diff --git a/ZCPR/zcpr.msg b/Source/ZCPR/zcpr.msg similarity index 100% rename from ZCPR/zcpr.msg rename to Source/ZCPR/zcpr.msg diff --git a/Source/ZSDOS/Build.cmd b/Source/ZSDOS/Build.cmd new file mode 100644 index 00000000..f0442d11 --- /dev/null +++ b/Source/ZSDOS/Build.cmd @@ -0,0 +1,16 @@ +@echo off +setlocal + +set TOOLS=../../Tools + +set PATH=%TOOLS%\tasm32;%TOOLS%\zx;%PATH% + +set TASMTABS=%TOOLS%\tasm32 + +set ZXBINDIR=%TOOLS%/cpm/bin/ +set ZXLIBDIR=%TOOLS%/cpm/lib/ +set ZXINCDIR=%TOOLS%/cpm/include/ + +zx ZMAC -ZSDOS -/P +zx LINK -ZSDOS[LD800] +ren zsdos.com zsdos.bin diff --git a/ZSDOS/Clean.cmd b/Source/ZSDOS/Clean.cmd similarity index 100% rename from ZSDOS/Clean.cmd rename to Source/ZSDOS/Clean.cmd diff --git a/Source/ZSDOS/Clock/Build.cmd b/Source/ZSDOS/Clock/Build.cmd new file mode 100644 index 00000000..55bcd8db --- /dev/null +++ b/Source/ZSDOS/Clock/Build.cmd @@ -0,0 +1,14 @@ +@echo off +setlocal + +set TOOLS=../../../Tools + +set PATH=%TOOLS%\tasm32;%TOOLS%\zx;%PATH% + +set TASMTABS=%TOOLS%\tasm32 + +set ZXBINDIR=%TOOLS%/cpm/bin/ +set ZXLIBDIR=%TOOLS%/cpm/lib/ +set ZXINCDIR=%TOOLS%/cpm/include/ + +zx ZMAC -HBCLK -/P diff --git a/ZSDOS/Clock/CLOCKS.DAT b/Source/ZSDOS/Clock/CLOCKS.DAT similarity index 100% rename from ZSDOS/Clock/CLOCKS.DAT rename to Source/ZSDOS/Clock/CLOCKS.DAT diff --git a/ZSDOS/Clock/Clean.cmd b/Source/ZSDOS/Clock/Clean.cmd similarity index 100% rename from ZSDOS/Clock/Clean.cmd rename to Source/ZSDOS/Clock/Clean.cmd diff --git a/ZSDOS/Clock/LDDS.COM b/Source/ZSDOS/Clock/LDDS.COM similarity index 100% rename from ZSDOS/Clock/LDDS.COM rename to Source/ZSDOS/Clock/LDDS.COM diff --git a/ZSDOS/Clock/LDP2D.COM b/Source/ZSDOS/Clock/LDP2D.COM similarity index 100% rename from ZSDOS/Clock/LDP2D.COM rename to Source/ZSDOS/Clock/LDP2D.COM diff --git a/ZSDOS/Clock/ReadMe.txt b/Source/ZSDOS/Clock/ReadMe.txt similarity index 100% rename from ZSDOS/Clock/ReadMe.txt rename to Source/ZSDOS/Clock/ReadMe.txt diff --git a/ZSDOS/Clock/clock.lib b/Source/ZSDOS/Clock/clock.lib similarity index 100% rename from ZSDOS/Clock/clock.lib rename to Source/ZSDOS/Clock/clock.lib diff --git a/ZSDOS/Clock/hbclk.z80 b/Source/ZSDOS/Clock/hbclk.z80 similarity index 100% rename from ZSDOS/Clock/hbclk.z80 rename to Source/ZSDOS/Clock/hbclk.z80 diff --git a/ZSDOS/Clock/preclock.lib b/Source/ZSDOS/Clock/preclock.lib similarity index 100% rename from ZSDOS/Clock/preclock.lib rename to Source/ZSDOS/Clock/preclock.lib diff --git a/ZSDOS/Clock/zsdosbio.not b/Source/ZSDOS/Clock/zsdosbio.not similarity index 100% rename from ZSDOS/Clock/zsdosbio.not rename to Source/ZSDOS/Clock/zsdosbio.not diff --git a/ZSDOS/Clock/zsdosbio.z80 b/Source/ZSDOS/Clock/zsdosbio.z80 similarity index 100% rename from ZSDOS/Clock/zsdosbio.z80 rename to Source/ZSDOS/Clock/zsdosbio.z80 diff --git a/Support/ZSDOS/-README.0 b/Source/ZSDOS/Distribution/-README.0 similarity index 100% rename from Support/ZSDOS/-README.0 rename to Source/ZSDOS/Distribution/-README.0 diff --git a/Support/ZSDOS/BGPATCH.HEX b/Source/ZSDOS/Distribution/BGPATCH.HEX similarity index 100% rename from Support/ZSDOS/BGPATCH.HEX rename to Source/ZSDOS/Distribution/BGPATCH.HEX diff --git a/Support/ZSDOS/CLOCKS.DAT b/Source/ZSDOS/Distribution/CLOCKS.DAT similarity index 100% rename from Support/ZSDOS/CLOCKS.DAT rename to Source/ZSDOS/Distribution/CLOCKS.DAT diff --git a/Support/ZSDOS/COPY.CFG b/Source/ZSDOS/Distribution/COPY.CFG similarity index 100% rename from Support/ZSDOS/COPY.CFG rename to Source/ZSDOS/Distribution/COPY.CFG diff --git a/Support/ZSDOS/COPY.COM b/Source/ZSDOS/Distribution/COPY.COM similarity index 100% rename from Support/ZSDOS/COPY.COM rename to Source/ZSDOS/Distribution/COPY.COM diff --git a/RomDsk/ZSYS_1024KB/COPY.UPD b/Source/ZSDOS/Distribution/COPY.UPD similarity index 100% rename from RomDsk/ZSYS_1024KB/COPY.UPD rename to Source/ZSDOS/Distribution/COPY.UPD diff --git a/Support/ZSDOS/DATSWEEP.COM b/Source/ZSDOS/Distribution/DATSWEEP.COM similarity index 100% rename from Support/ZSDOS/DATSWEEP.COM rename to Source/ZSDOS/Distribution/DATSWEEP.COM diff --git a/RomDsk/ZSYS_512KB/DSCONFIG.COM b/Source/ZSDOS/Distribution/DSCONFIG.COM similarity index 100% rename from RomDsk/ZSYS_512KB/DSCONFIG.COM rename to Source/ZSDOS/Distribution/DSCONFIG.COM diff --git a/Support/ZSDOS/FA16.CFG b/Source/ZSDOS/Distribution/FA16.CFG similarity index 100% rename from Support/ZSDOS/FA16.CFG rename to Source/ZSDOS/Distribution/FA16.CFG diff --git a/Support/ZSDOS/FA16.DOC b/Source/ZSDOS/Distribution/FA16.DOC similarity index 100% rename from Support/ZSDOS/FA16.DOC rename to Source/ZSDOS/Distribution/FA16.DOC diff --git a/Support/ZSDOS/FA16A.FOR b/Source/ZSDOS/Distribution/FA16A.FOR similarity index 100% rename from Support/ZSDOS/FA16A.FOR rename to Source/ZSDOS/Distribution/FA16A.FOR diff --git a/Support/ZSDOS/FA16CFG.TXT b/Source/ZSDOS/Distribution/FA16CFG.TXT similarity index 100% rename from Support/ZSDOS/FA16CFG.TXT rename to Source/ZSDOS/Distribution/FA16CFG.TXT diff --git a/Support/ZSDOS/FILEATTR.COM b/Source/ZSDOS/Distribution/FILEATTR.COM similarity index 100% rename from Support/ZSDOS/FILEATTR.COM rename to Source/ZSDOS/Distribution/FILEATTR.COM diff --git a/Support/ZSDOS/FILEDATE.CFG b/Source/ZSDOS/Distribution/FILEDATE.CFG similarity index 100% rename from Support/ZSDOS/FILEDATE.CFG rename to Source/ZSDOS/Distribution/FILEDATE.CFG diff --git a/Support/ZSDOS/FILEDATE.COM b/Source/ZSDOS/Distribution/FILEDATE.COM similarity index 100% rename from Support/ZSDOS/FILEDATE.COM rename to Source/ZSDOS/Distribution/FILEDATE.COM diff --git a/Support/ZSDOS/FILEDATX.CFG b/Source/ZSDOS/Distribution/FILEDATX.CFG similarity index 100% rename from Support/ZSDOS/FILEDATX.CFG rename to Source/ZSDOS/Distribution/FILEDATX.CFG diff --git a/Support/ZSDOS/INITDIR.CFG b/Source/ZSDOS/Distribution/INITDIR.CFG similarity index 100% rename from Support/ZSDOS/INITDIR.CFG rename to Source/ZSDOS/Distribution/INITDIR.CFG diff --git a/Support/ZSDOS/INITDIR.COM b/Source/ZSDOS/Distribution/INITDIR.COM similarity index 100% rename from Support/ZSDOS/INITDIR.COM rename to Source/ZSDOS/Distribution/INITDIR.COM diff --git a/Support/ZSDOS/INSTALOS.COM b/Source/ZSDOS/Distribution/INSTALOS.COM similarity index 100% rename from Support/ZSDOS/INSTALOS.COM rename to Source/ZSDOS/Distribution/INSTALOS.COM diff --git a/Support/ZSDOS/LDTIMD.COM b/Source/ZSDOS/Distribution/LDTIMD.COM similarity index 100% rename from Support/ZSDOS/LDTIMD.COM rename to Source/ZSDOS/Distribution/LDTIMD.COM diff --git a/Support/ZSDOS/LDTIMP.COM b/Source/ZSDOS/Distribution/LDTIMP.COM similarity index 100% rename from Support/ZSDOS/LDTIMP.COM rename to Source/ZSDOS/Distribution/LDTIMP.COM diff --git a/Support/ZSDOS/LICENSE.TXT b/Source/ZSDOS/Distribution/LICENSE.TXT similarity index 100% rename from Support/ZSDOS/LICENSE.TXT rename to Source/ZSDOS/Distribution/LICENSE.TXT diff --git a/Support/ZSDOS/NZCOMPAT.HEX b/Source/ZSDOS/Distribution/NZCOMPAT.HEX similarity index 100% rename from Support/ZSDOS/NZCOMPAT.HEX rename to Source/ZSDOS/Distribution/NZCOMPAT.HEX diff --git a/Support/ZSDOS/PUTBG.COM b/Source/ZSDOS/Distribution/PUTBG.COM similarity index 100% rename from Support/ZSDOS/PUTBG.COM rename to Source/ZSDOS/Distribution/PUTBG.COM diff --git a/Support/ZSDOS/PUTDS.COM b/Source/ZSDOS/Distribution/PUTDS.COM similarity index 100% rename from Support/ZSDOS/PUTDS.COM rename to Source/ZSDOS/Distribution/PUTDS.COM diff --git a/Support/ZSDOS/README.1ST b/Source/ZSDOS/Distribution/README.1ST similarity index 100% rename from Support/ZSDOS/README.1ST rename to Source/ZSDOS/Distribution/README.1ST diff --git a/Support/ZSDOS/README.2ND b/Source/ZSDOS/Distribution/README.2ND similarity index 100% rename from Support/ZSDOS/README.2ND rename to Source/ZSDOS/Distribution/README.2ND diff --git a/Support/ZSDOS/RELOG.COM b/Source/ZSDOS/Distribution/RELOG.COM similarity index 100% rename from Support/ZSDOS/RELOG.COM rename to Source/ZSDOS/Distribution/RELOG.COM diff --git a/RomDsk/ZSYS_512KB/SETTERM.COM b/Source/ZSDOS/Distribution/SETTERM.COM similarity index 100% rename from RomDsk/ZSYS_512KB/SETTERM.COM rename to Source/ZSDOS/Distribution/SETTERM.COM diff --git a/RomDsk/ZSYS_512KB/SETUPZST.COM b/Source/ZSDOS/Distribution/SETUPZST.COM similarity index 100% rename from RomDsk/ZSYS_512KB/SETUPZST.COM rename to Source/ZSDOS/Distribution/SETUPZST.COM diff --git a/Support/ZSDOS/STAMPS.DAT b/Source/ZSDOS/Distribution/STAMPS.DAT similarity index 100% rename from Support/ZSDOS/STAMPS.DAT rename to Source/ZSDOS/Distribution/STAMPS.DAT diff --git a/Support/ZSDOS/TD.CFG b/Source/ZSDOS/Distribution/TD.CFG similarity index 100% rename from Support/ZSDOS/TD.CFG rename to Source/ZSDOS/Distribution/TD.CFG diff --git a/Support/ZSDOS/TD.COM b/Source/ZSDOS/Distribution/TD.COM similarity index 100% rename from Support/ZSDOS/TD.COM rename to Source/ZSDOS/Distribution/TD.COM diff --git a/RomDsk/ZSYS_512KB/TERMBASE.DAT b/Source/ZSDOS/Distribution/TERMBASE.DAT similarity index 100% rename from RomDsk/ZSYS_512KB/TERMBASE.DAT rename to Source/ZSDOS/Distribution/TERMBASE.DAT diff --git a/RomDsk/ZSYS_512KB/TESTCLOK.COM b/Source/ZSDOS/Distribution/TESTCLOK.COM similarity index 100% rename from RomDsk/ZSYS_512KB/TESTCLOK.COM rename to Source/ZSDOS/Distribution/TESTCLOK.COM diff --git a/Support/ZSDOS/USERCLOK.TEM b/Source/ZSDOS/Distribution/USERCLOK.TEM similarity index 100% rename from Support/ZSDOS/USERCLOK.TEM rename to Source/ZSDOS/Distribution/USERCLOK.TEM diff --git a/Support/ZSDOS/ZCAL.COM b/Source/ZSDOS/Distribution/ZCAL.COM similarity index 100% rename from Support/ZSDOS/ZCAL.COM rename to Source/ZSDOS/Distribution/ZCAL.COM diff --git a/Support/ZSDOS/ZCNFG.COM b/Source/ZSDOS/Distribution/ZCNFG.COM similarity index 100% rename from Support/ZSDOS/ZCNFG.COM rename to Source/ZSDOS/Distribution/ZCNFG.COM diff --git a/Support/ZSDOS/ZCNFG24.CFG b/Source/ZSDOS/Distribution/ZCNFG24.CFG similarity index 100% rename from Support/ZSDOS/ZCNFG24.CFG rename to Source/ZSDOS/Distribution/ZCNFG24.CFG diff --git a/Support/ZSDOS/ZDDOS.HEX b/Source/ZSDOS/Distribution/ZDDOS.HEX similarity index 100% rename from Support/ZSDOS/ZDDOS.HEX rename to Source/ZSDOS/Distribution/ZDDOS.HEX diff --git a/Support/ZSDOS/ZDDOS.ZRL b/Source/ZSDOS/Distribution/ZDDOS.ZRL similarity index 100% rename from Support/ZSDOS/ZDDOS.ZRL rename to Source/ZSDOS/Distribution/ZDDOS.ZRL diff --git a/Support/ZSDOS/ZPATH.COM b/Source/ZSDOS/Distribution/ZPATH.COM similarity index 100% rename from Support/ZSDOS/ZPATH.COM rename to Source/ZSDOS/Distribution/ZPATH.COM diff --git a/Support/ZSDOS/ZSCONFIG.COM b/Source/ZSDOS/Distribution/ZSCONFIG.COM similarity index 100% rename from Support/ZSDOS/ZSCONFIG.COM rename to Source/ZSDOS/Distribution/ZSCONFIG.COM diff --git a/Support/ZSDOS/ZSDOS.HEX b/Source/ZSDOS/Distribution/ZSDOS.HEX similarity index 100% rename from Support/ZSDOS/ZSDOS.HEX rename to Source/ZSDOS/Distribution/ZSDOS.HEX diff --git a/Support/ZSDOS/ZSDOS.ZRL b/Source/ZSDOS/Distribution/ZSDOS.ZRL similarity index 100% rename from Support/ZSDOS/ZSDOS.ZRL rename to Source/ZSDOS/Distribution/ZSDOS.ZRL diff --git a/Support/ZSDOS/ZSVSTAMP.CIM b/Source/ZSDOS/Distribution/ZSVSTAMP.CIM similarity index 100% rename from Support/ZSDOS/ZSVSTAMP.CIM rename to Source/ZSDOS/Distribution/ZSVSTAMP.CIM diff --git a/Support/ZSDOS/ZSVSTAMP.COM b/Source/ZSDOS/Distribution/ZSVSTAMP.COM similarity index 100% rename from Support/ZSDOS/ZSVSTAMP.COM rename to Source/ZSDOS/Distribution/ZSVSTAMP.COM diff --git a/Support/ZSDOS/ZSVSTAMP.DOC b/Source/ZSDOS/Distribution/ZSVSTAMP.DOC similarity index 100% rename from Support/ZSDOS/ZSVSTAMP.DOC rename to Source/ZSDOS/Distribution/ZSVSTAMP.DOC diff --git a/Support/ZSDOS/ZXD.CFG b/Source/ZSDOS/Distribution/ZXD.CFG similarity index 100% rename from Support/ZSDOS/ZXD.CFG rename to Source/ZSDOS/Distribution/ZXD.CFG diff --git a/Support/ZSDOS/ZXD.COM b/Source/ZSDOS/Distribution/ZXD.COM similarity index 100% rename from Support/ZSDOS/ZXD.COM rename to Source/ZSDOS/Distribution/ZXD.COM diff --git a/ZSDOS/license.txt b/Source/ZSDOS/license.txt similarity index 100% rename from ZSDOS/license.txt rename to Source/ZSDOS/license.txt diff --git a/ZSDOS/readme b/Source/ZSDOS/readme similarity index 100% rename from ZSDOS/readme rename to Source/ZSDOS/readme diff --git a/ZSDOS/zsdos-gp.z80 b/Source/ZSDOS/zsdos-gp.z80 similarity index 100% rename from ZSDOS/zsdos-gp.z80 rename to Source/ZSDOS/zsdos-gp.z80 diff --git a/ZSDOS/zsdos.lib b/Source/ZSDOS/zsdos.lib similarity index 100% rename from ZSDOS/zsdos.lib rename to Source/ZSDOS/zsdos.lib diff --git a/ZSDOS/zsdos.pdf b/Source/ZSDOS/zsdos.pdf similarity index 100% rename from ZSDOS/zsdos.pdf rename to Source/ZSDOS/zsdos.pdf diff --git a/ZSDOS/zsdos.z80 b/Source/ZSDOS/zsdos.z80 similarity index 100% rename from ZSDOS/zsdos.z80 rename to Source/ZSDOS/zsdos.z80 diff --git a/Source/loader - Copy.asm b/Source/loader - Copy.asm deleted file mode 100644 index 4a3799d7..00000000 --- a/Source/loader - Copy.asm +++ /dev/null @@ -1,1016 +0,0 @@ -; -;================================================================================================== -; LOADER -;================================================================================================== -; -; FIX!!! NEED TO SWITCH FROM CBIOS CALLS TO HBIOS CALLS!!! -; -; INCLUDE GENERIC STUFF -; -#INCLUDE "std.asm" -#INCLUDE "syscfg.exp" -; -LDLOC .EQU $100 ; LOAD IMAGE HERE BEFORE RELOCATING -STAMP .EQU $40 ; LOC OF ROMWBW CBIOS ZERO PAGE STAMP -; - .ORG $8400 -; - ; SETUP OUR STACK - LD SP,BL_STACK ; SET UP LOADER STACK - - ; INITIALIZE IOBYTE(0x03) AND CURRENT DRIVE (0x04) - LD A,DEFIOBYTE - LD (3),A - XOR A - LD (4),A - -; ; CALL CBIOS COLD BOOT WITH SPECIAL VALUE IN HL -; ; WHICH CAUSES IT TO RETURN HERE INSTEAD OF GOING TO CCP - LD H,'W' - LD L,~'W' - CALL CPM_ENT - - ; BANNER - CALL NEWLINE - LD DE,STR_BANNER - CALL WRITESTR - - ; INITIALIZE -#IF (PLATFORM == PLT_UNA) - CALL UNAINIT -#ELSE - CALL init - CALL NZ,PANIC -#ENDIF - - ; RUN THE BOOT LOADER MENU - JP DOBOOTMENU -; -;__DOBOOT________________________________________________________________________________________________________________________ -; -; PERFORM BOOT FRONT PANEL ACTION -;________________________________________________________________________________________________________________________________ -; -DOBOOTMENU: - CALL NEWLINE - CALL NEWLINE - -#IF (PLATFORM == PLT_UNA) - CALL SHOWALL -#ELSE - CALL showall -#ENDIF - - LD DE,STR_BOOTMENU - CALL WRITESTR - -#IF (DSKYENABLE) - LD HL,BOOT ; POINT TO BOOT MESSAGE - CALL SEGDISPLAY ; DISPLAY MESSAGE -#ENDIF - -#IF (BOOTTYPE == BT_AUTO) - LD BC,1000 * BOOT_TIMEOUT - LD (BL_TIMEOUT),BC -#ENDIF - -DB_BOOTLOOP: -; -; CHECK FOR CONSOLE BOOT KEYPRESS -; -#IF (UARTENABLE | ASCIENABLE | VDUENABLE | (PRPENABLE & PRPCONENABLE) | (PPPENABLE & PPPCONENABLE)) - CALL CST - OR A - JR Z,DB_CONEND - CALL CINUC - CP 'S' ; SETUP - JR Z,GOSETUP - CP 'M' ; MONITOR - JR Z,GOMON - CP 'R' ; ROM BOOT - JR Z,GOROM - CP 'A' ; A-P, DISK BOOT - JR C,DB_INVALID - CP 'P' + 1 ; HMMM... 'M' DRIVE CONFLICTS WITH MONITOR SELECTION - JR NC,DB_INVALID - SUB 'A' - JR GOBOOTDISK -DB_CONEND: -#ENDIF -; -; CHECK FOR DSKY BOOT KEYPRESS -; -#IF (DSKYENABLE) - CALL KY_STAT ; GET KEY FROM KB INTO A - OR A - JR Z,DB_DSKYEND - CALL KY_GET - CP KY_GO ; GO = MONITOR - JR Z,GOMONDSKY - CP KY_BO ; BO = BOOT ROM - JR Z,GOROM - CP 0AH ; A-F, DISK BOOT - JR C,DB_INVALID - CP 0FH + 1 - JR NC,DB_INVALID - SUB 0AH - JR GOBOOTDISK -; LD HL,BOOT ; POINT TO BOOT MESSAGE -; LD A,00H ; BLANK OUT SELECTION,IT WAS INVALID -; LD (HL),A ; STORE IT IN DISPLAY BUFFER -; CALL SEGDISPLAY ; DISPLAY THE BUFFER -DB_DSKYEND: -#ENDIF -; -; IF CONFIGURED, CHECK FOR AUTOBOOT TIMEOUT -; -#IF (BOOTTYPE == BT_AUTO) - - ; DELAY FOR 1MS TO MAKE TIMEOUT CALC EASY - LD DE,40 - CALL VDELAY - - ; CHECK/INCREMENT TIMEOUT - LD BC,(BL_TIMEOUT) - DEC BC - LD (BL_TIMEOUT),BC - LD A,B - OR C - JR NZ,DB_BOOTLOOP - - ; TIMEOUT EXPIRED, PERFORM DEFAULT BOOT ACTION - LD A,BOOT_DEFAULT - CP 'M' ; MONITOR - JR Z,GOMON - CP 'R' ; ROM BOOT - JR Z,GOROM - CP 'A' ; A-P, DISK BOOT - JR C,DB_INVALID - CP 'P' + 1 ; HMMM... DRIVE M CONFLICTS WITH "MONITOR" SELECTION - JR NC,DB_INVALID - SUB 'A' - JR GOBOOTDISK -#ENDIF - - JP DB_BOOTLOOP -; -; BOOT OPTION PROCESSING -; -DB_INVALID: - LD DE,STR_INVALID - CALL WRITESTR - JP DOBOOTMENU -; -GOSETUP: - LD DE,STR_SETUP - CALL WRITESTR - JP DOSETUPMENU -; -GOMON: - LD DE,STR_BOOTMON - CALL WRITESTR - JP MON_SERIAL -; -GOMONDSKY: - LD DE,STR_BOOTMON - CALL WRITESTR - JP MON_DSKY -; -GOROM: - LD DE,STR_BOOTROM - CALL WRITESTR - JP CPM_ENT -; -GOBOOTDISK: - LD C,A - LD DE,STR_BOOTDISK - CALL WRITESTR - JP BOOTDISK -; -; BOOT FROM DISK DRIVE -; -BOOTDISK: - LD DE,STR_BOOTDISK1 - CALL WRITESTR - - ; SAVE BOOT DRIVE - LD A,C - LD (BL_BOOTDRIVE),A - -; ; SAVE BOOT DEVICE/SLICE -; CALL CBIOS_GETDSK -; LD A,B -; LD (BL_BOOTDEVICE),A -; LD (BL_BOOTLU),DE - - ; SELECT THE REQUESTED DRIVE - LD A,(BL_BOOTDRIVE) ; GET CBIOS BOOT DRIVE BACK - LD C,A ; MOVE TO C - LD E,0 ; BIT0=0 IN E MEANS FIRST SELECT - CALL CBIOS_SELDSK ; CALL CBIOS DSKSEL TO GET DPH ADDRESS - - ; IF HL=0, SELDSK FAILED! SELECTED DRIVE IS NOT AVAILABLE - LD A,H - OR L - JP Z,DB_NODISK - -; ; *DEBUG* PRINT DPH ADDRESS -; CALL NEWLINE -; PUSH HL -; POP BC -; CALL PRTHEXWORD - - ; BUMP HL TO POINT TO DPB AND LOAD IT - LD DE,10 - ADD HL,DE ; HL = ADDRESS OF ADDRESS OF DPB - LD A,(HL) ; DEREFERENCE - INC HL - LD H,(HL) - LD L,A ; NOW HL = ADDRESS OF DPB - -; ; *DEBUG* PRINT DPB ADDRESS -; CALL PC_SPACE -; PUSH HL -; POP BC -; CALL PRTHEXWORD - - ; FIRST WORD OF DPB IS SECTORS PER TRACK, SAVE IT - LD C,(HL) - INC HL - LD B,(HL) ; NOW BC = SECTORS PER TRACK -; LD BC,36 ; *DEBUG* - LD (BL_LDSPT),BC ; SAVE IT - - LD DE,12 ; POINT TO DPB OFFSET FIELD - ADD HL,DE - LD A,(HL) - INC HL - OR (HL) - JP Z,DB_NOBOOT ; IF OFFSET = ZERO, THERE IS NO BOOT AREA!!! - -; ; *DEBUG* PRINT SECTORS PER TRACK -; CALL PC_SPACE -; CALL PRTHEXWORD - - ; SETUP TO LOAD METADATA - LD BC,BL_METABUF - CALL CBIOS_SETDMA - LD BC,0 - CALL CBIOS_SETTRK - LD BC,11 - CALL CBIOS_SETSEC - - ; READ META DATA - CALL CBIOS_READ - OR A - JP NZ,DB_ERR - -; ; PRINT SIGNATURE -; CALL NEWLINE -; LD DE,STR_SIG -; CALL WRITESTR -; LD BC,(BL_SIG) -; CALL PRTHEXWORD - - ; CHECK SIGNATURE - LD BC,(BL_SIG) - LD A,$A5 - CP B - JP NZ,DB_NOBOOT - LD A,$5A - CP C - JP NZ,DB_NOBOOT - - ; PRINT CPMLOC VALUE - CALL NEWLINE - LD DE,STR_CPMLOC - CALL WRITESTR - LD BC,(BL_CPMLOC) - CALL PRTHEXWORD - - ; PRINT CPMEND VALUE - CALL PC_SPACE - LD DE,STR_CPMEND - CALL WRITESTR - LD BC,(BL_CPMEND) - CALL PRTHEXWORD - - ; PRINT CPMENT VALUE - CALL PC_SPACE - LD DE,STR_CPMENT - CALL WRITESTR - LD BC,(BL_CPMENT) - CALL PRTHEXWORD - CALL PC_SPACE - - LD DE,STR_LABEL - CALL WRITESTR - LD A,(BL_TERM) ; Display Disk Label if Present - CP '$' ; (dwg 2/7/2012) - JP NZ,NO_LABEL ; pick up string terminator for label - LD DE,BL_LABEL ; if it is there, then a printable - CALL WRITESTR ; label is there as well even if spaces. -NO_LABEL: - -; -; SETUP BL_CPM... STUFF -; - ; COMPUTE BL_SIZ - LD HL,(BL_CPMEND) - LD DE,(BL_CPMLOC) - SCF - CCF - SBC HL,DE - LD (BL_LDSIZ),HL - - ; SETUP FOR DATA LOAD - LD HL,LDLOC - LD (BL_LDCLOC),HL - LD DE,(BL_LDSIZ) - ADD HL,DE - LD (BL_LDEND),HL - LD BC,0 - LD (BL_LDCTRK),BC - LD BC,12 - LD (BL_LDCSEC),BC - -; ; *DEBUG* PRINT SPT, SEC, TRK, SIZ, END -; CALL NEWLINE -; LD BC,(BL_LDSPT) -; CALL PRTHEXWORD -; CALL PC_SPACE -; LD BC,(BL_LDCSEC) -; CALL PRTHEXWORD -; CALL PC_SPACE -; LD BC,(BL_LDCTRK) -; CALL PRTHEXWORD -; CALL PC_SPACE -; LD BC,(BL_LDSIZ) -; CALL PRTHEXWORD -; CALL PC_SPACE -; LD BC,(BL_LDEND) -; CALL PRTHEXWORD - - ; LOADING MESSAGE - CALL NEWLINE - LD DE,STR_LOADING - CALL WRITESTR -; -; LOADING LOOP -; -DB_LOOP: - ; SETUP TO READ SECTOR - LD BC,(BL_LDCTRK) -; CALL NEWLINE ; *DEBUG* -; CALL PRTHEXWORD ; *DEBUG* - CALL CBIOS_SETTRK - - LD BC,(BL_LDCSEC) -; CALL PC_SPACE ; *DEBUG* -; CALL PRTHEXWORD ; *DEBUG* - CALL CBIOS_SETSEC - LD BC,(BL_LDCLOC) -; CALL PC_SPACE ; *DEBUG* -; CALL PRTHEXWORD ; *DEBUG* - CALL CBIOS_SETDMA - - ; READ IT - CALL CBIOS_READ - OR A - JP NZ,DB_ERR - CALL PC_PERIOD - -; ; *DEBUG* PRINT FIRST WORD OF DATA LOADED -; CALL PC_SPACE -; LD HL,(BL_LDCLOC) -; LD A,(HL) -; INC HL -; LD B,(HL) -; LD C,A -; CALL PRTHEXWORD - - ; INCREMENT MEMORY POINTER - LD HL,(BL_LDCLOC) - LD DE,128 - ADD HL,DE - LD (BL_LDCLOC),HL - - ; CHECK TO SEE IF WE ARE DONE - LD DE,(BL_LDEND) - LD A,H - CP D - JR NZ,DB_CONT - LD A,L - CP E - JR NZ,DB_CONT - - JP DB_DONE - -DB_CONT: - ; INCREMENT SECTOR - LD BC,(BL_LDCSEC) - INC BC - LD (BL_LDCSEC),BC - - ; TEST FOR END OF TRACK (LDCSEC/BC == LDSPT/DE) - LD DE,(BL_LDSPT) - LD A,C - CP E - JR NZ,DB_LOOP ; B != D, NOT AT EOT - LD A,B - CP D - JR NZ,DB_LOOP ; C != E, NOT AT EOT - - ; END OF TRACK, RESET SECTOR & INCREMENT TRACK - LD BC,0 - LD (BL_LDCSEC),BC - LD BC,(BL_LDCTRK) - INC BC - LD (BL_LDCTRK),BC - - JP DB_LOOP - -DB_NODISK: - ; SELDSK DID NOT LIKE DRIVE SELECTION - LD DE,STR_NODISK - CALL WRITESTR - JP DOBOOTMENU - -DB_NOBOOT: - ; DISK IS NOT BOOTABLE - LD DE,STR_NOBOOT - CALL WRITESTR - JP DOBOOTMENU - -DB_ERR: - ; I/O ERROR DURING BOOT ATTEMPT - LD DE,STR_BOOTERR - CALL WRITESTR - JP DOBOOTMENU - -DB_DONE: - CALL NEWLINE -; ; *DEBUG* -; CALL NEWLINE -; LD BC,LDLOC -; CALL PRTHEXWORD -; CALL PC_SPACE -; LD BC,(BL_CPMLOC) -; CALL PRTHEXWORD -; CALL PC_SPACE -; LD BC,(BL_LDSIZ) -; CALL PRTHEXWORD -; CALL PC_SPACE -; LD BC,(BL_CPMENT) -; CALL PRTHEXWORD - -; JP DOBOOTMENU ; *DEBUG* - - ; ALL DONE, NOW RELOCATE IMAGE BY COPYING - LD DE,(BL_LDSIZ) ; BYTES TO MOVE - LD HL,(BL_CPMLOC) - ADD HL,DE - DEC HL ; HL = PTR TO DEST (TOP) - PUSH HL ; SAVE IT - LD HL,LDLOC - ADD HL,DE - DEC HL ; HL = PTR TO SRC (TOP) - POP DE ; RECOVER DEST PTR - LD BC,(BL_LDSIZ) ; BC = BYTES TO COPY - LDDR - -; ; PATCH BOOT DRIVE INFO INTO CONFIG DATA -; LD A,BID_HB -; CALL HB_SETBNK -; CALL PATBI -; LD A,BID_USR -; CALL HB_SETBNK - - ; JUMP TO COLD BOOT ENTRY - LD HL,(BL_CPMENT) - JP (HL) - -PATBI: - ; PATCH BOOT DRIVE INFO INTO CONFIG DATA - LD HL,$200 + DISKBOOT ; LOCATION OF BOOTINFO IN SYSCFG IN RAM PAGE 1 - LD A,TRUE ; BOOT FROM DISK = TRUE - LD (HL),A ; SAVE IT - INC HL - LD A,(BL_BOOTDEVICE) ; GET BOOT DEVICE/UNIT - LD (HL),A ; SAVE IT - INC HL - LD DE,(BL_BOOTLU) ; GET BOOT LU - LD (HL),E ; SAVE LSB - INC HL - LD (HL),D ; SAVE MSB - RET -; -; -; -DOSETUPMENU: - LD DE,STR_SETUPMENU - CALL WRITESTR - CALL CINUC - - CP 'F' ; FORMAT RAM DISK - JP Z,FMTRAMDSK - CP 'X' ; EXIT - JP Z,DOBOOTMENU - JP DOSETUPMENU ; NO VALID KEY, LOOP -; -FMTRAMDSK: - JP DOSETUPMENU -; -#IF (DSKYENABLE) -; -; -;__SEGDISPLAY________________________________________________________________________________________ -; -; DISPLAY CONTENTS OF DISPLAYBUF IN DECODED HEX BITS 0-3 ARE DISPLAYED DIG, BIT 7 IS DP -;____________________________________________________________________________________________________ -; -SEGDISPLAY: - PUSH AF ; STORE AF - PUSH BC ; STORE BC - PUSH HL ; STORE HL - LD BC,0007H - ADD HL,BC - LD B,08H ; SET DIGIT COUNT - LD A,40H | 30H ; SET CONTROL PORT 7218 TO OFF - OUT (PPIC),A ; OUTPUT - CALL DELAY ; WAIT - LD A,0F0H ; SET CONTROL TO 1111 (DATA COMING, HEX DECODE,NO DECODE, NORMAL) - -SEGDISPLAY1: ; - OUT (PPIA),A ; OUTPUT TO PORT - LD A,80H | 30H ; STROBE WRITE PULSE WITH CONTROL=1 - OUT (PPIC),A ; OUTPUT TO PORT - CALL DELAY ; WAIT - LD A,40H | 30H ; SET CONTROL PORT 7218 TO OFF - OUT (PPIC),A ; OUTPUT - -SEGDISPLAY_LP: - LD A,(HL) ; GET DISPLAY DIGIT - OUT (PPIA),A ; OUT TO PPIA - LD A,00H | 30H ; SET WRITE STROBE - OUT (PPIC),A ; OUT TO PPIC - CALL DELAY ; DELAY - LD A,40H | 30H ; SET CONTROL PORT OFF - OUT (PPIC),A ; OUT TO PPIC - CALL DELAY ; WAIT - DEC HL ; INC POINTER - DJNZ SEGDISPLAY_LP ; LOOP FOR NEXT DIGIT - POP HL ; RESTORE HL - POP BC ; RESTORE BC - POP AF ; RESTORE AF - RET -#ENDIF -; -;__TEXT_STRINGS_________________________________________________________________________________________________________________ -; -; STRINGS -;_____________________________________________________________________________________________________________________________ -; -STR_BOOTDISK .DB "BOOT FROM DISK\r\n$" -STR_BOOTDISK1 .DB "\r\nReading disk information...$" -STR_BOOTMON .DB "START MONITOR\r\n$" -STR_BOOTROM .DB "BOOT FROM ROM\r\n$" -STR_INVALID .DB "INVALID SELECTION\r\n$" -STR_SETUP .DB "SYSTEM SETUP\r\n$" -STR_SIG .DB "SIGNATURE=$" -STR_CPMLOC .DB "LOC=$" -STR_CPMEND .DB "END=$" -STR_CPMENT .DB "ENT=$" -STR_LABEL .DB "LABEL=$" -STR_LOADING .DB "\r\nLoading$" -STR_NODISK .DB "\r\nNo disk!$" -STR_NOBOOT .DB "\r\nDisk not bootable!$" -STR_BOOTERR .DB "\r\nBoot failure!$" -; -STR_BANNER .DB "\r\n", PLATFORM_NAME, " Boot Loader$" -STR_BOOTMENU .DB "\r\nBoot: (M)onitor, (R)OM, or Drive Letter ===> $" -; -STR_SETUPMENU: - .DB "\r\n\r\n", PLATFORM_NAME, " Setup & Configuration v", BIOSVER - .DB " (", BIOSBLD, "-", TIMESTAMP, ")\r\n\r\n" -; .DB "(F)ormat RAM Disk\r\n" - .DB "e(X)it Setup\r\n" - .DB "\r\n===> $" -; - .IF DSKYENABLE -BOOT: -; . . t o o b - .DB 00H, 00H, 80H, 80H, 094H, 09DH, 09DH, 09FH - .ENDIF -; -#DEFINE CIOMODE_HBIOS -#DEFINE DSKY_KBD -#INCLUDE "util.asm" -; -; READ A CONSOLE CHARACTER AND CONVERT TO UPPER CASE -; -CINUC: - CALL CIN - AND 7FH ; STRIP HI BIT - CP 'A' ; KEEP NUMBERS, CONTROLS - RET C ; AND UPPER CASE - CP 7BH ; SEE IF NOT LOWER CASE - RET NC - AND 5FH ; MAKE UPPER CASE - RET - -#IF (PLATFORM == PLT_UNA) - -UNAINIT: - - CALL NEWLINE - PRTS("UNA $") - - ; UNA BIOS INFORMATION - LD C,$FA ; UNA FUNC GET BIOS INFO - LD B,4 ; UNA SUBFUNC BIOS DATE AND VER - CALL $FFFD ; CALL UNA - - PUSH DE - PUSH BC - LD A,D - CALL PRTDECB - CALL PC_PERIOD - LD A,E - AND $$7F - CALL PRTDECB - CALL PC_PERIOD - POP BC - LD A,B - CALL PRTDECB - POP DE - BIT 7,E - JR Z,NOALPHA - PRTS(" Alpha$") -NOALPHA: - CALL PC_SPACE - CALL PC_LPAREN - PUSH HL - POP BC - CALL PRTHEXWORD - CALL PC_RPAREN - - ; UNA DISK INFORMATION - CALL NEWLINE - CALL NEWLINE - LD B,0 ; INITIAL UNIT NUM - LD C,$48 - CALL $FFFD ; GET INFO - LD C,L ; SAVE UNIT COUNT IN C - -DSKINF1: - LD A,B ; LOAD UNIT - CP C ; UNIT = COUNT? - JR Z,DSKINFX ; EXIT IF DONE - PUSH BC ; SAVE CUR UNIT AND UNIT COUNT - CALL DSKINF2 ; DISPLAY UNIT INFO - POP BC ; RECOVER UNIT AND COUNT - INC B ; NEXT UNIT - JR DSKINF1 ; LOOP - -DSKINF2: - PUSH BC ; SAVE CURRENT UNIT NUM - - PRTS(" Unit $") - LD A,B - CALL PRTHEXBYTE - CALL PC_COLON - CALL PC_SPACE - - ; GET INFO - LD C,$48 ; GET INFO - CALL $FFFD ; DO IT - CALL PC_LBKT - LD A,D - CALL PRTHEXBYTE - CALL PC_SPACE - LD A,E - CALL PRTHEXBYTE - CALL PC_SPACE - LD A,L - CALL PRTHEXBYTE - CALL PC_SPACE - LD A,H - CALL PRTHEXBYTE - CALL PC_RBKT - CALL PC_SPACE - - ; GET CAPACITY - POP BC ; RESTORE CURRENT UNIT NUM - LD C,$45 - LD DE,$9000 - CALL $FFFD - PUSH HL - PUSH DE - LD A,B - CALL PRTHEXBYTE - CALL PC_COLON - POP BC - CALL PRTHEXWORD - POP BC - CALL PRTHEXWORD - - CALL NEWLINE - RET - -DSKINFX: - RET - -SHOWALL: - RET - -#ELSE -; -; Initialization -; -init: -; -; ; locate cbios function table address -; ld hl,(restart+1) ; load address of CP/M restart vector -; ld de,-3 ; adjustment for start of table -; add hl,de ; HL now has start of table -; ld (cbftbl),hl ; save it -; - ; get location of config data and verify integrity - ld hl,STAMP ; HL := adr of RomWBW zero page stamp - ld a,(hl) ; get first byte of RomWBW marker - cp 'W' ; match? - jp nz,errinv ; abort with invalid config block - inc hl ; next byte (marker byte 2) - ld a,(hl) ; load it - cp ~'W' ; match? - jp nz,errinv ; abort with invalid config block - inc hl ; next byte (major/minor version) - ld a,(hl) ; load it - cp RMJ << 4 | RMN ; match? - jp nz,errver ; abort with invalid os version - inc hl ; bump past - inc hl ; ... version info -; - ; dereference HL to point to CBIOS extension data - ld a,(hl) ; dereference HL - inc hl ; ... to point to - ld h,(hl) ; ... ROMWBW config data block - ld l,a ; ... in CBIOS -; - ; get location of drive map - inc hl ; bump two bytes - inc hl ; ... to drive map address - ld a,(hl) ; dereference HL - inc hl ; ... to point to - ld h,(hl) ; ... drivemap data - ld l,a ; ... in CBIOS - ld (maploc),hl ; and save it -; - ; return success - xor a ; signal success - ret ; return -; -; Display all active drive letter assignments -; -showall: - ld hl,(maploc) ; HL = address of drive map - dec hl ; point to prior byte with map entry count - ld b,(hl) ; put it in b for loop counter - ld c,0 ; map index (drive letter) -; - ld a,b ; load count - or a ; set flags - ret z ; bail out if zero -; -showall1: ; loop - ld a,c - push bc - call showone - pop bc - inc c - djnz showall1 - ret -; -; Display drive letter assignment for the drive num in A -; -showone: -; - push af ; save the incoming drive num -; - PRTX(indent) -; - ; setup HL to point to desired entry in table - pop af - push af - ld hl,(maploc) ; HL = address of drive map - rlca - rlca - call ADDHLA ; HL = address of drive map table entry - pop af -; - ; render the drive letter based on table index - add a,'A' ; convert to alpha - call COUT ; print it - ld a,':' ; conventional color after drive letter - call COUT ; print it - ld a,'=' ; use '=' to represent assignment - call COUT ; print it -; - ; render the map entry - ld a,(hl) ; load device/unit - rrca ; isolate high nibble (device) - rrca ; ... - rrca ; ... - rrca ; ... into low nibble - and $0F ; mask out undesired bits - call prtdev ; print device mnemonic - ld a,(hl) ; load device/unit again - and $0F ; isolate unit num - call prtdecb ; print it - inc hl ; point to slice num - ld a,':' ; colon to separate slice - call COUT ; print it - ld a,(hl) ; load slice num - call prtdecb ; print it -; - call NEWLINE -; - ret -; -; Print device mnemonic based on device number in A -; -prtdev: - push hl ; save HL - add a,a ; multiple A by two for word table - ld hl,devtbl ; point to start of device name table - call ADDHLA ; add A to hl to point to table entry - ld a,(hl) ; dereference hl to loc of device name string - inc hl ; ... - ld d,(hl) ; ... - ld e,a ; ... - ex de,hl - call PRTSTR ; print the device nmemonic - ex de,hl - pop hl ; restore HL - ret ; done -; -; Print value of A or HL in decimal with leading zero suppression -; Use prtdecb for A or prtdecw for HL -; -prtdecb: - push hl - ld h,0 - ld l,a - call PRTDEC ; print it - pop hl - ret -; -; Errors -; -errinv: ; invalid CBIOS, zp signature not found - ld de,msginv - jr err -; -errver: ; CBIOS version is not as expected - ld de,msgver - jr err -; -errdrv: ; CBIOS version is not as expected - push af - PRTX(msgdrv1) - pop af - add a,'A' - call COUT - ld de,msgdrv2 - jr err1 -; -errdev: ; invalid device name - ld de,msgdev - jr err -; -errnum: ; invalid number parsed, overflow - ld de,msgnum - jr err -; -err: ; print error string and return error signal - call NEWLINE ; print newline - call NEWLINE ; print newline -; -err1: ; without the leading crlf - ld hl,msgerr - call PRTSTR - ex de,hl - call PRTSTR -; -err2: ; without the string - call NEWLINE ; print newline - or $FF ; signal error - ret ; done -; -; Messages -; -indent .db " $" -msgerr .db "ERROR: $" -msginv .db "Unexpected CBIOS (signature missing)$" -msgver .db "Unexpected CBIOS version$$" -msgdrv1 .db "Invalid drive letter ($" -msgdrv2 .db ":)$" -msgdev .db "Invalid device name$" -msgnum .db "Unit or slice number invalid$" -; -; Data -; -maploc .dw 0 ; location of drive map -; -; -devtbl: ; device table - .dw dev00, dev01, dev02, dev03 - .dw dev04, dev05, dev06, dev07 - .dw dev08, dev09, dev10, dev11 - .dw dev12, dev13, dev14, dev15 -; -devunk .db "?$" -dev00 .db "MD$" -dev01 .db "FD$" -dev02 .db "RAMF$" -dev03 .db "IDE$" -dev04 .db "ATAPI$" -dev05 .db "PPIDE$" -dev06 .db "SD$" -dev07 .db "PRPSD$" -dev08 .db "PPPSD$" -dev09 .db "HDSK$" -dev10 .equ devunk -dev11 .equ devunk -dev12 .equ devunk -dev13 .equ devunk -dev14 .equ devunk -dev15 .equ devunk - -#ENDIF - -; -;================================================================================================== -; WORKING DATA STORAGE -;================================================================================================== -; -; WE USE A 256 BYTE AREA JUST AT THE START OF RAM (TOP 32KB) -; FOR WORKING DATA STORAGE. THE FIRST 128 BYTES ARE RESERVED -; TO LOAD THE BLOCK CONTAINING THE BOOT LOAD METADATA. THE -; METADATA IS IN THE LAST 6 BYTES OF THIS BLOCK. -; -;__________________________________________________________________________________________________ -; -BL_METABUF .EQU $ -BL_SIG .DW 0 ; SIGNATURE (WILL BE 0A55AH IF SET) -BL_PLATFORM .DB 0 ; Formatting Platform -BL_DEVICE .DB 0 ; Formatting Device -BL_FORMATTER .FILL 8,0 ; Formatting Program -BL_DRIVE .DB 0 ; Physical Disk Drive # -BL_LU .DW 0 ; Logical Unit (slice) -; - .FILL (BL_METABUF + 128) - $ - 32 -BL_PROTECT .DB 0 ; write protect boolean -BL_UPDATES .DW 0 ; update counter -BL_RMJ .DB 0 ; RMJ Major Version Number -BL_RMN .DB 0 ; RMN Minor Version Number -BL_RUP .DB 0 ; RUP Update Number -BL_RTP .DB 0 ; RTP Patch Level -BL_LABEL .FILL 16,0 ; 16 Character Drive Label -BL_TERM .DB 0 ; LABEL TERMINATOR ('$') -BL_BILOC .DW 0 ; LOC TO PATCH BOOT DRIVE INFO TO (IF NOT ZERO) -BL_CPMLOC .DW 0 ; FINAL RAM DESTINATION FOR CPM/CBIOS -BL_CPMEND .DW 0 ; END ADDRESS FOR LOAD -BL_CPMENT .DW 0 ; CP/M ENTRY POINT (CBIOS COLD BOOT) -; -; WORKING STORAGE STARTS HERE -; -BL_STACKSIZ .EQU 40H - .FILL BL_STACKSIZ,0 -BL_STACK .EQU $ -; -BL_LDSPT .DW 0 ; SECTORS PER TRACK FOR LOAD DEVICE -BL_LDCTRK .DW 0 ; CURRENT TRACK FOR LOAD -BL_LDCSEC .DW 0 ; CURRENT SECTOR FOR LOAD -BL_LDCLOC .DW 0 ; CURRENT MEM LOC BEING LOADED -BL_LDEND .DW 0 ; RAM LOCATION TO STOP LOAD -BL_LDSIZ .DW 0 ; SIZE OF CPM/CBIOS IMAGE TO LOAD -BL_TIMEOUT .DW 0 ; AUTOBOOT TIMEOUT COUNTDOWN COUNTER -BL_BOOTDRIVE .DB 0 ; TEMPORARY STORAGE FOR BOOT DRIVE -BL_BOOTDEVICE .DB 0 ; TEMPORARY STORAGE FOR BOOT DEVICE/UNIT -BL_BOOTLU .DW 0 ; TEMPORARY STORAGE FOR BOOT LU -BL_TMPDRV .DB 0 ; TEMP STORAGE FOR DRIVE LETTER -BL_TMPLU .DW 0 ; TEMP STORAGE FOR LU -; -;================================================================================================== -; FILL REMAINDER OF BANK -;================================================================================================== -; -SLACK: .EQU (9000H - $) - .FILL SLACK -; - .ECHO "LOADER space remaining: " - .ECHO SLACK - .ECHO " bytes.\n" - .END diff --git a/Source/prefix.asm b/Source/prefix.asm deleted file mode 100644 index ddc69c08..00000000 --- a/Source/prefix.asm +++ /dev/null @@ -1,53 +0,0 @@ -;---------------------------------------------------------------------------- -; PREFIX.ASM -; -; PUT AT THE HEAD OF BOOT.BIN TO XFER TO A FLOPPY DISK -; -;---------------------------------------------------------------------------- - -; 5/11/2012 dwg - changed offset to BIOS booting fixup location -; 3/ 2/2012 dwg - fixed BOOT_INFO_LOC (moved when jump added for bnksel) -; 2/15/2012 dwg - added origin data written by formatter -; 2/ 5/2012 dwg - added version quad, updates counter, and write protect boolean to metadata -; 1/ 9/2012 wbw - added signature -; 1/ 5/2012 dwg - added version of build generating system image -; 1/ 5/2012 dwg - added drive label to metadata for 1.4 - -#INCLUDE "std.asm" - -BYT .EQU 1 ; used to describe METADATA_SIZE below -WRD .EQU 2 - -SECTOR_SIZE .EQU 512 -BLOCK_SIZE .EQU 128 -PREFIX_SIZE .EQU (3 * SECTOR_SIZE) ; 3 SECTORS -METADATA_SIZE .EQU BYT+WRD+(4*BYT)+16+BYT+WRD+WRD+WRD+WRD ; (as defined below) - -BOOT_INFO_LOC .EQU CPM_ENT + 04BH -; PTR TO LOCATION TO RECORD BOOT INFO IN MEMORY IMAGE -; FIXUP REQUIRED WHEN BIOS HEADER CHANGES - - .ORG 0000H - JP CPM_ENT -; - .FILL ((PREFIX_SIZE - BLOCK_SIZE) - $),00H -PR_SIG .DW 0A55AH ; SIGNATURE GOES HERE - -PR_PLATFORM .DB 0 -PR_DEVICE .DB 0 -PR_FORMATTER .DB 0,0,0,0,0,0,0,0 -PR_DRIVE .DB 0 -PR_LOG_UNIT .DW 0 - -; - .FILL ((PREFIX_SIZE - METADATA_SIZE) - $),00H - .DB 0 ; write protect boolean - .DW 0 ; starting update number - .DB RMJ,RMN,RUP,RTP - .DB "Unlabeled Drive ","$" - .DW BOOT_INFO_LOC ; PTR TO LOCATION TO STORE DISKBOOT & BOOTDRIVE (SEE CNFGDATA) - .DW CPM_LOC ; CCP START - .DW CPM_END ; END OF CBIOS - .DW CPM_ENT ; COLD BOOT LOCATION - - .END \ No newline at end of file diff --git a/Source/ver.inc b/Source/ver.inc deleted file mode 100644 index 9c329e3f..00000000 --- a/Source/ver.inc +++ /dev/null @@ -1,7 +0,0 @@ -#DEFINE RMJ 2 -#DEFINE RMN 6 -#DEFINE RUP 0 -#DEFINE RTP 11 -#DEFINE BIOSVER "2.6.0" -#DEFINE BIOSBLD "Build 11" -#DEFINE REVISION 500 diff --git a/Support/ZSDOS/COPY.UPD b/Support/ZSDOS/COPY.UPD deleted file mode 100644 index 3725b0e8..00000000 --- a/Support/ZSDOS/COPY.UPD +++ /dev/null @@ -1,43 +0,0 @@ - 11 Dec 88 - -Some changes have been made to COPY since the manual was written. -Comparison of dates with Existence testing ON has been changed to -use the Creation date when no Modified date exists, and print -"Undated" when neither exists, yet both source and destination -disks support file date stamping. Additionally, the /X option -has been re-defined, and a new /R option has been added to -Version 1.4. Please replace Paragraph 4.1.2.9 on page 55 of your -ZSDOS manual with the following two paragraphs describing the new -options. - - -4.1.2.9.1 ERASE SOURCE FILE AFTER COPY. - -When you want to "move" a file from one area to another, the "X" -option may be used. This option causes a file or group of files -to be copied in the manner described by the default or specified -options, but after the copy and optional verify, the source file -or files are erased. You will be notified that the file has been -erased by the status "(X)" being printed on your console. To -minimize the possibility of deleting a good file when errors -exist in the copy, the Verify option should always be active, -either by default, or specified. When Verify is active, any -errors detected will disable the "X" option for that file so that -a good source file will not be deleted. The "X" option has no -configurable value, and is always assumed to be "Off" requiring -the option in the command line list to be effective. - - -4.1.2.9.2 COPY ONLY FILES WHICH EXIST (REPLACE). - -Occasionally, you may wish to update selected files to a destina- -tion in a simpler manner than naming each file, or using the -Inspect option. The "R" (Replace) option, when active, tells -COPY to transfer only files which exist on the destination direc- -tory. If the Archive option (A) is added in conjunction with the -Replace option, only files which have not been archived, AND -already exist on the destination will be archived. It should be -noted that the No Replacement (N) option is incompatible with -both the Replace and Archive options, and is disabled when either -"R" or "A" are active. - \ No newline at end of file diff --git a/Support/ZSDOS/DSCONFIG.COM b/Support/ZSDOS/DSCONFIG.COM deleted file mode 100644 index b77dd0085d20f05f103012192f21f1d5917da60b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 diff --git a/Support/ZSDOS/SETTERM.COM b/Support/ZSDOS/SETTERM.COM deleted file mode 100644 index eca19bf92d4eaecca331c64bae8faafc0336ab45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19840 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 diff --git a/Support/ZSDOS/SETUPZST.COM b/Support/ZSDOS/SETUPZST.COM deleted file mode 100644 index 35e4b5893b722ae52ead1900011c8b40d0d0d70e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7936 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 Z-0)7sZp8bDE{Q?0~8L0pO diff --git a/Support/ZSDOS/TESTCLOK.COM b/Support/ZSDOS/TESTCLOK.COM deleted file mode 100644 index d547e2b820b2d59591a532f0f7079576ccaa8100..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6400 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 a0+d27 256 - 27 ENDIF - - ZMAC Relocating Macro Assembler v 1.7, page 2 -N8VEM HBIOS Clock Interface HBCLK .Z80 -Description of Clock Module 33/21/C9 00:00 - - - 32 COMMON /_PARM_/ - - 34 0000* 0000 PARBAS: DEFW 0 ; # of parameters (Set to 00 if none) - 35 0002* 0000 DEFW 0 ; Pointer to STRS (Set to 00 if none) - - 37 CSEG - - 39 ;----------------------------------------------------------- - 40 ; Z S D O S C L O C K H E A D E R - 41 ;----------------------------------------------------------- - 42 ; Enter: HL points to a 6-byte buffer to Get/Set time - 43 ; Exit : A=1 on Success, A=FFH if error - 44 ; HL points to last char in buffer - 45 ; E contains original seconds (HL+5) - - 47 ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 48 ; R e a d / W r i t e t h e C l o c k - 49 ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -J 51 0000' C3 0006' PRGBAS: JP GETTIM ; Jump to Read Clock -J 52 0003' C3 0024' JP WRCLK ; Jump to Set Clock - 53 ; - 54 0006' E5 GETTIM: PUSH HL ; Save final buffer pointer - 55 0007' 21 0039' LD HL,TIMBUF ; Point to temp buf for HBIOS read - 56 000A' 06 20 LD B,20H ; HBIOS Read Clock function = $20 - 57 000C' CF RST 08 ; Call HBIOS to get time - 58 000D' 20 28' JR NZ,ERRRET ; Error return - 59 000F' 21 0039' LD HL,TIMBUF ; Source is start of temp buf - 60 0012' D1 POP DE ; Destination is buffer provided originally - 61 0013' 01 0005 LD BC,5 ; Copy just the first 5 bytes - 62 0016' EDB0 LDIR ; Do it - 63 0018' 1A LD A,(DE) ; Save the original seconds value - 64 0019' 03 INC BC ; Setup to copy final byte (BC := 1) - 65 001A' EDB0 LDIR ; Do the last byte (seconds) - 66 001C' EB EX DE,HL ; Setup HL to point to seconds for return - 67 001D' 2B DEC HL ; Need to dec HL back to seconds adr - 68 001E' 16 00 LD D,0 ; Tenths of seconds is always zero - 69 0020' 5F LD E,A ; Original seconds value to E - 70 0021' 3E 01 LD A,1 ; Signal success - 71 0023' C9 RET ; Done - 72 ; - 73 0024' 11 0039' WRCLK: LD DE,TIMBUF ; Copy to temp buf - 74 0027' 01 0006 LD BC,6 ; 6 bytes - 75 002A' EDB0 LDIR ; Do it - 76 ;XOR A ; Zero for day of week - 77 ;LD (DE),A ; Save day of week - 78 002C' 21 0039' LD HL,TIMBUF ; Point to temp buf for HBIOS call - 79 002F' 06 21 LD B,21H ; Set clock function - 80 0031' CF RST 08 ; Call HBIOS to set the time - 81 0032' 20 03' JR NZ,ERRRET ; Error return - 82 0034' 3E 01 LD A,1 ; Signal success - 83 0036' C9 RET ; Done - 84 ; - 85 0037' AF ERRRET: XOR A ; Error - 86 0038' C9 RET ; Done - ZMAC Relocating Macro Assembler v 1.7, page 3 -N8VEM HBIOS Clock Interface HBCLK .Z80 -Configurable Clock Hardware Parameters 33/21/C9 00:00 - - 87 ; - 88 ;TIMBUF EQU 0FE00H ; HBIOS copy buffer - 89 0039' 00 00 00 00 TIMBUF DEFS 6 ; Temp date/time buffer - - ZMAC Relocating Macro Assembler v 1.7, page 4 -N8VEM HBIOS Clock Interface HBCLK .Z80 -Configurable Clock Hardware Parameters 33/21/C9 00:00 - - - 94 ; This code installs configurable items into the clock module - 95 ; Enter with DE pointing to the physical address of the relocatable module - - 97 COMMON /_POST_/ - 98 0000* C9 RET ; This RETURN MUST be present even if no other - 99 ; code is included in this section - - 101 COMMON /_PRE_/ - - 103 ;--------------------------------------------------------------- - 104 ; Read clock and wait for seconds to roll - watchdog protected - 105 ; Enter with: DE pointing to relocated clock read routine - 106 ; HL pointing to base of high module - - 108 ; This module is executed just prior to installing the module to insure - 109 ; that a valid clock is present - 110 ; Enter with DE pointing to beginning of relocated clock CSEG - - 112 COMMON /_PRE_/ - - 114 INCLUDE PRECLOCK.LIB - 2+ ;--------------------------------------------------------------- - 3+ ; Read clock and wait for seconds to roll - watchdog protected - 4+ ; Enter with: DE pointing to relocated clock read routine - 5+ ; HL pointing to base of high module - - 7+ 0000* 18 02* TSTRD: JR TSTRD0 ; Jump around address store - - 9+ 0002* 0000 DEFW TSTRD ; Org location of the code - - 11+ 0004* ED53 0039* TSTRD0: LD (CKCLK+1),DE ; Patch GETTIM address in - 12+ 0008* CD 0038* CALL CKCLK ; Get time to start with - 13+ 000B* 7E LD A,(HL) ; Get seconds - 14+ 000C* FE 60 CP 60H ; Check for valid digit - 15+ 000E* 30 20* JR NC,BAD ; >= 60h - 16+ 0010* 01 0000 LD BC,0 ; Set watchdog - 17+ 0013* 0B TST0: DEC BC ; One less remaining... - 18+ 0014* 78 LD A,B - 19+ 0015* B1 OR C - 20+ 0016* C8 RET Z ; Exit w/cy clear if timed out - 21+ 0017* C5 PUSH BC ; Save watchdog - 22+ 0018* 06 21 LD B,MHZ ; insure good at up to 25mhz - 23+ 001A* E3 TST1: EX (SP),HL ; ..under absolute worst case - 24+ 001B* E3 EX (SP),HL - 25+ 001C* 10 FC* DJNZ TST1 ; waste time (41t/loop) - 26+ 001E* CD 0038* CALL CKCLK ; Read the clock - 27+ 0021* C1 POP BC ; Restore watchdog - 28+ 0022* 7E LD A,(HL) - 29+ 0023* 93 SUB E ; New - old - 30+ 0024* 27 DAA - 31+ 0025* 28 EC* JR Z,TST0 ; If no action, try again - 32+ 0027* 30 03* JR NC,TST2 ; New > old - 33+ 0029* C6 60 ADD A,60H ; Adjust for seconds rollover - 34+ 002B* 27 DAA - 35+ 002C* D6 02 TST2: SUB 2 ; Allow 2 sec tolerance - ZMAC Relocating Macro Assembler v 1.7, page 5 -N8VEM HBIOS Clock Interface HBCLK .Z80 -PRECLOCK.LIB - Test for Clock Tick - 12/12/88 33/21/C9 00:00 - - 36+ 002E* 27 DAA - 37+ 002F* D8 RET C ; Cy set is good - 38+ 0030* B7 BAD: OR A ; Cy clear is bad - 39+ 0031* C9 RET - - 41+ 0032* 00 00 00 00 LOCBUF: DEFS 6 - - 43+ ; Set registers and read the clock - - 45+ 0038* 21 0000 CKCLK: LD HL,0000 ; Set up in beginning - 46+ 003B* E5 PUSH HL ; Go to this address - 47+ 003C* 0E 00 LD C,00 ; Tell the clock we are reading - 48+ 003E* 21 0032* LD HL,LOCBUF - 49+ 0041* C9 RET - - 116 END -  \ No newline at end of file diff --git a/ZSDOS/Clock/hbclk.rel b/ZSDOS/Clock/hbclk.rel deleted file mode 100644 index 0078ccb7fcf543aac2b958a538e592fbb1d6a012..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 384 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..103-->54 - 361 00D1' 4F LD C,A ; Save reworked function # - 362 ; ..fall thru to entry0.. - - 364 ; If Non-disk Function (ie Function # less than 12), push the address of - 365 ; the SAVEA routine on the Stack (save A reg as return code). Saves - 366 ; code in Console Routines, as simple RET can be used in most cases. - - 368 00D2' 21 04BB' ENTRY0: LD HL,SAVEA - 369 00D5' E5 PUSH HL ; Vector return thru A reg save - 370 00D6' 21 00E2' ENTRY1: LD HL,CTABLE ; Load table - 371 00D9' 09 ADD HL,BC ; Add - 372 00DA' 09 ADD HL,BC ; Add twice to get word value - 373 00DB' 7E LD A,(HL) ; Get LSB - 374 00DC' 23 INC HL ; Pointer to MSB - 375 00DD' 66 LD H,(HL) ; Get MSB - 376 00DE' 6F LD L,A ; Save LSB in L - - 378 ; Copy byte argument into A and C to simplify Function calls. This allows - 379 ; direct BIOS jumps for several functions with resulting code savings. - - ZMAC Relocating Macro Assembler v 1.7, page 12 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 381 00DF' 4B LD C,E ; Place arg in C for BIOS - 382 00E0' 7B LD A,E ; And in A for others - 383 00E1' E9 JP (HL) ; Jump to routine - - ZMAC Relocating Macro Assembler v 1.7, page 13 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 386 ;****************************************************** - 387 ;* C O M M A N D T A B L E * - 388 ;****************************************************** - 389 00E2' CTABLE: - 390 IF ROM - 392 ELSE - 393 00E2' 03CA DEFW ERROR5 ; Warm boot (BIOS) with ERMODE clear - 394 ENDIF - 395 00E4' 0150 DEFW CMND01 ; Console input - 396 00E6' 0264 DEFW WRCON ; Console output - 397 00E8' 0015 DEFW READER ; Reader input (BIOS) - 398 00EA' 0012 DEFW PUNCH ; Punch output (BIOS) - 399 00EC' 000F DEFW LIST ; List output (BIOS) - 400 00EE' 015A DEFW CMND06 ; Direct console I/O - 401 00F0' 0191 DEFW CMND07 ; Get I/O byte - 402 00F2' 018E DEFW CMND08 ; Set I/O byte - 403 00F4' 02D5 DEFW CMND09 ; Print string - 404 00F6' 0195 DEFW CMND10 ; Read console buffer - 405 00F8' 02B7 DEFW CMND11 ; Get console status - 406 00FA' 04CF DEFW CMND12 ; Return version number - 407 00FC' 040A DEFW CMND13 ; Reset disk system - 408 00FE' 057A DEFW CMND14 ; Select disk - 409 0100' 0AB4 DEFW CMND15 ; Open file - 410 0102' 07A8 DEFW CMND16 ; Close file - 411 0104' 046E DEFW CMND17 ; Search for first - 412 0106' 0495 DEFW CMND18 ; Search for next - 413 0108' 04A5 DEFW CMND19 ; Delete file - 414 010A' 0BBE DEFW CMND20 ; Read sequential - 415 010C' 0BFF DEFW CMND21 ; Write sequential - 416 010E' 0B02 DEFW CMND22 ; Make file - 417 0110' 04B0 DEFW CMND23 ; Rename file - 418 0112' 04E8 DEFW CMND24 ; Return login vector - 419 0114' 04B8 DEFW CMND25 ; Return current disk - 420 0116' 0833 DEFW CMND26 ; Set DMA address - 421 0118' 04E4 DEFW CMND27 ; Get address allocation vector - 422 011A' 0703 DEFW CMND28 ; Write protect disk - 423 011C' 04DC DEFW CMND29 ; Get R/O vector - 424 011E' 04C7 DEFW CMND30 ; Set file attributes - 425 0120' 04EC DEFW CMND31 ; Get address disk parameter header (DPH) - 426 0122' 04FB DEFW CMND32 ; Get/set user code - 427 0124' 0BB4 DEFW CMND33 ; Read random - 428 0126' 0BF4 DEFW CMND34 ; Write random - 429 0128' 0507 DEFW CMND35 ; Compute file size - 430 012A' 050F DEFW CMND36 ; Set random record - 431 012C' 041A DEFW CMND37 ; Reset multiple drive - 432 012E' 04BE DEFW DUMMY ; Function 38 (unused) - 433 0130' 04E0 DEFW CMND39 ; Return fixed disk login vector - 434 0132' 0BF4 DEFW CMND40 ; Write random with zero fill - 435 0134' 04BE DEFW DUMMY ; Function 41 (unused) - 436 0136' 04BE DEFW DUMMY ; Function 42 (unused) - 437 0138' 04BE DEFW DUMMY ; Function 43 (unused) - 438 013A' 04BE DEFW DUMMY ; Function 44 (unused) - 439 013C' 04F7 DEFW CMND45 ; Set Error Mode - 440 013E' 04BE DEFW DUMMY ; Function 46 (unused) - 441 0140' 04F0 DEFW CMND47 ; Return DMA - 442 0142' 04D8 DEFW CMND48 ; Return DOS version - ZMAC Relocating Macro Assembler v 1.7, page 14 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - - 444 = 0031 MAXCMD EQU ($-CTABLE)/2 ; Jww - - 446 0144' 0DD7 DEFW CMD98 ; Get Time ; 49 - 447 0146' 0DD4 DEFW CMD99 ; Set Time ; 50 - 448 0148' 04C2 DEFW CMD100 ; Get Flags ; 51 - 449 014A' 04BF DEFW CMD101 ; Set Flags ; 52 - 450 014C' 0DA4 DEFW CMD102 ; Get Stamp ; 53 - 451 014E' 0DA4 DEFW CMD103 ; Put Stamp ; 54 - - ZMAC Relocating Macro Assembler v 1.7, page 15 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 454 ;****************************************************** - 455 ;* N o n - D i s k F u n c t i o n s * - 456 ;****************************************************** - - 458 IF ROM - 468 IF ZS ; Need Internal path if ZSDOS - 483 ENDIF ; Rom - - 485 ;..... - 486 ; I/O Routines - - 488 ; ZSDOS Console Input. Read character from Console and Echo - 489 ; If Char=CR,LF,TAB,CONTH or >=Space - - 491 0150' CD 0175' CMND01: CALL GETCH ; Get character (and test it jww) - 492 0153' D8 RET C ; Less than space, exit - 493 0154' E5 PUTCH: PUSH HL ; Save regs for other calls - 494 0155' CD 0264' CALL WRCON ; Echo character - 495 0158' E1 POP HL - 496 0159' C9 RET - - 498 ; Direct Console Input/Output - 499 ; Call with Char in C and E - Enhanced to CP/M-3 Spec - 500 ; Checks ZSDOS typeahead for reliable console I/O under all conditions - 501 ; as per a suggestion by Bridger Mitchell. - - 503 015A' 1C CMND06: INC E ; Test if get char if avail - 504 015B' 28 14' JR Z,DCIO1 ; Yes do input - 505 015D' 1C INC E ; Test for 0FEH - 506 015E' 28 06' JR Z,DCIO2 ; Yes, get status - 507 0160' 1C INC E ; Test for 0FDH - 508 0161' 28 12' JR Z,GETCH ; Yes, wait for input char - 509 0163' C3 000C* JP CONOUT ; Else print char - - 511 0166' 3A 0029' DCIO2: LD A,(LASTCH) ; Check for buffered char - 512 0169' B7 OR A - 513 016A' 3E 01 LD A,0001B ; ..preset ready - 514 016C' CC 0006* CALL Z,CONST ; Get console status - 515 016F' A7 AND A ; Test it - 516 0170' C9 RET ; And return it to caller - - 518 0171' CD 0166' DCIO1: CALL DCIO2 ; Get console status - 519 0174' C8 RET Z ; Exit if no character present - 520 ; Else fall thru - 521 ; Get Character from Console - - 523 0175' 21 0029' GETCH: LD HL,LASTCH ; Check ZSDOS type ahead for char - 524 0178' 7E LD A,(HL) - 525 0179' 36 00 LD (HL),0 ; Reset last character - 526 017B' B7 OR A ; ..set flags - 527 017C' CC 0009* CALL Z,CONIN ; Get character (and test it jww) - - 529 ; Test Character - 530 ; Exit Carry=0: CR,LF,TAB,CONTH or >= Space - 531 ; Carry=1: All other Characters - - ZMAC Relocating Macro Assembler v 1.7, page 16 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 533 017F' FE 0D CP CR ; Is it a carriage return? - 534 0181' C8 RET Z ; ..return if so - 535 0182' FE 0A CP LF ; Is it a line feed? - 536 0184' C8 RET Z ; ..return if so - 537 0185' FE 09 CP TAB ; Is it a tab? - 538 0187' C8 RET Z ; ..return if so - 539 0188' FE 08 CP CONTH ; Is it a backspace? - 540 018A' C8 RET Z ; ..return if so - 541 018B' FE 20 CP ' ' ; Test >=space - 542 018D' C9 RET ; ..and return to caller - - 544 ; Set I/O Status Byte - - 546 018E' 32 0003 CMND08: LD (RAMLOW+0003H),A ; And save it in RAM and fall through - - 548 ; Get I/O Status Byte - - 550 0191' 3A 0003 CMND07: LD A,(RAMLOW+0003H) ; Get I/O byte from RAM - 551 0194' C9 RET - - 553 ; Buffered Console Read - - 555 0195' 3A 0026' CMND10: LD A,(TABCNT) - 556 0198' 32 0027' LD (TABCX1),A ; Save start tab position - 557 019B' 13 INC DE - 558 019C' AF XOR A - 559 019D' 12 LD (DE),A ; Set char count to zero - 560 019E' 13 INC DE ; Point to actual buffer start - - 562 019F' D5 RDBUF1: PUSH DE ; Save buffer pointer - 563 01A0' CD 0175' CALL GETCH ; Get next byte from user - 564 01A3' D1 POP DE - 565 01A4' 21 019F' LD HL,RDBUF1 - 566 01A7' E5 PUSH HL ; Return address to stack - 567 01A8' 2A 005D' LD HL,(ARWORD) - 568 01AB' 4E LD C,(HL) ; Put buffer length in C - 569 01AC' 23 INC HL ; And point to current length - - 571 01AD' FE 0D CP CR - 572 IF CTLREN - 573 01AF' 28 02' JR Z,JZRBX ; Exit if CR - 576 ENDIF ;Ctlren - - 578 01B1' FE 0A CP LF - 579 IF CTLREN - 580 01B3' CA 024E' JZRBX: JP Z,RDBUFX ; ..or LF - 583 ENDIF ;Ctlren - 584 ;..Not CR or LF, so fall thru to next test - - 586 ; Delete Character from Buffer - 587 ; RUB, Backspace, CR, LF are NEVER in the Buffer - - 589 01B6' FE 7F RDBUF2: CP RUBOUT ; Delete char? - 590 01B8' 28 04' JR Z,DOBACK ; ..jump if so - 591 01BA' FE 08 CP CONTH ; Control-H also deletes - 592 01BC' 20 36' JR NZ,RDBUF3 ; Skip to next test if no delete - ZMAC Relocating Macro Assembler v 1.7, page 17 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - - 594 01BE' 7E DOBACK: LD A,(HL) - 595 01BF' A7 AND A ; Test if attempting del from empty line - 596 01C0' C8 RET Z ; ..Exit if so - 597 01C1' 1B DOBAK0: DEC DE ; Back up to last character - 598 01C2' 35 DEC (HL) ; Erase from buffer - 599 01C3' D5 PUSH DE ; Save buffer pointer - 600 01C4' 46 LD B,(HL) ; Get new char count - 601 01C5' 23 INC HL ; Point to first char - 602 01C6' EB EX DE,HL - 603 01C7' 21 0026' LD HL,TABCNT - 604 01CA' 4E LD C,(HL) ; Save current Tab count - 605 01CB' 23 INC HL - 606 01CC' 7E LD A,(HL) ; Get starting Tab position - 607 01CD' 2B DEC HL - 608 01CE' 77 LD (HL),A ; Init the counter - 609 01CF' 04 INC B ; Insure non-zero - 610 01D0' 18 05' JR DOBAK2 ; Jump to done test - - 612 01D2' 1A DOBAK1: LD A,(DE) ; Get char from buffer - 613 01D3' CD 0293' CALL WRCON2 ; Counts chars - 614 01D6' 13 INC DE - 615 01D7' 10 F9' DOBAK2: DJNZ DOBAK1 ; Continue count until done - 616 01D9' 79 LD A,C ; Get prior tab count - 617 01DA' 96 SUB (HL) ; Get diff between new and old - 618 01DB' 47 LD B,A ; Set up as count - 619 01DC' 71 LD (HL),C ; Restore prior count - 620 01DD' D1 POP DE ; Restore buffer pointer - - 622 ; Delete B Characters from Console - - 624 01DE' D5 PUSH DE ; Save pointer - 625 01DF' 0E 08 DOBAK5: LD C,CONTH - 626 01E1' C5 PUSH BC ; Save counter from destruction - 627 01E2' CD 000C* CALL CONOUT - 628 01E5' 0E 20 LD C,' ' - 629 01E7' CD 000C* CALL CONOUT ; Output backspace,space to CON: only - 630 01EA' 3E 08 LD A,CONTH - 631 01EC' CD 0264' CALL WRCON ; Now backspace CON:, counter, and printer - 632 01EF' C1 POP BC ; Restore counter - 633 01F0' 10 ED' DJNZ DOBAK5 ; Loop until all done - 634 01F2' D1 POP DE ; Restore pointer - 635 01F3' C9 RET - - 637 ; Erase Buffer - - 639 01F4' FE 15 RDBUF3: CP CONTU ; Test erase line - 640 01F6' 28 04' JR Z,ERALIN ; Do it if so - 641 01F8' FE 18 CP CONTX - 642 01FA' 20 0A' JR NZ,RDBUF4 ; Skip to next test if no erase line - - 644 01FC' AF ERALIN: XOR A - 645 01FD' B6 OR (HL) ; Line empty? - 646 01FE' C8 RET Z ; Exit if so - 647 01FF' E5 PUSH HL - 648 0200' CD 01C1' CALL DOBAK0 ; Else delete another (skip empty check) - ZMAC Relocating Macro Assembler v 1.7, page 18 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 649 0203' E1 POP HL - 650 0204' 18 F6' JR ERALIN - - 652 0206' RDBUF4: ; If CTL-R=True, do following code, else bypass - 653 IF CTLREN - 654 0206' FE 12 CP CONTR ; If ^R, type clean buffer version on console - 655 0208' 20 24' JR NZ,RDBUF5 - 656 020A' E5 PUSH HL ; Save pointer to buffer length - 657 020B' CD 02D2' CALL CROUT ; Do CR/LF - 658 020E' 21 0026' LD HL,TABCNT - 659 0211' 36 00 LD (HL),0 ; Init Tab count - 660 0213' 23 INC HL - 661 0214' 46 LD B,(HL) ; And get Tab offset count - 662 0215' 3E 20 LD A,' ' - 663 0217' 04 inc b ; [1.1] insure nz value - 664 0218' 18 03' jr rety1a ; [1.1] so case of lh side of screen ok - 665 021A' CD 0264' RETYP1: CALL WRCON ; Space off start of line - 666 021D' 10 FB' rety1a: DJNZ RETYP1 - 667 021F' E1 POP HL ; Point to buffer length - 668 0220' 46 LD B,(HL) ; Get how many chars to print - 669 0221' 23 INC HL ; Restore buffer pointer - 670 0222' EB EX DE,HL ; Put buffer pointer in DE - 671 0223' 04 INC B ; Comp for first DJNZ - 672 0224' 18 05' JR RETYP3 ; Skip to done test - 673 0226' 1A RETYP2: LD A,(DE) ; Get char from buffer - 674 0227' CD 0253' CALL WRCTL ; Output it - 675 022A' 13 INC DE ; Bump pointer - 676 022B' 10 F9' RETYP3: DJNZ RETYP2 ; Loop until done - 677 022D' C9 RET - 678 ENDIF ; Ctlren - - 680 ; Toggle Line Printer Echo - - 682 022E' FE 10 RDBUF5: CP CONTP ; Toggle printer? - 683 0230' 20 07' JR NZ,RDBUF6 ; Next test if not - 684 0232' 21 0028' LD HL,FCONTP - 685 0235' 7E LD A,(HL) ; Get printer echo flag - 686 0236' 2F CPL ; Toggle it - 687 0237' 77 LD (HL),A ; Put back - 688 0238' C9 RET - - 690 ; Check if Control-C is First char in BUFF and Exit if so - - 692 0239' 12 RDBUF6: LD (DE),A ; Put character in buffer - 693 023A' E5 PUSH HL - 694 023B' CD 0253' CALL WRCTL ; Echo the character - 695 023E' E1 POP HL - 696 023F' 34 INC (HL) ; Increment the character count - - 698 0240' 7E LD A,(HL) ; Get current length - 699 0241' B9 CP C ; Test against buffer size - 700 0242' 28 0A' JR Z,RDBUFX - 701 0244' 3D DEC A ; Set Z flag for first character - 702 0245' 1A LD A,(DE) ; Get the character back - 703 0246' 13 INC DE ; ..and bump the pointer - 704 0247' C0 RET NZ ; Return if not the first character - ZMAC Relocating Macro Assembler v 1.7, page 19 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 705 0248' FE 03 CP CONTC ; Possible user abort? - 706 024A' C0 RET NZ ; ..return if not - 707 024B' C3 03CA' JP ERROR5 ; Else jump to error reset exit - - 709 ; Done with Read Console Buffer Function - - 711 024E' E1 RDBUFX: POP HL ; Clear RDBUF1 return address - 712 024F' 3E 0D LD A,CR - 713 0251' 18 11' JR WRCON ; ..and echo a CR - - 715 ; Print Control Character as '^X' - - 717 0253' FE 20 WRCTL: CP ' ' ; Test if control char - 718 0255' 30 0D' JR NC,WRCON ; Not, send it out - 719 0257' FE 09 CP TAB ; Test if Tab - 720 0259' 28 0D' JR Z,WRCON0 ; It is, so expand with spaces - 721 025B' F5 PUSH AF ; Save char - 722 025C' 3E 5E LD A,'^' ; Output a karet - 723 025E' CD 0277' CALL WRCON1 ; No need for Tab test here - 724 0261' F1 POP AF - 725 0262' C6 40 ADD A,40H ; Convert to printable - 726 ; And fall thru to WRCON - - 728 ; Output char with List Echo, Tab Expansion (Function 2) - - 730 0264' FE 09 WRCON: CP TAB ; Is it a Tab? - 731 0266' 20 0F' JR NZ,WRCON1 ; ..jump if not - 732 0268' 3E 20 WRCON0: LD A,' ' ; Expand Tab with spaces - 733 026A' CD 0277' CALL WRCON1 ; Write space - 734 026D' 3A 0026' LD A,(TABCNT) ; Get Tab count - 735 0270' E6 07 AND 7 ; Test if done - 736 0272' 20 F4' JR NZ,WRCON0 ; No then repeat - 737 0274' 3E 09 LD A,TAB ; Return Tab - 738 0276' C9 RET ; Return to caller - - 740 0277' C5 WRCON1: PUSH BC - 741 0278' D5 PUSH DE ; Save pointers - 742 0279' 4F LD C,A - 743 027A' C5 PUSH BC ; Save character - - 745 = 027C' BGPTCH0 EQU $+1 ;<-- BGii patches this address - - 747 027B' CD 02B7' CALL CMND11 ; Test status and CONTS/CONTC - 748 027E' C1 POP BC ; Get character back - 749 027F' C5 PUSH BC ; Save it again - 750 0280' CD 000C* CALL CONOUT ; Output it - 751 0283' C1 POP BC ; Get character back - 752 0284' C5 PUSH BC ; Save it again - 753 0285' 3A 0028' LD A,(FCONTP) ; Get printer echo flag - 754 0288' B7 OR A ; Test it - 755 0289' C4 000F* CALL NZ,LIST ; Non zero => output char to printer - 756 028C' C1 POP BC ; Restore character - 757 028D' 79 LD A,C ; Fall through to count routine - 758 028E' D1 POP DE - 759 028F' C1 POP BC ; Restore pointers - - ZMAC Relocating Macro Assembler v 1.7, page 20 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 761 ; Count Characters in line as shown by f10 - - 763 0290' 21 0026' LD HL,TABCNT ; Get pointer to Tab counter - 764 0293' 34 WRCON2: INC (HL) ; Increment Tab counter - 765 0294' FE 7F CP RUBOUT ; Test if character = Rubout - 766 0296' 28 15' JR Z,WRCON3 ; Treat like Backspace - 767 0298' FE 20 CP ' ' - 768 029A' D0 RET NC ; Ok if not Control - 769 029B' FE 09 CP TAB ; Only DOBACK ever gets Tabs through here - 770 029D' 28 11' JR Z,WRCON4 ; Handle differently if Tab - 771 029F' FE 08 CP CONTH - 772 02A1' 28 0A' JR Z,WRCON3 ; Or Backspace - 773 02A3' 34 INC (HL) ; Must have been echoed as two chars - 774 02A4' FE 0A CP LF - 775 02A6' 28 05' JR Z,WRCON3 ; ..unless it's LF - 776 02A8' FE 0D CP CR ; ..or CR - 777 02AA' C0 RET NZ - 778 02AB' 36 02 LD (HL),2 ; Reset Tab count - 779 02AD' 35 WRCON3: DEC (HL) ; Decrement Tab counter - 780 02AE' 35 DEC (HL) - 781 02AF' C9 RET ; And exit - - 783 02B0' 3E 07 WRCON4: LD A,7 ; Bumped by one already - 784 02B2' 86 ADD A,(HL) ; Tabs are every 8 spaces - 785 02B3' E6 F8 AND 0F8H ; ...mod 8 - 786 02B5' 77 LD (HL),A ; Save updated Tab count - 787 02B6' C9 RET ; ..and continue - - 789 ; Get Console Status - BGII uses this routine - - 791 02B7' BGCONST: - 792 02B7' CD 0166' CMND11: CALL DCIO2 ; Get character present status - 793 02BA' C8 RET Z ; ..exit if none - 794 02BB' CD 0175' CALL GETCH ; Get next console char - 795 02BE' FE 13 CP CONTS ; Is it stop char? - 796 02C0' 20 0A' JR NZ,GCONS2 ; ..jump if Not - 797 02C2' CD 0009* CALL CONIN ; Get next character - 798 02C5' FE 03 CP CONTC ; Does the user want to exit (^C)? - 799 02C7' 20 EE' JR NZ,CMND11 ; ..check for another character if not - 800 02C9' C3 03CA' JP ERROR5 ; Else jump to warm boot & clear ERMODE - - 802 02CC' 32 0029' GCONS2: LD (LASTCH),A ; Save character - 803 02CF' 3E 01 LD A,1 ; Character present code - 804 02D1' C9 RET ; Return to caller - - 806 ; Echo CR,LF - - 808 02D2' 11 0349' CROUT: LD DE,MCRLF ; Fall through to output routine - - 810 ; Output Message - - 812 02D5' 1A CMND09: LD A,(DE) ; Get byte from buffer - 813 02D6' FE 24 CP '$' ; Test last byte - 814 02D8' C8 RET Z ; Yes, then return to caller - 815 02D9' 13 INC DE ; Point to next byte - 816 02DA' CD 0264' CALL WRCON ; Output character - ZMAC Relocating Macro Assembler v 1.7, page 21 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 817 02DD' 18 F6' JR CMND09 ; And test again - - ZMAC Relocating Macro Assembler v 1.7, page 22 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 820 ;********************************************** - 821 ;* E r r o r R o u t i n e s * - 822 ;********************************************** - - 824 02DF' 01 0064 PRDEC: LD BC,100 - 825 02E2' CD 02ED' CALL NUM - 826 02E5' 0E 0A LD C,10 - 827 02E7' CD 02ED' CALL NUM - 828 02EA' 01 0101 LD BC,101H - - 830 ; Display Number - - 832 02ED' 16 FF NUM: LD D,-1 ; Load number -1 - 833 02EF' 14 NUM1: INC D ; Increment number - 834 02F0' 91 SUB C ; Divide by C - 835 02F1' 30 FC' JR NC,NUM1 ; Not finished then loop - 836 02F3' 81 ADD A,C ; Restore last value - 837 02F4' F5 PUSH AF ; Save it - 838 02F5' 7A LD A,D ; Test if "0" - 839 02F6' B0 OR B ; And if leading zero - 840 02F7' 28 07' JR Z,NUM2 ; Yes, then exit - 841 02F9' 47 LD B,A ; Set no leading zero - 842 02FA' 7A LD A,D ; Get number - 843 02FB' C6 30 ADD A,'0' ; Make ASCII - 844 02FD' CD 0154' CALL PUTCH ; Echo number preserving BC - 845 0300' F1 NUM2: POP AF ; Restore number - 846 0301' C9 RET ; And exit - - 848 ; Error Messages - - 850 0302' 43 68 61 6E MDSKCH: DEFB 'Changed$' - - 852 030A' 42 61 64 20 MBADSC: DEFB 'Bad Sector$' - - 854 0315' 4E 6F 20 44 MSEL: DEFB 'No Drive$' - - 856 031E' 46 69 6C 65 MFILRO: DEFB 'File ' - - 858 0323' 57 2F 50 24 MRO: DEFB 'W/P$' - 859 IF ZS - 860 0327' 5A 53 44 4F MBERR: DEFB 'ZSDOS' - 863 ENDIF - 864 032C' 20 65 72 72 DEFB ' error on $' - 865 - 866 0337' 0D 0A 43 61 MBFUNC: DEFB CR,LF,'Call' - 867 033D' 3A 20 24 MDRIVE: DEFB ': $' - - 869 0340' 20 20 46 69 MFILE: DEFB ' File: $' - - 871 0349' 0D 0A 24 MCRLF: DEFB CR,LF,'$' - - 873 ; New ZSDOS error handler - enter w/ error code in B and message pointer - 874 ; in DE - - 876 034C' 3A 005C' ERROR: LD A,(ERMODE) - 877 034F' 4F LD C,A ; Save error mode - ZMAC Relocating Macro Assembler v 1.7, page 23 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 878 0350' 0F RRCA ; Test supress print - 879 0351' 38 5C' JR C,ERROR3 ; Suppressed, so skip dsp - - 881 ; Print ZSDOS Error on X: Explanation - - 883 0353' C5 PUSH BC - 884 0354' D5 PUSH DE ; Save params - 885 0355' CD 02D2' CALL CROUT ; Output CR/LF - 886 0358' 11 0327' LD DE,MBERR - 887 035B' CD 02D5' CALL CMND09 ; Output ZSDOS error on - 888 035E' 3A 002B' LD A,(DEFDRV) ; Get current default drive - 889 0361' C6 41 ADD A,'A' ; Convert to ascii - 890 0363' CD 0264' CALL WRCON ; Output it to console - 891 0366' 11 033D' LD DE,MDRIVE ; Point to drive tag - 892 0369' CD 02D5' CALL CMND09 ; Put it also - 893 036C' D1 POP DE ; Restore error message pointer - 894 036D' CD 02D5' CALL CMND09 ; Send message - - 896 ; Now print CALL: XXX [FILE: XXXXXXXX.XXX] - - 898 0370' 11 0337' LD DE,MBFUNC - 899 0373' CD 02D5' CALL CMND09 ; Display 'call: ' - 900 0376' 3A 004B' LD A,(FUNCT) ; Get function number - 901 0379' CD 02DF' CALL PRDEC ; Output it - 902 037C' 3A 004E' LD A,(FLDRV) - 903 037F' A7 AND A ; Was FCB used? - 904 0380' 28 29' JR Z,ERROR2 ; ..Skip file name display if not - 905 0382' C1 POP BC - 906 0383' C5 PUSH BC ; Get error type - 907 0384' DDE5 PUSH IX ; Save FCB pointer - 908 0386' 3A 004B' LD A,(FUNCT) ; ARE WE ERASING A FILE? - 909 0389' FE 13 CP 19 ; IF SO, GET NAME FROM DIRBUF AS - 910 038B' 20 04' JR NZ,ERROR0 ; AMBIG NAME MAY HAVE BEEN USED - 911 038D' CD 06F1' CALL CALDIR ; Get DIR buffer pointer - 912 0390' E3 EX (SP),HL ; To show what we really gagged on - 913 0391' 11 0340' ERROR0: LD DE,MFILE - 914 0394' CD 02D5' CALL CMND09 ; Output 'file: ' - 915 0397' E1 POP HL ; Point to FCB - 916 0398' 06 0B LD B,11 ; Output this many chars - 917 039A' 23 ERROR1: INC HL - 918 039B' 3E 03 LD A,3 - 919 039D' B8 CP B ; Time to send '.'? - 920 039E' 3E 2E LD A,'.' ; Get ready for it - 921 03A0' CC 0154' CALL Z,PUTCH ; Send it if time - 922 03A3' 7E LD A,(HL) ; Get char - 923 03A4' E6 7F AND 7FH ; Mask attributes - 924 03A6' CD 0154' CALL PUTCH ; Output it - 925 03A9' 10 EF' DJNZ ERROR1 - 926 03AB' CD 02D2' ERROR2: CALL CROUT ; Send CR,LF - 927 03AE' C1 POP BC ; Get error mode back - 928 03AF' 3E 04 ERROR3: LD A,4 - 929 03B1' 90 SUB B ; Test if select error - 930 03B2' 20 0D' JR NZ,ERROR4 ; Skip if not - 931 03B4' 21 002C' ld hl,drive ; point to old default - 932 03B7' 7E ld a,(hl) ; get it - 933 03B8' 2B dec hl ; point to bad drive - ZMAC Relocating Macro Assembler v 1.7, page 24 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 934 03B9' BE cp (hl) ; same? - 935 03BA' 28 05' jr z,error4 ; if so, skip relog - 936 03BC' C5 PUSH BC - 937 03BD' CD 0581' CALL SELDK ; Get BIOS back in step - 938 03C0' C1 POP BC - 939 03C1' CB49 ERROR4: BIT 1,C ; Test if return error mode - 940 03C3' 20 18' JR NZ,ERROR7 ; Go if return error - 941 03C5' 3E 01 LD A,1 - 942 03C7' 90 SUB B ; Test if fatal error - 943 03C8' 30 05' JR NC,ERROR6 ; If not a fatal error - 944 03CA' AF ERROR5: XOR A - 945 03CB' 32 005C' LD (ERMODE),A ; Set DOS error mode to default CP/M - 946 03CE' C7 RST 0 ; ..and leave - - 948 03CF' CD 0171' ERROR6: CALL DCIO1 ; Get console char if present - 949 03D2' A7 AND A ; Test if any - 950 03D3' 20 FA' JR NZ,ERROR6 ; Keep getting them until typeahead eaten - 951 03D5' CD 0175' CALL GETCH ; Now get operator's response - 952 03D8' FE 03 CP CONTC ; Test if abort - 953 03DA' C0 RET NZ ; If operator said ignore error - 954 03DB' 18 ED' JR ERROR5 ; Else boot - - 956 03DD' 78 ERROR7: LD A,B ; Get error - 957 03DE' 67 LD H,A ; Save code in H reg for return - 958 03DF' A7 AND A ; Test if disk changed warning - 959 03E0' C8 RET Z ; Continue relog if so - 960 03E1' 2E FF LD L,0FFH ; Set extended error code - 961 03E3' 22 004C' LD (PEXIT),HL ; Save as return code - 962 ; ..and fall thru to DOS exit - ZMAC Relocating Macro Assembler v 1.7, page 25 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 964 ;****************************************************** - 965 ;* D O S E x i t R o u t i n e * - 966 ;****************************************************** - - 968 03E6' 3A 004E' DOSEXIT: LD A,(FLDRV) ; Test drive select used flag - 969 03E9' B7 OR A - 970 03EA' 28 0C' JR Z,DOSEXT0 ; No then exit - 971 03EC' 3A 002D' LD A,(FCB0) ; Get FCB byte 0 - 972 03EF' DD77 00 LD (IX+0),A ; Save it - 973 03F2' 3A 002C' LD A,(DRIVE) ; Get old drive number - 974 03F5' CD 0581' CALL SELDK ; Select disk - 975 IF PICKEY - 977 ENDIF - - 979 ; If the error handler was invoked, the stack is in an undefined - 980 ; condition at this point. We therefore have to restore the user's - 981 ; IX register independent of stack position. Thanks to Joe Wright's - 982 ; eagle eye for catching this one! - - 984 03F8' ED7B 0061' DOSEXT0: LD SP,(SPSAVE) ; Restore user stack - 985 03FC' DD2A 0099' LD IX,(IXSAVE) ; Restore IX (stack is don't care) - 986 0400' 2A 004C' LD HL,(PEXIT) ; Get exit code - 987 IF NOT PICKEY - 988 0403' ED5B 005F' LD DE,(DEVAL) ; And DE reg for DateStamper - 989 ENDIF - 990 0407' 7D LD A,L ; Copy function code - 991 0408' 44 LD B,H - 992 0409' C9 RET ; And return to caller - ZMAC Relocating Macro Assembler v 1.7, page 26 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 994 ;****************************************************** - 995 ;* D i s k F u n c t i o n s * - 996 ;****************************************************** - - 998 ; Reset Disk System - - 1000 040A' 21 0080 CMND13: LD HL,RAMLOW+0080H ; Set up DMA address - 1001 040D' 22 002E' LD (DMA),HL ; And save it - 1002 0410' CD 0837' CALL STDMA ; Do BIOS call - 1003 0413' AF XOR A ; Set default drive = 'A' - 1004 0414' 32 002B' LD (DEFDRV),A ; Save it - 1005 0417' 11 FFFF LD DE,0FFFFH ; Reset all drives - - 1007 ; Reset Multiple Login Drive - DE = Reset mask - 1008 ; Fixed Disk Login vector is also altered by this call - - 1010 041A' CD 045D' CMND37: CALL UNLOG ; Clear selected drives in DE from login - 1011 041D' 3A 0015' LD A,(FLAGS) - 1012 0420' CB57 BIT 2,A ; Test hard R/O enabled - 1013 0422' 20 06' JR NZ,UNWPT1 ; If enabled - 1014 0424' 21 0DFC' LD HL,DSKWP ; Get drive W/P vector - 1015 0427' CD 0466' CALL ANDDEM ; Reset W/P stat only of requested drvs - 1016 042A' 3A 004B' UNWPT1: LD A,(FUNCT) - 1017 042D' FE 0D CP 13 ; Skip hard disk login change? - 1018 042F' 21 0DFE' LD HL,HDLOG - 1019 0432' C4 0466' CALL NZ,ANDDEM ; Clear HD Login Vector if Fcn 37 - 1020 0435' RELOG1: - 1021 IF ZS - 1022 0435' 2A 0DFE' LD HL,(HDLOG) - 1023 0438' CD 0658' CALL HLORDE ; Don't clear fixed disks from T/D - 1024 043B' EB EX DE,HL ; Place modified logout in DE - 1025 043C' 21 0DF8' LD HL,TDFVCT - 1026 043F' CD 0466' CALL ANDDEM ; Clear T/D vector as needed - 1027 ENDIF - - 1029 0442' 3A 002B' LD A,(DEFDRV) ; Get default drive - 1030 0445' F5 PUSH AF - 1031 0446' RELOG2: - 1032 IF RESDSK ; (bh) - 1034 ELSE - 1035 0446' 00 00 00 DEFB 0,0,0 ; Make 3 NOP's to keep constant code (hfb) - 1036 ENDIF ; (bh) - 1037 0449' F1 POP AF - 1038 044A' CD 0581' CALL SELDK ; Select default drive - - 1040 ; ZSDOS watches for any $*.* in any user on any drive during re-log, - 1041 ; make, and delete. In this manner, SUBFLG will always be valid - - 1042 ; even under fast relog and NZCOM! Thanks to Joe Wright for suggesting - 1043 ; the need for this, and suggesting ways to do it. - - 1045 044D' 3A 0057' SUBEXT: LD A,(SUBFLG) ; Get submit flag - 1046 0450' 18 69' JR SAVEA ; Exit - - 1048 ; Check for possible existance of submit file by checking first - 1049 ; byte of dir entry or FCB for '$'. Pointer to dir or FCB passed - 1050 ; to routine in HL. - ZMAC Relocating Macro Assembler v 1.7, page 27 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - - 1052 0452' 23 CKSUB: INC HL ; Point to file name - 1053 0453' 7E LD A,(HL) ; Get first char filename - 1054 0454' 2B DEC HL - 1055 0455' D6 24 SUB '$' ; Test if '$' - 1056 0457' C0 RET NZ ; Not then exit - 1057 0458' 3D DEC A ; Load a with 0FFH - 1058 0459' 32 0057' LD (SUBFLG),A ; Save it in subflg - 1059 045C' C9 RET - - 1061 ; Unlog Drive mask in DE - - 1063 045D' 7B UNLOG: LD A,E ; Get LSB - 1064 045E' 2F CPL ; Complement it - 1065 045F' 5F LD E,A - 1066 0460' 7A LD A,D ; Get MSB - 1067 0461' 2F CPL ; Complement it - 1068 0462' 57 LD D,A ; DE = not reset - 1069 0463' 21 0DFA' LD HL,LOGIN ; Get addr of login vector - 1070 0466' 7B ANDDEM: LD A,E ; Clear login bits of reset drives - 1071 0467' A6 AND (HL) ; ..a byte at a time - 1072 0468' 77 LD (HL),A ; Put to memory - 1073 0469' 23 INC HL - 1074 046A' 7A LD A,D - 1075 046B' A6 AND (HL) - 1076 046C' 77 LD (HL),A - 1077 046D' C9 RET - - 1079 ; Search for File - - 1081 046E' CD 051F' CMND17: CALL SELDRV ; Select drive from FCB - 1082 0471' DD7E 00 LD A,(IX+0) - 1083 0474' D6 3F SUB '?' ; Test if '?' - 1084 0476' 28 0D' JR Z,CMD17B ; If so all entries match - 1085 0478' DD7E 0E LD A,(IX+FCBMOD) ; Get system byte - 1086 047B' FE 3F CP '?' ; Test if '?' - 1087 047D' 28 04' JR Z,CMD17A ; Yes, jump - 1088 047F' DD36 000E LD (IX+FCBMOD),0 ; Load system byte with Zero - 1089 0483' 3E 0F CMD17A: LD A,15 ; Test first 15 items in FCB - 1090 0485' CD 08F3' CMD17B: CALL SEARCH ; Do search - 1091 0488' 2A 0034' CMD17C: LD HL,(DIRBUF) ; Copy directory buffer - 1092 048B' 01 0080 LD BC,128 ; Directory=128 bytes - 1093 048E' ED5B 002E' MV2DMA: LD DE,(DMA) ; To DMA address - 1094 0492' EDB0 LDIR - 1095 0494' C9 RET ; Exit - - 1097 ; Search for Next Occurence of File - - 1099 0495' DD2A 0058' CMND18: LD IX,(DCOPY) ; Get last FCB used by search - 1100 0499' DD22 005D' LD (ARWORD),IX ; Save FCB pointer for BGii - 1101 049D' CD 051F' CALL SELDRV ; Select drive from FCB - 1102 04A0' CD 090A' CALL SEARCN ; Search next file match - 1103 04A3' 18 E3' JR CMD17C ; And copy directory to DMA address - - 1105 ; Delete File - - ZMAC Relocating Macro Assembler v 1.7, page 28 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 1107 04A5' CD 051F' CMND19: CALL SELDRV ; Select drive from FCB - 1108 04A8' CD 086D' CALL DELETE ; Delete file - 1109 04AB' 3A 005A' CMD19A: LD A,(SEAREX) ; Get exit byte 00=file found, 0FFH=Not - 1110 04AE' 18 0B' JR SAVEA ; And exit - - 1112 ; Rename File - - 1114 04B0' CD 051F' CMND23: CALL SELDRV ; Select drive from FCB - 1115 04B3' CD 09D7' CALL RENAM ; Rename file - 1116 04B6' 18 F3' JR CMD19A ; And exit - - 1118 ; Return Current Drive - - 1120 04B8' 3A 002B' CMND25: LD A,(DEFDRV) ; Get current drive - 1121 04BB' 32 004C' SAVEA: LD (PEXIT),A ; Return character - 1122 04BE' C9 DUMMY: RET ; ..and exit ZSDOS - - 1124 ; Set flags - - 1126 04BF' 32 0015' CMD101: LD (FLAGS),A ; Set ZSDOS flags - 1127 ; ..and fall thru - 1128 ; Get flags - - 1130 04C2' 3A 0015' CMD100: LD A,(FLAGS) ; Get ZSDOS flags - 1131 04C5' 18 F4' JR SAVEA ; ..and exit - - 1133 ; Change Status - - 1135 04C7' CD 051F' CMND30: CALL SELDRV ; Select drive from FCB - 1136 04CA' CD 0A02' CALL CSTAT ; Change status - 1137 04CD' 18 DC' JR CMD19A ; And exit - - 1139 ; Return CP/M Version Number - - 1141 04CF' ZDPCH1: - 1142 04CF' 21 0022 CMND12: LD HL,22H ; Set CP/M compatable version number - 1143 IF NOT ZS ; (crw) - 1152 ENDIF - 1153 IF NOT PICKEY - 1154 04D2' ED53 005F' LD (DEVAL),DE ; In case DS gave us a clock addr - 1155 ENDIF - 1156 04D6' 18 1B' JR SAVHL ; For speed - - 1158 ; Following commands return status in like manner and are consolidated here - 1159 ; in selected order with least-accessed commands taking longest to traverse - 1160 ; string, and frequently accessed/time critical exitting quickest. - - 1162 ; The code in this section is a bit obscure, as it depends on burying - 1163 ; instructions within other instructions. 6502 users have long used the - 1164 ; 'BIT' trick to skip instructions - this inspired me to see if similar - 1165 ; things could be done with the Z80. Indeed they can, as this demonstrates. - 1166 ; When the Z80 jumps in at a label, it executes the LD HL instruction. The - 1167 ; DEFB 0DDH turns the LD HL instructions that follow into LD IX. In effect, - 1168 ; this turns the DEFB 0DDH into a one byte relative jump to SAVHL. As IX - 1169 ; is never used by these calls, its loss is of no consequence. - 1170 ; A similar trick is used in SEAR15, resulting in a useless LD HL but - ZMAC Relocating Macro Assembler v 1.7, page 29 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 1171 ; saving a byte. - - 1173 ; New Universal Return Version FUNCTION 48 - - 1175 04D8' CMND48: - 1176 IF ZS - 1177 04D8' 21 5311 LD HL,'S' SHL 8 + VERS ;"S" indicates ZSDOS - ZRDOS returns 0 - 1180 ENDIF - 1181 04DB' DD DEFB 0DDH ; Trash IX and fall through - - 1183 ; Return Disk W/P Vector - - 1185 04DC' 2A 0DFC' CMND29: LD HL,(DSKWP) ; Get disk W/P vector - 1186 04DF' DD DEFB 0DDH ; Trash IX and fall through - - 1188 ; Return Fixed Disk Login Vector - - 1190 04E0' 2A 0DFE' CMND39: LD HL,(HDLOG) ; Return fixed disk login vector - 1191 04E3' DD DEFB 0DDH ; Trash IX and fall through - - 1193 ; Return ALV Vector - - 1195 04E4' 2A 003A' CMND27: LD HL,(ALV) ; Get allocation vector - 1196 04E7' DD DEFB 0DDH ; Trash IX and fall through - - 1198 ; Return Login Vector - - 1200 04E8' 2A 0DFA' CMND24: LD HL,(LOGIN) ; Get login vector - 1201 04EB' DD DEFB 0DDH ; Trash IX and fall through - - 1203 ; Return Drive Table - - 1205 04EC' 2A 0036' CMND31: LD HL,(IXP) ; Get drive table - 1206 04EF' DD DEFB 0DDH ; Trash IX and fall through - - 1208 ; Return Current DMA - - 1210 04F0' 2A 002E' CMND47: LD HL,(DMA) ; Return current DMA addr - 1211 04F3' 22 004C' SAVHL: LD (PEXIT),HL ; Save it - 1212 04F6' C9 RET ; And exit - - 1214 ; Set BDOS Error Mode - - 1216 04F7' 32 005C' CMND45: LD (ERMODE),A ; Save error mode - 1217 04FA' C9 RET ; And exit - - 1219 ; Set/Get User Code - - 1221 04FB' 21 002A' CMND32: LD HL,USER ; Point to user byte location - 1222 04FE' 3C INC A ; Test if 0FFH - 1223 04FF' 7E LD A,(HL) ; Get old user code - 1224 0500' 28 B9' JR Z,SAVEA ; If 0FFH then exit - 1225 0502' 7B LD A,E ; Get new user code - 1226 0503' E6 1F AND 01FH ; Mask it - 1227 0505' 77 LD (HL),A ; Save it - 1228 0506' C9 RET ; And exit - ZMAC Relocating Macro Assembler v 1.7, page 30 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - - 1230 ; Compute File Size Command - - 1232 0507' CD 052D' CMND35: CALL SELDR1 ; Select drive from FCB - 1233 050A' CD 0A2B' CALL FILSZ ; Compute file size - 1234 050D' 18 9C' JR CMD19A ; And exit - - 1236 ; Set Random Record Count - - 1238 050F' 21 0020 CMND36: LD HL,32 ; Set pointer to next record - 1239 0512' CD 0D7F' CALL CALRRC ; Calculate random record count - 1240 0515' DD72 21 LDRRC: LD (IX+33),D ; And save random record count - 1241 0518' DD71 22 LD (IX+34),C - 1242 051B' DD70 23 LD (IX+35),B - 1243 051E' C9 RET ; And exit - - 1245 ; Select Disk From FCB - - 1247 051F' BGSELDRV: - 1248 051F' 3A 005C' SELDRV: LD A,(ERMODE) ; Are we in modified user mode? - 1249 0522' A7 AND A - 1250 0523' 20 08' JR NZ,SELDR1 ; Jump if so, else.. - 1251 0525' 2A 005D' LD HL,(ARWORD) ; - 1252 0528' 01 000D LD BC,FCBUSR ; Point to user number - 1253 052B' 09 ADD HL,BC ; - 1254 052C' 77 LD (HL),A ; Clear user flag - 1255 052D' 3E FF SELDR1: LD A,0FFH ; Set disk select done flag - 1256 052F' 32 004E' LD (FLDRV),A - 1257 0532' 3A 002B' LD A,(DEFDRV) ; Get current drive - 1258 0535' 5F LD E,A ; Save it in register E - 1259 0536' 2A 005D' LD HL,(ARWORD) - 1260 0539' 7E LD A,(HL) ; Get drive from FCB - 1261 053A' 32 002D' LD (FCB0),A ; Save it - 1262 053D' FE 3F CP '?' ; Test if '?' - 1263 053F' 28 39' JR Z,CMND14 ; Yes, then select drive from register E - 1264 0541' DDE5 PUSH IX ; Save BGii's IX register - 1265 ; IX won't be altered on cmnd14 - 1266 0543' DD2A 005D' LD IX,(ARWORD) ; Get FCB pointer - 1267 ;1.1a Changed to allow proper access to Drive P: - 1268 ;1.2a AND 0FH ; Mask drive - 1269 0547' E6 1F AND 1FH ;1.2a Mask Drive - 1270 0549' E5 PUSH HL - 1271 054A' 28 02' JR Z,SELDR0 ; Select drive from register E - 1272 054C' 5E LD E,(HL) ; Get drive from FCB - 1273 054D' 1D DEC E ; Decrement drive number so A=0 - 1274 054E' CD 057A' SELDR0: CALL CMND14 ; - do select of drive - 1275 0551' E1 POP HL ; Restore FCB pointer - - 1277 ; Resolve User for FCB - FCBPTR in IX, Returns User in A - - 1279 0552' DD7E 0D LD A,(IX+FCBUSR) ; ..get potential user in case - 1280 0555' CB7F BIT 7,A ; Is this a valid user? - 1281 0557' 20 07' JR NZ,RESUS1 ; Skip if there is - 1282 0559' 3A 002A' LD A,(USER) ; Get user number - 1283 055C' 18 02' JR RESUS1 ; ..and bypass push IX - - ZMAC Relocating Macro Assembler v 1.7, page 31 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 1285 ; Set User in FCB to Value passed in A - - 1287 055E' DDE5 RESUSR: PUSH IX ; Preserve IX - 1288 0560' DD2A 005D' RESUS1: LD IX,(ARWORD) - 1289 0564' E6 1F AND 1FH ; User number in A - 1290 0566' DD77 00 LD (IX+0),A ; Save in FCB 0 byte - 1291 0569' F6 80 OR 80H ; Set valid DOS user flag - 1292 056B' DD77 0D LD (IX+FCBUSR),A ; ..and in FCB 13 byte - 1293 056E' DDE1 POP IX ; Restore caller's IX - 1294 0570' C9 RET - - 1296 ; Select Disk Error Exit - The stack is off by one level here, but - 1297 ; this is a one way trip anyway. - - 1299 0571' 2A 000B' SELDK3: LD HL,(STSEL) ; Load error message address - 1300 0574' 06 04 LD B,4 ; Select error - 1301 0576' 11 0315' LD DE,MSEL ; Load select error message - 1302 0579' E9 JP (HL) ; And display error - - 1304 ; Select Disk from E register - - 1306 057A' 3A 002B' CMND14: LD A,(DEFDRV) ; Get current drive - 1307 057D' 32 002C' LD (DRIVE),A ; Save it in memory - 1308 0580' 7B LD A,E ; Copy drive number - - 1310 ; Select Disk - 1311 ; Call w/ A = Drive Number (0..15 = A..P) - - 1313 0581' 2A 0DFA' SELDK: LD HL,(LOGIN) ; Get login vector - 1314 0584' E6 0F AND 0FH ; Mask drive number - 1315 0586' 47 LD B,A ; Save counter - 1316 0587' C4 0661' CALL NZ,SHRHLB ; ..and rotate into position - 1317 058A' EB SELDK0: EX DE,HL ; Put drive bit mask in DE - 1318 058B' 21 002B' LD HL,DEFDRV ; Get pointer last drive - 1319 058E' CB43 BIT 0,E ; Test if drive logged in - 1320 0590' 28 02' JR Z,SELDK2 ; No, login drive - 1321 0592' BE CP (HL) ; Test same drive - 1322 0593' C8 RET Z ; Yes then exit - - 1324 ; NOTE: A long standing DOS bug concerns the SELECT function. If a - 1325 ; function 14 call is made and the drive doesn't exist, the default - 1326 ; will still point to the bad drive unless we fix it in the error - 1327 ; routine. It is for this reason that drive is saved above. We must - 1328 ; allow default to assume the illegal drive value long enough for the - 1329 ; error handler to print it, then re-select the old default. - - 1331 0594' 77 SELDK2: LD (HL),A ; Save new current drive - 1332 0595' D5 PUSH DE ; Save drive logged in flag - 1333 0596' 4F LD C,A ; Copy drive number - 1334 0597' CD 001B* CALL SELDSK ; Do BIOS select - 1335 059A' 7C LD A,H ; Test if error - 1336 059B' B5 OR L - 1337 059C' 28 D3' JR Z,SELDK3 ; Yes, illegal drive number - 1338 059E' 11 0030' LD DE,TRANS ; Point to local translation store - 1339 05A1' 01 0002 LD BC,2 ; ..and move 2-byte ptr in - 1340 05A4' EDB0 LDIR - ZMAC Relocating Macro Assembler v 1.7, page 32 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 1341 05A6' 22 0032' LD (TEMP0),HL ; Save address temp0 - 1342 05A9' 0E 06 LD C,6 ; Advance to dirbuf part of DPH - 1343 05AB' 09 ADD HL,BC ; As TEMP1 and TEMP2 unused in P?DOS - 1344 05AC' 11 0034' LD DE,DIRBUF ; Load DIRBUF pointer - 1345 05AF' 0E 08 LD C,8 ; Copy 8 bytes - 1346 05B1' EDB0 LDIR - 1347 05B3' 2A 0036' LD HL,(IXP) ; Get drive parameter address - 1348 05B6' 0E 0F LD C,15 ; Copy 15 bytes - 1349 05B8' EDB0 LDIR - 1350 05BA' D1 POP DE ; Get drive logged in flag - 1351 05BB' CB43 BIT 0,E ; Test it - 1352 05BD' C0 RET NZ ; Drive logged in so return - 1353 05BE' CD 0647' CALL GETCDM - 1354 05C1' EB EX DE,HL ; Drive mask in DE - 1355 05C2' 2A 0DFA' LD HL,(LOGIN) ; Get login vector - 1356 05C5' CD 0658' CALL HLORDE ; Set drive bit in login vector - 1357 05C8' 22 0DFA' LD (LOGIN),HL ; Save login vector - 1358 05CB' 3A 0015' LD A,(FLAGS) ; Get flags - 1359 05CE' CB5F BIT 3,A ; Fast relog enabled? - 1360 05D0' 28 2A' JR Z,INITDR ; Skip if disabled - - 1362 ; The following code checks the WACD size to determine if the drive - 1363 ; being selected is a fixed disk. If the WACD size is 0, the disk - 1364 ; is Non-Removable. However, several BIOSes support remapping of - 1365 ; logical drives. This complicates matters because BDOS must catch - 1366 ; the swap and clear the Hard Disk Allocation Vector and allow the - 1367 ; allocation bitmaps to be rebuilt. Thus, every disk that is being - 1368 ; selected for the first time traverses this code. If a disk was - 1369 ; logged as a fixed disk and all of the sudden has a WACD buffer, - 1370 ; the Fixed Disk Login Vector is cleared. Thus, for Bug-free - 1371 ; operation of Fast Fixed Disk Logging, if drives are swapped - 1372 ; NEVER SWAP TWO FIXED DRIVES! - - 1374 05D2' 2A 0047' LD HL,(NCHECK) ; Is this a fixed drive? - 1375 05D5' 7C LD A,H - 1376 05D6' B5 OR L - 1377 05D7' 4F LD C,A ; Save fixed disk flag (Z=true) - 1378 05D8' 2A 0DFE' LD HL,(HDLOG) - 1379 05DB' 7B LD A,E ; See if logged as fixed disk - 1380 05DC' A5 AND L - 1381 05DD' 6F LD L,A - 1382 05DE' 7A LD A,D - 1383 05DF' A4 AND H ; MSB - 1384 05E0' B5 OR L ; Z flag set if HL and DE = 0 - 1385 05E1' 3E FF LD A,0FFH ; Don't alter flags - 1386 05E3' 28 01' JR Z,SELDK4 ; If not logged as fixed disk - 1387 05E5' 3C INC A ; Else flag as logged - 1388 05E6' 47 SELDK4: LD B,A ; Save logged as fixed disk flag (Z=true) - 1389 05E7' B1 OR C ; Test if still fixed disk - 1390 05E8' C8 RET Z ; Skip re-map if logged and not swapped - 1391 05E9' AF XOR A - 1392 05EA' 67 LD H,A - 1393 05EB' 6F LD L,A ; Null vector - 1394 05EC' B0 OR B ; Was it logged as a fixed disk? - 1395 05ED' 28 0A' JR Z,SELDK5 ; Invalidate HDLOG vector - drive no longer - 1396 ; Fixed disk - ZMAC Relocating Macro Assembler v 1.7, page 33 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 1397 05EF' 79 LD A,C - 1398 05F0' B7 OR A ; Wasn't fixed disk before - is it now? - 1399 05F1' 20 09' JR NZ,INITDR ; Skip vector update if it isn't - 1400 05F3' 2A 0DFE' LD HL,(HDLOG) - 1401 05F6' CD 0658' CALL HLORDE ; Else add this drive to fixed disk vector - 1402 05F9' 22 0DFE' SELDK5: LD (HDLOG),HL ; Update fixed disk vector - 1403 ;..fall thru to INITDR - - 1405 ; Init Drive - 1406 ; Clear ALV Bit Buffer after Drive reset - - 1408 05FC' 2A 0041' INITDR: LD HL,(MAXLEN) ; Get length ALV buffer-1 (bits) - 1409 05FF' CD 065F' CALL SHRHL3 ; Divide by 8 to get bytes - 1410 0602' 44 LD B,H - 1411 0603' 4D LD C,L ; Counter to BC (will be count+1 cleared) - 1412 0604' 2A 003A' LD HL,(ALV) ; Get pointer ALV buffer - 1413 0607' E5 PUSH HL - 1414 0608' 54 LD D,H - 1415 0609' 5D LD E,L - 1416 060A' 13 INC DE ; ALV buffer +1 in DE - 1417 060B' AF XOR A - 1418 060C' 77 LD (HL),A ; Clear first 8 bits - 1419 060D' EDB0 LDIR ; And remainder of buffer - 1420 060F' E1 POP HL ; Get ALV pointer - 1421 0610' ED5B 0045' LD DE,(NDIR0) ; Get first two bytes ALV buffer - 1422 0614' 73 LD (HL),E ; Save LSB - 1423 0615' 23 INC HL ; Increment pointer - 1424 0616' 72 LD (HL),D ; Save MSB - 1425 0617' 2A 0032' LD HL,(TEMP0) ; Clear number of files on this drive - 1426 061A' 77 LD (HL),A ; Clear LSB (A still has 0) - 1427 061B' 23 INC HL ; Increment pointer - 1428 061C' 77 LD (HL),A ; Clear MSB - - 1430 = 061D' ZDPCH2 EQU $ ;<-- Intercept first scan (ZDS Patch) - 1431 061D' CD 06FC' CALL SETFCT ; Set file count - 1432 0620' 3E FF INITD2: LD A,0FFH ; Update directory checksum - 1433 0622' CD 0730' CALL RDDIR ; Read FCB's from directory - 1434 0625' CD 071C' CALL TSTFCT ; Test last FCB - 1435 0628' CA 044D' JP Z,SUBEXT ; Return subflg for strict CP/M compat (hfb) - 1436 062B' CD 06F1' CALL CALDIR ; Calculate entry point FCB - 1437 062E' 7E LD A,(HL) ; Get first byte FCB - 1438 062F' FE E5 CP 0E5H ; Test empty directory entry - 1439 0631' 28 ED' JR Z,INITD2 ; Yes then get next FCB - 1440 0633' FE 21 CP 021H ; Test time stamp - 1441 0635' 28 E9' JR Z,INITD2 ; Yes then get next FCB - - 1443 = 0637' ZDPCH3 EQU $ ;<-- Test for T&D if first time (ZDS Patch) - 1444 0637' CD 0452' CALL CKSUB ; Test for submit file - 1445 063A' 0E 01 LD C,1 ; Set bit in ALV buffer - 1446 063C' CD 0883' CALL FILLBB ; Set bits from FCB in ALV buffer - 1447 063F' CD 0723' CALL TSTLF ; Test for last file - 1448 0642' D4 0714' CALL NC,SETLF0 ; ..and update the last file count if so - 1449 0645' 18 D9' JR INITD2 ; And get next FCB - - 1451 ; Return Mask for Current Drive in HL - - ZMAC Relocating Macro Assembler v 1.7, page 34 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 1453 0647' 21 0000 GETCDM: LD HL,0 ; No drives to Or - - 1455 ; Set Drive bit in HL - - 1457 064A' EB SDRVB: EX DE,HL ; Copy HL=>DE - 1458 064B' 21 0001 LD HL,1 ; Get mask drive "A" - 1459 064E' 3A 002B' LD A,(DEFDRV) ; Get current drive - 1460 0651' B7 OR A ; Test if drive "A" - 1461 0652' 28 04' JR Z,HLORDE ; Yes then done - 1462 0654' 29 SDRVB0: ADD HL,HL ; Get next mask - 1463 0655' 3D DEC A ; Decrement drive counter - 1464 0656' 20 FC' JR NZ,SDRVB0 ; And test if done - 1465 0658' 7A HLORDE: LD A,D ; HL=HL or DE - 1466 0659' B4 OR H - 1467 065A' 67 LD H,A - 1468 065B' 7B LD A,E - 1469 065C' B5 OR L - 1470 065D' 6F LD L,A - 1471 065E' C9 RET ; Exit - - 1473 065F' 06 03 SHRHL3: LD B,3 ; Used in a few places - - 1475 ; Shift HL right logical B bits - - 1477 0661' CB3C SHRHLB: SRL H - 1478 0663' CB1D RR L ; Shift HL right one bit (divide by 2) - 1479 0665' 10 FA' DJNZ SHRHLB - 1480 0667' C9 RET - - 1482 ; Calculate Sector/Track Directory - - 1484 0668' 2A 0054' STDIR: LD HL,(FILCNT) ; Get FCB counter directory - 1485 IF UNROLL - 1486 066B' CB3C SRL H - 1487 066D' CB1D RR L - 1488 066F' CB3C SRL H ; (net cost: 3) - 1489 0671' CB1D RR L ; Divide by 4 (inline for speed) - 1493 ENDIF - 1494 0673' 22 0052' LD (RECDIR),HL ; Save value (used by checksum) - 1495 0676' EB STDIR2: EX DE,HL ; Copy it to DE - 1496 0677' 21 0000 STDIR1: LD HL,0 ; Clear HL - - 1498 ; Calculate Sector/Track - 1499 ; Entry: HL,DE=Sector Number (128 byte sector) - 1500 ; Result Set Track =HL,DE / MAXSEC - 1501 ; Set Sector =HL,DE MOD MAXSEC - - 1503 067A' ED4B 003C' CALST: LD BC,(MAXSEC) ; Get sectors/track - 1504 067E' 3E 11 LD A,17 ; Set up loop counter - 1505 0680' B7 CALST0: OR A - 1506 0681' ED42 SBC HL,BC ; HL > BC? - 1507 0683' 3F CCF - 1508 0684' 38 02' JR C,CALST1 ; Yes then jump - 1509 0686' 09 ADD HL,BC ; No then restore HL - 1510 0687' B7 OR A ; Clear Carry - 1511 0688' CB13 CALST1: RL E ; Shift result in DE - ZMAC Relocating Macro Assembler v 1.7, page 35 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 1512 068A' CB12 RL D - 1513 068C' 3D DEC A ; Test last bit done - 1514 068D' 28 04' JR Z,CALST2 ; Yes then exit - 1515 068F' ED6A ADC HL,HL ; Shift next bit in HL - 1516 0691' 18 ED' JR CALST0 ; Continue - - 1518 0693' E5 CALST2: PUSH HL ; Save sector number - 1519 0694' 2A 0049' LD HL,(NFTRK) ; Get first track - 1520 0697' 19 ADD HL,DE ; Add track number - 1521 0698' 44 LD B,H ; Copy it to BC - 1522 0699' 4D LD C,L - 1523 069A' CD 001E* CALL SETTRK ; CBIOS call Set Track - 1524 069D' C1 POP BC ; Restore sector number - 1525 069E' ED5B 0030' LD DE,(TRANS) ; Get translation table address - 1526 06A2' CD 0030* CALL SECTRN ; CBIOS call sector translation - 1527 06A5' 44 LD B,H ; Copy result to BC - 1528 06A6' 4D LD C,L - 1529 06A7' C3 0021* JP SETSEC ; BIOS call Set Sector - - 1531 ; Get Disk Map Block Number from FCB (Squeezed by Joe Wright) - 1532 ; Exit HL=Address FCB - 1533 ; DE=DM - 1534 ; BC=Offset in DM - 1535 ; Zero Flag Set (Z) if DM=0, Else reset (NZ) - - 1537 06AA' DD6E 20 GETDM: LD L,(IX+NXTREC) ; Get record number in L - 1538 06AD' CB15 RL L ; Shift it left once - 1539 06AF' 3A 0040' LD A,(NEXTND) ; Get EXM - 1540 06B2' DDA6 0C AND (IX+FCBEXT) ; And the extent number - 1541 06B5' 67 LD H,A ; To H - 1542 06B6' 3A 003E' LD A,(NBLOCK) ; Get BSH - 1543 06B9' 47 LD B,A ; To B - 1544 06BA' 04 INC B ; +1 - 1545 06BB' CD 0661' CALL SHRHLB ; Shift HL right B times - 1546 06BE' 50 LD D,B ; Zero to D - 1547 06BF' 7D LD A,L ; Result to A - - 1549 06C0' 2A 005D' GETDM4: LD HL,(ARWORD) - 1550 06C3' 0E 10 LD C,16 ; Add offset 16 to point to DM - 1551 06C5' 09 ADD HL,BC - 1552 06C6' 4F LD C,A ; Add entry FCB - 1553 06C7' 09 ADD HL,BC - 1554 06C8' 3A 0042' LD A,(MAXLEN+1) ; Test 8 bits/16 bits FCB entry - 1555 06CB' B7 OR A - 1556 06CC' 5E LD E,(HL) ; Get 8 bit value - 1557 06CD' 28 05' JR Z,GETDMX ; ..and exit if 8-bit entries - - 1559 06CF' 09 ADD HL,BC ; Add twice (16 bit values) - 1560 06D0' 5E LD E,(HL) ; Get LSB - 1561 06D1' 23 INC HL ; Increment pointer - 1562 06D2' 56 LD D,(HL) ; Get MSB - 1563 06D3' 2B DEC HL ; Decrement pointer - 1564 06D4' 7A GETDMX: LD A,D ; Check for zero DM value - 1565 06D5' B3 OR E - 1566 06D6' C9 RET ; And exit - - ZMAC Relocating Macro Assembler v 1.7, page 36 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 1568 ; Calculate Sector Number - 1569 ; Entry: DE=Block Number from FCB - - 1571 06D7' 21 0000 CALSEC: LD HL,0 ; Clear MSB sector number - 1572 06DA' 3A 003E' LD A,(NBLOCK) ; Get loop counter - 1573 06DD' 47 LD B,A ; Save it in B - 1574 06DE' EB EX DE,HL - 1575 06DF' 29 CALSC0: ADD HL,HL ; Shift L,D,E - 1576 06E0' CB13 RL E - 1577 06E2' 10 FB' DJNZ CALSC0 ; B times - 1578 06E4' EB EX DE,HL - 1579 06E5' 3A 003F' LD A,(NMASK) ; Get sector mask - 1580 06E8' DDA6 20 AND (IX+NXTREC) ; And with next record - 1581 06EB' B3 OR E ; Set up LSB sector number - 1582 06EC' 5F LD E,A - 1583 06ED' C9 RET ; And exit - - 1585 ; Check for File Read-Only status, then fall thru to CALDIR - - 1587 06EE' CD 08AC' CKRODI: CALL CHKFRO ; Abort if the file is R/O - 1588 ; ..fall thru.. - - 1590 ; Calculate DIRBUF Entry Point - - 1592 06F1' 3A 0056' CALDIR: LD A,(SECPNT) ; Get sector pointer - 1593 06F4' CALDIR1: ; New label for DS (crw) - 1594 06F4' 2A 0034' LD HL,(DIRBUF) ; Get start address dirbuf - 1595 06F7' 85 CALDI0: ADD A,L ; Add L=L+A - 1596 06F8' 6F LD L,A - 1597 06F9' D0 RET NC ; No carry exit - 1598 06FA' 24 INC H ; Increment H - 1599 06FB' C9 RET ; And exit - - 1601 ; Init File Count - - 1603 06FC' 21 FFFF SETFCT: LD HL,-1 ; Set up file count - 1604 06FF' 22 0054' LD (FILCNT),HL ; Save it - 1605 0702' C9 RET ; And exit - - 1607 ; Set Write Protect Disk Command (relocated & compressed hfb) - - 1609 0703' CMND28: ; Set read only disk - 1610 0703' 2A 0DFC' LD HL,(DSKWP) ; Get disk W/P vector - 1611 0706' CD 064A' CALL SDRVB ; Include drive bit - 1612 0709' 22 0DFC' LD (DSKWP),HL ; Save disk W/P vector - 1613 070C' ED5B 0043' LD DE,(NFILES) ; Get max number of files-1 (bumped below) - 1614 0710' 2A 0032' LD HL,(TEMP0) ; Get pointer to disk parameter block - 1615 0713' 23 INC HL ; Correct pointer.. - 1616 ; Setlf0 relocated in-line here (hfb) - 1617 0714' 13 SETLF0: INC DE ; Increment last file - 1618 0715' 72 LD (HL),D ; Save it in TEMP0 - 1619 0716' 2B DEC HL - 1620 0717' 73 LD (HL),E - 1621 0718' C9 RET ; And exit - - 1623 ; Search using first 15 bytes of FCB, test if found - ZMAC Relocating Macro Assembler v 1.7, page 37 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - - 1625 0719' CD 08F1' SRCT15: CALL SEAR15 ; Search on 15-bytes..(consolidated-hfb) - 1626 ; ..fall thru to test presence.. - 1627 ; Test File Count - - 1629 071C' 2A 0054' TSTFCT: LD HL,(FILCNT) ; Test file count=0FFFFH - 1630 071F' 7C LD A,H ; Get MSB - 1631 0720' A5 AND L ; And LSB - 1632 0721' 3C INC A ; Test if result=0FFH - 1633 0722' C9 RET ; And exit - - 1635 ; Test Last File - - 1637 0723' 2A 0032' TSTLF: LD HL,(TEMP0) ; Get pointer to last file - 1638 0726' ED5B 0054' LD DE,(FILCNT) ; Get file counter - 1639 072A' 7B LD A,E ; Subtract DE-(HL) - 1640 072B' 96 SUB (HL) - 1641 072C' 23 INC HL - 1642 072D' 7A LD A,D - 1643 072E' 9E SBC A,(HL) - 1644 072F' C9 RET ; Exit - - 1646 ; Get Next FCB from Drive - 1647 ; Entry A=0 Check Checksum, A=0FFH Update Checksum - - 1649 0730' 4F RDDIR: LD C,A ; Save checksum flag - 1650 0731' 2A 0054' LD HL,(FILCNT) ; Get file counter - 1651 0734' 23 INC HL ; Increment it - 1652 0735' 22 0054' LD (FILCNT),HL ; And save it - 1653 0738' ED5B 0043' LD DE,(NFILES) ; Get maximum number of files - 1654 073C' 7B LD A,E ; Is this the last file? - 1655 073D' 95 SUB L - 1656 073E' 7A LD A,D - 1657 073F' 9C SBC A,H - 1658 0740' 38 BA' JR C,SETFCT ; ..set file count to 0FFFFH if so - 1659 0742' 7D LD A,L ; Get file count LSB - 1660 0743' 0F RRCA ; *32 (bm/hfb-to save a byte) - 1661 0744' 0F RRCA - 1662 0745' 0F RRCA - 1663 0746' E6 60 AND 060H ; Mask it - 1664 0748' 32 0056' LD (SECPNT),A ; Save it for later use - 1665 074B' C0 RET NZ ; Return if not first FCB sector - 1666 074C' C5 PUSH BC ; Save checksum flag - 1667 IF NOT ZSDOS11 ; (* This was NOT in released package *) - 1670 IF ZS - 1679 ENDIF ;~Zsdos11 - 1680 074D' CD 0668' RdDir0: CALL STDIR ; Calculate sector/track directory - 1681 IF NOT ZS - 1700 ELSE - 1701 ; READDR subroutine moved in-line here - 1702 0750' CD 083D' CALL DMADIR ; Set up DMA directory - 1703 0753' CD 0795' CALL READR ; Read a record - 1704 0756' CD 0837' CALL STDMA ; ..and set up user's DMA - 1705 ENDIF - 1706 0759' C1 POP BC ; Restore checksum flag - - ZMAC Relocating Macro Assembler v 1.7, page 38 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 1708 ; Update/Check Checksum Directory - 1709 ; Entry C=0 Check Checksum, C=0FFH update Checksum - - 1711 075A' 2A 0047' CHKDIR: LD HL,(NCHECK) ; Get number of checked records - 1712 075D' ED5B 0052' LD DE,(RECDIR) ; Get current record - 1713 0761' AF XOR A ; Clear carry (bm) - 1714 0762' ED52 SBC HL,DE ; Test current record - 1715 0764' C8 RET Z ; Exit if zero - 1716 0765' D8 RET C ; Exit if greater than ncheck - 1717 0766' 2A 0034' LD HL,(DIRBUF) ; Get dirbuf - 1718 0769' CD 0DE0' CALL CKS127 ; ..and checksum first 127 bytes.. - 1719 076C' 86 ADD A,(HL) ; ...then 128th byte (hfb) - 1720 076D' 2A 0038' LD HL,(CSV) ; Get pointer checksum directory - 1721 0770' 19 ADD HL,DE ; Add current record - 1722 0771' 0C INC C ; Test checksum flag - 1723 0772' 20 02' JR NZ,CHKDR1 ; 0FFH=> update checksum - 1724 0774' 77 LD (HL),A ; Update checksum - 1725 0775' C9 RET ; And exit - - 1727 0776' BE CHKDR1: CP (HL) ; Test checksum - 1728 0777' C8 RET Z ; Exit if ok - - 1730 ; Checksum differs, So Disk has changed. Relog it and continue - - 1732 0778' 3A 0015' LD A,(FLAGS) - 1733 077B' CB67 BIT 4,A ; Inform user? - 1734 077D' 06 00 LD B,0 ; Disk change error code - 1735 077F' 11 0302' LD DE,MDSKCH ; Disk changed message - 1736 0782' C4 034C' CALL NZ,ERROR ; Inform user - - 1738 ; Relog Current Drive after media change detected - - 1740 0785' CD 0647' CALL GETCDM ; Get current drive mask in HL - 1741 0788' EB EX DE,HL ; Xfer mask to DE - 1742 0789' CD 045D' CALL UNLOG ; Reset login vector for logged drive - 1743 078C' CD 0435' CALL RELOG1 ; Do the meat of relogging - 1744 ; Caveat emptor: this call is recursive... - 1745 078F' CD 06FC' CALL SETFCT ; Re-initialize search file count - 1746 0792' AF XOR A ; We only get here by checking.. (bm) - 1747 0793' 18 9B' JR RDDIR ; And all checking is done from rddir - - 1749 ; Read Sector from Drive - - 1751 0795' CD 0027* READR: CALL READ ; CBIOS call read sector - 1752 0798' 18 03' JR WRITE0 - - 1754 ; Write Sector on Drive - - 1756 079A' CD 002A* WRITER: CALL WRITE ; CBIOS call write sector - 1757 079D' B7 WRITE0: OR A ; Test exit code - 1758 079E' C8 RET Z ; Exit if ok - 1759 079F' 06 01 LD B,1 ; Disk I/O error code - 1760 07A1' 11 030A' LD DE,MBADSC ; Load bad sector message - 1761 07A4' 2A 0009' LD HL,(STBDSC) ; Load bad sector vector - 1762 07A7' E9 JP (HL) ; ZSDOS error on D: Bad Sector - - ZMAC Relocating Macro Assembler v 1.7, page 39 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 1764 ; Close File Command (relocated hfb) - - 1766 = 07A9' BGPTCH2 EQU $+1 ;<-- BGii patch point - - 1768 07A8' CD 052D' CMND16: CALL SELDR1 ; Select drive from FCB - - 1770 ; Close File - - 1772 07AB' DDCB 0E7E CLOSE: BIT 7,(IX+FCBMOD) ; Test FCB/file modified - 1773 07AF' C0 RET NZ ; Not then no close required - 1774 07B0' CD 08D8' CALL CHKRO ; Test disk W/P - 1775 07B3' CD 0719' CALL SRCT15 ; Search file and test present - 1776 07B6' C8 RET Z ; No then exit with error - 1777 07B7' CD 06EE' CALL CKRODI ; Check file W/P, get directory entry - 1778 07BA' 01 0010 LD BC,16 ; Offset to DM block - 1779 07BD' 09 ADD HL,BC ; Add offset - 1780 07BE' EB EX DE,HL ; Save DIR PTR in DE - 1781 07BF' 2A 005D' LD HL,(ARWORD) ; Get FCB ptr - 1782 07C2' 09 ADD HL,BC ; Add offset - 1783 07C3' EB EX DE,HL - 1784 07C4' 41 LD B,C ; Xfer counter - - 1786 ; Copy FCB (DE) to DIR (HL) if and only if DIR=0 or DIR=FCB - - 1788 07C5' 34 CLOSE0: INC (HL) - 1789 07C6' 35 DEC (HL) ; Test DIR for 0 - 1790 07C7' 1A LD A,(DE) ; Get byte from FCB - 1791 07C8' 28 04' JR Z,CLOSE1 ; OK to Copy if 0 - 1792 07CA' BE CP (HL) ; Test if same as DIR - 1793 07CB' C2 0B7A' JP NZ,RETCFF ; ..if Not, abort Close and return error - 1794 07CE' 77 CLOSE1: LD (HL),A ; Else save in DIR - 1795 07CF' 13 INC DE - 1796 07D0' 23 INC HL - 1797 07D1' 10 F2' DJNZ CLOSE0 ; Bump pointers and loop until done - 1798 07D3' 11 FFEC LD DE,-20 ; Add -20 to get Extent Number from DIR - 1799 07D6' 19 ADD HL,DE ; HL contains pointer to extent number - 1800 07D7' DD7E 0C LD A,(IX+FCBEXT) ; Get extent number FCB - 1801 07DA' BE CP (HL) ; Compare with extent number directory - 1802 07DB' 38 08' JR C,CLOSE3 ; FCB < directory then jump - 1803 07DD' 77 LD (HL),A ; Save extent number in directory - 1804 07DE' 23 INC HL ; Get pointer to next record - 1805 07DF' 23 INC HL - 1806 07E0' 23 INC HL - 1807 07E1' DD7E 0F LD A,(IX+FCBREC) ; Get next record FCB - 1808 07E4' 77 LD (HL),A ; Save next record in directory - 1809 07E5' CD 0808' CLOSE3: CALL CLOSE6 ; Clear Archive Bit and Write FCB - 1810 07E8' CD 0BA6' CALL GETDME ; Get Data Module and Extent - 1811 IF NOT ZSDOS11 ; (* NOT in Release version *) - 1814 ELSE ;Zsdos11 (* This was Release version *) - 1815 07EB' 28 0D' JR Z,CLOSE4 ; ..jump to Stamp if they are both 0 - 1816 07ED' C5 PUSH BC ; Save prior module and Extent - 1817 ENDIF ;~Zsdos11 - 1818 07EE' 01 0000 LD BC,0 - 1819 07F1' CD 0B9E' CALL SETDME ; Set FCB Data Module and Extent to 0 - 1820 07F4' CD 0719' CALL SRCT15 ; Find proper DIR Entry - 1821 IF NOT ZSDOS11 - ZMAC Relocating Macro Assembler v 1.7, page 40 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 1824 ELSE ;Zsdos11 - 1825 07F7' C1 POP BC - 1826 07F8' 28 0B' JR Z,JSETDME ; ..Exit if Extent 0 Not Found - 1827 07FA' C5 CLOSE4: PUSH BC - 1828 ENDIF ;~Zsdos11 - 1829 07FB' CD 0808' CALL CLOSE6 ; Clear Archive Bit and Write FCB - 1830 07FE' 2A 001C' LD HL,(STUPDV) ; Get the update routine address - 1831 IF ZS - 1832 0801' CD 0DB9' CALL STAMPT ; ..and stamp it - 1836 ENDIF ;ZS - 1837 IF NOT ZSDOS11 - 1840 ELSE ;Zsdos11 - 1841 0804' C1 POP BC ; Get Original Module and Extent Back - 1842 0805' JSETDME: - 1843 ENDIF ;~Zsdos11 - 1844 0805' C3 0B9E' JP SETDME ; Restore to FCB and Exit - - 1846 0808' CD 06F1' CLOSE6: CALL CALDIR ; Get directory entry - 1847 080B' 01 000B LD BC,11 ; Point to archive byte - 1848 080E' 09 ADD HL,BC - 1849 080F' CBBE RES 7,(HL) ; Reset archive bit - 1850 0811' DDCB 0BBE RES 7,(IX+ARCATT) ; Reset bit in FCB - 1851 IF ZSDOS11 - 1852 0815' 18 00' JR WRFCB ; Write FCB to Disk - - 1854 IF NOT ZS - 1858 ENDIF ;NOT Zs - 1859 ENDIF ;Zsdos11 - - 1861 0817' CD 06F1' WRFCB: CALL CALDIR ; Point to dir entry to write - 1862 081A' 3E 0D LD A,FCBUSR ; Offset to user byte in FCB - 1863 081C' CD 06F7' CALL CALDI0 ; ..do the add here - 1864 081F' 36 00 LD (HL),0 ; Prevent writing it to disk - 1865 0821' CD 0668' CALL STDIR ; Calculate sector/track directory - 1866 0824' 0E FF LD C,0FFH ; Update checksum directory - 1867 0826' CD 075A' CALL CHKDIR - 1868 0829' CD 083D' WRITD1: CALL DMADIR ; Set up dma directory (label for DS - crw) - 1869 082C' 0E 01 LD C,1 ; Write directory flag - 1870 082E' CD 079A' CALL WRITER ; Write record - 1871 0831' 18 04' JR STDMA ; Set up DMA user - - 1873 IF NOT ZSDOS11 - 1874 IF NOT ZS - 1879 ENDIF ;~Zsdos11 - - 1881 ; Set DMA Address Command - - 1883 0833' ED53 002E' CMND26: LD (DMA),DE ; Save DMA address - - 1885 ; Set DMA Address - - 1887 0837' ED4B 002E' STDMA: LD BC,(DMA) ; Get DMA address - 1888 083B' 18 04' JR DMADR0 ; And do BIOS call - - 1890 ; Set DMA Address Directory - - ZMAC Relocating Macro Assembler v 1.7, page 41 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 1892 083D' ED4B 0034' DMADIR: LD BC,(DIRBUF) ; Get DMA address directory - 1893 0841' C3 0024* DMADR0: JP SETDMA ; Cbios call set DMA - - 1895 ; Get Bit from ALV Buffer - 1896 ; Entry DE=Block Number - 1897 ; Exit A =Bit in LSB - 1898 ; B =Bit Number in A - 1899 ; HL=Pointer in ALV Buffer - - 1901 0844' 7B GETBIT: LD A,E ; Get bit number - 1902 0845' E6 07 AND 7 ; Mask it - 1903 0847' 3C INC A ; Add 1 - 1904 0848' 4F LD C,A ; Save it - 1905 IF UNROLL - 1906 0849' CB3A SRL D ; Get byte number - 1907 084B' CB1B RR E ; DE=DE/8 - 1908 084D' CB3A SRL D - 1909 084F' CB1B RR E - 1910 0851' CB3A SRL D - 1911 0853' CB1B RR E ; ..inline for speed (net cost: 4) - 1912 0855' 47 LD B,A ; Re-save bit number for next shift - 1913 0856' 2A 003A' LD HL,(ALV) ; Get start address ALV buffer - 1919 ENDIF ;Unroll - 1920 0859' 19 ADD HL,DE ; Add byte number - 1921 085A' 7E LD A,(HL) ; Get 8 bits - 1922 085B' 07 GETBT0: RLCA ; Get correct bit - 1923 085C' 10 FD' DJNZ GETBT0 - 1924 085E' 41 LD B,C ; Restore bit number - 1925 085F' C9 RET ; And return to caller - - 1927 ; Set/Reset bit in ALV Buffer - 1928 ; Entry DE=Block Number - 1929 ; C =0 Reset Bit, C=1 Set Bit - - 1931 0860' C5 SETBIT: PUSH BC ; Save set/reset bit - 1932 0861' CD 0844' CALL GETBIT ; Get bit - 1933 0864' E6 FE AND 0FEH ; Mask it - 1934 0866' D1 POP DE ; Get set/reset bit - 1935 0867' B3 OR E ; Set/reset bit - 1936 0868' 0F SETBT0: RRCA ; Rotate bit in correct position - 1937 0869' 10 FD' DJNZ SETBT0 - 1938 086B' 77 LD (HL),A ; Save 8 bits - 1939 086C' C9 RET ; And return to caller - - 1941 ; Delete File - - 1943 086D' CD 09BD' DELETE: CALL COMCOD ; Call common code w/VDEL on stack - - 1945 ; Delete Routine Core (relocated to save space) (hfb) - - 1947 0870' CD 06EE' VDEL: CALL CKRODI ; Check file W/P, get directory entry - 1948 0873' 36 E5 LD (HL),0E5H ; Remove file - 1949 0875' 23 INC HL - 1950 0876' 7E LD A,(HL) ; Get first char - 1951 0877' D6 24 SUB '$' ; See if submit file - 1952 0879' 20 03' JR NZ,VDEL1 ; If not - ZMAC Relocating Macro Assembler v 1.7, page 42 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 1953 087B' 32 0057' LD (SUBFLG),A ; Clear subflg if $*.* erased - 1954 087E' 23 VDEL1: INC HL - 1955 087F' CBBE RES 7,(HL) ; Insure erased files are not public - 1956 0881' 0E 00 LD C,0 ; Remove bits ALV buffer - 1957 ; ..fall thru and return to caller.. - - 1959 ; Fill bit buffer from FCB in DIRBUF - 1960 ; Entry C=0 Reset Bit, C=1 Set Bit - - 1962 0883' CD 06F1' FILLBB: CALL CALDIR ; Get directory entry - 1963 0886' 11 0010 LD DE,16 ; Get offset DM block - 1964 0889' 19 ADD HL,DE ; Add offset - 1965 088A' 43 LD B,E ; Get block counter - 1966 088B' 5E FILLB0: LD E,(HL) ; Get LSB block number - 1967 088C' 23 INC HL ; Increment pointer - 1968 088D' 16 00 LD D,0 ; Reset MSB block number - 1969 088F' 3A 0042' LD A,(MAXLEN+1) ; Test >256 blocks present - 1970 0892' B7 OR A - 1971 0893' 28 03' JR Z,FILLB1 ; No then jump - 1972 0895' 05 DEC B ; Decrement block counter - 1973 0896' 56 LD D,(HL) ; Get correct MSB - 1974 0897' 23 INC HL ; Increment pointer - 1975 0898' 7A FILLB1: LD A,D ; Test block number - 1976 0899' B3 OR E - 1977 089A' 28 0D' JR Z,FILLB2 ; Zero then get next block - 1978 089C' E5 PUSH HL ; Save pointer - 1979 089D' C5 PUSH BC ; Save counter and set/reset bit - 1980 089E' 2A 0041' LD HL,(MAXLEN) ; Get maximum length ALV buffer - 1981 08A1' B7 OR A ; Reset carry - 1982 08A2' ED52 SBC HL,DE ; Test DE<=maxlen ALV buffer - 1983 08A4' D4 0860' CALL NC,SETBIT ; Yes then insert bit - 1984 08A7' C1 POP BC ; Get counter and set/reset bit - 1985 08A8' E1 POP HL ; Get pointer - 1986 08A9' 10 E0' FILLB2: DJNZ FILLB0 ; Repeat for all DM entries - 1987 08AB' C9 RET ; And return to caller - - 1989 ; Check File W/P Bit - SEARCH called first - - 1991 08AC' CD 06F1' CHKFRO: CALL CALDIR ; Get directory entry - 1992 08AF' 11 0008 LD DE,WHLATT ; Offset to R/O bit - 1993 08B2' 19 ADD HL,DE ; Add offset - 1994 08B3' ED5B 0013' LD DE,(WHEEL) ; Get wheel byte address from header - 1995 08B7' 1A LD A,(DE) ; ..and retrieve the actual byte - 1996 08B8' A7 AND A ; ..and check the Wheel byte - 1997 08B9' 20 04' JR NZ,CHKFR4 ; We have wheel, so allow writes anyway - 1998 08BB' CB7E BIT 7,(HL) ; Else check Wheel attribute - 1999 08BD' 20 10' JR NZ,CHKFR2 ; Yes then error - 2000 08BF' 23 CHKFR4: INC HL ; Check W/P bit (hfb) - 2001 08C0' CB7E BIT 7,(HL) ; Test file W/P - 2002 08C2' 20 0B' JR NZ,CHKFR2 ; If W/P - 2003 08C4' DDCB 077E CHKFR3: BIT 7,(IX+PSFATT) ; Was file accessed as Public or Path? - 2004 08C8' C8 RET Z ; If normal access - 2005 08C9' 3A 0015' LD A,(FLAGS) ; Else test for writes allowed - 2006 08CC' E6 02 AND 0010B - 2007 08CE' C0 RET NZ ; Go ahead, writes are allowed - 2008 08CF' 2A 000F' CHKFR2: LD HL,(SFILRO) ; Get pointer to file W/P message - ZMAC Relocating Macro Assembler v 1.7, page 43 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 2009 08D2' 06 03 LD B,3 ; File W/P error code - 2010 08D4' 11 031E' LD DE,MFILRO ; Load file W/P message - 2011 08D7' E9 JP (HL) ; Display message - - - 2014 ; Check Drive Write Protect - - 2016 08D8' BGCKDRO: - 2017 08D8' CD 08E5' CHKRO: CALL CHKRO1 ; Is the disk W/P? - 2018 08DB' C0 RET NZ ; ..return if disk R/W - 2019 08DC' 06 02 LD B,2 ; Else set disk W/P error code - 2020 08DE' 11 0323' LD DE,MRO ; Load drive W/P message - 2021 08E1' 2A 000D' LD HL,(STRO) ; Get pointer to drive W/P message - 2022 08E4' E9 JP (HL) ; Display message - - 2024 08E5' 2A 0DFC' CHKRO1: LD HL,(DSKWP) ; Get the W/P drive vector - 2025 08E8' CD 064A' CALL SDRVB ; Set the bit for this drive - 2026 08EB' ED52 SBC HL,DE ; See if extra bit added (Cy is clear) - 2027 08ED' C9 RET - - 2029 ; Search using first 12 bytes of FCB (hfb) - - 2031 08EE' 3E 0C SEAR12: LD A,12 - 2032 08F0' 21 DEFB 21H ; Trash HL and fall through - - 2034 ; Search using first 15 bytes of FCB - - 2036 08F1' 3E 0F SEAR15: LD A,15 - - 2038 ; Search for File Name - 2039 ; Entry: A = Number of bytes for which to search - - 2041 08F3' 32 005B' SEARCH: LD (SEARNB),A ; Save number of bytes - 2042 08F6' 3E FF LD A,0FFH ; Set exit code to 0FFH (not found) - 2043 08F8' 32 005A' LD (SEAREX),A - 2044 08FB' DD22 0058' LD (DCOPY),IX ; Copy FCB pointer to RAM (search next) - 2045 08FF' CD 06FC' CALL SETFCT ; Initiate file counter - - 2047 ; Force directory read with a Call HOME (bh) (Only if Floppys-hfb) - 2048 IF ZSDOS11 ; (* Logic moved to RDDIR if NOT Zsdos11 *) - 2049 0902' 2A 0047' LD HL,(NCHECK) ; Is this a fixed media? - 2050 0905' 7C LD A,H - 2051 0906' B5 OR L - 2052 0907' C4 0018* CALL NZ,HOME ; Invoke CBIOS Home routine if removeable - 2053 ENDIF ;~Zsdos11 - - 2055 ; Search Next File Name - - 2057 090A' AF SEARCN: XOR A ; Check checksum directory - 2058 090B' 67 LD H,A - 2059 090C' 6F LD L,A - 2060 090D' 22 0050' LD (SEARQU),HL ; Clear question mark & public detected flags - 2061 0910' DDCB 07BE RES 7,(IX+PSFATT) ; Reset public/system file flag - 2062 0914' CD 0730' CALL RDDIR ; Get FCB from directory - 2063 0917' CD 071C' CALL TSTFCT ; Test if past last entry - 2064 091A' 28 0E' JR Z,JSEAR8 ; Yes then jump (note carry always clear) - ZMAC Relocating Macro Assembler v 1.7, page 44 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 2065 091C' ED5B 0058' LD DE,(DCOPY) ; Get FCB pointer - 2066 0920' 1A LD A,(DE) ; Get first byte - 2067 0921' FE E5 CP 0E5H ; Test if searching empty directory - 2068 0923' 28 07' JR Z,SEARC1 ; Yes then jump - 2069 0925' D5 PUSH DE ; Save FCB pointer - 2070 0926' CD 0723' CALL TSTLF ; Test last file on this drive - 2071 0929' D1 POP DE ; Restore FCB pointer - 2072 092A' 30 6B' JSEAR8: JR NC,SEARC8 ; Yes then jump - 2073 092C' CD 06F1' SEARC1: CALL CALDIR ; Get entry in directory - 2074 092F' 7E LD A,(HL) ; Get first byte directory entry - 2075 0930' FE 21 CP 21H ; Test time stamp - 2076 0932' 28 D6' JR Z,SEARCN ; Yes then get next directory entry - 2077 0934' 0E 00 LD C,0 ; Clear counter - 2078 0936' 3A 005B' LD A,(SEARNB) ; Get number of bytes to search for - 2079 0939' 47 LD B,A ; Save it in counter - 2080 093A' 78 SEARC2: LD A,B ; Test if counter is zero - 2081 093B' B7 OR A - 2082 093C' 28 5F' JR Z,SEARC9 ; Yes then jump - 2083 093E' 1A LD A,(DE) ; Get byte from FCB - 2084 093F' EE 3F XOR '?' ; Test if question mark - 2085 0941' E6 7F AND 7FH ; Mask it - 2086 0943' 28 3B' JR Z,SEARC6 ; Yes then jump - 2087 0945' 79 LD A,C ; Get FCB counter - 2088 0946' B7 OR A ; Test first byte - 2089 0947' 20 22' JR NZ,SEARC3 ; No then jump - 2090 0949' 3A 0015' LD A,(FLAGS) ; Get flag byte - 2091 094C' 1F RRA ; Test public file enable - 2092 094D' 30 1C' JR NC,SEARC3 ; ..jump if not - 2093 094F' 23 INC HL ; Get pointer to Public Bit - 2094 0950' 23 INC HL - 2095 0951' CB7E BIT 7,(HL) ; Test Public Bit directory - 2096 0953' 2B DEC HL ; Restore pointer - 2097 0954' 2B DEC HL - 2098 0955' 28 14' JR Z,SEARC3 ; No public file then jump - 2099 0957' 1A LD A,(DE) ; Get first byte FCB - 2100 0958' FE E5 CP 0E5H ; Test if searching empty directory - 2101 095A' 28 0F' JR Z,SEARC3 ; Yes then jump - - 2103 ; The following 3 lines of code represent a deviation from the description of - 2104 ; PUBLIC Files as given in DDJ Article by Bridger Mitchell and Derek McKay of - 2105 ; Plu*Perfect Systems. The PUBLIC Specification states that Public Files will - 2106 ; NOT be found by any wildcard reference except when a "?" is in the FCB+0 - 2107 ; byte. The code here relaxes that requirement as follows: If we are in the - 2108 ; same user area as the public file, then don't report the file as PUBLIC, but - 2109 ; find it. This has a nasty side effect - it allows erasing of PUBLIC files - 2110 ; if we are in the same area. However, these files also show up on the direc- - 2111 ; tory (they wouldn't otherwise), so at least we should know we're blasting - 2112 ; them. - - 2114 095C' AE XOR (HL) ; Test FCB = Directory Entry - 2115 095D' E6 7F AND 7FH ; Mask it (setting Zero Flag) - 2116 095F' 28 19' JR Z,SEARC5 ; Jump if user is same - 2117 0961' 3E FF LD A,0FFH - 2118 0963' 32 0051' LD (SEARPU),A ; Set Public file found - 2119 IF UPATH - 2120 0966' CD 0AAF' CALL SETPSF ; Set Public/System file flag - ZMAC Relocating Macro Assembler v 1.7, page 45 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 2123 ENDIF - 2124 0969' 18 0F' JR SEARC5 ; Jump found - - 2126 096B' 79 SEARC3: LD A,C ; Get FCB counter - 2127 096C' FE 0D CP 13 ; Is it User Code? - 2128 096E' 28 0A' JR Z,SEARC5 ; ..jump if so..don't test - 2129 0970' FE 0C CP 12 ; Is it an Extent Number? - 2130 0972' 1A LD A,(DE) ; ..Get byte from FCB - 2131 0973' 28 11' JR Z,SEARC7 ; ..Jump if Extent Number - 2132 0975' AE XOR (HL) ; Is FCB byte = Directory Entry byte? - 2133 0976' E6 7F AND 07FH ; ..Mask it - 2134 0978' 20 90' SEARC4: JR NZ,SEARCN ; ..jump if not same and get next entry - 2135 097A' 13 SEARC5: INC DE ; Increment FCB pointer - 2136 097B' 23 INC HL ; Increment Directory Entry pointer - 2137 097C' 0C INC C ; Increment counter - 2138 097D' 05 DEC B ; Decrement counter - 2139 097E' 18 BA' JR SEARC2 ; Test next byte - - 2141 0980' 3D SEARC6: DEC A ; Set question mark found flag - 2142 0981' 32 0050' LD (SEARQU),A - 2143 0984' 18 F4' JR SEARC5 ; Jump found - - 2145 0986' SEARC7: - 2146 0986' AE XOR (HL) ; Test extent - 2147 0987' CD 098C' CALL SEARC7A ; Mask Extent - 2148 098A' 18 EC' JR SEARC4 ; ..and test Result - - - 2151 098C' C5 SEARC7A: PUSH BC - 2152 098D' 47 LD B,A ; Save Extent - 2153 098E' 3A 0040' LD A,(NEXTND) ; Get extent mask - 2154 0991' 2F CPL ; Complement it - 2155 0992' E6 1F AND MAXEXT ; Mask it - 2156 0994' A0 AND B ; Mask extent - 2157 0995' C1 POP BC ; Restore counters - 2158 0996' C9 RET - - 2160 0997' CD 06FC' SEARC8: CALL SETFCT ; Error set file counter - 2161 099A' C3 0B7A' JP RETCFF ; Set return code to FF and exit - - 2163 099D' 2A 0050' SEARC9: LD HL,(SEARQU) ; Get question mark and public found flags - 2164 09A0' 7C LD A,H - 2165 09A1' A5 AND L - 2166 09A2' 20 D4' JR NZ,SEARC4 ; Yes then search for next entry - 2167 09A4' CD 0723' CALL TSTLF ; Test for last file - 2168 09A7' D4 0714' CALL NC,SETLF0 ; And update if so - 2169 09AA' 2A 0052' LD HL,(RECDIR) ; Set DE return to directory record - 2170 09AD' 22 005F' LD (DEVAL),HL ; .. for DateStamper simulation - 2171 09B0' 3A 0054' LD A,(FILCNT) ; Get file counter - 2172 09B3' E6 03 AND 3 ; Mask it - 2173 09B5' 32 004C' LD (PEXIT),A ; And set exit code - 2174 09B8' AF XOR A ; Clear exit code search - 2175 09B9' 32 005A' LD (SEAREX),A - 2176 09BC' C9 RET ; And return to caller - - 2178 ; The following code is common to DELETE, RENAME, and CSTAT. - ZMAC Relocating Macro Assembler v 1.7, page 46 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 2179 ; It is coded in a manner that is compatable with the Z280 - 2180 ; in protected Mode. - - 2182 09BD' CD 08D8' COMCOD: CALL CHKRO ; Check disk W/P - 2183 09C0' CD 08EE' CALL SEAR12 ; Search file - 2184 09C3' CD 071C' COMCO1: CALL TSTFCT ; Test if file found - 2185 09C6' E1 POP HL ; Routine addr to HL (in case not found) - 2186 09C7' C8 RET Z ; Not then exit - 2187 09C8' E5 PUSH HL ; ..found, so routine back to stack - 2188 09C9' E5 PUSH HL ; Twice, as RET pops first push - 2189 09CA' 21 09CF' LD HL,COMCO2 - 2190 09CD' E3 EX (SP),HL ; COMCO2 to stack, routine addr to HL - 2191 09CE' E9 JP (HL) ; ..branch to routine - - 2193 09CF' CD 0817' COMCO2: CALL WRFCB ; Write directory buffer on disk - 2194 09D2' CD 090A' CALL SEARCN ; Search next entry - 2195 09D5' 18 EC' JR COMCO1 ; And test it - - - 2198 ; Rename File - Note Wildcard Support - - 2200 09D7' CD 09BD' RENAM: CALL COMCOD ; Go to common code w/VRENAM on stack - - 2202 09DA' CD 08AC' VRENAM: CALL CHKFRO ; Check file W/P - 2203 09DD' 2A 005D' LD HL,(ARWORD) - 2204 09E0' 11 0010 LD DE,16 ; Offset to new name - 2205 09E3' 19 ADD HL,DE ; Add offset - 2206 09E4' EB EX DE,HL ; Copy HL=>DE - 2207 09E5' CD 06F1' CALL CALDIR ; Get directory entry - 2208 09E8' 23 INC HL - 2209 09E9' 23 INC HL - 2210 09EA' CBBE RES 7,(HL) ; Make any renamed file private - 2211 09EC' 2B DEC HL - 2212 09ED' 2B DEC HL - 2213 09EE' 06 0B LD B,11 ; Set up loop counter - 2214 09F0' 23 RENAM1: INC HL ; Increment directory pointer - 2215 09F1' 13 INC DE ; Increment FCB pointer - 2216 09F2' 1A LD A,(DE) ; Get character from FCB - 2217 09F3' E6 7F AND 7FH ; Mask it - 2218 09F5' FE 3F CP '?' ; Test if question mark - 2219 09F7' 20 01' JR NZ,RENAM2 ; no, then change character on disk - 2220 09F9' 7E LD A,(HL) ; Else get what's there as there is no change - 2221 09FA' 17 RENAM2: RLA ; Clear MSB - 2222 09FB' CB16 RL (HL) ; Get MSB from directory - 2223 09FD' 1F RRA ; And move to FCB - 2224 09FE' 77 LD (HL),A ; Save in directory - 2225 09FF' 10 EF' DJNZ RENAM1 ; Loop until done - 2226 0A01' C9 RET - - 2228 ; Change Status Bits for File - - 2230 0A02' CD 09BD' CSTAT: CALL COMCOD ; Go to common code w/VCSTAT on stack - - 2232 0A05' DDE5 VCSTAT: PUSH IX - 2233 0A07' D1 POP DE ; FCB pointer in DE - 2234 0A08' CD 06F1' CALL CALDIR ; Get directory entry - ZMAC Relocating Macro Assembler v 1.7, page 47 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 2235 0A0B' 06 0B LD B,11 ; Set up loop counter - 2236 0A0D' 23 CSTAT1: INC HL ; Increment directory pointer - 2237 0A0E' 13 INC DE ; Increment FCB pointer - 2238 0A0F' 3E 04 LD A,4 ; Are we pointing to Wheel Attribute? - 2239 0A11' B8 CP B - 2240 0A12' 20 0E' JR NZ,CSTAT2 ; ..jump if not - 2241 0A14' E5 PUSH HL - 2242 0A15' 2A 0013' LD HL,(WHEEL) ; Else do we have Wheel privileges? - 2243 0A18' 7E LD A,(HL) - 2244 0A19' E1 POP HL - 2245 0A1A' A7 AND A ; ..set flags to show - 2246 0A1B' 20 05' JR NZ,CSTAT2 ; Jump if we have Wheel - 2247 0A1D' CB7E BIT 7,(HL) ; Is file Wheel protected? - 2248 0A1F' C2 08CF' JP NZ,CHKFR2 ; ..jump if so - 2249 0A22' 1A CSTAT2: LD A,(DE) ; Get status bit from FCB - 2250 0A23' CB16 RL (HL) ; Remove MSB of directory - 2251 0A25' 17 RLA ; Get msb from FCB - 2252 0A26' CB1E RR (HL) ; And move into directory char - 2253 0A28' 10 E3' DJNZ CSTAT1 ; Loop until done - 2254 0A2A' C9 RET - - 2256 ; Compute File Size - - 2258 0A2B' 01 0000 FILSZ: LD BC,0 ; Reset file size length - 2259 0A2E' 51 LD D,C - 2260 0A2F' CD 0515' CALL LDRRC ; Save it in FCB+33,34,35 - 2261 0A32' CD 08EE' CALL SEAR12 ; Search file (hfb) - 2262 0A35' CD 071C' FILSZ0: CALL TSTFCT ; Test if file found - 2263 0A38' C8 RET Z ; Not then exit - 2264 0A39' CD 06F1' CALL CALDIR ; Get directory entry - 2265 0A3C' EB EX DE,HL ; Copy to DE - 2266 0A3D' 21 000F LD HL,15 ; Offset to next record - 2267 0A40' CD 0D7F' CALL CALRRC ; Calculate random record count - 2268 0A43' 7A LD A,D ; Test LSB < (ix+33) - 2269 0A44' DD96 21 SUB (IX+33) - 2270 0A47' 79 LD A,C ; Test ISB < (ix+34) - 2271 0A48' DD9E 22 SBC A,(IX+34) - 2272 0A4B' 78 LD A,B ; Test MSB < (ix+35) - 2273 0A4C' DD9E 23 SBC A,(IX+35) - 2274 0A4F' D4 0515' CALL NC,LDRRC ; Write new maximum - 2275 0A52' CD 090A' CALL SEARCN ; Search next file - 2276 0A55' 18 DE' JR FILSZ0 ; And test it - - 2278 ; Find File - 2279 IF UPATH - 2280 0A57' CD 0719' FINDF: CALL SRCT15 ; Search file - 2281 0A5A' C0 RET NZ ; Yes then exit - 2282 0A5B' 3A 0015' LD A,(FLAGS) - 2283 0A5E' CB6F BIT 5,A ; Test if Path enabled - 2284 0A60' C8 RET Z ; Exit if not - 2285 0A61' 2A 0011' LD HL,(PATH) ; Get Path address - 2286 0A64' 7C LD A,H ; Test if zero (no path) - 2287 0A65' B5 OR L - 2288 0A66' C8 RET Z ; Yes then exit - 2289 0A67' 7E FINDF0: LD A,(HL) ; Get first entry path name - 2290 0A68' 23 INC HL ; Increment pointer - ZMAC Relocating Macro Assembler v 1.7, page 48 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 2291 0A69' B7 OR A ; Test if last entry - 2292 0A6A' CA 0997' JP Z,SEARC8 ; Yes then error exit - 2293 0A6D' E6 7F AND 7FH ; Mask drive number - 2294 0A6F' FE 24 CP '$' ; Test if current drive - 2295 0A71' 20 04' JR NZ,FINDF1 ; No then jump - 2296 0A73' 3A 002C' LD A,(DRIVE) ; Get current drive - 2297 0A76' 3C INC A ; Increment drive number - 2298 0A77' 3D FINDF1: DEC A ; Decrement drive number - 2299 0A78' E5 PUSH HL ; Save path pointer - 2300 0A79' CD 0581' CALL SELDK ; Select drive - 2301 0A7C' E1 POP HL ; Restore path pointer - 2302 0A7D' 7E LD A,(HL) ; Get user number - 2303 0A7E' 23 INC HL ; Advance pointer - 2304 0A7F' E6 7F AND 7FH ; Mask user number - 2305 0A81' FE 24 CP '$' ; Test if current user - 2306 0A83' 20 03' JR NZ,FINDF2 ; No then jump - 2307 0A85' 3A 002A' LD A,(USER) ; Get current user - 2308 0A88' E6 1F FINDF2: AND 1FH ; Mask user number - 2309 0A8A' E5 PUSH HL ; Save path pointer - 2310 0A8B' CD 055E' CALL RESUSR ; Add new user number in FCB+0 and FCB+13 - 2311 0A8E' CD 0719' CALL SRCT15 ; Search file and test if present - 2312 0A91' E1 POP HL ; Restore path pointer - 2313 0A92' 28 D3' JR Z,FINDF0 ; No then test next path entry - 2314 0A94' E5 PUSH HL ; Save path pointer - 2315 0A95' CD 06F1' CALL CALDIR ; Get directory entry - 2316 0A98' 11 000A LD DE,10 ; Add offset system bit - 2317 0A9B' 19 ADD HL,DE - 2318 0A9C' CB7E BIT 7,(HL) ; Test system file - 2319 0A9E' 3A 0015' LD A,(FLAGS) ; Test for relaxed path definition - 2320 0AA1' 17 RLA ; ..by rotating bit.. - 2321 0AA2' 17 RLA ; ..into carry flag - 2322 0AA3' E1 POP HL ; Restore path pointer - 2323 0AA4' 38 02' JR C,FINDF3 ; If carry, system attrib not required - 2324 0AA6' 28 BF' JR Z,FINDF0 ; No system file then test next path entry - 2325 0AA8' 3A 002B' FINDF3: LD A,(DEFDRV) ; Get current drive - 2326 0AAB' 3C INC A ; Increment drive number - 2327 0AAC' 32 002D' LD (FCB0),A ; Save it in exit FCB0 - 2328 0AAF' DDCB 07FE SETPSF: SET 7,(IX+PSFATT) ; set Public/System file flag - 2329 0AB3' C9 RET ; And return to caller - 2330 ENDIF ;Upath - - 2332 ; Open File Command - - 2334 0AB4' CD 051F' CMND15: CALL SELDRV ; Select drive from FCB - 2335 0AB7' DD36 000E LD (IX+FCBMOD),0 ; Clear data module number - - 2337 ; Open File - 2338 IF UPATH - 2339 0ABB' CD 0A57' CALL FINDF ; Find file (use path name) - 2340 0ABE' CD 071C' CALL TSTFCT ; Test file found - 2343 ENDIF ;Upath - 2344 0AC1' C8 RET Z ; No then exit - 2345 0AC2' DD7E 07 OPENF0: LD A,(IX+PSFATT) ; Get Public/System file bit - 2346 0AC5' F5 PUSH AF ; Save it - 2347 0AC6' DD7E 0C LD A,(IX+FCBEXT) ; Get extent number from FCB - 2348 0AC9' F5 PUSH AF ; Save it - ZMAC Relocating Macro Assembler v 1.7, page 49 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 2349 0ACA' CD 06F1' CALL CALDIR ; Get directory entry - 2350 0ACD' 7E LD A,(HL) ; Find real user number file is in - 2351 0ACE' F6 80 OR 80H ; Set user valid flag - 2352 0AD0' DDE5 PUSH IX ; Save FCB entry - 2353 0AD2' D1 POP DE ; Get in in DE - 2354 0AD3' 01 0020 LD BC,32 ; Number of bytes to move - 2355 0AD6' EDB0 LDIR ; Move directory to FCB - 2356 0AD8' DD77 0D LD (IX+FCBUSR),A ; And put user byte back - 2357 0ADB' CD 0D7A' CALL SETB14 ; Set FCB/File Not Modified - 2358 0ADE' DD46 0C LD B,(IX+FCBEXT) ; Get extent number - 2359 0AE1' DD4E 0F LD C,(IX+FCBREC) ; Get next record number - 2360 0AE4' F1 POP AF ; Get old extent number - 2361 0AE5' DD77 0C LD (IX+FCBEXT),A ; Save it - 2362 0AE8' B8 CP B ; Compare old and new extent number - 2363 0AE9' 28 04' JR Z,OPENF1 ; Same then jump - 2364 0AEB' 0E 00 LD C,0 ; Set next record count to 0 - 2365 0AED' CB19 RR C ; Record count to Max (80H) if need new extent - 2366 0AEF' DD71 0F OPENF1: LD (IX+FCBREC),C ; Save next record count - 2367 0AF2' F1 POP AF ; Get Public/System file bit - 2368 0AF3' DDCB 0716 RL (IX+PSFATT) ; Remove MSB from IX+8 - 2369 0AF7' 17 RLA ; Set new MSB in carry - 2370 0AF8' DDCB 071E RR (IX+PSFATT) ; Save Carry in IX+8 - 2371 IF ZS - 2372 0AFC' 2A 0018' LD HL,(STLAV) ; Get address of last accessed routine - 2373 0AFF' C3 0DB9' JP STAMPT - 2378 ENDIF ;Zs - - 2380 ; Make File Command - - 2382 0B02' CD 051F' CMND22: CALL SELDRV ; Select drive from FCB - 2383 0B05' DD36 000E LD (IX+FCBMOD),0 ; Clear data module number - - 2385 ; Make File - - 2387 0B09' CD 08D8' MAKES: CALL CHKRO ; Check drive W/P - 2388 0B0C' 2A 005D' LD HL,(ARWORD) - 2389 0B0F' 7E LD A,(HL) ; Get first byte FCB - 2390 0B10' F5 PUSH AF ; Save it - 2391 0B11' 36 E5 LD (HL),0E5H ; Set first byte to empty file - 2392 0B13' 3E 01 LD A,1 ; Search for 1 byte - 2393 0B15' CD 08F3' CALL SEARCH ; Search empty file - 2394 0B18' F1 POP AF ; Get first byte FCB - 2395 0B19' DD77 00 LD (IX+0),A ; Restore it - 2396 0B1C' CD 071C' CALL TSTFCT ; Test empty file found - 2397 0B1F' C8 RET Z ; No then return error - 2398 0B20' 2A 005D' LD HL,(ARWORD) ; Get FCB pointer - 2399 0B23' CD 0452' CALL CKSUB ; Check if this is a submit file - 2400 0B26' 11 000F LD DE,15 ; Prepare offset - 2401 0B29' 19 ADD HL,DE ; Add it - 2402 0B2A' 06 11 LD B,17 ; Set loop counter - 2403 0B2C' AF XOR A - 2404 0B2D' 77 MAKE0: LD (HL),A ; Clear FCB+15 up to FCB+31 - 2405 0B2E' 23 INC HL ; Increment pointer - 2406 0B2F' 10 FC' DJNZ MAKE0 ; And clear all bytes - 2407 0B31' DDCB 07BE RES 7,(IX+PSFATT) ; Reset Public/System file bit - 2408 0B35' DDCB 0BBE RES 7,(IX+ARCATT) ; Reset archive bit if present - ZMAC Relocating Macro Assembler v 1.7, page 50 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 2409 0B39' CD 06F1' CALL CALDIR ; Get directory entry - 2410 0B3C' DDE5 PUSH IX ; Save FCB entry - 2411 0B3E' D1 POP DE ; Get it in DE - 2412 0B3F' EB EX DE,HL ; Exchange FCB and directory entry - 2413 0B40' 01 0020 LD BC,32 ; Number of bytes to move - 2414 0B43' EDB0 LDIR ; Move bytes - 2415 0B45' CD 0817' CALL WRFCB ; Write FCB on disk - 2416 0B48' CD 0D7A' CALL SETB14 ; Set file not modified - 2417 IF ZS - 2418 0B4B' 2A 001A' LD HL,(STCRV) ; Get address of Stamp Create routine - 2419 0B4E' C3 0DB9' JP STAMPT ; ..and stamp it - 2423 ENDIF ;Zs - - 2425 ; Open Next Extent - - 2427 0B51' DDCB 0E7E OPENEX: BIT 7,(IX+FCBMOD) ; Test if FCB/File Modified (write) - 2428 0B55' 20 08' JR NZ,OPENX2 ; Not then jump - 2429 0B57' CD 07AB' CALL CLOSE ; Close current FCB - 2430 0B5A' 3A 004C' LD A,(PEXIT) ; Get exit code - 2431 0B5D' 3C INC A ; Test if error - 2432 0B5E' C8 RET Z ; Yes then exit - 2433 0B5F' CD 0B85' OPENX2: CALL CALNEX ; Calculate next extent (LABEL MOVED) - 2434 0B62' 38 13' JR C,OPENX3 ; Error then jump - - 2436 0B64' CD 0719' OPENX0: CALL SRCT15 ; Search for 15-char match & test presence - 2437 0B67' 20 16' JR NZ,OPENX5 ; Yes then jump - 2438 0B69' 3A 004F' LD A,(RDWR) ; Test Read/Write flag - 2439 0B6C' B7 OR A ; Test if read - 2440 0B6D' 28 08' JR Z,OPENX3 ; Yes then error - 2441 0B6F' CD 0B09' CALL MAKES ; Make new extent if write - 2442 0B72' CD 071C' CALL TSTFCT ; Test if succesfull - 2443 0B75' 20 0B' JR NZ,OPENX6 ; Yes then exit - 2444 0B77' CD 0D7A' OPENX3: CALL SETB14 ; Set FCB/File Not Modified - 2445 0B7A' 3E FF RETCFF: LD A,0FFH ; (hfb/cwc) set exit code - 2446 0B7C' C3 04BB' OPENX4: JP SAVEA ; And return to caller - - 2448 0B7F' CD 0AC2' OPENX5: CALL OPENF0 ; Open file - 2449 0B82' AF OPENX6: XOR A ; And clear exit code - 2450 0B83' 18 F7' JR OPENX4 ; Use same routine - - 2452 ;==OPENX2: CALL CALNEX ; Calculate next extent - 2453 ;== JR C,OPENX3 ; Error then jump - 2454 ;== JR OPENX0 ; Open next extent, FCB contains DU: - - 2456 ; Calculate Next Extent - 2457 ; Exit: Carry=1 => Overflow Detected - - 2459 0B85' CD 0BA6' CALNEX: CALL GETDME ; Get extent number, data module number - 2460 0B88' CB70 BIT 6,B ; Test error bit random record - 2461 0B8A' 37 SCF ; Set error flag - 2462 0B8B' C0 RET NZ ; ..Error exit if Non-zero - 2463 0B8C' 0C INC C ; Increment extent number - 2464 0B8D' 79 LD A,C ; Get extent number - 2465 0B8E' E6 1F AND MAXEXT ; Mask it for max extent - 2466 0B90' 4F LD C,A ; Save it in C - 2467 ;== JR NZ,SETDME ; If new data module not required - ZMAC Relocating Macro Assembler v 1.7, page 51 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 2468 0B91' 20 07' JR NZ,CALNE1 ;== IF NEW DATA MODULE NOT REQUIRED - 2469 0B93' 04 INC B ; Set next data module - 2470 0B94' 78 LD A,B ; Get it in A - 2471 0B95' E6 3F AND MAXMOD ; Mask it for max module - 2472 0B97' 47 LD B,A ; Save it in B - 2473 0B98' 37 SCF ; Set error flag - 2474 0B99' C8 RET Z ; And return if file overflow - 2475 0B9A' DD36 0020 CALNE1: LD (IX+NXTREC),0 ;== ZERO NEXT RECORD COUNT - 2476 0B9E' DD71 0C SETDME: LD (IX+FCBEXT),C ; Save Extent number - 2477 0BA1' DD70 0E LD (IX+FCBMOD),B ; Save Data Module number - 2478 IF ZS - 2479 0BA4' A7 AND A ; Clear flag here if ZS - 2480 0BA5' C9 RET - 2481 ENDIF ; ..else fall thru on ZD to do same thing - - 2483 0BA6' DD4E 0C GETDME: LD C,(IX+FCBEXT) ; Get Extent number - 2484 0BA9' DD46 0E LD B,(IX+FCBMOD) ; Get Data Module number - 2485 0BAC' 79 LD A,C - 2486 0BAD' CD 098C' CALL SEARC7A ; Mask Extent - 2487 0BB0' CBB8 RES 7,B ; Clear Unmodified Flag - 2488 0BB2' B0 OR B ; Test for Module and Extent = 0 - 2489 0BB3' C9 RET ; ..and return to caller - - 2491 ; Read Random Record Command - - 2493 0BB4' CD 052D' CMND33: CALL SELDR1 ; Select drive from FCB - - 2495 ; Read Random Sector - - 2497 0BB7' AF XOR A ; Set read/write flag - 2498 0BB8' CD 0CF6' CALL LDFCB ; Load random record in FCB - 2499 0BBB' 28 04' JR Z,READS ; No error then read sector - 2500 0BBD' C9 RET ; Return error - - 2502 ; Read Sequential - - 2504 0BBE' CD 052D' CMND20: CALL SELDR1 ; Select drive from FCB - - 2506 ; Read Sector - - 2508 0BC1' AF READS: XOR A ; Set Read/Write flag - 2509 0BC2' 32 004F' LD (RDWR),A ; Save it - 2510 0BC5' DD7E 20 LD A,(IX+NXTREC) ; Get record counter - 2511 0BC8' FE 80 CP 80H ; Test if last record this extent - 2512 ;= JR NC,READS1 ; Yes then open next extent - 2513 0BCA' 28 09' JR Z,READS1 ;= Yes then open next extent - 2514 0BCC' DDBE 0F CP (IX+FCBREC) ; Test if greater then current record - 2515 0BCF' 38 07' JR C,READS2 ; No then get record - 2516 0BD1' 3E 01 READS0: LD A,1 ; Set end of file flag - 2517 0BD3' 18 A7' JR OPENX4 ; And exit - - 2519 0BD5' CD 0BE9' READS1: CALL OPNXCK ; Open next extent - 2520 0BD8' CD 06AA' READS2: CALL GETDM ; Get block number from DM in FCB - 2521 0BDB' 28 F4' JR Z,READS0 ; Jump if block number=0 to end file - 2522 0BDD' CD 06D7' CALL CALSEC ; Calculate Sector Number (128 bytes) - 2523 0BE0' CD 067A' CALL CALST ; Calculate Sector/Track number - ZMAC Relocating Macro Assembler v 1.7, page 52 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 2524 0BE3' CD 0795' CALL READR ; Read data - 2525 0BE6' C3 0CE4' JP WRITS7 ; Increment elsewhere if necessary - - 2527 ; Consolidated Routine to Open Extent and check status - - 2529 0BE9' CD 0B51' OPNXCK: CALL OPENEX ; Open next extent - 2530 0BEC' 3A 004C' LD A,(PEXIT) ; Get exit code - 2531 0BEF' B7 OR A - 2532 0BF0' C8 RET Z ;== IF OPEN OK - 2533 0BF1' E1 POP HL ;== ELSE POP RETURN ADDRESS TO ABORT R/W - 2534 0BF2' 18 DD' JR READS0 ;== AND SET ERROR CODE TO EOF - 2535 ;== JR NZ,READS0 ; Yes then end of file - 2536 ;== LD (IX+NXTREC),A ; Clear record counter (jww) - 2537 ;== RET - - 2539 ; Write Random Record Command (with and without Zero Fill) - - 2541 0BF4' CMND40: ; (hfb/cwc) - 2542 0BF4' CD 052D' CMND34: CALL SELDR1 ; Select drive from FCB - - 2544 ; Write Random Sector and Write Random with Zero Fill - - 2546 0BF7' 3E FF LD A,0FFH ; Set Read/Write flag - 2547 0BF9' CD 0CF6' CALL LDFCB ; Load FCB from random record - 2548 0BFC' 28 04' JR Z,WRITES ; No error then write record - 2549 0BFE' C9 RET ; Return error - - 2551 ; Write Sequential - - 2553 0BFF' CD 052D' CMND21: CALL SELDR1 ; Select drive from FCB - - 2555 ; Write Sector. Permitted to PUBlic files and those found along Path - - 2557 0C02' 3E FF WRITES: LD A,0FFH ; Set read/write flag - 2558 0C04' 32 004F' LD (RDWR),A ; And save it - - 2560 = 0C08' BGPTCH1 EQU $+1 ;<-- Patched location for BGii - - 2562 0C07' CD 08D8' CALL CHKRO ; Check disk W/P - 2563 0C0A' DDCB 097E BIT 7,(IX+ROATT) ; Test if file W/P - 2564 0C0E' 20 0E' JR NZ,WRITSA ; Yes then file W/P message - 2565 0C10' CD 08C4' CALL CHKFR3 ; Test W/P if path or Public used - 2566 0C13' 2A 0013' LD HL,(WHEEL) ; Get address of Wheel byte - 2567 0C16' 7E LD A,(HL) ; Do we have it? - 2568 0C17' A7 AND A - 2569 0C18' 20 07' JR NZ,WRITSB ; Yes - allow write - 2570 0C1A' DDCB 087E BIT 7,(IX+WHLATT) ; Else test if Wheel Prot file - 2571 0C1E' C2 08CF' WRITSA: JP NZ,CHKFR2 ; Yes then file W/P message - 2572 0C21' DDCB 207E WRITSB: BIT 7,(IX+NXTREC) ; End of this extent? - 2573 0C25' C4 0BE9' CALL NZ,OPNXCK ; Open next extent and check status (hfb) - 2574 0C28' CD 06AA' CALL GETDM ; Get block number from FCB - 2575 0C2B' C2 0CC3' JP NZ,WRITS5 ; Jump to write sector if Block Number <> 0 - 2576 0C2E' E5 PUSH HL ; Save pointer to Block Number - 2577 0C2F' 79 LD A,C ; Test first Block Number in extent - 2578 0C30' B7 OR A - 2579 0C31' 28 04' JR Z,WRITS1 ; Yes then jump - ZMAC Relocating Macro Assembler v 1.7, page 53 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 2580 0C33' 3D DEC A ; Decrement pointer to Block Number - 2581 0C34' CD 06C0' CALL GETDM4 ; Get previous Block Number - - 2583 ; Get Free Block from ALV Buffer - 2584 ; Entry DE=Old Block Number - 2585 ; Exit DE=New Block Number (0 if No Free Block) - 2586 ; HL counts Up,DE counts Down - 2587 ; GETFRE routine relocated here inline - 2588 0C37' 62 WRITS1: LD H,D ; Copy old block to HL - 2589 0C38' 6B LD L,E - 2590 0C39' 7A GETFR0: LD A,D ; Test down counter is zero - 2591 0C3A' B3 OR E - 2592 0C3B' 28 0B' JR Z,GETFR1 ; Yes then jump - 2593 0C3D' 1B DEC DE ; Decrememt down counter - 2594 0C3E' E5 PUSH HL ; Save up/down counter - 2595 0C3F' D5 PUSH DE - 2596 0C40' CD 0844' CALL GETBIT ; Get bit from ALV buffer - 2597 0C43' 1F RRA ; Test if zero - 2598 0C44' 30 20' JR NC,GETFR3 ; Yes then found empty block - 2599 0C46' D1 POP DE ; Get up/down counter - 2600 0C47' E1 POP HL - 2601 0C48' ED4B 0041' GETFR1: LD BC,(MAXLEN) ; Get maximum ALV length-1 in BC - 2602 0C4C' 7D LD A,L ; Is HL >= length ALV-1? - 2603 0C4D' 91 SUB C ; ..do while preserving HL - 2604 0C4E' 7C LD A,H - 2605 0C4F' 98 SBC A,B - 2606 0C50' 30 0E' JR NC,GETFR2 ; End buffer then jump - 2607 0C52' 23 INC HL ; Increment up counter - 2608 0C53' D5 PUSH DE ; Save down/up counter - 2609 0C54' E5 PUSH HL - 2610 0C55' EB EX DE,HL ; Save up counter in DE - 2611 0C56' CD 0844' CALL GETBIT ; Get bit from ALV buffer - 2612 0C59' 1F RRA ; Test if zero - 2613 0C5A' 30 0A' JR NC,GETFR3 ; Yes then found empty block - 2614 0C5C' E1 POP HL ; Get down/up counter - 2615 0C5D' D1 POP DE - 2616 0C5E' 18 D9' JR GETFR0 ; And test next block - - 2618 0C60' 7A GETFR2: LD A,D ; Test if last block tested - 2619 0C61' B3 OR E - 2620 0C62' 20 D5' JR NZ,GETFR0 ; No then test next block - 2621 0C64' 18 07' JR WRITSG ; Continue with DE=0 - - 2623 0C66' 37 GETFR3: SCF ; Set block number used - 2624 0C67' 17 RLA ; Save bit - 2625 0C68' CD 0868' CALL SETBT0 ; Put bit in ALV buffer - 2626 0C6B' D1 POP DE ; Get correct counter - 2627 0C6C' E1 POP HL ; Restore stack pointer - 2628 ; ..continue with (DE=block number) - - 2630 0C6D' E1 WRITSG: POP HL ; Get pointer to Block Number - 2631 0C6E' 7A LD A,D ; Test if blocknumber = 0 - 2632 0C6F' B3 OR E - 2633 0C70' 28 7F' JR Z,WRITS8 ; Yes then disk full error - 2634 0C72' DDCB 0EBE RES 7,(IX+FCBMOD) ; Reset FCB/File Modified - 2635 0C76' 73 LD (HL),E ; Save blocknumber - ZMAC Relocating Macro Assembler v 1.7, page 54 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 2636 0C77' 3A 0042' LD A,(MAXLEN+1) ; Get number of blocks - 2637 0C7A' B7 OR A ; Is it < 256? - 2638 0C7B' 28 02' JR Z,WRITS2 ; ..Jump if so - 2639 0C7D' 23 INC HL ; Increment to MSB Block Number - 2640 0C7E' 72 LD (HL),D ; ..and save MSB block number - 2641 0C7F' 0E 02 WRITS2: LD C,2 ; Set write new block flag - 2642 0C81' 3A 003F' LD A,(NMASK) ; Get sector mask - 2643 0C84' DDA6 20 AND (IX+NXTREC) ; Mask with record counter - 2644 0C87' 28 02' JR Z,WRITSX ; Zero then Ok (at start new record) - 2645 0C89' 0E 00 LD C,0 ; Else clear new block flag - 2646 0C8B' 3A 004B' WRITSX: LD A,(FUNCT) ; Get function number - 2647 0C8E' D6 28 SUB 40 ; Test if Write RR with zero fill - 2648 0C90' 20 33' JR NZ,WRITS6 ; No then jump - 2649 0C92' D5 PUSH DE ; Save blocknumber - 2650 0C93' 2A 0034' LD HL,(DIRBUF) ; Use directory buffer for zero fill - 2651 0C96' 06 80 LD B,128 ; 128 bytes to clear - 2652 0C98' 77 WRITS3: LD (HL),A ; Clear directory buffer - 2653 0C99' 23 INC HL ; Increment pointer - 2654 0C9A' 10 FC' DJNZ WRITS3 ; Clear all bytes - 2655 0C9C' CD 06D7' CALL CALSEC ; Calculate sector number (128 bytes) - 2656 0C9F' 3A 003F' LD A,(NMASK) ; Get sector mask - 2657 0CA2' 47 LD B,A ; Copy it - 2658 0CA3' 04 INC B ; Increment it to get number of writes - 2659 0CA4' 2F CPL ; Complement sector mask - 2660 0CA5' A3 AND E ; Mask sector number - 2661 0CA6' 5F LD E,A ; And save it - 2662 0CA7' 0E 02 LD C,2 ; Set write new block flag - 2663 0CA9' E5 WRITS4: PUSH HL ; Save registers - 2664 0CAA' D5 PUSH DE - 2665 0CAB' C5 PUSH BC - 2666 0CAC' CD 067A' CALL CALST ; Calculate sector/track - 2667 0CAF' CD 083D' CALL DMADIR ; Set DMA directory buffer - 2668 0CB2' C1 POP BC ; Get write new block flag - 2669 0CB3' C5 PUSH BC ; Save it again - 2670 0CB4' CD 079A' CALL WRITER ; Write record on disk - 2671 0CB7' C1 POP BC ; Restore registers - 2672 0CB8' D1 POP DE - 2673 0CB9' E1 POP HL - 2674 0CBA' 0E 00 LD C,0 ; Clear write new block flag - 2675 0CBC' 1C INC E ; Increment sector number - 2676 0CBD' 10 EA' DJNZ WRITS4 ; Write all blocks - 2677 0CBF' CD 0837' CALL STDMA ; Set user DMA address - 2678 0CC2' D1 POP DE ; Get Block Number - 2679 0CC3' 0E 00 WRITS5: LD C,0 ; Clear write new block flag - 2680 0CC5' DDCB 0EBE WRITS6: RES 7,(IX+FCBMOD) ; Reset FCB/File Modified flag - 2681 0CC9' C5 PUSH BC ; Save it - 2682 0CCA' CD 06D7' CALL CALSEC ; Calculate sector number (128 bytes) - 2683 0CCD' CD 067A' CALL CALST ; Calculate Sector/Track - 2684 0CD0' C1 POP BC ; Get write new block flag - 2685 0CD1' CD 079A' CALL WRITER ; Write record on disk - 2686 0CD4' DD7E 20 LD A,(IX+NXTREC) ; Get record counter - 2687 0CD7' DDBE 0F CP (IX+FCBREC) ; Compare with next record - 2688 0CDA' 38 08' JR C,WRITS7 ; If less then jump - 2689 0CDC' 3C INC A ; Increment record count - 2690 0CDD' DD77 0F LD (IX+FCBREC),A ; Save it on next record position - 2691 0CE0' DDCB 0EBE RES 7,(IX+FCBMOD) ; Reset FCB/File Modified flag - ZMAC Relocating Macro Assembler v 1.7, page 55 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 2692 0CE4' 3A 004B' WRITS7: LD A,(FUNCT) ; Get function number - 2693 0CE7' FE 14 CP 20 ; (hfb) - 2694 0CE9' D8 RET C ; Return if < 20 (hfb) - 2695 0CEA' FE 16 CP 21+1 ; (hfb) - 2696 0CEC' D0 RET NC ; Return if > 21 (hfb) - 2697 0CED' DD34 20 INC (IX+NXTREC) ; Increment record count - 2698 0CF0' C9 RET ; And return to caller - - 2700 0CF1' 3E 02 WRITS8: LD A,2 ; Set disk full error - 2701 0CF3' C3 04BB' JP SAVEA ; And return to caller - - - 2704 ; Load FCB for Random Read/Write - 2705 ; Exit : Zero Flag = 1 No Error - 2706 ; 0 Error Occured - - 2708 0CF6' 32 004F' LDFCB: LD (RDWR),A ; Save Read/Write flag - 2709 0CF9' DD7E 21 LD A,(IX+33) ; Get first byte random record - 2710 0CFC' 57 LD D,A ; Save it in D - 2711 0CFD' CBBA RES 7,D ; Reset MSB to get next record - 2712 0CFF' 17 RLA ; Shift MSB in carry - 2713 0D00' DD7E 22 LD A,(IX+34) ; Load next byte random record - 2714 0D03' 17 RLA ; Shift Carry - 2715 0D04' F5 PUSH AF ; Save it - 2716 0D05' E6 1F AND MAXEXT ; Mask next extent - 2717 0D07' 4F LD C,A ; Save it in C - 2718 0D08' F1 POP AF ; Get byte - 2719 0D09' 17 RLA ; Shift 4 times - 2720 0D0A' 17 RLA - 2721 0D0B' 17 RLA - 2722 0D0C' 17 RLA - 2723 0D0D' E6 0F AND 0FH ; Mask it - 2724 0D0F' 47 LD B,A ; Save data module number - 2725 0D10' DD7E 23 LD A,(IX+35) ; Get next byte random record - 2726 0D13' 1E 06 LD E,6 ; Set random record to large flag - 2727 0D15' FE 04 CP 4 ; Test random record to large - 2728 0D17' 30 5C' JR NC,LDFCB8 ; Yes then error - 2729 0D19' 07 RLCA ; Shift 4 times - 2730 0D1A' 07 RLCA - 2731 0D1B' 07 RLCA - 2732 0D1C' 07 RLCA - 2733 0D1D' 80 ADD A,B ; Add byte - 2734 0D1E' 47 LD B,A ; Save data module number in B - 2735 0D1F' DD72 20 LD (IX+NXTREC),D ; Set next record count - 2736 0D22' DD56 0E LD D,(IX+FCBMOD) ; Get data module number - 2737 0D25' CB72 BIT 6,D ; Test error random record - 2738 0D27' 20 0E' JR NZ,LDFCB0 ; Yes then jump - 2739 0D29' 79 LD A,C ; Get new extent number - 2740 0D2A' DDBE 0C CP (IX+FCBEXT) ; Compare with FCB - 2741 0D2D' 20 08' JR NZ,LDFCB0 ; Not equal then open next extent - 2742 0D2F' 78 LD A,B ; Get new data module number - 2743 0D30' DDAE 0E XOR (IX+FCBMOD) ; Compare with data module number - 2744 0D33' E6 3F AND MAXMOD ; Mask it - 2745 0D35' 28 37' JR Z,LDFCB6 ; Equal then return - 2746 0D37' CB7A LDFCB0: BIT 7,D ; Test FCB modified (write) - 2747 0D39' 20 0F' JR NZ,LDFCB1 ; No then jump - ZMAC Relocating Macro Assembler v 1.7, page 56 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 2748 0D3B' D5 PUSH DE ; Save registers - 2749 0D3C' C5 PUSH BC - 2750 0D3D' CD 07AB' CALL CLOSE ; Close extent - 2751 0D40' C1 POP BC ; Restore registers - 2752 0D41' D1 POP DE - 2753 0D42' 1E 03 LD E,3 ; Set close error - 2754 0D44' 3A 004C' LD A,(PEXIT) ; Get exit code - 2755 0D47' 3C INC A - 2756 0D48' 28 27' JR Z,LDFCB7 ; Error then exit - 2757 0D4A' CD 0B9E' LDFCB1: CALL SETDME ; Save Data Module and Extent - 2758 0D4D' CD 08F1' CALL SEAR15 ; Search next FCB - 2759 0D50' 3A 004C' LD A,(PEXIT) ; Get error code - 2760 0D53' 3C INC A - 2761 0D54' 20 15' JR NZ,LDFCB5 ; No error then exit - 2762 0D56' 3A 004F' LD A,(RDWR) ; Get read/write flag - 2763 0D59' 1E 04 LD E,4 ; Set read empty record - 2764 0D5B' 3C INC A - 2765 0D5C' 20 13' JR NZ,LDFCB7 ; Read then error - 2766 0D5E' CD 0B09' CALL MAKES ; Make new FCB - 2767 0D61' 1E 05 LD E,5 ; Set make error - 2768 0D63' 3A 004C' LD A,(PEXIT) ; Get error code - 2769 0D66' 3C INC A - 2770 0D67' 28 08' JR Z,LDFCB7 ; Error then exit - 2771 0D69' 18 03' JR LDFCB6 ; No error exit (zero set) - - 2773 0D6B' CD 0AC2' LDFCB5: CALL OPENF0 ; Open file - 2774 0D6E' C3 0B82' LDFCB6: JP OPENX6 ; Set zero flag and clear error code - - 2776 0D71' DD36 C00E LDFCB7: LD (IX+FCBMOD),0C0H ; Set random record error - 2777 0D75' 7B LDFCB8: LD A,E ; Get error code - 2778 0D76' 32 004C' LD (PEXIT),A ; And save it - 2779 0D79' B7 OR A ; Clear zero flag - 2780 0D7A' DDCB 0EFE SETB14: SET 7,(IX+FCBMOD) ; (hfb) get FCB/File Not Modified - 2781 0D7E' C9 RET ; And return to caller - - 2783 ; Calculate Random Record - 2784 ; Entry HL=Offset in FCB - 2785 ; DE=FCB Pointer - 2786 ; Exit D=LSB Random Record - 2787 ; C=ISB Random Record - 2788 ; B=MSB Random Record - - 2790 0D7F' 19 CALRRC: ADD HL,DE ; Pointer to FCB+15 or FCB+32 - 2791 0D80' 7E LD A,(HL) ; Get record number - 2792 0D81' 21 000C LD HL,12 ; Offset to extent number - 2793 0D84' 19 ADD HL,DE ; Get pointer to extent byte - 2794 0D85' 57 LD D,A ; Save record number - 2795 0D86' 7E LD A,(HL) ; Get extent byte - 2796 0D87' E6 1F AND MAXEXT ; Mask it 000eeeee - 2797 0D89' CB12 RL D ; Shift MSB in Carry Cy=R, d=rrrrrrr0 - 2798 0D8B' CE 00 ADC A,0 ; Add Carry 00xeeeex - 2799 0D8D' 1F RRA ; Shift 1 time (16 bits) 000xeeee - 2800 0D8E' CB1A RR D ; D=xrrrrrrr - 2801 0D90' 4F LD C,A ; Save ISB - 2802 0D91' 23 INC HL ; Increment to data module number - 2803 0D92' 23 INC HL - ZMAC Relocating Macro Assembler v 1.7, page 57 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 2804 0D93' 7E LD A,(HL) ; Get data module number 00mmmmmm - 2805 0D94' 0F RRCA ; Divide module by 16 - 2806 0D95' 0F RRCA - 2807 0D96' 0F RRCA - 2808 0D97' 0F RRCA - 2809 0D98' F5 PUSH AF ; Save it mmmm00mm - 2810 0D99' E6 03 AND 03H ; Mask for maximum module - 2811 0D9B' 47 LD B,A ; Save it 000000mm - 2812 0D9C' F1 POP AF ; Get LSB - 2813 0D9D' E6 F0 AND 0F0H ; Mask it mmmm0000 - 2814 0D9F' 81 ADD A,C ; Add with ISB mmmxeeee - 2815 0DA0' 4F LD C,A ; Save ISB - 2816 0DA1' D0 RET NC ; No carry then return - 2817 0DA2' 04 INC B ; Increment MSB 000000mm - 2818 0DA3' C9 RET ; And return to caller - 2819 ; 000000mm mmmxeeee xrrrrrrr - ZMAC Relocating Macro Assembler v 1.7, page 58 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 2821 IF ZS - 2822 ;************************************************************************ - 2823 ;* U n i v e r s a l T i m e / D a t e S u p p o r t * - 2824 ;************************************************************************ - - 2826 ; In order to provide time/date support for as many systems as possible, - 2827 ; a set of universal routines are used. These routines do not do the - 2828 ; actual stamping, but provide all the data required to method specific - 2829 ; programs to perform the needed services. To use the DOS services, the - 2830 ; external handler needs to tie itself into the Time/Date vector table - 2831 ; in the ZSDOS configuration area. The Get Stamp, Put Stamp, Stamp Last - 2832 ; Access, Stamp Create, and Stamp Modify routines receive the following - 2833 ; parameters in the Z80 registers: - 2834 ; A = Offset to DIR entry [0,20H,40H,60H] - 2835 ; BC = Address of ZSDOS WRFCB routine - 2836 ; DE = Pointer to Directory Buffer - 2837 ; HL = DMA address - 2838 ; IX = Pointer to FCB passed to DOS - 2839 ; The directory buffer contains the dir entry for the FCB passed to DOS, - 2840 ; A contains the offset. The disk has been tested for R/O on all calls - 2841 ; except get stamp and is R/W. If a CP/M+ style stamping is used, a simple - 2842 ; call to the address passed in BC is used to update the disk after adding - 2843 ; the time as required. This call is ALWAYS required. The routines may - 2844 ; use AF,BC,DE, and HL without restoring them. Four levels of stack are - 2845 ; available on the DOS stack for use by the functions. All routines must - 2846 ; exit with a RET instruction, and A=1 if successful, A=0FFH if error. - - 2848 ; Get/put Timestamps - - 2850 0DA4' CMD102: - 2851 0DA4' CD 051F' CMD103: CALL SELDRV ; Select DU: from FCB - 2852 0DA7' CD 0719' CALL SRCT15 ; Find the FCB - 2853 0DAA' 28 31' JR Z,DOTDER ; If not found - 2854 0DAC' 2A 001E' LD HL,(GETSTV) ; Get time stamp function address - 2855 0DAF' 3A 004B' LD A,(FUNCT) - 2856 0DB2' FE 66 CP 102 ; Get stamp? - 2857 0DB4' 28 0A' JR Z,DOTDR3 ; Yes - 2858 0DB6' 2A 0020' LD HL,(PUTSTV) ; Get address of set stamp routine - 2859 ; ..fall thru to common code.. - 2860 ; Enter here for Stamp Last Access, Stamp Create, Stamp Modify - - 2862 0DB9' E5 STAMPT: PUSH HL - 2863 0DBA' CD 08E5' CALL CHKRO1 ; Test for disk W/P but avoid error trap - 2864 0DBD' E1 POP HL - 2865 0DBE' 28 1D' JR Z,DOTDER ; No stamp if disk is W/P - - 2867 0DC0' CD 0BA6' DOTDR3: CALL GETDME ; Get Data Module and Extent Number - 2868 0DC3' 20 18' JR NZ,DOTDER ; ..Quit if Not Extent 0 of Module 0 - 2869 0DC5' 3A 0056' LD A,(SECPNT) ; Offset to FCB in dirbuf - 2870 0DC8' ED5B 0034' LD DE,(DIRBUF) ; Dir buffer pointer - 2871 0DCC' 01 0817' LD BC,WRFCB ; Address of WRFCB routine - 2872 0DCF' E5 PUSH HL ; Save function vector - 2873 0DD0' 2A 002E' LD HL,(DMA) ; Put DMA in HL - 2874 0DD3' C9 RET ; Then vector to routine - - 2876 ; Time and Date Routines. Like the date stamping routines, the user must - ZMAC Relocating Macro Assembler v 1.7, page 59 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 2877 ; supply the actual driver routines for time and date. These routines are - 2878 ; attached to ZSDOS via the vector table in the configuration area. The - 2879 ; routines are passed the address to Get/Put the Time and Date in the DE - 2880 ; and IX registers. The routines may use AF,BC, and D without restor- - 2881 ; ing them. Four levels of stack are available on the DOS stack for use - 2882 ; by the the functions. All routines must exit with a RET instruction, - 2883 ; and A=1 if successful, A=0FFH if error. - 2884 ; In order to better provide for internal DateStamper, the clock routines - 2885 ; must save the value at DE+5 when called, and return this value to the - 2886 ; DOS in the E register. In addition, the HL register must be returned - 2887 ; as the called DE value +5. - 2888 ; The Time/Date string consists of 6 packed BCD digits arrayed as: - 2889 ; Byte 00 01 02 03 04 05 - 2890 ; YY MM DD HH MM SS - - 2892 ; Set Time/Date from user-supplied buffer string - - 2894 0DD4' 0E 01 CMD99: LD C,1 ; Set parameter to set time/date - 2895 0DD6' 21 DEFB 21H ; ..and fall thru to GSTD - - 2897 ; Get Time/Date to string whose address is supplied by the user - - 2899 0DD7' 0E 00 CMD98: LD C,0 ; Set parameter to get time/date - 2900 0DD9' 2A 0016' GSTD: LD HL,(GSTIME) ; Get time/date get/set routine address - 2901 0DDC' E5 PUSH HL ; ..to stack for pseudo "Jump" - 2902 0DDD' F6 FF DOTDER: OR 0FFH ; Save 1 T state while setting flags - 2903 0DDF' C9 RET ; Vector to service routine - 2904 ENDIF ;Zs - ZMAC Relocating Macro Assembler v 1.7, page 60 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 2906 IF NOT ZS - 3105 ENDIF - - 3107 ; Calculate checksum of 127 bytes addressed by HL. Return with HL - 3108 ; pointing to the 128th byte. - - 3110 0DE0' 06 7F CKS127: LD B,127 ; Test 1st 127 bytes - 3111 0DE2' 86 CKSLP: ADD A,(HL) ; Sum all bytes to A - 3112 0DE3' 23 INC HL - 3113 0DE4' 10 FC' DJNZ CKSLP - 3114 0DE6' C9 RET - - ZMAC Relocating Macro Assembler v 1.7, page 61 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 3117 ;************************************************************** - 3118 ;* Z S D O S H i g h R A M D a t a * - 3119 ;************************************************************** - - 3121 ; High RAM area. These locations are not stored by an IOP or - 3122 ; BackGrounder. - - 3124 0DE7' CODEND: - 3125 IF ROM - 3126 IF $-ZSDOS GT 0E00H - 3130 ELSE - 3131 IF ZS - 3132 IF $-ZSDOS GT 0DF1H - 3134 ENDIF ;$-zsdos - 3135 ORG ZSDOS+0DF1H ; Set here for Internal Path - 3137 IF $-ZSDOS GT 0DF9H - 3141 ENDIF ;Zs - 3142 ENDIF ;Rom - 3143 0DF1' HIRAM: - 3144 IF ZS - 3145 0DF1' 01 00 IPATH: DEFB 1,0 ; Internal Path = Drive A, User 0 - 3146 0DF3' 0000 0000 DEFW 00,00 ; ..two more blank entries - 3147 0DF7' 00 DEFB 0 ; ...and ending Null - 3148 0DF8' 0000 TDFVCT: DEFW 00 ; Time and date file vector - 3151 ENDIF ;Zs - 3152 0DFA' 0000 LOGIN: DEFW 00 ; Login vector - 3153 0DFC' 0000 DSKWP: DEFW 00 ; Disk write protect vector - 3154 0DFE' 0000 HDLOG: DEFW 00 ; Fixed disk login vector - - 3156 IF ROM - 3158 ELSE - 3159 = 000A FREEMEM EQU HIRAM-CODEND - 3160 ENDIF ;Rom - - 3162 ; Variables for use with BGii - - 3164 = 0008 BGLOWL EQU BGHIRAM-BGLORAM ; Size of Low RAM save - 3165 = 006D BGHIL EQU BGRAMTOP-BGHIRAM ; Size of Hi RAM save - - 3167 END ; End program -  \ No newline at end of file diff --git a/ZSDOS/zsdos.rel b/ZSDOS/zsdos.rel deleted file mode 100644 index bc5ecfedf71532c7bc93d9c601f5034b77836721..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4224 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 n5QuCp?7RN$%VLi|S