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 93f261af..0688151d 100644 Binary files a/Doc/Source/RomWBW Architecture.docx and b/Doc/Source/RomWBW Architecture.docx differ diff --git a/Support/PropIO2_test/PropIO2.eeprom b/Hardware/Experimental/PropIO2_test/PropIO2.eeprom similarity index 100% rename from Support/PropIO2_test/PropIO2.eeprom rename to Hardware/Experimental/PropIO2_test/PropIO2.eeprom diff --git a/Support/PropIO2_test/Spin/Build.cmd b/Hardware/Experimental/PropIO2_test/Spin/Build.cmd similarity index 100% rename from Support/PropIO2_test/Spin/Build.cmd rename to Hardware/Experimental/PropIO2_test/Spin/Build.cmd diff --git a/Support/ParPortProp/Spin/E555_SPKEngine.spin b/Hardware/Experimental/PropIO2_test/Spin/E555_SPKEngine.spin similarity index 100% rename from Support/ParPortProp/Spin/E555_SPKEngine.spin rename to Hardware/Experimental/PropIO2_test/Spin/E555_SPKEngine.spin diff --git a/Support/ParPortProp/Spin/Keyboard.spin b/Hardware/Experimental/PropIO2_test/Spin/Keyboard.spin similarity index 100% rename from Support/ParPortProp/Spin/Keyboard.spin rename to Hardware/Experimental/PropIO2_test/Spin/Keyboard.spin diff --git a/Support/PropIO2_test/Spin/Parallax Serial Terminal.spin b/Hardware/Experimental/PropIO2_test/Spin/Parallax Serial Terminal.spin similarity index 100% rename from Support/PropIO2_test/Spin/Parallax Serial Terminal.spin rename to Hardware/Experimental/PropIO2_test/Spin/Parallax Serial Terminal.spin diff --git a/Support/PropIO2_test/Spin/PropIO2.list b/Hardware/Experimental/PropIO2_test/Spin/PropIO2.list similarity index 100% rename from Support/PropIO2_test/Spin/PropIO2.list rename to Hardware/Experimental/PropIO2_test/Spin/PropIO2.list diff --git a/Support/PropIO2_test/Spin/PropIO2.spin b/Hardware/Experimental/PropIO2_test/Spin/PropIO2.spin similarity index 100% rename from Support/PropIO2_test/Spin/PropIO2.spin rename to Hardware/Experimental/PropIO2_test/Spin/PropIO2.spin diff --git a/Support/ParPortProp/Spin/safe_spi.spin b/Hardware/Experimental/PropIO2_test/Spin/safe_spi.spin similarity index 100% rename from Support/ParPortProp/Spin/safe_spi.spin rename to Hardware/Experimental/PropIO2_test/Spin/safe_spi.spin diff --git a/Support/PropIO2_test/Spin/vga8x8d.spin b/Hardware/Experimental/PropIO2_test/Spin/vga8x8d.spin similarity index 100% rename from Support/PropIO2_test/Spin/vga8x8d.spin rename to Hardware/Experimental/PropIO2_test/Spin/vga8x8d.spin diff --git a/Support/PropIO2_test/Spin/vgacolour.spin b/Hardware/Experimental/PropIO2_test/Spin/vgacolour.spin similarity index 100% rename from Support/PropIO2_test/Spin/vgacolour.spin rename to Hardware/Experimental/PropIO2_test/Spin/vgacolour.spin diff --git a/Support/PropIO2_test/Spin/vt100.spin b/Hardware/Experimental/PropIO2_test/Spin/vt100.spin similarity index 100% rename from Support/PropIO2_test/Spin/vt100.spin rename to Hardware/Experimental/PropIO2_test/Spin/vt100.spin diff --git a/Support/vga2/Build.cmd b/Hardware/Experimental/vga2/Build.cmd similarity index 100% rename from Support/vga2/Build.cmd rename to Hardware/Experimental/vga2/Build.cmd diff --git a/Support/vga2/Makefile b/Hardware/Experimental/vga2/Makefile similarity index 100% rename from Support/vga2/Makefile rename to Hardware/Experimental/vga2/Makefile diff --git a/Support/vga2/bstc.exe b/Hardware/Experimental/vga2/bstc.exe similarity index 100% rename from Support/vga2/bstc.exe rename to Hardware/Experimental/vga2/bstc.exe diff --git a/Support/vga2/vga8x8d.spin b/Hardware/Experimental/vga2/vga8x8d.spin similarity index 100% rename from Support/vga2/vga8x8d.spin rename to Hardware/Experimental/vga2/vga8x8d.spin diff --git a/Support/vga2/vgacolour.spin b/Hardware/Experimental/vga2/vgacolour.spin similarity index 100% rename from Support/vga2/vgacolour.spin rename to Hardware/Experimental/vga2/vgacolour.spin diff --git a/Support/vga2/vgademo.eeprom b/Hardware/Experimental/vga2/vgademo.eeprom similarity index 100% rename from Support/vga2/vgademo.eeprom rename to Hardware/Experimental/vga2/vgademo.eeprom diff --git a/Support/vga2/vgademo.list b/Hardware/Experimental/vga2/vgademo.list similarity index 100% rename from Support/vga2/vgademo.list rename to Hardware/Experimental/vga2/vgademo.list diff --git a/Support/vga2/vgademo.spin b/Hardware/Experimental/vga2/vgademo.spin similarity index 100% rename from Support/vga2/vgademo.spin rename to Hardware/Experimental/vga2/vgademo.spin diff --git a/Support/vga2/vt100.spin b/Hardware/Experimental/vga2/vt100.spin similarity index 100% rename from Support/vga2/vt100.spin rename to Hardware/Experimental/vga2/vt100.spin diff --git a/Support/ParPortProp/ParPortProp.eeprom b/Hardware/ParPortProp/ParPortProp.eeprom similarity index 100% rename from Support/ParPortProp/ParPortProp.eeprom rename to Hardware/ParPortProp/ParPortProp.eeprom diff --git a/Support/PropIO2/Spin/E555_SPKEngine.spin b/Hardware/ParPortProp/Spin/E555_SPKEngine.spin similarity index 100% rename from Support/PropIO2/Spin/E555_SPKEngine.spin rename to Hardware/ParPortProp/Spin/E555_SPKEngine.spin diff --git a/Support/ParPortProp/Spin/FullDuplexSerial.spin b/Hardware/ParPortProp/Spin/FullDuplexSerial.spin similarity index 100% rename from Support/ParPortProp/Spin/FullDuplexSerial.spin rename to Hardware/ParPortProp/Spin/FullDuplexSerial.spin diff --git a/Support/ParPortProp/Spin/FullDuplexSerialNull.spin b/Hardware/ParPortProp/Spin/FullDuplexSerialNull.spin similarity index 100% rename from Support/ParPortProp/Spin/FullDuplexSerialNull.spin rename to Hardware/ParPortProp/Spin/FullDuplexSerialNull.spin diff --git a/Support/PropIO/Spin/Keyboard.spin b/Hardware/ParPortProp/Spin/Keyboard.spin similarity index 100% rename from Support/PropIO/Spin/Keyboard.spin rename to Hardware/ParPortProp/Spin/Keyboard.spin diff --git a/Support/ParPortProp/Spin/ParPortProp.spin b/Hardware/ParPortProp/Spin/ParPortProp.spin similarity index 100% rename from Support/ParPortProp/Spin/ParPortProp.spin rename to Hardware/ParPortProp/Spin/ParPortProp.spin diff --git a/Support/ParPortProp/Spin/Parallax Serial Terminal Null.spin b/Hardware/ParPortProp/Spin/Parallax Serial Terminal Null.spin similarity index 100% rename from Support/ParPortProp/Spin/Parallax Serial Terminal Null.spin rename to Hardware/ParPortProp/Spin/Parallax Serial Terminal Null.spin diff --git a/Support/ParPortProp/Spin/Parallax Serial Terminal.spin b/Hardware/ParPortProp/Spin/Parallax Serial Terminal.spin similarity index 100% rename from Support/ParPortProp/Spin/Parallax Serial Terminal.spin rename to Hardware/ParPortProp/Spin/Parallax Serial Terminal.spin diff --git a/Support/ParPortProp/Spin/VGA_1024.spin b/Hardware/ParPortProp/Spin/VGA_1024.spin similarity index 100% rename from Support/ParPortProp/Spin/VGA_1024.spin rename to Hardware/ParPortProp/Spin/VGA_1024.spin diff --git a/Support/ParPortProp/Spin/VGA_HiRes_Text.spin b/Hardware/ParPortProp/Spin/VGA_HiRes_Text.spin similarity index 100% rename from Support/ParPortProp/Spin/VGA_HiRes_Text.spin rename to Hardware/ParPortProp/Spin/VGA_HiRes_Text.spin diff --git a/Support/PropIO/Spin/safe_spi.spin b/Hardware/ParPortProp/Spin/safe_spi.spin similarity index 100% rename from Support/PropIO/Spin/safe_spi.spin rename to Hardware/ParPortProp/Spin/safe_spi.spin diff --git a/Support/ParPortProp/TstPPP.com b/Hardware/ParPortProp/TstPPP.com similarity index 100% rename from Support/ParPortProp/TstPPP.com rename to Hardware/ParPortProp/TstPPP.com diff --git a/Support/PropIO/PropIO.eeprom b/Hardware/PropIO/PropIO.eeprom similarity index 100% rename from Support/PropIO/PropIO.eeprom rename to Hardware/PropIO/PropIO.eeprom diff --git a/Support/PropIO2/Spin/Keyboard.spin b/Hardware/PropIO/Spin/Keyboard.spin similarity index 100% rename from Support/PropIO2/Spin/Keyboard.spin rename to Hardware/PropIO/Spin/Keyboard.spin diff --git a/Support/PropIO/Spin/Parallax Serial Terminal.spin b/Hardware/PropIO/Spin/Parallax Serial Terminal.spin similarity index 100% rename from Support/PropIO/Spin/Parallax Serial Terminal.spin rename to Hardware/PropIO/Spin/Parallax Serial Terminal.spin diff --git a/Support/PropIO/Spin/PropIO.spin b/Hardware/PropIO/Spin/PropIO.spin similarity index 100% rename from Support/PropIO/Spin/PropIO.spin rename to Hardware/PropIO/Spin/PropIO.spin diff --git a/Support/PropIO/Spin/VGA_1024.spin b/Hardware/PropIO/Spin/VGA_1024.spin similarity index 100% rename from Support/PropIO/Spin/VGA_1024.spin rename to Hardware/PropIO/Spin/VGA_1024.spin diff --git a/Support/PropIO/Spin/VGA_HiRes_Text.spin b/Hardware/PropIO/Spin/VGA_HiRes_Text.spin similarity index 100% rename from Support/PropIO/Spin/VGA_HiRes_Text.spin rename to Hardware/PropIO/Spin/VGA_HiRes_Text.spin diff --git a/Support/PropIO2/Spin/safe_spi.spin b/Hardware/PropIO/Spin/safe_spi.spin similarity index 100% rename from Support/PropIO2/Spin/safe_spi.spin rename to Hardware/PropIO/Spin/safe_spi.spin diff --git a/Support/PropIO2/PropIO2.eeprom b/Hardware/PropIO2/PropIO2.eeprom similarity index 100% rename from Support/PropIO2/PropIO2.eeprom rename to Hardware/PropIO2/PropIO2.eeprom diff --git a/Support/PropIO2_test/Spin/E555_SPKEngine.spin b/Hardware/PropIO2/Spin/E555_SPKEngine.spin similarity index 100% rename from Support/PropIO2_test/Spin/E555_SPKEngine.spin rename to Hardware/PropIO2/Spin/E555_SPKEngine.spin diff --git a/Support/PropIO2_test/Spin/Keyboard.spin b/Hardware/PropIO2/Spin/Keyboard.spin similarity index 100% rename from Support/PropIO2_test/Spin/Keyboard.spin rename to Hardware/PropIO2/Spin/Keyboard.spin diff --git a/Support/PropIO2/Spin/Parallax Serial Terminal.spin b/Hardware/PropIO2/Spin/Parallax Serial Terminal.spin similarity index 100% rename from Support/PropIO2/Spin/Parallax Serial Terminal.spin rename to Hardware/PropIO2/Spin/Parallax Serial Terminal.spin diff --git a/Support/PropIO2/Spin/PropIO2.spin b/Hardware/PropIO2/Spin/PropIO2.spin similarity index 100% rename from Support/PropIO2/Spin/PropIO2.spin rename to Hardware/PropIO2/Spin/PropIO2.spin diff --git a/Support/PropIO2/Spin/VGA_1024.spin b/Hardware/PropIO2/Spin/VGA_1024.spin similarity index 100% rename from Support/PropIO2/Spin/VGA_1024.spin rename to Hardware/PropIO2/Spin/VGA_1024.spin diff --git a/Support/PropIO2/Spin/VGA_HiRes_Text.spin b/Hardware/PropIO2/Spin/VGA_HiRes_Text.spin similarity index 100% rename from Support/PropIO2/Spin/VGA_HiRes_Text.spin rename to Hardware/PropIO2/Spin/VGA_HiRes_Text.spin diff --git a/Support/PropIO2_test/Spin/safe_spi.spin b/Hardware/PropIO2/Spin/safe_spi.spin similarity index 100% rename from Support/PropIO2_test/Spin/safe_spi.spin rename to Hardware/PropIO2/Spin/safe_spi.spin diff --git a/Support/ReadMe.txt b/Hardware/ReadMe.txt similarity index 54% rename from Support/ReadMe.txt rename to Hardware/ReadMe.txt index 7b930aff..86ce8545 100644 --- a/Support/ReadMe.txt +++ b/Hardware/ReadMe.txt @@ -1,18 +1,14 @@ -The Support directory contains files that may be needed to complete +The Hardware directory contains files that may be needed to complete your system setup that would not be appropriate to include in the ROM itself or in the ROM disk. Contents -------- -vdu.rom: ROM image for VDU onboard EPROM +VDU\vdu.rom: ROM image for VDU onboard EPROM PropIO\PropIO.eeprom: PropIO firmware for use with RomWBW PropIO2\PropIO2.eeprom: PropIO V2 firmware for use with RomWBW ParPortProp\ParPortProp.eeprom: ParPortProp firmware for use with RomWBW - -ZSDOS: Directory contains updated ZSDOS distribution files (see ..\Doc\ZSystem.txt) - -Clock: Directory contains ZSystem clock drivers \ No newline at end of file diff --git a/Support/vdu.rom b/Hardware/VDU/vdu.rom similarity index 100% rename from Support/vdu.rom rename to Hardware/VDU/vdu.rom diff --git a/Make.cmd b/Make.cmd deleted file mode 100644 index 666aa393..00000000 --- a/Make.cmd +++ /dev/null @@ -1,4 +0,0 @@ -@echo off -pushd Source -call .\Make.cmd %* -popd \ No newline at end of file diff --git a/ReadMe.txt b/ReadMe.txt index 71a43662..35c728ba 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -9,7 +9,7 @@ Builders: Wayne Warthen (wwarthen@gmail.com) David Giles (vk5dg@internode.on.net) Updated: 2014-08-30 -Version: 2.6.0 +Version: 2.6.1 This is an adaptation of CP/M-80 2.2 and ZSDOS/ZCPR targeting ROMs for all N8VEM Z80 hardware variations @@ -90,8 +90,8 @@ UNA Variant ----------- RomWBW will now run under it's native BIOS (HBIOS) or -under UNA BIOS (UBIOS). There are pre-build ROM -images for UNA in the OutputUNA directory. +under UNA BIOS (UBIOS). There are pre-built ROM +images for UNA in the Output directory. CP/M vs. ZSystem ---------------- @@ -100,19 +100,16 @@ There are two OS variants included in this distribution and you may choose which one you prefer to use. The traditional Digital Research (DRI) CP/M code is the first -choice. The ROM images that DO NOT end in "_z" are built -with the traditional CP/M components from DRI. The Doc +choice. The Doc directory contains a manual for CP/M usage (cpm22-m.pdf). If you are new to the N8VEM systems, I would currently -recommend using the CP/M ROMs to start with simply +recommend using the CP/M variant to start with simply because they have gone through more testing and you are less likely to encounter problems. The other choice is to use the most popular non-DRI CP/M "clone" which is generally referred to as -ZSystem. The ROM images with a "_z" suffix are built -using the ZSystem components (specifically ZSDOS 1.2 -and ZCPR 1.0). These are intended to be +ZSystem. These are intended to be functionally equivalent to CP/M and should run all CP/M 2.2 code. They are optimized for the Z80 CPU (as opposed to 8080 for CP/M) and have some potentially @@ -120,8 +117,9 @@ useful improvements. Please refer to the Doc directory and look at the files for zsdos and zcpr (zsdos.pdf & zcpr.doc as well as ZSystem.txt). -ZSystem builds contain ZSDOS specific files in the -ROM Disk. +Both variants are now included in the pre-built ROM images. +You will be given the choice to boot either CP/M or +ZSystem at startup. Building a Custom ROM --------------------- diff --git a/RomDsk/CPM_1024KB/CR.COM b/RomDsk/CPM_1024KB/CR.COM deleted file mode 100644 index 8a824bcc..00000000 Binary files a/RomDsk/CPM_1024KB/CR.COM and /dev/null differ diff --git a/RomDsk/CPM_1024KB/DDTZ.DOC b/RomDsk/CPM_1024KB/DDTZ.DOC deleted file mode 100644 index e4470528..00000000 --- a/RomDsk/CPM_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/CPM_1024KB/MAC.COM b/RomDsk/CPM_1024KB/MAC.COM deleted file mode 100644 index f49e835a..00000000 Binary files a/RomDsk/CPM_1024KB/MAC.COM and /dev/null differ diff --git a/RomDsk/CPM_1024KB/UNCR.COM b/RomDsk/CPM_1024KB/UNCR.COM deleted file mode 100644 index 42385ddd..00000000 Binary files a/RomDsk/CPM_1024KB/UNCR.COM and /dev/null differ diff --git a/RomDsk/CPM_1024KB/ZDE40.COM b/RomDsk/CPM_1024KB/ZDE40.COM deleted file mode 100644 index 6a2d37de..00000000 Binary files a/RomDsk/CPM_1024KB/ZDE40.COM and /dev/null differ diff --git a/RomDsk/CPM_512KB/CR.COM b/RomDsk/CPM_512KB/CR.COM deleted file mode 100644 index 8a824bcc..00000000 Binary files a/RomDsk/CPM_512KB/CR.COM and /dev/null differ diff --git a/RomDsk/CPM_512KB/DIRX.COM b/RomDsk/CPM_512KB/DIRX.COM deleted file mode 100644 index 413bceca..00000000 Binary files a/RomDsk/CPM_512KB/DIRX.COM and /dev/null differ diff --git a/RomDsk/CPM_512KB/LIB.COM b/RomDsk/CPM_512KB/LIB.COM deleted file mode 100644 index 45d7fb21..00000000 Binary files a/RomDsk/CPM_512KB/LIB.COM and /dev/null differ diff --git a/RomDsk/CPM_512KB/SID.COM b/RomDsk/CPM_512KB/SID.COM deleted file mode 100644 index 3b073ba5..00000000 Binary files a/RomDsk/CPM_512KB/SID.COM and /dev/null differ diff --git a/RomDsk/CPM_512KB/UNCR.COM b/RomDsk/CPM_512KB/UNCR.COM deleted file mode 100644 index 42385ddd..00000000 Binary files a/RomDsk/CPM_512KB/UNCR.COM and /dev/null differ diff --git a/RomDsk/CPM_512KB/UNZIP.COM b/RomDsk/CPM_512KB/UNZIP.COM deleted file mode 100644 index afde7204..00000000 Binary files a/RomDsk/CPM_512KB/UNZIP.COM and /dev/null differ diff --git a/RomDsk/CPM_512KB/ZDE40.COM b/RomDsk/CPM_512KB/ZDE40.COM deleted file mode 100644 index 6a2d37de..00000000 Binary files a/RomDsk/CPM_512KB/ZDE40.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/ASM.COM b/RomDsk/ZSYS_1024KB/ASM.COM deleted file mode 100644 index a63e5aec..00000000 Binary files a/RomDsk/ZSYS_1024KB/ASM.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/CLRDIR.COM b/RomDsk/ZSYS_1024KB/CLRDIR.COM deleted file mode 100644 index d1f2a7d6..00000000 Binary files a/RomDsk/ZSYS_1024KB/CLRDIR.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/CR.COM b/RomDsk/ZSYS_1024KB/CR.COM deleted file mode 100644 index 8a824bcc..00000000 Binary files a/RomDsk/ZSYS_1024KB/CR.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/DDT.COM b/RomDsk/ZSYS_1024KB/DDT.COM deleted file mode 100644 index 83f8603f..00000000 Binary files a/RomDsk/ZSYS_1024KB/DDT.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/DDTZ.COM b/RomDsk/ZSYS_1024KB/DDTZ.COM deleted file mode 100644 index e30a34c0..00000000 Binary files a/RomDsk/ZSYS_1024KB/DDTZ.COM and /dev/null differ 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 87b89d75..00000000 Binary files a/RomDsk/ZSYS_1024KB/DIF.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/DUMP.COM b/RomDsk/ZSYS_1024KB/DUMP.COM deleted file mode 100644 index 03a77c3c..00000000 Binary files a/RomDsk/ZSYS_1024KB/DUMP.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/ED.COM b/RomDsk/ZSYS_1024KB/ED.COM deleted file mode 100644 index a0f0f541..00000000 Binary files a/RomDsk/ZSYS_1024KB/ED.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/FLASH.COM b/RomDsk/ZSYS_1024KB/FLASH.COM deleted file mode 100644 index bde88e28..00000000 Binary files a/RomDsk/ZSYS_1024KB/FLASH.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/LBREXT.COM b/RomDsk/ZSYS_1024KB/LBREXT.COM deleted file mode 100644 index c0c950e3..00000000 Binary files a/RomDsk/ZSYS_1024KB/LBREXT.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/LIB.COM b/RomDsk/ZSYS_1024KB/LIB.COM deleted file mode 100644 index 45d7fb21..00000000 Binary files a/RomDsk/ZSYS_1024KB/LIB.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/LINK.COM b/RomDsk/ZSYS_1024KB/LINK.COM deleted file mode 100644 index e188fb92..00000000 Binary files a/RomDsk/ZSYS_1024KB/LINK.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/LOAD.COM b/RomDsk/ZSYS_1024KB/LOAD.COM deleted file mode 100644 index b9601e00..00000000 Binary files a/RomDsk/ZSYS_1024KB/LOAD.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/MAC.COM b/RomDsk/ZSYS_1024KB/MAC.COM deleted file mode 100644 index f49e835a..00000000 Binary files a/RomDsk/ZSYS_1024KB/MAC.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/MBASIC.COM b/RomDsk/ZSYS_1024KB/MBASIC.COM deleted file mode 100644 index c9ec3cd3..00000000 Binary files a/RomDsk/ZSYS_1024KB/MBASIC.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/NULU.COM b/RomDsk/ZSYS_1024KB/NULU.COM deleted file mode 100644 index fc5594b1..00000000 Binary files a/RomDsk/ZSYS_1024KB/NULU.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/PIP.COM b/RomDsk/ZSYS_1024KB/PIP.COM deleted file mode 100644 index 4b2ce4b6..00000000 Binary files a/RomDsk/ZSYS_1024KB/PIP.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/RMAC.COM b/RomDsk/ZSYS_1024KB/RMAC.COM deleted file mode 100644 index 9ab7206b..00000000 Binary files a/RomDsk/ZSYS_1024KB/RMAC.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/SID.COM b/RomDsk/ZSYS_1024KB/SID.COM deleted file mode 100644 index 3b073ba5..00000000 Binary files a/RomDsk/ZSYS_1024KB/SID.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/STAT.COM b/RomDsk/ZSYS_1024KB/STAT.COM deleted file mode 100644 index 1de359f2..00000000 Binary files a/RomDsk/ZSYS_1024KB/STAT.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/SUBMIT.COM b/RomDsk/ZSYS_1024KB/SUBMIT.COM deleted file mode 100644 index 2e788827..00000000 Binary files a/RomDsk/ZSYS_1024KB/SUBMIT.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/SUPERSUB.COM b/RomDsk/ZSYS_1024KB/SUPERSUB.COM deleted file mode 100644 index a25d60a6..00000000 Binary files a/RomDsk/ZSYS_1024KB/SUPERSUB.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/UNARC.COM b/RomDsk/ZSYS_1024KB/UNARC.COM deleted file mode 100644 index 8cc90746..00000000 Binary files a/RomDsk/ZSYS_1024KB/UNARC.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/UNCR.COM b/RomDsk/ZSYS_1024KB/UNCR.COM deleted file mode 100644 index 42385ddd..00000000 Binary files a/RomDsk/ZSYS_1024KB/UNCR.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/UNZIP.COM b/RomDsk/ZSYS_1024KB/UNZIP.COM deleted file mode 100644 index afde7204..00000000 Binary files a/RomDsk/ZSYS_1024KB/UNZIP.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/XSUB.COM b/RomDsk/ZSYS_1024KB/XSUB.COM deleted file mode 100644 index 15e86abf..00000000 Binary files a/RomDsk/ZSYS_1024KB/XSUB.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/ZAP.COM b/RomDsk/ZSYS_1024KB/ZAP.COM deleted file mode 100644 index 47ffcbb8..00000000 Binary files a/RomDsk/ZSYS_1024KB/ZAP.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/ZDE.COM b/RomDsk/ZSYS_1024KB/ZDE.COM deleted file mode 100644 index 9bc493c3..00000000 Binary files a/RomDsk/ZSYS_1024KB/ZDE.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/ZDE40.COM b/RomDsk/ZSYS_1024KB/ZDE40.COM deleted file mode 100644 index 6a2d37de..00000000 Binary files a/RomDsk/ZSYS_1024KB/ZDE40.COM and /dev/null differ diff --git a/RomDsk/ZSYS_1024KB/ZDENST.COM b/RomDsk/ZSYS_1024KB/ZDENST.COM deleted file mode 100644 index 8ccc9767..00000000 Binary files a/RomDsk/ZSYS_1024KB/ZDENST.COM and /dev/null differ diff --git a/RomDsk/ZSYS_512KB/CLRDIR.COM b/RomDsk/ZSYS_512KB/CLRDIR.COM deleted file mode 100644 index d1f2a7d6..00000000 Binary files a/RomDsk/ZSYS_512KB/CLRDIR.COM and /dev/null differ diff --git a/RomDsk/ZSYS_512KB/DDT.COM b/RomDsk/ZSYS_512KB/DDT.COM deleted file mode 100644 index 83f8603f..00000000 Binary files a/RomDsk/ZSYS_512KB/DDT.COM and /dev/null differ diff --git a/RomDsk/ZSYS_512KB/DIF.COM b/RomDsk/ZSYS_512KB/DIF.COM deleted file mode 100644 index 87b89d75..00000000 Binary files a/RomDsk/ZSYS_512KB/DIF.COM and /dev/null differ diff --git a/RomDsk/ZSYS_512KB/DUMP.COM b/RomDsk/ZSYS_512KB/DUMP.COM deleted file mode 100644 index 03a77c3c..00000000 Binary files a/RomDsk/ZSYS_512KB/DUMP.COM and /dev/null differ diff --git a/RomDsk/ZSYS_512KB/ED.COM b/RomDsk/ZSYS_512KB/ED.COM deleted file mode 100644 index a0f0f541..00000000 Binary files a/RomDsk/ZSYS_512KB/ED.COM and /dev/null differ diff --git a/RomDsk/ZSYS_512KB/FLASH.COM b/RomDsk/ZSYS_512KB/FLASH.COM deleted file mode 100644 index bde88e28..00000000 Binary files a/RomDsk/ZSYS_512KB/FLASH.COM and /dev/null differ diff --git a/RomDsk/ZSYS_512KB/LBREXT.COM b/RomDsk/ZSYS_512KB/LBREXT.COM deleted file mode 100644 index c0c950e3..00000000 Binary files a/RomDsk/ZSYS_512KB/LBREXT.COM and /dev/null differ diff --git a/RomDsk/ZSYS_512KB/LOAD.COM b/RomDsk/ZSYS_512KB/LOAD.COM deleted file mode 100644 index b9601e00..00000000 Binary files a/RomDsk/ZSYS_512KB/LOAD.COM and /dev/null differ diff --git a/RomDsk/ZSYS_512KB/NULU.COM b/RomDsk/ZSYS_512KB/NULU.COM deleted file mode 100644 index fc5594b1..00000000 Binary files a/RomDsk/ZSYS_512KB/NULU.COM and /dev/null differ diff --git a/RomDsk/ZSYS_512KB/PIP.COM b/RomDsk/ZSYS_512KB/PIP.COM deleted file mode 100644 index 4b2ce4b6..00000000 Binary files a/RomDsk/ZSYS_512KB/PIP.COM and /dev/null differ diff --git a/RomDsk/ZSYS_512KB/STAT.COM b/RomDsk/ZSYS_512KB/STAT.COM deleted file mode 100644 index 1de359f2..00000000 Binary files a/RomDsk/ZSYS_512KB/STAT.COM and /dev/null differ diff --git a/RomDsk/ZSYS_512KB/SUBMIT.COM b/RomDsk/ZSYS_512KB/SUBMIT.COM deleted file mode 100644 index 2e788827..00000000 Binary files a/RomDsk/ZSYS_512KB/SUBMIT.COM and /dev/null differ diff --git a/RomDsk/ZSYS_512KB/SUPERSUB.COM b/RomDsk/ZSYS_512KB/SUPERSUB.COM deleted file mode 100644 index a25d60a6..00000000 Binary files a/RomDsk/ZSYS_512KB/SUPERSUB.COM and /dev/null differ diff --git a/RomDsk/ZSYS_512KB/UNARC.COM b/RomDsk/ZSYS_512KB/UNARC.COM deleted file mode 100644 index 8cc90746..00000000 Binary files a/RomDsk/ZSYS_512KB/UNARC.COM and /dev/null differ diff --git a/RomDsk/ZSYS_512KB/UNCR.COM b/RomDsk/ZSYS_512KB/UNCR.COM deleted file mode 100644 index 42385ddd..00000000 Binary files a/RomDsk/ZSYS_512KB/UNCR.COM and /dev/null differ diff --git a/RomDsk/ZSYS_512KB/XSUB.COM b/RomDsk/ZSYS_512KB/XSUB.COM deleted file mode 100644 index 15e86abf..00000000 Binary files a/RomDsk/ZSYS_512KB/XSUB.COM and /dev/null differ diff --git a/RomDsk/ZSYS_512KB/ZAP.COM b/RomDsk/ZSYS_512KB/ZAP.COM deleted file mode 100644 index 47ffcbb8..00000000 Binary files a/RomDsk/ZSYS_512KB/ZAP.COM and /dev/null differ diff --git a/RomDsk/ZSYS_512KB/ZDE.COM b/RomDsk/ZSYS_512KB/ZDE.COM deleted file mode 100644 index 9bc493c3..00000000 Binary files a/RomDsk/ZSYS_512KB/ZDE.COM and /dev/null differ diff --git a/RomDsk/cfg_mk4_std/SURVEY.COM b/RomDsk/cfg_mk4_std/SURVEY.COM deleted file mode 100644 index 2b0bf4e4..00000000 Binary files a/RomDsk/cfg_mk4_std/SURVEY.COM and /dev/null differ diff --git a/RomDsk/cfg_n8_2312/SURVEY.COM b/RomDsk/cfg_n8_2312/SURVEY.COM deleted file mode 100644 index 2b0bf4e4..00000000 Binary files a/RomDsk/cfg_n8_2312/SURVEY.COM and /dev/null differ diff --git a/RomDsk/cfg_n8_2511/SURVEY.COM b/RomDsk/cfg_n8_2511/SURVEY.COM deleted file mode 100644 index 2b0bf4e4..00000000 Binary files a/RomDsk/cfg_n8_2511/SURVEY.COM and /dev/null differ diff --git a/RomDsk/cfg_una_std/RTC.COM b/RomDsk/cfg_una_std/RTC.COM deleted file mode 100644 index 8c2b9812..00000000 Binary files a/RomDsk/cfg_una_std/RTC.COM and /dev/null differ diff --git a/RomDsk/cfg_una_std/SURVEY.COM b/RomDsk/cfg_una_std/SURVEY.COM deleted file mode 100644 index 2b0bf4e4..00000000 Binary files a/RomDsk/cfg_una_std/SURVEY.COM and /dev/null differ diff --git a/RomDsk/cfg_zeta_ppisd/SURVEY.COM b/RomDsk/cfg_zeta_ppisd/SURVEY.COM deleted file mode 100644 index 2b0bf4e4..00000000 Binary files a/RomDsk/cfg_zeta_ppisd/SURVEY.COM and /dev/null differ diff --git a/RomDsk/cfg_zeta_ppp/SURVEY.COM b/RomDsk/cfg_zeta_ppp/SURVEY.COM deleted file mode 100644 index 2b0bf4e4..00000000 Binary files a/RomDsk/cfg_zeta_ppp/SURVEY.COM and /dev/null differ diff --git a/RomDsk/cfg_zeta_std/SURVEY.COM b/RomDsk/cfg_zeta_std/SURVEY.COM deleted file mode 100644 index 2b0bf4e4..00000000 Binary files a/RomDsk/cfg_zeta_std/SURVEY.COM and /dev/null differ diff --git a/Sim.cfg b/Sim.cfg new file mode 100644 index 00000000..4bbcaae4 --- /dev/null +++ b/Sim.cfg @@ -0,0 +1,43 @@ +; $Id: n8vem 1969 2008-06-26 05:57:30Z hharte $ +; +; SIMH/AltairZ80 Configuration file for the N8VEM SBC +; http://groups.google.com/group/n8vem/web/n8vem-single-board-computer-home-page +; +; Copyright (c) 2008 Howard M. Harte + +set cpu z80 +;set throttle 4K +set cpu noaltairrom +set n8vem enabled debug=verbose +set debug debug.log + +; Console +set console telnet=23 + +; Configure Serial Port (Basic polled 16550 UART) +set sio tty +set sio port=68/0/00/00/00/F/00/T +set sio port=6D/0/01/00/20/F/00/F + +; Save ROM and RAM contents on exit +;d n8vem saverom 1 +;d n8vem saveram 1 + +; image file for ROM and RAM +echo ROM Image: '%1' +attach n8vem0 %1 + +; hard disks +set hdsk debug=read;write;verbose +attach hdsk0 hd0.img +attach hdsk1 hd1.img +set hdsk0 format=HDSK +set hdsk1 format=HDSK +set hdsk0 geom=T:520/N:256/S:512 +set hdsk1 geom=T:520/N:256/S:512 +set hdsk0 wrtenb +set hdsk1 wrtenb + +; start emulation +echo +go \ No newline at end of file diff --git a/Apps/Assign - Copy.asm b/Source/Apps/Assign - Copy.asm similarity index 100% rename from Apps/Assign - Copy.asm rename to Source/Apps/Assign - Copy.asm diff --git a/Apps/Assign.asm b/Source/Apps/Assign.asm similarity index 85% rename from Apps/Assign.asm rename to Source/Apps/Assign.asm index cbddc601..e6bc094c 100644 --- a/Apps/Assign.asm +++ b/Source/Apps/Assign.asm @@ -248,24 +248,27 @@ devlist: or a ; set flags jr nz,devlstu ; do UNA mode dev list ; - call crlf ; formatting - ld c,0 ; start with device 0 + ld b,$1a ; hbios func: diodevcnt + rst 08 ; call hbios, device count to B + ld c,0 ; use C for device index devlist1: ld de,indent ; indent call prtstr ; ... to look nice - ld a,c ; next device - rlca ; rotate to - rlca ; ... high - rlca ; ... nibble - rlca ; ... for device + push bc ; preserve loop control + ld b,$1b ; hbios func: diodevinf + rst 08 ; call hbios, return device/unit in C + ld a,c ; device/unit to A + push af ; save it call prtdev ; print device mnemonic - ld a,':' ; formatting + pop af ; get device/unit back + and $0f ; isolate unit num + call prtdecb ; append unit num + ld a,':' ; colon for device/unit format call prtchr ; print it - call crlf ; next line - inc c ; next device - ld a,c ; put in a - cp devcnt ; compare to max - jr nz,devlist1 ; loop if more to do + call crlf ; formatting + pop bc ; restore loop control + inc c ; next device index + djnz devlist1 ; loop as needed ret ; done ; devlstu: @@ -273,16 +276,17 @@ devlstu: ld b,0 ; use unit 0 to get count 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!!! +; call $fffd ; call una, b is assumed to be untouched!!! + rst 08 ; call una, b is assumed to be untouched!!! ld a,l ; unit count to a or a ; set flags ret z ; no units, return ld b,l ; unit count to b ld c,0 ; init unit index devlstu1: - push bc ; save loop control vars ld de,indent ; indent call prtstr ; ... to look nice + push bc ; save loop control vars ld a,c ; put unit num in A push af ; save it call prtdevu ; print the device name @@ -439,7 +443,7 @@ drvmap2: ; verify the unit is eligible for assignment (hard disk unit only!) call chktyp ; check it jp nz,errtyp ; abort with bad unit error ; - ; construct the requested dph table entry + ; construct the requested dph table entry ld a,c ; C has device num rlca ; move it to upper nibble rlca ; ... @@ -451,6 +455,13 @@ drvmap2: ; verify the unit is eligible for assignment (hard disk unit only!) ld c,a ; and save in C ld a,(slice) ; get the slice ld b,a ; and save in B +; + ; check for valid device/unit (supported by BIOS) + push bc ; save device/unit/slice + ld a,c ; device/unit to A + call chkdev ; device/unit OK? + pop bc ; restore device/unit/slice + jp nz,errdev ; invalid device specified ; ; resolve the CBIOS DPH table entry ld a,(dstdrv) ; dest drv num to A @@ -461,16 +472,6 @@ drvmap2: ; verify the unit is eligible for assignment (hard disk unit only!) rlca ; ... entry size of 4 call addhl ; adjust HL to point to entry ld (dstptr),hl ; save it -; - ; verify the drive letter being assigned is a hard disk - ld a,(hl) ; get the device/unit byte - rrca ; move device nibble to low nibble - rrca ; ... - rrca ; ... - rrca ; ... - and $0F ; and isolate device bits - call chktyp ; check it - jp nz,errtyp ; abort with bad device type error ; ; shove updated device/unit/slice into the entry ld (hl),c ; save device/unit byte @@ -491,16 +492,23 @@ drvmapu: ld b,a ; put in b ld d,0 ; preset type to 0 ld c,$48 ; una func: get disk type - call $fffd ; call una, b is assumed to be untouched!!! +; call $fffd ; call una, b is assumed to be untouched!!! + rst 08 ; call una, b is assumed to be untouched!!! ld a,d ; resultant device type to a cp $40 ; RAM/ROM jr z,drvmapu0 ; special case for RAM/ROM ld de,udevide ; assume IDE cp $41 ; IDE? jr z,drvmapu1 ; do compare + ld de,udevppide ; assume PPIDE + cp $42 ; PPIDE? + jr z,drvmapu1 ; do compare ld de,udevsd ; assume SD cp $43 ; SD? jr z,drvmapu1 ; do compare + ld de,udevdsd ; assume DSD + cp $44 ; DSD? + jr z,drvmapu1 ; do compare jp errdev ; error, invalid device name ; drvmapu0: @@ -509,7 +517,8 @@ drvmapu0: ld b,a ; unit num to B ld c,$45 ; UNA func: get disk info ld de,$9000 ; 512 byte buffer *** FIX!!! *** - call $FFFD ; call UNA +; call $fffd ; call UNA + rst 08 ; call UNA bit 7,b ; test RAM drive bit ld de,udevrom ; assume ROM jr z,drvmapu1 ; do compare @@ -521,6 +530,11 @@ drvmapu1: ld hl,tmpstr ; point HL to specified device name call strcmp ; compare jp nz,errdev ; no match, invalid device name +; + ; check for valid unit (supported by BIOS) + ld a,(unit) ; get specified unit + call chkdevu ; check validity + jp nz,errdev ; invalid device specified ; ; resolve the CBIOS DPH table entry ld a,(dstdrv) ; dest drv num to A @@ -600,7 +614,7 @@ showone: ld a,(hl) ; load device/unit call prtdev ; print device mnemonic ld a,(hl) ; load device/unit again - and $0F ; isolate unit num + and $0f ; isolate unit num call prtdecb ; print it inc hl ; point to slice num ld a,':' ; colon to separate slice @@ -615,7 +629,7 @@ showone: ; Force BDOS to reset (logout) all drives ; drvrst: - ld c,$0D ; BDOS Reset Disk function + ld c,$0d ; BDOS Reset Disk function call bdos ; do it ; xor a ; signal success @@ -633,7 +647,7 @@ prtdev: rrca ; ... rrca ; ... rrca ; ... into low nibble - and $0F ; mask out undesired bits + and $0f ; mask out undesired bits push hl ; save HL add a,a ; multiple A by two for word table ld hl,devtbl ; point to start of device name table @@ -654,7 +668,8 @@ prtdevu: ; UNA mode version of print device ld b,a ; B := unit num ld c,$48 ; UNA func: get disk type - call $FFFD ; call UNA +; call $fffd ; call UNA + rst 08 ; call UNA ld a,d ; disk type to A pop hl pop de @@ -665,9 +680,15 @@ prtdevu: cp $41 ; IDE? ld de,udevide ; load string jp z,prtstr ; if IDE, print and return + cp $42 ; PPIDE? + ld de,udevppide ; load string + jp z,prtstr ; if PPIDE, print and return cp $43 ; SD? ld de,udevsd ; load string jp z,prtstr ; if SD, print and return + cp $44 ; DSD? + ld de,udevdsd ; load string + jp z,prtstr ; if DSD, print and return ld de,udevunk ; load string for unknown jr prtstr ; and print it ; @@ -678,7 +699,8 @@ prtdevu1: ld b,e ; unit num to B ld c,$45 ; UNA func: get disk info ld de,$9000 ; 512 byte buffer *** FIX!!! *** - call $FFFD ; call UNA +; call $fffd ; call UNA + rst 08 ; call UNA bit 7,b ; test RAM drive bit pop hl pop bc @@ -699,6 +721,46 @@ chkdrv: cp a ; set Z to signal good ret ; and return ; +; Check that the device/unit value in A is valid +; according to active BIOS support. +; +; +chkdev: ; HBIOS variant + push af ; save incoming device/unit + ld b,$1a ; hbios func: diodevcnt + rst 08 ; call hbios, device count to B + ld c,0 ; use C for device index + pop af ; restore incoming device/unit +chkdev1: + push bc ; preserve loop control + push af ; save incoming device/unit + ld b,$1b ; hbios func: diodevinf + rst 08 ; call hbios, return device/unit in C + pop af ; restore incoming device/unit + cp c ; match to device/unit from BIOS list? + pop bc ; restore loop control + ret z ; yes, match, return with Z set + inc c ; next device list entry + djnz chkdev1 ; loop as needed + or $ff ; no match, signal error + ret ; done +; +chkdevu: ; UNA variant + ld b,a ; put in b + ld d,0 ; preset type to 0 + ld c,$48 ; una func: get disk type +; call $fffd ; call una + rst 08 ; call una + ld a,d ; resultant device type to a + or a ; set flags + jr z,chkdevu1 ; invalid if 0 + xor a + ret +; +chkdevu1: ; handle invalid unit + or $ff ; signal error + ret ; done +; ; Check that specified device is valid for a mapping operation ; Only hard disk devices are dynamically mappable because ; the DPH vector allocation sizes may not change. @@ -715,12 +777,17 @@ chktypu: ; UNA variant ld b,a ; put unit in b ld c,$48 ; una func: get disk type ld d,0 ; preset disk type to zero - call $fffd ; call UNA +; call $fffd ; call UNA + rst 08 ; call UNA ld a,d ; disk type to A cp $41 ; IDE? ret z ; OK + cp $42 ; PPIDE? + ret z ; OK cp $43 ; SD? ret z ; OK + cp $44 ; DSD? + ret z ; OK ; chkunit1: ; return error or $ff ; signal error @@ -798,7 +865,7 @@ hexascii: ; Convert low nibble of A to ascii hex ; hexconv: - and $0F ; low nibble only + and $0f ; low nibble only add a,$90 daa adc a,$40 @@ -985,7 +1052,7 @@ strcmp: ; The CBIOS function offset must be stored in the byte ; following the call instruction. ex: ; call cbios -; .db $0C ; offset of CONOUT CBIOS function +; .db $0c ; offset of CONOUT CBIOS function ; cbios: ex (sp),hl @@ -1028,7 +1095,7 @@ errver: ; CBIOS version is not as expected ld de,msgver jr err ; -errdrv: ; CBIOS version is not as expected +errdrv: ; Invalid drive letter specified push af ld de,msgdrv1 call prtstr @@ -1075,7 +1142,7 @@ err1: ; without the leading crlf ; err2: ; without the string call crlf ; print newline - or $FF ; signal error + or $ff ; signal error ret ; done ; ;=============================================================================== @@ -1091,7 +1158,7 @@ device .db 0 ; source device unit .db 0 ; source unit slice .db 0 ; source slice ; -unamod .db 0 ; $FF indicates UNA UBIOS active +unamod .db 0 ; $ff indicates UNA UBIOS active ; srcptr .dw 0 ; source pointer for copy dstptr .dw 0 ; destination pointer for copy @@ -1124,11 +1191,13 @@ dev15 .equ devunk ; devcnt .equ 10 ; 10 devices defined ; -udevram .db "RAM",0 -udevrom .db "ROM",0 -udevide .db "IDE",0 -udevsd .db "SD",0 -udevunk .db "UNK",0 +udevram .db "RAM",0 +udevrom .db "ROM",0 +udevide .db "IDE",0 +udevppide .db "PPIDE",0 +udevsd .db "SD",0 +udevdsd .db "DSD",0 +udevunk .db "UNK",0 ; stksav .dw 0 ; stack pointer saved at start .fill stksiz,0 ; stack @@ -1137,7 +1206,7 @@ stack .equ $ ; stack top ; Messages ; indent .db " ",0 -msgban1 .db "ASSIGN v0.9d for RomWBW CP/M 2.2, 23-Aug-2014",0 +msgban1 .db "ASSIGN v0.9e for RomWBW CP/M 2.2, 02-Sep-2014",0 msgban2 .db 13,10,"Copyright 2014, Wayne Warthen, GNU GPL v3",13,10,0 msghb .db " (HBIOS Mode)",0 msgub .db " (UBIOS Mode)",0 @@ -1154,7 +1223,7 @@ msgver .db "Unexpected CBIOS version",0 msgdrv1 .db "Invalid drive letter (",0 msgdrv2 .db ":)",0 msgswp .db "Invalid drive swap request",0 -msgdev .db "Invalid device name",0 +msgdev .db "Invalid device name (ASSIGN /L for device list)",0 msgnum .db "Unit or slice number invalid",0 msgtyp .db "Only hard drive devices can be reassigned",0 msgint .db "WARNING: Multiple drive letters reference one filesystem!",0 diff --git a/Apps/Build.cmd b/Source/Apps/Build.cmd similarity index 53% rename from Apps/Build.cmd rename to Source/Apps/Build.cmd index 5dd223b1..9ef27b3b 100644 --- a/Apps/Build.cmd +++ b/Source/Apps/Build.cmd @@ -1,14 +1,15 @@ @echo off - setlocal -set PATH=..\Tools\tasm32;..\Tools\zx;%PATH% +set TOOLS=../../Tools + +set PATH=%TOOLS%\tasm32;%TOOLS%\zx;%PATH% -set TASMTABS=..\Tools\tasm32 +set TASMTABS=%TOOLS%\tasm32 -set ZXBINDIR=../tools/cpm/bin/ -set ZXLIBDIR=../tools/cpm/lib/ -set ZXINCDIR=../tools/cpm/include/ +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 diff --git a/Apps/Clean.cmd b/Source/Apps/Clean.cmd similarity index 100% rename from Apps/Clean.cmd rename to Source/Apps/Clean.cmd diff --git a/Apps/Format.asm b/Source/Apps/Format.asm similarity index 100% rename from Apps/Format.asm rename to Source/Apps/Format.asm diff --git a/Apps/SysCopy.asm b/Source/Apps/SysCopy.asm similarity index 100% rename from Apps/SysCopy.asm rename to Source/Apps/SysCopy.asm diff --git a/Apps/SysGen.z80 b/Source/Apps/SysGen.z80 similarity index 100% rename from Apps/SysGen.z80 rename to Source/Apps/SysGen.z80 diff --git a/Apps/Talk.asm b/Source/Apps/Talk.asm similarity index 100% rename from Apps/Talk.asm rename to Source/Apps/Talk.asm diff --git a/Source/Blank1024KB-UNA.dat b/Source/BIOS/Blank1024KB-UNA.dat similarity index 100% rename from Source/Blank1024KB-UNA.dat rename to Source/BIOS/Blank1024KB-UNA.dat diff --git a/Source/Blank1024KB-UNALOAD.dat b/Source/BIOS/Blank1024KB-UNALOAD.dat similarity index 100% rename from Source/Blank1024KB-UNALOAD.dat rename to Source/BIOS/Blank1024KB-UNALOAD.dat diff --git a/Source/Blank512KB-UNA.dat b/Source/BIOS/Blank512KB-UNA.dat similarity index 100% rename from Source/Blank512KB-UNA.dat rename to Source/BIOS/Blank512KB-UNA.dat diff --git a/Source/Blank512KB-UNALOAD.dat b/Source/BIOS/Blank512KB-UNALOAD.dat similarity index 100% rename from Source/Blank512KB-UNALOAD.dat rename to Source/BIOS/Blank512KB-UNALOAD.dat diff --git a/Source/BIOS/Build.cmd b/Source/BIOS/Build.cmd new file mode 100644 index 00000000..52660c54 --- /dev/null +++ b/Source/BIOS/Build.cmd @@ -0,0 +1,4 @@ +@echo off +setlocal + +PowerShell .\Build.ps1 %* diff --git a/Source/BIOS/Build.ps1 b/Source/BIOS/Build.ps1 new file mode 100644 index 00000000..d8c23d59 --- /dev/null +++ b/Source/BIOS/Build.ps1 @@ -0,0 +1,157 @@ +param([string]$Platform = "", [string]$Config = "", [string]$RomSize = "", [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 "UNA") -or ($Platform -eq "S2I") -or ($Platform -eq "S100")) {break} + $Platform = (Read-Host -prompt "Platform [N8VEM|ZETA|N8|MK4|UNA|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($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 00000000..abcc6828 Binary files /dev/null and b/Source/RomDsk/zeta_std/XM.COM differ diff --git a/Source/RomDsk/zeta_std/XM5.COM b/Source/RomDsk/zeta_std/XM5.COM new file mode 100644 index 00000000..8ea2b661 Binary files /dev/null and b/Source/RomDsk/zeta_std/XM5.COM differ 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 b77dd008..00000000 Binary files a/Support/ZSDOS/DSCONFIG.COM and /dev/null differ diff --git a/Support/ZSDOS/SETTERM.COM b/Support/ZSDOS/SETTERM.COM deleted file mode 100644 index eca19bf9..00000000 Binary files a/Support/ZSDOS/SETTERM.COM and /dev/null differ diff --git a/Support/ZSDOS/SETUPZST.COM b/Support/ZSDOS/SETUPZST.COM deleted file mode 100644 index 35e4b589..00000000 Binary files a/Support/ZSDOS/SETUPZST.COM and /dev/null differ diff --git a/Support/ZSDOS/TERMBASE.DAT b/Support/ZSDOS/TERMBASE.DAT deleted file mode 100644 index 358d61c0..00000000 Binary files a/Support/ZSDOS/TERMBASE.DAT and /dev/null differ diff --git a/Support/ZSDOS/TESTCLOK.COM b/Support/ZSDOS/TESTCLOK.COM deleted file mode 100644 index d547e2b8..00000000 Binary files a/Support/ZSDOS/TESTCLOK.COM and /dev/null differ diff --git a/Tools/cpmtools/diskdefs b/Tools/cpmtools/diskdefs index 6d59d823..534674f6 100644 --- a/Tools/cpmtools/diskdefs +++ b/Tools/cpmtools/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/ZCPR-DJ/Build.cmd b/ZCPR-DJ/Build.cmd deleted file mode 100644 index c1241392..00000000 --- a/ZCPR-DJ/Build.cmd +++ /dev/null @@ -1,12 +0,0 @@ -@echo off - -setlocal - -set PATH=..\Tools\zx;%PATH% - -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/Build.cmd b/ZCPR/Build.cmd deleted file mode 100644 index 1c6919d0..00000000 --- a/ZCPR/Build.cmd +++ /dev/null @@ -1,15 +0,0 @@ -@echo off - -setlocal - -set PATH=..\Tools\zx;%PATH% - -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/ZSDOS/Build.cmd b/ZSDOS/Build.cmd deleted file mode 100644 index c7925d26..00000000 --- a/ZSDOS/Build.cmd +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -setlocal - -set PATH=..\Tools\zx;%PATH% - -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/Clock/Build.cmd b/ZSDOS/Clock/Build.cmd deleted file mode 100644 index 9667b6d7..00000000 --- a/ZSDOS/Clock/Build.cmd +++ /dev/null @@ -1,11 +0,0 @@ -@echo off - -setlocal - -set PATH=..\..\Tools\zx;%PATH% - -set ZXBINDIR=../../tools/cpm/bin/ -set ZXLIBDIR=../../tools/cpm/lib/ -set ZXINCDIR=../../tools/cpm/include/ - -zx ZMAC -HBCLK -/P diff --git a/ZSDOS/Clock/hbclk.err b/ZSDOS/Clock/hbclk.err deleted file mode 100644 index e69de29b..00000000 diff --git a/ZSDOS/Clock/hbclk.prn b/ZSDOS/Clock/hbclk.prn deleted file mode 100644 index 3b99c63d..00000000 --- a/ZSDOS/Clock/hbclk.prn +++ /dev/null @@ -1,178 +0,0 @@ -ZMAC Relocating Macro Assembler v 1.7, page 1 -N8VEM HBIOS Clock Interface HBCLK .Z80 -Description of Clock Module 33/21/C9 00:00 - - 3 ;=================================================================== - 4 ; HBCLK.Z80 - 5 ; HBIOS Clock driver for N8VEM Z80 Series Computer - 6 ; Wayne Warthen - 7 ; Version: 18 Apr 2014 - 8 ;=================================================================== - - 10 = 000A VERS EQU 10 - 11 .Z80 - 12 NAME HBIOS - 13 - 14 MACLIB CLOCK.LIB - - 16 COMMON /_CLKID/ - - 18 0000* 0000 DESCST: DEFW 0 ; Pointer to static year value if required - - 20 0002* 4E 38 56 45 CLKNAM: DEFB 'N8VEM HBIOS Clock ' ; Exactly 24 chars in name - 21 001A* 31 2E 30 00 DEFB VERS/10+'0','.',VERS MOD 10 +'0',0 - - 23 001E* 4E 38 56 45 DESCR: DEFB 'N8VEM Z80 Series HBIOS Clock',0 - - 25 IF [$-DESCST] > 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 0078ccb7..00000000 Binary files a/ZSDOS/Clock/hbclk.rel and /dev/null differ diff --git a/ZSDOS/zsdos.bin b/ZSDOS/zsdos.bin deleted file mode 100644 index b0f8d443..00000000 Binary files a/ZSDOS/zsdos.bin and /dev/null differ diff --git a/ZSDOS/zsdos.err b/ZSDOS/zsdos.err deleted file mode 100644 index e69de29b..00000000 diff --git a/ZSDOS/zsdos.prn b/ZSDOS/zsdos.prn deleted file mode 100644 index 3f1a5925..00000000 --- a/ZSDOS/zsdos.prn +++ /dev/null @@ -1,3226 +0,0 @@ -ZMAC Relocating Macro Assembler v 1.7, page 1 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 1 ;**************************************************************************** - 2 ; Z S D O S - 3 ; A CP/M 2.2 compatible replacement Basic Disk Operating System (BDOS) - 4 ; - 5 ; Copyright (C) 1986,7,8 by: - 6 ; - 7 ; Harold F. Bower and Cameron W. Cotrill - 8 ; - 9 ; 7914 Redglobe Ct. 2160 N.W. 159th Place - 10 ; Severn, MD 21144-1048 Beaverton, OR 97006 - 11 ; USA. USA. - 12 ; - 13 ; HalBower@worldnet.att.net ccotrill@symantec.com - 14 ; - 15 ; This program is free software; you can redistribute it and/or modify - 16 ; it under the terms of the GNU General Public License as published by - 17 ; the Free Software Foundation; either version 2 of the License, or - 18 ; (at your option) any later version. - 19 ; - 20 ; This program is distributed in the hope that it will be useful, - 21 ; but WITHOUT ANY WARRANTY; without even the implied warranty of - 22 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - 23 ; General Public License (file LICENSE.TXT) for more details. - 24 ; - 25 ; You should have received a copy of the GNU General Public License - 26 ; along with this program; if not, write to the Free Software - 27 ; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - 28 ;--------------------------------------------------------------------------- - 29 ; ZSDOS is a CP/M 2.2 compatable BDOS replacement that contains numerous - 30 ; enhancements. It is based on P2DOS 2.1 by HAJ Ten Brugge and revisions - 31 ; to P2DOS made by Harold F. Bower, Benjamin Ho, and Cameron W. Cotrill. - 32 ; Several good ideas from both CP/M Plus(tm) and ZRDOS(tm) have been added. - 33 ; The authors wish to thank Bridger Mitchell of Plu*Perfect Systems for - 34 ; suggesting we put our heads together, for reviewing the efforts, and for - 35 ; suggesting better methods for coding some sections. Thanks also to Joe - 36 ; Wright of Alpha Systems for his review and suggestions, as well as - 37 ; squeezing a few more bytes for us. - - 39 ; Support for Plu*Perfect'a BackGrounder ii(tm) and ZDS DateStamper(tm) is - 40 ; included, as well as support for ZCPR/BGii WHEEL and PATH. - 41 ; ZSDOS is compatable with NZCOM by Joe Wright of Alpha Systems. - - 43 ; ZSDOS is designed for Z80 compatible processors ONLY!!! - 44 ; ZSDOS is coded to run in Z280 protected mode and may be ROMmed. - - 46 ; LEGAL DEPARTMENT: P2DOS was written by H.A.J. Ten Brugge, ZSDOS - 47 ; modifications were by Cameron W. Cotrill and Harold F. Bower. - 48 ; ZDDOS modifications were done by Carson Wilson, Cameron W. Cotrill - 49 ; and Harold F. Bower. - - 51 ; No author assumes responsibility or liability in the use of this - 52 ; program or any of its support utilities. - - 54 ; P2DOS is Copyright (C) 1985 by H.A.J. Ten Brugge - All Rights Reserved - 55 ; H.A.J. Ten Brugge - 56 ; F. Zernikestraat 207 - ZMAC Relocating Macro Assembler v 1.7, page 2 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 57 ; 7553 EC Hengelo - 58 ; Netherlands - 59 ; Permission to use P2DOS code in ZSDOS granted to Harold F. Bower and - 60 ; Cameron W. Cotrill in letter 28 March 1988 - - 62 ; Code sections marked (bm) are revisions suggested by Bridger Mitchell. - 63 ; Code sections marked (bh) are from SUPRBDOS mods to P2DOS by Benjamin Ho. - 64 ; Code sections marked (crw) are revisions to support internal datestamper - 65 ; and are Copyright (C) 1988 by Carson Wilson. - - 67 ; NOTES: Backgrounder ii and DateStamper are trademarks of Plu*Perfect - 68 ; Systems. CP/M is a trademark of Digital Research, Incorporated. - 69 ; ZRDOS is a trademark of Echelon, Incorporated. - ZMAC Relocating Macro Assembler v 1.7, page 3 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 71 ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - 72 ; Version 1.2a, 11/04/89 - 73 ; Assemble with : SLR Z80ASMP or ZMAC - 74 ; Revisions: - 75 ; 11/04/89 Moved home call to rddir so bios hostbuf always - 76 ; updated before dir read. - 77 ; 07/18/89 Fixed tderr routine in ZDDOS so return codes not - 78 ; CWC altered from tderr unless called from 102 or 103. - 79 ; 06/20/89 Fixed bug in F10 ^R that output 256 spaces if ^R - 80 ; CWC entered with tab counter =0. - 81 ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - 83 MACLIB ZSDOS.LIB ; Get initialization code - 1+ ;..... - 2+ ; ZSDOS Customization. -HFB, 18 Sept 1987 - 3+ ; revised 07/17/88 CWC - - 5+ = 0000 FALSE EQU 0 - 6+ = FFFF TRUE EQU NOT FALSE - - 8+ ; Set these conditionals before assembly - - 10+ ;**************************************************************************** - 11+ ; In the General Public Release version, we have included an equate which - 12+ ; controls an additional unreleased fix (which only Howard Goldstein found). - 13+ ; If the following equate is set TRUE, a version 1.1 BDOS will be produced - 14+ ; which will require no changes to any released utilities. If set to FALSE, - 15+ ; a version 1.2 BDOS will result, and many support utility libraries and - 16+ ; overlays will need to be revised to make them function properly. HFB - - 18+ = FFFF ZSDOS11 EQU TRUE ; Set True for Ver 1.1, False for 1.2 - - 20+ ;**************************************************************************** - - 22+ = FFFF ZS EQU TRUE ; Set True for ZSDOS, False for ZDDOS - - 24+ ;---------- - 25+ ; Select assembler for ZSDOS. Any modifications to source code must - 26+ ; support these assemblers at minimum. - - 28+ = FFFF SLR EQU TRUE ; SLR Z80ASM or SLR180 Assembler, OR ZMAC - 29+ = 0000 ZAS EQU FALSE ; MITEK/ECHELON ZAS Assembler (3.0 or later) - - 31+ IF ZAS - 33+ ENDIF - - 35+ IF SLR - 36+ .Z80 - 37+ NAME ('DOS') - 38+ ENDIF - - 40+ IF ZAS AND ZS - 41+ IF ZSDOS11 - 46+ ENDIF - 47+ IF ZAS AND (NOT ZS) - 48+ IF ZSDOS11 - ZMAC Relocating Macro Assembler v 1.7, page 4 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 53+ ENDIF - - 55+ IF SLR AND ZS - 56+ IF ZSDOS11 - 60+ ENDIF ;Zsdos11 - 61+ ENDIF - 62+ IF SLR AND (NOT ZS) - 63+ IF ZSDOS11 - 68+ ENDIF - - 70+ ;---------- - 71+ ; P2DOS introduced a search path feature compatible with that used in - 72+ ; Richard Conn's ZCPR2 and ZCPR3. If a requested file is not located in - 73+ ; the currently logged Drive/User, the SEARCH routine will sequentially - 74+ ; scan along the path until either the file is found or the end of the - 75+ ; path is reached. - - 77+ IF ZS - 78+ = 0DF1' PATHAD EQU IPATH ; Set to the desired ZCPR2/3 search path. - 81+ ENDIF ; in ZSDOS. ZDDOS does not use path. - - 83+ ;---------- - 84+ ; The WHEEL byte may be sensed from within ZSDOS by setting the following - 85+ ; address to that of the ZCPR3 WHEEL byte. A value of 0 disables the WHEEL - 86+ ; byte sensing. - - 88+ = 0000 WHLADR EQU 00000H ; Set WHEEL byte address (0FDFFH for SB180) - - 90+ ;---------- - 91+ ; Some systems, like the Kaypro 4, only recognize changes between single - 92+ ; and double-sided disks when the system is warm booted; BDOS Function 13 - 93+ ; (reset disk) will not work. By adding a "hook" to the BIOS of these mach- - 94+ ; ines and setting RESDSK to TRUE, BDOS functions 13 and 37 will allow changes - 95+ ; between single and double-sided disks; very handy for disk housekeeping - 96+ ; utilities such as NSWP, NULU, and cataloging programs. - - 98+ ; The "hook" is added as follows: Obtain the source to your computer's BIOS. - 99+ ; Examine the code for WARM BOOT. Somewhere, there should be a call to a rou- - 100+ ; tine which initializes the disk system after a warm boot, or which detects - 101+ ; changes between single and double-sided disks. Call this routine DISKINT - 102+ ; for purposes of discussion. Modify your BIOS's cold boot routine to ini- - 103+ ; tialize 3 bytes at address SETDSK as "JP DISKINT". The location of SETDSK - 104+ ; is arbitrary, it may be in your BIOS, or in a reserved spot in CP/M's page 0. - - 106+ = 0000 RESDSK EQU FALSE - - 108+ IF RESDSK - 110+ ENDIF ; resdsk (bh) - - 112+ ;---------- - 113+ ; The following equate is used to produce separate code and data segments - 114+ ; for blowing ZSDOS into ROM. Calling BDOS Function 0 will initialize the - 115+ ; Data Segment to default values. - - 117+ = 0000 ROM EQU FALSE ; Separate data and code? - - ZMAC Relocating Macro Assembler v 1.7, page 5 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 119+ ;---------- - 120+ ; Many ZSDOS features can be controlled while ZSDOS is running by altering - 121+ ; the FLAG byte. Set the following equate to your desired configuration based - 122+ ; on your requirements. The individual bit assignments in the FLAG byte are: - 123+ ; - 124+ ; Bit - 7 6 5 4 3 2 1 0 - 125+ ; \ \ \ \ \ \ \ \__Public File Enable (1) / Disable (0) - 126+ ; \ \ \ \ \ \ \___Public/Path Write Enable (1) / Disable (0) - 127+ ; \ \ \ \ \ \____Read-Only Enable (1) / Disable (0) - 128+ ; \ \ \ \ \_____Fast Fixed Disk Relog Enable (1) / Disable (0) - 129+ ; \ \ \ \______Disk Change Warning Enable (1) / Disable (0) - 130+ ; \ \ \_______ZCPR2/3 Path Enable (1) / Disable (0) - 131+ ; \ \________Path without System Enable (1) / Disable (0) - 132+ ; \_________(Reserved) - - 134+ = 006D FLGBITS EQU 01101101B ; PUBLIC On, P/P Write Off, R/O On, - 135+ ; Fast Relog On,Disk Change warning Off, - 136+ ; Path On, No System path On - - 138+ ; The operation of Bit 6 represents a deviation from the description of PUBLIC - 139+ ; Files as given in DDJ Article by Bridger Mitchell and Derek McKay of Plu* - 140+ ; Perfect Systems. The PUBLIC Specification states that Public Files will NOT - 141+ ; be found by any wildcard reference except when a "?" is in the FCB+0 byte. - 142+ ; The code here relaxes that requirement as follows: If we are in the same - 143+ ; user area as the public file, then don't report the file as PUBLIC, but find - 144+ ; it. This has a nasty side effect - it allows erasing of PUBLIC files if we - 145+ ; are in the same area. However, these files also show up on the directory - 146+ ; (they wouldn't otherwise), so at least we should know we're blasting them. - - 148+ ;---------- - 149+ ; Equates for selecting ZSDOS or ZDDOS configurations - - 151+ ; Since much ZSDOS code must be deleted to embed DateStamper in ZDDOS, the - 152+ ; following flags do the stripping: - 153+ ; PICKEY - True = Don't save users' DE register - 154+ ; CTLREN - True = Add ^R Retype line to cons read, False = No ^R - 155+ ; UNROLL - True = Inline code for shifts, False = collapse into loops - 156+ ; UPATH - True = Add User path from OS, False = No OS path search - - 158+ IF ZS - 159+ = FFFF CTLREN EQU TRUE - 160+ = FFFF UNROLL EQU TRUE - 161+ = FFFF UPATH EQU TRUE - 162+ = 0000 PICKEY EQU FALSE - 168+ ENDIF - - 170+ ;---------- - 171+ ; To Use the Named-COMMON aspect of NZCOM and JETLOADER (tm), the BIOS must - 172+ ; be referenced from the _BIOS_ name. If operating under this scheme, set - 173+ ; the ZRL equate to TRUE. With the ZRL equate set to FALSE, a standalone - 174+ ; .REL file will be produced with no external requirements. - - 176+ = FFFF ZRL EQU TRUE ; Set True .ZRL file with COMMON for NZCOM, - 177+ ; False to produce straight .REL file - - - ZMAC Relocating Macro Assembler v 1.7, page 6 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 85 = 0000 RAMLOW EQU 0000H ; Start address memory - - 87 CSEG - 88 = 0000' ZSDOS EQU $ ; Start address ZSDOS - - 90 IF ZRL - 91 COMMON /_BIOS_/ - 92 0000* BIOS: - 93 CSEG - 96 ENDIF - - 98 = 0000* BOOT EQU BIOS+0000H ; Cold Boot - 99 = 0003* WBOOT EQU BIOS+0003H ; Warm Boot - 100 = 0006* CONST EQU BIOS+0006H ; Console Status - 101 = 0009* CONIN EQU BIOS+0009H ; Console Input - 102 = 000C* CONOUT EQU BIOS+000CH ; Console Output - 103 = 000F* LIST EQU BIOS+000FH ; List Output - 104 = 0012* PUNCH EQU BIOS+0012H ; Punch Output - 105 = 0015* READER EQU BIOS+0015H ; Reader Input - 106 = 0018* HOME EQU BIOS+0018H ; Home Disk - 107 = 001B* SELDSK EQU BIOS+001BH ; Select Disk - 108 = 001E* SETTRK EQU BIOS+001EH ; Select Track - 109 = 0021* SETSEC EQU BIOS+0021H ; Select Sector - 110 = 0024* SETDMA EQU BIOS+0024H ; Set DMA Address - 111 = 0027* READ EQU BIOS+0027H ; Read 128 Bytes - 112 = 002A* WRITE EQU BIOS+002AH ; Write 128 Bytes - 113 = 002D* LISTST EQU BIOS+002DH ; List Status - 114 = 0030* SECTRN EQU BIOS+0030H ; Sector Translation - - 116 ; Internal Definitions - 117 IF ZSDOS11 - 118 = 0001 VERMAJ EQU 1 ; Major version number - 119 = 0001 VERMIN EQU 1 ; Minor version number - 123 ENDIF ;Zs - 124 = 0011 VERS EQU VERMAJ*10H+VERMIN - - 126 = 0003 CONTC EQU 03H ; Key to generate warm boot - 127 = 0008 CONTH EQU 08H ; Backspace - 128 = 0009 TAB EQU 09H ; Tab - 129 = 000A LF EQU 0AH ; Line feed - 130 = 000D CR EQU 0DH ; Carriage return - 131 = 0010 CONTP EQU 10H ; Set/reset print flag - 132 = 0012 CONTR EQU 12H ; Retype line - 133 = 0013 CONTS EQU 13H ; Stop console output - 134 = 0018 CONTX EQU 18H ; Delete line (backspaces) - 135 = 0015 CONTU EQU 15H ; Same as Control-X - 136 = 007F RUBOUT EQU 7FH ; Delete last char - - 138 = 001F MAXEXT EQU 1FH ; Maximum extent number - 139 = 003F MAXMOD EQU 3FH ; Maximum data module number - - 141 = 0091 TDCKSM EQU 91H ; CHECKSUM OF !!!TIME&.DAT - - 143 ; Attribute Bit Definitions - - 145 = 0002 PUBATT EQU 2 ; Public attribute offset - ZMAC Relocating Macro Assembler v 1.7, page 7 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 146 = 0007 PSFATT EQU 7 ; Public/system file (internal only) - 147 = 0008 WHLATT EQU 8 ; Wheel protect attribute offset - 148 = 0009 ROATT EQU 9 ; Read only attribute offset - 149 = 000A SYSATT EQU 10 ; System attribute offset - 150 = 000B ARCATT EQU 11 ; Archive attribute offset - - 152 ; FCB POSITION EQUATES - - 154 = 000C FCBEXT EQU 12 ; Extent number - 155 = 000D FCBUSR EQU 13 ; User valid at offset 13 if set (internal) - 156 = 000E FCBMOD EQU 14 ; Data module number - D7 used as unmod flag - 157 = 000F FCBREC EQU 15 ; Record number - 158 = 0020 NXTREC EQU 32 ; Next record number - ZMAC Relocating Macro Assembler v 1.7, page 8 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 160 ;************************************************************** - 161 ;* Z S D O S P r o g r a m S t a r t * - 162 ;************************************************************** - - 164 ; WARNING!! Do NOT change labels or sequences of ZSDOS through ZSDOS+25H - 165 ; ID string added for easy identification in running system (hfb) - - 167 IF ZS - 168 0000' 5A 53 44 4F DEFB 'ZSDOS ' ; Used in CP/M for serial number. these bytes - 171 ENDIF ; still be used without problems. - - 173 ; ZSDOS Entry Point - - 175 0006' C3 009B' START: JP ENTRY ; Jump to start of program code - - 177 ; CP/M 2.2 Compatable Error Vector Table - - 179 0009' 034C STBDSC: DEFW ERROR ; Bad sector message - 180 000B' 034C STSEL: DEFW ERROR ; Select error - 181 000D' 034C STRO: DEFW ERROR ; Drive read only - 182 000F' 034C SFILRO: DEFW ERROR ; File read only - - 184 ; External Path Name - - 186 0011' 0DF1 PATH: DEFW PATHAD ; Path address for file open, 0 if no path - - 188 ; Wheel Byte Pointer - - 190 0013' 0000 WHEEL: DEFW WHLADR ; Address of wheel byte, 0 if none - - 192 ; User configuration byte - - 194 0015' 6D FLAGS: DEFB FLGBITS ; Flag byte set in zsdos.lib - - 196 ; Dispatch table for time/date stamp routines - - 198 ; ZSDOS uses all vectors in this table as indicated. ZDDOS uses all but - 199 ; STUPDV, GETSTV, and PUTSTV. STCRV is used to store the address of the - 200 ; stamp for ZDDOS, thus allowing ZSCONFIG to enable and disable stamping - 201 ; of Last Access and Modify. - - 203 0016' 0DDD GSTIME: DEFW DOTDER ; Address of get/set time/date routine (hfb) - 204 IF ZS - 205 0018' 0DDD STLAV: DEFW DOTDER ; Address of stamp last access routine - 206 001A' 0DDD STCRV: DEFW DOTDER ; Address of stamp create routine - 207 001C' 0DDD STUPDV: DEFW DOTDER ; Address of stamp modify routine - 212 ENDIF - 213 001E' 0DDD GETSTV: DEFW DOTDER ; Address of get stamp routine - 214 0020' 0DDD PUTSTV: DEFW DOTDER ; Address of set stamp routine - 215 0022' 0DDD DEFW DOTDER ; Dummy vector to disable with ZSCONFIG - 216 0024' 0000 UNLOAD: DEFW 0 ; Pointer to remove Time Stamp routine - - ZMAC Relocating Macro Assembler v 1.7, page 9 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 219 ;******************************************************** - 220 ;* Z S D O S L o w R A M D a t a * - 221 ;******************************************************** - - 223 ; RAM has been moved down here to an area that is compatable with ZRDOS per - 224 ; suggestion by Hal Bower. The actual addresses used are NOT compatable with - 225 ; ZRDOS. - - 227 ; Due to ZSDOS's smaller RAM area, any program that saves RAM in accordance - 228 ; with ZRDOS's specifications for re-entry into BDOS should work under ZSDOS - 229 ; without problems. Some code will be saved also, as well as the Flag Byte, - 230 ; but this should be no problem for IOP'S. - - 232 ; The Write Protect, Login, and Hard Disk Login Vectors are kept at the top of - 233 ; ZSDOS, as they must reflect the current status of the Disk System and hence - 234 ; should NOT be saved with other system variables Under ANY Circumstance! - - 236 IF ROM - 238 ENDIF - 239 0026' BGLORAM: - 240 ;-------------------------------------------------------------------- - 241 ; The following locations MUST remain in EXACTLY this order - - 243 0026' 00 TABCNT: DEFB 0 ; Tab counter - 244 0027' 00 TABCX1: DEFB 0 ; Temporary Tab counter (used by RDBUF) - 245 ;-------------------------------------------------------------------- - - 247 0028' 00 FCONTP: DEFB 0 ; List enable flag (Control-P) - used by BGii - 248 0029' 00 LASTCH: DEFB 0 ; Last character - used by BGii - - 250 ;-------------------------------------------------------------------- - 251 ; The following locations MUST remain in EXACTLY this order - - 253 002A' 00 USER: DEFB 0 ; User number - used by BGii - 254 002B' 00 DEFDRV: DEFB 0 ; Default drive number - used by BGii and DS - 255 002C' 00 DRIVE: DEFB 0 ; Drive number - 256 ;-------------------------------------------------------------------- - - 258 002D' 00 FCB0: DEFB 0 ; FCB byte 0 - - 260 002E' BGHIRAM: - 261 002E' 0080 DMA: DEFW 0080H ; DMA address - - 263 0030' 0000 TRANS: DEFW 0 ; Translation vector - 264 0032' 0000 TEMP0: DEFW 0 ; Number of files on drive - - - 267 0034' 0000 DIRBUF: DEFW 0 ; Directory buffer pointer - used by bgii - 268 0036' 0000 IXP: DEFW 0 ; Disk parameter block - 269 0038' 0000 CSV: DEFW 0 ; Check sum pointer - 270 003A' 0000 ALV: DEFW 0 ; Allocation vector pointer - - 272 ;-------------------------------------------------------------------- - 273 ; The following locations MUST remain in EXACTLY this order - 274 ; Copy of DPB for Current Drive - - ZMAC Relocating Macro Assembler v 1.7, page 10 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 276 = 003C DPBOF EQU $-ZSDOS ; Value needed by ZSDOS - - 278 003C' 0000 MAXSEC: DEFW 0 ; Number of sectors/track - 279 003E' 00 NBLOCK: DEFB 0 ; Block shift - 280 003F' 00 NMASK: DEFB 0 ; Mask number of blocks - 281 0040' 00 NEXTND: DEFB 0 ; Extent mask - 282 0041' 0000 MAXLEN: DEFW 0 ; Maximum block number-1 - 283 0043' 0000 NFILES: DEFW 0 ; Maximum number of files-1 - 284 0045' 00 NDIR0: DEFB 0 ; First two entries ALV buffer - 285 0046' 00 DEFB 0 ; ..(NDIR1) - 286 0047' 0000 NCHECK: DEFW 0 ; Number of checksum entries - 287 0049' 0000 NFTRK: DEFW 0 ; First track number - 288 ;-------------------------------------------------------------------- - 289 004B' 00 FUNCT: DEFB 0 ; Function number - 290 004C' 0000 PEXIT: DEFW 0 ; Exit code - 291 ;-------------------------------------------------------------------- - 292 ; The following locations MUST remain in EXACTLY this order - - 294 004E' 00 FLDRV: DEFB 0 ; Drive select used flag - 295 004F' 00 RDWR: DEFB 0 ; Read/write flag - 296 0050' 00 SEARQU: DEFB 0 ; Search question mark used - 297 0051' 00 SEARPU: DEFB 0 ; Search public file - 298 ;-------------------------------------------------------------------- - 299 0052' 0000 RECDIR: DEFW 0 ; Record directory (checksum) - 300 0054' 0000 FILCNT: DEFW 0 ; File counter - 301 0056' 00 SECPNT: DEFB 0 ; Sector pointer - 302 0057' 00 SUBFLG: DEFB 0 ; Submit flag (reset disk command) - - 304 0058' 0000 DCOPY: DEFW 0 ; Copy address FCB - 305 005A' 00 SEAREX: DEFB 0 ; Exit code search - 306 005B' 00 SEARNB: DEFB 0 ; Search number of bytes - 307 005C' 00 ERMODE: DEFB 0 ; BDOS error mode - - 309 005D' 0000 ARWORD: DEFW 0 ; De argument on entry - used for BGii - 310 005F' 0000 DEVAL: DEFW 0 ; Return value for DE reg - 311 0061' 0000 SPSAVE: DEFW 0 ; Stack pointer location - 312 IF ZS - 313 0063' 5A 53 44 4F DEFB 'ZSDOS 1.1 Copyri' - 316 ENDIF - 317 0073' 67 68 74 20 DEFB 'ght (c) 1987,88 ' - 318 0083' 20 43 2E 57 DEFB ' C.W.Cotrill & H' - 319 0093' 2E 46 2E 42 DEFB '.F.Bow' - 320 0099' 65 72 IXSAVE: DEFB 'er' ; User's IX register - 321 009B' ZSDOSS: ; ZSDOS stack - - 323 = 009B' BGRAMTOP EQU ZSDOSS - ZMAC Relocating Macro Assembler v 1.7, page 11 -ZSDOS 1.1 - Enhanced CP/M BDOS Replacement ZSDOS .Z80 - 33/20/A6 41:00 - - 325 CSEG - 326 ;********************************************************************** - 327 ;* Z S D O S e n t r y p o i n t * - 328 ;********************************************************************** - - 330 009B' AF ENTRY: XOR A ; Clear A - 331 009C' 47 LD B,A ; For later 16 bit adds - 332 009D' 6F LD L,A - 333 009E' 67 LD H,A ; Set HL to zero - 334 009F' 22 004C' LD (PEXIT),HL ; Clear exit code - 335 00A2' 22 004E' LD (FLDRV),HL ; Reset drive select and R/W flags - 336 00A5' ED73 0061' LD (SPSAVE),SP ; Save stack pointer - 337 00A9' 31 009B' LD SP,ZSDOSS ; Get internal stack pointer - 338 00AC' DDE5 PUSH IX ; Save index register on our stack - 339 00AE' D5 PUSH DE ; Save parameter register - 340 00AF' DDE1 POP IX ; Get it back in IX - 341 00B1' DD22 005D' LD (ARWORD),IX ; Save in memory for BGii - 342 IF NOT PICKEY - 343 00B5' DD22 005F' LD (DEVAL),IX ; ..and for non-file access returns - 344 ENDIF - 345 00B9' 21 03E6' LD HL,DOSEXIT ; Get exit address ZSDOS - 346 00BC' E5 PUSH HL ; Save it on stack to return from ZSDOS - 347 00BD' 79 LD A,C ; Get function code - B reg = 0 - 348 00BE' 32 004B' LD (FUNCT),A ; Save it for later use - 349 00C1' FE 0C CP 12 ; Is it a non-disk function? - 350 00C3' 38 0D' JR C,ENTRY0 ; ..jump if so - 351 00C5' FE 31 CP MAXCMD ; Cmnd < Maximum Command Number (48)? - 352 00C7' 38 0D' JR C,ENTRY1 ; ..jump if disk function - - 354 ; Extended function scanner for added functions - - 356 00C9' FE 62 CP 98 ; Is it less than Cmd98? - 357 00CB' D8 RET C ; ..return if so - 358 00CC' FE 68 CP 103+1 ; Is it greater than Cmd103? - 359 00CE' D0 RET NC ; ..quit if so - 360 00CF' D6 31 SUB 98-MAXCMD ; Rework so 98-->49..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 bc5ecfed..00000000 Binary files a/ZSDOS/zsdos.rel and /dev/null differ diff --git a/ZSDOS/zsdos.sym b/ZSDOS/zsdos.sym deleted file mode 100644 index d2dcd9a0..00000000 --- a/ZSDOS/zsdos.sym +++ /dev/null @@ -1,2 +0,0 @@ -E600 _BIOS_ - \ No newline at end of file