mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
VDA Device Initialization Flow Cleanup
This commit is contained in:
@@ -132,11 +132,10 @@ DEVICE ($06):
|
||||
E=Device Number
|
||||
C=Device Attributes
|
||||
|
||||
Serial Device Attributes Byte:
|
||||
;7: 1=Floppy, 0=Hard Disk (or similar, e.g. CF, SD, RAM)
|
||||
|
||||
H=Media Type (RS-232, Terminal, etc.)
|
||||
L=Video Unit Id (if Media Type == VDA)
|
||||
Disk Device Attributes Byte:
|
||||
7: 0=RS-232, 1=Terminal
|
||||
|
||||
If Terminal, 3-0 is attached Video Unit #
|
||||
|
||||
==============
|
||||
Disk Functions
|
||||
@@ -265,14 +264,15 @@ Disk 6 SD0: SD Card 4096M, LBA
|
||||
Disk 7 PRPSD0: SD Card 2048M, LBA
|
||||
Disk 8 RF0: RAM Floppy 4M, LBA
|
||||
Serial 0 UART0: RS-232 38400,8N1,HFC
|
||||
Serial 1 PRPCON0: Direct --
|
||||
Serial 2 CVDU0: Direct --
|
||||
Serial 2 VDU0: Direct --
|
||||
Serial 2 TMS0: Direct --
|
||||
Video 0 PRPCON0: VDA Text 80x25, ANSI
|
||||
Video 1 CVDU0: VDA Text 80x25, ANSI
|
||||
Video 2 VDU0: VDA Text 80x25, ANSI
|
||||
Video 3 TMS0: VDA Text 40x25, TTY
|
||||
Serial 1 PRPCON0: Terminal Video 0
|
||||
Serial 2 CVDU0: Terminal Video 1
|
||||
Serial 3 VDU0: Terminal Video 2
|
||||
Serial 4 TMS0: Terminal Video 3
|
||||
Video 0 PRPCON0: CRT Text 80x25, ANSI
|
||||
Video 1 CVDU0: CRT Text 80x25, ANSI
|
||||
Video 2 VDU0: CRT Text 80x25, ANSI
|
||||
Video 3 TMS0: CRT Text 40x25, TTY
|
||||
Video 4 NEC0 CRT Graphics 600x400
|
||||
|
||||
Unit: Function Group & Unit Index
|
||||
Device: <driver>_DEVICE Device Type & Device Num
|
||||
@@ -287,83 +287,30 @@ Capacity/Mode:
|
||||
-----------------------------------------------------------------------------------
|
||||
|
||||
<VDA>_INIT:
|
||||
- INIT HARDWARE
|
||||
- INIT CRT HARDWARE
|
||||
- INIT KEYBOARD HARDWARE
|
||||
- CALL <VDA>_VDARES (<NO PARMS>)
|
||||
- ADD OURSELVES TO VDA_TBL
|
||||
- ADD OURSELVES TO CIO_TBL
|
||||
- GOTO <VDA>_VDAINIT
|
||||
- CALL TERM_ATTACH (C=VIDEO UNIT, DE=<VDA>_DISPATCH)
|
||||
|
||||
<VDA>_VDAINIT: (BC=FUNCTION/DEVID, HL=BITMAP ADR, D=TERMTYPE, E=VIDEO MODE)
|
||||
- CALL <VDA>_VDARESET
|
||||
- INITIALIZE EMULATION BY CALLING EMU_INIT (B=TERMTYPE, C=DEVTYPE, DE=VDADISPADR) ==> (DE=CIODISPADR)
|
||||
- SAVE DE TO <VDA>_CIODISPADR TO FORWARD SUBSEQUENT CIO FUNCTION CALLS
|
||||
<VDA>_VDARES: (<NO PARMS>)
|
||||
- HOME CURSOR
|
||||
- CLEAR SCREEN
|
||||
- RETURN (A=STATUS)
|
||||
|
||||
<VDA>_VDARESET:
|
||||
- RESET HARDWARE
|
||||
TERM_ATTACH: (C=VIDEO UNIT, DE=<VDA>_DISPATCH)
|
||||
- CALL <EMU>_INIT (B=TERM DEV NUM, C=VIDEO UNIT, DE=<VDA>_DISPATCH)
|
||||
- ADD OURSELVES TO CIO_TBL USING <EMU>_DISPATCH
|
||||
- RETURN (A=STATUS)
|
||||
|
||||
EMU_INIT: (B=TERMTYPE, C=DEVTYPE, DE=VDADISPADR) ==> (DE=CIODISPADR)
|
||||
- GOTO TO <EMU>_INIT BASED ON VALUE IN B
|
||||
|
||||
<EMU>_INIT: (C=DEVTYPE, DE=VDADISPADR) ==> (DE=CIODISPADR)
|
||||
- RECORD C TO <EMU>_DEVTYPE SO <EMU>_DEVICE FUNCTION CAN RETURN IT
|
||||
- RECORD DE IN <EMU>_VDADISPADR FOR LATER USE IN CALLING PARENT VDA DRIVER
|
||||
- INITIALIZE/RESET EMULATION ENGINE
|
||||
- RETURN (A=STATUS, DE=CIODISPADR)
|
||||
|
||||
--------------------------
|
||||
|
||||
md
|
||||
hdsk
|
||||
rf
|
||||
ide
|
||||
sd
|
||||
ppide
|
||||
fd
|
||||
prp
|
||||
ppp
|
||||
|
||||
--------------------------
|
||||
|
||||
0: RAM- RAMdrive on the Z180 SBC Mark IV board
|
||||
LBASupported UserAddressableSectors 832
|
||||
|
||||
1: ROM- ROMdrive on the Z180 SBC Mark IV board
|
||||
LBASupported UserAddressableSectors 768
|
||||
|
||||
2: IDE- SanDisk SDCFHSNJC-004G
|
||||
s/n: DMZ031215013440 fmw: HDX 7.08
|
||||
CHS: 7751:16:63 nSectors 7813008 MaxBlkTransfer 1
|
||||
LBASupported UserAddressableSectors 7813120
|
||||
|
||||
3: IDE- SanDisk SDCFHSNJC-004G
|
||||
s/n: BKZ031215015432 fmw: HDX 7.08
|
||||
CHS: 7751:16:63 nSectors 7813008 MaxBlkTransfer 1
|
||||
LBASupported UserAddressableSectors 7813120
|
||||
|
||||
4: SD- SD SU02G
|
||||
s/n: 139401536 fmw: 8.0 d/c: 2013-07
|
||||
LBASupported UserAddressableSectors 1931264
|
||||
|
||||
Boot UNA unit number or ROM? [R,X,0..4] (R):
|
||||
|
||||
N8VEM UNA CP/M (Will Sowerbutts, 2014-08-01 git cbed09)
|
||||
|
||||
Unit Disk Driver Capacity Slices Start LBA Flags
|
||||
0 RAM0 Memory 416.0KB 1 0x00000000 (formatted)
|
||||
1 ROM0 Memory 384.0KB 1 0x00000000
|
||||
2 IDE0 Dual-IDE 3.7GB 469 0x00000000 MBR FGN
|
||||
3 IDE1 Dual-IDE 3.7GB 469 0x00000000 MBR FGN
|
||||
4 SD0 CSIO-SD 943.0MB 0 0x00000000 MBR FGN
|
||||
|
||||
Drive A: assigned to RAM0 slice 0
|
||||
Drive B: assigned to ROM0 slice 0
|
||||
Drive C: assigned to IDE0 slice 0
|
||||
Drive D: assigned to IDE1 slice 0
|
||||
|
||||
Loading Residual CP/M at 0xE100 ... done.
|
||||
CP/M 2.2 Copyright 1979 (c) by Digital Research
|
||||
|
||||
---
|
||||
|
||||
<EMU>_INIT: (B=TERM DEV NUM, C=VIDEO UNIT, DE=<VDA>_DISPATCH)
|
||||
- SAVE TERM DEV NUM TO <EMU>_DEVNUM
|
||||
- SAVE VIDEO UNIT TO <EMU>_VDAUNIT
|
||||
- SAVE <VDA>_DISPATCH TO <EMU>_VDADISPADR
|
||||
- CALL <EMU>_RESET (<NO PARMS>)
|
||||
- RETURN (DE=<EMU>_DISPATCH, A=STATUS)
|
||||
|
||||
<EMU>_RESET: (<NO PARMS>)
|
||||
- QUERY ATTACHED VDA FOR SCREEN SIZE (VIA <EMU>_VDADISP)
|
||||
- INITIALIZE ALL WORKING VARIABLES AND EMULATOR STATE
|
||||
- RETURN (A=STATUS)
|
||||
|
||||
@@ -6,8 +6,3 @@
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT AT STARTUP
|
||||
;
|
||||
CVDUENABLE .SET TRUE ; ENABLE CVDU BOARD SUPPORT
|
||||
;
|
||||
KBDENABLE .SET TRUE ; PS/2 KEYBOARD ON I8242
|
||||
;
|
||||
TTYENABLE .SET TRUE ; INCLUDE TTY EMULATION SUPPORT
|
||||
ANSIENABLE .SET TRUE ; INCLUDE ANSI EMULATION SUPPORT
|
||||
|
||||
@@ -94,13 +94,10 @@ PPPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO)
|
||||
HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
;
|
||||
PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE)
|
||||
KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
KBDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF KBDENABLE = TRUE)
|
||||
;
|
||||
TTYENABLE .EQU FALSE ; INCLUDE TTY EMULATION SUPPORT
|
||||
ANSIENABLE .EQU FALSE ; INCLUDE ANSI EMULATION SUPPORT
|
||||
TERMENABLE .EQU FALSE ; TERM PSEUDO DEVICE, WILL BE ENABLED IF A VDA IS ENABLED
|
||||
ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABLE = TRUE)
|
||||
;
|
||||
BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS)
|
||||
|
||||
@@ -71,13 +71,10 @@ PPPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO)
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
;
|
||||
PPKENABLE .EQU TRUE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE)
|
||||
KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
KBDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF KBDENABLE = TRUE)
|
||||
;
|
||||
TTYENABLE .EQU TRUE ; INCLUDE TTY EMULATION SUPPORT
|
||||
ANSIENABLE .EQU TRUE ; INCLUDE ANSI EMULATION SUPPORT
|
||||
TERMENABLE .EQU FALSE ; TERM PSEUDO DEVICE, WILL BE ENABLED IF A VDA IS ENABLED
|
||||
ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABLE = TRUE)
|
||||
;
|
||||
BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS)
|
||||
|
||||
@@ -88,13 +88,10 @@ PPPENABLE .EQU FALSE ; TRUE FOR PARPORTPROP SUPPORT
|
||||
HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
;
|
||||
PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE)
|
||||
KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
KBDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF KBDENABLE = TRUE)
|
||||
;
|
||||
TTYENABLE .EQU FALSE ; INCLUDE TTY EMULATION SUPPORT
|
||||
ANSIENABLE .EQU FALSE ; INCLUDE ANSI EMULATION SUPPORT
|
||||
TERMENABLE .EQU FALSE ; TERM PSEUDO DEVICE, WILL BE ENABLED IF A VDA IS ENABLED
|
||||
ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABLE = TRUE)
|
||||
;
|
||||
BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS)
|
||||
|
||||
@@ -65,11 +65,7 @@ PPPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO)
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
;
|
||||
PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
;
|
||||
TTYENABLE .EQU FALSE ; INCLUDE TTY EMULATION SUPPORT
|
||||
ANSIENABLE .EQU FALSE ; INCLUDE ANSI EMULATION SUPPORT
|
||||
TERMENABLE .EQU FALSE ; TERM PSEUDO DEVICE, WILL BE ENABLED IF A VDA IS ENABLED
|
||||
;
|
||||
BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS)
|
||||
BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE
|
||||
|
||||
@@ -5,72 +5,6 @@
|
||||
;
|
||||
; BUILD CONFIGURATION OPTIONS
|
||||
;
|
||||
CPUOSC .EQU 20000000 ; CPU OSC FREQ
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!!
|
||||
CONBAUD .EQU 38400 ; DEFAULT BAUDRATE USED BELOW
|
||||
#INCLUDE "Config/plt_zeta.asm" ; USE ZETA CONFIG TO START
|
||||
;
|
||||
CRTACT .EQU FALSE ; CRT ACTIVATION AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...)
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
SIMRTCENABLE .EQU FALSE ; SIMH CLOCK DRIVER
|
||||
DSRTCENABLE .EQU TRUE ; DS-1302 CLOCK DRIVER
|
||||
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTCMODE_STD, DSRTCMODE_MFPIC
|
||||
;
|
||||
UARTENABLE .EQU TRUE ; TRUE FOR UART SUPPORT (ALMOST ALWAYS WANT THIS TO BE TRUE)
|
||||
UARTOSC .EQU 1843200 ; UART OSC FREQUENCY
|
||||
UARTCNT .EQU 1 ; NUMBER OF UARTS
|
||||
UART0IOB .EQU $68 ; IOBASE (SBC ONBOARD UART)
|
||||
UART0BAUD .EQU CONBAUD ; BAUDRATE
|
||||
UART0FEAT .EQU UF_FIFO ; FEATURE FLAGS: UF_FIFO | UF_AFC
|
||||
;
|
||||
ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT
|
||||
;
|
||||
VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT
|
||||
CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT
|
||||
NECENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT
|
||||
TMSENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT
|
||||
;
|
||||
MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED)
|
||||
MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE)
|
||||
;
|
||||
FDENABLE .EQU TRUE ; TRUE FOR FLOPPY SUPPORT
|
||||
FDMODE .EQU FDMODE_ZETA2 ; FDMODE_DIO, FDMODE_ZETA, FDMODE_DIDE, FDMODE_N8, FDMODE_DIO3
|
||||
FDTRACE .EQU 1 ; 0=SILENT, 1=FATAL ERRORS, 2=ALL ERRORS, 3=EVERYTHING (ONLY RELEVANT IF FDENABLE = TRUE)
|
||||
FDMEDIA .EQU FDM144 ; FDM720, FDM144, FDM360, FDM120 (ONLY RELEVANT IF FDENABLE = TRUE)
|
||||
FDMEDIAALT .EQU FDM720 ; ALTERNATE MEDIA TO TRY, SAME CHOICES AS ABOVE (ONLY RELEVANT IF FDMAUTO = TRUE)
|
||||
FDMAUTO .EQU TRUE ; SELECT BETWEEN MEDIA OPTS ABOVE AUTOMATICALLY
|
||||
;
|
||||
RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT
|
||||
;
|
||||
IDEENABLE .EQU FALSE ; TRUE FOR IDE SUPPORT
|
||||
;
|
||||
PPIDEENABLE .EQU FALSE ; TRUE FOR PPIDE SUPPORT (DO NOT COMBINE WITH DSKYENABLE)
|
||||
PPIDEMODE .EQU PPIDEMODE_SBC ; PPIDEMODE_SBC, PPPIDEMODE_DIO3, PPIDEMODE_MFP, PPIDEMODE_N8
|
||||
PPIDETRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPIDEENABLE = TRUE)
|
||||
PPIDE8BIT .EQU FALSE ; USE IDE 8BIT TRANSFERS (PROBABLY ONLY WORKS FOR CF CARDS!)
|
||||
;
|
||||
SDENABLE .EQU FALSE ; TRUE FOR SD SUPPORT
|
||||
SDMODE .EQU SDMODE_PPI ; SDMODE_JUHA, SDMODE_CSIO, SDMODE_UART, SDMODE_PPI, SDMODE_DSD
|
||||
SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE)
|
||||
SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER
|
||||
;
|
||||
PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SUPPORT
|
||||
;
|
||||
PPPENABLE .EQU FALSE ; TRUE FOR PARPORTPROP SUPPORT
|
||||
PPPSDENABLE .EQU TRUE ; TRUE FOR PARPORTPROP SD SUPPORT
|
||||
PPPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPPENABLE = TRUE)
|
||||
PPPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO)
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT
|
||||
;
|
||||
PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD
|
||||
KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242
|
||||
;
|
||||
TTYENABLE .EQU FALSE ; INCLUDE TTY EMULATION SUPPORT
|
||||
ANSIENABLE .EQU FALSE ; INCLUDE ANSI EMULATION SUPPORT
|
||||
;
|
||||
BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS)
|
||||
BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE
|
||||
BOOT_DEFAULT .EQU 'Z' ; SELECTION TO INVOKE AT TIMEOUT
|
||||
FDMODE .SET FDMODE_ZETA2 ; FDMODE_DIO, FDMODE_ZETA, FDMODE_DIDE, FDMODE_N8, FDMODE_DIO3
|
||||
|
||||
@@ -3,11 +3,6 @@
|
||||
; SBC CVDU CONFIGURATION
|
||||
;==================================================================================================
|
||||
;
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT AT STARTUP
|
||||
CRTACT .SET TRUE ; ACTIVATE CRT AT STARTUP
|
||||
;
|
||||
CVDUENABLE .SET TRUE ; ENABLE CVDU BOARD SUPPORT
|
||||
;
|
||||
KBDENABLE .SET TRUE ; PS/2 KEYBOARD ON I8242
|
||||
;
|
||||
TTYENABLE .SET TRUE ; INCLUDE TTY EMULATION SUPPORT
|
||||
ANSIENABLE .SET TRUE ; INCLUDE ANSI EMULATION SUPPORT
|
||||
|
||||
@@ -3,16 +3,11 @@
|
||||
; SBC DISKIO V3 + CVDU CONFIGURATION
|
||||
;==================================================================================================
|
||||
;
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT AT STARTUP
|
||||
CRTACT .SET TRUE ; ACTIVATE CRT AT STARTUP
|
||||
VDAEMU .SET EMUTYP_ANSI ; SELECT ANSI TERMINAL EMULATION
|
||||
;
|
||||
CVDUENABLE .SET TRUE ; ENABLE CVDU BOARD SUPPORT
|
||||
;
|
||||
KBDENABLE .SET TRUE ; PS/2 KEYBOARD ON I8242
|
||||
;
|
||||
TTYENABLE .SET TRUE ; INCLUDE TTY EMULATION SUPPORT
|
||||
ANSIENABLE .SET TRUE ; INCLUDE ANSI EMULATION SUPPORT
|
||||
;
|
||||
FDENABLE .SET TRUE ; ENABLE FLOPPY SUPPORT
|
||||
FDMODE .SET FDMODE_DIO3 ; USE DISKIO V3 MODE
|
||||
;
|
||||
|
||||
@@ -6,8 +6,3 @@
|
||||
CRTACT .SET TRUE ; ACTIVATE CRT AT STARTUP
|
||||
;
|
||||
VDUENABLE .SET TRUE ; ENABLE VDU BOARD SUPPORT
|
||||
;
|
||||
PPKENABLE .SET TRUE ; PARALLEL PORT KEYBOARD
|
||||
;
|
||||
TTYENABLE .SET TRUE ; INCLUDE TTY EMULATION SUPPORT
|
||||
ANSIENABLE .SET TRUE ; INCLUDE ANSI EMULATION SUPPORT
|
||||
|
||||
@@ -20,17 +20,27 @@ ANSI_DEFCOLOR .EQU 7 ; WHITE ON BLACK
|
||||
;
|
||||
; INITIALIZATION OF EMULATION MODULE CALLED BY PARENT VDA DRIVER
|
||||
; ON ENTRY:
|
||||
; C: CIO UNIT NUMBER OF CALLING VDA DRIVER
|
||||
; DE: DISPATCH ADDRESS OF CALLING VDA DRIVER
|
||||
; RETURNS:
|
||||
; DE: OUR CIO DISPATCH ADDRESS
|
||||
;
|
||||
ANSI_INIT:
|
||||
; SAVE INCOMING VDA DISPATCH ADDRESS
|
||||
LD A,C ; VDA DRIVER'S DEVICE TYPE
|
||||
LD (ANSI_DEVTYPE),A ; ... SAVED LOCALLY
|
||||
LD (ANSI_VDADISPADR),DE ; RECORD NEW VDA DISPATCH ADDRESS
|
||||
; PREVENT ATTEMPTS TO INIT MULTIPLE INSTANCES FOR NOW
|
||||
LD A,(ANSI_VDAUNIT) ; LOAD CURRENT VDA UNIT VALUE
|
||||
INC A ; SHOULD BE $FF, INC TO $00
|
||||
RET NZ ; IF NOT 0, PREVIOUSLY ATTACHED, RETURN W/ NZ
|
||||
;
|
||||
; SAVE INCOMING DATA
|
||||
LD A,B ; TERMINAL DEVICE NUM PASSED IN B
|
||||
LD (ANSI_DEVNUM),A ; SAVE IT
|
||||
LD A,C ; VDA UNIT NUMBER PASSED IN C
|
||||
LD (ANSI_VDAUNIT),A ; SAVE IT
|
||||
LD (ANSI_VDADISPADR),DE ; RECORD VDA DISPATCH ADDRESS
|
||||
;
|
||||
; INIT/RESET OUR INTERNAL STATE
|
||||
CALL ANSI_RESET ; FULL RESET OF EMULATOR INTERNAL STATE
|
||||
RET NZ ; BAIL OUT ON ERROR
|
||||
;
|
||||
LD DE,ANSI_DISPATCH ; RETURN OUR DISPATCH ADDRESS
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET ; RETURN
|
||||
@@ -65,11 +75,12 @@ ANSI_RESET:
|
||||
LD HL,ANSI_TABS ; POINT TO TAB STOP BITMAP
|
||||
LD B,32 ; INIT 32 BYTES
|
||||
;
|
||||
ANSI_INIT2: ; LOOP TO RESET TAB STOPS
|
||||
ANSI_RESET1: ; LOOP TO RESET TAB STOPS
|
||||
LD (HL),A ; SET A BYTE
|
||||
INC HL ; POINT TO NEXT BYTE
|
||||
DJNZ ANSI_INIT2 ; LOOP TILL ALL BYTES DONE
|
||||
DJNZ ANSI_RESET1 ; LOOP TILL ALL BYTES DONE
|
||||
;
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
;
|
||||
@@ -199,8 +210,13 @@ ANSI_CIOOST: ; VIDEO OUTPUT IS *ALWAYS* READY
|
||||
; INITIALIZE
|
||||
;
|
||||
ANSI_CIOINIT:
|
||||
XOR A ; NOTHING TO DO, SIGNAL SUCCESS
|
||||
RET ; ... AND RETURN
|
||||
; RESET THE ATTACHED VDA DEVICE
|
||||
LD B,BF_VDAINI ; FUNC: INIT
|
||||
LD E,-1 ; DO NOT CHANGE VIDEO MODE
|
||||
LD HL,0 ; DO NOT LOAD A BITMAP
|
||||
CALL ANSI_VDADISP ; CALL THE VDA DRIVER
|
||||
; RESET OUR INTERNAL STATE AND RETURN
|
||||
JP ANSI_RESET ; RESET OURSELVES AND RETURN
|
||||
;
|
||||
; QUERY STATUS
|
||||
;
|
||||
@@ -213,10 +229,13 @@ ANSI_CIOQUERY:
|
||||
; REPORT DEVICE
|
||||
;
|
||||
ANSI_CIODEVICE:
|
||||
LD A,(ANSI_DEVTYPE) ; GET DEVICE TYPE WE ARE EMULATING FOR
|
||||
LD D,A ; AND PASS BACK IN D
|
||||
LD E,C ; E := PHYSICAL UNIT
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
LD D,CIODEV_TERM ; TYPE IS TERMINAL
|
||||
LD A,(ANSI_DEVNUM) ; GET DEVICE NUMBER
|
||||
LD E,A ; PUT IT IN E
|
||||
LD A,(ANSI_VDAUNIT) ; GET VDA UNIT NUM
|
||||
SET 7,A ; SET BIT 7 TO INDICATE TERMINAL TYPE
|
||||
LD C,A ; PUT IT IN C
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
;==================================================================================================
|
||||
@@ -1381,4 +1400,5 @@ ANSI_PARIDX .DB 0 ; NUMBER OF PARAMETERS RECORDED
|
||||
ANSI_PARLST .FILL 16,0 ; PARAMETER VALUE LIST (UP TO 16 BYTE VALUES)
|
||||
ANSI_VARLEN .EQU $ - ANSI_VARS
|
||||
;
|
||||
ANSI_DEVTYPE .DB $FF ; DEVICE TYPE OF PARENT VDA'S CIO DEVICE
|
||||
ANSI_VDAUNIT .DB $FF ; VIDEO UNIT NUM OF ATTACHED VDA DEVICE
|
||||
ANSI_DEVNUM .DB $FF ; TERMINAL DEVICE NUMBER
|
||||
|
||||
@@ -22,6 +22,8 @@ CVDU_DATA .EQU $EC ; READ/WRITE M8563 DATA
|
||||
CVDU_ROWS .EQU 25
|
||||
CVDU_COLS .EQU 80
|
||||
;
|
||||
TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
|
||||
;
|
||||
;======================================================================
|
||||
; CVDU DRIVER - INITIALIZATION
|
||||
;======================================================================
|
||||
@@ -37,34 +39,22 @@ CVDU_INIT:
|
||||
CALL PRTDEC
|
||||
PRTS("KB$")
|
||||
CALL CVDU_LOADFONT ; LOAD FONT DATA FROM ROM TO CVDU STRORAGE
|
||||
CALL CVDU_VDARES
|
||||
CALL KBD_INIT ; INITIALIZE KEYBOARD DRIVER
|
||||
|
||||
; ADD OURSELVES TO VDA DISPATCH TABLE
|
||||
LD B,0 ; PHYSICAL UNIT IS ZERO
|
||||
LD C,VDADEV_CVDU ; DEVICE TYPE
|
||||
LD DE,0 ; UNIT DATA BLOB ADDRESS
|
||||
CALL VDA_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
|
||||
|
||||
; ADD OURSELVES TO CIO DISPATCH TABLE
|
||||
;LD B,0 ; PHYSICAL UNIT IS ZERO
|
||||
;LD C,CIODEV_CVDU ; DEVICE TYPE
|
||||
;LD DE,0 ; UNIT DATA BLOB ADDRESS
|
||||
LD D,0 ; PHYSICAL UNIT IS ZERO
|
||||
LD E,CIODEV_CVDU ; DEVICE TYPE
|
||||
LD BC,CVDU_DISPCIO ; BC := DISPATCH ADDRESS
|
||||
CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
|
||||
LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
|
||||
|
||||
LD D,VDAEMU ; DEFAULT EMULATION
|
||||
LD E,0 ; VIDEO MODE = 0
|
||||
JP CVDU_VDAINI
|
||||
;
|
||||
;======================================================================
|
||||
; CVDU DRIVER - CHARACTER I/O (CIO) DISPATCHER AND FUNCTIONS
|
||||
;======================================================================
|
||||
;
|
||||
CVDU_DISPCIO:
|
||||
JP PANIC
|
||||
CVDU_CIODISPADR .EQU $ - 2
|
||||
|
||||
; INITIALIZE EMULATION
|
||||
LD C,A ; C := ASSIGNED VIDEO DEVICE NUM
|
||||
LD DE,CVDU_DISPATCH ; DE := DISPATCH ADDRESS
|
||||
CALL TERM_ATTACH ; DO IT
|
||||
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
;======================================================================
|
||||
; CVDU DRIVER - VIDEO DISPLAY ADAPTER (VDA) DISPATCHER AND FUNCTIONS
|
||||
@@ -107,17 +97,8 @@ CVDU_DISPATCH:
|
||||
|
||||
CVDU_VDAINI:
|
||||
; RESET VDA
|
||||
PUSH DE ; SAVE EMULATION TYPE (IN D)
|
||||
; CURRENTLY IGNORES VIDEO MODE AND BITMAP DATA
|
||||
CALL CVDU_VDARES ; RESET VDA
|
||||
POP DE ; RECOVER EMULATION TYPE
|
||||
|
||||
; INITIALIZE EMULATION
|
||||
LD B,D ; EMULATION TYPE TO B
|
||||
LD C,CIODEV_CVDU ; PASS OUR DEVICE TYPE IN C
|
||||
LD DE,CVDU_DISPATCH ; DISPATCH ADDRESS TO DE
|
||||
CALL EMU_INIT ; INITIALIZE EMULATION, DE := CIO DISPATCHER
|
||||
LD (CVDU_CIODISPADR),DE ; SAVE EMULATORS CIO DISPATCH INTERFACE ADDRESS
|
||||
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
|
||||
@@ -146,7 +127,7 @@ CVDU_VDARES:
|
||||
|
||||
CVDU_VDADEV:
|
||||
LD D,VDADEV_CVDU ; D := DEVICE TYPE
|
||||
LD E,C ; E := PHYSICAL UNIT
|
||||
LD E,0 ; E := PHYSICAL UNIT IS ALWAYS ZERO
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
|
||||
@@ -769,4 +750,6 @@ CVDU_INIT8563:
|
||||
; CVDU DRIVER - FONT DATA
|
||||
;==================================================================================================
|
||||
;
|
||||
#INCLUDE "cvdu_font.asm"
|
||||
#INCLUDE "cvdu_font.asm"
|
||||
;
|
||||
#INCLUDE "kbd.asm"
|
||||
|
||||
@@ -592,10 +592,7 @@ INITSYS1:
|
||||
LD (HCB + HCB_CONDEV),A ; SAVE IT AS ACTIVE CONSOLE DEVICE
|
||||
;
|
||||
; DISPLAY HBIOS BANNER ON NEW CONSOLE
|
||||
CALL NEWLINE
|
||||
CALL NEWLINE
|
||||
PRTX(STR_BANNER)
|
||||
CALL NEWLINE
|
||||
#ENDIF
|
||||
;
|
||||
INITSYS2:
|
||||
@@ -663,12 +660,6 @@ HB_INITTBL:
|
||||
#IF (PPPENABLE)
|
||||
.DW PPP_INIT
|
||||
#ENDIF
|
||||
#IF (PPKENABLE)
|
||||
.DW PPK_INIT
|
||||
#ENDIF
|
||||
#IF (KBDENABLE)
|
||||
.DW KBD_INIT
|
||||
#ENDIF
|
||||
;
|
||||
HB_INITTBLLEN .EQU (($ - HB_INITTBL) / 2)
|
||||
;
|
||||
@@ -1056,38 +1047,6 @@ RTC_DISPATCH:
|
||||
CALL PANIC
|
||||
;
|
||||
;==================================================================================================
|
||||
; EMULATION INITIALIZATION DISPATCHER
|
||||
;==================================================================================================
|
||||
;
|
||||
; EMULATOR MODULES ARE INITIALIZED BY THE VDA DRIVER THAT USES THEM.
|
||||
; THE VDA DRIVER CALLS EMU_INIT TO DISPATCH THE INITIALIZATION REQUEST
|
||||
; TO THE CORRRECT EMULATION MODULE.
|
||||
;
|
||||
; B: EMULATION TYPE ID (1=TTY, 2=ANSI, ETC.)
|
||||
; C: VDA DRIVER'S VDA DEVICE TYPE
|
||||
; DE: VDA DRIVER'S DISPATCH ADDRESS
|
||||
;
|
||||
;
|
||||
EMU_INIT:
|
||||
LD A,B ; GET REQUESTED EMULATION
|
||||
;
|
||||
DEC A ; 1 = TTY
|
||||
#IF (TTYENABLE)
|
||||
LD HL,TTY_INIT
|
||||
JR Z,EMU_INIT1
|
||||
#ENDIF
|
||||
DEC A ; 2 = ANSI
|
||||
#IF (ANSIENABLE)
|
||||
LD HL,ANSI_INIT
|
||||
JR Z,EMU_INIT1
|
||||
#ENDIF
|
||||
CALL PANIC ; INVALID
|
||||
RET
|
||||
;
|
||||
EMU_INIT1:
|
||||
JP (HL) ; DO THE EMULATOR INIT, DE := CIO DISPATCH ADR
|
||||
;
|
||||
;==================================================================================================
|
||||
; VIDEO DISPLAY ADAPTER DEVICE DISPATCHER
|
||||
;==================================================================================================
|
||||
;
|
||||
@@ -1784,39 +1743,12 @@ SIZ_HDSK .EQU $ - ORG_HDSK
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
|
||||
#IF (PPKENABLE)
|
||||
ORG_PPK .EQU $
|
||||
#INCLUDE "ppk.asm"
|
||||
SIZ_PPK .EQU $ - ORG_PPK
|
||||
.ECHO "PPK occupies "
|
||||
.ECHO SIZ_PPK
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
|
||||
#IF (KBDENABLE)
|
||||
ORG_KBD .EQU $
|
||||
#INCLUDE "kbd.asm"
|
||||
SIZ_KBD .EQU $ - ORG_KBD
|
||||
.ECHO "KBD occupies "
|
||||
.ECHO SIZ_KBD
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
|
||||
#IF (TTYENABLE)
|
||||
ORG_TTY .EQU $
|
||||
#INCLUDE "tty.asm"
|
||||
SIZ_TTY .EQU $ - ORG_TTY
|
||||
.ECHO "TTY occupies "
|
||||
.ECHO SIZ_TTY
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
|
||||
#IF (ANSIENABLE)
|
||||
ORG_ANSI .EQU $
|
||||
#INCLUDE "ansi.asm"
|
||||
SIZ_ANSI .EQU $ - ORG_ANSI
|
||||
.ECHO "ANSI occupies "
|
||||
.ECHO SIZ_ANSI
|
||||
#IF (TERMENABLE)
|
||||
ORG_TERM .EQU $
|
||||
#INCLUDE "term.asm"
|
||||
SIZ_TERM .EQU $ - ORG_TERM
|
||||
.ECHO "TERM occupies "
|
||||
.ECHO SIZ_TERM
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
@@ -2270,15 +2202,15 @@ PS_SERIAL:
|
||||
;
|
||||
; DEVICE COLUMN
|
||||
LD B,BF_CIODEVICE ; FUNC=GET DEVICE INFO, UNIT NUM STILL IN C
|
||||
RST 08 ; DE:=DEVTYP/NUM, H:=DISK ATTRIBUTES
|
||||
RST 08 ; DE:=DEVTYP/NUM, C:=DISK ATTRIBUTES
|
||||
PUSH BC ; SAVE ATTRIBUTES
|
||||
LD HL,PS_SDSTRREF ; POINT TO SERIAL DEVICE TYPE NAME TABLE
|
||||
CALL PS_PRTDEV ; PRINT SERIAL DEVICE NMEMONIC PADDED TO FIELD WIDTH
|
||||
POP DE ; RECOVER ATTRIBUTES
|
||||
PUSH DE ; SAVE ATTRIBUTES AGAIN
|
||||
POP BC ; RECOVER ATTRIBUTES
|
||||
PUSH BC ; SAVE ATTRIBUTES AGAIN
|
||||
CALL PS_PRTST ; PRINT SERIAL TYPE
|
||||
POP DE ; RESTORE ATTRIBUTES
|
||||
POP BC ; RESTORE UNIT NUM
|
||||
POP BC ; RESTORE ATTRIBUTES
|
||||
POP DE ; RESTORE UNIT NUM
|
||||
CALL PS_PRTSC ; PRINT SERIAL CONFIG
|
||||
;
|
||||
CALL NEWLINE
|
||||
@@ -2287,7 +2219,13 @@ PS_SERIAL:
|
||||
; PRINT SERIAL TYPE (SERIAL ATTRIBUTE IN E)
|
||||
;
|
||||
PS_PRTST:
|
||||
CALL PS_PRTNUL ; NUL FOR NOW
|
||||
LD HL,PS_STRS232 ; ASSUME RS-232
|
||||
BIT 7,C ; 0=RS-232, 1=TERMINAL
|
||||
JR Z,PS_PRTST1 ; HANDLE TERMINAL TYPE
|
||||
LD HL,PS_STTERM ; TYPE IS TERMINAL
|
||||
;
|
||||
PS_PRTST1:
|
||||
CALL PS_PRT ; PRINT $ TERM STRING AT (HL), C:=CHARS PRINTED
|
||||
LD A,18 ; 18 CHAR FIELD
|
||||
SUB C
|
||||
CALL PS_PAD ; PAD N SPACES (SPECIFIED IN A)
|
||||
@@ -2296,6 +2234,10 @@ PS_PRTST:
|
||||
; PRINT SERIAL CONFIG (UNIT IN C, ATTRIBUTE IN E)
|
||||
;
|
||||
PS_PRTSC:
|
||||
BIT 7,C ; 0=RS-232, 1=TERMINAL
|
||||
JR NZ,PS_PRTSC1 ; PRINT TERMINAL CONFIG
|
||||
;
|
||||
; PRINT RS-232 CONFIG
|
||||
LD B,BF_CIOQUERY ; HBIOS FUNC: GET CIO CONFIG
|
||||
RST 08 ; DE:HL := BAUD RATE
|
||||
LD A,D ; TEST FOR $FF
|
||||
@@ -2308,7 +2250,21 @@ PS_PRTSC:
|
||||
CALL PC_COMMA
|
||||
PRTS(" 8N1$")
|
||||
RET
|
||||
|
||||
;
|
||||
PS_PRTSC1:
|
||||
; PRINT TERMINAL CONFIG
|
||||
PRTS("Video $") ; FORMATTING
|
||||
LD A,C ; GET ATTRIBUTE VALUE
|
||||
AND $0F ; ISOLATE VIDEO UNIT NUM
|
||||
CALL PRTDECB ; PRINT IT
|
||||
CALL PC_COMMA
|
||||
#IF (VDAEMU == EMUTYP_TTY)
|
||||
PRTS(" TTY$")
|
||||
#ENDIF
|
||||
#IF (VDAEMU == EMUTYP_ANSI)
|
||||
PRTS(" ANSI$")
|
||||
#ENDIF
|
||||
RET
|
||||
;
|
||||
; PRINT ONE LINE VIDEO UNIT/DEVICE INFO, VIDEO UNIT INDEX IN C
|
||||
;
|
||||
@@ -2340,7 +2296,8 @@ PS_VIDEO:
|
||||
; PRINT VIDEO TYPE (VIDEO ATTRIBUTE IN E)
|
||||
;
|
||||
PS_PRTVT:
|
||||
CALL PS_PRTNUL ; NUL FOR NOW
|
||||
LD HL,PS_VTCRT ; ASSUME CRT
|
||||
CALL PS_PRT ; PRINT $ TERM STRING AT (HL), C:=CHARS PRINTED
|
||||
LD A,18 ; 18 CHAR FIELD
|
||||
SUB C
|
||||
CALL PS_PAD ; PAD N SPACES (SPECIFIED IN A)
|
||||
@@ -2349,8 +2306,9 @@ PS_PRTVT:
|
||||
; PRINT VIDEO CONFIG (UNIT IN C, ATTRIBUTE IN E)
|
||||
;
|
||||
PS_PRTVC:
|
||||
PRTS("TEXT$")
|
||||
PRTS("Text$")
|
||||
CALL PC_COMMA
|
||||
CALL PC_SPACE
|
||||
LD B,BF_VDAQRY ; FUNC: QUERY FOR VDA CONFIG
|
||||
RST 08 ; D:=ROWS, E:=COLS
|
||||
LD A,E
|
||||
@@ -2470,20 +2428,22 @@ PS_FLPED .TEXT "ED$"
|
||||
; SERIAL DEVICE STRINGS
|
||||
;
|
||||
PS_SDSTRREF:
|
||||
.DW PS_SDUART, PS_SDASCI, PS_SDVDU, PS_SDCVDU
|
||||
.DW PS_SDNEC, PS_SDTMS, PS_SDPRPCON, PS_SDPPPCON
|
||||
.DW PS_SDUART, PS_SDASCI, PS_SDTERM,
|
||||
.DW PS_SDPRPCON, PS_SDPPPCON
|
||||
;
|
||||
PS_SDUART .TEXT "UART$"
|
||||
PS_SDASCI .TEXT "ASCI$"
|
||||
PS_SDVDU .TEXT "VDU$"
|
||||
PS_SDCVDU .TEXT "CVDU$"
|
||||
PS_SDNEC .TEXT "NEC$"
|
||||
PS_SDTMS .TEXT "TMS$"
|
||||
PS_SDTERM .TEXT "TERM$"
|
||||
PS_SDPRPCON .TEXT "PRPCON$"
|
||||
PS_SDPPPCON .TEXT "PPPCON$"
|
||||
;
|
||||
; SERIAL TYPE STRINGS
|
||||
;
|
||||
PS_STRS232 .TEXT "RS-232$"
|
||||
PS_STTERM .TEXT "Terminal$"
|
||||
;
|
||||
; SERIAL TYPE STRINGS
|
||||
;
|
||||
;
|
||||
; VIDEO DEVICE STRINGS
|
||||
;
|
||||
@@ -2495,8 +2455,9 @@ PS_VDCVDU .TEXT "CVDU$"
|
||||
PS_VDNEC .TEXT "NEC$"
|
||||
PS_VDTMS .TEXT "TMS$"
|
||||
;
|
||||
; SERIAL TYPE STRINGS
|
||||
; VIDEO TYPE STRINGS
|
||||
;
|
||||
PS_VTCRT .TEXT "CRT$"
|
||||
;
|
||||
; VIDEO CONFIG STRINGS
|
||||
;
|
||||
|
||||
@@ -32,7 +32,7 @@ BF_RTCGETBYT .EQU BF_RTC + 2 ; GET NVRAM BYTE BY INDEX
|
||||
BF_RTCSETBYT .EQU BF_RTC + 3 ; SET NVRAM BYTE BY INDEX
|
||||
BF_RTCGETBLK .EQU BF_RTC + 4 ; GET NVRAM DATA BLOCK
|
||||
BF_RTCSETBLK .EQU BF_RTC + 5 ; SET NVRAM DATA BLOCK
|
||||
;;
|
||||
;
|
||||
BF_EMU .EQU $30 ; DEPRECATED
|
||||
;
|
||||
BF_VDA .EQU $40
|
||||
@@ -55,15 +55,15 @@ BF_VDAKRD .EQU BF_VDA + 14 ; READ KEYBOARD
|
||||
BF_SYS .EQU $F0
|
||||
BF_SYSSETBNK .EQU BF_SYS + 0 ; SET CURRENT BANK
|
||||
BF_SYSGETBNK .EQU BF_SYS + 1 ; GET CURRENT BANK
|
||||
BF_SYSSETCPY .EQU BF_SYS + 2 ; COPY TO/FROM RAM/ROM MEMORY BANK
|
||||
BF_SYSBNKCPY .EQU BF_SYS + 3 ; EXTENDED COPY SETUP
|
||||
BF_SYSSETCPY .EQU BF_SYS + 2 ; BANK MEMORY COPY SETUP
|
||||
BF_SYSBNKCPY .EQU BF_SYS + 3 ; BANK MEMORY COPY
|
||||
BF_SYSALLOC .EQU BF_SYS + 4 ; ALLOC HBIOS HEAP MEMORY
|
||||
BF_SYSFREE .EQU BF_SYS + 5 ; FREE HBIOS HEAP MEMORY
|
||||
BF_SYSVER .EQU BF_SYS + 6 ; GET HBIOS VERSION
|
||||
BF_SYSGET .EQU BF_SYS + 7 ; GET HBIOS INFO
|
||||
BF_SYSSET .EQU BF_SYS + 8 ; SET HBIOS PARAMETERS
|
||||
BF_PEEK .EQU BF_SYS + 9 ; GET A BYTE FROM ALT BANK
|
||||
BF_POKE .EQU BF_SYS + 10 ; PUT A BYTE TO ALT BANK
|
||||
BF_PEEK .EQU BF_SYS + 9 ; GET A BYTE VALUE FROM ALT BANK
|
||||
BF_POKE .EQU BF_SYS + 10 ; SET A BYTE VALUE IN ALT BANK
|
||||
;
|
||||
BF_SYSGET_CIOCNT .EQU $00 ; GET CHAR UNIT COUNT
|
||||
BF_SYSGET_DIOCNT .EQU $10 ; GET DISK UNIT COUNT
|
||||
@@ -75,19 +75,14 @@ BF_SYSGET_BNKINFO .EQU $F2 ; GET BANK ASSIGNMENT INFO
|
||||
;
|
||||
BF_SYSSET_BOOTINFO .EQU $E0 ; SET BOOT INFORMATION
|
||||
;
|
||||
; CHARACTER DEVICE IDS
|
||||
; SERIAL DEVICE IDS
|
||||
;
|
||||
CIODEV_UART .EQU $00
|
||||
CIODEV_ASCI .EQU $10
|
||||
CIODEV_VDU .EQU $20
|
||||
CIODEV_CVDU .EQU $30
|
||||
CIODEV_NEC .EQU $40
|
||||
CIODEV_TMS .EQU $50
|
||||
CIODEV_PRPCON .EQU $60
|
||||
CIODEV_PPPCON .EQU $70
|
||||
CIODEV_TERM .EQU $20
|
||||
CIODEV_PRPCON .EQU $30
|
||||
CIODEV_PPPCON .EQU $40
|
||||
CIODEV_CONSOLE .EQU $D0
|
||||
;CIODEV_VDA .EQU $E0 ; DEPRECATED
|
||||
;CIODEV_NUL .EQU $F0 ; DEPRECATED
|
||||
;
|
||||
; DISK DEVICE IDS
|
||||
;
|
||||
@@ -102,12 +97,11 @@ DIODEV_PRPSD .EQU $70
|
||||
DIODEV_PPPSD .EQU $80
|
||||
DIODEV_HDSK .EQU $90
|
||||
;
|
||||
; VDA DEVICE IDS
|
||||
; VIDEO DEVICE IDS
|
||||
;
|
||||
;VDADEV_NONE .EQU $00 ; NO VDA DEVICE
|
||||
VDADEV_VDU .EQU $00 ; ECB VDU - MOTOROLA 6545
|
||||
VDADEV_CVDU .EQU $10 ; ECB COLOR VDU - MOS 8563
|
||||
VDADEV_NEC .EQU $20 ; ECB NEC UPD7220 (NOT IMPLEMENTED)
|
||||
VDADEV_NEC .EQU $20 ; ECB UPD7220 - NEC UPD7220
|
||||
VDADEV_TMS .EQU $30 ; N8 ONBOARD VDA SUBSYSTEM - TMS 9918
|
||||
;
|
||||
; EMULATION TYPES
|
||||
|
||||
@@ -65,7 +65,7 @@ ZSYSIMG .EQU $5000
|
||||
.ORG $ + $8000 ; SET ORG BASED ON OUR NEW LOCATION IN RAM
|
||||
PHASE2:
|
||||
; BANNER
|
||||
CALL NEWLINE
|
||||
;CALL NEWLINE
|
||||
LD DE,STR_BANNER
|
||||
CALL WRITESTR
|
||||
|
||||
@@ -875,7 +875,8 @@ STR_NOBOOT .DB "\r\nDisk not bootable!$"
|
||||
STR_BOOTERR .DB "\r\nBoot failure!$"
|
||||
;
|
||||
STR_BANNER .DB "\r\n", PLATFORM_NAME, " Boot Loader$"
|
||||
STR_BOOTMENU .DB "\r\nBoot: (C)PM, (Z)System, (M)onitor,\r\n"
|
||||
STR_BOOTMENU .DB "\r\n"
|
||||
.DB "Boot: (C)PM, (Z)System, (M)onitor,\r\n"
|
||||
.DB " (L)ist disks, or Disk Unit # ===> $"
|
||||
;
|
||||
.IF DSKYENABLE
|
||||
|
||||
74
Source/HBIOS/term.asm
Normal file
74
Source/HBIOS/term.asm
Normal file
@@ -0,0 +1,74 @@
|
||||
;======================================================================
|
||||
; TERMINAL DRIVER FOR SBC PROJECT
|
||||
;
|
||||
; SERIAL PSEUDO-DEVICE DRIVER PROVIDES A TERMINAL EMULATION
|
||||
; INTERFACE FOR VDA DEVICES
|
||||
;
|
||||
; WRITTEN BY: WAYNE WARTHEN -- 04/10/2016
|
||||
;======================================================================
|
||||
;
|
||||
; TODO:
|
||||
; - HANDLE MULTIPLE INSTANCES
|
||||
;
|
||||
;======================================================================
|
||||
; TERMINAL DRIVER - CONSTANTS
|
||||
;======================================================================
|
||||
;
|
||||
;
|
||||
;======================================================================
|
||||
; TERMINAL DRIVER - ATTACH
|
||||
;======================================================================
|
||||
;
|
||||
; A VDA DRIVER CALLS THE ATTACH FUNCTION WHEN IT INITIALIZES TO
|
||||
; CREATE A TERMINAL EMULATION INSTANCE. THE VDA DRIVER PASSES
|
||||
; IN IT'S DISPATCH ADDRESS FOR USE BY THE EMULATION MODULES. THE
|
||||
; TERMINAL DRIVER ADDS ITSELF AS AN ENTRY IN THE SERIAL UNIT LIST.
|
||||
;
|
||||
; CURRENTLY, ONLY A SINGLE INSTANCE OF THE TERMINAL DRIVER IS SUPPORTED.
|
||||
; ANY ATTEMPT TO ATTACH AFTER THE FIRST WILL RETURN A FAILURE.
|
||||
;
|
||||
; C: VIDEO UNIT NUMBER OF CALLING VDA DRIVER
|
||||
; DE: VDA DRIVER'S DISPATCH ADDRESS
|
||||
;
|
||||
TERM_ATTACH:
|
||||
;
|
||||
LD A,(TERM_DEVCNT) ; GET NEXT DEVICE NUMBER TO USE
|
||||
LD B,A ; PUT IT IN B
|
||||
;
|
||||
; SETUP EMULATOR MODULE DISPATCH ADDRESS BASED ON DESIRED EMULATION
|
||||
; EMULATOR PASSES BACK IT'S DISPATCH ADDRESS IN DE
|
||||
OR $FF ; PRESET FAILURE
|
||||
#IF (VDAEMU == EMUTYP_TTY)
|
||||
CALL TTY_INIT ; INIT TTY, DE := TTY_DISPATCH
|
||||
#ENDIF
|
||||
#IF (VDAEMU == EMUTYP_ANSI)
|
||||
CALL ANSI_INIT ; INIT ANSI, DE := ANSI_DISPATCH
|
||||
#ENDIF
|
||||
RET NZ ; BAIL OUT ON ERROR
|
||||
;
|
||||
; ADD OURSELVES TO CIO DISPATCH TABLE
|
||||
PUSH DE ; COPY EMULATOR DISPATCH ADDRESS
|
||||
POP BC ; ... TO BC
|
||||
LD DE,0 ; DE := DATA BLOB (NONE AT THIS POINT)
|
||||
CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
|
||||
LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
|
||||
;
|
||||
; INCREMENT DEVICE COUNT
|
||||
LD HL,TERM_DEVCNT ; POINT TO DEVICE COUNT
|
||||
INC (HL) ; INCREMENT IT
|
||||
;
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET ; RETURN
|
||||
;
|
||||
;======================================================================
|
||||
; TERMINAL DRIVER PRIVATE DATA
|
||||
;======================================================================
|
||||
;
|
||||
TERM_DEVCNT .DB 0 ; TERMINAL DEVICE COUNT
|
||||
;
|
||||
;======================================================================
|
||||
; EMULATION MODULES
|
||||
;======================================================================
|
||||
;
|
||||
#INCLUDE "tty.asm"
|
||||
#INCLUDE "ansi.asm"
|
||||
@@ -20,6 +20,8 @@ TMS_DATREG .EQU N8_BASE + $18 ; READ/WRITE DATA
|
||||
TMS_ROWS .EQU 24
|
||||
TMS_COLS .EQU 40
|
||||
;
|
||||
TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
|
||||
;
|
||||
; BELOW WAS TUNED FOR N8 AT 18MHZ WITH 3 IO WAIT STATES
|
||||
; WILL NEED TO BE MODIFIED FOR DIFFERENT ACCESS SPEEDS
|
||||
; IF YOU SEE SCREEN CORRUPTION, ADJUST THIS!!!
|
||||
@@ -38,6 +40,8 @@ TMS_INIT:
|
||||
;
|
||||
CALL TMS_CRTINIT ; SETUP THE TMS CHIP REGISTERS
|
||||
CALL TMS_LOADFONT ; LOAD FONT DATA FROM ROM TO TMS STRORAGE
|
||||
CALL TMS_VDARES
|
||||
CALL PPK_INIT ; INITIALIZE KEYBOARD DRIVER
|
||||
;
|
||||
; ADD OURSELVES TO VDA DISPATCH TABLE
|
||||
LD B,0 ; PHYSICAL UNIT IS ZERO
|
||||
@@ -45,19 +49,19 @@ TMS_INIT:
|
||||
LD DE,0 ; UNIT DATA BLOB ADDRESS
|
||||
CALL VDA_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
|
||||
;
|
||||
; ADD OURSELVES TO CIO DISPATCH TABLE
|
||||
;LD B,0 ; PHYSICAL UNIT IS ZERO
|
||||
;LD C,CIODEV_TMS ; DEVICE TYPE
|
||||
;LD DE,0 ; UNIT DATA BLOB ADDRESS
|
||||
LD D,0 ; PHYSICAL UNIT IS ZERO
|
||||
LD E,CIODEV_TMS ; DEVICE TYPE
|
||||
LD BC,TMS_DISPCIO ; BC := DISPATCH ADDRESS
|
||||
CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
|
||||
LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
|
||||
|
||||
LD D,VDAEMU ; DEFAULT EMULATION
|
||||
LD E,0 ; VIDEO MODE = 0
|
||||
JP TMS_VDAINI
|
||||
; ADD OURSELVES TO VDA DISPATCH TABLE
|
||||
LD B,0 ; PHYSICAL UNIT IS ZERO
|
||||
LD C,VDADEV_TMS ; DEVICE TYPE
|
||||
LD DE,0 ; UNIT DATA BLOB ADDRESS
|
||||
CALL VDA_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
|
||||
|
||||
; INITIALIZE EMULATION
|
||||
LD C,A ; C := ASSIGNED VIDEO DEVICE NUM
|
||||
LD DE,TMS_DISPATCH ; DE := DISPATCH ADDRESS
|
||||
CALL TERM_ATTACH ; DO IT
|
||||
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
;======================================================================
|
||||
; TMS DRIVER - CHARACTER I/O (CIO) DISPATCHER AND FUNCTIONS
|
||||
@@ -108,21 +112,11 @@ TMS_DISPATCH:
|
||||
|
||||
TMS_VDAINI:
|
||||
; RESET VDA
|
||||
PUSH DE ; SAVE EMULATION TYPE (IN D)
|
||||
; CURRENTLY IGNORES VIDEO MODE AND BITMAP DATA
|
||||
CALL TMS_VDARES ; RESET VDA
|
||||
POP DE ; RECOVER EMULATION TYPE
|
||||
|
||||
; INITIALIZE EMULATION
|
||||
LD B,D ; EMULATION TYPE TO B
|
||||
LD C,CIODEV_TMS ; PASS OUR DEVICE TYPE IN C
|
||||
LD DE,TMS_DISPATCH ; DISPATCH ADDRESS TO DE
|
||||
CALL EMU_INIT ; INITIALIZE EMULATION, DE := CIO DISPATCHER
|
||||
LD (TMS_CIODISPADR),DE ; SAVE EMULATORS CIO DISPATCH INTERFACE ADDRESS
|
||||
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
|
||||
|
||||
TMS_VDAQRY:
|
||||
LD C,$00 ; MODE ZERO IS ALL WE KNOW
|
||||
LD D,TMS_ROWS ; ROWS
|
||||
@@ -131,12 +125,6 @@ TMS_VDAQRY:
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
|
||||
TMS_VDADEV:
|
||||
LD D,VDADEV_TMS ; D := DEVICE TYPE
|
||||
LD E,C ; E := PHYSICAL UNIT
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
|
||||
TMS_VDARES:
|
||||
LD DE,0 ; ROW = 0, COL = 0
|
||||
CALL TMS_XY ; SEND CURSOR TO TOP LEFT
|
||||
@@ -153,6 +141,12 @@ TMS_VDARES:
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
|
||||
TMS_VDADEV:
|
||||
LD D,VDADEV_TMS ; D := DEVICE TYPE
|
||||
LD E,0 ; E := PHYSICAL UNIT IS ALWAYS ZERO
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
|
||||
TMS_VDASCS:
|
||||
CALL PANIC ; NOT IMPLEMENTED (YET)
|
||||
|
||||
@@ -676,4 +670,6 @@ TMS_INIT9918LEN .EQU $ - TMS_INIT9918
|
||||
;==================================================================================================
|
||||
;
|
||||
TMS_FONTDATA:
|
||||
#INCLUDE "TMS_font.inc"
|
||||
#INCLUDE "TMS_font.inc"
|
||||
;
|
||||
#INCLUDE "ppk.asm"
|
||||
|
||||
@@ -14,10 +14,22 @@
|
||||
; DE: OUR CIO DISPATCH ADDRESS
|
||||
;
|
||||
TTY_INIT:
|
||||
; SAVE CALLING VDA DRIVER'S CIO UNIT NUMBER AND VDA DISPATCH ADDRESS
|
||||
LD A,C ; VDA DRIVER'S DEVICE TYPE
|
||||
LD (TTY_DEVTYPE),A ; ... SAVED LOCALLY
|
||||
LD (TTY_VDADISPADR),DE ; ALSO SAVE VDA DRIVER'S DISPATCH ADDRESS
|
||||
; PREVENT ATTEMPTS TO INIT MULTIPLE INSTANCES FOR NOW
|
||||
LD A,(TTY_VDAUNIT) ; LOAD CURRENT VDA UNIT VALUE
|
||||
INC A ; SHOULD BE $FF, INC TO $00
|
||||
RET NZ ; IF NOT 0, PREVIOUSLY ATTACHED, RETURN W/ NZ
|
||||
;
|
||||
; SAVE INCOMING DATA
|
||||
LD A,B ; TERMINAL DEVICE NUM PASSED IN B
|
||||
LD (TTY_DEVNUM),A ; SAVE IT
|
||||
LD A,C ; VDA UNIT NUMBER PASSED IN C
|
||||
LD (TTY_VDAUNIT),A ; SAVE IT
|
||||
LD (TTY_VDADISPADR),DE ; RECORD VDA DISPATCH ADDRESS
|
||||
;
|
||||
; INIT/RESET OUR INTERNAL STATE
|
||||
CALL TTY_RESET ; FULL RESET OF EMULATOR INTERNAL STATE
|
||||
RET NZ ; BAIL OUT ON ERROR
|
||||
;
|
||||
LD DE,TTY_DISPATCH ; RETURN OUR DISPATCH ADDRESS
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET ; RETURN
|
||||
@@ -32,6 +44,7 @@ TTY_RESET:
|
||||
LD DE,0 ; DE := 0, CURSOR TO HOME POSITION 0,0
|
||||
LD (TTY_POS),DE ; SAVE CURSOR POSITION
|
||||
;
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET ; DONE
|
||||
;
|
||||
;
|
||||
@@ -89,8 +102,13 @@ TTY_CIOOST:
|
||||
;
|
||||
;
|
||||
TTY_CIOINIT:
|
||||
XOR A ; NOTHING TO DO, SIGNAL SUCCESS
|
||||
RET ; ... AND RETURN
|
||||
; RESET THE ATTACHED VDA DEVICE
|
||||
LD B,BF_VDAINI ; FUNC: INIT
|
||||
LD E,-1 ; DO NOT CHANGE VIDEO MODE
|
||||
LD HL,0 ; DO NOT LOAD A BITMAP
|
||||
CALL ANSI_VDADISP ; CALL THE VDA DRIVER
|
||||
; RESET OUR INTERNAL STATE AND RETURN
|
||||
JP TTY_RESET ; RESET OURSELVES AND RETURN
|
||||
;
|
||||
;
|
||||
;
|
||||
@@ -103,10 +121,13 @@ TTY_CIOQUERY:
|
||||
;
|
||||
;
|
||||
TTY_CIODEVICE:
|
||||
LD A,(TTY_DEVTYPE) ; GET DEVICE TYPE WE ARE EMULATING FOR
|
||||
LD D,A ; AND PASS BACK IN D
|
||||
LD E,C ; E := DEVICE NUMBER
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
LD D,CIODEV_TERM ; TYPE IS TERMINAL
|
||||
LD A,(TTY_DEVNUM) ; GET DEVICE NUMBER
|
||||
LD E,A ; PUT IT IN E
|
||||
LD A,(TTY_VDAUNIT) ; GET VDA UNIT NUM
|
||||
SET 7,A ; SET BIT 7 TO INDICATE TERMINAL TYPE
|
||||
LD C,A ; PUT IT IN C
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
;
|
||||
@@ -188,4 +209,5 @@ TTY_DIM:
|
||||
TTY_COLS .DB 80 ; NUMBER OF COLUMNS ON SCREEN
|
||||
TTY_ROWS .DB 24 ; NUMBER OF ROWS ON SCREEN
|
||||
;
|
||||
TTY_DEVTYPE .DB $FF ; DEVICE TYPE OF PARENT VDA'S CIO DEVICE
|
||||
TTY_VDAUNIT .DB $FF ; VIDEO UNIT NUM OF ATTACHED VDA DEVICE
|
||||
TTY_DEVNUM .DB $FF ; TERMINAL DEVICE NUMBER
|
||||
|
||||
@@ -197,9 +197,9 @@ UART_INITP00:
|
||||
UART_INITP0:
|
||||
; DETECT THE UART TYPE
|
||||
CALL UART_DETECT ; DETERMINE UART TYPE
|
||||
LD (UART_TYPE),A ; SAVE TYPE
|
||||
OR A ; SET FLAGS
|
||||
RET Z ; ABORT IF NOTHING THERE
|
||||
LD (UART_TYPE),A ; SAVE TYPE
|
||||
|
||||
; UPDATE WORKING UART DEVICE NUM
|
||||
LD HL,UART_DEV ; POINT TO CURRENT UART DEVICE NUM
|
||||
@@ -207,15 +207,6 @@ UART_INITP0:
|
||||
INC (HL) ; INCREMENT IT (FOR NEXT LOOP)
|
||||
LD (IY),A ; UDPATE UNIT NUM
|
||||
|
||||
; ANNOUNCE PORT
|
||||
CALL NEWLINE ; FORMATTING
|
||||
PRTS("UART$") ; FORMATTING
|
||||
LD A,(IY) ; DEVICE NUM
|
||||
CALL PRTDECB ; PRINT DEVICE NUM
|
||||
PRTS(": IO=0x$") ; FORMATTING
|
||||
LD A,(IY + 1) ; GET BASE PORT
|
||||
CALL PRTHEXBYTE ; PRINT BASE PORT
|
||||
;
|
||||
; SETUP FOR GENERIC INIT ROUTINE
|
||||
LD A,(IY + 3) ; GET FEATURES BYTE
|
||||
LD (UART_FUNC),A ; SAVE IT
|
||||
@@ -335,6 +326,15 @@ UART_INITP1:
|
||||
PRTC(']')
|
||||
#ENDIF
|
||||
|
||||
; ANNOUNCE PORT
|
||||
CALL NEWLINE ; FORMATTING
|
||||
PRTS("UART$") ; FORMATTING
|
||||
LD A,(IY) ; DEVICE NUM
|
||||
CALL PRTDECB ; PRINT DEVICE NUM
|
||||
PRTS(": IO=0x$") ; FORMATTING
|
||||
LD A,(IY + 1) ; GET BASE PORT
|
||||
CALL PRTHEXBYTE ; PRINT BASE PORT
|
||||
|
||||
; PRINT THE UART TYPE
|
||||
LD A,(UART_TYPE)
|
||||
RLCA
|
||||
|
||||
@@ -23,6 +23,8 @@ VDU_STAT .EQU 0F2h ; VDU STATUS/REGISTER
|
||||
VDU_REG .EQU 0F2h ; VDU STATUS/REGISTER
|
||||
VDU_DATA .EQU 0F3h ; VDU DATA REGISTER
|
||||
;
|
||||
TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
|
||||
;
|
||||
;======================================================================
|
||||
; VDU DRIVER - INITIALIZATION
|
||||
;======================================================================
|
||||
@@ -34,6 +36,8 @@ VDU_INIT:
|
||||
CALL PRTHEXBYTE
|
||||
;
|
||||
CALL VDU_CRTINIT ; INIT SY6845 VDU CHIP
|
||||
CALL VDU_VDARES
|
||||
CALL PPK_INIT ; INITIALIZE KEYBOARD DRIVER
|
||||
;
|
||||
; ADD OURSELVES TO VDA DISPATCH TABLE
|
||||
LD B,0 ; PHYSICAL UNIT IS ZERO
|
||||
@@ -41,27 +45,13 @@ VDU_INIT:
|
||||
LD DE,0 ; UNIT DATA BLOB ADDRESS
|
||||
CALL VDA_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
|
||||
;
|
||||
; ADD OURSELVES TO CIO DISPATCH TABLE
|
||||
;LD B,0 ; PHYSICAL UNIT IS ZERO
|
||||
;LD C,CIODEV_VDU ; DEVICE TYPE
|
||||
;LD DE,0 ; UNIT DATA BLOB ADDRESS
|
||||
LD D,0 ; PHYSICAL UNIT IS ZERO
|
||||
LD E,CIODEV_VDU ; DEVICE TYPE
|
||||
LD BC,VDU_DISPCIO ; BC := DISPATCH ADDRESS
|
||||
CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
|
||||
LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
|
||||
|
||||
LD D,VDAEMU ; DEFAULT EMULATION
|
||||
LD E,0 ; VIDEO MODE = 0
|
||||
JP VDU_VDAINI
|
||||
;
|
||||
;======================================================================
|
||||
; VDU DRIVER - CHARACTER I/O (CIO) DISPATCHER AND FUNCTIONS
|
||||
;======================================================================
|
||||
;
|
||||
VDU_DISPCIO:
|
||||
JP PANIC
|
||||
VDU_CIODISPADR .EQU $ - 2
|
||||
; INITIALIZE EMULATION
|
||||
LD C,A ; ASSIGNED VIDEO UNIT IN C
|
||||
LD DE,VDU_DISPATCH ; DE := DISPATCH ADDRESS
|
||||
CALL TERM_ATTACH ; DO IT
|
||||
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
;======================================================================
|
||||
; VDU DRIVER - VIDEO DISPLAY ADAPTER (VDA) DISPATCHER AND FUNCTIONS
|
||||
@@ -104,17 +94,8 @@ VDU_DISPATCH:
|
||||
|
||||
VDU_VDAINI:
|
||||
; RESET VDA
|
||||
PUSH DE ; SAVE EMULATION TYPE (IN D)
|
||||
; CURRENTLY IGNORES VIDEO MODE AND BITMAP DATA
|
||||
CALL VDU_VDARES ; RESET VDA
|
||||
POP DE ; RECOVER EMULATION TYPE
|
||||
|
||||
; INITIALIZE EMULATION
|
||||
LD B,D ; EMULATION TYPE TO B
|
||||
LD C,CIODEV_VDU ; PASS OUR DEVICE TYPE IN C
|
||||
LD DE,VDU_DISPATCH ; DISPATCH ADDRESS TO DE
|
||||
CALL EMU_INIT ; INITIALIZE EMULATION, DE := CIO DISPATCHER
|
||||
LD (VDU_CIODISPADR),DE ; SAVE EMULATORS CIO DISPATCH INTERFACE ADDRESS
|
||||
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
|
||||
@@ -126,7 +107,6 @@ VDU_VDAQRY:
|
||||
RET
|
||||
|
||||
VDU_VDARES:
|
||||
;JR VDU_RESET ; DO THE RESET
|
||||
LD DE,0
|
||||
LD (VDU_OFFSET),DE
|
||||
CALL VDU_XY
|
||||
@@ -139,7 +119,7 @@ VDU_VDARES:
|
||||
|
||||
VDU_VDADEV:
|
||||
LD D,VDADEV_VDU ; D := DEVICE TYPE
|
||||
LD E,C ; E := PHYSICAL UNIT
|
||||
LD E,0 ; E := PHYSICAL UNIT IS ALWAYS ZERO
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
|
||||
@@ -526,3 +506,4 @@ VDU_INIT6845:
|
||||
; NEAREST NUMBER OF LINES IS 312 = (R4+1) * (R9+1) + R5.
|
||||
; 15625 / 312 = 50.08 FIELDS PER SECOND (NEAR ENOUGH-DGG)
|
||||
;
|
||||
#INCLUDE "ppk.asm"
|
||||
|
||||
Reference in New Issue
Block a user