|
|
@ -7,6 +7,8 @@ |
|
|
; HBIOS Functions |
|
|
; HBIOS Functions |
|
|
; |
|
|
; |
|
|
HBF_ALLOC EQU 0F6H ; HBIOS Func: ALLOCATE Heap Memory |
|
|
HBF_ALLOC EQU 0F6H ; HBIOS Func: ALLOCATE Heap Memory |
|
|
|
|
|
HBF_PEEK EQU 0FAH ; HBIOS Func: Peek Byte |
|
|
|
|
|
HBF_POKE EQU 0FBH ; HBIOS Func: Poke Byte |
|
|
HBF_BNKINFO EQU 0F8F2H ; HBIOS Func: Get Bank Info |
|
|
HBF_BNKINFO EQU 0F8F2H ; HBIOS Func: Get Bank Info |
|
|
; |
|
|
; |
|
|
; HBIOS Proxy Addresses |
|
|
; HBIOS Proxy Addresses |
|
|
@ -16,101 +18,189 @@ HBX_BNKSEL EQU 0FFF3H |
|
|
HBX_BNKCPY EQU 0FFF6H |
|
|
HBX_BNKCPY EQU 0FFF6H |
|
|
HBX_BNKCALL EQU 0FFF9H |
|
|
HBX_BNKCALL EQU 0FFF9H |
|
|
|
|
|
|
|
|
HB_CURBNK EQU 0FFE0H |
|
|
|
|
|
HB_INVBNK EQU 0FFE1H |
|
|
|
|
|
HB_SRCADR EQU 0FFE2H |
|
|
|
|
|
HB_SRCBNK EQU 0FFE4H |
|
|
|
|
|
HB_DSTADR EQU 0FFE5H |
|
|
|
|
|
HB_DSTBNK EQU 0FFE7H |
|
|
|
|
|
HB_CPYLEN EQU 0FFE8H |
|
|
|
|
|
|
|
|
HBX_CURBNK EQU 0FFE0H |
|
|
|
|
|
HBX_INVBNK EQU 0FFE1H |
|
|
|
|
|
HBX_SRCADR EQU 0FFE2H |
|
|
|
|
|
HBX_SRCBNK EQU 0FFE4H |
|
|
|
|
|
HBX_DSTADR EQU 0FFE5H |
|
|
|
|
|
HBX_DSTBNK EQU 0FFE7H |
|
|
|
|
|
HBX_CPYLEN EQU 0FFE8H |
|
|
|
|
|
|
|
|
CSEG |
|
|
CSEG |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |
|
|
|
|
|
; Trap initial SELMEM call and fixup HBIOS bank ids. |
|
|
|
|
|
; A = Bank |
|
|
|
|
|
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |
|
|
|
|
|
|
|
|
|
|
|
; LDSYS calls the SELMEM entry point of BIOSJT in order to |
|
|
|
|
|
; place memory contents in SYSBNK. It does this prior to |
|
|
|
|
|
; calling CBOOT to start the system. Since we need to adjust |
|
|
|
|
|
; the bank numbers on-the-fly at startup to adjust for |
|
|
|
|
|
; HBIOS actual RAM size, we intercept the initial HB_SELMEM |
|
|
|
|
|
; call here, make required changes, then update the |
|
|
|
|
|
; BIOSJT to point directly to the normal SELMEM routine for |
|
|
|
|
|
; all subsequent calls. |
|
|
|
|
|
|
|
|
|
|
|
; BPBIOS HBIOS Typical |
|
|
|
|
|
; ------------ -------------- -------------- |
|
|
|
|
|
; -1: <COMMON> BID_COM 90h - 1 = 8Fh |
|
|
|
|
|
; -2: TPABNK BID_USR 90h - 2 = 8Eh |
|
|
|
|
|
; -3: <HBIOS> BID_BIOS 90h - 3 = 8Dh |
|
|
|
|
|
; -4: SYSBNK BID_AUX 90h - 4 = 8Ch |
|
|
|
|
|
; -9: BNKM BID_AUX-5 90h - 9 = 87h |
|
|
|
|
|
; -16: RAMBNK RAMD0 90h - 16 = 80h |
|
|
|
|
|
|
|
|
|
|
|
HB_SELMEM: |
|
|
|
|
|
PUSH AF |
|
|
|
|
|
PUSH BC |
|
|
|
|
|
PUSH DE |
|
|
|
|
|
PUSH HL |
|
|
|
|
|
|
|
|
|
|
|
LD BC,HBF_BNKINFO ; HBIOS BNKINFO function |
|
|
|
|
|
CALL HBX_INVOKE ; DO IT, D=BID_BIOS, E=BID_USER |
|
|
|
|
|
LD A,D ; BID_BIOS |
|
|
|
|
|
LD (HB_BNKBIOS),A ; SET HB_BNKBIOS |
|
|
|
|
|
ADD A,3 ; HBIOS + 3 |
|
|
|
|
|
LD (HB_BNKEND),A ; ... is the ending RAM bank |
|
|
|
|
|
IF BANKED |
|
|
|
|
|
LD (BNKADJ+1),A ; Dynamically update SELBNK |
|
|
|
|
|
ENDIF |
|
|
|
|
|
|
|
|
|
|
|
LD HL,SELMEM ; Future SELMEM calls will |
|
|
|
|
|
LD (BIOSJT+(27*3)+1),HL ; ... go to real SELMEM |
|
|
|
|
|
|
|
|
|
|
|
POP HL |
|
|
|
|
|
POP DE |
|
|
|
|
|
POP BC |
|
|
|
|
|
POP AF |
|
|
|
|
|
JP SELMEM |
|
|
|
|
|
|
|
|
|
|
|
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |
|
|
|
|
|
; Move Data - Possibly between banks. This resembles CP/M 3, but |
|
|
|
|
|
; usage of the HL and DE registers is reversed. |
|
|
|
|
|
; Enter: HL = Source Address |
|
|
|
|
|
; DE = Destination Address |
|
|
|
|
|
; BC = Number of bytes to move |
|
|
|
|
|
; Exit : None |
|
|
|
|
|
; Uses : AF,BC,DE,HL |
|
|
|
|
|
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |
|
|
|
|
|
|
|
|
|
|
|
HB_MOVE: |
|
|
|
|
|
PUSH HL |
|
|
|
|
|
LD HL,HB_BNKEND |
|
|
|
|
|
LD A,(HB_SRCBNK) |
|
|
|
|
|
ADD A,(HL) ; Adjust for HBIOS bank ids |
|
|
|
|
|
LD (HBX_SRCBNK),A |
|
|
|
|
|
LD A,(HB_DSTBNK) |
|
|
|
|
|
ADD A,(HL) ; Adjust for HBIOS bank ids |
|
|
|
|
|
LD (HBX_DSTBNK),A |
|
|
|
|
|
POP HL |
|
|
|
|
|
CALL HBX_BNKCPY |
|
|
|
|
|
PUSH HL |
|
|
|
|
|
LD HL,(TPABNK) ; Get TPA Bank # |
|
|
|
|
|
LD H,L ; .to both H and L |
|
|
|
|
|
LD (HB_SRCBNK),HL ; ..set Source & Destination Bank # to TPA |
|
|
|
|
|
POP HL |
|
|
|
|
|
RET |
|
|
|
|
|
|
|
|
|
|
|
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |
|
|
|
|
|
; Set Banks for Inter-Bank Xfer. Save all Registers. |
|
|
|
|
|
; B = Destination Bank, C = Source Bank |
|
|
|
|
|
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |
|
|
|
|
|
|
|
|
|
|
|
HB_XMOVE: |
|
|
|
|
|
LD (HB_SRCBNK),BC |
|
|
|
|
|
RET |
|
|
|
|
|
|
|
|
; |
|
|
; |
|
|
;================================================================================================== |
|
|
;================================================================================================== |
|
|
; HBIOS INITIALIZATION |
|
|
; HBIOS INITIALIZATION |
|
|
;================================================================================================== |
|
|
;================================================================================================== |
|
|
; |
|
|
; |
|
|
; This code should be moved to follow CBOOT so that it will be reused |
|
|
|
|
|
; by RAM data. |
|
|
|
|
|
; |
|
|
|
|
|
HBX_INIT: |
|
|
|
|
|
|
|
|
|
|
|
; Setup RST 08 vector |
|
|
|
|
|
LD A,0C3H ; $C3 = JP |
|
|
|
|
|
LD (08H),A |
|
|
|
|
|
LD HL,HBX_INVOKE |
|
|
|
|
|
LD (09H),HL |
|
|
|
|
|
|
|
|
|
|
|
;; Init HB data fields |
|
|
|
|
|
;LD A,BID_USR |
|
|
|
|
|
;LD (HB_CURBNK),A |
|
|
|
|
|
;LD (HB_SRCBNK),A |
|
|
|
|
|
;LD (HB_DSTBNK),A |
|
|
|
|
|
|
|
|
|
|
|
; Initialize BPBIOS bank numbers from HBIOS |
|
|
|
|
|
; BNKU (UABNK) --> 0 (DISABLED) |
|
|
|
|
|
; BNK0 (TPABNK) --> BID_USR |
|
|
|
|
|
; BNK1 --> BID_COM |
|
|
|
|
|
; BNK2 (SYSBNK) --> BID_AUX (BID_BIOS - 1) |
|
|
|
|
|
; BNK3 (RAMBNK) --> BID_RAMD0 (0x80) |
|
|
|
|
|
; BNKM (MAXBNK) --> BID_RAMDN (BID_BIOS - 5) |
|
|
|
|
|
LD BC,HBF_BNKINFO ; HBIOS BNKINFO function |
|
|
|
|
|
CALL HBX_INVOKE ; DO IT, D=BID_BIOS, E=BID_USER |
|
|
|
|
|
LD A,E ; BID_USR |
|
|
|
|
|
LD (TPABNK),A ; SET BNK0 (TPABNK) |
|
|
|
|
|
LD A,D ; BID_BIOS |
|
|
|
|
|
LD (HBX_BNKBIOS),A ; SET HBX_BNKBIOS |
|
|
|
|
|
DEC A ; BID_AUX |
|
|
|
|
|
LD (SYSBNK),A ; SET BNK2 (SYSBNK) |
|
|
|
|
|
SUB 4 ; BID_RAMDN |
|
|
|
|
|
LD (MAXBNK),A ; SET BNKM (MAXBNK) |
|
|
|
|
|
LD A,80H ; FIRST PHYSICAL RAM BANK IS ALWAYS 0x80 |
|
|
|
|
|
LD (RAMBNK),A ; SET BNK3 (RAMBNK) |
|
|
|
|
|
|
|
|
HB_INIT: |
|
|
|
|
|
;; Setup RST 08 vector |
|
|
|
|
|
;LD A,0C3H ; $C3 = JP |
|
|
|
|
|
;LD (08H),A |
|
|
|
|
|
;LD HL,HBX_INVOKE |
|
|
|
|
|
;LD (09H),HL |
|
|
|
|
|
|
|
|
|
|
|
;IF BANKED |
|
|
|
|
|
; |
|
|
|
|
|
;; Copy vectors from TPA page zero to SYS page zero |
|
|
|
|
|
;LD BC,(TPABNK) ; C := TPABNK, B := SYSBNK |
|
|
|
|
|
;CALL XMOVE ; Set source/dest banks for copy |
|
|
|
|
|
;LD HL,0 ; Source address is zero |
|
|
|
|
|
;LD DE,0 ; Destination address is zero |
|
|
|
|
|
;LD BC,40H ; Copy 40H bytes |
|
|
|
|
|
;CALL MOVE ; Do it |
|
|
|
|
|
; |
|
|
|
|
|
;ENDIF ;BANKED |
|
|
|
|
|
|
|
|
|
|
|
IF HB_DEBUG |
|
|
|
|
|
|
|
|
|
|
|
CSEG |
|
|
|
|
|
XORG DEFL $ |
|
|
|
|
|
ORG 0 |
|
|
|
|
|
ORG_CSEG EQU $ |
|
|
|
|
|
ORG XORG |
|
|
|
|
|
|
|
|
|
|
|
DSEG |
|
|
|
|
|
XORG DEFL $ |
|
|
|
|
|
ORG 0 |
|
|
|
|
|
ORG_DSEG EQU $ |
|
|
|
|
|
ORG XORG |
|
|
|
|
|
|
|
|
IF BANKED |
|
|
|
|
|
|
|
|
IF BANKED |
|
|
|
|
|
|
|
|
; Copy vectors from TPA page zero to SYS page zero |
|
|
|
|
|
LD BC,(TPABNK) ; C := TPABNK, B := SYSBNK |
|
|
|
|
|
CALL XMOVE ; Set source/dest banks for copy |
|
|
|
|
|
LD HL,0 ; Source address is zero |
|
|
|
|
|
LD DE,0 ; Destination address is zero |
|
|
|
|
|
LD BC,40H ; Copy 40H bytes |
|
|
|
|
|
CALL MOVE ; Do it |
|
|
|
|
|
LD A,(TPABNK) ; Set all Bank regs to TPA |
|
|
|
|
|
|
|
|
COMMON /BANK2/ |
|
|
|
|
|
XORG DEFL $ |
|
|
|
|
|
ORG 0 |
|
|
|
|
|
ORG_BANK2 EQU $ |
|
|
|
|
|
ORG XORG |
|
|
|
|
|
|
|
|
ENDIF ;BANKED |
|
|
|
|
|
|
|
|
COMMON /B2RAM/ |
|
|
|
|
|
XORG DEFL $ |
|
|
|
|
|
ORG 0 |
|
|
|
|
|
ORG_B2RAM EQU $ |
|
|
|
|
|
ORG XORG |
|
|
|
|
|
|
|
|
; begin debug |
|
|
|
|
|
|
|
|
COMMON /RESVD/ |
|
|
|
|
|
XORG DEFL $ |
|
|
|
|
|
ORG 0 |
|
|
|
|
|
ORG_RESVD EQU $ |
|
|
|
|
|
ORG XORG |
|
|
|
|
|
|
|
|
|
|
|
ENDIF |
|
|
|
|
|
|
|
|
CALL NEWLINE2 |
|
|
CALL NEWLINE2 |
|
|
LD DE,HB_STR_TAG |
|
|
LD DE,HB_STR_TAG |
|
|
CALL WRITESTR |
|
|
CALL WRITESTR |
|
|
|
|
|
|
|
|
CALL NEWLINE |
|
|
|
|
|
LD DE,HB_STR_CSEG |
|
|
LD DE,HB_STR_CSEG |
|
|
CALL WRITESTR |
|
|
CALL WRITESTR |
|
|
LD BC,BIOSJT |
|
|
|
|
|
|
|
|
LD BC,ORG_CSEG |
|
|
CALL PRTHEXWORD |
|
|
CALL PRTHEXWORD |
|
|
LD DE,HB_STR_DSEG |
|
|
LD DE,HB_STR_DSEG |
|
|
CALL WRITESTR |
|
|
CALL WRITESTR |
|
|
LD BC,CBOOT |
|
|
|
|
|
|
|
|
LD BC,ORG_DSEG |
|
|
CALL PRTHEXWORD |
|
|
CALL PRTHEXWORD |
|
|
|
|
|
|
|
|
IF BANKED |
|
|
|
|
|
|
|
|
IF BANKED |
|
|
LD DE,HB_STR_BANK2 |
|
|
LD DE,HB_STR_BANK2 |
|
|
CALL WRITESTR |
|
|
CALL WRITESTR |
|
|
LD BC,ROMJT |
|
|
|
|
|
|
|
|
LD BC,ORG_BANK2 |
|
|
CALL PRTHEXWORD |
|
|
CALL PRTHEXWORD |
|
|
LD DE,HB_STR_B2RAM |
|
|
LD DE,HB_STR_B2RAM |
|
|
CALL WRITESTR |
|
|
CALL WRITESTR |
|
|
LD BC,CBOOT0 |
|
|
|
|
|
|
|
|
LD BC,ORG_B2RAM |
|
|
CALL PRTHEXWORD |
|
|
CALL PRTHEXWORD |
|
|
LD DE,HB_STR_RESVD |
|
|
LD DE,HB_STR_RESVD |
|
|
CALL WRITESTR |
|
|
CALL WRITESTR |
|
|
LD BC,ALV$50 |
|
|
|
|
|
|
|
|
LD BC,ORG_RESVD |
|
|
CALL PRTHEXWORD |
|
|
CALL PRTHEXWORD |
|
|
ENDIF ;BANKED |
|
|
|
|
|
|
|
|
ENDIF ;BANKED |
|
|
|
|
|
|
|
|
CALL NEWLINE |
|
|
CALL NEWLINE |
|
|
|
|
|
|
|
|
@ -123,129 +213,17 @@ HB_STR_BANK2: DB ", BANK2=$" |
|
|
HB_STR_B2RAM: DB ", B2RAM=$" |
|
|
HB_STR_B2RAM: DB ", B2RAM=$" |
|
|
HB_STR_RESVD: DB ", RESVD=$" |
|
|
HB_STR_RESVD: DB ", RESVD=$" |
|
|
|
|
|
|
|
|
; end debug |
|
|
|
|
|
|
|
|
|
|
|
CSEG |
|
|
|
|
|
|
|
|
|
|
|
HBX_BNKBIOS DEFB 0 ; Bank id of HBIOS bank |
|
|
|
|
|
|
|
|
|
|
|
; |
|
|
|
|
|
;================================================================================================== |
|
|
|
|
|
; HBIOS INTERFACE |
|
|
|
|
|
;================================================================================================== |
|
|
|
|
|
; |
|
|
|
|
|
; TODO: Move the following into ibmv-ww.z80 which is where it belongs. |
|
|
|
|
|
; |
|
|
|
|
|
HBX_XCOPY: |
|
|
|
|
|
LD A,C |
|
|
|
|
|
LD (HB_SRCBNK),A |
|
|
|
|
|
LD A,B |
|
|
|
|
|
LD (HB_DSTBNK),A |
|
|
|
|
|
RET |
|
|
|
|
|
|
|
|
|
|
|
HBX_COPY: |
|
|
|
|
|
JP HBX_BNKCPY |
|
|
|
|
|
|
|
|
|
|
|
;================================================================================================== |
|
|
|
|
|
; LD A,(C:HL) |
|
|
|
|
|
;================================================================================================== |
|
|
|
|
|
|
|
|
|
|
|
HBX_FRGETB: |
|
|
|
|
|
LD (HBX_STKSAV),SP ; Save current stack |
|
|
|
|
|
LD SP,HBX_TMPSTK ; Activate our private stack |
|
|
|
|
|
LD A,(HB_CURBNK) ; Get current bank |
|
|
|
|
|
LD (HBX_BNKSAV),A ; Save current bank |
|
|
|
|
|
PUSH BC |
|
|
|
|
|
LD A,C |
|
|
|
|
|
HB_DI |
|
|
|
|
|
CALL HBX_BNKSEL |
|
|
|
|
|
LD C,(HL) |
|
|
|
|
|
LD A,(HBX_BNKSAV) |
|
|
|
|
|
CALL HBX_BNKSEL |
|
|
|
|
|
HB_EI |
|
|
|
|
|
LD A,C |
|
|
|
|
|
POP BC |
|
|
|
|
|
LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME |
|
|
|
|
|
RET |
|
|
|
|
|
|
|
|
|
|
|
;================================================================================================== |
|
|
|
|
|
; LD DE,(C:HL) |
|
|
|
|
|
;================================================================================================== |
|
|
|
|
|
|
|
|
|
|
|
HBX_FRGETW: |
|
|
|
|
|
LD (HBX_STKSAV),SP ; Save current stack |
|
|
|
|
|
LD SP,HBX_TMPSTK ; Activate our private stack |
|
|
|
|
|
LD A,(HB_CURBNK) ; Get current bank |
|
|
|
|
|
LD (HBX_BNKSAV),A ; Save current bank |
|
|
|
|
|
LD A,C |
|
|
|
|
|
HB_DI |
|
|
|
|
|
CALL HBX_BNKSEL |
|
|
|
|
|
LD E,(HL) |
|
|
|
|
|
INC HL |
|
|
|
|
|
LD D,(HL) |
|
|
|
|
|
DEC HL |
|
|
|
|
|
LD A,(HBX_BNKSAV) |
|
|
|
|
|
CALL HBX_BNKSEL |
|
|
|
|
|
HB_EI |
|
|
|
|
|
LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME |
|
|
|
|
|
RET |
|
|
|
|
|
|
|
|
|
|
|
;================================================================================================== |
|
|
|
|
|
; LD (C:HL),A |
|
|
|
|
|
;================================================================================================== |
|
|
|
|
|
|
|
|
ELSE ; [HB_DEBUG] |
|
|
|
|
|
|
|
|
HBX_FRPUTB: |
|
|
|
|
|
LD (HBX_STKSAV),SP ; Save current stack |
|
|
|
|
|
LD SP,HBX_TMPSTK ; 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 |
|
|
|
|
|
HB_DI |
|
|
|
|
|
CALL HBX_BNKSEL |
|
|
|
|
|
LD (HL),B |
|
|
|
|
|
LD A,(HBX_BNKSAV) |
|
|
|
|
|
CALL HBX_BNKSEL |
|
|
|
|
|
HB_EI |
|
|
|
|
|
POP BC |
|
|
|
|
|
LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME |
|
|
|
|
|
RET |
|
|
RET |
|
|
|
|
|
|
|
|
;================================================================================================== |
|
|
|
|
|
; LD (C:HL),DE |
|
|
|
|
|
;================================================================================================== |
|
|
|
|
|
|
|
|
ENDIF ; [HB_DEBUG] |
|
|
|
|
|
|
|
|
HBX_FRPUTW: |
|
|
|
|
|
LD (HBX_STKSAV),SP ; Save current stack |
|
|
|
|
|
LD SP,HBX_TMPSTK ; Activate our private stack |
|
|
|
|
|
LD A,(HB_CURBNK) ; Get current bank |
|
|
|
|
|
LD (HBX_BNKSAV),A ; Save current bank |
|
|
|
|
|
LD A,C |
|
|
|
|
|
HB_DI |
|
|
|
|
|
CALL HBX_BNKSEL |
|
|
|
|
|
LD (HL),E |
|
|
|
|
|
INC HL |
|
|
|
|
|
LD (HL),D |
|
|
|
|
|
DEC HL |
|
|
|
|
|
LD A,(HBX_BNKSAV) |
|
|
|
|
|
CALL HBX_BNKSEL |
|
|
|
|
|
HB_EI |
|
|
|
|
|
LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME |
|
|
|
|
|
RET |
|
|
|
|
|
|
|
|
|
|
|
;================================================================================================== |
|
|
|
|
|
; PRIVATE DATA |
|
|
|
|
|
;================================================================================================== |
|
|
|
|
|
|
|
|
|
|
|
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 32 ; Private stack for HBIOS |
|
|
|
|
|
HBX_TMPSTK EQU $ ; Top of private stack |
|
|
|
|
|
|
|
|
CSEG |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HB_SRCBNK: DEFS 1 ; Move Source Bank # |
|
|
|
|
|
HB_DSTBNK: DEFS 1 ; Move Destination Bank # |
|
|
|
|
|
HB_BNKBIOS: DEFS 1 ; Bank id of HBIOS bank |
|
|
|
|
|
HB_BNKEND: DEFS 1 ; End of available RAM banks (last bank + 1) |
|
|
|
|
|
HB_DSKBUF: DEFS 2 ; Address of physical disk buffer in HBIOS bank |
|
|
|
|
|
|