Browse Source

tms: Correctly implemented pre-init to disable interrupts

pull/114/head
Dean Netherton 6 years ago
parent
commit
392e729d57
  1. 6
      Source/HBIOS/hbios.asm
  2. 26
      Source/HBIOS/tms.asm

6
Source/HBIOS/hbios.asm

@ -1255,9 +1255,6 @@ HB_CPU2:
;
#ENDIF
;
#IF (TMSENABLE)
CALL TMS_PREINIT
#ENDIF
;
; INITIALIZE HEAP STORAGE
;
@ -1658,6 +1655,9 @@ HB_PCINITTBL:
#IF (UFENABLE)
.DW UF_PREINIT
#ENDIF
#IF (TMSENABLE)
.DW TMS_PREINIT
#ENDIF
HB_PCINITTBLLEN .EQU (($ - HB_PCINITTBL) / 2)
;==================================================================================================

26
Source/HBIOS/tms.asm

@ -81,11 +81,12 @@ TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
;======================================================================
;
TMS_PREINIT:
#IF (TMSTIMENABLE)
CALL TMS_INT_DIS ; SPECIAL CASE - NEED TO STOP TMS9918 FROM FIRING INTERRUPTS
#ENDIF ; WHEN DRIVER IS LOADED - IT WILL BE RELOADED
RET
; DISABLE INTERRUPT GENERATION
LD A, (TMS_INIT9918_REG_1)
RES TMSINTEN, A ; RESET INTERRUPT ENABLE BIT
LD (TMS_INIT9918_REG_1), A
LD C, TMSCTRL1
JP TMS_SET
;
TMS_INIT:
#IF (CPUFAM == CPU_Z180)
@ -144,21 +145,10 @@ TMS_INIT1:
XOR A ; SIGNAL SUCCESS
RET
#IFDEF APPBOOT
#IF TMSTIMENABLE
; SPECIAL CASE FOR APPBOOT - NEEDING TO DISABLE INTERRUPT GENERATOR
; ISSUE:
; IF THE CURRENT ROMBOOT HAD LOADED THE TMS DRIVER
; THEN THE ROMLOADER MAY START RECEIVING INTERRUPTS
; FROM THE CHIP BEFORE THE TMS DRIVER HAS BEEN RE-
; INITALISED, AND CAUSING BAD INT PANICS
; DISABLE INTERRUPT
TMS_INT_DIS:
LD A, (TMS_INIT9918_REG_1)
RES TMSINTEN, A ; RESET INTERRUPT ENABLE BIT
LD (TMS_INIT9918_REG_1), A
LD C, TMSCTRL1
JP TMS_SET
#ENDIF
#ENDIF
;
;======================================================================

Loading…
Cancel
Save