From 4eeba4e48b52424f9689302cdf281c0e2b17fc81 Mon Sep 17 00:00:00 2001 From: Phillip Stevens Date: Tue, 3 Mar 2020 18:53:59 +1100 Subject: [PATCH 1/4] HBIOS - clean up TMPSTK --- Source/HBIOS/hbios.asm | 78 +++++++++++++++++++++--------------------- Source/HBIOS/hbios.inc | 2 +- Source/HBIOS/sd.asm | 2 +- 3 files changed, 41 insertions(+), 41 deletions(-) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 6ce54737..61144d64 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -63,7 +63,7 @@ ; - [xio|mio].asm ; - dsky.asm ; - unlzsa2s.asm -; +; ; ; INCLUDE GENERIC STUFF ; @@ -268,16 +268,14 @@ HBX_INVOKE: LD A,(HB_CURBNK) ; GET CURRENT BANK LD (HB_INVBNK),A ; SAVE INVOCATION BANK - ;LD SP,HBX_TMPSTK ; USE SMALL TEMP STACK FRAME IN HI MEM FOR BANK SWITCH - LD SP,HBX_BUF_END ; BORROW HBX_BUF FOR TEMP STACK + LD SP,HBX_TMPSTK ; BORROW HBX_BUF FOR STACK IN HIGH MEMORY LD A,BID_BIOS ; HBIOS BANK CALL HBX_BNKSEL ; SELECT IT LD SP,HB_STACK ; NOW USE FULL HBIOS STACK IN HBIOS BANK CALL HB_DISPATCH ; CALL HBIOS FUNCTION DISPATCHER - ;LD SP,HBX_TMPSTK ; USE SMALL TEMP STACK FRAME IN HI MEM FOR BANK SWITCH - LD SP,HBX_BUF_END ; BORROW HBX_BUF FOR TEMP STACK + LD SP,HBX_TMPSTK ; BORROW HBX_BUF FOR STACK IN HIGH MEMORY PUSH AF ; SAVE AF (FUNCTION RETURN) LD A,(HB_INVBNK) ; LOAD ORIGINAL BANK @@ -392,7 +390,7 @@ HBX_BNKSEL1: ; HBX_BNKCPY: LD (HBX_BC_SP),SP ; PUT STACK - LD SP,HBX_TMPSTK ; ... IN HI MEM + LD SP,HBX_BNKSTK ; TEMPORARY STACK IN HIGH MEMORY (NOT IN HBX_BUF) LD A,(HB_CURBNK) ; GET CURRENT BANK PUSH AF ; AND SAVE TO RESTORE LATER @@ -473,7 +471,7 @@ HBX_TGTADR .EQU $ + 1 ; HBX_PEEK: LD (HBX_PPSP),SP ; SAVE ORIGINAL STACK FRAME - LD SP,HBX_TMPSTK ; USE SMALL TEMP STACK FRAME IN HI MEM + LD SP,HBX_TMPSTK ; BORROW HBX_BUF FOR STACK IN HIGH MEMORY LD A,(HB_CURBNK) PUSH AF LD A,D @@ -483,7 +481,7 @@ HBX_PEEK: ; HBX_POKE: LD (HBX_PPSP),SP ; SAVE ORIGINAL STACK FRAME - LD SP,HBX_TMPSTK ; USE SMALL TEMP STACK FRAME IN HI MEM + LD SP,HBX_TMPSTK ; BORROW HBX_BUF FOR STACK IN HIGH MEMORY LD A,(HB_CURBNK) PUSH AF LD A,D @@ -497,11 +495,6 @@ HBX_PPRET: HBX_PPSP .EQU $ - 2 RET ; -; SMALL TEMPORARY STACK FOR USE BY INVOKE, PEEK, AND POKE -; - .FILL 20,$CC ; 10 LEVEL STACK -HBX_TMPSTK .EQU $ -; ; PRIVATE STACK AT END OF HBIOS CODE ; OCCUPIES SPACE BEFORE IVT ; @@ -517,9 +510,9 @@ HBX_STACK .EQU $ ; HBIOS INTERRUPT SLOT ASSIGNMENTS ; ; # Z80 Z180 -; --- -------------- -------------- +; --- -------------- -------------- ; 0 CTC0A INT1 -+ -; 1 CTC0B INT2 | +; 1 CTC0B INT2 | ; 2 CTC0C TIM0 | ; 3 CTC0D TIM1 | ; 4 DMA0 +- Z180 INTERNAL @@ -605,7 +598,7 @@ HBX_INT: ; COMMON INTERRUPT ROUTING CODE LD L,(HL) ; OFFSET INTO JP TABLE FOR THIS INT LD H,HB_IVT >> 8 ; MSB OF HBIOS INT JP TABLE - + CALL JPHL ; CALL HANDLER VIA INT JP TABLE LD A,(HB_CURBNK) ; GET PRE-INT BANK @@ -629,16 +622,23 @@ HBX_INT_SP .EQU $ - 2 ; ; FILL TO START OF BOUNCE BUFFER ; -HBX_INTFILL .EQU (HBX_XFC - HBX_BUFSIZ - $) - .ECHO "HBIOS INT space remaining: " - .ECHO HBX_INTFILL +HBX_PROXYFILL .EQU (HBX_XFC - HBX_BUFSIZ - $) + .ECHO "HBIOS PROXY space remaining: " + .ECHO HBX_PROXYFILL .ECHO " bytes.\n" - .FILL HBX_INTFILL,$FF + .FILL HBX_PROXYFILL,$FF +; +; TEMPORARY STACK FOR USE BY HBX_BNKCPY (NOT IN HBX_BUF) +; +HBX_BNKSTK .EQU $ ; ; INTERBANK COPY BUFFER (64 BYTES) ; HBX_BUF .FILL HBX_BUFSIZ,0 -HBX_BUF_END .EQU $ +; +; TEMPORARY STACK FOR USE BY INVOKE, PEEK, AND POKE +; +HBX_TMPSTK .EQU $ ; ; HBIOS PROXY MGMT BLOCK (TOP 32 BYTES) ; @@ -931,7 +931,7 @@ HB_START1: ; BNKCALL ARRIVES HERE, BUT NOW RUNNING IN RAM BANK #IF (BT_REC_TYPE == BT_REC_SBC01) LD A,%00100000 ; DISABLE RTC AND OUT (RTCIO),A ; DRQ DRIVER READ - IN A,(RTCIO) ; BIT 0 (DRQ). + IN A,(RTCIO) ; BIT 0 (DRQ). CPL ; PULLED HIGH AND 1 ; IS RECOVERY MODE LD (HB_BOOT_REC),A ; SAVE FOR LATER @@ -939,16 +939,16 @@ HB_START1: ; BNKCALL ARRIVES HERE, BUT NOW RUNNING IN RAM BANK #IF (BT_REC_TYPE == BT_REC_SBC1B) IN A,(RTCIO) ; RTC PORT, BIT 6 HAS THE BIT 6,A ; STATE OF CONFIG JUMPER - LD A,1 ; JUMPER INSTALLED + LD A,1 ; JUMPER INSTALLED JR Z,SAVE_REC_M ; IS RECOVERY MODE LD A,0 SAVE_REC_M: LD (HB_BOOT_REC),A ; SAVE FOR LATER #ENDIF #IF (BT_REC_TYPE == BT_REC_SBCRI) - IN A,($68 + 6) ; UART_MSR MODEM + IN A,($68 + 6) ; UART_MSR MODEM BIT 6,A ; STATUS REGISTER - LD A,0 ; BIT 6 + LD A,0 ; BIT 6 JR Z,SAVE_REC_M ; IS RECOVERY MODE LD A,1 SAVE_REC_M: @@ -1113,7 +1113,7 @@ HB_CPU2: ; #IF (HTIMENABLE) ; SIMH TIMER ; - #IF (INTMODE == 1) + #IF (INTMODE == 1) LD HL,HB_TIMINT CALL HB_ADDIM1 ; ADD TO IM1 CALL LIST #ENDIF @@ -1125,7 +1125,7 @@ HB_CPU2: #IF (KIOENABLE) LD A,%11111001 ; RESET ALL DEVICES, SET DAISYCHAIN OUT (KIOBASE+$0E),A ; DO IT -#ENDIF +#ENDIF ; #IF (CTCENABLE) CALL CTC_PREINIT @@ -1187,7 +1187,7 @@ HB_CPU2: LD DE,(HB_PCINITTBL) ; EXECUTE FIRST ; DE IS VALUE OF TOP ENTRY LD HL,HB_PCINITTBL ; HL IS ADDRESS OF TOP OF TABLE PUSH HL ; PUSH (1) TOP OF TABLE - PUSH DE ; PUSH (2) VALUE OF TOP ENTRY + PUSH DE ; PUSH (2) VALUE OF TOP ENTRY PUSH HL ; PUSH (3) TOP OF TABLE CALL ADDHLA ; HL IS ADDRESS OF DESIRED CONSOLE ENTRY POP DE ; PLACE IT AT THE TOP OF THE ; POP (3) DE IS TOP OF TABLE @@ -1391,7 +1391,7 @@ HB_SPDTST: JR Z,NOT_REC_M1 ; INITIALIZATION TABLE LD B,HB_INITRLEN LD DE,HB_INIT_REC - JR IS_REC_M1 + JR IS_REC_M1 #ENDIF NOT_REC_M1: @@ -1834,7 +1834,7 @@ DIO_TBL .FILL DIO_SIZ,0 ; SPACE FOR ENTRIES ; HL=BUF ADR ; E=SEC COUNT ; D=BUF BANK ID -; +; HB_DSKREAD: ; ; THE ACTUAL SECTOR READ FUNCTION ADDRESS IS ON TOS, SAVE IT @@ -1922,7 +1922,7 @@ HB_DSKREADX: ; HL=BUF ADR ; E=SEC COUNT ; D=BUF BANK ID -; +; HB_DSKWRITE: ; ; THE ACTUAL SECTOR READ FUNCTION ADDRESS IS ON TOS, SAVE IT @@ -2680,7 +2680,7 @@ HB_BADINTCNT .DB 0 RRCA CALL PRTHEXBYTE PRTS("H: $") - + CALL XREGDMP ;CALL CONTINUE OR $FF ; SIGNAL INTERRUPT HANDLED @@ -2953,8 +2953,8 @@ ORG_FONTS .EQU $ FONT8X8: #IF USELZSA2 #INCLUDE "font8x8c.asm" - #ELSE - #INCLUDE "font8x8u.asm" + #ELSE + #INCLUDE "font8x8u.asm" #ENDIF .ECHO " 8X8" #ENDIF @@ -2963,8 +2963,8 @@ FONT8X8: FONT8X11: #IF USELZSA2 #INCLUDE "font8x11c.asm" - #ELSE - #INCLUDE "font8x11u.asm" + #ELSE + #INCLUDE "font8x11u.asm" #ENDIF .ECHO " 8X11" #ENDIF @@ -2973,8 +2973,8 @@ FONT8X11: FONT8X16: #IF USELZSA2 #INCLUDE "font8x16c.asm" - #ELSE - #INCLUDE "font8x16u.asm" + #ELSE + #INCLUDE "font8x16u.asm" #ENDIF .ECHO " 8X16" #ENDIF @@ -3855,7 +3855,7 @@ COUT: JR COUT2 ; CONTINUE ; COUT1: -; +; #IF (WBWDEBUG == USEXIO) LD A,E ; GET OUTPUT CHAR BACK TO ACCUM CALL XIO_OUTC ; OUTPUT VIA XIO diff --git a/Source/HBIOS/hbios.inc b/Source/HBIOS/hbios.inc index 444bae8b..441cfcc2 100644 --- a/Source/HBIOS/hbios.inc +++ b/Source/HBIOS/hbios.inc @@ -131,7 +131,7 @@ VDADEV_VGA .EQU $40 ; ECB VGA3 - HITACHI HD6445 ;EMUTYP_NONE .EQU 0 ; NONE ;EMUTYP_TTY .EQU 1 ; TTY ;EMUTYP_ANSI .EQU 2 ; ANSI -; +; ; HBIOS CONTROL BLOCK OFFSETS ; WARNING: THESE OFFSETS WILL CHANGE SIGNIFICANTLY BETWEEN RELEASES ; IT IS STRONGLY RECOMMENDED THAT YOU DO NOT USE THEM! diff --git a/Source/HBIOS/sd.asm b/Source/HBIOS/sd.asm index 2930fa72..70ee71d9 100644 --- a/Source/HBIOS/sd.asm +++ b/Source/HBIOS/sd.asm @@ -108,7 +108,7 @@ ; JUST DISCARD THE FIRST BYTE RECEIVED AFTER A COMMAND IS SENT WITH THE ; ASSUMPTION THAT IT MUST BE A FILL BYTE AND IS NOT RELIABLE DUE TO FLOATING ; MISO. -; +; ; THESE CHANGES ARE CONSISTENT WITH THE POPULAR ARDUINO SDFAT LIBRARY, SO THEY ARE ; PROBABLY PRETTY SAFE. HOWEVER, I HAVE BRACKETED THE CHANGES WITH THE EQUATE BELOW. ; IF YOU WANT TO REVERT THESE HACKS, JUST SET THE EQUATE TO FALSE. From 8b7c9e10c3fbc32a3a4a8029064d834c9bb7222e Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Tue, 3 Mar 2020 12:45:16 -0800 Subject: [PATCH 2/4] Update hbios.asm Minor cosmetic changes. --- Source/HBIOS/hbios.asm | 55 ++++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 61144d64..78bde396 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -250,7 +250,7 @@ CB_BIDROMDN .DB BID_ROMDN ; ; DEFINITIONS ; -HBX_BUFSIZ .EQU $40 ; INTERBANK COPY BUFFER SIZE +HBX_BUFSIZ .EQU $40 ; INTERBANK COPY BOUNCE BUFFER SIZE ; ; HBIOS IDENTIFICATION DATA BLOCK ; @@ -263,19 +263,25 @@ HBX_IDENT: ; HBIOS ENTRY FOR RST 08 PROCESSING ;================================================================================================== ; +; NOTE: THE SIZE OF HBX_TMPSTK (TYPICALLY 20 BYTES) IS INSUFFICIENT FOR +; FREERTOS IF AN INTERRUPT STRIKES WHILE THE TEMPORARY STACK IS ACTIVE. +; BELOW, HBX_BUF HAS BEEN USURPED TO PROVIDE A LARGER TEMP STACK TO +; ACCOMMODATE FREERTOS. HBX_BUF IS ONLY USED AS A BOUNCE BUFFER, SO IT'S +; USE WILL NEVER OVERLAP WITH BELOW. +; HBX_INVOKE: LD (HBX_INVSP),SP ; SAVE ORIGINAL STACK FRAME LD A,(HB_CURBNK) ; GET CURRENT BANK LD (HB_INVBNK),A ; SAVE INVOCATION BANK - LD SP,HBX_TMPSTK ; BORROW HBX_BUF FOR STACK IN HIGH MEMORY + LD SP,HBX_BUF_END ; BORROW HBX_BUF FOR TEMP STACK LD A,BID_BIOS ; HBIOS BANK CALL HBX_BNKSEL ; SELECT IT LD SP,HB_STACK ; NOW USE FULL HBIOS STACK IN HBIOS BANK CALL HB_DISPATCH ; CALL HBIOS FUNCTION DISPATCHER - LD SP,HBX_TMPSTK ; BORROW HBX_BUF FOR STACK IN HIGH MEMORY + LD SP,HBX_BUF_END ; BORROW HBX_BUF FOR TEMP STACK PUSH AF ; SAVE AF (FUNCTION RETURN) LD A,(HB_INVBNK) ; LOAD ORIGINAL BANK @@ -376,7 +382,6 @@ HBX_BNKSEL1: ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ; Copy Data - Possibly between banks. This resembles CP/M 3, but ; usage of the HL and DE registers is reversed. -; Caller MUST ensure stack is already in high memory. ; Caller MUST preset HBX_SRCBNK and HBX_DSTBNK. ; Caller MUST disable ints if IM1 active ; Enter: @@ -390,7 +395,7 @@ HBX_BNKSEL1: ; HBX_BNKCPY: LD (HBX_BC_SP),SP ; PUT STACK - LD SP,HBX_BNKSTK ; TEMPORARY STACK IN HIGH MEMORY (NOT IN HBX_BUF) + LD SP,HBX_TMPSTK ; ... IN HI MEM LD A,(HB_CURBNK) ; GET CURRENT BANK PUSH AF ; AND SAVE TO RESTORE LATER @@ -471,7 +476,7 @@ HBX_TGTADR .EQU $ + 1 ; HBX_PEEK: LD (HBX_PPSP),SP ; SAVE ORIGINAL STACK FRAME - LD SP,HBX_TMPSTK ; BORROW HBX_BUF FOR STACK IN HIGH MEMORY + LD SP,HBX_TMPSTK ; USE SMALL TEMP STACK FRAME IN HI MEM LD A,(HB_CURBNK) PUSH AF LD A,D @@ -481,7 +486,7 @@ HBX_PEEK: ; HBX_POKE: LD (HBX_PPSP),SP ; SAVE ORIGINAL STACK FRAME - LD SP,HBX_TMPSTK ; BORROW HBX_BUF FOR STACK IN HIGH MEMORY + LD SP,HBX_TMPSTK ; USE SMALL TEMP STACK FRAME IN HI MEM LD A,(HB_CURBNK) PUSH AF LD A,D @@ -498,12 +503,12 @@ HBX_PPSP .EQU $ - 2 ; PRIVATE STACK AT END OF HBIOS CODE ; OCCUPIES SPACE BEFORE IVT ; -HBX_STKSIZ .EQU $FF00 - $ - .ECHO "HBIOS PROXY STACK space: " - .ECHO HBX_STKSIZ +HBX_INTSTKSIZ .EQU $FF00 - $ + .ECHO "HBIOS INT STACK space: " + .ECHO HBX_INTSTKSIZ .ECHO " bytes.\n" - .FILL HBX_STKSIZ,$FF -HBX_STACK .EQU $ + .FILL HBX_INTSTKSIZ,$FF +HBX_INTSTK .EQU $ ; #IF (INTMODE == 2) ; @@ -585,7 +590,7 @@ HBX_INT: ; COMMON INTERRUPT ROUTING CODE EX (SP),HL ; SAVE HL AND GET INT JP TABLE OFFSET LD (HBX_INT_SP),SP ; SAVE ORIGINAL STACK FRAME - LD SP,HBX_STACK ; USE STACK FRAME IN HI MEM + LD SP,HBX_INTSTK ; USE DEDICATED INT STACK FRAME IN HI MEM ; SAVE STATE (HL SAVED PREVIOUSLY ON ORIGINAL STACK FRAME) PUSH AF ; SAVE AF @@ -620,25 +625,23 @@ HBX_INT_SP .EQU $ - 2 ; #ENDIF ; -; FILL TO START OF BOUNCE BUFFER +; SMALL TEMPORARY STACK FOR USE BY BNKCPY, PEEK, AND POKE ; -HBX_PROXYFILL .EQU (HBX_XFC - HBX_BUFSIZ - $) - .ECHO "HBIOS PROXY space remaining: " - .ECHO HBX_PROXYFILL +HBX_TMPSTKSIZ .EQU (HBX_XFC - HBX_BUFSIZ - $) + .ECHO "HBIOS TEMP STACK space: " + .ECHO HBX_TMPSTKSIZ .ECHO " bytes.\n" - .FILL HBX_PROXYFILL,$FF -; -; TEMPORARY STACK FOR USE BY HBX_BNKCPY (NOT IN HBX_BUF) + .FILL HBX_TMPSTKSIZ,$CC +HBX_TMPSTK .EQU $ ; -HBX_BNKSTK .EQU $ +; INTERBANK COPY BOUNCE BUFFER (64 BYTES) ; -; INTERBANK COPY BUFFER (64 BYTES) +; N.B., THIS BUFFER IS ALSO USED AS A TEMPORARY STACK BY HBX_INVOKE. +; THEREFORE, THIS BUFFER *CANNOT* BE USED TO PASS DATA OUTSIDE OF +; HBIOS FUNCTION CALLS. ; HBX_BUF .FILL HBX_BUFSIZ,0 -; -; TEMPORARY STACK FOR USE BY INVOKE, PEEK, AND POKE -; -HBX_TMPSTK .EQU $ +HBX_BUF_END .EQU $ ; ; HBIOS PROXY MGMT BLOCK (TOP 32 BYTES) ; From a40e7961a1068fbec828716fa60b5a22d495add4 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Tue, 3 Mar 2020 16:07:35 -0800 Subject: [PATCH 3/4] Build Process Updates Minor udpates to build process to improve consistency between Windows and Mac/Linux builds. --- Source/HBIOS/Build.ps1 | 2 +- Source/HBIOS/Makefile | 34 +++++++++++++++++----------------- Source/Images/Makefile | 3 ++- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/Source/HBIOS/Build.ps1 b/Source/HBIOS/Build.ps1 index cc61b0b9..32f97ded 100644 --- a/Source/HBIOS/Build.ps1 +++ b/Source/HBIOS/Build.ps1 @@ -238,7 +238,7 @@ else { Concat 'hbios_rom.bin','osimg.bin','osimg1.bin','osimg.bin',$RomDiskFile $RomFile Concat 'hbios_app.bin','osimg.bin' $ComFile - Concat 'hbios_img.bin','osimg.bin' $ImgFile + # Concat 'hbios_img.bin','osimg.bin' $ImgFile } # Remove the temporary working ROM disk file diff --git a/Source/HBIOS/Makefile b/Source/HBIOS/Makefile index 3ca139f5..354dcd26 100644 --- a/Source/HBIOS/Makefile +++ b/Source/HBIOS/Makefile @@ -1,25 +1,25 @@ OBJECTS = ifeq (1,1) -OBJECTS += DYNO_std.rom -OBJECTS += EZZ80_std.rom -OBJECTS += MK4_std.rom -OBJECTS += N8_std.rom -OBJECTS += RCZ180_ext.rom -OBJECTS += RCZ180_nat.rom -OBJECTS += RCZ80_kio.rom -OBJECTS += RCZ80_mt.rom -OBJECTS += RCZ80_std.rom -OBJECTS += RCZ80_wiz.rom -OBJECTS += SBC_simh.rom -OBJECTS += SBC_std.rom -OBJECTS += SCZ180_126.rom -OBJECTS += SCZ180_130.rom +OBJECTS += DYNO_std.rom DYNO_std.com +OBJECTS += EZZ80_std.rom EZZ80_std.com +OBJECTS += MK4_std.rom MK4_std.com +OBJECTS += N8_std.rom N8_std.com +OBJECTS += RCZ180_ext.rom RCZ180_ext.com +OBJECTS += RCZ180_nat.rom RCZ180_nat.com +OBJECTS += RCZ80_kio.rom RCZ80_kio.com +OBJECTS += RCZ80_mt.rom RCZ80_mt.com +OBJECTS += RCZ80_std.rom RCZ80_std.com +OBJECTS += RCZ80_wiz.rom RCZ80_wiz.com +OBJECTS += SBC_simh.rom SBC_simh.com +OBJECTS += SBC_std.rom SBC_std.com +OBJECTS += SCZ180_126.rom SCZ180_126.com +OBJECTS += SCZ180_130.rom SCZ180_130.com OBJECTS += UNA_std.rom -OBJECTS += ZETA_std.rom -OBJECTS += ZETA2_std.rom +OBJECTS += ZETA_std.rom ZETA_std.com +OBJECTS += ZETA2_std.rom ZETA2_std.com else -OBJECTS += ZETA2_std.rom +OBJECTS += ZETA2_std.rom ZETA2_std.com endif MOREDIFF = camel80.bin game.bin hbios_rom.bin nascom.bin prefix.bin usrrom.bin \ diff --git a/Source/Images/Makefile b/Source/Images/Makefile index b7953099..277ee494 100644 --- a/Source/Images/Makefile +++ b/Source/Images/Makefile @@ -6,7 +6,8 @@ SYSTEMS = ../CPM22/cpm_wbw.sys ../ZSDOS/zsys_wbw.sys ../CPM3/cpmldr.sys FDIMGS = fd_cpm22.img fd_zsdos.img fd_nzcom.img \ fd_cpm3.img fd_zpm3.img fd_ws4.img HDIMGS = hd_cpm22.img hd_zsdos.img hd_nzcom.img \ - hd_cpm3.img hd_zpm3.img hd_ws4.img hd_bp.img + hd_cpm3.img hd_zpm3.img hd_ws4.img +# HDIMGS += hd_bp.img OBJECTS = $(FDIMGS) $(HDIMGS) hd_combo.img OTHERS = blank144 blankhd From a207ede5bed7f91d38cf0385f568e63c7afab8d0 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Tue, 3 Mar 2020 20:40:46 -0800 Subject: [PATCH 4/4] Update hbios.asm Add improved interrupt protection to HBIOS PEEK, POKE, and BNKCPY functions. --- Source/HBIOS/hbios.asm | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 78bde396..8e49d713 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -2221,11 +2221,15 @@ SYS_BNKCPY: LD HL,(HB_CPYLEN) ; HL := COPY LEN (SAVED IN SETCPY) EX (SP),HL ; RESTORE HL & SET (SP) TO COPY LEN POP BC ; BC := COPY LEN -#IF (INTMODE == 1) +#IF (INTMODE > 0) + LD A,I DI + PUSH AF #ENDIF CALL HB_BNKCPY -#IF (INTMODE == 1) +#IF (INTMODE > 0) + POP AF + JP PO,$+4 EI #ENDIF XOR A @@ -2436,11 +2440,15 @@ SYS_SETSECS: ; RETURN: E=BYTE VALUE ; SYS_PEEK: -#IF (INTMODE == 1) +#IF (INTMODE > 0) + LD A,I DI + PUSH AF #ENDIF CALL HBX_PEEK ; IMPLEMENTED IN PROXY -#IF (INTMODE == 1) +#IF (INTMODE > 0) + POP AF + JP PO,$+4 EI #ENDIF XOR A @@ -2450,11 +2458,15 @@ SYS_PEEK: ; ENTRY: D=BANK ID, HL=ADDRESS IN HBIOS BANK, E=BYTE VALUE ; SYS_POKE: -#IF (INTMODE == 1) +#IF (INTMODE > 0) + LD A,I DI + PUSH AF #ENDIF CALL HBX_POKE ; IMPLEMENTED IN PROXY -#IF (INTMODE == 1) +#IF (INTMODE > 0) + POP AF + JP PO,$+4 EI #ENDIF XOR A @@ -2564,9 +2576,6 @@ SYS_INTSET1: INC HL LD (HL),B ; SAVE MSB EX DE,HL ; HL := PREV VEC -;#IF (INTMODE == 2) -; LD DE,HBX_INT ; DE := IM2 INT ROUTING ENGINE -;#ENDIF XOR A ; SIGNAL SUCCESS RET ; DONE ;