Browse Source

Update hbios.asm

Minor cosmetic changes.
pull/109/head
Wayne Warthen 6 years ago
parent
commit
8b7c9e10c3
  1. 55
      Source/HBIOS/hbios.asm

55
Source/HBIOS/hbios.asm

@ -250,7 +250,7 @@ CB_BIDROMDN .DB BID_ROMDN
;
; DEFINITIONS
;
HBX_BUFSIZ .EQU $40 ; INTERBANK COPY BUFFER SIZE
HBX_BUFSIZ .EQU $40 ; INTERBANK COPY BOUNCE BUFFER SIZE
;
; HBIOS IDENTIFICATION DATA BLOCK
;
@ -263,19 +263,25 @@ HBX_IDENT:
; HBIOS ENTRY FOR RST 08 PROCESSING
;==================================================================================================
;
; NOTE: THE SIZE OF HBX_TMPSTK (TYPICALLY 20 BYTES) IS INSUFFICIENT FOR
; FREERTOS IF AN INTERRUPT STRIKES WHILE THE TEMPORARY STACK IS ACTIVE.
; BELOW, HBX_BUF HAS BEEN USURPED TO PROVIDE A LARGER TEMP STACK TO
; ACCOMMODATE FREERTOS. HBX_BUF IS ONLY USED AS A BOUNCE BUFFER, SO IT'S
; USE WILL NEVER OVERLAP WITH BELOW.
;
HBX_INVOKE:
LD (HBX_INVSP),SP ; SAVE ORIGINAL STACK FRAME
LD A,(HB_CURBNK) ; GET CURRENT BANK
LD (HB_INVBNK),A ; SAVE INVOCATION BANK
LD SP,HBX_TMPSTK ; BORROW HBX_BUF FOR STACK IN HIGH MEMORY
LD SP,HBX_BUF_END ; BORROW HBX_BUF FOR TEMP STACK
LD A,BID_BIOS ; HBIOS BANK
CALL HBX_BNKSEL ; SELECT IT
LD SP,HB_STACK ; NOW USE FULL HBIOS STACK IN HBIOS BANK
CALL HB_DISPATCH ; CALL HBIOS FUNCTION DISPATCHER
LD SP,HBX_TMPSTK ; BORROW HBX_BUF FOR STACK IN HIGH MEMORY
LD SP,HBX_BUF_END ; BORROW HBX_BUF FOR TEMP STACK
PUSH AF ; SAVE AF (FUNCTION RETURN)
LD A,(HB_INVBNK) ; LOAD ORIGINAL BANK
@ -376,7 +382,6 @@ HBX_BNKSEL1:
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; Copy Data - Possibly between banks. This resembles CP/M 3, but
; usage of the HL and DE registers is reversed.
; Caller MUST ensure stack is already in high memory.
; Caller MUST preset HBX_SRCBNK and HBX_DSTBNK.
; Caller MUST disable ints if IM1 active
; Enter:
@ -390,7 +395,7 @@ HBX_BNKSEL1:
;
HBX_BNKCPY:
LD (HBX_BC_SP),SP ; PUT STACK
LD SP,HBX_BNKSTK ; TEMPORARY STACK IN HIGH MEMORY (NOT IN HBX_BUF)
LD SP,HBX_TMPSTK ; ... IN HI MEM
LD A,(HB_CURBNK) ; GET CURRENT BANK
PUSH AF ; AND SAVE TO RESTORE LATER
@ -471,7 +476,7 @@ HBX_TGTADR .EQU $ + 1
;
HBX_PEEK:
LD (HBX_PPSP),SP ; SAVE ORIGINAL STACK FRAME
LD SP,HBX_TMPSTK ; BORROW HBX_BUF FOR STACK IN HIGH MEMORY
LD SP,HBX_TMPSTK ; USE SMALL TEMP STACK FRAME IN HI MEM
LD A,(HB_CURBNK)
PUSH AF
LD A,D
@ -481,7 +486,7 @@ HBX_PEEK:
;
HBX_POKE:
LD (HBX_PPSP),SP ; SAVE ORIGINAL STACK FRAME
LD SP,HBX_TMPSTK ; BORROW HBX_BUF FOR STACK IN HIGH MEMORY
LD SP,HBX_TMPSTK ; USE SMALL TEMP STACK FRAME IN HI MEM
LD A,(HB_CURBNK)
PUSH AF
LD A,D
@ -498,12 +503,12 @@ HBX_PPSP .EQU $ - 2
; PRIVATE STACK AT END OF HBIOS CODE
; OCCUPIES SPACE BEFORE IVT
;
HBX_STKSIZ .EQU $FF00 - $
.ECHO "HBIOS PROXY STACK space: "
.ECHO HBX_STKSIZ
HBX_INTSTKSIZ .EQU $FF00 - $
.ECHO "HBIOS INT STACK space: "
.ECHO HBX_INTSTKSIZ
.ECHO " bytes.\n"
.FILL HBX_STKSIZ,$FF
HBX_STACK .EQU $
.FILL HBX_INTSTKSIZ,$FF
HBX_INTSTK .EQU $
;
#IF (INTMODE == 2)
;
@ -585,7 +590,7 @@ HBX_INT: ; COMMON INTERRUPT ROUTING CODE
EX (SP),HL ; SAVE HL AND GET INT JP TABLE OFFSET
LD (HBX_INT_SP),SP ; SAVE ORIGINAL STACK FRAME
LD SP,HBX_STACK ; USE STACK FRAME IN HI MEM
LD SP,HBX_INTSTK ; USE DEDICATED INT STACK FRAME IN HI MEM
; SAVE STATE (HL SAVED PREVIOUSLY ON ORIGINAL STACK FRAME)
PUSH AF ; SAVE AF
@ -620,25 +625,23 @@ HBX_INT_SP .EQU $ - 2
;
#ENDIF
;
; FILL TO START OF BOUNCE BUFFER
; SMALL TEMPORARY STACK FOR USE BY BNKCPY, PEEK, AND POKE
;
HBX_PROXYFILL .EQU (HBX_XFC - HBX_BUFSIZ - $)
.ECHO "HBIOS PROXY space remaining: "
.ECHO HBX_PROXYFILL
HBX_TMPSTKSIZ .EQU (HBX_XFC - HBX_BUFSIZ - $)
.ECHO "HBIOS TEMP STACK space: "
.ECHO HBX_TMPSTKSIZ
.ECHO " bytes.\n"
.FILL HBX_PROXYFILL,$FF
;
; TEMPORARY STACK FOR USE BY HBX_BNKCPY (NOT IN HBX_BUF)
.FILL HBX_TMPSTKSIZ,$CC
HBX_TMPSTK .EQU $
;
HBX_BNKSTK .EQU $
; INTERBANK COPY BOUNCE BUFFER (64 BYTES)
;
; INTERBANK COPY BUFFER (64 BYTES)
; N.B., THIS BUFFER IS ALSO USED AS A TEMPORARY STACK BY HBX_INVOKE.
; THEREFORE, THIS BUFFER *CANNOT* BE USED TO PASS DATA OUTSIDE OF
; HBIOS FUNCTION CALLS.
;
HBX_BUF .FILL HBX_BUFSIZ,0
;
; TEMPORARY STACK FOR USE BY INVOKE, PEEK, AND POKE
;
HBX_TMPSTK .EQU $
HBX_BUF_END .EQU $
;
; HBIOS PROXY MGMT BLOCK (TOP 32 BYTES)
;

Loading…
Cancel
Save