mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
UNA Catchup
UNA support was lacking some of the more recent behavior changes. This corrects most of it.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -737,6 +737,15 @@ GOBOOTDISK1:
|
||||
LD (BL_COUNT),A ; ... AND SAVE IT
|
||||
;
|
||||
#IF (BIOS == BIOS_UNA)
|
||||
;
|
||||
; START OS LOAD AT SECTOR 3
|
||||
LD C,$41 ; UNA FUNC: SET LBA
|
||||
LD A,(BL_BOOTID) ; GET BOOT DEVICE ID
|
||||
LD B,A ; MOVE TO B
|
||||
LD DE,0 ; HI WORD OF LBA IS ALWAYS ZERO
|
||||
LD HL,3 ; LOAD STARTING INFO SECTOR 2
|
||||
RST 08 ; SET LBA
|
||||
JP NZ,DB_ERR ; HANDLE ERROR
|
||||
;
|
||||
; READ OS IMAGE INTO MEMORY
|
||||
LD C,$42 ; UNA FUNC: READ SECTORS
|
||||
|
||||
Reference in New Issue
Block a user