|
|
|
@ -474,7 +474,6 @@ HBX_BC_SP .EQU $ - 2 ; ... TO ORIGINAL VALUE |
|
|
|
#IF (CPUFAM == CPU_Z280) |
|
|
|
POP IY |
|
|
|
PUSH BC |
|
|
|
;LD C,$00 |
|
|
|
LD C,Z280_MSR |
|
|
|
;LDCTL (C),IY |
|
|
|
.DB $FD,$ED,$6E |
|
|
|
@ -844,7 +843,6 @@ HB_START: |
|
|
|
LD SP,HBX_LOC ; SETUP INITIAL STACK JUST BELOW HBIOS PROXY |
|
|
|
; |
|
|
|
#IF (CPUFAM == CPU_Z280) |
|
|
|
;;LD C,$12 ; CACHE CONTROL REGISTER |
|
|
|
;LD C,Z280_CCR ; CACHE CONTROL REGISTER |
|
|
|
;LD HL,$0060 ; DISABLE INSTRUCTION CACHE |
|
|
|
;;LDCTL (C),HL ; SET IT (8 BITS) |
|
|
|
@ -852,7 +850,6 @@ HB_START: |
|
|
|
;;PCACHE ; PURGE ANY REMNANTS OF CACHE |
|
|
|
;.DB $ED,$65 |
|
|
|
; |
|
|
|
;LD C,$02 ; BUS TIMING AND CONTROL REGISTER |
|
|
|
LD C,Z280_BTCR ; BUS TIMING AND CONTROL REGISTER |
|
|
|
LD HL,$0033 ; 3 I/O WAIT STATES ADDED |
|
|
|
;LD HL,$00F3 ; 3 I/O W/S & 3 INT ACK W/S |
|
|
|
@ -1219,16 +1216,6 @@ HB_CPU2: |
|
|
|
LD (CB_CPUKHZ),DE |
|
|
|
; |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
;#IF (CPUFAM == CPU_Z280) |
|
|
|
;; |
|
|
|
; ; Z280 PHI IS OSC / 2 |
|
|
|
; LD A,(CPUOSC / 2) / 1000000 |
|
|
|
; LD (CB_CPUMHZ),A |
|
|
|
; LD DE,(CPUOSC / 2) / 1000 |
|
|
|
; LD (CB_CPUKHZ),DE |
|
|
|
;; |
|
|
|
;#ENDIF |
|
|
|
; |
|
|
|
DIAG(%00011111) |
|
|
|
; |
|
|
|
@ -2970,71 +2957,8 @@ SYS_PEEK: |
|
|
|
; |
|
|
|
SYS_POKE: |
|
|
|
#IF (INTMODE == 1) |
|
|
|
|
|
|
|
;EI |
|
|
|
; |
|
|
|
;LD C,$00 |
|
|
|
;.DB $ED,$66 |
|
|
|
;CALL PC_SPACE |
|
|
|
;CALL PRTHEXWORDHL |
|
|
|
; |
|
|
|
;CALL PC_SPACE |
|
|
|
;LD A,I |
|
|
|
;PUSH AF |
|
|
|
;POP HL |
|
|
|
;CALL PRTHEXWORDHL |
|
|
|
; |
|
|
|
;DI |
|
|
|
; |
|
|
|
;LD C,$00 |
|
|
|
;.DB $ED,$66 |
|
|
|
;CALL PC_SPACE |
|
|
|
;CALL PRTHEXWORDHL |
|
|
|
; |
|
|
|
;CALL PC_SPACE |
|
|
|
;LD A,I |
|
|
|
;PUSH AF |
|
|
|
;POP HL |
|
|
|
;CALL PRTHEXWORDHL |
|
|
|
; |
|
|
|
; |
|
|
|
; |
|
|
|
; |
|
|
|
;OUT (DIAGPORT),A |
|
|
|
;DI |
|
|
|
;HALT |
|
|
|
; |
|
|
|
;;PUSH HL |
|
|
|
;;;LD C,$00 |
|
|
|
;;LD C,Z280_MSR |
|
|
|
;;LDCTL HL,(C) |
|
|
|
;;BIT 5,L |
|
|
|
;;POP HL |
|
|
|
;;PUSH AF |
|
|
|
;;DI |
|
|
|
; |
|
|
|
;;POP AF |
|
|
|
;;JP Z,$+4 |
|
|
|
;;EI |
|
|
|
; |
|
|
|
; |
|
|
|
; |
|
|
|
;;PUSH IY |
|
|
|
;;;LD C,$00 |
|
|
|
;;LD C,Z280_MSR |
|
|
|
;;LDCTL IY,(C) |
|
|
|
;;PUSH IY |
|
|
|
;;DI |
|
|
|
; |
|
|
|
;;;LD C,$00 |
|
|
|
;;LD C,Z280_MSR |
|
|
|
;;POP IY |
|
|
|
;;LDCTL (C),IY |
|
|
|
;;POP IY |
|
|
|
|
|
|
|
#IF (CPUFAM == CPU_Z280) |
|
|
|
PUSH IY |
|
|
|
;LD C,$00 |
|
|
|
LD C,Z280_MSR |
|
|
|
;LDCTL IY,(C) |
|
|
|
.DB $FD,$ED,$66 |
|
|
|
@ -3049,7 +2973,6 @@ SYS_POKE: |
|
|
|
CALL HBX_POKE ; IMPLEMENTED IN PROXY |
|
|
|
#IF (INTMODE == 1) |
|
|
|
#IF (CPUFAM == CPU_Z280) |
|
|
|
;LD C,$00 |
|
|
|
LD C,Z280_MSR |
|
|
|
POP IY |
|
|
|
;LDCTL (C),IY |
|
|
|
@ -3815,21 +3738,21 @@ SIZ_AY38910 .EQU $ - ORG_AY38910 |
|
|
|
; |
|
|
|
HB_CPUSPD: |
|
|
|
; |
|
|
|
#IF (DSRTCENABLE) |
|
|
|
#IF (DSRTCENABLE & ((CPUFAM == CPU_Z80) | (CPUFAM == CPU_Z180))) |
|
|
|
; |
|
|
|
LD A,(DSRTC_STAT) ; GET RTC STATUS |
|
|
|
OR A ; SET FLAGS |
|
|
|
RET NZ ; NOT ZERO IS ERROR |
|
|
|
; |
|
|
|
HB_CPUSPD1: |
|
|
|
#IF (CPUFAM == CPU_Z180) |
|
|
|
#IF (CPUFAM == CPU_Z180) |
|
|
|
; USE MEM W/S = 2 AND I/O W/S = 3 FOR TEST |
|
|
|
IN0 A,(Z180_DCNTL) |
|
|
|
PUSH AF |
|
|
|
LD A,$B0 |
|
|
|
;LD A,$F0 |
|
|
|
OUT0 (Z180_DCNTL),A |
|
|
|
#ENDIF |
|
|
|
#ENDIF |
|
|
|
|
|
|
|
; WAIT FOR AN INITIAL TICK TO ALIGN, THEN WAIT |
|
|
|
; FOR SECOND TICK AND TO GET A FULL ONE SECOND LOOP COUNT |
|
|
|
@ -3839,11 +3762,11 @@ HB_CPUSPD1: |
|
|
|
LD (HB_CURSEC),A ; SAVE NEW VALUE |
|
|
|
CALL HB_WAITSEC ; WAIT FOR SECONDS TICK |
|
|
|
; |
|
|
|
#IF (CPUFAM == CPU_Z180) |
|
|
|
#IF (CPUFAM == CPU_Z180) |
|
|
|
; RESTORE W/S SETTINGS FROM BEFORE TEST |
|
|
|
POP AF |
|
|
|
OUT0 (Z180_DCNTL),A |
|
|
|
#ENDIF |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
LD A,H |
|
|
|
OR L |
|
|
|
@ -3874,7 +3797,7 @@ HB_WAITSEC: |
|
|
|
LD DE,0 ; INIT LOOP COUNTER |
|
|
|
HB_WAITSEC1: |
|
|
|
; |
|
|
|
#IF (CPUFAM == CPU_Z80) |
|
|
|
#IF (CPUFAM == CPU_Z80) |
|
|
|
; LOOP TARGET IS 4000 T-STATES, SO CPU FREQ IN KHZ = LOOP COUNT * 4 |
|
|
|
CALL DLY32 |
|
|
|
CALL DLY16 |
|
|
|
@ -3883,9 +3806,9 @@ HB_WAITSEC1: |
|
|
|
SBC HL,HL ; 15 TSTATES |
|
|
|
INC HL ; 6 TSTATES |
|
|
|
INC HL ; 6 TSTATES |
|
|
|
#ENDIF |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
#IF (CPUFAM == CPU_Z180) |
|
|
|
#IF (CPUFAM == CPU_Z180) |
|
|
|
; LOOP TARGET IS 4000 T-STATES, SO CPU FREQ IN KHZ = LOOP COUNT * 4 |
|
|
|
CALL DLY2 |
|
|
|
ADD IX,BC ; 10 + 4 = 14 TSTATES |
|
|
|
@ -3893,7 +3816,7 @@ HB_WAITSEC1: |
|
|
|
NOP ; 5 TSTATES |
|
|
|
NOP ; 5 TSTATES |
|
|
|
NOP ; 5 TSTATES |
|
|
|
#ENDIF |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
PUSH DE ; SAVE COUNTER |
|
|
|
CALL HB_RDSEC ; GET SECONDS |
|
|
|
@ -3916,7 +3839,7 @@ HB_RDSEC: |
|
|
|
LD A,E ; VALUE TO A |
|
|
|
RET |
|
|
|
; |
|
|
|
#ELSE |
|
|
|
#ELSE |
|
|
|
; |
|
|
|
RET ; NO RTC, ABORT |
|
|
|
; |
|
|
|
|