Browse Source

BPBIOS Related Fixes

pull/3/head
Wayne Warthen 9 years ago
parent
commit
97c36c0efc
  1. BIN
      Doc/CPM 22 Manual.pdf
  2. BIN
      Doc/RomWBW System Guide.pdf
  3. BIN
      Doc/RomWBW User Guide.pdf
  4. BIN
      Doc/ZCPR Manual.pdf
  5. 9
      Source/BPBIOS/bpbio-ww.z80
  6. 11
      Source/BPBIOS/cboot-ww.z80
  7. 3
      Source/BPBIOS/def-ww-z33n.lib
  8. 3
      Source/BPBIOS/def-ww-z33nbnk.lib
  9. 3
      Source/BPBIOS/def-ww-z33t.lib
  10. 3
      Source/BPBIOS/def-ww-z33tbnk.lib
  11. 3
      Source/BPBIOS/def-ww-z34n.lib
  12. 3
      Source/BPBIOS/def-ww-z34nbnk.lib
  13. 3
      Source/BPBIOS/def-ww-z34t.lib
  14. 3
      Source/BPBIOS/def-ww-z34tbnk.lib
  15. 3
      Source/BPBIOS/def-ww-z41nbnk.lib
  16. 3
      Source/BPBIOS/def-ww-z41tbnk.lib
  17. 3
      Source/BPBIOS/def-ww.lib
  18. 42
      Source/BPBIOS/dpbhd-ww.lib
  19. 145
      Source/BPBIOS/hbios.z80
  20. 15
      Source/BPBIOS/ibmv-ww.z80
  21. 47
      Source/BPBIOS/icfg-ww.z80
  22. 20
      Source/BPBIOS/romwbw-mk4.lib
  23. 20
      Source/BPBIOS/romwbw-sim.lib
  24. 24
      Source/BPBIOS/romwbw.lib
  25. 7
      Source/BPBIOS/util.z80
  26. 2
      Source/Doc/CPM 22 Manual/Build.cmd
  27. 16
      Source/HBIOS/dsrtc.asm
  28. 15
      Source/HBIOS/hbios.asm
  29. 2
      Source/HBIOS/hbios.inc
  30. 4
      Source/HBIOS/md.asm
  31. 8
      Source/HBIOS/simrtc.asm
  32. BIN
      Tools/cpm/bin/TEX21A.COM

BIN
Doc/CPM 22 Manual.pdf

Binary file not shown.

BIN
Doc/RomWBW System Guide.pdf

Binary file not shown.

BIN
Doc/RomWBW User Guide.pdf

Binary file not shown.

BIN
Doc/ZCPR Manual.pdf

Binary file not shown.

9
Source/BPBIOS/bpbio-ww.z80

@ -501,12 +501,11 @@ DRVTBL: LD HL,DPHTBL ; Point to DPH table
IF IDE IF IDE
INCLUDE HARDIDE.Z80 INCLUDE HARDIDE.Z80
ENDIF ENDIF
IF HDSK
IF HBIOS
INCLUDE HARDHB.Z80
ELSE
IF SIMHDSK
INCLUDE HARDSIM.Z80 INCLUDE HARDSIM.Z80
ENDIF
ENDIF
IF HBDSK
INCLUDE HARDHB.Z80
ENDIF ENDIF
PAGE PAGE
ENDIF ENDIF

11
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 ; Allocate disk buffer in HBIOS bank and
; save it for use later in disk access. ; 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 LD HL,512 ; 1 SECTOR, 512 BYTES
CALL HBX_INVOKE ; DO IT CALL HBX_INVOKE ; DO IT
CALL NZ,PANIC ; HANDLE ERROR CALL NZ,PANIC ; HANDLE ERROR
@ -454,12 +454,11 @@ MEMOK:
IF IDE IF IDE
DEFB CR,LF,' GIDE Hard Disk Driver' DEFB CR,LF,' GIDE Hard Disk Driver'
ENDIF ENDIF
IF HDSK
IF HBIOS
DEFB CR,LF,' HBIOS Hard Disk Driver'
ELSE
IF SIMHDSK
DEFB CR,LF,' SIMH Hard Disk Driver' DEFB CR,LF,' SIMH Hard Disk Driver'
ENDIF
ENDIF
IF HBDSK
DEFB CR,LF,' HBIOS Hard Disk Driver'
ENDIF ENDIF
IF HDDMA IF HDDMA
DEFB ' (DMA-driven IO)' DEFB ' (DMA-driven IO)'

3
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) ; (Pick 1 of 3 options below)
SCSI EQU NO ; YES = Use SCSI Driver SCSI EQU NO ; YES = Use SCSI Driver
IDE EQU NO ; YES = Use IDE 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? HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers?
; (DMA not implemented for GIDE) ; (DMA not implemented for GIDE)
UNIT_0 EQU YES ; Hard Disk Physical Unit 1 UNIT_0 EQU YES ; Hard Disk Physical Unit 1

3
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) ; (Pick 1 of 3 options below)
SCSI EQU NO ; YES = Use SCSI Driver SCSI EQU NO ; YES = Use SCSI Driver
IDE EQU NO ; YES = Use IDE 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? HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers?
; (DMA not implemented for GIDE) ; (DMA not implemented for GIDE)
UNIT_0 EQU YES ; Hard Disk Physical Unit 1 UNIT_0 EQU YES ; Hard Disk Physical Unit 1

3
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) ; (Pick 1 of 3 options below)
SCSI EQU NO ; YES = Use SCSI Driver SCSI EQU NO ; YES = Use SCSI Driver
IDE EQU NO ; YES = Use IDE 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? HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers?
; (DMA not implemented for GIDE) ; (DMA not implemented for GIDE)
UNIT_0 EQU YES ; Hard Disk Physical Unit 1 UNIT_0 EQU YES ; Hard Disk Physical Unit 1

3
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) ; (Pick 1 of 3 options below)
SCSI EQU NO ; YES = Use SCSI Driver SCSI EQU NO ; YES = Use SCSI Driver
IDE EQU NO ; YES = Use IDE 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? HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers?
; (DMA not implemented for GIDE) ; (DMA not implemented for GIDE)
UNIT_0 EQU YES ; Hard Disk Physical Unit 1 UNIT_0 EQU YES ; Hard Disk Physical Unit 1

3
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) ; (Pick 1 of 3 options below)
SCSI EQU NO ; YES = Use SCSI Driver SCSI EQU NO ; YES = Use SCSI Driver
IDE EQU NO ; YES = Use IDE 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? HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers?
; (DMA not implemented for GIDE) ; (DMA not implemented for GIDE)
UNIT_0 EQU YES ; Hard Disk Physical Unit 1 UNIT_0 EQU YES ; Hard Disk Physical Unit 1

3
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) ; (Pick 1 of 3 options below)
SCSI EQU NO ; YES = Use SCSI Driver SCSI EQU NO ; YES = Use SCSI Driver
IDE EQU NO ; YES = Use IDE 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? HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers?
; (DMA not implemented for GIDE) ; (DMA not implemented for GIDE)
UNIT_0 EQU YES ; Hard Disk Physical Unit 1 UNIT_0 EQU YES ; Hard Disk Physical Unit 1

3
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) ; (Pick 1 of 3 options below)
SCSI EQU NO ; YES = Use SCSI Driver SCSI EQU NO ; YES = Use SCSI Driver
IDE EQU NO ; YES = Use IDE 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? HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers?
; (DMA not implemented for GIDE) ; (DMA not implemented for GIDE)
UNIT_0 EQU YES ; Hard Disk Physical Unit 1 UNIT_0 EQU YES ; Hard Disk Physical Unit 1

3
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) ; (Pick 1 of 3 options below)
SCSI EQU NO ; YES = Use SCSI Driver SCSI EQU NO ; YES = Use SCSI Driver
IDE EQU NO ; YES = Use IDE 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? HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers?
; (DMA not implemented for GIDE) ; (DMA not implemented for GIDE)
UNIT_0 EQU YES ; Hard Disk Physical Unit 1 UNIT_0 EQU YES ; Hard Disk Physical Unit 1

3
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) ; (Pick 1 of 3 options below)
SCSI EQU NO ; YES = Use SCSI Driver SCSI EQU NO ; YES = Use SCSI Driver
IDE EQU NO ; YES = Use IDE 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? HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers?
; (DMA not implemented for GIDE) ; (DMA not implemented for GIDE)
UNIT_0 EQU YES ; Hard Disk Physical Unit 1 UNIT_0 EQU YES ; Hard Disk Physical Unit 1

3
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) ; (Pick 1 of 3 options below)
SCSI EQU NO ; YES = Use SCSI Driver SCSI EQU NO ; YES = Use SCSI Driver
IDE EQU NO ; YES = Use IDE 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? HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers?
; (DMA not implemented for GIDE) ; (DMA not implemented for GIDE)
UNIT_0 EQU YES ; Hard Disk Physical Unit 1 UNIT_0 EQU YES ; Hard Disk Physical Unit 1

3
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) ; (Pick 1 of 3 options below)
SCSI EQU NO ; YES = Use SCSI Driver SCSI EQU NO ; YES = Use SCSI Driver
IDE EQU NO ; YES = Use IDE 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? HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers?
; (DMA not implemented for GIDE) ; (DMA not implemented for GIDE)
UNIT_0 EQU YES ; Hard Disk Physical Unit 1 UNIT_0 EQU YES ; Hard Disk Physical Unit 1

42
Source/BPBIOS/dpbhd-ww.lib

@ -33,10 +33,10 @@
; NOTE: No Skew Table is needed since Hard Disk Format is locked ; 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 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 FIXDSK ; Format type byte 0
DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 DEFB SPEED8+SEC512+ALC4K ; Format type byte 1
DEFB -2 ; Skew factor (== Only the +/- sign used) DEFB -2 ; Skew factor (== Only the +/- sign used)
@ -60,10 +60,10 @@ DPB50: DEFW 64 ; Sctrs/Trk
ENDIF ENDIF
;..... ;.....
; Partition B. SIMH HDSK0, Slice 1
; Partition B. HBIOS Disk 0, Slice 1
IF DRV_F 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 FIXDSK ; Format type byte 0
DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 DEFB SPEED8+SEC512+ALC4K ; Format type byte 1
DEFB -2 ; Skew factor DEFB -2 ; Skew factor
@ -87,10 +87,10 @@ DPB51: DEFW 64 ; Scts/Trk
ENDIF ENDIF
;..... ;.....
; Partition C. SIMH HDSK0, Slice 2
; Partition C. HBIOS Disk 0, Slice 2
IF DRV_G 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 FIXDSK ; Format type byte 0
DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 DEFB SPEED8+SEC512+ALC4K ; Format type byte 1
DEFB -2 ; Skew factor DEFB -2 ; Skew factor
@ -114,10 +114,10 @@ DPB52: DEFW 64 ; Scts/Trk
ENDIF ENDIF
;..... ;.....
; Partition D. SIMH HDSK0, Slice 3
; Partition D. HBIOS Disk 0, Slice 3
IF DRV_H 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 FIXDSK ; Format type byte 0
DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 DEFB SPEED8+SEC512+ALC4K ; Format type byte 1
DEFB -2 ; Skew factor DEFB -2 ; Skew factor
@ -141,10 +141,10 @@ DPB53: DEFW 64 ; Scts/Trk
ENDIF 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 FIXDSK ; Format type byte 0
DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 DEFB SPEED8+SEC512+ALC4K ; Format type byte 1
DEFB -2 ; Skew factor (== Only the +/- sign used) DEFB -2 ; Skew factor (== Only the +/- sign used)
@ -168,10 +168,10 @@ DPB54: DEFW 64 ; Sctrs/Trk
ENDIF 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 FIXDSK ; Format type byte 0
DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 DEFB SPEED8+SEC512+ALC4K ; Format type byte 1
DEFB -2 ; Skew factor DEFB -2 ; Skew factor
@ -195,10 +195,10 @@ DPB55: DEFW 64 ; Scts/Trk
ENDIF 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 FIXDSK ; Format type byte 0
DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 DEFB SPEED8+SEC512+ALC4K ; Format type byte 1
DEFB -2 ; Skew factor DEFB -2 ; Skew factor
@ -222,10 +222,10 @@ DPB56: DEFW 64 ; Scts/Trk
ENDIF 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 FIXDSK ; Format type byte 0
DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 DEFB SPEED8+SEC512+ALC4K ; Format type byte 1
DEFB -2 ; Skew factor DEFB -2 ; Skew factor
@ -259,7 +259,6 @@ DPB57: DEFW 64 ; Scts/Trk
DEFB 16 ; Logical Sectors per track DEFB 16 ; Logical Sectors per track
DEFB 0 ; Physical tracks/side (No Meaning in HD) DEFB 0 ; Physical tracks/side (No Meaning in HD)
;HSIZ8 EQU 464 ; Number of blocks in Fourth Logical Drive
HSIZ8 EQU HB_ROMBLKS HSIZ8 EQU HB_ROMBLKS
DPB58: DEFW 64 ; Scts/Trk DPB58: DEFW 64 ; Scts/Trk
@ -286,7 +285,6 @@ DPB58: DEFW 64 ; Scts/Trk
DEFB 16 ; Logical Sectors per track DEFB 16 ; Logical Sectors per track
DEFB 0 ; Physical tracks/side (No Meaning in HD) DEFB 0 ; Physical tracks/side (No Meaning in HD)
;HSIZ9 EQU 192 ; Number of blocks in Fourth Logical Drive
HSIZ9 EQU HB_RAMBLKS HSIZ9 EQU HB_RAMBLKS
DPB59: DEFW 64 ; Scts/Trk DPB59: DEFW 64 ; Scts/Trk

145
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 HB_DEFBNK EQU BID_USR ; Default bank number
; ;
@ -39,6 +12,23 @@ HB_DISPATCH EQU 0403H
; ;
; PLATFORM SPECIFIC CONSTANTS ; 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 IF N8
N8_BASE EQU 80H ; BASE I/O ADDRESS BOARD PERIPHERALS (NON-CPU) N8_BASE EQU 80H ; BASE I/O ADDRESS BOARD PERIPHERALS (NON-CPU)
ACR EQU N8_BASE + 14H ; AUXILLARY CONTROL REGISTER ACR EQU N8_BASE + 14H ; AUXILLARY CONTROL REGISTER
@ -61,7 +51,7 @@ HB_XFCIMG EQU $
.PHASE HB_XFC .PHASE HB_XFC
HB_CURBNK DB 0 HB_CURBNK DB 0
HB_PRVBNK DB 0 ; DEPRECATED!!!
HB_INVBNK DB 0
HB_SRCADR DW 0 HB_SRCADR DW 0
HB_SRCBNK DB 0 HB_SRCBNK DB 0
HB_DSTADR DW 0 HB_DSTADR DW 0
@ -126,14 +116,6 @@ HBX_INIT:
RET RET
;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; SETBNK - Set memory bank specified in A.
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
HBX_SETBNK:
JP HBX_BNKSEL
HBX_XCOPY: HBX_XCOPY:
LD A,C LD A,C
LD (HB_SRCBNK),A LD (HB_SRCBNK),A
@ -147,6 +129,8 @@ HBX_COPY:
CALL HBX_BNKCPY ; Do the work with private stack active CALL HBX_BNKCPY ; Do the work with private stack active
LD SP,(HBX_STKSAV) ; Back to original stack LD SP,(HBX_STKSAV) ; Back to original stack
RET RET
IF INTPXY IF INTPXY
; ;
@ -156,6 +140,21 @@ HBX_BNKSEL:
IF N8VEM OR ZETA IF N8VEM OR ZETA
OUT (MPCL_ROM),A OUT (MPCL_ROM),A
OUT (MPCL_RAM),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 ENDIF
IF N8 IF N8
@ -186,17 +185,8 @@ HBX_ROM:
RLCA RLCA
RLCA RLCA
OUT0 (CPU_BBR),A OUT0 (CPU_BBR),A
ENDIF
RET
;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; GETBNK - Get current memory bank and return in A.
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
HBX_GETBNK:
LD A,(HB_CURBNK)
RET RET
ENDIF
; ;
; Entry point HBX_BNKCPY is for use internally and ; Entry point HBX_BNKCPY is for use internally and
; assumes a valid stack already exists in upper 32K. ; assumes a valid stack already exists in upper 32K.
@ -266,31 +256,28 @@ HBX_COPY4:
RET ; Done RET ; Done
; ;
;==================================================================================================
; HBIOS ENTRY FOR RST 08 PROCESSING
;==================================================================================================
;
; ENTRY POINT FOR BIOS FUNCTIONS (TARGET OF RST 08) ; ENTRY POINT FOR BIOS FUNCTIONS (TARGET OF RST 08)
; ;
HBX_INVOKE: HBX_INVOKE:
LD (HBX_STKSAV),SP ; SAVE ORIGINAL STACK FRAME LD (HBX_STKSAV),SP ; SAVE ORIGINAL STACK FRAME
LD SP,HBX_STACK ; SETUP NEW STACK FRAME
LD A,(HB_CURBNK) ; GET CURRENT BANK 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 LD A,BID_HB ; HBIOS BANK
CALL HBX_BNKSEL ; SELECT IT CALL HBX_BNKSEL ; SELECT IT
;EI
CALL HB_DISPATCH ; CALL HBIOS FUNCTION DISPATCHER CALL HB_DISPATCH ; CALL HBIOS FUNCTION DISPATCHER
;DI
PUSH AF ; SAVE AF (FUNCTION RETURN) 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 CALL HBX_BNKSEL ; SELECT IT
POP AF ; RESTORE AF POP AF ; RESTORE AF
LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME
;EI
RET ; RETURN TO CALLER RET ; RETURN TO CALLER
@ -303,25 +290,18 @@ HBX_INVBNK EQU $ - 1
HBX_FRGETB: HBX_FRGETB:
LD (HBX_STKSAV),SP ; Save current stack LD (HBX_STKSAV),SP ; Save current stack
LD SP,HBX_STACK ; Activate our private stack LD SP,HBX_STACK ; Activate our private stack
LD A,(HB_CURBNK) ; Get current bank LD A,(HB_CURBNK) ; Get current bank
LD (HBX_BNKSAV),A ; Save current bank LD (HBX_BNKSAV),A ; Save current bank
PUSH BC PUSH BC
LD A,C LD A,C
DI
;DI
CALL HBX_BNKSEL CALL HBX_BNKSEL
LD C,(HL) LD C,(HL)
LD A,(HBX_BNKSAV) LD A,(HBX_BNKSAV)
CALL HBX_BNKSEL CALL HBX_BNKSEL
;WW EI
;EI
LD A,C LD A,C
POP BC POP BC
LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME
RET RET
@ -332,25 +312,18 @@ HBX_FRGETB:
HBX_FRGETW: HBX_FRGETW:
LD (HBX_STKSAV),SP ; Save current stack LD (HBX_STKSAV),SP ; Save current stack
LD SP,HBX_STACK ; Activate our private stack LD SP,HBX_STACK ; Activate our private stack
LD A,(HB_CURBNK) ; Get current bank LD A,(HB_CURBNK) ; Get current bank
LD (HBX_BNKSAV),A ; Save current bank LD (HBX_BNKSAV),A ; Save current bank
LD A,C LD A,C
DI
;DI
CALL HBX_BNKSEL CALL HBX_BNKSEL
LD E,(HL) LD E,(HL)
INC HL INC HL
LD D,(HL) LD D,(HL)
DEC HL DEC HL
LD A,(HBX_BNKSAV) LD A,(HBX_BNKSAV)
CALL HBX_BNKSEL CALL HBX_BNKSEL
;WW EI
;EI
LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME
RET RET
@ -361,27 +334,20 @@ HBX_FRGETW:
HBX_FRPUTB: HBX_FRPUTB:
LD (HBX_STKSAV),SP ; Save current stack LD (HBX_STKSAV),SP ; Save current stack
LD SP,HBX_STACK ; Activate our private stack LD SP,HBX_STACK ; Activate our private stack
PUSH AF PUSH AF
LD A,(HB_CURBNK) ; Get current bank LD A,(HB_CURBNK) ; Get current bank
LD (HBX_BNKSAV),A ; Save current bank LD (HBX_BNKSAV),A ; Save current bank
POP AF POP AF
PUSH BC PUSH BC
LD B,A LD B,A
LD A,C LD A,C
DI
;DI
CALL HBX_BNKSEL CALL HBX_BNKSEL
LD (HL),B LD (HL),B
LD A,(HBX_BNKSAV) LD A,(HBX_BNKSAV)
CALL HBX_BNKSEL CALL HBX_BNKSEL
;WW EI
;EI
POP BC POP BC
LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME
RET RET
@ -392,25 +358,18 @@ HBX_FRPUTB:
HBX_FRPUTW: HBX_FRPUTW:
LD (HBX_STKSAV),SP ; Save current stack LD (HBX_STKSAV),SP ; Save current stack
LD SP,HBX_STACK ; Activate our private stack LD SP,HBX_STACK ; Activate our private stack
LD A,(HB_CURBNK) ; Get current bank LD A,(HB_CURBNK) ; Get current bank
LD (HBX_BNKSAV),A ; Save current bank LD (HBX_BNKSAV),A ; Save current bank
LD A,C LD A,C
DI
;DI
CALL HBX_BNKSEL CALL HBX_BNKSEL
LD (HL),E LD (HL),E
INC HL INC HL
LD (HL),D LD (HL),D
DEC HL DEC HL
LD A,(HBX_BNKSAV) LD A,(HBX_BNKSAV)
CALL HBX_BNKSEL CALL HBX_BNKSEL
;WW EI
;EI
LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME
RET RET
@ -422,7 +381,6 @@ HBX_FRPUTW:
DSEG DSEG
HB_DSKBUF DEFW 0 ; Address of physical disk buffer in HBIOS bank HB_DSKBUF DEFW 0 ; Address of physical disk buffer in HBIOS bank
HBX_BNKSAV DEFB 0 ; Saved bank id during HBIOS calls HBX_BNKSAV DEFB 0 ; Saved bank id during HBIOS calls
HBX_STKSAV DEFW 0 ; Saved stack pointer during HBIOS calls HBX_STKSAV DEFW 0 ; Saved stack pointer during HBIOS calls
DEFS 64 ; Private stack for HBIOS DEFS 64 ; Private stack for HBIOS
@ -431,7 +389,6 @@ HBX_STACK EQU $ ; Top of private stack
IF INTPXY IF INTPXY
HBX_RETBNK DEFB 0 ; Bank to activate on return from BNKCPY HBX_RETBNK DEFB 0 ; Bank to activate on return from BNKCPY
HBX_BUF DEFS 80H ; Interbank copy buffer HBX_BUF DEFS 80H ; Interbank copy buffer
ENDIF ENDIF

15
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 LD (USP-7),HL ; Save entry HL
POP HL ; Retrieve caller's return address from stack POP HL ; Retrieve caller's return address from stack
LD (USP-5),HL ; ..and set in our stack for local return 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 (USP),SP ; Save User's Stack Pointer
LD SP,USP-1 ; ..and point locally, saving 1 byte for Bank LD SP,USP-1 ; ..and point locally, saving 1 byte for Bank
PUSH AF ; Save entry A and Flags 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 PUSH HL ; ..at USP-2 & 3
LD SP,USP-7 ; Point stack pointer to do local return LD SP,USP-7 ; Point stack pointer to do local return
POP HL ; .restoring entry HL POP HL ; .restoring entry HL
;WW EI ; ..enabling interrupts
;EI ; ..enabling interrupts
RET ; And return to caller RET ; And return to caller
; Restore User Stack and Bank Routine ; Restore User Stack and Bank Routine
USRSTK: PUSH AF USRSTK: PUSH AF
LD A,(USP-1) ; Get bank control byte from entry 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 XOR A
LD (BIOSTK),A ; Patch NOP back in at start of code LD (BIOSTK),A ; Patch NOP back in at start of code
POP AF POP AF
@ -64,8 +64,8 @@ USRSTK: PUSH AF
FRCLR: PUSH AF ; Save any entry in AF FRCLR: PUSH AF ; Save any entry in AF
LD A,(USP-1) ; Get bank control byte LD A,(USP-1) ; Get bank control byte
CALL HBX_BNKSEL
LD (CURBNK),A ; WW: I ADDED THIS, IS IT RIGHT??? LD (CURBNK),A ; WW: I ADDED THIS, IS IT RIGHT???
CALL HBX_SETBNK
XOR A XOR A
LD (BIOSTK),A ; Patch NOP to enable stack switcher LD (BIOSTK),A ; Patch NOP to enable stack switcher
POP AF POP AF
@ -100,6 +100,7 @@ RETMEM: LD A,(CURBNK)
SELMEM: LD (USRBNK),A ; Update user bank SELMEM: LD (USRBNK),A ; Update user bank
;..fall thru to set specified bank.. ;..fall thru to set specified bank..
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; SELBNK - Switch Memory Bank to Bank in A and show as current. ; SELBNK - Switch Memory Bank to Bank in A and show as current.
; Must preserve all Registers including Flags. ; Must preserve all Registers including Flags.
@ -107,8 +108,8 @@ SELMEM: LD (USRBNK),A ; Update user bank
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
SELBNK: PUSH AF ; Save regs 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 POP AF ; restore regs
RET RET

47
Source/BPBIOS/icfg-ww.z80

@ -141,45 +141,44 @@ CNTRLR: DEFB 80H ; Controller Types recognized are:
; 3- Seagate SCSI 8- Syquest SCSI ; 3- Seagate SCSI 8- Syquest SCSI
; 4- Shugart 1610-4 Minimal SCSI 80H- GIDE (IDE/ATA) ; 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 BITS DEFL BITS+[UNIT_0 AND 10H] ; If active, set Bit 4
HDRV0: DEFB BITS ; Set Device, Unit, and Active bits 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 DEFW 0000 ; Cylinder # to start precompensation
DEFB 0 ; Step Rate (0=3ms, 1=28us, 2=12us) 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 BITS DEFL BITS+[UNIT_1 AND 10H] ; If active, set Bit 4
HDRV1: DEFB BITS ; Set Device, Unit, and Active bits 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 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) DEFB 0,0,0,0,0 ; (Reserved)

20
Source/BPBIOS/romwbw-mk4.lib

@ -9,13 +9,13 @@
; HBIOS configuration. ; HBIOS configuration.
; ;
HBIOS EQU YES ; Use HBIOS functions HBIOS EQU YES ; Use HBIOS functions
;INTPXY EQU YES ; Internal HBIOS Proxy
HBLOC EQU 0FE00H ; Location of HBIOS proxy (used if not INTPXY) HBLOC EQU 0FE00H ; Location of HBIOS proxy (used if not INTPXY)
; ;
; Set exactly one of the following to YES to specify platform ; Set exactly one of the following to YES to specify platform
; ;
N8VEM EQU NO N8VEM EQU NO
ZETA EQU NO ZETA EQU NO
ZETA2 EQU NO
N8 EQU NO N8 EQU NO
MK4 EQU YES MK4 EQU YES
; ;
@ -24,16 +24,16 @@ MK4 EQU YES
SIMHCLK EQU NO ; Direct SIMH clock access SIMHCLK EQU NO ; Direct SIMH clock access
HBCLK EQU YES ; HBIOS clock driver 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 ; 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
; ;
; Set HB_MDDEV to appropriate memory disk driver ; Set HB_MDDEV to appropriate memory disk driver
; ;
;HB_MDDEV EQU HBDEV_MD ; Memory Disk Driver
HB_MDDEV EQU 0 HB_MDDEV EQU 0
; ;
; RAM/ROM disk sizes expressed as count of 2K blocks ; 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 ; Layout of RAM banks
; ;
IF N8VEM OR ZETA OR MK4
IF N8VEM OR ZETA OR ZETA2 OR MK4
BID_RAMD EQU 80H BID_RAMD EQU 80H
BID_RAMM EQU 8BH BID_RAMM EQU 8BH
BID_SYS EQU 8CH BID_SYS EQU 8CH
@ -60,14 +60,6 @@ BID_HB EQU 9DH
BID_USR EQU 9EH BID_USR EQU 9EH
BID_COM EQU 9FH BID_COM EQU 9FH
ENDIF ENDIF
;
IF N8 OR MK4
;HB_IODEV EQU HBCIO_ASCI
; ELSE
;HB_IODEV EQU HBCIO_UART
ENDIF
;
HB_IODEV EQU 0
; ;
IF INTPXY IF INTPXY
MEMTOP EQU 0FFE0H - 1 ; Start of HBIOS 32 byte control block MEMTOP EQU 0FFE0H - 1 ; Start of HBIOS 32 byte control block

20
Source/BPBIOS/romwbw-sim.lib

@ -9,13 +9,13 @@
; HBIOS configuration. ; HBIOS configuration.
; ;
HBIOS EQU YES ; Use HBIOS functions HBIOS EQU YES ; Use HBIOS functions
;INTPXY EQU YES ; Internal HBIOS Proxy
HBLOC EQU 0FE00H ; Location of HBIOS proxy (used if not INTPXY) HBLOC EQU 0FE00H ; Location of HBIOS proxy (used if not INTPXY)
; ;
; Set exactly one of the following to YES to specify platform ; Set exactly one of the following to YES to specify platform
; ;
N8VEM EQU YES N8VEM EQU YES
ZETA EQU NO ZETA EQU NO
ZETA2 EQU NO
N8 EQU NO N8 EQU NO
MK4 EQU NO MK4 EQU NO
; ;
@ -24,16 +24,16 @@ MK4 EQU NO
SIMHCLK EQU NO ; Direct SIMH clock access SIMHCLK EQU NO ; Direct SIMH clock access
HBCLK EQU YES ; HBIOS clock driver 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 ; 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
; ;
; Set HB_MDDEV to appropriate memory disk driver ; Set HB_MDDEV to appropriate memory disk driver
; ;
;HB_MDDEV EQU HBDEV_MD ; Memory Disk Driver
HB_MDDEV EQU 0 HB_MDDEV EQU 0
; ;
; RAM/ROM disk sizes expressed as count of 2K blocks ; 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 ; Layout of RAM banks
; ;
IF N8VEM OR ZETA OR MK4
IF N8VEM OR ZETA OR ZETA2 OR MK4
BID_RAMD EQU 80H BID_RAMD EQU 80H
BID_RAMM EQU 8BH BID_RAMM EQU 8BH
BID_SYS EQU 8CH BID_SYS EQU 8CH
@ -60,14 +60,6 @@ BID_HB EQU 9DH
BID_USR EQU 9EH BID_USR EQU 9EH
BID_COM EQU 9FH BID_COM EQU 9FH
ENDIF ENDIF
;
IF N8 OR MK4
;HB_IODEV EQU HBCIO_ASCI
; ELSE
;HB_IODEV EQU HBCIO_UART
ENDIF
;
HB_IODEV EQU 0
; ;
IF INTPXY IF INTPXY
MEMTOP EQU 0FFE0H - 1 ; Start of HBIOS 32 byte control block MEMTOP EQU 0FFE0H - 1 ; Start of HBIOS 32 byte control block

24
Source/BPBIOS/romwbw.lib

@ -9,13 +9,13 @@
; HBIOS configuration. ; HBIOS configuration.
; ;
HBIOS EQU YES ; Use HBIOS functions HBIOS EQU YES ; Use HBIOS functions
;INTPXY EQU YES ; Internal HBIOS Proxy
HBLOC EQU 0FE00H ; Location of HBIOS proxy (used if not INTPXY) HBLOC EQU 0FE00H ; Location of HBIOS proxy (used if not INTPXY)
; ;
; Set exactly one of the following to YES to specify platform ; Set exactly one of the following to YES to specify platform
; ;
N8VEM EQU YES N8VEM EQU YES
ZETA EQU NO ZETA EQU NO
ZETA2 EQU NO
N8 EQU NO N8 EQU NO
MK4 EQU NO MK4 EQU NO
; ;
@ -24,17 +24,17 @@ MK4 EQU NO
SIMHCLK EQU NO ; Direct SIMH clock access SIMHCLK EQU NO ; Direct SIMH clock access
HBCLK EQU YES ; HBIOS clock driver 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 ; 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 ; 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 ; 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 ; Layout of RAM banks
; ;
IF N8VEM OR ZETA OR MK4
IF N8VEM OR ZETA OR ZETA2 OR MK4
BID_RAMD EQU 80H BID_RAMD EQU 80H
BID_RAMM EQU 8BH BID_RAMM EQU 8BH
BID_SYS EQU 8CH BID_SYS EQU 8CH
@ -60,14 +60,6 @@ BID_HB EQU 9DH
BID_USR EQU 9EH BID_USR EQU 9EH
BID_COM EQU 9FH BID_COM EQU 9FH
ENDIF ENDIF
;
IF N8 OR MK4
;HB_IODEV EQU HBCIO_ASCI
; ELSE
;HB_IODEV EQU HBCIO_UART
ENDIF
;
HB_IODEV EQU 0
; ;
IF INTPXY IF INTPXY
MEMTOP EQU 0FFE0H - 1 ; Start of HBIOS 32 byte control block MEMTOP EQU 0FFE0H - 1 ; Start of HBIOS 32 byte control block

7
Source/BPBIOS/util.z80

@ -321,13 +321,6 @@ STR_PC DB " PC=$"
STR_SP DB " SP=$" 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 ; DATA
;================================================================================================== ;==================================================================================================
; ;

2
Source/Doc/CPM 22 Manual/Build.cmd

@ -9,7 +9,7 @@ set ZXBINDIR=%TOOLS%/cpm/bin/
set ZXLIBDIR=%TOOLS%/cpm/lib/ set ZXLIBDIR=%TOOLS%/cpm/lib/
set ZXINCDIR=%TOOLS%/cpm/include/ set ZXINCDIR=%TOOLS%/cpm/include/
rem set TEXOPT=-$D
rem set TEXOPT=-$D -$Q
zx TEX21A PART1 %TEXOPT% zx TEX21A PART1 %TEXOPT%
zx TEX21A PART2 %TEXOPT% zx TEX21A PART2 %TEXOPT%

16
Source/HBIOS/dsrtc.asm

@ -171,18 +171,14 @@ DSRTC_GETTIM:
CALL DSRTC_CLK2TIM ; CONVERT CLOCK TO TIME CALL DSRTC_CLK2TIM ; CONVERT CLOCK TO TIME
; ;
; NOW COPY TO REAL DESTINATION (INTERBANK SAFE) ; 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 A,BID_BIOS ; COPY FROM BIOS BANK
LD (HB_SRCBNK),A ; SET IT 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 (HB_DSTBNK),A ; SET IT
LD HL,DSRTC_TIMBUF ; SOURCE ADR LD HL,DSRTC_TIMBUF ; SOURCE ADR
POP DE ; DEST ADR POP DE ; DEST ADR
LD BC,6 ; LENGTH IS 6 BYTES 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 ; CLEAN UP AND RETURN
XOR A ; SIGNAL SUCCESS XOR A ; SIGNAL SUCCESS
@ -197,17 +193,13 @@ DSRTC_GETTIM:
DSRTC_SETTIM: DSRTC_SETTIM:
; ;
; COPY INCOMING TIME DATA TO OUR TIME BUFFER ; 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 (HB_SRCBNK),A ; SET IT
LD A,BID_BIOS ; COPY TO BIOS BANK LD A,BID_BIOS ; COPY TO BIOS BANK
LD (HB_DSTBNK),A ; SET IT LD (HB_DSTBNK),A ; SET IT
LD DE,DSRTC_TIMBUF ; DEST ADR LD DE,DSRTC_TIMBUF ; DEST ADR
LD BC,6 ; LENGTH IS 6 BYTES LD BC,6 ; LENGTH IS 6 BYTES
CALL HBX_BNKCPY ; COPY THE CLOCK DATA
CALL HB_BNKCPY ; COPY THE CLOCK DATA
; ;
; WRITE TO CLOCK ; WRITE TO CLOCK
LD HL,DSRTC_TIMBUF ; POINT TO TIME BUFFER LD HL,DSRTC_TIMBUF ; POINT TO TIME BUFFER

15
Source/HBIOS/hbios.asm

@ -87,7 +87,7 @@ MODCNT .SET MODCNT + 1
JP HB_START JP HB_START
.DW ROM_SIG .DW ROM_SIG
.FILL (008H - $),0FFH ; RST 8 .FILL (008H - $),0FFH ; RST 8
JP HBX_INVOKE ; INVOKE HBIOS FUNCTION
JP HB_INVOKE ; INVOKE HBIOS FUNCTION
.FILL (010H - $),0FFH ; RST 10 .FILL (010H - $),0FFH ; RST 10
RET RET
.FILL (018H - $),0FFH ; RST 18 .FILL (018H - $),0FFH ; RST 18
@ -206,7 +206,7 @@ HBX_IDENT:
HBX_INVOKE: HBX_INVOKE:
LD (HBX_STKSAV),SP ; SAVE ORIGINAL STACK FRAME LD (HBX_STKSAV),SP ; SAVE ORIGINAL STACK FRAME
LD A,(HB_CURBNK) ; GET CURRENT BANK 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 HB_DI
LD SP,HBX_STACK ; USE STACK FRAME IN HI MEM LD SP,HBX_STACK ; USE STACK FRAME IN HI MEM
@ -220,8 +220,7 @@ HBX_INVOKE:
HB_DI HB_DI
LD SP,HBX_STACK ; USE STACK FRAME IN HI MEM LD SP,HBX_STACK ; USE STACK FRAME IN HI MEM
PUSH AF ; SAVE AF (FUNCTION RETURN) 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 CALL HBX_BNKSEL ; SELECT IT
POP AF ; RESTORE AF POP AF ; RESTORE AF
LD SP,0 ; RESTORE ORIGINAL STACK FRAME LD SP,0 ; RESTORE ORIGINAL STACK FRAME
@ -516,7 +515,7 @@ HBX_BUF .FILL HBX_BUFSIZ,0
#ELSE #ELSE
.DB BID_USR ; CURRENTLY ACTIVE LOW MEMORY BANK ID .DB BID_USR ; CURRENTLY ACTIVE LOW MEMORY BANK ID
#ENDIF #ENDIF
.DB $FF ; DEPRECATED!!!
.DB 0 ; BANK ACTIVE AT TIME OF HBIOS CALL INVOCATION
.DW 0 ; BNKCPY SOURCE ADDRESS .DW 0 ; BNKCPY SOURCE ADDRESS
.DB BID_USR ; BNKCPY SOURCE BANK ID .DB BID_USR ; BNKCPY SOURCE BANK ID
.DW 0 ; BNKCPY DESTINATION ADDRESS .DW 0 ; BNKCPY DESTINATION ADDRESS
@ -1452,7 +1451,7 @@ SYS_DISPATCH:
; ;
SYS_SETBNK: SYS_SETBNK:
PUSH HL ; SAVE INCOMING HL 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 A,(HL) ; GET EXISTING BANK ID TO A
LD (HL),C ; UPDATE INVOKE BANK TO NEW BANK ID LD (HL),C ; UPDATE INVOKE BANK TO NEW BANK ID
LD C,A ; PUT PREVIOUS BANK ID IN C FOR RETURN LD C,A ; PUT PREVIOUS BANK ID IN C FOR RETURN
@ -1463,7 +1462,7 @@ SYS_SETBNK:
; GET ACTIVE MEMORY BANK ; GET ACTIVE MEMORY BANK
; ;
SYS_GETBNK: 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 LD C,A ; MOVE TO C
XOR A ; SIGNAL SUCCESS XOR A ; SIGNAL SUCCESS
RET RET
@ -1529,7 +1528,7 @@ SYS_BNKCPY:
;POP AF ;POP AF
; *DEBUG* END ; *DEBUG* END
CALL HBX_BNKCPY
CALL HB_BNKCPY
XOR A XOR A
RET RET
; ;

2
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 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_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_SRCADR .EQU HBX_XFCDAT + 2 ; BNKCPY: DESTINATION BANK ID
HB_SRCBNK .EQU HBX_XFCDAT + 4 ; BNKCPY: SOURCE BANK ID HB_SRCBNK .EQU HBX_XFCDAT + 4 ; BNKCPY: SOURCE BANK ID
HB_DSTADR .EQU HBX_XFCDAT + 5 ; BNKCPY: DESTINATION ADDRESS HB_DSTADR .EQU HBX_XFCDAT + 5 ; BNKCPY: DESTINATION ADDRESS

4
Source/HBIOS/md.asm

@ -190,7 +190,7 @@ MD_READ:
LD A,B ; GET DESTINATION BANK LD A,B ; GET DESTINATION BANK
LD (HB_DSTBNK),A ; SET IT LD (HB_DSTBNK),A ; SET IT
POP BC POP BC
CALL HBX_BNKCPY ; DO THE INTERBANK COPY
CALL HB_BNKCPY ; DO THE INTERBANK COPY
XOR A XOR A
RET RET
; ;
@ -222,7 +222,7 @@ MD_WRITE:
LD A,B ; GET DESTINATION BANK LD A,B ; GET DESTINATION BANK
LD (HB_DSTBNK),A ; SET IT LD (HB_DSTBNK),A ; SET IT
POP BC POP BC
CALL HBX_BNKCPY ; DO THE INTERBANK COPY
CALL HB_BNKCPY ; DO THE INTERBANK COPY
XOR A XOR A
RET RET
; ;

8
Source/HBIOS/simrtc.asm

@ -66,12 +66,12 @@ SIMRTC_GETTIM:
; NOW COPY TO REAL DESTINATION (INTERBANK SAFE) ; NOW COPY TO REAL DESTINATION (INTERBANK SAFE)
LD A,BID_BIOS ; COPY FROM BIOS BANK LD A,BID_BIOS ; COPY FROM BIOS BANK
LD (HB_SRCBNK),A ; SET IT 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 (HB_DSTBNK),A ; SET IT
LD HL,SIMRTC_BUF ; SOURCE ADR LD HL,SIMRTC_BUF ; SOURCE ADR
POP DE ; DEST ADR POP DE ; DEST ADR
LD BC,SIMRTC_BUFSIZ ; LENGTH 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 LD DE,60 ; DELAY 60 * 16US = ~1MS
CALL VDELAY ; SLOW DOWN SIMH FOR CLOCK TICKING TEST CALL VDELAY ; SLOW DOWN SIMH FOR CLOCK TICKING TEST
@ -95,13 +95,13 @@ SIMRTC_GETTIM0:
; ;
SIMRTC_SETTIM: SIMRTC_SETTIM:
; COPY TO TEMP BUF ; 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 (HB_SRCBNK),A ; SET IT
LD A,BID_BIOS ; COPY TO BIOS BANK LD A,BID_BIOS ; COPY TO BIOS BANK
LD (HB_DSTBNK),A ; SET IT LD (HB_DSTBNK),A ; SET IT
LD DE,SIMRTC_BUF ; DEST ADR LD DE,SIMRTC_BUF ; DEST ADR
LD BC,SIMRTC_BUFSIZ ; LENGTH 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 HL,SIMRTC_BUF ; POINT TO TEMP BUF
LD A,SIMRTC_CLKWRITE ; WRITE CLOCK COMMAND LD A,SIMRTC_CLKWRITE ; WRITE CLOCK COMMAND

BIN
Tools/cpm/bin/TEX21A.COM

Binary file not shown.
Loading…
Cancel
Save