|
|
|
@ -63,7 +63,7 @@ |
|
|
|
; - [xio|mio].asm |
|
|
|
; - dsky.asm |
|
|
|
; - unlzsa2s.asm |
|
|
|
; |
|
|
|
; |
|
|
|
; |
|
|
|
; INCLUDE GENERIC STUFF |
|
|
|
; |
|
|
|
@ -268,16 +268,14 @@ HBX_INVOKE: |
|
|
|
LD A,(HB_CURBNK) ; GET CURRENT BANK |
|
|
|
LD (HB_INVBNK),A ; SAVE INVOCATION BANK |
|
|
|
|
|
|
|
;LD SP,HBX_TMPSTK ; USE SMALL TEMP STACK FRAME IN HI MEM FOR BANK SWITCH |
|
|
|
LD SP,HBX_BUF_END ; BORROW HBX_BUF FOR TEMP STACK |
|
|
|
LD SP,HBX_TMPSTK ; BORROW HBX_BUF FOR STACK IN HIGH MEMORY |
|
|
|
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 ; USE SMALL TEMP STACK FRAME IN HI MEM FOR BANK SWITCH |
|
|
|
LD SP,HBX_BUF_END ; BORROW HBX_BUF FOR TEMP STACK |
|
|
|
LD SP,HBX_TMPSTK ; BORROW HBX_BUF FOR STACK IN HIGH MEMORY |
|
|
|
PUSH AF ; SAVE AF (FUNCTION RETURN) |
|
|
|
|
|
|
|
LD A,(HB_INVBNK) ; LOAD ORIGINAL BANK |
|
|
|
@ -392,7 +390,7 @@ HBX_BNKSEL1: |
|
|
|
; |
|
|
|
HBX_BNKCPY: |
|
|
|
LD (HBX_BC_SP),SP ; PUT STACK |
|
|
|
LD SP,HBX_TMPSTK ; ... IN HI MEM |
|
|
|
LD SP,HBX_BNKSTK ; TEMPORARY STACK IN HIGH MEMORY (NOT IN HBX_BUF) |
|
|
|
|
|
|
|
LD A,(HB_CURBNK) ; GET CURRENT BANK |
|
|
|
PUSH AF ; AND SAVE TO RESTORE LATER |
|
|
|
@ -473,7 +471,7 @@ HBX_TGTADR .EQU $ + 1 |
|
|
|
; |
|
|
|
HBX_PEEK: |
|
|
|
LD (HBX_PPSP),SP ; SAVE ORIGINAL STACK FRAME |
|
|
|
LD SP,HBX_TMPSTK ; USE SMALL TEMP STACK FRAME IN HI MEM |
|
|
|
LD SP,HBX_TMPSTK ; BORROW HBX_BUF FOR STACK IN HIGH MEMORY |
|
|
|
LD A,(HB_CURBNK) |
|
|
|
PUSH AF |
|
|
|
LD A,D |
|
|
|
@ -483,7 +481,7 @@ HBX_PEEK: |
|
|
|
; |
|
|
|
HBX_POKE: |
|
|
|
LD (HBX_PPSP),SP ; SAVE ORIGINAL STACK FRAME |
|
|
|
LD SP,HBX_TMPSTK ; USE SMALL TEMP STACK FRAME IN HI MEM |
|
|
|
LD SP,HBX_TMPSTK ; BORROW HBX_BUF FOR STACK IN HIGH MEMORY |
|
|
|
LD A,(HB_CURBNK) |
|
|
|
PUSH AF |
|
|
|
LD A,D |
|
|
|
@ -497,11 +495,6 @@ HBX_PPRET: |
|
|
|
HBX_PPSP .EQU $ - 2 |
|
|
|
RET |
|
|
|
; |
|
|
|
; SMALL TEMPORARY STACK FOR USE BY INVOKE, PEEK, AND POKE |
|
|
|
; |
|
|
|
.FILL 20,$CC ; 10 LEVEL STACK |
|
|
|
HBX_TMPSTK .EQU $ |
|
|
|
; |
|
|
|
; PRIVATE STACK AT END OF HBIOS CODE |
|
|
|
; OCCUPIES SPACE BEFORE IVT |
|
|
|
; |
|
|
|
@ -517,9 +510,9 @@ HBX_STACK .EQU $ |
|
|
|
; HBIOS INTERRUPT SLOT ASSIGNMENTS |
|
|
|
; |
|
|
|
; # Z80 Z180 |
|
|
|
; --- -------------- -------------- |
|
|
|
; --- -------------- -------------- |
|
|
|
; 0 CTC0A INT1 -+ |
|
|
|
; 1 CTC0B INT2 | |
|
|
|
; 1 CTC0B INT2 | |
|
|
|
; 2 CTC0C TIM0 | |
|
|
|
; 3 CTC0D TIM1 | |
|
|
|
; 4 DMA0 +- Z180 INTERNAL |
|
|
|
@ -605,7 +598,7 @@ HBX_INT: ; COMMON INTERRUPT ROUTING CODE |
|
|
|
|
|
|
|
LD L,(HL) ; OFFSET INTO JP TABLE FOR THIS INT |
|
|
|
LD H,HB_IVT >> 8 ; MSB OF HBIOS INT JP TABLE |
|
|
|
|
|
|
|
|
|
|
|
CALL JPHL ; CALL HANDLER VIA INT JP TABLE |
|
|
|
|
|
|
|
LD A,(HB_CURBNK) ; GET PRE-INT BANK |
|
|
|
@ -629,16 +622,23 @@ HBX_INT_SP .EQU $ - 2 |
|
|
|
; |
|
|
|
; FILL TO START OF BOUNCE BUFFER |
|
|
|
; |
|
|
|
HBX_INTFILL .EQU (HBX_XFC - HBX_BUFSIZ - $) |
|
|
|
.ECHO "HBIOS INT space remaining: " |
|
|
|
.ECHO HBX_INTFILL |
|
|
|
HBX_PROXYFILL .EQU (HBX_XFC - HBX_BUFSIZ - $) |
|
|
|
.ECHO "HBIOS PROXY space remaining: " |
|
|
|
.ECHO HBX_PROXYFILL |
|
|
|
.ECHO " bytes.\n" |
|
|
|
.FILL HBX_INTFILL,$FF |
|
|
|
.FILL HBX_PROXYFILL,$FF |
|
|
|
; |
|
|
|
; TEMPORARY STACK FOR USE BY HBX_BNKCPY (NOT IN HBX_BUF) |
|
|
|
; |
|
|
|
HBX_BNKSTK .EQU $ |
|
|
|
; |
|
|
|
; INTERBANK COPY BUFFER (64 BYTES) |
|
|
|
; |
|
|
|
HBX_BUF .FILL HBX_BUFSIZ,0 |
|
|
|
HBX_BUF_END .EQU $ |
|
|
|
; |
|
|
|
; TEMPORARY STACK FOR USE BY INVOKE, PEEK, AND POKE |
|
|
|
; |
|
|
|
HBX_TMPSTK .EQU $ |
|
|
|
; |
|
|
|
; HBIOS PROXY MGMT BLOCK (TOP 32 BYTES) |
|
|
|
; |
|
|
|
@ -931,7 +931,7 @@ HB_START1: ; BNKCALL ARRIVES HERE, BUT NOW RUNNING IN RAM BANK |
|
|
|
#IF (BT_REC_TYPE == BT_REC_SBC01) |
|
|
|
LD A,%00100000 ; DISABLE RTC AND |
|
|
|
OUT (RTCIO),A ; DRQ DRIVER READ |
|
|
|
IN A,(RTCIO) ; BIT 0 (DRQ). |
|
|
|
IN A,(RTCIO) ; BIT 0 (DRQ). |
|
|
|
CPL ; PULLED HIGH |
|
|
|
AND 1 ; IS RECOVERY MODE |
|
|
|
LD (HB_BOOT_REC),A ; SAVE FOR LATER |
|
|
|
@ -939,16 +939,16 @@ HB_START1: ; BNKCALL ARRIVES HERE, BUT NOW RUNNING IN RAM BANK |
|
|
|
#IF (BT_REC_TYPE == BT_REC_SBC1B) |
|
|
|
IN A,(RTCIO) ; RTC PORT, BIT 6 HAS THE |
|
|
|
BIT 6,A ; STATE OF CONFIG JUMPER |
|
|
|
LD A,1 ; JUMPER INSTALLED |
|
|
|
LD A,1 ; JUMPER INSTALLED |
|
|
|
JR Z,SAVE_REC_M ; IS RECOVERY MODE |
|
|
|
LD A,0 |
|
|
|
SAVE_REC_M: |
|
|
|
LD (HB_BOOT_REC),A ; SAVE FOR LATER |
|
|
|
#ENDIF |
|
|
|
#IF (BT_REC_TYPE == BT_REC_SBCRI) |
|
|
|
IN A,($68 + 6) ; UART_MSR MODEM |
|
|
|
IN A,($68 + 6) ; UART_MSR MODEM |
|
|
|
BIT 6,A ; STATUS REGISTER |
|
|
|
LD A,0 ; BIT 6 |
|
|
|
LD A,0 ; BIT 6 |
|
|
|
JR Z,SAVE_REC_M ; IS RECOVERY MODE |
|
|
|
LD A,1 |
|
|
|
SAVE_REC_M: |
|
|
|
@ -1113,7 +1113,7 @@ HB_CPU2: |
|
|
|
; |
|
|
|
#IF (HTIMENABLE) ; SIMH TIMER |
|
|
|
; |
|
|
|
#IF (INTMODE == 1) |
|
|
|
#IF (INTMODE == 1) |
|
|
|
LD HL,HB_TIMINT |
|
|
|
CALL HB_ADDIM1 ; ADD TO IM1 CALL LIST |
|
|
|
#ENDIF |
|
|
|
@ -1125,7 +1125,7 @@ HB_CPU2: |
|
|
|
#IF (KIOENABLE) |
|
|
|
LD A,%11111001 ; RESET ALL DEVICES, SET DAISYCHAIN |
|
|
|
OUT (KIOBASE+$0E),A ; DO IT |
|
|
|
#ENDIF |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
#IF (CTCENABLE) |
|
|
|
CALL CTC_PREINIT |
|
|
|
@ -1187,7 +1187,7 @@ HB_CPU2: |
|
|
|
LD DE,(HB_PCINITTBL) ; EXECUTE FIRST ; DE IS VALUE OF TOP ENTRY |
|
|
|
LD HL,HB_PCINITTBL ; HL IS ADDRESS OF TOP OF TABLE |
|
|
|
PUSH HL ; PUSH (1) TOP OF TABLE |
|
|
|
PUSH DE ; PUSH (2) VALUE OF TOP ENTRY |
|
|
|
PUSH DE ; PUSH (2) VALUE OF TOP ENTRY |
|
|
|
PUSH HL ; PUSH (3) TOP OF TABLE |
|
|
|
CALL ADDHLA ; HL IS ADDRESS OF DESIRED CONSOLE ENTRY |
|
|
|
POP DE ; PLACE IT AT THE TOP OF THE ; POP (3) DE IS TOP OF TABLE |
|
|
|
@ -1391,7 +1391,7 @@ HB_SPDTST: |
|
|
|
JR Z,NOT_REC_M1 ; INITIALIZATION TABLE |
|
|
|
LD B,HB_INITRLEN |
|
|
|
LD DE,HB_INIT_REC |
|
|
|
JR IS_REC_M1 |
|
|
|
JR IS_REC_M1 |
|
|
|
#ENDIF |
|
|
|
|
|
|
|
NOT_REC_M1: |
|
|
|
@ -1834,7 +1834,7 @@ DIO_TBL .FILL DIO_SIZ,0 ; SPACE FOR ENTRIES |
|
|
|
; HL=BUF ADR |
|
|
|
; E=SEC COUNT |
|
|
|
; D=BUF BANK ID |
|
|
|
; |
|
|
|
; |
|
|
|
HB_DSKREAD: |
|
|
|
; |
|
|
|
; THE ACTUAL SECTOR READ FUNCTION ADDRESS IS ON TOS, SAVE IT |
|
|
|
@ -1922,7 +1922,7 @@ HB_DSKREADX: |
|
|
|
; HL=BUF ADR |
|
|
|
; E=SEC COUNT |
|
|
|
; D=BUF BANK ID |
|
|
|
; |
|
|
|
; |
|
|
|
HB_DSKWRITE: |
|
|
|
; |
|
|
|
; THE ACTUAL SECTOR READ FUNCTION ADDRESS IS ON TOS, SAVE IT |
|
|
|
@ -2680,7 +2680,7 @@ HB_BADINTCNT .DB 0 |
|
|
|
RRCA |
|
|
|
CALL PRTHEXBYTE |
|
|
|
PRTS("H: $") |
|
|
|
|
|
|
|
|
|
|
|
CALL XREGDMP |
|
|
|
;CALL CONTINUE |
|
|
|
OR $FF ; SIGNAL INTERRUPT HANDLED |
|
|
|
@ -2953,8 +2953,8 @@ ORG_FONTS .EQU $ |
|
|
|
FONT8X8: |
|
|
|
#IF USELZSA2 |
|
|
|
#INCLUDE "font8x8c.asm" |
|
|
|
#ELSE |
|
|
|
#INCLUDE "font8x8u.asm" |
|
|
|
#ELSE |
|
|
|
#INCLUDE "font8x8u.asm" |
|
|
|
#ENDIF |
|
|
|
.ECHO " 8X8" |
|
|
|
#ENDIF |
|
|
|
@ -2963,8 +2963,8 @@ FONT8X8: |
|
|
|
FONT8X11: |
|
|
|
#IF USELZSA2 |
|
|
|
#INCLUDE "font8x11c.asm" |
|
|
|
#ELSE |
|
|
|
#INCLUDE "font8x11u.asm" |
|
|
|
#ELSE |
|
|
|
#INCLUDE "font8x11u.asm" |
|
|
|
#ENDIF |
|
|
|
.ECHO " 8X11" |
|
|
|
#ENDIF |
|
|
|
@ -2973,8 +2973,8 @@ FONT8X11: |
|
|
|
FONT8X16: |
|
|
|
#IF USELZSA2 |
|
|
|
#INCLUDE "font8x16c.asm" |
|
|
|
#ELSE |
|
|
|
#INCLUDE "font8x16u.asm" |
|
|
|
#ELSE |
|
|
|
#INCLUDE "font8x16u.asm" |
|
|
|
#ENDIF |
|
|
|
.ECHO " 8X16" |
|
|
|
#ENDIF |
|
|
|
@ -3855,7 +3855,7 @@ COUT: |
|
|
|
JR COUT2 ; CONTINUE |
|
|
|
; |
|
|
|
COUT1: |
|
|
|
; |
|
|
|
; |
|
|
|
#IF (WBWDEBUG == USEXIO) |
|
|
|
LD A,E ; GET OUTPUT CHAR BACK TO ACCUM |
|
|
|
CALL XIO_OUTC ; OUTPUT VIA XIO |
|
|
|
|