From 9e29236a0c39b9cca496fa633d6ff8ffab51df54 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Tue, 22 Dec 2020 16:41:29 -0800 Subject: [PATCH] Small Fixes - Properly rerport HBIOS heap overflow in CBIOS - Adjust write sequence in FFS for high speed operation --- Source/CBIOS/cbios.asm | 11 +++++++++-- Source/HBIOS/md.asm | 4 ++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Source/CBIOS/cbios.asm b/Source/CBIOS/cbios.asm index a9850fc6..4af347ef 100644 --- a/Source/CBIOS/cbios.asm +++ b/Source/CBIOS/cbios.asm @@ -2116,7 +2116,7 @@ INIT2: LD C,$F7 ; UNA MALLOC LD DE,CCP_SIZ ; SIZE OF CCP RST 08 ; DO IT - CALL NZ,PANIC ; BIG PROBLEM + CALL NZ,ERR_BIOMEM ; BIG PROBLEM LD (CCPBUF),HL ; SAVE THE ADDRESS (IN BIOS MEM) LD BC,$01FB ; UNA FUNC = SET BANK @@ -2137,7 +2137,7 @@ INIT2: LD B,BF_SYSALLOC ; HBIOS FUNC: ALLOCATE HEAP MEMORY LD HL,CCP_SIZ ; SIZE TO ALLOC (SIZE OF CCP) RST 08 ; DO IT - CALL NZ,PANIC ; BIG PROBLEM + CALL NZ,ERR_BIOMEM ; BIG PROBLEM LD (CCPBUF),HL ; SAVE THE ADDRESS (IN BIOS MEM) LD B,BF_SYSSETCPY ; HBIOS FUNC: SETUP BANK COPY LD A,(BNKUSER) ; GET USER BANK @@ -2209,6 +2209,12 @@ INIT3: ; RET ; DONE ; +ERR_BIOMEM: + CALL NEWLINE2 ; FORMATTING + LD DE,STR_BIOMEM ; HBIOS HEAP MEM OVERFLOW + CALL WRITESTR ; TELL THE USER + CALL PANIC ; AND GRIND TO A SCREACHING HALT +; ; ;__________________________________________________________________________________________________ AUTOSUB: @@ -3242,6 +3248,7 @@ STR_CPM .DB "CP/M-80 v2.2$" STR_ZSDOS .DB "ZSDOS v1.1$" STR_TPA1 .DB ", $" STR_TPA2 .DB "K TPA$" +STR_BIOMEM .DB "*** HBIOS Heap Overflow ***$" #IFDEF PLTUNA INIBUF .FILL 512,0 ; LOCATION OF TEMP WORK BUF DURING INIT (512 BYTES) diff --git a/Source/HBIOS/md.asm b/Source/HBIOS/md.asm index 8b901ea0..5675df72 100644 --- a/Source/HBIOS/md.asm +++ b/Source/HBIOS/md.asm @@ -1074,8 +1074,8 @@ MD_FWRI1: LD (HL),C ; WRITE OUT BYTE ; ; ; DO TWO SUCCESSIVE READS - LD A,(HL) ; FROM THE SAME FLASH ADDRESS. -MD_FW7: LD C,(HL) ; IF TOGGLE BIT (BIT 6) +MD_FW7: LD A,(HL) ; FROM THE SAME FLASH ADDRESS. + LD C,(HL) ; IF TOGGLE BIT (BIT 6) XOR C ; IS THE SAME ON BOTH READS BIT 6,A ; THEN WRITE IS COMPLETE SO EXIT. JR NZ,MD_FW7 ; Z TRUE IF BIT 6=0 I.E. "NO TOGGLE" WAS DETECTED.