Browse Source

Z280 Tweaks

- Interrupt routines that change the Z280 I/O page register now save and restore the original value.
patch
Wayne Warthen 5 years ago
parent
commit
0d6c792282
  1. 10
      Source/HBIOS/hbios.asm
  2. 34
      Source/HBIOS/z2u.asm
  3. 2
      Source/ver.inc
  4. 2
      Source/ver.lib

10
Source/HBIOS/hbios.asm

@ -3565,9 +3565,11 @@ Z280_TIMINT:
; CALL PRIMARY TIMER LOGIC
CALL HB_TIMINT
;
; SELECT I/O PAGE $FE
LD L,$FE ; COUNTER/TIMER I/O PAGE
; SELECT I/O PAGE $FE (SAVING PREVIOUS VALUE)
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER
.DB $ED,$66 ; LDCTL HL,(C) ; GET CURRENT I/O PAGE
PUSH HL ; SAVE IT
LD L,$FE ; NEW COUNTER/TIMER I/O PAGE
.DB $ED,$6E ; LDCTL (C),HL
;
; CLEAR END OF COUNT CONDITION TO RESET INTERRUPT
@ -3575,9 +3577,9 @@ Z280_TIMINT:
RES 1,A ; CLEAR CC
OUT (Z280_CT0_CMDST),A ; SET C/T 0
;
; RESTORE I/O PAGE TO $00
LD L,$00 ; NORMAL I/O REG IS $00
; RESTORE I/O PAGE
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER
POP HL ; RECOVER ORIGINAL I/O PAGE
.DB $ED,$6E ; LDCTL (C),HL
;
; RESTORE REGISTERS

34
Source/HBIOS/z2u.asm

@ -171,9 +171,11 @@ Z2U_INT:
PUSH DE
PUSH HL
;
; START BY SELECTING I/O PAGE $FE
LD L,$FE ; Z280 UART REGISTERS AT I/O PAGE $FE
; START BY SELECTING I/O PAGE $FE (SAVING PREVIOUS VALUE)
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER
.DB $ED,$66 ; LDCTL HL,(C) ; GET CURRENT I/O PAGE
PUSH HL ; SAVE IT
LD L,$FE ; NEW COUNTER/TIMER I/O PAGE
.DB $ED,$6E ; LDCTL (C),HL
;
; CHECK TO SEE IF SOMETHING IS ACTUALLY THERE
@ -228,9 +230,9 @@ Z2U_INTRCV3:
JR NZ,Z2U_INTRCV1
;
Z2U_INTRCV4:
; RESTORE I/O PAGE TO $00
LD L,$00 ; NORMAL I/O REG IS $00
; RESTORE I/O PAGE
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER
POP HL ; RECOVER ORIGINAL I/O PAGE
.DB $ED,$6E ; LDCTL (C),HL
;
; RESTORE REGISTERS
@ -351,7 +353,6 @@ Z2U_OUT:
#IF (INTMODE < 3)
;
Z2U_IST:
;
; START BY SELECTING I/O PAGE $FE
LD L,$FE ; Z280 UART REGISTERS AT I/O PAGE $FE
LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER
@ -368,6 +369,7 @@ Z2U_IST:
;
OR A ; SET FLAGS
JP Z,CIO_IDLE ; NOT READY, RETURN VIA IDLE PROCESSING
RET
;
#ELSE
@ -421,6 +423,7 @@ Z2U_INITDEV:
Z2U_INITSAFE:
LD A,%11000010 ; 8N0, DIV 16, NO C/T
LD (Z2U_CFGREG),A ; SAVE IT
LD HL,1 ; C/T DIV 1
JR Z2U_INITDEV8 ; DO IT
;
Z2U_INITDEVX:
@ -436,6 +439,27 @@ Z2U_INITDEVX:
;
Z2U_INITDEV1:
LD (Z2U_NEWCFG),DE ; SAVE NEW CONFIG
;
; HACK FOR TESTING!!!
;
#IF FALSE
;LD A,%11000000 ; 8N0, DIV 1, NO C/T
LD A,%11000010 ; 8N0, DIV 16, NO C/T
;LD A,%11000100 ; 8N0, DIV 32, NO C/T
;LD A,%11000110 ; 8N0, DIV 64, NO C/T
LD (Z2U_CFGREG),A ; SAVE UART CONFIG VALUE
;LD HL,1 ; 24MHZ / 8 / 1
LD HL,2 ; 24MHZ / 8 / 2
;LD HL,3 ; 24MHZ / 8 / 5
;LD HL,15 ; 24MHZ / 8 / 15
;LD HL,26 ; 24MHZ / 8 / 26 = 115384 BAUD (~115200)
;LD HL,52 ; 24MHZ / 8 / 52 = 57692 BAUD (~57600)
JP Z2U_INITDEV8 ; SKIP AHEAD TO IMPLMENT IT
#ENDIF
;
;
;
LD A,D ; HIWORD OF CONFIG
AND $1F ; ISOLATE BAUD RATE
PUSH AF

2
Source/ver.inc

@ -2,4 +2,4 @@
#DEFINE RMN 1
#DEFINE RUP 1
#DEFINE RTP 0
#DEFINE BIOSVER "3.1.1-pre.45"
#DEFINE BIOSVER "3.1.1-pre.46"

2
Source/ver.lib

@ -3,5 +3,5 @@ rmn equ 1
rup equ 1
rtp equ 0
biosver macro
db "3.1.1-pre.45"
db "3.1.1-pre.46"
endm

Loading…
Cancel
Save