diff --git a/Source/Apps/Assign.asm b/Source/Apps/Assign.asm index e76adab7..28a950ba 100644 --- a/Source/Apps/Assign.asm +++ b/Source/Apps/Assign.asm @@ -27,7 +27,6 @@ ; ToDo: ; 1) Do something to prevent assigning slices when device does not support them ; 2) ASSIGN C: causes drive map to be reinstalled unnecessarily -; 3) Need to find a way to verify RomWBW under CP/M 3 ;_______________________________________________________________________________ ; ;=============================================================================== @@ -106,7 +105,6 @@ init: ld (cpmver),hl ; save it ld a,l ; low byte cp $30 ; CP/M 3.0? - jp nc,initcpm3 ; handle CP/M 3.0 or greater ; ; get location of config data and verify integrity ld hl,stamp ; HL := adr or RomWBW zero page stamp @@ -146,6 +144,11 @@ init: inc hl ; ... into DE to get ld d,(hl) ; ... DPB map pointer ld (dpbloc),de ; and save it +; + ; test for CP/M 3 and branch if so + ld a,(cpmver) ; low byte of cpm version + cp $30 ; CP/M 3.0? + jp nc,initcpm3 ; handle CP/M 3.0 or greater ; ; make a local working copy of the drive map ld hl,(maploc) ; copy from CBIOS drive map diff --git a/Source/CBIOS/cbios.asm b/Source/CBIOS/cbios.asm index a1b5320e..971d3690 100644 --- a/Source/CBIOS/cbios.asm +++ b/Source/CBIOS/cbios.asm @@ -131,7 +131,7 @@ STPSIZ .EQU $ - STPIMG ; ; The following section contains key information and addresses for the ; RomWBW CBIOS. A pointer to the start of this section is stored with -; with the ZPX data in page zero at $44 (see above). +; with the CBX data in page zero at $44 (see above). ; CBX: DEVMAPADR .DW DEVMAP ; DEVICE MAP ADDRESS diff --git a/Source/CPM3/boot.z80 b/Source/CPM3/boot.z80 index 0e8b1013..a870edea 100644 --- a/Source/CPM3/boot.z80 +++ b/Source/CPM3/boot.z80 @@ -12,6 +12,8 @@ extrn dph0 extrn @dtbl,@ctbl + include ver.inc + bdos equ 5 if banked @@ -25,14 +27,11 @@ tpa$bank equ 0 ?init: call ?mvinit - ; Clear reserved area in page zero - xor a - ld hl,40h - ld b,10h -init$1: - ld (hl),a - inc hl - djnz init$1 + ; Install RomWBW CBIOS stamp in page zero + ld hl,stpimg + ld de,stploc + ld bc,stpsiz + ldir if banked @@ -382,12 +381,13 @@ read: ld c,20 jp bdos - signon$msg db 13,10,'CP/M v3.0' if banked db ' [BANKED]' endif - db ' for RomWBW HBIOS v2.9.2',13,10,13,10,0 + db ' on HBIOS v' + biosver + db 13,10,13,10,0 ccp$msg db 13,10,'BIOS Err on ' ccp$msg$drv db '?' @@ -401,4 +401,27 @@ fcb$nr db 0,0,0 @bootdu db 0 hdspv db 2 ; slices per volume for hard disks (must be >= 1) +; RomWBW CBIOS page zero stamp starts at $40 +; $40-$41: Marker ('W', ~'W') +; $42-$43: Version bytes: major/minor, update/patch +; $44-$45: CBIOS Extension Info address +; +stploc equ 40h +stpimg db 'W',~'W' ; marker + db rmj << 4 | rmn ; first byte of version info + db rup << 4 | rtp ; second byte of version info + dw cbx ; address of cbios ext data +stpsiz equ $ - stpimg + +; +; The following section contains key information and addresses for the +; RomWBW CBIOS. A pointer to the start of this section is stored with +; with the CBX data in page zero at $44 (see above). +; +cbx: +devmapadr dw 0 ; device map address +drvtbladr dw @dtbl ; drive map address (filled in later) +dphtbladr dw dph0 ; dpb map address +cbxsiz equ $ - cbx +; end diff --git a/Source/CPM3/ver.inc b/Source/CPM3/ver.inc new file mode 100644 index 00000000..379d1cd7 --- /dev/null +++ b/Source/CPM3/ver.inc @@ -0,0 +1,7 @@ +rmj equ 2 +rmn equ 9 +rup equ 2 +rtp equ 0 +biosver macro + db "2.9.2-pre.21" + endm