Compare commits

...

29 Commits

Author SHA1 Message Date
Wayne Warthen
6e8bdb141d Finalize S100 FPGA Z80 Onboard VGA/PS2 Support
- RomWBW will now "follow" the S100 monitors console selection for all 3 possibilities (USB Serial, Propeller Console, and Onboard VGA/PS2).
2024-09-04 17:15:23 -07:00
Wayne Warthen
d152cab8c8 Update Doc 2024-09-04 12:22:58 -07:00
Wayne Warthen
3dd394e3c9 Update GMZ180_std.asm
- Minor filename case issue caused some build scenarios to fail.
2024-09-04 11:40:36 -07:00
Wayne Warthen
2fd65ab4b0 Miscellaneous
- Cosmetic updates
- Fix fv.asm keyboard status function
- Bump version number
2024-09-04 11:25:41 -07:00
Wayne Warthen
14dd7bf290 Merge pull request #416 from drj113/master
Genesis Modules initial commit
2024-09-04 10:46:25 -07:00
drj113
673f4358b2 Rectified GM configuration to support current hbios.asm
Re-added commented out code in the various disk drivers now that I am using the correct hbios.asm file
2024-09-04 11:16:45 +10:00
drj113
34e472a553 Initial Commit for Genesis Modules boards
Supports GM STD Z180 and GM IDE Disk Controller
2024-09-04 10:13:05 +10:00
Wayne Warthen
e07c38dc1a Doc Fixes per HubertH
See Issue #415.  This commit is intended to clarify the documentation with respect to this issue.  Thanks and credit to HubertH.
2024-09-03 15:04:50 -07:00
Wayne Warthen
9e6780a248 Add FPGA Z80 Onboard VGA/PS2 Support 2024-09-03 12:05:34 -07:00
Wayne Warthen
d80c44045f Merge pull request #414 from kiwisincebirth/map/fix-lcd-cpu 2024-08-30 08:11:04 -07:00
Mark Pruden
b7352da5c1 Fix for LCD Display of CPU Type 2024-08-30 13:33:44 +10:00
Wayne Warthen
2b6fbe7c58 HD44780 LCD Support 2024-08-27 15:34:44 -07:00
Wayne Warthen
e3173ff802 Regen PDF Docs 2024-08-26 13:11:13 -07:00
Wayne Warthen
8aebf93fdf Merge pull request #411 from kiwisincebirth/map/clock-userguide
Realtime Clock User Guide
2024-08-26 13:01:02 -07:00
Mark Pruden
51676238c7 Merge remote-tracking branch 'origin/master' into map/clock-userguide
# Conflicts:
#	Doc/ChangeLog.txt
2024-08-26 18:58:45 +10:00
Mark Pruden
983c0ff52b Improved section Real Time Clock in User Guide document 2024-08-26 18:37:09 +10:00
Mark Pruden
764abddb49 Improved section Reat Time Clock in User Guide document 2024-08-26 18:22:30 +10:00
Wayne Warthen
df0562bba8 Bump Build Version Number 2024-08-23 09:49:48 -07:00
Wayne Warthen
eaf0431b20 Merge pull request #409 from lesbird/master
Adding in Heathkit H8 support
2024-08-23 09:33:25 -07:00
Les Bird
6394605a20 Some minor formatting changes for Heathkit related HBIOS code. Add a script to build a CF image with MSX ROMs which includes CPM22,ZSDOS and CPM3 2024-08-22 09:48:44 -06:00
Les Bird
17f1d1cb99 Merge branch 'master' of https://github.com/lesbird/RomWBW 2024-08-21 15:08:46 -06:00
Les Bird
03e34a54d4 Add Heathkit H8 support. Front panel generates interrupts at 500Hz to update the LEDs and read the front panel keypad. 2024-08-21 15:04:17 -06:00
Wayne Warthen
797ee4d1a4 Update Makefile
- Missed a file.
2024-08-21 13:17:37 -07:00
Wayne Warthen
f775a07365 Add MSXROMs
- Les Bird has given permission to include his extensive library of MSX ROM images.  Please see https://github.com/lesbird/MSX8 for more information.
- Appropriate MSX8 ROM player and hardware required to use these.
- Provided as supplemental RomWBW disk image slices (msxroms1.img, msxroms2.img).

Co-Authored-By: Les Bird <lesbird65@gmail.com>
2024-08-21 12:18:58 -07:00
Wayne Warthen
e6117e9639 Refactor Build Post-processing
- Post-processing of disk-hosted ROMs such as FZ80 and ZRC has been modified to handle custom user configurations.
- Standardized all distribution ROM names to end in _std.
2024-08-19 14:53:11 -07:00
Wayne Warthen
9df87738ad Fix FZ80 Makefile (Issue #407)
- FZ80 Makefile failed to handle individual ROM build scenario.  Credit and thanks to Mark Pruden for this.
- Updated SIMH emulator to v4.1
2024-08-18 19:31:06 -07:00
Wayne Warthen
ebfb5b3fed Bump Version Number 2024-08-18 12:43:22 -07:00
Wayne Warthen
f125efcca3 Customize NZ-COM Disk Image
- Substantial customization of NZ-COM Disk Image
2024-08-18 11:33:10 -07:00
Wayne Warthen
317ba99b37 Update ReadMe.txt
Windows marks files downloaded from the Internet and may prompt you during the RomWBW build process with repeated security warnings.  Added instructions for "unblocking" distribution files when using the Windows build.  Credit and Thanks to Derek for this tip.

Co-Authored-By: Extreme Electronics <102665314+extremeelectronics@users.noreply.github.com>
2024-08-17 13:57:36 -07:00
665 changed files with 4416 additions and 755 deletions

View File

@@ -14,7 +14,7 @@ Version 3.5
- DDW: Added support for Duodyne Media board
- WBW: Auto restore TMS video on user reset (CP/M warm boot)
- L?B: Added support for NABU w/ RomWBW Option Board
- M?P: Reorganization of Doc directory introducing subfolders
- MAP: Reorganization of Doc directory introducing subfolders
- WBW: Upgraded BBCBASIC to v5.00
- W?S: Updated FLASH utility to v1.3.9
- WBW: Support RCBus PS/2 Keyboard (EP/Sally)
@@ -29,6 +29,11 @@ Version 3.5
- WBW: Added support for Les Bird's Dual 16C550 UART module
- WBW: Refactor UART driver for more flexible configuration
- M?R: Added hour/minute/second display to timer app
- WBW: Substantial customization of NZ-COM disk image
- WBW: Refactor build post-processing (ZRC, ZZRCC, etc.)
- MAP: Improved section Real Time Clock in User Guide document
- WBW: Support for Hitachi HD44780-based LCD display
- DRJ: Added support for Genesis STD Bus Z180 platform
Version 3.4
-----------
@@ -697,4 +702,4 @@ interrupts disabled the BIOS will now start OK even if some vagrant
hardware is asserting an interrupt (DISKIO). Seems like this is better
anyway -- general idea is that we only enable interupts precisely
when desired for very specific controled purposes since there is no
concept of interrupt dispatching available.
concept of interrupt dispatching available.

View File

@@ -20,7 +20,7 @@ Beyond the construction and integration of the actual DOS itself, the majority o
The remainder of this document details the changes I made as I went along. In all cases, my goal was to keep the result as close to the original distribution as possible. I started by copying all of the files from the distribution (contained in zsdos2.zip) into Support\ZSDOS. From there I tested, modified, updated, and customized as documented below. Finally, I cherry picked files that made sense to include on the ZSystem ROM disks.
1. CLOCKS.DAT has been updated to include the RomWBW clock driver, HBCLK. I have also added the SIMHCLOK clock driver.
1. CLOCKS.DAT has been updated to include the RomWBW clock driver, WBWCLK. I have also added the SIMHCLOK clock driver.
2. STAMPS.DAT has been replaced with an updated version. The update was called STAMPS11.DAT and was found on the Walnut Creek CP/M CDROM. The original version has a bug that prevents RSX (resident system extension) mode to load properly.

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.5 \
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
01 Aug 2024
04 Sep 2024
# Overview

View File

@@ -1,6 +1,6 @@
RomWBW ReadMe
Wayne Warthen (wwarthen@gmail.com)
01 Aug 2024
04 Sep 2024

View File

@@ -33,6 +33,8 @@
;
;[2023/07/07] v1.9 Support DUODYNE
;
;[2024/09/02] v1.10 Support Genesis STD Z180
;
; Constants
;
mask_data .EQU %10000000 ; RTC data line
@@ -52,6 +54,7 @@ PORT_RCZ280 .EQU $C0 ; RTC port for RCZ280
PORT_MBC .EQU $70 ; RTC port for MBC
PORT_RPH .EQU $84 ; RTC port for RHYOPHYRE
PORT_DUO .EQU $94 ; RTC port for DUODYNE
PORT_STDZ180 .EQU $84 ; RTC Port for STD Bus Z180 board
BDOS .EQU 5 ; BDOS invocation vector
@@ -1143,7 +1146,13 @@ HINIT:
CP 17 ; DUODYNE
JP Z,RTC_INIT2
;
; Unknown platform
LD C,PORT_STDZ180
LD DE,PLT_STDZ180
CP 21 ; STD Z180
JP Z,RTC_INIT2
;
; Unknown platform
LD DE,PLTERR ; BIOS error message
LD C,9 ; BDOS string display function
CALL BDOS ; Do it
@@ -1769,6 +1778,7 @@ PLT_RCZ280 .TEXT ", RCBus Z280 RTC Module Latch Port 0xC0\r\n$"
PLT_MBC .TEXT ", MBC RTC Latch Port 0x70\r\n$"
PLT_RPH .TEXT ", RHYOPHYRE RTC Latch Port 0x84\r\n$"
PLT_DUO .TEXT ", DUODYNE RTC Latch Port 0x70\r\n$"
PLT_STDZ180 .TEXT ", STD Z180 RTC Module latch port 0x84\r\n$"
;
; Generic FOR-NEXT loop algorithm

View File

@@ -217,9 +217,9 @@ on using the applications and files listed.
| `INITDIR.COM` | ZSDOS | ZSDOS Prepare disks for P2DOS Stamps |
| `KERMIT.COM` | -- | Generic CP/M 2.2 Kermit communication application |
| `LBREXT.COM` | -- | Extract library files |
| `LDDS.COM` | ZSDOS | Clock driver |
| `LDNZT.COM` | ZSDOS | Clock driver |
| `LDP2D.COM` | ZSDOS | Clock driver |
| `LDDS.COM` | ZSDOS | Load DateStamper date/time stamping resident extension |
| `LDNZT.COM` | ZSDOS | Load NZT date/time stamping resident extension |
| `LDP2D.COM` | ZSDOS | Load P2DOS date/time stamping resident extension |
| `LIB.COM` | -- | DRI Library manager |
| `LINK.COM` | -- | DRI CPM relocatable linker |
| `LOAD.COM` | -- | DRI hex file loader into memory |
@@ -229,7 +229,7 @@ on using the applications and files listed.
| `PMARC.COM` | -- | LHA file compressor |
| `PMEXT.COM` | -- | Extractor for PMARC archives |
| `PUTBG.COM` | ZSDOS | ZSDOS Prepare disk for backgrounder |
| `PUTDS.COM` | ZSDOS | ZSDOS Prepare disk for datestamper |
| `PUTDS.COM` | ZSDOS | ZSDOS Prepare disk for datestamper date/time stamping|
| `RELOG.COM` | ZSDOS | ZSDOS relog disks after program that bypasses BDOS |
| `RMAC.COM` | -- | DRI Relocatable Macro Assembler |
| `SETTERM.COM` | ZSDOS | ZSDOS Installs terminal control codes into DateSamper utilities |

View File

@@ -847,12 +847,19 @@ more of the defined media types.
| MID_FD111 | 9 | 8" 1.11M Floppy |
| MID_HD1K | 10 | Hard Disk (LBA) w/ 1024 directory entries |
**NOTE**: HBIOS does not actually differentiate between MID_HD512 and
MID_HD1K. The use of these two formats is determined by the use of a
partition table on the media and is implemented by the operating
system itself. HBIOS treats all hard disks as raw sectors. See
[Function 0x18 -- Disk Media (DIOMEDIA)] for more information on the
Media ID byte returned.
HBIOS supports both Cylinder/Head/Sector (CHS) and Logical Block
Addresses (CHS) when locating a sector for I/O (see DIOSEEK function).
For devices that are natively CHS (e.g., floppy disk), the HBIOS driver
can convert LBA values to CHS values according to the geometry of the
current media. For devices that are natively LBA (e.g., hard disk), the
HBIOS driver simulates CHS using a fictitious geometry provided by the
HBIOS driver simulates CHS using a fictitious geometry provided by the
driver (typically 16 sectors per track and 16 heads per cylinder).
### Function 0x10 -- Disk Status (DIOSTATUS)
@@ -1065,6 +1072,12 @@ Report the Media ID (E) for the for media in the specified Disk Unit
will be performed. The Status (A) is a standard HBIOS result code. If
there is no media in device, function will return an error status.
**NOTE**: This function will always return MID_HD512 for hard disk
devices. MID_HD1K is provided for use internally by operating systems
that provide different filsystem formats depending on the partition
table. This function cannot be used to determine if an HD1K formatted
partition exists on the hard disk.
### Function 0x19 -- Disk Define Media (DIODEFMED)
| **Entry Parameters** | **Returned Values** |
@@ -1098,7 +1111,7 @@ DIOMEDIA function to force this if desired.
| **Entry Parameters** | **Returned Values** |
|----------------------------------------|----------------------------------------|
| B: 0x1B | A: Status |
| C: Disk Unit | D: Heads |
| C: Disk Unit | D: Heads / LBA |
| | E: Sectors |
| | HL: Cylinder Count |
| | BC: Block Size |
@@ -1108,7 +1121,11 @@ device uses LBA mode addressing natively, then the drivers simulated
geometry will be returned. The Status (A) is a standard HBIOS result
code. If the media is unknown, an error will be returned.
Heads (D) refers to the number of heads per cylinder. Sectors (E)
LBA capability is indicated by D:7. When set, the device is capable
of LBA addressing. Refer to [Function 0x12 -- Disk Seek (DIOSEEK)]
for more information on specifying LBA vs. CHS addresses.
Heads (D:6-0) refers to the number of heads per cylinder. Sectors (E)
refers to the number of sectors per track. Cylinder Count (HL) is the
total number of cylinders addressable for the media. Block Size (BC)
is the number of bytes in one sector.

View File

@@ -222,46 +222,47 @@ by RomWBW along with the standard pre-built ROM image(s). RomWBW does
allow for the creation of ROM images with custom configurations. This
is discussed in [Customizing RomWBW].
| **Description** | **Bus** | **ROM Image File** | **Baud Rate** |
|----------------------------------------------------------------|---------|-----------------------|--------------:|
| [RetroBrew Z80 SBC]^1^ | ECB | SBC_std.rom | 38400 |
| [RetroBrew Z80 SimH]^1^ | - | SBC_simh.rom | 38400 |
| [RetroBrew N8 Z180 SBC]^1^ (date code >= 2312) | ECB | N8_std.rom | 38400 |
| [Zeta Z80 SBC]^2^, ParPortProp | - | ZETA_std.rom | 38400 |
| [Zeta V2 Z80 SBC]^2^, ParPortProp | - | ZETA2_std.rom | 38400 |
| [Mark IV Z180 SBC]^3^ | ECB | MK4_std.rom | 38400 |
| [RCBus Z80 CPU Module]^4^, 512K RAM/ROM | RCBus | RCZ80_std.rom | 115200 |
| [RCBus Z80 CPU Module]^4^, 512K RAM/ROM, KIO | RCBus | RCZ80_kio.rom | 115200 |
| [RCBus Z180 CPU Module]^4^ w/ external banking | RCBus | RCZ180_ext.rom | 115200 |
| [RCBus Z180 CPU Module]^4^ w/ native banking | RCBus | RCZ180_nat.rom | 115200 |
| [RCBus Z280 CPU Module]^4^ w/ external banking | RCBus | RCZ180_ext.rom | 115200 |
| [RCBus Z280 CPU Module]^4^ w/ native banking | RCBus | RCZ180_nat.rom | 115200 |
| [Easy Z80 SBC]^2^ | RCBus | RCZ80_easy.rom | 115200 |
| [Tiny Z80 SBC]^2^ | RCBus | RCZ80_tiny.rom | 115200 |
| [Z80-512K CPU/RAM/ROM Module]^2^ | RCBus | RCZ80_skz.rom | 115200 |
| [Small Computer SC126 Z180 SBC]^5^ | BP80 | SCZ180_sc126.rom | 115200 |
| [Small Computer SC130 Z180 SBC]^5^ | RCBus | SCZ180_sc130.rom | 115200 |
| [Small Computer SC131 Z180 Pocket Computer]^5^ | - | SCZ180_sc131.rom | 115200 |
| [Small Computer SC140 Z180 CPU Module]^5^ | Z50 | SCZ180_sc140.rom | 115200 |
| [Small Computer SC503 Z180 CPU Module]^5^ | Z50 | SCZ180_sc503.rom | 115200 |
| [Small Computer SC700 Z180 CPU Module]^5^ | RCBus | SCZ180_sc700.rom | 115200 |
| [Dyno Z180 SBC]^6^ | Dyno | DYNO_std.rom | 38400 |
| [Nhyodyne Z80 MBC]^1^ | MBC | MBC_std.rom | 38400 |
| [Rhyophyre Z180 SBC]^1^ | - | RPH_std.rom | 38400 |
| [Z80 ZRC CPU Module]^7^ | RCBus | RCZ80_zrc.rom | 115200 |
| [Z80 ZRC CPU Module]^7^ ROMless | RCBus | RCZ80_zrc_ram.rom | 115200 |
| [Z80 ZRC512 CPU Module]^7^ | RCBus | RCZ80_zrc512.rom | 115200 |
| [Z180 Z1RCC CPU Module]^7^ | RCBus | RCZ180_z1rcc.rom | 115200 |
| [Z280 ZZRCC CPU Module]^7^ | RCBus | RCZ280_zzrcc.rom | 115200 |
| [Z280 ZZRCC CPU Module]^7^ ROMless | RCBus | RCZ280_zzrcc_ram.rom | 115200 |
| [Z280 ZZ80MB SBC]^7^ | RCBus | RCZ280_zz80mb.rom | 115200 |
| [Z80-Retro SBC]^8^ | - | Z80RETRO_std.rom | 38400 |
| [S100 Computers Z180]^9^ | S100 | S100_std.rom | 57600 |
| [Duodyne Z80 System]^1^ | Duo | DUO_std.rom | 38400 |
| [Heath H8 Z80 System]^10^ | H8 | HEATH_std.rom | 115200 |
| [EP Mini-ITX Z180]^11^ | RCBus? | EPITX_std.rom | 115200 |
| [NABU w/ RomWBW Option Board]^10^ | NABU | NABU_std.rom | 115200 |
| [S100 FPGA Z80]^9^ | S100 | FZ80_std.rom | 9600 |
| **Description** | **Bus** | **ROM Image File** | **Baud Rate** |
|-------------------------------------------------------------|---------|------------------------------|--------------:|
| [RetroBrew Z80 SBC]^1^ | ECB | SBC_std.rom | 38400 |
| [RetroBrew Z80 SimH]^1^ | - | SBC_simh.rom | 38400 |
| [RetroBrew N8 Z180 SBC]^1^ (date >= 2312) | ECB | N8_std.rom | 38400 |
| [Zeta Z80 SBC]^2^, ParPortProp | - | ZETA_std.rom | 38400 |
| [Zeta V2 Z80 SBC]^2^, ParPortProp | - | ZETA2_std.rom | 38400 |
| [Mark IV Z180 SBC]^3^ | ECB | MK4_std.rom | 38400 |
| [RCBus Z80 CPU Module]^4^, 512K RAM/ROM | RCBus | RCZ80_std.rom | 115200 |
| [RCBus Z80 CPU Module]^4^, 512K w/KIO | RCBus | RCZ80_kio_std.rom | 115200 |
| [RCBus Z180 CPU Module]^4^ w/ ext banking | RCBus | RCZ180_ext_std.rom | 115200 |
| [RCBus Z180 CPU Module]^4^ w/ native banking | RCBus | RCZ180_nat_std.rom | 115200 |
| [RCBus Z280 CPU Module]^4^ w/ ext banking | RCBus | RCZ180_ext_std.rom | 115200 |
| [RCBus Z280 CPU Module]^4^ w/ native banking | RCBus | RCZ180_nat_std.rom | 115200 |
| [Easy Z80 SBC]^2^ | RCBus | RCZ80_easy_std.rom | 115200 |
| [Tiny Z80 SBC]^2^ | RCBus | RCZ80_tiny_std.rom | 115200 |
| [Z80-512K CPU/RAM/ROM Module]^2^ | RCBus | RCZ80_skz_std.rom | 115200 |
| [Small Computer SC126 Z180 SBC]^5^ | BP80 | SCZ180_sc126_std.rom | 115200 |
| [Small Computer SC130 Z180 SBC]^5^ | RCBus | SCZ180_sc130_std.rom | 115200 |
| [Small Computer SC131 Z180 Pocket Comp]^5^ | - | SCZ180_sc131_std.rom | 115200 |
| [Small Computer SC140 Z180 CPU Module]^5^ | Z50 | SCZ180_sc140_std.rom | 115200 |
| [Small Computer SC503 Z180 CPU Module]^5^ | Z50 | SCZ180_sc503_std.rom | 115200 |
| [Small Computer SC700 Z180 CPU Module]^5^ | RCBus | SCZ180_sc700_std.rom | 115200 |
| [Dyno Z180 SBC]^6^ | Dyno | DYNO_std.rom | 38400 |
| [Nhyodyne Z80 MBC]^1^ | MBC | MBC_std.rom | 38400 |
| [Rhyophyre Z180 SBC]^1^ | - | RPH_std.rom | 38400 |
| [Z80 ZRC CPU Module]^7^ | RCBus | RCZ80_zrc_std.rom | 115200 |
| [Z80 ZRC CPU Module]^7^ ROMless | RCBus | RCZ80_zrc_ram_std.rom | 115200 |
| [Z80 ZRC512 CPU Module]^7^ | RCBus | RCZ80_zrc512_std.rom | 115200 |
| [Z180 Z1RCC CPU Module]^7^ | RCBus | RCZ180_z1rcc_std.rom | 115200 |
| [Z280 ZZRCC CPU Module]^7^ | RCBus | RCZ280_zzrcc_std.rom | 115200 |
| [Z280 ZZRCC CPU Module]^7^ ROMless | RCBus | RCZ280_zzrcc_ram_std.rom | 115200 |
| [Z280 ZZ80MB SBC]^7^ | RCBus | RCZ280_zz80mb_std.rom | 115200 |
| [Z80-Retro SBC]^8^ | - | Z80RETRO_std.rom | 38400 |
| [S100 Computers Z180]^9^ | S100 | S100_std.rom | 57600 |
| [Duodyne Z80 System]^1^ | Duo | DUO_std.rom | 38400 |
| [Heath H8 Z80 System]^10^ | H8 | HEATH_std.rom | 115200 |
| [EP Mini-ITX Z180]^11^ | RCBus? | EPITX_std.rom | 115200 |
| [NABU w/ RomWBW Option Board]^10^ | NABU | NABU_std.rom | 115200 |
| [S100 FPGA Z80]^9^ | S100 | FZ80_std.rom | 9600 |
| [Genesis STD Z180]^12^ | STD | GMZ180_std.rom | 115200 |
| ^1^Designed by Andrew Lynch
| ^2^Designed by Sergey Kiselev
@@ -274,6 +275,7 @@ is discussed in [Customizing RomWBW].
| ^9^Designed by John Monahan
| ^10^Designed by Les Bird
| ^11^Designed by Alan Cox
| ^12^Designed by Doug Jackson
RCBus refers to Spencer Owen's RC2014 bus specification and derivatives
including RC26, RC40, RC80, and BP80.
@@ -1985,13 +1987,38 @@ new combo disk image.
#### Custom Hard Disk Image
If you want to use specific slices in a specific order, you can easily
generate a custom hard disk image file.
For hard disks, each .img file represents a single slice (CP/M
filesystem). Since a hard disk can contain many slices, you can just
concatenate the slices (.img files) together to create your desired hard
disk image. For example, if you want to create a hard disk image that
disk image.
If you look in the Binary directory of the distribution, you will see
that there are more disk (slice) images than the 6 that are included
in the "combo" disk images. These images are identified by looking
for the files that start with hd1k_ or hd512_.
You can add slices to the combo disk images simply by tacking
slices onto the end. For example, if you want to add a slice
containing the MSX ROMs to the end of the combo image, you could
use one of the following command lines depending on your operating
system:
Windows:
`COPY /B hd1k_combo.img + hd1k_msxroms.img my_hd.img`
Linus/MaxOS:
`cat hd1k_combo.img hd1k_msxroms.img >my_hd.img`
Note that you **must** be sure to use either the hd1k_ or hd512_
prefixed files together. You cannot mix them.
If you want to create a completely custom hard disk image that is not
based on the existing combo image, you can generate a disk image entirely
from scratch using whatever slices you want in whatever order you like.
For example, if you want to create a hard disk image that
has slices for CP/M 2.2, CP/M 3, and WordStar in the hd512 format, you
would use the command line of your modern computer to create the final
image:
@@ -2353,28 +2380,12 @@ call "ZSYS.SYS". For example:
or MAP, you may need to run “RELOG” to get the drive properly
recognized by ZSDOS.
* RomWBW fully supports both DateStamper and P2DOS file date/time
stamping. You must load the desired stamping module (`LDDS` for
DateStamper or `LDP2D` for P2DOS). This could be automated using
a `PROFILE.SUB` file. Follow the ZSDOS documentation to initialize
a disk for stamping.
* ZSVSTAMP expects to be running under the ZCPR 3.X command processor.
By default, RomWBW uses ZCPR 1.0 (intentionally, to reduce space usage)
and ZSVSTAMP will just abort in this case. It will work fine if you
implement NZCOM. ZSVSTAMP is included solely to facilitate usage
if/when you install NZCOM.
* FILEDATE only works with DateStamper style date stamping. If you run
it on a drive that is not initialized for DateStamper, it will complain
`FILEDATE, !!!TIME&.DAT missing`. This is normal and just means that
you have not initialized that drive for DateStamper (using PUTDS).
* ZXD will handle either DateStamper or P2DOS type date stamping.
However, it **must** be configured appropriately. As distributed, it will
look for P2DOS date stamps. Use ZCNFG to reconfigure it for P2DOS if
that is what you are using.
* Many of the tools can be configured (using either ZCNFG or DSCONFIG).
The configuration process modifies the actual application file itself.
This will fail if you try to modify one that is on the ROM disk because
@@ -2385,10 +2396,6 @@ call "ZSYS.SYS". For example:
SETTERM. So, run SETTERM on DSCONFIG before using DSCONFIG to configure
DATSWEEP!
* After using PUTDS to initialize a directory for ZDS date stamping, I
am finding that it is necessary to run RELOG before the stamping
routines will actually start working.
* Generic CP/M PIP and ZSDOS path searching do not mix well if you use
PIP to copy to or from a directory in the ZSDOS search path. Best to
use COPY from the ZSDOS distribution.
@@ -3087,8 +3094,11 @@ SAMPLE2.TXT ==> 4:/SAMPLE2.TXT ... [OK]
RomWBW supports a variety of real time clock hardware. If your
system has this hardware, then it will be able to maintain the
current date and time even while your system is turned off.
Additionally, depending on the operating system being used, you may be
able to utilize date/time stamping of files.
To facilitate this a CP/M clock driver (WBWCLK) has been included
inside `CLOCKS.DAT` that will read the clock via a RomWBW HBIOS call
You can determine if your system has a real time clock present (and
functioning) by looking at the boot messages. Here is an example of
@@ -3114,6 +3124,8 @@ RomwWBW includes two utilities for displaying or setting the date/time
stored by the RTC. They are both a bit different and are briefly
described below.
A third utility `TESTCLOK` is also included as part of ZSDOS
### WDATE Utility
The `WDATE` utility (contributed by Kevin Boone) is an application
@@ -3193,6 +3205,57 @@ Do **not** enable charging unless you are sure that your system
supports this. If your RTC is being powered by a normal battery, it
would be dangerous to enable charging.
### TESTCLOK Utility
The `TESTCLOK` utility is used to test a selected CPM clock driver
loaded from the CLOCKS.DAT file. After selecting the location of CLOCKS.DAT
and the clock driver (45. WBWCLK) it displays the currently configured time
until a key is pressed.
```
A>testclok
TESTCLOK V1.0 Copyright (C) 1988 H.F. Bower / C.W. Cotrill
Extract Clock from Library ([Y]/N) : Y
Location of CLOCKS.DAT [A0:] : <RETURN>
1. ACTRIX 2. ALSPA 3. AMPRO-LB
4. ANLYTCL-PRD 5. AP2-CDZ180 6. AP2-THND/MT
7. AP2-TIMASTR 8. AP2E+PCP-TM 9. AP2E+PCPI
10. AP2E-THUNDR 11. AP2E-TMASTR 12. BIG-BD-II
13. BP-BIOS 14. CCS-WALLCLK 15. CPUPRO-SSB1
16. ELECTR-MFIO 17. EPSON-QX10 18. ETS180IO+
19. H19-SUPER19 20. H19-ULTRA 21. H19-WATZMAN
22. H89-BITZERO 23. H89-PC12 24. H89-WIDGET
25. H89-WISE 26. H89UTI 27. HEATH-BIOS
28. HOUSEMASTER 29. K83-HOLMES 30. KAYPRO-84
31. KENMOR-ZTIM 32. KPRO-ADVENT 33. KPRO-LEGACY
34. MD3-MACK 35. MTN100K-DAY 36. ONEAC-ON!
37. OTRANA-ATCH 38. P&T-HEARTBT 39. QTSYS-S100
40. RELATIVE 41. S100-5832 42. SB180-HRTBT
43. SB180-XBIOS 44. SIMHCLOK 45. WBWCLK
46. XEROX-820 47. ZSDOS-BIOS
Enter Clock Driver Selection : 45
..Loading : WBWCLK ...
Linking Clock Module... OK
RomWBW HBIOS Clock 1.1
RomWBW Series HBIOS Clock
Press any key to quit...
19 Oct 2023 14:24:34
```
Since this runs at the CPM driver level it is useful as an end-to-end test
to prove that date time stamping is able to read the correct time
The `TESTCLOK` utility is provided by ZSDOS, plese see the ZSDOS Manual
for further information
## Date/Time File Stamping
If an RTC is available in your system, then most operating systems
@@ -3201,10 +3264,16 @@ date/time of file creation, update, and or access in the directory.
This capability is available in all of the RomWBW operating system
except the original DRI CP/M 2.2.
In some cases (such as ZSDOS), you must load an RSX (memory resident
utility) to enable date/time stamping of files. Additionally, you
will need to initialize the directory. The procedure varies in each
operation system, so you must review the associated documentation.
Three types of date/time stamping are supported using realtime clock
supported by RomWBW HBIOS. DateStamper, NZT and P2DOS.
In some cases (such as ZSDOS), you must load an RSX (memory resident
utility) to enable date/time stamping of files. This could be automated
using a `PROFILE.SUB` file.
Preconfigured loaders are provided, bypassing the need to use SETUPZST.
Additionally, you will need to initialize the directory. The procedure varies
depending on the date/time stamping mechanism, so you must review the associated documentation.
The date/time stamping mechanisms for each operating system are
generally not compatible. If you initialize a directory for a type
@@ -3215,6 +3284,71 @@ mechanism. Doing so may corrupt the directory.
The RomWBW disk images do not have date/time stamping initialized. This
is to avoid any chance of directory corruption.
### DateStamper
DateStamper datestamping follows the standard set by Plu*Perfect Systems.
This method stores stamps in a disk file named `!!!TIME&.DAT`.
Only DateStamper stamping stores full time and date stamps for
file Creation, Last Modification, and Last Access,
and may be used with any CP/M diskette format. In addition,
the DateStamper protocol is supported by a mature set of compatible utilities.
Key Utilities
* LDDS.COM - Load DateStamper date/time stamping resident extension. (RomWBW Provided)
* PUTDS.COM - Prepare disk for DateStamper date/time stamping.
After using PUTDS to initialize a directory for ZDS date stamping,
it may be necessary to run RELOG before the stamping routines
will actually start working.
### P2DOS (CP/M Plus compatible)
CP/M Plus-type datestamping is also widely used due to the popularity
of CP/M Plus (also know as CP/M 3). CP/M Plus-type file datestamping uses
directory sectors to store file datestamps which may be accessed more quickly
by programs, but there is no Last File Access stamp. Finally, the range of
utilities for this type of stamps is more limited than for the DateStamper protocol.
Key Utilities
* LDP2D.COM - Load P2DOS date/time stamping resident extension. (RomWBW Provided)
* INITDIR.COM - Prepares disks for P2DOS-type file stamping.
### NZT
_The use of NZT needs to be further documented_
Key Utilities
* LDNZT.COM - Load NZT date/time stamping resident extension. (RomWBW Provided)
### Additional Notes
The following files have been provided, customised and tested for for use in RomWBW
* `CLOCKS.DAT` - Library of clock drivers, which has been updated to include
the RomWBW clock driver WBWCLK, and also includes the SIMHCLOK clock driver.
The file is just a standard LU type library and is easily updated using NULU.
The members are the relocatable binaries, but with the .REL extension removed.
* `STAMPS.DAT` - Library of available date/time stamping modules for SETUPZST.
The file has been replaced with an updated version from the Walnut Creek CP/M CDROM.
The original version has a bug that prevents RSX (resident system extension) mode
to load properly.
Additional Notes
* `SETUPZST` (provided by ZSDOS) Should not normally be needed since the
creation of the appropriate LDTIM loaders has already been performed.
* `FILEDATE` only works with DateStamper style date stamping. If you run
it on a drive that is not initialized for DateStamper, it will complain
`FILEDATE, !!!TIME&.DAT missing`. This is normal and just means that
you have not initialized that drive for DateStamper (using PUTDS).
* `ZXD` will handle either DateStamper or P2DOS type date stamping.
However, it **must** be configured appropriately. As distributed, it will
look for P2DOS date stamps. Use ZCNFG to reconfigure it for P2DOS if
that is what you are using.
## Timezone
None of the operating systems distributed with RomWBW have any concept
@@ -4648,7 +4782,7 @@ the RomWBW HBIOS configuration.
`\clearpage`{=latex}
#### ROM Image File: RCZ80_kio.rom
#### ROM Image File: RCZ80_kio_std.rom
| | |
|-------------------|---------------|
@@ -4691,7 +4825,7 @@ the RomWBW HBIOS configuration.
### RCBus Z180 CPU Module
#### ROM Image File: RCZ180_ext.rom
#### ROM Image File: RCZ180_ext_std.rom
| | |
|-------------------|---------------|
@@ -4736,7 +4870,7 @@ the RomWBW HBIOS configuration.
`\clearpage`{=latex}
#### ROM Image File: RCZ180_nat.rom
#### ROM Image File: RCZ180_nat_std.rom
| | |
|-------------------|---------------|
@@ -4783,7 +4917,7 @@ the RomWBW HBIOS configuration.
### RCBus Z280 CPU Module
#### ROM Image File: RCZ280_ext.rom
#### ROM Image File: RCZ280_ext_std.rom
| | |
|-------------------|---------------|
@@ -4826,7 +4960,7 @@ the RomWBW HBIOS configuration.
`\clearpage`{=latex}
#### ROM Image File: RCZ280_nat.rom
#### ROM Image File: RCZ280_nat_std.rom
| | |
|-------------------|---------------|
@@ -4870,7 +5004,7 @@ the RomWBW HBIOS configuration.
### Easy Z80 SBC
#### ROM Image File: RCZ80_easy.rom
#### ROM Image File: RCZ80_easy_std.rom
| | |
|-------------------|---------------|
@@ -4915,7 +5049,7 @@ the RomWBW HBIOS configuration.
### Tiny Z80 SBC
#### ROM Image File: RCZ80_tiny.rom
#### ROM Image File: RCZ80_tiny_std.rom
| | |
|-------------------|---------------|
@@ -4959,7 +5093,7 @@ the RomWBW HBIOS configuration.
### Z80-512K CPU/RAM/ROM Module
#### ROM Image File: RCZ80_skz.rom
#### ROM Image File: RCZ80_skz_std.rom
| | |
|-------------------|---------------|
@@ -5004,7 +5138,7 @@ the RomWBW HBIOS configuration.
### Small Computer SC126 Z180 SBC
#### ROM Image File: SCZ180_sc126.rom
#### ROM Image File: SCZ180_sc126_std.rom
| | |
|-------------------|---------------|
@@ -5052,7 +5186,7 @@ the RomWBW HBIOS configuration.
### Small Computer SC130 Z180 SBC
#### ROM Image File: SCZ180_sc130.rom
#### ROM Image File: SCZ180_sc130_std.rom
| | |
|-------------------|---------------|
@@ -5098,9 +5232,9 @@ the RomWBW HBIOS configuration.
`\clearpage`{=latex}
### Small Computer SC131 Z180 Pocket Computer
### Small Computer SC131 Z180 Pocket Comp
#### ROM Image File: SCZ180_sc131.rom
#### ROM Image File: SCZ180_sc131_std.rom
| | |
|-------------------|---------------|
@@ -5127,7 +5261,7 @@ the RomWBW HBIOS configuration.
### Small Computer SC140 Z180 CPU Module
#### ROM Image File: SCZ180_sc140.rom
#### ROM Image File: SCZ180_sc140_std.rom
| | |
|-------------------|---------------|
@@ -5174,7 +5308,7 @@ the RomWBW HBIOS configuration.
### Small Computer SC503 Z180 CPU Module
#### ROM Image File: SCZ180_sc503.rom
#### ROM Image File: SCZ180_sc503_std.rom
| | |
|-------------------|---------------|
@@ -5221,7 +5355,7 @@ the RomWBW HBIOS configuration.
### Small Computer SC700 Z180 CPU Module
#### ROM Image File: SCZ180_sc700.rom
#### ROM Image File: SCZ180_sc700_std.rom
| | |
|-------------------|---------------|
@@ -5250,7 +5384,7 @@ the RomWBW HBIOS configuration.
- CH: IO=60
- CHUSB: IO=62
- CHUSB: IO=60
S- MD: TYPE=RAM
- MD: TYPE=RAM
- MD: TYPE=ROM
- FD: MODE=RCWDC, IO=80, DRIVE 0, TYPE=3.5" HD
- FD: MODE=RCWDC, IO=80, DRIVE 1, TYPE=3.5" HD
@@ -5381,7 +5515,7 @@ S- MD: TYPE=RAM
### Z80 ZRC CPU Module
#### ROM Image File: RCZ80_zrc.rom
#### ROM Image File: RCZ80_zrc_std.rom
| | |
|-------------------|---------------|
@@ -5428,7 +5562,7 @@ S- MD: TYPE=RAM
`\clearpage`{=latex}
#### ROM Image File: RCZ80_zrc_ram.rom
#### ROM Image File: RCZ80_zrc_ram_std.rom
| | |
|-------------------|---------------|
@@ -5475,7 +5609,7 @@ S- MD: TYPE=RAM
### Z80 ZRC512 CPU Module
#### ROM Image File: RCZ80_zrc512.rom
#### ROM Image File: RCZ80_zrc512_std.rom
| | |
|-------------------|---------------|
@@ -5522,7 +5656,7 @@ S- MD: TYPE=RAM
### Z180 Z1RCC CPU Module
#### ROM Image File: RCZ180_z1rcc.rom
#### ROM Image File: RCZ180_z1rcc_std.rom
| | |
|-------------------|---------------|
@@ -5568,7 +5702,7 @@ S- MD: TYPE=RAM
### Z280 ZZRCC CPU Module
#### ROM Image File: RCZ280_zzrcc.rom
#### ROM Image File: RCZ280_zzrcc_std.rom
| | |
|-------------------|---------------|
@@ -5614,7 +5748,7 @@ S- MD: TYPE=RAM
`\clearpage`{=latex}
#### ROM Image File: RCZ280_zzrcc_ram.rom
#### ROM Image File: RCZ280_zzrcc_ram_std.rom
| | |
|-------------------|---------------|
@@ -5660,7 +5794,7 @@ S- MD: TYPE=RAM
### Z280 ZZ80MB SBC
#### ROM Image File: RCZ280_zz80mb.rom
#### ROM Image File: RCZ280_zz80mb_std.rom
| | |
|-------------------|---------------|
@@ -5965,6 +6099,36 @@ SD: MODE=FZ80, IO=108, UNITS=2
- Requires matching FPGA code
### Genesis STD Z180
#### ROM Image File: GMZ180_std.rom
| | |
|-------------------|---------------|
| Default CPU Speed | 18.432 MHz |
| Interrupts | Mode 2 |
| System Timer | Z180 |
| Serial Default | 115200 Baud |
| Memory Manager | Z180 |
| ROM Size | 512 KB |
| RAM Size | 512 KB |
##### Supported Hardware (see [Appendix B - Device Summary]):
DSRTC: MODE=STD, IO=132
INTRTC: ENABLED
ASCI: IO=192, INTERRUPTS ENABLED
ASCI: IO=193, INTERRUPTS ENABLED
MD: TYPE=RAM
MD: TYPE=ROM
IDE: MODE=GIDE, IO=32, MASTER
IDE: MODE=GIDE, IO=32, SLAVE
SD: MODE=GM, IO=132, UNITS=1
##### Notes:
- CPU speed will be dynamically measured at startup if DSRTC is present
## Appendix B - Device Summary
The table below briefly describes each of the possible devices that
@@ -5991,6 +6155,7 @@ may be discovered by RomWBW in your system.
| EMM | Disk | Disk drive on Parallel Port emm interface (Zip Drive) |
| FD | Disk | 8272 or compatible Floppy Disk Controller |
| FP | System | Simple LED & Switch Front Panel |
| FV | Video | S100 FPGA Z80 Onboard VGA/Keyboard |
| GDC | Video | uPD7220 Video Display Controller |
| HDSK | Disk | SIMH Simulator Hard Disk |
| ICM | DsKy | ICM7218-based Display/Keypad on PPI |
@@ -5999,6 +6164,7 @@ may be discovered by RomWBW in your system.
| INTRTC | RTC | Interrupt-based Real Time Clock |
| KBD | Keyboard | 8242 PS/2 Keyboard Controller |
| KIO | System | Zilog Serial/ Parallel Counter/Timer |
| LCD | System | Hitachi HD44780-based LCD Display |
| LPT | Char | Parallel I/O Controller |
| MD | Disk | ROM/RAM Disk |
| MSXKYB | Keyboard | MSX Compliant Matrix Keyboard |

View File

@@ -5,17 +5,20 @@ set TOOLS=../../Tools
set PATH=%TOOLS%\srecord;%PATH%
if exist ..\..\Binary\FZ80_std.rom call :build_fz80
for %%f in (..\..\Binary\FZ80_*.rom) do call :build %%~nf
goto :eof
:build_fz80
:build
echo.
echo Creating %1 disk image...
echo.
srec_cat -generate 0x0 0x100000 --constant 0x00 -o temp.dat -binary
srec_cat temp.dat -binary -exclude 0x1B8 0x200 fz80_ptbl.bin -binary -offset 0x1B8 -o temp.dat -binary
srec_cat temp.dat -binary -exclude 0x80000 0xE0000 ..\..\Binary\FZ80_std.rom -binary -offset 0x80000 -o temp.dat -binary
move temp.dat ..\..\Binary\hd1k_fz80_prefix.dat
srec_cat temp.dat -binary -exclude 0x80000 0xE0000 ..\..\Binary\%1.rom -binary -offset 0x80000 -o temp.dat -binary
move temp.dat ..\..\Binary\%1_hd1k_prefix.dat
copy /b ..\..\Binary\hd1k_fz80_prefix.dat + ..\..\Binary\hd1k_cpm22.img + ..\..\Binary\hd1k_zsdos.img + ..\..\Binary\hd1k_nzcom.img + ..\..\Binary\hd1k_cpm3.img + ..\..\Binary\hd1k_zpm3.img + ..\..\Binary\hd1k_ws4.img ..\..\Binary\hd1k_fz80_combo.img || exit /b
copy /b ..\..\Binary\%1_hd1k_prefix.dat + ..\..\Binary\hd1k_cpm22.img + ..\..\Binary\hd1k_zsdos.img + ..\..\Binary\hd1k_nzcom.img + ..\..\Binary\hd1k_cpm3.img + ..\..\Binary\hd1k_zpm3.img + ..\..\Binary\hd1k_ws4.img ..\..\Binary\%1_hd1k_combo.img || exit /b
goto :eof

View File

@@ -1,24 +1,25 @@
HD1KFZ80PREFIX = hd1k_fz80_prefix.dat
HD1KFZ80COMBOIMG = hd1k_fz80_combo.img
FZ80ROM = ../../Binary/FZ80_std.rom
HD1KIMGS = ../../Binary/hd1k_cpm22.img ../../Binary/hd1k_zsdos.img ../../Binary/hd1k_nzcom.img \
../../Binary/hd1k_cpm3.img ../../Binary/hd1k_zpm3.img ../../Binary/hd1k_ws4.img
OBJECTS := $(HD1KFZ80PREFIX) $(HD1KFZ80COMBOIMG)
DEST=../../Binary
HD1KIMGS = $(DEST)/hd1k_cpm22.img $(DEST)/hd1k_zsdos.img $(DEST)/hd1k_nzcom.img \
$(DEST)/hd1k_cpm3.img $(DEST)/hd1k_zpm3.img $(DEST)/hd1k_ws4.img
ROMS := $(wildcard $(DEST)/FZ80_*.rom)
ROMS := $(patsubst $(DEST)/%.rom,%,$(ROMS))
OBJECTS := $(patsubst %,%_hd1k_prefix.dat,$(ROMS))
OBJECTS += $(patsubst %,%_hd1k_combo.img,$(ROMS))
TOOLS = ../../Tools
include $(TOOLS)/Makefile.inc
DIFFPATH = $(DIFFTO)/Binary
$(HD1KFZ80PREFIX):
%_hd1k_prefix.dat: $(DEST)/%.rom
srec_cat -generate 0x0 0x100000 --constant 0x00 -o temp.dat -binary
srec_cat temp.dat -binary -exclude 0x1B8 0x200 fz80_ptbl.bin -binary -offset 0x1B8 -o temp.dat -binary
srec_cat temp.dat -binary -exclude 0x80000 0xE0000 $(FZ80ROM) -binary -offset 0x80000 -o temp.dat -binary
srec_cat temp.dat -binary -exclude 0x80000 0xE0000 $< -binary -offset 0x80000 -o temp.dat -binary
mv temp.dat $@
$(HD1KFZ80COMBOIMG): $(HD1KFZ80PREFIX) $(HD1KIMGS)
%_hd1k_combo.img: %_hd1k_prefix.dat $(HD1KIMGS)
cat $^ > $@

View File

@@ -211,31 +211,29 @@ call Build ZETA2 std || exit /b
call Build N8 std || exit /b
call Build MK4 std || exit /b
call Build RCZ80 std || exit /b
call Build RCZ80 kio || exit /b
call Build RCZ80 easy || exit /b
call Build RCZ80 tiny || exit /b
call Build RCZ80 skz || exit /b
:: call Build RCZ80 mt || exit /b
:: call Build RCZ80 duart || exit /b
call Build RCZ80 zrc || exit /b
call Build RCZ80 zrc_ram || exit /b
call Build RCZ80 zrc512 || exit /b
call Build RCZ180 ext || exit /b
call Build RCZ180 nat || exit /b
call Build RCZ180 z1rcc || exit /b
call Build RCZ280 ext || exit /b
call Build RCZ280 nat || exit /b
call Build RCZ280 zz80mb || exit /b
call Build RCZ280 zzrcc || exit /b
call Build RCZ280 zzrcc_ram || exit /b
call Build SCZ180 sc126 || exit /b
call Build SCZ180 sc130 || exit /b
call Build SCZ180 sc131 || exit /b
call Build SCZ180 sc140 || exit /b
call Build SCZ180 sc503 || exit /b
call Build SCZ180 sc700 || exit /b
call Build RCZ80 kio_std || exit /b
call Build RCZ80 easy_std || exit /b
call Build RCZ80 tiny_std || exit /b
call Build RCZ80 skz_std || exit /b
call Build RCZ80 zrc_std || exit /b
call Build RCZ80 zrc_ram_std || exit /b
call Build RCZ80 zrc512_std || exit /b
call Build RCZ180 ext_std || exit /b
call Build RCZ180 nat_std || exit /b
call Build RCZ180 z1rcc_std || exit /b
call Build RCZ280 ext_std || exit /b
call Build RCZ280 nat_std || exit /b
call Build RCZ280 zz80mb_std || exit /b
call Build RCZ280 zzrcc_std || exit /b
call Build RCZ280 zzrcc_ram_std || exit /b
call Build SCZ180 sc126_std || exit /b
call Build SCZ180 sc130_std || exit /b
call Build SCZ180 sc131_std || exit /b
call Build SCZ180 sc140_std || exit /b
call Build SCZ180 sc503_std || exit /b
call Build SCZ180 sc700_std || exit /b
call Build GMZ180 std || exit /b
call Build DYNO std || exit /b
call Build UNA std || exit /b
call Build RPH std || exit /b
call Build Z80RETRO std || exit /b
call Build S100 std || exit /b
@@ -245,5 +243,6 @@ call Build EPITX std || exit /b
:: call Build MON std || exit /b
call Build NABU std || exit /b
call Build FZ80 std || exit /b
call Build UNA std || exit /b
goto :eof

View File

@@ -28,7 +28,7 @@ $ErrorAction = 'Stop'
#
$PlatformListZ80 = "SBC", "MBC", "ZETA", "ZETA2", "RCZ80", "Z80RETRO", "DUO", "UNA", "HEATH", "MON", "NABU", "FZ80"
$PlatformListZ180 = "N8", "MK4", "RCZ180", "SCZ180", "DYNO", "RPH", "S100", "EPITX"
$PlatformListZ180 = "N8", "MK4", "RCZ180", "SCZ180", "DYNO", "RPH", "S100", "EPITX", "GMZ180"
$PlatformListZ280 = "RCZ280"
#

View File

@@ -11,48 +11,47 @@ export CPUFAM
if [ "${ROM_PLATFORM}" == "dist" ] ; then
echo "!!!DISTRIBUTION BUILD!!!"
ROM_PLATFORM="DYNO"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="MK4"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="N8"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="RCZ180"; ROM_CONFIG="ext"; bash Build.sh
ROM_PLATFORM="RCZ180"; ROM_CONFIG="nat"; bash Build.sh
ROM_PLATFORM="RCZ180"; ROM_CONFIG="z1rcc"; bash Build.sh
ROM_PLATFORM="RCZ280"; ROM_CONFIG="ext"; bash Build.sh
ROM_PLATFORM="RCZ280"; ROM_CONFIG="nat"; bash Build.sh
ROM_PLATFORM="RCZ280"; ROM_CONFIG="zz80mb"; bash Build.sh
ROM_PLATFORM="RCZ280"; ROM_CONFIG="zzrcc"; bash Build.sh
ROM_PLATFORM="RCZ280"; ROM_CONFIG="zzrcc_ram"; bash Build.sh
# ROM_PLATFORM="RCZ80"; ROM_CONFIG="mt"; bash Build.sh
# ROM_PLATFORM="RCZ80"; ROM_CONFIG="duart"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="kio"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="easy"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="tiny"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="skz"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="zrc"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="zrc_ram"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="zrc512"; bash Build.sh
ROM_PLATFORM="RPH"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="SBC"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="SBC"; ROM_CONFIG="simh"; bash Build.sh
ROM_PLATFORM="MBC"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="DUO"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc126"; bash Build.sh
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc130"; bash Build.sh
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc131"; bash Build.sh
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc140"; bash Build.sh
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc503"; bash Build.sh
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc700"; bash Build.sh
ROM_PLATFORM="S100"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="UNA"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="Z80RETRO"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="ZETA"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="ZETA2"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="N8"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="MK4"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="kio_std"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="easy_std"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="tiny_std"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="skz_std"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="zrc_std"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="zrc_ram_std"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="zrc512_std"; bash Build.sh
ROM_PLATFORM="RCZ180"; ROM_CONFIG="ext_std"; bash Build.sh
ROM_PLATFORM="RCZ180"; ROM_CONFIG="nat_std"; bash Build.sh
ROM_PLATFORM="RCZ180"; ROM_CONFIG="z1rcc_std"; bash Build.sh
ROM_PLATFORM="RCZ280"; ROM_CONFIG="ext_std"; bash Build.sh
ROM_PLATFORM="RCZ280"; ROM_CONFIG="nat_std"; bash Build.sh
ROM_PLATFORM="RCZ280"; ROM_CONFIG="zz80mb_std"; bash Build.sh
ROM_PLATFORM="RCZ280"; ROM_CONFIG="zzrcc_std"; bash Build.sh
ROM_PLATFORM="RCZ280"; ROM_CONFIG="zzrcc_ram_std"; bash Build.sh
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc126_std"; bash Build.sh
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc130_std"; bash Build.sh
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc131_std"; bash Build.sh
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc140_std"; bash Build.sh
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc503_std"; bash Build.sh
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc700_std"; bash Build.sh
ROM_PLATFORM="GMZ180"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="DYNO"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="RPH"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="Z80RETRO"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="S100"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="DUO"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="HEATH"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="EPITX"; ROM_CONFIG="std"; bash Build.sh
# ROM_PLATFORM="MON"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="NABU"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="FZ80"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="UNA"; ROM_CONFIG="std"; bash Build.sh
exit
fi

View File

@@ -0,0 +1,72 @@
;
;==================================================================================================
; STD Z180 STANDARD CONFIGURATION
;==================================================================================================
;
; THE COMPLETE SET OF DEFAULT CONFIGURATION SETTINGS FOR THIS PLATFORM ARE FOUND IN THE
; CFG_<PLT>.ASM INCLUDED FILE WHICH IS FOUND IN THE PARENT DIRECTORY. THIS FILE CONTAINS
; COMMON CONFIGURATION SETTINGS THAT OVERRIDE THE DEFAULTS. IT IS INTENDED THAT YOU MAKE
; YOUR CUSTOMIZATIONS IN THIS FILE AND JUST INHERIT ALL OTHER SETTINGS FROM THE DEFAULTS.
; EVEN BETTER, YOU CAN MAKE A COPY OF THIS FILE WITH A NAME LIKE <PLT>_XXX.ASM AND SPECIFY
; YOUR FILE IN THE BUILD PROCESS.
;
; THE SETTINGS BELOW ARE THE SETTINGS THAT ARE MOST COMMONLY MODIFIED FOR THIS PLATFORM.
; MANY OF THEM ARE EQUAL TO THE SETTINGS IN THE INCLUDED FILE, SO THEY DON'T REALLY DO
; ANYTHING AS IS. THEY ARE LISTED HERE TO MAKE IT EASY FOR YOU TO ADJUST THE MOST COMMON
; SETTINGS.
;
; N.B., SINCE THE SETTINGS BELOW ARE REDEFINING VALUES ALREADY SET IN THE INCLUDED FILE,
; TASM INSISTS THAT YOU USE THE .SET OPERATOR AND NOT THE .EQU OPERATOR BELOW. ATTEMPTING
; TO REDEFINE A VALUE WITH .EQU BELOW WILL CAUSE TASM ERRORS!
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
; DIRECTORIES ABOVE THIS ONE).
;
#DEFINE PLATFORM_NAME "GM STD BUS Z180", " [", CONFIG, "]"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#include "cfg_gmz180.asm"
;
CPUOSC .SET 18432000 ; CPU OSC FREQ IN MHZ
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
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)
;
LEDENABLE .SET FALSE ; ENABLE STATUS LED (SINGLE LED)
LEDMODE .SET LEDMODE_STD ; LEDMODE_[STD|SC|RTC|NABU]
;
FPLED_ENABLE .SET FALSE ; FP: ENABLES FRONT PANEL LEDS
FPLED_IO .SET $00 ; FP: PORT ADDRESS FOR FP LEDS
;
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
INTRTCENABLE .SET TRUE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
;
UARTENABLE .SET FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
ASCIENABLE .SET TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
SIOENABLE .SET FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
;
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)
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.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
;
FDENABLE .SET FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
;
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
SDENABLE .SET TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .SET SDMODE_GM ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR]
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY
;
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)

View File

@@ -26,44 +26,3 @@
;
#include "cfg_heath.asm"
;
CPUOSC .SET 7372800 ; CPU OSC FREQ IN MHZ
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
DSKYENABLE .SET TRUE ; ENABLES DSKY FUNCTIONALITY
H8PENABLE .SET TRUE ; ENABLES HEATH H8 FRONT PANEL
;
FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
FPSW_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL SWITCHES
;
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
RP5RTCENABLE .SET FALSE ; RP5C01 RTC BASED CLOCK (RP5RTC.ASM)
;
UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
ACIAENABLE .SET TRUE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
DUARTENABLE .SET FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
;
LPTENABLE .SET FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
;
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
AYMODE .SET AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC]
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER
;
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC]
;
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .SET SDMODE_PIO ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|PIO|USR]
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT SC ONLY
IMMENABLE .SET FALSE ; IMM: ENABLE IMM DISK DRIVER (IMM.ASM)
;
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)

View File

@@ -90,6 +90,9 @@ PKDENABLE .EQU TRUE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .EQU $88 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL
LCDENABLE .EQU FALSE ; ENABLE LCD DISPLAY
LCDBASE .EQU $DA ; BASE I/O ADDRESS OF LCD CONTROLLER
LCDDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON LCD DISPLAY
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE
@@ -196,6 +199,7 @@ VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
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)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK

View File

@@ -92,6 +92,9 @@ PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL
LCDENABLE .EQU FALSE ; ENABLE LCD DISPLAY
LCDBASE .EQU $DA ; BASE I/O ADDRESS OF LCD CONTROLLER
LCDDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON LCD DISPLAY
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE
@@ -214,6 +217,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
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)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK

View File

@@ -93,6 +93,9 @@ PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL
LCDENABLE .EQU FALSE ; ENABLE LCD DISPLAY
LCDBASE .EQU $DA ; BASE I/O ADDRESS OF LCD CONTROLLER
LCDDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON LCD DISPLAY
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE
@@ -216,6 +219,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
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)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK

View File

@@ -92,6 +92,9 @@ PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL
LCDENABLE .EQU FALSE ; ENABLE LCD DISPLAY
LCDBASE .EQU $DA ; BASE I/O ADDRESS OF LCD CONTROLLER
LCDDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON LCD DISPLAY
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE
@@ -219,6 +222,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
SCONENABLE .EQU TRUE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
FVENABLE .EQU TRUE ; FV: ENABLE FPGA VGA VIDEO DRIVER (FV.ASM)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU FALSE ; MD: ENABLE ROM DISK

359
Source/HBIOS/cfg_gmz180.asm Normal file
View File

@@ -0,0 +1,359 @@
;
;==================================================================================================
; ROMWBW 3.X CONFIGURATION DEFAULTS FOR GENESIS MODULES STD BUS BASED Z180 VARIANTS
;==================================================================================================
;
; THIS FILE CONTAINS THE FULL SET OF DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
; INDICATED ABOVE. THIS FILE SHOULD *NOT* NORMALLY BE CHANGED. INSTEAD, YOU SHOULD
; OVERRIDE ANY SETTINGS YOU WANT USING A CONFIGURATION FILE IN THE CONFIG DIRECTORY
; UNDER THIS DIRECTORY.
;
; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS
; FOR THE PLATFORM.
;
#DEFINE PLATFORM_NAME "GM STD BUS Z180", " [", CONFIG, "]"
;
#INCLUDE "hbios.inc"
;
PLATFORM .EQU PLT_GMZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON]
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
;
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
;
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
CPUOSC .EQU 18432000 ; CPU OSC FREQ IN MHZ
INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
DEFSERCFG .EQU SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING)
MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON]
RAMBIAS .EQU ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)
MPGSEL_1 .EQU $79 ; Z2 MEM MGR BANK 1 PAGE SELECT REG (WRITE ONLY)
MPGSEL_2 .EQU $7A ; Z2 MEM MGR BANK 2 PAGE SELECT REG (WRITE ONLY)
MPGSEL_3 .EQU $7B ; Z2 MEM MGR BANK 3 PAGE SELECT REG (WRITE ONLY)
MPGENA .EQU $7C ; Z2 MEM MGR PAGING ENABLE REGISTER (BIT 0, WRITE ONLY)
;
Z180_BASE .EQU $C0 ; Z180: I/O BASE ADDRESS FOR INTERNAL REGISTERS
Z180_CLKDIV .EQU 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2
Z180_MEMWAIT .EQU 0 ; Z180: MEMORY WAIT STATES (0-3)
Z180_IOWAIT .EQU 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
Z180_TIMER .EQU TRUE ; Z180: ENABLE Z180 SYSTEM PERIODIC TIMER
;
RTCIO .EQU $84 ; RTC LATCH REGISTER ADR
;
KIOENABLE .EQU FALSE ; ENABLE ZILOG KIO SUPPORT
KIOBASE .EQU $80 ; KIO BASE I/O ADDRESS
;
CTCENABLE .EQU FALSE ; ENABLE ZILOG CTC SUPPORT
CTCDEBUG .EQU FALSE ; ENABLE CTC DRIVER DEBUG OUTPUT
CTCBASE .EQU $88 ; CTC BASE I/O ADDRESS
CTCTIMER .EQU FALSE ; ENABLE CTC PERIODIC TIMER
;
PCFENABLE .EQU FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .EQU $F0 ; PCF8584 BASE I/O ADDRESS
;
EIPCENABLE .EQU FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;
SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES
;
WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
;
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED
FPLED_DSKACT .EQU FALSE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED
;
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|SC|RTC|NABU]
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
;
DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY
DSKYDSKACT .EQU FALSE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY
ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218)
ICMPPIBASE .EQU $60 ; BASE I/O ADDRESS OF ICM PPI
PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL
LCDENABLE .EQU FALSE ; ENABLE LCD DISPLAY
LCDBASE .EQU $DA ; BASE I/O ADDRESS OF LCD CONTROLLER
LCDDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON LCD DISPLAY
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
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]
MKYKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
;
DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC|K80W]
DSRTCCHG .EQU TRUE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
DS1501RTCENABLE .EQU FALSE ; DS1501RTC: ENABLE DS-1501 CLOCK DRIVER (DS1501RTC.ASM)
DS1501RTC_BASE .EQU $50 ; DS1501RTC: I/O BASE ADDRESS
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;
INTRTCENABLE .EQU FALSE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
;
RP5RTCENABLE .EQU FALSE ; RP5C01 RTC BASED CLOCK (RP5RTC.ASM)
;
HTIMENABLE .EQU FALSE ; ENABLE SIMH TIMER SUPPORT
SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM)
;
DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM)
DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF]
;
DS5RTCENABLE .EQU FALSE ; DS5RTC: ENABLE DS-1305 SPI CLOCK DRIVER (DS5RTC.ASM)
;
SSERENABLE .EQU FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM)
SSERCFG .EQU SER_9600_8N1 ; SSER: SERIAL LINE CONFIG
SSERSTATUS .EQU $FF ; SSER: STATUS PORT
SSERDATA .EQU $FF ; SSER: DATA PORT
SSERIRDY .EQU %00000001 ; SSER: INPUT READY BIT MASK
SSERIINV .EQU FALSE ; SSER: INPUT READY BIT INVERTED
SSERORDY .EQU %00000010 ; SSER: OUTPUT READY BIT MASK
SSEROINV .EQU FALSE ; SSER: OUTPUT READY BIT INVERTED
;
DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
DUARTCNT .EQU 1 ; DUART: NUMBER OF CHIPS TO DETECT (1-2)
DUART0BASE .EQU $A0 ; DUART 0: BASE ADDRESS OF CHIP
DUART0ACFG .EQU DEFSERCFG ; DUART 0A: SERIAL LINE CONFIG
DUART0BCFG .EQU DEFSERCFG ; DUART 0B: SERIAL LINE CONFIG
DUART1BASE .EQU $40 ; DUART 1: BASE ADDRESS OF CHIP
DUART1ACFG .EQU DEFSERCFG ; DUART 1A: SERIAL LINE CONFIG
DUART1BCFG .EQU DEFSERCFG ; DUART 1B: SERIAL LINE CONFIG
;
UARTENABLE .EQU TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
UARTCNT .EQU 1 ; UART: NUMBER OF CHIPS TO DETECT (1-8)
UARTOSC .EQU 1843200 ; UART: OSC FREQUENCY IN MHZ
UARTINTS .EQU FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3
UART4UART .EQU FALSE ; UART: SUPPORT 4UART ECB BOARD
UART4UARTBASE .EQU $C0 ; UART: BASE IO ADDRESS OF 4UART ECB BOARD
UART0BASE .EQU $80 ; UART 0: REGISTERS BASE ADR
UART0CFG .EQU DEFSERCFG ; UART 0: SERIAL LINE CONFIG
UART1BASE .EQU $88 ; UART 1: REGISTERS BASE ADR
UART1CFG .EQU DEFSERCFG ; UART 1: SERIAL LINE CONFIG
UART2BASE .EQU $A0 ; UART 2: REGISTERS BASE ADR
UART2CFG .EQU DEFSERCFG ; UART 2: SERIAL LINE CONFIG
UART3BASE .EQU $A8 ; UART 3: REGISTERS BASE ADR
UART3CFG .EQU DEFSERCFG ; UART 3: SERIAL LINE CONFIG
UART4BASE .EQU $FF ; UART 4: REGISTERS BASE ADR
UART4CFG .EQU DEFSERCFG ; UART 4: SERIAL LINE CONFIG
UART5BASE .EQU $FF ; UART 5: REGISTERS BASE ADR
UART5CFG .EQU DEFSERCFG ; UART 5: SERIAL LINE CONFIG
UART6BASE .EQU $FF ; UART 6: REGISTERS BASE ADR
UART6CFG .EQU DEFSERCFG ; UART 6: SERIAL LINE CONFIG
UART7BASE .EQU $FF ; UART 7: REGISTERS BASE ADR
UART7CFG .EQU DEFSERCFG ; UART 7: SERIAL LINE CONFIG
;
ASCIENABLE .EQU TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
ASCIINTS .EQU TRUE ; ASCI: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3
ASCISWAP .EQU FALSE ; ASCI: SWAP CHANNELS
ASCIBOOT .EQU 0 ; ASCI: REBOOT ON RCV CHAR (0=DISABLED)
ASCI0CFG .EQU DEFSERCFG ; ASCI 0: SERIAL LINE CONFIG
ASCI1CFG .EQU DEFSERCFG ; ASCI 1: SERIAL LINE CONFIG
;
Z2UENABLE .EQU FALSE ; Z2U: ENABLE Z280 UART SERIAL DRIVER (Z2U.ASM)
;
ACIAENABLE .EQU FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
;
SIOENABLE .EQU TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT
SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
SIOCNT .EQU 2 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
SIOINTS .EQU TRUE ; SIO: INCLUDE SIO INTERRUPT SUPPORT UNDER IM1/2/3
SIO0MODE .EQU SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
SIO0BASE .EQU $80 ; SIO 0: REGISTERS BASE ADR
SIO0ACLK .EQU 7372800 ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
SIO0ACFG .EQU SER_115200_8N1 ; SIO 0A: SERIAL LINE CONFIG
SIO0ACTCC .EQU -1 ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
SIO0BCLK .EQU 7372800 ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
SIO0BCFG .EQU SER_115200_8N1 ; SIO 0B: SERIAL LINE CONFIG
SIO0BCTCC .EQU -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
SIO1MODE .EQU SIOMODE_RC ; SIO 1: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
SIO1BASE .EQU $84 ; SIO 1: REGISTERS BASE ADR
SIO1ACLK .EQU 7372800 ; SIO 1A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
SIO1ACFG .EQU SER_115200_8N1 ; SIO 1A: SERIAL LINE CONFIG
SIO1ACTCC .EQU -1 ; SIO 1A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
SIO1BCLK .EQU 7372800 ; SIO 1B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
SIO1BCFG .EQU SER_115200_8N1 ; SIO 1B: SERIAL LINE CONFIG
SIO1BCTCC .EQU -1 ; SIO 1B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
;
XIOCFG .EQU DEFSERCFG ; XIO: SERIAL LINE CONFIG
;
VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM)
TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU]
TMS80COLS .EQU FALSE ; TMS: ENABLE 80 COLUMN SCREEN, REQUIRES V9958
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)
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)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
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_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)
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
;
IDEENABLE .EQU TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
IDETRACE .EQU 1 ; IDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
IDECNT .EQU 1 ; IDE: NUMBER OF IDE INTERFACES TO DETECT (1-3), 2 DRIVES EACH
IDE0MODE .EQU IDEMODE_GIDE ; IDE 0: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC|GIDE]
IDE0BASE .EQU $20 ; IDE 0: IO BASE ADDRESS
IDE0DATLO .EQU $20 ; IDE 0: DATA LO PORT FOR 16-BIT I/O
IDE0DATHI .EQU $28 ; IDE 0: DATA HI PORT FOR 16-BIT I/O
IDE0A8BIT .EQU TRUE ; IDE 0A (MASTER): 8 BIT XFER
IDE0B8BIT .EQU TRUE ; IDE 0B (MASTER): 8 BIT XFER
IDE1MODE .EQU IDEMODE_NONE ; IDE 1: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC|GIDE]
IDE1BASE .EQU $00 ; IDE 1: IO BASE ADDRESS
IDE1DATLO .EQU $00 ; IDE 1: DATA LO PORT FOR 16-BIT I/O
IDE1DATHI .EQU $00 ; IDE 1: DATA HI PORT FOR 16-BIT I/O
IDE1A8BIT .EQU TRUE ; IDE 1A (MASTER): 8 BIT XFER
IDE1B8BIT .EQU TRUE ; IDE 1B (MASTER): 8 BIT XFER
IDE2MODE .EQU IDEMODE_NONE ; IDE 2: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC|GIDE]
IDE2BASE .EQU $00 ; IDE 2: IO BASE ADDRESS
IDE2DATLO .EQU $00 ; IDE 2: DATA LO PORT FOR 16-BIT I/O
IDE2DATHI .EQU $00 ; IDE 2: DATA HI PORT FOR 16-BIT I/O
IDE2A8BIT .EQU TRUE ; IDE 2A (MASTER): 8 BIT XFER
IDE2B8BIT .EQU TRUE ; IDE 2B (MASTER): 8 BIT XFER
;
PPIDEENABLE .EQU FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDETRACE .EQU 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDECNT .EQU 1 ; PPIDE: NUMBER OF PPI CHIPS TO DETECT (1-3), 2 DRIVES PER CHIP
PPIDE0BASE .EQU $20 ; PPIDE 0: PPI REGISTERS BASE ADR
PPIDE0A8BIT .EQU FALSE ; PPIDE 0A (MASTER): 8 BIT XFER
PPIDE0B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE1BASE .EQU $00 ; PPIDE 1: PPI REGISTERS BASE ADR
PPIDE1A8BIT .EQU FALSE ; PPIDE 1A (MASTER): 8 BIT XFER
PPIDE1B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE2BASE .EQU $00 ; PPIDE 2: PPI REGISTERS BASE ADR
PPIDE2A8BIT .EQU FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
;
SDENABLE .EQU TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .EQU SDMODE_GM ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|FZ80|GM]
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE
SDMTSWAP .EQU FALSE ; SD: SWAP THE LOGICAL ORDER OF THE SPI PORTS OF THE MT011
;
CHENABLE .EQU FALSE ; CH: ENABLE CH375/376 USB SUPPORT
CHTRACE .EQU 1 ; CH: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
CHUSBTRACE .EQU 1 ; CHUSB: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
CHSDTRACE .EQU 1 ; CHSD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
CHCNT .EQU 2 ; CH: NUMBER OF BOARDS TO DETECT (1-2)
CH0BASE .EQU $3E ; CH 0: BASE I/O ADDRESS
CH0USBENABLE .EQU TRUE ; CH 0: ENABLE USB DISK
CH0SDENABLE .EQU FALSE ; CH 0: ENABLE SD DISK
CH1BASE .EQU $3C ; CH 1: BASE I/O ADDRESS
CH1USBENABLE .EQU TRUE ; CH 1: ENABLE USB DISK
CH1SDENABLE .EQU FALSE ; CH 1: ENABLE SD DISK
;
PRPENABLE .EQU FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
PRPSDENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER SD CARD SUPPORT
PRPSDTRACE .EQU 1 ; PRP: SD CARD TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PRPCONENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER VIDEO/KBD SUPPORT
;
PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
;
ESPENABLE .EQU FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
;
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
;
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
;
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
LPTMODE .EQU LPTMODE_MG014 ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014]
LPTCNT .EQU 1 ; LPT: NUMBER OF CHIPS TO DETECT (1-2)
LPTTRACE .EQU 1 ; LPT: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
LPT0BASE .EQU $18 ; LPT 0: REGISTERS BASE ADR
LPT1BASE .EQU $00 ; LPT 1: REGISTERS BASE ADR
;
PPAENABLE .EQU FALSE ; PPA: ENABLE PPA DISK DRIVER (PPA.ASM)
PPACNT .EQU 1 ; PPA: NUMBER OF PPA DEVICES (1-2)
PPATRACE .EQU 1 ; PPA: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPAMODE .EQU PPAMODE_MG014 ; PPA: DRIVER MODE: PPAMODE_[NONE|SPP|MG014]
PPA0BASE .EQU LPT0BASE ; PPA 0: BASE I/O ADDRESS OF PPI FOR PPA
PPA1BASE .EQU LPT1BASE ; PPA 1: BASE I/O ADDRESS OF PPI FOR PPA
;
IMMENABLE .EQU FALSE ; IMM: ENABLE IMM DISK DRIVER (IMM.ASM)
IMMCNT .EQU 1 ; IMM: NUMBER OF IMM DEVICES (1-2)
IMMTRACE .EQU 1 ; IMM: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
IMMMODE .EQU IMMMODE_MG014 ; IMM: DRIVER MODE: IMMMODE_[NONE|SPP|MG014]
IMM0BASE .EQU LPT0BASE ; IMM 0: BASE I/O ADDRESS OF PPI FOR IMM
IMM1BASE .EQU LPT1BASE ; IMM 1: BASE I/O ADDRESS OF PPI FOR IMM
;
SYQENABLE .EQU FALSE ; SYQ: ENABLE IMM DISK DRIVER (SYQ.ASM)
SYQCNT .EQU 1 ; SYQ: NUMBER OF SYQ DEVICES (1-2)
SYQTRACE .EQU 1 ; SYQ: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
SYQMODE .EQU IMMMODE_MG014 ; SYQ: DRIVER MODE: SYQMODE_[NONE|SPP|MG014]
SYQ0BASE .EQU LPT0BASE ; SYQ 0: BASE I/O ADDRESS OF PPI FOR SYQ
SYQ1BASE .EQU LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
;
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
;
UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
;
SN76489ENABLE .EQU FALSE ; SN: ENABLE SN76489 SOUND DRIVER
AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER
SN7CLK .EQU 3579545 ; SN: PSG CLOCK FREQ, ASSUME MSX STD
SNMODE .EQU SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM]
;
AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD
AYMODE .EQU AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU]
;
SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
;
DMAENABLE .EQU FALSE ; DMA: ENABLE DMA DRIVER (DMA.ASM)
DMABASE .EQU $E0 ; DMA: DMA BASE ADDRESS
DMAMODE .EQU DMAMODE_Z180 ; DMA: DMA MODE (NONE|ECB|Z180|Z280|RC|MBC|DUO)
;
YM2612ENABLE .EQU FALSE ; YM2612: ENABLE YM2612 DRIVER
VGMBASE .EQU $C0 ; YM2612: BASE ADDRESS FOR VGM BOARD (YM2612/SN76489s/CTC)

View File

@@ -1,6 +1,6 @@
;
;==================================================================================================
; ROMWBW 3.X CONFIGURATION DEFAULTS FOR RCBUS Z80
; ROMWBW 3.X CONFIGURATION DEFAULTS FOR HEATHKIT Z80
;==================================================================================================
;
; THIS FILE CONTAINS THE FULL SET OF DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
@@ -11,7 +11,7 @@
; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS
; FOR THE PLATFORM.
;
#DEFINE PLATFORM_NAME "RCBus", " [", CONFIG, "]"
#DEFINE PLATFORM_NAME "HEATHKIT", " [", CONFIG, "]"
;
#INCLUDE "hbios.inc"
;
@@ -29,7 +29,7 @@ AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
;
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
CPUOSC .EQU 7372800 ; CPU OSC FREQ IN MHZ
CPUOSC .EQU 16384000 ; CPU OSC FREQ IN MHZ
INTMODE .EQU 1 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
DEFSERCFG .EQU SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
;
@@ -72,7 +72,7 @@ WDOGIO .EQU $6E ; WATCHDOG REGISTER ADR
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
FPLED_DSKACT .EQU FALSE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED
@@ -85,13 +85,16 @@ LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
;
DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY
DSKYDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY
DSKYDSKACT .EQU FALSE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY
ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218)
ICMPPIBASE .EQU $60 ; BASE I/O ADDRESS OF ICM PPI
PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL
H8PENABLE .EQU TRUE ; ENABLES HEATH H8 FRONT PANEL
LCDENABLE .EQU FALSE ; ENABLE LCD DISPLAY
LCDBASE .EQU $DA ; BASE I/O ADDRESS OF LCD CONTROLLER
LCDDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON LCD DISPLAY
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE
@@ -105,7 +108,7 @@ KBDKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
PPKKBLOUT .EQU KBD_US ; PPK KEYBOARD LANGUAGE: KBD_[US|DE]
MKYKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
;
DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCENABLE .EQU FALSE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC|K80W]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
@@ -146,7 +149,7 @@ DUART1ACFG .EQU DEFSERCFG ; DUART 1A: SERIAL LINE CONFIG
DUART1BCFG .EQU DEFSERCFG ; DUART 1B: SERIAL LINE CONFIG
;
UARTENABLE .EQU TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
UARTCNT .EQU 2 ; UART: NUMBER OF CHIPS TO DETECT (1-8)
UARTCNT .EQU 4 ; UART: NUMBER OF CHIPS TO DETECT (1-8)
UARTOSC .EQU 1843200 ; UART: OSC FREQUENCY IN MHZ
UARTINTS .EQU FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3
UART4UART .EQU FALSE ; UART: SUPPORT 4UART ECB BOARD
@@ -155,9 +158,9 @@ UART0BASE .EQU $E8 ; UART 0: REGISTERS BASE ADR
UART0CFG .EQU DEFSERCFG ; UART 0: SERIAL LINE CONFIG
UART1BASE .EQU $E0 ; UART 1: REGISTERS BASE ADR
UART1CFG .EQU DEFSERCFG ; UART 1: SERIAL LINE CONFIG
UART2BASE .EQU $FF ; UART 2: REGISTERS BASE ADR
UART2BASE .EQU $D8 ; UART 2: REGISTERS BASE ADR
UART2CFG .EQU DEFSERCFG ; UART 2: SERIAL LINE CONFIG
UART3BASE .EQU $FF ; UART 3: REGISTERS BASE ADR
UART3BASE .EQU $D0 ; UART 3: REGISTERS BASE ADR
UART3CFG .EQU DEFSERCFG ; UART 3: SERIAL LINE CONFIG
UART4BASE .EQU $FF ; UART 4: REGISTERS BASE ADR
UART4CFG .EQU DEFSERCFG ; UART 4: SERIAL LINE CONFIG
@@ -172,7 +175,7 @@ ASCIENABLE .EQU FALSE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
;
Z2UENABLE .EQU FALSE ; Z2U: ENABLE Z280 UART SERIAL DRIVER (Z2U.ASM)
;
ACIAENABLE .EQU TRUE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
ACIAENABLE .EQU FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
ACIADEBUG .EQU FALSE ; ACIA: ENABLE DEBUG OUTPUT
ACIACNT .EQU 1 ; ACIA: NUMBER OF CHIPS TO DETECT (1-2)
ACIA0BASE .EQU $80 ; ACIA 0: REGISTERS BASE ADR
@@ -184,7 +187,7 @@ ACIA1CLK .EQU CPUOSC ; ACIA 1: OSC FREQ IN HZ
ACIA1DIV .EQU 1 ; ACIA 1: SERIAL CLOCK DIVIDER
ACIA1CFG .EQU DEFSERCFG ; ACIA 1: SERIAL LINE CONFIG (SEE STD.ASM)
;
SIOENABLE .EQU TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
SIOENABLE .EQU FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT
SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
SIOCNT .EQU 2 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
@@ -213,12 +216,13 @@ CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM)
TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU]
TMS80COLS .EQU FALSE ; TMS: ENABLE 80 COLUMN SCREEN, REQUIRES V9958
TMS80COLS .EQU TRUE ; TMS: ENABLE 80 COLUMN SCREEN, REQUIRES V9958
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)
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)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
@@ -226,7 +230,7 @@ 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)
FDENABLE .EQU TRUE ; 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)
@@ -258,7 +262,7 @@ IDE2DATHI .EQU $00 ; IDE 2: DATA HI PORT FOR 16-BIT I/O
IDE2A8BIT .EQU TRUE ; IDE 2A (MASTER): 8 BIT XFER
IDE2B8BIT .EQU TRUE ; IDE 2B (MASTER): 8 BIT XFER
;
PPIDEENABLE .EQU FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDEENABLE .EQU TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDETRACE .EQU 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDECNT .EQU 1 ; PPIDE: NUMBER OF PPI CHIPS TO DETECT (1-3), 2 DRIVES PER CHIP
PPIDE0BASE .EQU $20 ; PPIDE 0: PPI REGISTERS BASE ADR
@@ -338,7 +342,7 @@ SNMODE .EQU SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM]
;
AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD
AYMODE .EQU AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU]
AYMODE .EQU AYMODE_MSX ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU]
;
SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
;

View File

@@ -121,6 +121,9 @@ PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL
LCDENABLE .EQU FALSE ; ENABLE LCD DISPLAY
LCDBASE .EQU $DA ; BASE I/O ADDRESS OF LCD CONTROLLER
LCDDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON LCD DISPLAY
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE
@@ -264,6 +267,7 @@ VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
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)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK

View File

@@ -87,6 +87,9 @@ PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL
LCDENABLE .EQU FALSE ; ENABLE LCD DISPLAY
LCDBASE .EQU $DA ; BASE I/O ADDRESS OF LCD CONTROLLER
LCDDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON LCD DISPLAY
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE
@@ -193,6 +196,7 @@ VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
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)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK

View File

@@ -92,6 +92,9 @@ PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL
LCDENABLE .EQU FALSE ; ENABLE LCD DISPLAY
LCDBASE .EQU $DA ; BASE I/O ADDRESS OF LCD CONTROLLER
LCDDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON LCD DISPLAY
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE
@@ -203,6 +206,7 @@ VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
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)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK

View File

@@ -87,6 +87,9 @@ PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL
LCDENABLE .EQU FALSE ; ENABLE LCD DISPLAY
LCDBASE .EQU $DA ; BASE I/O ADDRESS OF LCD CONTROLLER
LCDDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON LCD DISPLAY
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE
@@ -214,6 +217,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
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)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK

View File

@@ -94,6 +94,9 @@ PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .EQU N8_PPI0 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL
LCDENABLE .EQU FALSE ; ENABLE LCD DISPLAY
LCDBASE .EQU $DA ; BASE I/O ADDRESS OF LCD CONTROLLER
LCDDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON LCD DISPLAY
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE
@@ -205,6 +208,7 @@ VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
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)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK

View File

@@ -92,6 +92,9 @@ PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL
LCDENABLE .EQU FALSE ; ENABLE LCD DISPLAY
LCDBASE .EQU $DA ; BASE I/O ADDRESS OF LCD CONTROLLER
LCDDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON LCD DISPLAY
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE
@@ -219,6 +222,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
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)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK

View File

@@ -98,6 +98,9 @@ PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL
LCDENABLE .EQU TRUE ; ENABLE LCD DISPLAY
LCDBASE .EQU $AA ; BASE I/O ADDRESS OF LCD CONTROLLER
LCDDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON LCD DISPLAY
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE
@@ -220,6 +223,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
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)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK

View File

@@ -92,6 +92,9 @@ PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL
LCDENABLE .EQU TRUE ; ENABLE LCD DISPLAY
LCDBASE .EQU $DA ; BASE I/O ADDRESS OF LCD CONTROLLER
LCDDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON LCD DISPLAY
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE
@@ -224,6 +227,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
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)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK

View File

@@ -92,6 +92,9 @@ PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL
LCDENABLE .EQU TRUE ; ENABLE LCD DISPLAY
LCDBASE .EQU $DA ; BASE I/O ADDRESS OF LCD CONTROLLER
LCDDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON LCD DISPLAY
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE
@@ -219,6 +222,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
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)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK

View File

@@ -92,6 +92,9 @@ PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .EQU RPH_PPI0 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL
LCDENABLE .EQU FALSE ; ENABLE LCD DISPLAY
LCDBASE .EQU $DA ; BASE I/O ADDRESS OF LCD CONTROLLER
LCDDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON LCD DISPLAY
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE
@@ -193,6 +196,7 @@ VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
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)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK

View File

@@ -92,6 +92,9 @@ PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL
LCDENABLE .EQU FALSE ; ENABLE LCD DISPLAY
LCDBASE .EQU $DA ; BASE I/O ADDRESS OF LCD CONTROLLER
LCDDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON LCD DISPLAY
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE
@@ -214,6 +217,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
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)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK

View File

@@ -87,6 +87,9 @@ PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL
LCDENABLE .EQU FALSE ; ENABLE LCD DISPLAY
LCDBASE .EQU $DA ; BASE I/O ADDRESS OF LCD CONTROLLER
LCDDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON LCD DISPLAY
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE
@@ -193,6 +196,7 @@ VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
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)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK

View File

@@ -92,6 +92,9 @@ PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL
LCDENABLE .EQU TRUE ; ENABLE LCD DISPLAY
LCDBASE .EQU $AA ; BASE I/O ADDRESS OF LCD CONTROLLER
LCDDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON LCD DISPLAY
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE
@@ -214,6 +217,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
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)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK

View File

@@ -90,6 +90,9 @@ PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL
LCDENABLE .EQU FALSE ; ENABLE LCD DISPLAY
LCDBASE .EQU $DA ; BASE I/O ADDRESS OF LCD CONTROLLER
LCDDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON LCD DISPLAY
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE
@@ -200,6 +203,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
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)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK

View File

@@ -79,6 +79,9 @@ PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL
LCDENABLE .EQU FALSE ; ENABLE LCD DISPLAY
LCDBASE .EQU $DA ; BASE I/O ADDRESS OF LCD CONTROLLER
LCDDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON LCD DISPLAY
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE
@@ -169,6 +172,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
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)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK

View File

@@ -90,6 +90,9 @@ PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL
LCDENABLE .EQU FALSE ; ENABLE LCD DISPLAY
LCDBASE .EQU $DA ; BASE I/O ADDRESS OF LCD CONTROLLER
LCDDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON LCD DISPLAY
;
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE
@@ -180,6 +183,7 @@ VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
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)
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK

View File

@@ -364,7 +364,8 @@ ESPCON_INIT:
PUSH IY ; COPY CONFIG ENTRY PTR
POP DE ; ... TO DE
CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
;;;LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
CALL CIO_SETCRT ; SET OURSELVES AS THE CRT DEVICE
;
; ANNOUNCE OURSLEVES
;

497
Source/HBIOS/fv.asm Normal file
View File

@@ -0,0 +1,497 @@
;======================================================================
; VIDEO DRIVER FOR FPGA VGA
; http://s100computers.com/My%20System%20Pages/FPGA%20Z80%20SBC/FPGA%20Z80%20SBC.htm
;
; WRITTEN BY: WAYNE WARTHEN -- 9/2/2024
;======================================================================
;
; FPGA VGA EXPOSES A FRAME BUFFER STARTING AT $E000.
; PORT $08 CONTROLS ACCESS TO THE FRAME BUFFER.
; - WHEN $01, FRAME BUFFER APPEARS AT $E000 IN CPU ADDRESS SPACE
; - WHEN $00, FRAME BUFFER IS INACCESSIBLE BY CPU
; PORT $C0: SET/GET CURSOR COL
; PORT $C1: SET/GET CURSOR ROW
; PORT $C2: CONTROLS VGA OUTPUT
; BIT 0: BLUE
; BIT 1: GREEN
; BIT 2: RED
; BIT 3: UNUSED?
; BIT 4: CURSOR MODE
; BIT 5: CURSOR BLINK
; BIT 6: CURSOR ENABLE
; BIT 7: VGA SIGNAL OUTPUT ENABLE
; PORT $08: BUFFER SELECT, 1=SELECTED
;
; TODO:
;
;======================================================================
; FPGA VGA DRIVER - CONSTANTS
;======================================================================
;
FV_FBUF .EQU $E000 ; ADDRESS OF FRAME BUFFER
FV_BASE .EQU $C0 ; BASE I/O ADDRESS
FV_CCOL .EQU FV_BASE+0 ; CUR COL PORT
FV_CROW .EQU FV_BASE+1 ; CUR ROW PORT
FV_CTL .EQU FV_BASE+2 ; VGA CONTROL PORT
;
FV_BUFCTL .EQU $08
;
FV_KBDDATA .EQU $03
FV_KBDST .EQU $02
;
FV_ROWS .EQU 40
FV_COLS .EQU 80
;
TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
;;;KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT
;
DEVECHO "FV: IO="
DEVECHO FV_BASE
DEVECHO ", KBD MODE=FV"
DEVECHO ", KBD IO="
DEVECHO FV_KBDDATA
DEVECHO "\n"
;
;======================================================================
; FPGA VGA DRIVER - INITIALIZATION
;======================================================================
;
FV_INIT:
LD IY,FV_IDAT ; POINTER TO INSTANCE DATA
;
CALL NEWLINE ; FORMATTING
PRTS("FV: IO=0x$")
LD A,FV_BASE
CALL PRTHEXBYTE
CALL FV_PROBE ; CHECK FOR HW PRESENCE
JR Z,FV_INIT1 ; CONTINUE IF HW PRESENT
;
; HARDWARE NOT PRESENT
PRTS(" NOT PRESENT$")
OR $FF ; SIGNAL FAILURE
RET
;
FV_INIT1:
; RECORD DRIVER ACTIVE
OR $FF
LD (FV_ACTIVE),A
; DISPLAY CONSOLE DIMENSIONS
LD A,FV_COLS
CALL PC_SPACE
CALL PRTDECB
LD A,'X'
CALL COUT
LD A,FV_ROWS
CALL PRTDECB
PRTS(" TEXT$")
; HARDWARE INITIALIZATION
CALL FV_CRTINIT ; SETUP THE FPGA VGA CHIP REGISTERS
CALL FV_VDAINI ; INITIALIZE
;CALL KBD_INIT ; INITIALIZE KEYBOARD DRIVER
; ADD OURSELVES TO VDA DISPATCH TABLE
LD BC,FV_FNTBL ; BC := FUNCTION TABLE ADDRESS
LD DE,FV_IDAT ; DE := FPGA VGA INSTANCE DATA PTR
CALL VDA_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
; INITIALIZE EMULATION
LD C,A ; C := ASSIGNED VIDEO DEVICE NUM
LD DE,FV_FNTBL ; DE := FUNCTION TABLE ADDRESS
LD HL,FV_IDAT ; HL := FPGA VGA INSTANCE DATA PTR
CALL TERM_ATTACH ; DO IT
XOR A ; SIGNAL SUCCESS
RET
;
;======================================================================
; FPGA VGA DRIVER - VIDEO DISPLAY ADAPTER (VDA) FUNCTIONS
;======================================================================
;
FV_FNTBL:
.DW FV_VDAINI
.DW FV_VDAQRY
.DW FV_VDARES
.DW FV_VDADEV
.DW FV_VDASCS
.DW FV_VDASCP
.DW FV_VDASAT
.DW FV_VDASCO
.DW FV_VDAWRC
.DW FV_VDAFIL
.DW FV_VDACPY
.DW FV_VDASCR
.DW FV_STAT
.DW FV_FLUSH
.DW FV_READ
.DW FV_VDARDC
#IF (($ - FV_FNTBL) != (VDA_FNCNT * 2))
.ECHO "*** INVALID FV FUNCTION TABLE ***\n"
!!!!!
#ENDIF
FV_VDAINI:
; RESET VDA
CALL FV_VDARES ; RESET VDA
LD HL,0 ; ZERO
LD (FV_POS),HL ; ... TO POSITION
LD A,' ' ; BLANK THE SCREEN
LD DE,FV_ROWS*FV_COLS ; FILL ENTIRE BUFFER
CALL FV_FILL ; DO IT
LD DE,0 ; ROW = 0, COL = 0
CALL FV_XY ; SEND CURSOR TO TOP LEFT
CALL FV_SHOWCUR ; NOW SHOW THE CURSOR
XOR A ; SIGNAL SUCCESS
RET
FV_VDAQRY:
LD C,$00 ; MODE ZERO IS ALL WE KNOW
LD D,FV_ROWS ; ROWS
LD E,FV_COLS ; COLS
LD HL,0 ; EXTRACTION OF CURRENT BITMAP DATA NOT SUPPORTED
XOR A ; SIGNAL SUCCESS
RET
FV_VDARES:
CALL FV_CRTINIT
XOR A ; SIGNAL SUCCESS
RET
FV_VDADEV:
LD D,VDADEV_FV ; D := DEVICE TYPE
LD E,0 ; E := PHYSICAL UNIT IS ALWAYS ZERO
LD H,0 ; H := 0, DRIVER HAS NO MODES
LD L,FV_BASE ; L := BASE I/O ADDRESS
XOR A ; SIGNAL SUCCESS
RET
FV_VDASCS:
SYSCHKERR(ERR_NOTIMPL) ; NOT IMPLEMENTED (YET)
RET
FV_VDASCP:
CALL FV_XY ; SET CURSOR POSITION
XOR A ; SIGNAL SUCCESS
RET
FV_VDASAT:
; ATTRIBUTES NOT SUPPORTED BY HARDWARE
XOR A
RET
FV_VDASCO:
; CHARACTER COLOR NOT SUPPORT BY HARDWARE
XOR A ; SIGNAL SUCCESS
RET ; DONE
FV_VDAWRC:
LD A,E ; CHARACTER TO WRITE GOES IN A
CALL FV_PUTCHAR ; PUT IT ON THE SCREEN
XOR A ; SIGNAL SUCCESS
RET
FV_VDAFIL:
LD A,E ; FILL CHARACTER GOES IN A
EX DE,HL ; FILL LENGTH GOES IN DE
CALL FV_FILL ; DO THE FILL
XOR A ; SIGNAL SUCCESS
RET
FV_VDACPY:
; LENGTH IN HL, SOURCE ROW/COL IN DE, DEST IS FV_POS
; BLKCPY USES: HL=SOURCE, DE=DEST, BC=COUNT
PUSH HL ; SAVE LENGTH
CALL FV_XY2IDX ; ROW/COL IN DE -> SOURCE ADR IN HL
POP BC ; RECOVER LENGTH IN BC
LD DE,(FV_POS) ; PUT DEST IN DE
JP FV_BLKCPY ; DO A BLOCK COPY
FV_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,FV_VDASCR1 ; E IS NEGATIVE, REVERSE SCROLL
CALL FV_SCROLL ; SCROLL FORWARD ONE LINE
POP DE ; RECOVER E
DEC E ; DECREMENT IT
JR FV_VDASCR ; LOOP
FV_VDASCR1:
CALL FV_RSCROLL ; SCROLL REVERSE ONE LINE
POP DE ; RECOVER E
INC E ; INCREMENT IT
JR FV_VDASCR ; LOOP
FV_STAT:
IN A,(FV_KBDST) ; GET STATUS
AND $01 ; ISOLATE DATA WAITING BIT
JP Z,CIO_IDLE ; NO DATA, EXIT VIA IDLE PROCESS
RET
FV_FLUSH:
XOR A ; SIGNAL SUCCESS
RET
FV_READ:
CALL FV_STAT ; GET STATUS
JR Z,FV_READ ; LOOP TILL DATA READY
IN A,(FV_KBDDATA) ; GET BYTE
LD E,A ; PUT IN E FOR RETURN
XOR A ; SIGNAL SUCCESS
RET ; DONE
;----------------------------------------------------------------------
; READ VALUE AT CURRENT VDU BUFFER POSITION
; RETURN E = CHARACTER, B = COLOUR, C = ATTRIBUTES
;----------------------------------------------------------------------
FV_VDARDC:
CALL FV_GETCHAR ; GET THE CHARACTER AT CUR CUR POS
LD E,A ; PUT IN E
LD BC,0 ; COLOR AND ATTR NOT SUPPORTED
XOR A ; SIGNAL SUCCESS
RET
;
;======================================================================
; FPGA VGA DRIVER - PRIVATE DRIVER FUNCTIONS
;======================================================================
;
;
;----------------------------------------------------------------------
; PROBE FOR FPGA VGA HARDWARE
;----------------------------------------------------------------------
;
; ON RETURN, ZF SET INDICATES HARDWARE FOUND
;
FV_PROBE:
XOR A ; ASSUME H/W EXISTS
RET
;
;----------------------------------------------------------------------
; CRTC DISPLAY CONTROLLER CHIP INITIALIZATION
;----------------------------------------------------------------------
;
FV_CRTINIT:
LD A,%11001111 ; WHITE ON BLACK, CURSOR ON, ENABLE OUTPUT
OUT (FV_CTL),A ; WRITE TO CONTROL PORT
XOR A ; ZERO ACCUM
RET ; DONE
;
;----------------------------------------------------------------------
; SET CURSOR POSITION TO ROW IN D AND COLUMN IN E
;----------------------------------------------------------------------
;
FV_XY:
CALL FV_HIDECUR ; HIDE THE CURSOR
PUSH DE ; SAVE NEW POSITION FOR NOW
CALL FV_XY2IDX ; CONVERT ROW/COL TO BUF IDX
LD (FV_POS),HL ; SAVE THE RESULT (DISPLAY POSITION)
POP DE ; RECOVER INCOMING ROW/COL
LD A,D ; GET ROW
OUT (FV_CROW),A ; SET ROW REGISTER
LD A,E ; GET COL
INC A ; 1..79,0 (WHY???)
CP 80 ; COL 80?
JR NZ, FV_XY1 ; SKIP IF NOT
XOR A ; ELSE MAKE IT ZERO!
FV_XY1:
OUT (FV_CCOL),A ; SET COL REGISTER
JP FV_SHOWCUR ; SHOW THE CURSOR AND EXIT
;
;----------------------------------------------------------------------
; CONVERT XY COORDINATES IN DE INTO LINEAR INDEX IN HL
; D=ROW, E=COL
;----------------------------------------------------------------------
;
FV_XY2IDX:
LD A,E ; SAVE COLUMN NUMBER IN A
LD H,D ; SET H TO ROW NUMBER
LD E,FV_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
RET ; RETURN
;
;----------------------------------------------------------------------
; SHOW OR HIDE CURSOR
;----------------------------------------------------------------------
;
FV_SHOWCUR:
LD A,%11001111 ; CONTROL PORT VALUE
;;;LD A,%11111111 ; CONTROL PORT VALUE
OUT (FV_CTL),A ; SET REGISTER
XOR A ; SIGNAL SUCCESS
RET ; DONE
;
FV_HIDECUR:
LD A,%11001111 ; CONTROL PORT VALUE
;;;LD A,%11111111 ; CONTROL PORT VALUE
OUT (FV_CTL),A ; SET REGISTER
XOR A ; SIGNAL SUCCESS
RET ; DONE
;
;----------------------------------------------------------------------
; (DE)SELECT FRAME BUFFER
;----------------------------------------------------------------------
;
FV_BUFSEL:
PUSH AF
LD A,$01
OUT (FV_BUFCTL),A
POP AF
RET
;
FV_BUFDESEL:
PUSH AF
XOR A
OUT (FV_BUFCTL),A
POP AF
RET
;
;----------------------------------------------------------------------
; WRITE VALUE IN A TO CURRENT VDU BUFFER POSITION, ADVANCE CURSOR
;----------------------------------------------------------------------
;
FV_PUTCHAR:
; WRITE CHAR AT CURRENT CURSOR POSITION.
PUSH AF ; SAVE INCOMING CHAR
CALL FV_HIDECUR ; HIDE CURSOR
CALL FV_BUFSEL ; SELECT FRAME BUFFER
POP AF
LD HL,(FV_POS) ; GET CUR BUF POSITION
LD DE,FV_FBUF ; START OF FRAME BUF
ADD HL,DE ; ADD IT IN
LD (HL),A ; PUT THE CHAR
;
; SET NEW POSITION
LD HL,(FV_POS) ; GET POSITION
INC HL ; BUMP POSITION
LD (FV_POS),HL ; SAVE NEW POSITION
;
; PUT CUROR IN PLACE
LD DE,FV_COLS ; COLS PER LINE
CALL DIV16 ; BC=ROW, HL=COL
LD D,C
LD E,L
CALL FV_XY
CALL FV_BUFDESEL ; DESELECT FRAME BUFFER
JP FV_SHOWCUR ; SHOW IT AND RETURN
;
;----------------------------------------------------------------------
; GET CHAR VALUE TO A FROM CURRENT VDU BUFFER POSITION
;----------------------------------------------------------------------
;
FV_GETCHAR:
XOR A
RET
;
;----------------------------------------------------------------------
; 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
;----------------------------------------------------------------------
;
FV_FILL:
PUSH AF ; SAVE INCOMING FILL CHAR
CALL FV_HIDECUR ; HIDE CURSOR
CALL FV_BUFSEL ; SELECT BUFFER
LD HL,(FV_POS) ; CUR POS TO HL
LD BC,FV_FBUF ; ADR OF FRAME
ADD HL,BC ; ADD IT IN
POP AF
LD C,A ; FILL CHAR TO C
FV_FILL1:
LD A,D ; CHECK FILL
OR E ; ... COUNTER
JR Z,FV_FILL2 ; DONE IF ZERO
LD (HL),C ; FILL ONE CHAR
INC HL ; BUMP BUF PTR
DEC DE ; DEC FILL COUNTER
JR FV_FILL1 ; LOOP
;
FV_FILL2:
CALL FV_BUFDESEL ; DESELECT BUFFER
JP FV_SHOWCUR ; EXIT VIA SHOW CURSOR
;
;----------------------------------------------------------------------
; SCROLL ENTIRE SCREEN FORWARD BY ONE LINE (CURSOR POSITION UNCHANGED)
;----------------------------------------------------------------------
;
FV_SCROLL:
CALL FV_BUFSEL ; SELECT FRAME BUFFER
;
; COPY "UP" ONE LINE
LD HL,FV_FBUF + FV_COLS ; FROM SECOND LINE
LD DE,FV_FBUF ; TO FIRST LINE
LD BC,+(FV_ROWS - 1) * FV_COLS ; ALL BUT ONE LINE
LDIR ; DO IT
;
; FILL LAST LINE OF SCREEN
LD HL,FV_FBUF + ((FV_ROWS - 1) * FV_COLS) ; LAST LINE
LD A,' ' ; FILL CHAR
LD (HL),A ; COPY 1 CHAR
LD DE,FV_FBUF + ((FV_ROWS - 1) * FV_COLS) + 1 ; SECOND POS IN LAST LINE
LD BC,FV_COLS - 1 ; COLS PER LINE - 1
LDIR ; FILL IT
;
CALL FV_BUFDESEL ; DESELECT FRAME BUFFER
RET ; DONE
;
;----------------------------------------------------------------------
; REVERSE SCROLL ENTIRE SCREEN BY ONE LINE (CURSOR POSITION UNCHANGED)
;----------------------------------------------------------------------
;
FV_RSCROLL:
CALL FV_BUFSEL ; SELECT FRAME BUFFER
;
; COPY "DOWN" ONE LINE
LD HL,FV_FBUF + (FV_COLS * (FV_ROWS - 1)) - 1 ; FROM END OF SECOND TO LAST LINE
LD DE,FV_FBUF + (FV_COLS * FV_ROWS) - 1 ; TO END OF LAST LINE
LD BC,+(FV_ROWS - 1) * FV_COLS ; ALL BUT ONE LINE
LDDR ; DO IT IN REVERSE
;
; FILL FIRST LINE OF SCREEN
LD HL,FV_FBUF ; FIRST LINE
LD A,' ' ; FILL CHAR
LD (HL),A ; COPY 1 CHAR
LD DE,FV_FBUF + 1 ; SECOND POS IN FIRST LINE
LD BC,FV_COLS - 1 ; COLS PER LINE - 1
LDIR ; FILL IT
;
CALL FV_BUFDESEL ; DESELECT FRAME BUFFER
RET ; DONE
;
;----------------------------------------------------------------------
; BLOCK COPY BC BYTES FROM HL TO DE
;----------------------------------------------------------------------
;
FV_BLKCPY:
CALL FV_BUFSEL ; SELECT FRAME BUFFER
PUSH BC ; SAVE LENGTH
LD BC,FV_FBUF ; FRAME BUFFER ADR
ADD HL,BC ; ADD TO SOURCE
EX DE,HL ; EXCHANGE
ADD HL,BC ; ADD TO DEST
EX DE,HL ; EXCHANGE
POP BC ; RECOVER LENGTH
LDIR ; LDIR DOES THE COPY
CALL FV_BUFDESEL ; DESELECT FRAME BUFFER
RET ; DONE
;
;==================================================================================================
; FPGA VGA DRIVER - DATA
;==================================================================================================
;
FV_POS .DW 0 ; CURRENT DISPLAY POSITION
FV_ACTIVE .DB FALSE ; FLAG FOR DRIVER ACTIVE
;
;==================================================================================================
; VGA DRIVER - INSTANCE DATA
;==================================================================================================
;
FV_IDAT:
.DB KBDMODE_FV ; FPGA VGA KEYBOARD CONTROLLER
.DB FV_KBDST
.DB FV_KBDDATA

View File

@@ -12,8 +12,31 @@
; +--10--+ 80
;
;
DEVECHO "H8P: IO=??"
;DEVECHO 0
H8PKEYNONE .EQU $FF ; NONE
H8PKEY0 .EQU $FE
H8PKEY1 .EQU $FC
H8PKEY2 .EQU $FA
H8PKEY3 .EQU $F8
H8PKEY4 .EQU $F6
H8PKEY5 .EQU $F4
H8PKEY6 .EQU $F2
H8PKEY7 .EQU $F0
H8PKEY8 .EQU $EF
H8PKEY9 .EQU $CF
H8PKEYPLUS .EQU $AF ; PLUS
H8PKEYMINUS .EQU $8F ; MINUS
H8PKEYMUL .EQU $6F ; MULTIPLY
H8PKEYDIV .EQU $4F ; DIVIDE
H8PKEYNUM .EQU $2F ; NUMBER
H8PKEYDOT .EQU $0F ; DOT
;
H8P_TICCNT .EQU $FFEA ; TICCNT AT $FFEA IS COPIED DOWN TO $000B FOR HEATH COMPATIBILITY
H8P_SPEED .EQU $FFEC ; SPEED CONTROL VALUE IS STORED HERE
H8P_SPDIO .EQU $30
H8FPIO .EQU $F0
;
DEVECHO "H8P: IO="
DEVECHO H8FPIO
DEVECHO "\n"
;
;__H8P_PREINIT_______________________________________________________________________________________
@@ -24,144 +47,856 @@
; HARDWARE RESET PRIOR TO ROMWBW CONSOLE INITIALIZATION
;
H8P_PREINIT:
LD A,(DSKY_DISPACT) ; DSKY DISPATCHER ALREADY SET?
OR A ; SET FLAGS
RET NZ ; IF ALREADY ACTIVE, ABORT
;
; REGISTER DRIVER WITH HBIOS
LD BC,H8P_DISPATCH
CALL DSKY_SETDISP
LD HL,H8P_INTR
CALL HB_ADDIM1
;
RET
;
;__H8P_INIT__________________________________________________________________________________________
;
; DISPLAY DSKY INFO ON ROMWBW CONSOLE
; DISPLAY H8 FRONT PANEL INFO ON ROMWBW CONSOLE
;____________________________________________________________________________________________________
;
H8P_INIT:
CALL NEWLINE ; FORMATTING
PRTS("H8P:$") ; DRIVER TAG
PRTS("H8FP:$") ; FORMATTING
;
PRTS(" IO=0x$") ; FORMATTING
LD A,H8FPIO ; GET BASE PORT
CALL PRTHEXBYTE ; PRINT BASE PORT
;
RET ; DONE
;
; DSKY DEVICE FUNCTION DISPATCH ENTRY
; A: RESULT (OUT), 0=OK, Z=OK, NZ=ERR
; B: FUNCTION (IN)
; H8 FRONT PANEL INTERRUPT
;
H8P_DISPATCH:
LD A,B ; GET REQUESTED FUNCTION
AND $0F ; ISOLATE SUB-FUNCTION
JP Z,H8P_RESET ; RESET DSKY HARDWARE
DEC A
JP Z,H8P_STAT ; GET KEYPAD STATUS
DEC A
JP Z,H8P_GETKEY ; READ A KEY FROM THE KEYPAD
DEC A
JP Z,H8P_SHOWHEX ; DISPLAY A 32-BIT BINARY VALUE IN HEX
DEC A
JP Z,H8P_SHOWSEG ; DISPLAY SEGMENTS
DEC A
JP Z,H8P_KEYLEDS ; SET KEYPAD LEDS
DEC A
JP Z,H8P_STATLED ; SET STATUS LED
DEC A
JP Z,H8P_BEEP ; BEEP DSKY SPEAKER
DEC A
JP Z,H8P_DEVICE ; DEVICE INFO
SYSCHKERR(ERR_NOFUNC)
H8P_INTR:
LD (H8P_BCVAL),BC
LD (H8P_DEVAL),DE
LD (H8P_HLVAL),HL
LD HL,(H8P_TICCNT) ; 2MS TIC COUNTER
INC HL
LD (H8P_TICCNT),HL
CALL H8P_TIMER ; UP TIMER
CALL H8P_STAT ; CHECK KEYPAD PRESS
CALL H8P_GETSEGIDX ; SEGMENT INDEX IN (C)
CALL H8P_HORN
OR C
OUT (H8FPIO),A ; CLEAR INTERRUPT AND SET LED IDX
LD C,A
LD A,(H8P_FPENA)
OR A
LD A,$FF
CALL NZ,H8P_GETSEGPAT
OUT (H8FPIO+1),A ; SET LED PATTERN
;
CALL H8P_KEYPAD
LD A,(H8P_STTIMER)
INC A
AND $1F ; UPDATE LEDS EVERY 32 TICKS
LD (H8P_STTIMER),A
CALL Z,H8P_HDLSTATE
LD A,(H8P_HBTICK) ; ROMWBW TIMER
INC A
LD (H8P_HBTICK),A
CP 10
RET NZ
CALL HB_TICK
XOR A
LD (H8P_HBTICK),A
INC A ; INTERRUPT HANDLED
RET
;
; RESET DSKY -- CLEAR DISPLAY AND KEYPAD FIFO
; HANDLE FRONT PANEL SPEAKER SOUNDS
;
H8P_RESET:
XOR A ; SIGNAL SUCCESS
H8P_HORN:
LD HL,(H8P_HORNDUR)
LD A,H
OR L
LD A,$D0 ; HORN OFF
RET Z
DEC HL
LD (H8P_HORNDUR),HL
LD A,$50 ; HORN ON
RET
;
; CHECK FOR KEY PRESS, SAVE RAW VALUE, RETURN STATUS
; HANDLE UP-TIME TIMER
;
H8P_TIMER:
LD HL,(H8P_ONESEC)
DEC HL
LD (H8P_ONESEC),HL
LD A,H
OR L
RET NZ
LD HL,(H8P_UPTIME)
INC HL
LD (H8P_UPTIME),HL
LD HL,500
LD (H8P_ONESEC),HL
CALL H8P_TIMER1
LD A,(H8P_STATE)
OR A
CALL Z,H8P_TIMER2
RET
; ADVANCE DIGITS
H8P_TIMER1:
LD C,9
LD HL,H8P_UPTDIG+8
CALL H8P_ADVDIG
RET
; SHOW DIGITS
H8P_TIMER2:
LD DE,H8P_UPTDIG+8
LD HL,H8P_SEGBUF+8
LD C,9
H8P_TIMER3:
PUSH BC
PUSH HL
LD A,C
CP 7
JR Z,H8P_TIMER4
CP 4
JR Z,H8P_TIMER4
JR H8P_TIMER5
H8P_TIMER4:
LD A,$80
JR H8P_TIMER6
H8P_TIMER5:
LD HL,H8P_DIGMAP
LD A,(DE)
LD C,A
LD B,0
ADD HL,BC
LD A,(HL)
H8P_TIMER6:
POP HL
LD (HL),A
DEC HL
DEC DE
POP BC
DEC C
JR NZ,H8P_TIMER3
RET
H8P_ADVDIG:
LD A,(HL) ; 000.000.00X
INC A
LD (HL),A
CP 10 ; 0-9
RET NZ
LD (HL),0
DEC HL
LD A,(HL) ; 000.000.0X0
INC A
LD (HL),A
CP 6 ; 0-5
RET NZ
LD (HL),0
DEC HL
DEC HL
LD A,(HL) ; 000.00X.000
INC A
LD (HL),A
CP 10 ; 0-9
RET NZ
LD (HL),0
DEC HL
LD A,(HL) ; 000.0X0.000
INC A
LD (HL),A
CP 6 ; 0-5
RET NZ
LD (HL),0
DEC HL
DEC HL
LD A,(HL) ; 00X.000.000
INC A
LD (HL),A
CP 10 ; 0-9
RET NZ
LD (HL),0
DEC HL
LD A,(HL) ; 0X0.000.000
INC A
LD (HL),A
CP 10 ; 0-9
RET NZ
LD (HL),0
DEC HL
LD A,(HL) ; X00.000.000
INC A
LD (HL),A
CP 10 ; 0-9
RET NZ
LD (HL),0
RET
;
; CHECK FOR KEY PRESS, SAVE RAW VALUE
;
H8P_STAT:
XOR A ; ZERO KEYS PENDING (FOR NOW)
IN A,(H8FPIO)
LD (H8P_KEYBUF),A
RET
;
; WAIT FOR A DSKY KEYPRESS AND RETURN
; GET KEY AND RESET KEYBUF
;
H8P_GETKEY:
; PUT KEY VALUE IN REGISTER E
XOR A ; SIGNAL SUCCESS
LD A,(H8P_KEYBUF)
RET
;
; DISPLAY HEX VALUE FROM DE:HL
H8P_KEYPAD:
CALL H8P_GETKEY
LD C,A
LD A,(H8P_LSTKEY)
CP C
RET Z
LD A,C
LD (H8P_LSTKEY),A
CP H8PKEYNONE
RET Z
LD HL,$04
LD (H8P_HORNDUR),HL
CP H8PKEYDIV ; / KEY (ALTER)
JP Z,H8P_KEYPADALT
CP H8PKEYMUL ; * KEY (CANCEL)
JP Z,H8P_KEYPADCAN
CP H8PKEYNUM ; MEM KEY
JP Z,H8P_KEYPADMEM
CP H8PKEYDOT ; REG KEY
JP Z,H8P_KEYPADREG
CP H8PKEY9
JP Z,H8P_KEYPAD9
CP H8PKEY8
JP Z,H8P_KEYPAD8
CP H8PKEY7
JP Z,H8P_KEYPAD7
CP H8PKEY6
JP Z,H8P_KEYPAD6
CP H8PKEY5
JP Z,H8P_KEYPAD5
CP H8PKEY4
JP Z,H8P_KEYPAD4
CP H8PKEY3
JP Z,H8P_KEYPAD3
CP H8PKEY2
JP Z,H8P_KEYPAD2
CP H8PKEY1
JP Z,H8P_KEYPAD1
CP H8PKEY0
JP Z,H8P_KEYPAD0
CP H8PKEYPLUS
JP Z,H8P_KEYPADPLUS
CP H8PKEYMINUS
JP Z,H8P_KEYPADMINUS
RET
; RESET TIMER
H8P_KEYPADALT:
LD A,(H8P_FPENA)
OR A
RET Z
LD A,(H8P_STATE)
OR A
RET NZ
XOR A
LD C,9
LD HL,H8P_UPTDIG
H8P_KEYPADALTL:
LD (HL),A
INC HL
DEC C
JR NZ,H8P_KEYPADALTL
RET
; ENABLE FRONT PANEL DISPLAY
H8P_KEYPADCAN:
LD A,(H8P_FPENA)
CPL
LD (H8P_FPENA),A
RET
; SET MEM STATE
H8P_KEYPADMEM:
LD A,2
LD (H8P_STATE),A
LD (H8P_MEMENTER),A
XOR A
LD (H8P_MEMADRIDX),A
CALL H8P_UPDMEMLOC
RET
; SET REG STATE
H8P_KEYPADREG:
LD A,1
LD (H8P_STATE),A
XOR A
LD (H8P_MEMENTER),A
RET
; NOTHING
H8P_KEYPAD9:
; RET
; TIMER
H8P_KEYPAD8:
LD A,(H8P_STATE)
CP 2
RET Z
LD A,0
LD (H8P_STATE),A
RET
; SPEED CONTROL
H8P_KEYPAD7:
LD A,(H8P_STATE)
CP 2 ; MEM MODE
LD A,7
JP Z,H8P_KEYPADDIG
LD A,3
LD (H8P_STATE),A
RET
; PC (OUT)
H8P_KEYPAD6:
LD A,(H8P_STATE)
CP 2 ; MEM MODE
LD A,6
JP Z,H8P_KEYPADDIG
LD A,5
LD (H8P_REGNUM),A
RET
; HL (IN)
H8P_KEYPAD5:
LD A,(H8P_STATE)
CP 2 ; MEM MODE
LD A,5
JP Z,H8P_KEYPADDIG
LD A,3
LD (H8P_REGNUM),A
RET
; DE
H8P_KEYPAD4:
LD A,(H8P_STATE)
CP 2 ; MEM MODE
LD A,4
JP Z,H8P_KEYPADDIG
LD A,2
LD (H8P_REGNUM),A
RET
; BC
H8P_KEYPAD3:
LD A,(H8P_STATE)
CP 2 ; MEM MODE
LD A,3
JP Z,H8P_KEYPADDIG
LD A,1
LD (H8P_REGNUM),A
RET
; AF
H8P_KEYPAD2:
LD A,(H8P_STATE)
CP 2 ; MEM MODE
LD A,2
JP Z,H8P_KEYPADDIG
LD A,0
LD (H8P_REGNUM),A
RET
; SP
H8P_KEYPAD1:
LD A,(H8P_STATE)
CP 2 ; MEM MODE
LD A,1
JP Z,H8P_KEYPADDIG
LD A,4
LD (H8P_REGNUM),A
RET
; NOTHING
H8P_KEYPAD0:
LD A,(H8P_STATE)
CP 2 ; MEM MODE
JP NZ,H8P_KEYPAD8
LD A,0
;
H8P_SHOWHEX:
LD BC,DSKY_HEXBUF ; POINT TO HEX BUFFER
CALL ST32 ; STORE 32-BIT BINARY THERE
LD HL,DSKY_HEXBUF ; FROM: BINARY VALUE (HL)
LD DE,DSKY_BUF ; TO: SEGMENT BUFFER (DE)
CALL DSKY_BIN2SEG ; CONVERT
LD HL,DSKY_BUF ; POINT TO SEGMENT BUFFER
; AND FALL THRU TO DISPLAY IT
;
; DISPLAY BYTE VALUES POINTED TO BY DE. THE INCOMING BYTES ARE IN
; THE STANDARD ROMWBW SEGMENT ENCODING AND MUST BE TRANSLATED TO THE
; HEATH ENCODING (SEE ICM.ASM FOR EXAMPLE):
;
;
; From: To:
; +--01--+ +--02--+
; 20 02 40 04
; +--40--+ +--01--+
; 10 04 20 08
; +--08--+ 80 +--10--+ 80
;
H8P_SHOWSEG:
XOR A ; SIGNAL SUCCESS
H8P_KEYPADDIG:
LD C,A
LD A,(H8P_MEMENTER)
OR A
JR Z,H8P_KEYPADDIG1
LD A,(H8P_MEMADRIDX)
OR A
CALL Z,H8P_SETDIG0
DEC A
CALL Z,H8P_SETDIG1
DEC A
CALL Z,H8P_SETDIG2
DEC A
CALL Z,H8P_SETDIG3
DEC A
CALL Z,H8P_SETDIG4
DEC A
CALL Z,H8P_SETDIG5
CALL H8P_UPDMEMLOC
; NEXT MEMORY ADR INDEX
LD A,(H8P_MEMADRIDX)
INC A
LD (H8P_MEMADRIDX),A
CP 6
RET NZ
XOR A
LD (H8P_MEMADRIDX),A
RET
; CHECK FOR IN/OUT TO PORT
H8P_KEYPADDIG1:
LD A,C
CP 5 ; IN PORT
JR Z,H8P_KEYPADINP
CP 6 ; OUT PORT
JR Z,H8P_KEYPADOUT
RET
H8P_KEYPADINP:
LD BC,(H8P_MEMLOC)
IN A,(C)
LD B,A
LD (H8P_MEMLOC),BC
JP H8P_UPDMEMLOC
H8P_KEYPADOUT:
LD BC,(H8P_MEMLOC)
LD A,B
OUT (C),A
RET
H8P_UPDMEMLOC:
LD BC,H8P_MEMLOC
LD HL,H8P_SEGBUF
CALL H8P_FILLOCT
RET
; C=VAL
H8P_SETDIG0:
LD HL,(H8P_MEMLOC)
LD B,H
CALL H8P_SETOCTH
LD H,A
LD (H8P_MEMLOC),HL
LD A,$FF
RET
H8P_SETDIG1:
LD HL,(H8P_MEMLOC)
LD B,H
CALL H8P_SETOCTM
LD H,A
LD (H8P_MEMLOC),HL
LD A,$FF
RET
H8P_SETDIG2:
LD HL,(H8P_MEMLOC)
LD B,H
CALL H8P_SETOCTL
LD H,A
LD (H8P_MEMLOC),HL
LD A,$FF
RET
H8P_SETDIG3:
LD HL,(H8P_MEMLOC)
LD B,L
CALL H8P_SETOCTH
LD L,A
LD (H8P_MEMLOC),HL
LD A,$FF
RET
H8P_SETDIG4:
LD HL,(H8P_MEMLOC)
LD B,L
CALL H8P_SETOCTM
LD L,A
LD (H8P_MEMLOC),HL
LD A,$FF
RET
H8P_SETDIG5:
LD HL,(H8P_MEMLOC)
LD B,L
CALL H8P_SETOCTL
LD L,A
LD (H8P_MEMLOC),HL
XOR A
LD (H8P_MEMENTER),A
LD A,$FF
RET
H8P_SETDIGD:
LD A,(H8P_MEMVAL)
PUSH AF
CALL H8P_GETOCTH
LD (H8P_SEGBUF+6),A
POP AF
PUSH AF
CALL H8P_GETOCTM
LD (H8P_SEGBUF+7),A
POP AF
CALL H8P_GETOCTL
LD (H8P_SEGBUF+8),A
RET
; MEM/SPEED INCREASE
H8P_KEYPADPLUS:
LD A,(H8P_STATE)
CP 3
JR Z,H8P_KEYPADPLUS3
CP 2
RET NZ
LD HL,(H8P_MEMLOC)
INC HL
LD (H8P_MEMLOC),HL
JP H8P_UPDMEMLOC
H8P_KEYPADPLUS3:
LD A,(H8P_SPEED)
OR A
RET Z
DEC A
LD (H8P_SPEED),A
OUT (H8P_SPDIO),A
RET
; MEM/SPEED DECREASE
H8P_KEYPADMINUS:
LD A,(H8P_STATE)
CP 3
JR Z,H8P_KEYPADMINUS3
CP 2
RET NZ
LD HL,(H8P_MEMLOC)
DEC HL
LD (H8P_MEMLOC),HL
JP H8P_UPDMEMLOC
H8P_KEYPADMINUS3:
LD A,(H8P_SPEED)
CP 3
RET Z
INC A
LD (H8P_SPEED),A
OUT (H8P_SPDIO),A
RET
;
; UPDATE KEY LEDS (H8 HAS NONE)
; HANDLE FRONT PANEL STATE
;
H8P_KEYLEDS:
XOR A ; SIGNAL SUCCESS
H8P_HDLSTATE:
LD A,(H8P_STATE)
OR A
RET Z ; UP-TIME TIMER
DEC A
JP Z,H8P_HDLREG ; SHOWING REGISTER VALUES
DEC A
JP Z,H8P_HDLMEM ; SHOWING MEMORY LOCATION VALUE
DEC A
JP Z,H8P_HDLSPD ; MODIFYING SPEED
RET
;
; SET STATUS LEDS BASED ON BITS IN E
;
H8P_STATLED:
XOR A ; SIGNAL SUCCESS
H8P_HDLREG:
LD A,(H8P_REGNUM)
LD HL,H8P_REGAF
OR A
JP Z,H8P_HDLREGAF
DEC A
LD HL,H8P_REGBC
JP Z,H8P_HDLREGBC
DEC A
LD HL,H8P_REGDE
JP Z,H8P_HDLREGDE
DEC A
LD HL,H8P_REGHL
JP Z,H8P_HDLREGHL
DEC A
LD HL,H8P_REGSP
JP Z,H8P_HDLREGSP
DEC A
LD HL,H8P_REGPC
JP Z,H8P_HDLREGPC
RET
H8P_HDLREGAF:
CALL H8P_UPDLEDS
LD HL,HBX_INTSTK
DEC HL
LD A,(HL) ; (HL)=AF LOW
LD (H8P_AFVAL),A
DEC HL
LD A,(HL) ; (HL)=AF HIGH
LD (H8P_AFVAL+1),A
LD BC,H8P_AFVAL
LD HL,H8P_SEGBUF
JP H8P_FILLOCT
H8P_HDLREGBC:
LD BC,H8P_BCVAL
CALL H8P_FILLOCT
JP H8P_UPDLEDS
H8P_HDLREGDE:
LD BC,H8P_DEVAL
CALL H8P_FILLOCT
JP H8P_UPDLEDS
H8P_HDLREGHL:
CALL H8P_UPDLEDS
LD HL,(HBX_INT_SP)
LD A,(HL)
LD (H8P_HLVAL),A
INC HL
LD A,(HL)
LD (H8P_HLVAL+1),A
LD BC,H8P_HLVAL
LD HL,H8P_SEGBUF
JP H8P_FILLOCT
H8P_HDLREGSP:
LD BC,HBX_INT_SP
CALL H8P_FILLOCT
JP H8P_UPDLEDS
H8P_HDLREGPC:
CALL H8P_UPDLEDS
LD HL,(HBX_INT_SP) ; (HL)=HL LOW
INC HL ; (HL)=HL HIGH
INC HL ; (HL)=PC LOW
LD A,(HL)
LD (H8P_PCVAL),A
INC HL ; (HL)=PC HIGH
LD A,(HL)
LD (H8P_PCVAL+1),A
LD BC,H8P_PCVAL
LD HL,H8P_SEGBUF
JP H8P_FILLOCT
H8P_HDLMEM:
CALL H8P_SETDIGD
RET
H8P_HDLSPD:
LD HL,H8P_SPD16
LD A,(H8P_SPEED)
OR A
JR Z,H8P_UPDLEDS
LD HL,H8P_SPD08
DEC A
JR Z,H8P_UPDLEDS
LD HL,H8P_SPD04
DEC A
JR Z,H8P_UPDLEDS
LD HL,H8P_SPD02
H8P_UPDLEDS:
LD C,9
LD DE,H8P_SEGBUF
H8P_UPDLEDS1:
LD A,(HL)
INC HL
LD (DE),A
INC DE
DEC C
JR NZ,H8P_UPDLEDS1
RET
;
; BEEP THE SPEAKER ON THE H8P
H8P_GETSEGIDX:
LD A,(H8P_SEGIDX)
DEC A
LD (H8P_SEGIDX),A
LD C,A
RET NZ
LD A,9
LD (H8P_SEGIDX),A
LD C,A
RET
;
; A = SEG IDX
;
; +--02--+
; 40 04
; +--01--+
; 20 08
; +--10--+ 80
;
H8P_GETSEGPAT:
LD A,C
AND $0F ; IDX=1 THRU 9
DEC A
LD C,A
LD B,0
LD HL,H8P_SEGBUF
ADD HL,BC
LD E,(HL)
LD A,(H8P_MEMENTER)
OR A
JR Z,H8P_GETSEGPATX
LD A,(H8P_MEMADRIDX)
CP C
JR NZ,H8P_GETSEGPATX
LD A,$80
OR E
LD E,A
H8P_GETSEGPATX:
LD A,E
CPL
RET
; BC=MEMLOC, HL=LED BUFFER
H8P_FILLOCT:
PUSH HL
INC BC ; POINT TO HIGH BYTE
LD A,(BC)
CALL H8P_GETOCTH
LD (HL),A
INC HL
LD A,(BC)
CALL H8P_GETOCTM
LD (HL),A
INC HL
LD A,(BC)
CALL H8P_GETOCTL
LD (HL),A
INC HL
DEC BC ; POINT TO LOW BYTE
LD A,(BC)
CALL H8P_GETOCTH
LD (HL),A
INC HL
LD A,(BC)
CALL H8P_GETOCTM
LD (HL),A
INC HL
LD A,(BC)
CALL H8P_GETOCTL
LD (HL),A
POP HL
RET
; HIGH OCTAL BITS
H8P_GETOCTH:
AND $C0
RRA
RRA
RRA
RRA
RRA
RRA
JR H8P_GETOCTX
; MEDIUM OCTAL BITS
H8P_GETOCTM:
AND $38
RRA
RRA
RRA
JR H8P_GETOCTX
; LOW OCTAL BITS
H8P_GETOCTL:
AND $07
H8P_GETOCTX:
PUSH HL
LD E,A
LD D,0
LD HL,H8P_DIGMAP
ADD HL,DE
LD A,(HL) ; VALUE CONVERTED TO LED SEGMENT PATTERN
POP HL
RET
; B=CURVAL, C=NEWVAL
H8P_SETOCTH:
LD A,C
AND $03
RLA
RLA
RLA
RLA
RLA
RLA
LD C,A
LD A,B
AND $3F
OR C
RET
H8P_SETOCTM:
LD A,C
AND $07
RLA
RLA
RLA
LD C,A
LD A,B
AND $C7
OR C
RET
H8P_SETOCTL:
LD A,C
AND $07
LD C,A
LD A,B
AND $F8
OR C
CALL H8P_BEEP
RET
;
H8P_BEEP:
POP BC
XOR A ; SIGNAL SUCCESS
PUSH HL
LD HL,16
LD (H8P_HORNDUR),HL
POP HL
RET
;
; DEVICE INFORMATION
;
H8P_DEVICE:
LD D,DSKYDEV_H8P ; D := DEVICE TYPE
; LD D,DSKYDEV_H8P ; D := DEVICE TYPE
LD E,0 ; E := PHYSICAL DEVICE NUMBER
LD H,0 ; H := MODE
LD L,0 ; L := BASE I/O ADDRESS
LD L,H8FPIO ; L := BASE I/O ADDRESS
XOR A ; SIGNAL SUCCESS
RET
;
;_KEYMAP_TABLE_____________________________________________________________________________________________________________
; DIGITS TO LED PATTERNS
; +--02--+
; 40 04
; +--01--+
; 20 08
; +--10--+ 80
;
H8P_KEYMAP: ; *** NEEDS TO BE UPDATED ***
; POS $00 $01 $02 $03 $04 $05 $06 $07
; KEY [0] [1] [2] [3] [4] [5] [6] [7]
.DB $0D, $04, $0C, $14, $03, $0B, $13, $02
H8P_DIGMAP:
; 0 1 2 3 4 5 6 7
.DB $7E, $0C, $37, $1F, $4D, $5B, $7B, $0E
; 8 9 A B C D E F
.DB $7F, $5F, $6F, $79, $72, $3D, $73, $63
;
; POS $08 $09 $0A $0B $0C $0D $0E $0F
; KEY [8] [9] [A] [B] [C] [D] [E] [F]
.DB $0A, $12, $01, $09, $11, $00, $08, $10
H8P_REGNUM:
.DB 0
H8P_REGAF:
.DB $00, $00, $00, $00, $00, $00, $00, $6F, $63
H8P_REGBC:
.DB $00, $00, $00, $00, $00, $00, $00, $79, $72
H8P_REGDE:
.DB $00, $00, $00, $00, $00, $00, $00, $3D, $73
H8P_REGHL:
.DB $00, $00, $00, $00, $00, $00, $00, $6D, $70
H8P_REGSP:
.DB $00, $00, $00, $00, $00, $00, $00, $5B, $67
H8P_REGPC:
.DB $00, $00, $00, $00, $00, $00, $00, $67, $72
H8P_SPD16:
.DB $00, $00, $00, $00, $0C, $7B, $5B, $67, $3D
H8P_SPD08:
.DB $00, $00, $00, $00, $00, $7F, $5B, $67, $3D
H8P_SPD04:
.DB $00, $00, $00, $00, $00, $4D, $5B, $67, $3D
H8P_SPD02:
.DB $00, $00, $00, $00, $00, $37, $5B, $67, $3D
H8P_MEMADRIDX:
.DB 0
H8P_MEMENTER:
.DB 0
H8P_AFVAL:
.DW 0
H8P_BCVAL:
.DW 0
H8P_DEVAL:
.DW 0
H8P_HLVAL:
.DW 0
H8P_PCVAL:
.DW 0
;
; POS $10 $11 $12 $13 $14 $15 $16 $17
; KEY [FW] [BK] [CL] [EN] [DE] [EX] [GO] [BO]
.DB $05, $15, $1D, $1C, $1B, $1A, $19, $18
; POS $18 $19 $1A $1B
; KEY [F4] [F3] [F2] [F1]
.DB $23, $22, $21, $20
H8P_STATE:
.DB 00
H8P_STTIMER:
.DB 00
H8P_FPENA:
.DB $FF
H8P_SEGIDX:
.DB 09
H8P_HBTICK:
.DB 00
H8P_KEYBUF:
.DB 00
H8P_LSTKEY:
.DB 00
H8P_SEGBUF:
.DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
H8P_HORNDUR:
.DW $0080
H8P_ONESEC:
.DW 500
H8P_UPTIME:
.DW 0
H8P_UPTDIG:
.DB 0,0,0,0,0,0,0,0,0

View File

@@ -67,7 +67,7 @@
;
; MEMORY LAYOUT:
;
;
;
; DESCRIPTION START LENGTH
; ----------------------------- ------- -------
; Page Zero 0x0000 0x0100
@@ -97,7 +97,7 @@
; D4 ~PSG_RES ~PSG_RES ~PSG_RES ROM_A19 ~PSG_RES
; D3 STATUS_LED STATUS_LED VDP_LED PSG_LED ROM_A18 PSG_LED
; D2 VDP_A14 VDP_A14 ROM_A17 VDP_LED
; D1 ~VDP_SYN ~VDP_SYN ROM_A16
; D1 ~VDP_SYN ~VDP_SYN ROM_A16
; D0 ~VDP_RES ~VDP_RES VDP_RES ROM_A15 VDP_RES
;
; PORT SCG:0x9C 0x94 VDP:0x92 PSG:0xA2 0x80 MEDIA:0xA6
@@ -183,7 +183,7 @@ SUPCTS .EQU FALSE ; SUPPRESS CTS DURING HBIOS BOOT
; DUO: LED Port=0x94, bits 1-0, normal, shared w/ RTC port (LEDMODE_RTC)
; S100: LED Port = $0E, bit 2, inverted, dedicated port (LEDMODE_SC)
; NABU: LED Port = $00, bits 5-3, normal, shared w/ control port (LEDMODE_NABU)
;
;
#IF (LEDENABLE)
#IF (LEDMODE == LEDMODE_STD)
#DEFINE DIAG(N) PUSH AF
@@ -1045,6 +1045,22 @@ HBX_PPSP .EQU $ - 2
;
#IF (MEMMGR != MM_Z280)
;
; HEATH FRONT PANEL WORK SPACE (4 BYTES)
;
#IF (H8PENABLE)
H8P_MEMLOC:
.DW 0
H8P_MEMVAL:
.DB 0
H8P_MEMCPY:
LD HL,(H8P_TICCNT)
LD ($000B),HL
LD HL,(H8P_MEMLOC)
LD A,(HL)
LD (H8P_MEMVAL),A
RET
#ENDIF
;
HBX_INTSTKSIZ .EQU $FF00 - $
MEMECHO "HBIOS INT STACK space: "
MEMECHO HBX_INTSTKSIZ
@@ -1061,23 +1077,23 @@ HBX_INTSTK .EQU $
;
; HBIOS INTERRUPT MODE 2 SLOT ASSIGNMENTS (SEE STD.ASM)
;
; # Z80/Z280 Z180 MBC DUO NABU
; --- -------------- -------------- -------------- -------------- --------------
; 0 CTC0A INT1 -+ -+ -+ HCCARCV -+
; 1 CTC0B INT2 | | | HCCASND |
; 2 CTC0C TIM0 | | IM2 | IM2 NABUKB | IM2
; 3 CTC0D TIM1 | | INT | INT VDP | INT
; 4 UART0 DMA0 | Z180 UART0 | VEC UART0 | VEC OPTCRD0 | VEC
; 5 UART1 DMA1 | CPU UART1 | GEN UART1 | GEN OPTCRD1 | GEN
; 6 CSIO | | | OPTCRD2 |
; 7 SIO0 SER0 | -+ -+ OPTCRD3 -+
; 8 SIO1 SER1 -+ SIO0 SIO0
; 9 PIO0A PIO0A SIO1 SIO1
; 10 PIO0B PIO0B PIO0A PIO0A
; 11 PIO1A PIO1A PIO0B PIO0B
; 12 PIO1B PIO1B CTC0A CTC0A
; 13 SIO0 CTC0B CTC0B
; 14 SIO1 CTC0C CTC0C
; # Z80/Z280 Z180 MBC DUO NABU
; --- -------------- -------------- -------------- -------------- --------------
; 0 CTC0A INT1 -+ -+ -+ HCCARCV -+
; 1 CTC0B INT2 | | | HCCASND |
; 2 CTC0C TIM0 | | IM2 | IM2 NABUKB | IM2
; 3 CTC0D TIM1 | | INT | INT VDP | INT
; 4 UART0 DMA0 | Z180 UART0 | VEC UART0 | VEC OPTCRD0 | VEC
; 5 UART1 DMA1 | CPU UART1 | GEN UART1 | GEN OPTCRD1 | GEN
; 6 CSIO | | | OPTCRD2 |
; 7 SIO0 SER0 | -+ -+ OPTCRD3 -+
; 8 SIO1 SER1 -+ SIO0 SIO0
; 9 PIO0A PIO0A SIO1 SIO1
; 10 PIO0B PIO0B PIO0A PIO0A
; 11 PIO1A PIO1A PIO0B PIO0B
; 12 PIO1B PIO1B CTC0A CTC0A
; 13 SIO0 CTC0B CTC0B
; 14 SIO1 CTC0C CTC0C
; 15 CTC0D CTC0D
;
; IVT MUST START AT PAGE BOUNDARY
@@ -1188,6 +1204,10 @@ HBX_RETI:
;
LD A,(HB_CURBNK) ; GET PRE-INT BANK
CALL HBX_BNKSEL ; SELECT IT
;
#IF (H8PENABLE)
CALL H8P_MEMCPY
#ENDIF
;
; RESTORE STATE
POP IY ; RESTORE IY
@@ -1457,7 +1477,7 @@ BOOTWAIT:
LD C,Z280_MSR ; MASTER STATUS REGISTER
LD HL,$0000 ; SYS MODE, NO INTERRUPTS
LDCTL (C),HL ; DO IT
;
;
; SET MAXIMUM I/O WAIT STATES FOR NOW
LD C,Z280_BTCR ; BUS TIMING AND CONTROL REGISTER
LD HL,$0033 ; 3 I/O WAIT STATES ADDED
@@ -1860,23 +1880,23 @@ S100MON_SKIP:
; MBC BANK SELECT MASK SETUP
;--------------------------------------------------------------------------------------------------
;
; THE MBC RAM BOARD CAN CONTAIN 1 OR 2 RAM CHIPS. THE COMMON RAM BANK IS
; THE MBC RAM BOARD CAN CONTAIN 1 OR 2 RAM CHIPS. THE COMMON RAM BANK IS
; FIXED BY HARDWARE TO BE THE TOP 32K OF THE *FIRST* RAM CHIP. WHEN THERE
; ARE 2 RAM CHIPS INSTALLED, THE HARDWARE WILL THUS PLACE THE COMMON RAM IN
; THE MIDDLE OF PHYSICAL RAM. HBIOS REQUIRES THAT THE COMMON RAM BANK BE
; MAPPED TO THE VERY LAST 32K OF PHYSICAL RAM. THIS IS REQUIRED SO THAT
; THE RAM DISK BANKS CAN BE SEQUENTIAL. TO WORK AROUND THIS, WE USE AN
; XOR MASK THAT IS APPLIED DURING BANK SELECT. THIS MASK WILL FLIP THE
; HIGH ORDER BANK SELECT BIT (WHEN 2 RAM CHIPS ARE USED) SO THAT THE TWO
; RAM CHIPS WIND UP "REVERSED" AND THE FIXED COMMON BANK WINDS UP AT THE
; ARE 2 RAM CHIPS INSTALLED, THE HARDWARE WILL THUS PLACE THE COMMON RAM IN
; THE MIDDLE OF PHYSICAL RAM. HBIOS REQUIRES THAT THE COMMON RAM BANK BE
; MAPPED TO THE VERY LAST 32K OF PHYSICAL RAM. THIS IS REQUIRED SO THAT
; THE RAM DISK BANKS CAN BE SEQUENTIAL. TO WORK AROUND THIS, WE USE AN
; XOR MASK THAT IS APPLIED DURING BANK SELECT. THIS MASK WILL FLIP THE
; HIGH ORDER BANK SELECT BIT (WHEN 2 RAM CHIPS ARE USED) SO THAT THE TWO
; RAM CHIPS WIND UP "REVERSED" AND THE FIXED COMMON BANK WINDS UP AT THE
; END OF THE RAM BANKS. THE MASK IS SETUP HERE BASED ON THE NUMBER OF RAM
; CHIPS AND THEIR SIZE. NOTE THAT THE NUMBER OF RAM CHIPS IS INFERRED BY
; THE TOTAL RAM SIZE. A SINGLE CHIP WILL BE EITHER 128K OR 512K. IF THE
; TOTAL RAM SIZE OF THE SYSTEM IS 256K OR 1M, THEN THERE MUST BE TWO CH
; IPS. THE RESULTING BANK SELECT MASK IS INSERTED INTO THE MBC BANK
; IPS. THE RESULTING BANK SELECT MASK IS INSERTED INTO THE MBC BANK
; SELECT ROUTINE.
;
#IF (MEMMGR == MM_MBC)
;
#IF (MEMMGR == MM_MBC)
;
; ALTHOUGH DYNAMIC SYSTEM RAM SIZING IS NOT POSSIBLE FOR MBC
; (SEE COMMENTS ABOVE), WE ARE STILL DOING THE MASK SETUP
@@ -1995,7 +2015,7 @@ CB_IDS: LD (HL),A ; POPULATE CB_BIDCOM
;
LD A,(CB_BIDUSR)
LD (HB_SRCBNK),A ; POPULATE HB_SRCBNK
LD (HB_DSTBNK),A ; POPULATE HB_DSTBNK
LD (HB_DSTBNK),A ; POPULATE HB_DSTBNK
;
LD A,BID_RAM0 ; POPULATE CB_BIDRAMD0 ; START RAMBANK
LD (HL),A
@@ -2128,6 +2148,11 @@ HB_START2:
LD (RTC_DISPACT),A ; RTC DEVICE
LD (DSKY_DISPACT),A ; DSKY DEVICE
;
; INITIALIZE SOME HCB ENTRIES
;
OR $FF ; $FF TO ACCUM
LD (CB_CRTDEV),A ; RESET CRT DEVICE
;
; CLEAR INTERRUPT VECTOR TABLES
;
; THIS IS REALLY ONLY REQUIRED ON A RESTART, BUT IT DOESN'T HURT TO
@@ -2143,12 +2168,12 @@ HB_START2:
LD (HB_IM1CNT),A ; ... TO CLEAR IM1 VECTOR CNT
LD HL,HB_IM1INT ; POINTER TO START OF IM1 IVT
LD (HB_IM1PTR),HL ; ... TO CLEAR IM1 PTR
LD HL,HB_TICK
LD (VEC_TICK + 1),HL
LD HL,HB_SECOND
LD (VEC_SECOND + 1),HL
JR HB_CLRIVT_Z ; DONE, JUMP OVER SUBROUTINE
;
HB_CLRIVT:
@@ -2262,9 +2287,6 @@ HB_CPU1:
#IF (PKDENABLE)
CALL PKD_PREINIT
#ENDIF
#IF (H8PENABLE)
CALL H8P_PREINIT
#ENDIF
;
; ANNOUNCE OURSELVES ON DSKY
LD HL,MSG_HBVER + 5
@@ -2282,6 +2304,12 @@ HB_CPU1:
LD B,BF_DSKYSHOWSEG
CALL DSKY_DISPATCH
#ENDIF
#IF (LCDENABLE)
CALL LCD_PREINIT
#ENDIF
#IF (H8PENABLE)
CALL H8P_PREINIT
#ENDIF
;
FPLEDS(DIAG_05)
;
@@ -2358,7 +2386,7 @@ HB_CPU2:
; ADJUST HL TO REFLECT HALF SPEED OPERATION
SRL H ; ADJUST HL ASSUMING
RR L ; HALF SPEED OPERATION
;
;
#IF (Z180_CLKDIV >= 1)
LD A,(HB_CPUTYPE) ; GET CPU TYPE
CP 2 ; Z8S180 REV K OR BETTER?
@@ -3301,11 +3329,27 @@ HB_WDZ:
#ENDIF
;
#IF (PLATFORM == PLT_FZ80)
; IOBYTE: XXXXXVVC
; 00- FORCE ONBOARD VGA/PS2 KBD (FV)
; --1 FORCE PROPELLER CONSOLE (SCON)
; 110 NORMAL USB SERIAL BOOT
;
; WE ASSUME THAT THE ONBOARD VGA (FV) IS ALWAYS DETECTED AND
; WILL BE THE CURRENT CRTDEV. SCON IS ASSUMED TO BE THE
; DEVICE AT CRTDEV + 1. THESE ARE REASONABLE ASSUMPTIONS
; UNLESS THE DRIVER DETECTION OR DRIVER ORDER IS CHANGED.
IN A,($36) ; GET IO BYTE
AND %00000001 ; ISOLATE CONSOLE BIT
JR Z,INITSYS3 ; NOT SET, BYPASS CONSOLE SWITCH
AND %00000110 ; ISOLATE BITS
JR Z,HB_CRTACT ; FORCE ONBOARD CRT
IN A,($36) ; GET IO BYTE
AND %00000001 ; ISOLATE BIT
JR Z,INITSYS3 ; NORMAL USB SERIAL BOOT
LD A,(CB_CRTDEV) ; GET CRT DEV
INC A ; SWITCH FROM FV -> SCON
LD (CB_CRTDEV),A ; SAVE IT AND DO CONSOLE SWITCH
#ENDIF
;
HB_CRTACT:
LD A,(CB_CRTDEV) ; GET CRT DISPLAY DEVICE
LD (HB_NEWCON),A ; AND QUEUE TO SWITCH
;
@@ -3367,7 +3411,7 @@ HB_FP2:
LD B,A ; MOVE TO B
LD A,SECCON ; GET SEC CONSOLE SETTING
CP $FF ; $FF MEANS USE INCREMENT
JR NZ,HB_FP3 ; BYPASS IF NOT $FF
JR NZ,HB_FP3 ; BYPASS IF NOT $FF
;
; INCREMENT CONSOLE UNIT
LD A,(HB_NEWCON) ; GET NEW CONSOLE UNIT
@@ -3679,9 +3723,12 @@ HB_INITTBL:
#IF (PKDENABLE)
.DW PKD_INIT
#ENDIF
#IF (H8PENABLE)
#ENDIF
#IF (LCDENABLE)
.DW LCD_INIT
#ENDIF
#IF (H8PENABLE)
.DW H8P_INIT
#ENDIF
#ENDIF
#IF (PLATFORM == PLT_NABU)
.DW NABU_INIT
@@ -3776,6 +3823,18 @@ HB_INITTBL:
#IF (VRCENABLE)
.DW VRC_INIT
#ENDIF
#IF (FVENABLE)
.DW FV_INIT
#ENDIF
#IF (PRPENABLE)
.DW PRP_INIT
#ENDIF
#IF (PPPENABLE)
.DW PPP_INIT
#ENDIF
#IF (SCONENABLE)
.DW SCON_INIT
#ENDIF
#IF (DMAENABLE)
.DW DMA_INIT
#ENDIF
@@ -3809,15 +3868,6 @@ HB_INITTBL:
#IF (SYQENABLE)
.DW SYQ_INIT
#ENDIF
#IF (PRPENABLE)
.DW PRP_INIT
#ENDIF
#IF (PPPENABLE)
.DW PPP_INIT
#ENDIF
#IF (SCONENABLE)
.DW SCON_INIT
#ENDIF
#IF (CHENABLE)
.DW CH_INIT
#ENDIF
@@ -3951,6 +4001,24 @@ CIO_SIZ .EQU CIO_MAX * 4 ; EACH ENTRY IS 4 BYTES
CIO_CNT .DB 0 ; ENTRY COUNT PREFIX
CIO_TBL .FILL CIO_SIZ,0 ; SPACE FOR ENTRIES
;
; CRT TYPE CHAR DEVICES CALL THIS TO REGISTER THAT THEY WANT TO BE THE
; DEFAULT CRT DEVICE. THIS ROUTINE WILL SET CB_CRTDEV WHEN CALLED THE
; FIRST TIME. SUBSEQUENT CALLS ARE IGNORED. THIS ENSURES THAT THE
; *FIRST* CRT DEVICE WINS.
;
CIO_SETCRT:
PUSH AF ; SAVE INCOMING CRT DEV NUM
LD A,(CB_CRTDEV) ; GET CURRENT CRT DEV NUM
INC A ; $FF -> $00
JR NZ,CIO_SETCRT_Z ; IF ALREADY SET, LEAVE IT ALONE
POP AF ; RESTORE AF
LD (CB_CRTDEV),A ; SAVE CRT DEV NUM
RET ; AND DONE
;
CIO_SETCRT_Z:
POP AF ; RESTORE AF
RET ; AND DONE
;
;--------------------------------------------------------------------------------------------------
; DISK I/O DEVICE FUNCTION DISPATCHER
;--------------------------------------------------------------------------------------------------
@@ -4273,10 +4341,15 @@ HB_DSKFUNC .DB 0 ; CURRENT DISK FUNCTION
; HL: ADDRESS OF 32-BIT SECTOR NUMBER (LITTLE-ENDIAN)
; ALL REGISTERS PERSERVED
;
HB_DSKACT:
#IF (LCDENABLE)
#IF (LCDDSKACT)
CALL LCD_DSKACT
#ENDIF
#ENDIF
#IF (DSKYENABLE)
#IF (DSKYDSKACT)
;
HB_DSKACT:
; SAVE EVERYTHING
PUSH AF
PUSH BC
@@ -4321,7 +4394,7 @@ HB_DSKACT2:
POP DE
POP BC
POP AF
RET ; DONE
JR HB_DSKACT_Z ; DONE
;
; THIS IS THE CHS VARIANT OF THE ABOVE. THIS IS USED BY CHS ORIENTED
; DISK DRIVERS (BASICALLY JUST FLOPPY).
@@ -4346,6 +4419,9 @@ HB_DSKACTCHS:
#ENDIF
#ENDIF
;
HB_DSKACT_Z:
RET
;
;--------------------------------------------------------------------------------------------------
; REAL TIME CLOCK DEVICE DISPATCHER
;--------------------------------------------------------------------------------------------------
@@ -6571,7 +6647,7 @@ Z280_PRIVINST:
;;;HB_DI ; DO THE DI
XOR A ; NO INTERRUPTS
LD (HB_MSRSAV),A ; UPDATE SAVED MSR LSB
INC HL ; BUMP PAST IT
JR Z280_PRIVINSTX
;
@@ -7015,7 +7091,7 @@ RS_IMAGE:
RS_START:
LD A,(HB_CURBNK) ; GET CURRENT BANK
PUSH AF ; SAVE IT
LD C,0 ; RUNNING BANK COUNT
LD HL,$7FFF ; BYTE TEST ADDRESS
LD IX,RS_ARY ; ORIG BYTE STORAGE ARRAY PTR
@@ -7047,7 +7123,7 @@ RS_LOOP1:
LD (HL),A
OR A ; ZERO?
JR Z,RS_NEXT ; SKIP STORED VALUE CHECK
; VERIFY ALL STORED VALUES
LD B,C ; INIT LOOP COUNTER
LD E,0 ; INIT BANK ID
@@ -7064,7 +7140,7 @@ RS_LOOP3:
RS_NEXT:
INC C ; ADD 1 TO RAM BANK COUNT
JR RS_LOOP1 ; AND LOOP TILL DONE
;
;
RS_DONE:
LD E,C ; FINAL BANK COUNT TO E
LD A,C
@@ -7180,7 +7256,7 @@ FP_SETLEDS:
#IF (FPLED_INV)
XOR $FF ; INVERT BITS IF NEEDED
#ENDIF
OUT (FPLED_IO),A ; WRITE
OUT (FPLED_IO),A ; WRITE
FP_SETLEDS1:
POP HL ; RESTORE HL
RET ; DONE
@@ -7417,7 +7493,7 @@ PS_PRTDT:
LD A,00001111B
CALL PRTIDXMSK
CALL PS_PAD18 ; PAD TO 18 SPACES
RET
RET
;
; PRINT DISK CAPACITY (UNIT IN C, ATTRIBUTE IN E)
;
@@ -7888,6 +7964,7 @@ PS_VDGDC .TEXT "GDC$"
PS_VDTMS .TEXT "TMS$"
PS_VDVGA .TEXT "VGA$"
PS_VDVRC .TEXT "VRC$"
PS_VDFV .TEXT "FV$"
;
; VIDEO TYPE STRINGS
;
@@ -7935,15 +8012,24 @@ SIZ_PKD .EQU $ - ORG_PKD
MEMECHO SIZ_PKD
MEMECHO " bytes.\n"
#ENDIF
#ENDIF
;
#IF (H8PENABLE)
#IF (LCDENABLE)
ORG_LCD .EQU $
#INCLUDE "lcd.asm"
SIZ_LCD .EQU $ - ORG_LCD
MEMECHO "LCD occupies "
MEMECHO SIZ_LCD
MEMECHO " bytes.\n"
#ENDIF
;
#IF (H8PENABLE)
ORG_H8P .EQU $
#INCLUDE "h8p.asm"
SIZ_H8P .EQU $ - ORG_H8P
MEMECHO "H8P occupies "
MEMECHO SIZ_H8P
MEMECHO " bytes.\n"
#ENDIF
#ENDIF
;
#IF (PLATFORM == PLT_NABU)
@@ -8189,6 +8275,15 @@ SIZ_VRC .EQU $ - ORG_VRC
MEMECHO " bytes.\n"
#ENDIF
;
#IF (FVENABLE)
ORG_FV .EQU $
#INCLUDE "fv.asm"
SIZ_FV .EQU $ - ORG_FV
MEMECHO "FV occupies "
MEMECHO SIZ_FV
MEMECHO " bytes.\n"
#ENDIF
;
#IF (DMAENABLE)
ORG_DMA .EQU $
#INCLUDE "dma.asm"
@@ -8517,7 +8612,7 @@ HB_TICKS .FILL 4,0 ; 32 BIT TICK COUNTER
HB_SECTCK .DB TICKFREQ ; TICK COUNTER FOR FRACTIONAL SECONDS
HB_SECS .FILL 4,0 ; 32 BIT SECONDS COUNTER
;
HB_CPUTYPE .DB 0 ; 0=Z80, 1=80180, 2=SL1960, 3=ASCI BRG
HB_CPUTYPE .DB 0 ; 0=Z80, 1=Z180, 2=Z180-K, 3=Z180-N, 4=Z280
HB_CPUOSC .DW CPUOSC ; ACTUAL CPU HARDWARE OSC FREQ IN KHZ
;
HB_BATCOND .DB 0 ; BATTERY CONDITION (0=LOW, 1=OK)
@@ -8595,7 +8690,7 @@ HB_APPBOOT1:
; APPBOOT REQUIRES THAT THE COMMON BANK IS NOT CHANGED BY
; THE NEW CONFIG. TEST FOR THIS AND DIAGNOSE IF SO.
LD A,(HCB_BIDCOM) ; RUNNING COMMON BANK ID
LD B,BF_SYSGET ; HBIOS SYSGET
LD C,BF_SYSGET_BNKINFO ; BANK INFORMATION
RST 08 ; D = BIOS BANK ID
@@ -8804,7 +8899,7 @@ SLACK .EQU BNKTOP - $
!!! ; FORCE AN ASSEMBLY ERROR
#ENDIF
;
;;;#IF (SLACK < (1024 * 3))
;;;#IF (SLACK < (1024 * 3))
;;; .ECHO "*** ERROR: Low HEAP space!!!\n"
;;; !!! ; FORCE AN ASSEMBLY ERROR
;;;#ENDIF

View File

@@ -157,7 +157,7 @@ PLT_DUO .EQU 17 ; DUODYNE Z80 SYSTEM
PLT_HEATH .EQU 18 ; HEATHKIT H8 Z80 SYSTEM
PLT_EPITX .EQU 19 ; Z180 MINI-ITX
PLT_MON .EQU 20 ; MONSPUTER
PLT_STDZ180 .EQU 21 ; GENESIS Z180 SYSTEM
PLT_GMZ180 .EQU 21 ; GENESIS Z180 SYSTEM
PLT_NABU .EQU 22 ; NABU PERSONAL COMPUTER
PLT_FZ80 .EQU 23 ; S100 FPGA Z80
;
@@ -377,6 +377,7 @@ VDADEV_TMS .EQU $03 ; N8 ONBOARD VDA SUBSYSTEM - TMS 9918
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
;
; SOUND DEVICE IDS
;

View File

@@ -239,13 +239,13 @@ HDSK_RW0:
XOR A ; A = 0
LD (HDSK_RC),A ; CLEAR RETURN CODE
;
#IF (DSKYENABLE)
#IF (DSKYDSKACT)
;;;#IF (DSKYENABLE)
;;; #IF (DSKYDSKACT)
LD A,HDSK_LBA
CALL LDHLIYA
CALL HB_DSKACT ; SHOW ACTIVITY
#ENDIF
#ENDIF
;;; #ENDIF
;;;#ENDIF
;
; CONVERT LBA HHHH:LLLL (4 BYTES)
; TO HDSK TRACK/SECTOR TTTT:SS (3 BYTES)

View File

@@ -18,6 +18,7 @@
; MK4 $80 N/A N/A
; RC $10 N/A N/A
; SMB $E0 N/A N/A
; GIDE $20 $20 $28 - Genesis IDE controller - Note Read Hi Low - Write - Low High
;
; +-----------------------------------------------------------------------+
; | CONTROL BLOCK REGISTERS |
@@ -224,6 +225,9 @@ IDE_DEV0M: ; DEVICE 0, MASTER
#IF (IDE0MODE == IDEMODE_DIDE)
DEVECHO "DIDE"
#ENDIF
#IF (IDE0MODE == IDEMODE_GIDE)
DEVECHO "GIDE"
#ENDIF
#IF (IDE0MODE == IDEMODE_MK4)
DEVECHO "MK4"
#ENDIF
@@ -259,6 +263,9 @@ IDE_DEV0S: ; DEVICE 0, SLAVE
#IF (IDE0MODE == IDEMODE_DIDE)
DEVECHO "DIDE"
#ENDIF
#IF (IDE0MODE == IDEMODE_GIDE)
DEVECHO "GIDE"
#ENDIF
#IF (IDE0MODE == IDEMODE_MK4)
DEVECHO "MK4"
#ENDIF
@@ -297,6 +304,9 @@ IDE_DEV1M: ; DEVICE 1, MASTER
#IF (IDE1MODE == IDEMODE_DIDE)
DEVECHO "DIDE"
#ENDIF
#IF (IDE1MODE == IDEMODE_GIDE)
DEVECHO "GIDE"
#ENDIF
#IF (IDE1MODE == IDEMODE_MK4)
DEVECHO "MK4"
#ENDIF
@@ -332,6 +342,9 @@ IDE_DEV1S: ; DEVICE 1, SLAVE
#IF (IDE1MODE == IDEMODE_DIDE)
DEVECHO "DIDE"
#ENDIF
#IF (IDE1MODE == IDEMODE_GIDE)
DEVECHO "GIDE"
#ENDIF
#IF (IDE1MODE == IDEMODE_MK4)
DEVECHO "MK4"
#ENDIF
@@ -370,6 +383,9 @@ IDE_DEV2M: ; DEVICE 2, MASTER
#IF (IDE2MODE == IDEMODE_DIDE)
DEVECHO "DIDE"
#ENDIF
#IF (IDE2MODE == IDEMODE_GIDE)
DEVECHO "GIDE"
#ENDIF
#IF (IDE2MODE == IDEMODE_MK4)
DEVECHO "MK4"
#ENDIF
@@ -405,6 +421,9 @@ IDE_DEV2S: ; DEVICE 2, SLAVE
#IF (IDE2MODE == IDEMODE_DIDE)
DEVECHO "DIDE"
#ENDIF
#IF (IDE2MODE == IDEMODE_GIDE)
DEVECHO "GIDE"
#ENDIF
#IF (IDE2MODE == IDEMODE_MK4)
DEVECHO "MK4"
#ENDIF
@@ -491,6 +510,9 @@ IDE_INIT2:
LD DE,IDE_STR_MODE_RC ; MODE LABEL
CP IDEMODE_RC ; TEST FOR MODE
JR Z,IDE_INIT2A ; IF SO, DISPLAY IT
LD DE,IDE_STR_MODE_GIDE ; MODE LABEL
CP IDEMODE_GIDE ; TEST FOR MODE
JR Z,IDE_INIT2A ; IF SO, DISPLAY IT
JR IDE_INIT4 ; NO MODE? BYPASS ENTRY
IDE_INIT2A:
CALL WRITESTR ; DISPLAY MODE
@@ -920,13 +942,13 @@ IDE_PKT_RDSEC:
#ENDIF
; SETUP LBA
;
#IF (DSKYENABLE)
#IF (DSKYDSKACT)
;;;#IF (DSKYENABLE)
;;; #IF (DSKYDSKACT)
LD A,IDE_LBA
CALL LDHLIYA
CALL HB_DSKACT ; SHOW ACTIVITY
#ENDIF
#ENDIF
;;; #ENDIF
;;;#ENDIF
;
; 3 BYTES, LITTLE ENDIAN -> BIG ENDIAN
LD HL,IDE_PKTCMD_RW10+3 ; START OF LBA FIELD IN CDB (MSB)
@@ -989,13 +1011,13 @@ IDE_PKT_WRSEC:
#ENDIF
; SETUP LBA
;
#IF (DSKYENABLE)
#IF (DSKYDSKACT)
;;;#IF (DSKYENABLE)
;;; #IF (DSKYDSKACT)
LD A,IDE_LBA
CALL LDHLIYA
CALL HB_DSKACT ; SHOW ACTIVITY
#ENDIF
#ENDIF
;;; #ENDIF
;;;#ENDIF
;
; 3 BYTES, LITTLE ENDIAN -> BIG ENDIAN
LD HL,IDE_PKTCMD_RW10+3 ; START OF LBA FIELD IN CDB (MSB)
@@ -1021,13 +1043,13 @@ IDE_PKT_WRSEC:
;
IDE_SETADDR:
;
#IF (DSKYENABLE)
#IF (DSKYDSKACT)
;;;#IF (DSKYENABLE)
;;; #IF (DSKYDSKACT)
LD A,IDE_LBA
CALL LDHLIYA
CALL HB_DSKACT ; SHOW ACTIVITY
#ENDIF
#ENDIF
;;; #ENDIF
;;;#ENDIF
; SEND 3 LOWEST BYTES OF LBA IN REVERSE ORDER
; IDE_REG_LBA3 HAS ALREADY BEEN SET
; HSTLBA2-0 --> IDE_REG_LBA2-0
@@ -1253,10 +1275,17 @@ IDE_GET16:
RET
;
IDE_GET16A:
#IF (IDE0MODE == IDEMODE_GIDE) ; GENESIS BOARD IS REVERSED
LD C,E ; PORT FOR MSB
INI ; GET IT, SAVE IT, AND DEC B
LD C,D ; PORT FOR LSB
INI ; GET IT, SAVE IT, AND DEC B
#ELSE
LD C,D ; PORT FOR LSB
INI ; GET IT, SAVE IT, AND DEC B
LD C,E ; PORT FOR MSB
INI ; GET IT, SAVE IT, AND DEC B
#ENDIF
DEC A
JR NZ,IDE_GET16A ; LOOP TILL COUNTER EXHAUSTED
RET
@@ -1318,11 +1347,18 @@ IDE_PUT16:
RET
;
IDE_PUT16A:
#IF (IDE0MODE == IDEMODE_GIDE) ; GENESIS BOARD IS REVERSED
LD C,E ; PORT FOR MSB
OUTI ; PUT IT AND DEC B
LD C,D ; PORT FOR LSB
OUTI ; PUT IT AND DEC B
#ELSE
LD C,D ; PORT FOR LSB
OUTI ; PUT IT AND DEC B
LD C,E ; PORT FOR MSB
OUTI ; PUT IT AND DEC B
DEC A
#ENDIF
JR NZ,IDE_PUT16A ; LOOP TILL COUNTER EXHAUSTED
RET
;
@@ -1990,6 +2026,16 @@ IDE_OUT:
EX (SP),HL ; GET PARM POINTER
PUSH BC
PUSH AF
;
#IF (IDE0MODE == IDEMODE_GIDE) ; SET TOP BYTE TO 0 FOR GENESIS BOARD
LD A,(HL)
LD C,(IY+IDE_DATAHI)
ADD A,C
LD C,A
LD A,0
OUT (C),A
#ENDIF
;
LD A,(HL)
INC HL
LD C,(IY+IDE_IOBASE)
@@ -2189,6 +2235,7 @@ IDE_STR_MODE_DIO .TEXT "DIO$"
IDE_STR_MODE_DIDE .TEXT "DIDE$"
IDE_STR_MODE_MK4 .TEXT "MK4$"
IDE_STR_MODE_RC .TEXT "RC$"
IDE_STR_MODE_GIDE .TEXT "GIDE$"
;
IDE_STR_TYPEATA .TEXT " ATA$"
IDE_STR_TYPEATAPI .TEXT " ATAPI$"

View File

@@ -343,13 +343,13 @@ IMM_IO:
;
LD (IMM_DSKBUF),HL ; SAVE DISK BUFFER ADDRESS
;
#IF (DSKYENABLE)
#IF (DSKYDSKACT)
;;;#IF (DSKYENABLE)
;;; #IF (DSKYDSKACT)
LD A,IMM_LBA
CALL LDHLIYA
CALL HB_DSKACT ; SHOW ACTIVITY
#ENDIF
#ENDIF
;;; #ENDIF
;;;#ENDIF
;
; SETUP LBA
; 3 BYTES, LITTLE ENDIAN -> BIG ENDIAN

392
Source/HBIOS/lcd.asm Normal file
View File

@@ -0,0 +1,392 @@
;
;==================================================================================================
; HARDWARE SUPPORT FOR HITACHI HD44780 OR EQUIVALENT
;==================================================================================================
;
; CURRENTLY ASSUMES A 20X4 DISPLAY
;
; TYPICAL PORTS USED ON RCBUS ECOSYSTEM:
;
; PRIMARY ALT
; FUNCTION $DA $AA
; DATA $DB $AB
;
LCD_FUNC .EQU LCDBASE + 0 ; WRITE
LCD_STAT .EQU LCDBASE + 0 ; READ
LCD_DATA .EQU LCDBASE + 1 ; READ/WRITE
;
LCD_FUNC_CLEAR .EQU $01 ; CLEAR DISPLAY
LCD_FUNC_HOME .EQU $02 ; HOME CURSOR & REMOVE ALL SHIFTING
LCD_FUNC_ENTRY .EQU $04 ; SET CUR DIR AND DISPLAY SHIFT
LCD_FUNC_DISP .EQU $08 ; DISP, CUR, BLINK ON/OFF
LCD_FUNC_SHIFT .EQU $10 ; MOVE CUR / SHIFT DISP
LCD_FUNC_SET .EQU $20 ; SET INTERFACE PARAMS
LCD_FUNC_CGADR .EQU $40 ; SET CGRAM ADRESS
LCD_FUNC_DDADR .EQU $80 ; SET DDRAM ADDRESS
;
DEVECHO "LCD: IO="
DEVECHO LCDBASE
DEVECHO "\n"
;
; HARDWARE RESET PRIOR TO ROMWBW CONSOLE INITIALIZATION
;
LCD_PREINIT:
;
; RESET LCD CONTROLLER, DELAYS ARE FIXED, BUSY FLAG
; CANNOT BE USED YET, CONTROLLER MAY NOT EXIST!
LD A,LCD_FUNC_SET | %11000
OUT (LCD_FUNC),A
LD DE,50000/16 ; WAIT >40MS, WE USE 50MS
CALL VDELAY ; DO IT
LD A,LCD_FUNC_SET | %11000
OUT (LCD_FUNC),A
LD DE,5000/16 ; WAIT >4.1MS, WE USE 5MS
CALL VDELAY ; DO IT
LD A,LCD_FUNC_SET | %11000
OUT (LCD_FUNC),A
LD DE,5000/16 ; WAIT >4.1MS, WE USE 5MS
CALL VDELAY ; DO IT
;
; TEST FOR PRESENCE...
CALL LCD_DETECT ; PROBE FOR HARDWARE
LD A,(LCD_PRESENT) ; GET PRESENCE FLAG
OR A ; SET FLAGS
RET Z ; BAIL OUT IF NOT PRESENT
;
; WE CAN NOW DO NORMAL I/O W/ BUSY FLAG
LD DE,LCD_INIT_SEQ ; INIT SEQUENCE
CALL LCD_OUTFS ; SEND IT
;
; PUT SOMETHING ON THE DISPLAY
LD DE,LCD_STR_BAN
CALL LCD_OUTDS
;
; SECOND LINE
; CPU TYPE
LD HL,$0100 ; ROW 2, COL 0
CALL LCD_GOTORC
LD HL,LCD_CPU
LD A,(HB_CPUTYPE) ; GET CPU TYPE
RRCA ; WORD OFFSET
CALL ADDHLA ; ADD OFFSET
LD E,(HL) ; GET LSB
INC HL ; BUMP
LD D,(HL) ; GET MSB
CALL LCD_OUTDS
LD DE,LCD_STR_XPU
CALL LCD_OUTDS
;
; "12.345 MHz" RIGHT JUSTIFIED
LD HL,$010A ; ROW 2, COL 10
CALL LCD_GOTORC
LD HL,(CB_CPUKHZ)
PUSH HL
LD BC,10000 ; 10 MHZ
SBC HL,BC ; SUBTRACT
JR NC,LCD_PREINIT1
LD A,' ' ; EXTRA PAD
CALL LCD_OUTD
LCD_PREINIT1:
POP HL
CALL LCD_PRTD3M ; PRINT AS DECIMAL WITH 3 DIGIT MANTISSA
LD DE,LCD_STR_MHZ
CALL LCD_OUTDS
;
; THIRD LINE
LD HL,$0200 ; ROW 2, COL 0
CALL LCD_GOTORC
LD DE,LCD_STR_CFG
CALL LCD_OUTDS
;
XOR A ; SIGNAL SUCCESS
RET ; DONE
;
; POST CONSOLE INITIALIZATION
;
LCD_INIT:
CALL NEWLINE ; FORMATTING
PRTS("LCD: IO=$")
LD A,LCDBASE
CALL PRTHEXBYTE
;
LD A,(LCD_PRESENT) ; GET PRESENCE FLAG
OR A ; SET FLAGS
JR Z,LCD_INIT1 ; HANDLE NOT PRESENT
XOR A ; SIGNAL SUCCESS
RET ; DONE
;
LCD_INIT1:
PRTS(" NOT PRESENT$")
OR $FF
RET
;
; CALLED FROM HBIOS RIGHT BEFORE A DISK ACCESS
; HL: ADDRESS OF 32-BIT SECTOR NUMBER (LITTLE-ENDIAN)
;
; FORMAT: "Disk #99 R:12345678"
; 01234567890123456789
;
LCD_DSKACT:
; SAVE EVERYTHING
PUSH AF
PUSH BC
PUSH DE
PUSH HL
;
LD A,(LCD_PRESENT) ; GET PRESENCE FLAG
OR A ; SET FLAGS
JR Z,LCD_DSKACT_Z ; HANDLE NOT PRESENT
;
PUSH HL
LD HL,$0300 ; ROW 3, COL 0
CALL LCD_GOTORC ; SET DISPLAY ADDRESS
POP HL
;
LD DE,LCD_STR_IO ; PREFIX
CALL LCD_OUTDS ; SEND TO DISPLAY (COLS 0-5)
;
LD A,(HB_DSKUNIT) ; GET DISK UNIT NUM
CALL LCD_DSKACT_BYTE ; SEND TO DISPLAY (COLS 6-7) HEX???
;
LD A,' ' ; SEPARATOR
CALL LCD_OUTD ; SEND TO DISPLAY (COL 8)
CALL LCD_OUTD ; SEND TO DISPLAY (COL 9)
;
LD A,(HB_DSKFUNC) ; ACTIVE DISK FUNCTION
CP BF_DIOWRITE ; WRITE?
LD A,'W' ; ASSUME WRITE
JR Z,LCD_DSKACT0 ; GO AHEAD
LD A,'R' ; OTHERWISE READ
LCD_DSKACT0:
CALL LCD_OUTD ; SEND CHAR (COL 10)
;
LD A,':' ; SEPARATOR
CALL LCD_OUTD ; SEND TO DISPLAY (COL 11)
;
LD A,3 ; POINT TO
CALL ADDHLA ; END OF DWORD (MSB)
LD B,4 ; DO 4 BYTES
;
LCD_DSKACT1:
LD A,(HL) ; GET BYTE
CALL LCD_DSKACT_BYTE ; SEND TO DISPLAY (COLS 12-19)
DEC HL ; DEC PTR
DJNZ LCD_DSKACT1 ; DO ALL 4 BYTES
;
LCD_DSKACT_Z:
; CLEAN UP AND GO AWAY
POP HL
POP DE
POP BC
POP AF
RET
;
LCD_DSKACT_BYTE:
PUSH AF ; SAVE BYTE
RRCA ; DO TOP NIBBLE FIRST
RRCA
RRCA
RRCA
CALL HEXCONV ; CONVERT NIBBLE TO ASCII
CALL LCD_OUTD ; SEND TO DISPLAY
POP AF ; RECOVER CURRENT BYTE
CALL HEXCONV ; CONVERT NIBBLE TO ASCII
CALL LCD_OUTD ; SEND TO DISPLAY
RET ; DONE
;
; DETECT PRESENCE OF LCD CONTROLLER BY WRITING AND READING BACK
; TEST VALUES IN THE CONTROLLER RAM.
; WE DO NOT USE THE NORMAL READ/WRITE ROUTINES BECAUSE WE DO
; NOT WANT TO STALL WAITING ON THE BUSY FLAG IF THE CONTROLLER
; IS NOT PRESENT
;
LCD_DETECT:
; FIRST PASS W/ TEST VALUE $AA
LD C,$AA
CALL LCD_DETECT_PASS
JR NZ,LCD_DETECT1
;
; SECOND PASS W/ TEST VALUE $55
LD C,$55
CALL LCD_DETECT_PASS
JR NZ,LCD_DETECT1
;
; LCD PRESENT
OR $FF
JR LCD_DETECT_Z
;
LCD_DETECT1:
; LCD NOT PRESENT
XOR A
JR LCD_DETECT_Z
;
LCD_DETECT_Z:
LD (LCD_PRESENT),A
RET
;
; WRITE AND READBACK VALUE IN C TO THE FIRST BYTE OF DDRAM
; RETURN WITH COMPARE RESULT
;
LCD_DETECT_PASS:
CALL LCD_DELAY ; WAIT
LD A,LCD_FUNC_DDADR
OUT (LCD_FUNC),A ; POINT TO FIRST BYTE
CALL LCD_DELAY ; WAIT
LD A,C ; TEST VALUE
OUT (LCD_DATA),A ; WRITE IT
CALL LCD_DELAY ; WAIT
LD A,LCD_FUNC_DDADR
OUT (LCD_FUNC),A ; POINT TO FIRST BYTE
CALL LCD_DELAY
IN A,(LCD_DATA) ; GET VALUE
CP C ; AS WRITTEN?
RET
;
; DELAY USED DURING DETECT, >37US
;
LCD_DELAY:
CALL DELAY ; 16US
CALL DELAY ; 16US
JP DELAY ; 16US, TOTAL 48US
;
; SEND FUNCTION CODE IN A
;
LCD_OUTF:
PUSH AF ; SAVE CODE
LCD_OUTF1:
IN A,(LCD_STAT) ; GET STATUS
AND $80 ; ISOLATE BUSY FLAG
JR NZ,LCD_OUTF1 ; LOOP TILL NOT BUSY
POP AF ; RECOVER CODE
OUT (LCD_FUNC),A ; SEND IT
RET ; DONE
;
; SEND FUNCTION STRING
; DE=STRING ADDRESS, NULL TERMINATED
;
LCD_OUTFS:
LD A,(DE) ; NEXT BYTE TO SEND
OR A ; SET FLAGS
RET Z ; DONE WHEN NULL REACHED
INC DE ; BUMP POINTER
CALL LCD_OUTF ; SEND IT
JR LCD_OUTFS ; LOOP AS NEEDED
;
; SEND DATA BYTE IN A
;
LCD_OUTD:
PUSH AF ; SAVE BYTE
LCD_OUTD1:
IN A,(LCD_STAT) ; GET STATUS
AND $80 ; ISOLATE BUSY FLAG
JR NZ,LCD_OUTD1 ; LOOP TILL NOT BUSY
POP AF ; RECOVER BYTE
OUT (LCD_DATA),A ; SEND IT
RET ; DONE
;
; SEND DATA STRING
; DE=STRING ADDRESS, NULL TERMINATED
;
LCD_OUTDS:
LD A,(DE) ; NEXT BYTE TO SEND
OR A ; SET FLAGS
RET Z ; DONE WHEN NULL REACHED
INC DE ; BUMP POINTER
CALL LCD_OUTD ; SEND IT
JR LCD_OUTDS ; LOOP AS NEEDED
;
; GET DATA BYTE INTO A
;
LCD_IND:
IN A,(LCD_STAT) ; GET STATUS
AND $80 ; ISOLATE BUSY FLAG
JR NZ,LCD_IND ; LOOP TILL NOT BUSY
POP AF ; RECOVER BYTE
IN A,(LCD_DATA) ; GET IT
RET ; DONE
;
; GOTO ROW(H),COL(L)
;
LCD_GOTORC:
PUSH HL ; SAVE INCOMING
LD A,H ; ROW # TO A
LD HL,LCD_ROWS ; POINT TO ROWS TABLE
CALL ADDHLA ; INDEX TO ROW ENTRY
LD A,(HL) ; GET RWO START
POP HL ; RECOVER INCOMING
ADD A,L ; ADD COLUMN
ADD A,LCD_FUNC_DDADR ; APPLY FUNCTION BIT
JR LCD_OUTF ; AND SEND IT
;
; PRINT VALUE OF HL AS THOUSANDTHS, IE. 0.000
;
LCD_PRTD3M:
PUSH BC
PUSH DE
PUSH HL
LD E,'0'
LD BC,-10000
CALL LCD_PRTD3M1
LD E,0
LD BC,-1000
CALL LCD_PRTD3M1
LD A,'.'
CALL LCD_OUTD
LD BC,-100
CALL LCD_PRTD3M1
LD C,-10
CALL LCD_PRTD3M1
LD C,-1
CALL LCD_PRTD3M1
POP HL
POP DE
POP BC
RET
LCD_PRTD3M1:
LD A,'0' - 1
LCD_PRTD3M2:
INC A
ADD HL,BC
JR C,LCD_PRTD3M2
SBC HL,BC
CP E
JR Z,LCD_PRTD3M3
LD E,0
CALL LCD_OUTD
LCD_PRTD3M3:
RET
;
; DATA STORAGE
;
LCD_PRESENT .DB 0 ; NON-ZERO WHEN HARDWARE DETECTED
;
LCD_ROWS .DB $00,$40,$14,$54 ; ROW START INDEX
;
LCD_INIT_SEQ:
.DB LCD_FUNC_SET | %11000 ; FUNCTION SET, 2 LINES, 5X8 FONT
.DB LCD_FUNC_DISP ; DISPLAY OFF
.DB LCD_FUNC_CLEAR ; CLEAR DISPLAY, HOME CURSOR
.DB LCD_FUNC_ENTRY | $02 ; INCREMENT, NO SHIFT
.DB LCD_FUNC_DISP | $04 ; DISPLAY ON, NO CURSOR, NO BLINK
.DB $00 ; TERMINATOR
;
LCD_STR_BAN .DB "RomWBW v", BIOSVER, 0
LCD_STR_CFG .DB "Build: ", CONFIG, 0
LCD_STR_IO .DB "Disk #", 0
LCD_STR_XPU .DB " CPU",0
LCD_STR_SPD .DB "12.345",0
LCD_STR_MHZ .DB " MHz",0
;
LCD_CPU .DW LCD_CPU_Z80
.DW LCD_CPU_Z180
.DW LCD_CPU_Z180K
.DW LCD_CPU_Z180N
.DW LCD_CPU_Z280
;
LCD_CPU_Z80 .DB "Z80",0
LCD_CPU_Z180 .DB "Z180",0
LCD_CPU_Z180K .DB "Z180-K",0
LCD_CPU_Z180N .DB "Z180-N",0
LCD_CPU_Z280 .DB "Z280",0

View File

@@ -64,6 +64,8 @@ MD_DEVCNT .EQU ($ - MD_CFGTBL) / MD_CFGSIZ
;
;
;
MD_INIT:
#IF (MDFFENABLE)
CALL MD_FINIT ; PROBE FLASH CAPABILITY
@@ -301,13 +303,13 @@ MD_RW:
MD_RW1:
PUSH BC ; SAVE COUNTERS
;
#IF (DSKYENABLE)
#IF (DSKYDSKACT)
;;;#IF (DSKYENABLE)
;;; #IF (DSKYDSKACT)
LD A,MD_LBA
CALL LDHLIYA
CALL HB_DSKACT ; SHOW ACTIVITY
#ENDIF
#ENDIF
;;; #ENDIF
;;;#ENDIF
;
LD HL,(MD_RWFNADR) ; GET PENDING IO FUNCTION ADDRESS
#IF (MDFFENABLE)

View File

@@ -339,13 +339,13 @@ PPA_IO:
;
LD (PPA_DSKBUF),HL ; SAVE DISK BUFFER ADDRESS
;
#IF (DSKYENABLE)
#IF (DSKYDSKACT)
;;;#IF (DSKYENABLE)
;;; #IF (DSKYDSKACT)
LD A,PPA_LBA
CALL LDHLIYA
CALL HB_DSKACT ; SHOW ACTIVITY
#ENDIF
#ENDIF
;;; #ENDIF
;;;#ENDIF
;
; SETUP LBA
; 3 BYTES, LITTLE ENDIAN -> BIG ENDIAN

View File

@@ -830,13 +830,13 @@ PPIDE_PKT_RDSEC:
#ENDIF
; SETUP LBA
;
#IF (DSKYENABLE)
#IF (DSKYDSKACT)
;;;#IF (DSKYENABLE)
;;; #IF (DSKYDSKACT)
LD A,PPIDE_LBA
CALL LDHLIYA
CALL HB_DSKACT ; SHOW ACTIVITY
#ENDIF
#ENDIF
;;; #ENDIF
;;;#ENDIF
;
; 3 BYTES, LITTLE ENDIAN -> BIG ENDIAN
LD HL,PPIDE_PKTCMD_RW10+3 ; START OF LBA FIELD IN CDB (MSB)
@@ -899,13 +899,13 @@ PPIDE_PKT_WRSEC:
#ENDIF
; SETUP LBA
;
#IF (DSKYENABLE)
#IF (DSKYDSKACT)
;;;#IF (DSKYENABLE)
;;; #IF (DSKYDSKACT)
LD A,PPIDE_LBA
CALL LDHLIYA
CALL HB_DSKACT ; SHOW ACTIVITY
#ENDIF
#ENDIF
;;; #ENDIF
;;;#ENDIF
;
; 3 BYTES, LITTLE ENDIAN -> BIG ENDIAN
LD HL,PPIDE_PKTCMD_RW10+3 ; START OF LBA FIELD IN CDB (MSB)
@@ -931,13 +931,13 @@ PPIDE_PKT_WRSEC:
;
PPIDE_SETADDR:
;
#IF (DSKYENABLE)
#IF (DSKYDSKACT)
;;;#IF (DSKYENABLE)
;;; #IF (DSKYDSKACT)
LD A,PPIDE_LBA
CALL LDHLIYA
CALL HB_DSKACT ; SHOW ACTIVITY
#ENDIF
#ENDIF
;;; #ENDIF
;;;#ENDIF
; SEND 3 LOWEST BYTES OF LBA IN REVERSE ORDER
; IDE_REG_LBA3 HAS ALREADY BEEN SET
; HSTLBA2-0 --> IDE_REG_LBA2-0

View File

@@ -276,7 +276,8 @@ PPPCON_INIT:
LD E,CIODEV_PPPCON ; DEVICE TYPE
LD BC,PPPCON_FNTBL ; BC := FUNCTION TABLE ADDRESS
CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
;;;LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
CALL CIO_SETCRT ; SET OURSELVES AS THE CRT DEVICE
;
XOR A
RET
@@ -948,11 +949,11 @@ PPPSD_SENDBLK:
LD A,PPPSD_LBA ; OFFSET OF LBA
CALL LDHLIYA ; HL := IY + A, REG A TRASHED
#IF (DSKYENABLE)
#IF (DSKYDSKACT)
;;;#IF (DSKYENABLE)
;;; #IF (DSKYDSKACT)
CALL HB_DSKACT ; SHOW ACTIVITY
#ENDIF
#ENDIF
;;; #ENDIF
;;;#ENDIF
LD B,4
PPPSD_SENDBLK1:
LD A,(HL)

View File

@@ -150,7 +150,8 @@ PRPCON_INIT:
LD E,CIODEV_PRPCON ; DEVICE TYPE
LD BC,PRPCON_FNTBL ; BC := FUNCTION TABLE ADDRESS
CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
;;;LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
CALL CIO_SETCRT ; SET OURSELVES AS THE CRT DEVICE
;
XOR A ; SIGNAL SUCCESS
RET
@@ -882,11 +883,11 @@ PRPSD_SETBLK:
LD B,4 ; 4 BYTES
LD A,PRPSD_LBA ; OFFSET OF LBA
CALL LDHLIYA ; HL := IY + A, REG A TRASHED
#IF (DSKYENABLE)
#IF (DSKYDSKACT)
;;;#IF (DSKYENABLE)
;;; #IF (DSKYDSKACT)
CALL HB_DSKACT ; SHOW ACTIVITY
#ENDIF
#ENDIF
;;; #ENDIF
;;;#ENDIF
OTIR
RET
;

View File

@@ -333,13 +333,13 @@ RF_SETIO:
;
RF_SETADR:
;
#IF (DSKYENABLE)
#IF (DSKYDSKACT)
;;;#IF (DSKYENABLE)
;;; #IF (DSKYDSKACT)
LD A,RF_LBA
CALL LDHLIYA
CALL HB_DSKACT ; SHOW ACTIVITY
#ENDIF
#ENDIF
;;; #ENDIF
;;;#ENDIF
;
LD A,(RF_IO) ; OUTPUT THE LOGICAL BLOCK
OR RF_AL ; ADDRESS TO THE

View File

@@ -46,7 +46,8 @@ SCON_INIT:
LD E,CIODEV_SCON ; DEVICE TYPE
LD BC,SCON_FNTBL ; BC := FUNCTION TABLE ADDRESS
CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
;;;LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
CALL CIO_SETCRT ; SET OURSELVES AS THE CRT DEVICE
;
XOR A ; SIGNAL SUCCESS
RET

View File

@@ -125,8 +125,8 @@ SD_OPRREG .EQU RTCIO ; USES RTC LATCHES FOR OPERATION
SD_OPRDEF .EQU %00000001 ; QUIESCENT STATE
SD_OPRMSK .EQU %10000111 ; MASK FOR BITS WE OWN IN RTC LATCH PORT
SD_INPREG .EQU RTCIO ; INPUT REGISTER IS RTC
SD_CS0 .EQU %00000100 ; RTC:2 IS SELECT
SD_CLK .EQU %00000010 ; RTC:1 IS CLOCK
SD_CS0 .EQU %00000100 ; RTC:2 IS SELECT
SD_CLK .EQU %00000010 ; RTC:1 IS CLOCK
SD_DI .EQU %00000001 ; RTC:0 IS DATA IN (CARD <- CPU)
SD_DO .EQU %10000000 ; RTC:7 IS DATA OUT (CARD -> CPU)
SD_IOBASE .EQU SD_OPRREG ; IOBASE
@@ -242,7 +242,21 @@ SD_TRDR .EQU Z180_TRDR
SD_IOBASE .EQU SD_OPRREG ; IOBASE
SD_INVCS .EQU TRUE ; INVERT CS
DEVECHO "SC"
RTCDEF .SET RTCDEF | SD_OPRDEF ; SET DEFAULT IN HBIOS MAINLINE
#ENDIF
;
#IF (SDMODE == SDMODE_GM) ; GM
SD_DEVMAX .EQU 2 ; NUMBER OF PHYSICAL UNITS (SOCKETS)
SD_OPRREG .EQU RTCIO ; USES RTC LATCHES FOR OPERATION
SD_OPRDEF .EQU %00000100 ; QUIESCENT STATE (/CS1 & /CS2 DEASSERTED)
SD_OPRMSK .EQU %00000100 ; MASK FOR BITS WE OWN IN RTC LATCH PORT
SD_CS0 .EQU %00000100 ; RTC:2 IS SELECT FOR PRIMARY SPI CARD
SD_CS1 .EQU %00000000 ; RTC:3 IS SELECT FOR SECONDARY SPI CARD
SD_CNTR .EQU Z180_CNTR
SD_TRDR .EQU Z180_TRDR
SD_IOBASE .EQU SD_OPRREG ; IOBASE
SD_INVCS .EQU TRUE ; INVERT CS
DEVECHO "GM"
RTCDEF .SET RTCDEF | SD_OPRDEF ; SET DEFAULT IN HBIOS MAINLINE
#ENDIF
;
@@ -608,7 +622,7 @@ SD_INIT:
CALL PRTHEXBYTE
#ENDIF
;
#IF (SDMODE == SDMODE_SC)
#IF ((SDMODE == SDMODE_SC) | (SDMODE == SDMODE_GM))
PRTS(" MODE=SC$")
#IF (SDCSIOFAST)
PRTS(" FAST$")
@@ -1132,7 +1146,7 @@ SD_INITCARD1:
POP BC ; RESTORE LOOP CONTROL
DJNZ SD_INITCARD1 ; LOOP AS NEEDED
;
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX))
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_GM) | (SDMODE == SDMODE_EPITX))
; MAKE SURE CSIO IS DONE SENDING DATA
CALL SD_WAITTX ; WAIT FOR TE TO CLEAR
CALL DLY32 ; WAIT A BIT MORE FOR FINAL BIT
@@ -1312,7 +1326,7 @@ SD_INITCARD5:
; HIGH SPEED CSIO OPERATION IS NOW SET AT THE START OF SD_IO
;
;#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC))
;#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_GM))
; ; PER SPEC, THE CARD SHOULD NOW BE ABLE TO HANDLE FULL SPEED OPERATION
; ; SO, FOR CSIO OPERATION, WE SET CSIO TO MAXIMUM SPEED
; CALL SD_WAITTX ; MAKE SURE WE ARE DONE SENDING
@@ -1497,11 +1511,11 @@ SD_SETADDR:
PUSH AF ; SAVE IT
LD A,SD_LBA ; OFFSET OF LBA VALUE
CALL LDHLIYA ; HL := IY + A, REG A TRASHED
#IF (DSKYENABLE)
#IF (DSKYDSKACT)
;;;#IF (DSKYENABLE)
;;; #IF (DSKYDSKACT)
CALL HB_DSKACT ; SHOW ACTIVITY
#ENDIF
#ENDIF
;;; #ENDIF
;;;#ENDIF
CALL LD32 ; LOAD IT TO DE:HL, AF IS TRASHED
POP AF ; GET CARD TYPE BACK
CP SD_TYPESDHC ; IS IT V2 OR BETTER?
@@ -1874,7 +1888,7 @@ SD_DONE:
PUSH AF
LD A,$FF
CALL SD_PUT
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX))
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX) | (SDMODE == SDMODE_GM))
; MAKE SURE CSIO IS DONE SENDING DATA
CALL SD_WAITTX ; WAIT FOR TE TO CLEAR
CALL DLY32 ; WAIT A BIT MORE FOR FINAL BIT
@@ -1898,14 +1912,14 @@ SD_SETUP:
OUT (SD_PPIX),A
#ENDIF
;
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX))
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX) | (SDMODE == SDMODE_GM))
; CSIO SETUP FOR Z180 CSIO
; LD A,2 ; DIV 80, 225KHZ @ 18MHZ CLK
LD A,6 ; DIV 1280, 14KHZ @ 18MHZ CLK
OUT0 (SD_CNTR),A
#ENDIF
;
#IF ((SDMODE == SDMODE_JUHA) | (SDMODE == SDMODE_N8) | (SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_SC))
#IF ((SDMODE == SDMODE_JUHA) | (SDMODE == SDMODE_N8) | (SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_GM))
LD A,(HB_RTCVAL)
LD (SD_OPRVAL),A
OUT (SD_OPRREG),A
@@ -2004,11 +2018,11 @@ SD_CHKWP:
;
SD_SELECT:
; ; FINISH SENDING BEFORE ASSERTING CS!
;#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC))
;#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_GM))
; CALL SD_WAITTX
;#ENDIF
;
#IF ((SDMODE == SDMODE_SC) | (SDMODE == SDMODE_MT) | (SDMODE == SDMODE_FZ80))
#IF ((SDMODE == SDMODE_SC) | (SDMODE == SDMODE_MT) | (SDMODE == SDMODE_FZ80) | (SDMODE == SDMODE_GM))
LD A,(IY+SD_DEV) ; GET CURRENT DEVICE
OR A ; SET FLAGS
LD A,(SD_OPRVAL) ; GET CURRENT OPRVAL BACK
@@ -2038,9 +2052,9 @@ SD_SELECT1:
;
SD_SELECT2:
; ADJUST BIT(S) FOR INTERFACES USING INVERTED CS BITS
;#IF ((SDMODE == SDMODE_PPI) | (SDMODE == SDMODE_UART) | (SDMODE == SDMODE_SC))
;#IF ((SDMODE == SDMODE_PPI) | (SDMODE == SDMODE_UART) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_GM))
#IF (SD_INVCS)
#IF (((SDMODE == SDMODE_SC) | (SDMODE == SDMODE_FZ80)) & (SD_DEVCNT > 1))
#IF (((SDMODE == SDMODE_SC) | (SDMODE == SDMODE_FZ80) | (SDMODE == SDMODE_GM)) & (SD_DEVCNT > 1))
XOR SD_CS0 | SD_CS1
#ELSE
XOR SD_CS0
@@ -2049,7 +2063,7 @@ SD_SELECT2:
LD (SD_OPRVAL),A
OUT (SD_OPRREG),A
;;
;#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC))
;#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_GM))
; CALL DLY32 ; DELAY FOR FINAL BIT
;#ENDIF
;
@@ -2058,7 +2072,7 @@ SD_SELECT2:
; DESELECT CARD
;
SD_DESELECT:
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX))
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX) | (SDMODE == SDMODE_GM))
; DON'T REMOVE CS UNTIL WE ARE DONE SENDING!
CALL SD_WAITTX ; WAIT FOR TE TO CLEAR
;
@@ -2077,7 +2091,7 @@ SD_DESELECT:
#ENDIF
;
LD A,(SD_OPRVAL)
#IF (((SDMODE == SDMODE_SC) | (SDMODE_MT)) & (SD_DEVCNT > 1))
#IF (((SDMODE == SDMODE_SC) | (SDMODE_MT) | (SDMODE == SDMODE_GM)) & (SD_DEVCNT > 1))
AND ~(SD_CS0 | SD_CS1)
#ELSE
#IF (SDMODE == SDMODE_EPITX)
@@ -2088,7 +2102,7 @@ SD_DESELECT:
#ENDIF
; ADJUST BIT(S) FOR INTERFACES USING INVERTED CS BITS
#IF (SD_INVCS)
#IF (((SDMODE == SDMODE_SC) | (SDMODE == SDMODE_FZ80)) & (SD_DEVCNT > 1))
#IF (((SDMODE == SDMODE_SC) | (SDMODE == SDMODE_FZ80) | (SDMODE == SDMODE_GM)) & (SD_DEVCNT > 1))
XOR SD_CS0 | SD_CS1
#ELSE
XOR SD_CS0
@@ -2098,7 +2112,7 @@ SD_DESELECT:
OUT (SD_OPRREG),A
RET
;
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX))
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX) | (SDMODE == SDMODE_GM))
;
; CSIO WAIT FOR TRANSMIT READY (TX REGISTER EMPTY)
;
@@ -2140,7 +2154,7 @@ SD_PUT:
OUT (SD_WRTR),A
#ENDIF
;
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX))
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX) | (SDMODE == SDMODE_GM))
CALL MIRROR ; MSB<-->LSB MIRROR BITS, RESULT IN C
CALL SD_WAITTX ; MAKE SURE WE ARE DONE SENDING
OUT0 (SD_TRDR),C ; PUT BYTE IN BUFFER
@@ -2227,7 +2241,7 @@ SD_GET:
IN A,(SD_RDTR)
#ENDIF
;
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX))
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX) | (SDMODE == SDMODE_GM))
CALL SD_WAITTX ; MAKE SURE WE ARE DONE SENDING
IN0 A,(SD_CNTR) ; GET CSIO STATUS
SET 5,A ; START RECEIVER
@@ -2331,7 +2345,7 @@ SD_GET1:
;
SD_SPD_STD:
;
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX))
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX) | (SDMODE == SDMODE_GM))
; SET CSIO FOR DEFAULT OPERATION
PUSH AF ; PRESERVE AF
CALL SD_WAITTX ; MAKE SURE WE ARE DONE SENDING
@@ -2346,7 +2360,7 @@ SD_SPD_STD:
;
SD_SPD_SLOW:
;
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX))
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX) | (SDMODE == SDMODE_GM))
; SET CSIO FOR DEFAULT OPERATION
PUSH AF ; PRESERVE AF
CALL SD_WAITTX ; MAKE SURE WE ARE DONE SENDING
@@ -2361,7 +2375,7 @@ SD_SPD_SLOW:
;
SD_SPD_FAST:
;
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX))
#IF ((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX) | (SDMODE == SDMODE_GM))
; SET CSIO FOR HIGH SPEED OPERATION
PUSH AF ; PRESERVE AF
CALL SD_WAITTX ; MAKE SURE WE ARE DONE SENDING
@@ -2612,7 +2626,7 @@ SD_DSKBUF .DW 0 ; ADR OF ACTIVE DISK BUFFER
; MSB<-->LSB MIRROR BITS IN A, RESULT IN C
;
MIRROR:
#IF (((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX)) & SDCSIOFAST)
#IF (((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX) | (SDMODE == SDMODE_GM)) & SDCSIOFAST)
; FASTEST BUT USES MOST CODE SPACE
LD BC,MIRTAB ; 256 BYTE MIRROR TABLE
ADD A,C ; ADD OFFSET
@@ -2645,7 +2659,7 @@ MIRROR2:
;
; LOOKUP TABLE TO MIRROR BITS IN A BYTE
;
#IF (((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX)) & SDCSIOFAST)
#IF (((SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_MK4) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_EPITX) | (SDMODE == SDMODE_GM)) & SDCSIOFAST)
MIRTAB .DB 00H, 80H, 40H, 0C0H, 20H, 0A0H, 60H, 0E0H, 10H, 90H, 50H, 0D0H, 30H, 0B0H, 70H, 0F0H
.DB 08H, 88H, 48H, 0C8H, 28H, 0A8H, 68H, 0E8H, 18H, 98H, 58H, 0D8H, 38H, 0B8H, 78H, 0F8H

View File

@@ -22,7 +22,7 @@
; 18. HEATH Les Bird's Heath Z80 Board
; 19. EPITX Alan Cox' Mini-ITX System
; 20. MON Jacques Pelletier's Monsputer
; 21. STDZ180 Genesis Z180 System
; 21. GMZ180 Doug Jacksons' Genesis Z180 System
; 22. NABU NABU w/ Les Bird's RomWBW Option Board
; 23. FZ80 S100 Computers FPGA Z80
;
@@ -194,6 +194,7 @@ IDEMODE_DIO .EQU 1 ; DISKIO V1
IDEMODE_DIDE .EQU 2 ; DUAL IDE
IDEMODE_MK4 .EQU 3 ; MARK IV ONBOARD IDE (8 BIT ONLY)
IDEMODE_RC .EQU 4 ; RCBUS CF MODULE (8 BIT ONLY)
IDEMODE_GIDE .EQU 5 ; GENESIS MODULES STD BUS IDE CONTROLLER
;
; PPIDE MODE SELECTIONS
;
@@ -223,6 +224,7 @@ SDMODE_PIO .EQU 11 ; Z80 PIO bitbang
SDMODE_Z80R .EQU 12 ; Z80 Retro
SDMODE_EPITX .EQU 13 ; Mini ITX Z180
SDMODE_FZ80 .EQU 14 ; S100 FPGA Z80
SDMODE_GM .EQU 15 ; Genesis SD Driver
;
; AY SOUND CHIP MODE SELECTIONS
;
@@ -321,6 +323,7 @@ DMAMODE_VDG .EQU 7 ; VELESOFT DATAGEAR
KBDMODE_NONE .EQU 0
KBDMODE_PS2 .EQU 1 ; PS/2 KEYBOARD CONTROLLER
KBDMODE_VRC .EQU 2 ; VGARC KEYBOARD CONTROLLER
KBDMODE_FV .EQU 3 ; FPGA VGA KEYBOARD CONTROLLER
;
; SERIAL DEVICE CONFIGURATION CONSTANTS
;
@@ -492,6 +495,7 @@ KBDENABLE .EQU FALSE ; PS/2 KEYBOARD DRIVER
PPKENABLE .EQU FALSE ; PPK KEYBOARD DRIVER
MKYENABLE .EQU FALSE ; MSX KEYBOARD DRIVER
NABUKBENABLE .EQU FALSE ; NABU KEYBOARD DRIVER
FVKBDENABLE .EQU FALSE ; FPGA KEYBOARD DRIVER
;
; VIDEO MODES
;

View File

@@ -417,11 +417,11 @@ SYQ_IO:
LD (SYQ_DSKBUF),HL ; SAVE DISK BUFFER ADDRESS
LD A,SYQ_LBA ; LBA OFFSET IN CONFIG
CALL LDHLIYA ; POINT TO LBA DWORD
#IF (DSKYENABLE)
#IF (DSKYDSKACT)
;;;#IF (DSKYENABLE)
;;; #IF (DSKYDSKACT)
CALL HB_DSKACT ; SHOW ACTIVITY
#ENDIF
#ENDIF
;;; #ENDIF
;;;#ENDIF
CALL LD32 ; SET DE:HL TO LBA
;
CALL SYQ_CMDSETUP ; SETUP ATA COMMAND BUF

View File

@@ -76,7 +76,8 @@ TERM_ATTACH:
PUSH HL ; COPY VDA INSTANCE DATA PTR
POP DE ; ... TO DE
CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
;;;LD (HCB + HCB_CRTDEV),A ; SET OURSELVES AS THE CRT DEVICE
CALL CIO_SETCRT ; SET OURSELVES AS THE CRT DEVICE
;
; INCREMENT DEVICE COUNT
LD HL,TERM_DEVCNT ; POINT TO DEVICE COUNT

View File

@@ -24,7 +24,6 @@ call BuildDisk.cmd fortran hd wbw_fd144 || exit /b
call BuildDisk.cmd games hd wbw_fd144 || exit /b
call BuildDisk.cmd cowgol hd wbw_fd144 || exit /b
echo.
echo Building Hard Disk Images (512 directory entry format)...
echo.
@@ -45,6 +44,8 @@ call BuildDisk.cmd bascomp hd wbw_hd512 || exit /b
call BuildDisk.cmd fortran hd wbw_hd512 || exit /b
call BuildDisk.cmd games hd wbw_hd512 || exit /b
call BuildDisk.cmd cowgol hd wbw_hd512 || exit /b
call BuildDisk.cmd msxroms1 hd wbw_hd512 || exit /b
call BuildDisk.cmd msxroms2 hd wbw_hd512 || exit /b
echo.
echo Building Combo Disk (512 directory entry format) Image...
@@ -69,6 +70,8 @@ call BuildDisk.cmd bascomp hd wbw_hd1k || exit /b
call BuildDisk.cmd fortran hd wbw_hd1k || exit /b
call BuildDisk.cmd games hd wbw_hd1k || exit /b
call BuildDisk.cmd cowgol hd wbw_hd1k || exit /b
call BuildDisk.cmd msxroms1 hd wbw_hd1k || exit /b
call BuildDisk.cmd msxroms2 hd wbw_hd1k || exit /b
if exist ..\BPBIOS\bp*.rel call BuildDisk.cmd bp hd wbw_hd1k ..\zsdos\zsys_wbw.sys || exit /b

View File

@@ -0,0 +1,10 @@
@echo off
setlocal
echo.
echo Building MSX Hard Disk Combo Image (1024 directory entry format)...
echo.
copy hd1k_prefix.dat ..\..\Binary\ || exit /b
copy /b hd1k_prefix.dat + ..\..\Binary\hd1k_cpm22.img + ..\..\Binary\hd1k_zsdos.img + ..\..\Binary\hd1k_cpm3.img + ..\..\Binary\hd1k_msxroms1.img + ..\..\Binary\hd1k_msxroms2.img ..\..\Binary\hd1k_msxcombo.img || exit /b

View File

@@ -13,13 +13,15 @@ HD512IMGS = hd512_cpm22.img hd512_zsdos.img hd512_nzcom.img \
HD512XIMGS = hd512_z80asm.img hd512_aztecc.img hd512_hitechc.img \
hd512_bascomp.img hd512_fortran.img hd512_games.img \
hd512_tpascal.img hd512_dos65.img hd512_qpm.img \
hd512_cowgol.img hd512_blank.img
hd512_cowgol.img hd512_msxroms1.img hd512_msxroms2.img \
hd512_blank.img
HD1KIMGS = hd1k_cpm22.img hd1k_zsdos.img hd1k_nzcom.img \
hd1k_cpm3.img hd1k_zpm3.img hd1k_ws4.img
HD1KXIMGS = hd1k_z80asm.img hd1k_aztecc.img hd1k_hitechc.img \
hd1k_bascomp.img hd1k_fortran.img hd1k_games.img \
hd1k_tpascal.img hd1k_qpm.img \
hd1k_cowgol.img hd1k_blank.img
hd1k_cowgol.img hd1k_msxroms1.img hd1k_msxroms2.img \
hd1k_blank.img
HD1KXIMGS += hd1k_bp.img
HD512PREFIX =

View File

@@ -2,16 +2,16 @@ This library contains a number of support files, programs and scripts needed
to bring up a fully functioning BPBIOS Zsystem. These programs and files
are used and/or loaded by the startup scripts.
Some of the support files are startup ZEX scripts, some are Z3+ segment files,
others are Date and Time stamp drivers, some are command line editors and
history shells others are needed to initialize the RAMDRIVE as well as help files.
Some of the support files are startup ZEX scripts, some are Z3+ segment files,
others are Date and Time stamp drivers, some are command line editors and
history shells others are needed to initialize the RAMDRIVE as well as help files.
The following table shows which files are needed to support each of the ten
BPBIOS variants (BP33, BP33BNK, BP34, BP34BNK & BBP41BNK).
The following table shows which files are needed to support each of the ten
BPBIOS variants (BP33, BP33BNK, BP34, BP34BNK & BBP41BNK).
Variant Name BP33 BP33BNK BP34 BP34BNK BP41BNK
================================================================
bpbio.ndr X X X
bpbio.ndr X X X
bpbioz33.ndr X X
BPCNFG.COM X X X X X
EASE.COM X X
@@ -20,18 +20,18 @@ fcp-4.zrl X X
fcp-4t.zrl X X X
RELOG X X X X X
HELPLSH.COM X X X
IF.COM X X X X
IF.COM X X X X
jetldr.com X X X X X
LDTIMEC.COM X X X
LSH.COM X X X
LSHF.COM* X X X
LSHF.VAR* X X X
myterm.z3t X X X X X
nzdec23d.z3t X X X X X
myterm.z3t X X X X X
nzdec23d.z3t X X X X X
PUTDS.COM X X X X X
RAMFILES.TXT X X X X X
RCOPY.COM X X X X X
rcp-16h.zrl X X X X
rcp-16h.zrl X X X X
SAVE.COM X X X X
Z33.ZEX X X
ZEX.COM X X X X X
@@ -43,14 +43,14 @@ ZST.ZEX X X
Instructions:
The support files are "crunched" and stored in the library file
SUPPORT.LBR. Place SUPPORT.LBR on the RAMDRIVE using for example
SUPPORT.LBR. Place SUPPORT.LBR on the RAMDRIVE using for example
XModem. Use LBREXT with the /U option to extract and uncrunch the
files. First extract ZEX.COM while logged onto the A: drive with the
files. First extract ZEX.COM while logged onto the A: drive with the
following command:
B0:LBREXT SUPPORT C0:ZEX.C?M /U
Next place all the .COM files on C15: by typing:
B0:LBREXT SUPPORT C15:*.C?M /U
The remaining files should be placed on C0:.
The remaining files should be placed on C0:.
B0:LBREXT SUPPORT C0:*.Z?X /U
B0:LBREXT SUPPORT C0:*.Z?L /U
B0:LBREXT SUPPORT C0:*.N?R /U
@@ -59,14 +59,14 @@ The remaining files should be placed on C0:.
B0:LBREXT SUPPORT C0:*.H?P /U
Note in all BPBIOS variants that A: is the RAMDRIVE, B: is
the ROMDRIVE and C: is the system drive. Hard drive slices occupy C:
the ROMDRIVE and C: is the system drive. Hard drive slices occupy C:
through N: and floppy drives are O: & P:. A short desciption
of each of the support files follows:
bpbioz33.ndr - Named Directory Table for Z33
bpbio.ndr - Named Directory Table for Z34 & Z41
BPCNFG.COM - BPBIOS configuration program
EASE.COM - Command line editor & history shell for Z33*
EASE.COM - Command line editor & history shell for Z33*
EASE.HLP - Help file for EASE
fcp-4.zrl - Z33 Flow Control Processor (handles IF, ELSE etc)
fcp-4t.zrl - Z34 & Z41 Flow Control Processor (IF is transient)
@@ -80,7 +80,7 @@ LSHF.COM - LSH with a fixed length History file (runs faster)
LSHF.VAR - History file for LSHF
myterm.z3t - Terminal Capabilities file (defines ESC sequences etc)
NZDEC23D.Z3T - VT100 Terminal Capabilities File.
PUTDS.COM - Installs date stamping for RAM drive.
PUTDS.COM - Prepare disk for DateStamper date/time stamping.
RAMFILES.TXT - List of frequently used command (edit to suit)
RCOPY.COM - Copies files listed in RAMFILES.TXT to RAMDRIVE
rcp-16h.zrl - Zsystem Resident Command Processor
@@ -92,4 +92,4 @@ ZSCFG2.COM - Configures ZSDOS 2
ZSTF.ZEX - Automatically executed Startup script for BP41BNK
ZST.ZEX - Automatically executed Startup script for BP34*
Note that clock & datestamping drivers are builtin to Z41.
Note that clock & datestamping drivers are builtin to Z41.

View File

@@ -0,0 +1,19 @@
===== MSX ROMs Disk for RomWBW =====
This is disk 1 of 2 of the collection of MSX ROMs as provided by Les
Bird (ROM filenames A-K). These ROMs are "run" by using the
appropriate variant of Les' MSX8 ROM loader. You can download the
loader binaries from https://github.com/lesbird/MSX8. You will need
appropriate hardware to run the loader.
Please review the file ROMLIST.TXT for information on the current
operational status of the ROM and it's long file name/description.
This disk (RomWBW slice) is not automatically included with the
RomWBW "combo" disk images. You can simply add it to a combo
image by appending it to the end. After booting your system,
you can use the ASSIGN command to map the slice to a drive letter.
Refer to the RomWBW User Guide for more information on this
process.
-- WBW 11:15 AM 8/21/2024

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More