Support MBC VDC

This commit is contained in:
Wayne Warthen
2021-12-10 16:34:15 -08:00
parent da71f225ca
commit e8ecdd0fac
14 changed files with 118 additions and 51 deletions

View File

@@ -10,7 +10,7 @@ TOOLS =../../Tools
OTHERS = *.img *.rom *.com *.upd *.bin *.z80 cpm.sys zsys.sys Build.inc font*.asm *.dat
include $(TOOLS)/Makefile.inc
FONTS := font8x11c.asm font8x11u.asm font8x16c.asm font8x16u.asm font8x8c.asm font8x8u.asm
FONTS := font8x11c.asm font8x11u.asm font8x16c.asm font8x16u.asm font8x8c.asm font8x8u.asm fontcgac.asm fontcgau.asm
ifneq ($(findstring $(ROM_PLATFORM), N8 MK4 RCZ180 SCZ180 DYNO),)
TASM=$(BINDIR)/uz80as -t hd64180

View File

@@ -202,6 +202,8 @@ XIOCFG .EQU DEFSERCFG ; XIO: SERIAL LINE CONFIG
VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
VDUSIZ .EQU V80X25 ; VDU: DISPLAY FORMAT [V80X24|V80X25|V80X30]
CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
CVDUMODE .EQU CVDUMODE_ECB ; CVDU: CVDU MODE: CVDUMODE_[NONE|ECB|MBC]
CVDUMON .EQU CVDUMON_CGA ; CVDU: CVDU MONITOR SETUP: CVDUMON_[NONE|CGA|EGA]
NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM)
TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|RC|RCV9958|RCKBD]

View File

@@ -137,7 +137,9 @@ XIOCFG .EQU DEFSERCFG ; XIO: SERIAL LINE CONFIG
;
VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
VDUSIZ .EQU V80X25 ; VDU: DISPLAY FORMAT [V80X24|V80X25|V80X30]
CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
CVDUENABLE .EQU TRUE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
CVDUMODE .EQU CVDUMODE_MBC ; CVDU: CVDU MODE: CVDUMODE_[NONE|ECB|MBC]
CVDUMON .EQU CVDUMON_CGA ; CVDU: CVDU MONITOR SETUP: CVDUMON_[NONE|CGA|EGA]
NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM)
TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|RC|RCV9958|RCKBD]

View File

@@ -137,6 +137,8 @@ XIOCFG .EQU DEFSERCFG ; XIO: SERIAL LINE CONFIG
VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
VDUSIZ .EQU V80X25 ; VDU: DISPLAY FORMAT [V80X24|V80X25|V80X30]
CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
CVDUMODE .EQU CVDUMODE_ECB ; CVDU: CVDU MODE: CVDUMODE_[NONE|ECB|MBC]
CVDUMON .EQU CVDUMON_EGA ; CVDU: CVDU MONITOR SETUP: CVDUMON_[NONE|CGA|EGA]
NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM)
TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|RC|RCV9958|RCKBD]

View File

@@ -139,6 +139,8 @@ XIOCFG .EQU DEFSERCFG ; XIO: SERIAL LINE CONFIG
VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
VDUSIZ .EQU V80X25 ; VDU: DISPLAY FORMAT [V80X24|V80X25|V80X30]
CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
CVDUMODE .EQU CVDUMODE_ECB ; CVDU: CVDU MODE: CVDUMODE_[NONE|ECB|MBC]
CVDUMON .EQU CVDUMON_EGA ; CVDU: CVDU MONITOR SETUP: CVDUMON_[NONE|CGA|EGA]
NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM)
TMSENABLE .EQU TRUE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .EQU TMSMODE_N8 ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|RC|RCV9958|RCKBD]

View File

@@ -138,6 +138,8 @@ XIOCFG .EQU DEFSERCFG ; XIO: SERIAL LINE CONFIG
VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
VDUSIZ .EQU V80X25 ; VDU: DISPLAY FORMAT [V80X24|V80X25|V80X30]
CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
CVDUMODE .EQU CVDUMODE_ECB ; CVDU: CVDU MODE: CVDUMODE_[NONE|ECB|MBC]
CVDUMON .EQU CVDUMON_EGA ; CVDU: CVDU MONITOR SETUP: CVDUMON_[NONE|CGA|EGA]
NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM)
TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|RC|RCV9958|RCKBD]

View File

@@ -18,17 +18,34 @@
;
CVDU_BASE .EQU $E0
;
#IF (CVDUMODE == CVDUMODE_ECB)
CVDU_KBDDATA .EQU CVDU_BASE + $02 ; KBD CTLR DATA PORT
CVDU_KBDST .EQU CVDU_BASE + $0A ; KBD CTLR STATUS/CMD PORT
CVDU_STAT .EQU CVDU_BASE + $04 ; READ M8563 STATUS
CVDU_REG .EQU CVDU_BASE + $04 ; SELECT M8563 REGISTER
CVDU_DATA .EQU CVDU_BASE + $0C ; READ/WRITE M8563 DATA
#ENDIF
;
#IF (CVDUMODE == CVDUMODE_MBC)
CVDU_KBDDATA .EQU CVDU_BASE + $02 ; KBD CTLR DATA PORT
CVDU_KBDST .EQU CVDU_BASE + $03 ; KBD CTLR STATUS/CMD PORT
CVDU_STAT .EQU CVDU_BASE + $04 ; READ M8563 STATUS
CVDU_REG .EQU CVDU_BASE + $04 ; SELECT M8563 REGISTER
CVDU_DATA .EQU CVDU_BASE + $05 ; READ/WRITE M8563 DATA
#ENDIF
;
CVDU_ROWS .EQU 25
CVDU_COLS .EQU 80
;
#DEFINE USEFONT8X16
#DEFINE CVDU_FONT FONT8X16
#IF (CVDUMON == CVDUMON_CGA)
#DEFINE USEFONTCGA
#DEFINE CVDU_FONT FONTCGA
#ENDIF
;
#IF (CVDUMON == CVDUMON_EGA)
#DEFINE USEFONT8X16
#DEFINE CVDU_FONT FONT8X16
#ENDIF
;
TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
;
@@ -775,47 +792,12 @@ CVDU_POS .DW 0 ; CURRENT DISPLAY POSITION
;
;
CVDU_INIT8563:
#IF 1
; EGA 720X368 9-BIT CHARACTERS
; - requires 16.257Mhz oscillator frequency
.DB $61 ; 0: hor. total - 1
.DB $50 ; 1: hor. displayed
.DB $5A ; 2: hor. sync position 85
.DB $14 ; 3: vert/hor sync width or 0x4F -- MDA
.DB $1A ; 4: vert total
.DB $02 ; 5: vert total adjust
.DB $19 ; 6: vert. displayed
.DB $1A ; 7: vert. sync postition
.DB $00 ; 8: interlace mode
.DB $0D ; 9: char height - 1
.DB $4C ; 10: cursor mode, start line
.DB $0D ; 11: cursor end line
.DB $00 ; 12: display start addr hi
.DB $00 ; 13: display start addr lo
.DB $00 ; 14: cursor position hi
.DB $00 ; 15: cursor position lo
.DB $00 ; 16: light pen vertical
.DB $00 ; 17: light pen horizontal
.DB $00 ; 18: update address hi
.DB $00 ; 19: update address lo
.DB $08 ; 20: attribute start addr hi
.DB $00 ; 21: attribute start addr lo
.DB $89 ; 22: char hor size cntrl 0x78
.DB $0D ; 23: vert char pixel space - 1, increase to 13 with new font
.DB $00 ; 24: copy/fill, reverse, blink rate; vertical scroll
.DB $48 ; 25: gr/txt, color/mono, pxl-rpt, dbl-wide; horiz. scroll
.DB $E0 ; 26: fg/bg colors (monochr)
.DB $00 ; 27: row addr display incr
.DB $30 ; 28: char set addr; RAM size (64/16)
.DB $0D ; 29: underline position
.DB $00 ; 30: word count - 1
.DB $00 ; 31: data
.DB $00 ; 32: block copy src hi
.DB $00 ; 33: block copy src lo
.DB $06 ; 34: display enable begin
.DB $56 ; 35: display enable end
.DB $00 ; 36: refresh rate
#ELSE
;
#IF (CVDUMON == CVDUMON_CGA)
;
; CGA 640x200 8-BIT CHARACTERS
; - requires 16.000Mhz oscillator frequency
;
.DB $7E ; 0: hor. total - 1
.DB $50 ; 1: hor. displayed
.DB $66 ; 2: hor. sync position 85
@@ -855,6 +837,50 @@ CVDU_INIT8563:
.DB $F5 ; 36: refresh rate
#ENDIF
;
#IF (CVDUMON == CVDUMON_EGA)
;
; EGA 720X350 9-BIT CHARACTERS
; - requires 16.257Mhz oscillator frequency
;
.DB $61 ; 0: hor. total - 1
.DB $50 ; 1: hor. displayed
.DB $5A ; 2: hor. sync position 85
.DB $14 ; 3: vert/hor sync width or 0x4F -- MDA
.DB $1A ; 4: vert total
.DB $02 ; 5: vert total adjust
.DB $19 ; 6: vert. displayed
.DB $1A ; 7: vert. sync postition
.DB $00 ; 8: interlace mode
.DB $0D ; 9: char height - 1
.DB $4C ; 10: cursor mode, start line
.DB $0D ; 11: cursor end line
.DB $00 ; 12: display start addr hi
.DB $00 ; 13: display start addr lo
.DB $00 ; 14: cursor position hi
.DB $00 ; 15: cursor position lo
.DB $00 ; 16: light pen vertical
.DB $00 ; 17: light pen horizontal
.DB $00 ; 18: update address hi
.DB $00 ; 19: update address lo
.DB $08 ; 20: attribute start addr hi
.DB $00 ; 21: attribute start addr lo
.DB $89 ; 22: char hor size cntrl 0x78
.DB $0D ; 23: vert char pixel space - 1, increase to 13 with new font
.DB $00 ; 24: copy/fill, reverse, blink rate; vertical scroll
.DB $48 ; 25: gr/txt, color/mono, pxl-rpt, dbl-wide; horiz. scroll
.DB $E0 ; 26: fg/bg colors (monochr)
.DB $00 ; 27: row addr display incr
.DB $30 ; 28: char set addr; RAM size (64/16)
.DB $0D ; 29: underline position
.DB $00 ; 30: word count - 1
.DB $00 ; 31: data
.DB $00 ; 32: block copy src hi
.DB $00 ; 33: block copy src lo
.DB $06 ; 34: display enable begin
.DB $56 ; 35: display enable end
.DB $00 ; 36: refresh rate
#ENDIF
;
;==================================================================================================
; CVDU DRIVER - INSTANCE DATA
;==================================================================================================

View File

@@ -5023,6 +5023,16 @@ FONT8X16:
.ECHO " 8X16"
#ENDIF
;
#IFDEF USEFONTCGA
FONTCGA:
#IF USELZSA2
#INCLUDE "fontcgac.asm"
#ELSE
#INCLUDE "fontcgau.asm"
#ENDIF
.ECHO " CGA"
#ENDIF
;
SIZ_FONTS .EQU $ - ORG_FONTS
.ECHO " occupy "
.ECHO SIZ_FONTS

View File

@@ -225,6 +225,18 @@ TMSMODE_RC .EQU 3 ; RC2014 TMS9918 VIDEO BOARD
TMSMODE_RCV9958 .EQU 4 ; RC2014 V9958 VIDEO BOARD
TMSMODE_RCKBD .EQU 5 ; RC2014 TMS9918 + PS2 KEYBOARD
;
; CVDU VIDEO MODE SELECTIONS
;
CVDUMODE_NONE .EQU 0
CVDUMODE_ECB .EQU 1 ; SCG ECB BOARD
CVDUMODE_MBC .EQU 2 ; MBC VDC BOARD
;
; CVDU MONITOR SELECTIONS
;
CVDUMON_NONE .EQU 0
CVDUMON_CGA .EQU 1 ; CGA MONITOR TIMING (16.000 MHZ OSC)
CVDUMON_EGA .EQU 2 ; EGA MONITOR TIMING (16.257 MHZ OSC)
;
; DMA MODE SELECTIONS
;
DMAMODE_NONE .EQU 0