Browse Source

Z280 Tweaks

- Interrupt routines that change the Z280 I/O page register now save and restore the original value.
pull/199/head
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 PRIMARY TIMER LOGIC
CALL HB_TIMINT 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 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 .DB $ED,$6E ; LDCTL (C),HL
; ;
; CLEAR END OF COUNT CONDITION TO RESET INTERRUPT ; CLEAR END OF COUNT CONDITION TO RESET INTERRUPT
@ -3575,9 +3577,9 @@ Z280_TIMINT:
RES 1,A ; CLEAR CC RES 1,A ; CLEAR CC
OUT (Z280_CT0_CMDST),A ; SET C/T 0 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 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 .DB $ED,$6E ; LDCTL (C),HL
; ;
; RESTORE REGISTERS ; RESTORE REGISTERS

34
Source/HBIOS/z2u.asm

@ -171,9 +171,11 @@ Z2U_INT:
PUSH DE PUSH DE
PUSH HL 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 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 .DB $ED,$6E ; LDCTL (C),HL
; ;
; CHECK TO SEE IF SOMETHING IS ACTUALLY THERE ; CHECK TO SEE IF SOMETHING IS ACTUALLY THERE
@ -228,9 +230,9 @@ Z2U_INTRCV3:
JR NZ,Z2U_INTRCV1 JR NZ,Z2U_INTRCV1
; ;
Z2U_INTRCV4: 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 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 .DB $ED,$6E ; LDCTL (C),HL
; ;
; RESTORE REGISTERS ; RESTORE REGISTERS
@ -351,7 +353,6 @@ Z2U_OUT:
#IF (INTMODE < 3) #IF (INTMODE < 3)
; ;
Z2U_IST: Z2U_IST:
;
; START BY SELECTING I/O PAGE $FE ; START BY SELECTING I/O PAGE $FE
LD L,$FE ; Z280 UART REGISTERS AT 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 LD C,Z280_IOPR ; REG C POINTS TO I/O PAGE REGISTER
@ -368,6 +369,7 @@ Z2U_IST:
; ;
OR A ; SET FLAGS OR A ; SET FLAGS
JP Z,CIO_IDLE ; NOT READY, RETURN VIA IDLE PROCESSING JP Z,CIO_IDLE ; NOT READY, RETURN VIA IDLE PROCESSING
RET RET
; ;
#ELSE #ELSE
@ -421,6 +423,7 @@ Z2U_INITDEV:
Z2U_INITSAFE: Z2U_INITSAFE:
LD A,%11000010 ; 8N0, DIV 16, NO C/T LD A,%11000010 ; 8N0, DIV 16, NO C/T
LD (Z2U_CFGREG),A ; SAVE IT LD (Z2U_CFGREG),A ; SAVE IT
LD HL,1 ; C/T DIV 1
JR Z2U_INITDEV8 ; DO IT JR Z2U_INITDEV8 ; DO IT
; ;
Z2U_INITDEVX: Z2U_INITDEVX:
@ -436,6 +439,27 @@ Z2U_INITDEVX:
; ;
Z2U_INITDEV1: Z2U_INITDEV1:
LD (Z2U_NEWCFG),DE ; SAVE NEW CONFIG 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 LD A,D ; HIWORD OF CONFIG
AND $1F ; ISOLATE BAUD RATE AND $1F ; ISOLATE BAUD RATE
PUSH AF PUSH AF

2
Source/ver.inc

@ -2,4 +2,4 @@
#DEFINE RMN 1 #DEFINE RMN 1
#DEFINE RUP 1 #DEFINE RUP 1
#DEFINE RTP 0 #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 rup equ 1
rtp equ 0 rtp equ 0
biosver macro biosver macro
db "3.1.1-pre.45"
db "3.1.1-pre.46"
endm endm

Loading…
Cancel
Save