Browse Source

Add VDA driver for Xosera, an FPGA-based video controller.

pull/565/head
Rob Gowin 8 months ago
parent
commit
936a3958a5
  1. 3
      Doc/ChangeLog.txt
  2. 1
      Source/Doc/Hardware.md
  3. 6
      Source/Doc/Introduction.md
  4. 19
      Source/Doc/SystemGuide.md
  5. 54
      Source/HBIOS/Config/RCZ80_xosera.asm
  6. 3
      Source/HBIOS/cfg_MASTER.asm
  7. 16
      Source/HBIOS/hbios.asm
  8. 1
      Source/HBIOS/hbios.inc
  9. 1050
      Source/HBIOS/xosera.asm

3
Doc/ChangeLog.txt

@ -1,12 +1,13 @@
Version 3.6
-----------
- RDG: Added VDA driver for Xosera FPGA-based VDC
- MGG: Added COBOL language disk image
- WDC: Added config options to PCF driver
- WBW: Enabled dynamic CPU speed update on LCD screen
- WBW: Improve LPT driver boot messaging when not detected (per Robb Bates)
- WBW: Correct DS1307 boot date/time display (per Tadeusz Pycio)
- WBW: Add -DELAY option to TUNE app (per Robb Bates)
- R?G: Add online documentation site
- RDG: Add online documentation site
- WBW: Added enhanced Hi-Tech C Compiler files from Ladislau Szilagyi
- WBW: Added boundary check to ram/rom disk driver

1
Source/Doc/Hardware.md

@ -2279,6 +2279,7 @@ the active platform and configuration.
| VDU | MC6845 Family Video Display Controller (*) |
| VGA | HD6445CP4-based Video Display Controller |
| VRC | VGARC Video Display Controller |
| XOSERA | XOSERA FPGA-based Video Display Controller |
Note:

6
Source/Doc/Introduction.md

@ -41,7 +41,7 @@ Supported hardware features of RomWBW include:
* Banked memory services for several banking designs
* Disk drivers for RAM, ROM, Floppy, IDE ATA/ATAPI, CF, SD, USB, Zip, Iomega
* Serial drivers including UART (16550-like), ASCI, ACIA, SIO
* Video drivers including TMS9918, SY6545, MOS8563, HD6445
* Video drivers including TMS9918, SY6545, MOS8563, HD6445, Xosera
* Keyboard (PS/2) drivers via VT8242 or PPI interfaces
* Real time clock drivers including DS1302, BQ4845
* Support for CP/NET networking using Wiznet, MT011 or Serial
@ -324,7 +324,9 @@ please let me know if I missed you!
* Les Bird has contributed support for the NABU w/ Option Board
* Rob Gowin created an online documentation site via MkDocs.
* Rob Gowin created an online documentation site via MkDocs, and
contributed a driver for the Xosera FPGA-based video
controller.
`\clearpage`{=latex}

19
Source/Doc/SystemGuide.md

@ -1756,14 +1756,17 @@ All video units are assigned a Device Type ID which indicates
the specific hardware device driver that handles the unit. The table
below enumerates their values.
| **Device Type** | **ID** | **Description** | **Driver** |
|-----------------|-------:|------------------------------------------|------------|
| VDADEV_VDU | 0x00 | MC6845 Family Video Display Controller | vdu.asm |
| VDADEV_CVDU | 0x01 | MC8563-based Video Display Controller | cvdu.asm |
| VDADEV_GDC | 0x02 | uPD7220 Video Display Controller | gdc.asm |
| VDADEV_TMS | 0x03 | TMS9918/38/58 Video Display Controller | tms.asm |
| VDADEV_VGA | 0x04 | HD6445CP4-based Video Display Controller | vga.asm |
| VDADEV_VRC | 0x05 | VGARC | vrc.asm |
| **Device Type** | **ID** | **Description** | **Driver** |
|-----------------|-------:|--------------------------------------------|------------|
| VDADEV_VDU | 0x00 | MC6845 Family Video Display Controller | vdu.asm |
| VDADEV_CVDU | 0x01 | MC8563-based Video Display Controller | cvdu.asm |
| VDADEV_GDC | 0x02 | uPD7220 Video Display Controller | gdc.asm |
| VDADEV_TMS | 0x03 | TMS9918/38/58 Video Display Controller | tms.asm |
| VDADEV_VGA | 0x04 | HD6445CP4-based Video Display Controller | vga.asm |
| VDADEV_VRC | 0x05 | VGARC | vrc.asm |
| VDADEV_EF | 0x06 | EF9345 | ef.asm |
| VDADEV_FV | 0x07 | S100 FPGA VGA | fv.asm |
| VDADEV_XOSERA | 0x08 | Xosera FPGA-based Video Display Controller | xosera.asm |
Depending on the capabilities of the hardware, the use of colors and
attributes may or may not be supported. If the hardware does not support

54
Source/HBIOS/Config/RCZ80_xosera.asm

@ -0,0 +1,54 @@
;
;==================================================================================================
; ROMWBW CUSTOM USER BUILD SETTINGS EXAMPLE FOR RCBUS Z80
;==================================================================================================
;
; THIS FILE IS AN EXAMPLE OF A CUSTOM USER SETTINGS FILE. THESE
; SETTINGS OVERRIDE THE DEFAULT SETTINGS OF THE INHERITED FILES AS
; DESIRED BY A USER.
;
; ROMWBW USES CASCADING CONFIGURATION FILES AS INDICATED BELOW:
;
; cfg_MASTER.asm - MASTER: CONFIGURATION FILE DEFINES ALL POSSIBLE ROMWBW SETTINGS
; |
; +-> cfg_<platform>.asm - PLATFORM: DEFAULT SETTINGS FOR SPECIFIC PLATFORM
; |
; +-> Config/<plt>_std.asm - BUILD: SETTINGS FOR EACH OFFICIAL DIST BUILD
; |
; +-> Config/<plt>_<cust>.asm - USER: CUSTOM USER BUILD SETTINGS
;
; THE TOP (MASTER CONFIGURATION) FILE DEFINES ALL POSSIBLE ROMWBW
; CONFIGURATION SETTINGS. EACH FILE BELOW THE MASTER CONFIGURATION FILE
; INHERITS THE CUMULATIVE SETTINGS OF THE FILES ABOVE IT AND MAY
; OVERRIDE THESE SETTINGS AS DESIRED.
;
; OTHER THAN THE TOP MASTER FILE, EACH FILE MUST "#INCLUDE" ITS PARENT
; FILE (SEE #INCLUDE STATEMENT BELOW). THE TOP TWO FILES SHOULD NOT BE
; MODIFIED.
;
; THIS FILE EXEMPLIFIES THE IDEAL WAY TO CREATE A USER SPECIFIC BUILD
; CONFIGURATION. NOTICE THAT IT INCLUDES THE DEFAULT BUILD SETTINGS
; FILE AND OVERRIDES SOME DESIRED SETTINGS.
;
; BY CREATING A CUSTOM USER SETTINGS FILE, YOU ARE LESS LIKELY TO BE
; IMPACTED BY FUTURE CHANGES BECAUSE YOU WILL BE INHERITING MOST
; OF YOUR SETTINGS WHICH WILL BE UPDATED BY AUTHORS AS ROMWBW EVOLVES.
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE
; SOURCE DIRECTORY (TWO DIRECTORIES ABOVE THIS ONE).
;
; *** WARNING: ASIDE FROM THE MASTER CONFIGURATION FILE, YOU MUST USE
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
; THIS FILE ENABLES THE XOSERA DRIVER WITH A BASE ADDRESS Of 0XE0
; AND DISPLAY SIZE OF 80 COLUMNS X 30 ROWS
;
#INCLUDE "Config/RCZ80_std.asm" ; INHERIT FROM OFFICIAL BUILD SETTINGS
;
XOSENABLE .SET TRUE ; XOSERA: ENABLE XOSERA VIDEO DRIVERS (XOSERA.ASM)
XOS_BASE .SET $20 ; XOSERA: I/O BASE ADDRESS (REQUIRES 32 BYTES)
XOSSIZ .SET V80X30 ; XOSERA: DISPLAY FORMAT [V80X30|V80X60]
;
AUTOCON .SET FALSE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
VDAEMU_SERKBD .SET $0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD

3
Source/HBIOS/cfg_MASTER.asm

@ -311,6 +311,9 @@ VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
FVENABLE .EQU FALSE ; FV: ENABLE FPGA VGA VIDEO DRIVER (FV.ASM)
XOSENABLE .EQU FALSE ; XOSERA: ENABLE XOSERA VIDEO DRIVERS (XOSERA.ASM)
XOS_BASE .EQU $20 ; XOSERA: I/O BASE ADDRESS (REQUIRES 32 BYTES)
XOSSIZ .EQU V80X30 ; XOSERA: DISPLAY FORMAT [V80X30|V80X60]
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK

16
Source/HBIOS/hbios.asm

@ -3955,6 +3955,9 @@ HB_PCINITTBL:
#IF (PIO_4P | PIO_ZP)
.DW PIO_PREINIT
#ENDIF
#IF (XOSENABLE)
.DW XOS_PREINIT
#ENDIF
;
HB_PCINITTBLLEN .EQU (($ - HB_PCINITTBL) / 2)
;
@ -4090,6 +4093,9 @@ HB_INITTBL:
#IF (SCONENABLE)
.DW SCON_INIT
#ENDIF
#IF (XOSENABLE)
.DW XOS_INIT
#ENDIF
#IF (LPTENABLE)
.DW LPT_INIT
#ENDIF
@ -8831,6 +8837,7 @@ PS_VDVGA .TEXT "VGA$"
PS_VDVRC .TEXT "VRC$"
PS_VDEF .TEXT "EF$"
PS_VDFV .TEXT "FV$"
PS_VDXOSERA .TEXT "XOSERA$"
;
; VIDEO TYPE STRINGS
;
@ -9168,6 +9175,15 @@ SIZ_FV .EQU $ - ORG_FV
MEMECHO " bytes.\n"
#ENDIF
;
#IF (XOSENABLE)
ORG_XOS .EQU $
#INCLUDE "xosera.asm"
SIZ_XOS .EQU $ - ORG_XOS
MEMECHO "XOS occupies "
MEMECHO SIZ_XOS
MEMECHO " bytes.\n"
#ENDIF
;
#IF (DMAENABLE)
ORG_DMA .EQU $
#INCLUDE "dma.asm"

1
Source/HBIOS/hbios.inc

@ -450,6 +450,7 @@ VDADEV_VGA .EQU $04 ; ECB VGA3 - HITACHI HD6445
VDADEV_VRC .EQU $05 ; VGARC
VDADEV_EF .EQU $06 ; EF9345
VDADEV_FV .EQU $07 ; S100 FPGA VGA
VDADEV_XOSERA .EQU $08 ; XOSERA RCBUS
;
; SOUND DEVICE IDS
;

1050
Source/HBIOS/xosera.asm

File diff suppressed because it is too large
Loading…
Cancel
Save