diff --git a/.github/workflows/commit.yml b/.github/workflows/commit.yml index 8d5704bc..2110be86 100644 --- a/.github/workflows/commit.yml +++ b/.github/workflows/commit.yml @@ -14,7 +14,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3.3.0 + uses: actions/checkout@v4.1.1 - name: Get Commit Ref run: | @@ -36,7 +36,7 @@ jobs: find -type f -exec md5sum '{}' \; - name: Upload Artifact - uses: actions/upload-artifact@v3.1.1 + uses: actions/upload-artifact@v4.3.0 with: name: RomWBW-${{env.COMMIT_REF}}-Linux path: . @@ -46,7 +46,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3.3.0 + uses: actions/checkout@v4.1.1 - name: Get Commit Ref run: | @@ -68,7 +68,7 @@ jobs: find . -type f -exec md5 -r -- '{}' +; - name: Upload Artifact - uses: actions/upload-artifact@v3.1.1 + uses: actions/upload-artifact@v4.3.0 with: name: RomWBW-${{env.COMMIT_REF}}-MacOS path: . diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1d03fbf1..16cdf190 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3.3.0 + uses: actions/checkout@v4.1.1 - name: Build run: | diff --git a/Binary/CPNET/Clean.cmd b/Binary/CPNET/Clean.cmd new file mode 100644 index 00000000..ab87a87f --- /dev/null +++ b/Binary/CPNET/Clean.cmd @@ -0,0 +1,4 @@ +@echo off +setlocal + +if exist *.lbr del *.lbr diff --git a/Binary/CPNET/Makefile b/Binary/CPNET/Makefile new file mode 100644 index 00000000..8cb02e51 --- /dev/null +++ b/Binary/CPNET/Makefile @@ -0,0 +1,7 @@ +TOOLS = ../../Tools +MOREDIFF := $(shell $(TOOLS)/unix/casefn.sh *.lbr) + +include $(TOOLS)/Makefile.inc + +clean:: + @rm -f *.lbr diff --git a/Source/Images/cpnet12/ccp.spr b/Binary/CPNET/NetBoot/ccp.spr similarity index 100% rename from Source/Images/cpnet12/ccp.spr rename to Binary/CPNET/NetBoot/ccp.spr diff --git a/Source/Images/cpnet12/ndos.spr b/Binary/CPNET/NetBoot/ndos.spr similarity index 100% rename from Source/Images/cpnet12/ndos.spr rename to Binary/CPNET/NetBoot/ndos.spr diff --git a/Source/Images/cpnet12/snios.spr b/Binary/CPNET/NetBoot/snios.spr similarity index 100% rename from Source/Images/cpnet12/snios.spr rename to Binary/CPNET/NetBoot/snios.spr diff --git a/Binary/CPNET/ReadMe.txt b/Binary/CPNET/ReadMe.txt new file mode 100644 index 00000000..3751b360 --- /dev/null +++ b/Binary/CPNET/ReadMe.txt @@ -0,0 +1,38 @@ +*********************************************************************** +*** *** +*** R o m W B W *** +*** *** +*** Z80/Z180 System Software *** +*** *** +*********************************************************************** + +This directory contains the CP/NET client packages. Please refer to +the RomWBW User Guide for instructions on installing these packages. +Either the MT011 RCBus module or the Duodyne Disk I/O board is required. + +All of these files come from Douglas Miller. Please refer to +https://github.com/durgadas311/cpnet-z80 for more information, complete +documentation and the latest source code. Refer to the RomWBW +User Guide for basic installation and usage instructions under RomWBW. + +| File | CP/NET Version | OS | Hardware | ++--------------+----------------+----------+-----------------------+ +| CPN12MT.LBR | CP/NET 1.2 | CP/M 2.2 | RCBus w/ MT011 | +| CPN3MT.LBR | CP/NET 3 | CP/M 3 | RCBus w/ MT011 | +| CPN12DUO.LBR | CP/NET 1.2 | CP/M 2.2 | Duodyne w/ Disk I/O | +| CPN3DUO.LBR | CP/NET 3 | CP/M 3 | Duodyne w/ Disk I/O | + +In general, to use CP/NET on RomWBW, it is intended that you will +extract the appropriate set of files into your default directory in +user area 0. Refer to the RomWBW User Guide for more information. + +The libraries include enhanced help files appropriate for the version +of CP/NET. Rename the desired topic collection to HELP.HLP on the +target system. + +CPM2NET.HLP CP/M 2.2 basic system with CP/NET 1.2 +CPNET12.HLP CP/NET 1.2 help only +CPM3NET.HLP CP/M 3 basic system with CP/NET 3 +CPNET3.HLP CP/NET 3 help only + +-- WBW 7:14 AM 2/11/2024 \ No newline at end of file diff --git a/Binary/Clean.cmd b/Binary/Clean.cmd index 8116314a..c6ad4ab5 100644 --- a/Binary/Clean.cmd +++ b/Binary/Clean.cmd @@ -14,3 +14,4 @@ if exist *.eeprom del *.eeprom pushd Apps && call Clean || exit /b 1 & popd pushd CPM3 && call Clean || exit /b 1 & popd pushd ZPM3 && call Clean || exit /b 1 & popd +pushd CPNET && call Clean || exit /b 1 & popd diff --git a/Binary/Makefile b/Binary/Makefile index f4d4bec4..76f45163 100644 --- a/Binary/Makefile +++ b/Binary/Makefile @@ -1,6 +1,6 @@ TOOLS = ../Tools MOREDIFF := $(shell $(TOOLS)/unix/casefn.sh *.img *.rom *.com *.eeprom) -SUBDIRS = Apps CPM3 ZPM3 +SUBDIRS = Apps CPM3 ZPM3 CPNET include $(TOOLS)/Makefile.inc diff --git a/Binary/cpnos-wbw.sys b/Binary/cpnos-wbw.sys deleted file mode 100644 index f0bdc137..00000000 Binary files a/Binary/cpnos-wbw.sys and /dev/null differ diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index 1beee141..652cc8fa 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -2,6 +2,15 @@ Version 3.5 ----------- - M?F: Fix for hours display in HBRTC application - M?F: Fix for assembly error in DS1501RTC driver +- WBW: Add VT-100 graphics char selection to Propeller firmware +- WBW: Allow all lines of VGA display to be used on Propeller firmware +- WBW: Allow front panel LED/Switch bits to be inverted in config +- WBW: Add API to expose application banks available +- WBW: Added console takeover at boot loader prompt +- L?N: Fixed Propeller font vertical line character to align properly +- L?S: EF9345 video display controller driver +- WBW: Added Cowgol disk image based on the work of Ladislau Szilagyi +- WBW: Added support for CP/NET on Duodyne Disk I/O Version 3.4 ----------- diff --git a/Doc/RomWBW Applications.pdf b/Doc/RomWBW Applications.pdf index 417c0466..aaa507b9 100644 Binary files a/Doc/RomWBW Applications.pdf and b/Doc/RomWBW Applications.pdf differ diff --git a/Doc/RomWBW Disk Catalog.pdf b/Doc/RomWBW Disk Catalog.pdf index f5f574a1..7f5e7cd6 100644 Binary files a/Doc/RomWBW Disk Catalog.pdf and b/Doc/RomWBW Disk Catalog.pdf differ diff --git a/Doc/RomWBW Errata.pdf b/Doc/RomWBW Errata.pdf index 4a019607..42b320eb 100644 Binary files a/Doc/RomWBW Errata.pdf and b/Doc/RomWBW Errata.pdf differ diff --git a/Doc/RomWBW ROM Applications.pdf b/Doc/RomWBW ROM Applications.pdf index 5cae7d61..334dba58 100644 Binary files a/Doc/RomWBW ROM Applications.pdf and b/Doc/RomWBW ROM Applications.pdf differ diff --git a/Doc/RomWBW System Guide.pdf b/Doc/RomWBW System Guide.pdf index 491b01b1..142e64fd 100644 Binary files a/Doc/RomWBW System Guide.pdf and b/Doc/RomWBW System Guide.pdf differ diff --git a/Doc/RomWBW User Guide.pdf b/Doc/RomWBW User Guide.pdf index 27d3b7a6..e38c7f11 100644 Binary files a/Doc/RomWBW User Guide.pdf and b/Doc/RomWBW User Guide.pdf differ diff --git a/ReadMe.md b/ReadMe.md index fd653ed0..76c50179 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -3,7 +3,7 @@ **RomWBW ReadMe** \ Version 3.5 \ Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \ -12 Jan 2024 +11 Feb 2024 # Overview @@ -223,6 +223,12 @@ let me know if I missed you! - Bill Shen has contributed boot loaders for several of his systems. +- Laszlo Szolnoki has contributed an EF9345 video display controller + driver. + +- Ladislau Szilagyi has contributed an enhanced version of CP/M Cowgol + that leverages RomWBW memory banking. + Contributions of all kinds to RomWBW are very welcome. # Licensing diff --git a/ReadMe.txt b/ReadMe.txt index 1f655065..54896eff 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -1,6 +1,6 @@ RomWBW ReadMe Wayne Warthen (wwarthen@gmail.com) -12 Jan 2024 +11 Feb 2024 @@ -224,6 +224,12 @@ let me know if I missed you! - Bill Shen has contributed boot loaders for several of his systems. +- Laszlo Szolnoki has contributed an EF9345 video display controller + driver. + +- Ladislau Szilagyi has contributed an enhanced version of CP/M Cowgol + that leverages RomWBW memory banking. + Contributions of all kinds to RomWBW are very welcome. diff --git a/Source/BPBIOS/diskdefs b/Source/BPBIOS/diskdefs index f29deca1..3e8c5970 100644 --- a/Source/BPBIOS/diskdefs +++ b/Source/BPBIOS/diskdefs @@ -271,9 +271,9 @@ diskdef interak os 2.2 end -# RomWBW 256KB ROM (128KB reserved, 128KB ROM Disk) +# RomWBW 128KB ROM Disk -diskdef wbw_rom256 +diskdef wbw_rom128 seclen 512 tracks 4 sectrk 64 @@ -284,24 +284,11 @@ diskdef wbw_rom256 os 2.2 end -# RomWBW 512KB ROM (128KB reserved, 384KB ROM Disk) - -diskdef wbw_rom512 - seclen 512 - tracks 12 - sectrk 64 - blocksize 2048 - maxdir 256 - skew 0 - boottrk 0 - os 2.2 -end - -# RomWBW 1024KB ROM (128KB reserved, 896KB ROM Disk) +# RomWBW 256KB ROM Disk -diskdef wbw_rom1024 +diskdef wbw_rom256 seclen 512 - tracks 28 + tracks 8 sectrk 64 blocksize 2048 maxdir 256 @@ -310,11 +297,11 @@ diskdef wbw_rom1024 os 2.2 end -# RomWBW 512KB RAM (256KB reserved, 256KB RAM Disk) +# RomWBW 384KB ROM Disk -diskdef wbw_ram512 +diskdef wbw_rom384 seclen 512 - tracks 8 + tracks 12 sectrk 64 blocksize 2048 maxdir 256 @@ -323,11 +310,11 @@ diskdef wbw_ram512 os 2.2 end -# RomWBW 1024KB RAM (256KB reserved, 768KB RAM Disk) +# RomWBW 896KB ROM Disk -diskdef wbw_ram1024 +diskdef wbw_rom896 seclen 512 - tracks 24 + tracks 28 sectrk 64 blocksize 2048 maxdir 256 diff --git a/Source/BuildShared.cmd b/Source/BuildShared.cmd index 533a1473..38aa8fc6 100644 --- a/Source/BuildShared.cmd +++ b/Source/BuildShared.cmd @@ -10,6 +10,7 @@ pushd ZCPR-DJ && call Build || exit /b & popd pushd ZSDOS && call Build || exit /b & popd pushd CPM3 && call Build || exit /b & popd pushd ZPM3 && call Build || exit /b & popd +pushd CPNET && call Build || exit /b & popd pushd pSys && call Build || exit /b & popd pushd Apps && call Build || exit /b & popd pushd Forth && call Build || exit /b & popd diff --git a/Source/CPNET/Build.cmd b/Source/CPNET/Build.cmd new file mode 100644 index 00000000..82fe5119 --- /dev/null +++ b/Source/CPNET/Build.cmd @@ -0,0 +1,29 @@ +@echo off +setlocal + +set TOOLS=%~dp0..\..\Tools + +set PATH=%TOOLS%\zxcc;%PATH% +set CPMDIR80=%TOOLS%\cpm\ + +pushd duo\cpnet12 +zxcc nulu --O -cpn12duo "-<30" --A -*.* --L --X || exit /b +move cpn12duo.lbr ..\.. || exit /b +popd + +pushd duo\cpnet3 +zxcc nulu --O -cpn3duo "-<30" --A -*.* --L --X || exit /b +move cpn3duo.lbr ..\.. || exit /b +popd + +pushd mt011\cpnet12 +zxcc nulu --O -cpn12mt "-<30" --A -*.* --L --X || exit /b +move cpn12mt.lbr ..\.. || exit /b +popd + +pushd mt011\cpnet3 +zxcc nulu --O -cpn3mt "-<30" --A -*.* --L --X || exit /b +move cpn3mt.lbr ..\.. || exit /b +popd + +copy *.lbr ..\..\Binary\CPNET diff --git a/Source/CPNET/Clean.cmd b/Source/CPNET/Clean.cmd new file mode 100644 index 00000000..ab87a87f --- /dev/null +++ b/Source/CPNET/Clean.cmd @@ -0,0 +1,4 @@ +@echo off +setlocal + +if exist *.lbr del *.lbr diff --git a/Source/CPNET/Makefile b/Source/CPNET/Makefile new file mode 100644 index 00000000..7acf4df5 --- /dev/null +++ b/Source/CPNET/Makefile @@ -0,0 +1,18 @@ +OBJECTS = cpn12mt.lbr cpn3mt.lbr cpn12duo.lbr cpn3duo.lbr +DEST = ../../Binary/CPNET/ +TOOLS = ../../Tools + +include $(TOOLS)/Makefile.inc + +ZXCC=../../$(TOOLS)/$(UNAME)/zxcc +export CPMDIR80=../../$(TOOLS)/cpm/ + +cpn12%.lbr: CPNETVER=cpnet12 +cpn3%.lbr: CPNETVER=cpnet3 +%mt.lbr: HWVER=mt011 +%duo.lbr: HWVER=duo + +%.lbr: + cd $(HWVER)/$(CPNETVER) + $(ZXCC) nulu --O -$(*F) -\<30 --A -*.* --L --X + mv $@ ../.. diff --git a/Source/Images/cpnet3/readme.txt b/Source/CPNET/ReadMe.txt similarity index 67% rename from Source/Images/cpnet3/readme.txt rename to Source/CPNET/ReadMe.txt index 237be98a..d81216e3 100644 --- a/Source/Images/cpnet3/readme.txt +++ b/Source/CPNET/ReadMe.txt @@ -6,12 +6,15 @@ *** *** *********************************************************************** -This directory contains the CP/M 3 client tools for CP/NET. These -tools work only with the MT011 RCBus module. +This directory contains the CP/M client components for CP/NET. These +components require either the MT011 RCBus module or the Duodyne +Disk I/O board. All of these files come from Douglas Miller. Please refer to https://github.com/durgadas311/cpnet-z80 for more information and the latest source code. -In general, to use CP/NET on RomWBW, it is intended that you will -copy all of these files into your user 0 directory. \ No newline at end of file +The build process packages the client files into .lbr packages +appropriate for the hardware variations and CP/NET versions. + +-- WBW 7:15 AM 2/11/2024 \ No newline at end of file diff --git a/Source/CPNET/duo/cpnet12/ccp.spr b/Source/CPNET/duo/cpnet12/ccp.spr new file mode 100644 index 00000000..ab2e57bf Binary files /dev/null and b/Source/CPNET/duo/cpnet12/ccp.spr differ diff --git a/Source/Images/cpnet12/cpm2net.hlp b/Source/CPNET/duo/cpnet12/cpm2net.hlp similarity index 94% rename from Source/Images/cpnet12/cpm2net.hlp rename to Source/CPNET/duo/cpnet12/cpm2net.hlp index b7381254..15247b5b 100644 Binary files a/Source/Images/cpnet12/cpm2net.hlp and b/Source/CPNET/duo/cpnet12/cpm2net.hlp differ diff --git a/Source/Images/cpnet12/cpnet12.hlp b/Source/CPNET/duo/cpnet12/cpnet12.hlp similarity index 88% rename from Source/Images/cpnet12/cpnet12.hlp rename to Source/CPNET/duo/cpnet12/cpnet12.hlp index 6562f67a..6f239e55 100644 Binary files a/Source/Images/cpnet12/cpnet12.hlp and b/Source/CPNET/duo/cpnet12/cpnet12.hlp differ diff --git a/Source/CPNET/duo/cpnet12/ndos.spr b/Source/CPNET/duo/cpnet12/ndos.spr new file mode 100644 index 00000000..fc2dcaa9 Binary files /dev/null and b/Source/CPNET/duo/cpnet12/ndos.spr differ diff --git a/Source/CPNET/duo/cpnet12/snios.spr b/Source/CPNET/duo/cpnet12/snios.spr new file mode 100644 index 00000000..b0776f18 Binary files /dev/null and b/Source/CPNET/duo/cpnet12/snios.spr differ diff --git a/Source/Images/cpnet3/cpm3net.hlp b/Source/CPNET/duo/cpnet3/cpm3net.hlp similarity index 97% rename from Source/Images/cpnet3/cpm3net.hlp rename to Source/CPNET/duo/cpnet3/cpm3net.hlp index 4066664b..526fcd5e 100644 Binary files a/Source/Images/cpnet3/cpm3net.hlp and b/Source/CPNET/duo/cpnet3/cpm3net.hlp differ diff --git a/Source/Images/cpnet3/cpnet3.hlp b/Source/CPNET/duo/cpnet3/cpnet3.hlp similarity index 91% rename from Source/Images/cpnet3/cpnet3.hlp rename to Source/CPNET/duo/cpnet3/cpnet3.hlp index 116c6895..20e96489 100644 Binary files a/Source/Images/cpnet3/cpnet3.hlp and b/Source/CPNET/duo/cpnet3/cpnet3.hlp differ diff --git a/Source/CPNET/mt011/cpnet12/ccp.spr b/Source/CPNET/mt011/cpnet12/ccp.spr new file mode 100644 index 00000000..ab2e57bf Binary files /dev/null and b/Source/CPNET/mt011/cpnet12/ccp.spr differ diff --git a/Source/CPNET/mt011/cpnet12/cpm2net.hlp b/Source/CPNET/mt011/cpnet12/cpm2net.hlp new file mode 100644 index 00000000..15247b5b Binary files /dev/null and b/Source/CPNET/mt011/cpnet12/cpm2net.hlp differ diff --git a/Source/CPNET/mt011/cpnet12/cpnet12.hlp b/Source/CPNET/mt011/cpnet12/cpnet12.hlp new file mode 100644 index 00000000..6f239e55 Binary files /dev/null and b/Source/CPNET/mt011/cpnet12/cpnet12.hlp differ diff --git a/Source/CPNET/mt011/cpnet12/ndos.spr b/Source/CPNET/mt011/cpnet12/ndos.spr new file mode 100644 index 00000000..fc2dcaa9 Binary files /dev/null and b/Source/CPNET/mt011/cpnet12/ndos.spr differ diff --git a/Source/CPNET/mt011/cpnet12/snios.spr b/Source/CPNET/mt011/cpnet12/snios.spr new file mode 100644 index 00000000..b191dcd5 Binary files /dev/null and b/Source/CPNET/mt011/cpnet12/snios.spr differ diff --git a/Source/CPNET/mt011/cpnet3/cpm3net.hlp b/Source/CPNET/mt011/cpnet3/cpm3net.hlp new file mode 100644 index 00000000..526fcd5e Binary files /dev/null and b/Source/CPNET/mt011/cpnet3/cpm3net.hlp differ diff --git a/Source/CPNET/mt011/cpnet3/cpnet3.hlp b/Source/CPNET/mt011/cpnet3/cpnet3.hlp new file mode 100644 index 00000000..20e96489 Binary files /dev/null and b/Source/CPNET/mt011/cpnet3/cpnet3.hlp differ diff --git a/Source/Clean.cmd b/Source/Clean.cmd index 3482fbe1..0b879078 100644 --- a/Source/Clean.cmd +++ b/Source/Clean.cmd @@ -11,6 +11,7 @@ pushd ZSDOS && call Clean.cmd & popd pushd CBIOS && call Clean.cmd & popd pushd CPM3 && call Clean.cmd & popd pushd ZPM3 && call Clean.cmd & popd +pushd CPNET && call Clean.cmd & popd pushd pSys && call Clean.cmd & popd pushd Forth && call Clean.cmd & popd pushd TastyBasic && call Clean & popd diff --git a/Source/Doc/ReadMe.md b/Source/Doc/ReadMe.md index 4565bb8a..81a18cf7 100644 --- a/Source/Doc/ReadMe.md +++ b/Source/Doc/ReadMe.md @@ -214,6 +214,12 @@ please let me know if I missed you! * Bill Shen has contributed boot loaders for several of his systems. +* Laszlo Szolnoki has contributed an EF9345 video display + controller driver. + +* Ladislau Szilagyi has contributed an enhanced version of + CP/M Cowgol that leverages RomWBW memory banking. + Contributions of all kinds to RomWBW are very welcome. # Licensing diff --git a/Source/Doc/SystemGuide.md b/Source/Doc/SystemGuide.md index b0516e93..7e1d9e91 100644 --- a/Source/Doc/SystemGuide.md +++ b/Source/Doc/SystemGuide.md @@ -312,13 +312,13 @@ hardware into the proper mode, etc. ## Invocation HBIOS functions are invoked by placing the required parameters in CPU -registers and executing an RST 08 instruction. Note that HBIOS does not +registers and executing an `RST 08` instruction. Note that HBIOS does not preserve register values that are unused. However, the values of the Z80 alternate registers and IX/IY will be preserved (these registers may be used within HBIOS, but will be saved and restored internally). -An alternate method of invoking HBIOS functions is to use `CALL 0xFFF0`. -Since the RST 08 vector exists in page zero of the CPU address space, +An alternate method of invoking HBIOS functions is to use `CALL $FFF0`. +Since the `RST 08` vector exists in page zero of the CPU address space, it may be paged out when alternate memory banks are selected. If this may be true when you are invoking a function, you should use the `CALL` method. @@ -352,6 +352,12 @@ buffers) will require double-buffering if the caller’s buffer is in the lower 32K of CPU address space. For optimal performance, such buffers should be placed in the upper 32K of CPU address space. +HBIOS also implements a small number of core functions in the HBIOS +proxy area at the top of RAM. These exist primarily to faciliate the +operation of normal HBIOS function calls. However, they are available +to be used by OSes and applications. These functions can only be +invoked by calling into a jump table in upper RAM. + ## Result Codes The following function result codes are defined generically for all @@ -664,11 +670,10 @@ by this function. The function typically just records the sector address for subsequent I/O function calls. The double-word Sector Address (DEHL) can represent either a Logical -Block Address (LBA) or a Cylinder/Head/Sector (CHS). If the high bit of -register D is set, then an LBA value is specified. Otherwise, the -value is CHS. +Block Address (LBA) or a Cylinder/Head/Sector (CHS). Bit 7 of D is +set (1) for LBA mode and cleared (0) for CHS mode. -For LBA mode operation, the high bit is cleared and the entire +For LBA mode operation, the high bit is set and the rest of the double-word is then treated as the logical sector address. For CHS mode operation, the Sector Address (DEHL) registers are @@ -1976,10 +1981,25 @@ The hardware Platform (L) is identified as follows: | C: Bank ID | C: Prior Bank ID | Activates the specified memory Bank ID (C) and returns the Prior Bank ID - (C). The function **must** be invoked from code located in the upper +(C). + +The function **must** be invoked from code located in the upper 32K and the stack **must** be in the upper 32K. The Status (A) is a standard HBIOS result code. +If the system is using interrupt mode 1 interrupts, the you **must** +take steps to ensure interrupts are properly handled. You generally +have two choices: + +- Disable interrupts while the User Bank is switched out +- Duplicate the interrupt mode 1 vector from the User Bank + into the bank you are switching to. + +If the User Bank has been switched out, you will not be able to +invoke the HBIOS API functions using an `RST 08` instruction. You can +use the alternative mechanism using `CALL $FFF0` as described in +[Invocation]. + ### Function 0xF3 -- System Get Bank (SYSGETBNK) | **Entry Parameters** | **Returned Values** | @@ -2349,6 +2369,38 @@ This function will return the current value of the switches (L) from the front panel of the system. If no front panel is available in the system, the returned Status (A) will indicate a No Hardware error. +#### SYSGET Subfunction 0xF5 -- Get Application Banks Information (APPBNKS) + +| **Entry Parameters** | **Returned Values** | +|----------------------------------------|----------------------------------------| +| B: 0xF8 | A: Status | +| C: 0xF5 | H: App Banks Start ID | +| | L: App Banks Count | +| | E: Bank Size | + +HBIOS may be configured to reserve a number of RAM memory banks that +will be available for application use. This function returns +information about the RAM memory banks currently available for +application use. The function provides the bank id of the first +available application bank (H) and the count of banks available (L). It +also returns the size of a bank expressed as a number of 256-byte pages +(E). The returned Status (A) is a standard HBIOS result code. + +The application banks are always a contiguous set of banks, so the App +Banks Start ID can be incremented to address additional banks up to the +limit indicated by App Banks Count. If the App Banks Count is zero, +then there are no application banks available (regardless of the value +of App Banks Start ID). + +HBIOS does not provide any mechanism to reserve application banks. Any +concept of allocation of application banks must be implemented within +the OS or application. + +This function does not change the current bank selected. You must use +[Function 0xF2 -- System Set Bank (SYSSETBNK)] or the proxy function +[Bank Select (BNKSEL)] for this. Be sure +to observe the warnings in the description of this function. + ### Function 0xF9 -- System Set (SYSSET) | **Entry Parameters** | **Returned Values** | @@ -2574,6 +2626,111 @@ provided. `\clearpage`{=latex} +## Proxy Functions + +The following special functions are implemented inside of the HBIOS +proxy area at the top of RAM. They do not cause a bank switch and are, +therefore, much faster than their corresponding HBIOS API functions. + +The functions are invoked via the following dedicated jump table: + +| **Function** | **Address** | ** Equate ** | +|----------------------------------------|---------------|------------------------| +| Invoke HBIOS Function (INVOKE) | 0xFFF0 | HB_INVOKE | +| Bank Select (BNKSEL) | 0xFFF3 | HB_BNKSEL | +| Bank Copy (BNKCPY) | 0xFFF6 | HB_BNKCPY | +| Bank Call (BNKCALL) | 0xFFF9 | HB_BNKCALL | + +The function addresses are also defined as equates in hbios.inc. It +is suggested that you use the equates when possible. + +To use the functions, you may either call or jump to them. Some +examples: + +``` + CALL $FFF0 + JP $FFF3 + CALL HB_BNKCPY +``` + +These functions are inherently dangerous and generally not value +checked. Use with extreme caution. + +### Invoke HBIOS Function (INVOKE) + +**Address 0xFFF0** + +This function is an alternate mechanism for invoking the normal HBIOS +API functions. The parameters and return values are as documented +above. To put it another way, `CALL $FFF0` is equivalent to `RST 08`, +but it can be used in any scenario when the normal bank is not +selected. + +### Bank Select (BNKSEL) + +**Address 0xFFF3** + +| **Entry Parameters** | **Returned Values** | +|----------------------------------------|----------------------------------------| +| A: Bank ID | | + +This function will select the memory bank identified by Bank ID (A). +Register AF is destroyed. All other registers are preserved. + +The warnings described in [Function 0xF2 -- System Set Bank (SYSSETBNK)] +should be observed. + +### Bank Copy (BNKCPY) + +**Address 0xFFF6** + +| **Entry Parameters** | **Returned Values** | +|----------------------------------------|----------------------------------------| +| HL: Source Address | HL: Ending Source Address | +| DE: Destination Address | DE: Ending Destination Address | +| BC: Count | BC: 0 | +| HB_SRCBNK: Source Bank ID | | +| HB_DSTBNK: Destination Bank ID | | + +This function will copy Count (BC) bytes from Source Address (HL) in +Source Bank ID (HB_SRCBNK) to Destination Address (DE) in Destination +Bank ID (HB_DSTBNK). The HB_SRCBNK and HB_DSTBNK fields are dedicated +locations in the proxy. These locations are defined in hbios.inc: + +- Source Bank ID: `HB_SRCBNK` = $FFE4 +- Destination Bank ID: `HB_DSTBNK` = $FFE7 + +The Source Bank ID and Destination Bank ID values must be populated in +the specified addresses before calling this function. + +During processing, HL and DE, will be incremented. At termination, +HL and DE will contain the "next" source/destination addresses that +would be copied. This allows this function to be invoked repeatedly +to copy continuous blocks of data. + +Register AF is destroyed by this function. Register BC will be 0. + +### Bank Call (BNKCALL) + +**Address 0xFFF9** + +| **Entry Parameters** | **Returned Values** | +|----------------------------------------|----------------------------------------| +| A: Target Bank ID | | +| IX: Target Address | | + +This function will perform a function call to a routine in another +bank. It does this by selecting the Target Bank ID (A) and then +calling the Target Address (IX). On return from the target function, +the originally active bank is selected. + +Register usage is determined by the routine that is called. + +Since a different bank will be selected while the target function is +active, the warnings described in +[Function 0xF2 -- System Set Bank (SYSSETBNK)] should be observed. + +`\clearpage`{=latex} # Errors and diagnostics diff --git a/Source/Doc/UserGuide.md b/Source/Doc/UserGuide.md index 9fe81088..006fa3ba 100644 --- a/Source/Doc/UserGuide.md +++ b/Source/Doc/UserGuide.md @@ -897,6 +897,31 @@ The use of diagnostic levels above 4 are really intended only for software developers. I do not recommend changing this under normal circumstances. +## Console Takeover + +If your system has more than one character unit, then the Boot Loader +will "poll" all of the character devices for a request to make any of +the alternate character devices the active console. This is called a +console takeover request. This functionality must be enabled in the ROM +build configuration, but currently it is for all standard ROMs. + +To request a console takeover, you just press the \ character +twice in a row at the port or terminal that you want to move the console +to. The terminal or communication software **must** be configured for +the default serial port speed and data bits for this to work. + +A takeover request is only possible while the active console is +showing the Boot Loader prompt prior to typing any characters at +the active console. In other words, once you start typing at the +active console prompt, the takeover polling is suspended. If you have +started typing characters, you can press \ at the active +console to get a fresh Boot Loader prompt and reactivate the polling. + +If you have built a custom ROM that includes an automatic boot +command with a timeout, then performing a console takeover will +abort the timeout process and the automatic boot command will not be +performed. + ## Front Panel RomWBW supports the concept of a simple front panel. The following @@ -924,7 +949,8 @@ output on the console. The meaning of the LEDs is: Once the system has booted, the LEDs are used to indicate disk device activity. Each LED numbered 7-0 represents disk units 7-0. As each -disk device performs I/O, the LED will light. +disk device performs I/O, the LED will light while the disk is active. +This is only possible for the first 8 disk units. The second row of the front panel is composed of switches that allow you to control a few aspects of the system startup. @@ -1749,10 +1775,84 @@ with 6 slices containing 5 ready-to-run OSes and a slice with the WordStar application files. Alternatively, you can create your own hard disk image with the specific slice contents you choose. +#### Standard Hard Disk Physical Layout + +As previously described in [Hard Disk Layouts], the exact placement of +slices and optional FAT partition will vary depending on which disk +layout (hd512 or hd1k) you are using and your partition table entries. +To simplify the use of hard disk images, RomWBW has adopted standard +partition table entries for disk image files provided. + +These partition sizes and locations were chosen to: + +- Fit entirely on 1GB media +- Allow for 64 CP/M filesystem slices +- Allow for a 384KB FAT filesystem + +**NOTE:** RomWBW is not limited to these partition table entries. You +can change the size and location of the RomWBW and/or FAT partitions to +increase/decrease the number of slices or FAT filesystem size. + ++---------------------------------+-------------------------------+-------------------------------+ +| | **--- Legacy (hd512) ---** | **--- Modern (hd1k) ---** | +| +---------------+---------------+---------------+---------------+ +| | Byte(s) | Sector(s) | Byte(s) | Sector(s) | ++=================================+==============:+==============:+==============:+==============:+ +| RomWBW (slices) Start | 0 | 0 | 1,048,576 | 2,048 | ++---------------------------------+---------------+---------------+---------------+---------------+ +| RomWBW (slices) Size | 545,259,520 | 1,064,960 | 536,870,912 | 1,048,576 | ++---------------------------------+---------------+---------------+---------------+---------------+ +| FAT Filesystem Start | 545,259,520 | 1,064,960 | 537,919,488 | 1,050,624 | ++---------------------------------+---------------+---------------+---------------+---------------+ +| FAT Filesystem Size | 402,653,184 | 786,432 | 402,653,184 | 786,432 | ++---------------------------------+---------------+---------------+---------------+---------------+ +| \ | 947,912,704 | 1,851,392 | 940,572,672 | 1,837,056 | ++---------------------------------+---------------+---------------+---------------+---------------+ + +The above partition table entries will result in the following locations and sizes of +filesystems on the RomWBW disk images. + + ++---------------------------------+-------------------------------+-------------------------------+ +| | **--- Legacy (hd512) ---** | **--- Modern (hd1k) ---** | +| +---------------+---------------+---------------+---------------+ +| | Byte(s) | Sector(s) | Byte(s) | Sector(s) | ++=================================+==============:+==============:+==============:+==============:+ +| Prefix Start | -- | -- | 0 | 0 | ++---------------------------------+---------------+---------------+---------------+---------------+ +| Prefix Size | -- | -- | 1,048,576 | 2,048 | ++---------------------------------+---------------+---------------+---------------+---------------+ +| Slice Size | 8,519,680 | 16,640 | 8,388,608 | 16,384 | ++---------------------------------+---------------+---------------+---------------+---------------+ +| Slice 0 Start | 0 | 0 | 1,048,576 | 2,048 | ++---------------------------------+---------------+---------------+---------------+---------------+ +| Slice 1 Start | 8,519,680 | 16,640 | 9,437,184 | 18,432 | ++---------------------------------+---------------+---------------+---------------+---------------+ +| Slice 2 Start | 17,039,360 | 33,280 | 17,825,792 | 34,816 | ++---------------------------------+---------------+---------------+---------------+---------------+ +| Slice 3 Start | 25,559,040 | 49,920 | 26,214,400 | 51,200 | ++---------------------------------+---------------+---------------+---------------+---------------+ +| Slice 4 Start | 34,078,720 | 66,560 | 34,603,008 | 67,584 | ++---------------------------------+---------------+---------------+---------------+---------------+ +| Slice 5 Start | 42,598,400 | 83,200 | 42,991,616 | 83,968 | ++---------------------------------+---------------+---------------+---------------+---------------+ +| Slice 6 Start | 51,118,080 | 99,840 | 51,380,224 | 100,352 | ++---------------------------------+---------------+---------------+---------------+---------------+ +| Slice 7 Start | 59,637,760 | 116,480 | 59,768,832 | 116,736 | ++---------------------------------+---------------+---------------+---------------+---------------+ +| Slice 63 Start | 536,739,840 | 1,048,320 | 529,530,880 | 1,034,240 | ++---------------------------------+---------------+---------------+---------------+---------------+ +| FAT Filesystem Start | 545,259,520 | 1,064,960 | 537,919,488 | 1,050,624 | ++---------------------------------+---------------+---------------+---------------+---------------+ +| FAT Filesystem Size | 402,653,184 | 786,432 | 402,653,184 | 786,432 | ++---------------------------------+---------------+---------------+---------------+---------------+ +| \ | 947,912,704 | 1,851,392 | 940,572,672 | 1,837,056 | ++---------------------------------+---------------+---------------+---------------+---------------+ + #### Combo Hard Disk Image The combo disk image is essentially just a single image that has several - of the individual filesystem images (slices) already concatenated +of the individual filesystem images (slices) already concatenated together. The combo disk image contains the following 6 slices in the positions indicated: @@ -3022,45 +3122,116 @@ Both CP/NET 1.2 and 3.0 clients are provided. Version 1.2 is for use with CP/M 2.2 and compatible OSes. Version 3.0 is for use with CP/M 3 and compatible OSes. -The CP/NET client software provided with RomWBW is specifically for the -MT011 Module developed by Mark T for the RCBus. The client software -interacts directly with this hardware. In a future version of RomWBW, I -hope to add a generic networking API that will allow a greater range of -network hardware to be used. +The CP/NET client software provided with RomWBW requires a supported +ethernet interface module. At this time, the following are supported: + +* RCBus MT011 w/ Ethernet Featherwing and (optionally) SPI FRAM + (e.g., Adafruit SPI Non-Volatile FRAM Breakout) +* Duodyne Disk I/O w/ Wiz850IO and (optionally) SPI NVRAM + (e.g., 25LC256) + +The client software interacts directly with this hardware. In a future +version of RomWBW, I hope to add a generic networking API that will +allow a greater range of network hardware to be used. To use CP/NET effectively, you will want to review the documentation -provided by Douglas on his +provided by Douglas on at his [cpnet-z80 GitHub Project](https://github.com/durgadas311/cpnet-z80). Additionally, you should consult the DRI documentation which is not included with RomWBW, but is available on the [cpnet-z80](https://github.com/durgadas311/cpnet-z80) site. Below, I will provide the general steps involved in setting up a -network using MT011 with RomWBW. The examples are all based on -Z-System. +network using MT011 with RomWBW. ## CP/NET Client Setup The CP/NET client files are included on the RomWBW disk images, but they are found in user area 4. They are placed there to avoid confusing anyone that is not specifically trying to run a network -client. +client. They are only found on the CPM 2.2 and CP/M 3 slices. Using +CP/NET on alternative OSes may work, but is not officially supported. + +The CP/NET client files are packaged in `.LBR` library files. The +library files are found in user area 4. + +| File | CP/NET Version | OS | Hardware | +|--------------|----------------|----------|-----------------------| +| CPN12MT.LBR | CP/NET 1.2 | CP/M 2.2 | RCBus w/ MT011 | +| CPN3MT.LBR | CP/NET 3 | CP/M 3 | RCBus w/ MT011 | +| CPN12DUO.LBR | CP/NET 1.2 | CP/M 2.2 | Duodyne w/ Disk I/O | +| CPN3DUO.LBR | CP/NET 3 | CP/M 3 | Duodyne w/ Disk I/O | + +First, you need to merge the files from the correct library file +into user area 0. This is done by extracting the files using the +`NULU` library management utility application. + +1. Start NULU specifying desired CP/NET library for \: + + `A>NULU 4:` + +2. At the NULU prompt, extract the files using the `-E *.*` command: + + `-READY A0:>-E *.*` -First, you need to merge the files from user area 4 into user area 0. -After booting into Z-System (disk boot), you can copy the files -using the following command: +3. Exit NULU using the `-X` command: -`COPY 4:*.* 0:` + `-Extract members A0:>-x` -You will be asked if you want to overwrite `README.TXT`. It doesn't -really matter, but I suggest you do not overwrite it. +Here is an example of extracting the CP/NET 1.2 client files for an +RCBus system w/ MT011. You should be in user area 0 when performing +this operation. -The MT011 Module uses a WizNet network module. At this point, you will -need to configure it for your local network. The definitive guide to -the use of `WIZCFG` is on the -[cpnet-z80](https://github.com/durgadas311/cpnet-z80) site in the -document called "CPNET-WIZ850io.pdf". Here is an example of the commands -needed to configure the WizNet: +``` +A>nulu 4:cpn12mt +NULU 1.52 (07/12/87) +Copyright (C) 1984, 1985 & 1987 by Martin Murray +Bug fixes in version 1.52 by Mick Waters + +Library A4:CPN12MT.LBR open. +(Buffer size: 259 sectors) +Active entries: 27, Deleted: 0, Free: 5, Total: 32. +-READY A0:>-e *.* +Extracting... + CCP .SPR to A0:CCP .SPR + CPM2NET .HLP to A0:CPM2NET .HLP + CPNBOOT .COM to A0:CPNBOOT .COM + CPNET12 .HLP to A0:CPNET12 .HLP + CPNETLDR.COM to A0:CPNETLDR.COM + CPNETSTS.COM to A0:CPNETSTS.COM + DSKRESET.COM to A0:DSKRESET.COM + ENDLIST .COM to A0:ENDLIST .COM + LOCAL .COM to A0:LOCAL .COM + LOGIN .COM to A0:LOGIN .COM + LOGOFF .COM to A0:LOGOFF .COM + MAIL .COM to A0:MAIL .COM + NDOS .SPR to A0:NDOS .SPR + NETDOWN .COM to A0:NETDOWN .COM + NETSTAT .COM to A0:NETSTAT .COM + NETWORK .COM to A0:NETWORK .COM + NVRAM .COM to A0:NVRAM .COM + PIPNET .COM to A0:PIPNET .COM + RDATE .COM to A0:RDATE .COM + SNIOS .SPR to A0:SNIOS .SPR + SRVSTAT .COM to A0:SRVSTAT .COM + TR .COM to A0:TR .COM + WIZCFG .COM to A0:WIZCFG .COM + WIZDBG .COM to A0:WIZDBG .COM + WIZTEST .COM to A0:WIZTEST .COM + XSUBNET .COM to A0:XSUBNET .COM +-Extract members A0:>-x + +Closing A4:CPN12MT.LBR... + +``` + + + +At this point, you will need to configure your ethernet adapter for your + local network using `WIZCFG`. The definitive guide to the use of +`WIZCFG` is on the [cpnet-z80](https://github.com/durgadas311/cpnet-z80) +site in the document called "CPNET-WIZ850io.pdf". Here is an example of +the commands needed to configure the WizNet: | | | |------------------------------------|----------------------------------------| @@ -3084,8 +3255,15 @@ MAC: 98:76:B6:11:00:C4 Socket 0: 00H 192.168.1.3 31100 0 ``` -You will need to reapply these commands every time you power cycle -your RomWBW computer, so I recommend putting them into a `SUBMIT` file. +These values can be persisted across power-cycles if your system has +NVRAM storage. To program the values into your NVRAM, you would use +the same commands as above, but omit the `w` parameter. The +"CPNET-WIZ850io.pdf" document is highly recommended to understand the +operation of `WIZCFG`. + +If you do not utilize NVRAM to persist your configuration, you will need +to reapply these commands every time you power cycle your RomWBW +computer, so I recommend putting them into a `SUBMIT` file. After applying these commands, you should be able ping the WizNet from another computer on the local network. If this works, then the @@ -3093,10 +3271,11 @@ client-side is ready. ## CP/NET Sever Setup -These instructions will assume you are using Douglas' CpnetSocketServer -as the server on your network. The definitive guide to this software -is also on the [cpnet-z80](https://github.com/durgadas311/cpnet-z80) -site and is called "CpnetSocketServer.pdf". +These instructions will assume you are using Douglas Miller's +CpnetSocketServer to implement a CP/NOS server on your network. The +definitive guide to this software is also on the [cpnet-z80] +(https://github.com/durgadas311/cpnet-z80) site and is called +"CpnetSocketServer.pdf". The software is a Java application, so it can generally run anywhere there is a Java runtime environment available. I have normally used @@ -3140,10 +3319,11 @@ use CP/NET on your RomWBW system. CP/NET documentation is available on the [cpnet-z80](https://github.com/durgadas311/cpnet-z80) site. The document is called "dri-cpnet.pdf". -After booting your computer, you will always need to start CP/NET using -the `CPNETLDR` command. If that works, you can map network drives as -local drives using the `NETWORK` command. The `CPNETSTS` command is -useful for displaying the current status. Here is a sample session: +Under CP/M 2.2, you will start the networking client using the command +`CPNETLDR`. Under CP/M 3, you use the command `NDOS3`. If that works, +you can map network drives as local drives using the `NETWORK` command. +The `CPNETSTS` command is useful for displaying the current status. +Here is a sample session from CP/M 2.2: ``` A>cpnetldr @@ -3195,7 +3375,8 @@ Console Device = LOCAL List Device = LOCAL ``` -You will see some additional messages on your server when clients +If you are using CpSocketServer to provide the CP/NOS server, then +you will see some messages on your server console when clients connect. Here are the messages issued by the server in the above example: @@ -3205,14 +3386,17 @@ Remote 192.168.1.201 is f0 Creating HostFileBdos 00 device with root dir /home/wayne/cpnet/root ``` -At this point CP/NET is ready for general use. +At this point CP/NET is ready for general use. You should be able +to access files on the network mapped drives just like files on your +local drives. ## Network Boot -It is possible to boot your MT011 equipped RomWBW system directly -from a network server. This means that the operating system will be -loaded directly from the network server and all of your drive letters -will be provided by the network server. +It is possible to boot your MT011 equipped RomWBW system directly from a +network server. This means that the operating system will be loaded +directly from the network server and all of your drive letters will be +provided by the network server. Duodyne is not yet supported in this +mode of operation. It is important to understand that the operating system that is loaded in this case is **not** a RomWBW enhanced operating system. Some @@ -3220,13 +3404,13 @@ commands (such as the `ASSIGN` command) will not be possible. Also, you will only have access to drives provided by the network server -- no local disk drives will be available. -In order to do this, your MT011 Module must be enhanced with an NVRAM -SPI FRAM mini-board. The NVRAM is used to store your WizNet +In order to do this, your MT011 Module **must** be enhanced with an +NVRAM SPI FRAM mini-board. The NVRAM is used to store your WizNet configuration values so they do not need to be re-entered every time you -cold boot your system. +power-cycle your system. Using the same values from the previous example, you would -issue the WizNet commands: +issue the `WIZCFG` commands: ``` wizcfg n F0 @@ -3245,15 +3429,20 @@ contains some files that will be sent to your RomWBW system when the Network boot is performed. By default the directory will be `~/NetBoot`. In this directory you need to place the following files: -* `cpnos-wbw.sys` found in the Binary directory of RomWBW -* `ndos.spr` found in the Source/Images/cpnet12 directory of RomWBW -* `snios.spr` found in the Source/Images/cpnet12 directory of RomWBW +* `cpnos-wbw.sys` +* `ndos.spr` +* `snios.spr` + +All of these files are found in the Binary/CPNET/NetBoot directory of +the RomWBW distribution. You also need to make sure CpnetSocketServer is configured with an 'A' drive and that drive must contain (at an absolute minimum) the following file: -* `ccp.spr` found in the Source/Images/cpnet12 directory of RomWBW +* `ccp.spr` + +which is also found in the Binary/CPNET/NetBoot directory of RomWBW Finally, you need to add the following line to your CpnetSocketServer configuration file: @@ -3316,7 +3505,8 @@ List Device = LOCAL ``` At this point you can use CP/M and CP/NET normally, but all disk -access will be to/from the network drives. +access will be to/from the network drives. There is no access to +your local disk drives in this boot mode. # Transferring Files @@ -3917,6 +4107,12 @@ please let me know if I missed you! * Bill Shen has contributed boot loaders for several of his systems. +* Laszlo Szolnoki has contributed an EF9345 video display + controller driver. + +* Ladislau Szilagyi has contributed an enhanced version of + CP/M Cowgol that leverages RomWBW memory banking. + Contributions of all kinds to RomWBW are very welcome. # Licensing @@ -5558,6 +5754,7 @@ may be discovered by RomWBW in your system. | DS1501RTC | RTC | Maxim DS1501/DS1511 Watchdog Real-Time Clock | | DSRTC | RTC | Maxim DS1302 Real-Time Clock w/ NVRAM | | DUART | Char | SCC2681 or compatible Dual UART | +| EF | Char | EF9345 Video Display Controller | | EMM | Disk | Disk drive on Parallel Port emm interface (Zip Drive) | | FD | Disk | 8272 or compatible Floppy Disk Controller | | FP | System | Simple LED & Switch Front Panel | diff --git a/Source/HBIOS/Build.cmd b/Source/HBIOS/Build.cmd index 03dbe739..ef862852 100644 --- a/Source/HBIOS/Build.cmd +++ b/Source/HBIOS/Build.cmd @@ -135,11 +135,11 @@ for %%f in (hbios_rom.bin osimg.bin osimg1.bin osimg2.bin) do ( :: if %ROMSize% gtr 0 ( - copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin + ..\RomDsk\rom%ROMSize%_wbw.dat %ROMName%.rom || exit /b + copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin + ..\RomDsk\rom%ROMDiskSize%_wbw.dat %ROMName%.rom || exit /b copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin %ROMName%.upd || exit /b copy /b hbios_app.bin + osimg_small.bin %ROMName%.com || exit /b ) else ( - copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin + ..\RomDsk\ram%RAMSize%_wbw.dat %ROMName%.rom || exit /b + copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin + ..\RomDsk\rom%RAMDiskSize%_wbw.dat %ROMName%.rom || exit /b copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin %ROMName%.upd || exit /b copy /b hbios_app.bin + osimg_small.bin %ROMName%.com || exit /b ) @@ -174,10 +174,10 @@ copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_una.bin + ..\cpm22\cpm_una.bin o :: Copy OS Bank and ROM Disk image files to output copy /b osimg.bin ..\..\Binary\UNA_WBW_SYS.bin || exit /b -copy /b ..\RomDsk\rom%ROMSize%_una.dat ..\..\Binary\UNA_WBW_ROM%ROMSize%.bin || exit /b +copy /b ..\RomDsk\rom%ROMDiskSize%_una.dat ..\..\Binary\UNA_WBW_ROM%ROMDiskSize%.bin || exit /b :: Create the final ROM image -copy /b ..\UBIOS\UNA-BIOS.BIN + osimg.bin + ..\UBIOS\FSFAT.BIN + ..\RomDsk\rom%ROMSize%_una.dat %ROMName%.rom || exit /b +copy /b ..\UBIOS\UNA-BIOS.BIN + osimg.bin + ..\UBIOS\FSFAT.BIN + ..\RomDsk\rom%ROMDiskSize%_una.dat %ROMName%.rom || exit /b :: Copy to output copy %ROMName%.rom ..\..\Binary || exit /b diff --git a/Source/HBIOS/Build.sh b/Source/HBIOS/Build.sh index 6bd29d53..4f2a4a31 100755 --- a/Source/HBIOS/Build.sh +++ b/Source/HBIOS/Build.sh @@ -115,4 +115,4 @@ fi #echo OBJECTS=${OBJECTS} -make ROM_PLATFORM=${ROM_PLATFORM} ROM_CONFIG=${ROM_CONFIG} ROMSIZE=${ROMSIZE} RAMSIZE=${RAMSIZE} +make ROM_PLATFORM=${ROM_PLATFORM} ROM_CONFIG=${ROM_CONFIG} ROMSIZE=${ROMSIZE} RAMSIZE=${RAMSIZE} ROMDISKSIZE=${ROMDISKSIZE} RAMDISKSIZE=${RAMDISKSIZE} diff --git a/Source/HBIOS/Config/RCZ180_ext.asm b/Source/HBIOS/Config/RCZ180_ext.asm index 25cad0e4..3f8c7744 100644 --- a/Source/HBIOS/Config/RCZ180_ext.asm +++ b/Source/HBIOS/Config/RCZ180_ext.asm @@ -50,6 +50,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) +EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD ; ; diff --git a/Source/HBIOS/Config/RCZ180_nat.asm b/Source/HBIOS/Config/RCZ180_nat.asm index 4c682e3e..d8bd155b 100644 --- a/Source/HBIOS/Config/RCZ180_nat.asm +++ b/Source/HBIOS/Config/RCZ180_nat.asm @@ -50,6 +50,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) +EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD ; AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER diff --git a/Source/HBIOS/Config/RCZ180_z1rcc.asm b/Source/HBIOS/Config/RCZ180_z1rcc.asm index 052792f6..5556b6ac 100644 --- a/Source/HBIOS/Config/RCZ180_z1rcc.asm +++ b/Source/HBIOS/Config/RCZ180_z1rcc.asm @@ -58,6 +58,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) +EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD ; ; diff --git a/Source/HBIOS/Config/RCZ280_ext.asm b/Source/HBIOS/Config/RCZ280_ext.asm index f2840178..035b37a1 100644 --- a/Source/HBIOS/Config/RCZ280_ext.asm +++ b/Source/HBIOS/Config/RCZ280_ext.asm @@ -49,6 +49,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) +EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD ; AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER diff --git a/Source/HBIOS/Config/RCZ280_nat.asm b/Source/HBIOS/Config/RCZ280_nat.asm index 1dfe55b6..2d74551c 100644 --- a/Source/HBIOS/Config/RCZ280_nat.asm +++ b/Source/HBIOS/Config/RCZ280_nat.asm @@ -49,6 +49,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) +EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD ; AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER diff --git a/Source/HBIOS/Config/RCZ280_zz80mb.asm b/Source/HBIOS/Config/RCZ280_zz80mb.asm index 66ff739e..7a54bc23 100644 --- a/Source/HBIOS/Config/RCZ280_zz80mb.asm +++ b/Source/HBIOS/Config/RCZ280_zz80mb.asm @@ -54,6 +54,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) VRCENABLE .SET TRUE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) +EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD ; AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER diff --git a/Source/HBIOS/Config/RCZ280_zzrcc.asm b/Source/HBIOS/Config/RCZ280_zzrcc.asm index 7f79d840..db8067b8 100644 --- a/Source/HBIOS/Config/RCZ280_zzrcc.asm +++ b/Source/HBIOS/Config/RCZ280_zzrcc.asm @@ -60,6 +60,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) VRCENABLE .SET TRUE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) +EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD ; AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER diff --git a/Source/HBIOS/Config/RCZ280_zzrcc_ram.asm b/Source/HBIOS/Config/RCZ280_zzrcc_ram.asm index 703fbc21..957535d2 100644 --- a/Source/HBIOS/Config/RCZ280_zzrcc_ram.asm +++ b/Source/HBIOS/Config/RCZ280_zzrcc_ram.asm @@ -60,6 +60,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) VRCENABLE .SET TRUE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) +EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD ; AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER diff --git a/Source/HBIOS/Config/RCZ80_easy.asm b/Source/HBIOS/Config/RCZ80_easy.asm index d59154ca..ae6a1d8b 100644 --- a/Source/HBIOS/Config/RCZ80_easy.asm +++ b/Source/HBIOS/Config/RCZ80_easy.asm @@ -63,6 +63,7 @@ TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) +EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD ; AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER diff --git a/Source/HBIOS/Config/RCZ80_jbl.asm b/Source/HBIOS/Config/RCZ80_jbl.asm index b72f6076..e43b54a8 100644 --- a/Source/HBIOS/Config/RCZ80_jbl.asm +++ b/Source/HBIOS/Config/RCZ80_jbl.asm @@ -62,6 +62,7 @@ TMSENABLE .SET TRUE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) TMSMODE .SET TMSMODE_COLECO ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) +EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) VDAEMU_SERKBD .SET 1 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD ; AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER diff --git a/Source/HBIOS/Config/RCZ80_kio.asm b/Source/HBIOS/Config/RCZ80_kio.asm index e56048d4..df822ed8 100644 --- a/Source/HBIOS/Config/RCZ80_kio.asm +++ b/Source/HBIOS/Config/RCZ80_kio.asm @@ -59,6 +59,7 @@ TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) +EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD ; AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER diff --git a/Source/HBIOS/Config/RCZ80_skz.asm b/Source/HBIOS/Config/RCZ80_skz.asm index 0dcf8039..b2b804c6 100644 --- a/Source/HBIOS/Config/RCZ80_skz.asm +++ b/Source/HBIOS/Config/RCZ80_skz.asm @@ -54,6 +54,7 @@ TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) +EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD ; AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER diff --git a/Source/HBIOS/Config/RCZ80_std.asm b/Source/HBIOS/Config/RCZ80_std.asm index d3b51193..13689758 100644 --- a/Source/HBIOS/Config/RCZ80_std.asm +++ b/Source/HBIOS/Config/RCZ80_std.asm @@ -47,6 +47,7 @@ TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) +EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD ; AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER diff --git a/Source/HBIOS/Config/RCZ80_tiny.asm b/Source/HBIOS/Config/RCZ80_tiny.asm index 4257cd61..81935820 100644 --- a/Source/HBIOS/Config/RCZ80_tiny.asm +++ b/Source/HBIOS/Config/RCZ80_tiny.asm @@ -68,6 +68,7 @@ TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) +EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD ; AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER diff --git a/Source/HBIOS/Config/RCZ80_zrc.asm b/Source/HBIOS/Config/RCZ80_zrc.asm index 272aac78..35770df3 100644 --- a/Source/HBIOS/Config/RCZ80_zrc.asm +++ b/Source/HBIOS/Config/RCZ80_zrc.asm @@ -48,6 +48,7 @@ TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) VRCENABLE .SET TRUE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) +EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD ; AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER diff --git a/Source/HBIOS/Config/RCZ80_zrc512.asm b/Source/HBIOS/Config/RCZ80_zrc512.asm index 12457d6b..cf1eed89 100644 --- a/Source/HBIOS/Config/RCZ80_zrc512.asm +++ b/Source/HBIOS/Config/RCZ80_zrc512.asm @@ -50,6 +50,7 @@ TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) VRCENABLE .SET TRUE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) +EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD ; AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER diff --git a/Source/HBIOS/Config/RCZ80_zrc_ram.asm b/Source/HBIOS/Config/RCZ80_zrc_ram.asm index 59993996..3e3e3ef4 100644 --- a/Source/HBIOS/Config/RCZ80_zrc_ram.asm +++ b/Source/HBIOS/Config/RCZ80_zrc_ram.asm @@ -50,6 +50,7 @@ TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) VRCENABLE .SET TRUE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) +EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD ; AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER diff --git a/Source/HBIOS/Config/SCZ180_sc126.asm b/Source/HBIOS/Config/SCZ180_sc126.asm index e617d8c9..785580e9 100644 --- a/Source/HBIOS/Config/SCZ180_sc126.asm +++ b/Source/HBIOS/Config/SCZ180_sc126.asm @@ -52,6 +52,7 @@ TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) +EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD ; AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER diff --git a/Source/HBIOS/Config/SCZ180_sc130.asm b/Source/HBIOS/Config/SCZ180_sc130.asm index 219862cb..9987bf39 100644 --- a/Source/HBIOS/Config/SCZ180_sc130.asm +++ b/Source/HBIOS/Config/SCZ180_sc130.asm @@ -53,6 +53,7 @@ TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) +EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD ; AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER diff --git a/Source/HBIOS/Config/SCZ180_sc700.asm b/Source/HBIOS/Config/SCZ180_sc700.asm index 9932cba2..88f38f37 100644 --- a/Source/HBIOS/Config/SCZ180_sc700.asm +++ b/Source/HBIOS/Config/SCZ180_sc700.asm @@ -53,6 +53,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) +EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD ; AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER diff --git a/Source/HBIOS/Makefile b/Source/HBIOS/Makefile index 1d4b6c64..d684aa1f 100644 --- a/Source/HBIOS/Makefile +++ b/Source/HBIOS/Makefile @@ -74,15 +74,15 @@ $(OBJECTS) : $(ROMDEPS) fi if [ $(ROM_PLATFORM) = UNA ] ; then \ cp osimg.bin $(DEST)/UNA_WBW_SYS.bin ; \ - cp ../RomDsk/rom$(ROMSIZE)_una.dat $(DEST)/UNA_WBW_ROM$(ROMSIZE).bin ; \ - cat ../UBIOS/UNA-BIOS.BIN osimg.bin ../UBIOS/FSFAT.BIN ../RomDsk/rom$(ROMSIZE)_una.dat >$(ROMNAME).rom ; \ + cp ../RomDsk/rom$(ROMDISKSIZE)_una.dat $(DEST)/UNA_WBW_ROM$(ROMDISKSIZE).bin ; \ + cat ../UBIOS/UNA-BIOS.BIN osimg.bin ../UBIOS/FSFAT.BIN ../RomDsk/rom$(ROMDISKSIZE)_una.dat >$(ROMNAME).rom ; \ else \ if [ $(ROMSIZE) -gt 0 ] ; then \ - cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin ../RomDsk/rom$(ROMSIZE)_wbw.dat >$(ROMNAME).rom ; \ + cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin ../RomDsk/rom$(ROMDISKSIZE)_wbw.dat >$(ROMNAME).rom ; \ cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin >$(ROMNAME).upd ; \ cat hbios_app.bin osimg_small.bin > $(ROMNAME).com ; \ else \ - cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin ../RomDsk/ram$(RAMSIZE)_wbw.dat >$(ROMNAME).rom ; \ + cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin ../RomDsk/rom$(RAMDISKSIZE)_wbw.dat >$(ROMNAME).rom ; \ cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin >$(ROMNAME).upd ; \ cat hbios_app.bin osimg_small.bin > $(ROMNAME).com ; \ fi \ diff --git a/Source/HBIOS/Makefile.new b/Source/HBIOS/Makefile.new index c286b3ce..16d7f26e 100644 --- a/Source/HBIOS/Makefile.new +++ b/Source/HBIOS/Makefile.new @@ -9,7 +9,8 @@ DIST_OBJECTS := \ # RCZ80_mt RCZ80_duart MON_std OBJECTS := $(DIST_OBJECTS) -OBJECTS := SBC_std MK4_std UNA_std S100_std +# OBJECTS := SBC_std MK4_std UNA_std S100_std + OBJECTS := $(OBJECTS:=.rom) $(OBJECTS:=.com) $(OBJECTS:=.upd) OBJECTS := $(filter-out UNA_%.com UNA_%.upd,$(OBJECTS)) @@ -115,13 +116,13 @@ S100_%.imgpad2.bin: s100mon.bin UNA_%.rom: UNA_%.osimg.bin UNA_%.hbios_env.sh . ./UNA_$(*F).hbios_env.sh ; \ - cat ../UBIOS/UNA-BIOS.BIN UNA_$(*F).osimg.bin ../UBIOS/FSFAT.BIN ../RomDsk/rom$${ROMSIZE}_una.dat >$@ ; \ + cat ../UBIOS/UNA-BIOS.BIN UNA_$(*F).osimg.bin ../UBIOS/FSFAT.BIN ../RomDsk/rom$${ROMDISKSIZE}_una.dat >$@ ; \ cp UNA_$(*F).osimg.bin $(DEST)/UNA_WBW_SYS.bin ; \ - cp ../RomDsk/rom$${ROMSIZE}_una.dat $(DEST)/UNA_WBW_ROM$${ROMSIZE}.bin + cp ../RomDsk/rom$${ROMDISKSIZE}_una.dat $(DEST)/UNA_WBW_ROM$${ROMDISKSIZE}.bin %.rom: %.hbios_rom.bin %.osimg.bin %.osimg1.bin %.imgpad2.bin %.hbios_env.sh . ./$(*F).hbios_env.sh ; \ - if [ $$ROMSIZE -gt 0 ] ; then RD="rom$$ROMSIZE" ; else RD="ram$$RAMSIZE" ; fi ; \ + if [ $$ROMSIZE -gt 0 ] ; then RD="rom$$ROMDISKSIZE" ; else RD="rom$$RAMDISKSIZE" ; fi ; \ cat $(*F).hbios_rom.bin $(*F).osimg.bin $(*F).osimg1.bin $(*F).imgpad2.bin ../RomDsk/$${RD}_wbw.dat >$@ %.com: %.hbios_app.bin %.osimg_small.bin diff --git a/Source/HBIOS/ansi.asm b/Source/HBIOS/ansi.asm index 50fbc9e6..f6a9dc88 100644 --- a/Source/HBIOS/ansi.asm +++ b/Source/HBIOS/ansi.asm @@ -22,6 +22,14 @@ ANSI_DEFCOLOR .EQU 7 ; WHITE ON BLACK ; ANSI EMULATION MODULE ;================================================================================================== ; +; PRE-CONSOLE INITIALIZATION +; +ANSI_PREINIT: + OR $FF ; RESET THE VDA UNIT + LD (ANSI_VDAUNIT),A ; ... TO INITIAL VALUE + XOR A + RET +; ; INITIALIZATION OF EMULATION MODULE CALLED BY PARENT VDA DRIVER ; ON ENTRY: ; DE: DISPATCH ADDRESS OF CALLING VDA DRIVER diff --git a/Source/HBIOS/cfg_duo.asm b/Source/HBIOS/cfg_duo.asm index cbb1f932..47951975 100644 --- a/Source/HBIOS/cfg_duo.asm +++ b/Source/HBIOS/cfg_duo.asm @@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT +AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT ; CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO CPUSPDDEF .EQU SPD_UNSUP ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW @@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON] MPGSEL_0 .EQU $50 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY) MPGSEL_1 .EQU $51 ; Z2 MEM MGR BANK 1 PAGE SELECT REG (WRITE ONLY) @@ -67,9 +69,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] ; FPLED_ENABLE .EQU TRUE ; FP: ENABLES FRONT PANEL LEDS FPLED_IO .EQU $42 ; FP: PORT ADDRESS FOR FP LEDS +FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS FPSW_ENABLE .EQU TRUE ; FP: ENABLES FRONT PANEL SWITCHES FPSW_IO .EQU $42 ; FP: PORT ADDRESS FOR FP SWITCHES +FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED ; DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING ; @@ -170,6 +174,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM) +EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDROM .EQU TRUE ; MD: ENABLE ROM DISK diff --git a/Source/HBIOS/cfg_dyno.asm b/Source/HBIOS/cfg_dyno.asm index 6766dda5..7aa27a74 100644 --- a/Source/HBIOS/cfg_dyno.asm +++ b/Source/HBIOS/cfg_dyno.asm @@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT +AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT ; CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW @@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON] RAMBIAS .EQU ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY) @@ -69,9 +71,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] ; FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS +FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES +FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED ; DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING ; @@ -187,6 +191,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM) +EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDROM .EQU TRUE ; MD: ENABLE ROM DISK diff --git a/Source/HBIOS/cfg_epitx.asm b/Source/HBIOS/cfg_epitx.asm index 42dbf608..59a8be6a 100644 --- a/Source/HBIOS/cfg_epitx.asm +++ b/Source/HBIOS/cfg_epitx.asm @@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT +AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT ; CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW @@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.AS ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON] RAMBIAS .EQU ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE ; @@ -70,9 +72,11 @@ DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS ; FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS +FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED FPLED_DSKACT .EQU FALSE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES +FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED ; DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING ; @@ -189,6 +193,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM) +EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDROM .EQU TRUE ; MD: ENABLE ROM DISK diff --git a/Source/HBIOS/cfg_heath.asm b/Source/HBIOS/cfg_heath.asm index f544d7a7..7b8892d7 100644 --- a/Source/HBIOS/cfg_heath.asm +++ b/Source/HBIOS/cfg_heath.asm @@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT +AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT ; CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW @@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.AS ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON] MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY) MPGSEL_1 .EQU $79 ; Z2 MEM MGR BANK 1 PAGE SELECT REG (WRITE ONLY) @@ -69,9 +71,11 @@ WDOGIO .EQU $6E ; WATCHDOG REGISTER ADR ; FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS +FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES +FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED ; DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING ; @@ -192,6 +196,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM) +EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDROM .EQU TRUE ; MD: ENABLE ROM DISK diff --git a/Source/HBIOS/cfg_master.asm b/Source/HBIOS/cfg_master.asm index 239b43cb..ffa67e56 100644 --- a/Source/HBIOS/cfg_master.asm +++ b/Source/HBIOS/cfg_master.asm @@ -22,6 +22,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT +AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT ; CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW @@ -31,6 +32,7 @@ DEFSERCFG .EQU SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .EQU MM_NONE ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON] RAMBIAS .EQU ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE MPCL_RAM .EQU $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY) @@ -98,9 +100,11 @@ WDOGIO .EQU $6F ; WATCHDOG REGISTER ADR ; FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS +FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES +FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED ; DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING ; @@ -238,6 +242,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM) +EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDROM .EQU TRUE ; MD: ENABLE ROM DISK diff --git a/Source/HBIOS/cfg_mbc.asm b/Source/HBIOS/cfg_mbc.asm index 30b90ad5..42a0eaaa 100644 --- a/Source/HBIOS/cfg_mbc.asm +++ b/Source/HBIOS/cfg_mbc.asm @@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT +AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT ; CPUSPDCAP .EQU SPD_HILO ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO CPUSPDDEF .EQU SPD_LOW ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW @@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .EQU MM_MBC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON] MPCL_RAM .EQU $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY) MPCL_ROM .EQU $7C ; SBC MEM MGR ROM PAGE SELECT REG (WRITE ONLY) @@ -64,9 +66,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] ; FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS +FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES +FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED ; DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING ; @@ -167,6 +171,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM) +EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDROM .EQU TRUE ; MD: ENABLE ROM DISK diff --git a/Source/HBIOS/cfg_mk4.asm b/Source/HBIOS/cfg_mk4.asm index ffc69586..a5388211 100644 --- a/Source/HBIOS/cfg_mk4.asm +++ b/Source/HBIOS/cfg_mk4.asm @@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT +AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT ; CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW @@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON] RAMBIAS .EQU ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE ; @@ -69,9 +71,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] ; FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS +FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES -FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES +FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES +FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED ; DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING ; @@ -177,6 +181,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM) +EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDROM .EQU TRUE ; MD: ENABLE ROM DISK diff --git a/Source/HBIOS/cfg_mon.asm b/Source/HBIOS/cfg_mon.asm index 7a819650..46d2b23d 100644 --- a/Source/HBIOS/cfg_mon.asm +++ b/Source/HBIOS/cfg_mon.asm @@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT +AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT ; CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW @@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.AS ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .EQU MM_MON ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON] ; RTCIO .EQU $C0 ; RTC LATCH REGISTER ADR @@ -64,9 +66,11 @@ WDOGIO .EQU $6E ; WATCHDOG REGISTER ADR ; FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS +FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES +FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED ; DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING ; @@ -187,6 +191,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM) +EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDROM .EQU TRUE ; MD: ENABLE ROM DISK diff --git a/Source/HBIOS/cfg_n8.asm b/Source/HBIOS/cfg_n8.asm index 105b89fa..508fd8ff 100644 --- a/Source/HBIOS/cfg_n8.asm +++ b/Source/HBIOS/cfg_n8.asm @@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT +AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT ; CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW @@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .EQU MM_N8 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON] RAMBIAS .EQU 0 ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE ; @@ -71,9 +73,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] ; FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS +FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES +FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED ; DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING ; @@ -179,6 +183,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM) +EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDROM .EQU TRUE ; MD: ENABLE ROM DISK diff --git a/Source/HBIOS/cfg_rcz180.asm b/Source/HBIOS/cfg_rcz180.asm index 1df8818b..2c02052b 100644 --- a/Source/HBIOS/cfg_rcz180.asm +++ b/Source/HBIOS/cfg_rcz180.asm @@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT +AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT ; CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW @@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.AS ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON] RAMBIAS .EQU ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY) @@ -75,9 +77,11 @@ DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS ; FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS +FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS FPSW_ENABLE .EQU TRUE ; FP: ENABLES FRONT PANEL SWITCHES FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES +FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED ; DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING ; @@ -193,6 +197,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM) +EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDROM .EQU TRUE ; MD: ENABLE ROM DISK diff --git a/Source/HBIOS/cfg_rcz280.asm b/Source/HBIOS/cfg_rcz280.asm index 0707d4b6..2817b7fa 100644 --- a/Source/HBIOS/cfg_rcz280.asm +++ b/Source/HBIOS/cfg_rcz280.asm @@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT +AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT ; CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW @@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.AS ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON] RAMBIAS .EQU ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY) @@ -69,9 +71,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] ; FPLED_ENABLE .EQU TRUE ; FP: ENABLES FRONT PANEL LEDS FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS +FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES +FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED ; DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING ; @@ -197,6 +201,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM) +EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDROM .EQU TRUE ; MD: ENABLE ROM DISK diff --git a/Source/HBIOS/cfg_rcz80.asm b/Source/HBIOS/cfg_rcz80.asm index 1317d14b..b0ac1456 100644 --- a/Source/HBIOS/cfg_rcz80.asm +++ b/Source/HBIOS/cfg_rcz80.asm @@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT +AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT ; CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW @@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.AS ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON] MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY) MPGSEL_1 .EQU $79 ; Z2 MEM MGR BANK 1 PAGE SELECT REG (WRITE ONLY) @@ -69,9 +71,11 @@ WDOGIO .EQU $6E ; WATCHDOG REGISTER ADR ; FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS +FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES +FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED ; DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING ; @@ -192,6 +196,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM) +EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDROM .EQU TRUE ; MD: ENABLE ROM DISK diff --git a/Source/HBIOS/cfg_rph.asm b/Source/HBIOS/cfg_rph.asm index 980b42b0..5ed992b7 100644 --- a/Source/HBIOS/cfg_rph.asm +++ b/Source/HBIOS/cfg_rph.asm @@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT +AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT ; CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW @@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .EQU MM_RPH ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON] RAMBIAS .EQU 0 ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE ; @@ -69,9 +71,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] ; FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS +FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES +FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED ; DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING ; @@ -168,6 +172,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM) +EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDROM .EQU TRUE ; MD: ENABLE ROM DISK diff --git a/Source/HBIOS/cfg_s100.asm b/Source/HBIOS/cfg_s100.asm index f05ee9d5..cd424184 100644 --- a/Source/HBIOS/cfg_s100.asm +++ b/Source/HBIOS/cfg_s100.asm @@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT +AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT ; CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW @@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_57600_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON] RAMBIAS .EQU ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY) @@ -69,9 +71,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] ; FPLED_ENABLE .EQU TRUE ; FP: ENABLES FRONT PANEL LEDS FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS +FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES +FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED ; DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING ; @@ -187,6 +191,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM) +EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDROM .EQU TRUE ; MD: ENABLE ROM DISK diff --git a/Source/HBIOS/cfg_sbc.asm b/Source/HBIOS/cfg_sbc.asm index 51afb8d2..40fe08f0 100644 --- a/Source/HBIOS/cfg_sbc.asm +++ b/Source/HBIOS/cfg_sbc.asm @@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT +AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT ; CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW @@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .EQU MM_SBC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON] MPCL_RAM .EQU $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY) MPCL_ROM .EQU $7C ; SBC MEM MGR ROM PAGE SELECT REG (WRITE ONLY) @@ -64,9 +66,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] ; FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS +FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES +FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED ; DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING ; @@ -167,6 +171,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM) +EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDROM .EQU TRUE ; MD: ENABLE ROM DISK diff --git a/Source/HBIOS/cfg_scz180.asm b/Source/HBIOS/cfg_scz180.asm index 79324e5c..794354ca 100644 --- a/Source/HBIOS/cfg_scz180.asm +++ b/Source/HBIOS/cfg_scz180.asm @@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT +AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT ; CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW @@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.AS ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON] RAMBIAS .EQU ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY) @@ -69,9 +71,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] ; FPLED_ENABLE .EQU TRUE ; FP: ENABLES FRONT PANEL LEDS FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS +FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES +FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED ; DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING ; @@ -187,6 +191,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM) +EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDROM .EQU TRUE ; MD: ENABLE ROM DISK diff --git a/Source/HBIOS/cfg_una.asm b/Source/HBIOS/cfg_una.asm index 5ebfff81..ca57b1f3 100644 --- a/Source/HBIOS/cfg_una.asm +++ b/Source/HBIOS/cfg_una.asm @@ -32,6 +32,10 @@ INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +APP_BNKS .EQU 0 ; NOT SUPPORTED ON UNA +; +MDROM .EQU TRUE ; MD: ENABLE ROM DISK +MDRAM .EQU TRUE ; MD: ENABLE RAM DISK ; RTCIO .EQU $70 ; RTC LATCH REGISTER ADR ; diff --git a/Source/HBIOS/cfg_z80retro.asm b/Source/HBIOS/cfg_z80retro.asm index b98d5cd3..6dc541aa 100644 --- a/Source/HBIOS/cfg_z80retro.asm +++ b/Source/HBIOS/cfg_z80retro.asm @@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT +AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT ; CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW @@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON] MPGSEL_0 .EQU $60 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY) MPGSEL_1 .EQU $61 ; Z2 MEM MGR BANK 1 PAGE SELECT REG (WRITE ONLY) @@ -67,9 +69,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] ; FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS +FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES +FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED ; DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING ; @@ -169,6 +173,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM) +EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDROM .EQU TRUE ; MD: ENABLE ROM DISK diff --git a/Source/HBIOS/cfg_zeta.asm b/Source/HBIOS/cfg_zeta.asm index 19354f5a..9bda4cb0 100644 --- a/Source/HBIOS/cfg_zeta.asm +++ b/Source/HBIOS/cfg_zeta.asm @@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT +AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT ; CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW @@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .EQU MM_SBC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON] MPCL_RAM .EQU $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY) MPCL_ROM .EQU $7C ; SBC MEM MGR ROM PAGE SELECT REG (WRITE ONLY) @@ -56,9 +58,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] ; FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS +FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES +FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED ; DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING ; @@ -139,6 +143,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM) +EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDROM .EQU TRUE ; MD: ENABLE ROM DISK diff --git a/Source/HBIOS/cfg_zeta2.asm b/Source/HBIOS/cfg_zeta2.asm index f5185065..39c675e9 100644 --- a/Source/HBIOS/cfg_zeta2.asm +++ b/Source/HBIOS/cfg_zeta2.asm @@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT +AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT ; CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW @@ -34,6 +35,7 @@ DEFSERCFG .EQU SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON] MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY) MPGSEL_1 .EQU $79 ; Z2 MEM MGR BANK 1 PAGE SELECT REG (WRITE ONLY) @@ -67,9 +69,11 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] ; FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS +FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES +FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED ; DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING ; @@ -150,6 +154,7 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM) +EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) MDROM .EQU TRUE ; MD: ENABLE ROM DISK diff --git a/Source/HBIOS/cvdu.asm b/Source/HBIOS/cvdu.asm index 5cc6eb5a..8abe5eb6 100644 --- a/Source/HBIOS/cvdu.asm +++ b/Source/HBIOS/cvdu.asm @@ -59,6 +59,7 @@ CVDU_COLS .EQU 80 #ENDIF ; TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER +KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT ; ;====================================================================== ; CVDU DRIVER - INITIALIZATION diff --git a/Source/HBIOS/ef.asm b/Source/HBIOS/ef.asm new file mode 100644 index 00000000..8a7e6db3 --- /dev/null +++ b/Source/HBIOS/ef.asm @@ -0,0 +1,1083 @@ +;====================================================================== +; EF9345 DRIVER FOR ROMWBW +; +; PARTS WRITTEN BY: ALAN COX +; REVISED/ENHANCED BY LASZLO SZOLNOKI -- 01/2024 +;====================================================================== +; TODO: +; - 40X24 IMPLEMENTATION +;====================================================================== +; EF9345 DRIVER - CONSTANTS +;====================================================================== +; +TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER +; +EF_BASE .EQU $F0 +EF_SETREG .EQU EF_BASE + 4 +EF_DATAACC .EQU EF_BASE + 5 +EF_RESET .EQU EF_BASE + 6 +; +EF_SIZE .EQU V80X24 +; +EF_R0 .EQU $20 +EF_R1 .EQU EF_R0+1 +EF_R2 .EQU EF_R0+2 +EF_R3 .EQU EF_R0+3 +EF_R4 .EQU EF_R0+4 +EF_R5 .EQU EF_R0+5 +EF_R6 .EQU EF_R0+6 +EF_R7 .EQU EF_R0+7 +; +EF_XA .EQU EF_R5 +EF_YA .EQU EF_R4 +EF_XP .EQU EF_R7 +EF_YP .EQU EF_R6 +; +EF_EXEC .EQU 00001000b +; +EF_TGSREG .EQU 1 +EF_MATREG .EQU 2 +EF_PATREG .EQU 3 +EF_DORREG .EQU 4 +EF_RORREG .EQU 7 +;EF_WRTINDIR .EQU 10000000b +; +; CMD +; +EF_NOP .EQU $91 ; +EF_IND .EQU $80 ; +EF_CLF .EQU $05 ; +EF_OCT .EQU $30 ; +EF_OCTAUX .EQU $04 ; AUXILIARY POITER +EF_KRF .EQU $00 ; NO AUTOINCREMENT +EF_KRL .EQU $50 ; NO AUTOINCREMENT +EF_INY .EQU $B0 ; INC Y +; +;EF_IND_TGS .EQU $81 +;EF_IND_MAT .EQU $82 +;EF_IND_PAT .EQU $83 +;EF_IND_DOR .EQU $84 +;EF_IND_ROR .EQU $87 +EF_RREG .EQU 00001000b +;EF_WREG .EQU ~EF_RREG +; +; | 1 | 0 | 0| 0| R/!W | r | r | r | IND command +; 0 0 1 TGS +; 0 1 0 MAT +; 0 1 1 PAT +; 1 0 0 DOR +; 1 0 1 +; 1 1 0 +; 1 1 1 ROR +; MAT5 MAT4 +; fixed complemented 0 0 +; flash complemented 1 0 +; fixed underlined 0 1 +; flash underlined 1 1 +; +EF_NOCU .EQU 10111111B ; MAT6 = 0 : NO CURSOR +EF_BLK .EQU 00100000B ; MAT5 = 1 : BLINK CURSOR +EF_NOBL .EQU 11011111B ; MAT5 = 0 : NO BLINK +; +EF_BLOK .EQU 11101111b ; MAT4 = 0 : BLOCK CURSOR +EF_ULIN .EQU 00010000b ; MAT4 = 1 : UNDERLINE CURSOR +; +EF_CURENA .EQU TRUE ; ENABLE CURSOR +; +EF_MARCOL .EQU 00000000B ; MARGIN COLOR BLACK : MAT0 = R, MAT1 = G, MAT2 = B +EF_MARENA .EQU 00001000B ; MARGIN INSERT : MAT3 = 1 +; +EF_CUREN .EQU 01000000B ; MAT6 = 1 : CURSOR ENABLED +EF_DISCU .EQU 10111111B ; MAT6 = 0 : NO CURSOR +; +EF_BLINK .EQU 00100000B ; MAT5 = 1 : BLINK CURSOR +EF_NOBLINK .EQU 11011111B ; MAT5 = 0 : NO BLINK +; +EF_COMPL .EQU 11101111b ; MAT4 = 0 : BLOCK CURSOR +; +EF_FLASHCHAR .EQU 00001000B +EF_REVERSCHAR .EQU 10000000B +; +#IF EF_CURENA +EF_CSTY .EQU EF_CUREN | EF_BLINK | EF_ULIN | EF_MARENA | EF_MARCOL +#ELSE +EF_CSTY .EQU EF_MARENA | EF_MARCOL +#ENDIF +; +FIRSTLINE .EQU 8 +; +#IF (EF_SIZE=V80X24) ; V80X24 +EF_DLINES .EQU 24 +EF_DROWS .EQU 80 +EF_DSCANL .EQU 10 +; ATTRIBUTES +EF_FLASH .EQU 01000100B +EF_NEGATIVE .EQU 10001000B +EF_UNDERLINE .EQU 00100010B +EF_COLORSET .EQU 00010001B +#ENDIF +; +#IF (EF_SIZE=V40X24) +EF_DLINES .EQU 24 +EF_DROWS .EQU 40 +EF_DSCANL .EQU 10 +; ATTRIBUTES +EF_FLASH .EQU 01000100B +EF_NEGATIVE .EQU 10001000B +EF_UNDERLINE .EQU 00100010B +EF_COLORSET .EQU 00010001B +#ENDIF +; +; DISTRICTS +; +EF_DIST0 .EQU 0 +EF_DIST1 .EQU $20 +EF_DIST2 .EQU $80 +EF_DIST3 .EQU $A0 +; +EF_BG_BLACK .EQU $0 +EF_BG_RED .EQU $10 +EF_BG_GREEN .EQU $20 +EF_BG_BROWN .EQU $30 +EF_BG_BLUE .EQU $40 +EF_BG_MAGENTA .EQU $50 +EF_BG_CYAN .EQU $60 +EF_BG_WHITE .EQU $70 +EF_FG_BLACK .EQU 0 +EF_FG_RED .EQU 1 +EF_FG_GREEN .EQU 2 +EF_FG_BROWN .EQU 3 +EF_FG_BLUE .EQU 4 +EF_FG_MAGENTA .EQU 5 +EF_FG_CYAN .EQU 6 +EF_FG_WHITE .EQU 7 +; +EF_SCREENSIZE .EQU EF_DROWS * EF_DLINES +; +;====================================================================== +; VDU DRIVER - INITIALIZATION +;====================================================================== +; +EF_INIT: +; + LD IY,EF_IDAT ; POITER TO INSTANCE DATA +; + CALL NEWLINE ; FORMATTING + PRTS("EF : IO=0x$") + LD A,EF_BASE + CALL PRTHEXBYTE + + PRTS(" MODE=$") ; OUTPUT DISPLAY FORMAT + LD A,EF_DROWS + CALL PRTDECB + PRTS("X$") + LD A,EF_DLINES + CALL PRTDECB + + CALL EF_PROBE ; CHECK FOR HW EXISTENCE + JR Z,EF_INIT1 ; CONTINUE IF HW PRESENT +; + PRTS(" NOT PRESENT$") + XOR A + OR -8 ; HARDWARE NOT PRESENT + RET +; +EF_INIT1: + OUT (EF_RESET),A ; HARDWARE RESET +; + LD A,EF_DIST0 + LD (EF_CON_BANKY),A ; +; + CALL EF_CRTINIT ; INIT EF9345 CHIP +; +; ADD OURSELVES TO VDA DISPATCH TABLE + LD BC,EF_FNTBL ; BC := FUNCTION TABLE ADDRESS + LD DE,EF_IDAT ; DE := VDU INSTANCE DATA PTR + CALL VDA_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED +; +#IF TERMENABLE + ; INITIALIZE EMULATION + LD C,A ; ASSIGNED VIDEO UNIT IN C + LD DE,EF_FNTBL ; DE := FUNCTION TABLE ADDRESS + LD HL,EF_IDAT ; HL := VDU INSTANCE DATA PTR + CALL TERM_ATTACH ; DO IT +#ENDIF +; + XOR A ; SIGNAL SUCCESS + RET +; +EF_CRTINIT: + LD DE,(EF_R0+EF_EXEC)*256 + EF_NOP ; FORCE NOP + CALL EF_WWRREG +; + LD HL,EF_INIT9345 ; INITIAL SETUP PARAMETERS + CALL EF_LOAD_MODE +; + LD DE,0 + LD (EF_VDA_OFFSET),DE +; +#IF (EF_SIZE = V40X24) + XOR A + LD (EF_VDATYPESET),A +#ENDIF +; +; E = CHARACTER ATTRIBUTES : E0 = BLINK, E1 = UNDELINE, E2 = REVERSE, E3 = COLOR SET +; VIDEO SET CHARACTER ATTRIBUTE FOR SCROLL, KRL, ETC. + LD E,00000000B + CALL EF_VDASAT +; + LD E,EF_BG_BLACK + EF_FG_WHITE ; SET CHARACTER COLOR + CALL EF_VDASCO +; +; VIDEO SET CURSOR STYLE +; ENTRY: C = VIDEO UNIT, D = START/END, E = STYLE : E0 = BLINK/FLASH, E1 = UNDELINE, E2 = REVERSE/COMPLEMENT +; MAT5 = 1 : FLASH, MAT4 = 0 : COMPLEMENT +; RETURN A = STATUS + LD E,3 ; UNDERLINED BLINKING + CALL EF_VDASCS +; + CALL EF_CLEARALL +; + LD DE,0 ; SET CURSOR TO 0,0 + CALL EF_VDASCP + RET +; +EF_CLEARALL: + LD DE,0 ; SET CURSOR 0,0 + CALL EF_VDASCP ; D = ROW, E = COLUMNS + LD HL,EF_DROWS * EF_DLINES +; + LD E,' ' + CALL EF_VDAFIL + XOR A + RET +; +; R1 := C BYTE IS THE CHARACTER CODE +; R2 := B BYTE TYPE AND SET, OTHER PARAMETERS +; R3 := A BYTE ATTRIBUTES, NEGATIVE, FG COLOR, FLASH, BG COLOR +; +#IF (EF_SIZE=V80X24) +EF_KRL80: + PUSH DE + LD DE,EF_R0*256 + EF_KRL ; R0 KRL COMMAND + CALL EF_WWRREG + LD D,EF_R3 + LD A,(EF_VDAATTR) ; DOUBLE ATTRIBUTES FOR LOWER NIBBLE + LD E,A + CALL EF_WWRREG + POP DE + RET +#ENDIF +; +#IF (EF_SIZE = V40X24) +EF_KRF40: + PUSH DE + LD DE,EF_R0*256 + KRF + CALL EF_WWRREG + LD D,R3 + LD A,(EF_VDACOLOR) + LD B,A + LD A,(EF_VDAATTR) + OR B + LD E,A ; COLOR + CALL EF_WRREG + LD D,EF_R2 + LD A,(EF_VDATYPESET) + LD E,A + CALL EF_WRREG + POP DE + XOR A + RET +#ENDIF +; +;---------------------------------------------------------------------- +; PROBE FOR EF9345 HARDWARE +;---------------------------------------------------------------------- +; +; ON RETURN, ZF SET INDICATES HARDWARE FOUND +; +EF_PROBE: + LD DE,EF_R1*256+'a' + LD H,E + CALL EF_WRREG + CALL EF_RDREG + CP H + RET +; +;---------------------------------------------------------------------- +; WAIT FOR VDU TO BE READY FOR A DATA READ/WRITE +;---------------------------------------------------------------------- +; +EF_WAITRDY: + LD A,EF_R0 + OUT (EF_SETREG),A + IN A,(EF_DATAACC) + RLA + JR C,EF_WAITRDY + RET +; +;---------------------------------------------------------------------- +; UPDATE EF9345 REGISTERS +; EF_WRREG WRITES VALUE IN E TO EF9345 REGISTER SPECIFIED IN D +; EF_WWRREG AFTER WAITING FOR READY WRITES VALUE IN E TO EF9345 REGISTER SPECIFIED IN D +;------------------------------------------------------------------- -- +; +EF_WWRREG: + CALL EF_WAITRDY +EF_WRREG: + LD A,D + OUT (EF_SETREG),A + LD A,E + OUT (EF_DATAACC),A + RET +; +;---------------------------------------------------------------------- +; READ EF9345 REGISTERS +; EF_RDREG READS EF9345 REGISTER SPECIFIED IN D AND RETURNS VALUE IN A AND E +;---------------------------------------------------------------------- +EF_RDREG: + CALL EF_WAITRDY + LD A,D + OUT (EF_SETREG),A + IN A,(EF_DATAACC) + LD E,A + RET +; +;---------------------------------------------------------------------- +; READ INDIRECT EF9345 REGISTERS +; EF_READ_INDIR READS EF9345 REGISTER SPECIFIED IN D AND RETURNS VALUE IN A AND E +;---------------------------------------------------------------------- +; +EF_READ_INDIR: + LD A,EF_IND + OR D + OR EF_RREG + LD E,A + LD D,EF_R0 + EF_EXEC + CALL EF_WWRREG + LD D,EF_R1 + CALL EF_RDREG + RET +; +;---------------------------------------------------------------------- +; WRITES INDIRECT EF9345 REGISTERS +; EF_LOAD_INDIR WRITES VALUE IN E TO INDIRECT EF9345 REGISTER SPECIFIED IN D +;---------------------------------------------------------------------- +; +EF_LOAD_INDIR: ; D = TARGET REGISTER, E = VALUE TO WRITE + PUSH DE + LD D,EF_R1 + CALL EF_WWRREG + POP DE + PUSH DE + LD A,EF_IND + OR D + LD E,A + LD D,EF_R0 + EF_EXEC + CALL EF_WWRREG + POP DE + RET +; +EF_LOAD_MODE: ; LOAD MODE + LD D,EF_TGSREG ; START INDIRECT REGISTER 1 : TGS + LD B,EF_INIT_CNT ; LOAD 5 INDIRECT REGISTERS +EF_MODEREG: + LD E,(HL) + CALL EF_LOAD_INDIR + INC HL + INC D + LD A,EF_INIT_CNT + CP D + JR NZ,EF_NOSKIP + INC D + INC D + LD E,(HL) + LD A,(EF_CON_BANKY) + ADD A,E + LD E,A + CALL EF_LOAD_INDIR + RET +EF_NOSKIP: + DJNZ EF_MODEREG + RET +; +EF_GETXY: ; D = ROW, E = COLUMNS + CALL EF_GETX + CALL EF_GETY + RET +; +EF_GETX: ; E = COLUMNS + CALL EF_WAITRDY + LD D,EF_XP + CALL EF_RDREG +#IF (EF_SIZE=V80X24) + RLCA ; CORRECTION 80 ROWS MODE +#ENDIF + LD E,A + RET +; +EF_GETY: ; D = ROW + CALL EF_WAITRDY + PUSH DE + LD D,EF_YP + CALL EF_RDREG + AND 00011111B + PUSH HL + LD HL,(EF_VDA_OFFSET) + SUB H + POP HL + SUB FIRSTLINE + POP DE + LD D,A + RET +; +EF_LOADFONTS: + PRTS("Not implemented$") + CALL NEWLINE + SYSCHKERR(ERR_NOTIMPL) ; NOT IMPLEMENTED (YET) + LD A,-2 + OR A + RET +; +EF_NOTIMP: + PRTS("Not implemented$") + CALL NEWLINE + SYSCHKERR(ERR_NOTIMPL) ; NOT IMPLEMENTED (YET) + XOR A + OR -2 ; FUNCTION NOT IMPLEMENTED + RET +; +EF_CURSORON: ; CURSOR DISPLAY ENABLE + PUSH DE + PUSH AF + LD D,EF_MATREG ; LOAD CURSOR ENABLE + CALL EF_READ_INDIR + OR 01000000B + LD D,EF_MATREG ; SET CURPOS ENABLE + LD E,A + CALL EF_LOAD_INDIR + POP AF + POP DE + RET +; +EF_CURSOROFF: + PUSH DE + PUSH AF + LD D,EF_MATREG ; LOAD CURSOR ENABLE + CALL EF_READ_INDIR + AND 10111111B + LD D,EF_MATREG ; SET CURSOR ENABLE + LD E,A + CALL EF_LOAD_INDIR + POP AF + POP DE + RET +; +EF_INCCURSOR: ; CURSOR POSITION, D = ROW, E = COLUMN +; Y , X WITH MODULO DROWS + PUSH DE + PUSH HL + LD HL,(EF_VDA_OFFSET) + LD DE,(EF_VDA_POS) + ADD HL,DE + INC DE + LD A,EF_DROWS + CP E + JR NZ,EF_CURS0 + LD E,0 + INC D + LD A,EF_DLINES + CP D + JR NZ,EF_CURS0 +; LD D,0 + DEC D ; Y REMAINS INSIDE THE BOUNDARY + LD (EF_VDA_POS),DE + CALL EF_VDASCP + POP HL + POP DE + OR -6 ; PARAMETER OUT OF RANGE + RET +EF_CURS0: + LD (EF_VDA_POS),DE + CALL EF_VDASCP + POP HL + POP DE + RET +; +;---------------------------------------------------------------------- +; DISPLAY CONTROLLER CHIP INITIALIZATION +;---------------------------------------------------------------------- +; +EF_INIT9345: +#IF (EF_SIZE=V80X24) ; E) +EF_TGS: .DB 11000010b ; 80 char/row, long char code (12 bits) : TGS Register interlaced +EF_MAT: .DB EF_CSTY ; 01001000b ; cursor enabled, fixed complent cursor, margin color = black : MAT Register +EF_PAT: .DB 01111110b ; 80 char/row, long code, upper/lower bulk on, conceal on, + ; I high during active disp. area, status row disebled : PAT Register +EF_DOR: .DB 10001111b ; DOR(3:0) = 1111 : color c0 = white, DOR(7:4) = 1000 : color c1 = black +EF_ROR: .DB 00001000b ; ROR(7:5) = 000 : displayed page memory starts from block 0 + ; ROR(4:0) = 01000 : origin row = 8 +#ENDIF +; +#IF (EF_SIZE=V40X24) +EF_TGS: .DB 00000000B ; 40 char/row, long char code (24 bits) : TGS Register interlaced +EF_MAT: .DB EF_CSTY ; 01001100B cursor enabled, fixed complent cursor, margin color = black : MAT Register +EF_PAT: .DB 01111110B ; 40 char/row, long code, upper/lower bulk on, conceal on, + ; I high during active disp. area, status row disebled : PAT Register +; DOR register initialization +; +; DOR(3:0) = 0011 : alpha UDS slices in block 3 +; DOR(6:4) = 001 : semigraphic uds slices in block 2 and 3 +; DOR 7 = 0 : Quadrichrome slices from block 0 +EF_DOR: .DB 0 ; +EF_ROR: .DB 00001000B ; ROR(7:5) = 000 : displayed page memory starts from block 0 + ; ROR(4:0) = 01000 : origin row = 8 +#ENDIF + +EF_INIT_CNT: .EQU $ - EF_INIT9345 +; +;====================================================================== +; EF9345 DRIVER - VIDEO DISPLAY ADAPTER FUNCTIONS +;====================================================================== +; +EF_FNTBL: + .DW EF_VDAINI + .DW EF_VDAQRY + .DW EF_VDARES + .DW EF_VDADEV + .DW EF_VDASCS + .DW EF_VDASCP + .DW EF_VDASAT + .DW EF_VDASCO + .DW EF_VDAWRC + .DW EF_VDAFIL + .DW EF_VDACPY + .DW EF_VDASCR + .DW EF_NOTIMP ; PPK_STAT + .DW EF_NOTIMP ; PPK_FLUSH + .DW EF_NOTIMP ; PPK_READ + .DW EF_VDARDC +#IF (($ - EF_FNTBL) != (VDA_FNCNT * 2)) + .ECHO "*** INVALID VDU FUNCTION TABLE ***\n" +#ENDIF +; +EF_VDAINI: +; VIDEO INITIALIZE +; FULL REINITIALIZATION, CLEAR SCREEN, CURRENTLY IGNORES VIDEO MODE AND BITMAP DATA + PUSH HL + CALL EF_INIT1 + POP HL + LD A,L + OR H + CALL NZ,EF_LOADFONTS + XOR A + RET +; +EF_VDAQRY: +; VIDEO QUERY +; ENTRY: C = VIDEO UNIT, HL = FONT BITMAT +; RETURN: C = VIDEO MODE, D = ROWS, E = COLUMNS, HL = FONT BITMAT + LD C,$00 ; MODE ZERO IS ALL WE KNOW + LD D,EF_DLINES + LD E,EF_DROWS + LD HL,0 ; EXTRACTION OF CURRENT BITMAP DATA NOT SUPPORTED + XOR A ; SIGNAL SUCCESS + RET +; +EF_VDARES: +; VIDEO RESET +; SOFT RESET, CLEAR SCREEN, HOME CURSOR, RESTORE ATTRIBUTE/COLOR DEFAULTS +; + CALL EF_CLEARALL + CALL EF_LOADCSTYLE + LD DE,0 + LD (EF_VDA_OFFSET),DE + CALL EF_VDASCP + XOR A + RET +; +EF_VDADEV: +; VIDEO DEVICE +; ENTRY: C = VIDEO UNIT +; RETURN: D := DEVICE TYPE, E := DEVICE NUMBER, H := DEVICE UNIT MODE, L := DEVICE I/O BASE ADDRESS + LD DE,(VDADEV_EF * 256) + 0 ; D := DEVICE TYPE + ; E := PHYSICAL UNIT IS ALWAYS ZERO + LD HL,EF_BASE ; H INDICATES THE VARIANT OF THE CHIP OR CIRCUIT, H = 0 : NO VARIANTS + ; L := BASE I/O ADDRESS + XOR A ; SIGNAL SUCCESS + RET +; +EF_VDASCS: +; VIDEO SET CURSOR STYLE +; ENTRY: C = VIDEO UNIT, D = START/END, E = STYLE : E0 = BLINK/FLASH, E1 = UNDELINE, E2 = REVERSE/COMPLEMENT +; MAT5 = 1 : FLASH, MAT4 = 0 : COMPLEMENT +; RETURN A = STATUS + XOR A + SRA E + JR NC,EF_VDASCS0 + OR EF_BLINK ; CURSOR IS BLINKING +EF_VDASCS0: + SRA E + JR NC,EF_VDASCS1 + OR EF_ULIN ; UNDERLINED CURSOR + JR EF_VDASCS2 +EF_VDASCS1: + SRA E + JR NC,EF_VDASCS2 + AND EF_COMPL +EF_VDASCS2: + LD (EF_VDACATTR),A + CALL EF_LOADCSTYLE + XOR A + RET +; +EF_VDASCP: +; SET VIDEO CURSOR POSITION +; ENTRY: C = VIDEO UNIT, D = ROW, E = COLUMN +; RETURN A = STATUS +; CHECKING THE FEASIBILITY OF THE INPUT VALUES + LD A,EF_DLINES-1 + CP D + JR C,EF_VDASCP0 + LD A,EF_DROWS-1 + CP E + JR C,EF_VDASCP0 + LD (EF_VDA_POS),DE ; D = ROW, E = COLUMNS +; + PUSH DE +#IF (EF_SIZE=V80X24) + RRC E ; ADJUST TO 80 COLUMN LAYOUT +#ENDIF + LD D,EF_XP ; X POSITION + CALL EF_WWRREG + POP DE +; + PUSH HL + LD HL,(EF_VDA_OFFSET) + LD A,H + POP HL +; + ADD A,FIRSTLINE + ADD A,D + CP FIRSTLINE+EF_DLINES + JR C,EF_SETYP0 + SUB EF_DLINES +EF_SETYP0: + LD E,A + LD A,(EF_CON_BANKY) ; STAY IN DISTRICT + OR E + LD E,A + LD D,EF_YP + CALL EF_WWRREG + XOR A + RET +EF_VDASCP0: + XOR A + OR -6 ; PARAMETERS OUT OF RANGE $FF + RET +; +EF_VDASAT: +; VIDEO SET CHARACTER ATTRIBUTE FOR SCROLL, KRL, ETC. +; ENTRY: C = VIDEO UNIT, E = ATTRIBUTE +; 80 CHARACTER/ROW STYLE := E0 = BLINK, E1 = UNDELINE, E2 = REVERSE, E3 = COLOR SELECT +; 40 CHARACTER/ROW STYLE := E0 = BLINK, E1 = UNDELINE, E2 = REVERSE, E3 = COLOR SELECT, E4..E7 = TYPE AND SET +; B(0) := INSERT +; B(1) := DOUBLE HIGHT +; B(2) := concealed character appears as a space on the screen +; B(3) := DOUBLE WIDTH +; B(4..7) := TYPE AND SET +; RETURN A = STATUS +#IF (EF_SIZE=V80X24) + XOR A + SRA E ; IS BLINKING + JR NC,EF_VDASAT0 + OR EF_FLASH +EF_VDASAT0: + SRA E + JR NC,EF_VDASAT1 + OR EF_UNDERLINE ; UNDERLINED CURSOR +EF_VDASAT1: + SRA E + JR NC,EF_VDASAT + OR EF_NEGATIVE ; NEGATIVE CURSOR +EF_VDASAT2: + SRA E + JR NC,EF_VDASAT3 + OR EF_COLORSET +EF_VDASAT3: +#ENDIF +#IF (EF_SIZE=V40X24) +; set VDATYPESET + LD A,E + AND $F0 + LD (EF_VDATYPESET),A + XOR A + SRA E ; IS BLINKING + JR NC,EF_VDASAT0 + OR EF_FLASHCHAR +EF_VDASAT0: + SRA E + SRA E + JR NC,EF_VDASAT1 + OR EF_REVERSCHAR +EF_VDASAT1: +#ENDIF + LD (EF_VDAATTR),A + XOR A + RET +; +EF_LOADCSTYLE: + LD A,(EF_VDACATTR) + LD B,A + LD D,EF_MATREG + CALL EF_READ_INDIR + AND 11001111B + OR B + LD E,A + LD D,EF_MATREG + CALL EF_LOAD_INDIR + RET +; +EF_VDASCO: +; VIDEO SET CHARACTER COLOR +; ENTRY C = VIDEO UNIT, E = COLOR +; RETURN A = STATUS + CALL EF_WAITRDY +#IF (EF_SIZE=V80X24) ; COLOR SETUP USE MARGIN COLOR IN MAT AND + LD A,E + LD B,A ; B = BG + SRL B + SRL B + SRL B + SRL B + AND $F8 ; MASK BG COLOR + LD A,E + AND $07 ; MASK FG COLOR + LD C,A ; C = FG + LD D,EF_DORREG ; LOAD FG COLOR FROM DOR(3..0) + CALL EF_READ_INDIR + AND $F8 + OR C ; SET NEW FG COLOR + LD E,A + LD D,EF_DORREG ; LOAD NEW FG COLOR + CALL EF_LOAD_INDIR +; + LD D,EF_MATREG ; LOAD BG COLOR + CALL EF_READ_INDIR + AND $F8 ; MASK BG COLOR + OR B ; SET NEW BG COLOR + LD E,A + LD D,EF_MATREG ; LOAD NEW BG COLOR + CALL EF_LOAD_INDIR +#ENDIF +#IF (EF_SIZE=V40X24) + LD HL,EF_VDACOLOR + LD A,E + AND $7 ; MASK FG COLOR + RLD + LD A,E + SRL A ; BG COLOR TO LOW ORDER FOUR BITS + SRL A + SRL A + SRL A + RLD +#ENDIF + XOR A + RET +; +EF_VDAWRC: +; VIDEO WRITE CHARACTER, +; ENTRY C = VIDEO UNIT, E = CHARACTER +; RETURN A = STATUS +#IF (EF_SIZE=V80X24) + CALL EF_KRL80 + LD D,EF_R1+EF_EXEC + CALL EF_WWRREG +#ENDIF +#IF (EF_SIZE=V40X24) + CALL EF_KRF40 + LD D,EF_R1+EF_EXEC + CALL EF_WWRREG +#ENDIF + CALL EF_INCCURSOR + XOR A + RET +; +EF_VDAFIL: +; VIDEO FILL +; ENTRY: C = VIDEO UNIT, E = CHARACTER, HL = COUNT OF CHARACTERS +; RETURN A = STATUS + CALL EF_CURSOROFF +EF_VDAFIL0: + CALL EF_VDAWRC + DEC HL + LD A,H + OR L + JR NZ,EF_VDAFIL0 + CALL EF_CURSORON + XOR A + RET +; +EF_VDACPY: +; VIDEO COPY +; ENTRY C = VIDEO UNIT, D = SOURCE ROW, E = SOURCE COLUMN, L = COUNT +; RETURN A = STATUS + PUSH DE ; SAVE SOURCE + LD A,L + LD (EF_CPYCNT),A + CALL EF_CURSOROFF + CALL EF_GETXY ; GET AND SAVE CURRENT CURSOR POSITION + LD (EF_CURPOS),DE +; CHECK END OF SCREEN + LD H,D ; D = CURRENT LINE + LD E,EF_DROWS ; CHARACTERS IN ROW + CALL MULT8 ; LINES * DROWS + POP DE + PUSH DE + LD D,0 + ADD HL,DE ; ADD CHARACTERS IN CURRENT LINE := USED CHARACTERS + EX DE,HL + LD HL,EF_DLINES*EF_DROWS ; AVAILABLE CHARACTER COUNT + XOR A + SBC HL,DE ; REMAINING CHARACTERS = AVAILABLE - USED + LD C,L ; SAVE REMAINING CHARACTER COUNT + LD A,(EF_CPYCNT) + LD B,A + LD E,A + LD D,0 + SBC HL,DE ; COMPARE COPY COUNT WITH AVAILABLE + JR NC,EF_CPY0 + LD B,C ; ADJUST COPY COUNT +EF_CPY0: + POP DE + CALL EF_VDASCP ; SET SOURCE AS CURSOR + LD HL,EF_BUF + PUSH BC +EF_CPYRD: +#IF (EF_SIZE=V80X24) + PUSH BC + CALL EF_VDARDC + POP BC + LD (HL),E + INC HL +#ENDIF +#IF (EF_SIZE=V40X24) + PUSH HL + PUSH BC + CALL EF_VDARDC + LD A,L + POP BC + POP HL + LD (HL),E + INC HL + LD (HL),A + INC HL +#ENDIF + CALL EF_INCCURSOR + DJNZ EF_CPYRD + LD DE,(EF_CURPOS) ; RECOVER AND SET CURSOR POSITION + CALL EF_VDASCP + POP BC + LD HL,EF_BUF +EF_CPYWR: +#IF (EF_SIZE=V80X24) + PUSH BC + LD E,(HL) + CALL EF_VDAWRC + INC HL + POP BC + DJNZ EF_CPYWR +#ENDIF +#IF (EF_SIZE=V40X24) + PUSH BC + LD E,(HL) + INC HL + PUSH HL + LD L,(HL) + CALL EF_VDAWRC + POP HL + INC HL + POP BC + DJNZ EF_CPYWR +#ENDIF + ; RESTORE CURSOR + LD DE,(EF_CURPOS) + CALL EF_VDASCP + CALL EF_CURSORON + XOR A + RET +; +EF_VDASCR: +; VIDEO SCROLL +; ENTRY: C = VIDEO UNIT, E = LINES +; RETURN A = STATUS + CALL EF_CURSOROFF +EF_VDASCR0: + LD A,E + OR A + JR Z,EF_VDASCR2 ; SCROLL 0, NOTHING TO DO + PUSH DE + RLCA + JR C,EF_VDASCR1 + CALL EF_SCRUP + POP DE + DEC E + JR EF_VDASCR0 +EF_VDASCR1: + CALL EF_SCRDOWN + POP DE + INC E + JP EF_VDASCR0 +EF_VDASCR2: + CALL EF_CURSORON + RET +; +EF_SCRUP: + LD HL,(EF_VDA_OFFSET) + LD DE,$0100 ; inc y + ADD HL,DE + LD A,H + CP EF_DLINES + JR NZ,EF_SCRUP0 + LD HL,0 +EF_SCRUP0: + LD (EF_VDA_OFFSET),HL + LD A,(EF_CON_BANKY) + ADD A,H + ADD A,FIRSTLINE + LD E,A + LD D,EF_RORREG + CALL EF_LOAD_INDIR +; fill exposed line + LD HL,(EF_VDA_POS) + PUSH HL + LD HL,(EF_DLINES-1)*256 + EX DE,HL +EF_SCRCLEAR: + CALL EF_VDASCP + LD E,' ' + LD HL,EF_DROWS + CALL EF_VDAFIL +; + POP HL + EX DE,HL + CALL EF_VDASCP + RET +; +EF_SCRDOWN: + XOR A + LD HL,(EF_VDA_OFFSET) + LD DE,$FF00 + ADD HL,DE + LD A,$FF + CP H + JR NZ,EF_SCRDOWN0 + LD H,EF_DLINES-1 +EF_SCRDOWN0: + LD (EF_VDA_OFFSET),HL + LD A,(EF_CON_BANKY) + ADD A,FIRSTLINE + ADD A,H + LD E,A + LD D,EF_RORREG + CALL EF_LOAD_INDIR +; fill exposed line + LD HL,(EF_VDA_POS) + PUSH HL + LD DE,0 +; JR EF_SCRCLEAR + CALL EF_VDASCP + LD E,' ' + LD HL,EF_DROWS + CALL EF_VDAFIL +; + POP HL + EX DE,HL + CALL EF_VDASCP + RET +; +EF_VDARDC: +; READ CHARACTER AT CURRENT VIDEO POSITION +; ENTRY: C = VIDEO UNIT +; RETURN: A = STATUS, E = CHARACTER, B = CHARACTER COLOR, C = CHARACTER ATTRIBUTES, L = CHARACTER TYPESET, 40X24 ONLY +#IF (EF_SIZE = V80X24) + LD D,EF_R0 + LD A,EF_KRL ; R0 KRL COMMAND NO AUTOINC + OR EF_RREG + LD E,A + CALL EF_WWRREG + LD D,EF_R3 + EF_EXEC ; READ ATTRIBUTES + CALL EF_RDREG + LD C,A + CALL EF_WAITRDY + LD D,EF_R1+EF_EXEC + CALL EF_RDREG + PUSH DE +; READ COLOR + LD D,EF_DORREG ; LOAD FG COLOR + CALL EF_READ_INDIR + AND $07 + LD B,A + LD D,EF_MATREG ; LOAD BG COLOR + CALL EF_READ_INDIR + RLCA + RLCA + RLCA + RLCA + AND $70 + OR B + LD B,A + POP DE + XOR A +; LD L,A + RET +#ENDIF +#IF (EF_SIZE = V40X24) + LD D,R0 + LD A,KRF ; R0 KRL COMMAND NO AUTOINC + OR EF_RREG + LD E,A + CALL EF_WWRREG + LD D,EF_R3 + EF_EXEC ; READ CHARACTER ATTRIBUTES + CALL EF_RDREG + AND $77 + LD B,A + RLC B + RLC B + RLC B + RLC B + LD A,E + AND $88 + LD C,A + LD D,EF_R2 + EF_EXEC ; READ CHARACTER TYPESET + CALL EF_RDREG + LD L,A + LD D,EF_R1+EF_EXEC ; READ CHARACTER + CALL EF_RDREG + XOR A + RET +#ENDIF +; +EF_IDAT: + .DB KBDMODE_NONE ; PS/2 8242 KEYBOARD CONTROLLER + .DB 0 + .DB 0 +; +EF_VDA_POS .DW 0 +EF_CURPOS .DW 0 +EF_CPYCNT .DB 0 +EF_VDA_OFFSET .DW 0 +EF_CON_BANKY .DB 0 +EF_VDAATTR .DB 0 ; CHARACTER ATTRIBUTES +EF_VDACATTR .DB 0 ; CURSOR ATTRIBUTES +EF_VDACOLOR .DB 0 ; CHARACTER COLOR +#IF (EF_SIZE = V40X24) +EF_VDATYPESET .DB 0 ; 40 CHAR/ROW PARAMETER +#ENDIF +EF_BUF: +#IF (EF_SIZE = V80X24) + .FILL EF_DLINES*EF_DROWS ;256,0 ; COPY BUFFER +#ENDIF +#IF (EF_SIZE = V40X24) + .FILL 2*EF_DLINES*EF_DROWS ;512,0 +#ENDIF diff --git a/Source/HBIOS/gdc.asm b/Source/HBIOS/gdc.asm index 79b72c10..8d5d936e 100644 --- a/Source/HBIOS/gdc.asm +++ b/Source/HBIOS/gdc.asm @@ -65,6 +65,7 @@ GDC_COLS .EQU 80 .ECHO "\n" ; TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER +KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT ; ;====================================================================== ; GDC DRIVER - INITIALIZATION diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 35d235dd..23326cf2 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -95,11 +95,10 @@ MODCNT .SET MODCNT + 1 #DEFINE ALIGN(N) .FILL ((($+(N-1)) & ~(N-1)) - $) ; #IF (FPLED_ENABLE) - #DEFINE DIAG(N) PUSH AF - #DEFCONT \ LD A,N -; #DEFCONT \ OUT (DIAGPORT),A + #DEFINE DIAG(N) PUSH AF + #DEFCONT \ LD A,N #DEFCONT \ CALL FP_SETLEDS - #DEFCONT \ POP AF + #DEFCONT \ POP AF #ELSE #DEFINE DIAG(N) \; #ENDIF @@ -132,30 +131,30 @@ MODCNT .SET MODCNT + 1 #ENDIF ; #DEFINE SYSCHKERR(HB_ERR) \ -#DEFCONT \ CALL SYSCHKA -#DEFCONT \ LD A,HB_ERR -#DEFCONT \ OR A + #DEFCONT \ CALL SYSCHKA + #DEFCONT \ LD A,HB_ERR + #DEFCONT \ OR A ; ; ; #IF (INTMODE == 0) -; NO INTERRUPT HANDLING -#DEFINE HB_DI ; -#DEFINE HB_EI ; + ; NO INTERRUPT HANDLING + #DEFINE HB_DI ; + #DEFINE HB_EI ; #ELSE #IF (CPUFAM == CPU_Z280) #IF (INTMODE == 3) -; Z280 MODE 3 INTERRUPT HANDLING (INTA, C/T 0, & UART RCVR ENABLED) -#DEFINE HB_DI DI -#DEFINE HB_EI EI $0B + ; Z280 MODE 3 INTERRUPT HANDLING (INTA, C/T 0, & UART RCVR ENABLED) + #DEFINE HB_DI DI + #DEFINE HB_EI EI $0B #ELSE -; Z280 MODE 1/2 INTERRUPT HANDLING -#DEFINE HB_DI DI -#DEFINE HB_EI EI + ; Z280 MODE 1/2 INTERRUPT HANDLING + #DEFINE HB_DI DI + #DEFINE HB_EI EI #ENDIF #ELSE -#DEFINE HB_DI DI -#DEFINE HB_EI EI + #DEFINE HB_DI DI + #DEFINE HB_EI EI #ENDIF #ENDIF ; @@ -335,6 +334,8 @@ CB_BIDRAMD0 .DB BID_RAMD0 CB_RAMD_BNKS .DB RAMD_BNKS CB_BIDROMD0 .DB BID_ROMD0 CB_ROMD_BNKS .DB ROMD_BNKS +CB_BIDAPP0 .DB BID_APP0 +CB_APP_BNKS .DB APP_BNKS ; .FILL (HCB + HCB_SIZ - $),0 ; PAD REMAINDER OF HCB ; @@ -439,7 +440,7 @@ HBX_INVSP .EQU $ - 2 ; ;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;; BNKSEL - Switch Memory Bank to Bank in A. -;; Preserve all Registers including Flags. +;; AF is destroyed, all other registers are preserved. ;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ; HBX_BNKSEL: @@ -1181,6 +1182,9 @@ BOOTWAIT: #IF (FPLED_ENABLE) ; NO STACK YET, SO CAN'T USE DIAG() MACRO LD A,DIAG_01 + #IF (FPLED_INV) + XOR $FF ; INVERT BITS IF NEEDED + #ENDIF OUT (FPLED_IO),A #ENDIF #IF (LEDENABLE) @@ -1391,6 +1395,9 @@ Z280_INITZ: #IF (FPLED_ENABLE) ; NO STACK YET, SO CAN'T USE DIAG() MACRO LD A,DIAG_02 + #IF (FPLED_INV) + XOR $FF ; INVERT BITS IF NEEDED + #ENDIF OUT (FPLED_IO),A #ENDIF @@ -3250,9 +3257,8 @@ HB_PCINITTBL: #IF (TMSENABLE) .DW TMS_PREINIT #ENDIF -#IF (SCONENABLE) - .DW SCON_PREINIT -#ENDIF + .DW TERM_PREINIT ; ALWAYS DO THIS ONE +; HB_PCINITTBLLEN .EQU (($ - HB_PCINITTBL) / 2) ;================================================================================================== @@ -3358,8 +3364,8 @@ HB_INITTBL: #IF (TMSENABLE) .DW TMS_INIT #ENDIF -#IF (SCONENABLE) - .DW SCON_INIT +#IF (EFENABLE) + .DW EF_INIT #ENDIF #IF (VRCENABLE) .DW VRC_INIT @@ -3403,6 +3409,9 @@ HB_INITTBL: #IF (PPPENABLE) .DW PPP_INIT #ENDIF +#IF (SCONENABLE) + .DW SCON_INIT +#ENDIF #IF (CHENABLE) .DW CH_INIT #ENDIF @@ -4417,6 +4426,8 @@ SYS_GET: JP Z,SYS_GETCPUSPD CP BF_SYSGET_PANEL JP Z,SYS_GETPANEL + CP BF_SYSGET_APPBNKS + JP Z,SYS_GETAPPBNKS SYSCHKERR(ERR_NOFUNC) ; SIGNAL ERROR RET ; @@ -4626,6 +4637,8 @@ SYS_GETMEMINFO: ; RETURNS: ; D: HBIOS BANK ID ; E: USER BANK ID +; H: FIRST APP BANK ID +; L: APP BANK COUNT ; SYS_GETBNKINFO: LD A,(CB_BIDBIOS) @@ -4730,6 +4743,22 @@ SYS_GETPANEL1: ; HANDLE NON-EXISTENT FRONT PANEL OR A ; SET FLAGS RET ; DONE ; +; GET APPLICATION BANK INFORMATION +; RETURNS: +; H: FIRST APP BANK ID +; L: APP BANK COUNT +; E: BANK SIZE (IN 256-BYTE PAGES) +; +SYS_GETAPPBNKS: + LD A,(CB_BIDAPP0) ; FIRST BANK ID + LD H,A + LD A,(CB_APP_BNKS) ; NUMBER OF BANKS + LD L,A + LD E,$80 ; (256 * $80) = 32KB +; + XOR A + RET +; ; SET SYSTEM PARAMETERS ; PARAMETER(S) TO SET INDICATED IN C ; @@ -6431,12 +6460,12 @@ SIZ_TMS .EQU $ - ORG_TMS .ECHO " bytes.\n" #ENDIF ; -#IF (SCONENABLE) -ORG_SCON .EQU $ - #INCLUDE "scon.asm" -SIZ_SCON .EQU $ - ORG_SCON - .ECHO "SCON occupies " - .ECHO SIZ_SCON +#IF (EFENABLE) +ORG_EF .EQU $ + #INCLUDE "ef.asm" +SIZ_EF .EQU $ - ORG_EF + .ECHO "EF occupies " + .ECHO SIZ_EF .ECHO " bytes.\n" #ENDIF ; @@ -6528,7 +6557,7 @@ SIZ_FONTS .EQU $ - ORG_FONTS .ECHO SIZ_FONTS .ECHO " bytes.\n" ; -#IF (CVDUENABLE | VGAENABLE | GDCENABLE | VRCENABLE | (TMSENABLE & ((TMSMODE == TMSMODE_MSXKBD) | (TMSMODE == TMSMODE_MBC)))) +#IF (KBDENABLE) ORG_KBD .EQU $ #INCLUDE "kbd.asm" SIZ_KBD .EQU $ - ORG_KBD @@ -6537,7 +6566,7 @@ SIZ_KBD .EQU $ - ORG_KBD .ECHO " bytes.\n" #ENDIF ; -#IF (VDUENABLE | (TMSENABLE & (TMSMODE == TMSMODE_N8))) +#IF (PPKENABLE) ORG_PPK .EQU $ #INCLUDE "ppk.asm" SIZ_PPK .EQU $ - ORG_PPK @@ -6573,6 +6602,15 @@ SIZ_PPP .EQU $ - ORG_PPP .ECHO " bytes.\n" #ENDIF ; +#IF (SCONENABLE) +ORG_SCON .EQU $ + #INCLUDE "scon.asm" +SIZ_SCON .EQU $ - ORG_SCON + .ECHO "SCON occupies " + .ECHO SIZ_SCON + .ECHO " bytes.\n" +#ENDIF +; #IF (CHENABLE) ORG_CH .EQU $ #INCLUDE "ch.asm" @@ -6681,14 +6719,13 @@ SIZ_SYQ .EQU $ - ORG_SYQ .ECHO " bytes.\n" #ENDIF ; -#IF (TERMENABLE) +; TERM IS ALWAYS INCLUDED ORG_TERM .EQU $ #INCLUDE "term.asm" SIZ_TERM .EQU $ - ORG_TERM .ECHO "TERM occupies " .ECHO SIZ_TERM .ECHO " bytes.\n" -#ENDIF ; ;#IF (SPKENABLE & DSRTCENABLE) #IF (SPKENABLE) @@ -6760,7 +6797,7 @@ SIZ_YM2612 .EQU $ - ORG_YM2612 ; ; INCLUDE LZSA2 decompression engine if required. ; -#IF ((VGAENABLE | CVDUENABLE | TMSENABLE | GDCENABLE | VRCENABLE) & USELZSA2) +#IF ((CVDUENABLE | GDCENABLE | TMSENABLE | VGAENABLE | VRCENABLE) & USELZSA2) #INCLUDE "unlzsa2s.asm" #ENDIF ; @@ -6826,6 +6863,9 @@ FP_SETLEDS: OR A ; SET FLAGS LD A,L ; RESTORE REG A JR Z,FP_SETLEDS1 ; BAIL OUT IF NOT ACTIVE + #IF (FPLED_INV) + XOR $FF ; INVERT BITS IF NEEDED + #ENDIF OUT (FPLED_IO),A ; WRITE FP_SETLEDS1: POP HL ; RESTORE HL @@ -6843,6 +6883,9 @@ FP_GETSWITCHES: OR A ; SET FLAGS RET Z ; BAIL OUT IF NOT ACTIVE IN A,(FPSW_IO) ; READ SWITCHES + #IF (FPSW_INV) + XOR $FF ; INVERT BITS IF NEEDED + #ENDIF RET ; DONE ; ; diff --git a/Source/HBIOS/hbios.inc b/Source/HBIOS/hbios.inc index 7cfec1e6..cb573649 100644 --- a/Source/HBIOS/hbios.inc +++ b/Source/HBIOS/hbios.inc @@ -120,6 +120,7 @@ BF_SYSGET_MEMINFO .EQU $F1 ; GET MEMORY CAPACTITY INFO BF_SYSGET_BNKINFO .EQU $F2 ; GET BANK ASSIGNMENT INFO BF_SYSGET_CPUSPD .EQU $F3 ; GET CLOCK SPEED & WAIT STATES BF_SYSGET_PANEL .EQU $F4 ; GET FRONT PANEL SWITCHES VAL +BF_SYSGET_APPBNKS .EQU $F5 ; GET APP BANK INFORMATION ; BF_SYSSET_TIMER .EQU $D0 ; SET TIMER VALUE BF_SYSSET_SECS .EQU $D1 ; SET SECONDS VALUE @@ -319,6 +320,7 @@ CIODEV_LPT .EQU $0B CIODEV_ESPCON .EQU $0C CIODEV_ESPSER .EQU $0D CIODEV_SCON .EQU $0E +CIODEV_EF .EQU $0F ; ; SUB TYPES OF CHAR DEVICES ; @@ -368,6 +370,7 @@ VDADEV_GDC .EQU $02 ; GRAPHICS DISPLAY CTLR - UPD7220 VDADEV_TMS .EQU $03 ; N8 ONBOARD VDA SUBSYSTEM - TMS 9918 VDADEV_VGA .EQU $04 ; ECB VGA3 - HITACHI HD6445 VDADEV_VRC .EQU $05 ; VGARC +VDADEV_EF .EQU $06 ; EF9345 ; ; SOUND DEVICE IDS ; @@ -440,6 +443,8 @@ HCB_BIDRAMD0 .EQU $DC ; FIRST BANK OF RAM DRIVE HCB_RAMD_BNKS .EQU $DD ; RAM DRIVE BANK COUNT HCB_BIDROMD0 .EQU $DE ; FIRST BANK OF ROM DRIVE HCB_ROMD_BNKS .EQU $DF ; ROM DRIVE BANK COUNT +HCB_BIDAPP0 .EQU $E0 ; FIRST BANK OF APP RAM BANKS +HCB_APP_BNKS .EQU $E1 ; APP BANK COUNT ; ; HBIOS PROXY COMMON DATA BLOCK ; EXACTLY 32 BYTES AT $FFE0-$FFFF diff --git a/Source/HBIOS/hbios_env.asm b/Source/HBIOS/hbios_env.asm index 6d551d03..79887c9a 100644 --- a/Source/HBIOS/hbios_env.asm +++ b/Source/HBIOS/hbios_env.asm @@ -27,6 +27,8 @@ prtval("CPUFAM$", CPUFAM) prtval("ROMSIZE$", ROMSIZE) prtval("RAMSIZE$", RAMSIZE) + prtval("ROMDISKSIZE$", ROMD_BNKS * 32) + prtval("RAMDISKSIZE$", RAMD_BNKS * 32) ; ret ; diff --git a/Source/HBIOS/ppp.asm b/Source/HBIOS/ppp.asm index 72d2ab53..2ebcad99 100644 --- a/Source/HBIOS/ppp.asm +++ b/Source/HBIOS/ppp.asm @@ -250,7 +250,7 @@ PPP_FWVER .DB $00, $00, $00, $00 ; MMNNBBB (M=MAJOR, N=MINOR, B=BUILD) ; PARPORTPROP CONSOLE DRIVER ;================================================================================================== ; -PPPCON_ROWS .EQU 37 ; PROPELLER VGA DISPLAY ROWS (40 - 3 STATUS LINES) +PPPCON_ROWS .EQU 29 ; PROPELLER VGA DISPLAY ROWS (30 - 1 STATUS LINES) PPPCON_COLS .EQU 80 ; PROPELLER VGA DISPLAY COLS ; .ECHO "PPPCON: ENABLED\n" diff --git a/Source/HBIOS/prp.asm b/Source/HBIOS/prp.asm index f857c5fc..38849dce 100644 --- a/Source/HBIOS/prp.asm +++ b/Source/HBIOS/prp.asm @@ -121,7 +121,7 @@ PRPCON_ERR .EQU $40 ; BIT SET WHEN PROPIO CONSOLE ERROR HAS OCCURRED PRPCON_KBDRDY .EQU $20 ; BIT SET WHEN KEYBOARD BUF HAS A BYTE READY (BUF FULL) PRPCON_DSPRDY .EQU $10 ; BIT SET WHEN DISPLAY BUF IS READY FOR A BYTE (BUF EMPTY) ; -PRPCON_ROWS .EQU 37 ; PROPELLER VGA DISPLAY ROWS (40 - 3 STATUS LINES) +PRPCON_ROWS .EQU 29 ; PROPELLER VGA DISPLAY ROWS (30 - 1 STATUS LINES) PRPCON_COLS .EQU 80 ; PROPELLER VGA DISPLAY COLS ; .ECHO "PRPCON: ENABLED\n" diff --git a/Source/HBIOS/romldr.asm b/Source/HBIOS/romldr.asm index 89479466..611a50cf 100644 --- a/Source/HBIOS/romldr.asm +++ b/Source/HBIOS/romldr.asm @@ -175,6 +175,21 @@ start1: #endif ; #if (BIOS == BIOS_WBW) + ; Get the current console unit + ld b,BF_SYSPEEK ; HBIOS func: POKE + ld d,BID_BIOS ; BIOS bank + ld hl,HCB_LOC + HCB_CONDEV ; Con unit num in HCB + rst 08 ; do it + ld a,e ; put in A + ld (curcon),a ; save it +; + ; Get character unit count + ld b,BF_SYSGET ; HBIOS func: SYS GET + ld c,BF_SYSGET_CIOCNT ; HBIOS subfunc: CIO unit count + rst 08 ; E := unit count + ld a,e ; put in A + ld (ciocnt),a ; save it +; ; Check for DSKY and set flag ld b,BF_SYSGET ; HBIOS func: get ld c,BF_SYSGET_DSKYCNT ; get DSKY count @@ -250,6 +265,22 @@ prompt: call dsky_beep call dsky_l2on #endif +; + ; purge any garbage on the line + call delay ; wait for prompt to be sent + ld b,0 ; failsafe max iterations +purge: + call cst ; anything there? + jr z,wtkey ; if not, move on + call cin ; read and discard + djnz purge ; and loop till no more +; +#if (BIOS == BIOS_WBW) + #if (AUTOCON) + or $ff ; initial value + ld (conpend),a ; ... for conpoll routine + #endif +#endif ; wtkey: ; wait for a key or timeout @@ -261,6 +292,13 @@ wtkey: jp nz,dskycmd ; if pending, do DSKY command #endif ; +#if (BIOS == BIOS_WBW) + #if (AUTOCON) + call conpoll ; poll for console takeover + jp nz,docon ; if requested, takeover + #endif +#endif +; #if (BOOT_TIMEOUT != -1) ; check for timeout and handle auto boot here ld a,(acmd_act) ; get auto cmd active flag @@ -293,6 +331,69 @@ clrbuf1: ret ; ;======================================================================= +; Poll character units for console takeover request +;======================================================================= +; +; Poll all character units in system for a console takeover request. +; A takeover request consists of pressing the twice in a row. +; at the character unit that wants to be the console. Return with ZF +; set if a console takeover was requested. If so, the requested console +; unit will be recorded in (newcon). +; +#if (BIOS == BIOS_WBW) + #if (AUTOCON) +; +conpoll: + ; save active console unit + ld a,(curcon) + ld e,a ; save in E +; + ; loop through all char ports + ld a,(ciocnt) ; count of char units + ld b,a ; use for loop counter + ld c,0 ; init unit num +; +conpoll1: + ld a,c ; next char unit to test + cp e ; is this the active console? + jr z,conpoll2 ; if so, don't test, move on + ld (curcon),a ; make it current port + call cst ; char waiting? + jr z,conpoll2 ; if no char, move on + call cin ; get char + cp ' ' ; space char? + jr nz,conpoll2 ; if not, move on +; + ; a char was typed. check to see if we just saw a + ; from this same unit. + ld a,(conpend) ; pending con unit to A + cp c ; compare to active unit + jr z,conpoll3 ; if =, second , take con + ld a,c ; if not, unit to A + ld (conpend),a ; and update pending console +; +conpoll2: + inc c ; next char unit + djnz conpoll1 ; loop till done + xor a ; ret w/ Z for no takeover + jr conpoll4 ; all done, no takeover +; +conpoll3: + ; record a new console request + ld a,(curcon) ; record the unit + ld (newcon),a ; ... as new console + or $ff ; ret w/ NZ for new con req +; +conpoll4: + ; restore active console and exit + ld a,e ; restore active + ld (curcon),a ; ... console + ret ; done, NZ if new con request +; + #endif +#endif +; +;======================================================================= ; Process a command line from buffer ;======================================================================= ; @@ -625,14 +726,8 @@ setcon: jp c,err_nocon ; handle overflow error ; ; Check against max char unit - push de - push af ; save requested unit - ld b,BF_SYSGET ; HBIOS func: SYS GET - ld c,BF_SYSGET_CIOCNT ; HBIOS subfunc: CIO unit count - rst 08 ; E := unit count - pop af ; restore requested unit - cp e ; compare - pop de + ld hl,ciocnt + cp (hl) jp nc,err_nocon ; handle invalid unit ld (newcon),a ; save validated console ; @@ -716,6 +811,7 @@ docon: ld hl,str_newcon ; new console msg call prtdecb ; print unit num ; ; Set console unit + ld (curcon),a ; update loader console unit ld b,BF_SYSPOKE ; HBIOS func: POKE ld d,BID_BIOS ; BIOS bank ld e,a ; Char unit value @@ -1383,8 +1479,6 @@ str_s100con .db "\r\n\r\nConsole on S100 Bus",0 clrled: #if (BIOS == BIOS_WBW) #if (FPLED_ENABLE) - ;xor a ; zero accum - ;out (FPLED_IO),a ; clear diag leds ld b,BF_SYSSET ; HBIOS SysGet ld c,BF_SYSSET_PANEL ; ... Panel swiches value ld l,$00 ; all LEDs off @@ -1866,7 +1960,8 @@ cout: ; ; Output character to console via HBIOS ld e,a ; output char to E - ld c,CIO_CONSOLE ; console unit to C + ld a,(curcon) ; get current console + ld c,a ; console unit to C ld b,BF_CIOOUT ; HBIOS func: output char rst 08 ; HBIOS outputs character ; @@ -1886,7 +1981,8 @@ cin: push hl ; ; Input character from console via hbios - ld c,CIO_CONSOLE ; console unit to c + ld a,(curcon) ; get current console + ld c,a ; console unit to C ld b,BF_CIOIN ; HBIOS func: input char rst 08 ; HBIOS reads character ld a,e ; move character to A for return @@ -1906,7 +2002,8 @@ cst: push hl ; ; Get console input status via HBIOS - ld c,CIO_CONSOLE ; console unit to C + ld a,(curcon) ; get current console + ld c,a ; console unit to C ld b,BF_CIOIST ; HBIOS func: input status rst 08 ; HBIOS returns status in A ; @@ -2419,6 +2516,14 @@ loadcnt .db 0 ; num disk sectors to load switches .db 0 ; front panel switches diskcnt .db 0 ; disk unit count value dskyact .db 0 ; DSKY active if != 0 +; +#if (BIOS == BIOS_WBW) +curcon .db CIO_CONSOLE ; current console unit +ciocnt .db 1 ; count of char units +savcon .db 0 ; con save for conpoll +conpend .db $ff ; pending con unit (first pressed) +#endif + ; ;======================================================================= ; Pad remainder of ROM Loader diff --git a/Source/HBIOS/scon.asm b/Source/HBIOS/scon.asm index 9a32457f..749175bb 100644 --- a/Source/HBIOS/scon.asm +++ b/Source/HBIOS/scon.asm @@ -22,12 +22,6 @@ SCON_ROWS .EQU 40 ; ; ; -SCON_PREINIT: - XOR A - RET -; -; -; SCON_INIT: CALL NEWLINE PRTS("SCON:$") diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index f8c35666..2219e62e 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -462,15 +462,22 @@ SER_7372800_8N2 .EQU SER_BAUD7372800 | SER_DATA8 | SER_PARNONE | SER_STOP2 ; TERMENABLE .EQU FALSE ; TERM PSEUDO DEVICE, WILL AUTO-ENABLE IF A VDA IS ENABLED ; +; THE FOLLOWING CONTROL INCLUSION OF THE KEYBOARD DRIVERS. THEY ARE +; SET TO TRUE IN THE VDA DRIVERS AS NEEDED. +; +KBDENABLE .EQU FALSE ; PS/2 KEYBOARD DRIVER +PPKENABLE .EQU FALSE ; PPK KEYBOARD DRIVER +; ; VIDEO MODES ; V80X24 .EQU 0 ; ECB-VDU -V80X25 .EQU 1 ; ECB-VDU, ECB-VGA3 +V80X25 .EQU 1 ; ECB-VDU, ECB-VGA3, EF9345 V80X30 .EQU 2 ; ECB-VDU, ECB-VGA3 V80X25B .EQU 3 ; ECB-VDU V80X24B .EQU 4 ; ECB-VDU V80X43 .EQU 5 ; ECB-VGA3 V80X60 .EQU 6 ; ECB-VGA3 +V40X24 .EQU 7 ; EF9345 ; ; KEYBOARD LAYOUTS ; @@ -701,6 +708,83 @@ BID_RAM0 .EQU $80 BID_ROMN .EQU (BID_ROM0 + ROMBANKS - 1) BID_RAMN .EQU (BID_RAM0 + RAMBANKS - 1) ; +#IF (BIOS == BIOS_WBW) +; + #IF (ROMSIZE > 0) +ROM_BNKS_RSVD .EQU 4 +RAM_BNKS_RSVD .EQU 5 + #ELSE +ROM_BNKS_RSVD .EQU 0 +RAM_BNKS_RSVD .EQU 8 + #ENDIF +#ENDIF +; +#IF (BIOS == BIOS_UNA) +ROM_BNKS_RSVD .EQU 4 +RAM_BNKS_RSVD .EQU 4 ; NEED TO CONFIRM THIS!!! +#ENDIF +; +; APPLICATION MEMORY BANKS +; +#IF (APP_BNKS == $FF) +APP_BNKS .SET 0 ; 0K + #IF ((RAMBANKS - RAM_BNKS_RSVD) > $08) +APP_BNKS .SET 3 ; 96K + #ENDIF + #IF ((RAMBANKS - RAM_BNKS_RSVD) > $18) +APP_BNKS .SET 11 ; 353KB + #ENDIF +#ENDIF +; +; ROM/RAM MEMORY BANKS +; +#IF (BIOS == BIOS_WBW) +; +ROMD_BNKS .EQU ROMBANKS - ROM_BNKS_RSVD +RAMD_BNKS .EQU RAMBANKS - APP_BNKS - RAM_BNKS_RSVD +; +#ENDIF +; +#IF (BIOS == BIOS_UNA) +; +ROMD_BNKS .EQU ROMBANKS - 4 +RAMD_BNKS .EQU RAMBANKS - 4 +; +#ENDIF +; +; ADJUSTMENTS FOR ROMLESS SYSTEMS +; +#IF (ROMSIZE == 0) +; +; WE NEED TO NORMALIZE THE SIZE OF THE RAM DISK TO FIT +; ONE OF THE STANDARD ROM DISK IMAGES +; + #IF (RAMD_BNKS < 4) +RAMD_BNKS .SET 0 ; 0KB RAM DISK + #ENDIF + #IF ((RAMD_BNKS >= 4) & (RAMD_BNKS < 8)) +RAMD_BNKS .SET 4 ; 128KB RAM DISK + #ENDIF + #IF ((RAMD_BNKS >= 8) & (RAMD_BNKS < 12)) +RAMD_BNKS .SET 8 ; 256KB RAM DISK + #ENDIF + #IF ((RAMD_BNKS >= 12) & (RAMD_BNKS < 28)) +RAMD_BNKS .SET 12 ; 384KB RAM DISK + #ENDIF + #IF (RAMD_BNKS >= 28) +RAMD_BNKS .SET 28 ; 896KB RAM DISK + #ENDIF +; +#ENDIF +; +#IF ((!MDRAM) | (RAMD_BNKS <= 0)) +RAMD_BNKS .SET 0 +#ENDIF +; +#IF ((!MDROM) | (ROMD_BNKS <= 0)) +ROMD_BNKS .SET 0 +#ENDIF +; #IF (ROMSIZE > 0) ; ; NORMAL SYSTEM WITH ROM & RAM @@ -710,11 +794,9 @@ BID_IMG0 .EQU BID_ROM0 + 1 ; ROM LOADER AND FIRST IMAGES BANK 0x01 BID_IMG1 .EQU BID_ROM0 + 2 ; SECOND IMAGES BANK 0x02 BID_IMG2 .EQU BID_ROM0 + 3 ; RESERVED 0x03 BID_ROMD0 .EQU BID_ROM0 + 4 ; FIRST ROM DRIVE BANK 0x04 -BID_ROMDN .EQU BID_ROMN ; LAST ROM DRIVE BANK 0x0F -; -BID_BIOS .EQU BID_RAM0 ; HBIOS BANK 0x80 +BID_BIOS .EQU BID_RAM0 + 0 ; HBIOS BANK 0x80 BID_RAMD0 .EQU BID_RAM0 + 1 ; FIRST RAM DRIVE BANK 0x81 -BID_RAMDN .EQU BID_RAMN - 4 ; LAST RAM DRIVE BANK 0x8B +BID_APP0 .EQU BID_RAMD0 + RAMD_BNKS ; FIRST APP BANK 0x89 BID_BUF .EQU BID_RAMN - 3 ; OS BUFFERS (CP/M3) 0x8C BID_AUX .EQU BID_RAMN - 2 ; AUX BANK (CP/M 3, BPBIOS, ETC.) 0x8D BID_USR .EQU BID_RAMN - 1 ; USER BANK (CP/M TPA, ETC.) 0x8E @@ -730,7 +812,7 @@ BID_IMG0 .EQU BID_RAM0 + 1 ; ROM LOADER AND FIRST IMAGES BANK 0x81 BID_IMG1 .EQU BID_RAM0 + 2 ; SECOND IMAGES BANK 0x82 BID_IMG2 .EQU BID_RAM0 + 3 ; RESERVED 0x83 BID_RAMD0 .EQU BID_RAM0 + 4 ; FIRST RAM DRIVE BANK 0x84 -BID_RAMDN .EQU BID_RAMN - 4 ; LAST RAM DRIVE BANK 0x8B +BID_APP0 .EQU BID_RAMD0 + RAMD_BNKS ; FIRST APP BANK 0x89 BID_BUF .EQU BID_RAMN - 3 ; OS BUFFERS (CP/M3) 0x8C BID_AUX .EQU BID_RAMN - 2 ; AUX BANK (CP/M 3, BPBIOS, ETC.) 0x8D BID_USR .EQU BID_RAMN - 1 ; USER BANK (CP/M TPA, ETC.) 0x8E @@ -738,47 +820,44 @@ BID_COM .EQU BID_RAMN - 0 ; COMMON BANK, UPPER 32K 0x8F ; BID_BIOS .EQU BID_BOOT ; HBIOS BANK 0x80 BID_ROMD0 .EQU 0 ; NO ROM DRIVE -BID_ROMDN .EQU $FF ; NO ROM DRIVE -; -#ENDIF -; -#IF (BIOS == BIOS_WBW) -; - #IF (!MDRAM) -BID_RAMD0 .SET $FF ; RAM DRIVE DISABLED -BID_RAMDN .SET 0 ; RAM DRIVE DISABLED - #ENDIF -; - #IF (!MDROM) -BID_ROMD0 .SET $FF ; ROM DRIVE DISABLED -BID_ROMDN .SET 0 ; ROM DRIVE DISABLED - #ENDIF -; -ROMD_BNKS .EQU (BID_ROMDN - BID_ROMD0 + 1) -RAMD_BNKS .EQU (BID_RAMDN - BID_RAMD0 + 1) ; #ENDIF ; -#IF FALSE - .ECHO "--- RAM/ROM CAPACITY ---\n" - .ECHO "BID_ROM0: " \ .ECHO BID_ROM0 \ .ECHO "\n" - .ECHO "BID_ROMN: " \ .ECHO BID_ROMN \ .ECHO "\n" - .ECHO "BID_RAM0: " \ .ECHO BID_RAM0 \ .ECHO "\n" - .ECHO "BID_RAMN: " \ .ECHO BID_RAMN \ .ECHO "\n" - .ECHO "--- BANK LAYOUT ---\n" - .ECHO "BID_BOOT: " \ .ECHO BID_BOOT \ .ECHO "\n" - .ECHO "BID_IMG0: " \ .ECHO BID_IMG0 \ .ECHO "\n" - .ECHO "BID_IMG1: " \ .ECHO BID_IMG1 \ .ECHO "\n" - .ECHO "BID_IMG2: " \ .ECHO BID_IMG2 \ .ECHO "\n" +APP_BNKS .SET BID_BUF - BID_APP0 +; +BID_RAMDN .EQU BID_RAMD0 + RAMD_BNKS - 1 ; LAST RAM DRIVE BANK +BID_ROMDN .EQU BID_ROMD0 + ROMD_BNKS - 1 ; LAST ROM DRIVE BANK +BID_APPN .EQU BID_APP0 + APP_BNKS - 1 ; LAST APP BANK +; +#IF TRUE + .ECHO "------------- CAPACITY -----------------\n" + .ECHO "ROMBANKS: " \ .ECHO ROMBANKS \ .ECHO "\n" + .ECHO "RAMBANKS: " \ .ECHO RAMBANKS \ .ECHO "\n" + .ECHO "ROMD_BNKS: " \ .ECHO ROMD_BNKS \ .ECHO "\n" + .ECHO "RAMD_BNKS: " \ .ECHO RAMD_BNKS \ .ECHO "\n" + .ECHO "APP_BNKS: " \ .ECHO APP_BNKS \ .ECHO "\n" + .ECHO "----------- MEMORY LAYOUT --------------\n" + .ECHO "BID_ROM0: " \ .ECHO BID_ROM0 \ .ECHO "\n" + .ECHO "BID_ROMN: " \ .ECHO BID_ROMN \ .ECHO "\n" + .ECHO "BID_RAM0: " \ .ECHO BID_RAM0 \ .ECHO "\n" + .ECHO "BID_RAMN: " \ .ECHO BID_RAMN \ .ECHO "\n" + .ECHO "------------- BANK LAYOUT --------------\n" + .ECHO "BID_BOOT: " \ .ECHO BID_BOOT \ .ECHO "\n" + .ECHO "BID_IMG0: " \ .ECHO BID_IMG0 \ .ECHO "\n" + .ECHO "BID_IMG1: " \ .ECHO BID_IMG1 \ .ECHO "\n" + .ECHO "BID_IMG2: " \ .ECHO BID_IMG2 \ .ECHO "\n" .ECHO "BID_ROMD0: " \ .ECHO BID_ROMD0 \ .ECHO "\n" .ECHO "BID_ROMDN: " \ .ECHO BID_ROMDN \ .ECHO "\n" - .ECHO "BID_BIOS: " \ .ECHO BID_BIOS \ .ECHO "\n" + .ECHO "BID_BIOS: " \ .ECHO BID_BIOS \ .ECHO "\n" .ECHO "BID_RAMD0: " \ .ECHO BID_RAMD0 \ .ECHO "\n" .ECHO "BID_RAMDN: " \ .ECHO BID_RAMDN \ .ECHO "\n" - .ECHO "BID_BUF: " \ .ECHO BID_BUF \ .ECHO "\n" - .ECHO "BID_AUX: " \ .ECHO BID_AUX \ .ECHO "\n" - .ECHO "BID_USR: " \ .ECHO BID_USR \ .ECHO "\n" - .ECHO "BID_COM: " \ .ECHO BID_COM \ .ECHO "\n" + .ECHO "BID_APP0: " \ .ECHO BID_APP0 \ .ECHO "\n" + .ECHO "BID_APPN: " \ .ECHO BID_APPN \ .ECHO "\n" + .ECHO "BID_BUF: " \ .ECHO BID_BUF \ .ECHO "\n" + .ECHO "BID_AUX: " \ .ECHO BID_AUX \ .ECHO "\n" + .ECHO "BID_USR: " \ .ECHO BID_USR \ .ECHO "\n" + .ECHO "BID_COM: " \ .ECHO BID_COM \ .ECHO "\n" + .ECHO "----------------------------------------\n" #ENDIF ; ; MEMORY LAYOUT diff --git a/Source/HBIOS/term.asm b/Source/HBIOS/term.asm index 40931e47..5e569516 100644 --- a/Source/HBIOS/term.asm +++ b/Source/HBIOS/term.asm @@ -16,6 +16,22 @@ ; ; ;====================================================================== +; TERMINAL DRIVER - PRE-CONSOLE INITIALIZATION +;====================================================================== +; +; GIVE EMULATION MODULES A CHANCE TO RESET THEMSELVES AT STARTUP +; +TERM_PREINIT: +#IF (TERMENABLE) + XOR A ; ZERO TO ACCUM + LD (TERM_DEVCNT),A ; INITIALIZE DEVCNT + CALL TTY_PREINIT ; DO TTY PREINIT + CALL ANSI_PREINIT ; DO ANSI PREINIT +#ENDIF + XOR A ; SIGNAL SUCCESS + RET ; DONE +; +;====================================================================== ; TERMINAL DRIVER - ATTACH ;====================================================================== ; @@ -31,6 +47,8 @@ ; DE: VDA DRIVER'S DISPATCH ADDRESS ; HL: VDA DRIVER'S INSTANCE DATA ; +#IF (TERMENABLE) +; TERM_ATTACH: ; LD A,(TERM_DEVCNT) ; GET NEXT DEVICE NUMBER TO USE @@ -40,12 +58,12 @@ TERM_ATTACH: ; SETUP EMULATOR MODULE FUNC TBL ADDRESS BASED ON DESIRED EMULATION ; EMULATOR PASSES BACK IT'S FUNC TBL ADDRESS IN DE OR $FF ; PRESET FAILURE -#IF (VDAEMU == EMUTYP_TTY) + #IF (VDAEMU == EMUTYP_TTY) CALL TTY_INIT ; INIT TTY, DE := TTY_FNTBL -#ENDIF -#IF (VDAEMU == EMUTYP_ANSI) + #ENDIF + #IF (VDAEMU == EMUTYP_ANSI) CALL ANSI_INIT ; INIT ANSI, DE := ANSI_FNTBL -#ENDIF + #ENDIF POP HL ; RECOVER VDA INSTANCE DATA PTR RET NZ ; BAIL OUT ON ERROR ; @@ -74,5 +92,7 @@ TERM_DEVCNT .DB 0 ; TERMINAL DEVICE COUNT ; EMULATION MODULES ;====================================================================== ; -#INCLUDE "tty.asm" -#INCLUDE "ansi.asm" + #INCLUDE "tty.asm" + #INCLUDE "ansi.asm" +; +#ENDIF \ No newline at end of file diff --git a/Source/HBIOS/tms.asm b/Source/HBIOS/tms.asm index bf00442d..4d47981d 100644 --- a/Source/HBIOS/tms.asm +++ b/Source/HBIOS/tms.asm @@ -154,6 +154,14 @@ TMS_COLS .EQU 40 ; TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER ; +#IF (TMSMODE == TMSMODE_N8) +PPKENABLE .SET TRUE ; INCLUDE PPK KEYBOARD SUPPORT +#ENDIF +; +#IF ((TMSMODE == TMSMODE_MSXKBD) | (TMSMODE == TMSMODE_MBC)) +PPKENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT +#ENDIF +; ; TMS_IODELAY IS USED TO ADD RECOVERY TIME TO TMS9918/V9958 ACCESSES ; IF YOU SEE SCREEN CORRUPTION, ADJUST THIS!!! ; diff --git a/Source/HBIOS/tty.asm b/Source/HBIOS/tty.asm index 65d09a49..73cc6567 100644 --- a/Source/HBIOS/tty.asm +++ b/Source/HBIOS/tty.asm @@ -6,6 +6,14 @@ ; TODO: ; - SOME FUNCTIONS ARE NOT IMPLEMENTED!!! ; +; PRE-CONSOLE INITIALIZATION +; +TTY_PREINIT: + OR $FF ; RESET THE VDA UNIT + LD (TTY_VDAUNIT),A ; ... TO INITIAL VALUE + XOR A + RET +; ; INITIALIZATION OF EMULATION MODULE CALLED BY PARENT VDA DRIVER ; ON ENTRY: ; C: CIO UNIT NUMBER OF CALLING VDA DRIVER diff --git a/Source/HBIOS/vdu.asm b/Source/HBIOS/vdu.asm index 890e2a06..b4c1a4c9 100644 --- a/Source/HBIOS/vdu.asm +++ b/Source/HBIOS/vdu.asm @@ -45,6 +45,7 @@ VDU_CSTY .EQU VDU_BLOK ; DEFAULT CURSOR STYLE VDU_BLNK .EQU VDU_NOBL ; DEFAULT BLINK RATE ; TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER +PPKENABLE .SET TRUE ; INCLUDE PPK KEYBOARD SUPPORT ; #IF (VDUSIZ=V80X24) DLINES .EQU 24 diff --git a/Source/HBIOS/vga.asm b/Source/HBIOS/vga.asm index 8d0413aa..8b78c38a 100644 --- a/Source/HBIOS/vga.asm +++ b/Source/HBIOS/vga.asm @@ -90,6 +90,7 @@ VGA_R11 .EQU VGA_SCANL-1 #DEFINE DEFREGS REGS_VGA ; TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER +KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT ; ; DRIVER UTILIZES THE MULTIPLE DISPLAY WINDOW FEATURE OF THE CRTC TO ACCOMPLISH ; FULL SCREEN SCROLLING WITHOUT THE NEED TO MOVE DISPLAY RAM BYTES. diff --git a/Source/HBIOS/vrc.asm b/Source/HBIOS/vrc.asm index 3f25392e..c224c9de 100644 --- a/Source/HBIOS/vrc.asm +++ b/Source/HBIOS/vrc.asm @@ -25,6 +25,7 @@ VRC_COLS .EQU 64 #DEFINE VRC_FONT FONTVGARC ; TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER +KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT ; .ECHO "VRC: IO=" .ECHO VRC_BASE diff --git a/Source/Images/Build.cmd b/Source/Images/Build.cmd index d7776994..c19abf07 100644 --- a/Source/Images/Build.cmd +++ b/Source/Images/Build.cmd @@ -22,6 +22,8 @@ call BuildDisk.cmd tpascal hd wbw_fd144 || exit /b call BuildDisk.cmd bascomp hd wbw_fd144 || exit /b call BuildDisk.cmd fortran hd wbw_fd144 || exit /b call BuildDisk.cmd games hd wbw_fd144 || exit /b +call BuildDisk.cmd cowgol hd wbw_fd144 || exit /b + echo. echo Building Hard Disk Images (512 directory entry format)... @@ -42,6 +44,7 @@ call BuildDisk.cmd tpascal hd wbw_hd512 || exit /b call BuildDisk.cmd bascomp hd wbw_hd512 || exit /b call BuildDisk.cmd fortran hd wbw_hd512 || exit /b call BuildDisk.cmd games hd wbw_hd512 || exit /b +call BuildDisk.cmd cowgol hd wbw_hd512 || exit /b echo. echo Building Combo Disk (512 directory entry format) Image... @@ -65,6 +68,7 @@ call BuildDisk.cmd tpascal hd wbw_hd1k || exit /b call BuildDisk.cmd bascomp hd wbw_hd1k || exit /b call BuildDisk.cmd fortran hd wbw_hd1k || exit /b call BuildDisk.cmd games hd wbw_hd1k || exit /b +call BuildDisk.cmd cowgol hd wbw_hd1k || exit /b if exist ..\BPBIOS\bp*.rel call BuildDisk.cmd bp hd wbw_hd1k ..\zsdos\zsys_wbw.sys || exit /b diff --git a/Source/Images/Makefile b/Source/Images/Makefile index 1a9cf1ba..45425599 100644 --- a/Source/Images/Makefile +++ b/Source/Images/Makefile @@ -7,18 +7,19 @@ FDIMGS = fd144_cpm22.img fd144_zsdos.img fd144_nzcom.img \ fd144_cpm3.img fd144_zpm3.img fd144_ws4.img fd144_qpm.img \ fd144_z80asm.img fd144_aztecc.img fd144_hitechc.img \ fd144_bascomp.img fd144_fortran.img fd144_games.img \ - fd144_tpascal.img + fd144_tpascal.img fd144_cowgol.img HD512IMGS = hd512_cpm22.img hd512_zsdos.img hd512_nzcom.img \ hd512_cpm3.img hd512_zpm3.img hd512_ws4.img HD512XIMGS = hd512_z80asm.img hd512_aztecc.img hd512_hitechc.img \ hd512_bascomp.img hd512_fortran.img hd512_games.img \ - hd512_tpascal.img hd512_dos65.img hd512_qpm.img hd512_blank.img -# HDIMGS += hd512_bp.img + hd512_tpascal.img hd512_dos65.img hd512_qpm.img \ + hd512_cowgol.img hd512_blank.img HD1KIMGS = hd1k_cpm22.img hd1k_zsdos.img hd1k_nzcom.img \ hd1k_cpm3.img hd1k_zpm3.img hd1k_ws4.img HD1KXIMGS = hd1k_z80asm.img hd1k_aztecc.img hd1k_hitechc.img \ hd1k_bascomp.img hd1k_fortran.img hd1k_games.img \ - hd1k_tpascal.img hd1k_qpm.img hd1k_blank.img + hd1k_tpascal.img hd1k_qpm.img \ + hd1k_cowgol.img hd1k_blank.img HD1KXIMGS += hd1k_bp.img HD512PREFIX = diff --git a/Source/Images/cpnet12/cpnboot.com b/Source/Images/cpnet12/cpnboot.com deleted file mode 100644 index 7216bcc7..00000000 Binary files a/Source/Images/cpnet12/cpnboot.com and /dev/null differ diff --git a/Source/Images/cpnet12/cpnetldr.com b/Source/Images/cpnet12/cpnetldr.com deleted file mode 100644 index 750510ac..00000000 Binary files a/Source/Images/cpnet12/cpnetldr.com and /dev/null differ diff --git a/Source/Images/cpnet12/cpnetsts.com b/Source/Images/cpnet12/cpnetsts.com deleted file mode 100644 index 81621fdd..00000000 Binary files a/Source/Images/cpnet12/cpnetsts.com and /dev/null differ diff --git a/Source/Images/cpnet12/dskreset.com b/Source/Images/cpnet12/dskreset.com deleted file mode 100644 index 7ce71ce2..00000000 Binary files a/Source/Images/cpnet12/dskreset.com and /dev/null differ diff --git a/Source/Images/cpnet12/endlist.com b/Source/Images/cpnet12/endlist.com deleted file mode 100644 index e52cb75a..00000000 Binary files a/Source/Images/cpnet12/endlist.com and /dev/null differ diff --git a/Source/Images/cpnet12/help.com b/Source/Images/cpnet12/help.com deleted file mode 100644 index 34e1829c..00000000 Binary files a/Source/Images/cpnet12/help.com and /dev/null differ diff --git a/Source/Images/cpnet12/local.com b/Source/Images/cpnet12/local.com deleted file mode 100644 index fc059511..00000000 Binary files a/Source/Images/cpnet12/local.com and /dev/null differ diff --git a/Source/Images/cpnet12/login.com b/Source/Images/cpnet12/login.com deleted file mode 100644 index 3a089680..00000000 Binary files a/Source/Images/cpnet12/login.com and /dev/null differ diff --git a/Source/Images/cpnet12/logoff.com b/Source/Images/cpnet12/logoff.com deleted file mode 100644 index ccd56c6e..00000000 Binary files a/Source/Images/cpnet12/logoff.com and /dev/null differ diff --git a/Source/Images/cpnet12/mail.com b/Source/Images/cpnet12/mail.com deleted file mode 100644 index 8ebb02be..00000000 Binary files a/Source/Images/cpnet12/mail.com and /dev/null differ diff --git a/Source/Images/cpnet12/netdown.com b/Source/Images/cpnet12/netdown.com deleted file mode 100644 index 52aed9be..00000000 Binary files a/Source/Images/cpnet12/netdown.com and /dev/null differ diff --git a/Source/Images/cpnet12/netstat.com b/Source/Images/cpnet12/netstat.com deleted file mode 100644 index 7b933533..00000000 Binary files a/Source/Images/cpnet12/netstat.com and /dev/null differ diff --git a/Source/Images/cpnet12/network.com b/Source/Images/cpnet12/network.com deleted file mode 100644 index 5b6322b1..00000000 Binary files a/Source/Images/cpnet12/network.com and /dev/null differ diff --git a/Source/Images/cpnet12/nvram.com b/Source/Images/cpnet12/nvram.com deleted file mode 100644 index 63c509a4..00000000 Binary files a/Source/Images/cpnet12/nvram.com and /dev/null differ diff --git a/Source/Images/cpnet12/pipnet.com b/Source/Images/cpnet12/pipnet.com deleted file mode 100644 index ea3cb2c7..00000000 Binary files a/Source/Images/cpnet12/pipnet.com and /dev/null differ diff --git a/Source/Images/cpnet12/rdate.com b/Source/Images/cpnet12/rdate.com deleted file mode 100644 index 10cbfded..00000000 Binary files a/Source/Images/cpnet12/rdate.com and /dev/null differ diff --git a/Source/Images/cpnet12/readme.txt b/Source/Images/cpnet12/readme.txt deleted file mode 100644 index 6bc89333..00000000 --- a/Source/Images/cpnet12/readme.txt +++ /dev/null @@ -1,17 +0,0 @@ -*********************************************************************** -*** *** -*** R o m W B W *** -*** *** -*** Z80/Z180 System Software *** -*** *** -*********************************************************************** - -This directory contains the CP/M 2.2 client tools for CP/NET. These -tools work only with the MT011 RCBus module. - -All of these files come from Douglas Miller. Please refer to -https://github.com/durgadas311/cpnet-z80 for more information and -the latest source code. - -In general, to use CP/NET on RomWBW, it is intended that you will -copy all of these files into your user 0 directory. \ No newline at end of file diff --git a/Source/Images/cpnet12/srvstat.com b/Source/Images/cpnet12/srvstat.com deleted file mode 100644 index 914b5b5f..00000000 Binary files a/Source/Images/cpnet12/srvstat.com and /dev/null differ diff --git a/Source/Images/cpnet12/tr.com b/Source/Images/cpnet12/tr.com deleted file mode 100644 index e9843305..00000000 Binary files a/Source/Images/cpnet12/tr.com and /dev/null differ diff --git a/Source/Images/cpnet12/wizcfg.com b/Source/Images/cpnet12/wizcfg.com deleted file mode 100644 index 491bca54..00000000 Binary files a/Source/Images/cpnet12/wizcfg.com and /dev/null differ diff --git a/Source/Images/cpnet12/wizdbg.com b/Source/Images/cpnet12/wizdbg.com deleted file mode 100644 index fa889a0b..00000000 Binary files a/Source/Images/cpnet12/wizdbg.com and /dev/null differ diff --git a/Source/Images/cpnet12/wiztest.com b/Source/Images/cpnet12/wiztest.com deleted file mode 100644 index d808e6c5..00000000 Binary files a/Source/Images/cpnet12/wiztest.com and /dev/null differ diff --git a/Source/Images/cpnet12/xsubnet.com b/Source/Images/cpnet12/xsubnet.com deleted file mode 100644 index da78ba84..00000000 Binary files a/Source/Images/cpnet12/xsubnet.com and /dev/null differ diff --git a/Source/Images/cpnet3/cpnetsts.com b/Source/Images/cpnet3/cpnetsts.com deleted file mode 100644 index 81621fdd..00000000 Binary files a/Source/Images/cpnet3/cpnetsts.com and /dev/null differ diff --git a/Source/Images/cpnet3/dskreset.com b/Source/Images/cpnet3/dskreset.com deleted file mode 100644 index 7ce71ce2..00000000 Binary files a/Source/Images/cpnet3/dskreset.com and /dev/null differ diff --git a/Source/Images/cpnet3/endlist.com b/Source/Images/cpnet3/endlist.com deleted file mode 100644 index e52cb75a..00000000 Binary files a/Source/Images/cpnet3/endlist.com and /dev/null differ diff --git a/Source/Images/cpnet3/help.com b/Source/Images/cpnet3/help.com deleted file mode 100644 index 34e1829c..00000000 Binary files a/Source/Images/cpnet3/help.com and /dev/null differ diff --git a/Source/Images/cpnet3/local.com b/Source/Images/cpnet3/local.com deleted file mode 100644 index fc059511..00000000 Binary files a/Source/Images/cpnet3/local.com and /dev/null differ diff --git a/Source/Images/cpnet3/login.com b/Source/Images/cpnet3/login.com deleted file mode 100644 index 3a089680..00000000 Binary files a/Source/Images/cpnet3/login.com and /dev/null differ diff --git a/Source/Images/cpnet3/logoff.com b/Source/Images/cpnet3/logoff.com deleted file mode 100644 index ccd56c6e..00000000 Binary files a/Source/Images/cpnet3/logoff.com and /dev/null differ diff --git a/Source/Images/cpnet3/mail.com b/Source/Images/cpnet3/mail.com deleted file mode 100644 index 8ebb02be..00000000 Binary files a/Source/Images/cpnet3/mail.com and /dev/null differ diff --git a/Source/Images/cpnet3/ndos3.com b/Source/Images/cpnet3/ndos3.com deleted file mode 100644 index c4e5aabe..00000000 Binary files a/Source/Images/cpnet3/ndos3.com and /dev/null differ diff --git a/Source/Images/cpnet3/netdown.com b/Source/Images/cpnet3/netdown.com deleted file mode 100644 index 52aed9be..00000000 Binary files a/Source/Images/cpnet3/netdown.com and /dev/null differ diff --git a/Source/Images/cpnet3/netstat.com b/Source/Images/cpnet3/netstat.com deleted file mode 100644 index 7b933533..00000000 Binary files a/Source/Images/cpnet3/netstat.com and /dev/null differ diff --git a/Source/Images/cpnet3/network.com b/Source/Images/cpnet3/network.com deleted file mode 100644 index 5b6322b1..00000000 Binary files a/Source/Images/cpnet3/network.com and /dev/null differ diff --git a/Source/Images/cpnet3/ntpdate.com b/Source/Images/cpnet3/ntpdate.com deleted file mode 100644 index 2716d473..00000000 Binary files a/Source/Images/cpnet3/ntpdate.com and /dev/null differ diff --git a/Source/Images/cpnet3/nvram.com b/Source/Images/cpnet3/nvram.com deleted file mode 100644 index 63c509a4..00000000 Binary files a/Source/Images/cpnet3/nvram.com and /dev/null differ diff --git a/Source/Images/cpnet3/rdate.com b/Source/Images/cpnet3/rdate.com deleted file mode 100644 index 10cbfded..00000000 Binary files a/Source/Images/cpnet3/rdate.com and /dev/null differ diff --git a/Source/Images/cpnet3/rsxls.com b/Source/Images/cpnet3/rsxls.com deleted file mode 100644 index dadd9cd2..00000000 Binary files a/Source/Images/cpnet3/rsxls.com and /dev/null differ diff --git a/Source/Images/cpnet3/rsxrm.com b/Source/Images/cpnet3/rsxrm.com deleted file mode 100644 index 7b9a1804..00000000 Binary files a/Source/Images/cpnet3/rsxrm.com and /dev/null differ diff --git a/Source/Images/cpnet3/srvstat.com b/Source/Images/cpnet3/srvstat.com deleted file mode 100644 index 914b5b5f..00000000 Binary files a/Source/Images/cpnet3/srvstat.com and /dev/null differ diff --git a/Source/Images/cpnet3/tr.com b/Source/Images/cpnet3/tr.com deleted file mode 100644 index e9843305..00000000 Binary files a/Source/Images/cpnet3/tr.com and /dev/null differ diff --git a/Source/Images/cpnet3/wizcfg.com b/Source/Images/cpnet3/wizcfg.com deleted file mode 100644 index 491bca54..00000000 Binary files a/Source/Images/cpnet3/wizcfg.com and /dev/null differ diff --git a/Source/Images/cpnet3/wizdbg.com b/Source/Images/cpnet3/wizdbg.com deleted file mode 100644 index fa889a0b..00000000 Binary files a/Source/Images/cpnet3/wizdbg.com and /dev/null differ diff --git a/Source/Images/cpnet3/wiztest.com b/Source/Images/cpnet3/wiztest.com deleted file mode 100644 index d808e6c5..00000000 Binary files a/Source/Images/cpnet3/wiztest.com and /dev/null differ diff --git a/Source/Images/cpnet3/xsubnet.com b/Source/Images/cpnet3/xsubnet.com deleted file mode 100644 index da78ba84..00000000 Binary files a/Source/Images/cpnet3/xsubnet.com and /dev/null differ diff --git a/Source/Images/d_cowgol/Readme.txt b/Source/Images/d_cowgol/Readme.txt new file mode 100644 index 00000000..9ca93a51 --- /dev/null +++ b/Source/Images/d_cowgol/Readme.txt @@ -0,0 +1,45 @@ +===== Cowgol 2.0 for CP/M ===== + +This disk contains the Cowgol 2.0 compiler and related tools. +These files were provided by Ladislau Szilagyi and were sourced +from his GitHub repository at https://github.com/Laci1953/Cowgol_on_CP_M. + +The COWFE program included here is the RomWBW-specific version that +is tailored to RomWBW memory management. + +The primary distribution site for Cowgol 2.0 is at +https://github.com/davidgiven/cowgol. + +The Hi-Tech C compiler components were sourced from the updated +version by Tony Nicholson at https://github.com/agn453/HI-TECH-Z80-C. +However, the CPP.COM component was sourced from Ladislau Szilagyi's +enhanced Hi-Tech C at https://github.com/Laci1953/HiTech-C-compiler-enhanced. + +Note that only the minimum required Hi-Tech C compiler components +are provided. Additional components from Hi-Tech C may be required +depending on your needs. + +There are two example Cowgol applications included: + +- HEXDUMP is a simple hex dump utility and is purely a Cowgol + application (no assembler or C components). The command + line to build the application is: + + COWGOL HEXDUMP.COW + +- DYNMSORT demonstrates a sort algorithm and is composed of + Cowgol, C, and assembler components. The command line to + build the application is: + + COWGOL -LC DYNMSORT.COW MERGES.C RAND.AS + +There are also SUBMIT files provided to build the example +applications which can be used as follows: + + SUBMIT HEXDUMP + SUBMIT DYNMSORT + +-- WBW 12:38 PM 2/10/2024 + + + diff --git a/Source/Images/d_cowgol/u0/$EXEC.COM b/Source/Images/d_cowgol/u0/$EXEC.COM new file mode 100644 index 00000000..a6ae8f51 Binary files /dev/null and b/Source/Images/d_cowgol/u0/$EXEC.COM differ diff --git a/Source/Images/d_cowgol/u0/ARGV.COH b/Source/Images/d_cowgol/u0/ARGV.COH new file mode 100644 index 00000000..64429e99 --- /dev/null +++ b/Source/Images/d_cowgol/u0/ARGV.COH @@ -0,0 +1,48 @@ +var argv_pointer: [uint8]; + +sub ArgvInit() is + argv_pointer := 0x81 as [uint8]; + [argv_pointer + [0x80 as [uint8]] as intptr] := 0; +end sub; + +# Returns null is there's no next argument. +sub ArgvNext(): (arg: [uint8]) is + # No more arguments? + + if argv_pointer == (0 as [uint8]) then + arg := argv_pointer; + return; + end if; + + # Skip leading whitespace. + + var c: uint8; + loop + c := [argv_pointer]; + if c != ' ' then + break; + end if; + argv_pointer := argv_pointer + 1; + end loop; + + arg := argv_pointer; + + # Skip to end of word and terminate. + + loop + c := [argv_pointer]; + if (c == ' ') or (c == '\n') or (c == 0) then + break; + end if; + argv_pointer := argv_pointer + 1; + end loop; + [argv_pointer] := 0; + + if c == ' ' then + argv_pointer := argv_pointer + 1; + else + argv_pointer := 0 as [uint8]; + end if; +end sub; + + diff --git a/Source/Images/d_cowgol/u0/CGEN.COM b/Source/Images/d_cowgol/u0/CGEN.COM new file mode 100644 index 00000000..fb2e3777 Binary files /dev/null and b/Source/Images/d_cowgol/u0/CGEN.COM differ diff --git a/Source/Images/d_cowgol/u0/COMMFILE.COH b/Source/Images/d_cowgol/u0/COMMFILE.COH new file mode 100644 index 00000000..1293f598 --- /dev/null +++ b/Source/Images/d_cowgol/u0/COMMFILE.COH @@ -0,0 +1,27 @@ +sub FCBPutString(fcb: [FCB], s: [uint8]) is + loop + var c := [s]; + if c == 0 then + break; + end if; + FCBPutChar(fcb, c); + s := @next s; + end loop; +end sub; + +sub FCBGetBlock(fcb: [FCB], buffer: [uint8], length: intptr) is + while length != 0 loop; + [buffer] := FCBGetChar(fcb); + buffer := buffer + 1; + length := length - 1; + end loop; +end sub; + +sub FCBPutBlock(fcb: [FCB], buffer: [uint8], length: intptr) is + while length != 0 loop; + FCBPutChar(fcb, [buffer]); + buffer := buffer + 1; + length := length - 1; + end loop; +end sub; + diff --git a/Source/Images/d_cowgol/u0/COMMON.COH b/Source/Images/d_cowgol/u0/COMMON.COH new file mode 100644 index 00000000..a13a313e --- /dev/null +++ b/Source/Images/d_cowgol/u0/COMMON.COH @@ -0,0 +1,150 @@ +sub print(ptr: [uint8]) is + loop + var c := [ptr]; + if c == 0 then + return; + end if; + print_char(c); + ptr := ptr + 1; + end loop; +end sub; + +sub print_nl() is + print_char('\n'); +end sub; + +sub UIToA(value: uint32, base: uint8, buffer: [uint8]): (ptr: [uint8]) is + ptr := buffer; + loop + var rem := value % (base as uint32); + value := value / (base as uint32); + if rem < 10 then + rem := rem + '0'; + else + rem := rem + ('a' - 10); + end if; + [ptr] := rem as uint8; + ptr := @next ptr; + + if value == 0 then + break; + end if; + end loop; + + var s1 := buffer; + var s2 := @prev ptr; + while s2 > s1 loop + var c := [s1]; + [s1] := [s2]; + [s2] := c; + s1 := @next s1; + s2 := @prev s2; + end loop; + + [ptr] := 0; +end sub; + +sub IToA(value: int32, base: uint8, buffer: [uint8]): (ptr: [uint8]) is + if value < 0 then + [buffer] := '-'; + buffer := @next buffer; + value := -value; + end if; + ptr := UIToA(value as uint32, base, buffer); +end sub; + +sub print_i32(value: uint32) is + var buffer: uint8[12]; + var pe := UIToA(value, 10, &buffer[0]); + print(&buffer[0]); +end sub; + +sub print_i16(value: uint16) is + print_i32(value as uint32); +end sub; + +sub print_i8(value: uint8) is + print_i32(value as uint32); +end sub; + +sub print_hex_i8(value: uint8) is + var i: uint8 := 2; + loop + var digit := value >> 4; + if digit < 10 then + digit := digit + '0'; + else + digit := digit + ('a' - 10); + end if; + print_char(digit); + value := value << 4; + i := i - 1; + if i == 0 then + break; + end if; + end loop; +end sub; + +sub print_hex_i16(value: uint16) is + print_hex_i8((value >> 8) as uint8); + print_hex_i8(value as uint8); +end sub; + +sub print_hex_i32(value: uint32) is + print_hex_i8((value >> 24) as uint8); + print_hex_i8((value >> 16) as uint8); + print_hex_i8((value >> 8) as uint8); + print_hex_i8(value as uint8); +end sub; + +sub AToI(buffer: [uint8]): (result: int32, ptr: [uint8]) is + var negative: uint8 := 0; + var base: uint8 := 10; + ptr := buffer; + result := 0; + + var c := [ptr]; + if (c == '-') then + negative := 1; + ptr := ptr + 1; + c := [ptr]; + end if; + if (c == '0') then + case [ptr+1] is + when 'x': base := 16; + when 'o': base := 8; + when 'b': base := 2; + when 'd': base := 10; + + when else: ptr := ptr - 2; + end case; + ptr := ptr + 2; + c := [ptr]; + end if; + + loop + if c >= 'a' then + c := c - 'a' + 10; + elseif c >= 'A' then + c := c - 'A' + 10; + else + c := c - '0'; + end if; + if c >= (base as uint8) then + break; + end if; + result := (result * base as int32) + (c as int32); + + ptr := ptr + 1; + c := [ptr]; + end loop; + + if negative != 0 then + result := -result; + end if; +end sub; + +sub MemZero(ptr: [uint8], size: intptr) is + MemSet(ptr, 0, size); +end sub; + diff --git a/Source/Images/d_cowgol/u0/COWBE.COM b/Source/Images/d_cowgol/u0/COWBE.COM new file mode 100644 index 00000000..9c300253 Binary files /dev/null and b/Source/Images/d_cowgol/u0/COWBE.COM differ diff --git a/Source/Images/d_cowgol/u0/COWFE.COM b/Source/Images/d_cowgol/u0/COWFE.COM new file mode 100644 index 00000000..99ec272a Binary files /dev/null and b/Source/Images/d_cowgol/u0/COWFE.COM differ diff --git a/Source/Images/d_cowgol/u0/COWFIX.COM b/Source/Images/d_cowgol/u0/COWFIX.COM new file mode 100644 index 00000000..a294951e Binary files /dev/null and b/Source/Images/d_cowgol/u0/COWFIX.COM differ diff --git a/Source/Images/d_cowgol/u0/COWGOL.COH b/Source/Images/d_cowgol/u0/COWGOL.COH new file mode 100644 index 00000000..2e12ebdd --- /dev/null +++ b/Source/Images/d_cowgol/u0/COWGOL.COH @@ -0,0 +1,52 @@ +var LOMEM: [uint8]; +@asm "ld hl, LOMEM"; +@asm "ld (", LOMEM, "), hl"; + +var HIMEM: [uint8]; +@asm "ld hl, (6)"; +@asm "ld (", HIMEM, "), hl"; + +sub Exit() is + @asm "rst 0"; +end sub; + +sub ExitWithError() is + @asm "rst 0"; +end sub; + +sub AlignUp(in: intptr): (out: intptr) is + out := in; +end sub; + +sub get_char(): (c: uint8) is + @asm "ld c, 1"; + @asm "call 5"; + @asm "ld (", c, "), a"; +end sub; + +sub print_char(c: uint8) is + if c == 10 then + @asm "ld e, 13"; + @asm "ld c, 2"; + @asm "call 5"; + end if; + @asm "ld a, (", c, ")"; + @asm "ld e, a"; + @asm "ld c, 2"; + @asm "call 5"; +end sub; + +sub MemSet(buf: [uint8], byte: uint8, len: uint16) is + var bufend := buf + len; + loop + if buf == bufend then + return; + end if; + [buf] := byte; + buf := buf + 1; + end loop; +end sub; + +include "common.coh"; + + diff --git a/Source/Images/d_cowgol/u0/COWGOL.COM b/Source/Images/d_cowgol/u0/COWGOL.COM new file mode 100644 index 00000000..62242090 Binary files /dev/null and b/Source/Images/d_cowgol/u0/COWGOL.COM differ diff --git a/Source/Images/d_cowgol/u0/COWGOL.COO b/Source/Images/d_cowgol/u0/COWGOL.COO new file mode 100644 index 00000000..e32801f2 Binary files /dev/null and b/Source/Images/d_cowgol/u0/COWGOL.COO differ diff --git a/Source/Images/d_cowgol/u0/COWGOLC.COH b/Source/Images/d_cowgol/u0/COWGOLC.COH new file mode 100644 index 00000000..6b3ef2ef --- /dev/null +++ b/Source/Images/d_cowgol/u0/COWGOLC.COH @@ -0,0 +1,52 @@ +var LOMEM: [uint8]; +@asm "ld hl, __Hbss"; +@asm "ld (", LOMEM, "), hl"; + +var HIMEM: [uint8]; +@asm "ld hl, (6)"; +@asm "ld (", HIMEM, "), hl"; + +sub Exit() is + @asm "rst 0"; +end sub; + +sub ExitWithError() is + @asm "rst 0"; +end sub; + +sub AlignUp(in: intptr): (out: intptr) is + out := in; +end sub; + +sub get_char(): (c: uint8) is + @asm "ld c, 1"; + @asm "call 5"; + @asm "ld (", c, "), a"; +end sub; + +sub print_char(c: uint8) is + if c == 10 then + @asm "ld e, 13"; + @asm "ld c, 2"; + @asm "call 5"; + end if; + @asm "ld a, (", c, ")"; + @asm "ld e, a"; + @asm "ld c, 2"; + @asm "call 5"; +end sub; + +sub MemSet(buf: [uint8], byte: uint8, len: uint16) is + var bufend := buf + len; + loop + if buf == bufend then + return; + end if; + [buf] := byte; + buf := buf + 1; + end loop; +end sub; + +include "common.coh"; + + diff --git a/Source/Images/d_cowgol/u0/COWLINK.COM b/Source/Images/d_cowgol/u0/COWLINK.COM new file mode 100644 index 00000000..8a7b8040 Binary files /dev/null and b/Source/Images/d_cowgol/u0/COWLINK.COM differ diff --git a/Source/Images/d_cowgol/u0/CPP.COM b/Source/Images/d_cowgol/u0/CPP.COM new file mode 100644 index 00000000..cb1d70f2 Binary files /dev/null and b/Source/Images/d_cowgol/u0/CPP.COM differ diff --git a/Source/Images/d_cowgol/u0/DYNMSORT.COW b/Source/Images/d_cowgol/u0/DYNMSORT.COW new file mode 100644 index 00000000..217902f7 --- /dev/null +++ b/Source/Images/d_cowgol/u0/DYNMSORT.COW @@ -0,0 +1,78 @@ +################################ +# Cowgol program # +# # +# Sorting 1000 random integers # +# stored in a vector allocated # +# using Cowgol's Alloc # +# # +# calls: # +# assembler routine xrndseed # +# assembler routine xrnd # +# C routine mergeSort # +# # +# Ladislau Szilagyi, Nov. 2023 # +################################ + +include "cowgolc.coh"; +include "strings.coh"; +include "malloc.coh"; + +typedef intstring is [uint16]; + +var Unsorted: intstring; +var size: uint16 := 999; + +sub random(): (n: uint16) is + @asm "call _xrnd"; #calls assembler routine + @asm "ld (", n, "),hl"; +end sub; + +sub PrintArray(array: intstring) is + var i: uint16 := 0; + var p := array; + print("\r\nArray:\r\n"); + while i != 1000 loop + print_i16([p]); + print(","); + p := p + 2; + i := i + 1; + end loop; +end sub; + +sub PopulateArray(array: intstring) is + var i: uint16 := 0; + var p := array; + while i != 1000 loop + [p] := random(); + p := p + 2; + i := i + 1; + end loop; +end sub; + +sub RandSeed() is + @asm "call _xrndseed"; #calls assembler routine +end sub; + +sub MergeSort() is + print("\r\nSorting...\r\n"); + @asm "ld hl,(", size, ")"; + @asm "push hl"; # r on stack as param # 3 + @asm "ld hl,0"; + @asm "push hl"; # l on stack as param # 2 + @asm "ld hl,(", Unsorted, ")"; + @asm "push hl"; # vector addr on stack as param # 1 + @asm "call _mergeSort"; # calls C routine msort(int* array, int l, int r) + @asm "pop bc"; # drops C routine params + @asm "pop bc"; # drops C routine params + @asm "pop bc"; # drops C routine params +end sub; + +### start ### + +RandSeed(); +Unsorted := Alloc(2000) as intstring; +PopulateArray(Unsorted); +PrintArray(Unsorted); +MergeSort(); +PrintArray(Unsorted); # now is sorted ! +Exit(); diff --git a/Source/Images/d_cowgol/u0/DYNMSORT.SUB b/Source/Images/d_cowgol/u0/DYNMSORT.SUB new file mode 100644 index 00000000..a3d8ffa1 --- /dev/null +++ b/Source/Images/d_cowgol/u0/DYNMSORT.SUB @@ -0,0 +1,2 @@ +COWGOL -LC DYNMSORT.COW MERGES.C RAND.AS + \ No newline at end of file diff --git a/Source/Images/d_cowgol/u0/FILE.COH b/Source/Images/d_cowgol/u0/FILE.COH new file mode 100644 index 00000000..dd5f282e --- /dev/null +++ b/Source/Images/d_cowgol/u0/FILE.COH @@ -0,0 +1,200 @@ +# vim: ts=4 sw=4 et + +record CpmFCB is + dr: uint8; + f: uint8[11]; + ex: uint8; + s1: uint8; + s2: uint8; + rc: uint8; + d: uint8[16]; + cr: uint8; + r: uint16; + r2: uint8; +end record; + +record FCB is + bufferptr: uint8; # byte just read + dirty: uint8; + cpm: CpmFCB; + buffer: uint8[128]; +end record; + +sub file_i_init(fcb: [FCB], filename: [uint8]) is + sub fill(dest: [uint8], src: [uint8], len: uint8): (srcout: [uint8]) is + loop + var c := [src]; + if (c < 32) or (c == '.') then + c := ' '; + elseif (c == '*') then + c := '?'; + else + src := src + 1; + end if; + if (c >= 'a') and (c <= 'z') then + c := c - ('a' - 'A'); + end if; + [dest] := c; + dest := dest + 1; + + len := len - 1; + if len == 0 then + break; + end if; + end loop; + srcout := src; + end sub; + + MemSet(fcb as [uint8], 0, @bytesof FCB); + MemSet(&fcb.cpm.f[0] as [uint8], ' ', 11); + filename := fill(&fcb.cpm.f[0], filename, 8); + + var c: uint8; + loop + c := [filename]; + if (c < 32) or (c == '.') then + break; + end if; + filename := filename + 1; + end loop; + + if c == '.' then + filename := fill(&fcb.cpm.f[8], filename+1, 3); + end if; + + fcb.cpm.r := 0xffff; + fcb.bufferptr := 127; +end sub; + +sub fcb_i_gbpb(fcb: [FCB], c: uint8) is + var cpmfcb := &fcb.cpm; + var dma := &fcb.buffer[0]; + + @asm "ld c, 26"; # SET DMA + @asm "ld de, (", dma, ")"; + @asm "call 5"; + + @asm "ld a, (", c, ")"; + @asm "ld c, a"; + @asm "ld de, (", cpmfcb, ")"; + @asm "call 5"; +end sub; + +sub fcb_i_blockin(fcb: [FCB]) is + MemSet(&fcb.buffer[0], 0, 128); + fcb_i_gbpb(fcb, 33); # READ RANDOM + fcb.dirty := 0; +end sub; + +sub fcb_i_blockout(fcb: [FCB]) is + if fcb.dirty != 0 then + fcb_i_gbpb(fcb, 34); # WRITE RANDOM + fcb.dirty := 0; + end if; +end sub; + +sub fcb_i_changeblock(fcb: [FCB], newblock: uint16) is + if newblock != fcb.cpm.r then + fcb_i_blockout(fcb); + fcb.cpm.r := newblock; + fcb_i_blockin(fcb); + end if; +end sub; + +sub fcb_i_convert_a_to_error() is + @asm "cp 0xff"; + @asm "ld a, 0"; + @asm "ret nz"; + @asm "inc a"; +end sub; + +sub FCBOpenIn(fcb: [FCB], filename: [uint8]): (errno: uint8) is + file_i_init(fcb, filename); + + var cpmfcb := &fcb.cpm; + @asm "ld c, 15"; # OPEN_FILE + @asm "ld de, (", cpmfcb, ")"; + @asm "call 5"; + @asm "call", fcb_i_convert_a_to_error; + @asm "ld (", errno, "), a"; +end sub; + +sub FCBOpenUp(fcb: [FCB], filename: [uint8]): (errno: uint8) is + (errno) := FCBOpenIn(fcb, filename); +end sub; + +sub FCBOpenOut(fcb: [FCB], filename: [uint8]): (errno: uint8) is + file_i_init(fcb, filename); + + var cpmfcb := &fcb.cpm; + @asm "ld c, 19"; # DELETE_FILE + @asm "ld de, (", cpmfcb, ")"; + @asm "call 5"; + + @asm "ld c, 22"; # CREATE_FILE + @asm "ld de, (", cpmfcb, ")"; + @asm "call 5"; + @asm "call", fcb_i_convert_a_to_error; + @asm "ld (", errno, "), a"; +end sub; + +sub FCBClose(fcb: [FCB]): (errno: uint8) is + fcb_i_blockout(fcb); + + var cpmfcb := &fcb.cpm; + @asm "ld c, 16"; # CLOSE_FILE + @asm "ld de, (", cpmfcb, ")"; + @asm "call 5"; + @asm "call", fcb_i_convert_a_to_error; + @asm "ld (", errno, "), a"; +end sub; + +sub FCBSeek(fcb: [FCB], pos: uint32) is + pos := pos - 1; # seek to *previous* character + var newblock := (pos >> 7) as uint16; + var newptr := (pos as uint8) & 127; + fcb_i_changeblock(fcb, newblock); + fcb.bufferptr := newptr; +end sub; + +sub FCBPos(fcb: [FCB]): (pos: uint32) is + pos := (((fcb.cpm.r as uint32) << 7) | (fcb.bufferptr as uint32)) + 1; +end sub; + +sub FCBExt(fcb: [FCB]): (len: uint32) is + var oldblock := fcb.cpm.r; + var cpmfcb := &fcb.cpm; + + @asm "ld c, 16"; # CLOSE_FILE (actually flushing it to disk) + @asm "ld de, (", cpmfcb, ")"; + @asm "call 5"; + + @asm "ld c, 35"; # COMPUTE FILE SIZE + @asm "ld de, (", cpmfcb, ")"; + @asm "call 5"; + + len := ([&fcb.cpm.r as [uint32]] & 0x00ffffff) << 7; + fcb.cpm.r := oldblock; +end sub; + +sub fcb_i_nextchar(fcb: [FCB]) is + fcb.bufferptr := fcb.bufferptr + 1; + if fcb.bufferptr == 128 then + fcb_i_changeblock(fcb, fcb.cpm.r + 1); + fcb.bufferptr := 0; + end if; +end sub; + +sub FCBGetChar(fcb: [FCB]): (c: uint8) is + fcb_i_nextchar(fcb); + c := fcb.buffer[fcb.bufferptr]; +end sub; + +sub FCBPutChar(fcb: [FCB], c: uint8) is + fcb_i_nextchar(fcb); + fcb.buffer[fcb.bufferptr] := c; + fcb.dirty := 1; +end sub; + +include "commfile.coh"; + diff --git a/Source/Images/d_cowgol/u0/FILEIO.COH b/Source/Images/d_cowgol/u0/FILEIO.COH new file mode 100644 index 00000000..b4730f96 --- /dev/null +++ b/Source/Images/d_cowgol/u0/FILEIO.COH @@ -0,0 +1,121 @@ +const FCB_FLAG_ERROR := 1<<0; +const FCB_FLAG_READ := 1<<1; +const FCB_FLAG_WRITE := 1<<2; + +record FCB: RawFCB is + pos: uint32; + buflen: FCBIndexType; + index: FCBIndexType; + buffer: uint8[FCB_BUFFER_SIZE]; + flags: uint8; +end record; + +@decl sub FCBRawRead(fcb: [FCB], pos: uint32, len: FCBIndexType): (amount: FCBIndexType); +@decl sub FCBRawWrite(fcb: [FCB], pos: uint32, len: FCBIndexType); + +sub _fcb_init(fcb: [FCB]) is + fcb.pos := 0; + fcb.buflen := 0; + fcb.index := 0; + fcb.flags := 0; +end sub; + +sub _fcb_advance(fcb: [FCB]) is + fcb.index := fcb.index + 1; +end sub; + +sub _fcb_fillbuffer(fcb: [FCB]): (b: uint8) is + var bufpos := fcb.pos + (fcb.index as uint32); + fcb.buflen := FCBRawRead(fcb, bufpos, FCB_BUFFER_SIZE); + b := 0; + if (fcb.flags & FCB_FLAG_ERROR) != 0 then + return; + end if; + fcb.flags := FCB_FLAG_READ; + fcb.pos := bufpos; + fcb.index := 0; + if fcb.buflen != 0 then + b := fcb.buffer[0]; + _fcb_advance(fcb); + end if; +end sub; + +sub FCBFlush(fcb: [FCB]) is + var bufpos := fcb.pos; + if (fcb.flags & FCB_FLAG_WRITE) != 0 then + FCBRawWrite(fcb, bufpos, fcb.index); + if (fcb.flags & FCB_FLAG_ERROR) != 0 then + return; + end if; + end if; + fcb.pos := bufpos + (fcb.index as uint32); + fcb.flags := 0; + fcb.index := 0; + fcb.buflen := 0; +end sub; + +sub _fcb_flushbuffer(fcb: [FCB], b: uint8) is + FCBFlush(fcb); + if (fcb.flags & FCB_FLAG_ERROR) != 0 then + return; + end if; + fcb.flags := FCB_FLAG_WRITE; + fcb.buffer[0] := b; + _fcb_advance(fcb); +end sub; + +sub FCBGetChar(fcb: [FCB]): (b: uint8) is + if (fcb.flags & FCB_FLAG_WRITE) != 0 then + FCBFlush(fcb); + end if; + var i := fcb.index; + if i == fcb.buflen then + b := _fcb_fillbuffer(fcb); + else + b := fcb.buffer[i]; + _fcb_advance(fcb); + end if; +end sub; + +sub FCBPutChar(fcb: [FCB], b: uint8) is + if (fcb.flags & FCB_FLAG_READ) != 0 then + FCBFlush(fcb); + end if; + var i := fcb.index; + if i == FCB_BUFFER_SIZE then + _fcb_flushbuffer(fcb, b); + else + fcb.buffer[i] := b; + _fcb_advance(fcb); + end if; + fcb.flags := fcb.flags | FCB_FLAG_WRITE; +end sub; + +sub FCBPos(fcb: [FCB]): (pos: uint32) is + pos := fcb.pos + (fcb.index as uint32); +end sub; + +sub FCBError(fcb: [FCB]): (e: uint8) is + e := 0; + if (fcb.flags & FCB_FLAG_ERROR) != 0 then + e := 1; + end if; +end sub; + +sub FCBSeek(fcb: [FCB], pos: uint32) is + var delta := pos - fcb.pos; + if (fcb.flags & FCB_FLAG_READ) != 0 then + if delta < (fcb.buflen as uint32) then + fcb.index := delta as FCBIndexType; + return; + end if; + elseif (fcb.flags & FCB_FLAG_WRITE) != 0 then + if delta <= (fcb.index as uint32) then + fcb.index := delta as FCBIndexType; + return; + end if; + end if; + FCBFlush(fcb); + fcb.pos := pos; +end sub; + diff --git a/Source/Images/d_cowgol/u0/HEXDUMP.COW b/Source/Images/d_cowgol/u0/HEXDUMP.COW new file mode 100644 index 00000000..26ead1b1 --- /dev/null +++ b/Source/Images/d_cowgol/u0/HEXDUMP.COW @@ -0,0 +1,115 @@ +# +# Copyright (c) 2020 Brian Callahan +# +# Permission to use, copy, modify, and distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +# Clone of Unix hexdump -C +# Should work on all Cowgol systems + +include "stdcow.coh"; +include "argv.coh"; + +var InputFile: FCB; + +var addr: uint32; +var len: uint32; + +sub Hexdump() is + var buf: uint8[16]; + var i: uint8; + var j: uint8; + + print_hex_i32(addr); + print(" "); + + i := 0; + + loop + var c: uint8 := FCBGetChar(&InputFile); + + buf[i] := c; + print_hex_i8(c); + print(" "); + if i == 7 then + print(" "); + end if; + + i := i + 1; + len := len - 1; + + if len == 0 or i > 15 then + break; + end if; + end loop; + + addr := addr + (i as uint32); + + var k: uint8 := i; + if len == 0 then + if i < 8 then + print(" "); + end if; + + while i < 16 loop + print(" "); + buf[i] := ' '; + i := i + 1; + end loop; + end if; + + print(" |"); + + j := 0; + + while j < k loop + if buf[j] >= 0x20 and buf[j] <= 0x7e then + print_char(buf[j]); + else + print_char('.'); + end if; + + j := j + 1; + end loop; + + print("|\n"); +end sub; + +ArgvInit(); + +var FileName: [uint8] := ArgvNext(); + +if FileName == (0 as [uint8]) then + print("usage: hexdump file\n"); + ExitWithError(); +end if; + +if FCBOpenIn(&InputFile, FileName) != 0 then + print("hexdump: cannot open "); + print(FileName); + print("\n"); + ExitWithError(); +end if; + +addr := 0; +len := FCBExt(&InputFile); +while len > 0 loop + Hexdump(); +end loop; + +print_hex_i32(addr); +print("\n"); + +if FCBClose(&InputFile) != 0 then + ExitWithError(); +end if; diff --git a/Source/Images/d_cowgol/u0/HEXDUMP.SUB b/Source/Images/d_cowgol/u0/HEXDUMP.SUB new file mode 100644 index 00000000..a6915dc9 --- /dev/null +++ b/Source/Images/d_cowgol/u0/HEXDUMP.SUB @@ -0,0 +1,2 @@ +COWGOL HEXDUMP.COW + \ No newline at end of file diff --git a/Source/Images/d_cowgol/u0/LIBC.LIB b/Source/Images/d_cowgol/u0/LIBC.LIB new file mode 100644 index 00000000..f31ad7bc Binary files /dev/null and b/Source/Images/d_cowgol/u0/LIBC.LIB differ diff --git a/Source/Images/d_cowgol/u0/LINK.COM b/Source/Images/d_cowgol/u0/LINK.COM new file mode 100644 index 00000000..6208ba53 Binary files /dev/null and b/Source/Images/d_cowgol/u0/LINK.COM differ diff --git a/Source/Images/d_cowgol/u0/MALLOC.COH b/Source/Images/d_cowgol/u0/MALLOC.COH new file mode 100644 index 00000000..5b36f5d5 --- /dev/null +++ b/Source/Images/d_cowgol/u0/MALLOC.COH @@ -0,0 +1,237 @@ +record MallocFreeBlock is + next: [MallocFreeBlock]; + size: intptr; # bytes +end record; + +record MallocUsedBlock is + size: intptr; # bytes +end record; + +var freeList: [MallocFreeBlock] := LOMEM as [MallocFreeBlock]; +freeList.next := 0 as [MallocFreeBlock]; +freeList.size := HIMEM - LOMEM; + +sub DumpBlocks() is + var p := freeList; + var bytes: intptr := 0; + print("* freelist: "); + print_hex_i32(p as intptr as uint32); + print_nl(); + while p != (0 as [MallocFreeBlock]) loop + print("* block @"); + print_hex_i32(p as intptr as uint32); + print("+"); + print_hex_i32(p.size as intptr as uint32); + print("="); + print_hex_i32((p+p.size) as intptr as uint32); + print(" -> "); + print_hex_i32(p.next as intptr as uint32); + print_nl(); + + bytes := bytes + p.size; + p := p.next; + end loop; + print("* free bytes: "); + print_i32(bytes as intptr as uint32); + print_nl(); + print_nl(); +end sub; + +sub CheckMemoryChain() is + var p := freeList; + while p != (0 as [MallocFreeBlock]) loop + var next := p.next; + if next == (0 as [MallocFreeBlock]) then + break; + end if; + if next <= p then + DumpBlocks(); + print("bad chain: block "); + print_hex_i32(p as intptr as uint32); + print(" points at prior block "); + print_hex_i32(next as intptr as uint32); + print_nl(); + ExitWithError(); + end if; + + p := p.next; + end loop; +end sub; + +sub RawAlloc(length: intptr): (block: [uint8]) is + var totallength := AlignUp(length + @bytesof MallocUsedBlock); + if totallength < @bytesof MallocFreeBlock then + totallength := @bytesof MallocFreeBlock; + end if; + + # Make sure everything's rounded to 8 bytes to try and reduce + # fragmentation. + totallength := (totallength + 7) & ~7; + + # Fragmentation is a killer on small systems, so we use best fit. + + var p := freeList; + var prev: [MallocFreeBlock] := 0 as [MallocFreeBlock]; + var candidate: [MallocFreeBlock] := 0 as [MallocFreeBlock]; + var cprev: [MallocFreeBlock] := 0 as [MallocFreeBlock]; + var csize: intptr := -1; + + # Try to find the smallest block which will fit. + while p != (0 as [MallocFreeBlock]) loop + var s := p.size; + if (s >= totallength) and (s < csize) then + candidate := p; + csize := s; + cprev := prev; + if csize == totallength then + # This is an exact fit. We can't do better than this, so stop here. + break; + end if; + end if; + prev := p; + p := p.next; + end loop; + if candidate == (0 as [MallocFreeBlock]) then + # Nothing was found. + block := 0 as [uint8]; + return; + end if; + + var delta := csize - totallength; + if delta < @bytesof MallocFreeBlock then + # Consume the entire block. + if cprev != (0 as [MallocFreeBlock]) then + cprev.next := candidate.next; + else + freeList := candidate.next; + end if; + totallength := csize; + else + # We found a hole bigger than we need. We shrink the hole and return + # what's left. + candidate.size := delta; + candidate := candidate + candidate.size; + end if; + + #print("malloc "); + #print_hex_i32(candidate as intptr as uint32); + #print("+"); + #print_hex_i32(totallength as uint32); + #print_nl(); + + var usedblock := candidate as [MallocUsedBlock]; + usedblock.size := totallength; + block := (@next usedblock) as [uint8]; + + #print("malloc "); + #print_hex_i32(block as intptr as uint32); + #print("+"); + #print_hex_i32(length as uint32); + #print_nl(); + + MemSet(block, 0, totallength - @bytesof MallocUsedBlock); + #CheckMemoryChain(); +end sub; + +sub Alloc(length: intptr): (block: [uint8]) is + block := RawAlloc(length); + if block == (0 as [uint8]) then + print("Out of memory"); + ExitWithError(); + end if; +end sub; + +sub AddFreeBlock(start: [uint8], length: intptr) is + #print("free "); + #print_hex_i32(start as intptr as uint32); + #print("+"); + #print_hex_i32(length as uint32); + #print_nl(); + + MemSet(start, 0xaa, length); + + var h := start as [MallocFreeBlock]; + h.size := length; + + # freeList points at an ordered list of free blocks. First, we run + # through the list until we find the last block *before* this one. + + var p := freeList; + if h < p then + # Special case: the new block will become the new *first* block. + + if (h + h.size) == p then + h.size := length + p.size; + h.next := p.next; + else + h.next := p; + end if; + freeList := h; + else + # Otherwise, work through the list and find the block immediately + # preceding the one we're going to insert. + + loop + # Is this the last block? + + if p.next == (0 as [MallocFreeBlock]) then + # Insert the new block after it. + + p.next := h; + h.next := 0 as [MallocFreeBlock]; + break; + end if; + + # We know that h cannot be before p, so if h is before the + # *next* block, then this must be the block preceding it. + + if h < p.next then + # Try to merge the next block onto the end of h. + + if (h + length) == p.next then + h.size := length + p.next.size; + h.next := p.next.next; + else + h.next := p.next; + end if; + p.next := h; + break; + end if; + + p := p.next; + end loop; + + # p now points at the preceding block. Try to merge h onto the + # end of it. + + if (p + p.size) == h then + p.size := p.size + h.size; + p.next := h.next; + end if; + end if; + + #CheckMemoryChain(); +end sub; + +sub Free(start: [uint8]) is + if start != (0 as [uint8]) then + var usedblock := @prev (start as [MallocUsedBlock]); + AddFreeBlock(usedblock as [uint8], usedblock.size); + end if; +end sub; + +sub GetFreeMemory(): (bytes: intptr) is + bytes := 0; + var p := freeList; + while p != (0 as [MallocFreeBlock]) loop + bytes := bytes + p.size; + p := p.next; + end loop; +end sub; + +sub StrDup(s: [uint8]): (news: [uint8]) is + var len := StrLen(s) + 1; + news := Alloc(len); + MemCopy(s, len, news); +end sub; + diff --git a/Source/Images/d_cowgol/u0/MERGES.C b/Source/Images/d_cowgol/u0/MERGES.C new file mode 100644 index 00000000..9eca23bc --- /dev/null +++ b/Source/Images/d_cowgol/u0/MERGES.C @@ -0,0 +1,78 @@ + +int L[500], R[500]; + +// Merges two subarrays of arr[]. +// First subarray is arr[l..m] +// Second subarray is arr[m+1..r] +void merge(int arr[], int l, int m, int r) +{ + int i, j, k; + int n1 = m - l + 1; + int n2 = r - m; + + // Copy data to temp arrays L[] and R[] + for (i = 0; i < n1; i++) + L[i] = arr[l + i]; + + for (j = 0; j < n2; j++) + R[j] = arr[m + 1 + j]; + + // Merge the temp arrays back into arr[l..r + i = 0; + j = 0; + k = l; + + while (i < n1 && j < n2) + { + if (L[i] <= R[j]) + { + arr[k] = L[i]; + i++; + } + else + { + arr[k] = R[j]; + j++; + } + + k++; + } + + // Copy the remaining elements of L[], + // if there are any + while (i < n1) + { + arr[k] = L[i]; + i++; + k++; + } + + // Copy the remaining elements of R[], + // if there are any + while (j < n2) + { + arr[k] = R[j]; + j++; + k++; + } +} + +// l is for left index and r is right index of the +// sub-array of arr to be sorted +// first call with l = 0, r = sizeof(arr) - 1 +void mergeSort(int arr[], int l, int r) +{ + int m; + + if (l < r) + { + m = l + (r - l) / 2; + + // Sort first and second halves + mergeSort(arr, l, m); + mergeSort(arr, m + 1, r); + + merge(arr, l, m, r); + } +} + \ No newline at end of file diff --git a/Source/Images/d_cowgol/u0/OPTIM.COM b/Source/Images/d_cowgol/u0/OPTIM.COM new file mode 100644 index 00000000..fcfcf04e Binary files /dev/null and b/Source/Images/d_cowgol/u0/OPTIM.COM differ diff --git a/Source/Images/d_cowgol/u0/P1.COM b/Source/Images/d_cowgol/u0/P1.COM new file mode 100644 index 00000000..5caf0c6e Binary files /dev/null and b/Source/Images/d_cowgol/u0/P1.COM differ diff --git a/Source/Images/d_cowgol/u0/RAND.AS b/Source/Images/d_cowgol/u0/RAND.AS new file mode 100644 index 00000000..9051ede7 --- /dev/null +++ b/Source/Images/d_cowgol/u0/RAND.AS @@ -0,0 +1,52 @@ +; Xorshift is a class of pseudorandom number generators discovered +; by George Marsaglia and detailed in his 2003 paper, Xorshift RNGs. +; +; 16-bit xorshift pseudorandom number generator by John Metcalf +; returns hl = pseudorandom number +; corrupts a + +; generates 16-bit pseudorandom numbers with a period of 65535 +; using the xorshift method: + +; hl ^= hl << 7 +; hl ^= hl >> 9 +; hl ^= hl << 8 + +; some alternative shift triplets which also perform well are: +; 6, 7, 13; 7, 9, 13; 9, 7, 13. + + psect text + + GLOBAL _xrnd, _xrndseed + +_xrnd: + ld hl,1 ; seed must not be 0 + ld a,h + rra + ld a,l + rra + xor h + ld h,a + ld a,l + rra + ld a,h + rra + xor l + ld l,a + xor h + ld h,a + ld (_xrnd+1),hl + res 7,h ;make-it positive... + ret + +_xrndseed: + ld a,r + ld l,a + ld a,r + ld h,a + or l ; HL must be not NULL + jr nz,1f + inc hl +1: + ld (_xrnd+1),hl + ret diff --git a/Source/Images/d_cowgol/u0/STDCOW.COH b/Source/Images/d_cowgol/u0/STDCOW.COH new file mode 100644 index 00000000..e539a9f5 --- /dev/null +++ b/Source/Images/d_cowgol/u0/STDCOW.COH @@ -0,0 +1,91 @@ +# +# Copyright (c) 2020 Brian Callahan +# +# Permission to use, copy, modify, and distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +# Cowgol standard library + +# Uncomment these if you'd like to abstract the includes away. +include "cowgol.coh"; +include "file.coh"; +include "strings.coh"; +include "malloc.coh"; + +# Print a properly formatted 8-bit hex number to a file. +sub FCBPutHex8(fcb: [FCB], number: uint8) is + var i: uint8 := 0; + var nibble: uint8; + + while i < 2 loop + nibble := number >> 4; + + if nibble < 10 then + nibble := nibble + '0'; + else + nibble := nibble + ('A' - 10); + end if; + + FCBPutChar(fcb, nibble); + + number := number << 4; + + i := i + 1; + end loop; +end sub; + +# Print a properly formatted 16-bit hex number to a file. +sub FCBPutHex16(fcb: [FCB], number: uint16) is + FCBPutHex8(fcb, ((number >> 8) as uint8)); + FCBPutHex8(fcb, (number as uint8)); +end sub; + +# Print a properly formatted 32-bit hex number to a file. +sub FCBPutHex32(fcb: [FCB], number: uint32) is + FCBPutHex16(fcb, ((number >> 16) as uint16)); + FCBPutHex16(fcb, (number as uint16)); +end sub; + +# Print a signed 32-bit integer to the console. +sub print_d32(value: int32) is + var buffer: uint8[12]; + var pe := IToA(value, 10, &buffer[0]); + print(&buffer[0]); +end sub; + +# Read in a string. +sub GetString(): (s: [uint8]) is + var temp: uint8[256]; + var c: uint8; + var i: uint8 := 0; + + while i < 255 loop + c := get_char(); + if c == 10 or c == 13 then + break; + end if; + + temp[i] := c; + + i := i + 1; + end loop; + temp[i] := 0; + + if i == 0 then + s := (0 as [uint8]); + return; + end if; + + s := Alloc(((i + 1) as intptr)); + CopyString(&temp[0], s); +end sub; diff --git a/Source/Images/d_cowgol/u0/STRINGS.COH b/Source/Images/d_cowgol/u0/STRINGS.COH new file mode 100644 index 00000000..046e07ec --- /dev/null +++ b/Source/Images/d_cowgol/u0/STRINGS.COH @@ -0,0 +1,63 @@ +sub StrCmp(s1: [uint8], s2: [uint8]): (res: int8) is + loop + res := ([s1] - [s2]) as int8; + if (res != 0) or ([s1] == 0) then + break; + end if; + s1 := s1 + 1; + s2 := s2 + 1; + end loop; +end sub; + +sub ToLower(c: uint8): (cc: uint8) is + if (c >= 'A') and (c <= 'Z') then + cc := c | 32; + else + cc := c; + end if; +end sub; + +sub StrICmp(s1: [uint8], s2: [uint8]): (res: int8) is + loop + res := (ToLower([s1]) - ToLower([s2])) as int8; + if (res != 0) or ([s1] == 0) then + break; + end if; + s1 := s1 + 1; + s2 := s2 + 1; + end loop; +end sub; + +sub StrLen(s: [uint8]): (size: intptr) is + var p := s; + loop + var c := [p]; + if c == 0 then + break; + end if; + p := p + 1; + end loop; + size := p - s; +end sub; + +sub CopyString(src: [uint8], dest: [uint8]) is + loop + var c := [src]; + [dest] := c; + src := src + 1; + dest := dest + 1; + if c == 0 then + break; + end if; + end loop; +end sub; + +sub MemCopy(src: [uint8], size: intptr, dest: [uint8]) is + while size != 0 loop + [dest] := [src]; + dest := dest + 1; + src := src + 1; + size := size - 1; + end loop; +end sub; + diff --git a/Source/Images/d_cowgol/u0/Z80AS.COM b/Source/Images/d_cowgol/u0/Z80AS.COM new file mode 100644 index 00000000..21a2dd69 Binary files /dev/null and b/Source/Images/d_cowgol/u0/Z80AS.COM differ diff --git a/Source/Images/d_nzcom/ReadMe.txt b/Source/Images/d_nzcom/ReadMe.txt index 5ba7e09a..15d11f7e 100644 --- a/Source/Images/d_nzcom/ReadMe.txt +++ b/Source/Images/d_nzcom/ReadMe.txt @@ -51,8 +51,10 @@ done to create a minimal ready-to-run setup for RomWBW: - Extract VT100 TCAP from Z3TCAP.LBR and saved it as TCAP.Z3T. - Created PROFILE.SUB to launch NZCOM at startup. - Created empty STARTZCM.COM. - - TCSELECT.COM was removed because a later version is provided + - Original TCSELECT.COM was removed and replaced with a newer version from the Z3 files. + - TCAP.LBR and Z3TCAP.TCP were removed and replaced with + Z3TCAP.LBR from new TCSELECT distribution. - Z3LOC.COM and LBREXT.COM were removed because more recent versions are provided from Common files. - Replaced ZRDOS with ZSDOS in NZCOM.LBR. The standalone @@ -318,4 +320,4 @@ in this user area for more information. N.B., at a minimum, some of the files in this user area must be copied to user area 0 for CP/NET to work properly. --- WBW 3:20 PM 8/27/2021 \ No newline at end of file +-- WBW 11:19 AM 1/22/2024 \ No newline at end of file diff --git a/Source/Images/d_nzcom/u0/TCAP.LBR b/Source/Images/d_nzcom/u0/TCAP.LBR deleted file mode 100644 index 9a3fd9c5..00000000 Binary files a/Source/Images/d_nzcom/u0/TCAP.LBR and /dev/null differ diff --git a/Source/Images/d_nzcom/u0/Z3TCAP.TCP b/Source/Images/d_nzcom/u0/Z3TCAP.TCP deleted file mode 100644 index 07adc281..00000000 Binary files a/Source/Images/d_nzcom/u0/Z3TCAP.TCP and /dev/null differ diff --git a/Source/Images/diskdefs b/Source/Images/diskdefs index f29deca1..3e8c5970 100644 --- a/Source/Images/diskdefs +++ b/Source/Images/diskdefs @@ -271,9 +271,9 @@ diskdef interak os 2.2 end -# RomWBW 256KB ROM (128KB reserved, 128KB ROM Disk) +# RomWBW 128KB ROM Disk -diskdef wbw_rom256 +diskdef wbw_rom128 seclen 512 tracks 4 sectrk 64 @@ -284,24 +284,11 @@ diskdef wbw_rom256 os 2.2 end -# RomWBW 512KB ROM (128KB reserved, 384KB ROM Disk) - -diskdef wbw_rom512 - seclen 512 - tracks 12 - sectrk 64 - blocksize 2048 - maxdir 256 - skew 0 - boottrk 0 - os 2.2 -end - -# RomWBW 1024KB ROM (128KB reserved, 896KB ROM Disk) +# RomWBW 256KB ROM Disk -diskdef wbw_rom1024 +diskdef wbw_rom256 seclen 512 - tracks 28 + tracks 8 sectrk 64 blocksize 2048 maxdir 256 @@ -310,11 +297,11 @@ diskdef wbw_rom1024 os 2.2 end -# RomWBW 512KB RAM (256KB reserved, 256KB RAM Disk) +# RomWBW 384KB ROM Disk -diskdef wbw_ram512 +diskdef wbw_rom384 seclen 512 - tracks 8 + tracks 12 sectrk 64 blocksize 2048 maxdir 256 @@ -323,11 +310,11 @@ diskdef wbw_ram512 os 2.2 end -# RomWBW 1024KB RAM (256KB reserved, 768KB RAM Disk) +# RomWBW 896KB ROM Disk -diskdef wbw_ram1024 +diskdef wbw_rom896 seclen 512 - tracks 24 + tracks 28 sectrk 64 blocksize 2048 maxdir 256 diff --git a/Source/Images/hd_cpm22.txt b/Source/Images/hd_cpm22.txt index df9188ed..22f43a66 100644 --- a/Source/Images/hd_cpm22.txt +++ b/Source/Images/hd_cpm22.txt @@ -44,7 +44,8 @@ Test/*.* 2: # # Add CPNET client files # -cpnet12/*.* 4: +../../Binary/CPNET/cpn12*.lbr 4: +../../Binary/CPNET/ReadMe.txt 4: # # Add OS image # diff --git a/Source/Images/hd_cpm3.txt b/Source/Images/hd_cpm3.txt index 79d48e2a..60baad02 100644 --- a/Source/Images/hd_cpm3.txt +++ b/Source/Images/hd_cpm3.txt @@ -60,7 +60,8 @@ Test/*.* 2: # # Add CPNET client files # -cpnet3/*.* 4: +../../Binary/CPNET/cpn3*.lbr 4: +../../Binary/CPNET/ReadMe.txt 4: # # Add Common Applications # diff --git a/Source/Makefile b/Source/Makefile index 5326d231..ea0bd77f 100644 --- a/Source/Makefile +++ b/Source/Makefile @@ -25,6 +25,7 @@ shared: $(MAKE) --directory ZSDOS $(ACTION) $(MAKE) --directory CPM3 $(ACTION) $(MAKE) --directory ZPM3 $(ACTION) + $(MAKE) --directory CPNET $(ACTION) $(MAKE) --directory pSys $(ACTION) $(MAKE) --directory Apps $(ACTION) $(MAKE) --directory Forth $(ACTION) diff --git a/Source/Prop/Spin/AnsiTerm.spin b/Source/Prop/Spin/AnsiTerm.spin index 5799c987..3d178878 100644 --- a/Source/Prop/Spin/AnsiTerm.spin +++ b/Source/Prop/Spin/AnsiTerm.spin @@ -15,11 +15,11 @@ CON cols = 80 ' screen columns rows = 30 ' screen rows chars = rows * cols ' screen characters - termRows = 25 ' rows in terminal area + termRows = rows - 1 ' rows in terminal area termChars = termRows * cols ' characters in terminal area termLastRow = termChars - cols ' buffer pos of first char in last term row statArea = termChars ' starting position of status area - statRows = rows - TermRows ' status area rows + statRows = 1 ' status area rows blank = $20 spkVol = 75 @@ -46,6 +46,7 @@ VAR long vgaBasePin word curAttr ' active attribute value word bold, underscore, blink, reverse, fg, bg + word alt ' alt char set active DAT @@ -81,6 +82,7 @@ PUB start(BasePin) | i, char reverse := 0 fg := 0 bg := 0 + alt := 0 setMode(0) ' reset attributes PUB vidOn @@ -174,6 +176,10 @@ PRI clsTerm PRI outc(c) + if (alt == 1) + if ((c => $5F) and (c < $7F)) + c := c - $5F + screen[pos++] := (curAttr | c) lastc := c @@ -400,11 +406,11 @@ PRI ansi(c) | x, defVal x += cols "K": - if arg0 == -1 + if ((arg0 == -1) or (arg0 == 0)) clEOL(pos) - elseif arg0 == 1 + elseif (arg0 == 1) clBOL(pos) - else + elseif (arg0 == 2) clEOL(pos - (pos // cols)) "L": @@ -563,6 +569,11 @@ PUB processChar(c) return 5: ' Set character set (not implemented) + if (c == "0") + alt := 1 + if (c == "B") + alt := 0 + state := 0 return diff --git a/Source/Prop/Spin/ParPortProp.spin b/Source/Prop/Spin/ParPortProp.spin index b5238e79..a9955d13 100644 --- a/Source/Prop/Spin/ParPortProp.spin +++ b/Source/Prop/Spin/ParPortProp.spin @@ -3,8 +3,8 @@ ************************************ * ParPortProp for RomWBW * * Interface to RBC ParPortProp * - * Version 0.97 * - * May 9, 2020 * + * Version 0.98 * + * January 20, 2024 * ************************************ Wayne Warthen @@ -30,24 +30,24 @@ 2018-03-11 WBW: Implement character attributes 2020-05-09 WBW: Switch monitor refresh to 60Hz + 2024-01-20 WBW: Add graphics char selection to AnsiTerm }} CON - VERSION = (((0 << 8) + 97) << 16) + 0 + VERSION = (((0 << 8) + 98) << 16) + 0 _CLKMODE = XTAL1 + PLL16X _XINFREQ = 5_000_000 - + 'SLEEP = 60 * 5 ' Screen saver timeout in seconds SLEEP = 0 ' Zero for no screen saver VGA_BASE = 16 ' VGA Video pins 16-23 (??) KBD_BASE = 14 ' PS/2 Keyboard pins 14-15 (DATA, CLK) SD_BASE = 24 ' SD Card pins 24-27 (DO, CLK, DI, CS) - - STAT_ATTR1 = %00110000_00000000 ' Status area screen attribute (first line) - STAT_ATTR = %01110000_00000000 ' Status area screen attribute + + STAT_ATTR = %00110000_00000000 ' Status area screen attribute (first line) PPI_CMD = $0100 ' pin 8, PC0, active ??? PPI_STB = $0200 ' pin 9, PC4, active low @@ -143,19 +143,16 @@ PUB main | tmp dsp.cls MsgNewLine - dsp.VidOn + dsp.vidOn statRows := (dsp.statInfo >> 8) & $FF statCols := dsp.statInfo & $FF dsp.statFill(0, 0, STAT_ATTR, $20, statRows * statCols) - dsp.statFill(0, 0, STAT_ATTR1, $20, statCols) - dsp.statStr(0, 1, STAT_ATTR1, @strROM) - dsp.statStr(0, (statCols - strsize(@strHW)) / 2, STAT_ATTR1, @strHW) - dsp.statStr(0, (statCols - strsize(@strVer) - 1), STAT_ATTR1, @strVer) - - 'dsp.statStr(2, (statCols - 20) / 2, STAT_ATTR, string("<<< Message Area >>>")) + dsp.statStr(0, 1, STAT_ATTR, @strROM) + dsp.statStr(0, (statCols - strsize(@strHW)) / 2, STAT_ATTR, @strHW) + dsp.statStr(0, (statCols - strsize(@strVer) - 1), STAT_ATTR, @strVer) MsgStr(string("Initializing ParPortProp...")) @@ -221,7 +218,7 @@ PUB main | tmp else MsgStr(string(" OK")) MsgNewLine - + dsp.beep MsgStr(string("ParPortProp Ready!")) @@ -610,7 +607,7 @@ PRI Activity DAT -strVer byte "F/W v0.97",0 +strVer byte "F/W v0.98",0 strHW byte "ParPortProp",0 strROM byte "RomWBW",0 diff --git a/Source/Prop/Spin/PropIO.spin b/Source/Prop/Spin/PropIO.spin index 9e074fe0..57d0dce7 100644 --- a/Source/Prop/Spin/PropIO.spin +++ b/Source/Prop/Spin/PropIO.spin @@ -3,9 +3,9 @@ ******************************* * PropIO for RomWBW * * Interface to RBC PropIO * - * Version 0.97 * - * May 9, 2020 * - ******************************* + * Version 0.98 * + * January 20, 2024 * + ********************************* Wayne Warthen wwarthen@gmail.com @@ -35,11 +35,12 @@ 2015-11-15 WBW: Added SD card capacity reporting 2018-03-11 WBW: Implement character attributes 2020-05-09 WBW: Switch monitor refresh to 60Hz + 2024-01-20 WBW: Add graphics char selection to AnsiTerm }} CON - VERSION = (((0 << 8) + 97) << 16) + 0 + VERSION = (((0 << 8) + 98) << 16) + 0 _CLKMODE = XTAL1 + PLL16X _XINFREQ = 5_000_000 @@ -50,9 +51,8 @@ CON VGA_BASE = 16 ' VGA Video pins 16-23 (??) KBD_BASE = 14 ' PS/2 Keyboard pins 14-15 (DATA, CLK) SD_BASE = 24 ' SD Card pins 24-27 (DO, CLK, DI, CS) - - STAT_ATTR1 = %00110000_00000000 ' Status area screen attribute (first line) - STAT_ATTR = %01110000_00000000 ' Status area screen attribute + + STAT_ATTR = %00110000_00000000 ' Status area screen attribute (first line) DSKCMD_NOP = $00 DSKCMD_STATUS = $01 @@ -78,10 +78,7 @@ CON TRMST_ACTMASK = (TRMST_KBDACT | TRMST_DSPACT) ' bit mask for kbd or dsp active - - OBJ - 'dsp : "VGA_1024" ' VGA Terminal Driver dsp : "AnsiTerm" ' VGA Terminal Driver kbd : "Keyboard" ' PS/2 Keyboard Driver sdc : "safe_spi" ' SD Card Driver @@ -101,7 +98,7 @@ VAR long TimerCount long DiskResult long CardType - + byte statRows byte statCols @@ -122,20 +119,17 @@ PUB main dsp.cls MsgNewLine - dsp.VidOn + dsp.vidOn statRows := (dsp.statInfo >> 8) & $FF statCols := dsp.statInfo & $FF dsp.statFill(0, 0, STAT_ATTR, $20, statRows * statCols) - dsp.statFill(0, 0, STAT_ATTR1, $20, statCols) - dsp.statStr(0, 1, STAT_ATTR1, @strROM) - dsp.statStr(0, (statCols - strsize(@strHW)) / 2, STAT_ATTR1, @strHW) - dsp.statStr(0, (statCols - strsize(@strVer) - 1), STAT_ATTR1, @strVer) + dsp.statStr(0, 1, STAT_ATTR, @strROM) + dsp.statStr(0, (statCols - strsize(@strHW)) / 2, STAT_ATTR, @strHW) + dsp.statStr(0, (statCols - strsize(@strVer) - 1), STAT_ATTR, @strVer) - 'dsp.statStr(2, (statCols - 20) / 2, STAT_ATTR, string("<<< Message Area >>>")) - MsgStr(string("Initializing PropIO...")) TermStatKbdAdr := @TermStatKbd @@ -185,10 +179,12 @@ PUB main else MsgStr(string(" OK")) MsgNewLine + + dsp.beep MsgStr(string("PropIO Ready!")) MsgNewLine - + repeat if (DiskStat & DSKST_ACT) ProcessDiskCmd @@ -315,13 +311,13 @@ PRI Timer waitcnt(clkfreq * 1 + cnt) if (TimerCount > 0) if (TimerCount == 1) - dsp.VidOff + dsp.vidOff TimerCount-- PRI Activity if (SLEEP > 0) if (TimerCount == 0) - dsp.VidOn + dsp.vidOn TimerCount := SLEEP { @@ -338,18 +334,18 @@ PRI DumpBuffer(Buffer) | i, j DAT -strVer byte "F/W v0.97",0 +strVer byte "F/W v0.98",0 strHW byte "PropIO",0 strROM byte "RomWBW",0 {{ Ports - +------/WAIT - |+-----/RD + +------ CLR + |+----- /RD ||+---- A1 |||+--- A0 - ||||+--/CS + ||||+-- /CS ||||| ||||| P15..P0 --> xxxxxxxx_xxxxxxxx diff --git a/Source/Prop/Spin/PropIO2.spin b/Source/Prop/Spin/PropIO2.spin index ad1592f7..a62e5cf0 100644 --- a/Source/Prop/Spin/PropIO2.spin +++ b/Source/Prop/Spin/PropIO2.spin @@ -3,8 +3,8 @@ ********************************* * PropIO 2 for RomWBW * * Interface to RBC PropIO 2 * - * Version 0.97 * - * May 9, 2020 * + * Version 0.98 * + * January 20, 2024 * ********************************* Wayne Warthen @@ -35,11 +35,12 @@ 2015-11-15 WBW: Added SD card capacity reporting 2018-03-11 WBW: Implement character attributes 2020-05-09 WBW: Switch monitor refresh to 60Hz + 2024-01-20 WBW: Add graphics char selection to AnsiTerm }} CON - VERSION = (((0 << 8) + 97) << 16) + 0 + VERSION = (((0 << 8) + 98) << 16) + 0 _CLKMODE = XTAL1 + PLL16X _XINFREQ = 5_000_000 @@ -51,8 +52,7 @@ CON KBD_BASE = 14 ' PS/2 Keyboard pins 14-15 (DATA, CLK) SD_BASE = 24 ' SD Card pins 24-27 (DO, CLK, DI, CS) - STAT_ATTR1 = %00110000_00000000 ' Status area screen attribute (first line) - STAT_ATTR = %01110000_00000000 ' Status area screen attribute + STAT_ATTR = %00110000_00000000 ' Status area screen attribute (first line) DSKCMD_NOP = $00 DSKCMD_STATUS = $01 @@ -79,7 +79,6 @@ CON TRMST_ACTMASK = (TRMST_KBDACT | TRMST_DSPACT) ' bit mask for kbd or dsp active OBJ - 'dsp : "VGA_1024" ' VGA Terminal Driver dsp : "AnsiTerm" ' VGA Terminal Driver kbd : "Keyboard" ' PS/2 Keyboard Driver sdc : "safe_spi" ' SD Card Driver @@ -126,14 +125,11 @@ PUB main statCols := dsp.statInfo & $FF dsp.statFill(0, 0, STAT_ATTR, $20, statRows * statCols) - dsp.statFill(0, 0, STAT_ATTR1, $20, statCols) - dsp.statStr(0, 1, STAT_ATTR1, @strROM) - dsp.statStr(0, (statCols - strsize(@strHW)) / 2, STAT_ATTR1, @strHW) - dsp.statStr(0, (statCols - strsize(@strVer) - 1), STAT_ATTR1, @strVer) + dsp.statStr(0, 1, STAT_ATTR, @strROM) + dsp.statStr(0, (statCols - strsize(@strHW)) / 2, STAT_ATTR, @strHW) + dsp.statStr(0, (statCols - strsize(@strVer) - 1), STAT_ATTR, @strVer) - 'dsp.statStr(2, (statCols - 20) / 2, STAT_ATTR, string("<<< Message Area >>>")) - MsgStr(string("Initializing PropIO...")) TermStatKbdAdr := @TermStatKbd @@ -188,7 +184,7 @@ PUB main MsgStr(string("PropIO Ready!")) MsgNewLine - + repeat if (DiskStat & DSKST_ACT) ProcessDiskCmd @@ -338,7 +334,7 @@ PRI DumpBuffer(Buffer) | i, j DAT -strVer byte "F/W v0.97",0 +strVer byte "F/W v0.98",0 strHW byte "PropIO v2",0 strROM byte "RomWBW",0 diff --git a/Source/Prop/Spin/VGA_1024.spin b/Source/Prop/Spin/VGA_1024.spin deleted file mode 100644 index 516a0940..00000000 --- a/Source/Prop/Spin/VGA_1024.spin +++ /dev/null @@ -1,702 +0,0 @@ -'' VGA_1024.spin -'' -'' MODIFIED BY VINCE BRIEL FOR POCKETERM FEATURES -'' MODIIFED BY JEFF LEDGER / AKA OLDBITCOLLECTOR -'' - -CON - cols = 80 '128 ' number of screen columns - lcols = cols / 4 ' number of long in columns - rows = 40 '64 ' number of screen rows - chars = rows*cols ' number of screen characters - esc = $CB ' keyboard esc char - rowsnow = 36 ' adjusted for split screen effect - maxChars = rowsnow*cols ' adjusted value for split screen effect - lastChar = maxChars / 4 ' last screen position in longs adjusted for split - lastLine = (rowsnow - 1) * cols ' character position of last row - cols1 = 81 ' adjusted value for 80th character - TURQUOISE = $29 - -OBJ - vga : "vga_Hires_Text" - -VAR - byte screen[chars] ' screen character buffer - byte tmpl[cols] ' temporary line buffer - word colors[rows] ' color specs for each screen row (see ColorPtr description above) - byte cursor[6] ' cursor info array (see CursorPtr description above) - long sync, loc, xloc, yloc ' sync used by VGA routine, others are local screen pointers - long kbdreq ' global val of kbdflag - long BR[8] - long Brate - byte inverse - byte invs - byte state ' Current state of state machine - word pos ' Current Position on the screen - word oldpos ' Previous location of cursor before update - word regionTop, regionBot ' Scroll region top/bottom - long arg0 ' First argument of escape sequence - long arg1 ' Second argument of escape sequence - byte lastc ' Last displayed char - word statpos - long vgabasepin - -PUB start(BasePin) | i, char - vgabasepin := BasePin - -''init screen colors to gold on blue - repeat i from 0 to rows - 1 - colors[i] := $08F0 '$2804 (if you want cyan on blue) - -''init cursor attributes - cursor[2] := %110 ' init cursor to underscore with slow blink - BR[0]:=300 - BR[1]:=1200 - BR[2]:=2400 - BR[3]:=4800 - BR[4]:=9600 - BR[5]:=19200 - BR[6]:=38400 - BR[7]:=57600 - BR[8]:=115200 - xloc := cursor[0] := 0 - yloc := cursor[1] := 0 - loc := xloc + yloc*cols - - pos := 0 - regionTop := 0 - regionBot := 35 * cols - state := 0 - statpos := 37 * cols - -PUB vidon - if (!vga.start(vgabasepin, @screen, @colors, @cursor, @sync)) - return false - - 'waitcnt(clkfreq * 1 + cnt) 'wait 1 second for cogs to start - - -PUB vidoff - vga.stop - -PUB inv(c) - inverse:=c - -PUB color(colorVal) | i - repeat i from 0 to rows - 1 - colors[i] := $0000 | colorVal - -PUB cursorset(c) | i - i:=%000 - if c == 1 - i:= %001 - if c == 2 - i:= %010 - if c == 3 - i:= %011 - if c == 4 - i:= %101 - if c == 5 - i:= %110 - if c == 6 - i:= %111 - if c == 7 - i:= %000 - cursor[2] := i - -PUB bin(value, digits) - -'' Print a binary number, specify number of digits - - repeat while digits > 32 - outc("0") - digits-- - - value <<= 32 - digits - - repeat digits - outc((value <-= 1) & 1 + "0") - - -PUB clrbtm(ColorVal) | i - repeat i from 36 to rows - 1 'was 35 - colors[i] := $0000 + ColorVal - -PUB cls1(VerStr) | i - - longfill(@screen[0], $20202020, chars / 4) - - clrbtm(TURQUOISE) - - inverse := 1 - statprint(36, 0, VerStr) - inverse := 0 - - repeat i from 37 to (rows - 1) - statprint(i,0, string(" ")) - - -{{ - x :=xloc - y := yloc - invs := inverse - ''clrbtm(TURQUOISE) - longfill(@screen, $20202020, chars/4) - xloc := 0 - yloc :=0 - loc := xloc + yloc*cols - repeat 80 - outc(32) - xloc := 0 - yloc :=36 - loc := xloc + yloc*cols - inverse := 1 - str(string(" ")) - inverse := 0 - str(string("Baud Rate: ")) - i:= BR[6] - dec(i) - str(string(" ")) - xloc := 18 - loc := xloc + yloc*cols - str(string("Color ")) - str(string("PC Port: ")) - if pcport == 1 - str(string("OFF ")) - if pcport == 0 - str(string("ON ")) - str(string(" Force 7 bit: ")) - if ascii == 0 - str(string("NO ")) - if ascii == 1 - str(string("YES ")) - str(string(" Cursor CR W/LF: ")) - if CR == 1 - str(string("YES")) - if CR == 0 - str(string("NO ")) - outc(13) - outc(10) - - inverse:=1 - xloc := 6 - loc := xloc + yloc*cols - str(string("F1")) - xloc := 19 - loc := xloc + yloc*cols - str(string("F2")) - xloc := 30 - loc := xloc + yloc*cols - str(string("F3")) - xloc := 46 - loc := xloc + yloc*cols - str(string("F4")) - xloc := 58 - loc := xloc + yloc*cols - str(string("F5")) - xloc := 70 - loc := xloc + yloc*cols - str(string("F6")) - inverse := invs - xloc := cursor[0] := x 'right & left was 0 - yloc := cursor[1] := y 'from top was 1 - loc := xloc + yloc*cols -}} - -PUB clsupdate(c,screencolor,PCPORT,ascii,CR) | i,x,y,locold - - invs := inverse - locold := loc - x := xloc - y := yloc - ''(TURQUOISE) - xloc := 0 - yloc :=36 - loc := xloc + yloc*cols - inverse := 1 - str(string(" ")) - inverse := 0 - xloc := 0 - yloc :=37 - loc := xloc + yloc*cols - str(string("Baud Rate: ")) - i:= BR[6] - dec(i) - str(string(" ")) - xloc := 18 - loc := xloc + yloc*cols - - str(string("Color ")) - str(string("PC Port: ")) - if pcport == 1 - str(string("OFF ")) - if pcport == 0 - str(string("ON ")) - str(string(" Force 7 bit: ")) - if ascii == 0 - str(string("NO ")) - if ascii == 1 - str(string("YES ")) - str(string(" Cursor CR W/LF: ")) - if CR == 1 - str(string("YES")) - if CR == 0 - str(string("NO ")) - xloc := 0 - yloc :=38 - loc := xloc + yloc*cols - inverse:=1 - xloc := 6 - loc := xloc + yloc*cols - str(string("F1")) - xloc := 19 - loc := xloc + yloc*cols - str(string("F2")) - xloc := 30 - loc := xloc + yloc*cols - str(string("F3")) - xloc := 46 - loc := xloc + yloc*cols - str(string("F4")) - xloc := 58 - loc := xloc + yloc*cols - str(string("F5")) - xloc := 70 - loc := xloc + yloc*cols - str(string("F6")) - inverse := invs - xloc := cursor[0] := x - yloc := cursor[1] := y -' loc := xloc + yloc*cols - loc := locold - -PUB dec(value) | i - -'' Print a decimal number - - if value < 0 - -value - outc("-") - - i := 1_000_000_000 - - repeat 10 - if value => i - outc(value/i + "0") - value //= i - result~~ - elseif result or i == 1 - outc("0") - i /= 10 - -PUB hex(value, digits) - -'' Print a hexadecimal number, specify number of digits - - repeat while digits > 8 - outc("0") - digits-- - - value <<= (8 - digits) << 2 - - repeat digits - outc(lookupz((value <-= 4) & $f : "0".."9", "A".."F")) - - -PUB str(string_ptr) - -'' Print a zero terminated string - - repeat strsize(string_ptr) - process_char(byte[string_ptr++]) - -PUB statprint(r, c, str1) | x, ptr - - ptr := r * cols + c - repeat x from 0 to STRSIZE(str1) - 1 - putc(ptr++, BYTE[str1 + x]) - -PUB statnum(r, c, num1) | i, ptr - - ptr := r * cols + c - - if num1 < 0 - -num1 - putc(ptr++,"-") - - i := 1_000_000_000 - - repeat 10 - if num1 => i - putc(ptr++, (num1/i +"0")) - num1 //= i - result~~ - elseif result or i == 1 - putc(ptr++, "0") - i /= 10 - -PUB putc(position, c) - if inverse - c |= $80 - screen[position] := c - -PUB cls - longfill (@screen, $20202020, lastChar) - -PUB fullcls - longfill(@screen, $20202020, 800) - -PUB setInverse(val) - inverse := val - -PUB setInv(c) - if c == 7 - setInverse(1) - else - setInverse(0) - -PUB clEOL(position) | count - count := cols - (position // cols) - bytefill(@screen + position, $20, count) - -PUB clBOL(position) | count - count := position // cols - bytefill(@screen + position - count, $20, count) - -PUB delLine(position) | src, count - position -= position // cols - - src := position + cols - - count := (maxChars - src) / 4 - - if count > 0 - longmove(@screen + position, @screen + src, count) - - longfill(@screen + lastLine, $20202020, lcols) - -PUB clEOS(position) - cleol(position) - position += cols - (position // cols) - repeat while position < maxChars - longfill(@screen + position, $20202020, lcols) - pos += cols - -PUB setCursorPos(position) - cursor[0] := position // cols - cursor[1] := position / cols - -PUB insLine(position) | base, nxt - base := position - (position // cols) - position := lastLine - repeat while position > base - nxt := position - cols - longmove(@screen + position, @screen + nxt, lcols) - position := nxt - clEOL(base) - -PUB insChar(position) | count - count := (cols - (position // cols)) - 1 - bytemove(@tmpl, @screen + position, count) - screen[position] := " " - bytemove(@screen + position + 1, @tmpl, count) - -PUB delChar(position) | count - count := (cols - (position // cols)) - 1 - bytemove(@screen + position, @screen + position + 1, count) - screen[position + count] := " " - -PRI inRegion : answer - answer := (pos => regionTop) AND (pos < regionBot) - -PRI scrollUp - delLine(regionTop) - if regionBot < maxChars - insLine(regionBot) - -PRI scrollDown - if regionBot < maxChars - delLine(regionBot) - insLine(regionTop) - -PRI ansi(c) | x, defVal - - state := 0 - - if (c <> "r") AND (c <> "J") AND (c <> "m") AND (c <> "K") - if arg0 == -1 - arg0 := 1 - if arg1 == -1 - arg1 := 1 - - case c - "@": - repeat while arg0-- > 0 - insChar(pos) - - "b": - repeat while arg0-- > 0 - outc(lastc) - - "d": - if (arg0 < 1) OR (arg0 > rows) - arg0 := rows - pos := ((arg0 - 1) * cols) + (pos // cols) - - "m": - setInv(arg0) - if arg1 <> -1 - setInv(arg1) - - "r": - if arg0 < 1 - arg0 := 1 - elseif arg0 > cols - arg0 := cols - if arg1 < 1 - arg1 := 1 - elseif arg1 > cols - arg1 := cols - if arg1 < arg0 - arg1 := arg0 - - regionTop := (arg0 - 1) * cols - regionBot := arg1 * cols - pos := 0 - - "A": - repeat while arg0-- > 0 - pos -= cols - if pos < 0 - pos += cols - return - - "B": - repeat while arg0-- > 0 - pos += cols - if pos => maxChars - pos -= cols - return - - "C": - repeat while arg0-- > 0 - pos += 1 - if pos => maxChars - pos -= 1 - return - - "D": - repeat while arg0-- > 0 - pos -= 1 - if pos < 0 - pos := 0 - return - - "G": - if (arg0 < 1) OR (arg0 > cols) - arg0 := cols - pos := (pos - (pos // cols)) + (arg0 - 1) - - "H", "f": - if arg0 =< 0 - arg0 := 1 - if arg1 =< 0 - arg1 := 1 - pos := (cols * (arg0 - 1)) + (arg1 - 1) - if pos < 0 - pos := 0 - if pos => maxChars - pos := maxChars - 1 - - "J": - if arg0 == 1 - clBOL(pos) - x := pos - cols - x -= x // cols - repeat while x => 0 - clEOL(x) - x -= cols - return - - if arg0 == 2 - pos := 0 - - clEOL(pos) - x := pos + cols - x -= (x // cols) - repeat while x < maxChars - clEOL(x) - x += cols - - "K": - if arg0 == -1 - clEOL(pos) - elseif arg0 == 1 - clBOL(pos) - else - clEOL(pos - (pos // cols)) - - "L": - if inRegion - repeat while arg0-- > 0 - if regionBot < maxChars - delLine(regionBot) - insLine(pos) - - "M": - if inRegion - repeat while arg0-- > 0 - delLine(pos) - if regionBot < maxChars - insLine(regionBot) - - "P": - repeat while arg0-- - delChar(pos) - -PRI outc(c) - - putc(pos++, lastc := c) - if pos == regionBot - scrollUp - pos -= cols - elseif pos == maxChars - pos := lastLine - -PUB process_char(c) - - case state - - 0: - if c > 127 - c := $20 - - if c => $20 - outc(c) - setCursorPos(pos) - return - - if c == $1B - state := 1 - return - - if c == $0D - pos := pos - (pos // cols) - setCursorPos(pos) - return - - if c == $0A - if inRegion - pos += cols - if pos => regionBot - scrollUp - pos -= cols - else - pos += cols - if pos => maxChars - pos -= cols - setCursorPos(pos) - return - - if c == 9 - pos += (8 - (pos // 8)) - - if pos => maxChars - pos := lastLine - delLine(0) - - setCursorPos(pos) - return - - if c == 8 - if pos > 0 - pos -= 1 - setCursorPos(pos) - return - - 1: - case c - "[": - arg0 := arg1 := -1 - state := 2 - return - - "P": - pos += cols - if pos => maxChars - pos -= cols - - "K": - if pos > 0 - pos -= 1 - - "H": - pos -= cols - if pos < 0 - pos += cols - - "D": - if inRegion - scrollUp - - "M": - if inRegion - scrollDown - - "G": - pos := 0 - - "(": - state := 5 - return - - state := 0 - return - - 2: - if (c => "0") AND (c =< "9") - if arg0 == -1 - arg0 := c - "0" - else - arg0 := (arg0 * 10) + (c - "0") - return - - if c == ";" - state := 3 - return - - ansi(c) - setCursorPos(pos) - return - - 3: - if (c => "0") AND (c =< "9") - if arg1 == -1 - arg1 := c - "0" - else - arg1 := (arg1 * 10) + (c - "0") - return - - if c == ";" - state := 4 - return - - ansi(c) - setCursorPos(pos) - return - - 4: - if (c => "0") AND (c =< "9") - return - - if c == ";" - return - ansi(c) - setCursorPos(pos) - return - - 5: - state := 0 - return - - return \ No newline at end of file diff --git a/Source/Prop/Spin/vgacolour.spin b/Source/Prop/Spin/vgacolour.spin index 0981fe55..d8de83d1 100644 --- a/Source/Prop/Spin/vgacolour.spin +++ b/Source/Prop/Spin/vgacolour.spin @@ -21,7 +21,7 @@ CON { -' 640 x 480 @ 69Hz settings: 80 x 30 characters +' 640 x 480 @ 69Hz settings: hp = 640 ' horizontal pixels vp = 480 ' vertical pixels @@ -37,19 +37,19 @@ CON } '{ -' 640 x 480 @ 60Hz settings: 80 x 40 characters - - hp = 640 'horizontal pixels - vp = 480 'vertical pixels - hf = 16 'horizontal front porch pixels - hs = 96 'horizontal sync pixels - hb = 48 'horizontal back porch pixels - vf = 10 'vertical front porch lines - vs = 2 'vertical sync lines - vb = 33 'vertical back porch lines - hn = 1 'horizontal normal sync state (0|1) - vn = 1 'vertical normal sync state (0|1) - pr = 25 'pixel rate in MHz at 80MHz system clock (5MHz granularity) +' 640 x 480 @ 60Hz settings: + + hp = 640 'horizontal pixels + vp = 480 'vertical pixels + hf = 16 'horizontal front porch pixels + hs = 96 'horizontal sync pixels + hb = 48 'horizontal back porch pixels + vf = 10 'vertical front porch lines + vs = 2 'vertical sync lines + vb = 33 'vertical back porch lines + hn = 1 'horizontal normal sync state (0|1) + vn = 1 'vertical normal sync state (0|1) + pr = 25 'pixel rate in MHz at 80MHz system clock (5MHz granularity) '} @@ -70,9 +70,9 @@ PUB start(BasePin, ScreenPtr, CursorPtr, SyncPtr) : okay | i, j '' '' ScreenPtr = Pointer to 80x30 words containing Latin-1 codes and colors for '' each of the 80x30 screen characters. The lower byte of the word -'' contains the Latin-1 code to display. The upper byte contains +'' contains the Latin-1 code to display. The upper byte contains '' the foreground colour in bits 11..8 and the background colour in -'' bits 15..12. +'' bits 15..12. Remember bytes of a word are stored little endian. '' '' screen word example: %00011111_01000001 = "A", white on blue '' @@ -466,141 +466,144 @@ fours res 1 fit $1f0 -' 8 x 12 font - characters 0..127 +' 8 x 16 font - characters 0..255 ' ' Each long holds four scan lines of a single character. The longs are arranged into -' groups of 128 which represent all characters (0..127). There are four groups which -' each contain a vertical part of all characters. They are ordered top, middle, and -' bottom. +' groups of 256 which represent all characters (0..255). There are four groups which +' each contain a vertical part of all characters. They are ordered top, middle top, +' middle bottom and bottom. Bytes in each long are stored little endian. font long - long $0082ba00,$00000000,$2a552a00,$36360000,$061e0000,$061c0000,$06060000,$3c000000 + long $0082ba00,$00000000,$2a552a00,$36360000,$061e0000,$061c0000,$06060000,$3c000000 'top long $00000000,$6e660000,$66660000,$18181818,$00000000,$00000000,$18181818,$18181818 - long $0000ffff,$00000000,$00000000,$00000000,$00000000,$18181818,$18181818,$18181818 + long $0000ffff,$00000000,$00000000,$00000000,$00000000,$18181818,$18181818,$18181818 '10 long $00000000,$18181818,$60000000,$06000000,$00000000,$00000000,$38000000,$00000000 - long $00000000,$18000000,$36000000,$24000000,$18000000,$4e000000,$1c000000,$18000000 + long $00000000,$18000000,$36000000,$24000000,$18000000,$4e000000,$1c000000,$18000000 '20 long $30000000,$0c000000,$00000000,$00000000,$00000000,$00000000,$00000000,$60000000 - long $18000000,$18000000,$3c000000,$7e000000,$60000000,$7e000000,$3c000000,$7e000000 + long $18000000,$18000000,$3c000000,$7e000000,$60000000,$7e000000,$3c000000,$7e000000 '30 long $3c000000,$3c000000,$00000000,$00000000,$60000000,$00000000,$06000000,$3c000000 - long $3c000000,$3c000000,$3e000000,$3c000000,$3e000000,$7e000000,$7e000000,$3c000000 + long $3c000000,$3c000000,$3e000000,$3c000000,$3e000000,$7e000000,$7e000000,$3c000000 '40 long $66000000,$7e000000,$60000000,$46000000,$06000000,$42000000,$66000000,$3c000000 - long $3e000000,$3c000000,$3e000000,$3c000000,$7e000000,$66000000,$66000000,$66000000 + long $3e000000,$3c000000,$3e000000,$3c000000,$7e000000,$66000000,$66000000,$66000000 '50 long $42000000,$66000000,$7e000000,$3c000000,$06000000,$3c000000,$18000000,$00000000 - long $180c0000,$00000000,$06000000,$00000000,$60000000,$00000000,$38000000,$00000000 + long $180c0000,$00000000,$06000000,$00000000,$60000000,$00000000,$38000000,$00000000 '60 long $06000000,$18000000,$60000000,$06000000,$1c000000,$00000000,$00000000,$00000000 - long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 + long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 '70 long $00000000,$00000000,$00000000,$38000000,$18000000,$1c000000,$4c000000,$aa55aa55 - long $00000000,$00000000,$2a552a00,$36360000,$061e0000,$061c0000,$06060000,$3c000000 + long $00000000,$00000000,$2a552a00,$36360000,$061e0000,$061c0000,$06060000,$3c000000 '80 long $00000000,$6e660000,$66660000,$24242424,$00000000,$00000000,$24242424,$24242424 - long $00ff00ff,$ff000000,$00000000,$00000000,$00000000,$24242424,$24242424,$24242424 + long $00ff00ff,$ff000000,$00000000,$00000000,$00000000,$24242424,$24242424,$24242424 '90 long $00000000,$24242424,$60000000,$06000000,$00000000,$00000000,$38000000,$00000000 - long $00000000,$18000000,$36000000,$24000000,$18000000,$4e000000,$1c000000,$18000000 + long $00000000,$18000000,$36000000,$24000000,$18000000,$4e000000,$1c000000,$18000000 'A0 long $30000000,$0c000000,$00000000,$00000000,$00000000,$00000000,$00000000,$60000000 - long $18000000,$18000000,$3c000000,$7e000000,$60000000,$7e000000,$3c000000,$7e000000 + long $18000000,$18000000,$3c000000,$7e000000,$60000000,$7e000000,$3c000000,$7e000000 'B0 long $3c000000,$3c000000,$00000000,$00000000,$60000000,$00000000,$06000000,$3c000000 - long $3c000000,$3c000000,$3e000000,$3c000000,$3e000000,$7e000000,$7e000000,$3c000000 + long $3c000000,$3c000000,$3e000000,$3c000000,$3e000000,$7e000000,$7e000000,$3c000000 'C0 long $66000000,$7e000000,$60000000,$46000000,$06000000,$42000000,$66000000,$3c000000 - long $3e000000,$3c000000,$3e000000,$3c000000,$7e000000,$66000000,$66000000,$66000000 + long $3e000000,$3c000000,$3e000000,$3c000000,$7e000000,$66000000,$66000000,$66000000 'D0 long $42000000,$66000000,$7e000000,$3c000000,$06000000,$3c000000,$18000000,$00000000 - long $180c0000,$00000000,$06000000,$00000000,$60000000,$00000000,$38000000,$00000000 + long $180c0000,$00000000,$06000000,$00000000,$60000000,$00000000,$38000000,$00000000 'E0 long $06000000,$18000000,$60000000,$06000000,$1c000000,$00000000,$00000000,$00000000 - long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 + long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 'F0 long $00000000,$00000000,$00000000,$38000000,$18000000,$1c000000,$4c000000,$aa55aa55 - long $82008282,$3c180000,$2a552a55,$0036363e,$0006060e,$001c0606,$001e0606,$003c6666 + + long $82008282,$3c180000,$2a552a55,$0036363e,$0006060e,$001c0606,$001e0606,$003c6666 'mid top long $187e1818,$0066767e,$00183c24,$1f181818,$1f000000,$f8000000,$f8181818,$ff181818 - long $00000000,$0000ffff,$00000000,$00000000,$00000000,$f8181818,$1f181818,$ff181818 + long $00000000,$0000ffff,$ff000000,$00000000,$00000000,$f8181818,$1f181818,$ff181818 '10 long $ff000000,$18181818,$0c060c30,$3060300c,$667e0000,$187e3030,$3e0c0c6c,$18180000 - long $00000000,$18181818,$00003636,$247e7e24,$3c1a5a3c,$18302e6a,$1c363636,$00181818 + long $00000000,$18181818,$00003636,$247e7e24,$3c1a5a3c,$18302e6a,$1c363636,$00181818 '20 long $0c0c1818,$30301818,$7e182400,$7e181800,$00000000,$00000000,$00000000,$18303060 - long $66666624,$18181a1c,$38606666,$3c183060,$666c7870,$663e0606,$3e060666,$30306060 + long $66666624,$18181a1c,$38606666,$3c183060,$666c7870,$663e0606,$3e060666,$30306060 '30 long $3c666666,$7c666666,$183c1800,$183c1800,$060c1830,$007e0000,$6030180c,$38606666 - long $6a7a6262,$7e666666,$3e666666,$06060666,$66666666,$3e060606,$3e060606,$76060666 + long $6a7a6262,$7e666666,$3e666666,$06060666,$66666666,$3e060606,$3e060606,$76060666 '40 long $7e666666,$18181818,$60606060,$0e1e3666,$06060606,$667e7e66,$7e6e6e66,$66666666 - long $3e666666,$66666666,$3e666666,$3c060666,$18181818,$66666666,$24246666,$66666666 + long $3e666666,$66666666,$3e666666,$3c060666,$18181818,$66666666,$24246666,$66666666 '50 long $183c2466,$183c3c66,$18306060,$0c0c0c0c,$180c0c06,$30303030,$0042663c,$00000000 - long $00000030,$603c0000,$663e0606,$663c0000,$667c6060,$663c0000,$1e0c0c6c,$665c0000 + long $00000030,$603c0000,$663e0606,$663c0000,$667c6060,$663c0000,$1e0c0c6c,$665c0000 '60 long $663e0606,$181c0018,$60600060,$36660606,$18181818,$fe6a0000,$663e0000,$663c0000 - long $663e0000,$667c0000,$663e0000,$663c0000,$0c3e0c0c,$66660000,$66660000,$66660000 + long $663e0000,$667c0000,$663e0000,$663c0000,$0c3e0c0c,$66660000,$66660000,$66660000 '70 long $66660000,$66660000,$607e0000,$0c180c0c,$18181818,$30183030,$0000327e,$aa55aa55 - long $00000000,$3c180000,$2a552a55,$0036363e,$0006060e,$001c0606,$001e0606,$003c6666 + long $00000000,$3c180000,$2a552a55,$0036363e,$0006060e,$001c0606,$001e0606,$003c6666 '80 long $187e1818,$0066767e,$00183c24,$20272424,$203f0000,$04fc0000,$04e42424,$00e72424 - long $00000000,$0000ff00,$ff000000,$00000000,$00000000,$04e42424,$20272424,$00e72424 + long $00000000,$0000ff00,$ff000000,$00000000,$00000000,$04e42424,$20272424,$00e72424 '90 long $00ff0000,$24242424,$0c060c30,$3060300c,$667e0000,$187e3030,$3e0c0c6c,$18180000 - long $00000000,$18181818,$00003636,$247e7e24,$3c1a5a3c,$18302e6a,$1c363636,$00181818 + long $00000000,$18181818,$00003636,$247e7e24,$3c1a5a3c,$18302e6a,$1c363636,$00181818 'A0 long $0c0c1818,$30301818,$7e182400,$7e181800,$00000000,$00000000,$00000000,$18303060 - long $66666624,$18181a1c,$38606666,$3c183060,$666c7870,$663e0606,$3e060666,$30306060 + long $66666624,$18181a1c,$38606666,$3c183060,$666c7870,$663e0606,$3e060666,$30306060 'B0 long $3c666666,$7c666666,$183c1800,$183c1800,$060c1830,$007e0000,$6030180c,$38606666 - long $76766666,$7e666666,$3e666666,$06060666,$66666666,$3e060606,$3e060606,$76060666 + long $76766666,$7e666666,$3e666666,$06060666,$66666666,$3e060606,$3e060606,$76060666 'C0 long $7e666666,$18181818,$60606060,$0e1e3666,$06060606,$667e7e66,$7e6e6e66,$66666666 - long $3e666666,$66666666,$3e666666,$3c060666,$18181818,$66666666,$24246666,$66666666 + long $3e666666,$66666666,$3e666666,$3c060666,$18181818,$66666666,$24246666,$66666666 'D0 long $183c2466,$183c3c66,$18306060,$0c0c0c0c,$180c0c06,$30303030,$0042663c,$00000000 - long $00000030,$603c0000,$663e0606,$663c0000,$667c6060,$663c0000,$1e0c0c6c,$665c0000 + long $00000030,$603c0000,$663e0606,$663c0000,$667c6060,$663c0000,$1e0c0c6c,$665c0000 'E0 long $663e0606,$181c0018,$60600060,$36660606,$18181818,$fe6a0000,$663e0000,$663c0000 - long $663e0000,$667c0000,$663e0000,$663c0000,$0c3e0c0c,$66660000,$66660000,$66660000 + long $663e0000,$667c0000,$663e0000,$663c0000,$0c3e0c0c,$66660000,$66660000,$66660000 'F0 long $66660000,$66660000,$607e0000,$0c180c0c,$18181818,$30183030,$0000327e,$aa55aa55 - long $82820082,$00183c7e,$2a552a55,$30303078,$18381878,$58385838,$18381878,$00000000 + + long $82820082,$00183c7e,$2a552a55,$30303078,$18381878,$58385838,$18381878,$00000000 'mid bottom long $007e0018,$18181818,$30303078,$0000001f,$1818181f,$181818f8,$000000f8,$181818ff - long $00000000,$00000000,$0000ffff,$ff000000,$00000000,$181818f8,$1818181f,$000000ff + long $00000000,$00000000,$000000ff,$ff000000,$00000000,$181818f8,$1818181f,$000000ff '10 long $181818ff,$18181818,$7e006030,$7e00060c,$66666666,$0c0c7e18,$3a6c0c0c,$00000000 - long $00000000,$18180018,$00000000,$24247e7e,$183c5a58,$7256740c,$5c367656,$00000000 + long $00000000,$18180018,$00000000,$24247e7e,$183c5a58,$7256740c,$5c367656,$00000000 '20 long $3018180c,$0c181830,$0024187e,$0018187e,$18383800,$0000007e,$3c180000,$06060c0c - long $18246666,$7e181818,$7e06060c,$3c666060,$60607e66,$3c666060,$3c666666,$0c0c1818 + long $18246666,$7e181818,$7e06060c,$3c666060,$60607e66,$3c666060,$3c666666,$0c0c1818 '30 long $3c666666,$3c666060,$3c180000,$18383800,$6030180c,$00007e00,$060c1830,$18180018 - long $3c62027a,$66666666,$3e666666,$3c660606,$3e666666,$7e060606,$06060606,$7c666666 + long $3c62027a,$66666666,$3e666666,$3c660606,$3e666666,$7e060606,$06060606,$7c666666 '40 long $66666666,$7e181818,$3c666060,$4666361e,$7e060606,$66666666,$66667676,$3c666666 - long $06060606,$3c766e66,$4666361e,$3c666060,$18181818,$3c666666,$1818183c,$42667e7e + long $06060606,$3c766e66,$4666361e,$3c666060,$18181818,$3c666666,$1818183c,$42667e7e '50 long $4266243c,$18181818,$7e06060c,$3c0c0c0c,$60603030,$3c303030,$00000000,$fe000000 - long $00000000,$7c66667c,$3e666666,$3c660606,$7c666666,$3c66067e,$0c0c0c0c,$3c063c66 + long $00000000,$7c66667c,$3e666666,$3c660606,$7c666666,$3c66067e,$0c0c0c0c,$3c063c66 '60 long $66666666,$7e181818,$60606060,$66361e1e,$7e181818,$c6c6d6d6,$66666666,$3c666666 - long $063e6666,$607c6666,$06060606,$3c66300c,$386c0c0c,$7c666666,$183c3c66,$247e7e66 + long $063e6666,$607c6666,$06060606,$3c66300c,$386c0c0c,$7c666666,$183c3c66,$247e7e66 '70 long $66663c3c,$607c6666,$7e060c30,$380c0c18,$18181818,$1c303018,$00000000,$aa55aa55 - long $00000000,$00183c7e,$2a552a55,$30303078,$18381878,$58385838,$18381878,$00000000 + long $00000000,$00183c7e,$2a552a55,$30303078,$18381878,$58385838,$18381878,$00000000 '90 long $007e0018,$18181818,$30303078,$00003f20,$24242720,$2424e404,$0000fc04,$2424e700 - long $00000000,$00000000,$0000ff00,$00ff0000,$00000000,$2424e404,$24242720,$0000ff00 + long $00000000,$00000000,$0000ff00,$00ff0000,$00000000,$2424e404,$24242720,$0000ff00 '90 long $2424e700,$24242424,$7e006030,$7e00060c,$66666666,$0c0c7e18,$3a6c0c0c,$00000000 - long $00000000,$18180018,$00000000,$24247e7e,$183c5a58,$7256740c,$5c367656,$00000000 + long $00000000,$18180018,$00000000,$24247e7e,$183c5a58,$7256740c,$5c367656,$00000000 'A0 long $3018180c,$0c181830,$0024187e,$0018187e,$18383800,$0000007e,$3c180000,$06060c0c - long $18246666,$7e181818,$7e06060c,$3c666060,$60607e66,$3c666060,$3c666666,$0c0c1818 + long $18246666,$7e181818,$7e06060c,$3c666060,$60607e66,$3c666060,$3c666666,$0c0c1818 'B0 long $3c666666,$3c666060,$3c180000,$18383800,$6030180c,$00007e00,$060c1830,$18180018 - long $3c660676,$66666666,$3e666666,$3c660606,$3e666666,$7e060606,$06060606,$7c666666 + long $3c660676,$66666666,$3e666666,$3c660606,$3e666666,$7e060606,$06060606,$7c666666 'C0 long $66666666,$7e181818,$3c666060,$4666361e,$7e060606,$66666666,$66667676,$3c666666 - long $06060606,$3c766e66,$4666361e,$3c666060,$18181818,$3c666666,$1818183c,$42667e7e + long $06060606,$3c766e66,$4666361e,$3c666060,$18181818,$3c666666,$1818183c,$42667e7e 'D0 long $4266243c,$18181818,$7e06060c,$3c0c0c0c,$60603030,$3c303030,$00000000,$fe000000 - long $00000000,$7c66667c,$3e666666,$3c660606,$7c666666,$3c66067e,$0c0c0c0c,$3c063c66 + long $00000000,$7c66667c,$3e666666,$3c660606,$7c666666,$3c66067e,$0c0c0c0c,$3c063c66 'E0 long $66666666,$7e181818,$60606060,$66361e1e,$7e181818,$c6c6d6d6,$66666666,$3c666666 - long $063e6666,$607c6666,$06060606,$3c66300c,$386c0c0c,$7c666666,$183c3c66,$247e7e66 + long $063e6666,$607c6666,$06060606,$3c66300c,$386c0c0c,$7c666666,$183c3c66,$247e7e66 'F0 long $66663c3c,$607c6666,$7e060c30,$380c0c18,$18181818,$1c303018,$00000000,$aa55aa55 - long $00ba8200,$00000000,$00002a55,$00000030,$00000018,$00000058,$00000018,$00000000 + + long $00ba8200,$00000000,$00002a55,$00000030,$00000018,$00000058,$00000018,$00000000 'bottom long $00000000,$00000078,$00000030,$00000000,$18181818,$18181818,$00000000,$18181818 - long $00000000,$00000000,$00000000,$000000ff,$ffff0000,$18181818,$18181818,$00000000 + long $00000000,$00000000,$00000000,$000000ff,$ffff0000,$18181818,$18181818,$00000000 '10 long $18181818,$18181818,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 - long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 + long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 '20 long $00000000,$00000000,$00000000,$00000000,$0000000c,$00000000,$00000018,$00000000 - long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 + long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 '30 long $00000000,$00000000,$00000018,$0000000c,$00000000,$00000000,$00000000,$00000000 + long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 '40 long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 - long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 - long $00000000,$00000060,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 + long $00000000,$00000060,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 '50 long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$000000fe - long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00003c66 + long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00003c66 '60 long $00000000,$00000000,$00003c66,$00000000,$00000000,$00000000,$00000000,$00000000 - long $00000606,$00006060,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 + long $00000606,$00006060,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000 '70 long $00000000,$00003c66,$00000000,$00000000,$00000000,$00000000,$00000000,$aa55aa55 - long $ff000000,$ff000000,$ff002a55,$ff000030,$ff000018,$ff000058,$ff000018,$ff000000 + long $ff000000,$ff000000,$ff002a55,$ff000030,$ff000018,$ff000058,$ff000018,$ff000000 '90 long $ff000000,$ff000078,$ff000030,$00000000,$24242424,$24242424,$00000000,$24242424 - long $00000000,$00000000,$00000000,$000000ff,$ff00ff00,$24242424,$24242424,$00000000 + long $00000000,$00000000,$00000000,$000000ff,$ff00ff00,$24242424,$24242424,$00000000 '90 long $24242424,$24242424,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000 - long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000 + long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000 'A0 long $ff000000,$ff000000,$ff000000,$ff000000,$ff00000c,$ff000000,$ff000018,$ff000000 - long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000 + long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000 'B0 long $ff000000,$ff000000,$ff000018,$ff00000c,$ff000000,$ff000000,$ff000000,$ff000000 + long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000 'C0 long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000 - long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000 - long $ff000000,$ff000060,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000 + long $ff000000,$ff000060,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000 'D0 long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff0000fe - long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff003c66 + long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff003c66 'E0 long $ff000000,$ff000000,$ff003c66,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000 - long $ff000606,$ff006060,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000 + long $ff000606,$ff006060,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000 'F0 long $ff000000,$ff003c66,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff55aa55 diff --git a/Source/RomDsk/Build.cmd b/Source/RomDsk/Build.cmd index e7ccae93..1d094702 100644 --- a/Source/RomDsk/Build.cmd +++ b/Source/RomDsk/Build.cmd @@ -24,27 +24,26 @@ set RomApps2=fdu format survey sysgen talk timer cpuspd set RomApps= -copy NUL rom128_wbw.dat || exit /b -copy NUL rom128_una.dat || exit /b +copy NUL rom0_wbw.dat || exit /b +copy NUL rom0_una.dat || exit /b :: MakeDisk set RomApps=%RomApps1% -call :MakeDisk rom256_wbw wbw_rom256 ROM_256KB 0x20000 wbw || exit /b -call :MakeDisk rom256_una wbw_rom256 ROM_256KB 0x20000 una || exit /b +call :MakeDisk rom128_wbw wbw_rom128 ROM_128KB 0x20000 wbw || exit /b +call :MakeDisk rom128_una wbw_rom128 ROM_128KB 0x20000 una || exit /b set RomApps=%RomApps1% %RomApps2% -call :MakeDisk rom512_wbw wbw_rom512 ROM_512KB 0x60000 wbw || exit /b -call :MakeDisk rom512_una wbw_rom512 ROM_512KB 0x60000 una || exit /b +call :MakeDisk rom256_wbw wbw_rom256 ROM_256KB 0x40000 wbw || exit /b +call :MakeDisk rom256_una wbw_rom256 ROM_256KB 0x40000 una || exit /b -call :MakeDisk rom1024_wbw wbw_rom1024 ROM_1024KB 0xE0000 wbw || exit /b -call :MakeDisk rom1024_una wbw_rom1024 ROM_1024KB 0xE0000 una || exit /b +call :MakeDisk rom384_wbw wbw_rom384 ROM_384KB 0x60000 wbw || exit /b +call :MakeDisk rom384_una wbw_rom384 ROM_384KB 0x60000 una || exit /b -call :MakeDisk ram512_wbw wbw_ram512 RAM_512KB 0x40000 wbw || exit /b - -call :MakeDisk ram1024_wbw wbw_ram1024 RAM_1024KB 0xC0000 wbw || exit /b +call :MakeDisk rom896_wbw wbw_rom896 ROM_896KB 0xE0000 wbw || exit /b +call :MakeDisk rom896_una wbw_rom896 ROM_896KB 0xE0000 una || exit /b goto :eof diff --git a/Source/RomDsk/Makefile b/Source/RomDsk/Makefile index 0a013cfe..1f067db1 100644 --- a/Source/RomDsk/Makefile +++ b/Source/RomDsk/Makefile @@ -1,4 +1,4 @@ -OBJECTS = rom128_wbw.dat rom128_una.dat rom256_wbw.dat rom256_una.dat rom512_wbw.dat rom512_una.dat rom1024_wbw.dat rom1024_una.dat ram512_wbw.dat ram1024_wbw.dat +OBJECTS = rom0_wbw.dat rom0_una.dat rom128_wbw.dat rom128_una.dat rom256_wbw.dat rom256_una.dat rom384_wbw.dat rom384_una.dat rom896_wbw.dat rom896_una.dat OTHERS=*.dat TOOLS = ../../Tools @@ -9,36 +9,28 @@ include $(TOOLS)/Makefile.inc ROMAPPS1 := assign mode rtc syscopy xm ROMAPPS2 := fdu format survey sysgen talk timer cpuspd -# rom256_%.dat: ROMSIZ=256 -# rom512_%.dat: ROMSIZ=512 -# rom1024_%.dat: ROMSIZ=1024 - +rom128_%.dat: DISKDEF=wbw_rom128 rom256_%.dat: DISKDEF=wbw_rom256 -rom512_%.dat: DISKDEF=wbw_rom512 -rom1024_%.dat: DISKDEF=wbw_rom1024 -ram512_%.dat: DISKDEF=wbw_ram512 -ram1024_%.dat: DISKDEF=wbw_ram1024 +rom384_%.dat: DISKDEF=wbw_rom384 +rom896_%.dat: DISKDEF=wbw_rom896 +rom128_%.dat: DIR=ROM_128KB rom256_%.dat: DIR=ROM_256KB -rom512_%.dat: DIR=ROM_512KB -rom1024_%.dat: DIR=ROM_1024KB -ram512_%.dat: DIR=RAM_512KB -ram1024_%.dat: DIR=RAM_1024KB +rom384_%.dat: DIR=ROM_384KB +rom896_%.dat: DIR=ROM_896KB -rom256_%.dat: IMGSIZ=0x20000 -rom512_%.dat: IMGSIZ=0x60000 -rom1024_%.dat: IMGSIZ=0xE0000 -ram512_%.dat: IMGSIZ=0x40000 -ram1024_%.dat: IMGSIZ=0xC0000 +rom128_%.dat: IMGSIZ=0x20000 +rom256_%.dat: IMGSIZ=0x40000 +rom384_%.dat: IMGSIZ=0x60000 +rom896_%.dat: IMGSIZ=0xE0000 -rom256_%.dat: ROMAPPS=$(ROMAPPS1) -rom512_%.dat rom1024_%.dat: ROMAPPS=$(ROMAPPS1) $(ROMAPPS2) -ram512_%.dat ram1024_%.dat: ROMAPPS=$(ROMAPPS1) $(ROMAPPS2) +rom128_%.dat: ROMAPPS=$(ROMAPPS1) +rom256_%.dat rom384_%.dat rom896_%.dat: ROMAPPS=$(ROMAPPS1) $(ROMAPPS2) %_wbw.dat: BIOS=wbw %_una.dat: BIOS=una -rom128_%.dat: +rom0_%.dat: touch $@ %.dat: diff --git a/Source/RomDsk/ROM_1024KB/CLOCKS.DAT b/Source/RomDsk/ROM_1024KB/CLOCKS.DAT deleted file mode 100644 index e64c7e05..00000000 Binary files a/Source/RomDsk/ROM_1024KB/CLOCKS.DAT and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/COPY.CFG b/Source/RomDsk/ROM_1024KB/COPY.CFG deleted file mode 100644 index 3d5310ac..00000000 Binary files a/Source/RomDsk/ROM_1024KB/COPY.CFG and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/COPY.UPD b/Source/RomDsk/ROM_1024KB/COPY.UPD deleted file mode 100644 index 3725b0e8..00000000 --- a/Source/RomDsk/ROM_1024KB/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/Source/RomDsk/ROM_1024KB/CR.COM b/Source/RomDsk/ROM_1024KB/CR.COM deleted file mode 100644 index 8a824bcc..00000000 Binary files a/Source/RomDsk/ROM_1024KB/CR.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/DATSWEEP.COM b/Source/RomDsk/ROM_1024KB/DATSWEEP.COM deleted file mode 100644 index 5d298c0b..00000000 Binary files a/Source/RomDsk/ROM_1024KB/DATSWEEP.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/DDTZ.DOC b/Source/RomDsk/ROM_1024KB/DDTZ.DOC deleted file mode 100644 index e4470528..00000000 --- a/Source/RomDsk/ROM_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/Source/RomDsk/ROM_1024KB/DIRX.COM b/Source/RomDsk/ROM_1024KB/DIRX.COM deleted file mode 100644 index 413bceca..00000000 Binary files a/Source/RomDsk/ROM_1024KB/DIRX.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/DSCONFIG.COM b/Source/RomDsk/ROM_1024KB/DSCONFIG.COM deleted file mode 100644 index b77dd008..00000000 Binary files a/Source/RomDsk/ROM_1024KB/DSCONFIG.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/EX.COM b/Source/RomDsk/ROM_1024KB/EX.COM deleted file mode 100644 index 49cb0b81..00000000 Binary files a/Source/RomDsk/ROM_1024KB/EX.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/FA16.CFG b/Source/RomDsk/ROM_1024KB/FA16.CFG deleted file mode 100644 index b7974d36..00000000 Binary files a/Source/RomDsk/ROM_1024KB/FA16.CFG and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/FA16.DOC b/Source/RomDsk/ROM_1024KB/FA16.DOC deleted file mode 100644 index 08b46875..00000000 --- a/Source/RomDsk/ROM_1024KB/FA16.DOC +++ /dev/null @@ -1,264 +0,0 @@ - - FILEATTR - Version 1.6 - - Gene Pizzetta - January 18, 1992 - A ZSDOS utility, copyright (c) 1988 by Carson Wilson. - - -FILEATTR (FA) is a utility that allows rapid settin, resetting, -or displaying of file attributes under ZSDOS, ZRDOS, and CP/M -2.2. Several additional features are available under ZCPR3, -including error flag setting, error handler invocation, an -enhanced display, and better error detection. - -FA will not run under CP/M 3.0 or Z3PLUS. - -USAGE: - - FILEATTR {dir:}{afn} {{/}options} - -If a DIR or DU specification is not given, the current directory -is assumed (under vanilla CP/M only the drive is significant). -If no ambiguous or unambiguous filename is given, all files -("*.*") are matched. - -If no attribute options are given, FILEATTR merely displays the -current state of each file's attributes. Files are displayed in -the order that they appear in the directory. - -Once operation begins, FA cannot be aborted by the user. If a ^C -is entered at the keyboard, all screen output stops, but file -attribute operations continue to completion. If that was not the -case, attributes might be set on some entries for a file and not -on others. Nevertheless, suppressing screen output speeds things -up a bit. - -OPTIONS: A leading slash is required unless the option list is -the second parameter on the command line. Options may be -separated by spaces, commas, or nothing at all. - -ATTRIBUTE OPTIONS: These options set (turn on) corresponding -attributes on files matching the file specification. Attributes -not specified by an attribute option remain unchanged. - -If the option is preceded by a minus ("-") or by an "N", the -corresponding attribute is reset (turned off). - - 1 F1. This is a user attribute which has no predefined - meaning. - - P Public (f2). Under ZSDOS, when this attribute is set, - a file is available from any user area of the disk on - which it resides. A file cannot be made public if - another file with the same name exists in any other - user area on that drive. In that case FA will issue an - error message and leave the attribute off. - - D Inhibit access datestamp (f3). Under ZSDOS, when this - attribute is set, the file's access datestamp will not - be updated, which may speed file access slightly. If - the attribute is turned off, normal access datestamping - resumes. - - 4 F4. This is a user attribute which has no predefined - meaning. - - W Wheel protect (f8). Under ZSDOS, when this attribute - is set, the file becomes read-only when the wheel byte - is off and cannot be erased. If the wheel byte is on, - the file can be erased normally. - - R Read only (t1). When this attribute is set, the file - cannot be erased or modified by most programs. - - S System (t2). When this attribute is set, the file - becomes a "hidden" file that will not be found by most - directory programs or by most well-behaved utilities - that accept ambiguous filenames. (FA must find system - files, of course.) - - A Archive (t3). When this attribute is set, it signals - some archival programs that the file has not been - modified since it was last backed up. If a file is - modified, ZSDOS and ZRDOS turn this attribute off. - CP/M does not fully support this attribute, however. - -OTHER OPTIONS: These options affect only the screen display. - - Q Quiet mode. Console output is suppressed unless there - is an error. All other operations are performed - normally. - - X Screen paging off. With this option, screen paging is - turned off. The screen can still be paused by pressing - any key except ^C. - -ERRORS: Under ZCPR3, errors will cause FA to set the program -error flag and to invoke the error handler. The error flag will -be set to the following values: - 2 invalid directory specification - 4 miscellaneous (conflicting file, no files on disk) - 10 no matching files found (no error handler) - 18 Disk read-only - 19 Invalid option - -For error code 10 (no matching files found), the error flag is -set, but the error handler is not called. - -In addition, under ZCPR 3.3 and above, an invalid directory -specification will abort FA to the error handler, but no message -is printed. - -The following error messages may be seen: - -Conflicting entry, can't set public attribute - If there are files with the same name in other user areas of - the disk, the public attribute cannot be set. - -No files on disk - The disk directory is empty. - -Bad Option: /o - The command line option shown is unknown to FILEATTR. - -Drive R/O - The drive is set to read-only by the operating system and - attributes cannot be changed. - -CP/M version 2.x required - FILEATTR will not run on this system. - -BIOS write error near directory sector n - An error occurred at or near the given directory sector, - which is expressed as a decimal offset from the beginning of - the directory. - -BIOS set track detected - FA aborting - A background program is attempting to modify the current - track setting. The background program must be removeed - before running FA again. - -Not Wheel - Under ZCPR3 the wheel byte must be set before FILEATTR can - be run. - -CONFIGURATION: While no installation is necessary, all options -can be set as defaults, if you prefer, using ZCNFG. The -configuration options are fully explained on the ZCNFG help -screens. - -It is best not to change the name of the configuration file. Its -special name assures that ZCNFG will always find the correct CFG -file, even if the name of FA has been changed or if more than one -version of FA is online. - -HISTORY: - -Version 1.6 -- April 14, 1991 -- Gene Pizzetta - Now displays target DU and directory name in summary. Fixed - bug that caused "GO" to be displayed as program name, if it - was re-invoked with the GO command. - -Version 1.5 -- March 27, 1991 -- Gene Pizzetta - Now calls CP/M version checking routine (it was there, but - it wasn't called). Changed error codes: 10, no matching - files found. "No files on disk" error now gets - miscellaneous error code (4). Error 10 does not invoke - error handler. Not released. - -Version 1.4 -- March 20, 1991 -- Gene Pizzetta, Howard Goldstein - Code to check module data byte (S2) was replaced by Howard - Goldstein's elegant solution which uses a "true" extent - number: ((data_mod * 32) + extent). Entering a ^C no - longer really aborts FILEATTR; instead FA immediately prints - "Wait..." on the screen, turns off paging, turns on quiet - mode, sets the results flag, and finishes what it was doing. - All this is to prevent unexpected results when only some of - a file's directory entries are changed. All errors - including a conflicting file found during a PUBLIC request, - now set the program error flag and invoke the error handler - so an active SUBMIT or ZEX script can be aborted. The error - flag will have the following values: 2, invalid directory; - 10, no files on disk; 18, disk is read-only; 19, invalid - option; 4, all other errors. If no matching files are - found, the program error flag will be set to FFh, but the - error handler will not be invoked. A few other code changes - were made, including a check for CP/M-Plus, under which - FILEATTR will not work. Not released. - -Version 1.3 -- February 22, 1991 -- Gene Pizzetta - Corrected bug that caused faulty operation on large files: - The module data byte (S2) byte was not being checked, so - such files appeared 2 or more times in the directory display - and the public routine was often not finding conflicting - files. Added configuration byte and command line option (X) - for screen paging (paging is suppressed in quiet mode). - Made quiet mode responsive to ZCPR quiet flag and changed Q - command line option to toggle. Usage screen reflects - current effect of X and Q toggles. Attribute configuration - area changed to be compatible with ZCNFG TOGL3 routine. - Actions of D and ND options reversed so they work the same - as the others. Added configuration byte for printing - summary line even in quiet mode, as suggested by Howard - Goldstein. Removed blank lines from screen display, - allowing three more filenames to be shown. Removed tabs - from usage screen so PRINT and PSTR are not needed. - Eliminated leading zero from user number display. Now - prints "file" instead of "files" in summary when only 1 - matching file is found. Ditto for attribute(s) altered. - -Version 1.2 -- November 30, 1988 -- Carson Wilson - Fixed bug of no program name display when FILEATTR's name - was 8 characters long. - -Version 1.1 -- October 30, 1988 -- Carson Wilson - Now wildcards the command forms "FA d: /options" and "FA d: - options." - -Version 1.0 -- September 26, 1988 -- Carson Wilson - If a filespec is given, no leading slash is required before - the options. Link with version 4 libraries. Removed /X - option--ZSDOS 10T always closes the first extent when a file - is written to. Changed summary to read "files matched". - -Version 0.9 -- July 7, 1988 -- Carson Wilson - Increased length of search FCB (AMBFIL) by one byte. Set up - AMBFIL as '?' + 35 binary 0's. ZRDOS and CP/M zero the - drive byte (FCB+0) during search next calls, so reinitialize - it to '?' before rescanning the directory. PROGID now - prints stored name on GO/JUMP. - -Version 0.8 -- June 26, 1988 -- Carson Wilson - Use SYSLIB PRINT for help display. VPRINT does not expand - tabs. Now traps disk track changes at the BIOS level. - Allows '-' as well as 'N' for "negate option." Auto- - wildcards FCB1 for attribute set as well as display. - -Version 0.7 -- May 24, 1988 -- Carson Wilson - Cosmetic changes to help, display. Made public routines - faster by 1/2 directory scan average. Consolidated file - attribute setting/resetting routines for efficiency and - clarity. - -Version 0.6 -- May 14, 1988 -- Carson Wilson - Changed "Publ" to "Publc" and "Priv" to "Privt". Added Q - and X options, made options installable. Added test for bad - ZCPR directory & chain to error handler. - -Version 0.5 -- May 4, 1988 -- Carson Wilson - Fixed bug at CHKRO inherited from MAKE.ASM. Uses Bridger - Mitchell's FRESET to reset disks. Uses ZCPR invocation name - in signon, help, etc. Added F4 attribute. Now includes all - valid ZSDOS attributes. Help now fully "smart" under ZCPR. - Reworked VID3.Z80 and VID4.Z80 from VLIB11 and moved them - into FA.Z80 (see end of file). Put STNDOUT mode ON by - default at beginning of each attribute display sequence for - faster ZCPR displays. - -Version 0.4 -- April 27, 1988 -- Carson Wilson - Tests for matching files at other user areas before setting - the public attribit. - -Version 0.3 -- April 26, 1988 -- Carson Wilson diff --git a/Source/RomDsk/ROM_1024KB/FA16A.FOR b/Source/RomDsk/ROM_1024KB/FA16A.FOR deleted file mode 100644 index e9ed3d43..00000000 --- a/Source/RomDsk/ROM_1024KB/FA16A.FOR +++ /dev/null @@ -1,6 +0,0 @@ -An update and bug-fix of FILEATTR (FA), a ZSDOS utility that -allows rapid setting, resetting, or displaying of file attributes -under ZSDOS, ZRDOS, and CP/M 2.2. Several additional features -are available under ZCPR3, including error flag setting, error -handler invocation, and an enhanced display. Version 1.6A adds -documentation; otherwise, same as 1.6. diff --git a/Source/RomDsk/ROM_1024KB/FA16CFG.TXT b/Source/RomDsk/ROM_1024KB/FA16CFG.TXT deleted file mode 100644 index 4067b9ba..00000000 --- a/Source/RomDsk/ROM_1024KB/FA16CFG.TXT +++ /dev/null @@ -1,39 +0,0 @@ - -Option Q -- If the ZCPR quiet flag is set, FILEATTR will always default to -quiet mode. To make quiet mode the default at all times, even when running -under CP/M, set this configuration option to "Yes". Whatever is selected -here can be toggled with the command line "Q" option. - -Option X -- A "Yes" will cause FILEATTR to page screen output by default. -A "No" will default to continuous scrolling. The chosen default can be -toggled with the command line "X" option. Screen paging is always turned -off in quiet mode. - -Option R -- As distributed, FILEATTR prints nothing to the screen when it -is operating in quiet mode. If this configuration option is "Yes", the -results summary line that gives the number of matching files found and the -number of attributes changed will be printed even in quiet mode. - -Option S -- Enter the number of lines on your video display screen. Under -ZCPR 3.3 and higher, the number of screen lines for paging is obtained from -the environment descriptor. This configuration parameter is used only if -running under CP/M. - - - Attribute Configuration Options - -As distributed, FILEATTR will not change any file attribute unless -explicitly commanded to do so by a command line option. To configure -FILEATTR to turn a file attribute ON or OFF by default, toggle the -appropriate configuration selection. - -For example, to make FILEATTR set all matching files to Public by default, -change the "Public attribute" setting to "Turn On". Then FILEATTR will set -the specified files to Public unless the /NP command line option is given -(which would cause the files to be set to Private). Since there is no -command which tells FILEATTR not to change an attribute, however, the -program will now insist on turning the Public attribute either on (default) -or off (through the /NP option). - -Most users will have neither need nor desire to change the configuration -default as distributed which will "Leave As-Is" all matching files. diff --git a/Source/RomDsk/ROM_1024KB/FILEDATE.CFG b/Source/RomDsk/ROM_1024KB/FILEDATE.CFG deleted file mode 100644 index da1ca45f..00000000 Binary files a/Source/RomDsk/ROM_1024KB/FILEDATE.CFG and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/INITDIR.CFG b/Source/RomDsk/ROM_1024KB/INITDIR.CFG deleted file mode 100644 index 96baa986..00000000 Binary files a/Source/RomDsk/ROM_1024KB/INITDIR.CFG and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/LBREXT.COM b/Source/RomDsk/ROM_1024KB/LBREXT.COM deleted file mode 100644 index c0c950e3..00000000 Binary files a/Source/RomDsk/ROM_1024KB/LBREXT.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/LDNZT.COM b/Source/RomDsk/ROM_1024KB/LDNZT.COM deleted file mode 100644 index 87cf0b47..00000000 Binary files a/Source/RomDsk/ROM_1024KB/LDNZT.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/LIB.COM b/Source/RomDsk/ROM_1024KB/LIB.COM deleted file mode 100644 index 45d7fb21..00000000 Binary files a/Source/RomDsk/ROM_1024KB/LIB.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/LINK.COM b/Source/RomDsk/ROM_1024KB/LINK.COM deleted file mode 100644 index e188fb92..00000000 Binary files a/Source/RomDsk/ROM_1024KB/LINK.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/MAC.COM b/Source/RomDsk/ROM_1024KB/MAC.COM deleted file mode 100644 index f49e835a..00000000 Binary files a/Source/RomDsk/ROM_1024KB/MAC.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/PMARC.COM b/Source/RomDsk/ROM_1024KB/PMARC.COM deleted file mode 100644 index 59bd3ef3..00000000 Binary files a/Source/RomDsk/ROM_1024KB/PMARC.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/PMEXT.COM b/Source/RomDsk/ROM_1024KB/PMEXT.COM deleted file mode 100644 index d3a51ca3..00000000 Binary files a/Source/RomDsk/ROM_1024KB/PMEXT.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/PUTBG.COM b/Source/RomDsk/ROM_1024KB/PUTBG.COM deleted file mode 100644 index 970e2d8a..00000000 Binary files a/Source/RomDsk/ROM_1024KB/PUTBG.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/RMAC.COM b/Source/RomDsk/ROM_1024KB/RMAC.COM deleted file mode 100644 index 9ab7206b..00000000 Binary files a/Source/RomDsk/ROM_1024KB/RMAC.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/RMXSUB1.COM b/Source/RomDsk/ROM_1024KB/RMXSUB1.COM deleted file mode 100644 index 34078336..00000000 Binary files a/Source/RomDsk/ROM_1024KB/RMXSUB1.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/SETTERM.COM b/Source/RomDsk/ROM_1024KB/SETTERM.COM deleted file mode 100644 index eca19bf9..00000000 Binary files a/Source/RomDsk/ROM_1024KB/SETTERM.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/SETUPZST.COM b/Source/RomDsk/ROM_1024KB/SETUPZST.COM deleted file mode 100644 index 35e4b589..00000000 Binary files a/Source/RomDsk/ROM_1024KB/SETUPZST.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/STAMPS.DAT b/Source/RomDsk/ROM_1024KB/STAMPS.DAT deleted file mode 100644 index a312ae58..00000000 Binary files a/Source/RomDsk/ROM_1024KB/STAMPS.DAT and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/TD.CFG b/Source/RomDsk/ROM_1024KB/TD.CFG deleted file mode 100644 index ab44bab9..00000000 Binary files a/Source/RomDsk/ROM_1024KB/TD.CFG and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/TERMBASE.DAT b/Source/RomDsk/ROM_1024KB/TERMBASE.DAT deleted file mode 100644 index 358d61c0..00000000 Binary files a/Source/RomDsk/ROM_1024KB/TERMBASE.DAT and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/TESTCLOK.COM b/Source/RomDsk/ROM_1024KB/TESTCLOK.COM deleted file mode 100644 index d547e2b8..00000000 Binary files a/Source/RomDsk/ROM_1024KB/TESTCLOK.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/UNCR.COM b/Source/RomDsk/ROM_1024KB/UNCR.COM deleted file mode 100644 index 42385ddd..00000000 Binary files a/Source/RomDsk/ROM_1024KB/UNCR.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/UNUARCU10.CFG b/Source/RomDsk/ROM_1024KB/UNUARCU10.CFG deleted file mode 100644 index 8de29a59..00000000 Binary files a/Source/RomDsk/ROM_1024KB/UNUARCU10.CFG and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/UNZIP.COM b/Source/RomDsk/ROM_1024KB/UNZIP.COM deleted file mode 100644 index 9da369ff..00000000 Binary files a/Source/RomDsk/ROM_1024KB/UNZIP.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/XSUB1.COM b/Source/RomDsk/ROM_1024KB/XSUB1.COM deleted file mode 100644 index c30996a4..00000000 Binary files a/Source/RomDsk/ROM_1024KB/XSUB1.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/ZCNFG.COM b/Source/RomDsk/ROM_1024KB/ZCNFG.COM deleted file mode 100644 index ae423dc5..00000000 Binary files a/Source/RomDsk/ROM_1024KB/ZCNFG.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/ZCNFG24.CFG b/Source/RomDsk/ROM_1024KB/ZCNFG24.CFG deleted file mode 100644 index 1bfe49bf..00000000 Binary files a/Source/RomDsk/ROM_1024KB/ZCNFG24.CFG and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/ZSID.COM b/Source/RomDsk/ROM_1024KB/ZSID.COM deleted file mode 100644 index 686b3775..00000000 Binary files a/Source/RomDsk/ROM_1024KB/ZSID.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/ZXD.CFG b/Source/RomDsk/ROM_1024KB/ZXD.CFG deleted file mode 100644 index f202ae59..00000000 Binary files a/Source/RomDsk/ROM_1024KB/ZXD.CFG and /dev/null differ diff --git a/Source/RomDsk/RAM_1024KB/ASM.COM b/Source/RomDsk/ROM_128KB/ASM.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/ASM.COM rename to Source/RomDsk/ROM_128KB/ASM.COM diff --git a/Source/RomDsk/RAM_1024KB/CLRDIR.COM b/Source/RomDsk/ROM_128KB/CLRDIR.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/CLRDIR.COM rename to Source/RomDsk/ROM_128KB/CLRDIR.COM diff --git a/Source/RomDsk/RAM_1024KB/DDT.COM b/Source/RomDsk/ROM_128KB/DDT.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/DDT.COM rename to Source/RomDsk/ROM_128KB/DDT.COM diff --git a/Source/RomDsk/RAM_1024KB/DDTZ.COM b/Source/RomDsk/ROM_128KB/DDTZ.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/DDTZ.COM rename to Source/RomDsk/ROM_128KB/DDTZ.COM diff --git a/Source/RomDsk/RAM_1024KB/DUMP.COM b/Source/RomDsk/ROM_128KB/DUMP.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/DUMP.COM rename to Source/RomDsk/ROM_128KB/DUMP.COM diff --git a/Source/RomDsk/RAM_1024KB/ED.COM b/Source/RomDsk/ROM_128KB/ED.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/ED.COM rename to Source/RomDsk/ROM_128KB/ED.COM diff --git a/Source/RomDsk/RAM_1024KB/LOAD.COM b/Source/RomDsk/ROM_128KB/LOAD.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/LOAD.COM rename to Source/RomDsk/ROM_128KB/LOAD.COM diff --git a/Source/RomDsk/RAM_1024KB/PIP.COM b/Source/RomDsk/ROM_128KB/PIP.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/PIP.COM rename to Source/RomDsk/ROM_128KB/PIP.COM diff --git a/Source/RomDsk/RAM_1024KB/RELOG.COM b/Source/RomDsk/ROM_128KB/RELOG.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/RELOG.COM rename to Source/RomDsk/ROM_128KB/RELOG.COM diff --git a/Source/RomDsk/RAM_1024KB/STAT.COM b/Source/RomDsk/ROM_128KB/STAT.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/STAT.COM rename to Source/RomDsk/ROM_128KB/STAT.COM diff --git a/Source/RomDsk/RAM_1024KB/SUBMIT.COM b/Source/RomDsk/ROM_128KB/SUBMIT.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/SUBMIT.COM rename to Source/RomDsk/ROM_128KB/SUBMIT.COM diff --git a/Source/RomDsk/RAM_1024KB/XSUB.COM b/Source/RomDsk/ROM_128KB/XSUB.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/XSUB.COM rename to Source/RomDsk/ROM_128KB/XSUB.COM diff --git a/Source/RomDsk/RAM_1024KB/COMPARE.COM b/Source/RomDsk/ROM_256KB/COMPARE.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/COMPARE.COM rename to Source/RomDsk/ROM_256KB/COMPARE.COM diff --git a/Source/RomDsk/RAM_1024KB/COPY.COM b/Source/RomDsk/ROM_256KB/COPY.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/COPY.COM rename to Source/RomDsk/ROM_256KB/COPY.COM diff --git a/Source/RomDsk/RAM_1024KB/FILEATTR.COM b/Source/RomDsk/ROM_256KB/FILEATTR.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/FILEATTR.COM rename to Source/RomDsk/ROM_256KB/FILEATTR.COM diff --git a/Source/RomDsk/RAM_1024KB/FILEDATE.COM b/Source/RomDsk/ROM_256KB/FILEDATE.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/FILEDATE.COM rename to Source/RomDsk/ROM_256KB/FILEDATE.COM diff --git a/Source/RomDsk/RAM_1024KB/FLASH.COM b/Source/RomDsk/ROM_256KB/FLASH.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/FLASH.COM rename to Source/RomDsk/ROM_256KB/FLASH.COM diff --git a/Source/RomDsk/RAM_1024KB/MBASIC.COM b/Source/RomDsk/ROM_256KB/MBASIC.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/MBASIC.COM rename to Source/RomDsk/ROM_256KB/MBASIC.COM diff --git a/Source/RomDsk/RAM_1024KB/SUPERSUB.COM b/Source/RomDsk/ROM_256KB/SUPERSUB.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/SUPERSUB.COM rename to Source/RomDsk/ROM_256KB/SUPERSUB.COM diff --git a/Source/RomDsk/RAM_1024KB/TD.COM b/Source/RomDsk/ROM_256KB/TD.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/TD.COM rename to Source/RomDsk/ROM_256KB/TD.COM diff --git a/Source/RomDsk/RAM_1024KB/ZDE.COM b/Source/RomDsk/ROM_256KB/ZDE.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/ZDE.COM rename to Source/RomDsk/ROM_256KB/ZDE.COM diff --git a/Source/RomDsk/RAM_1024KB/ZPATH.COM b/Source/RomDsk/ROM_256KB/ZPATH.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/ZPATH.COM rename to Source/RomDsk/ROM_256KB/ZPATH.COM diff --git a/Source/RomDsk/RAM_1024KB/ZSCONFIG.COM b/Source/RomDsk/ROM_256KB/ZSCONFIG.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/ZSCONFIG.COM rename to Source/RomDsk/ROM_256KB/ZSCONFIG.COM diff --git a/Source/RomDsk/RAM_1024KB/ZXD.COM b/Source/RomDsk/ROM_256KB/ZXD.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/ZXD.COM rename to Source/RomDsk/ROM_256KB/ZXD.COM diff --git a/Source/RomDsk/RAM_512KB/ASM.COM b/Source/RomDsk/ROM_384KB/ASM.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/ASM.COM rename to Source/RomDsk/ROM_384KB/ASM.COM diff --git a/Source/RomDsk/RAM_512KB/CLRDIR.COM b/Source/RomDsk/ROM_384KB/CLRDIR.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/CLRDIR.COM rename to Source/RomDsk/ROM_384KB/CLRDIR.COM diff --git a/Source/RomDsk/RAM_512KB/COMPARE.COM b/Source/RomDsk/ROM_384KB/COMPARE.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/COMPARE.COM rename to Source/RomDsk/ROM_384KB/COMPARE.COM diff --git a/Source/RomDsk/RAM_512KB/COPY.COM b/Source/RomDsk/ROM_384KB/COPY.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/COPY.COM rename to Source/RomDsk/ROM_384KB/COPY.COM diff --git a/Source/RomDsk/RAM_512KB/DDT.COM b/Source/RomDsk/ROM_384KB/DDT.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/DDT.COM rename to Source/RomDsk/ROM_384KB/DDT.COM diff --git a/Source/RomDsk/RAM_512KB/DDTZ.COM b/Source/RomDsk/ROM_384KB/DDTZ.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/DDTZ.COM rename to Source/RomDsk/ROM_384KB/DDTZ.COM diff --git a/Source/RomDsk/RAM_512KB/DUMP.COM b/Source/RomDsk/ROM_384KB/DUMP.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/DUMP.COM rename to Source/RomDsk/ROM_384KB/DUMP.COM diff --git a/Source/RomDsk/RAM_512KB/ED.COM b/Source/RomDsk/ROM_384KB/ED.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/ED.COM rename to Source/RomDsk/ROM_384KB/ED.COM diff --git a/Source/RomDsk/RAM_1024KB/FAT.COM b/Source/RomDsk/ROM_384KB/FAT.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/FAT.COM rename to Source/RomDsk/ROM_384KB/FAT.COM diff --git a/Source/RomDsk/RAM_1024KB/FDISK80.COM b/Source/RomDsk/ROM_384KB/FDISK80.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/FDISK80.COM rename to Source/RomDsk/ROM_384KB/FDISK80.COM diff --git a/Source/RomDsk/RAM_512KB/FILEATTR.COM b/Source/RomDsk/ROM_384KB/FILEATTR.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/FILEATTR.COM rename to Source/RomDsk/ROM_384KB/FILEATTR.COM diff --git a/Source/RomDsk/RAM_512KB/FILEDATE.COM b/Source/RomDsk/ROM_384KB/FILEDATE.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/FILEDATE.COM rename to Source/RomDsk/ROM_384KB/FILEDATE.COM diff --git a/Source/RomDsk/RAM_512KB/FLASH.COM b/Source/RomDsk/ROM_384KB/FLASH.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/FLASH.COM rename to Source/RomDsk/ROM_384KB/FLASH.COM diff --git a/Source/RomDsk/RAM_1024KB/INITDIR.COM b/Source/RomDsk/ROM_384KB/INITDIR.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/INITDIR.COM rename to Source/RomDsk/ROM_384KB/INITDIR.COM diff --git a/Source/RomDsk/RAM_1024KB/LDDS.COM b/Source/RomDsk/ROM_384KB/LDDS.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/LDDS.COM rename to Source/RomDsk/ROM_384KB/LDDS.COM diff --git a/Source/RomDsk/RAM_1024KB/LDP2D.COM b/Source/RomDsk/ROM_384KB/LDP2D.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/LDP2D.COM rename to Source/RomDsk/ROM_384KB/LDP2D.COM diff --git a/Source/RomDsk/RAM_512KB/LOAD.COM b/Source/RomDsk/ROM_384KB/LOAD.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/LOAD.COM rename to Source/RomDsk/ROM_384KB/LOAD.COM diff --git a/Source/RomDsk/RAM_512KB/MBASIC.COM b/Source/RomDsk/ROM_384KB/MBASIC.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/MBASIC.COM rename to Source/RomDsk/ROM_384KB/MBASIC.COM diff --git a/Source/RomDsk/RAM_1024KB/NULU.COM b/Source/RomDsk/ROM_384KB/NULU.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/NULU.COM rename to Source/RomDsk/ROM_384KB/NULU.COM diff --git a/Source/RomDsk/RAM_512KB/PIP.COM b/Source/RomDsk/ROM_384KB/PIP.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/PIP.COM rename to Source/RomDsk/ROM_384KB/PIP.COM diff --git a/Source/RomDsk/RAM_1024KB/PUTDS.COM b/Source/RomDsk/ROM_384KB/PUTDS.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/PUTDS.COM rename to Source/RomDsk/ROM_384KB/PUTDS.COM diff --git a/Source/RomDsk/RAM_512KB/RELOG.COM b/Source/RomDsk/ROM_384KB/RELOG.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/RELOG.COM rename to Source/RomDsk/ROM_384KB/RELOG.COM diff --git a/Source/RomDsk/RAM_512KB/STAT.COM b/Source/RomDsk/ROM_384KB/STAT.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/STAT.COM rename to Source/RomDsk/ROM_384KB/STAT.COM diff --git a/Source/RomDsk/RAM_512KB/SUBMIT.COM b/Source/RomDsk/ROM_384KB/SUBMIT.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/SUBMIT.COM rename to Source/RomDsk/ROM_384KB/SUBMIT.COM diff --git a/Source/RomDsk/RAM_512KB/SUPERSUB.COM b/Source/RomDsk/ROM_384KB/SUPERSUB.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/SUPERSUB.COM rename to Source/RomDsk/ROM_384KB/SUPERSUB.COM diff --git a/Source/RomDsk/RAM_512KB/TD.COM b/Source/RomDsk/ROM_384KB/TD.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/TD.COM rename to Source/RomDsk/ROM_384KB/TD.COM diff --git a/Source/RomDsk/RAM_1024KB/UNARC.COM b/Source/RomDsk/ROM_384KB/UNARC.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/UNARC.COM rename to Source/RomDsk/ROM_384KB/UNARC.COM diff --git a/Source/RomDsk/RAM_512KB/XSUB.COM b/Source/RomDsk/ROM_384KB/XSUB.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/XSUB.COM rename to Source/RomDsk/ROM_384KB/XSUB.COM diff --git a/Source/RomDsk/RAM_1024KB/ZAP.COM b/Source/RomDsk/ROM_384KB/ZAP.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/ZAP.COM rename to Source/RomDsk/ROM_384KB/ZAP.COM diff --git a/Source/RomDsk/RAM_1024KB/ZCAL.COM b/Source/RomDsk/ROM_384KB/ZCAL.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/ZCAL.COM rename to Source/RomDsk/ROM_384KB/ZCAL.COM diff --git a/Source/RomDsk/RAM_512KB/ZDE.COM b/Source/RomDsk/ROM_384KB/ZDE.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/ZDE.COM rename to Source/RomDsk/ROM_384KB/ZDE.COM diff --git a/Source/RomDsk/RAM_512KB/ZPATH.COM b/Source/RomDsk/ROM_384KB/ZPATH.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/ZPATH.COM rename to Source/RomDsk/ROM_384KB/ZPATH.COM diff --git a/Source/RomDsk/RAM_512KB/ZSCONFIG.COM b/Source/RomDsk/ROM_384KB/ZSCONFIG.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/ZSCONFIG.COM rename to Source/RomDsk/ROM_384KB/ZSCONFIG.COM diff --git a/Source/RomDsk/RAM_512KB/ZXD.COM b/Source/RomDsk/ROM_384KB/ZXD.COM similarity index 100% rename from Source/RomDsk/RAM_512KB/ZXD.COM rename to Source/RomDsk/ROM_384KB/ZXD.COM diff --git a/Source/RomDsk/ROM_512KB/ASM.COM b/Source/RomDsk/ROM_512KB/ASM.COM deleted file mode 100644 index a63e5aec..00000000 Binary files a/Source/RomDsk/ROM_512KB/ASM.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/CLRDIR.COM b/Source/RomDsk/ROM_512KB/CLRDIR.COM deleted file mode 100644 index 9c00904f..00000000 Binary files a/Source/RomDsk/ROM_512KB/CLRDIR.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/COMPARE.COM b/Source/RomDsk/ROM_512KB/COMPARE.COM deleted file mode 100644 index 29fa41e6..00000000 Binary files a/Source/RomDsk/ROM_512KB/COMPARE.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/COPY.COM b/Source/RomDsk/ROM_512KB/COPY.COM deleted file mode 100644 index 606c81a5..00000000 Binary files a/Source/RomDsk/ROM_512KB/COPY.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/DDT.COM b/Source/RomDsk/ROM_512KB/DDT.COM deleted file mode 100644 index 70e4ebfe..00000000 Binary files a/Source/RomDsk/ROM_512KB/DDT.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/DDTZ.COM b/Source/RomDsk/ROM_512KB/DDTZ.COM deleted file mode 100644 index 4f6eca6b..00000000 Binary files a/Source/RomDsk/ROM_512KB/DDTZ.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/DUMP.COM b/Source/RomDsk/ROM_512KB/DUMP.COM deleted file mode 100644 index 03a77c3c..00000000 Binary files a/Source/RomDsk/ROM_512KB/DUMP.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/ED.COM b/Source/RomDsk/ROM_512KB/ED.COM deleted file mode 100644 index a0f0f541..00000000 Binary files a/Source/RomDsk/ROM_512KB/ED.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/FAT.COM b/Source/RomDsk/ROM_512KB/FAT.COM deleted file mode 100644 index 004760fb..00000000 Binary files a/Source/RomDsk/ROM_512KB/FAT.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/FDISK80.COM b/Source/RomDsk/ROM_512KB/FDISK80.COM deleted file mode 100644 index 2a565dae..00000000 Binary files a/Source/RomDsk/ROM_512KB/FDISK80.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/FILEATTR.COM b/Source/RomDsk/ROM_512KB/FILEATTR.COM deleted file mode 100644 index 4527d090..00000000 Binary files a/Source/RomDsk/ROM_512KB/FILEATTR.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/FILEDATE.COM b/Source/RomDsk/ROM_512KB/FILEDATE.COM deleted file mode 100644 index 11b83616..00000000 Binary files a/Source/RomDsk/ROM_512KB/FILEDATE.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/FLASH.COM b/Source/RomDsk/ROM_512KB/FLASH.COM deleted file mode 100644 index ab46a910..00000000 Binary files a/Source/RomDsk/ROM_512KB/FLASH.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/INITDIR.COM b/Source/RomDsk/ROM_512KB/INITDIR.COM deleted file mode 100644 index fd46387a..00000000 Binary files a/Source/RomDsk/ROM_512KB/INITDIR.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/LDDS.COM b/Source/RomDsk/ROM_512KB/LDDS.COM deleted file mode 100644 index 357f1360..00000000 Binary files a/Source/RomDsk/ROM_512KB/LDDS.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/LDP2D.COM b/Source/RomDsk/ROM_512KB/LDP2D.COM deleted file mode 100644 index a89e03d8..00000000 Binary files a/Source/RomDsk/ROM_512KB/LDP2D.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/LOAD.COM b/Source/RomDsk/ROM_512KB/LOAD.COM deleted file mode 100644 index b9601e00..00000000 Binary files a/Source/RomDsk/ROM_512KB/LOAD.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/MBASIC.COM b/Source/RomDsk/ROM_512KB/MBASIC.COM deleted file mode 100644 index c9ec3cd3..00000000 Binary files a/Source/RomDsk/ROM_512KB/MBASIC.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/NULU.COM b/Source/RomDsk/ROM_512KB/NULU.COM deleted file mode 100644 index fc5594b1..00000000 Binary files a/Source/RomDsk/ROM_512KB/NULU.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/PIP.COM b/Source/RomDsk/ROM_512KB/PIP.COM deleted file mode 100644 index 4b2ce4b6..00000000 Binary files a/Source/RomDsk/ROM_512KB/PIP.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/PUTDS.COM b/Source/RomDsk/ROM_512KB/PUTDS.COM deleted file mode 100644 index c0ceba64..00000000 Binary files a/Source/RomDsk/ROM_512KB/PUTDS.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/RELOG.COM b/Source/RomDsk/ROM_512KB/RELOG.COM deleted file mode 100644 index 13ffc62e..00000000 Binary files a/Source/RomDsk/ROM_512KB/RELOG.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/STAT.COM b/Source/RomDsk/ROM_512KB/STAT.COM deleted file mode 100644 index 1de359f2..00000000 Binary files a/Source/RomDsk/ROM_512KB/STAT.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/SUBMIT.COM b/Source/RomDsk/ROM_512KB/SUBMIT.COM deleted file mode 100644 index f651bfee..00000000 Binary files a/Source/RomDsk/ROM_512KB/SUBMIT.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/SUPERSUB.COM b/Source/RomDsk/ROM_512KB/SUPERSUB.COM deleted file mode 100644 index 77403973..00000000 Binary files a/Source/RomDsk/ROM_512KB/SUPERSUB.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/TD.COM b/Source/RomDsk/ROM_512KB/TD.COM deleted file mode 100644 index 552aba67..00000000 Binary files a/Source/RomDsk/ROM_512KB/TD.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/UNARC.COM b/Source/RomDsk/ROM_512KB/UNARC.COM deleted file mode 100644 index 27ee7afa..00000000 Binary files a/Source/RomDsk/ROM_512KB/UNARC.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/XSUB.COM b/Source/RomDsk/ROM_512KB/XSUB.COM deleted file mode 100644 index 15e86abf..00000000 Binary files a/Source/RomDsk/ROM_512KB/XSUB.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/ZAP.COM b/Source/RomDsk/ROM_512KB/ZAP.COM deleted file mode 100644 index be4dbf38..00000000 Binary files a/Source/RomDsk/ROM_512KB/ZAP.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/ZCAL.COM b/Source/RomDsk/ROM_512KB/ZCAL.COM deleted file mode 100644 index f239e952..00000000 Binary files a/Source/RomDsk/ROM_512KB/ZCAL.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/ZDE.COM b/Source/RomDsk/ROM_512KB/ZDE.COM deleted file mode 100644 index b80559be..00000000 Binary files a/Source/RomDsk/ROM_512KB/ZDE.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/ZPATH.COM b/Source/RomDsk/ROM_512KB/ZPATH.COM deleted file mode 100644 index 5c0aa503..00000000 Binary files a/Source/RomDsk/ROM_512KB/ZPATH.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/ZSCONFIG.COM b/Source/RomDsk/ROM_512KB/ZSCONFIG.COM deleted file mode 100644 index 2cc26074..00000000 Binary files a/Source/RomDsk/ROM_512KB/ZSCONFIG.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_512KB/ZXD.COM b/Source/RomDsk/ROM_512KB/ZXD.COM deleted file mode 100644 index 20395673..00000000 Binary files a/Source/RomDsk/ROM_512KB/ZXD.COM and /dev/null differ diff --git a/Source/RomDsk/ROM_1024KB/ASM.COM b/Source/RomDsk/ROM_896KB/ASM.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/ASM.COM rename to Source/RomDsk/ROM_896KB/ASM.COM diff --git a/Source/RomDsk/RAM_1024KB/CLOCKS.DAT b/Source/RomDsk/ROM_896KB/CLOCKS.DAT similarity index 100% rename from Source/RomDsk/RAM_1024KB/CLOCKS.DAT rename to Source/RomDsk/ROM_896KB/CLOCKS.DAT diff --git a/Source/RomDsk/ROM_1024KB/CLRDIR.COM b/Source/RomDsk/ROM_896KB/CLRDIR.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/CLRDIR.COM rename to Source/RomDsk/ROM_896KB/CLRDIR.COM diff --git a/Source/RomDsk/ROM_1024KB/COMPARE.COM b/Source/RomDsk/ROM_896KB/COMPARE.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/COMPARE.COM rename to Source/RomDsk/ROM_896KB/COMPARE.COM diff --git a/Source/RomDsk/RAM_1024KB/COPY.CFG b/Source/RomDsk/ROM_896KB/COPY.CFG similarity index 100% rename from Source/RomDsk/RAM_1024KB/COPY.CFG rename to Source/RomDsk/ROM_896KB/COPY.CFG diff --git a/Source/RomDsk/ROM_1024KB/COPY.COM b/Source/RomDsk/ROM_896KB/COPY.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/COPY.COM rename to Source/RomDsk/ROM_896KB/COPY.COM diff --git a/Source/RomDsk/RAM_1024KB/COPY.UPD b/Source/RomDsk/ROM_896KB/COPY.UPD similarity index 100% rename from Source/RomDsk/RAM_1024KB/COPY.UPD rename to Source/RomDsk/ROM_896KB/COPY.UPD diff --git a/Source/RomDsk/RAM_1024KB/CR.COM b/Source/RomDsk/ROM_896KB/CR.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/CR.COM rename to Source/RomDsk/ROM_896KB/CR.COM diff --git a/Source/RomDsk/RAM_1024KB/DATSWEEP.COM b/Source/RomDsk/ROM_896KB/DATSWEEP.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/DATSWEEP.COM rename to Source/RomDsk/ROM_896KB/DATSWEEP.COM diff --git a/Source/RomDsk/ROM_1024KB/DDT.COM b/Source/RomDsk/ROM_896KB/DDT.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/DDT.COM rename to Source/RomDsk/ROM_896KB/DDT.COM diff --git a/Source/RomDsk/ROM_1024KB/DDTZ.COM b/Source/RomDsk/ROM_896KB/DDTZ.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/DDTZ.COM rename to Source/RomDsk/ROM_896KB/DDTZ.COM diff --git a/Source/RomDsk/RAM_1024KB/DDTZ.DOC b/Source/RomDsk/ROM_896KB/DDTZ.DOC similarity index 100% rename from Source/RomDsk/RAM_1024KB/DDTZ.DOC rename to Source/RomDsk/ROM_896KB/DDTZ.DOC diff --git a/Source/RomDsk/RAM_1024KB/DIRX.COM b/Source/RomDsk/ROM_896KB/DIRX.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/DIRX.COM rename to Source/RomDsk/ROM_896KB/DIRX.COM diff --git a/Source/RomDsk/RAM_1024KB/DSCONFIG.COM b/Source/RomDsk/ROM_896KB/DSCONFIG.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/DSCONFIG.COM rename to Source/RomDsk/ROM_896KB/DSCONFIG.COM diff --git a/Source/RomDsk/ROM_1024KB/DUMP.COM b/Source/RomDsk/ROM_896KB/DUMP.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/DUMP.COM rename to Source/RomDsk/ROM_896KB/DUMP.COM diff --git a/Source/RomDsk/ROM_1024KB/ED.COM b/Source/RomDsk/ROM_896KB/ED.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/ED.COM rename to Source/RomDsk/ROM_896KB/ED.COM diff --git a/Source/RomDsk/RAM_1024KB/EX.COM b/Source/RomDsk/ROM_896KB/EX.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/EX.COM rename to Source/RomDsk/ROM_896KB/EX.COM diff --git a/Source/RomDsk/RAM_1024KB/FA16.CFG b/Source/RomDsk/ROM_896KB/FA16.CFG similarity index 100% rename from Source/RomDsk/RAM_1024KB/FA16.CFG rename to Source/RomDsk/ROM_896KB/FA16.CFG diff --git a/Source/RomDsk/RAM_1024KB/FA16.DOC b/Source/RomDsk/ROM_896KB/FA16.DOC similarity index 100% rename from Source/RomDsk/RAM_1024KB/FA16.DOC rename to Source/RomDsk/ROM_896KB/FA16.DOC diff --git a/Source/RomDsk/RAM_1024KB/FA16A.FOR b/Source/RomDsk/ROM_896KB/FA16A.FOR similarity index 100% rename from Source/RomDsk/RAM_1024KB/FA16A.FOR rename to Source/RomDsk/ROM_896KB/FA16A.FOR diff --git a/Source/RomDsk/RAM_1024KB/FA16CFG.TXT b/Source/RomDsk/ROM_896KB/FA16CFG.TXT similarity index 100% rename from Source/RomDsk/RAM_1024KB/FA16CFG.TXT rename to Source/RomDsk/ROM_896KB/FA16CFG.TXT diff --git a/Source/RomDsk/ROM_1024KB/FAT.COM b/Source/RomDsk/ROM_896KB/FAT.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/FAT.COM rename to Source/RomDsk/ROM_896KB/FAT.COM diff --git a/Source/RomDsk/ROM_1024KB/FDISK80.COM b/Source/RomDsk/ROM_896KB/FDISK80.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/FDISK80.COM rename to Source/RomDsk/ROM_896KB/FDISK80.COM diff --git a/Source/RomDsk/ROM_1024KB/FILEATTR.COM b/Source/RomDsk/ROM_896KB/FILEATTR.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/FILEATTR.COM rename to Source/RomDsk/ROM_896KB/FILEATTR.COM diff --git a/Source/RomDsk/RAM_1024KB/FILEDATE.CFG b/Source/RomDsk/ROM_896KB/FILEDATE.CFG similarity index 100% rename from Source/RomDsk/RAM_1024KB/FILEDATE.CFG rename to Source/RomDsk/ROM_896KB/FILEDATE.CFG diff --git a/Source/RomDsk/ROM_1024KB/FILEDATE.COM b/Source/RomDsk/ROM_896KB/FILEDATE.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/FILEDATE.COM rename to Source/RomDsk/ROM_896KB/FILEDATE.COM diff --git a/Source/RomDsk/ROM_1024KB/FLASH.COM b/Source/RomDsk/ROM_896KB/FLASH.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/FLASH.COM rename to Source/RomDsk/ROM_896KB/FLASH.COM diff --git a/Source/RomDsk/RAM_1024KB/INITDIR.CFG b/Source/RomDsk/ROM_896KB/INITDIR.CFG similarity index 100% rename from Source/RomDsk/RAM_1024KB/INITDIR.CFG rename to Source/RomDsk/ROM_896KB/INITDIR.CFG diff --git a/Source/RomDsk/ROM_1024KB/INITDIR.COM b/Source/RomDsk/ROM_896KB/INITDIR.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/INITDIR.COM rename to Source/RomDsk/ROM_896KB/INITDIR.COM diff --git a/Source/RomDsk/RAM_1024KB/LBREXT.COM b/Source/RomDsk/ROM_896KB/LBREXT.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/LBREXT.COM rename to Source/RomDsk/ROM_896KB/LBREXT.COM diff --git a/Source/RomDsk/ROM_1024KB/LDDS.COM b/Source/RomDsk/ROM_896KB/LDDS.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/LDDS.COM rename to Source/RomDsk/ROM_896KB/LDDS.COM diff --git a/Source/RomDsk/RAM_1024KB/LDNZT.COM b/Source/RomDsk/ROM_896KB/LDNZT.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/LDNZT.COM rename to Source/RomDsk/ROM_896KB/LDNZT.COM diff --git a/Source/RomDsk/ROM_1024KB/LDP2D.COM b/Source/RomDsk/ROM_896KB/LDP2D.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/LDP2D.COM rename to Source/RomDsk/ROM_896KB/LDP2D.COM diff --git a/Source/RomDsk/RAM_1024KB/LIB.COM b/Source/RomDsk/ROM_896KB/LIB.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/LIB.COM rename to Source/RomDsk/ROM_896KB/LIB.COM diff --git a/Source/RomDsk/RAM_1024KB/LINK.COM b/Source/RomDsk/ROM_896KB/LINK.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/LINK.COM rename to Source/RomDsk/ROM_896KB/LINK.COM diff --git a/Source/RomDsk/ROM_1024KB/LOAD.COM b/Source/RomDsk/ROM_896KB/LOAD.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/LOAD.COM rename to Source/RomDsk/ROM_896KB/LOAD.COM diff --git a/Source/RomDsk/RAM_1024KB/MAC.COM b/Source/RomDsk/ROM_896KB/MAC.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/MAC.COM rename to Source/RomDsk/ROM_896KB/MAC.COM diff --git a/Source/RomDsk/ROM_1024KB/MBASIC.COM b/Source/RomDsk/ROM_896KB/MBASIC.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/MBASIC.COM rename to Source/RomDsk/ROM_896KB/MBASIC.COM diff --git a/Source/RomDsk/ROM_1024KB/NULU.COM b/Source/RomDsk/ROM_896KB/NULU.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/NULU.COM rename to Source/RomDsk/ROM_896KB/NULU.COM diff --git a/Source/RomDsk/ROM_1024KB/PIP.COM b/Source/RomDsk/ROM_896KB/PIP.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/PIP.COM rename to Source/RomDsk/ROM_896KB/PIP.COM diff --git a/Source/RomDsk/RAM_1024KB/PMARC.COM b/Source/RomDsk/ROM_896KB/PMARC.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/PMARC.COM rename to Source/RomDsk/ROM_896KB/PMARC.COM diff --git a/Source/RomDsk/RAM_1024KB/PMEXT.COM b/Source/RomDsk/ROM_896KB/PMEXT.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/PMEXT.COM rename to Source/RomDsk/ROM_896KB/PMEXT.COM diff --git a/Source/RomDsk/RAM_1024KB/PUTBG.COM b/Source/RomDsk/ROM_896KB/PUTBG.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/PUTBG.COM rename to Source/RomDsk/ROM_896KB/PUTBG.COM diff --git a/Source/RomDsk/ROM_1024KB/PUTDS.COM b/Source/RomDsk/ROM_896KB/PUTDS.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/PUTDS.COM rename to Source/RomDsk/ROM_896KB/PUTDS.COM diff --git a/Source/RomDsk/ROM_1024KB/RELOG.COM b/Source/RomDsk/ROM_896KB/RELOG.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/RELOG.COM rename to Source/RomDsk/ROM_896KB/RELOG.COM diff --git a/Source/RomDsk/RAM_1024KB/RMAC.COM b/Source/RomDsk/ROM_896KB/RMAC.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/RMAC.COM rename to Source/RomDsk/ROM_896KB/RMAC.COM diff --git a/Source/RomDsk/RAM_1024KB/RMXSUB1.COM b/Source/RomDsk/ROM_896KB/RMXSUB1.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/RMXSUB1.COM rename to Source/RomDsk/ROM_896KB/RMXSUB1.COM diff --git a/Source/RomDsk/RAM_1024KB/SETTERM.COM b/Source/RomDsk/ROM_896KB/SETTERM.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/SETTERM.COM rename to Source/RomDsk/ROM_896KB/SETTERM.COM diff --git a/Source/RomDsk/RAM_1024KB/SETUPZST.COM b/Source/RomDsk/ROM_896KB/SETUPZST.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/SETUPZST.COM rename to Source/RomDsk/ROM_896KB/SETUPZST.COM diff --git a/Source/RomDsk/RAM_1024KB/STAMPS.DAT b/Source/RomDsk/ROM_896KB/STAMPS.DAT similarity index 100% rename from Source/RomDsk/RAM_1024KB/STAMPS.DAT rename to Source/RomDsk/ROM_896KB/STAMPS.DAT diff --git a/Source/RomDsk/ROM_1024KB/STAT.COM b/Source/RomDsk/ROM_896KB/STAT.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/STAT.COM rename to Source/RomDsk/ROM_896KB/STAT.COM diff --git a/Source/RomDsk/ROM_1024KB/SUBMIT.COM b/Source/RomDsk/ROM_896KB/SUBMIT.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/SUBMIT.COM rename to Source/RomDsk/ROM_896KB/SUBMIT.COM diff --git a/Source/RomDsk/ROM_1024KB/SUPERSUB.COM b/Source/RomDsk/ROM_896KB/SUPERSUB.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/SUPERSUB.COM rename to Source/RomDsk/ROM_896KB/SUPERSUB.COM diff --git a/Source/RomDsk/RAM_1024KB/TD.CFG b/Source/RomDsk/ROM_896KB/TD.CFG similarity index 100% rename from Source/RomDsk/RAM_1024KB/TD.CFG rename to Source/RomDsk/ROM_896KB/TD.CFG diff --git a/Source/RomDsk/ROM_1024KB/TD.COM b/Source/RomDsk/ROM_896KB/TD.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/TD.COM rename to Source/RomDsk/ROM_896KB/TD.COM diff --git a/Source/RomDsk/RAM_1024KB/TERMBASE.DAT b/Source/RomDsk/ROM_896KB/TERMBASE.DAT similarity index 100% rename from Source/RomDsk/RAM_1024KB/TERMBASE.DAT rename to Source/RomDsk/ROM_896KB/TERMBASE.DAT diff --git a/Source/RomDsk/RAM_1024KB/TESTCLOK.COM b/Source/RomDsk/ROM_896KB/TESTCLOK.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/TESTCLOK.COM rename to Source/RomDsk/ROM_896KB/TESTCLOK.COM diff --git a/Source/RomDsk/ROM_1024KB/UNARC.COM b/Source/RomDsk/ROM_896KB/UNARC.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/UNARC.COM rename to Source/RomDsk/ROM_896KB/UNARC.COM diff --git a/Source/RomDsk/RAM_1024KB/UNCR.COM b/Source/RomDsk/ROM_896KB/UNCR.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/UNCR.COM rename to Source/RomDsk/ROM_896KB/UNCR.COM diff --git a/Source/RomDsk/RAM_1024KB/UNUARCU10.CFG b/Source/RomDsk/ROM_896KB/UNUARCU10.CFG similarity index 100% rename from Source/RomDsk/RAM_1024KB/UNUARCU10.CFG rename to Source/RomDsk/ROM_896KB/UNUARCU10.CFG diff --git a/Source/RomDsk/RAM_1024KB/UNZIP.COM b/Source/RomDsk/ROM_896KB/UNZIP.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/UNZIP.COM rename to Source/RomDsk/ROM_896KB/UNZIP.COM diff --git a/Source/RomDsk/ROM_1024KB/XSUB.COM b/Source/RomDsk/ROM_896KB/XSUB.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/XSUB.COM rename to Source/RomDsk/ROM_896KB/XSUB.COM diff --git a/Source/RomDsk/RAM_1024KB/XSUB1.COM b/Source/RomDsk/ROM_896KB/XSUB1.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/XSUB1.COM rename to Source/RomDsk/ROM_896KB/XSUB1.COM diff --git a/Source/RomDsk/ROM_1024KB/ZAP.COM b/Source/RomDsk/ROM_896KB/ZAP.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/ZAP.COM rename to Source/RomDsk/ROM_896KB/ZAP.COM diff --git a/Source/RomDsk/ROM_1024KB/ZCAL.COM b/Source/RomDsk/ROM_896KB/ZCAL.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/ZCAL.COM rename to Source/RomDsk/ROM_896KB/ZCAL.COM diff --git a/Source/RomDsk/RAM_1024KB/ZCNFG.COM b/Source/RomDsk/ROM_896KB/ZCNFG.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/ZCNFG.COM rename to Source/RomDsk/ROM_896KB/ZCNFG.COM diff --git a/Source/RomDsk/RAM_1024KB/ZCNFG24.CFG b/Source/RomDsk/ROM_896KB/ZCNFG24.CFG similarity index 100% rename from Source/RomDsk/RAM_1024KB/ZCNFG24.CFG rename to Source/RomDsk/ROM_896KB/ZCNFG24.CFG diff --git a/Source/RomDsk/ROM_1024KB/ZDE.COM b/Source/RomDsk/ROM_896KB/ZDE.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/ZDE.COM rename to Source/RomDsk/ROM_896KB/ZDE.COM diff --git a/Source/RomDsk/ROM_1024KB/ZDE.DOC b/Source/RomDsk/ROM_896KB/ZDE.DOC similarity index 100% rename from Source/RomDsk/ROM_1024KB/ZDE.DOC rename to Source/RomDsk/ROM_896KB/ZDE.DOC diff --git a/Source/RomDsk/ROM_1024KB/ZDENST.COM b/Source/RomDsk/ROM_896KB/ZDENST.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/ZDENST.COM rename to Source/RomDsk/ROM_896KB/ZDENST.COM diff --git a/Source/RomDsk/ROM_1024KB/ZPATH.COM b/Source/RomDsk/ROM_896KB/ZPATH.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/ZPATH.COM rename to Source/RomDsk/ROM_896KB/ZPATH.COM diff --git a/Source/RomDsk/ROM_1024KB/ZSCONFIG.COM b/Source/RomDsk/ROM_896KB/ZSCONFIG.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/ZSCONFIG.COM rename to Source/RomDsk/ROM_896KB/ZSCONFIG.COM diff --git a/Source/RomDsk/RAM_1024KB/ZSID.COM b/Source/RomDsk/ROM_896KB/ZSID.COM similarity index 100% rename from Source/RomDsk/RAM_1024KB/ZSID.COM rename to Source/RomDsk/ROM_896KB/ZSID.COM diff --git a/Source/RomDsk/ROM_1024KB/ZSVSTAMP.COM b/Source/RomDsk/ROM_896KB/ZSVSTAMP.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/ZSVSTAMP.COM rename to Source/RomDsk/ROM_896KB/ZSVSTAMP.COM diff --git a/Source/RomDsk/ROM_1024KB/ZSVSTAMP.DOC b/Source/RomDsk/ROM_896KB/ZSVSTAMP.DOC similarity index 100% rename from Source/RomDsk/ROM_1024KB/ZSVSTAMP.DOC rename to Source/RomDsk/ROM_896KB/ZSVSTAMP.DOC diff --git a/Source/RomDsk/RAM_1024KB/ZXD.CFG b/Source/RomDsk/ROM_896KB/ZXD.CFG similarity index 100% rename from Source/RomDsk/RAM_1024KB/ZXD.CFG rename to Source/RomDsk/ROM_896KB/ZXD.CFG diff --git a/Source/RomDsk/ROM_1024KB/ZXD.COM b/Source/RomDsk/ROM_896KB/ZXD.COM similarity index 100% rename from Source/RomDsk/ROM_1024KB/ZXD.COM rename to Source/RomDsk/ROM_896KB/ZXD.COM diff --git a/Source/RomDsk/diskdefs b/Source/RomDsk/diskdefs index f29deca1..3e8c5970 100644 --- a/Source/RomDsk/diskdefs +++ b/Source/RomDsk/diskdefs @@ -271,9 +271,9 @@ diskdef interak os 2.2 end -# RomWBW 256KB ROM (128KB reserved, 128KB ROM Disk) +# RomWBW 128KB ROM Disk -diskdef wbw_rom256 +diskdef wbw_rom128 seclen 512 tracks 4 sectrk 64 @@ -284,24 +284,11 @@ diskdef wbw_rom256 os 2.2 end -# RomWBW 512KB ROM (128KB reserved, 384KB ROM Disk) - -diskdef wbw_rom512 - seclen 512 - tracks 12 - sectrk 64 - blocksize 2048 - maxdir 256 - skew 0 - boottrk 0 - os 2.2 -end - -# RomWBW 1024KB ROM (128KB reserved, 896KB ROM Disk) +# RomWBW 256KB ROM Disk -diskdef wbw_rom1024 +diskdef wbw_rom256 seclen 512 - tracks 28 + tracks 8 sectrk 64 blocksize 2048 maxdir 256 @@ -310,11 +297,11 @@ diskdef wbw_rom1024 os 2.2 end -# RomWBW 512KB RAM (256KB reserved, 256KB RAM Disk) +# RomWBW 384KB ROM Disk -diskdef wbw_ram512 +diskdef wbw_rom384 seclen 512 - tracks 8 + tracks 12 sectrk 64 blocksize 2048 maxdir 256 @@ -323,11 +310,11 @@ diskdef wbw_ram512 os 2.2 end -# RomWBW 1024KB RAM (256KB reserved, 768KB RAM Disk) +# RomWBW 896KB ROM Disk -diskdef wbw_ram1024 +diskdef wbw_rom896 seclen 512 - tracks 24 + tracks 28 sectrk 64 blocksize 2048 maxdir 256 diff --git a/Source/ver.inc b/Source/ver.inc index fc785228..de51cd72 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,7 +2,7 @@ #DEFINE RMN 5 #DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "3.5.0-dev.2" +#DEFINE BIOSVER "3.5.0-dev.12" #define rmj RMJ #define rmn RMN #define rup RUP diff --git a/Source/ver.lib b/Source/ver.lib index 0ee4ff09..956af273 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 5 rup equ 0 rtp equ 0 biosver macro - db "3.5.0-dev.2" + db "3.5.0-dev.12" endm diff --git a/Tools/cpmtools/diskdefs b/Tools/cpmtools/diskdefs index f29deca1..3e8c5970 100644 --- a/Tools/cpmtools/diskdefs +++ b/Tools/cpmtools/diskdefs @@ -271,9 +271,9 @@ diskdef interak os 2.2 end -# RomWBW 256KB ROM (128KB reserved, 128KB ROM Disk) +# RomWBW 128KB ROM Disk -diskdef wbw_rom256 +diskdef wbw_rom128 seclen 512 tracks 4 sectrk 64 @@ -284,24 +284,11 @@ diskdef wbw_rom256 os 2.2 end -# RomWBW 512KB ROM (128KB reserved, 384KB ROM Disk) - -diskdef wbw_rom512 - seclen 512 - tracks 12 - sectrk 64 - blocksize 2048 - maxdir 256 - skew 0 - boottrk 0 - os 2.2 -end - -# RomWBW 1024KB ROM (128KB reserved, 896KB ROM Disk) +# RomWBW 256KB ROM Disk -diskdef wbw_rom1024 +diskdef wbw_rom256 seclen 512 - tracks 28 + tracks 8 sectrk 64 blocksize 2048 maxdir 256 @@ -310,11 +297,11 @@ diskdef wbw_rom1024 os 2.2 end -# RomWBW 512KB RAM (256KB reserved, 256KB RAM Disk) +# RomWBW 384KB ROM Disk -diskdef wbw_ram512 +diskdef wbw_rom384 seclen 512 - tracks 8 + tracks 12 sectrk 64 blocksize 2048 maxdir 256 @@ -323,11 +310,11 @@ diskdef wbw_ram512 os 2.2 end -# RomWBW 1024KB RAM (256KB reserved, 768KB RAM Disk) +# RomWBW 896KB ROM Disk -diskdef wbw_ram1024 +diskdef wbw_rom896 seclen 512 - tracks 24 + tracks 28 sectrk 64 blocksize 2048 maxdir 256