mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
Duodyne PS/2 Keyboard
- Enable PS/2 keyboard input for Duodyne Media I/O board video terminal. - Minor cleanup in TUNE to properly handle Duodyne ACR values.
This commit is contained in:
@@ -35,7 +35,7 @@ AY_ACR .EQU $9C
|
||||
AY_RSEL .EQU $9C
|
||||
AY_RDAT .EQU $9D
|
||||
AY_RIN .EQU AY_RSEL
|
||||
AY_ACR .EQU N8_DEFACR
|
||||
AY_ACR .EQU N8_ACR
|
||||
.ECHO "N8"
|
||||
#ENDIF
|
||||
;
|
||||
@@ -74,6 +74,7 @@ AY_RIN .EQU AY_RSEL
|
||||
AY_ACR .EQU $A2
|
||||
.ECHO "MBC"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (AYMODE == AYMODE_DUO)
|
||||
AY_RSEL .EQU $A4
|
||||
AY_RDAT .EQU $A5
|
||||
@@ -169,6 +170,7 @@ AY38910_INIT:
|
||||
#IF (AYMODE == AYMODE_MBC)
|
||||
PRTS(" MODE=MBC$")
|
||||
#ENDIF
|
||||
;
|
||||
#IF (AYMODE == AYMODE_DUO)
|
||||
PRTS(" MODE=DUO$")
|
||||
#ENDIF
|
||||
@@ -185,6 +187,7 @@ AY38910_INIT:
|
||||
LD A,$FF ; ACTIVATE DEVICE BIT 4 IS AY RESET CONTROL, BIT 3 IS ACTIVE LED
|
||||
OUT (AY_ACR),A ; SET INIT AUX CONTROL REG
|
||||
#ENDIF
|
||||
;
|
||||
#IF ((AYMODE == AYMODE_DUO))
|
||||
LD A,$FE ;
|
||||
OUT (AY_ACR),A ; SET INIT AUX CONTROL REG
|
||||
|
||||
@@ -25,7 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
AUTOCON .EQU FALSE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_UNSUP ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
@@ -82,7 +82,7 @@ LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC]
|
||||
LEDPORT .EQU RTCIO ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU TRUE ; ENABLES DSKY FUNCTIONALITY
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY
|
||||
DSKYDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY
|
||||
ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218)
|
||||
ICMPPIBASE .EQU $88 ; BASE I/O ADDRESS OF ICM PPI
|
||||
|
||||
@@ -65,6 +65,23 @@
|
||||
; - [xio|mio].asm
|
||||
; - unlzsa2s.asm
|
||||
;
|
||||
; AUXILIARY CONTROL REGISTER
|
||||
; --------------------------
|
||||
;
|
||||
; SBC/MK4 N8 MBC VDP MBC PSG RPH DUO
|
||||
; ------------ ------------ ------------ ------------ ------------ ------------
|
||||
; D7 ~ROM_ENABLE ~ROM_ENABLE
|
||||
; D6 TTL1_RTS TTL1_RTS
|
||||
; D5 PSG_GPIO PSG_GPIO PSG_GPIO ~STATUS_LED PSG_GPIO
|
||||
; D4 ~PSG_RES ~PSG_RES ~PSG_RES ROM_A19 ~PSG_RES
|
||||
; D3 STATUS_LED STATUS_LED VDP_LED PSG_LED ROM_A18 PSG_LED
|
||||
; D2 VDP_A14 VDP_A14 ROM_A17 VDP_LED
|
||||
; D1 ~VDP_SYN ~VDP_SYN ROM_A16
|
||||
; D0 ~VDP_RES ~VDP_RES VDP_RES ROM_A15 VDP_RES
|
||||
;
|
||||
; PORT SCG:0x9C 0x94 VDP:0x92 PSG:0xA2 0x80 MEDIA:0xA6
|
||||
;
|
||||
;
|
||||
; INCLUDE GENERIC STUFF
|
||||
;
|
||||
#INCLUDE "std.asm"
|
||||
@@ -2671,6 +2688,11 @@ HB_Z280BUS1:
|
||||
CALL PRTDEC
|
||||
CALL PRTSTRD
|
||||
.TEXT "KB RAM$"
|
||||
;
|
||||
CALL PRTSTRD
|
||||
.TEXT ", HEAP=0x$"
|
||||
LD HL,BNKTOP - HB_END
|
||||
CALL PRTHEXWORDHL
|
||||
;
|
||||
#IFDEF TESTING
|
||||
;
|
||||
@@ -5853,6 +5875,13 @@ HB_ADDENT:
|
||||
; - DWORD: ADDRESS WHERE ALLOC WAS CALLED (VALUE ON TOP OF STACK AT CALL)
|
||||
;
|
||||
HB_ALLOC:
|
||||
;
|
||||
#IFDEF MEMDBG
|
||||
CALL PRTSTRD
|
||||
.TEXT "\r\n>>> ALLOC SIZE=0x$")
|
||||
CALL PRTHEXWORDHL
|
||||
#ENDIF
|
||||
;
|
||||
; SAVE ALLOC SIZE AND REFERENCE ADR FOR SUBSEQUENT HEADER CONSTRUCTION
|
||||
LD (HB_TMPSZ),HL ; SAVE INCOMING SIZE REQUESTED
|
||||
; USE EX (SP),HL INSTEAD????
|
||||
@@ -5876,6 +5905,12 @@ HB_ALLOC:
|
||||
; SAVE NEW HEAP TOP
|
||||
LD DE,(CB_HEAPTOP) ; GET ORIGINAL HEAP TOP
|
||||
LD (CB_HEAPTOP),HL ; SAVE NEW HEAP TOP
|
||||
;
|
||||
#IFDEF MEMDBG
|
||||
CALL PRTSTRD
|
||||
.TEXT " TOP=0x$")
|
||||
CALL PRTHEXWORDHL
|
||||
#ENDIF
|
||||
;
|
||||
; SET HEADER VALUES
|
||||
EX DE,HL ; HEADER ADR TO HL
|
||||
@@ -8001,14 +8036,21 @@ SLACK .EQU BNKTOP - $
|
||||
.ECHO "HBIOS space remaining: "
|
||||
.ECHO SLACK
|
||||
.ECHO " bytes.\n"
|
||||
|
||||
;
|
||||
; DIAGNOSE HBIOS BANK OVERFLOW
|
||||
;
|
||||
#IF (SLACK<0)
|
||||
.ECHO "*** ERROR: HBIOS too big.\n"
|
||||
.ECHO "*** ERROR: HBIOS too big!!!\n"
|
||||
!!! ; FORCE AN ASSEMBLY ERROR
|
||||
#ENDIF
|
||||
;
|
||||
#IF (CCP_SIZ > SLACK)
|
||||
.ECHO "*** ERROR: Insufficient space for CCP cache.\n"
|
||||
; CHECK TO SEE IF WE HAVE ENOUGH HEAP TO CACHE THE CP/M CCP
|
||||
; AND ONE DISK SECTOR. ALTHOUGH SOME OPERATING SYSTEMS OR APPS
|
||||
; MAY NOT NEED THIS, THE MOST COMMON ONES DO. CREATING AN HBIOS
|
||||
; WITHOUT SPACE FOR THIS WILL NOT BE USEFUL.
|
||||
;
|
||||
#IF ((CCP_SIZ + 512) > SLACK)
|
||||
.ECHO "*** ERROR: Insufficient HEAP space!!!\n"
|
||||
!!! ; FORCE AN ASSEMBLY ERROR
|
||||
#ENDIF
|
||||
;
|
||||
|
||||
@@ -121,9 +121,9 @@ TMS_PPIA .EQU 0 ; PPI PORT A
|
||||
TMS_PPIB .EQU 0 ; PPI PORT B
|
||||
TMS_PPIC .EQU 0 ; PPI PORT C
|
||||
TMS_PPIX .EQU 0 ; PPI CONTROL PORT
|
||||
TMS_KBDDATA .EQU $E2 ; KBD CTLR DATA PORT
|
||||
TMS_KBDST .EQU $E3 ; KBD CTLR STATUS/CMD PORT
|
||||
.ECHO "MBC"
|
||||
TMS_KBDDATA .EQU $4C ; KBD CTLR DATA PORT
|
||||
TMS_KBDST .EQU $4D ; KBD CTLR STATUS/CMD PORT
|
||||
.ECHO "DUO"
|
||||
#ENDIF
|
||||
;
|
||||
.ECHO ", IO="
|
||||
@@ -158,8 +158,8 @@ TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
|
||||
PPKENABLE .SET TRUE ; INCLUDE PPK KEYBOARD SUPPORT
|
||||
#ENDIF
|
||||
;
|
||||
#IF ((TMSMODE == TMSMODE_MSXKBD) | (TMSMODE == TMSMODE_MBC))
|
||||
PPKENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT
|
||||
#IF ((TMSMODE == TMSMODE_MSXKBD) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO))
|
||||
KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT
|
||||
#ENDIF
|
||||
;
|
||||
; TMS_IODELAY IS USED TO ADD RECOVERY TIME TO TMS9918/V9958 ACCESSES
|
||||
@@ -205,10 +205,9 @@ TMS_INIT:
|
||||
|
||||
#IF ((TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO))
|
||||
LD A,$FE
|
||||
OUT (TMS_ACR),A ; INIT AUX CONTROL REG
|
||||
OUT (TMS_ACR),A ; CLEAR VDP RESET
|
||||
#ENDIF
|
||||
|
||||
|
||||
;
|
||||
LD IY,TMS_IDAT ; POINTER TO INSTANCE DATA
|
||||
;
|
||||
#IF (TMSMODE == TMSMODE_SCG)
|
||||
@@ -254,7 +253,7 @@ TMS_INIT1:
|
||||
#IF (TMSMODE == TMSMODE_N8)
|
||||
CALL PPK_INIT ; INITIALIZE PPI KEYBOARD DRIVER
|
||||
#ENDIF
|
||||
#IF ((TMSMODE == TMSMODE_MSXKBD) | (TMSMODE == TMSMODE_MBC))
|
||||
#IF ((TMSMODE == TMSMODE_MSXKBD) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO))
|
||||
CALL KBD_INIT ; INITIALIZE 8242 KEYBOARD DRIVER
|
||||
#ENDIF
|
||||
#IF MKYENABLE
|
||||
@@ -309,7 +308,7 @@ TMS_FNTBL:
|
||||
.DW PPK_FLUSH
|
||||
.DW PPK_READ
|
||||
#ELSE
|
||||
#IF ((TMSMODE == TMSMODE_MSXKBD) | (TMSMODE == TMSMODE_MBC) )
|
||||
#IF ((TMSMODE == TMSMODE_MSXKBD) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO))
|
||||
.DW KBD_STAT
|
||||
.DW KBD_FLUSH
|
||||
.DW KBD_READ
|
||||
|
||||
Reference in New Issue
Block a user