From 7d4f01e9afe0dafaa09500e3f7103b5309831d13 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Thu, 10 Dec 2020 11:56:05 -0800 Subject: [PATCH] MD Driver Bug Fixes Corrected to return accurate block size (credit to Phil Summers) and to show correct capacity during boot. --- Doc/ChangeLog.txt | 2 ++ Source/HBIOS/md.asm | 9 +++++++-- Source/ver.inc | 2 +- Source/ver.lib | 2 +- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index 4bb69e28..5be4fde8 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -10,6 +10,8 @@ Version 3.1.1 - S?K: Support for Tiny Z80 by Sergey - E?B: Support for v6 YM/AY sound card - C?M: Support for RC2014 bus PropIO V2 +- W?S: Updated FLASH software to v1.3.3 +- PMS: Preliminary support for writing to FLASH ROMs Version 3.1 ----------- diff --git a/Source/HBIOS/md.asm b/Source/HBIOS/md.asm index 1761b530..6b12b907 100644 --- a/Source/HBIOS/md.asm +++ b/Source/HBIOS/md.asm @@ -39,7 +39,7 @@ MD_INIT: LD HL,ROMSIZE - 128 CALL PRTDEC PRTS("KB RAMDISK=$") - LD HL,RAMSIZE - 128 + LD HL,RAMSIZE - 256 CALL PRTDEC PRTS("KB$") ; @@ -111,15 +111,18 @@ MD_CAP: RET MD_CAP0: LD A,(HCB + HCB_ROMBANKS) ; POINT TO ROM 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 B,8 ; SET # RESERVED RAM BANKS MD_CAP2: - SUB 4 ; SUBTRACT OUT RESERVED BANKS + SUB B ; SUBTRACT OUT RESERVED BANKS LD H,A ; H := # BANKS LD E,64 ; # 512 BYTE BLOCKS / BANK CALL MULT8 ; HL := TOTAL # 512 BYTE BLOCKS LD DE,0 ; NEVER EXCEEDS 64K, ZERO HIGH WORD + LD BC,512 ; 512 BYTE SECTOR XOR A RET ; @@ -129,6 +132,7 @@ MD_GEOM: ; RAM/ROM DISKS ALLOW CHS STYLE ACCESS BY EMULATING ; A DISK DEVICE WITH 1 HEAD AND 16 SECTORS / TRACK. CALL MD_CAP ; HL := CAPACITY IN BLOCKS + PUSH BC ; SAVE SECTOR SIZE LD D,1 | $80 ; HEADS / CYL := 1 BY DEFINITION, SET LBA CAPABILITY BIT LD E,16 ; SECTORS / TRACK := 16 BY DEFINTION LD B,4 ; PREPARE TO DIVIDE BY 16 @@ -136,6 +140,7 @@ MD_GEOM1: SRL H ; SHIFT H RR L ; SHIFT L DJNZ MD_GEOM1 ; DO 4 BITS TO DIVIDE BY 16 + POP BC ; RECOVER SECTOR SIZE XOR A ; SIGNAL SUCCESS RET ; DONE ; diff --git a/Source/ver.inc b/Source/ver.inc index a6197fe2..dcb9a35d 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.22" +#DEFINE BIOSVER "3.1.1-pre.23" diff --git a/Source/ver.lib b/Source/ver.lib index 3ac52dcf..eebdbd43 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.22" + db "3.1.1-pre.23" endm