From 0053a840b71aa5b7a97cb13efc34ef50496f3209 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Sun, 7 Mar 2021 16:21:49 -0800 Subject: [PATCH] Support ZZRCC --- Doc/ChangeLog.txt | 3 ++ Source/BPBIOS/diskdefs | 13 +++++ Source/CBIOS/cbios.asm | 63 +++++++++++++++++++------ Source/HBIOS/Build.ps1 | 12 +++-- Source/HBIOS/Build.sh | 8 ++-- Source/HBIOS/Config/RCZ280_nat_zz.asm | 2 + Source/HBIOS/Config/RCZ280_nat_zzr.asm | 44 +++++++++++++++++ Source/HBIOS/Makefile | 2 + Source/HBIOS/cfg_dyno.asm | 4 ++ Source/HBIOS/cfg_ezz80.asm | 4 ++ Source/HBIOS/cfg_master.asm | 8 +++- Source/HBIOS/cfg_mk4.asm | 4 ++ Source/HBIOS/cfg_n8.asm | 4 ++ Source/HBIOS/cfg_rcz180.asm | 4 ++ Source/HBIOS/cfg_rcz280.asm | 4 ++ Source/HBIOS/cfg_rcz80.asm | 4 ++ Source/HBIOS/cfg_sbc.asm | 4 ++ Source/HBIOS/cfg_scz180.asm | 4 ++ Source/HBIOS/cfg_una.asm | 2 + Source/HBIOS/cfg_zeta.asm | 4 ++ Source/HBIOS/cfg_zeta2.asm | 4 ++ Source/HBIOS/diskdefs | 13 +++++ Source/HBIOS/game.asm | 6 +++ Source/HBIOS/md.asm | 58 ++++++++++++++++------- Source/HBIOS/std.asm | 10 ++-- Source/HBIOS/usrrom.asm | 13 ++++- Source/Images/diskdefs | 13 +++++ Source/Images/hd1024_prefix.dat | Bin 131072 -> 1048576 bytes Source/RomDsk/ROM_256KB/ASM.COM | Bin 0 -> 8192 bytes Source/RomDsk/ROM_256KB/CLRDIR.COM | Bin 0 -> 1704 bytes Source/RomDsk/ROM_256KB/DDT.COM | Bin 0 -> 4864 bytes Source/RomDsk/ROM_256KB/DDTZ.COM | Bin 0 -> 7424 bytes Source/RomDsk/ROM_256KB/DUMP.COM | Bin 0 -> 512 bytes Source/RomDsk/ROM_256KB/ED.COM | Bin 0 -> 6656 bytes Source/RomDsk/ROM_256KB/FLASH.COM | Bin 0 -> 14076 bytes Source/RomDsk/ROM_256KB/LOAD.COM | Bin 0 -> 1792 bytes Source/RomDsk/ROM_256KB/PIP.COM | Bin 0 -> 7424 bytes Source/RomDsk/ROM_256KB/RELOG.COM | Bin 0 -> 256 bytes Source/RomDsk/ROM_256KB/STAT.COM | Bin 0 -> 5248 bytes Source/RomDsk/ROM_256KB/SUBMIT.COM | Bin 0 -> 1280 bytes Source/RomDsk/ROM_256KB/XSUB.COM | Bin 0 -> 768 bytes Source/ZRC/zrc_ptbl.bin | Bin 256 -> 256 bytes Source/ver.inc | 2 +- Source/ver.lib | 2 +- Tools/cpmtools/diskdefs | 13 +++++ 45 files changed, 281 insertions(+), 50 deletions(-) create mode 100644 Source/HBIOS/Config/RCZ280_nat_zzr.asm create mode 100644 Source/RomDsk/ROM_256KB/ASM.COM create mode 100644 Source/RomDsk/ROM_256KB/CLRDIR.COM create mode 100644 Source/RomDsk/ROM_256KB/DDT.COM create mode 100644 Source/RomDsk/ROM_256KB/DDTZ.COM create mode 100644 Source/RomDsk/ROM_256KB/DUMP.COM create mode 100644 Source/RomDsk/ROM_256KB/ED.COM create mode 100644 Source/RomDsk/ROM_256KB/FLASH.COM create mode 100644 Source/RomDsk/ROM_256KB/LOAD.COM create mode 100644 Source/RomDsk/ROM_256KB/PIP.COM create mode 100644 Source/RomDsk/ROM_256KB/RELOG.COM create mode 100644 Source/RomDsk/ROM_256KB/STAT.COM create mode 100644 Source/RomDsk/ROM_256KB/SUBMIT.COM create mode 100644 Source/RomDsk/ROM_256KB/XSUB.COM diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index 947ddb71..1ffeef76 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -19,6 +19,9 @@ Version 3.1.1 - WBW: Add support Z80-512K (watchdog and LED) - WBW: Add support for ZZ80MB address map - PLS: Add support for Z180 invalid opcode trap +- WBW: Add support for ZZRCC +- WBW: Allow selection of RAM/ROM disk individually in build +- WBW: Support 256KB ROM size Version 3.1 ----------- diff --git a/Source/BPBIOS/diskdefs b/Source/BPBIOS/diskdefs index db9ef4b2..c35156b3 100644 --- a/Source/BPBIOS/diskdefs +++ b/Source/BPBIOS/diskdefs @@ -271,6 +271,19 @@ diskdef interak os 2.2 end +# RomWBW 256KB ROM (128KB reserved, 128KB ROM Disk) + +diskdef wbw_rom256 + seclen 512 + tracks 4 + sectrk 64 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 0 + os 2.2 +end + # RomWBW 512KB ROM (128KB reserved, 384KB ROM Disk) diskdef wbw_rom512 diff --git a/Source/CBIOS/cbios.asm b/Source/CBIOS/cbios.asm index 34d8647d..43a7d4c8 100644 --- a/Source/CBIOS/cbios.asm +++ b/Source/CBIOS/cbios.asm @@ -2166,6 +2166,37 @@ INIT2: CALL MD_INIT ; INITIALIZE MEMORY DISK DRIVER (RAM/ROM) CALL DRV_INIT ; INITIALIZE DRIVE MAP CALL DPH_INIT ; INITIALIZE DPH TABLE AND BUFFERS +; + ; SET THE DEFAULT DRIVE + XOR A ; ZERO ACCUM + LD (DEFDRIVE),A ; SET DEFAULT DRIVE TO A: TO START +; +#IFDEF PLTWBW +; + ; IF WE HAVE MULTIPLE DRIVES AND THE FIRST DRIVE IS RAM DRIVE + ; THEN MAKE OUR DEFAULT STARTUP DRIVE THE SECOND DRIVE (B:) + LD HL,(DRVMAPADR) ; POINT TO DRIVE MAP + DEC HL ; BUMP BACK TO DRIVE COUNT + LD A,(HL) ; GET IT + CP 2 ; COMPARE TO 2 + JR C,INIT2X ; IF LESS THAN 2, THEN DONE +; + LD B,BF_DIODEVICE ; HBIOS FUNC: REPORT DEVICE INFO + INC HL ; POINT TO UNIT FIELD + LD C,(HL) ; ... OF FIRST DRIVE + RST 08 ; CALL HBIOS + LD A,D ; DEVICE TYPE TO A + CP DIODEV_MD ; MEMORY DISK DEVICE? + JR NZ,INIT2X ; IF NOT, THEN DONE + LD A,C ; GET ATTRIBUTES + CP %00101000 ; TYPE = RAM? + JR NZ,INIT2X ; IF NOT THEN DONE + LD A,1 ; USE SECOND DRIVE AS DEFAULT + LD (DEFDRIVE),A ; RECORD DEFAULT DRIVE +; +INIT2X: +; +#ENDIF ; #IFDEF PLTUNA ; USE A DEDICATED BUFFER FOR UNA PHYSICAL DISK I/O @@ -2419,7 +2450,7 @@ MD_INIT4: LD BC,$01FB ; UNA FUNC = SET BANK LD DE,(BNKRAMD) ; FIRST BANK OF RAM DISK CALL $FFFD ; DO IT (RST 08 NOT SAFE HERE) - +; #IF (CLRRAMDISK == CLR_AUTO) ; CHECK FIRST 32 DIRECTORY ENTRIES. IF ANY START WITH AN INVALID ; VALUE, INIT THE RAM DISK. VALID ENTRIES ARE E5 (EMPTY ENTRY) OR @@ -2444,15 +2475,15 @@ CLRRAM2: LD BC,$01FB ; UNA FUNC = SET BANK LD DE,(BNKUSER) ; SWITCH BACK TO EXEC BANK FOR WRITESTR CALL $FFFD ; DO IT (RST 08 NOT SAFE HERE) - +; CALL NEWLINE2 ; FORMATTING LD DE,STR_INITRAMDISK ; RAM DISK INIT MESSAGE CALL WRITESTR ; DISPLAY IT - +; LD BC,$01FB ; UNA FUNC = SET BANK LD DE,(BNKRAMD) ; FIRST BANK OF RAM DISK CALL $FFFD ; DO IT (RST 08 NOT SAFE HERE) - +; LD HL,0 ; SOURCE ADR FOR FILL LD BC,$2000 ; LENGTH OF FILL IS 8K LD A,$E5 ; FILL VALUE @@ -2462,17 +2493,19 @@ CLRRAM3: LD DE,(BNKUSER) ; SWITCH BACK TO EXEC BANK CALL $FFFD ; DO IT (RST 08 NOT SAFE HERE) EI ; RESUME INTERRUPTS - +; #ENDIF - +; #ELSE ; ; INITIALIZE RAM DISK BY FILLING DIRECTORY WITH 'E5' BYTES ; FILL FIRST 8K OF RAM DISK TRACK 1 WITH 'E5' ; #IF (CLRRAMDISK != CLR_NEVER) - DI ; NO INTERRUPTS LD A,(BNKRAMD) ; FIRST BANK OF RAM DISK + CP $FF ; $FF SIGNIFIES NO RAM DISK + RET Z ; BAIL OUT IF NO RAM DISK + DI ; NO INTERRUPTS CALL HB_BNKSEL ; SELECT BANK #IF (CLRRAMDISK == CLR_AUTO) @@ -2679,14 +2712,14 @@ DRV_INIT: ; GET BOOT UNIT/SLICE INFO LD DE,(HCB + HCB_BOOTVOL) ; BOOT VOLUME (UNIT, SLICE) LD (BOOTVOL),DE ; D -> UNIT, E -> SLICE -; - ; INIT DEFAULT - LD A,D ; BOOT UNIT? - CP 1 ; IF ROM BOOT, DEF DRIVE SHOULD BE B: - JR Z,DRV_INIT1 ; ... SO LEAVE AS IS AND SKIP AHEAD - XOR A ; ELSE FORCE TO DRIVE A: -DRV_INIT1: - LD (DEFDRIVE),A ; STORE IT +;; +; ; INIT DEFAULT +; LD A,D ; BOOT UNIT? +; CP 1 ; IF ROM BOOT, DEF DRIVE SHOULD BE B: +; JR Z,DRV_INIT1 ; ... SO LEAVE AS IS AND SKIP AHEAD +; XOR A ; ELSE FORCE TO DRIVE A: +;DRV_INIT1: +; LD (DEFDRIVE),A ; STORE IT ; ; SETUP THE DRVMAP STRUCTURE LD HL,(HEAPTOP) ; GET CURRENT HEAP TOP diff --git a/Source/HBIOS/Build.ps1 b/Source/HBIOS/Build.ps1 index eb60585a..d9928e2f 100644 --- a/Source/HBIOS/Build.ps1 +++ b/Source/HBIOS/Build.ps1 @@ -65,8 +65,8 @@ while ($true) # while ($true) { - if (($RomSize -eq "512") -or ($RomSize -eq "1024")) {break} - $RomSize = (Read-Host -prompt "ROM Size [512|1024]").Trim() + if (($RomSize -eq "256") -or ($RomSize -eq "512") -or ($RomSize -eq "1024")) {break} + $RomSize = (Read-Host -prompt "ROM Size [256|512|1024]").Trim() } # @@ -227,8 +227,12 @@ foreach ($App in $RomApps) } # Add the CP/M and ZSystem system images to the ROM disk (used by SYSCOPY) -cpmcp -f $RomFmt $RomDiskFile ..\cpm22\cpm_${Bios}.sys 0:cpm.sys -cpmcp -f $RomFmt $RomDiskFile ..\zsdos\zsys_${Bios}.sys 0:zsys.sys +if ($RomSize -ne "256") +{ + cpmcp -f $RomFmt $RomDiskFile ..\cpm22\cpm_${Bios}.sys 0:cpm.sys + cpmcp -f $RomFmt $RomDiskFile ..\zsdos\zsys_${Bios}.sys 0:zsys.sys +} + # Set all the files in the ROM disk image to read only for extra protection under flash file system. cpmchattr -f $RomFmt $RomDiskFile r 0:*.* diff --git a/Source/HBIOS/Build.sh b/Source/HBIOS/Build.sh index e63a9510..df6e703c 100755 --- a/Source/HBIOS/Build.sh +++ b/Source/HBIOS/Build.sh @@ -42,7 +42,7 @@ while ! echo ${configs[@]} | grep -s -w -q "$config" ; do done configfile=Config/${platform}_${config}.asm -while [ ! '(' "$romsize" = 1024 -o "$romsize" = 512 ')' ] ; do +while [ ! '(' "$romsize" = 1024 -o "$romsize" = 512 -o "$romsize" = 256 ')' ] ; do echo -n "Romsize :" read romsize done @@ -142,8 +142,10 @@ for i in ${Apps[@]} ; do done echo "copying systems to $romdiskfile" -$CPMCP -f $romfmt $romdiskfile ../CPM22/cpm_$BIOS.sys 0:cpm.sys -$CPMCP -f $romfmt $romdiskfile ../ZSDOS/zsys_$BIOS.sys 0:zsys.sys +if [ $romsize != 256 ] ; then + $CPMCP -f $romfmt $romdiskfile ../CPM22/cpm_$BIOS.sys 0:cpm.sys + $CPMCP -f $romfmt $romdiskfile ../ZSDOS/zsys_$BIOS.sys 0:zsys.sys +fi echo "setting files in the ROM disk image to read only" $CPMCH -f $romfmt $romdiskfile r 0:*.* diff --git a/Source/HBIOS/Config/RCZ280_nat_zz.asm b/Source/HBIOS/Config/RCZ280_nat_zz.asm index e74f9d28..d1ed2895 100644 --- a/Source/HBIOS/Config/RCZ280_nat_zz.asm +++ b/Source/HBIOS/Config/RCZ280_nat_zz.asm @@ -22,6 +22,8 @@ ; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO ; DIRECTORIES ABOVE THIS ONE). ; +#DEFINE PLATFORM_NAME "ZZ80MB" +; #DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON OR AUTO BOOT ; #include "Config/RCZ280_nat.asm" diff --git a/Source/HBIOS/Config/RCZ280_nat_zzr.asm b/Source/HBIOS/Config/RCZ280_nat_zzr.asm new file mode 100644 index 00000000..ac12b876 --- /dev/null +++ b/Source/HBIOS/Config/RCZ280_nat_zzr.asm @@ -0,0 +1,44 @@ +; +;================================================================================================== +; RC2014 Z280 STANDARD CONFIGURATION (NATIVE Z280 MMU W/ LINEAR MEMORY ON ZZRCC) +;================================================================================================== +; +; THE COMPLETE SET OF DEFAULT CONFIGURATION SETTINGS FOR THIS PLATFORM ARE FOUND IN THE +; CFG_.ASM INCLUDED FILE WHICH IS FOUND IN THE PARENT DIRECTORY. THIS FILE CONTAINS +; COMMON CONFIGURATION SETTINGS THAT OVERRIDE THE DEFAULTS. IT IS INTENDED THAT YOU MAKE +; YOUR CUSTOMIZATIONS IN THIS FILE AND JUST INHERIT ALL OTHER SETTINGS FROM THE DEFAULTS. +; EVEN BETTER, YOU CAN MAKE A COPY OF THIS FILE WITH A NAME LIKE _XXX.ASM AND SPECIFY +; YOUR FILE IN THE BUILD PROCESS. +; +; THE SETTINGS BELOW ARE THE SETTINGS THAT ARE MOST COMMONLY MODIFIED FOR THIS PLATFORM. +; MANY OF THEM ARE EQUAL TO THE SETTINGS IN THE INCLUDED FILE, SO THEY DON'T REALLY DO +; ANYTHING AS IS. THEY ARE LISTED HERE TO MAKE IT EASY FOR YOU TO ADJUST THE MOST COMMON +; SETTINGS. +; +; N.B., SINCE THE SETTINGS BELOW ARE REDEFINING VALUES ALREADY SET IN THE INCLUDED FILE, +; TASM INSISTS THAT YOU USE THE .SET OPERATOR AND NOT THE .EQU OPERATOR BELOW. ATTEMPTING +; TO REDEFINE A VALUE WITH .EQU BELOW WILL CAUSE TASM ERRORS! +; +; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO +; DIRECTORIES ABOVE THIS ONE). +; +#DEFINE PLATFORM_NAME "ZZRCC" +; +#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON OR AUTO BOOT +; +#include "Config/RCZ280_nat.asm" +; +;CPUOSC .SET 29491200 ; CPU OSC FREQ IN MHZ +CPUOSC .SET 24000000 ; CPU OSC FREQ IN MHZ +; +RAMSIZE .SET 384 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) +RAM_RESERVE .SET 128 ; RESERVE FIRST N KB OF RAM (USUALLY 0) +ROM_RESERVE .SET 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0) +; +RAMLOC .SET 23 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE +RAMBIAS .SET (1 << (RAMLOC - 10)) ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE +; +MDROM .SET FALSE ; MD: ENABLE ROM DISK +MDRAM .SET TRUE ; MD: ENABLE RAM DISK +; +Z2U0HFC .SET TRUE ; Z2U 0: ENABLE HARDWARE FLOW CONTROL diff --git a/Source/HBIOS/Makefile b/Source/HBIOS/Makefile index 117c4996..a5a480f8 100644 --- a/Source/HBIOS/Makefile +++ b/Source/HBIOS/Makefile @@ -15,6 +15,7 @@ else OBJECTS += RCZ280_ext.rom RCZ280_ext.com RCZ280_ext.upd OBJECTS += RCZ280_nat.rom RCZ280_nat.com RCZ280_nat.upd OBJECTS += RCZ280_nat_zz.rom RCZ280_nat_zz.com RCZ280_nat_zz.upd + OBJECTS += RCZ280_nat_zzr.rom RCZ280_nat_zzr.com RCZ280_nat_zzr.upd OBJECTS += RCZ80_kio.rom RCZ80_kio.com RCZ80_kio.upd OBJECTS += RCZ80_mt.rom RCZ80_mt.com RCZ80_mt.upd OBJECTS += RCZ80_duart.rom RCZ80_duart.com RCZ80_duart.upd @@ -53,6 +54,7 @@ DIFFPATH = $(DIFFTO)/Binary ROMSIZE=512 N8_std.rom: ROMSIZE=512 +RCZ280_nat_zzr.rom: ROMSIZE=256 %.rom: bash Build.sh $(DIFFBUILD) $(shell echo $* | sed 's/_/ /') $(ROMSIZE) diff --git a/Source/HBIOS/cfg_dyno.asm b/Source/HBIOS/cfg_dyno.asm index 6c513e3e..2ba312e0 100644 --- a/Source/HBIOS/cfg_dyno.asm +++ b/Source/HBIOS/cfg_dyno.asm @@ -28,6 +28,8 @@ INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2 DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) +RAM_RESERVE .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0) +ROM_RESERVE .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0) MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280] RAMLOC .EQU 19 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE RAMBIAS .EQU (1 << (RAMLOC - 10)) ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE @@ -107,6 +109,8 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) +MDROM .EQU TRUE ; MD: ENABLE ROM DISK +MDRAM .EQU TRUE ; MD: ENABLE RAM DISK MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM ; diff --git a/Source/HBIOS/cfg_ezz80.asm b/Source/HBIOS/cfg_ezz80.asm index e4559c0d..c8319829 100644 --- a/Source/HBIOS/cfg_ezz80.asm +++ b/Source/HBIOS/cfg_ezz80.asm @@ -28,6 +28,8 @@ INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2 DEFSERCFG .EQU SER_115200_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) +RAM_RESERVE .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0) +ROM_RESERVE .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0) MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280] 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) @@ -138,6 +140,8 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) +MDROM .EQU TRUE ; MD: ENABLE ROM DISK +MDRAM .EQU TRUE ; MD: ENABLE RAM DISK MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM ; diff --git a/Source/HBIOS/cfg_master.asm b/Source/HBIOS/cfg_master.asm index b202f09c..fa902178 100644 --- a/Source/HBIOS/cfg_master.asm +++ b/Source/HBIOS/cfg_master.asm @@ -25,7 +25,9 @@ INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2 DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) -MEMMGR .SET MM_NONE ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280] +RAM_RESERVE .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0) +ROM_RESERVE .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0) +MEMMGR .EQU MM_NONE ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280] RAMLOC .EQU 19 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE RAMBIAS .EQU (1 << (RAMLOC - 10)) ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE MPCL_RAM .EQU $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY) @@ -189,8 +191,10 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) +MDROM .EQU TRUE ; MD: ENABLE ROM DISK +MDRAM .EQU TRUE ; MD: ENABLE RAM DISK MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) -MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM +MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM ; FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) FDMODE .EQU FDMODE_NONE ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC] diff --git a/Source/HBIOS/cfg_mk4.asm b/Source/HBIOS/cfg_mk4.asm index 32f611b3..4a05026f 100644 --- a/Source/HBIOS/cfg_mk4.asm +++ b/Source/HBIOS/cfg_mk4.asm @@ -28,6 +28,8 @@ INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2 DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) +RAM_RESERVE .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0) +ROM_RESERVE .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0) MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280] RAMLOC .EQU 19 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE RAMBIAS .EQU (1 << (RAMLOC - 10)) ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE @@ -125,6 +127,8 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) +MDROM .EQU TRUE ; MD: ENABLE ROM DISK +MDRAM .EQU TRUE ; MD: ENABLE RAM DISK MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM ; diff --git a/Source/HBIOS/cfg_n8.asm b/Source/HBIOS/cfg_n8.asm index 0e2e49b8..aaf967a1 100644 --- a/Source/HBIOS/cfg_n8.asm +++ b/Source/HBIOS/cfg_n8.asm @@ -28,6 +28,8 @@ INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2 DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) +RAM_RESERVE .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0) +ROM_RESERVE .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0) MEMMGR .EQU MM_N8 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280] RAMBIAS .EQU 0 ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE RAMLOC .EQU 0 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE @@ -128,6 +130,8 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) +MDROM .EQU TRUE ; MD: ENABLE ROM DISK +MDRAM .EQU TRUE ; MD: ENABLE RAM DISK MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM ; diff --git a/Source/HBIOS/cfg_rcz180.asm b/Source/HBIOS/cfg_rcz180.asm index 4e182511..5f9e9648 100644 --- a/Source/HBIOS/cfg_rcz180.asm +++ b/Source/HBIOS/cfg_rcz180.asm @@ -28,6 +28,8 @@ INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2 DEFSERCFG .EQU SER_115200_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) +RAM_RESERVE .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0) +ROM_RESERVE .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0) MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280] RAMLOC .EQU 19 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE RAMBIAS .EQU (1 << (RAMLOC - 10)) ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE @@ -143,6 +145,8 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) +MDROM .EQU TRUE ; MD: ENABLE ROM DISK +MDRAM .EQU TRUE ; MD: ENABLE RAM DISK MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM ; diff --git a/Source/HBIOS/cfg_rcz280.asm b/Source/HBIOS/cfg_rcz280.asm index b2bbbe68..aa70891d 100644 --- a/Source/HBIOS/cfg_rcz280.asm +++ b/Source/HBIOS/cfg_rcz280.asm @@ -28,6 +28,8 @@ INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2 DEFSERCFG .EQU SER_115200_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) +RAM_RESERVE .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0) +ROM_RESERVE .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0) MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280] RAMLOC .EQU 19 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE RAMBIAS .EQU (1 << (RAMLOC - 10)) ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE @@ -160,6 +162,8 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) +MDROM .EQU TRUE ; MD: ENABLE ROM DISK +MDRAM .EQU TRUE ; MD: ENABLE RAM DISK MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM ; diff --git a/Source/HBIOS/cfg_rcz80.asm b/Source/HBIOS/cfg_rcz80.asm index 88eb0531..45efe340 100644 --- a/Source/HBIOS/cfg_rcz80.asm +++ b/Source/HBIOS/cfg_rcz80.asm @@ -28,6 +28,8 @@ INTMODE .EQU 1 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2 DEFSERCFG .EQU SER_115200_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) +RAM_RESERVE .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0) +ROM_RESERVE .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0) MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280] 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) @@ -150,6 +152,8 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) +MDROM .EQU TRUE ; MD: ENABLE ROM DISK +MDRAM .EQU TRUE ; MD: ENABLE RAM DISK MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM ; diff --git a/Source/HBIOS/cfg_sbc.asm b/Source/HBIOS/cfg_sbc.asm index fbdc125b..e3ec540e 100644 --- a/Source/HBIOS/cfg_sbc.asm +++ b/Source/HBIOS/cfg_sbc.asm @@ -28,6 +28,8 @@ INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2 DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) +RAM_RESERVE .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0) +ROM_RESERVE .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0) MEMMGR .EQU MM_SBC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280] 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) @@ -128,6 +130,8 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) +MDROM .EQU TRUE ; MD: ENABLE ROM DISK +MDRAM .EQU TRUE ; MD: ENABLE RAM DISK MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM ; diff --git a/Source/HBIOS/cfg_scz180.asm b/Source/HBIOS/cfg_scz180.asm index 96c87a87..653e1c15 100644 --- a/Source/HBIOS/cfg_scz180.asm +++ b/Source/HBIOS/cfg_scz180.asm @@ -28,6 +28,8 @@ INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2 DEFSERCFG .EQU SER_115200_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) +RAM_RESERVE .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0) +ROM_RESERVE .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0) MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280] RAMLOC .EQU 19 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE RAMBIAS .EQU (1 << (RAMLOC - 10)) ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE @@ -138,6 +140,8 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) +MDROM .EQU TRUE ; MD: ENABLE ROM DISK +MDRAM .EQU TRUE ; MD: ENABLE RAM DISK MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM ; diff --git a/Source/HBIOS/cfg_una.asm b/Source/HBIOS/cfg_una.asm index 10821319..b815f41b 100644 --- a/Source/HBIOS/cfg_una.asm +++ b/Source/HBIOS/cfg_una.asm @@ -22,6 +22,8 @@ CPUOSC .EQU 18432000 ; CPU OSC FREQ IN MHZ INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2 ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) +RAM_RESERVE .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0) +ROM_RESERVE .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0) ; RTCIO .EQU $70 ; RTC LATCH REGISTER ADR ; diff --git a/Source/HBIOS/cfg_zeta.asm b/Source/HBIOS/cfg_zeta.asm index 1eda52df..6e1f0f33 100644 --- a/Source/HBIOS/cfg_zeta.asm +++ b/Source/HBIOS/cfg_zeta.asm @@ -28,6 +28,8 @@ INTMODE .EQU 0 ; INTERRUPT MODE: 0=NONE, 1=MODE 1, 2=MODE 2 DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) +RAM_RESERVE .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0) +ROM_RESERVE .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0) MEMMGR .EQU MM_SBC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280] 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) @@ -103,6 +105,8 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) +MDROM .EQU TRUE ; MD: ENABLE ROM DISK +MDRAM .EQU TRUE ; MD: ENABLE RAM DISK MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM ; diff --git a/Source/HBIOS/cfg_zeta2.asm b/Source/HBIOS/cfg_zeta2.asm index 44783270..d010f660 100644 --- a/Source/HBIOS/cfg_zeta2.asm +++ b/Source/HBIOS/cfg_zeta2.asm @@ -28,6 +28,8 @@ INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2 DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) +RAM_RESERVE .EQU 0 ; RESERVE FIRST N KB OF RAM (USUALLY 0) +ROM_RESERVE .EQU 0 ; RESERVE FIRST N KB OR ROM (USUALLY 0) MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280] 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) @@ -114,6 +116,8 @@ TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) ; MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) +MDROM .EQU TRUE ; MD: ENABLE ROM DISK +MDRAM .EQU TRUE ; MD: ENABLE RAM DISK MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM ; diff --git a/Source/HBIOS/diskdefs b/Source/HBIOS/diskdefs index db9ef4b2..c35156b3 100644 --- a/Source/HBIOS/diskdefs +++ b/Source/HBIOS/diskdefs @@ -271,6 +271,19 @@ diskdef interak os 2.2 end +# RomWBW 256KB ROM (128KB reserved, 128KB ROM Disk) + +diskdef wbw_rom256 + seclen 512 + tracks 4 + sectrk 64 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 0 + os 2.2 +end + # RomWBW 512KB ROM (128KB reserved, 384KB ROM Disk) diskdef wbw_rom512 diff --git a/Source/HBIOS/game.asm b/Source/HBIOS/game.asm index 43d90b87..66a618a7 100644 --- a/Source/HBIOS/game.asm +++ b/Source/HBIOS/game.asm @@ -1182,10 +1182,12 @@ PRTSTR: COUT: PUSH AF PUSH BC PUSH DE + PUSH HL LD B,01H LD C,0 LD E,A RST 08 + POP HL POP DE POP BC POP AF @@ -1202,10 +1204,14 @@ COUTE: PUSH AF ; WAIT FOR A CHARACTER FROM THE CONSOLE DEVICE AND RETURN IT IN A ; CIN: PUSH BC + PUSH DE + PUSH HL LD B,00H LD C,00H RST 08 LD A,E + POP HL + POP DE POP BC RET diff --git a/Source/HBIOS/md.asm b/Source/HBIOS/md.asm index eb4c2446..b6c2d8eb 100644 --- a/Source/HBIOS/md.asm +++ b/Source/HBIOS/md.asm @@ -12,7 +12,7 @@ ; 0x00 MEMORY DISK 0x01 ROM DRIVE %00100000 HD STYLE, NON-REMOVABLE, TYPE-ROM ; 0x00 MEMORY DISK 0x01 ROM DRIVE %00111000 HD STYLE, NON-REMOVABLE, TYPE-FLASH ; -MD_DEVCNT .EQU 2 ; NUMBER OF MD DEVICES SUPPORTED +;MD_DEVCNT .EQU 2 ; NUMBER OF MD DEVICES SUPPORTED MD_CFGSIZ .EQU 8 ; SIZE OF CFG TBL ENTRIES ; MD_DEV .EQU 0 ; OFFSET OF DEVICE NUMBER (BYTE) @@ -32,18 +32,25 @@ MD_FVAR .EQU 1 ; FLASH VERIFY AFTER WRITE ; DEVICE CONFIG TABLE (RAM DEVICE FIRST TO MAKE IT ALWAYS FIRST DRIVE) ; MD_CFGTBL: +#IF (MDRAM) ; DEVICE 1 (RAM) .DB 1 ; DRIVER DEVICE NUMBER .DB 0 ; DEVICE STATUS .DW 0,0 ; CURRENT LBA .DB MID_MDRAM ; DEVICE MEDIA ID .DB MD_ARAM ; DEVICE ATTRIBUTE +#ENDIF +; +#IF (MDROM) ; DEVICE 0 (ROM) .DB 0 ; DEVICE NUMBER .DB 0 ; DEVICE STATUS .DW 0,0 ; CURRENT LBA .DB MID_MDROM ; DEVICE MEDIA ID .DB MD_AROM ; DEVICE ATTRIBUTE +#ENDIF +; +MD_DEVCNT .EQU ($ - MD_CFGTBL) / MD_CFGSIZ ; #IF ($ - MD_CFGTBL) != (MD_DEVCNT * MD_CFGSIZ) .ECHO "*** INVALID MD CONFIG TABLE ***\n" @@ -59,35 +66,54 @@ MD_INIT: #ENDIF CALL NEWLINE ; FORMATTING - PRTS("MD: UNITS=2 $") - PRTS("ROMDISK=$") + PRTS("MD: UNITS=$") + LD A,MD_DEVCNT + CALL PRTDECB +; +#IF (MDROM) + PRTS(" ROMDISK=$") LD HL,ROMSIZE - 128 CALL PRTDEC - PRTS("KB RAMDISK=$") + PRTS("KB$") +#ENDIF +; +#IF (MDRAM) + PRTS(" RAMDISK=$") LD HL,RAMSIZE - 256 CALL PRTDEC PRTS("KB$") +#ENDIF ; ; SETUP THE DIO TABLE ENTRIES ; -#IF (MDFFENABLE) +#IF (MDROM & MDFFENABLE) LD A,(MD_FFSEN) ; IF FLASH OR A ; FILESYSTEM - JR NZ,MD_IN1 ; CAPABLE, + JR NZ,MD_INIT1 ; CAPABLE, LD A,MD_AFSH ; UPDATE ROM DIO LD (MD_CFGTBL + MD_CFGSIZ + MD_ATTRIB),A -MD_IN1: +MD_INIT1: #ENDIF - LD BC,MD_FNTBL +; LD DE,MD_CFGTBL - PUSH BC - CALL DIO_ADDENT ; ADD FIRST ENTRY - POP BC - LD DE,MD_CFGTBL + MD_CFGSIZ - CALL DIO_ADDENT ; ADD SECOND ENTRY - - XOR A ; INIT SUCCEEDED - RET ; RETURN +; +MD_INIT2: + LD A,(DE) ; FIRST BYTE OF CONFIG + CP $FF ; END OF TABLE? + JR NZ,MD_INIT3 ; IF NOT END OF TABLE, CONTINUE + XOR A ; SIGNAL SUCCESS + RET ; AND RETURN +; +MD_INIT3: + LD BC,MD_FNTBL ; BC IS FUNT TBL + PUSH DE ; SAVE CFG PTR + CALL DIO_ADDENT ; ADD DIO TBL ENTRY + POP DE ; RECOVER CFG PTR + EX DE,HL ; CFG PTR TO HL + LD BC,MD_CFGSIZ ; ENTRY SIZ TO BC + ADD HL,BC ; BUMP TO NEXT ENTRY + EX DE,HL ; CFG PTR BACK TO DE + JR MD_INIT2 ; REPEAT ; ; ; diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index b4f0fe6b..25131225 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -454,21 +454,19 @@ SYSTIM .SET TM_Z280 ; MEMORY BANK CONFIGURATION ; #IF (BIOS == BIOS_UNA) -BID_ROM0 .EQU $0000 -BID_RAM0 .EQU $8000 +BID_ROM0 .EQU $0000 + (ROM_RESERVE / 32) +BID_RAM0 .EQU $8000 + (RAM_RESERVE / 32) #ENDIF ; #IF (BIOS == BIOS_WBW) -BID_ROM0 .EQU $00 -BID_RAM0 .EQU $80 +BID_ROM0 .EQU $00 + (ROM_RESERVE / 32) +BID_RAM0 .EQU $80 + (RAM_RESERVE / 32) #ENDIF BID_ROMN .EQU (BID_ROM0 + ((ROMSIZE / 32) - 1)) BID_RAMN .EQU (BID_RAM0 + ((RAMSIZE / 32) - 1)) BID_BOOT .EQU BID_ROM0 ; BOOT BANK -;BID_BIOSIMG .EQU BID_ROM0 + 1 ; BIOS IMAGE BANK -;BID_OSIMG .EQU BID_ROM0 + 2 ; ROM LOADER AND IMAGES BANK BID_IMG0 .EQU BID_ROM0 + 1 ; ROM LOADER AND FIRST IMAGES BANK BID_IMG1 .EQU BID_ROM0 + 2 ; SECOND IMAGES BANK BID_FSFAT .EQU BID_ROM0 + 3 ; FAT FILESYSTEM DRIVER BANK diff --git a/Source/HBIOS/usrrom.asm b/Source/HBIOS/usrrom.asm index ead329be..908f0b93 100644 --- a/Source/HBIOS/usrrom.asm +++ b/Source/HBIOS/usrrom.asm @@ -7,10 +7,12 @@ CR .EQU 0DH LF .EQU 0AH ; .ORG USR_LOC -; +; + LD SP,USR_END +; LD HL,BOOTMSG ; INTRODUCTION CALL PRTSTR - +; CALL CIN ; DO STUFF ; LD B,BF_SYSRESET ; SYSTEM RESTART @@ -40,10 +42,13 @@ PRTSTR: LD A,(HL) COUT: PUSH AF PUSH BC PUSH DE + PUSH HL LD B,01H LD C,0 LD E,A RST 08 + CALL $FFF0 + POP HL POP DE POP BC POP AF @@ -60,10 +65,14 @@ COUTE: PUSH AF ; WAIT FOR A CHARACTER FROM THE CONSOLE DEVICE AND RETURN IT IN A ; CIN: PUSH BC + PUSH DE + PUSH HL LD B,00H LD C,00H RST 08 LD A,E + POP HL + POP DE POP BC RET ; diff --git a/Source/Images/diskdefs b/Source/Images/diskdefs index db9ef4b2..c35156b3 100644 --- a/Source/Images/diskdefs +++ b/Source/Images/diskdefs @@ -271,6 +271,19 @@ diskdef interak os 2.2 end +# RomWBW 256KB ROM (128KB reserved, 128KB ROM Disk) + +diskdef wbw_rom256 + seclen 512 + tracks 4 + sectrk 64 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 0 + os 2.2 +end + # RomWBW 512KB ROM (128KB reserved, 384KB ROM Disk) diskdef wbw_rom512 diff --git a/Source/Images/hd1024_prefix.dat b/Source/Images/hd1024_prefix.dat index 1ec28fa126734d65e8ebb640dad2ca1cf7f6ba63..f4f1aa3baf9b7071ed76827c0b2cfcf63ece709e 100644 GIT binary patch delta 118 zcmZo@;Am)Y*l>_hhC`44!hZ%11|Sds;)DO$z#HaU delta 50 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 literal 0 HcmV?d00001 diff --git a/Source/RomDsk/ROM_256KB/DDTZ.COM b/Source/RomDsk/ROM_256KB/DDTZ.COM new file mode 100644 index 0000000000000000000000000000000000000000..4f6eca6bd9731624a7ed8e0cf8cf9c2137e5b9ff GIT binary patch literal 7424 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 V5s?_44M+n_zck=j@WH-){|ybqcNG8t literal 0 HcmV?d00001 diff --git a/Source/RomDsk/ROM_256KB/DUMP.COM b/Source/RomDsk/ROM_256KB/DUMP.COM new file mode 100644 index 0000000000000000000000000000000000000000..03a77c3ca8b8bebcda6664c086872b01db043691 GIT binary patch literal 512 zcmXX@L2DC16n<~bu4H9*8)6LA%cPr&iAY)`)lveLL@18>AyNbnIV6HP70IEO(YK`!-p4oZ`##yTvE#b4CQAW{9MI{t&zjaD7R5=qCS|aj0YqPpO3+r-)ccYO2i- zP=3S1@Brt<)-_m+Zq|nB{X_9(ZVwVq!FD1qEsglqi&YP*k1DLZ{g!E*Zm6$S8kJg;kzB4ema~5{lcWA{)7GRhH8}2`3dI5y57ezdS%G>R zF6zRzWD0DPK*;!IWraCiW+7YxJC^Z`B6BU?1Y0Nmiu6d@1~+o~&tSnb6caxR$~@_v zsi_m6vP(c(0ssLh6W>=X{0edhUOvA`MGu}HUwW-#{3G07-qmA5z5|}qMMj6BU-apZ xW(*MNbb53*!t|&h#yQUz?{@faaNl%-d_HgSUtkF%)=zlG^$yq2P3n9C{{b^Cz8e4l literal 0 HcmV?d00001 diff --git a/Source/RomDsk/ROM_256KB/ED.COM b/Source/RomDsk/ROM_256KB/ED.COM new file mode 100644 index 0000000000000000000000000000000000000000..a0f0f5410f0542e3e6d05bfcd0fb361d84c73f26 GIT binary patch literal 6656 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 literal 0 HcmV?d00001 diff --git a/Source/RomDsk/ROM_256KB/FLASH.COM b/Source/RomDsk/ROM_256KB/FLASH.COM new file mode 100644 index 0000000000000000000000000000000000000000..c81f9c545c86a9fa8e0f4161e827e4ce9e44ae9d GIT binary patch literal 14076 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 literal 0 HcmV?d00001 diff --git a/Source/RomDsk/ROM_256KB/LOAD.COM b/Source/RomDsk/ROM_256KB/LOAD.COM new file mode 100644 index 0000000000000000000000000000000000000000..b9601e002cc09df45e29331795412a0f0be8e217 GIT binary patch literal 1792 zcmbtUUu+ab7@xV@Kkaq)%2KFuYT3OzE8PR3=jAMGuXKC6&A<>jV zVhvbnVw6ba!3WR>A@RXzeA7rmeZaJv5~j&SX(A+j!3QZZ_h4c|l&G!W%w1D`c5^p7 zzu)ise)HYTHx~{@jG}*FG$`#Gt{K~kJx1^D=lixBZfRes=9G=Vt9njQ95%cl@B`aO zZ#T-m;~I|Zf>brqZmGH-q8v9}svPoyn&Aj_(T3gR9JAl^Vx|sn_I`E2q;8qP@N6o7kX)s1b zr&952hJOHvs(&yjdg-D+Qt^!uKk#5#NUHh4s8K!OaH$bpEc;c@*jp-lY3qUdh?)rP zPCii0DDK8|?oQN+HF@^Mv+Yq4KPupWWfkVe?gBI-)hg+_1>SJ+Px_Ckc38kw*((v9lz z2zynfagF^DiN|1|W}Hk6w8D5}QHk1da?`mJ^FavP1=_{u)NCgcb~{=AV=Fv9t4BC! z=M!q`T+Cbj&*@h^*r}&$i9fICS>hV^-qPdx4D974F+z~be5nDKedoT;4*5eHl z_hOK&PL48BQTda?=Lzs>XD8Hbf>5(dP)`B1VU02bwG}A6N$Cj1H?GM^A)6p~h+@(L zrvPt)5NdV{{50Ur0&f%e8Ni)u7M7rTfO?Ef%P=Dt3EQ~+eJ4qqC6V7kph-78R zeQO7qjZMNVmCO(TspJk4_Da-hgJ~PlSEKB*x^zkcjAJdWZ}X06@Marf*VUyZDf~#% zrx65f0b%h?DO{3x=iG~Ccaaq|_pOAd(R?%C9qF2eJ_+wiHi&rPmV_PNL`^xLFju4C z5}ubD>)5dtv0|Pi`$*CzQ`vrvH)@U~3z`{g$tT#Tv|=x4au|`#EXgBQP_w;!T|*8( zmF-@l+k~A`>zUK3Q=mPB@3GloR#v%3CmBF`p0F>~Yjaf@jxz}W44xy9Sl~XZ3vbB4 z`0Q^krywI7mGwS?I|;j@F22v%4AjP+Rblz}R?xy#8GpfBg-t6^6Zgy!oFjTc;|X(e z9R17da~aQwzREW`3EvW^uZivoWH-^WK>gYX^er?fHTP%}xS;8cQaTj8pKqnUimZaR zrEUU!U0pn>n1fm#4V;75jinYAA@N1caJ8j1= zl#h--AkQpztN5}gU|JF6%@}2WDd*vN2=Ce9uPB^Zc1YvLHfaxO)O5Ae@CQ+ZJ&Cul zi>mEv?3_wNghH8rn2ac;^<$l=o_Ke>Bk{o)h56ZQ<7d7Zqc5fo)qAwLi>lx*ji32s mjGlO@lG>a25JEp5qvPEuaS5it^Q_Cq&ZMp$uG7T-d;S66tN&L3 literal 0 HcmV?d00001 diff --git a/Source/RomDsk/ROM_256KB/PIP.COM b/Source/RomDsk/ROM_256KB/PIP.COM new file mode 100644 index 0000000000000000000000000000000000000000..4b2ce4b689b9be798eec94cd4275aee957c8bd07 GIT binary patch literal 7424 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 m_wA9|X}-1K3}o>b!S^gcP~2Kn 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 literal 0 HcmV?d00001 diff --git a/Source/RomDsk/ROM_256KB/SUBMIT.COM b/Source/RomDsk/ROM_256KB/SUBMIT.COM new file mode 100644 index 0000000000000000000000000000000000000000..f651bfee6be78c05670bef3a1976d7212f66061c GIT binary patch literal 1280 zcmbVMOK2Nc6n#%KPeBGx|AC4&ej`ttbd*wOk|=nPRj|^KLR^KUpG_Mxk;ayYJmZYV z`uHQu-INBhDqXa+gl2a29xys?v)EWAUQ*uqpOO&iVF=1E*Iy^l#W`aV+ zbjHed^&kF4+os2CYg{>QIL3tOLQc2vd8=ZSO9h&>E!VNjG+Ts(Jj9`gW9D7ksna9V z<+74BEX#Ijwro$Cd+7<&C_Iz1%JpXz8KJ?%Z6d!V-3>mA1m}dHBL;5}U;c(nCeNy0 zlMN{roCEwV$2S1q7n~>B8c^SJ>N}wB-===#)DJ*C#H-dhz6tnYNb%*LIsOUoBOL$A z@h^aPZcA*EsU);ce!c?VFZ4|^q-~PU*6PKGxbx`(Tot|jEZ80ZgONFMt4nPP@jE&=2%MFpANPIv5gYPA2KyQGuiOr8c|71<5`B4A zI;&Qsez>^@wsr*XkZ?`J1vUz>xDt)&vr<*BNolPHH!!~({w3l$e&_5Jo{q?05!e!N zU%R&%j}v^E#e*55H6(Z>ljsdeYa+G)iwJf~ZLq0d2Up1;xglK%M+sziX;_gea0k6% z64V3_)Id9aPrFX=b>16hOTxr#zJ~81F2M6D4sMuW6^oJmsllHu|`jC9jEbE6uwq?cZL z2z=-{=%I+BkU|FA#fN+0K1^AGK_H?ad+MRr*>|<)&cpe>^EWg|hr`^;SmQvJ9SI37E$JA6N z?XaaxR+^p8=~-q}kFc|QHe;7%{=PB@kp=OJhH|(riuHkN33wm z)TxRl(m_>vMB^N1$^gn(n0*c<>?w~u?3MdO@_84cTHYyhY%JVhpF+WF3H!Mh*F(19 zi7>GV)_X2S6|FT6U%BiLULq>vC)}t&^N~K$Sm*pDpo<_mkX{L-lIFTn8XeI(0X(wb Y+cM%=k)A5D2B>txs!Q>=Q276^zh*|>DF6Tf literal 0 HcmV?d00001 diff --git a/Source/ZRC/zrc_ptbl.bin b/Source/ZRC/zrc_ptbl.bin index ca19be4cf59067adde7344193c6ce429c4d6434d..5e3a2a4d5810860783a54d96f0114ee66e39c27d 100644 GIT binary patch delta 14 VcmZo*YG9hMgGIMZapuH5E&wD=1y29~ delta 12 TcmZo*YG9hMW1;}Z!~+fh90df2 diff --git a/Source/ver.inc b/Source/ver.inc index 0e2b5687..0525fbc7 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,4 +2,4 @@ #DEFINE RMN 1 #DEFINE RUP 1 #DEFINE RTP 0 -#DEFINE BIOSVER "3.1.1-pre.55" +#DEFINE BIOSVER "3.1.1-pre.56" diff --git a/Source/ver.lib b/Source/ver.lib index 8e71dfa2..c8ed827a 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 1 rup equ 1 rtp equ 0 biosver macro - db "3.1.1-pre.55" + db "3.1.1-pre.56" endm diff --git a/Tools/cpmtools/diskdefs b/Tools/cpmtools/diskdefs index db9ef4b2..c35156b3 100644 --- a/Tools/cpmtools/diskdefs +++ b/Tools/cpmtools/diskdefs @@ -271,6 +271,19 @@ diskdef interak os 2.2 end +# RomWBW 256KB ROM (128KB reserved, 128KB ROM Disk) + +diskdef wbw_rom256 + seclen 512 + tracks 4 + sectrk 64 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 0 + os 2.2 +end + # RomWBW 512KB ROM (128KB reserved, 384KB ROM Disk) diskdef wbw_rom512