|
|
|
@ -302,6 +302,13 @@ BOOT: |
|
|
|
; STANDARD BOOT INVOCATION |
|
|
|
;LD SP,STACK ; STACK FOR INITIALIZATION |
|
|
|
LD SP,CCP_LOC ; PUT STACK JUST BELOW CCP |
|
|
|
; |
|
|
|
#IF DEBUG |
|
|
|
CALL PRTSTRD |
|
|
|
.DB "\r\nCBIOS Starting...$" |
|
|
|
CALL PRTSTRD |
|
|
|
.DB "\r\nCopying INIT code to 0x8000...$" |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
; COPY INITIALIZATION CODE TO RUNNING LOCATION $8000 |
|
|
|
LD HL,BUFPOOL |
|
|
|
@ -311,6 +318,11 @@ BOOT: |
|
|
|
PUSH HL ; SAVE START ADR AGAIN FOR BELOW |
|
|
|
PUSH BC ; SAVE LENGTH FOR BELOW |
|
|
|
LDIR ; COPY THE CODE |
|
|
|
; |
|
|
|
#IF DEBUG |
|
|
|
CALL PRTSTRD |
|
|
|
.DB "\r\nClearing disk buffer...$" |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
; CLEAR BUFFER |
|
|
|
POP BC ; RECOVER LENGTH |
|
|
|
@ -320,10 +332,30 @@ BOOT: |
|
|
|
INC DE ; OFFSET DEST |
|
|
|
DEC BC ; REDUCE LEN BY ONE |
|
|
|
LDIR ; USE LDIR TO FILL |
|
|
|
; |
|
|
|
#IF DEBUG |
|
|
|
CALL PRTSTRD |
|
|
|
.DB "\r\nStarting INIT routine at 0x8000$" |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
CALL INIT ; PERFORM COLD BOOD ROUTINE |
|
|
|
; |
|
|
|
#IF DEBUG |
|
|
|
CALL PRTSTRD |
|
|
|
.DB "\r\nResetting CP/M...$" |
|
|
|
#ENDIF |
|
|
|
CALL RESCPM ; RESET CPM |
|
|
|
; |
|
|
|
#IF DEBUG |
|
|
|
CALL PRTSTRD |
|
|
|
.DB "\r\nPerforming Auto Submit...$" |
|
|
|
#ENDIF |
|
|
|
CALL AUTOSUB ; PREP AUTO SUBMIT, IF APPROPRIATE |
|
|
|
; |
|
|
|
#IF DEBUG |
|
|
|
CALL PRTSTRD |
|
|
|
.DB "\r\nLaunching CP/M...$" |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
JR GOCPM ; THEN OFF TO CP/M WE GO... |
|
|
|
; |
|
|
|
@ -444,6 +476,12 @@ GOCPM: |
|
|
|
CURDSK: |
|
|
|
LD A,(CDISK) ; GET CURRENT USER/DISK |
|
|
|
GOCCP: |
|
|
|
; |
|
|
|
#IF DEBUG |
|
|
|
CALL PRTSTRD |
|
|
|
.DB "\r\nTransfer to CCP...$" |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
LD C,A ; SETUP C WITH CURRENT USER/DISK, ASSUME IT IS OK |
|
|
|
JP CCP_LOC ; JUMP TO COMMAND PROCESSOR |
|
|
|
; |
|
|
|
@ -2011,6 +2049,12 @@ BUFPOOL .EQU $ ; START OF BUFFER POOL |
|
|
|
HEAPEND .EQU CBIOS_END - 64 ; TOP OF HEAP MEM, END OF CBIOS LESS 32 ENTRY STACK |
|
|
|
; |
|
|
|
INIT: |
|
|
|
; |
|
|
|
#IF DEBUG |
|
|
|
CALL PRTSTRD |
|
|
|
.DB "\r\nStarting INIT....$" |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
DI ; NO INTERRUPTS FOR NOW |
|
|
|
|
|
|
|
; ADJUST BOOT VECTOR TO REBOOT ROUTINE |
|
|
|
@ -2068,12 +2112,21 @@ INIT: |
|
|
|
LD (BNKBIOS),A ; ... AND SAVE IT |
|
|
|
LD A,E ; GET USER BANK RETURNED IN E |
|
|
|
LD (BNKUSER),A ; ... AND SAVE IT |
|
|
|
|
|
|
|
; |
|
|
|
#IF DEBUG |
|
|
|
CALL PRTSTRD |
|
|
|
.DB "\r\nReseting HBIOS....$" |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
; SOFT RESET HBIOS |
|
|
|
LD B,BF_SYSRESET ; HB FUNC: RESET |
|
|
|
LD C,BF_SYSRES_INT ; WARM START |
|
|
|
RST 08 ; DO IT |
|
|
|
|
|
|
|
; |
|
|
|
#IF DEBUG |
|
|
|
CALL PRTSTRD |
|
|
|
.DB "\r\nCopying HCB....$" |
|
|
|
#ENDIF |
|
|
|
; CREATE A TEMP COPY OF THE HBIOS CONFIG BLOCK (HCB) |
|
|
|
; FOR REFERENCE USE DURING INIT |
|
|
|
LD B,BF_SYSSETCPY ; HBIOS FUNC: SETUP BANK COPY |
|
|
|
|