Compare commits

..

5 Commits

Author SHA1 Message Date
Wayne Warthen
7ac88efac1 Support for VGARC
Initial support for Bill Shen's VGARC video/keyboard module for RCBus.
2023-05-02 19:23:51 -07:00
Wayne Warthen
9f71fe05aa Cleanup IDE and PPIDE drivers
- The use of hardware reset has been improved such that it is generally only used at initial boot up.
- Minor improvements to CF card detection and initialization.
- Implement a simple wait mechanism to accommodate the startup time of the RC2014 SD Pico module.
- Front panel I/O port for SC series of systems has been moved to 0x00 which is consistent with all other systems and avoids some I/O conflicts.
2023-04-30 12:03:16 -07:00
Wayne Warthen
ad3c533145 Fix IDE Detection on Spinning Disks
Prior improvement to IDE device detection broke detection of spinning hard disks.  IDE registers cannot be used prior to device init completion (spin up).  Not a problem for CF, but special steps required to ensure devices are fully initialized before register testing.
2023-04-23 18:47:43 -07:00
Wayne Warthen
e43a939f54 Improve IDE Device Detection
Per issue #343, some systems could initially detect a non-existent IDE device which would cause a long time-out.  This should resolve the issue.
2023-04-21 17:08:18 -07:00
Wayne Warthen
e5b7409f44 Support Per-floppy Device Drive Types
- Floppy devices are now configured per-device so that each floppy drive can be different (e.g., first floppy is 3.5" and second floppy is 5.25").
- Removed need to use termination signal on floppy sector I/O.

Addresses issue #318
2023-04-20 16:24:14 -07:00
56 changed files with 1679 additions and 672 deletions

View File

@@ -4,6 +4,7 @@ Version 3.3
- A?C: Preliminary support for Z80-Retro
- A?C: Support for SD PIO
- A?C: Support for Z80-Retro SD interface
- WBW: Support per-drive floppy configuration
Version 3.2.1
-------------

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -3,7 +3,7 @@
**RomWBW ReadMe** \
Version 3.3 \
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
16 Apr 2023
02 May 2023
# Overview

View File

@@ -1,6 +1,6 @@
RomWBW ReadMe
Wayne Warthen (wwarthen@gmail.com)
16 Apr 2023
02 May 2023

View File

@@ -3923,5 +3923,6 @@ may be discovered by RomWBW in your system.
| USB-FIFO | Char | FT232H-based ECB USB FIFO |
| VDU | Video | MC6845 Family Video Display Controller |
| VGA | Video | HD6445CP4-based Video Display Controller |
| VRC | Video | VGARC Video Display Controller s |
| YM | Audio | YM2612 Programmable Sound Generator |
| Z2U | Char | Zilog Z280 CPU Built-in Serial Ports |

View File

@@ -30,6 +30,7 @@ CPUOSC .SET 18432000 ; CPU OSC FREQ IN MHZ
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
FPENABLE .SET TRUE ; ENABLES FRONT PANEL SWITCHES
DIAGENABLE .SET TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
;
MEMMGR .SET MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180]
;
@@ -48,6 +49,7 @@ SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
;
;

View File

@@ -30,6 +30,7 @@ CPUOSC .SET 18432000 ; CPU OSC FREQ IN MHZ
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
FPENABLE .SET TRUE ; ENABLES FRONT PANEL SWITCHES
DIAGENABLE .SET TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
;
MEMMGR .SET MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180]
;
@@ -48,9 +49,9 @@ SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
;
;
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AYMODE .SET AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC]
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER

View File

@@ -31,6 +31,7 @@ INTMODE .SET 1 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
FPENABLE .SET TRUE ; ENABLES FRONT PANEL SWITCHES
DIAGENABLE .SET TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
;
MEMMGR .SET MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180]
;
@@ -47,6 +48,7 @@ SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
;
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER

View File

@@ -31,6 +31,7 @@ INTMODE .SET 3 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
FPENABLE .SET TRUE ; ENABLES FRONT PANEL SWITCHES
DIAGENABLE .SET TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
;
MEMMGR .SET MM_Z280 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280]
;
@@ -47,6 +48,7 @@ SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
;
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER

View File

@@ -33,6 +33,7 @@ INTMODE .SET 3 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
FPENABLE .SET TRUE ; ENABLES FRONT PANEL SWITCHES
DIAGENABLE .SET TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
;
MEMMGR .SET MM_Z280 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280]
;
@@ -53,6 +54,7 @@ SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
;
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER

View File

@@ -33,6 +33,7 @@ INTMODE .SET 3 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
FPENABLE .SET TRUE ; ENABLES FRONT PANEL SWITCHES
DIAGENABLE .SET TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
;
MEMMGR .SET MM_Z280 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280]
;
@@ -61,6 +62,7 @@ SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
;
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER

View File

@@ -34,6 +34,7 @@ CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
;
FPENABLE .SET TRUE ; ENABLES FRONT PANEL SWITCHES
DIAGENABLE .SET TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
;
WDOGMODE .SET WDOG_EZZ80 ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
WDOGIO .SET $6F ; WATCHDOG REGISTER ADR
@@ -62,6 +63,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
;
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER

View File

@@ -31,6 +31,7 @@ INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
FPENABLE .SET TRUE ; ENABLES FRONT PANEL SWITCHES
DIAGENABLE .SET TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
;
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
RP5RTCENABLE .SET FALSE ; RP5C01 RTC BASED CLOCK (RP5RTC.ASM)
@@ -57,6 +58,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
;
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER

View File

@@ -35,6 +35,7 @@ SKZENABLE .SET TRUE ; ENABLE SERGEY'S Z80-512K FEATURES
SKZDIV .SET DIV_12 ; UART CLK (CLK2) DIVIDER FOR Z80-512K
WDOGMODE .SET WDOG_SKZ ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
;
DIAGENABLE .SET TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
LEDENABLE .SET TRUE ; ENABLES STATUS LED (SINGLE LED)
LEDPORT .SET $6E ; STATUS LED PORT ADDRESS
;
@@ -52,6 +53,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
;
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER

View File

@@ -30,6 +30,7 @@ CPUOSC .SET 7372800 ; CPU OSC FREQ IN MHZ
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
FPENABLE .SET TRUE ; ENABLES FRONT PANEL SWITCHES
DIAGENABLE .SET TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
;
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
RP5RTCENABLE .SET FALSE ; RP5C01 RTC BASED CLOCK (RP5RTC.ASM)
@@ -43,6 +44,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
;
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER

View File

@@ -34,6 +34,7 @@ CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
;
FPENABLE .SET TRUE ; ENABLES FRONT PANEL SWITCHES
DIAGENABLE .SET TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
;
EIPCENABLE .SET TRUE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
WDOGMODE .SET WDOG_EZZ80 ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
@@ -67,6 +68,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
;
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER

View File

@@ -31,6 +31,7 @@ CPUOSC .SET 14745600 ; CPU OSC FREQ IN MHZ
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
FPENABLE .SET TRUE ; ENABLES FRONT PANEL SWITCHES
DIAGENABLE .SET TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
;
RAMSIZE .SET 1536 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
MEMMGR .SET MM_ZRC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180]
@@ -44,6 +45,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
;
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER

View File

@@ -32,6 +32,7 @@ CPUOSC .SET 7372800 ; CPU OSC FREQ IN MHZ
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
FPENABLE .SET TRUE ; ENABLES FRONT PANEL SWITCHES
DIAGENABLE .SET TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
;
RAMSIZE .SET 2048 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 0 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
@@ -48,6 +49,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
;
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER

View File

@@ -51,6 +51,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
;
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER

View File

@@ -35,8 +35,10 @@ Z180_CLKDIV .SET 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2
Z180_MEMWAIT .SET 0 ; Z180: MEMORY WAIT STATES (0-3)
Z180_IOWAIT .SET 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
;
FPENABLE .SET TRUE ; ENABLES FRONT PANEL SWITCHES
DIAGENABLE .SET TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .SET $00 ; DIAGNOSTIC PORT ADDRESS
LEDENABLE .SET TRUE ; ENABLE STATUS LED (SINGLE LED)
DIAGENABLE .SET FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
;
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
INTRTCENABLE .SET TRUE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
@@ -50,6 +52,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
;
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER

View File

@@ -35,10 +35,10 @@ Z180_MEMWAIT .SET 0 ; Z180: MEMORY WAIT STATES (0-3)
Z180_IOWAIT .SET 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
;
FPENABLE .SET TRUE ; ENABLES FRONT PANEL SWITCHES
FPBASE .SET $A0 ; FRONT PANEL I/O PORT BASE ADDRESS
FPBASE .SET $00 ; FRONT PANEL I/O PORT BASE ADDRESS
LEDENABLE .SET TRUE ; ENABLE STATUS LED (SINGLE LED)
DIAGENABLE .SET TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .SET $A0 ; DIAGNOSTIC PORT ADDRESS
DIAGPORT .SET $00 ; DIAGNOSTIC PORT ADDRESS
;
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
INTRTCENABLE .SET TRUE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)

View File

@@ -35,10 +35,10 @@ Z180_MEMWAIT .SET 0 ; Z180: MEMORY WAIT STATES (0-3)
Z180_IOWAIT .SET 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
;
FPENABLE .SET TRUE ; ENABLES FRONT PANEL SWITCHES
FPBASE .SET $A0 ; FRONT PANEL I/O PORT BASE ADDRESS
FPBASE .SET $00 ; FRONT PANEL I/O PORT BASE ADDRESS
LEDENABLE .SET TRUE ; ENABLE STATUS LED (SINGLE LED)
DIAGENABLE .SET TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .SET $A0 ; DIAGNOSTIC PORT ADDRESS
DIAGPORT .SET $00 ; DIAGNOSTIC PORT ADDRESS
;
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
INTRTCENABLE .SET TRUE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)

View File

@@ -634,9 +634,10 @@ ANSI_BEL:
ANSI_BS:
LD A,(ANSI_COL) ; GET CURRENT COLUMN
DEC A ; BACK IT UP BY ONE
RET C ; IF CARRY, MARGIN EXCEEDED, ABORT
;RET C ; IF CARRY, MARGIN EXCEEDED, ABORT
RET M ; IF CARRY, MARGIN EXCEEDED, ABORT
LD (ANSI_COL),A ; SAVE NEW COLUMN
JP ANSI_XY ; UDPATE CUSROR AND RETURN
JP ANSI_XY ; UDPATE CURSOR AND RETURN
;
ANSI_CR:
XOR A ; ZERO ACCUM

View File

@@ -174,6 +174,7 @@ TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
@@ -185,9 +186,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_DYNO ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
;
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
;

View File

@@ -228,6 +228,7 @@ TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|M
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
@@ -239,9 +240,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_NONE ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
;
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4)

View File

@@ -156,6 +156,7 @@ TMSMODE .EQU TMSMODE_MBC ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MS
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
@@ -168,9 +169,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_MBC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
;
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4)

View File

@@ -167,6 +167,7 @@ TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MS
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
@@ -178,9 +179,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_DIDE ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
;
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4)

View File

@@ -169,6 +169,7 @@ TMSMODE .EQU TMSMODE_N8 ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSX
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
@@ -180,9 +181,9 @@ FDENABLE .EQU TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_N8 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
;
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4)

View File

@@ -174,6 +174,7 @@ TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
@@ -185,9 +186,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
;
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
;

View File

@@ -184,6 +184,7 @@ TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
@@ -195,9 +196,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
;
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
;

View File

@@ -86,8 +86,8 @@ VDAEMU_SERKBD .EQU $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPKTRACE .EQU 1 ; PPK DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
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]
PPKKBLOUT .EQU KBD_US ; PPK KEYBOARD LANGUAGE: KBD_[US|DE]
MKYENABLE .EQU FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
MKYKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
;
@@ -178,6 +178,7 @@ TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
@@ -189,9 +190,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
;
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
;

View File

@@ -158,6 +158,7 @@ TMSMODE .EQU TMSMODE_N8 ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSX
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
@@ -169,9 +170,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_N8 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
;
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4)

View File

@@ -156,6 +156,7 @@ TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MS
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
@@ -163,14 +164,13 @@ MDRAM .EQU TRUE ; MD: ENABLE RAM DISK
MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM
;
;
FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_DIO3 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
;
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4)

View File

@@ -67,7 +67,7 @@ SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES
WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
;
FPENABLE .EQU FALSE ; ENABLES FRONT PANEL SWITCHES
FPBASE .EQU $0D ; FRONT PANEL I/O PORT BASE ADDRESS
FPBASE .EQU $00 ; FRONT PANEL I/O PORT BASE ADDRESS
DIAGENABLE .EQU TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .EQU $0D ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
@@ -174,6 +174,7 @@ TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
@@ -185,9 +186,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
;
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
;

View File

@@ -158,6 +158,7 @@ TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
@@ -169,9 +170,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_ZETA2 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
FDCNT .EQU 1 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
;
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
;

View File

@@ -128,6 +128,7 @@ TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
@@ -139,9 +140,9 @@ FDENABLE .EQU TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_ZETA ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
FDCNT .EQU 1 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
;
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
;

View File

@@ -139,6 +139,7 @@ TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
@@ -150,9 +151,9 @@ FDENABLE .EQU TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_ZETA2 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
FDCNT .EQU 1 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
;
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
;

View File

@@ -902,5 +902,6 @@ CVDU_INIT8563:
;==================================================================================================
;
CVDU_IDAT:
.DB KBDMODE_PS2 ; PS/2 8242 KEYBOARD CONTROLLER
.DB CVDU_KBDST
.DB CVDU_KBDDATA

View File

@@ -109,7 +109,7 @@ FRC_TOSEEKWT .EQU -15H ; EB
; FD DEVICE CONFIGURATION
;
FD_DEVCNT .EQU FDCNT ; 2 DEVICES SUPPORTED
FD_CFGSIZ .EQU 8 ; SIZE OF CFG TBL ENTRIES
FD_CFGSIZ .EQU 9 ; SIZE OF CFG TBL ENTRIES
;
; PER DEVICE DATA OFFSETS
; ; OFFSET OF...
@@ -121,25 +121,28 @@ FD_HST .EQU 4 ; HOSTS SEEK POSITION
FD_HSTTRK .EQU FD_HST + 0 ; HOST TRACK (WORD)
FD_HSTSEC .EQU FD_HST + 2 ; HOST SECTOR (BYTE)
FD_HSTHD .EQU FD_HST + 3 ; HOST HEAD (BYTE)
FD_TYPE .EQU 8 ; FLOPPY DSIK TYPE (BYTE)
;
FD_CFGTBL:
; DEVICE 0, PRIMARY MASTER
.DB 0 ; DEVICE NUMBER
.DB 0 ; DEVICE STATUS
.DB FDMEDIA ; MEDIA TYPE
.DB $FF ; CURRENT MEDIA TYPE (INIT TO NONE)
.DB $FF ; CURRENT TRACK
.DW 0 ; HOST TRACK
.DB 0 ; HOST SECTOR
.DB 0 ; HOST HEAD
.DB FD0TYPE ; DRIVE TYPE
#IF (FD_DEVCNT >= 2)
; DEVICE 1, PRIMARY SLAVE
.DB 1 ; DRIVER DEVICE NUMBER
.DB 0 ; DEVICE STATUS
.DB FDMEDIA ; MEDIA TYPE
.DB $FF ; CURRENT MEDIA TYPE (INIT TO NONE)
.DB $FF ; CURRENT TRACK
.DW 0 ; HOST TRACK
.DB 0 ; HOST SECTOR
.DB 0 ; HOST HEAD
.DB FD1TYPE ; DRIVE TYPE
#ENDIF
;
#IF ($ - FD_CFGTBL) != (FD_DEVCNT * FD_CFGSIZ)
@@ -199,6 +202,42 @@ FSST_ENTSIZ .EQU $ - FSST
FSST_COUNT .EQU (($ - FSST) / FSST_ENTSIZ) ; # ENTRIES IN TABLE
#ENDIF
;
; FDC DRIVE TYPE MEDIA OPTIONS
;
; THIS TABLE LISTS THE TYPES OF MEDIA THAT SHOULD BE ATTEMPTED
; FOR EACH POSSIBLE DRIVE TYPE. THE ENTRIES MATCH THE ORDER OF THE
; FDT_ VALUES DEFINED IN STD.ASM
;
FD_MEDIAMAP:
.DW FDMM_NONE ; NO DRIVE TYPE
.DW FDMM_3DD
.DW FDMM_3HD
.DW FDMM_5DD
.DW FDMM_5HD
.DW FDMM_8
;
FDMM_NONE .DB $FF
FDMM_3DD .DB FDM720, $FF
FDMM_3HD .DB FDM144, FDM720, $FF
FDMM_5DD .DB FDM360, $FF
FDMM_5HD .DB FDM120, FDM360, $FF
FDMM_8 .DB FDM111, $FF
;
; FDC DRIVE TYPE ATTRIBUTES
;
; LOOKUP TABLE TO MAP THE DEVICE ATTRIBUTES BYTE RETURNED
; BY THE FD_DEVICE FUNCTION BASED ON THE DRIVE TYPE.
; THE ENTRIES MATCH THE ORDER OF THE
; FDT_ VALUES DEFINED IN STD.ASM
;
FD_DEVATTR:
.DB %11100000 ; DRIVE TYPE NONE
.DB %11010100 ; DRIVE TYPE 3.5 DD
.DB %11011000 ; DRIVE TYPE 3.5 HD
.DB %10110100 ; DRIVE TYPE 5.25 DD
.DB %10111000 ; DRIVE TYPE 5.25 HD
.DB %10010100 ; DRIVE TYPE 8
;
; FDC COMMANDS
;
CFD_READ .EQU 00000110B ; CMD,HDS/DS,C,H,R,N,EOT,GPL,DTL --> ST0,ST1,ST2,C,H,R,N
@@ -498,21 +537,11 @@ FD_DEFMED:
FD_DEVICE:
LD D,DIODEV_FD ; D := DEVICE TYPE
LD E,(IY+FD_DEV) ; E := PHYSICAL DEVICE NUMBER
#IF (FDMEDIA == FDM720)
LD C,%11010100 ; 3.5" DS/DD
#ENDIF
#IF (FDMEDIA == FDM144)
LD C,%11011000 ; 3.5" DS/HD
#ENDIF
#IF (FDMEDIA == FDM360)
LD C,%10110100 ; 5.25" DS/DD
#ENDIF
#IF (FDMEDIA == FDM120)
LD C,%10111000 ; 5.25" DS/HD
#ENDIF
#IF (FDMEDIA == FDM111)
LD C,%10010100 ; 8" DS/DD
#ENDIF
LD A,(IY+FD_TYPE) ; DRIVE TYPE
LD HL,FD_DEVATTR ; DEVICE ATTR TABLE
CALL ADDHLA ; POINT TO ENTRY
LD C,(HL) ; GET IT
LD H,FDMODE ; H := MODE
LD L,FDC_MSR ; L := BASE I/O ADDRESS
XOR A ; SIGNAL SUCCESS
@@ -527,9 +556,7 @@ FD_MEDIA:
#IF (FDMAUTO)
; SETUP TO READ TRK 0, HD 0, SEC 0
;LD A,C ; C STILL HAS REQUESTED DRIVE
LD A,(IY+FD_DEV) ; GET DRIVE UNIT
;AND 0FH
LD (FCD_DS),A
LD A,0
LD (FCD_C),A
@@ -538,53 +565,77 @@ FD_MEDIA:
LD (FCD_R),A
LD A,DOP_READID
LD (FCD_DOP),A
#ENDIF
#IF (FDTRACE < 3)
LD A,(IY+FD_TYPE) ; GET DRIVE TYPE VALUE
;CALL PRTHEXBYTE ; *DEBUG*
LD HL,FD_MEDIAMAP ; POINT TO MEDIA MAP TABLE
ADD A,A ; TABLE IS WORD SIZED
CALL ADDHLA ; LOOKUP ENTRY
LD A,(HL) ; DEREFERENCE
INC HL
LD H,(HL)
LD L,A
#IF (FDMAUTO)
#IF (FDTRACE < 3)
; SUPPRESS TRACING FOR MEDIA TESTS
LD A,0
LD (FCD_TRACE),A
#ENDIF
LD B,5
#ENDIF
LD B,5 ; 5 ATTEMPTS
FD_MEDIARETRY:
; TRY PRIMARY MEDIA CHOICE FIRST
LD A,FDMEDIA
CALL FD_TESTMEDIA
JR Z,FD_MEDIA3 ; IF SUCCESS, WE ARE DONE
; TRY ALTERNATE MEDIA CHOICE
LD A,FDMEDIAALT
CALL FD_TESTMEDIA
JR Z,FD_MEDIA3 ; IF SUCCESS, WE ARE DONE
DJNZ FD_MEDIARETRY
PUSH HL ; SAVE MEDIA MAP PTR
CALL FD_MEDIALOOP ; TRY IT
POP HL ; RECOVER MEDIA MAP PTR
JR Z,FD_MEDIA3 ; CONTINUE ON SUCCESS
DJNZ FD_MEDIARETRY ; LOOP TILL DONE
FD_MEDIARETRY1:
; NO JOY, RETURN WITH E=0 (NO MEDIA)
;LD HL,(FDDS_MEDIAADR)
;LD (HL),0 ; SET TO NO MEDIA
LD (IY+FD_MEDTYP),0 ; SET DRIVE = NO MEDIA
LD E,0
LD (IY+FD_MEDTYP),$FF ; SET MEDIA TYPE TO UNDEFINED
LD E,0 ; NO MEDIA FLAG
LD A,ERR_NOMEDIA ; SIGNAL ERROR
OR A ; SET FLAGS
RET
FD_MEDIALOOP:
LD A,(HL) ; LOAD NEXT MEDIA TYPE TO TRY
CP $FF ; END OF MEDIA TYPES TO TRY?
JR Z,FD_MEDIALOOP1 ; NO MORE TO TRY, LOOP EXIT
CALL FD_TESTMEDIA ; TRY IT
RET Z ; RETURN ON SUCCESS
INC HL ; NEXT MEDIA TYPE TO TRY
JR FD_MEDIALOOP ; LOOP
FD_MEDIALOOP1:
OR $FF ; SIGNAL FAILURE
RET ; RETURN
FD_TESTMEDIA:
;LD HL,(FDDS_MEDIAADR)
;LD (HL),A
;CALL PRTHEXBYTE ; *DEBUG*
LD (IY+FD_MEDTYP),A
PUSH HL
PUSH BC
CALL FD_START
POP BC
POP HL
;CALL PRTHEXBYTE ; *DEBUG*
RET
FD_MEDIA3:
#IF (FDTRACE < 3)
#IF (FDTRACE < 3)
; RESTORE TRACING FOR MEDIA TESTS
LD A,FDTRACE
LD (FCD_TRACE),A
#ENDIF
#ENDIF
#ELSE
LD A,(HL)
LD (IY+FD_MEDTYP),A
#ENDIF
FD_MEDIA4:
@@ -778,7 +829,7 @@ FD_DETECT1:
;
FD_INITUNIT:
LD (IY+FD_STAT),0 ; CLEAR STATUS
LD (IY+FD_MEDTYP),FDMEDIA ; SET DEFAULT MEDIA TYPE
LD (IY+FD_MEDTYP),$FF ; SET UNKNOWN MEDIA TYPE
LD (IY+FD_CURTRK),$FE ; SPECIAL VALUE FOR CURTRK
RET
;
@@ -1285,7 +1336,8 @@ FC_SETUPIO:
LD (DE),A
INC DE
LD A,(FCD_EOT)
;LD A,(FCD_EOT)
LD A,(FCD_R) ; READ ONLY ONE SECTOR
LD (DE),A
INC DE
@@ -1397,15 +1449,17 @@ FC_RESETFDC:
; PULSE TERMCT TO TERMINATE ANY ACTIVE EXECUTION PHASE
;
FC_PULSETC:
#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO) | (FDMODE == FDMODE_EPFDC) | (FDMODE == FDMODE_MBC))
IN A,(FDC_TC)
#ELSE
LD A,(FST_DOR)
SET 0,A
OUT (FDC_DOR),A
RES 0,A
OUT (FDC_DOR),A
#ENDIF
; PULSING TC NO LONGER REQUIRED BECAUSE WE ONLY READ A SINGLE SECTOR
;
;#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO) | (FDMODE == FDMODE_EPFDC) | (FDMODE == FDMODE_MBC))
; IN A,(FDC_TC)
;#ELSE
; LD A,(FST_DOR)
; SET 0,A
; OUT (FDC_DOR),A
; RES 0,A
; OUT (FDC_DOR),A
;#ENDIF
RET
;
; SET FST_DOR FOR MOTOR CONTROL ON
@@ -1694,7 +1748,7 @@ FXR_TO: ; TIMEOUT
;
FXR_ABORT: ; EXECUTION ABORTED
HB_EI ; INTERRUPTS OK AGAIN
JR FOP_RES ; GET RSEULTS, NO NEED TO PULSE TC
JR FOP_RES ; GET RESULTS, NO NEED TO PULSE TC
;
FXR_END: ; EXECUTION COMPLETED NORMALLY
CALL FC_PULSETC ; PULSE TC TO END EXECUTION
@@ -1828,7 +1882,9 @@ FOP_EVALST1:
LD C,FRC_ENDCYL
BIT 7,A
JR NZ,FOP_SETFST
; THI IS NORMAL BECAUSE WE NOW READ ONLY A SINGLE SECTOR
;JR NZ,FOP_SETFST
JR NZ,FOP_EXIT
LD C,FRC_DATAERR
BIT 5,A

View File

@@ -325,5 +325,6 @@ GDC_POS .DW 0 ; CURRENT DISPLAY POSITION
;==================================================================================================
;
GDC_IDAT:
.DB KBDMODE_PS2 ; PS/2 8242 KEYBOARD CONTROLLER
.DB GDC_KBDST
.DB GDC_KBDDATA

View File

@@ -3232,6 +3232,9 @@ HB_INITTBL:
#IF (TMSENABLE)
.DW TMS_INIT
#ENDIF
#IF (VRCENABLE)
.DW VRC_INIT
#ENDIF
;#IF (DSKYENABLE)
; .DW DSKY_INIT
;#ENDIF
@@ -6181,6 +6184,15 @@ SIZ_GDC .EQU $ - ORG_GDC
.ECHO " bytes.\n"
#ENDIF
;
#IF (VRCENABLE)
ORG_VRC .EQU $
#INCLUDE "vrc.asm"
SIZ_VRC .EQU $ - ORG_VRC
.ECHO "VRC occupies "
.ECHO SIZ_VRC
.ECHO " bytes.\n"
#ENDIF
;
#IF (DMAENABLE)
ORG_DMA .EQU $
#INCLUDE "dma.asm"
@@ -6241,7 +6253,7 @@ SIZ_FONTS .EQU $ - ORG_FONTS
.ECHO SIZ_FONTS
.ECHO " bytes.\n"
;
#IF (CVDUENABLE | VGAENABLE) | GDCENABLE | (TMSENABLE & ((TMSMODE == TMSMODE_MSXKBD) | (TMSMODE == TMSMODE_MBC)))
#IF (CVDUENABLE | VGAENABLE | GDCENABLE | VRCENABLE | (TMSENABLE & ((TMSMODE == TMSMODE_MSXKBD) | (TMSMODE == TMSMODE_MBC))))
ORG_KBD .EQU $
#INCLUDE "kbd.asm"
SIZ_KBD .EQU $ - ORG_KBD
@@ -6438,7 +6450,7 @@ SIZ_YM2612 .EQU $ - ORG_YM2612
;
; INCLUDE LZSA2 decompression engine if required.
;
#IF ((VGAENABLE | CVDUENABLE | TMSENABLE | GDCENABLE) & USELZSA2)
#IF ((VGAENABLE | CVDUENABLE | TMSENABLE | GDCENABLE | VRCENABLE) & USELZSA2)
#INCLUDE "unlzsa2s.asm"
#ENDIF
;
@@ -7221,6 +7233,7 @@ PS_VDCVDU .TEXT "CVDU$"
PS_VDGDC .TEXT "GDC$"
PS_VDTMS .TEXT "TMS$"
PS_VDVGA .TEXT "VGA$"
PS_VDVRC .TEXT "VRC$"
;
; VIDEO TYPE STRINGS
;

View File

@@ -338,7 +338,7 @@ VDADEV_CVDU .EQU $10 ; ECB COLOR VDU - MOS 8563
VDADEV_GDC .EQU $20 ; GRAPHICS DISPLAY CTLR - UPD7220
VDADEV_TMS .EQU $30 ; N8 ONBOARD VDA SUBSYSTEM - TMS 9918
VDADEV_VGA .EQU $40 ; ECB VGA3 - HITACHI HD6445
;VDADEV_V9958 .EQU $50 ; V9958 VDU
VDADEV_VRC .EQU $50 ; VGARC
;
; SOUND DEVICE IDS
;

File diff suppressed because it is too large Load Diff

View File

@@ -14,9 +14,10 @@
;
; DRIVER DATA OFFSETS (FROM IY)
;
KBD_ST .EQU 0 ; BYTE, STATUS PORT NUM (R)
KBD_MODE .EQU 0 ; BYTE, KEYBOARD MODE (STD OR VRC)
KBD_ST .EQU 1 ; BYTE, STATUS PORT NUM (R)
KBD_CMD .EQU KBD_ST ; BYTE, CMD PORT NUM (W)
KBD_DAT .EQU 1 ; BYTE, DATA PORT NUM (R/W)
KBD_DAT .EQU 2 ; BYTE, DATA PORT NUM (R/W)
;
; TIMING CONSTANTS
;
@@ -177,6 +178,9 @@ KBD_PUTCMD:
; PUT A CMD BYTE FROM A TO THE KEYBOARD INTERFACE WITH TIMEOUT
;
LD E,A ; SAVE INCOMING VALUE IN E
LD A,(KBD_MODE) ; GET MODE BYTE
CP KBDMODE_VRC ; VGARC KEYBOARD?
JR Z,KBD_PUTCMD2 ; BAIL OUT
LD B,KBD_WAITTO ; SETUP TO LOOP
KBD_PUTCMD0:
CALL KBD_OST ; GET OUTPUT REGISTER STATUS
@@ -194,6 +198,7 @@ KBD_PUTCMD1:
#ENDIF
LD C,(IY+KBD_CMD) ; COMMAND PORT
OUT (C),A ; WRITE IT
KBD_PUTCMD2:
XOR A ; SIGNAL SUCCESS
RET
;
@@ -203,6 +208,9 @@ KBD_PUTDATA:
; PUT A DATA BYTE FROM A TO THE KEYBOARD INTERFACE WITH TIMEOUT
;
LD E,A ; SAVE INCOMING VALUE IN E
LD A,(KBD_MODE) ; GET MODE BYTE
CP KBDMODE_VRC ; VGARC KEYBOARD?
JR Z,KBD_PUTDATA2 ; BAIL OUT
LD B,KBD_WAITTO ; SETUP TO LOOP
KBD_PUTDATA0:
CALL KBD_OST ; GET OUTPUT REGISTER STATUS
@@ -219,6 +227,7 @@ KBD_PUTDATA1:
#ENDIF
LD C,(IY+KBD_DAT) ; DATA PORT
OUT (C),A ; WRITE IT
KBD_PUTDATA2:
XOR A ; SIGNAL SUCCESS
RET
;

File diff suppressed because it is too large Load Diff

View File

@@ -92,6 +92,15 @@ FDM360 .EQU 2 ; 5.25" FLOPPY, 360KB, 2 SIDES, 40 TRKS, 9 SECTORS
FDM120 .EQU 3 ; 5.25" FLOPPY, 1.2MB, 2 SIDES, 80 TRKS, 15 SECTORS
FDM111 .EQU 4 ; 8" FLOPPY, 1.11MB, 2 SIDES, 74 TRKS, 15 SECTORS
;
; FLOPPY DISK TYPE
;
FDT_NONE .EQU 0 ; NONE
FDT_3DD .EQU 1 ; 3.5" FLOPPY, DOUBLE DENSITY
FDT_3HD .EQU 2 ; 3.5" FLOPPY, HIGH DENSITY
FDT_5DD .EQU 3 ; 5.25" FLOPPY, DOUBLE DENSITY
FDT_5HD .EQU 4 ; 5.25" FLOPPY, HIGH DNSITY
FDT_8 .EQU 5 ; 8" FLOPPY, DOUBLE DENSITY
;
; ZILOG CTC MODE SELECTIONS
;
CTCMODE_NONE .EQU 0 ; NO CTC
@@ -248,6 +257,12 @@ DMAMODE_Z280 .EQU 3 ; Z280 INTEGRATED DMA
DMAMODE_RC .EQU 4 ; RCBUS Z80 DMA
DMAMODE_MBC .EQU 5 ; MBC
;
; KEYBOARD MODE SELECTIONS
;
KBDMODE_NONE .EQU 0
KBDMODE_PS2 .EQU 1 ; PS/2 KEYBOARD CONTROLLER
KBDMODE_VRC .EQU 2 ; VGARC KEYBOARD CONTROLLER
;
; SERIAL DEVICE CONFIGURATION CONSTANTS
;
SER_DATA5 .EQU 0 << 0

View File

@@ -942,10 +942,10 @@ TMS_IDAT:
.DB TMS_PPIX ; PPI CONTROL PORT
#ENDIF
#IF ((TMSMODE == TMSMODE_MSXKBD) | (TMSMODE == TMSMODE_MBC))
.DB KBDMODE_PS2 ; PS/2 8242 KEYBOARD CONTROLLER
.DB TMS_KBDST ; 8242 CMD/STATUS PORT
.DB TMS_KBDDATA ; 8242 DATA PORT
.DB 0 ; FILLER
.DB 0 ; FILER
#ENDIF
;
.DB TMS_DATREG

View File

@@ -1039,5 +1039,6 @@ REGS_VGA:
;==================================================================================================
;
VGA_IDAT:
.DB KBDMODE_PS2 ; PS/2 8242 KEYBOARD CONTROLLER
.DB VGA_KBDST
.DB VGA_KBDDATA

643
Source/HBIOS/vrc.asm Normal file
View File

@@ -0,0 +1,643 @@
;======================================================================
; VIDEO DRIVER FOR VGARC
; https://www.retrobrewcomputers.org/doku.php?id=builderpages:plasmo:vgarc1:vgarc1home
;
; WRITTEN BY: WAYNE WARTHEN -- 5/1/2023
;======================================================================
;
; TODO:
;
;======================================================================
; VGARC DRIVER - CONSTANTS
;======================================================================
;
VRC_BASE .EQU $00 ; FIRST CHAR DATA PORT
VRC_FONTBASE .EQU VRC_BASE + $0C ; FIRST FONT PORT
VRC_SCROLLIO .EQU $F5 ; SCROLL REG PORT
;
VRC_KBDDATA .EQU $F4
VRC_KBDST .EQU $F5
;
VRC_ROWS .EQU 48
VRC_COLS .EQU 64
;
#DEFINE USEFONT8X8
#DEFINE VRC_FONT FONT8X8
;
TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
;
;======================================================================
; VRC DRIVER - INITIALIZATION
;======================================================================
;
VRC_INIT:
LD IY,VRC_IDAT ; POINTER TO INSTANCE DATA
;
CALL NEWLINE ; FORMATTING
PRTS("VRC: IO=0x$")
LD A,VRC_BASE
CALL PRTHEXBYTE
CALL VRC_PROBE ; CHECK FOR HW PRESENCE
JR Z,VRC_INIT1 ; CONTINUE IF HW PRESENT
;
; HARDWARE NOT PRESENT
PRTS(" NOT PRESENT$")
OR $FF ; SIGNAL FAILURE
RET
;
VRC_INIT1:
; DISPLAY CONSOLE DIMENSIONS
LD A,VRC_COLS
CALL PC_SPACE
CALL PRTDECB
LD A,'X'
CALL COUT
LD A,VRC_ROWS
CALL PRTDECB
PRTS(" TEXT$")
; HARDWARE INITIALIZATION
CALL VRC_CRTINIT ; SETUP THE VGARC CHIP REGISTERS
CALL VRC_LOADFONT ; LOAD FONT DATA FROM ROM TO VGARC STORAGE
CALL VRC_VDARES ; RESET
;CALL KBD_INIT ; INITIALIZE KEYBOARD DRIVER
; ADD OURSELVES TO VDA DISPATCH TABLE
LD BC,VRC_FNTBL ; BC := FUNCTION TABLE ADDRESS
LD DE,VRC_IDAT ; DE := VGARC INSTANCE DATA PTR
CALL VDA_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
; INITIALIZE EMULATION
LD C,A ; C := ASSIGNED VIDEO DEVICE NUM
LD DE,VRC_FNTBL ; DE := FUNCTION TABLE ADDRESS
LD HL,VRC_IDAT ; HL := VGARC INSTANCE DATA PTR
CALL TERM_ATTACH ; DO IT
XOR A ; SIGNAL SUCCESS
RET
;
;======================================================================
; VGARC DRIVER - VIDEO DISPLAY ADAPTER (VDA) FUNCTIONS
;======================================================================
;
VRC_FNTBL:
.DW VRC_VDAINI
.DW VRC_VDAQRY
.DW VRC_VDARES
.DW VRC_VDADEV
.DW VRC_VDASCS
.DW VRC_VDASCP
.DW VRC_VDASAT
.DW VRC_VDASCO
.DW VRC_VDAWRC
.DW VRC_VDAFIL
.DW VRC_VDACPY
.DW VRC_VDASCR
.DW KBD_STAT
.DW KBD_FLUSH
.DW KBD_READ
.DW VRC_VDARDC
#IF (($ - VRC_FNTBL) != (VDA_FNCNT * 2))
.ECHO "*** INVALID VRC FUNCTION TABLE ***\n"
!!!!!
#ENDIF
VRC_VDAINI:
; RESET VDA
; CURRENTLY IGNORES VIDEO MODE AND BITMAP DATA
CALL VRC_VDARES ; RESET VDA
XOR A ; SIGNAL SUCCESS
RET
VRC_VDAQRY:
LD C,$00 ; MODE ZERO IS ALL WE KNOW
LD D,VRC_ROWS ; ROWS
LD E,VRC_COLS ; COLS
LD HL,0 ; EXTRACTION OF CURRENT BITMAP DATA NOT SUPPORTED YET
XOR A ; SIGNAL SUCCESS
RET
VRC_VDARES:
XOR A ; CLEAR ATTRIBUTES (REV VIDEO OFF)
LD (VRC_ATTR),A ; SAVE IT
DEC A ; INIT CUR NESTING, INIT TO HIDDEN
LD (VRC_CURSOR),A ; SAVE IT
LD HL,0 ; ZERO THE SCROLL OFFSET
LD (VRC_OFF),HL ; SAVE VALUE
XOR A ; ZERO
LD (VRC_LOFF),A ; SCROLL OFFSET (LINES)
LD A,' ' ; BLANK THE SCREEN
LD DE,VRC_ROWS*VRC_COLS ; FILL ENTIRE BUFFER
CALL VRC_FILL ; DO IT
LD DE,0 ; ROW = 0, COL = 0
CALL VRC_XY ; SEND CURSOR TO TOP LEFT
CALL VRC_SHOWCUR ; NOW SHOW THE CURSOR
;
XOR A ; SIGNAL SUCCESS
RET
VRC_VDADEV:
LD D,VDADEV_VRC ; D := DEVICE TYPE
LD E,0 ; E := PHYSICAL UNIT IS ALWAYS ZERO
LD H,0 ; H := 0, DRIVER HAS NO MODES
LD L,VRC_BASE ; L := BASE I/O ADDRESS
XOR A ; SIGNAL SUCCESS
RET
VRC_VDASCS:
SYSCHKERR(ERR_NOTIMPL) ; NOT IMPLEMENTED (YET)
RET
VRC_VDASCP:
CALL VRC_XY ; SET CURSOR POSITION
XOR A ; SIGNAL SUCCESS
RET
VRC_VDASAT:
; INCOMING IS: -----RUB (R=REVERSE, U=UNDERLINE, B=BLINK)
;
; ALL WE SUPPORT IS REVERSE. MOVE BIT TO BIT 7 OF ATTR BYTE
LD A,E ; GET ATTR VALUE
RRCA ; ROTATE TO BIT 7
RRCA
RRCA
AND $80 ; ENSURE ONLY BIT 7
LD (VRC_ATTR),A ; SAVE IT
XOR A ; SIGNAL SUCCESS
RET ; DONE
VRC_VDASCO:
; INCOMING IS: IBGRIBGR (I=INTENSITY, B=BLUE, G=GREEN, R=RED)
;
; NONE SUPPORTED, IGNORE
XOR A ; SIGNAL SUCCESS
RET ; DONE
VRC_VDAWRC:
LD A,E ; CHARACTER TO WRITE GOES IN A
CALL VRC_PUTCHAR ; PUT IT ON THE SCREEN
XOR A ; SIGNAL SUCCESS
RET
VRC_VDAFIL:
LD A,E ; FILL CHARACTER GOES IN A
EX DE,HL ; FILL LENGTH GOES IN DE
CALL VRC_FILL ; DO THE FILL
XOR A ; SIGNAL SUCCESS
RET
VRC_VDACPY:
; LENGTH IN HL, SOURCE ROW/COL IN DE, DEST IS VRC_POS
; BLKCPY USES: HL=SOURCE, DE=DEST, BC=COUNT
PUSH HL ; SAVE LENGTH
CALL VRC_XY2IDX ; ROW/COL IN DE -> SOURCE ADR IN HL
POP BC ; RECOVER LENGTH IN BC
LD DE,(VRC_POS) ; PUT DEST IN DE
JP VRC_BLKCPY ; DO A BLOCK COPY
VRC_VDASCR:
LD A,E ; LOAD E INTO A
OR A ; SET FLAGS
RET Z ; IF ZERO, WE ARE DONE
PUSH DE ; SAVE E
JP M,VRC_VDASCR1 ; E IS NEGATIVE, REVERSE SCROLL
CALL VRC_SCROLL ; SCROLL FORWARD ONE LINE
POP DE ; RECOVER E
DEC E ; DECREMENT IT
JR VRC_VDASCR ; LOOP
VRC_VDASCR1:
CALL VRC_RSCROLL ; SCROLL REVERSE ONE LINE
POP DE ; RECOVER E
INC E ; INCREMENT IT
JR VRC_VDASCR ; LOOP
;----------------------------------------------------------------------
; READ VALUE AT CURRENT VDU BUFFER POSITION
; RETURN E = CHARACTER, B = COLOUR, C = ATTRIBUTES
;----------------------------------------------------------------------
VRC_VDARDC:
OR $FF ; UNSUPPORTED FUNCTION
RET
;
;======================================================================
; VGARC DRIVER - PRIVATE DRIVER FUNCTIONS
;======================================================================
;
;
;----------------------------------------------------------------------
; PROBE FOR VGARC HARDWARE
;----------------------------------------------------------------------
;
; ON RETURN, ZF SET INDICATES HARDWARE FOUND
;
VRC_PROBE:
LD C,VRC_BASE
LD B,0
LD A,$AA
OUT (C),A
INC B
LD A,$55
OUT (C),A
DEC B
IN A,(C)
CP $AA
RET NZ
INC B
IN A,(C)
CP $55
RET
;
;----------------------------------------------------------------------
; CRTC DISPLAY CONTROLLER CHIP INITIALIZATION
;----------------------------------------------------------------------
;
VRC_CRTINIT:
XOR A ; ZERO ACCUM
LD A,$80 ; ACTIVATE AND ZERO HW SCROLL
OUT (VRC_SCROLLIO),A ; RESET HW SCROLL
RET ; DONE
;
;----------------------------------------------------------------------
; LOAD FONT DATA
;----------------------------------------------------------------------
;
VRC_LOADFONT:
;
#IF USELZSA2
LD (VRC_STACK),SP ; SAVE STACK
LD HL,(VRC_STACK) ; AND SHIFT IT
LD DE,$2000 ; DOWN 4KB TO
OR A ; CREATE A
SBC HL,DE ; DECOMPRESSION BUFFER
LD SP,HL ; HL POINTS TO BUFFER
EX DE,HL ; START OF STACK BUFFER
PUSH DE ; SAVE IT
LD HL,VRC_FONT ; START OF FONT DATA
CALL DLZSA2 ; DECOMPRESS TO DE
POP HL ; RECALL STACK BUFFER POSITION
#ELSE
LD HL,VRC_FONT ; START OF FONT DATA
#ENDIF
;
LD DE,0+(128*8)-1 ; LENGTH OF FONT DATA - 1
ADD HL,DE ; ADD TO HL
; LD HL,ENDFONT-1
LD BC,VRC_FONTBASE+3 ; WORK BACKWARDS
OTDR ; DO 4 PAGES
DEC C
OTDR
DEC C
OTDR
DEC C
OTDR
DEC C
;
#IF USELZSA2
LD HL,(VRC_STACK) ; ERASE DECOMPRESS BUFFER
LD SP,HL ; BY RESTORING THE STACK
RET ; DONE
VRC_STACK .DW 0
#ELSE
RET
#ENDIF
;
;----------------------------------------------------------------------
; SET CURSOR POSITION TO ROW IN D AND COLUMN IN E
;----------------------------------------------------------------------
;
VRC_XY:
PUSH DE ; SAVE NEW POSITION FOR NOW
CALL VRC_HIDECUR ; HIDE THE CURSOR
POP DE ; RECOVER INCOMING ROW/COL
CALL VRC_XY2IDX ; CONVERT ROW/COL TO BUF IDX
LD (VRC_POS),HL ; SAVE THE RESULT (DISPLAY POSITION)
JP VRC_SHOWCUR ; SHOW THE CURSOR AND EXIT
;
;----------------------------------------------------------------------
; CONVERT XY COORDINATES IN DE INTO LINEAR INDEX IN HL
; D=ROW, E=COL
;----------------------------------------------------------------------
;
VRC_XY2IDX:
LD A,E ; SAVE COLUMN NUMBER IN A
LD H,D ; SET H TO ROW NUMBER
LD E,VRC_COLS ; SET E TO ROW LENGTH
CALL MULT8 ; MULTIPLY TO GET ROW OFFSET, H * E = HL, E=0, B=0
LD E,A ; GET COLUMN BACK
ADD HL,DE ; ADD IT IN
LD DE,(VRC_OFF) ; SCREEN OFFSET
ADD HL,DE ; ADJUST
;
PUSH HL ; SAVE IT
LD DE,VRC_ROWS * VRC_COLS ; DE := BUF SIZE
OR A ; CLEAR CARRY
SBC HL,DE ; SUBTRACT FROM HL
JR C,VRC_XY2IDX1 ; BYPASS IF NO WRAP
POP DE ; THROW AWAY TOS
RET ; DONE
VRC_XY2IDX1:
POP HL ; NO WRAP, RESTORE
RET ; RETURN
;
;----------------------------------------------------------------------
; SHOW OR HIDE CURSOR
;----------------------------------------------------------------------
;
; VGARC USES HIGH BIT OF CHAR VALUE FOR INVERSE VIDEO. WE HAVE NO
; HARDWARE CURSOR, SO WE LEVERAGE THE INVERSE VIDEO TO SHOW A CURSOR.
; SINCE ANY OPERATION THAT POTENTIALLY OVERWERITES THE CURSOR POSITION
; COULD DESTROY THE CURSOR, WE HAVE A COUPLE FUNCTIONS TO SHOW AND
; HIDE THE CURSOR. A VARIABLE IS USED TO TRACK THE SHOW/HIDE
; OPERATIONS BECAUSE WE MAY HAVE NESTED CALLS. ZERO MEANS SHOW
; REAL CURSOR. ANY VALUE LESS THAN ZERO MEANS HIDDEN.
;
VRC_SHOWCUR:
LD A,(VRC_CURSOR) ; GET CURRENT NESTING VALUE
INC A ; INCREMENT TO SHOW
LD (VRC_CURSOR),A ; SAVE IT
RET NZ ; ALREADY SHOWN, NOTHING TO DO
;
; WE TRANSITIONED FROM NON-ZERO TO ZERO. NEED TO ACTUALLY
; SHOW THE CURSOR NOW.
;
JR VRC_FLIPCUR
;
VRC_HIDECUR:
LD A,(VRC_CURSOR) ; GET CURRENT NESTING VALUE
DEC A ; DECREMENT TO HIDE
LD (VRC_CURSOR),A ; SAVE IT
INC A ; BACK TO ORIGINAL VALUE
RET NZ ; ALREADY HIDDEN, NOTHING TO DO
;
; WE TRANSITIONED FROM ZERO TO NEGATIVE. NEED TO ACTUALLY
; HIDE THE CURSOR NOW. SINCE SHOWING AND HIDING ARE THE
; SAME OPERATION (FLIP REV VID BIT), WE REUSE CODE ABOVE.
;
JR VRC_FLIPCUR
;
VRC_FLIPCUR:
; SHOWING OR HIDING THE CURSOR IS THE SAME OPERATION.
; SO WE USE COMMON CODE TO FLIP THE REV VID BIT.
LD HL,(VRC_POS) ; CURSOR POSITION
LD B,L ; INVERT FOR I/O
LD C,H
IN A,(C) ; GET VALUE
XOR $80 ; FLIP REV VID BIT
OUT (C),A ; WRITE NEW VALUE
RET
;
;----------------------------------------------------------------------
; WRITE VALUE IN A TO CURRENT VDU BUFFER POSITION, ADVANCE CURSOR
;----------------------------------------------------------------------
;
VRC_PUTCHAR:
; WRITE CHAR AT CURRENT CURSOR POSITION. SINCE THE CURSOR
; IS JUST THE HIGH BIT (REV VIDEO), WE FIRST TURN OFF THE
; CURSOR, WRITE THE CHAR, UPDATE THE CURSOR POSITION, AND
; FINALLY TURN THE CURSOR BACK ON AT THE NEW POSITION.
;
PUSH AF ; SAVE INCOMING CHAR
CALL VRC_HIDECUR ; HIDE CURSOR
POP AF
LD HL,(VRC_POS) ; GET CUR BUF POSITION
LD B,L ; INVERT FOR I/O
LD C,H
AND $7F ; SUPPRESS ATTRIBUTE (HI BIT)
LD L,A ; PUT VALUE IN L
LD A,(VRC_ATTR) ; GET CURRENT ATTRIBUTE
OR L ; COMBINE WITH CHAR VALUE
OUT (C),A ; WRITE VALUE TO BUFFER
;
; SET CURSOR AT NEW POSITION
LD HL,(VRC_POS) ; GET CURRENT BUF OFFSET
INC HL ; INCREMENT
PUSH HL ; SAVE IT
LD DE,VRC_ROWS * VRC_COLS ; DE := BUF SIZE
OR A ; CLEAR CARRY
SBC HL,DE ; SUBTRACT FROM HL
JR C,VRC_PUTCHAR1 ; BYPASS IF NO WRAP
POP DE ; THROW AWAY TOS
LD HL,0 ; BACK TO START
JR VRC_PUTCHAR2 ; CONTINUE
VRC_PUTCHAR1:
POP HL ; NO WRAP, RESTORE
VRC_PUTCHAR2:
LD (VRC_POS),HL ; SAVE NEW POSITION
JP VRC_SHOWCUR ; SHOW IT AND RETURN
;
;----------------------------------------------------------------------
; FILL AREA IN BUFFER WITH SPECIFIED CHARACTER AND CURRENT COLOR/ATTRIBUTE
; STARTING AT THE CURRENT FRAME BUFFER POSITION
; A: FILL CHARACTER
; DE: NUMBER OF CHARACTERS TO FILL
;----------------------------------------------------------------------
;
VRC_FILL:
LD (VRC_FILL1+1),A ; SAVE FILL CHAR
PUSH DE ; SAVE INCOMING DE
CALL VRC_HIDECUR ; HIDE CURSOR
POP DE ; RESTORE INCOMING DE
LD HL,(VRC_POS) ; STARTING POSITION
;
VRC_FILL1:
LD A,$FF ; FILL CHAR
LD B,L ; INVERT FOR I/O
LD C,H
OUT (C),A ; PUT CHAR TO BUF
;
DEC DE ; DECREMENT COUNT
LD A,D ; TEST FOR ZERO
OR E
JP Z,VRC_SHOWCUR ; EXIT VIA SHOW CURSOR IF DONE
;
INC HL ; INCREMENT
PUSH HL ; SAVE IT
LD BC,VRC_ROWS * VRC_COLS ; BC := BUF SIZE
OR A ; CLEAR CARRY
SBC HL,BC ; SUBTRACT FROM HL
JR C,VRC_FILL2 ; BYPASS IF NO WRAP
POP BC ; THROW AWAY TOS
LD HL,0 ; BACK TO START
JR VRC_FILL3 ; CONTINUE
VRC_FILL2:
POP HL ; NO WRAP, RESTORE
VRC_FILL3:
LD (VRC_POS),HL ; SAVE NEW POSITION
JR VRC_FILL1 ; LOOP TILL DONE
;
;----------------------------------------------------------------------
; SCROLL ENTIRE SCREEN FORWARD BY ONE LINE (CURSOR POSITION UNCHANGED)
;----------------------------------------------------------------------
;
VRC_SCROLL:
; SCROLL DOWN 1 LINE VIA HARDWARE
CALL VRC_HIDECUR ; SUPPRESS CURSOR
LD A,(VRC_LOFF) ; GET LINE OFFSET
INC A ; BUMP
CP VRC_ROWS ; OVERFLOW?
JR C,VRC_SCROLL1 ; IF NOT, SKIP
XOR A ; ELSE, BACK TO ZERO
VRC_SCROLL1:
LD (VRC_LOFF),A ; SAVE NEW VALUE
OR $80 ; SET HW SCROLL ENABLE BIT
OUT (VRC_SCROLLIO),A ; DO IT
;
; ADJUST BUFFER OFFSET
LD HL,(VRC_OFF) ; BUFFER OFFSET
LD DE,VRC_COLS ; COLUMNS
ADD HL,DE ; ADD TO GET NEW OFFSET
PUSH HL ; SAVE IT
LD DE,VRC_ROWS * VRC_COLS ; DE := BUF SIZE
OR A ; CLEAR CARRY
SBC HL,DE ; SUBTRACT FROM HL
JR C,VRC_SCROLL2 ; BYPASS IF NO WRAP
POP DE ; BURN TOS
JR VRC_SCROLL3 ; CONTINUE
VRC_SCROLL2:
POP HL ; NO WRAP, RESTORE HL
VRC_SCROLL3:
LD (VRC_OFF),HL ; SAVE NEW OFFSET
;
; FILL EXPOSED LINE
LD HL,(VRC_POS) ; GET CURSOR POS
PUSH HL ; SAVE IT
LD D,VRC_ROWS - 1 ; LAST ROW
LD E,0 ; FIRST COLUMN
CALL VRC_XY2IDX ; HL = START OF LAST LINE
LD (VRC_POS),HL ; SET FILL POSITION
LD A,' ' ; FILL WITH BLANKS
LD DE,VRC_COLS ; FILL ONE LINE
CALL VRC_FILL ; FILL LAST LINE
POP HL ; RECOVER CURSOR POS
LD (VRC_POS),HL ; PUT VALUE BACK
;
; ADJUST CURSOR POSITION
LD HL,(VRC_POS) ; CURSOR POSITION
LD DE,VRC_COLS ; COLUMNS
ADD HL,DE ; NEW CURSOR POS
PUSH HL ; SAVE IT
LD DE,VRC_ROWS * VRC_COLS ; DE := DISPLAY SIZE
OR A ; CLEAR CARRY
SBC HL,DE ; SUBTRACT FROM HL
JR C,VRC_SCROLL4 ; BYPASS IF NO WRAP
POP DE ; BURN TOS
JR VRC_SCROLL5 ; CONTINUE
VRC_SCROLL4:
POP HL ; NO WRAP, RESTORE HL
VRC_SCROLL5:
LD (VRC_POS),HL ; SAVE NEW CURSOR POS
JP VRC_SHOWCUR ; EXIT VIA SHOW CURSOR
;
;----------------------------------------------------------------------
; REVERSE SCROLL ENTIRE SCREEN BY ONE LINE (CURSOR POSITION UNCHANGED)
;----------------------------------------------------------------------
;
VRC_RSCROLL:
; SCROLL UP 1 LINE VIA HARDWARE
CALL VRC_HIDECUR ; SUPPRESS CURSOR
LD A,(VRC_LOFF) ; GET LINE OFFSET
DEC A ; BUMP
CP $FF ; OVERFLOW?
JR NZ,VRC_RSCROLL1 ; IF NOT, SKIP
LD A,VRC_ROWS - 1 ; ELSE, BACK TO LAST ROW
VRC_RSCROLL1:
LD (VRC_LOFF),A ; SAVE NEW VALUE
OR $80 ; SET HW SCROLL ENABLE BIT
OUT (VRC_SCROLLIO),A ; DO IT
;
; ADJUST BUFFER OFFSET
LD HL,(VRC_OFF) ; BUFFER OFFSET
LD DE,VRC_COLS ; COLUMNS
OR A ; CLEAR CARRY
SBC HL,DE ; SUBTRACT TO GET NEW OFFSET
PUSH HL ; SAVE IT
JR NC,VRC_RSCROLL2 ; BYPASS IF NO WRAP
LD DE,VRC_ROWS * VRC_COLS ; DISPLAY SIZE
ADD HL,DE ; HANDLE WRAP
POP DE ; BURN TOS
JR VRC_RSCROLL3 ; CONTINUE
VRC_RSCROLL2:
POP HL ; NO WRAP, RESTORE HL
VRC_RSCROLL3:
LD (VRC_OFF),HL ; SAVE NEW OFFSET
;
; FILL EXPOSED LINE
LD HL,(VRC_POS) ; GET CURSOR POS
PUSH HL ; SAVE IT
LD D,0 ; FIRST ROW
LD E,0 ; FIRST COLUMN
CALL VRC_XY2IDX ; HL = START OF FIRST LINE
LD (VRC_POS),HL ; SET FILL POSITION
LD A,' ' ; FILL WITH BLANKS
LD DE,VRC_COLS ; FILL ONE LINE
CALL VRC_FILL ; FILL FIRST LINE
POP HL ; RECOVER CURSOR POS
LD (VRC_POS),HL ; PUT VALUE BACK
;
; ADJUST CURSOR POSITION
LD HL,(VRC_POS) ; CURSOR POSITION
LD DE,VRC_COLS ; COLUMNS
OR A ; CLEAR CARRY
SBC HL,DE ; NEW CURSOR POS
PUSH HL ; SAVE IT
JR NC,VRC_RSCROLL4 ; BYPASS IF NO WRAP
LD DE,VRC_ROWS * VRC_COLS ; DISPLAY SIZE
ADD HL,DE ; HANDLE WRAP
POP DE ; BURN TOS
JR VRC_RSCROLL5 ; CONTINUE
VRC_RSCROLL4:
POP HL ; NO WRAP, RESTORE HL
VRC_RSCROLL5:
LD (VRC_POS),HL ; SAVE NEW CURSOR POS
JP VRC_SHOWCUR ; EXIT VIA SHOW CURSOR
;
;----------------------------------------------------------------------
; BLOCK COPY BC BYTES FROM HL TO DE
;----------------------------------------------------------------------
;
VRC_BLKCPY:
PUSH BC
PUSH HL
CALL VRC_HIDECUR
POP HL
POP BC
;
VRC_BLKCPY1:
LD A,B
OR C
JP Z,VRC_SHOWCUR ; EXIT VIA SHOW CURSOR
;
PUSH BC ; SAVE LOOP CTL
LD B,L ; INVERT FOR I/O
LD C,H
IN A,(C) ; GET SOURCE CHAR
LD B,E ; INVERT FOR I/O
LD C,D
OUT (C),A ; WRITE DEST CHAR
POP BC ; RESTORE LOOP CTL
;
INC HL ; NEXT SRC CHAR
INC DE ; NEXT DEST CHAR
DEC BC ; DEC COUNT
JR VRC_BLKCPY1 ; LOOP TILL DONE
;
;==================================================================================================
; VGARC DRIVER - DATA
;==================================================================================================
;
VRC_ATTR .DB 0 ; CURRENT COLOR
VRC_POS .DW 0 ; CURRENT DISPLAY POSITION
VRC_OFF .DW 0 ; SCREEN START OFFSET INTO DISP BUF
VRC_LOFF .DB 0 ; LINE OFFSET INTO DISP BUF
VRC_CURSOR .DB 0 ; CURSOR NESTING LEVEL
;
;==================================================================================================
; VGA DRIVER - INSTANCE DATA
;==================================================================================================
;
VRC_IDAT:
.DB KBDMODE_VRC ; VGARC KEYBOARD CONTROLLER
.DB VRC_KBDST
.DB VRC_KBDDATA

View File

@@ -2,7 +2,7 @@
#DEFINE RMN 3
#DEFINE RUP 0
#DEFINE RTP 0
#DEFINE BIOSVER "3.3.0-dev.3"
#DEFINE BIOSVER "3.3.0-dev.8"
#define rmj RMJ
#define rmn RMN
#define rup RUP

View File

@@ -3,5 +3,5 @@ rmn equ 3
rup equ 0
rtp equ 0
biosver macro
db "3.3.0-dev.3"
db "3.3.0-dev.8"
endm