|
|
|
@ -76,17 +76,6 @@ MEMTOP .EQU $10000 |
|
|
|
; |
|
|
|
#IFDEF PLTUNA |
|
|
|
#INCLUDE "../UBIOS/ubios.inc" |
|
|
|
; |
|
|
|
; EQUATES BELOW SHOULD BE REPLACED WITH RUNTIME CALLS TO UNA GET BIOS INFO FUNCS |
|
|
|
; |
|
|
|
RAMSIZE .EQU 512 |
|
|
|
; |
|
|
|
BID_RAM0 .EQU $8000 |
|
|
|
BID_RAMN .EQU (BID_RAM0 + ((RAMSIZE / 32) - 1)) |
|
|
|
; |
|
|
|
BID_RAMD0 .EQU BID_RAM0 ; FIRST RAM DRIVE BANK |
|
|
|
BID_BIOS .EQU BID_RAMN - 2 ; BIOS BANK |
|
|
|
BID_USR .EQU BID_RAMN - 1 ; USER BANK (CP/M TPA, ETC.) |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
.ORG CBIOS_LOC ; DEFINED IN STD.ASM |
|
|
|
@ -311,7 +300,6 @@ DPBCNT .EQU ($ - DPBMAP) / 2 |
|
|
|
BOOT: |
|
|
|
; STANDARD BOOT INVOCATION |
|
|
|
LD SP,STACK ; STACK FOR INITIALIZATION |
|
|
|
|
|
|
|
; |
|
|
|
; COPY INITIALIZATION CODE TO RUNNING LOCATION $8000 |
|
|
|
LD HL,BUFPOOL |
|
|
|
@ -362,7 +350,7 @@ WBOOT: |
|
|
|
#IFDEF PLTUNA |
|
|
|
; RESTORE COMMAND PROCESSOR FROM UNA BIOS CACHE |
|
|
|
LD BC,$01FB ; UNA FUNC = SET BANK |
|
|
|
LD DE,BID_BIOS ; UBIOS_PAGE (SEE PAGES.INC) |
|
|
|
LD DE,(BNKBIOS) ; UBIOS_PAGE (SEE PAGES.INC) |
|
|
|
RST 08 ; DO IT |
|
|
|
PUSH DE ; SAVE PREVIOUS BANK |
|
|
|
|
|
|
|
@ -1525,6 +1513,11 @@ BNKBIOS .DB 0 ; BIOS BANK ID |
|
|
|
BNKUSER .DB 0 ; USER BANK ID |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
#IFDEF PLTUNA |
|
|
|
BNKBIOS .DW 0 ; BIOS BANK ID |
|
|
|
BNKUSER .DW 0 ; USER BANK ID |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
; DOS DISK VARIABLES |
|
|
|
; |
|
|
|
DSKOP .DB 0 ; DISK OPERATION (DOP_READ/DOP_WRITE) |
|
|
|
@ -1833,14 +1826,24 @@ INIT: |
|
|
|
LD (CBIOS_LOC + 1),HL ; STORE IT IN FIRST ENTRY OF CBIOS JUMP TABLE |
|
|
|
|
|
|
|
#IFDEF PLTUNA |
|
|
|
; GET CRITICAL BANK ID'S |
|
|
|
LD BC,$03FA ; UNA FUNC = GET CUR EXEC ENV |
|
|
|
CALL $FFFD ; DE = CUR EXEC PAGE, HL = UBIOS PAGE |
|
|
|
LD (BNKBIOS),HL ; SAVE UBIOS PAGE |
|
|
|
LD BC,$05FA ; UNA FUNC = GET USER EXEC ENV |
|
|
|
CALL $FFFD ; DE = USER LOW PAGE, HL = USER HIGH PAGE (COMMMON) |
|
|
|
LD (BNKUSER),DE ; SAVE USER PAGE |
|
|
|
LD DE,$8000 ; RAM DRIVE STARTS AT FIRST RAM BANK |
|
|
|
LD (BNKRAMD),DE ; SAVE STARTING RAM DRIVE BANK |
|
|
|
|
|
|
|
; MAKE SURE UNA EXEC PAGE IS ACTIVE |
|
|
|
LD BC,$01FB ; UNA FUNC = SET BANK |
|
|
|
LD DE,BID_USR ; SWITCH BACK TO EXEC BANK |
|
|
|
LD DE,(BNKUSER) ; SWITCH BACK TO EXEC BANK |
|
|
|
CALL $FFFD ; DO IT (RST 08 NOT YET INSTALLED) |
|
|
|
|
|
|
|
; COPY BIOS PAGE ZERO TO USER BANK |
|
|
|
LD BC,$01FB ; UNA FUNC = SET BANK |
|
|
|
LD DE,BID_BIOS ; UBIOS_PAGE (SEE PAGES.INC) |
|
|
|
LD DE,(BNKBIOS) ; UBIOS_PAGE (SEE PAGES.INC) |
|
|
|
CALL $FFFD ; DO IT (RST 08 NOT YET INSTALLED) |
|
|
|
PUSH DE ; SAVE PREVIOUS BANK |
|
|
|
|
|
|
|
@ -1863,6 +1866,7 @@ INIT: |
|
|
|
LD (8),A ; STORE AT 0x0008 |
|
|
|
LD HL,($FFFE) ; UNA ENTRY VECTOR |
|
|
|
LD (9),HL ; STORE AT 0x0009 |
|
|
|
|
|
|
|
#ELSE |
|
|
|
; GET CRITICAL BANK ID'S |
|
|
|
LD B,BF_SYSGET ; HBIOS FUNC=GET SYS INFO |
|
|
|
@ -1911,7 +1915,7 @@ INIT: |
|
|
|
LD (CCPBUF),HL ; SAVE THE ADDRESS (IN BIOS MEM) |
|
|
|
|
|
|
|
LD BC,$01FB ; UNA FUNC = SET BANK |
|
|
|
LD DE,BID_BIOS ; UBIOS_PAGE (SEE PAGES.INC) |
|
|
|
LD DE,(BNKBIOS) ; UBIOS_PAGE (SEE PAGES.INC) |
|
|
|
RST 08 ; DO IT |
|
|
|
PUSH DE ; SAVE PREVIOUS BANK |
|
|
|
|
|
|
|
@ -2201,7 +2205,7 @@ MD_INIT4: |
|
|
|
#IF (CLRRAMDISK != CLR_NEVER) |
|
|
|
DI ; NO INTERRUPTS |
|
|
|
LD BC,$01FB ; UNA FUNC = SET BANK |
|
|
|
LD DE,BID_RAMD0 ; FIRST BANK OF RAM DISK |
|
|
|
LD DE,(BNKRAMD) ; FIRST BANK OF RAM DISK |
|
|
|
CALL $FFFD ; DO IT (RST 08 NOT SAFE HERE) |
|
|
|
|
|
|
|
#IF (CLRRAMDISK == CLR_AUTO) |
|
|
|
@ -2226,7 +2230,7 @@ CLRRAM1: |
|
|
|
CLRRAM2: |
|
|
|
#ENDIF |
|
|
|
LD BC,$01FB ; UNA FUNC = SET BANK |
|
|
|
LD DE,BID_USR ; SWITCH BACK TO EXEC BANK FOR WRITESTR |
|
|
|
LD DE,(BNKUSER) ; SWITCH BACK TO EXEC BANK FOR WRITESTR |
|
|
|
CALL $FFFD ; DO IT (RST 08 NOT SAFE HERE) |
|
|
|
|
|
|
|
CALL NEWLINE2 ; FORMATTING |
|
|
|
@ -2234,7 +2238,7 @@ CLRRAM2: |
|
|
|
CALL WRITESTR ; DISPLAY IT |
|
|
|
|
|
|
|
LD BC,$01FB ; UNA FUNC = SET BANK |
|
|
|
LD DE,BID_RAMD0 ; FIRST BANK OF RAM DISK |
|
|
|
LD DE,(BNKRAMD) ; FIRST BANK OF RAM DISK |
|
|
|
CALL $FFFD ; DO IT (RST 08 NOT SAFE HERE) |
|
|
|
|
|
|
|
LD HL,0 ; SOURCE ADR FOR FILL |
|
|
|
@ -2243,7 +2247,7 @@ CLRRAM2: |
|
|
|
CALL FILL ; DO IT |
|
|
|
CLRRAM3: |
|
|
|
LD BC,$01FB ; UNA FUNC = SET BANK |
|
|
|
LD DE,BID_USR ; SWITCH BACK TO EXEC BANK |
|
|
|
LD DE,(BNKUSER) ; SWITCH BACK TO EXEC BANK |
|
|
|
CALL $FFFD ; DO IT (RST 08 NOT SAFE HERE) |
|
|
|
EI ; RESUME INTERRUPTS |
|
|
|
|
|
|
|
@ -2306,9 +2310,6 @@ CLRRAM3: |
|
|
|
#IFDEF PLTUNA |
|
|
|
; |
|
|
|
DRV_INIT: |
|
|
|
; INIT DEFAULT DRIVE TO A: FOR NOW |
|
|
|
XOR A ; ZERO |
|
|
|
LD (DEFDRIVE),A ; STORE IT |
|
|
|
; |
|
|
|
; PERFORM UBIOS SPECIFIC INITIALIZATION |
|
|
|
; BUILD DRVMAP BASED ON AVAILABLE UBIOS DISK DEVICE LIST |
|
|
|
@ -2319,6 +2320,14 @@ DRV_INIT: |
|
|
|
LD D,L ; SAVE L AS UNIT |
|
|
|
LD E,0 ; SLICE IS ZERO |
|
|
|
LD (BOOTVOL),DE ; D -> UNIT, E -> SLICE |
|
|
|
; |
|
|
|
; INIT DEFAULT |
|
|
|
LD A,D ; BOOT UNIT? |
|
|
|
CP 1 ; IF ROM BOOT, DEF DRIVE SHOULD BE B: |
|
|
|
JR Z,DRV_INIT1 ; ... SO LEAVE AS IS AND SKIP AHEAD |
|
|
|
XOR A ; ELSE FORCE TO DRIVE A: |
|
|
|
DRV_INIT1: |
|
|
|
LD (DEFDRIVE),A ; STORE IT |
|
|
|
; |
|
|
|
; SETUP THE DRVMAP STRUCTURE |
|
|
|
LD HL,(HEAPTOP) ; GET CURRENT HEAP TOP |
|
|
|
@ -2366,6 +2375,14 @@ DRV_INIT5: |
|
|
|
LD A,E ; SLICES PER VOLUME VALUE TO ACCUM |
|
|
|
LD (HDSPV),A ; SAVE IT |
|
|
|
; |
|
|
|
LD DE,(BOOTVOL) ; BOOT VOLUME (UNIT, SLICE) |
|
|
|
LD A,1 ; ROM DISK UNIT? |
|
|
|
CP D ; CHECK IT |
|
|
|
JR Z,DRV_INIT5A ; IF SO, SKIP BOOT DRIVE |
|
|
|
LD B,1 ; JUST ONE SLICE PLEASE |
|
|
|
CALL DRV_INIT8A ; DO THE BOOT DEVICE |
|
|
|
; |
|
|
|
DRV_INIT5A: |
|
|
|
; SETUP TO ENUMERATE DEVICES TO BUILD DRVMAP |
|
|
|
LD B,0 ; START WITH UNIT 0 |
|
|
|
; |
|
|
|
@ -2394,7 +2411,21 @@ DRV_INIT7: ; PROCESS CURRENT UNIT (SEE UNA PROTOIDS.INC) |
|
|
|
LD A,(HDSPV) ; GET SLICES PER VOLUME TO ACCUM |
|
|
|
LD B,A ; MOVE TO B FOR LOOP COUNTER |
|
|
|
; |
|
|
|
DRV_INIT8: ; SLICE CREATION LOOP |
|
|
|
DRV_INIT8: |
|
|
|
; SLICE CREATION LOOP |
|
|
|
; DE=UNIT/SLICE, B=SLICE CNT |
|
|
|
LD A,(BOOTVOL + 1) ; GET BOOT UNIT |
|
|
|
CP 1 ; ROM BOOT? |
|
|
|
JR Z,DRV_INIT8A ; IF SO, OK TO CONTINUE |
|
|
|
CP D ; COMPARE TO CUR UNIT |
|
|
|
JR NZ,DRV_INIT8A ; IF NE, OK TO CONTINUE |
|
|
|
LD A,(BOOTVOL) ; GET BOOT SLICE |
|
|
|
CP E ; COMPARE TO CUR SLICE |
|
|
|
JR NZ,DRV_INIT8A ; IF NE, OK TO CONTINUE |
|
|
|
INC E ; IS BOOT DU/SLICE, SKIP IT |
|
|
|
JR DRV_INIT8 ; AND RESTART LOOP |
|
|
|
; |
|
|
|
DRV_INIT8A: ; ENTRY POINT TO SKIP BOOT DISK/LU CHECK |
|
|
|
; |
|
|
|
; INC DRVMAP ENTRY COUNT AND CHECK FOR 16 ENTRY MAXIMUM |
|
|
|
LD HL,(DRVMAPADR) ; POINT TO DRIVE MAP |
|
|
|
@ -2546,7 +2577,7 @@ DRV_INIT5: |
|
|
|
; LD B,E ; COUNT TO B |
|
|
|
; LD C,0 ; USE C AS DEVICE LIST INDEX |
|
|
|
; |
|
|
|
LD DE,(HCB + HCB_BOOTVOL) ; BOOT VOLUME (UNIT, SLICE) |
|
|
|
LD DE,(BOOTVOL) ; BOOT VOLUME (UNIT, SLICE) |
|
|
|
LD A,1 ; ROM DISK UNIT? |
|
|
|
CP D ; CHECK IT |
|
|
|
JR Z,DRV_INIT5A ; IF SO, SKIP BOOT DRIVE |
|
|
|
@ -3001,11 +3032,17 @@ DPHTOP .DW 0 ; CURRENT TOP OF DPH POOL |
|
|
|
DIRBUF .DW 0 ; DIR BUF POINTER |
|
|
|
HEAPTOP .DW BUFPOOL ; CURRENT TOP OF HEAP |
|
|
|
BOOTVOL .DW 0 ; BOOT VOLUME, MSB=BOOT UNIT, LSB=BOOT SLICE |
|
|
|
BNKRAMD .DB 0 ; STARTING BANK ID FOR RAM DRIVE |
|
|
|
HDSPV .DB 2 ; SLICES PER VOLUME FOR HARD DISKS (MUST BE >= 1) |
|
|
|
DRVLST .FILL 32 ; ACTIVE DRIVE LIST USED DURINT DRV_INIT |
|
|
|
DRVLSTC .DB 0 ; ENTRY COUNT FOR ACTIVE DRIVE LIST |
|
|
|
; |
|
|
|
#IFDEF PLTWBW |
|
|
|
BNKRAMD .DB 0 ; STARTING BANK ID FOR RAM DRIVE (WBW) |
|
|
|
#ENDIF |
|
|
|
#IFDEF PLTUNA |
|
|
|
BNKRAMD .DW 0 ; STARTING BANK ID FOR RAM DRIVE (UNA) |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
CMD .DB CMDLEN - 2 |
|
|
|
.TEXT "SUBMIT PROFILE" |
|
|
|
.DB 0 |
|
|
|
|