mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
@@ -64,7 +64,6 @@ CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
CPUOSC .EQU 1000000 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
INTPS2KBD .EQU FALSE ; USE INTERRUPTS FOR PS2 KEYBOARD
|
||||
DEFSERCFG .EQU SER_9600_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
@@ -174,6 +173,7 @@ KBDTRACE .EQU 1 ; KBD DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPKKBLOUT .EQU KBD_US ; PPK KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
KBDKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
MKYKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
KBDINTS .EQU FALSE ; ENABLE KBD (PS2) KEYBOARD INTERRUPTS
|
||||
;
|
||||
DSRTCENABLE .EQU FALSE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTCMODE_[STD|MFPIC|K80W]
|
||||
|
||||
@@ -921,3 +921,11 @@ CVDU_IDAT:
|
||||
.DB KBDMODE_PS2 ; PS/2 8242 KEYBOARD CONTROLLER
|
||||
.DB CVDU_KBDST
|
||||
.DB CVDU_KBDDATA
|
||||
;
|
||||
; IF WE ARE USING PS2 INTERRUPTS, WE NEED TO PASS THE INSTANCE
|
||||
; DATA POINTER TO PS2IFACE.INC VIA KBDIDAT FOR USE BY THE INTERRUPT
|
||||
; HANDLER IN PS2IFACE.INC.
|
||||
;
|
||||
#IF (KBDINTS)
|
||||
KBDIDAT .EQU CVDU_IDAT
|
||||
#ENDIF
|
||||
|
||||
@@ -350,3 +350,11 @@ GDC_IDAT:
|
||||
.DB KBDMODE_PS2 ; PS/2 8242 KEYBOARD CONTROLLER
|
||||
.DB GDC_KBDST
|
||||
.DB GDC_KBDDATA
|
||||
;
|
||||
; IF WE ARE USING PS2 INTERRUPTS, WE NEED TO PASS THE INSTANCE
|
||||
; DATA POINTER TO PS2IFACE.INC VIA KBDIDAT FOR USE BY THE INTERRUPT
|
||||
; HANDLER IN PS2IFACE.INC.
|
||||
;
|
||||
#IF (KBDINTS)
|
||||
KBDIDAT .EQU GDC_IDAT
|
||||
#ENDIF
|
||||
|
||||
@@ -3030,6 +3030,23 @@ HB_SPDTST:
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
; ENABLE INTERRUPTS
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
;
|
||||
;;;CALL HB_PREINT_HOOKS ; HACK TO ALLOW SOME DRIVERS TO DO PRE INTERRUPT STUFF
|
||||
;
|
||||
#IFDEF TESTING
|
||||
;
|
||||
INTTEST:
|
||||
; TEST TO SEE IF SOMEBODY ENABLED INTS EARLY!
|
||||
LD A,I
|
||||
JP PO,INTTEST_Z ; IF PO, INTS DISABLED AS EXPECTED
|
||||
PRTX(STR_INTWARN) ; WARNING
|
||||
JR INTTEST_Z ; CONTINUE
|
||||
;
|
||||
STR_INTWARN .TEXT "\r\n\r\nWARNING: INTERRUPTS ENABLED TOO EARLY!!!$"
|
||||
;
|
||||
INTTEST_Z:
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
HB_EI ; INTERRUPTS SHOULD BE OK NOW
|
||||
;
|
||||
@@ -7595,7 +7612,7 @@ Z2DMAADR2:
|
||||
#ENDIF
|
||||
;
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
; ROUTINES FOR NON VOLATILE (NVRAM) SWITCHES
|
||||
; ROUTINES FOR NON VOLITILE (NVRAM) SWITCHES
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
;
|
||||
; RESET CONTENTS OF NVRAM, STORING INTO
|
||||
@@ -9357,6 +9374,15 @@ SIZ_EZ80DRVS .EQU $ - ORG_EZ80DRVS
|
||||
MEMECHO "RTCDEF="
|
||||
MEMECHO RTCDEF
|
||||
MEMECHO "\n"
|
||||
;;;;
|
||||
;;;; PRE-INTERRUPT HOOKS
|
||||
;;;;
|
||||
;;;HB_PREINT_HOOKS:
|
||||
;;;;
|
||||
;;;#IF (KBDENABLE)
|
||||
;;; CALL KBD_PREINT_HOOK
|
||||
;;;#ENDIF
|
||||
;;; RET
|
||||
;
|
||||
HB_DRIVERS_END .EQU $
|
||||
;
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
;
|
||||
;
|
||||
; IN DEBUG MODE:
|
||||
: >>nn SHOWS HEX COMMAND nn BEING WRITTEN TO THE COMMAND PORT
|
||||
; >>nn SHOWS HEX COMMAND nn BEING WRITTEN TO THE COMMAND PORT
|
||||
; >nn SHOWS HEX VALUE nn BEING WRITTEN TO THE DATA PORT
|
||||
; <nn SHOWS HEX VALUE READ FROM DATA PORT
|
||||
;__________________________________________________________________________________________________
|
||||
@@ -70,6 +70,25 @@ KBD_IDLE .DB 0 ; IDLE COUNT
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
#INCLUDE "ps2iface.inc"
|
||||
;;;;
|
||||
;;;; HACK TO ENSURE PS/2 CONTROLLER INTERRUPTS ARE TURNED OFF!!!
|
||||
;;;;
|
||||
;;;KBD_PREINT_HOOK:
|
||||
;;;#IF (KBDINTS)
|
||||
;;; LD IY,KBDIDAT
|
||||
;;; LD A,$60 ; SET COMMAND REGISTER
|
||||
;;; CALL KBD_PUTCMD ; SEND IT
|
||||
;;; LD A,$20 ; XLAT DISABLED, MOUSE DISABLED, NO INTS
|
||||
;;; CALL KBD_PUTDATA ; SEND IT
|
||||
;;;;
|
||||
;;; ; FLUSH ANY PENDING OUTPUT
|
||||
;;; LD B,16
|
||||
;;;KBD_PREINT_HOOK1:
|
||||
;;; CALL KBD_IN_P
|
||||
;;; DJNZ KBD_PREINT_HOOK1
|
||||
;;;#ENDIF
|
||||
RET
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
; KEYBOARD INITIALIZATION
|
||||
;__________________________________________________________________________________________________
|
||||
@@ -79,7 +98,7 @@ KBD_INIT:
|
||||
PRTS("KBD: IO=0x$") ; DISPLAY
|
||||
LD A,(IY+KBD_DAT) ; PORT SETTING
|
||||
CALL PRTHEXBYTE
|
||||
#IF ((INTMODE == 2) & INTPS2KBD)
|
||||
#IF ((INTMODE == 2) & KBDINTS)
|
||||
PRTS(" INT #$") ; DISPLAY
|
||||
LD A,INT_PS2KB ; INTERRUPT SETTING
|
||||
CALL PRTDECB
|
||||
@@ -94,7 +113,7 @@ KBD_INIT:
|
||||
CP KBDMODE_VRC ; VRC?
|
||||
JR Z,KBD_INIT1 ; IF SO, MUST ASSUME PRESENT
|
||||
;
|
||||
#IF ((INTMODE == 2) & INTPS2KBD)
|
||||
#IF ((INTMODE == 2) & KBDINTS)
|
||||
HB_DI ; DISABLE INTERRUPTS WHILE WE PROBE
|
||||
#ENDIF
|
||||
LD A,$AA ; CONTROLLER SELF TEST
|
||||
@@ -103,14 +122,14 @@ KBD_INIT:
|
||||
;
|
||||
CP $55 ; IS IT THERE?
|
||||
JR Z,KBD_INIT1 ; IF SO, CONTINUE
|
||||
#IF ((INTMODE == 2) & INTPS2KBD)
|
||||
#IF ((INTMODE == 2) & KBDINTS)
|
||||
HB_EI ; RESTORE INTERRUPTS
|
||||
#ENDIF
|
||||
PRTS(" NOT PRESENT$") ; DIAGNOSE PROBLEM
|
||||
RET ; BAIL OUT
|
||||
;
|
||||
KBD_INIT1:
|
||||
#IF ((INTMODE == 2) & INTPS2KBD)
|
||||
#IF ((INTMODE == 2) & KBDINTS)
|
||||
; CALL KBDQINIT ; INITIALIZE QUEUE
|
||||
LD HL,KBD_INT ; INSTALL VECTOR
|
||||
LD (IVT(INT_PS2KB)),HL ; IVT INDEX
|
||||
@@ -131,7 +150,7 @@ KBD_INIT2:
|
||||
LD A,$60 ; SET COMMAND REGISTER
|
||||
CALL KBD_PUTCMD ; SEND IT
|
||||
|
||||
#IF ((INTMODE == 2) & INTPS2KBD)
|
||||
#IF ((INTMODE == 2) & KBDINTS)
|
||||
LD A,$21 ; XLAT DISABLED, MOUSE DISABLED, WITH INTS
|
||||
#ELSE
|
||||
LD A,$20 ; XLAT DISABLED, MOUSE DISABLED, NO INTS
|
||||
|
||||
@@ -8,34 +8,7 @@
|
||||
; CURRENTLY CONFIGURED FOR INT #2 ON DUODYNE WITH I/O MULTI BOARD.
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
#IF ((INTMODE == 2) & INTPS2KBD))
|
||||
;
|
||||
; SETUP POINTER TO KEYBOARD PORT
|
||||
;
|
||||
#IF (TMSENABLE)
|
||||
KBDIDAT .EQU TMS_IDAT ; KBD INSTANCE DATA TABLE
|
||||
#ELSE
|
||||
|
||||
#IF (GDCENABLE)
|
||||
KBDIDAT .EQU GDC_IDAT ; KBD INSTANCE DATA TABLE
|
||||
#ELSE
|
||||
|
||||
#IF (CVDUENABLE)
|
||||
KBDIDAT .EQU CVDU_IDAT ; KBD INSTANCE DATA TABLE
|
||||
#ELSE
|
||||
|
||||
#IF (VRCENABLE)
|
||||
KBDIDAT .EQU VRC_IDAT ; KBD INSTANCE DATA TABLE
|
||||
#ELSE
|
||||
|
||||
#IF (VGAENABLE)
|
||||
KBDIDAT .EQU VGA_IDAT ; KBD INSTANCE DATA TABLE
|
||||
#ENDIF
|
||||
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
#IF ((INTMODE == 2) & KBDINTS))
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
; KEYBOARD QUEUE FOR INTERRUPTS
|
||||
@@ -113,7 +86,7 @@ KBDQFULL: ; RETURN Z IF QUEUE IS FULL
|
||||
; KEYBOARD READ
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
#IF ((INTMODE == 2) & INTPS2KBD))
|
||||
#IF ((INTMODE == 2) & KBDINTS))
|
||||
;
|
||||
; RETURN A BYTE TO FROM KEYBOARD QUEUE
|
||||
; NOTE THE QUEUE INDEX'S NEVER DECREASE IN SIZE.
|
||||
@@ -153,7 +126,7 @@ KBD_IN_P:
|
||||
; KEYBOARD INPUT STATUS
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
#IF ((INTMODE == 2) & INTPS2KBD))
|
||||
#IF ((INTMODE == 2) & KBDINTS))
|
||||
KBD_IST:
|
||||
KBDQLEN: ; EXIT WITH NUMBER OF CHARACTERS IN QUEUE
|
||||
LD A,(KBDQPUTX) ; Z STATUS AND ZERO IF NONE
|
||||
@@ -204,7 +177,7 @@ KBD_OST:
|
||||
; DEBUG QUEUE
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
#IF ((INTMODE == 2) & INTPS2KBD & 0)
|
||||
#IF ((INTMODE == 2) & KBDINTS & 0)
|
||||
KBDQDBG:
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
|
||||
@@ -211,7 +211,7 @@ TMS_PREINIT:
|
||||
RES TMSINTEN, A ; RESET INTERRUPT ENABLE BIT
|
||||
LD (TMS_INITVDU_REG_1), A
|
||||
LD C, TMSCTRL1
|
||||
JP TMS_SET
|
||||
JP TMS_SET_X ; SET REG W/O INT MGMT
|
||||
;
|
||||
TMS_INIT:
|
||||
#IF (CPUFAM == CPU_Z180)
|
||||
@@ -584,10 +584,18 @@ TMS_READ:
|
||||
;----------------------------------------------------------------------
|
||||
; SET TMS9918 REGISTER VALUE
|
||||
; TMS_SET WRITES VALUE IN A TO VDU REGISTER SPECIFIED IN C
|
||||
; TMS_SET_X IS A VARIANT THAT DOES NOT DO INT MGMT (TMS_PREINIT)
|
||||
;----------------------------------------------------------------------
|
||||
;
|
||||
TMS_SET:
|
||||
; NORMALLY, WE WRAP REG CHANGES WITH DI/EI TO AVOID CONFLICTS
|
||||
HB_DI
|
||||
CALL TMS_SET_X
|
||||
HB_EI
|
||||
RET
|
||||
;
|
||||
TMS_SET_X:
|
||||
; ENTRY POINT W/O INT MGMT NEEDED BY TMS_PREINIT
|
||||
EZ80_IO
|
||||
OUT (TMS_CMDREG),A ; WRITE IT
|
||||
TMS_IODELAY
|
||||
@@ -596,7 +604,6 @@ TMS_SET:
|
||||
EZ80_IO
|
||||
OUT (TMS_CMDREG),A ; SELECT THE DESIRED REGISTER
|
||||
TMS_IODELAY
|
||||
HB_EI
|
||||
RET
|
||||
;
|
||||
;----------------------------------------------------------------------
|
||||
@@ -1182,6 +1189,14 @@ TMS_IDAT:
|
||||
.DB TMS_DATREG
|
||||
.DB TMS_CMDREG
|
||||
;
|
||||
; IF WE ARE USING PS2 INTERRUPTS, WE NEED TO PASS THE INSTANCE
|
||||
; DATA POINTER TO PS2IFACE.INC VIA KBDIDAT FOR USE BY THE INTERRUPT
|
||||
; HANDLER IN PS2IFACE.INC.
|
||||
;
|
||||
#IF ((TMSKBD == TMSKBD_KBD) & KBDINTS)
|
||||
KBDIDAT .EQU TMS_IDAT
|
||||
#ENDIF
|
||||
;
|
||||
;==================================================================================================
|
||||
; TMS DRIVER - TMS9918 REGISTER INITIALIZATION
|
||||
;==================================================================================================
|
||||
|
||||
@@ -1056,3 +1056,11 @@ VGA_IDAT:
|
||||
.DB KBDMODE_PS2 ; PS/2 8242 KEYBOARD CONTROLLER
|
||||
.DB VGA_KBDST
|
||||
.DB VGA_KBDDATA
|
||||
;
|
||||
; IF WE ARE USING PS2 INTERRUPTS, WE NEED TO PASS THE INSTANCE
|
||||
; DATA POINTER TO PS2IFACE.INC VIA KBDIDAT FOR USE BY THE INTERRUPT
|
||||
; HANDLER IN PS2IFACE.INC.
|
||||
;
|
||||
#IF (KBDINTS)
|
||||
KBDIDAT .EQU VGA_IDAT
|
||||
#ENDIF
|
||||
|
||||
@@ -675,3 +675,11 @@ VRC_IDAT:
|
||||
.DB KBDMODE_VRC ; VGARC KEYBOARD CONTROLLER
|
||||
.DB VRC_KBDST
|
||||
.DB VRC_KBDDATA
|
||||
;
|
||||
; IF WE ARE USING PS2 INTERRUPTS, WE NEED TO PASS THE INSTANCE
|
||||
; DATA POINTER TO PS2IFACE.INC VIA KBDIDAT FOR USE BY THE INTERRUPT
|
||||
; HANDLER IN PS2IFACE.INC.
|
||||
;
|
||||
#IF (KBDINTS)
|
||||
KBDIDAT .EQU VRC_IDAT
|
||||
#ENDIF
|
||||
|
||||
Reference in New Issue
Block a user