diff --git a/Doc/CPM 22 Manual.pdf b/Doc/CPM 22 Manual.pdf index fac5cc2f..b694e34b 100644 Binary files a/Doc/CPM 22 Manual.pdf and b/Doc/CPM 22 Manual.pdf differ diff --git a/Doc/RomWBW System Guide.pdf b/Doc/RomWBW System Guide.pdf index 07cc9542..ec8cb448 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 d622e843..5bd5b7b3 100644 Binary files a/Doc/RomWBW User Guide.pdf and b/Doc/RomWBW User Guide.pdf differ diff --git a/Doc/ZCPR Manual.pdf b/Doc/ZCPR Manual.pdf index 2973f3b5..6ab73d88 100644 Binary files a/Doc/ZCPR Manual.pdf and b/Doc/ZCPR Manual.pdf differ diff --git a/Source/BPBIOS/bpbio-ww.z80 b/Source/BPBIOS/bpbio-ww.z80 index 1394f585..666b2ad2 100644 --- a/Source/BPBIOS/bpbio-ww.z80 +++ b/Source/BPBIOS/bpbio-ww.z80 @@ -501,12 +501,11 @@ DRVTBL: LD HL,DPHTBL ; Point to DPH table IF IDE INCLUDE HARDIDE.Z80 ENDIF - IF HDSK - IF HBIOS - INCLUDE HARDHB.Z80 - ELSE + IF SIMHDSK INCLUDE HARDSIM.Z80 - ENDIF + ENDIF + IF HBDSK + INCLUDE HARDHB.Z80 ENDIF PAGE ENDIF diff --git a/Source/BPBIOS/cboot-ww.z80 b/Source/BPBIOS/cboot-ww.z80 index 9f9b5e98..17bd0110 100644 --- a/Source/BPBIOS/cboot-ww.z80 +++ b/Source/BPBIOS/cboot-ww.z80 @@ -370,7 +370,7 @@ BLKMV: POP BC ; And number of bytes to move ; Allocate disk buffer in HBIOS bank and ; save it for use later in disk access. - LD B,0F4H ; BIOS FUNC: ALLOCATE HEAP MEMORY + LD B,0F6H ; BIOS FUNC: ALLOCATE HEAP MEMORY LD HL,512 ; 1 SECTOR, 512 BYTES CALL HBX_INVOKE ; DO IT CALL NZ,PANIC ; HANDLE ERROR @@ -454,12 +454,11 @@ MEMOK: IF IDE DEFB CR,LF,' GIDE Hard Disk Driver' ENDIF - IF HDSK - IF HBIOS - DEFB CR,LF,' HBIOS Hard Disk Driver' - ELSE + IF SIMHDSK DEFB CR,LF,' SIMH Hard Disk Driver' - ENDIF + ENDIF + IF HBDSK + DEFB CR,LF,' HBIOS Hard Disk Driver' ENDIF IF HDDMA DEFB ' (DMA-driven IO)' diff --git a/Source/BPBIOS/def-ww-z33n.lib b/Source/BPBIOS/def-ww-z33n.lib index a81c1ad6..3b3faf84 100644 --- a/Source/BPBIOS/def-ww-z33n.lib +++ b/Source/BPBIOS/def-ww-z33n.lib @@ -94,7 +94,8 @@ HARDDSK EQU YES ; YES = Add Hard-disk Code, NO = Floppy Only ; (Pick 1 of 3 options below) SCSI EQU NO ; YES = Use SCSI Driver IDE EQU NO ; YES = Use IDE Driver -HDSK EQU YES ; YES = Use SIMH HDSK Driver +SIMHDSK EQU NO ; YES = Use SIMH HDSK Driver +HBDSK EQU YES ; YES = Use HBIOS Disk Driver HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers? ; (DMA not implemented for GIDE) UNIT_0 EQU YES ; Hard Disk Physical Unit 1 diff --git a/Source/BPBIOS/def-ww-z33nbnk.lib b/Source/BPBIOS/def-ww-z33nbnk.lib index 0f37d33b..c8d940da 100644 --- a/Source/BPBIOS/def-ww-z33nbnk.lib +++ b/Source/BPBIOS/def-ww-z33nbnk.lib @@ -94,7 +94,8 @@ HARDDSK EQU YES ; YES = Add Hard-disk Code, NO = Floppy Only ; (Pick 1 of 3 options below) SCSI EQU NO ; YES = Use SCSI Driver IDE EQU NO ; YES = Use IDE Driver -HDSK EQU YES ; YES = Use SIMH HDSK Driver +SIMHDSK EQU NO ; YES = Use SIMH HDSK Driver +HBDSK EQU YES ; YES = Use HBIOS Disk Driver HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers? ; (DMA not implemented for GIDE) UNIT_0 EQU YES ; Hard Disk Physical Unit 1 diff --git a/Source/BPBIOS/def-ww-z33t.lib b/Source/BPBIOS/def-ww-z33t.lib index 4a09616a..2c296319 100644 --- a/Source/BPBIOS/def-ww-z33t.lib +++ b/Source/BPBIOS/def-ww-z33t.lib @@ -94,7 +94,8 @@ HARDDSK EQU YES ; YES = Add Hard-disk Code, NO = Floppy Only ; (Pick 1 of 3 options below) SCSI EQU NO ; YES = Use SCSI Driver IDE EQU NO ; YES = Use IDE Driver -HDSK EQU YES ; YES = Use SIMH HDSK Driver +SIMHDSK EQU NO ; YES = Use SIMH HDSK Driver +HBDSK EQU YES ; YES = Use HBIOS Disk Driver HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers? ; (DMA not implemented for GIDE) UNIT_0 EQU YES ; Hard Disk Physical Unit 1 diff --git a/Source/BPBIOS/def-ww-z33tbnk.lib b/Source/BPBIOS/def-ww-z33tbnk.lib index fffbe7ac..ffca7b09 100644 --- a/Source/BPBIOS/def-ww-z33tbnk.lib +++ b/Source/BPBIOS/def-ww-z33tbnk.lib @@ -94,7 +94,8 @@ HARDDSK EQU YES ; YES = Add Hard-disk Code, NO = Floppy Only ; (Pick 1 of 3 options below) SCSI EQU NO ; YES = Use SCSI Driver IDE EQU NO ; YES = Use IDE Driver -HDSK EQU YES ; YES = Use SIMH HDSK Driver +SIMHDSK EQU NO ; YES = Use SIMH HDSK Driver +HBDSK EQU YES ; YES = Use HBIOS Disk Driver HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers? ; (DMA not implemented for GIDE) UNIT_0 EQU YES ; Hard Disk Physical Unit 1 diff --git a/Source/BPBIOS/def-ww-z34n.lib b/Source/BPBIOS/def-ww-z34n.lib index 865301ea..b6c40f7f 100644 --- a/Source/BPBIOS/def-ww-z34n.lib +++ b/Source/BPBIOS/def-ww-z34n.lib @@ -94,7 +94,8 @@ HARDDSK EQU YES ; YES = Add Hard-disk Code, NO = Floppy Only ; (Pick 1 of 3 options below) SCSI EQU NO ; YES = Use SCSI Driver IDE EQU NO ; YES = Use IDE Driver -HDSK EQU YES ; YES = Use SIMH HDSK Driver +SIMHDSK EQU NO ; YES = Use SIMH HDSK Driver +HBDSK EQU YES ; YES = Use HBIOS Disk Driver HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers? ; (DMA not implemented for GIDE) UNIT_0 EQU YES ; Hard Disk Physical Unit 1 diff --git a/Source/BPBIOS/def-ww-z34nbnk.lib b/Source/BPBIOS/def-ww-z34nbnk.lib index f64eb30e..c5910ba4 100644 --- a/Source/BPBIOS/def-ww-z34nbnk.lib +++ b/Source/BPBIOS/def-ww-z34nbnk.lib @@ -94,7 +94,8 @@ HARDDSK EQU YES ; YES = Add Hard-disk Code, NO = Floppy Only ; (Pick 1 of 3 options below) SCSI EQU NO ; YES = Use SCSI Driver IDE EQU NO ; YES = Use IDE Driver -HDSK EQU YES ; YES = Use SIMH HDSK Driver +SIMHDSK EQU NO ; YES = Use SIMH HDSK Driver +HBDSK EQU YES ; YES = Use HBIOS Disk Driver HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers? ; (DMA not implemented for GIDE) UNIT_0 EQU YES ; Hard Disk Physical Unit 1 diff --git a/Source/BPBIOS/def-ww-z34t.lib b/Source/BPBIOS/def-ww-z34t.lib index cfb06fad..4b97cca2 100644 --- a/Source/BPBIOS/def-ww-z34t.lib +++ b/Source/BPBIOS/def-ww-z34t.lib @@ -94,7 +94,8 @@ HARDDSK EQU YES ; YES = Add Hard-disk Code, NO = Floppy Only ; (Pick 1 of 3 options below) SCSI EQU NO ; YES = Use SCSI Driver IDE EQU NO ; YES = Use IDE Driver -HDSK EQU YES ; YES = Use SIMH HDSK Driver +SIMHDSK EQU NO ; YES = Use SIMH HDSK Driver +HBDSK EQU YES ; YES = Use HBIOS Disk Driver HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers? ; (DMA not implemented for GIDE) UNIT_0 EQU YES ; Hard Disk Physical Unit 1 diff --git a/Source/BPBIOS/def-ww-z34tbnk.lib b/Source/BPBIOS/def-ww-z34tbnk.lib index dbb99554..4b659c3a 100644 --- a/Source/BPBIOS/def-ww-z34tbnk.lib +++ b/Source/BPBIOS/def-ww-z34tbnk.lib @@ -94,7 +94,8 @@ HARDDSK EQU YES ; YES = Add Hard-disk Code, NO = Floppy Only ; (Pick 1 of 3 options below) SCSI EQU NO ; YES = Use SCSI Driver IDE EQU NO ; YES = Use IDE Driver -HDSK EQU YES ; YES = Use SIMH HDSK Driver +SIMHDSK EQU NO ; YES = Use SIMH HDSK Driver +HBDSK EQU YES ; YES = Use HBIOS Disk Driver HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers? ; (DMA not implemented for GIDE) UNIT_0 EQU YES ; Hard Disk Physical Unit 1 diff --git a/Source/BPBIOS/def-ww-z41nbnk.lib b/Source/BPBIOS/def-ww-z41nbnk.lib index 1e2b4570..0eef1948 100644 --- a/Source/BPBIOS/def-ww-z41nbnk.lib +++ b/Source/BPBIOS/def-ww-z41nbnk.lib @@ -93,7 +93,8 @@ HARDDSK EQU YES ; YES = Add Hard-disk Code, NO = Floppy Only ; (Pick 1 of 3 options below) SCSI EQU NO ; YES = Use SCSI Driver IDE EQU NO ; YES = Use IDE Driver -HDSK EQU YES ; YES = Use SIMH HDSK Driver +SIMHDSK EQU NO ; YES = Use SIMH HDSK Driver +HBDSK EQU YES ; YES = Use HBIOS Disk Driver HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers? ; (DMA not implemented for GIDE) UNIT_0 EQU YES ; Hard Disk Physical Unit 1 diff --git a/Source/BPBIOS/def-ww-z41tbnk.lib b/Source/BPBIOS/def-ww-z41tbnk.lib index bb97b618..ce31179b 100644 --- a/Source/BPBIOS/def-ww-z41tbnk.lib +++ b/Source/BPBIOS/def-ww-z41tbnk.lib @@ -93,7 +93,8 @@ HARDDSK EQU YES ; YES = Add Hard-disk Code, NO = Floppy Only ; (Pick 1 of 3 options below) SCSI EQU NO ; YES = Use SCSI Driver IDE EQU NO ; YES = Use IDE Driver -HDSK EQU YES ; YES = Use SIMH HDSK Driver +SIMHDSK EQU NO ; YES = Use SIMH HDSK Driver +HBDSK EQU YES ; YES = Use HBIOS Disk Driver HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers? ; (DMA not implemented for GIDE) UNIT_0 EQU YES ; Hard Disk Physical Unit 1 diff --git a/Source/BPBIOS/def-ww.lib b/Source/BPBIOS/def-ww.lib index 1e2b4570..0eef1948 100644 --- a/Source/BPBIOS/def-ww.lib +++ b/Source/BPBIOS/def-ww.lib @@ -93,7 +93,8 @@ HARDDSK EQU YES ; YES = Add Hard-disk Code, NO = Floppy Only ; (Pick 1 of 3 options below) SCSI EQU NO ; YES = Use SCSI Driver IDE EQU NO ; YES = Use IDE Driver -HDSK EQU YES ; YES = Use SIMH HDSK Driver +SIMHDSK EQU NO ; YES = Use SIMH HDSK Driver +HBDSK EQU YES ; YES = Use HBIOS Disk Driver HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers? ; (DMA not implemented for GIDE) UNIT_0 EQU YES ; Hard Disk Physical Unit 1 diff --git a/Source/BPBIOS/dpbhd-ww.lib b/Source/BPBIOS/dpbhd-ww.lib index 3e22c38e..3d3900cc 100644 --- a/Source/BPBIOS/dpbhd-ww.lib +++ b/Source/BPBIOS/dpbhd-ww.lib @@ -33,10 +33,10 @@ ; NOTE: No Skew Table is needed since Hard Disk Format is locked ;..... -; Partition A. SIMH HDSK0, Slice 0 +; Partition A. HBIOS Disk 0, Slice 0 IF DRV_E - DEFB 'HDSK0:0 ','A'+80H ; Id - 10 bytes + DEFB 'HBDSK0:0 ','A'+80H ; Id - 10 bytes DEFB FIXDSK ; Format type byte 0 DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 DEFB -2 ; Skew factor (== Only the +/- sign used) @@ -60,10 +60,10 @@ DPB50: DEFW 64 ; Sctrs/Trk ENDIF ;..... -; Partition B. SIMH HDSK0, Slice 1 +; Partition B. HBIOS Disk 0, Slice 1 IF DRV_F - DEFB 'HDSK0:1 ','B'+80H ; Id - 10 bytes + DEFB 'HBDSK0:1 ','B'+80H ; Id - 10 bytes DEFB FIXDSK ; Format type byte 0 DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 DEFB -2 ; Skew factor @@ -87,10 +87,10 @@ DPB51: DEFW 64 ; Scts/Trk ENDIF ;..... -; Partition C. SIMH HDSK0, Slice 2 +; Partition C. HBIOS Disk 0, Slice 2 IF DRV_G - DEFB 'HDSK0:2 ','C'+80H ; Id - 10 bytes + DEFB 'HBDSK0:2 ','C'+80H ; Id - 10 bytes DEFB FIXDSK ; Format type byte 0 DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 DEFB -2 ; Skew factor @@ -114,10 +114,10 @@ DPB52: DEFW 64 ; Scts/Trk ENDIF ;..... -; Partition D. SIMH HDSK0, Slice 3 +; Partition D. HBIOS Disk 0, Slice 3 IF DRV_H - DEFB 'HDSK0:3 ','D'+80H ; Id - 10 bytes + DEFB 'HBDSK0:3 ','D'+80H ; Id - 10 bytes DEFB FIXDSK ; Format type byte 0 DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 DEFB -2 ; Skew factor @@ -141,10 +141,10 @@ DPB53: DEFW 64 ; Scts/Trk ENDIF ;..... -; Partition A. SIMH HDSK1, Slice 0 +; Partition A. HBIOS Disk 1, Slice 0 - IF DRV_F - DEFB 'HDSK1:0 ','A'+80H ; Id - 10 bytes + IF DRV_I + DEFB 'HBDSK1:0 ','E'+80H ; Id - 10 bytes DEFB FIXDSK ; Format type byte 0 DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 DEFB -2 ; Skew factor (== Only the +/- sign used) @@ -168,10 +168,10 @@ DPB54: DEFW 64 ; Sctrs/Trk ENDIF ;..... -; Partition B. SIMH HDSK1, Slice 1 +; Partition B. HBIOS Disk 1, Slice 1 - IF DRV_G - DEFB 'HDSK1:1 ','B'+80H ; Id - 10 bytes + IF DRV_J + DEFB 'HBDSK1:1 ','F'+80H ; Id - 10 bytes DEFB FIXDSK ; Format type byte 0 DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 DEFB -2 ; Skew factor @@ -195,10 +195,10 @@ DPB55: DEFW 64 ; Scts/Trk ENDIF ;..... -; Partition C. SIMH HDSK1, Slice 2 +; Partition C. HBIOS Disk 1, Slice 2 - IF DRV_H - DEFB 'HDSK1:2 ','C'+80H ; Id - 10 bytes + IF DRV_K + DEFB 'HBDSK1:2 ','G'+80H ; Id - 10 bytes DEFB FIXDSK ; Format type byte 0 DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 DEFB -2 ; Skew factor @@ -222,10 +222,10 @@ DPB56: DEFW 64 ; Scts/Trk ENDIF ;..... -; Partition D. SIMH HDSK1, Slice 3 +; Partition D. HBIOS Disk 1, Slice 3 - IF DRV_I - DEFB 'HDSK1:3 ','D'+80H ; Id - 10 bytes + IF DRV_L + DEFB 'HBDSK1:3 ','H'+80H ; Id - 10 bytes DEFB FIXDSK ; Format type byte 0 DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 DEFB -2 ; Skew factor @@ -259,7 +259,6 @@ DPB57: DEFW 64 ; Scts/Trk DEFB 16 ; Logical Sectors per track DEFB 0 ; Physical tracks/side (No Meaning in HD) -;HSIZ8 EQU 464 ; Number of blocks in Fourth Logical Drive HSIZ8 EQU HB_ROMBLKS DPB58: DEFW 64 ; Scts/Trk @@ -286,7 +285,6 @@ DPB58: DEFW 64 ; Scts/Trk DEFB 16 ; Logical Sectors per track DEFB 0 ; Physical tracks/side (No Meaning in HD) -;HSIZ9 EQU 192 ; Number of blocks in Fourth Logical Drive HSIZ9 EQU HB_RAMBLKS DPB59: DEFW 64 ; Scts/Trk diff --git a/Source/BPBIOS/hbios.z80 b/Source/BPBIOS/hbios.z80 index 9aacb521..cfe8dadc 100644 --- a/Source/BPBIOS/hbios.z80 +++ b/Source/BPBIOS/hbios.z80 @@ -3,33 +3,6 @@ ; ***************************** ; ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -;; -;; CHARACTER DEVICES (ONLY FIRST NIBBLE RELEVANT, SECOND NIBBLE RESERVED FOR UNIT) -;; -;HBCIO_UART EQU 000H -;HBCIO_ASCI EQU 010H -;HBCIO_VDU EQU 020H -;HBCIO_CVDU EQU 030H -;HBCIO_UPD7220 EQU 040H -;HBCIO_N8V EQU 050H -;HBCIO_PRPCON EQU 060H -;HBCIO_PPPCON EQU 070H -;HBCIO_CRT EQU 0D0H -;HBCIO_BAT EQU 0E0H -;HBCIO_NUL EQU 0F0H -;; -;; DISK DEVICES (ONLY FIRST NIBBLE RELEVANT, SECOND NIBBLE RESERVED FOR UNIT) -;; -;HBDEV_MD EQU 000H -;HBDEV_FD EQU 010H -;HBDEV_RF EQU 020H -;HBDEV_IDE EQU 030H -;HBDEV_ATAPI EQU 040H -;HBDEV_PPIDE EQU 050H -;HBDEV_SD EQU 060H -;HBDEV_PRPSD EQU 070H -;HBDEV_PPPSD EQU 080H -;HBDEV_HDSK EQU 090H ; HB_DEFBNK EQU BID_USR ; Default bank number ; @@ -39,6 +12,23 @@ HB_DISPATCH EQU 0403H ; ; PLATFORM SPECIFIC CONSTANTS ; + IF N8VEM OR ZETA OR ZETA2 +SBC_BASE EQU 60H + ENDIF + + IF N8VEM OR ZETA +MPCL_RAM EQU SBC_BASE + 18H ; BASE IO ADDRESS OF RAM MEMORY PAGER CONFIGURATION LATCH +MPCL_ROM EQU SBC_BASE + 1CH ; BASE IO ADDRESS OF ROM MEMORY PAGER CONFIGURATION LATCH + ENDIF + + IF ZETA2 +MPGSEL_0 EQU SBC_BASE + 18H +MPGSEL_1 EQU SBC_BASE + 19H +MPGSEL_2 EQU SBC_BASE + 1AH +MPGSEL_3 EQU SBC_BASE + 1BH +MPGENA EQU SBC_BASE + 1CH + ENDIF + IF N8 N8_BASE EQU 80H ; BASE I/O ADDRESS BOARD PERIPHERALS (NON-CPU) ACR EQU N8_BASE + 14H ; AUXILLARY CONTROL REGISTER @@ -61,7 +51,7 @@ HB_XFCIMG EQU $ .PHASE HB_XFC HB_CURBNK DB 0 -HB_PRVBNK DB 0 ; DEPRECATED!!! +HB_INVBNK DB 0 HB_SRCADR DW 0 HB_SRCBNK DB 0 HB_DSTADR DW 0 @@ -126,14 +116,6 @@ HBX_INIT: RET -; -;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -; SETBNK - Set memory bank specified in A. -;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -; -HBX_SETBNK: - JP HBX_BNKSEL - HBX_XCOPY: LD A,C LD (HB_SRCBNK),A @@ -147,6 +129,8 @@ HBX_COPY: CALL HBX_BNKCPY ; Do the work with private stack active LD SP,(HBX_STKSAV) ; Back to original stack RET + + IF INTPXY ; @@ -156,6 +140,21 @@ HBX_BNKSEL: IF N8VEM OR ZETA OUT (MPCL_ROM),A OUT (MPCL_RAM),A + RET + ENDIF + + IF ZETA2 + BIT 7,A ; BIT 7 SET REQUESTS RAM PAGE + JR Z,HBX_ROM ; NOT SET, SELECT ROM PAGE + RES 7,A ; RAM PAGE REQUESTED: CLEAR ROM BIT + ADD A,16 ; ADD 16 x 32K - RAM STARTS FROM 512K +; +HBX_ROM: + RLCA ; TIMES 2 - GET 16K PAGE INSTEAD OF 32K + OUT (MPGSEL_0),A ; BANK_0: 0K - 16K + INC A ; + OUT (MPGSEL_1),A ; BANK_1: 16K - 32K + RET ENDIF IF N8 @@ -186,17 +185,8 @@ HBX_ROM: RLCA RLCA OUT0 (CPU_BBR),A - ENDIF - - RET -; -;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -; GETBNK - Get current memory bank and return in A. -;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -; -HBX_GETBNK: - LD A,(HB_CURBNK) RET + ENDIF ; ; Entry point HBX_BNKCPY is for use internally and ; assumes a valid stack already exists in upper 32K. @@ -266,31 +256,28 @@ HBX_COPY4: RET ; Done ; -;================================================================================================== -; HBIOS ENTRY FOR RST 08 PROCESSING -;================================================================================================== -; ; ENTRY POINT FOR BIOS FUNCTIONS (TARGET OF RST 08) ; HBX_INVOKE: LD (HBX_STKSAV),SP ; SAVE ORIGINAL STACK FRAME - LD SP,HBX_STACK ; SETUP NEW STACK FRAME - LD A,(HB_CURBNK) ; GET CURRENT BANK - LD (HBX_INVBNK),A ; SETUP TO RESTORE AT EXIT + LD (HB_INVBNK),A ; SAVE INVOCATION BANK + ;DI + LD SP,HBX_STACK ; SETUP NEW STACK FRAME LD A,BID_HB ; HBIOS BANK CALL HBX_BNKSEL ; SELECT IT + ;EI CALL HB_DISPATCH ; CALL HBIOS FUNCTION DISPATCHER + ;DI PUSH AF ; SAVE AF (FUNCTION RETURN) - LD A,0FFH ; LOAD ORIGINAL BANK ($FF IS REPLACED AT ENTRY) -HBX_INVBNK EQU $ - 1 + LD A,(HB_INVBNK) ; LOAD ORIGINAL BANK CALL HBX_BNKSEL ; SELECT IT POP AF ; RESTORE AF - LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME + ;EI RET ; RETURN TO CALLER @@ -303,25 +290,18 @@ HBX_INVBNK EQU $ - 1 HBX_FRGETB: LD (HBX_STKSAV),SP ; Save current stack LD SP,HBX_STACK ; Activate our private stack - LD A,(HB_CURBNK) ; Get current bank LD (HBX_BNKSAV),A ; Save current bank - PUSH BC LD A,C - DI - + ;DI CALL HBX_BNKSEL - LD C,(HL) LD A,(HBX_BNKSAV) - CALL HBX_BNKSEL - -;WW EI + ;EI LD A,C POP BC - LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME RET @@ -332,25 +312,18 @@ HBX_FRGETB: HBX_FRGETW: LD (HBX_STKSAV),SP ; Save current stack LD SP,HBX_STACK ; Activate our private stack - LD A,(HB_CURBNK) ; Get current bank LD (HBX_BNKSAV),A ; Save current bank - LD A,C - DI - + ;DI CALL HBX_BNKSEL - LD E,(HL) INC HL LD D,(HL) DEC HL LD A,(HBX_BNKSAV) - CALL HBX_BNKSEL - -;WW EI - + ;EI LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME RET @@ -361,27 +334,20 @@ HBX_FRGETW: HBX_FRPUTB: LD (HBX_STKSAV),SP ; Save current stack LD SP,HBX_STACK ; Activate our private stack - PUSH AF LD A,(HB_CURBNK) ; Get current bank LD (HBX_BNKSAV),A ; Save current bank POP AF - PUSH BC LD B,A LD A,C - DI - + ;DI CALL HBX_BNKSEL - LD (HL),B LD A,(HBX_BNKSAV) - CALL HBX_BNKSEL - -;WW EI + ;EI POP BC - LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME RET @@ -392,25 +358,18 @@ HBX_FRPUTB: HBX_FRPUTW: LD (HBX_STKSAV),SP ; Save current stack LD SP,HBX_STACK ; Activate our private stack - LD A,(HB_CURBNK) ; Get current bank LD (HBX_BNKSAV),A ; Save current bank - LD A,C - DI - + ;DI CALL HBX_BNKSEL - LD (HL),E INC HL LD (HL),D DEC HL LD A,(HBX_BNKSAV) - CALL HBX_BNKSEL - -;WW EI - + ;EI LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME RET @@ -422,7 +381,6 @@ HBX_FRPUTW: DSEG HB_DSKBUF DEFW 0 ; Address of physical disk buffer in HBIOS bank - HBX_BNKSAV DEFB 0 ; Saved bank id during HBIOS calls HBX_STKSAV DEFW 0 ; Saved stack pointer during HBIOS calls DEFS 64 ; Private stack for HBIOS @@ -431,7 +389,6 @@ HBX_STACK EQU $ ; Top of private stack IF INTPXY HBX_RETBNK DEFB 0 ; Bank to activate on return from BNKCPY - HBX_BUF DEFS 80H ; Interbank copy buffer ENDIF diff --git a/Source/BPBIOS/ibmv-ww.z80 b/Source/BPBIOS/ibmv-ww.z80 index 908f2c1c..72a39f3a 100644 --- a/Source/BPBIOS/ibmv-ww.z80 +++ b/Source/BPBIOS/ibmv-ww.z80 @@ -30,7 +30,7 @@ BIOSTK: DEFB 0 ; NOP if not currently in bank, LD (USP-7),HL ; Save entry HL POP HL ; Retrieve caller's return address from stack LD (USP-5),HL ; ..and set in our stack for local return - DI ; No interrupts while we play with the stack + ;DI ; No interrupts while we play with the stack LD (USP),SP ; Save User's Stack Pointer LD SP,USP-1 ; ..and point locally, saving 1 byte for Bank PUSH AF ; Save entry A and Flags @@ -43,15 +43,15 @@ BIOSTK: DEFB 0 ; NOP if not currently in bank, PUSH HL ; ..at USP-2 & 3 LD SP,USP-7 ; Point stack pointer to do local return POP HL ; .restoring entry HL -;WW EI ; ..enabling interrupts + ;EI ; ..enabling interrupts RET ; And return to caller ; Restore User Stack and Bank Routine USRSTK: PUSH AF LD A,(USP-1) ; Get bank control byte from entry - LD (CURBNK),A ; WW: I ADDED THIS, IS IT RIGHT??? - CALL HBX_SETBNK + CALL HBX_BNKSEL + LD (CURBNK),A XOR A LD (BIOSTK),A ; Patch NOP back in at start of code POP AF @@ -64,8 +64,8 @@ USRSTK: PUSH AF FRCLR: PUSH AF ; Save any entry in AF LD A,(USP-1) ; Get bank control byte + CALL HBX_BNKSEL LD (CURBNK),A ; WW: I ADDED THIS, IS IT RIGHT??? - CALL HBX_SETBNK XOR A LD (BIOSTK),A ; Patch NOP to enable stack switcher POP AF @@ -100,6 +100,7 @@ RETMEM: LD A,(CURBNK) SELMEM: LD (USRBNK),A ; Update user bank ;..fall thru to set specified bank.. + ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ; SELBNK - Switch Memory Bank to Bank in A and show as current. ; Must preserve all Registers including Flags. @@ -107,8 +108,8 @@ SELMEM: LD (USRBNK),A ; Update user bank ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: SELBNK: PUSH AF ; Save regs -SELBN0: LD (CURBNK),A ; Save as current bank # - CALL HBX_SETBNK +SELBN0: CALL HBX_BNKSEL + LD (CURBNK),A ; Save as current bank # POP AF ; restore regs RET diff --git a/Source/BPBIOS/icfg-ww.z80 b/Source/BPBIOS/icfg-ww.z80 index 619fb8c8..3fca3f55 100644 --- a/Source/BPBIOS/icfg-ww.z80 +++ b/Source/BPBIOS/icfg-ww.z80 @@ -141,45 +141,44 @@ CNTRLR: DEFB 80H ; Controller Types recognized are: ; 3- Seagate SCSI 8- Syquest SCSI ; 4- Shugart 1610-4 Minimal SCSI 80H- GIDE (IDE/ATA) -; First drive (Parameters for Toshiba MK-1544 IDE) +; First drive (Generic HBIOS drive configuration) + +BITS DEFL 00000000B ; First HBIOS Hard Disk Drive -BITS DEFL 00000000B ; SCSI - Physical Device 0, Logical Unit 0 - ; IDE - Drive 0 = Master BITS DEFL BITS+[UNIT_0 AND 10H] ; If active, set Bit 4 HDRV0: DEFB BITS ; Set Device, Unit, and Active bits - DEFW 581 ; Number of Cylinders - DEFB 2 ; Number of Heads - DEFW 36 ; SCSI - Cylinder # to start reduced write - ; IDE - Number of Sectors Per Track + DEFW 520 ; Number of Cylinders + DEFB 16 ; Number of Heads + DEFW 16 ; IDE - Number of Sectors Per Track DEFW 0000 ; Cylinder # to start precompensation DEFB 0 ; Step Rate (0=3ms, 1=28us, 2=12us) -; Second drive (Parameters for Seagate ST-125N SCSI) +; Second drive (Generic HBIOS drive configuration) + +BITS DEFL 00000001B ; Second HBIOS Hard Disk Drive -BITS DEFL 00000001B ; SCSI - Physical Device 1, Logical Unit 0 - ; IDE - Drive 1 = Slave BITS DEFL BITS+[UNIT_1 AND 10H] ; If active, set Bit 4 HDRV1: DEFB BITS ; Set Device, Unit, and Active bits - DEFW 615 ; Syquest ST-125N - DEFB 4 - DEFW 0000 - DEFW 0000 - DEFB 0 + DEFW 520 ; Number of Cylinders + DEFB 16 ; Number of Heads + DEFW 16 ; IDE - Number of Sectors Per Track + DEFW 0000 ; Cylinder # to start precompensation + DEFB 0 ; Step Rate (0=3ms, 1=28us, 2=12us) -; Third drive (Parameters for Miniscribe 8425 SCSI) +; Third drive (Generic HBIOS drive configuration) + +BITS DEFL 00000010B ; Third HBIOS Hard Disk Drive -BITS DEFL 00000010B ; Physical Device 2, Logical Unit 0 - ; IDE - (undefined) BITS DEFL BITS+[UNIT_2 AND 10H] ; If active, set Bit 4 - DEFB BITS ; Set Device, Unit, and Active bits - DEFW 615 - DEFB 4 - DEFW 615 - DEFW 300 - DEFB 2 +HDRV2: DEFB BITS ; Set Device, Unit, and Active bits + DEFW 520 ; Number of Cylinders + DEFB 16 ; Number of Heads + DEFW 16 ; IDE - Number of Sectors Per Track + DEFW 0000 ; Cylinder # to start precompensation + DEFB 0 ; Step Rate (0=3ms, 1=28us, 2=12us) DEFB 0,0,0,0,0 ; (Reserved) diff --git a/Source/BPBIOS/romwbw-mk4.lib b/Source/BPBIOS/romwbw-mk4.lib index 3a304dfd..09968231 100644 --- a/Source/BPBIOS/romwbw-mk4.lib +++ b/Source/BPBIOS/romwbw-mk4.lib @@ -9,13 +9,13 @@ ; HBIOS configuration. ; HBIOS EQU YES ; Use HBIOS functions -;INTPXY EQU YES ; Internal HBIOS Proxy HBLOC EQU 0FE00H ; Location of HBIOS proxy (used if not INTPXY) ; ; Set exactly one of the following to YES to specify platform ; N8VEM EQU NO ZETA EQU NO +ZETA2 EQU NO N8 EQU NO MK4 EQU YES ; @@ -24,16 +24,16 @@ MK4 EQU YES SIMHCLK EQU NO ; Direct SIMH clock access HBCLK EQU YES ; HBIOS clock driver ; +; Set HB_IODEV to appropriate console device +; +HB_IODEV EQU 0 +; ; Set HB_HDDEV to appropriate hard disk driver ; -;;HB_HDDEV EQU HBDEV_HDSK ; SIMH HDSK Driver -;;HB_HDDEV EQU HBDEV_IDE ; IDE Driver -;HB_HDDEV EQU HBDEV_SD ; SD Card Driver HB_HDDEV EQU 2 ; ; Set HB_MDDEV to appropriate memory disk driver ; -;HB_MDDEV EQU HBDEV_MD ; Memory Disk Driver HB_MDDEV EQU 0 ; ; RAM/ROM disk sizes expressed as count of 2K blocks @@ -44,7 +44,7 @@ HB_ROMBLKS EQU 192 ; 512K - 128K reserved / 2K per block ; ; Layout of RAM banks ; - IF N8VEM OR ZETA OR MK4 + IF N8VEM OR ZETA OR ZETA2 OR MK4 BID_RAMD EQU 80H BID_RAMM EQU 8BH BID_SYS EQU 8CH @@ -60,14 +60,6 @@ BID_HB EQU 9DH BID_USR EQU 9EH BID_COM EQU 9FH ENDIF -; - IF N8 OR MK4 -;HB_IODEV EQU HBCIO_ASCI -; ELSE -;HB_IODEV EQU HBCIO_UART - ENDIF -; -HB_IODEV EQU 0 ; IF INTPXY MEMTOP EQU 0FFE0H - 1 ; Start of HBIOS 32 byte control block diff --git a/Source/BPBIOS/romwbw-sim.lib b/Source/BPBIOS/romwbw-sim.lib index f1ae2b36..61087ae5 100644 --- a/Source/BPBIOS/romwbw-sim.lib +++ b/Source/BPBIOS/romwbw-sim.lib @@ -9,13 +9,13 @@ ; HBIOS configuration. ; HBIOS EQU YES ; Use HBIOS functions -;INTPXY EQU YES ; Internal HBIOS Proxy HBLOC EQU 0FE00H ; Location of HBIOS proxy (used if not INTPXY) ; ; Set exactly one of the following to YES to specify platform ; N8VEM EQU YES ZETA EQU NO +ZETA2 EQU NO N8 EQU NO MK4 EQU NO ; @@ -24,16 +24,16 @@ MK4 EQU NO SIMHCLK EQU NO ; Direct SIMH clock access HBCLK EQU YES ; HBIOS clock driver ; +; Set HB_IODEV to appropriate console device +; +HB_IODEV EQU 0 +; ; Set HB_HDDEV to appropriate hard disk driver ; -;HB_HDDEV EQU HBDEV_HDSK ; SIMH HDSK Driver -;;HB_HDDEV EQU HBDEV_IDE ; IDE Driver -;;HB_HDDEV EQU HBDEV_SD ; SD Card Driver HB_HDDEV EQU 2 ; ; Set HB_MDDEV to appropriate memory disk driver ; -;HB_MDDEV EQU HBDEV_MD ; Memory Disk Driver HB_MDDEV EQU 0 ; ; RAM/ROM disk sizes expressed as count of 2K blocks @@ -44,7 +44,7 @@ HB_ROMBLKS EQU 192 ; 512K - 128K reserved / 2K per block ; ; Layout of RAM banks ; - IF N8VEM OR ZETA OR MK4 + IF N8VEM OR ZETA OR ZETA2 OR MK4 BID_RAMD EQU 80H BID_RAMM EQU 8BH BID_SYS EQU 8CH @@ -60,14 +60,6 @@ BID_HB EQU 9DH BID_USR EQU 9EH BID_COM EQU 9FH ENDIF -; - IF N8 OR MK4 -;HB_IODEV EQU HBCIO_ASCI -; ELSE -;HB_IODEV EQU HBCIO_UART - ENDIF -; -HB_IODEV EQU 0 ; IF INTPXY MEMTOP EQU 0FFE0H - 1 ; Start of HBIOS 32 byte control block diff --git a/Source/BPBIOS/romwbw.lib b/Source/BPBIOS/romwbw.lib index f1ae2b36..c6d9f83c 100644 --- a/Source/BPBIOS/romwbw.lib +++ b/Source/BPBIOS/romwbw.lib @@ -9,13 +9,13 @@ ; HBIOS configuration. ; HBIOS EQU YES ; Use HBIOS functions -;INTPXY EQU YES ; Internal HBIOS Proxy HBLOC EQU 0FE00H ; Location of HBIOS proxy (used if not INTPXY) ; ; Set exactly one of the following to YES to specify platform ; N8VEM EQU YES ZETA EQU NO +ZETA2 EQU NO N8 EQU NO MK4 EQU NO ; @@ -24,17 +24,17 @@ MK4 EQU NO SIMHCLK EQU NO ; Direct SIMH clock access HBCLK EQU YES ; HBIOS clock driver ; +; Set HB_IODEV to appropriate console device +; +HB_IODEV EQU 0 ; Assume we want to use first HBIOS serial device +; ; Set HB_HDDEV to appropriate hard disk driver ; -;HB_HDDEV EQU HBDEV_HDSK ; SIMH HDSK Driver -;;HB_HDDEV EQU HBDEV_IDE ; IDE Driver -;;HB_HDDEV EQU HBDEV_SD ; SD Card Driver -HB_HDDEV EQU 2 +HB_HDDEV EQU 2 ; Assumes disk device #2 is first hard disk device ; ; Set HB_MDDEV to appropriate memory disk driver ; -;HB_MDDEV EQU HBDEV_MD ; Memory Disk Driver -HB_MDDEV EQU 0 +HB_MDDEV EQU 0 ; Assumes disk device #0 is ROM disk device ; ; RAM/ROM disk sizes expressed as count of 2K blocks ; @@ -44,7 +44,7 @@ HB_ROMBLKS EQU 192 ; 512K - 128K reserved / 2K per block ; ; Layout of RAM banks ; - IF N8VEM OR ZETA OR MK4 + IF N8VEM OR ZETA OR ZETA2 OR MK4 BID_RAMD EQU 80H BID_RAMM EQU 8BH BID_SYS EQU 8CH @@ -60,14 +60,6 @@ BID_HB EQU 9DH BID_USR EQU 9EH BID_COM EQU 9FH ENDIF -; - IF N8 OR MK4 -;HB_IODEV EQU HBCIO_ASCI -; ELSE -;HB_IODEV EQU HBCIO_UART - ENDIF -; -HB_IODEV EQU 0 ; IF INTPXY MEMTOP EQU 0FFE0H - 1 ; Start of HBIOS 32 byte control block diff --git a/Source/BPBIOS/util.z80 b/Source/BPBIOS/util.z80 index c217956d..cf71b8ee 100644 --- a/Source/BPBIOS/util.z80 +++ b/Source/BPBIOS/util.z80 @@ -321,13 +321,6 @@ STR_PC DB " PC=$" STR_SP DB " SP=$" ; ;================================================================================================== -; MEMORY BANK MANAGEMENT -;================================================================================================== -; -MPCL_RAM EQU 78H ; BASE IO ADDRESS OF RAM MEMORY PAGER CONFIGURATION LATCH -MPCL_ROM EQU 7CH ; BASE IO ADDRESS OF ROM MEMORY PAGER CONFIGURATION LATCH -; -;================================================================================================== ; DATA ;================================================================================================== ; diff --git a/Source/Doc/CPM 22 Manual/Build.cmd b/Source/Doc/CPM 22 Manual/Build.cmd index 76b09046..601e5b49 100644 --- a/Source/Doc/CPM 22 Manual/Build.cmd +++ b/Source/Doc/CPM 22 Manual/Build.cmd @@ -9,7 +9,7 @@ set ZXBINDIR=%TOOLS%/cpm/bin/ set ZXLIBDIR=%TOOLS%/cpm/lib/ set ZXINCDIR=%TOOLS%/cpm/include/ -rem set TEXOPT=-$D +rem set TEXOPT=-$D -$Q zx TEX21A PART1 %TEXOPT% zx TEX21A PART2 %TEXOPT% diff --git a/Source/HBIOS/dsrtc.asm b/Source/HBIOS/dsrtc.asm index b102b8cf..fc580570 100644 --- a/Source/HBIOS/dsrtc.asm +++ b/Source/HBIOS/dsrtc.asm @@ -171,18 +171,14 @@ DSRTC_GETTIM: CALL DSRTC_CLK2TIM ; CONVERT CLOCK TO TIME ; ; NOW COPY TO REAL DESTINATION (INTERBANK SAFE) -; LD C,BID_BIOS ; SOURCE BANK IS HBIOS -; LD A,(HB_CURBNK) ; GET CURRENT BANK -; LD B,A ; .. AND USE AS DEST BANK -; LD (HB_SRCBNK),BC ; SET COPY BANKS LD A,BID_BIOS ; COPY FROM BIOS BANK LD (HB_SRCBNK),A ; SET IT - LD A,(HBX_INVBNK) ; COPY TO CURRENT USER BANK + LD A,(HB_INVBNK) ; COPY TO CURRENT USER BANK LD (HB_DSTBNK),A ; SET IT LD HL,DSRTC_TIMBUF ; SOURCE ADR POP DE ; DEST ADR LD BC,6 ; LENGTH IS 6 BYTES - CALL HBX_BNKCPY ; COPY THE CLOCK DATA + CALL HB_BNKCPY ; COPY THE CLOCK DATA ; ; CLEAN UP AND RETURN XOR A ; SIGNAL SUCCESS @@ -197,17 +193,13 @@ DSRTC_GETTIM: DSRTC_SETTIM: ; ; COPY INCOMING TIME DATA TO OUR TIME BUFFER -; LD A,(HB_CURBNK) ; GET CURRENT BANK -; LD C,A ; .. AND USE AS SOURCE BANK -; LD B,BID_BIOS ; DESTINATION BANK IS HBIOS -; LD (HB_SRCBNK),BC ; SET COPY BANKS - LD A,(HBX_INVBNK) ; COPY FROM CURRENT USER BANK + LD A,(HB_INVBNK) ; COPY FROM CURRENT USER BANK LD (HB_SRCBNK),A ; SET IT LD A,BID_BIOS ; COPY TO BIOS BANK LD (HB_DSTBNK),A ; SET IT LD DE,DSRTC_TIMBUF ; DEST ADR LD BC,6 ; LENGTH IS 6 BYTES - CALL HBX_BNKCPY ; COPY THE CLOCK DATA + CALL HB_BNKCPY ; COPY THE CLOCK DATA ; ; WRITE TO CLOCK LD HL,DSRTC_TIMBUF ; POINT TO TIME BUFFER diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index fac52fe0..14245931 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -87,7 +87,7 @@ MODCNT .SET MODCNT + 1 JP HB_START .DW ROM_SIG .FILL (008H - $),0FFH ; RST 8 - JP HBX_INVOKE ; INVOKE HBIOS FUNCTION + JP HB_INVOKE ; INVOKE HBIOS FUNCTION .FILL (010H - $),0FFH ; RST 10 RET .FILL (018H - $),0FFH ; RST 18 @@ -206,7 +206,7 @@ HBX_IDENT: HBX_INVOKE: LD (HBX_STKSAV),SP ; SAVE ORIGINAL STACK FRAME LD A,(HB_CURBNK) ; GET CURRENT BANK - LD (HBX_INVBNK),A ; SETUP TO RESTORE AT EXIT + LD (HB_INVBNK),A ; SAVE INVOCATION BANK HB_DI LD SP,HBX_STACK ; USE STACK FRAME IN HI MEM @@ -220,8 +220,7 @@ HBX_INVOKE: HB_DI LD SP,HBX_STACK ; USE STACK FRAME IN HI MEM PUSH AF ; SAVE AF (FUNCTION RETURN) - LD A,$FF ; LOAD ORIGINAL BANK ($FF IS REPLACED AT ENTRY) -HBX_INVBNK .EQU $ - 1 + LD A,(HB_INVBNK) ; LOAD ORIGINAL BANK CALL HBX_BNKSEL ; SELECT IT POP AF ; RESTORE AF LD SP,0 ; RESTORE ORIGINAL STACK FRAME @@ -516,7 +515,7 @@ HBX_BUF .FILL HBX_BUFSIZ,0 #ELSE .DB BID_USR ; CURRENTLY ACTIVE LOW MEMORY BANK ID #ENDIF - .DB $FF ; DEPRECATED!!! + .DB 0 ; BANK ACTIVE AT TIME OF HBIOS CALL INVOCATION .DW 0 ; BNKCPY SOURCE ADDRESS .DB BID_USR ; BNKCPY SOURCE BANK ID .DW 0 ; BNKCPY DESTINATION ADDRESS @@ -1452,7 +1451,7 @@ SYS_DISPATCH: ; SYS_SETBNK: PUSH HL ; SAVE INCOMING HL - LD HL,HBX_INVBNK ; POINT TO HBIOS INVOKE BANK ID ADDRESS + LD HL,HB_INVBNK ; POINT TO HBIOS INVOKE BANK ID ADDRESS LD A,(HL) ; GET EXISTING BANK ID TO A LD (HL),C ; UPDATE INVOKE BANK TO NEW BANK ID LD C,A ; PUT PREVIOUS BANK ID IN C FOR RETURN @@ -1463,7 +1462,7 @@ SYS_SETBNK: ; GET ACTIVE MEMORY BANK ; SYS_GETBNK: - LD A,(HBX_INVBNK) ; GET THE ACTIVE MEMORY BANK + LD A,(HB_INVBNK) ; GET THE ACTIVE MEMORY BANK LD C,A ; MOVE TO C XOR A ; SIGNAL SUCCESS RET @@ -1529,7 +1528,7 @@ SYS_BNKCPY: ;POP AF ; *DEBUG* END - CALL HBX_BNKCPY + CALL HB_BNKCPY XOR A RET ; diff --git a/Source/HBIOS/hbios.inc b/Source/HBIOS/hbios.inc index 5870f7fd..2b364fd1 100644 --- a/Source/HBIOS/hbios.inc +++ b/Source/HBIOS/hbios.inc @@ -153,7 +153,7 @@ HBX_XFC .EQU $10000 - $20 ; HBIOS PROXY INTERFACE AREA, 32 BYTES FIXED ; HBX_XFCDAT .EQU HBX_XFC ; DATA PORTION OF HBIOS PROXY INTERFACE AREA HB_CURBNK .EQU HBX_XFCDAT + 0 ; CURRENTLY ACTIVE LOW MEMORY BANK ID -;HB_PRVBNK .EQU HBX_XFCDAT + 1 ; PREVIOUS BANK (DEPRECATED) +HB_INVBNK .EQU HBX_XFCDAT + 1 ; BANK ACTIVE AT TIME OF HBIOS CALL INVOCATION HB_SRCADR .EQU HBX_XFCDAT + 2 ; BNKCPY: DESTINATION BANK ID HB_SRCBNK .EQU HBX_XFCDAT + 4 ; BNKCPY: SOURCE BANK ID HB_DSTADR .EQU HBX_XFCDAT + 5 ; BNKCPY: DESTINATION ADDRESS diff --git a/Source/HBIOS/md.asm b/Source/HBIOS/md.asm index e459b611..76a56031 100644 --- a/Source/HBIOS/md.asm +++ b/Source/HBIOS/md.asm @@ -190,7 +190,7 @@ MD_READ: LD A,B ; GET DESTINATION BANK LD (HB_DSTBNK),A ; SET IT POP BC - CALL HBX_BNKCPY ; DO THE INTERBANK COPY + CALL HB_BNKCPY ; DO THE INTERBANK COPY XOR A RET ; @@ -222,7 +222,7 @@ MD_WRITE: LD A,B ; GET DESTINATION BANK LD (HB_DSTBNK),A ; SET IT POP BC - CALL HBX_BNKCPY ; DO THE INTERBANK COPY + CALL HB_BNKCPY ; DO THE INTERBANK COPY XOR A RET ; diff --git a/Source/HBIOS/simrtc.asm b/Source/HBIOS/simrtc.asm index 97e29987..33c79590 100644 --- a/Source/HBIOS/simrtc.asm +++ b/Source/HBIOS/simrtc.asm @@ -66,12 +66,12 @@ SIMRTC_GETTIM: ; NOW COPY TO REAL DESTINATION (INTERBANK SAFE) LD A,BID_BIOS ; COPY FROM BIOS BANK LD (HB_SRCBNK),A ; SET IT - LD A,(HBX_INVBNK) ; COPY TO CURRENT USER BANK + LD A,(HB_INVBNK) ; COPY TO CURRENT USER BANK LD (HB_DSTBNK),A ; SET IT LD HL,SIMRTC_BUF ; SOURCE ADR POP DE ; DEST ADR LD BC,SIMRTC_BUFSIZ ; LENGTH - CALL HBX_BNKCPY ; COPY THE CLOCK DATA + CALL HB_BNKCPY ; COPY THE CLOCK DATA ; LD DE,60 ; DELAY 60 * 16US = ~1MS CALL VDELAY ; SLOW DOWN SIMH FOR CLOCK TICKING TEST @@ -95,13 +95,13 @@ SIMRTC_GETTIM0: ; SIMRTC_SETTIM: ; COPY TO TEMP BUF - LD A,(HBX_INVBNK) ; COPY FROM CURRENT USER BANK + LD A,(HB_INVBNK) ; COPY FROM CURRENT USER BANK LD (HB_SRCBNK),A ; SET IT LD A,BID_BIOS ; COPY TO BIOS BANK LD (HB_DSTBNK),A ; SET IT LD DE,SIMRTC_BUF ; DEST ADR LD BC,SIMRTC_BUFSIZ ; LENGTH - CALL HBX_BNKCPY ; COPY THE CLOCK DATA + CALL HB_BNKCPY ; COPY THE CLOCK DATA ; LD HL,SIMRTC_BUF ; POINT TO TEMP BUF LD A,SIMRTC_CLKWRITE ; WRITE CLOCK COMMAND diff --git a/Tools/cpm/bin/TEX21A.COM b/Tools/cpm/bin/TEX21A.COM index f2f7bcb5..f7bf6f69 100644 Binary files a/Tools/cpm/bin/TEX21A.COM and b/Tools/cpm/bin/TEX21A.COM differ