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
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

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
; 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)'

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)
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

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)
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

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)
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

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)
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

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)
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

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)
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

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)
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

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)
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

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)
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

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)
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

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)
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

42
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

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
;
@ -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

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
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

47
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)

20
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

20
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

24
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

7
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
;==================================================================================================
;

2
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%

16
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

15
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
;

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
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

4
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
;

8
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

BIN
Tools/cpm/bin/TEX21A.COM

Binary file not shown.
Loading…
Cancel
Save