diff --git a/Source/CBIOS/cbios.asm b/Source/CBIOS/cbios.asm index 43a7d4c8..695c823d 100644 --- a/Source/CBIOS/cbios.asm +++ b/Source/CBIOS/cbios.asm @@ -2174,23 +2174,42 @@ INIT2: #IFDEF PLTWBW ; ; IF WE HAVE MULTIPLE DRIVES AND THE FIRST DRIVE IS RAM DRIVE + ; AND THE SECOND DRIVE IS ROM DRIVE OR FLASH DRIVE ; THEN MAKE OUR DEFAULT STARTUP DRIVE THE SECOND DRIVE (B:) +; + ; CHECK FOR 2+ DRIVES LD HL,(DRVMAPADR) ; POINT TO DRIVE MAP DEC HL ; BUMP BACK TO DRIVE COUNT LD A,(HL) ; GET IT CP 2 ; COMPARE TO 2 JR C,INIT2X ; IF LESS THAN 2, THEN DONE ; + ; CHECK IF FIRST UNIT IS RAM LD B,BF_DIODEVICE ; HBIOS FUNC: REPORT DEVICE INFO - INC HL ; POINT TO UNIT FIELD - LD C,(HL) ; ... OF FIRST DRIVE + INC HL ; POINT TO UNIT FIELD OF FIRST DRIVE + LD C,(HL) ; PUT UNIT NUM IN C RST 08 ; CALL HBIOS - LD A,D ; DEVICE TYPE TO A - CP DIODEV_MD ; MEMORY DISK DEVICE? - JR NZ,INIT2X ; IF NOT, THEN DONE LD A,C ; GET ATTRIBUTES + AND %00111000 ; ISOLATE TYPE BITS CP %00101000 ; TYPE = RAM? JR NZ,INIT2X ; IF NOT THEN DONE +; + ; CHECK IF SECOND UNIT IS ROM OR FLASH + LD B,BF_DIODEVICE ; HBIOS FUNC: REPORT DEVICE INFO + LD HL,(DRVMAPADR) ; POINT TO DRIVE MAP + LD A,4 ; 4 BYTES PER ENTRY + CALL ADDHLA ; POINT TO UNIT FIELD OF SECOND DRIVE + LD C,(HL) ; PUT UNIT NUM IN C + RST 08 ; CALL HBIOS + LD A,C ; GET ATTRIBUTES + AND %00111000 ; ISOLATE TYPE BITS + CP %00100000 ; TYPE = ROM? + JR Z,INIT2A ; IF SO, ADJUST DEF DRIVE + CP %00111000 ; TYPE = FLASH? + JR NZ,INIT2X ; IF NOT THEN DONE +; +INIT2A: + ; CRITERIA MET, ADJUST DEF DRIVE TO B: LD A,1 ; USE SECOND DRIVE AS DEFAULT LD (DEFDRIVE),A ; RECORD DEFAULT DRIVE ; @@ -2712,14 +2731,6 @@ DRV_INIT: ; GET BOOT UNIT/SLICE INFO LD DE,(HCB + HCB_BOOTVOL) ; BOOT VOLUME (UNIT, SLICE) 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 @@ -2808,11 +2819,8 @@ 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 + CALL DRV_INIT8A ; DO THE BOOT UNIT & SLICE FIRST ; DRV_INIT5A: LD A,(DRVLSTC) ; ACTIVE DRIVE LIST COUNT TO ACCUM @@ -2848,9 +2856,10 @@ DRV_INIT7: ; PROCESS UNIT DRV_INIT8: ; SLICE CREATION LOOP ; DE=UNIT/SLICE, B=SLICE CNT +; + ; FIRST, CHECK TO SEE IF THIS IS THE BOOT VOL & SLICE. + ; IF SO, IT HAS ALREADY BEEN PROCESSED ABOVE, SO SKIP IT HERE. 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 diff --git a/Source/HBIOS/md.asm b/Source/HBIOS/md.asm index b6c2d8eb..8ef62440 100644 --- a/Source/HBIOS/md.asm +++ b/Source/HBIOS/md.asm @@ -33,8 +33,8 @@ MD_FVAR .EQU 1 ; FLASH VERIFY AFTER WRITE ; MD_CFGTBL: #IF (MDRAM) - ; DEVICE 1 (RAM) - .DB 1 ; DRIVER DEVICE NUMBER + ; DEVICE 0 (RAM) + .DB 0 ; DEVICE NUMBER .DB 0 ; DEVICE STATUS .DW 0,0 ; CURRENT LBA .DB MID_MDRAM ; DEVICE MEDIA ID @@ -42,8 +42,8 @@ MD_CFGTBL: #ENDIF ; #IF (MDROM) - ; DEVICE 0 (ROM) - .DB 0 ; DEVICE NUMBER + ; DEVICE 1 (ROM) + .DB 1 ; DEVICE NUMBER .DB 0 ; DEVICE STATUS .DW 0,0 ; CURRENT LBA .DB MID_MDROM ; DEVICE MEDIA ID @@ -158,7 +158,7 @@ MD_RESET: ; ; ; -MD_CAP: ; ASSUMES THAT UNIT 1 IS RAM, UNIT 0 IS ROM +MD_CAP: ; ASSUMES THAT UNIT 0 IS RAM, UNIT 1 IS ROM LD A,(IY+MD_DEV) ; GET DEVICE NUMBER OR A ; SET FLAGS JR Z,MD_CAP0 ; UNIT 0 @@ -169,11 +169,11 @@ MD_CAP: ; ASSUMES THAT UNIT 1 IS RAM, UNIT 0 IS ROM OR A RET MD_CAP0: - LD A,(HCB + HCB_ROMBANKS) ; POINT TO ROM BANK COUNT + LD A,(HCB + HCB_RAMBANKS) ; POINT TO RAM BANK COUNT LD B,4 ; SET # RESERVED ROM BANKS JR MD_CAP2 MD_CAP1: - LD A,(HCB + HCB_RAMBANKS) ; POINT TO RAM BANK COUNT + LD A,(HCB + HCB_ROMBANKS) ; POINT TO ROM BANK COUNT LD B,8 ; SET # RESERVED RAM BANKS MD_CAP2: SUB B ; SUBTRACT OUT RESERVED BANKS @@ -619,12 +619,12 @@ MD_IOSETUP: POP AF ; GET BANK AND FLAGS BACK JR Z,MD_IOSETUP2 ; DO ROM DRIVE, ELSE FALL THRU FOR RAM DRIVE ; -MD_IOSETUP1: ; RAM - ADD A,BID_RAMD0 +MD_IOSETUP1: ; ROM + ADD A,BID_ROMD0 RET ; -MD_IOSETUP2: ; ROM - ADD A,BID_ROMD0 +MD_IOSETUP2: ; RAM + ADD A,BID_RAMD0 RET ; ; diff --git a/Source/HBIOS/romldr.asm b/Source/HBIOS/romldr.asm index 05b4cc33..685671aa 100644 --- a/Source/HBIOS/romldr.asm +++ b/Source/HBIOS/romldr.asm @@ -648,7 +648,7 @@ romload1: ; Record boot information pop af ; recover source bank ld l,a ; L := source bank - ld de,$0100 ; boot volume/slice + ld de,$0000 ; boot vol=0, slice=0 ld b,BF_SYSSET ; HBIOS func: system set ld c,BF_SYSSET_BOOTINFO ; BBIOS subfunc: boot info rst 08 ; do it diff --git a/Source/RomDsk/ROM_256KB/FLASH.COM b/Source/RomDsk/ROM_256KB/FLASH.COM deleted file mode 100644 index c81f9c54..00000000 Binary files a/Source/RomDsk/ROM_256KB/FLASH.COM and /dev/null differ diff --git a/Source/ver.inc b/Source/ver.inc index 255c6176..53785179 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,4 +2,4 @@ #DEFINE RMN 1 #DEFINE RUP 1 #DEFINE RTP 0 -#DEFINE BIOSVER "3.1.1-pre.65" +#DEFINE BIOSVER "3.1.1-pre.66" diff --git a/Source/ver.lib b/Source/ver.lib index 5a04fb6a..a20b1715 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 1 rup equ 1 rtp equ 0 biosver macro - db "3.1.1-pre.65" + db "3.1.1-pre.66" endm