From 56c5710b3fc6b4f62760efd25316d0de70a4515d Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Wed, 7 Aug 2019 12:17:07 -0700 Subject: [PATCH] Fix DPB selection in ASSIGN --- Doc/ChangeLog.txt | 1 + ReadMe.txt | 2 +- Source/Apps/Assign.asm | 45 +++++++++++++++--------------------------- Source/CBIOS/cbios.asm | 4 ---- Source/CBIOS/ver.inc | 2 +- Source/HBIOS/ver.inc | 2 +- 6 files changed, 20 insertions(+), 36 deletions(-) diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index 4da46964..1420bbdf 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -6,6 +6,7 @@ Version 2.9.2 - WBW: Support missing pull-up resistors on SPI SD adapter boards (common) - WBW: Support two SIO modules w/ auto-detection - PMS: Support ECB USB-FIFO board +- WBW: Fixed ASSIGN issue with incorrect DPB selection Version 2.9.1 ------------- diff --git a/ReadMe.txt b/ReadMe.txt index f5277665..f60708bf 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -7,7 +7,7 @@ *********************************************************************** Wayne Warthen (wwarthen@gmail.com) -Version 2.9.2-pre.2, 2019-08-04 +Version 2.9.2-pre.3, 2019-08-07 https://www.retrobrewcomputers.org/ RomWBW is a ROM-based implementation of CP/M-80 2.2 and Z-System for diff --git a/Source/Apps/Assign.asm b/Source/Apps/Assign.asm index adb53a13..129de63d 100644 --- a/Source/Apps/Assign.asm +++ b/Source/Apps/Assign.asm @@ -20,6 +20,7 @@ ; Change Log: ; 2016-03-21 [WBW] Updated for HBIOS 2.8 ; 2016-04-08 [WBW] Determine key memory addresses dynamically +; 2019-08-07 [WBW] Fixed DPB selection error ;_______________________________________________________________________________ ; ; ToDo: @@ -529,15 +530,21 @@ makdphuna1: ; handle ram/rom ld e,2 ; otherwise, must be ram drive jr makdph0 ; continue ; -makdphwbw: ; determine appropriate dpb (WBW mode) +makdphwbw: ; determine appropriate dpb (WBW mode, unit number in A) ; + ld c,a ; unit number to C + ld b,$17 ; HBIOS: Report Device Info + rst 08 ; call HBIOS, return w/ device type in D, physical unit in E + ld a,d ; device type to A + cp $00 ; ram/rom? + jr nz,makdph00 ; if not, skip ahead to other types + ld a,e ; physical unit number to A ld e,1 ; assume rom - cp $00+0 ; rom? + cp $00 ; rom? jr z,makdph0 ; yes, jump ahead - ld e,2 ; assume ram - cp $00+1 ; ram? - jr z,makdph0 ; yes, jump ahead - and $F0 ; ignore unit nibble now + ld e,2 ; otherwise ram + jr makdph0 ; jump ahead +makdph00: ld e,6 ; assume floppy cp $10 ; floppy? jr z,makdph0 ; yes, jump ahead @@ -580,27 +587,7 @@ makdph1: dec de ; ... prefix data (cks & als buf sizes) call makdph2 ; handle cks buf, then fall thru for als buf ret nz ; bail out on error - -;makdph2: -; ex de,hl ; point hl to cks/als size adr -; ld c,(hl) ; bc := cks/als size -; inc hl ; ... and bump -; ld b,(hl) ; ... past -; inc hl ; ... cks/als size -; ex de,hl ; bc and hl roles restored -; ld a,b ; check to see -; or c ; ... if bc is zero -; jr z,makdph3 ; if zero, bypass alloc, use zero for address -; call alloc ; alloc bc bytes, address returned in bc -; jp nz,instovf ; handle overflow error -;makdph3: -; ld (hl),c ; save cks/als buf -; inc hl ; ... address in -; ld (hl),b ; ... dph and bump -; inc hl ; ... to next dph entry -; xor a ; signal success -; ret - +; makdph2: ; DE = address of CKS or ALS buf to allocate ; HL = address of field in DPH to get allocated address @@ -1701,10 +1688,10 @@ stack .equ $ ; stack top ; Messages ; indent .db " ",0 -msgban1 .db "ASSIGN v1.0c for RomWBW CP/M 2.2, 21-Apr-2016",0 +msgban1 .db "ASSIGN v1.0d for RomWBW CP/M 2.2, 08-Aug-2019",0 msghb .db " (HBIOS Mode)",0 msgub .db " (UBIOS Mode)",0 -msgban2 .db "Copyright 2016, Wayne Warthen, GNU GPL v3",0 +msgban2 .db "Copyright 2019, Wayne Warthen, GNU GPL v3",0 msguse .db "Usage: ASSIGN D:[=[{D:|[]:[]}]][,...]",13,10 .db " ex. ASSIGN (display all active assignments)",13,10 .db " ASSIGN /? (display version and usage)",13,10 diff --git a/Source/CBIOS/cbios.asm b/Source/CBIOS/cbios.asm index 7dadf2bc..7365c768 100644 --- a/Source/CBIOS/cbios.asm +++ b/Source/CBIOS/cbios.asm @@ -2486,7 +2486,6 @@ DRV_INIT8: ; SLICE CREATION LOOP ; ALLOCATE ENTRY AND FILL IN UNIT, SLICE LD HL,4 ; 4 BYTES PER ENTRY CALL ALLOC ; ALLOCATE SPACE - ;CALL NZ,PANIC ; SHOULD NEVER ERROR HERE CALL C,PANIC ; SHOULD NEVER ERROR HERE LD (HL),D ; SAVE UNIT IN FIRST BYTE OF DRVMAP ENTRY INC HL ; POINT TO NEXT BYTE OF DRVMAP ENTRY @@ -2521,7 +2520,6 @@ DPH_INIT: ADD HL,HL ; ... OF DPH (16) ADD HL,HL ; ... FOR TOTAL SIZE CALL ALLOC ; ALLOCATE THE SPACE - ;CALL NZ,PANIC ; SHOULD NEVER ERROR CALL C,PANIC ; SHOULD NEVER ERROR ; ; SET DPHTOP TO START OF ALLOCATED SPACE @@ -2530,7 +2528,6 @@ DPH_INIT: ; ALLOCATE DIRECTORY BUFFER LD HL,128 ; SIZE OF DIRECTORY BUFFER CALL ALLOC ; ALLOCATE THE SPACE - ;CALL NZ,PANIC ; SHOULD NEVER ERROR CALL C,PANIC ; SHOULD NEVER ERROR LD (DIRBUF),HL ; ... AND SAVE IN DIRBUF ; @@ -2578,7 +2575,6 @@ DPH_INIT1A: ; INVOKE THE DPH BUILD ROUTINE PUSH BC ; SAVE LOOP CONTROL CALL MAKDPH ; MAKE THE DPH AT DE, UNIT IN A - ;CALL NZ,PANIC ; FOR NOW, PANIC ON ANY ERROR POP BC ; RESTORE LOOP CONTROL ; STORE THE DPH POINTER IN DRIVE MAP POP DE ; RESTORE DPH ADDRESS TO DE diff --git a/Source/CBIOS/ver.inc b/Source/CBIOS/ver.inc index 43cecdb0..ac80a848 100644 --- a/Source/CBIOS/ver.inc +++ b/Source/CBIOS/ver.inc @@ -2,4 +2,4 @@ #DEFINE RMN 9 #DEFINE RUP 2 #DEFINE RTP 0 -#DEFINE BIOSVER "2.9.2-pre.2" +#DEFINE BIOSVER "2.9.2-pre.3" diff --git a/Source/HBIOS/ver.inc b/Source/HBIOS/ver.inc index 43cecdb0..ac80a848 100644 --- a/Source/HBIOS/ver.inc +++ b/Source/HBIOS/ver.inc @@ -2,4 +2,4 @@ #DEFINE RMN 9 #DEFINE RUP 2 #DEFINE RTP 0 -#DEFINE BIOSVER "2.9.2-pre.2" +#DEFINE BIOSVER "2.9.2-pre.3"