diff --git a/Doc/Microsoft Basic-80 Reference Manual v5.0.pdf b/Doc/Microsoft Basic-80 Reference Manual v5.0.pdf new file mode 100644 index 00000000..fd80b52e Binary files /dev/null and b/Doc/Microsoft Basic-80 Reference Manual v5.0.pdf differ diff --git a/Source/Apps/FAT/FAT.com b/Source/Apps/FAT/FAT.com index 1dd7dcca..688faa99 100644 Binary files a/Source/Apps/FAT/FAT.com and b/Source/Apps/FAT/FAT.com differ diff --git a/Source/Apps/FAT/ReadMe.txt b/Source/Apps/FAT/ReadMe.txt index ad06db72..02f84de3 100644 --- a/Source/Apps/FAT/ReadMe.txt +++ b/Source/Apps/FAT/ReadMe.txt @@ -1,7 +1,7 @@ RomWBW HBIOS CP/M FAT Utility ("FAT.COM") Author: Wayne Warthen -Updated: 11-Oct-2019 +Updated: 12-Apr-2021 Application to manipulate and exchange files with a FAT (DOS) filesystem. Runs on any HBIOS hosted CP/M implementation. @@ -47,7 +47,7 @@ NOTES: "C:README.TXT" refers to CP/M file README.TXT on CP/M drive C "README.TXT" refers to CP/M file README.TXT on current CP/M drive - - Files with SYS, HIDDEN, or R/O only attributes are not given + - FAT files with SYS, HIDDEN, or R/O only attributes are not given any special treatment. Such files are found and processed like any other file. However, any attempt to write to a read-only file will fail and the application will abort. @@ -70,7 +70,7 @@ BUILD NOTES: - Application is based on FatFs. FatFs source is included. - - SDCC compiler is required to build (v3.9.0 known working). + - SDCC compiler is required to build (v4.0.0 known working). - ZX CP/M emulator is required to build (from RomWBW distribution). @@ -88,6 +88,8 @@ TO DO: - Do something intelligent with R/O and SYS files on FAT + - Support UNA + HISTORY: 2-May-2019: v0.9 (beta) initial release 7-May-2019: v0.9.1 (beta) added REN and DEL @@ -98,4 +100,5 @@ HISTORY: 10-Oct-2019: v0.9.6 (beta) added FORMAT 11-Oct-2019: v0.9.7 (beta) fix FORMAT to use existing partition table entries add attributes to directory listing + 12-Apr-2021: v0.9.8 (beta) support CP/NET drives diff --git a/Source/BPBIOS/diskdefs b/Source/BPBIOS/diskdefs index c35156b3..a16a4659 100644 --- a/Source/BPBIOS/diskdefs +++ b/Source/BPBIOS/diskdefs @@ -416,7 +416,6 @@ diskdef wbw_hd512_3 os 2.2 end - # RomWBW 8MB Hard Disk (1024 directory entry format) # New format, 1024 dir entries, 16,384 sectors / slice # Pure filesystem image, no MBR prefix @@ -432,7 +431,7 @@ diskdef wbw_hd1024 end # First 4 slices of wbw_hd1024 -# Assumes 128KB prefix (256 sectors) +# Assumes 1MB prefix (2048 sectors) diskdef wbw_hd1024_0 seclen 512 tracks 1040 @@ -440,7 +439,7 @@ diskdef wbw_hd1024_0 blocksize 4096 maxdir 1024 skew 0 - boottrk 18 + boottrk 130 os 2.2 end @@ -451,7 +450,7 @@ diskdef wbw_hd1024_1 blocksize 4096 maxdir 1024 skew 0 - boottrk 1042 + boottrk 1154 os 2.2 end @@ -462,7 +461,7 @@ diskdef wbw_hd1024_2 blocksize 4096 maxdir 1024 skew 0 - boottrk 2066 + boottrk 2178 os 2.2 end @@ -473,6 +472,225 @@ diskdef wbw_hd1024_3 blocksize 4096 maxdir 1024 skew 0 - boottrk 3114 + boottrk 3202 + os 2.2 +end + +# SmallZ80 Hard Disk Image +# 5 slices +diskdef smz80_hd0 + seclen 512 + tracks 1034 + sectrk 16 + blocksize 4096 + maxdir 1024 + skew 0 + boottrk 10 + os 2.2 +end + +diskdef smz80_hd1 + seclen 512 + tracks 2058 + sectrk 16 + blocksize 4096 + maxdir 1024 + skew 0 + boottrk 1034 + os 2.2 +end + +diskdef smz80_hd2 + seclen 512 + tracks 1034 + sectrk 16 + blocksize 4096 + maxdir 1024 + skew 0 + boottrk 2058 + os 2.2 +end + +diskdef smz80_hd3 + seclen 512 + tracks 4106 + sectrk 16 + blocksize 4096 + maxdir 1024 + skew 0 + boottrk 3082 + os 2.2 +end + +diskdef smz80_hd4 + seclen 512 + tracks 5130 + sectrk 16 + blocksize 4096 + maxdir 1024 + skew 0 + boottrk 4106 + os 2.2 +end + +# RC2014 standard hard disk image +# Slices A-P +diskdef rc2014a + seclen 512 + tracks 512 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 1 + os 2.2 +end + +diskdef rc2014b + seclen 512 + tracks 1024 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 512 + os 2.2 +end + +diskdef rc2014c + seclen 512 + tracks 1536 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 1024 + os 2.2 +end + +diskdef rc2014d + seclen 512 + tracks 2048 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 1536 + os 2.2 +end + +diskdef rc2014e + seclen 512 + tracks 2560 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 2048 + os 2.2 +end + +diskdef rc2014f + seclen 512 + tracks 3072 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 2560 + os 2.2 +end + +diskdef rc2014g + seclen 512 + tracks 3584 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 3072 + os 2.2 +end + +diskdef rc2014h + seclen 512 + tracks 4096 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 3584 + os 2.2 +end + +diskdef rc2014i + seclen 512 + tracks 4608 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 4096 + os 2.2 +end + +diskdef rc2014j + seclen 512 + tracks 5120 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 4608 + os 2.2 +end + +diskdef rc2014k + seclen 512 + tracks 5632 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 5120 + os 2.2 +end + +diskdef rc2014l + seclen 512 + tracks 6144 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 5632 + os 2.2 +end + +diskdef rc2014m + seclen 512 + tracks 6656 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 6144 + os 2.2 +end + +diskdef rc2014n + seclen 512 + tracks 7168 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 6656 + os 2.2 +end + +diskdef rc2014o + seclen 512 + tracks 7680 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 7168 + os 2.2 +end + +diskdef rc2014p + seclen 512 + tracks 7808 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 7680 os 2.2 end diff --git a/Source/HBIOS/Build.ps1 b/Source/HBIOS/Build.ps1 index 5f7fc69d..4e146a79 100644 --- a/Source/HBIOS/Build.ps1 +++ b/Source/HBIOS/Build.ps1 @@ -170,7 +170,7 @@ ROMSIZE .EQU ${ROMSize} Copy-Item '..\Fonts\font*.asm' '.' # Assemble individual components. Note in the case of UNA, there is less to build. -$RomComponentList = "dbgmon", "romldr", "eastaegg", "imgpad" +$RomComponentList = "dbgmon", "romldr", "eastaegg" ForEach ($RomComponentName in $RomComponentList) {Asm $RomComponentName} if ($Platform -ne "UNA") @@ -183,7 +183,8 @@ if ($Platform -ne "UNA") Asm 'tastybasic' Asm 'game' Asm 'usrrom' - Asm 'imgpad0' + Asm 'imgpad1' + Asm 'imgpad2' } # @@ -198,10 +199,11 @@ Concat 'romldr.bin', 'eastaegg.bin','dbgmon.bin', "..\cpm22\cpm_${Bios}.bin", ". # Build 20K OS chunk containing the loader, debug monitor, and one OS image Concat 'romldr.bin', 'eastaegg.bin','dbgmon.bin', "..\zsdos\zsys_${Bios}.bin" osimg_small.bin -# Build second 32K chunk containing supplemental ROM apps (not for UNA) +# Build second and third 32K chunks containing supplemental ROM apps (not for UNA) if ($Platform -ne "UNA") { - Concat '..\Forth\camel80.bin', 'nascom.bin', 'tastybasic.bin', 'game.bin', 'imgpad0.bin', 'usrrom.bin' osimg1.bin + Concat '..\Forth\camel80.bin', 'nascom.bin', 'tastybasic.bin', 'game.bin', 'imgpad1.bin', 'usrrom.bin' osimg1.bin + Concat 'netboot.mod', 'imgpad2.bin' osimg2.bin } # @@ -253,8 +255,8 @@ if ($Platform -eq "UNA") } else { - Concat 'hbios_rom.bin','osimg.bin','osimg1.bin','osimg.bin',$RomDiskFile $RomFile - Concat 'hbios_rom.bin','osimg.bin','osimg1.bin','osimg.bin' $UpdFile + Concat 'hbios_rom.bin','osimg.bin','osimg1.bin','osimg2.bin',$RomDiskFile $RomFile + Concat 'hbios_rom.bin','osimg.bin','osimg1.bin','osimg2.bin' $UpdFile Concat 'hbios_app.bin','osimg_small.bin' $ComFile # Concat 'hbios_img.bin','osimg_small.bin' $ImgFile } diff --git a/Source/HBIOS/Build.sh b/Source/HBIOS/Build.sh index 117fa459..2009fc85 100755 --- a/Source/HBIOS/Build.sh +++ b/Source/HBIOS/Build.sh @@ -99,10 +99,10 @@ done cp ../Forth/camel80.bin . -make dbgmon.bin romldr.bin eastaegg.bin imgpad.bin +make dbgmon.bin romldr.bin eastaegg.bin imgpad1.bin imgpad2.bin if [ $platform != UNA ] ; then - make nascom.bin tastybasic.bin game.bin usrrom.bin imgpad0.bin + make nascom.bin tastybasic.bin game.bin usrrom.bin imgpad1.bin imgpad2.bin make hbios_rom.bin hbios_app.bin hbios_img.bin fi @@ -112,7 +112,8 @@ cat romldr.bin eastaegg.bin dbgmon.bin ../CPM22/cpm_$BIOS.bin ../ZSDOS/zsys_$BIO cat romldr.bin eastaegg.bin dbgmon.bin ../ZSDOS/zsys_$BIOS.bin >osimg_small.bin if [ $platform != UNA ] ; then - cat camel80.bin nascom.bin tastybasic.bin game.bin imgpad0.bin usrrom.bin >osimg1.bin + cat camel80.bin nascom.bin tastybasic.bin game.bin imgpad1.bin usrrom.bin >osimg1.bin + cat netboot.mod imgpad2.bin >osimg2.bin fi echo "Building ${romsize}KB $romname ROM disk data file..." @@ -161,8 +162,8 @@ if [ $platform = UNA ] ; then cp $romdiskfile $outdir/UNA_WBW_ROM$romsize.bin cat ../UBIOS/UNA-BIOS.BIN osimg.bin ../UBIOS/FSFAT.BIN $romdiskfile >$romname.rom else - cat hbios_rom.bin osimg.bin osimg1.bin osimg.bin $romdiskfile >$romname.rom - cat hbios_rom.bin osimg.bin osimg1.bin osimg.bin >$romname.upd + cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin $romdiskfile >$romname.rom + cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin >$romname.upd cat hbios_app.bin osimg_small.bin > $romname.com # cat hbios_img.bin osimg_small.bin > $romname.img fi diff --git a/Source/HBIOS/Makefile b/Source/HBIOS/Makefile index ed639fdf..e9e362a4 100644 --- a/Source/HBIOS/Makefile +++ b/Source/HBIOS/Makefile @@ -34,8 +34,8 @@ else endif MOREDIFF = camel80.bin game.bin hbios_rom.bin nascom.bin prefix.bin usrrom.bin \ - dbgmon.bin hbios_app.bin imgpad0.bin osimg1.bin romldr.bin \ - eastaegg.bin hbios_img.bin imgpad.bin osimg.bin tastybasic.bin \ + dbgmon.bin hbios_app.bin imgpad1.bin imgpad2.bin osimg1.bin osimg2.bin romldr.bin \ + eastaegg.bin hbios_img.bin osimg.bin tastybasic.bin \ game.bin usrrom.bin SUBDIRS = diff --git a/Source/HBIOS/asci.asm b/Source/HBIOS/asci.asm index dc05caba..ec0a9763 100644 --- a/Source/HBIOS/asci.asm +++ b/Source/HBIOS/asci.asm @@ -232,6 +232,10 @@ ASCI_INTRCV1: ADD A,8 ; BUMP TO RDR PORT LD C,A ; PUT IN C, B IS STILL ZERO IN A,(C) ; READ PORT + #IF (ASCIBOOT != 0) + CP ASCIBOOT ; REBOOT REQUEST? + JP Z,SYS_RESCOLD ; IF SO, DO IT, NO RETURN + #ENDIF LD B,A ; SAVE BYTE READ LD L,(IY+6) ; SET HL TO LD H,(IY+7) ; ... START OF BUFFER STRUCT diff --git a/Source/HBIOS/cfg_dyno.asm b/Source/HBIOS/cfg_dyno.asm index a7d8b686..6d0bbb3d 100644 --- a/Source/HBIOS/cfg_dyno.asm +++ b/Source/HBIOS/cfg_dyno.asm @@ -91,6 +91,7 @@ UARTENABLE .EQU FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM) ; ASCIENABLE .EQU TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM) ASCISWAP .EQU FALSE ; ASCI: SWAP CHANNELS +ASCIBOOT .EQU 0 ; ASCI: REBOOT ON RCV CHAR (0=DISABLED) ASCI0CFG .EQU DEFSERCFG ; ASCI 0: SERIAL LINE CONFIG ASCI1CFG .EQU DEFSERCFG ; ASCI 1: SERIAL LINE CONFIG ; diff --git a/Source/HBIOS/cfg_ezz80.asm b/Source/HBIOS/cfg_ezz80.asm index a1a27eff..43eb2c88 100644 --- a/Source/HBIOS/cfg_ezz80.asm +++ b/Source/HBIOS/cfg_ezz80.asm @@ -112,6 +112,7 @@ ACIAENABLE .EQU FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM) ; SIOENABLE .EQU TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM) SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT +SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED) SIOCNT .EQU 2 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP SIO0MODE .EQU SIOMODE_STD ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP] SIO0BASE .EQU $80 ; SIO 0: REGISTERS BASE ADR diff --git a/Source/HBIOS/cfg_master.asm b/Source/HBIOS/cfg_master.asm index 43b66c08..5072ad1b 100644 --- a/Source/HBIOS/cfg_master.asm +++ b/Source/HBIOS/cfg_master.asm @@ -138,6 +138,7 @@ UARTRC .EQU FALSE ; UART: AUTO-DETECT RC UART ; ASCIENABLE .EQU FALSE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM) ASCISWAP .EQU FALSE ; ASCI: SWAP CHANNELS +ASCIBOOT .EQU 0 ; ASCI: REBOOT ON RCV CHAR (0=DISABLED) ASCI0CFG .EQU DEFSERCFG ; ASCI 0: SERIAL LINE CONFIG ASCI1CFG .EQU DEFSERCFG ; ASCI 1: SERIAL LINE CONFIG ; @@ -162,6 +163,7 @@ ACIA1CFG .EQU DEFSERCFG ; ACIA 1: SERIAL LINE CONFIG (SEE STD.ASM) ; SIOENABLE .EQU FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM) SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT +SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED) SIOCNT .EQU 2 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP SIO0MODE .EQU SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP] SIO0BASE .EQU $80 ; SIO 0: REGISTERS BASE ADR diff --git a/Source/HBIOS/cfg_mk4.asm b/Source/HBIOS/cfg_mk4.asm index 5a09e7d4..2e3f672a 100644 --- a/Source/HBIOS/cfg_mk4.asm +++ b/Source/HBIOS/cfg_mk4.asm @@ -106,6 +106,7 @@ UARTRC .EQU FALSE ; UART: AUTO-DETECT RC UART ; ASCIENABLE .EQU TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM) ASCISWAP .EQU FALSE ; ASCI: SWAP CHANNELS +ASCIBOOT .EQU 0 ; ASCI: REBOOT ON RCV CHAR (0=DISABLED) ASCI0CFG .EQU DEFSERCFG ; ASCI 0: SERIAL LINE CONFIG ASCI1CFG .EQU DEFSERCFG ; ASCI 1: SERIAL LINE CONFIG ; diff --git a/Source/HBIOS/cfg_n8.asm b/Source/HBIOS/cfg_n8.asm index acf639ed..0d19eb43 100644 --- a/Source/HBIOS/cfg_n8.asm +++ b/Source/HBIOS/cfg_n8.asm @@ -109,6 +109,7 @@ UARTRC .EQU FALSE ; UART: AUTO-DETECT RC UART ; ASCIENABLE .EQU TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM) ASCISWAP .EQU FALSE ; ASCI: SWAP CHANNELS +ASCIBOOT .EQU 0 ; ASCI: REBOOT ON RCV CHAR (0=DISABLED) ASCI0CFG .EQU DEFSERCFG ; ASCI 0: SERIAL LINE CONFIG ASCI1CFG .EQU DEFSERCFG ; ASCI 1: SERIAL LINE CONFIG ; diff --git a/Source/HBIOS/cfg_rcz180.asm b/Source/HBIOS/cfg_rcz180.asm index 73cf6316..b12a12cf 100644 --- a/Source/HBIOS/cfg_rcz180.asm +++ b/Source/HBIOS/cfg_rcz180.asm @@ -108,6 +108,7 @@ UARTRC .EQU TRUE ; UART: AUTO-DETECT RC UART ; ASCIENABLE .EQU TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM) ASCISWAP .EQU FALSE ; ASCI: SWAP CHANNELS +ASCIBOOT .EQU 0 ; ASCI: REBOOT ON RCV CHAR (0=DISABLED) ASCI0CFG .EQU DEFSERCFG ; ASCI 0: SERIAL LINE CONFIG ASCI1CFG .EQU DEFSERCFG ; ASCI 1: SERIAL LINE CONFIG ; @@ -117,6 +118,7 @@ ACIAENABLE .EQU FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM) ; SIOENABLE .EQU TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM) SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT +SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED) SIOCNT .EQU 2 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP SIO0MODE .EQU SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP] SIO0BASE .EQU $80 ; SIO 0: REGISTERS BASE ADR diff --git a/Source/HBIOS/cfg_rcz280.asm b/Source/HBIOS/cfg_rcz280.asm index 7918fc84..09e953ca 100644 --- a/Source/HBIOS/cfg_rcz280.asm +++ b/Source/HBIOS/cfg_rcz280.asm @@ -134,6 +134,7 @@ ACIA1CFG .EQU DEFSERCFG ; ACIA 1: SERIAL LINE CONFIG (SEE STD.ASM) ; SIOENABLE .EQU TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM) SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT +SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED) SIOCNT .EQU 2 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP SIO0MODE .EQU SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP] SIO0BASE .EQU $80 ; SIO 0: REGISTERS BASE ADR diff --git a/Source/HBIOS/cfg_rcz80.asm b/Source/HBIOS/cfg_rcz80.asm index 9db69706..2aa7448b 100644 --- a/Source/HBIOS/cfg_rcz80.asm +++ b/Source/HBIOS/cfg_rcz80.asm @@ -123,6 +123,7 @@ ACIA1CFG .EQU DEFSERCFG ; ACIA 1: SERIAL LINE CONFIG (SEE STD.ASM) ; SIOENABLE .EQU TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM) SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT +SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED) SIOCNT .EQU 2 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP SIO0MODE .EQU SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP] SIO0BASE .EQU $80 ; SIO 0: REGISTERS BASE ADR diff --git a/Source/HBIOS/cfg_sbc.asm b/Source/HBIOS/cfg_sbc.asm index e3ec540e..1fb43200 100644 --- a/Source/HBIOS/cfg_sbc.asm +++ b/Source/HBIOS/cfg_sbc.asm @@ -107,6 +107,7 @@ ACIAENABLE .EQU FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM) ; SIOENABLE .EQU TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM) SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT +SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED) SIOCNT .EQU 1 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP SIO0MODE .EQU SIOMODE_ZP ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP] SIO0BASE .EQU $B0 ; SIO 0: REGISTERS BASE ADR diff --git a/Source/HBIOS/cfg_scz180.asm b/Source/HBIOS/cfg_scz180.asm index ed0aacf8..e63e655d 100644 --- a/Source/HBIOS/cfg_scz180.asm +++ b/Source/HBIOS/cfg_scz180.asm @@ -103,6 +103,7 @@ UARTRC .EQU TRUE ; UART: AUTO-DETECT RC UART ; ASCIENABLE .EQU TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM) ASCISWAP .EQU FALSE ; ASCI: SWAP CHANNELS +ASCIBOOT .EQU 0 ; ASCI: REBOOT ON RCV CHAR (0=DISABLED) ASCI0CFG .EQU DEFSERCFG ; ASCI 0: SERIAL LINE CONFIG ASCI1CFG .EQU DEFSERCFG ; ASCI 1: SERIAL LINE CONFIG ; @@ -112,6 +113,7 @@ ACIAENABLE .EQU FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM) ; SIOENABLE .EQU TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM) SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT +SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED) SIOCNT .EQU 2 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP SIO0MODE .EQU SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP] SIO0BASE .EQU $80 ; SIO 0: REGISTERS BASE ADR diff --git a/Source/HBIOS/diskdefs b/Source/HBIOS/diskdefs index c35156b3..a16a4659 100644 --- a/Source/HBIOS/diskdefs +++ b/Source/HBIOS/diskdefs @@ -416,7 +416,6 @@ diskdef wbw_hd512_3 os 2.2 end - # RomWBW 8MB Hard Disk (1024 directory entry format) # New format, 1024 dir entries, 16,384 sectors / slice # Pure filesystem image, no MBR prefix @@ -432,7 +431,7 @@ diskdef wbw_hd1024 end # First 4 slices of wbw_hd1024 -# Assumes 128KB prefix (256 sectors) +# Assumes 1MB prefix (2048 sectors) diskdef wbw_hd1024_0 seclen 512 tracks 1040 @@ -440,7 +439,7 @@ diskdef wbw_hd1024_0 blocksize 4096 maxdir 1024 skew 0 - boottrk 18 + boottrk 130 os 2.2 end @@ -451,7 +450,7 @@ diskdef wbw_hd1024_1 blocksize 4096 maxdir 1024 skew 0 - boottrk 1042 + boottrk 1154 os 2.2 end @@ -462,7 +461,7 @@ diskdef wbw_hd1024_2 blocksize 4096 maxdir 1024 skew 0 - boottrk 2066 + boottrk 2178 os 2.2 end @@ -473,6 +472,225 @@ diskdef wbw_hd1024_3 blocksize 4096 maxdir 1024 skew 0 - boottrk 3114 + boottrk 3202 + os 2.2 +end + +# SmallZ80 Hard Disk Image +# 5 slices +diskdef smz80_hd0 + seclen 512 + tracks 1034 + sectrk 16 + blocksize 4096 + maxdir 1024 + skew 0 + boottrk 10 + os 2.2 +end + +diskdef smz80_hd1 + seclen 512 + tracks 2058 + sectrk 16 + blocksize 4096 + maxdir 1024 + skew 0 + boottrk 1034 + os 2.2 +end + +diskdef smz80_hd2 + seclen 512 + tracks 1034 + sectrk 16 + blocksize 4096 + maxdir 1024 + skew 0 + boottrk 2058 + os 2.2 +end + +diskdef smz80_hd3 + seclen 512 + tracks 4106 + sectrk 16 + blocksize 4096 + maxdir 1024 + skew 0 + boottrk 3082 + os 2.2 +end + +diskdef smz80_hd4 + seclen 512 + tracks 5130 + sectrk 16 + blocksize 4096 + maxdir 1024 + skew 0 + boottrk 4106 + os 2.2 +end + +# RC2014 standard hard disk image +# Slices A-P +diskdef rc2014a + seclen 512 + tracks 512 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 1 + os 2.2 +end + +diskdef rc2014b + seclen 512 + tracks 1024 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 512 + os 2.2 +end + +diskdef rc2014c + seclen 512 + tracks 1536 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 1024 + os 2.2 +end + +diskdef rc2014d + seclen 512 + tracks 2048 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 1536 + os 2.2 +end + +diskdef rc2014e + seclen 512 + tracks 2560 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 2048 + os 2.2 +end + +diskdef rc2014f + seclen 512 + tracks 3072 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 2560 + os 2.2 +end + +diskdef rc2014g + seclen 512 + tracks 3584 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 3072 + os 2.2 +end + +diskdef rc2014h + seclen 512 + tracks 4096 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 3584 + os 2.2 +end + +diskdef rc2014i + seclen 512 + tracks 4608 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 4096 + os 2.2 +end + +diskdef rc2014j + seclen 512 + tracks 5120 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 4608 + os 2.2 +end + +diskdef rc2014k + seclen 512 + tracks 5632 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 5120 + os 2.2 +end + +diskdef rc2014l + seclen 512 + tracks 6144 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 5632 + os 2.2 +end + +diskdef rc2014m + seclen 512 + tracks 6656 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 6144 + os 2.2 +end + +diskdef rc2014n + seclen 512 + tracks 7168 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 6656 + os 2.2 +end + +diskdef rc2014o + seclen 512 + tracks 7680 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 7168 + os 2.2 +end + +diskdef rc2014p + seclen 512 + tracks 7808 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 7680 os 2.2 end diff --git a/Source/HBIOS/imgpad0.asm b/Source/HBIOS/imgpad1.asm similarity index 100% rename from Source/HBIOS/imgpad0.asm rename to Source/HBIOS/imgpad1.asm diff --git a/Source/HBIOS/imgpad2.asm b/Source/HBIOS/imgpad2.asm new file mode 100644 index 00000000..6a2ad74c --- /dev/null +++ b/Source/HBIOS/imgpad2.asm @@ -0,0 +1,12 @@ +#INCLUDE "std.asm" +; +SLACK .EQU ($8000-NET_SIZ) + .FILL SLACK,00H +; +MON_STACK .EQU $ +; + .ECHO "Padspace space created: " + .ECHO SLACK + .ECHO " bytes.\n" + + .END \ No newline at end of file diff --git a/Source/HBIOS/netboot.mod b/Source/HBIOS/netboot.mod new file mode 100644 index 00000000..95504ec4 Binary files /dev/null and b/Source/HBIOS/netboot.mod differ diff --git a/Source/HBIOS/romldr.asm b/Source/HBIOS/romldr.asm index 685671aa..33d3dbfa 100644 --- a/Source/HBIOS/romldr.asm +++ b/Source/HBIOS/romldr.asm @@ -2051,6 +2051,7 @@ ra_ent(str_bas, 'B', KY_DE, BID_IMG1, $1700, BAS_LOC, BAS_SIZ, BAS_LOC) ra_ent(str_tbas, 'T', KY_EN, BID_IMG1, $3700, TBC_LOC, TBC_SIZ, TBC_LOC) ra_ent(str_play, 'P', $FF, BID_IMG1, $4000, GAM_LOC, GAM_SIZ, GAM_LOC) ra_ent(str_user, 'U', $FF, BID_IMG1, $7000, USR_LOC, USR_SIZ, USR_LOC) +ra_ent(str_net, 'N', $FF, BID_IMG2, $0000, NET_LOC, NET_SIZ, NET_LOC) #endif #if (DSKYENABLE) ra_ent(str_dsky, 'Y'+$80, KY_GO, bid_cur, $1000, MON_LOC, MON_SIZ, MON_DSKY) @@ -2080,6 +2081,7 @@ str_tbas .db "Tasty BASIC",0 str_play .db "Play a Game",0 str_user .db "User App",0 str_egg .db "",0 +str_net .db "Network Boot",0 newcon .db 0 newspeed .db 0 ; diff --git a/Source/HBIOS/sd.asm b/Source/HBIOS/sd.asm index 3612b24b..9afe6c81 100644 --- a/Source/HBIOS/sd.asm +++ b/Source/HBIOS/sd.asm @@ -1334,10 +1334,11 @@ SD_INITCMD1: INC HL ; POINT TO NEXT BYTE LD (HL),A ; CLEAR IT DJNZ SD_INITCMD1 ; LOOP TILL DONE - ; CRC POSITION SHOULD BE COMPLETELY IGNORED BECAUSE WE DON'T - ; ENABLE IT AND WE ARE IN SPI MODE. HOWEVER, AT LEAST ONE SD - ; CARD IS KNOWN TO FAIL ANY COMMAND WHERE THE CRC POSITION - ; IS NOT $FF! SO, BELOW WE STUFF THE CRC POSITION WITH $FF. + ; THE CRC POSITION IS ACTUALLY 7 BITS OF CRC (HIGH BITS) AND + ; 1 BIT INDICATING END OF COMMAND. MOST CARDS DON'T REALLY + ; CARE ABOUT THE END OF COMMAND BIT, BUT I HAVE WORKED WITH + ; AT LEAST ONE PERSON THAT HAD A CARD THAT NEEDED THIS. + ; SO, BELOW WE STUFF THE CRC POSITION WITH $FF. DEC A ; $FF TO ACCUM LD (SD_CMDCRC),A ; PUT $FF IN CRC POSITION RET diff --git a/Source/HBIOS/sio.asm b/Source/HBIOS/sio.asm index 5a013853..8e7e323a 100644 --- a/Source/HBIOS/sio.asm +++ b/Source/HBIOS/sio.asm @@ -267,6 +267,10 @@ SIO_INTRCV1: ; RECEIVE CHARACTER INTO BUFFER LD C,(IY+4) ; DATA PORT TO C IN A,(C) ; READ PORT + #IF (SIOBOOT != 0) + CP SIOBOOT ; REBOOT REQUEST? + JP Z,SYS_RESCOLD ; IF SO, DO IT, NO RETURN + #ENDIF LD B,A ; SAVE BYTE READ LD L,(IY+7) ; SET HL TO LD H,(IY+8) ; ... START OF BUFFER STRUCT diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index 47f8f986..fd257f6d 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -473,7 +473,8 @@ BID_RAMN .EQU (BID_RAM0 + ((RAMSIZE / 32) - 1)) BID_BOOT .EQU BID_ROM0 ; BOOT 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 +;BID_FSFAT .EQU BID_ROM0 + 3 ; FAT FILESYSTEM DRIVER BANK +BID_IMG2 .EQU BID_ROM0 + 3 ; NETWORK BOOT BID_ROMD0 .EQU BID_ROM0 + 4 ; FIRST ROM DRIVE BANK BID_ROMDN .EQU BID_ROMN ; LAST ROM DRIVE BANK @@ -540,6 +541,10 @@ USR_LOC .EQU $0200 ; USER USR_SIZ .EQU $1000 USR_END .EQU USR_LOC + USR_SIZ +NET_LOC .EQU $0100 ; NETWORK BOOT +NET_SIZ .EQU $2000 +NET_END .EQU NET_LOC + NET_SIZ + MON_DSKY .EQU MON_LOC + (0 * 3) ; MONITOR ENTRY (DSKY) MON_SERIAL .EQU MON_LOC + (1 * 3) ; MONITOR ENTRY (SERIAL PORT) ; diff --git a/Source/HBIOS/usrrom.asm b/Source/HBIOS/usrrom.asm index 908f0b93..bbc54162 100644 --- a/Source/HBIOS/usrrom.asm +++ b/Source/HBIOS/usrrom.asm @@ -47,21 +47,12 @@ COUT: PUSH AF LD C,0 LD E,A RST 08 - CALL $FFF0 POP HL POP DE POP BC POP AF RET ; -; OUTPUT CHARACTER IN A TO CONSOLE DEVICE -; -COUTE: PUSH AF - LD A,E - CALL COUT - POP AF - RET -; ; WAIT FOR A CHARACTER FROM THE CONSOLE DEVICE AND RETURN IT IN A ; CIN: PUSH BC @@ -80,6 +71,9 @@ BOOTMSG:.DB CR,LF,CR,LF .DB "No User ROM Installed." .DB CR,LF,CR,LF .DB "Press a key to return to Boot Loader.$" +; +; IT IS CRITICAL THAT THE FINAL BINARY BE EXACTLY USR_SIZ BYTES. +; THIS GENERATES FILLER AS NEEDED. ; SLACK .EQU (USR_END - $) .FILL SLACK,00 diff --git a/Source/Images/d_bp/u0/UNZIP154.COM b/Source/Images/d_bp/u0/UNZIP154.COM new file mode 100644 index 00000000..f0572630 Binary files /dev/null and b/Source/Images/d_bp/u0/UNZIP154.COM differ diff --git a/Source/Images/d_bp/u0/UNZIP186.COM b/Source/Images/d_bp/u0/UNZIP186.COM new file mode 100644 index 00000000..c750ff52 Binary files /dev/null and b/Source/Images/d_bp/u0/UNZIP186.COM differ diff --git a/Source/Images/d_cpm22/u0/UNZIP154.COM b/Source/Images/d_cpm22/u0/UNZIP154.COM new file mode 100644 index 00000000..f0572630 Binary files /dev/null and b/Source/Images/d_cpm22/u0/UNZIP154.COM differ diff --git a/Source/Images/d_cpm22/u0/UNZIP186.COM b/Source/Images/d_cpm22/u0/UNZIP186.COM new file mode 100644 index 00000000..c750ff52 Binary files /dev/null and b/Source/Images/d_cpm22/u0/UNZIP186.COM differ diff --git a/Source/Images/d_zsdos/u0/UNZIP154.COM b/Source/Images/d_zsdos/u0/UNZIP154.COM new file mode 100644 index 00000000..f0572630 Binary files /dev/null and b/Source/Images/d_zsdos/u0/UNZIP154.COM differ diff --git a/Source/Images/d_zsdos/u0/UNZIP186.COM b/Source/Images/d_zsdos/u0/UNZIP186.COM new file mode 100644 index 00000000..c750ff52 Binary files /dev/null and b/Source/Images/d_zsdos/u0/UNZIP186.COM differ diff --git a/Source/Images/diskdefs b/Source/Images/diskdefs index c35156b3..a16a4659 100644 --- a/Source/Images/diskdefs +++ b/Source/Images/diskdefs @@ -416,7 +416,6 @@ diskdef wbw_hd512_3 os 2.2 end - # RomWBW 8MB Hard Disk (1024 directory entry format) # New format, 1024 dir entries, 16,384 sectors / slice # Pure filesystem image, no MBR prefix @@ -432,7 +431,7 @@ diskdef wbw_hd1024 end # First 4 slices of wbw_hd1024 -# Assumes 128KB prefix (256 sectors) +# Assumes 1MB prefix (2048 sectors) diskdef wbw_hd1024_0 seclen 512 tracks 1040 @@ -440,7 +439,7 @@ diskdef wbw_hd1024_0 blocksize 4096 maxdir 1024 skew 0 - boottrk 18 + boottrk 130 os 2.2 end @@ -451,7 +450,7 @@ diskdef wbw_hd1024_1 blocksize 4096 maxdir 1024 skew 0 - boottrk 1042 + boottrk 1154 os 2.2 end @@ -462,7 +461,7 @@ diskdef wbw_hd1024_2 blocksize 4096 maxdir 1024 skew 0 - boottrk 2066 + boottrk 2178 os 2.2 end @@ -473,6 +472,225 @@ diskdef wbw_hd1024_3 blocksize 4096 maxdir 1024 skew 0 - boottrk 3114 + boottrk 3202 + os 2.2 +end + +# SmallZ80 Hard Disk Image +# 5 slices +diskdef smz80_hd0 + seclen 512 + tracks 1034 + sectrk 16 + blocksize 4096 + maxdir 1024 + skew 0 + boottrk 10 + os 2.2 +end + +diskdef smz80_hd1 + seclen 512 + tracks 2058 + sectrk 16 + blocksize 4096 + maxdir 1024 + skew 0 + boottrk 1034 + os 2.2 +end + +diskdef smz80_hd2 + seclen 512 + tracks 1034 + sectrk 16 + blocksize 4096 + maxdir 1024 + skew 0 + boottrk 2058 + os 2.2 +end + +diskdef smz80_hd3 + seclen 512 + tracks 4106 + sectrk 16 + blocksize 4096 + maxdir 1024 + skew 0 + boottrk 3082 + os 2.2 +end + +diskdef smz80_hd4 + seclen 512 + tracks 5130 + sectrk 16 + blocksize 4096 + maxdir 1024 + skew 0 + boottrk 4106 + os 2.2 +end + +# RC2014 standard hard disk image +# Slices A-P +diskdef rc2014a + seclen 512 + tracks 512 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 1 + os 2.2 +end + +diskdef rc2014b + seclen 512 + tracks 1024 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 512 + os 2.2 +end + +diskdef rc2014c + seclen 512 + tracks 1536 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 1024 + os 2.2 +end + +diskdef rc2014d + seclen 512 + tracks 2048 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 1536 + os 2.2 +end + +diskdef rc2014e + seclen 512 + tracks 2560 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 2048 + os 2.2 +end + +diskdef rc2014f + seclen 512 + tracks 3072 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 2560 + os 2.2 +end + +diskdef rc2014g + seclen 512 + tracks 3584 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 3072 + os 2.2 +end + +diskdef rc2014h + seclen 512 + tracks 4096 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 3584 + os 2.2 +end + +diskdef rc2014i + seclen 512 + tracks 4608 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 4096 + os 2.2 +end + +diskdef rc2014j + seclen 512 + tracks 5120 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 4608 + os 2.2 +end + +diskdef rc2014k + seclen 512 + tracks 5632 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 5120 + os 2.2 +end + +diskdef rc2014l + seclen 512 + tracks 6144 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 5632 + os 2.2 +end + +diskdef rc2014m + seclen 512 + tracks 6656 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 6144 + os 2.2 +end + +diskdef rc2014n + seclen 512 + tracks 7168 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 6656 + os 2.2 +end + +diskdef rc2014o + seclen 512 + tracks 7680 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 7168 + os 2.2 +end + +diskdef rc2014p + seclen 512 + tracks 7808 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 7680 os 2.2 end diff --git a/Source/RomDsk/ROM_1024KB/FAT.COM b/Source/RomDsk/ROM_1024KB/FAT.COM index 1dd7dcca..688faa99 100644 Binary files a/Source/RomDsk/ROM_1024KB/FAT.COM and b/Source/RomDsk/ROM_1024KB/FAT.COM differ diff --git a/Source/RomDsk/ROM_1024KB/UNZIP154.COM b/Source/RomDsk/ROM_1024KB/UNZIP154.COM new file mode 100644 index 00000000..f0572630 Binary files /dev/null and b/Source/RomDsk/ROM_1024KB/UNZIP154.COM differ diff --git a/Source/RomDsk/ROM_1024KB/UNZIP186.COM b/Source/RomDsk/ROM_1024KB/UNZIP186.COM new file mode 100644 index 00000000..c750ff52 Binary files /dev/null and b/Source/RomDsk/ROM_1024KB/UNZIP186.COM differ diff --git a/Source/ZZR/Build.cmd b/Source/ZZR/Build.cmd index 6b1fe5f6..6bb4b25e 100644 --- a/Source/ZZR/Build.cmd +++ b/Source/ZZR/Build.cmd @@ -3,10 +3,14 @@ setlocal if not exist ..\..\Binary\RCZ280_nat_zzr.rom goto :eof -..\..\Tools\srecord\srec_cat.exe ..\..\Binary\RCZ280_nat_zzr.rom -Binary -Exclude 0x5000 0x7000 zzr_romldr.hex -Intel -Output ..\..\Binary\RCZ280_nat_zzr.hex -Intel +rem ..\..\Tools\srecord\srec_cat.exe ..\..\Binary\RCZ280_nat_zzr.rom -Binary -Exclude 0x5000 0x7000 zzr_romldr.hex -Intel -Output ..\..\Binary\RCZ280_nat_zzr.hex -Intel -..\..\Tools\srecord\srec_cat.exe ..\..\Binary\RCZ280_nat_zzr.hex -Intel -Output ..\..\Binary\RCZ280_nat_zzr_ldr.rom -Binary +..\..\Tools\srecord\srec_cat.exe ..\..\Binary\RCZ280_nat_zzr.rom -Binary -Output ..\..\Binary\RCZ280_nat_zzr.hex -Intel -copy /b zzr_cfldr.bin + zzr_ptbl.bin + zzr_fill_1.bin + zzr_mon.bin + zzr_fill_2.bin + ..\..\Binary\RCZ280_nat_zzr_ldr.rom + zzr_fill_3.bin ..\..\Binary\hd1024_zzr_prefix.dat +rem ..\..\Tools\srecord\srec_cat.exe ..\..\Binary\RCZ280_nat_zzr.hex -Intel -Output ..\..\Binary\RCZ280_nat_zzr_ldr.rom -Binary + +rem copy /b zzr_cfldr.bin + zzr_ptbl.bin + zzr_fill_1.bin + zzr_mon.bin + zzr_fill_2.bin + ..\..\Binary\RCZ280_nat_zzr_ldr.rom + zzr_fill_3.bin ..\..\Binary\hd1024_zzr_prefix.dat + +copy /b zzr_cfldr.bin + zzr_ptbl.bin + zzr_fill_1.bin + zzr_mon.bin + zzr_fill_2.bin + ..\..\Binary\RCZ280_nat_zzr.rom + zzr_fill_3.bin ..\..\Binary\hd1024_zzr_prefix.dat copy /b ..\..\Binary\hd1024_zzr_prefix.dat + ..\..\Binary\hd1024_cpm22.img + ..\..\Binary\hd1024_zsdos.img + ..\..\Binary\hd1024_nzcom.img + ..\..\Binary\hd1024_cpm3.img + ..\..\Binary\hd1024_zpm3.img + ..\..\Binary\hd1024_ws4.img ..\..\Binary\hd1024_zzr_combo.img \ No newline at end of file diff --git a/Source/ZZR/Makefile b/Source/ZZR/Makefile index 7de1e4e0..b748bb97 100644 --- a/Source/ZZR/Makefile +++ b/Source/ZZR/Makefile @@ -9,9 +9,9 @@ HD1024IMGS = ../../Binary/hd1024_cpm22.img ../../Binary/hd1024_zsdos.img ../../B OBJECTS := - ifneq ($(wildcard $(ZZRROM)),) - OBJECTS += $(ZZRROMHEX) $(ZZRLDRROM) $(HD1024ZZRPREFIX) $(HD1024ZZZROMBOIMG) +# OBJECTS += $(ZZRROMHEX) $(ZZRLDRROM) $(HD1024ZZRPREFIX) $(HD1024ZZZROMBOIMG) + OBJECTS += $(ZZRROMHEX) $(HD1024ZZRPREFIX) $(HD1024ZZZROMBOIMG) endif DEST=../../Binary @@ -23,13 +23,15 @@ include $(TOOLS)/Makefile.inc DIFFPATH = $(DIFFTO)/Binary $(HD1024ZZRPREFIX): - cat zzr_cfldr.bin zzr_ptbl.bin zzr_fill_1.bin zzr_mon.bin zzr_fill_2.bin $(ZZRLDRROM) zzr_fill_3.bin >$@ +# cat zzr_cfldr.bin zzr_ptbl.bin zzr_fill_1.bin zzr_mon.bin zzr_fill_2.bin $(ZZRLDRROM) zzr_fill_3.bin >$@ + cat zzr_cfldr.bin zzr_ptbl.bin zzr_fill_1.bin zzr_mon.bin zzr_fill_2.bin $(ZZRROM) zzr_fill_3.bin >$@ $(HD1024ZZZROMBOIMG): $(HD1024ZZRPREFIX) $(HD1024IMGS) cat $^ > $@ $(ZZRROMHEX): $(ZZRROM) - srec_cat $(ZZRROM) -Binary -Exclude 0x5000 0x7000 zzr_romldr.hex -Intel -Output $(ZZRROMHEX) -Intel +# srec_cat $(ZZRROM) -Binary -Exclude 0x5000 0x7000 zzr_romldr.hex -Intel -Output $(ZZRROMHEX) -Intel + srec_cat $(ZZRROM) -Binary -Output $(ZZRROMHEX) -Intel $(ZZRLDRROM): $(ZZRROMHEX) srec_cat $(ZZRROMHEX) -Intel -Output $(ZZRLDRROM) -Binary diff --git a/Source/ZZR/ZZR Disk Layout.txt b/Source/ZZR/ZZR Disk Layout.txt index e6e32913..6042edde 100644 --- a/Source/ZZR/ZZR Disk Layout.txt +++ b/Source/ZZR/ZZR Disk Layout.txt @@ -9,21 +9,15 @@ Start Length Sector Count Description 0x64000 0x9C000 0x320 0x4E0 Filler 0x100000 0x800 Slices -Must insert zzr_romldr.bin at 0x5000-x5FFF of ROM image. This is also 0x29000-0x29FFF of CF image. - Notes ----- - At startup CPLD ROM is mapped to Z80 CPU address space 0x0000-0x003F, CPU begins execution at 0x0000 -- CPLD ROM (CF bootstrap mode) loads CF Boot Loader (256B) at 0xB000 and runs it -- CF Boot Loader loads ZZRCC Monitor at 0xB400 and runs it -- Monitor (Boot RomWBW) loads ZZRCC RomWBW Loader hex file at 0x5000, then runs it -- RomWBW Loader loads RomWBW ROM image to contents of RAM, then runs it - - -;;- ZZRCC Monitor reads 512KB (RomWBW) from sectors 0x120-0x51F of CF into first 512KB of RAM +- CPLD ROM (CF bootstrap mode) loads CF Boot Loader (256B) to 0xB000 and runs it +- CF Boot Loader loads ZZRCC Monitor to 0xB000 and runs it starting at address 0xB400 +- Monitor (Boot RomWBW) loads RomWBW ROM image to first 8 banks of RAM, then runs it starting at address 0x000 -Possible new layout: +Possible alternative layout: Start Length Sector Count Description ------- ------- ------- ------- ----------------------------------------- diff --git a/Source/ZZR/zzr_mon.bin b/Source/ZZR/zzr_mon.bin index d9bbfcca..e9a04d74 100644 Binary files a/Source/ZZR/zzr_mon.bin and b/Source/ZZR/zzr_mon.bin differ diff --git a/Source/ZZR/zzr_romldr.hex b/Source/ZZR/zzr_romldr.hex deleted file mode 100644 index e670752e..00000000 --- a/Source/ZZR/zzr_romldr.hex +++ /dev/null @@ -1,99 +0,0 @@ -:06500000C31850C30C525E -:1050180031005FCD0F53218855CD0653CD3253FE55 -:105028003ACA2E5018F6210000220850CDCD52570A -:105038004F47CDCD52678047CDCD526F8047CDCDFC -:1050480052FE00CA9050FE01CA7E50FE04C2F950BA -:1050580080477AFE02C2F950CDCD523209508047BE -:10506800CDCD523208508047CDCD52ED44B8C2F56F -:10507800503E45C3F050CDCD52212356CD0653CDD9 -:105088000851CD1B53C300008047DD210060CDCD02 -:1050980052DD77008047DD2315C29650CDCD52ED05 -:1050A80044B8C2F550CD1553E50600C50E1F21E0E2 -:1050B800F0EDBF0E1CE1EDBF0E1B216F00EDBF0E22 -:1050C8001A2100F0EDBF0E193A085067D16A3E0F59 -:1050D800B5EDBF0E18626B3EF0B4EDBF2180800EB7 -:1050E8001DEDBFCD0F533E2ECD3C5318093E3F1842 -:1050F800F73E55CD3C53CD3253FE3A20F9C33450D8 -:10510800AF320C503E01320D50116855CD1B53AFD4 -:10511800D3153EE0D3160E102147533A0D50D31441 -:105128003A0C50D3133E01D3123E30D317DB17E6A7 -:1051380008CA355106007EED79237ABC20057BBD6F -:1051480020012B0520F07EED79237ABC20057BBD5C -:1051580020012B0520F0DB17E680C25E513A0C5087 -:105168003C320C50FE20C22351AF320E50210A00AF -:10517800CD15533E0AD3F10EF5EDBF3E1AD3F10E0D -:10518800F5EDBFCD1B53AFD3153EE0D3160E10215E -:1051980000A03A0D50D3143A0C50D3133E01D31249 -:1051A8003E30D317DB17E608CAAC510600EDB3ED65 -:1051B800B3DB17E680C2B9513A0C503C320C502090 -:1051C800073A0D503C320D503EB0BC20C53A0E5047 -:1051D8003C320E50FAF551260017CB1417CB141792 -:1051E800CB1417CB14E6F0F60A6FC37851CD1553DC -:1051F80021AA003E0AD3F10EF5EDBF3E1AD3F10EF7 -:10520800F5EDBFC931005FCD0F53210356CD0653CD -:105218003E20320A503E01320B50AF320E50210A66 -:1052280000CD15533E06D3F10EF5EDBF3E16D3F172 -:105238000EF5EDBFCD1B53AFD3153EE0D3160E10C0 -:105248002100603A0B50D3143A0A50D3133E01D3CD -:10525800123E20D317DB17E608CA5D520600EDB2EE -:10526800EDB23A0A503C320A5020073A0B503C3211 -:105278000B503E70BC20CC18083A0A50C608320AB7 -:10528800503A0E503C320E50FAB152FE0528EAFE52 -:105298000628E6260017CB1417CB1417CB1417CB08 -:1052A80014E6F0F60A6FC32952CD1553216A003E61 -:1052B80006D3F10EF5EDBF3E16D3F10EF5EDBFCDD9 -:1052C8001B53C30000D5CD3253CDE2520707070761 -:1052D80057CD3253CDE252B2D1C9D630FA0253FE7D -:1052E8000AF8D611FA0053C60AFE10F8D62AFAFEB2 -:1052F80052C60AFE10F8C616C611C630BFC97EB718 -:10530800C8CD3C532318F7E52EFEC31E53E52EFFE8 -:10531800C31E53E52E00C50E08ED6EC1E1C9DB14AE -:10532800E610CA2653DB16D318C9DB14E610CA32B6 -:1053380053DB16C9F5DB121FD23D53F1D318C90050 -:10534800524F4D5742572020494D470100008004D5 -:1053580000050006000700080009000A000B00000D -:10536800524F4D5742572020494D47030000800CAB -:10537800000D000E000F00100011001200130000B5 -:10538800524F4D5742572020494D47050000801481 -:1053980000150016001700180019001A001B00005D -:1053A800524F4D5742572020494D47070000801C57 -:1053B800001D001E001F0020002100220023000005 -:1053C800524F4D5742572020494D4709000080242D -:1053D80000250026002700280029002A002B0000AD -:1053E800524F4D5742572020494D470B0000802C03 -:1053F800002D002E002F0030003100320033000055 -:10540800524F4D5742572020494D470D00008034D8 -:1054180000350036003700380039003A003B0000FC -:10542800524F4D5742572020494D470F0000803CAE -:10543800003D003E003F00400041004200430000A4 -:10544800524F4D5742572020494D47110000804484 -:1054580000450046004700480049004A004B00004C -:10546800524F4D5742572020494D47130000804C5A -:10547800004D004E004F00500051005200530000F4 -:10548800524F4D5742572020494D47150000805430 -:1054980000550056005700580059005A005B00009C -:1054A800524F4D5742572020494D47170000805C06 -:1054B800005D005E005F0060006100620063000044 -:1054C800524F4D5742572020494D471900008064DC -:1054D80000650066006700680069006A006B0000EC -:1054E800524F4D5742572020494D471B0000806CB2 -:1054F800006D006E006F0070007100720073000094 -:10550800524F4D5742572020494D471D0000807487 -:1055180000750076007700780079007A007B00003B -:10552800524F4D5742572020494D471F0000807C5D -:10553800007D007E007F00800081008200830000E3 -:10554800524F4D5742572020494D47000001000057 -:10555800000000000000000000000000000000E55E -:105568000A001A002A003A004A005A006A007A0023 -:105578008A009A00AA00BA00CA00DA00EA00FA0013 -:105588000A0D20524F4D574257204C6F6164657287 -:105598002076302E320D0A20526561647920746FAE -:1055A8002061636365707420524F4D5742572068DD -:1055B80065782066696C650D0A205768656E2066F7 -:1055C800696C65206C6F616420636F6D706C6574C5 -:1055D80065642C20636F70792066696C6520746F30 -:1055E80020434620616E64207468656E206A756D7C -:1055F8007020746F203078300D0A000A0D426F6FEA -:1056080074696E6720524F4D5742572066726F6D0E -:0F561800204346206469736B0D0A00580D0A0089 -:00000001FF diff --git a/Source/ver.inc b/Source/ver.inc index 628b2e87..3115b8e7 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.68" +#DEFINE BIOSVER "3.1.1-pre.72" diff --git a/Source/ver.lib b/Source/ver.lib index 7bdf5117..676093af 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.68" + db "3.1.1-pre.72" endm diff --git a/Tools/cpmtools/diskdefs b/Tools/cpmtools/diskdefs index c35156b3..a16a4659 100644 --- a/Tools/cpmtools/diskdefs +++ b/Tools/cpmtools/diskdefs @@ -416,7 +416,6 @@ diskdef wbw_hd512_3 os 2.2 end - # RomWBW 8MB Hard Disk (1024 directory entry format) # New format, 1024 dir entries, 16,384 sectors / slice # Pure filesystem image, no MBR prefix @@ -432,7 +431,7 @@ diskdef wbw_hd1024 end # First 4 slices of wbw_hd1024 -# Assumes 128KB prefix (256 sectors) +# Assumes 1MB prefix (2048 sectors) diskdef wbw_hd1024_0 seclen 512 tracks 1040 @@ -440,7 +439,7 @@ diskdef wbw_hd1024_0 blocksize 4096 maxdir 1024 skew 0 - boottrk 18 + boottrk 130 os 2.2 end @@ -451,7 +450,7 @@ diskdef wbw_hd1024_1 blocksize 4096 maxdir 1024 skew 0 - boottrk 1042 + boottrk 1154 os 2.2 end @@ -462,7 +461,7 @@ diskdef wbw_hd1024_2 blocksize 4096 maxdir 1024 skew 0 - boottrk 2066 + boottrk 2178 os 2.2 end @@ -473,6 +472,225 @@ diskdef wbw_hd1024_3 blocksize 4096 maxdir 1024 skew 0 - boottrk 3114 + boottrk 3202 + os 2.2 +end + +# SmallZ80 Hard Disk Image +# 5 slices +diskdef smz80_hd0 + seclen 512 + tracks 1034 + sectrk 16 + blocksize 4096 + maxdir 1024 + skew 0 + boottrk 10 + os 2.2 +end + +diskdef smz80_hd1 + seclen 512 + tracks 2058 + sectrk 16 + blocksize 4096 + maxdir 1024 + skew 0 + boottrk 1034 + os 2.2 +end + +diskdef smz80_hd2 + seclen 512 + tracks 1034 + sectrk 16 + blocksize 4096 + maxdir 1024 + skew 0 + boottrk 2058 + os 2.2 +end + +diskdef smz80_hd3 + seclen 512 + tracks 4106 + sectrk 16 + blocksize 4096 + maxdir 1024 + skew 0 + boottrk 3082 + os 2.2 +end + +diskdef smz80_hd4 + seclen 512 + tracks 5130 + sectrk 16 + blocksize 4096 + maxdir 1024 + skew 0 + boottrk 4106 + os 2.2 +end + +# RC2014 standard hard disk image +# Slices A-P +diskdef rc2014a + seclen 512 + tracks 512 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 1 + os 2.2 +end + +diskdef rc2014b + seclen 512 + tracks 1024 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 512 + os 2.2 +end + +diskdef rc2014c + seclen 512 + tracks 1536 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 1024 + os 2.2 +end + +diskdef rc2014d + seclen 512 + tracks 2048 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 1536 + os 2.2 +end + +diskdef rc2014e + seclen 512 + tracks 2560 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 2048 + os 2.2 +end + +diskdef rc2014f + seclen 512 + tracks 3072 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 2560 + os 2.2 +end + +diskdef rc2014g + seclen 512 + tracks 3584 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 3072 + os 2.2 +end + +diskdef rc2014h + seclen 512 + tracks 4096 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 3584 + os 2.2 +end + +diskdef rc2014i + seclen 512 + tracks 4608 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 4096 + os 2.2 +end + +diskdef rc2014j + seclen 512 + tracks 5120 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 4608 + os 2.2 +end + +diskdef rc2014k + seclen 512 + tracks 5632 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 5120 + os 2.2 +end + +diskdef rc2014l + seclen 512 + tracks 6144 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 5632 + os 2.2 +end + +diskdef rc2014m + seclen 512 + tracks 6656 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 6144 + os 2.2 +end + +diskdef rc2014n + seclen 512 + tracks 7168 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 6656 + os 2.2 +end + +diskdef rc2014o + seclen 512 + tracks 7680 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 7168 + os 2.2 +end + +diskdef rc2014p + seclen 512 + tracks 7808 + sectrk 32 + blocksize 4096 + maxdir 512 + boottrk 7680 os 2.2 end