From f5806a158920de1316ac3be546bbc33d8a78118d Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Sat, 16 Oct 2021 20:21:36 -0700 Subject: [PATCH] Miscellaneous - Rename Dev.txt to ReadMe.txt for consistency - Update Dev app Makefile to not copy the internal ReadMe file to the final output - Remove obsolete constants in BPBIOS - Minor patches to zx and cpmtools to workaround an odd behavior in Windows Subsystem for Linux that was causing output to fail binary comparisons. --- Source/Apps/Dev/Makefile | 2 +- Source/Apps/Dev/{dev.txt => ReadMe.txt} | 0 Source/BPBIOS/romwbw.lib | 8 -------- Source/HBIOS/ay38910.asm | 10 ++++++---- Tools/unix/cpmtools/mkfs.cpm.c | 1 + Tools/unix/zx/cpmredir.c | 20 ++++++++++++++++++++ Tools/unix/zx/zx.c | 2 ++ 7 files changed, 30 insertions(+), 13 deletions(-) rename Source/Apps/Dev/{dev.txt => ReadMe.txt} (100%) diff --git a/Source/Apps/Dev/Makefile b/Source/Apps/Dev/Makefile index 56c24fce..3bbbacf0 100644 --- a/Source/Apps/Dev/Makefile +++ b/Source/Apps/Dev/Makefile @@ -1,5 +1,5 @@ OBJECTS = dev.com -DOCS = dev.txt +#DOCS = dev.txt DEST = ../../../Binary/Apps DOCDEST = ../../../Binary/Apps TOOLS = ../../../Tools diff --git a/Source/Apps/Dev/dev.txt b/Source/Apps/Dev/ReadMe.txt similarity index 100% rename from Source/Apps/Dev/dev.txt rename to Source/Apps/Dev/ReadMe.txt diff --git a/Source/BPBIOS/romwbw.lib b/Source/BPBIOS/romwbw.lib index 9da7d1ef..36cc0d2c 100644 --- a/Source/BPBIOS/romwbw.lib +++ b/Source/BPBIOS/romwbw.lib @@ -14,14 +14,6 @@ MEMTOP EQU HBLOC - 1 ; Last usable address ; HB_DEBUG EQU FALSE ; See hbios.z80 file ; -; TODO: Query system via HBIOS API to determine actual size of -; RAM and ROM, then adjust BPBIOS operation accordingly. -; -HB_RAMBANKS EQU 16 ; For systems with 512K of RAM -;HB_RAMBANKS EQU 32 ; For systems with 1MB of RAM -HB_ROMBANKS EQU 16 ; For systems with 512K of ROM -;HB_ROMBANKS EQU 32 ; For systems with 1MB of ROM -; ; Set HB_IODEV to desired HBIOS character device unit number ; ; TODO: Query system via HBIOS API to determine number of serial diff --git a/Source/HBIOS/ay38910.asm b/Source/HBIOS/ay38910.asm index 596dc46c..3a196605 100644 --- a/Source/HBIOS/ay38910.asm +++ b/Source/HBIOS/ay38910.asm @@ -522,7 +522,8 @@ AY_EI: AY_WRTPSG: CALL AY_DI #IFDEF SBCV2004 - LD A,8 ; SBC-V2-004 CHANGE + LD A,(RTCVAL) ; GET CURRENT RTC LATCH VALUE + OR %00001000 ; SBC-V2-004 CHANGE OUT (RTCIO),A ; TO HALF CLOCK SPEED #ENDIF #IF (CPUFAM == CPU_Z180) @@ -540,7 +541,7 @@ AY_WRTPSG: OUT0 (Z180_DCNTL),A ; AND RESTORE IT #ENDIF #IFDEF SBCV2004 - LD A,0 ; SBC-V2-004 CHANGE TO + LD A,(RTCVAL) ; SBC-V2-004 CHANGE TO OUT (RTCIO),A ; NORMAL CLOCK SPEED #ENDIF JP AY_EI @@ -552,7 +553,8 @@ AY_WRTPSG: AY_RDPSG: CALL AY_DI #IFDEF SBCV2004 - LD A,8 ; SBC-V2-004 CHANGE + LD A,(RTCVAL) ; GET CURRENT RTC LATCH VALUE + OR %00001000 ; SBC-V2-004 CHANGE OUT (RTCIO),A ; TO HALF CLOCK SPEED #ENDIF #IF (CPUFAM == CPU_Z180) @@ -570,7 +572,7 @@ AY_RDPSG: OUT0 (Z180_DCNTL),A ; AND RESTORE IT #ENDIF #IFDEF SBCV2004 - LD A,0 ; SBC-V2-004 CHANGE TO + LD A,(RTCVAL) ; SBC-V2-004 CHANGE TO OUT (RTCIO),A ; NORMAL CLOCK SPEED #ENDIF JP AY_EI diff --git a/Tools/unix/cpmtools/mkfs.cpm.c b/Tools/unix/cpmtools/mkfs.cpm.c index 2c37bdfd..18530e3a 100644 --- a/Tools/unix/cpmtools/mkfs.cpm.c +++ b/Tools/unix/cpmtools/mkfs.cpm.c @@ -220,6 +220,7 @@ int main(int argc, char *argv[]) /*{{{*/ #if 0 fprintf(stderr,"%d %04x %s\n",c,used+0x800,boot[c]); #endif + memset(bootTracks+used+size, 0xe5, bootTrackSize-used-size); if (size%drive.secLength) size=(size|(drive.secLength-1))+1; used+=size; close(fd); diff --git a/Tools/unix/zx/cpmredir.c b/Tools/unix/zx/cpmredir.c index 4fd5f9ca..d8a5e337 100644 --- a/Tools/unix/zx/cpmredir.c +++ b/Tools/unix/zx/cpmredir.c @@ -287,6 +287,8 @@ cpm_word fcb_read(cpm_byte *fcb, cpm_byte *dma) redir_Msg(" (from %lx)\n", zxlseek(handle, 0, SEEK_CUR)); /* Read in the required amount */ + + memset(dma, 0x00, redir_rec_len); #ifdef WIN32 { @@ -300,6 +302,12 @@ cpm_word fcb_read(cpm_byte *fcb, cpm_byte *dma) rv = read(handle, dma, redir_rec_len); #endif + if (rv == -1) + memset(dma, 0x00, redir_rec_len); + + if ((rv >= 0) && (rv < redir_rec_len)) + memset(dma + rv, 0x00, redir_rec_len - rv); + /* rd_len = length supposedly read, bytes. Round to nearest 128 bytes. */ rd_len = ((rv + 127) / 128) * 128; @@ -493,6 +501,9 @@ cpm_word fcb_randrd(cpm_byte *fcb, cpm_byte *dma) if ((handle = redir_verify_fcb(fcb)) < 0) return 9; /* Invalid FCB */ if (zxlseek(handle, offs, SEEK_SET) < 0) return 6; /* bad record no. */ + + memset(dma, 0x00, redir_rec_len); + #ifdef WIN32 { BOOL b; @@ -504,6 +515,13 @@ cpm_word fcb_randrd(cpm_byte *fcb, cpm_byte *dma) #else rv = read(handle, dma, redir_rec_len); #endif + + if (rv == -1) + memset(dma, 0x00, redir_rec_len); + + if ((rv >= 0) && (rv < redir_rec_len)) + memset(dma + rv, 0x00, redir_rec_len - rv); + zxlseek(handle, offs, SEEK_SET); redir_put_fcb_pos(fcb, offs); @@ -579,6 +597,8 @@ cpm_word fcb_randwz(cpm_byte *fcb, cpm_byte *dma) while (len < offs) { + memset(zerorec, 0, sizeof(zerorec)); + rl = sizeof(zerorec); if ((offs - len) < sizeof(zerorec)) rl = offs - len; #ifdef WIN32 diff --git a/Tools/unix/zx/zx.c b/Tools/unix/zx/zx.c index bb730a2c..88b20cb3 100644 --- a/Tools/unix/zx/zx.c +++ b/Tools/unix/zx/zx.c @@ -227,6 +227,8 @@ void load_comfile(void) } fclose(fp); + memset(RAM + 0x0100 + com_len, 0, 0xFD00 - com_len); + Msg("Loaded %d bytes from %s\n", com_len, fname); }