Browse Source

Finalize v2.9.1 Prerelease 8

Fix possible int mode 1 processing paging conflicts.
patch
Wayne Warthen 7 years ago
parent
commit
931d33eb11
  1. 10
      Binary/ReadMe.txt
  2. 2
      ReadMe.txt
  3. 4
      Source/HBIOS/dsrtc.asm
  4. 40
      Source/HBIOS/hbios.asm
  5. 4
      Source/HBIOS/md.asm
  6. 4
      Source/HBIOS/simrtc.asm

10
Binary/ReadMe.txt

@ -17,6 +17,16 @@ released the directory is populated with the default output files.
However, the output of custom builds will be placed in this directory
as well.
If you only see a few files in this directory, then you downloaded just
the source from GitHub. To retrieve the full release download package,
go to https://github.com/wwarthen/RomWBW. On this page, look for the
text "XX releases" where XX is a number. Click on this text to go to the
releases page. On this page, you will see the latest releases listed.
For each release, you will see a package file called something like
"RomWBW-2.9.0-Package.zip". Click on the package file for the release
you want to download.
ROM Firmware Images (<plt>_<cfg>.rom)
-------------------------------------

2
ReadMe.txt

@ -7,7 +7,7 @@
***********************************************************************
Wayne Warthen (wwarthen@gmail.com)
Version 2.9.1-pre.7, 2018-08-28
Version 2.9.1-pre.8, 2019-02-18
https://www.retrobrewcomputers.org/
RomWBW is a ROM-based implementation of CP/M-80 2.2 and Z-System for

4
Source/HBIOS/dsrtc.asm

@ -206,7 +206,9 @@ DSRTC_GETTIM:
LD HL,DSRTC_TIMBUF ; SOURCE ADR
POP DE ; DEST ADR
LD BC,6 ; LENGTH IS 6 BYTES
HB_IM1DI
CALL HB_BNKCPY ; COPY THE CLOCK DATA
HB_IM1EI
;
; CLEAN UP AND RETURN
XOR A ; SIGNAL SUCCESS
@ -227,7 +229,9 @@ DSRTC_SETTIM:
LD (HB_DSTBNK),A ; SET IT
LD DE,DSRTC_TIMBUF ; DEST ADR
LD BC,6 ; LENGTH IS 6 BYTES
HB_IM1DI
CALL HB_BNKCPY ; COPY THE CLOCK DATA
HB_IM1EI
;
; WRITE TO CLOCK
LD HL,DSRTC_TIMBUF ; POINT TO TIME BUFFER

40
Source/HBIOS/hbios.asm

@ -84,12 +84,24 @@ MODCNT .SET MODCNT + 1
;
#IF (INTMODE == 0)
; NO INTERRUPT HANDLING
#DEFINE HB_DI DI
#DEFINE HB_EI ;
#ELSE
; MODE 1 OR 2 INTERRUPT HANDLING
#DEFINE HB_DI DI
#DEFINE HB_EI EI
#DEFINE HB_DI DI
#DEFINE HB_EI ;
#DEFINE HB_IM1DI ;
#DEFINE HB_IM1EI ;
#ENDIF
#IF (INTMODE == 1)
; MODE 1 INTERRUPT HANDLING
#DEFINE HB_DI DI
#DEFINE HB_EI EI
#DEFINE HB_IM1DI DI
#DEFINE HB_IM1EI EI
#ENDIF
#IF (INTMODE == 2)
; MODE 2 INTERRUPT HANDLING
#DEFINE HB_DI DI
#DEFINE HB_EI EI
#DEFINE HB_IM1DI ;
#DEFINE HB_IM1EI ;
#ENDIF
;
;
@ -294,6 +306,7 @@ HBX_ROM:
HBX_ROM:
RLCA ; TIMES 2 - GET 16K PAGE INSTEAD OF 32K
OUT (MPGSEL_0),A ; BANK_0: 0K - 16K
;OUT (DIAGP),A ; *DEBUG*
INC A ;
OUT (MPGSEL_1),A ; BANK_1: 16K - 32K
RET ; DONE
@ -395,7 +408,7 @@ HBX_BC_ITER:
CALL HBX_BNKSEL ; SWITCH TO DEST BANK
LDIR ; BUF (HL) -> DE, BC BYTES, DE UPDATED DEST ADR
POP HL ; RECOVER UPDATED SRC ADR
; HL = UPD SRC, DE = UPD DEST, BC = 0
; HL = UPDATED SRC, DE = UPDATED DEST, BC = 0
RET
;
; CALL A ROUTINE IN ANOTHER BANK.
@ -2001,10 +2014,21 @@ HB_TIMINT2:
; BAD INTERRUPT HANDLER
;
HB_BADINT:
#IF 0 ; *DEBUG*
;LD HL,HB_BADINTCNT
;INC (HL)
;LD A,(HL)
;OUT (DIAGP),A
;OR $FF
;RET
;HB_BADINTCNT .DB 0
#ENDIF ; *DEBUG*
CALL NEWLINE2
PRTS("+++ BAD INT: $")
CALL _REGDMP
CALL CONTINUE
;CALL CONTINUE
OR $FF ; SIGNAL INTERRUPT HANDLED
RET
;

4
Source/HBIOS/md.asm

@ -246,7 +246,9 @@ MD_RDSEC:
LD A,B ; GET DESTINATION BANK
LD (HB_DSTBNK),A ; SET IT
POP BC
HB_IM1DI
CALL HB_BNKCPY ; DO THE INTERBANK COPY
HB_IM1EI
XOR A
RET
;
@ -272,7 +274,9 @@ MD_WRSEC:
LD A,B ; GET DESTINATION BANK
LD (HB_DSTBNK),A ; SET IT
POP BC
HB_IM1DI
CALL HB_BNKCPY ; DO THE INTERBANK COPY
HB_IM1EI
XOR A
RET
;

4
Source/HBIOS/simrtc.asm

@ -71,7 +71,9 @@ SIMRTC_GETTIM:
LD HL,SIMRTC_BUF ; SOURCE ADR
POP DE ; DEST ADR
LD BC,SIMRTC_BUFSIZ ; LENGTH
HB_IM1DI
CALL HB_BNKCPY ; COPY THE CLOCK DATA
HB_IM1EI
;
LD DE,60 ; DELAY 60 * 16US = ~1MS
CALL VDELAY ; SLOW DOWN SIMH FOR CLOCK TICKING TEST
@ -101,7 +103,9 @@ SIMRTC_SETTIM:
LD (HB_DSTBNK),A ; SET IT
LD DE,SIMRTC_BUF ; DEST ADR
LD BC,SIMRTC_BUFSIZ ; LENGTH
HB_IM1DI
CALL HB_BNKCPY ; COPY THE CLOCK DATA
HB_IM1EI
;
LD HL,SIMRTC_BUF ; POINT TO TEMP BUF
LD A,SIMRTC_CLKWRITE ; WRITE CLOCK COMMAND

Loading…
Cancel
Save