mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
Finalize ROM-Less Booting
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
CLRRAMDISK .EQU CLR_AUTO ; CLR_ALWAYS, CLR_NEVER, CLR_AUTO (CLEAR IF INVALID DIR AREA)
|
||||
WRTCACHE .EQU TRUE ; ENABLE WRITE CACHING IN CBIOS (DE)BLOCKING ALGORITHM
|
||||
DSKTRACE .EQU FALSE ; ENABLE TRACING OF CBIOS DISK FUNCTION CALLS
|
||||
DEBUG .EQU FALSE ; MISCELLANEOUS DEBUG TRACING
|
||||
;
|
||||
CPM_LOC .EQU $D000 ; LOCATION OF START OF CCP
|
||||
;
|
||||
|
||||
@@ -105,14 +105,61 @@ WRITESTR2:
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
#IF DEBUG
|
||||
;
|
||||
; PRINT A STRING AT ADDRESS SPECIFIED IN HL
|
||||
; STRING MUST BE TERMINATED BY '$'
|
||||
; USAGE:
|
||||
; LD HL,MYSTR
|
||||
; CALL PRTSTR
|
||||
; ...
|
||||
; MYSTR: .DB "HELLO$"
|
||||
;
|
||||
TSTPT:
|
||||
PUSH DE
|
||||
LD DE,STR_TSTPT
|
||||
CALL WRITESTR
|
||||
POP DE
|
||||
JR REGDMP ; DUMP REGISTERS AND RETURN
|
||||
PRTSTR:
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
CP '$'
|
||||
RET Z
|
||||
CALL COUT
|
||||
JR PRTSTR
|
||||
;
|
||||
; PRINT A STRING DIRECT: REFERENCED BY POINTER AT TOP OF STACK
|
||||
; STRING MUST BE TERMINATED BY '$'
|
||||
; USAGE:
|
||||
; CALL PRTSTRD
|
||||
; .DB "HELLO$"
|
||||
; ...
|
||||
;
|
||||
PRTSTRD:
|
||||
EX (SP),HL
|
||||
PUSH AF
|
||||
CALL PRTSTR
|
||||
POP AF
|
||||
EX (SP),HL
|
||||
RET
|
||||
;
|
||||
; PRINT A STRING INDIRECT: REFERENCED BY INDIRECT POINTER AT TOP OF STACK
|
||||
; STRING MUST BE TERMINATED BY '$'
|
||||
; USAGE:
|
||||
; CALL PRTSTRI(MYSTRING)
|
||||
; MYSTRING .DB "HELLO$"
|
||||
;
|
||||
PRTSTRI:
|
||||
EX (SP),HL
|
||||
PUSH AF
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
PUSH HL
|
||||
LD H,(HL)
|
||||
LD L,A
|
||||
CALL PRTSTR
|
||||
POP HL
|
||||
INC HL
|
||||
POP AF
|
||||
EX (SP),HL
|
||||
RET
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
; PANIC: TRY TO DUMP MACHINE STATE
|
||||
;
|
||||
|
||||
Reference in New Issue
Block a user