Compare commits

...

69 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
Wayne Warthen
add41fdb69 SD Driver Bug Fix
- Fixes a stupid bug I introduced in the previous change to sd.asm.  SD Card initialization could hang in previous release.
2024-08-16 18:13:22 -07:00
Wayne Warthen
457aa44832 SD Card Compatibility Improvement
- Modified SD driver to keep SD card clock consistently fast after card init.  This only seemed to effect a Lexar 32GB uSD Card on CSIO interface.  Thanks and credit to Richard Deane for reporting this.
- Improved hard disk layout documentation.
2024-08-16 14:06:36 -07:00
Wayne Warthen
7e2b2b8f40 Implement SIOINTS Setting in SIO Driver
- SIOINTS allows disabling use of interrupts in the SIO driver when interrupts are enabled globally.  It will not allow you to enable SIO interrupts if interrupts are globally disabled (INTMODE 0).
2024-08-04 13:39:44 -07:00
Wayne Warthen
e68cbded97 SD Card Speed Improvement for FZ80
- Removed wait routines for FZ80 in SD driver.  Latest FPGA code does not require them.
- Minor improvements to disk layout documentation.
2024-08-04 12:12:16 -07:00
Wayne Warthen
cd70a62d67 Documentation Updates
- Minor improvements to hard disk documentation in System Guide.
2024-08-01 11:40:23 -07:00
Wayne Warthen
307b8bb11b Add Tick Counter Size
- Documents the date field size of the tick counter.
2024-07-31 14:53:58 -07:00
Wayne Warthen
fd59d2e4f8 Add UMAP
- UMAP application has been added to the ZPM3 and NZCOM disk images.
2024-07-30 11:06:25 -07:00
Wayne Warthen
e021735876 More Enhancements to Startup Command Documentation 2024-07-28 13:31:06 -07:00
Wayne Warthen
91debe53c4 Improve Startup Commands Documentation 2024-07-28 12:08:35 -07:00
Wayne Warthen
8e0af1720a Application Boot Tweaks
- Reduces failure scenarios with application boot
- Catches and diagnoses common bank mismatch which application boot cannot handle
2024-07-27 15:17:58 -07:00
Wayne Warthen
83d26a4faf - Improve PPIDE Device Detection
- Some PPI chips were falsely detecting the presence of an IDE device.  Added code to preset PPI register with a value that avoids false positives.
2024-07-26 09:38:24 -07:00
Wayne Warthen
c2f7a75cdd Add hour/minute/second display to TIMER app (MartinR)
Co-Authored-By: MartinR <174514335+MartinR-UK@users.noreply.github.com>
2024-07-24 11:24:41 -07:00
Wayne Warthen
888706149d Improve Application Start Mode
- If the new AUX bank happens to be the same as the old HBIOS bank, an application start would fail.  Relocated the copy to avoid this.
2024-07-22 16:40:53 -07:00
Wayne Warthen
a078820745 Fix Duodyne MMU Regression 2024-07-21 16:40:59 -07:00
Wayne Warthen
21df9d8797 Missing Files 2024-07-20 17:27:59 -07:00
Wayne Warthen
cd23863226 Refactor UART Mode Settings
- Replaced hard-coded mode settings with per-chip configuration settings.
2024-07-20 15:20:05 -07:00
Wayne Warthen
3999039102 Support for Les Bird's Dual 16C550 UART Module 2024-07-19 17:31:53 -07:00
Wayne Warthen
df2ab201a2 TMS Driver Cleanup 2024-07-17 18:45:52 -07:00
Wayne Warthen
cdc2b3964d Remove Short IDE/PPIDE Timeout, Issue #397
The Microdrives behave slightly differently than either normal spinning drives or CF Cards.  This update removes the "short" timeout that is used in the IDE/PPIDE drivers which caused timeout issues for the Microdrives.

The short timeout was originally used to workaround excessive wait/stall during boot of some media.  I don't think it is necessary any more because of additional intelligence in the initialization routines.
2024-07-15 14:49:52 -07:00
Wayne Warthen
21b2eee7ab Add Beep Function to Sound Driver Interface, Issue #402 2024-07-15 12:49:27 -07:00
Wayne Warthen
b80d395266 Update for Les Bird's Graphics/Sound/Joystick Module
- Unique I/O configuration for Les Bird's Graphics/Sound/Joystick Module has been removed because the module now conforms to generic MSX port conventions.
2024-07-11 14:11:51 -07:00
Wayne Warthen
fff0959f96 Added Support for Les Bird's RCBus Graphics/Sound/Joystick Module 2024-07-08 16:51:53 -07:00
Wayne Warthen
b781f16add Missing Files from Prior Commit 2024-07-08 10:57:14 -07:00
Wayne Warthen
273e61bc94 Support for DS1305 RTC on S100 FPGA Z80 2024-07-08 10:45:19 -07:00
Wayne Warthen
e1e485501c Applications Document Overhaul by MartinR
- ROM Applications document has been consolidated into the Applications document
- Martin has done a significant overhaul of the Applications document

Co-Authored-By: MartinR <174514335+martinr-uk@users.noreply.github.com>
2024-07-04 08:10:00 -07:00
Wayne Warthen
48ab169c60 S100 FPGA Z80 SD Card Support WIP
- Not yet working
2024-07-03 10:39:19 -07:00
Wayne Warthen
0f4d16400f S100 FPGA Z80 Cleanup
- Restore 16-bit I/O in S100 Console driver
- Boot to Console or USB Serial depending on IO Switch
2024-07-01 16:48:58 -07:00
Wayne Warthen
329a0f4d7f Fix gitignore 2024-06-30 20:03:01 -07:00
Wayne Warthen
058a67dd40 Preliminary Support for S100 FPGA Z80 Platform
- S100 FPGA Z80 Platform
- Simple Serial Driver
2024-06-30 19:32:17 -07:00
Wayne Warthen
40f2a9f35a Enhanced TIMER App from MartinR
- MartinR has enhanced the TIMER application to display output in decimal.
2024-06-30 11:53:38 -07:00
Wayne Warthen
3eea703d02 Miscellaneous
- Support RCBus PS/2 Keyboard (EtchedPixels & Sally)
- Added AT-3-8910 register spreadsheet (Martin R)
- Improved FD hardware detection to eliminate a false positive
- Reorder Boot Loader menu (Martin R)
- Minor enhancement to new usrrom.asm (Martin R)
2024-06-17 11:53:40 -07:00
Wayne Warthen
74daa4d3c5 New usrrom.asm from MartinR
- MartinR has contributed a new usrrom.asm that prints a nice RomWBW logo and does a better job with the messages.
2024-05-31 11:08:42 -07:00
Wayne Warthen
0539b25046 Updated FLASH to v1.3.9
- Will Sowerbutts provided an updated flash4 v1.3.9
- Modified HBIOS to be more proactive about disabling interrupts on systems with interrupts disabled to avoid issues with applications that turn them on.
- Updated NABU default configuration to run under interrupt mode 2.

Co-Authored-By: Will Sowerbutts <will@sowerbutts.com>
2024-05-31 08:56:02 -07:00
Wayne Warthen
a7e767d0b7 Upgrade BBCBASIC to v5 2024-05-30 14:30:27 -07:00
Wayne Warthen
78a765147e NABU Keyboard Typeahead
- Implemented a 16 character typeahead buffer for interrupt-enabled builds of NABU.
2024-05-25 16:16:14 -07:00
Wayne Warthen
1cb5f0b3b4 NABU Code Cleanup 2024-05-23 11:00:51 -07:00
Wayne Warthen
a34afaa11e Add p-System Keyboard Usage to User Guide 2024-05-17 15:25:29 -07:00
Wayne Warthen
e8d79bdf0a Modify XModem Updater for Z280 Compatibility
- Changed bank select vector to the well-known entry point in HBIOS proxy.
2024-05-17 11:27:53 -07:00
Wayne Warthen
e5232c6696 Cleanup
- Add Z280 interrupt mode 3 to INTTEST app
- Make application boot handle restart by using HBIOS restart in place
- Resolve multiple issues with HBIOS restart in place
2024-05-16 19:50:37 -07:00
Wayne Warthen
70fcb2cbee Enable Interrupt Driven RTC for NABU 2024-05-14 10:35:20 -07:00
774 changed files with 27046 additions and 4340 deletions

1
.gitignore vendored
View File

@@ -99,6 +99,7 @@ Tools/unix/zx/zx
!Source/ZRC512/*.bin
!Source/Z1RCC/*.bin
!Source/ZZRCC/*.bin
!Source/FZ80/*.bin
!Tools/cpm/**
!Tools/unix/zx/*
!Tools/zx/*

View File

@@ -8,5 +8,6 @@ if exist *.hlp del *.hlp
if exist Tunes\*.pt? del Tunes\*.pt?
if exist Tunes\*.mym del Tunes\*.mym
if exist Tunes\*.vgm del Tunes\*.vgm
if exist bbcbasic.txt del bbcbasic.txt
pushd Test && call Clean || exit /b 1 & popd

View File

@@ -8,4 +8,4 @@ all::
mkdir -p Tunes
clean::
@rm -f *.bin *.com *.img *.rom *.pdf *.log *.eeprom *.ovr *.hlp *.doc *.COM *.BIN Tunes/*.mym Tunes/*.pt? Tunes/*.vgm
@rm -f *.bin *.com *.img *.rom *.pdf *.log *.eeprom *.ovr *.hlp *.doc *.COM *.BIN Tunes/*.mym Tunes/*.pt? Tunes/*.vgm bbcbasic.txt

View File

@@ -0,0 +1,44 @@
INTTEST
=======
RomWBW includes an API allowing applications to "hook" interrupts.
The `INTTEST` utility allows you to test this functionality.
** Syntax **
`INTTEST`
** Usage **
`INTTEST` is an interactive application. At startup, it will display
a list of the interrupt vector slots in your system along with the
current vector address for each of them.
It then prompts you to enter the slot number (in hex) of a vector to
hook. After entering this, the application will watch the hooked
vector and countdown from 0xFF to 0x00 as interrupts are noted.
When the counter reaches 0x00, the interrupt is unhooked and the
application terminates. The application can also be terminated by
pressing <esc>.
** Notes **
If your system is running without interrupts active, the application
will terminate immediately.
All slots have vectors even if the corresponding interrupt is not
doing anything. In this case, the vector is pointing to the "bad
interrupt" handler.
If you hook a vector that is not receiving any interrupts, the
down-counter will not do anything.
** Etymology* *
The `INTTEST` command is an original product and the source code is
provided in the RomWBW distribution.

View File

@@ -7,8 +7,8 @@
***********************************************************************
This directory ("Doc/CPM") is part of the RomWBW System Software
distribution archive. It contains documentation for the CP/M
operating system components of the system.
distribution archive. It contains documentation for the CP/M and
CP/M work-alike operating system components of the system.
CPM Manual ("CPM Manual.pdf")

View File

@@ -14,7 +14,26 @@ 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)
- M?R: Update Timer app to display output in decimal
- WBW: Preliminary support for S100 FPGA Z80 platform
- WBW: Added simple serial (SSER) driver
- WBW: Added preliminary support for S100 FPGA Z80 SD Cards
- M?R: Consolidated ROM Applications document into the Applications document
- M?R: Reviewed and substantially improved the Applications document
- WBW: Added support for DS1305 RTC on S100 FPGA Z80
- WBW: Added support for Les Bird's RCBus Graphics/Sound/Joystick module
- 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
-----------
@@ -683,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.

Binary file not shown.

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.

Binary file not shown.

Binary file not shown.

View File

@@ -1,144 +0,0 @@
SIMH (X)
----
- Test UART driver
- Test HDSK driver
Zeta 1 (X)
------
- Test UART driver
- Test PPP detection (startup w/ and w/o PPP)
- Test boot to CRT
- Test PPPSD driver
- Test PPPCON driver (video & kbd)
- Test FD driver
- Test FDU app
Zeta 2 (X)
------
- Test UART driver
- Test PPP detection (startup w/ and w/o PPP)
- Test boot to CRT
- Test PPPSD driver
- Test PPPCON driver (video & kbd)
- Test FD driver
- Test FDU app
RCBus (X)
------
- Test SIO driver (Serial Module)
- Test ACIA driver (Dual Serial Module)
- Test IDE driver (Compact Flash Module)
- Test PPIDE driver (IDE Module)
- Test FD driver (SMC and WDC)
- Test FDU app (SMC and WDC)
N8-2312 (X)
-------
- Test ASCI driver
- Test SD driver (CSIO mode)
- Test FD driver
- Test FDU app
- Test TMS driver (video & kbd)
N8-2511 (X)
-------
- Test ASCI driver
- Test SD driver (Juha mode)
- Test FD driver
- Test FDU app
- Test TMS driver (video & kbd)
SBC (X)
---
- Test UART driver
- Test PPIDE driver
- Test PPISD driver
- Test PRP detection
- Test boot to CRT console
MK4 (X)
---
- Test ASCI driver
- Test IDE driver
- Test SD driver
- Test PRP detection
RAMF (X)
----
- Test RAMF driver
PRP (X)
---
- Test PRPSD driver
- Test PRPCON driver (video & kbd)
SCG (X)
---
- Test TMS driver (video)
VDU (X)
---
- Test CVDU driver (video & kbd)
CVDU (X)
----
- Test CVDU driver (video & kbd)
VGA (X)
---
- Test VGA driver (video & kbd)
DIO (X)
---
- Test FD driver
- Test FDU app
- Test IDE driver
DIO3 (X)
----
- Test FD driver
- Test FDU app
- Test PPIDE driver
DIDE (X)
----
- Test FD driver
- Test FDU app
- Test IDE driver
DSD (X)
---
- Test SD driver
4UART (X)
-----
- Test UART driver
UNA (X)
---
- General Startup
- Boot from disk functionality
- Image loading
- Monitor
- XM app
- ASSIGN app
- MODE app
- SYSCOPY app
- OSLDR app
- FDU app
- FDISK80 app
GENERAL (X)
-------
- Boot to ROM
- Boot to Disk
- Boot to Monitor
- XM app
- XM port auto-detect
- ASSIGN app
- MODE app
- SYSCOPY app
- FDU app
- FDISK80 app
- TUNE app

View File

@@ -3,7 +3,7 @@
**RomWBW ReadMe** \
Version 3.5 \
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
13 May 2024
04 Sep 2024
# Overview
@@ -112,22 +112,20 @@ functionality.
Complete instructions for installation and operation of RomWBW are found
in the [RomWBW User
Guide](https://github.com/wwarthen/RomWBW/raw/dev/Doc/RomWBW%20User%20Guide.pdf).
Guide](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20User%20Guide.pdf).
## Documentation
Documentation for RomWBW includes:
- [RomWBW User
Guide](https://github.com/wwarthen/RomWBW/raw/dev/Doc/RomWBW%20User%20Guide.pdf)
Guide](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20User%20Guide.pdf)
- [RomWBW System
Guide](https://github.com/wwarthen/RomWBW/raw/dev/Doc/RomWBW%20System%20Guide.pdf)
Guide](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20System%20Guide.pdf)
- [RomWBW
Applications](https://github.com/wwarthen/RomWBW/raw/dev/Doc/RomWBW%20Applications.pdf)
- [RomWBW ROM
Applications](https://github.com/wwarthen/RomWBW/raw/dev/Doc/RomWBW%20ROM%20Applications.pdf)
Applications](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20Applications.pdf)
- [RomWBW
Errata](https://github.com/wwarthen/RomWBW/raw/dev/Doc/RomWBW%20Errata.pdf)
Errata](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20Errata.pdf)
# Acknowledgments

View File

@@ -1,6 +1,6 @@
RomWBW ReadMe
Wayne Warthen (wwarthen@gmail.com)
13 May 2024
04 Sep 2024
@@ -122,7 +122,6 @@ Documentation for RomWBW includes:
- RomWBW User Guide
- RomWBW System Guide
- RomWBW Applications
- RomWBW ROM Applications
- RomWBW Errata

View File

@@ -0,0 +1,23 @@
@echo off
setlocal
set TOOLS=..\..\..\Tools
set PATH=%TOOLS%\zxcc;%PATH%
set CPMDIR80=%TOOLS%/cpm/
zxcc z80asm -dist/FM
zxcc z80asm -main/FM
zxcc z80asm -exec/FM
zxcc z80asm -eval/FM
zxcc z80asm -asmb/FM
zxcc z80asm -cmos/FM
zxcc z80asm -math/FM
zxcc z80asm -hook/FM
zxcc z80asm -data/FM
zxcc slrnk -/v,/a:0100,dist,main,exec,eval,asmb,math,hook,cmos,/p:4B00,data,bbcbasic/n,/e
copy /Y bbcbasic.com ..\..\..\Binary\Apps\ || exit /b
copy /Y bbcbasic.txt ..\..\..\Binary\Apps\ || exit /b

View File

@@ -0,0 +1,9 @@
@echo off
setlocal
if exist *.com del *.com
if exist *.lst del *.lst
if exist *.hex del *.hex
if exist *.prn del *.prn
if exist *.rel del *.rel
if exist *.sym del *.sym

View File

@@ -0,0 +1,11 @@
OBJECTS = bbcbasic.com
DOCS = bbcbasic.txt
DEST = ../../../Binary/Apps
DOCDEST = ../../../Binary/Apps
TOOLS = ../../../Tools
OTHERS = *.rel
include $(TOOLS)/Makefile.inc
bbcbasic.com: dist.rel main.rel exec.rel eval.rel asmb.rel cmos.rel math.rel hook.rel data.rel
$(ZXCC) SLRNK -/V,/A:0100,DIST,MAIN,EXEC,EVAL,ASMB,MATH,HOOK,CMOS,/P:4B00,DATA,BBCBASIC/N,/E

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,20 @@
This is a RomWBW HBIOS adaptation of BBCBASIC v5.00. The
cursor and screen management assumes the use of an ANSI/VT-100 terminal
which is generally correct for RomWBW. Support for a hardware system
timer is also implemented. If your system does not have a hardware
timer, the TIME function will always return 0 and the timeout
parameter of the INKEY(n) function will not be observed (will never
timeout).
What follows is some basic information on BBCBASIC from the
distribution. Note that it starts with the v3.00 information and
later on provides information on the changes in v5.00.
-- WBW 1:15 PM 5/30/2024
BBC BASIC (Z80)
Generic CP/M Version 3.00
@@ -366,4 +383,73 @@
198 Disk full 254 Bad command
200 Close error 255 CP/M error
204 Bad name


New features in BBC BASIC (Z80) version 5.00, May 2024:
1. BASIC V statements
1.1 WHILE...ENDWHILE
1.2 Multi-line IF...THEN...ELSE...ENDIF
1.3 CASE...WHEN...OTHERWISE...ENDCASE
1.4 LOCAL DATA / RESTORE DATA
1.5 ON ERROR LOCAL / RESTORE ERROR
1.6 DIM var LOCAL size
1.7 ERROR err, message$
1.8 RESTORE +n
1.9 SWAP var1,var2
1.10 BPUT #file,string$[;]
1.11 QUIT
2. BASIC V functions
2.1 DIM(array()[,sub])
2.2 END (pointer to free space)
2.3 REPORT$
2.4 Binary constants
2.5 LEFT$ & RIGHT$ with last parameter omitted
2.6 MOD(array)
2.7 SUM(array)
2.8 SUMLEN(array)
2.9 GET$#file
3. BASIC V whole array operations
3.1 Pass a whole array to a FN/PROC
3.2 Pass a whole array to CALL
3.3 Whole array assignment
3.4 Whole array arithmetic *
3.5 Array dot-product operator
3.6 Array initialisation lists
3.7 Array compound assignment (+= etc.)
3.8 Make a whole array LOCAL
3.9 DIM a LOCAL array (on the stack) +
* String array expressions A$() = B$() + C$() are not currently supported.
+ LOCAL string arrays should be initialised to their maximum needed length
to eliminate the risk of a memory leak each time the PROC/FN is called:
LOCAL a$() : DIM a$(size%) : a$() = STRING$(max%, "a") : a$() = ""
4. Miscellaneous BASIC V features
4.1 Bit-shifts <<, >>, >>>
4.2 Floating-point indirection (|)
4.3 RETURNed parameters from FN/PROC
4.4 Compound assignment (+=, -=, *=, /= etc.)
4.5 Assigning to a sub-string: LEFT$()=, MID$()= , RIGHT$()=
4.6 Hooks for CIRCLE,ELLIPSE,FILL,LINE,MOUSE,ORIGIN,RECTANGLE,TINT,SYS,WAIT
4.7 Hooks for WIDTH function, TINT function, MODE function
5. Extensions to Acorn's BASIC V, compatible with BB4W, BBCSDL and BBCTTY
5.1 EXIT REPEAT / WHILE / FOR [var]
5.2 Address-of operator ^
5.3 Byte variables and arrays (& suffix)
5.4 'BY len' and 'TO term' qualifiers to GET$#file
5.5 ELSE IF <condition> THEN; (trailing semicolon)
5.6 == synonymous with = in comparisons
5.7 DIM a global array inside a FN/PROC (use RETURN)
Note: The token for PUT has changed from &CE in version 3 to &0E in version 5.
If this token is present in existing programs it will list as ENDWHILE rather
than PUT, and the programs will need to be modified to restore functionality.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,69 @@
TITLE BBC BASIC (C) R.T.RUSSELL 1981-2024
NAME ('DATA')
;
;RAM MODULE FOR BBC BASIC INTERPRETER
;FOR USE WITH VERSION 5.0 OF BBC BASIC
;(C) COPYRIGHT R.T.RUSSELL 1981-2024
;
GLOBAL ACCS
GLOBAL BUFFER
GLOBAL ONERSP
GLOBAL LIBASE
GLOBAL PAGE
GLOBAL LOMEM
GLOBAL FREE
GLOBAL HIMEM
GLOBAL RANDOM
GLOBAL COUNT
GLOBAL WIDTH
GLOBAL ERL
GLOBAL ERR
GLOBAL ERRTRP
GLOBAL ERRTXT
GLOBAL TRACEN
GLOBAL AUTONO
GLOBAL INCREM
GLOBAL LISTON
GLOBAL DATPTR
GLOBAL FNPTR
GLOBAL PROPTR
GLOBAL STAVAR
GLOBAL OC
GLOBAL PC
GLOBAL DYNVAR
GLOBAL CURLIN
GLOBAL USER
;
;n.b. ACCS, BUFFER & STAVAR must be on page boundaries.
;
ACCS: DEFS 256 ;STRING ACCUMULATOR
BUFFER: DEFS 256 ;STRING INPUT BUFFER
STAVAR: DEFS 27*4 ;STATIC VARIABLES
OC EQU STAVAR+15*4 ;CODE ORIGIN (O%)
PC EQU STAVAR+16*4 ;PROGRAM COUNTER (P%)
DYNVAR: DEFS 54*2 ;DYN. VARIABLE POINTERS
FNPTR: DEFS 2 ;DYN. FUNCTION POINTER
PROPTR: DEFS 2 ;DYN. PROCEDURE POINTER
;
PAGE: DEFS 2 ;START OF USER PROGRAM
LOMEM: DEFS 2 ;START OF DYN. STORAGE
FREE: DEFS 2 ;FIRST FREE-SPACE BYTE
HIMEM: DEFS 2 ;FIRST BYTE ABOVE STACK
LIBASE: DEFS 2 ;START OF FIRST LIBRARY
;
TRACEN: DEFS 2 ;TRACE FLAG AND NUMBER
AUTONO: DEFS 2 ;AUTO FLAG AND NUMBER
ERRTRP: DEFS 2 ;ON ERROR STMT POINTER \
ONERSP: DEFS 2 ;ON ERROR LOCAL STKPTR /
ERRTXT: DEFS 2 ;ERROR MESSAGE POINTER
DATPTR: DEFS 2 ;DATA POINTER
ERL: DEFS 2 ;LINE NO OF LAST ERROR
CURLIN: DEFS 2 ;POINTER TO CURRENT LINE
RANDOM: DEFS 5 ;RANDOM NUMBER
COUNT: DEFS 1 ;PRINT POSITION
WIDTH: DEFS 1 ;PRINT WIDTH
ERR: DEFS 1 ;ERROR NUMBER
LISTON: DEFS 1 ;LISTO & OPT FLAG
INCREM: DEFS 1 ;AUTO INCREMENT
;
USER: END

View File

@@ -1,7 +1,8 @@
TITLE BBCDIST.Z80 (C) R.T.RUSSELL 1982
TITLE BBCDIST.Z80 (C) R.T.RUSSELL 1982-2024
NAME ('DIST3')
;
;BBC BASIC (Z80) - CP/M VERSION 2.30 & 3.00
;(C) COPYRIGHT R.T.RUSSELL, 1982.
;BBC BASIC (Z80) - CP/M VERSION 2.20 & 3.00
;(C) COPYRIGHT R.T.RUSSELL, 1982-2024.
;ALL RIGHTS RESERVED.
;
;THIS PROGRAM ALLOWS THE USER TO ADAPT BBC BASIC TO THE
@@ -13,11 +14,14 @@
;PLEASE NOTE THAT A Z80 PROCESSOR AND CP/M VERSION 2.2
;OR LATER ARE REQUIRED.
;
;R.T.RUSSELL, 11-03-1984, 03-05-1989
;ALTERNATE REGISTERS SAVED FOR BDOS CALL, 04-06-2000
;R.T.RUSSELL, 11-03-1984, 03-05-1989, 12-05-2024
;
CPM EQU 5
COLD EQU 200H
;
CR EQU 0DH
LF EQU 0AH
ESC EQU 1BH
;
GLOBAL CLRSCN
GLOBAL PUTCSR
@@ -26,14 +30,18 @@ COLD EQU 200H
GLOBAL GETIME
GLOBAL GETKEY
GLOBAL BYE
GLOBAL BEGIN
; GLOBAL BDOS
;
ASEG
ORG 100H
; EXTRN PRTDEC16
;
;ASEG
;ORG 100H
;
;JUMP TABLE - BASIC makes calls to hardware-dependent
;features via this table:
;
JP INIT
BEGIN: JP INIT
CLRSCN: JP CLS ;CLEAR SCREEN
PUTCSR: JP PCSR ;SET CURSOR POSN.
GETCSR: JP GCSR ;READ CURSOR POSN.
@@ -42,30 +50,33 @@ GETIME: JP GTIME ;READ ELAPSED TIME
GETKEY: JP INKEY ;READ KEY (TIME LIMIT)
BYE: JP REBOOT ;RETURN TO CP/M
;
;THE CODE WHICH FOLLOWS IS A SKELETON VERSION SUITABLE
;FOR ANY CP/M SYSTEM. IT HAS BEEN CONFIGURED FOR A VT100 TO SOME DEGREE
;BY PETER SCHORN.
;BDOS - Save the IX and IY registers and before performing a
; CP/M function call.
;
BDOS: PUSH IX
PUSH IY
CALL CPM
POP IY
POP IX
RET
;
PRSTR EQU 9
;INIT - Perform hardware initialisation (if any).
;
INIT: LD A,2
INC A
LD DE,NOTZ80
JP PE,FAIL
LD C,12
CALL BDOS
OR A
LD DE,NOTV2
JP NZ,COLD
FAIL: LD C,PRSTR
INIT: LD HL,40H ;CPM/HBIOS MARKER LOC
LD A,'W'
CP (HL)
JR NZ,FAIL
INC HL
LD A,NOT 'W'
CP (HL)
JR NZ,FAIL
JP COLD
FAIL: LD DE,NOTHB
LD C,9
CALL BDOS
RST 0
;
NOTZ80: DEFB 'Wrong processor$'
NOTV2: DEFB 'Wrong CP/M version$'
NOTHB: DEFB 'CP/M w/ HBIOS required$'
;
;REBOOT - Switch off interrupts and return to CP/M
;
@@ -75,31 +86,34 @@ REBOOT: RST 0
; Outputs: DEHL = elapsed time (centiseconds)
; Destroys: A,D,E,H,L,F
;
GTIME: LD DE,0
LD HL,0
RET
GTIME: JR TICKS
;
;PTIME - Load elapsed-time clock.
; Inputs: DEHL = time to load (centiseconds)
; Destroys: A,D,E,H,L,F
;
PTIME: RET
;
;CLS - Clear screen for VT100.
; Destroys: A,D,E,H,L,F
;
CLS: PUSH BC ; save BC
LD C,PRSTR ; command for output string
LD DE,CLSSTR ; start address of string
CALL BDOS ; output to terminal
POP BC ; restore BC
PTIME:
LD BC,0F9D0H
SRL D
RR E
RR H
RR L
RST 08
RET
;
; Get OS elapsed-time clock
; Outputs: DEHL = time (centiseconds)
; Destroys: A,B,C,D,E,H,L,F
;
TICKS: LD BC,0F8D0H
RST 08
SLA L
RL H
RL E
RL D
RET
CLSSTR: DEFB 27,'[2J$' ; VT100 string for clear screen
;
;INKEY - Sample keyboard with specified wait.
; This version uses a simple software timing loop.
; Modify to use hardware/interrupt timer if available.
; Inputs: HL = Time to wait (centiseconds)
; Outputs: Carry reset indicates time-out.
; If carry set, A = character typed.
@@ -107,52 +121,64 @@ CLSSTR: DEFB 27,'[2J$' ; VT100 string for clear screen
;
INKEY: PUSH BC
PUSH HL
CALL TICKS
POP DE
ADD HL,DE
WAIT: PUSH HL
LD C,6
LD E,0FFH
CALL BDOS ;CONSOLE INPUT
CALL BDOS
POP HL
POP BC
OR A
SCF
RET NZ ;KEY PRESSED
OR H
OR L
RET Z ;TIME-OUT
PUSH BC
LD A,-1
LD BC,1250 ;DELAY CONSTANT
WAIT: DEC BC
CP B
JP NZ,WAIT ;WAIT FOR APPROX 10ms
POP BC
DEC HL
JR INKEY
JR NZ,INKEY1
PUSH HL
CALL TICKS
POP DE
SBC HL,DE
EX DE,HL
JR C,WAIT
INKEY1: POP BC
RET
;
;CLS - Clear screen.
; (Customise to suit your VDU)
; Destroys: A,D,E,H,L,F
;
CLS:
LD DE,CLSSTR
LD C,9
JP BDOS
;
CLSSTR: DEFB ESC,'[H',ESC,'[2J$'
;
;PCSR - Move cursor to specified position.
; Inputs: DE = horizontal position (LHS=0)
; HL = vertical position (TOP=0)
; called by TAB(column, row)
; Destroys: A,D,E,H,L,F
;
PCSR: LD B,L ; vertical = line (row)
CALL CONV ; normalized and convert to decimal
LD (LIN),HL ; and store into string
LD B,E ; horizontal = column
CALL CONV ; normalized and convert to decimal
LD (COL),HL ; and store into string
LD C,PRSTR ; output string command
LD C,9 ; output string command
LD DE,CURS ; start of string
JR BDOS ; output string to terminal
JP BDOS ; output string to terminal
;
; VT100 sequence for cursor positioning
CURS: DEFB 27, '['
LIN: DEFW 0 ; high byte, low byte for decimal line
DEFB ';'
COL: DEFW 0 ; high byte, low byte for decimal column
DEFB 'H$'
;
; convert binary B (0 <= B < 99, not checked) into B+1 in decimal.
; L = upper byte, H = lower byte. ready for LD (...), HL
; destroys A, B, L, H
; optimized for space over time
;
CONV: INC B ; normalize, home in VT100 is (1,1)
LD A,'0' ; A is counter for low byte of result
LD L,A ; L is counter for high byte of result
@@ -164,35 +190,7 @@ CONVLP: INC A ; now B times increment AL in decimal
CONT: DJNZ CONVLP ; B times
LD H,A ; put low byte into right place
RET
;BDOS - Save the IX and IY and alternate registers
; before performing a CP/M function call.
;
BDOS: PUSH IX
PUSH IY
EXX
PUSH BC
PUSH DE
PUSH HL
EXX
EX AF,AF'
PUSH AF
EX AF,AF'
CALL CPM
EX AF,AF'
POP AF
EX AF,AF'
EXX
POP HL
POP DE
POP BC
EXX
POP IY
POP IX
RET
;GCSR - Return cursor coordinates.
; Outputs: DE = X coordinate (POS)
; HL = Y coordinate (VPOS)
@@ -202,24 +200,42 @@ GCSR: LD DE,0
LD HL,0
RET
;
IF $ GT 1F4H
;COUT - Output a character to the console
; Inputs: A = character
; Destroys: A,F
;
COUT: PUSH BC
PUSH DE
PUSH HL
LD E,A
LD C,2
CALL BDOS
POP HL
POP DE
POP BC
RET
;
;IF $ GT 1F0H
IF $-BEGIN GT 0F0H
ERROR 'INSUFFICIENT SPACE'
ENDIF
;
ORG 1F4H
;ORG 1F0H
DEFS 0F0H - ($ - BEGIN)
;
OFFLO: DEFW 0 ;TIME OFFSET LO
OFFHI: DEFW 0 ;TIME OFFSET HI
DEFB 80 ;WIDTH
DEFB 'E' AND 1FH ;CURSOR UP
DEFB 'X' AND 1FH ;CURSOR DOWN
DEFB 'A' AND 1FH ;START OF LINE
DEFB 'F' AND 1FH ;END OF LINE
DEFB 'T' AND 1FH ;DELETE TO END OF LINE
DEFB 'H' AND 1FH ;BACKSPACE
DEFB 'U' AND 1FH ;CANCEL LINE
DEFB 'S' AND 1FH ;CURSOR LEFT
DEFB 'D' AND 1FH ;CURSOR RIGHT
DEFB 'G' AND 1FH ;DELETE CHARACTER
DEFB 'V' AND 1FH ;INSERT CHARACTER
DEFB 'G' AND 1FH ;CURSOR UP
DEFB 'O' AND 1FH ;CURSOR DOWN
DEFB 'F' AND 1FH ;START OF LINE
DEFB 'N' AND 1FH ;END OF LINE
DEFB 'X' AND 1FH ;DELETE TO END OF LINE
DEFB 08H ;BACKSPACE & DELETE
DEFB 'U' AND 1FH ;DEL TO START OF LINE
DEFB 'J' AND 1FH ;CURSOR LEFT
DEFB 'L' AND 1FH ;CURSOR RIGHT
DEFB 'R' AND 1FH ;DELETE CHARACTER
DEFB 'Q' AND 1FH ;INS/OVR TOGGLE
;
FIN: END


File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,64 @@
NAME ('HOOK')
;
GLOBAL CLG
GLOBAL COLOUR
GLOBAL DRAW
GLOBAL ENVEL
GLOBAL GCOL
GLOBAL MODE
GLOBAL MOVE
GLOBAL PLOT
GLOBAL SOUND
GLOBAL PUTIMS
GLOBAL CIRCLE
GLOBAL ELLIPSE
GLOBAL FILL
GLOBAL MOUSE
GLOBAL ORIGIN
GLOBAL RECTAN
GLOBAL LINE
GLOBAL TINT
GLOBAL WAIT
GLOBAL SYS
;
GLOBAL ADVAL
GLOBAL POINT
GLOBAL GETIMS
GLOBAL TINTFN
GLOBAL MODEFN
GLOBAL WIDFN
;
EXTRN EXTERR
;
CLG:
COLOUR:
DRAW:
ENVEL:
GCOL:
MODE:
MOVE:
PLOT:
SOUND:
ADVAL:
POINT:
GETIMS:
PUTIMS:
CIRCLE:
ELLIPSE:
FILL:
MOUSE:
ORIGIN:
RECTAN:
LINE:
TINT:
TINTFN:
MODEFN:
WIDFN:
WAIT:
SYS:
XOR A
CALL EXTERR
DEFM 'Sorry'
DEFB 0
;
END

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -30,6 +30,7 @@ pushd VGM && call Build || exit /b & popd
pushd cpuspd && call Build || exit /b & popd
pushd Survey && call Build || exit /b & popd
pushd HTalk && call Build || exit /b & popd
pushd BBCBASIC && call Build || exit /b & popd
copy *.com %APPBIN%\ || exit /b

View File

@@ -19,3 +19,4 @@ pushd VGM && call Clean || exit /b 1 & popd
pushd cpuspd && call Clean || exit /b 1 & popd
pushd Survey && call Clean || exit /b 1 & popd
pushd HTalk && call Clean || exit /b 1 & popd
pushd BBCBASIC && call Clean || exit /b 1 & popd

View File

@@ -1,6 +1,6 @@
OBJECTS = sysgen.com syscopy.com assign.com format.com talk.com \
mode.com rtc.com timer.com rtchb.com
SUBDIRS = HTalk XM FDU FAT Tune Test ZMP ZMD Dev VGM cpuspd Survey
SUBDIRS = HTalk XM FDU FAT Tune Test ZMP ZMD Dev VGM cpuspd Survey BBCBASIC
DEST = ../../Binary/Apps
TOOLS =../../Tools

View File

@@ -8,4 +8,5 @@ set TASMTABS=%TOOLS%\tasm32
tasm -t180 -g3 -fFF inttest.asm inttest.com inttest.lst || exit /b
copy /Y inttest.com ..\..\..\..\Binary\Apps\Test\ || exit /b
copy /Y inttest.doc ..\..\..\..\Binary\Apps\Test\ || exit /b

View File

@@ -1,5 +1,7 @@
OBJECTS = inttest.com
DOCS = inttest.doc
DEST = ../../../../Binary/Apps/Test
DOCDEST = ../../../../Binary/Apps/Test
TOOLS =../../../../Tools
USETASM=1

View File

@@ -176,6 +176,8 @@ estidx:
jr z,hkim
cp 2
jr z,hkim
cp 3
jr z,hkim
ret
;
; Setup interrupt handler
@@ -545,8 +547,8 @@ stack .equ $ ; stack top
;
; Messages
;
msgban .db "INTTEST v1.2, 15-May-2019",13,10
.db "Copyright (C) 2019, Wayne Warthen, GNU GPL v3",0
msgban .db "INTTEST v1.3, 16-May-2024",13,10
.db "Copyright (C) 2024, Wayne Warthen, GNU GPL v3",0
msginfo .db "Interrupt information request...",0
msgmode .db " Active interrupt mode: ",0
msgcnt .db " Vector entries in use: ",0

View File

@@ -0,0 +1,44 @@
INTTEST
=======
RomWBW includes an API allowing applications to "hook" interrupts.
The `INTTEST` utility allows you to test this functionality.
** Syntax **
`INTTEST`
** Usage **
`INTTEST` is an interactive application. At startup, it will display
a list of the interrupt vector slots in your system along with the
current vector address for each of them.
It then prompts you to enter the slot number (in hex) of a vector to
hook. After entering this, the application will watch the hooked
vector and countdown from 0xFF to 0x00 as interrupts are noted.
When the counter reaches 0x00, the interrupt is unhooked and the
application terminates. The application can also be terminated by
pressing <esc>.
** Notes **
If your system is running without interrupts active, the application
will terminate immediately.
All slots have vectors even if the corresponding interrupt is not
doing anything. In this case, the vector is pointing to the "bad
interrupt" handler.
If you hook a vector that is not receiving any interrupts, the
down-counter will not do anything.
** Etymology* *
The `INTTEST` command is an original product and the source code is
provided in the RomWBW distribution.

View File

@@ -11,6 +11,7 @@
; WBW 2022-04-01: Add menu for test functions
; WBW 2022-04-02: Fix prtchr register saving/recovery
; WBW 2023-10-19: Add support for Duodyne
; WBW 2024-06-10: Add support for RC2014
;
;=======================================================================
;
@@ -25,6 +26,10 @@ iodat_rph .equ $8C ; PS/2 controller data port address
; Duodyne:
iocmd_duo .equ $4D ; PS/2 controller command port address
iodat_duo .equ $4C ; PS/2 controller data port address
; RC2014 (EP/Sally)
iocmd_rc .equ $64 ; PS/2 controller command port address
iodat_rc .equ $60 ; PS/2 controller data port address
;
cpumhz .equ 8 ; for time delay calculations (not critical)
;
@@ -87,6 +92,8 @@ setup1:
jr z,setup_rph
cp '3' ; Duodyne
jr z,setup_duo
cp '4' ; RC2014 EP/Sally
jr z,setup_rc
cp 'X'
jr z,exit
jr setup
@@ -115,6 +122,14 @@ setup_duo:
ld de,str_duo
jr setup2
;
setup_rc:
ld a,iocmd_rc
ld (iocmd),a
ld a,iodat_rc
ld (iodat),a
ld de,str_rc
jr setup2
;
setup2:
call prtstr
call crlf2
@@ -1437,16 +1452,18 @@ delay1:
; Constants
;=======================================================================
;
str_banner .db "PS/2 Keyboard/Mouse Information v0.8, 6-Nov-2023",0
str_banner .db "PS/2 Keyboard/Mouse Information v0.9, 10-Jun-2024",0
str_hwmenu .db "PS/2 Controller Port Options:\r\n\r\n"
.db " 1 - Nhyodyne\r\n"
.db " 2 - Rhyophyre\r\n"
.db " 3 - Duodyne\r\n"
.db " 4 - RC2014\r\n"
.db " X - Exit Application\r\n"
.db "\r\nSelection? ",0
str_mbc .db "Nhyodyne",0
str_rph .db "Rhyophyre",0
str_duo .db "Duodyne",0
str_rc .db "RC2014 (Saly)",0
str_menu .db "PS/2 Testing Options:\r\n\r\n"
.db " C - Test PS/2 Controller\r\n"
.db " K - Test PS/2 Keyboard\r\n"

View File

@@ -49,6 +49,8 @@
; 2024-02-23 [WBW] Include ACR value in config table
; 2024-04-16 [WBW] Add support for NABU AY-3-8910
; 2024-05-10 [WBW] Hack to avoid corrupting bits 6&7 of PSG R7 for NABU!
; 2024-07-08 [WBW] Add support for Les Bird's Graphics, Sound, Joystick
; 2024-07-11 [WBW] Updated, Les Bird's module now uses same settings as EB6
;_______________________________________________________________________________
;
; ToDo:
@@ -572,8 +574,8 @@ CFGSIZ .EQU $ - CFGTBL
.DB $07, $D8, $D0, $D8, $FF, $FF, $FF ; RCZ80 W/ RC SOUND MODULE (EB)
.DW HWSTR_RCEB
;
.DB $07, $A0, $A1, $A2, $FF, $FF, $FF ; RCZ80 W/ RC SOUND MODULE (EB Rev 6)
.DW HWSTR_RCEB6
.DB $07, $A0, $A1, $A2, $FF, $FF, $FF ; RCZ80 W/ RC SOUND MODULE (MSX)
.DW HWSTR_RCMSX
;
.DB $07, $D1, $D0, $D0, $FF, $FF, $FF ; RCZ80 W/ RC SOUND MODULE (MF)
.DW HWSTR_RCMF
@@ -584,8 +586,8 @@ CFGSIZ .EQU $ - CFGTBL
.DB $08, $68, $60, $68, $C0, $FF, $FF ; RCZ180 W/ RC SOUND MODULE (EB)
.DW HWSTR_RCEB
;
.DB $08, $A0, $A1, $A2, $C0, $FF, $FF ; RCZ180 W/ RC SOUND MODULE (EB Rev 6)
.DW HWSTR_RCEB6
.DB $08, $A0, $A1, $A2, $C0, $FF, $FF ; RCZ180 W/ RC SOUND MODULE (MSX)
.DW HWSTR_RCMSX
;
.DB $08, $61, $60, $60, $C0, $FF, $FF ; RCZ180 W/ RC SOUND MODULE (MF)
.DW HWSTR_RCMF
@@ -596,8 +598,8 @@ CFGSIZ .EQU $ - CFGTBL
.DB $09, $D8, $D0, $D8, $FF, $FF, $FF ; EZZ80 W/ RC SOUND MODULE (EB)
.DW HWSTR_RCEB
;
.DB $09, $A0, $A1, $A2, $FF, $FF, $FF ; EZZ80 W/ RC SOUND MODULE (EB Rev 6)
.DW HWSTR_RCEB6
.DB $09, $A0, $A1, $A2, $FF, $FF, $FF ; EZZ80 W/ RC SOUND MODULE (MSX)
.DW HWSTR_RCMSX
;
.DB $09, $D1, $D0, $D0, $FF, $FF, $FF ; EZZ80 W/ RC SOUND MODULE (MF)
.DW HWSTR_RCMF
@@ -608,8 +610,8 @@ CFGSIZ .EQU $ - CFGTBL
.DB $0A, $68, $60, $68, $C0, $FF, $FF ; SCZ180 W/ RC SOUND MODULE (EB)
.DW HWSTR_RCEB
;
.DB $0A, $A0, $A1, $A2, $C0, $FF, $FF ; SCZ180 W/ RC SOUND MODULE (EB Rev 6)
.DW HWSTR_RCEB6
.DB $0A, $A0, $A1, $A2, $C0, $FF, $FF ; SCZ180 W/ RC SOUND MODULE (MS6)
.DW HWSTR_RCMSX
;
.DB $0A, $61, $60, $60, $C0, $FF, $FF ; SCZ180 W/ RC SOUND MODULE (MF)
.DW HWSTR_RCMF
@@ -620,8 +622,8 @@ CFGSIZ .EQU $ - CFGTBL
.DB $0B, $D8, $D0, $D8, $FF, $FF, $FF ; RCZ280 W/ RC SOUND MODULE (EB)
.DW HWSTR_RCEB
;
.DB $0B, $A0, $A1, $A2, $FF, $FF, $FF ; RCZ280 W/ RC SOUND MODULE (EB Rev 6)
.DW HWSTR_RCEB6
.DB $0B, $A0, $A1, $A2, $FF, $FF, $FF ; RCZ280 W/ RC SOUND MODULE (MSX)
.DW HWSTR_RCMSX
;
.DB $0B, $D1, $D0, $D0, $FF, $FF, $FF ; RCZ280 W/ RC SOUND MODULE (MF)
.DW HWSTR_RCMF
@@ -666,7 +668,7 @@ TMP .DB 0 ; work around use of undocumented Z80
HBIOSMD .DB 0 ; NON-ZERO IF USING HBIOS SOUND DRIVER, ZERO OTHERWISE
OCTAVEADJ .DB 0 ; AMOUNT TO ADJUST OCTAVE UP OR DOWN
MSGBAN .DB "Tune Player for RomWBW v3.8, 10-May-2024",0
MSGBAN .DB "Tune Player for RomWBW v3.10, 11-Jul-2024",0
MSGUSE .DB "Copyright (C) 2024, Wayne Warthen, GNU GPL v3",13,10
.DB "PTxPlayer Copyright (C) 2004-2007 S.V.Bulba",13,10
.DB "MYMPlay by Marq/Lieves!Tuore",13,10,13,10
@@ -687,7 +689,7 @@ MSGERR .DB "App Error", 0
HWSTR_SCG .DB "SCG ECB Board",0
HWSTR_N8 .DB "N8 Onboard Sound",0
HWSTR_RCEB .DB "RCBus Sound Module (EB)",0
HWSTR_RCEB6 .DB "RCBus Sound Module (EBv6)",0
HWSTR_RCMSX .DB "RCBus Sound Module (MSX)",0
HWSTR_RCMF .DB "RCBus Sound Module (MF)",0
HWSTR_LINC .DB "Z50 LiNC Sound Module",0
HWSTR_MBC .DB "NHYODYNE Sound Module",0

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

File diff suppressed because it is too large Load Diff

View File

@@ -11,6 +11,7 @@ call BuildZRC || exit /b
call BuildZ1RCC || exit /b
call BuildZZRCC || exit /b
call BuildZRC512 || exit /b
call BuildFZ80 || exit /b
if "%1" == "dist" (
call Clean || exit /b

4
Source/BuildFZ80.cmd Normal file
View File

@@ -0,0 +1,4 @@
@echo off
setlocal
pushd FZ80 && call Build || exit /b & popd

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,7 @@
$define{doc_ver}{Version 3.5}$
$define{doc_product}{RomWBW}$
$define{doc_root}{https://github.com/wwarthen/RomWBW/raw/dev/Doc}$
$define{file_root}{https://github.com/wwarthen/RomWBW/raw/master}$
$define{doc_root}{$file_root$/Doc}$
$ifndef{doc_title}$ $define{doc_title}{Document Title}$ $endif$
$ifndef{doc_author}$ $define{doc_author}{Wayne Warthen}$ $endif$
$define{doc_date}{$date{%d %b %Y}$}$
@@ -10,7 +11,6 @@ $define{doc_orgurl}{www.retrobrewcomputers.org}$
$define{doc_user}{[RomWBW User Guide]($doc_root$/RomWBW User Guide.pdf)}$
$define{doc_sys}{[RomWBW System Guide]($doc_root$/RomWBW System Guide.pdf)}$
$define{doc_apps}{[RomWBW Applications]($doc_root$/RomWBW Applications.pdf)}$
$define{doc_romapps}{[RomWBW ROM Applications]($doc_root$/RomWBW ROM Applications.pdf)}$
$define{doc_catalog}{[RomWBW Disk Catalog]($doc_root$/RomWBW Disk Catalog.pdf)}$
$define{doc_errata}{[RomWBW Errata]($doc_root$/RomWBW Errata.pdf)}$

View File

@@ -11,20 +11,18 @@ set PATH=%TOOLS%\gpp;%PATH%
if not "%1"=="" (call :GenDoc %1 & goto :eof)
call :GenDoc ReadMe
call :GenDoc UserGuide
call :GenDoc SystemGuide
call :GenDoc Applications
call :GenDoc ROM_Applications
call :GenDoc Catalog
call :GenDoc Errata
call :GenDoc ReadMe || exit /b
call :GenDoc UserGuide || exit /b
call :GenDoc SystemGuide || exit /b
call :GenDoc Applications || exit /b
call :GenDoc Catalog || exit /b
call :GenDoc Errata || exit /b
if exist ReadMe.gfm copy Readme.gfm ..\..\ReadMe.md || exit /b
if exist ReadMe.txt copy ReadMe.txt ..\..\ReadMe.txt || exit /b
if exist UserGuide.pdf copy UserGuide.pdf "..\..\Doc\RomWBW User Guide.pdf" || exit /b
if exist SystemGuide.pdf copy SystemGuide.pdf "..\..\Doc\RomWBW System Guide.pdf" || exit /b
if exist Applications.pdf copy Applications.pdf "..\..\Doc\RomWBW Applications.pdf" || exit /b
if exist ROM_Applications.pdf copy ROM_Applications.pdf "..\..\Doc\RomWBW ROM Applications.pdf" || exit /b
if exist Catalog.pdf copy Catalog.pdf "..\..\Doc\RomWBW Disk Catalog.pdf" || exit /b
if exist Errata.pdf copy Errata.pdf "..\..\Doc\RomWBW Errata.pdf" || exit /b

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 |

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 59 KiB

View File

@@ -0,0 +1,366 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export BankSwitchedMemory.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
width="6.51042in" height="5.73361in" viewBox="0 0 468.75 412.82" xml:space="preserve" color-interpolation-filters="sRGB"
class="st22">
<style type="text/css">
<![CDATA[
.st1 {fill:#c0c0c0;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
.st2 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
.st3 {stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
.st4 {fill:#ffffff;stroke:none;stroke-linecap:butt;stroke-width:7.2}
.st5 {fill:#000000;font-family:Calibri;font-size:0.75em}
.st6 {fill:#ffffff;stroke:none;stroke-linecap:butt}
.st7 {fill:#000000;font-family:Calibri;font-size:1.00001em}
.st8 {fill:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st9 {fill:#000000;font-family:Calibri;font-size:0.833336em}
.st10 {font-size:1em}
.st11 {stroke:#000000;stroke-dasharray:7,5;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
.st12 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5}
.st13 {stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5}
.st14 {marker-end:url(#mrkr4-136);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5}
.st15 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.37313432835821}
.st16 {fill:#000000;font-family:Calibri;font-size:0.666664em}
.st17 {stroke:#000000;stroke-dasharray:1.5,3;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5}
.st18 {marker-end:url(#mrkr4-165);marker-start:url(#mrkr10-163);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
.st19 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.08695652173913}
.st20 {marker-end:url(#mrkr4-136);marker-start:url(#mrkr10-193);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5}
.st21 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
.st22 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
]]>
</style>
<defs id="Markers">
<g id="lend4">
<path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"/>
</g>
<marker id="mrkr4-136" class="st15" refX="-5.36" orient="auto" markerUnits="strokeWidth" overflow="visible">
<use xlink:href="#lend4" transform="scale(-2.68,-2.68) "/>
</marker>
<g id="lend10">
<path
d="M 0 0.75 C -0.414214 0.75 -0.75 0.414214 -0.75 0 -0.75 -0.414214 -0.414214 -0.75 0 -0.75 0.414214 -0.75 0.75 -0.414214 0.75 0 0.75 0.414214 0.414214 0.75 0 0.75 Z "
style="stroke:none"/>
</g>
<marker id="mrkr10-163" class="st19" refX="7.125" orient="auto" markerUnits="strokeWidth" overflow="visible">
<use xlink:href="#lend10" transform="scale(11.5) "/>
</marker>
<marker id="mrkr4-165" class="st19" refX="-23" orient="auto" markerUnits="strokeWidth" overflow="visible">
<use xlink:href="#lend4" transform="scale(-11.5,-11.5) "/>
</marker>
<marker id="mrkr10-193" class="st15" refX="1.77" orient="auto" markerUnits="strokeWidth" overflow="visible">
<use xlink:href="#lend10" transform="scale(2.68) "/>
</marker>
</defs>
<g>
<title>Page-1</title>
<g id="group13-1" transform="translate(216.75,-109.92)">
<title>Data block.13</title>
<g id="shape14-2" transform="translate(157.745,0)">
<title>Sheet.14</title>
<path d="M0 412.82 L11.41 401.41 L11.41 228.61 L0 240.02 L0 412.82 Z" class="st1"/>
</g>
<g id="shape15-4" transform="translate(0,-172.8)">
<title>Sheet.15</title>
<path d="M0 412.82 L157.75 412.82 L169.15 401.41 L11.41 401.41 L0 412.82 Z" class="st1"/>
</g>
<g id="shape16-6">
<title>Sheet.16</title>
<rect x="0" y="240.02" width="157.745" height="172.8" class="st2"/>
</g>
</g>
<g id="group9-8" transform="translate(216.75,-282.72)">
<title>Data block.9</title>
<g id="shape10-9" transform="translate(157.745,0)">
<title>Sheet.10</title>
<path d="M0 412.82 L11.41 401.41 L11.41 343.81 L0 355.22 L0 412.82 Z" class="st1"/>
</g>
<g id="shape11-11" transform="translate(0,-57.6)">
<title>Sheet.11</title>
<path d="M0 412.82 L157.75 412.82 L169.15 401.41 L11.41 401.41 L0 412.82 Z" class="st1"/>
</g>
<g id="shape12-13">
<title>Sheet.12</title>
<rect x="0" y="355.22" width="157.745" height="57.6" class="st2"/>
</g>
</g>
<g id="group5-15" transform="translate(216.75,-340.32)">
<title>Data block</title>
<g id="shape6-16" transform="translate(157.745,0)">
<title>Sheet.6</title>
<path d="M0 412.82 L11.41 401.41 L11.41 379.81 L0 391.22 L0 412.82 Z" class="st1"/>
</g>
<g id="shape7-18" transform="translate(0,-21.6)">
<title>Sheet.7</title>
<path d="M0 412.82 L157.75 412.82 L169.15 401.41 L11.41 401.41 L0 412.82 Z" class="st1"/>
</g>
<g id="shape8-20">
<title>Sheet.8</title>
<rect x="0" y="391.22" width="157.745" height="21.6" class="st2"/>
</g>
</g>
<g id="shape2-22" transform="translate(65.55,486.457) rotate(180)">
<title>Sheet.2</title>
<desc>$FE00</desc>
<path d="M0 412.82 L36 412.82" class="st3"/>
<rect x="-29.1072" y="-418.22" width="22.2144" height="10.7998" transform="rotate(180)" class="st4"/>
<text x="-29.11" y="-410.12" transform="rotate(180)" class="st5">$FE00</text> </g>
<g id="shape3-27" transform="translate(65.55,542.541) rotate(180)">
<title>Sheet.3</title>
<desc>$D000</desc>
<path d="M0 412.82 L36 412.82" class="st3"/>
<rect x="-29.8916" y="-418.22" width="23.7832" height="10.7998" transform="rotate(180)" class="st6"/>
<text x="-29.89" y="-410.12" transform="rotate(180)" class="st5">$D000</text> </g>
<g id="shape17-32" transform="translate(433.37,106.7) rotate(90)">
<title>Sheet.17</title>
<desc>$8000</desc>
<path d="M0 412.82 L46.25 412.82" class="st3"/>
<rect x="-38.3323" y="-420.02" width="30.4102" height="14.4001" transform="rotate(180)" class="st6"/>
<text x="-38.33" y="-409.22" transform="rotate(180)" class="st7">$8000</text> </g>
<g id="group18-37" transform="translate(297.405,-282.72)">
<title>3D stack middle</title>
<g id="shape19-38" transform="translate(77.0909,0)">
<title>Sheet.19</title>
<path d="M0 412.82 L7.2 405.62 L7.2 387.58 L0 394.78 L0 412.82 Z" class="st1"/>
</g>
<g id="shape20-40">
<title>Sheet.20</title>
<rect x="0" y="394.784" width="77.0909" height="18.0364" class="st2"/>
</g>
</g>
<g id="group21-42" transform="translate(297.405,-297.12)">
<title>3D stack middle.21</title>
<g id="shape22-43" transform="translate(77.0909,0)">
<title>Sheet.22</title>
<path d="M0 412.82 L7.2 405.62 L7.2 384.02 L0 391.22 L0 412.82 Z" class="st1"/>
</g>
<g id="shape23-45">
<title>Sheet.23</title>
<rect x="0" y="391.22" width="77.0909" height="21.6" class="st2"/>
</g>
</g>
<g id="group24-47" transform="translate(297.405,-318.72)">
<title>3D stack middle.24</title>
<g id="shape25-48" transform="translate(77.0909,0)">
<title>Sheet.25</title>
<path d="M0 412.82 L7.2 405.62 L7.2 384.02 L0 391.22 L0 412.82 Z" class="st1"/>
</g>
<g id="shape26-50">
<title>Sheet.26</title>
<rect x="0" y="391.22" width="77.0909" height="21.6" class="st2"/>
</g>
</g>
<g id="shape27-52" transform="translate(220.314,-340.32)">
<title>Sheet.27</title>
<desc>HBIOS Proxy (RST 08)</desc>
<rect x="0" y="391.22" width="154.182" height="21.6" class="st8"/>
<text x="34.06" y="405.02" class="st9">HBIOS Proxy (RST 08)</text> </g>
<g id="shape28-55" transform="translate(220.314,-109.92)">
<title>Sheet.28</title>
<desc>Application Area (TPA)</desc>
<rect x="0" y="237.402" width="154.836" height="175.418" class="st8"/>
<text x="22.5" y="328.71" class="st7">Application Area (TPA)</text> </g>
<g id="shape29-58" transform="translate(220.314,-282.72)">
<title>Sheet.29</title>
<desc>Operating System CP/M or ZSYS</desc>
<rect x="0" y="355.22" width="77.0909" height="57.6" class="st8"/>
<text x="2.38" y="375.02" class="st9">Operating System <tspan x="11.08" dy="2.4em" class="st10">CP/M or ZSYS</tspan></text> </g>
<g id="shape30-62" transform="translate(297.405,-318.72)">
<title>Sheet.30</title>
<desc>CBIOS</desc>
<rect x="0" y="391.22" width="77.0909" height="21.6" class="st8"/>
<text x="26.29" y="405.02" class="st9">CBIOS</text> </g>
<g id="shape31-65" transform="translate(297.405,-297.12)">
<title>Sheet.31</title>
<desc>BDOS</desc>
<rect x="0" y="391.22" width="77.0909" height="21.6" class="st8"/>
<text x="27.14" y="405.02" class="st9">BDOS</text> </g>
<g id="shape32-68" transform="translate(297.405,-282.72)">
<title>Sheet.32</title>
<desc>CCP</desc>
<rect x="0" y="398.42" width="77.0909" height="14.4" class="st8"/>
<text x="30.63" y="408.62" class="st9">CCP</text> </g>
<g id="group33-71" transform="translate(72.75,-109.92)">
<title>Data block.33</title>
<g id="shape34-72" transform="translate(108,0)">
<title>Sheet.34</title>
<path d="M0 412.82 L11.41 401.41 L11.41 286.21 L0 297.62 L0 412.82 Z" class="st1"/>
</g>
<g id="shape35-74" transform="translate(0,-115.2)">
<title>Sheet.35</title>
<path d="M0 412.82 L108 412.82 L119.41 401.41 L11.41 401.41 L0 412.82 Z" class="st1"/>
</g>
<g id="shape36-76">
<title>Sheet.36</title>
<rect x="0" y="297.62" width="108" height="115.2" class="st2"/>
</g>
</g>
<g id="shape37-78" transform="translate(22.35,-225.12)">
<title>Sheet.37</title>
<path d="M0 412.82 L360 412.82" class="st11"/>
</g>
<g id="shape38-81" transform="translate(72.75,-109.92)">
<title>Sheet.38</title>
<desc>HBIOS (Hardware Drivers)</desc>
<rect x="0" y="297.62" width="108" height="115.2" class="st8"/>
<text x="38.76" y="351.62" class="st7">HBIOS <tspan x="7.61" dy="1.2em" class="st10">(Hardware Drivers)</tspan></text> </g>
<g id="shape39-85" transform="translate(22.35,-109.92)">
<title>Sheet.39</title>
<path d="M0 412.82 L338.4 412.82" class="st11"/>
</g>
<g id="shape40-88" transform="translate(22.35,-361.92)">
<title>Sheet.40</title>
<path d="M0 412.82 L360 412.82" class="st11"/>
</g>
<g id="shape43-91" transform="translate(-397.67,302.9) rotate(-90)">
<title>Sheet.43</title>
<desc>Z80 CPU Address Space</desc>
<rect x="0" y="398.42" width="252" height="14.4" class="st12"/>
<text x="69.04" y="409.22" class="st7">Z80 CPU Address Space</text> </g>
<g id="shape41-94" transform="translate(-383.27,302.9) rotate(-90)">
<title>Sheet.41</title>
<desc>Banked Lower 32K</desc>
<rect x="0" y="398.42" width="115.2" height="14.4" class="st12"/>
<text x="12.48" y="409.22" class="st7">Banked Lower 32K</text> </g>
<g id="shape42-97" transform="translate(-383.27,187.7) rotate(-90)">
<title>Sheet.42</title>
<desc>Fixed Upper 32K</desc>
<rect x="0" y="398.42" width="136.8" height="14.4" class="st12"/>
<text x="28.39" y="409.22" class="st7">Fixed Upper 32K</text> </g>
<g id="shape1-100" transform="translate(65.55,463.72) rotate(180)">
<title>Sheet.1</title>
<desc>$10000</desc>
<path d="M0 412.82 L36 412.82" class="st3"/>
<rect x="-31.6846" y="-418.22" width="27.3691" height="10.7998" transform="rotate(180)" class="st6"/>
<text x="-31.68" y="-410.12" transform="rotate(180)" class="st5">$10000</text> </g>
<g id="shape4-105" transform="translate(65.55,715.72) rotate(180)">
<title>Sheet.4</title>
<desc>$0000</desc>
<path d="M0 412.82 L36 412.82" class="st3"/>
<rect x="-29.4038" y="-418.22" width="22.8076" height="10.7998" transform="rotate(180)" class="st4"/>
<text x="-29.4" y="-410.12" transform="rotate(180)" class="st5">$0000</text> </g>
<g id="shape44-110" transform="translate(798.77,50.9) rotate(90)">
<title>Bracket</title>
<path d="M0 412.82 A6.11239 6.11239 0 0 1 5.4 407.42 L64.22 407.42 A6.11239 6.11239 -180 0 0 69.62 402.02 A6.11239 6.11239
-180 0 0 75.02 407.42 L131.4 407.42 A6.11239 6.11239 0 0 1 136.8 412.82" class="st13"/>
</g>
<g id="shape45-113" transform="translate(0.750002,-52.32)">
<title>Sheet.45</title>
<desc>Bank 0</desc>
<rect x="0" y="398.42" width="36" height="14.4" class="st12"/>
<text x="5.69" y="408.32" class="st5">Bank 0</text> </g>
<g id="shape47-116" transform="translate(252.75,-52.32)">
<title>Sheet.47</title>
<desc>App/OS Banks</desc>
<rect x="0" y="398.42" width="108" height="14.4" class="st12"/>
<text x="28.09" y="408.32" class="st5">App/OS Banks</text> </g>
<g id="shape48-119" transform="translate(360.75,-52.32)">
<title>Sheet.48</title>
<desc>Bank N-1</desc>
<rect x="0" y="398.42" width="36" height="14.4" class="st12"/>
<text x="1.41" y="408.32" class="st5">Bank N-1</text> </g>
<g id="shape49-122" transform="translate(396.75,-52.32)">
<title>Sheet.49</title>
<desc>Bank N</desc>
<rect x="0" y="398.42" width="36" height="14.4" class="st12"/>
<text x="5.06" y="408.32" class="st5">Bank N</text> </g>
<g id="shape50-125" transform="translate(36.75,-52.32)">
<title>Sheet.50</title>
<desc>• • •</desc>
<rect x="0" y="398.42" width="216" height="14.4" class="st12"/>
<text x="91.49" y="408.62" class="st9">• • •</text> </g>
<g id="shape51-128" transform="translate(375.15,715.72) rotate(180)">
<title>Bracket.51</title>
<path d="M0 412.82 A8.14985 8.14985 0 0 1 7.2 405.62 L36 405.62 A8.14985 8.14985 -180 0 0 43.2 398.42 A8.14985 8.14985
-180 0 0 50.4 405.62 L151.2 405.62 A8.14985 8.14985 0 0 1 158.4 412.82" class="st13"/>
</g>
<g id="shape55-131" transform="translate(396.75,-66.72)">
<title>Sheet.55</title>
<path d="M0 187.31 L9 187.31 A9 9 0 0 1 18 196.31 L18 404.78" class="st14"/>
</g>
<g id="shape56-137" transform="translate(0.750002,-37.92)">
<title>Sheet.56</title>
<desc>Physical RAM (32K per bank)</desc>
<rect x="0" y="398.42" width="432" height="14.4" class="st12"/>
<text x="157.88" y="408.62" class="st9">Physical RAM (32K per bank)</text> </g>
<g id="shape57-140" transform="translate(180.75,715.72) rotate(180)">
<title>Bracket.57</title>
<desc>`</desc>
<path d="M0 412.82 A8.14984 8.14984 0 0 1 7.2 405.62 L46.8 405.62 A8.14984 8.14984 -180 0 0 54 398.42 A8.14984 8.14984
-180 0 0 61.2 405.62 L100.8 405.62 A8.14984 8.14984 0 0 1 108 412.82" class="st13"/>
<rect x="393.092" y="-58.7999" width="2.328" height="9.59985" transform="rotate(90)" class="st4"/>
<text x="393.09" y="-51.6" transform="rotate(90)" class="st16">`</text> </g>
<g id="shape58-145" transform="translate(449.57,360.5) rotate(90)">
<title>Sheet.58</title>
<path d="M0 412.82 L34.16 412.82" class="st17"/>
</g>
<g id="group60-148" transform="translate(36.75,-0.12)">
<title>3D stack top</title>
<desc>RAM Disk</desc>
<g id="shape61-149" transform="translate(208.8,0)">
<title>Sheet.61</title>
<path d="M0 412.82 L7.09 405.73 L7.09 387.73 L0 394.82 L0 412.82 Z" class="st1"/>
</g>
<g id="shape62-151" transform="translate(0,-18)">
<title>Sheet.62</title>
<path d="M0 412.82 L208.8 412.82 L215.89 405.73 L7.09 405.73 L0 412.82 Z" class="st1"/>
</g>
<g id="shape63-153">
<title>Sheet.63</title>
<rect x="0" y="394.82" width="208.8" height="18" class="st2"/>
</g>
<g id="shape60-155">
<text x="88.83" y="406.22" class="st16">RAM Disk</text> </g>
</g>
<g id="shape64-157" transform="translate(-59.27,84.02) rotate(-90)">
<title>Pointer (1-D)</title>
<path d="M1.71 412.82 L2.07 412.82 L16.08 412.82" class="st18"/>
</g>
<g id="shape65-166" transform="translate(-95.27,108.5) rotate(-90)">
<title>Pointer (1-D).65</title>
<path d="M1.71 412.82 L2.07 412.82 L18.96 412.82" class="st18"/>
</g>
<g id="shape66-173" transform="translate(-52.07,122.9) rotate(-90)">
<title>Pointer (1-D).66</title>
<path d="M1.71 412.82 L2.07 412.82 L11.76 412.82" class="st18"/>
</g>
<g id="shape67-180" transform="translate(-105.35,137.3) rotate(-90)">
<title>Pointer (1-D).67</title>
<path d="M1.71 412.82 L2.07 412.82 L26.16 412.82" class="st18"/>
</g>
<g id="shape70-187" transform="translate(228.935,-227.945) scale(-1,1)">
<title>Sheet.70</title>
<path d="M2.65 293.24 L3.01 293.24 L76.08 293.24 A22.5 22.5 0 0 1 98.58 315.74 L98.58 404.78" class="st20"/>
</g>
<g id="shape68-195" transform="translate(87.15,-289.92)">
<title>Sheet.68</title>
<desc>HBIOS Function Call w/ Bank Switch</desc>
<rect x="0" y="384.02" width="86.4" height="28.8" class="st2"/>
<text x="7.14" y="395.72" class="st5">HBIOS Function Call <tspan x="15.11" dy="1.2em" class="st10">w/ Bank Switch</tspan></text> </g>
<g id="shape69-199" transform="translate(0.75,-390.72)">
<title>Sheet.69</title>
<desc>RomWBW Bank Switched Memory Layout</desc>
<rect x="0" y="391.22" width="432" height="21.6" class="st21"/>
<text x="113.82" y="405.62" class="st7">RomWBW Bank Switched Memory Layout</text> </g>
<g id="shape59-202" transform="translate(665.566,362.226) rotate(90.2396)">
<title>Sheet.59</title>
<path d="M0 412.82 L27.11 412.82" class="st17"/>
</g>
<g id="shape52-205" transform="translate(16.33,324.5) rotate(-90)">
<title>Sheet.52</title>
<desc>Fixed Mapping of Upper 32K to Last Bank</desc>
<rect x="0" y="398.42" width="172.8" height="14.4" class="st8"/>
<text x="11.1" y="408.32" class="st5">Fixed Mapping of Upper 32K to Last Bank</text> </g>
<g id="shape72-208" transform="translate(331.95,-66.72)">
<title>Sheet.72</title>
<path d="M0 384.02 L0 387.62 A3.59999 3.59999 -180 0 0 3.6 391.22 L45.4 391.22 A5 5 0 0 1 50.4 396.22 L50.4 404.78"
class="st14"/>
</g>
<g id="shape74-213" transform="translate(126.75,-66.72) scale(-1,1)">
<title>Sheet.74</title>
<path d="M0 384.02 L0 387.62 A3.59999 3.59999 -180 0 0 3.6 391.22 L103 391.22 A5 5 0 0 1 108 396.22 L108 404.78"
class="st14"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 51 KiB

View File

@@ -0,0 +1,830 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export CharacterEmulationVideoServices.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
width="6.01042in" height="5.76042in" viewBox="0 0 432.75 414.75" xml:space="preserve" color-interpolation-filters="sRGB"
class="st16">
<style type="text/css">
<![CDATA[
.st1 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st2 {fill:#000000;font-family:Calibri;font-size:0.833336em;font-weight:bold}
.st3 {font-size:1em}
.st4 {marker-end:url(#mrkr13-15);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st5 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.22935779816514}
.st6 {fill:#a5a5a5;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st7 {fill:#000000;font-family:Calibri;font-size:0.666664em;font-weight:bold}
.st8 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
.st9 {fill:#00ff00;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st10 {fill:#e6e6e6;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st11 {fill:#b3b3b3;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st12 {fill:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st13 {fill:#ffffff;stroke:#000000;stroke-dasharray:0.75,1.5;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st14 {fill:#000000;font-family:Calibri;font-size:0.499992em;font-weight:bold}
.st15 {fill:#000000;font-family:Calibri;font-size:1.16666em;font-weight:bold}
.st16 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
]]>
</style>
<defs id="Markers">
<g id="lend13">
<path d="M 3 1 L 0 0 L 3 -1 L 3 1 " style="stroke:none"/>
</g>
<marker id="mrkr13-15" class="st5" refX="-13.08" orient="auto" markerUnits="strokeWidth" overflow="visible">
<use xlink:href="#lend13" transform="scale(-4.36,-4.36) "/>
</marker>
</defs>
<g>
<title>Page-1</title>
<g id="shape81-1" transform="translate(17.625,414.375) rotate(-90)">
<title>Sheet.81</title>
<rect x="0" y="279.75" width="360" height="135" class="st1"/>
</g>
<g id="shape80-3" transform="translate(-135.375,414.375) rotate(-90)">
<title>Sheet.80</title>
<rect x="0" y="189.75" width="360" height="225" class="st1"/>
</g>
<g id="shape1-5" transform="translate(108.539,-315.375)">
<title>Sheet.1</title>
<desc>Character I/O Services</desc>
<rect x="0" y="378.75" width="53.8364" height="36" class="st1"/>
<text x="6.75" y="387.75" class="st2">Character <tspan x="20.06" dy="1.2em" class="st3">I/O </tspan><tspan x="10.06"
dy="1.2em" class="st3">Services</tspan></text> </g>
<g id="shape2-10" transform="translate(36.375,-333.375)">
<title>Sheet.2</title>
<path d="M0 414.75 L62.35 414.75" class="st4"/>
</g>
<g id="shape8-16" transform="translate(550.125,153.375) rotate(90)">
<title>Sheet.8</title>
<path d="M0 414.75 L17.19 414.75" class="st4"/>
</g>
<g id="shape9-21" transform="translate(108.375,-189.375)">
<title>Sheet.9</title>
<desc>Emulation Services</desc>
<rect x="0" y="369.75" width="54" height="45" class="st1"/>
<text x="5.78" y="389.25" class="st2">Emulation <tspan x="10.14" dy="1.2em" class="st3">Services</tspan></text> </g>
<g id="shape10-25" transform="translate(108.375,-171.375)">
<title>Sheet.10</title>
<desc>TTY</desc>
<rect x="0" y="396.75" width="54" height="18" class="st1"/>
<text x="19.45" y="408.75" class="st2">TTY</text> </g>
<g id="shape11-28" transform="translate(108.375,-153.375)">
<title>Sheet.11</title>
<desc>ANSI</desc>
<rect x="0" y="396.75" width="54" height="18" class="st1"/>
<text x="16.98" y="408.75" class="st2">ANSI</text> </g>
<g id="shape12-31" transform="translate(162.211,-180.375)">
<title>Sheet.12</title>
<path d="M0 414.75 L17.35 414.75" class="st4"/>
</g>
<g id="shape13-36" transform="translate(162.211,-162.375)">
<title>Sheet.13</title>
<path d="M0 414.75 L17.35 414.75" class="st4"/>
</g>
<g id="shape14-41" transform="translate(189.375,-99.375)">
<title>Sheet.14</title>
<desc>Video Display Adapter Services</desc>
<rect x="0" y="324.75" width="54" height="90" class="st1"/>
<text x="14.93" y="354.75" class="st2">Video <tspan x="11.88" dy="1.2em" class="st3">Display </tspan><tspan x="10.11"
dy="1.2em" class="st3">Adapter </tspan><tspan x="10.14" dy="1.2em" class="st3">Services</tspan></text> </g>
<g id="shape18-47" transform="translate(243.375,-36.375)">
<title>Sheet.18</title>
<path d="M0 414.75 L62.19 414.75" class="st4"/>
</g>
<g id="shape27-52" transform="translate(315.375,-315.375)">
<title>Sheet.27</title>
<desc>UART</desc>
<rect x="0" y="396.75" width="44.9182" height="18" class="st6"/>
<text x="13.19" y="408.15" class="st7">UART</text> </g>
<g id="shape34-55" transform="translate(314.311,-261.375)">
<title>Sheet.34</title>
<desc>ASCI</desc>
<rect x="0" y="396.75" width="44.9182" height="18" class="st6"/>
<text x="14.96" y="408.15" class="st7">ASCI</text> </g>
<g id="group20-58" transform="translate(396.375,-94.875)">
<title>Terminal.20</title>
<g id="shape36-59" transform="translate(-391.186,414.75) rotate(-90)">
<title>Sheet.36</title>
<path d="M0 414.75 L27 414.75 L27 409.08 L0 409.08 L0 414.75 ZM26.25 403.93 L23.44 399.37 L3.53 399.37 L0.75 403.93
L26.25 403.93 ZM23.44 399.37 L23.44 391.19 L3.53 391.19 L3.53 399.37 L23.44 399.37 ZM26.25 407.7 L26.25
403.93 L0.75 403.93 L0.75 407.7 L26.25 407.7 ZM24.83 407.7 A1223.48 394.162 90 0 1 2.17 407.7 L24.83
407.7 Z" class="st8"/>
</g>
<g id="shape37-61" transform="translate(-395.768,392.25) rotate(-90)">
<title>Sheet.37</title>
<rect x="0" y="414.641" width="0.75" height="0.109091" class="st9"/>
</g>
<g id="shape38-63" transform="translate(-391.623,414.188) rotate(-90)">
<title>Sheet.38</title>
<path d="M1.69 410.93 L2.63 410.93 L2.63 410.39 L1.69 410.39 L1.69 410.93 ZM2.81 410.93 L3.75 410.93 L3.75 410.39
L2.81 410.39 L2.81 410.93 ZM3.94 410.93 L4.87 410.93 L4.87 410.39 L3.94 410.39 L3.94 410.93 ZM5.06 410.93
L6 410.93 L6 410.39 L5.06 410.39 L5.06 410.93 ZM12.28 410.93 L13.22 410.93 L13.22 410.39 L12.28 410.39
L12.28 410.93 ZM13.41 410.93 L14.34 410.93 L14.34 410.39 L13.41 410.39 L13.41 410.93 ZM14.53 410.93
L15.47 410.93 L15.47 410.39 L14.53 410.39 L14.53 410.93 ZM15.66 410.93 L16.59 410.93 L16.59 410.39 L15.66
410.39 L15.66 410.93 ZM0 412.02 L1.5 412.02 L1.5 411.48 L0 411.48 L0 412.02 ZM1.69 412.02 L2.63 412.02
L2.63 411.48 L1.69 411.48 L1.69 412.02 ZM2.81 412.02 L3.75 412.02 L3.75 411.48 L2.81 411.48 L2.81 412.02
ZM3.94 412.02 L4.87 412.02 L4.87 411.48 L3.94 411.48 L3.94 412.02 ZM5.06 412.02 L6 412.02 L6 411.48
L5.06 411.48 L5.06 412.02 ZM6.19 412.02 L7.12 412.02 L7.12 411.48 L6.19 411.48 L6.19 412.02 ZM7.31 412.02
L8.25 412.02 L8.25 411.48 L7.31 411.48 L7.31 412.02 ZM8.44 412.02 L9.37 412.02 L9.37 411.48 L8.44 411.48
L8.44 412.02 ZM9.56 412.02 L10.5 412.02 L10.5 411.48 L9.56 411.48 L9.56 412.02 ZM10.69 412.02 L11.62
412.02 L11.62 411.48 L10.69 411.48 L10.69 412.02 ZM11.81 412.02 L12.75 412.02 L12.75 411.48 L11.81 411.48
L11.81 412.02 ZM12.94 412.02 L13.87 412.02 L13.87 411.48 L12.94 411.48 L12.94 412.02 ZM14.06 412.02
L15 412.02 L15 411.48 L14.06 411.48 L14.06 412.02 ZM1.69 412.7 L2.63 412.7 L2.63 412.16 L1.69 412.16
L1.69 412.7 ZM2.81 412.7 L3.75 412.7 L3.75 412.16 L2.81 412.16 L2.81 412.7 ZM3.94 412.7 L4.87 412.7
L4.87 412.16 L3.94 412.16 L3.94 412.7 ZM5.06 412.7 L6 412.7 L6 412.16 L5.06 412.16 L5.06 412.7 ZM6.19
412.7 L7.12 412.7 L7.12 412.16 L6.19 412.16 L6.19 412.7 ZM7.31 412.7 L8.25 412.7 L8.25 412.16 L7.31
412.16 L7.31 412.7 ZM8.44 412.7 L9.37 412.7 L9.37 412.16 L8.44 412.16 L8.44 412.7 ZM9.56 412.7 L10.5
412.7 L10.5 412.16 L9.56 412.16 L9.56 412.7 ZM10.69 412.7 L11.62 412.7 L11.62 412.16 L10.69 412.16 L10.69
412.7 ZM11.81 412.7 L12.75 412.7 L12.75 412.16 L11.81 412.16 L11.81 412.7 ZM12.94 412.7 L13.87 412.7
L13.87 412.16 L12.94 412.16 L12.94 412.7 ZM14.06 412.7 L15 412.7 L15 412.16 L14.06 412.16 L14.06 412.7
ZM1.69 413.39 L2.63 413.39 L2.63 412.84 L1.69 412.84 L1.69 413.39 ZM2.81 413.39 L3.75 413.39 L3.75 412.84
L2.81 412.84 L2.81 413.39 ZM3.94 413.39 L4.87 413.39 L4.87 412.84 L3.94 412.84 L3.94 413.39 ZM5.06 413.39
L6 413.39 L6 412.84 L5.06 412.84 L5.06 413.39 ZM6.19 413.39 L7.12 413.39 L7.12 412.84 L6.19 412.84 L6.19
413.39 ZM7.31 413.39 L8.25 413.39 L8.25 412.84 L7.31 412.84 L7.31 413.39 ZM8.44 413.39 L9.37 413.39
L9.37 412.84 L8.44 412.84 L8.44 413.39 ZM9.56 413.39 L10.5 413.39 L10.5 412.84 L9.56 412.84 L9.56 413.39
ZM10.69 413.39 L11.62 413.39 L11.62 412.84 L10.69 412.84 L10.69 413.39 ZM11.81 413.39 L12.75 413.39
L12.75 412.84 L11.81 412.84 L11.81 413.39 ZM12.94 413.39 L13.87 413.39 L13.87 412.84 L12.94 412.84 L12.94
413.39 ZM14.06 413.39 L15 413.39 L15 412.84 L14.06 412.84 L14.06 413.39 ZM1.69 414.07 L2.63 414.07 L2.63
413.52 L1.69 413.52 L1.69 414.07 ZM2.81 414.07 L3.75 414.07 L3.75 413.52 L2.81 413.52 L2.81 414.07 ZM3.94
414.07 L4.87 414.07 L4.87 413.52 L3.94 413.52 L3.94 414.07 ZM5.06 414.07 L6 414.07 L6 413.52 L5.06 413.52
L5.06 414.07 ZM6.19 414.07 L7.12 414.07 L7.12 413.52 L6.19 413.52 L6.19 414.07 ZM7.31 414.07 L8.25 414.07
L8.25 413.52 L7.31 413.52 L7.31 414.07 ZM8.44 414.07 L9.37 414.07 L9.37 413.52 L8.44 413.52 L8.44 414.07
ZM9.56 414.07 L10.5 414.07 L10.5 413.52 L9.56 413.52 L9.56 414.07 ZM10.69 414.07 L11.62 414.07 L11.62
413.52 L10.69 413.52 L10.69 414.07 ZM11.81 414.07 L12.75 414.07 L12.75 413.52 L11.81 413.52 L11.81 414.07
ZM12.94 414.07 L13.87 414.07 L13.87 413.52 L12.94 413.52 L12.94 414.07 ZM3.94 414.75 L11.62 414.75 L11.62
414.2 L3.94 414.2 L3.94 414.75 ZM21 414.75 L23.25 414.75 L23.25 414.2 L21 414.2 L21 414.75 ZM23.44 414.75
L24.37 414.75 L24.37 414.2 L23.44 414.2 L23.44 414.75 ZM23.44 414.07 L24.37 414.07 L24.37 413.52 L23.44
413.52 L23.44 414.07 ZM22.22 414.07 L23.16 414.07 L23.16 413.52 L22.22 413.52 L22.22 414.07 ZM21 414.07
L21.94 414.07 L21.94 413.52 L21 413.52 L21 414.07 ZM21 413.39 L21.94 413.39 L21.94 412.84 L21 412.84
L21 413.39 ZM21 412.7 L21.94 412.7 L21.94 412.16 L21 412.16 L21 412.7 ZM22.22 412.7 L23.16 412.7 L23.16
412.16 L22.22 412.16 L22.22 412.7 ZM23.44 412.7 L24.37 412.7 L24.37 412.16 L23.44 412.16 L23.44 412.7
ZM23.44 413.39 L24.37 413.39 L24.37 412.84 L23.44 412.84 L23.44 413.39 ZM22.22 413.39 L23.16 413.39
L23.16 412.84 L22.22 412.84 L22.22 413.39 Z" class="st10"/>
</g>
<g id="shape39-65" transform="translate(-391.623,414.188) rotate(-90)">
<title>Sheet.39</title>
<path d="M0 410.93 L0.94 410.93 L0.94 410.39 L0 410.39 L0 410.93 ZM0 412.7 L1.5 412.7 L1.5 412.16 L0 412.16 L0 412.7
ZM0 413.39 L1.5 413.39 L1.5 412.84 L0 412.84 L0 413.39 ZM0 414.07 L1.5 414.07 L1.5 413.52 L0 413.52
L0 414.07 ZM0 414.75 L1.5 414.75 L1.5 414.2 L0 414.2 L0 414.75 ZM1.69 414.75 L2.63 414.75 L2.63 414.2
L1.69 414.2 L1.69 414.75 ZM2.81 414.75 L3.75 414.75 L3.75 414.2 L2.81 414.2 L2.81 414.75 ZM11.81 414.75
L12.75 414.75 L12.75 414.2 L11.81 414.2 L11.81 414.75 ZM12.94 414.75 L13.87 414.75 L13.87 414.2 L12.94
414.2 L12.94 414.75 ZM14.06 414.75 L15 414.75 L15 414.2 L14.06 414.2 L14.06 414.75 ZM15.19 414.75 L16.69
414.75 L16.69 414.2 L15.19 414.2 L15.19 414.75 ZM17.25 414.75 L18.19 414.75 L18.19 414.2 L17.25 414.2
L17.25 414.75 ZM18.37 414.75 L19.31 414.75 L19.31 414.2 L18.37 414.2 L18.37 414.75 ZM19.5 414.75 L20.44
414.75 L20.44 414.2 L19.5 414.2 L19.5 414.75 ZM24.66 414.75 L25.59 414.75 L25.59 413.55 L24.66 413.55
L24.66 414.75 ZM24.66 413.44 L25.59 413.44 L25.59 412.16 L24.66 412.16 L24.66 413.44 ZM24.66 412.02
L25.59 412.02 L25.59 411.48 L24.66 411.48 L24.66 412.02 ZM23.44 412.02 L24.37 412.02 L24.37 411.48 L23.44
411.48 L23.44 412.02 ZM22.22 412.02 L23.16 412.02 L23.16 411.48 L22.22 411.48 L22.22 412.02 ZM21 412.02
L21.94 412.02 L21.94 411.48 L21 411.48 L21 412.02 ZM19.5 412.02 L20.44 412.02 L20.44 411.48 L19.5 411.48
L19.5 412.02 ZM19.5 412.7 L20.44 412.7 L20.44 412.16 L19.5 412.16 L19.5 412.7 ZM18.37 414.07 L19.31
414.07 L19.31 413.52 L18.37 413.52 L18.37 414.07 ZM14.06 414.06 L16.69 414.06 L16.69 413.51 L14.06 413.51
L14.06 414.06 ZM15.19 413.37 L16.69 413.37 L16.69 412.17 L15.19 412.17 L15.19 413.37 ZM17.25 412.7 L18.19
412.7 L18.19 412.16 L17.25 412.16 L17.25 412.7 ZM18.37 412.7 L19.31 412.7 L19.31 412.16 L18.37 412.16
L18.37 412.7 ZM18.37 412.02 L19.31 412.02 L19.31 411.48 L18.37 411.48 L18.37 412.02 ZM15.19 412.02 L16.69
412.02 L16.69 411.48 L15.19 411.48 L15.19 412.02 ZM24.19 410.6 L24.94 410.6 L24.94 410.5 L24.19 410.5
L24.19 410.6 ZM23.06 410.6 L23.81 410.6 L23.81 410.5 L23.06 410.5 L23.06 410.6 ZM19.5 410.93 L20.44
410.93 L20.44 410.39 L19.5 410.39 L19.5 410.93 ZM18.37 410.93 L19.31 410.93 L19.31 410.39 L18.37 410.39
L18.37 410.93 ZM17.25 410.93 L18.19 410.93 L18.19 410.39 L17.25 410.39 L17.25 410.93 ZM10.31 410.93
L11.25 410.93 L11.25 410.39 L10.31 410.39 L10.31 410.93 ZM9.19 410.93 L10.12 410.93 L10.12 410.39 L9.19
410.39 L9.19 410.93 ZM8.06 410.93 L9 410.93 L9 410.39 L8.06 410.39 L8.06 410.93 ZM6.94 410.93 L7.87
410.93 L7.87 410.39 L6.94 410.39 L6.94 410.93 ZM17.25 412.02 L18.19 412.02 L18.19 411.48 L17.25 411.48
L17.25 412.02 Z" class="st11"/>
</g>
</g>
<g id="shape40-67" transform="translate(315.375,-99.375)">
<title>Sheet.40</title>
<desc>CVDU</desc>
<rect x="0" y="396.75" width="44.9182" height="18" class="st6"/>
<text x="12.84" y="408.15" class="st7">CVDU</text> </g>
<g id="shape41-70" transform="translate(360.293,-108.375)">
<title>Sheet.41</title>
<path d="M0 414.75 L26.27 414.75" class="st4"/>
</g>
<g id="shape47-75" transform="translate(315.375,-63.375)">
<title>Sheet.47</title>
<desc>UPD7220</desc>
<rect x="0" y="396.75" width="44.9182" height="18" class="st6"/>
<text x="7.09" y="408.15" class="st7">UPD7220</text> </g>
<g id="shape54-78" transform="translate(315.375,-27.375)">
<title>Sheet.54</title>
<desc>N8</desc>
<rect x="0" y="396.75" width="44.9182" height="18" class="st6"/>
<text x="17.8" y="408.15" class="st7">N8</text> </g>
<g id="shape56-81" transform="translate(54.375,-333.375)">
<title>Sheet.56</title>
<desc>CIOXXX</desc>
<rect x="0" y="401.25" width="45" height="13.5" class="st12"/>
<text x="10" y="410.4" class="st7">CIOXXX</text> </g>
<g id="shape57-84" transform="translate(54.375,-117.375)">
<title>Sheet.57</title>
<desc>VDAXXX</desc>
<rect x="0" y="401.25" width="45" height="13.5" class="st12"/>
<text x="8.58" y="410.4" class="st7">VDAXXX</text> </g>
<g id="shape58-87" transform="translate(-378.375,414.375) rotate(-90)">
<title>Sheet.58</title>
<desc>Operating System / Utilities</desc>
<rect x="0" y="378.75" width="360" height="36" class="st1"/>
<text x="122.42" y="399.75" class="st2">Operating System / Utilities</text> </g>
<g id="shape59-90" transform="translate(108.375,-135.375)">
<title>Sheet.59</title>
<desc>Others...</desc>
<path d="M0 414.75 L54 414.75 L54 396.75 L0 396.75 L0 414.75 Z" class="st13"/>
<text x="8.91" y="408.75" class="st2">Others...</text> </g>
<g id="shape60-93" transform="translate(162.211,-144.375)">
<title>Sheet.60</title>
<path d="M0 414.75 L17.35 414.75" class="st4"/>
</g>
<g id="shape61-98" transform="translate(36.375,-211.875)">
<title>Sheet.61</title>
<path d="M0 414.75 L62.19 414.75" class="st4"/>
</g>
<g id="shape62-103" transform="translate(54.375,-211.875)">
<title>Sheet.62</title>
<desc>EMUXXX</desc>
<rect x="0" y="401.25" width="45" height="13.5" class="st12"/>
<text x="7.83" y="410.4" class="st7">EMUXXX</text> </g>
<g id="shape15-106" transform="translate(36.375,-117.375)">
<title>Sheet.15</title>
<path d="M0 414.75 L143.19 414.75" class="st4"/>
</g>
<g id="group16-111" transform="translate(396.375,-58.875)">
<title>Terminal.16</title>
<g id="shape42-112" transform="translate(-391.186,414.75) rotate(-90)">
<title>Sheet.42</title>
<path d="M0 414.75 L27 414.75 L27 409.08 L0 409.08 L0 414.75 ZM26.25 403.93 L23.44 399.37 L3.53 399.37 L0.75 403.93
L26.25 403.93 ZM23.44 399.37 L23.44 391.19 L3.53 391.19 L3.53 399.37 L23.44 399.37 ZM26.25 407.7 L26.25
403.93 L0.75 403.93 L0.75 407.7 L26.25 407.7 ZM24.83 407.7 A1223.48 394.162 90 0 1 2.17 407.7 L24.83
407.7 Z" class="st8"/>
</g>
<g id="shape43-114" transform="translate(-395.768,392.25) rotate(-90)">
<title>Sheet.43</title>
<rect x="0" y="414.641" width="0.75" height="0.109091" class="st9"/>
</g>
<g id="shape44-116" transform="translate(-391.623,414.188) rotate(-90)">
<title>Sheet.44</title>
<path d="M1.69 410.93 L2.63 410.93 L2.63 410.39 L1.69 410.39 L1.69 410.93 ZM2.81 410.93 L3.75 410.93 L3.75 410.39
L2.81 410.39 L2.81 410.93 ZM3.94 410.93 L4.87 410.93 L4.87 410.39 L3.94 410.39 L3.94 410.93 ZM5.06 410.93
L6 410.93 L6 410.39 L5.06 410.39 L5.06 410.93 ZM12.28 410.93 L13.22 410.93 L13.22 410.39 L12.28 410.39
L12.28 410.93 ZM13.41 410.93 L14.34 410.93 L14.34 410.39 L13.41 410.39 L13.41 410.93 ZM14.53 410.93
L15.47 410.93 L15.47 410.39 L14.53 410.39 L14.53 410.93 ZM15.66 410.93 L16.59 410.93 L16.59 410.39 L15.66
410.39 L15.66 410.93 ZM0 412.02 L1.5 412.02 L1.5 411.48 L0 411.48 L0 412.02 ZM1.69 412.02 L2.63 412.02
L2.63 411.48 L1.69 411.48 L1.69 412.02 ZM2.81 412.02 L3.75 412.02 L3.75 411.48 L2.81 411.48 L2.81 412.02
ZM3.94 412.02 L4.87 412.02 L4.87 411.48 L3.94 411.48 L3.94 412.02 ZM5.06 412.02 L6 412.02 L6 411.48
L5.06 411.48 L5.06 412.02 ZM6.19 412.02 L7.12 412.02 L7.12 411.48 L6.19 411.48 L6.19 412.02 ZM7.31 412.02
L8.25 412.02 L8.25 411.48 L7.31 411.48 L7.31 412.02 ZM8.44 412.02 L9.37 412.02 L9.37 411.48 L8.44 411.48
L8.44 412.02 ZM9.56 412.02 L10.5 412.02 L10.5 411.48 L9.56 411.48 L9.56 412.02 ZM10.69 412.02 L11.62
412.02 L11.62 411.48 L10.69 411.48 L10.69 412.02 ZM11.81 412.02 L12.75 412.02 L12.75 411.48 L11.81 411.48
L11.81 412.02 ZM12.94 412.02 L13.87 412.02 L13.87 411.48 L12.94 411.48 L12.94 412.02 ZM14.06 412.02
L15 412.02 L15 411.48 L14.06 411.48 L14.06 412.02 ZM1.69 412.7 L2.63 412.7 L2.63 412.16 L1.69 412.16
L1.69 412.7 ZM2.81 412.7 L3.75 412.7 L3.75 412.16 L2.81 412.16 L2.81 412.7 ZM3.94 412.7 L4.87 412.7
L4.87 412.16 L3.94 412.16 L3.94 412.7 ZM5.06 412.7 L6 412.7 L6 412.16 L5.06 412.16 L5.06 412.7 ZM6.19
412.7 L7.12 412.7 L7.12 412.16 L6.19 412.16 L6.19 412.7 ZM7.31 412.7 L8.25 412.7 L8.25 412.16 L7.31
412.16 L7.31 412.7 ZM8.44 412.7 L9.37 412.7 L9.37 412.16 L8.44 412.16 L8.44 412.7 ZM9.56 412.7 L10.5
412.7 L10.5 412.16 L9.56 412.16 L9.56 412.7 ZM10.69 412.7 L11.62 412.7 L11.62 412.16 L10.69 412.16 L10.69
412.7 ZM11.81 412.7 L12.75 412.7 L12.75 412.16 L11.81 412.16 L11.81 412.7 ZM12.94 412.7 L13.87 412.7
L13.87 412.16 L12.94 412.16 L12.94 412.7 ZM14.06 412.7 L15 412.7 L15 412.16 L14.06 412.16 L14.06 412.7
ZM1.69 413.39 L2.63 413.39 L2.63 412.84 L1.69 412.84 L1.69 413.39 ZM2.81 413.39 L3.75 413.39 L3.75 412.84
L2.81 412.84 L2.81 413.39 ZM3.94 413.39 L4.87 413.39 L4.87 412.84 L3.94 412.84 L3.94 413.39 ZM5.06 413.39
L6 413.39 L6 412.84 L5.06 412.84 L5.06 413.39 ZM6.19 413.39 L7.12 413.39 L7.12 412.84 L6.19 412.84 L6.19
413.39 ZM7.31 413.39 L8.25 413.39 L8.25 412.84 L7.31 412.84 L7.31 413.39 ZM8.44 413.39 L9.37 413.39
L9.37 412.84 L8.44 412.84 L8.44 413.39 ZM9.56 413.39 L10.5 413.39 L10.5 412.84 L9.56 412.84 L9.56 413.39
ZM10.69 413.39 L11.62 413.39 L11.62 412.84 L10.69 412.84 L10.69 413.39 ZM11.81 413.39 L12.75 413.39
L12.75 412.84 L11.81 412.84 L11.81 413.39 ZM12.94 413.39 L13.87 413.39 L13.87 412.84 L12.94 412.84 L12.94
413.39 ZM14.06 413.39 L15 413.39 L15 412.84 L14.06 412.84 L14.06 413.39 ZM1.69 414.07 L2.63 414.07 L2.63
413.52 L1.69 413.52 L1.69 414.07 ZM2.81 414.07 L3.75 414.07 L3.75 413.52 L2.81 413.52 L2.81 414.07 ZM3.94
414.07 L4.87 414.07 L4.87 413.52 L3.94 413.52 L3.94 414.07 ZM5.06 414.07 L6 414.07 L6 413.52 L5.06 413.52
L5.06 414.07 ZM6.19 414.07 L7.12 414.07 L7.12 413.52 L6.19 413.52 L6.19 414.07 ZM7.31 414.07 L8.25 414.07
L8.25 413.52 L7.31 413.52 L7.31 414.07 ZM8.44 414.07 L9.37 414.07 L9.37 413.52 L8.44 413.52 L8.44 414.07
ZM9.56 414.07 L10.5 414.07 L10.5 413.52 L9.56 413.52 L9.56 414.07 ZM10.69 414.07 L11.62 414.07 L11.62
413.52 L10.69 413.52 L10.69 414.07 ZM11.81 414.07 L12.75 414.07 L12.75 413.52 L11.81 413.52 L11.81 414.07
ZM12.94 414.07 L13.87 414.07 L13.87 413.52 L12.94 413.52 L12.94 414.07 ZM3.94 414.75 L11.62 414.75 L11.62
414.2 L3.94 414.2 L3.94 414.75 ZM21 414.75 L23.25 414.75 L23.25 414.2 L21 414.2 L21 414.75 ZM23.44 414.75
L24.37 414.75 L24.37 414.2 L23.44 414.2 L23.44 414.75 ZM23.44 414.07 L24.37 414.07 L24.37 413.52 L23.44
413.52 L23.44 414.07 ZM22.22 414.07 L23.16 414.07 L23.16 413.52 L22.22 413.52 L22.22 414.07 ZM21 414.07
L21.94 414.07 L21.94 413.52 L21 413.52 L21 414.07 ZM21 413.39 L21.94 413.39 L21.94 412.84 L21 412.84
L21 413.39 ZM21 412.7 L21.94 412.7 L21.94 412.16 L21 412.16 L21 412.7 ZM22.22 412.7 L23.16 412.7 L23.16
412.16 L22.22 412.16 L22.22 412.7 ZM23.44 412.7 L24.37 412.7 L24.37 412.16 L23.44 412.16 L23.44 412.7
ZM23.44 413.39 L24.37 413.39 L24.37 412.84 L23.44 412.84 L23.44 413.39 ZM22.22 413.39 L23.16 413.39
L23.16 412.84 L22.22 412.84 L22.22 413.39 Z" class="st10"/>
</g>
<g id="shape45-118" transform="translate(-391.623,414.188) rotate(-90)">
<title>Sheet.45</title>
<path d="M0 410.93 L0.94 410.93 L0.94 410.39 L0 410.39 L0 410.93 ZM0 412.7 L1.5 412.7 L1.5 412.16 L0 412.16 L0 412.7
ZM0 413.39 L1.5 413.39 L1.5 412.84 L0 412.84 L0 413.39 ZM0 414.07 L1.5 414.07 L1.5 413.52 L0 413.52
L0 414.07 ZM0 414.75 L1.5 414.75 L1.5 414.2 L0 414.2 L0 414.75 ZM1.69 414.75 L2.63 414.75 L2.63 414.2
L1.69 414.2 L1.69 414.75 ZM2.81 414.75 L3.75 414.75 L3.75 414.2 L2.81 414.2 L2.81 414.75 ZM11.81 414.75
L12.75 414.75 L12.75 414.2 L11.81 414.2 L11.81 414.75 ZM12.94 414.75 L13.87 414.75 L13.87 414.2 L12.94
414.2 L12.94 414.75 ZM14.06 414.75 L15 414.75 L15 414.2 L14.06 414.2 L14.06 414.75 ZM15.19 414.75 L16.69
414.75 L16.69 414.2 L15.19 414.2 L15.19 414.75 ZM17.25 414.75 L18.19 414.75 L18.19 414.2 L17.25 414.2
L17.25 414.75 ZM18.37 414.75 L19.31 414.75 L19.31 414.2 L18.37 414.2 L18.37 414.75 ZM19.5 414.75 L20.44
414.75 L20.44 414.2 L19.5 414.2 L19.5 414.75 ZM24.66 414.75 L25.59 414.75 L25.59 413.55 L24.66 413.55
L24.66 414.75 ZM24.66 413.44 L25.59 413.44 L25.59 412.16 L24.66 412.16 L24.66 413.44 ZM24.66 412.02
L25.59 412.02 L25.59 411.48 L24.66 411.48 L24.66 412.02 ZM23.44 412.02 L24.37 412.02 L24.37 411.48 L23.44
411.48 L23.44 412.02 ZM22.22 412.02 L23.16 412.02 L23.16 411.48 L22.22 411.48 L22.22 412.02 ZM21 412.02
L21.94 412.02 L21.94 411.48 L21 411.48 L21 412.02 ZM19.5 412.02 L20.44 412.02 L20.44 411.48 L19.5 411.48
L19.5 412.02 ZM19.5 412.7 L20.44 412.7 L20.44 412.16 L19.5 412.16 L19.5 412.7 ZM18.37 414.07 L19.31
414.07 L19.31 413.52 L18.37 413.52 L18.37 414.07 ZM14.06 414.06 L16.69 414.06 L16.69 413.51 L14.06 413.51
L14.06 414.06 ZM15.19 413.37 L16.69 413.37 L16.69 412.17 L15.19 412.17 L15.19 413.37 ZM17.25 412.7 L18.19
412.7 L18.19 412.16 L17.25 412.16 L17.25 412.7 ZM18.37 412.7 L19.31 412.7 L19.31 412.16 L18.37 412.16
L18.37 412.7 ZM18.37 412.02 L19.31 412.02 L19.31 411.48 L18.37 411.48 L18.37 412.02 ZM15.19 412.02 L16.69
412.02 L16.69 411.48 L15.19 411.48 L15.19 412.02 ZM24.19 410.6 L24.94 410.6 L24.94 410.5 L24.19 410.5
L24.19 410.6 ZM23.06 410.6 L23.81 410.6 L23.81 410.5 L23.06 410.5 L23.06 410.6 ZM19.5 410.93 L20.44
410.93 L20.44 410.39 L19.5 410.39 L19.5 410.93 ZM18.37 410.93 L19.31 410.93 L19.31 410.39 L18.37 410.39
L18.37 410.93 ZM17.25 410.93 L18.19 410.93 L18.19 410.39 L17.25 410.39 L17.25 410.93 ZM10.31 410.93
L11.25 410.93 L11.25 410.39 L10.31 410.39 L10.31 410.93 ZM9.19 410.93 L10.12 410.93 L10.12 410.39 L9.19
410.39 L9.19 410.93 ZM8.06 410.93 L9 410.93 L9 410.39 L8.06 410.39 L8.06 410.93 ZM6.94 410.93 L7.87
410.93 L7.87 410.39 L6.94 410.39 L6.94 410.93 ZM17.25 412.02 L18.19 412.02 L18.19 411.48 L17.25 411.48
L17.25 412.02 Z" class="st11"/>
</g>
</g>
<g id="shape46-120" transform="translate(360.375,-72.375)">
<title>Sheet.46</title>
<path d="M0 414.75 L26.19 414.75" class="st4"/>
</g>
<g id="group48-125" transform="translate(396.436,-22.875)">
<title>Terminal.48</title>
<g id="shape49-126" transform="translate(-391.186,414.75) rotate(-90)">
<title>Sheet.49</title>
<path d="M0 414.75 L27 414.75 L27 409.08 L0 409.08 L0 414.75 ZM26.25 403.93 L23.44 399.37 L3.53 399.37 L0.75 403.93
L26.25 403.93 ZM23.44 399.37 L23.44 391.19 L3.53 391.19 L3.53 399.37 L23.44 399.37 ZM26.25 407.7 L26.25
403.93 L0.75 403.93 L0.75 407.7 L26.25 407.7 ZM24.83 407.7 A1223.48 394.162 90 0 1 2.17 407.7 L24.83
407.7 Z" class="st8"/>
</g>
<g id="shape50-128" transform="translate(-395.768,392.25) rotate(-90)">
<title>Sheet.50</title>
<rect x="0" y="414.641" width="0.75" height="0.109091" class="st9"/>
</g>
<g id="shape51-130" transform="translate(-391.623,414.188) rotate(-90)">
<title>Sheet.51</title>
<path d="M1.69 410.93 L2.63 410.93 L2.63 410.39 L1.69 410.39 L1.69 410.93 ZM2.81 410.93 L3.75 410.93 L3.75 410.39
L2.81 410.39 L2.81 410.93 ZM3.94 410.93 L4.87 410.93 L4.87 410.39 L3.94 410.39 L3.94 410.93 ZM5.06 410.93
L6 410.93 L6 410.39 L5.06 410.39 L5.06 410.93 ZM12.28 410.93 L13.22 410.93 L13.22 410.39 L12.28 410.39
L12.28 410.93 ZM13.41 410.93 L14.34 410.93 L14.34 410.39 L13.41 410.39 L13.41 410.93 ZM14.53 410.93
L15.47 410.93 L15.47 410.39 L14.53 410.39 L14.53 410.93 ZM15.66 410.93 L16.59 410.93 L16.59 410.39 L15.66
410.39 L15.66 410.93 ZM0 412.02 L1.5 412.02 L1.5 411.48 L0 411.48 L0 412.02 ZM1.69 412.02 L2.63 412.02
L2.63 411.48 L1.69 411.48 L1.69 412.02 ZM2.81 412.02 L3.75 412.02 L3.75 411.48 L2.81 411.48 L2.81 412.02
ZM3.94 412.02 L4.87 412.02 L4.87 411.48 L3.94 411.48 L3.94 412.02 ZM5.06 412.02 L6 412.02 L6 411.48
L5.06 411.48 L5.06 412.02 ZM6.19 412.02 L7.12 412.02 L7.12 411.48 L6.19 411.48 L6.19 412.02 ZM7.31 412.02
L8.25 412.02 L8.25 411.48 L7.31 411.48 L7.31 412.02 ZM8.44 412.02 L9.37 412.02 L9.37 411.48 L8.44 411.48
L8.44 412.02 ZM9.56 412.02 L10.5 412.02 L10.5 411.48 L9.56 411.48 L9.56 412.02 ZM10.69 412.02 L11.62
412.02 L11.62 411.48 L10.69 411.48 L10.69 412.02 ZM11.81 412.02 L12.75 412.02 L12.75 411.48 L11.81 411.48
L11.81 412.02 ZM12.94 412.02 L13.87 412.02 L13.87 411.48 L12.94 411.48 L12.94 412.02 ZM14.06 412.02
L15 412.02 L15 411.48 L14.06 411.48 L14.06 412.02 ZM1.69 412.7 L2.63 412.7 L2.63 412.16 L1.69 412.16
L1.69 412.7 ZM2.81 412.7 L3.75 412.7 L3.75 412.16 L2.81 412.16 L2.81 412.7 ZM3.94 412.7 L4.87 412.7
L4.87 412.16 L3.94 412.16 L3.94 412.7 ZM5.06 412.7 L6 412.7 L6 412.16 L5.06 412.16 L5.06 412.7 ZM6.19
412.7 L7.12 412.7 L7.12 412.16 L6.19 412.16 L6.19 412.7 ZM7.31 412.7 L8.25 412.7 L8.25 412.16 L7.31
412.16 L7.31 412.7 ZM8.44 412.7 L9.37 412.7 L9.37 412.16 L8.44 412.16 L8.44 412.7 ZM9.56 412.7 L10.5
412.7 L10.5 412.16 L9.56 412.16 L9.56 412.7 ZM10.69 412.7 L11.62 412.7 L11.62 412.16 L10.69 412.16 L10.69
412.7 ZM11.81 412.7 L12.75 412.7 L12.75 412.16 L11.81 412.16 L11.81 412.7 ZM12.94 412.7 L13.87 412.7
L13.87 412.16 L12.94 412.16 L12.94 412.7 ZM14.06 412.7 L15 412.7 L15 412.16 L14.06 412.16 L14.06 412.7
ZM1.69 413.39 L2.63 413.39 L2.63 412.84 L1.69 412.84 L1.69 413.39 ZM2.81 413.39 L3.75 413.39 L3.75 412.84
L2.81 412.84 L2.81 413.39 ZM3.94 413.39 L4.87 413.39 L4.87 412.84 L3.94 412.84 L3.94 413.39 ZM5.06 413.39
L6 413.39 L6 412.84 L5.06 412.84 L5.06 413.39 ZM6.19 413.39 L7.12 413.39 L7.12 412.84 L6.19 412.84 L6.19
413.39 ZM7.31 413.39 L8.25 413.39 L8.25 412.84 L7.31 412.84 L7.31 413.39 ZM8.44 413.39 L9.37 413.39
L9.37 412.84 L8.44 412.84 L8.44 413.39 ZM9.56 413.39 L10.5 413.39 L10.5 412.84 L9.56 412.84 L9.56 413.39
ZM10.69 413.39 L11.62 413.39 L11.62 412.84 L10.69 412.84 L10.69 413.39 ZM11.81 413.39 L12.75 413.39
L12.75 412.84 L11.81 412.84 L11.81 413.39 ZM12.94 413.39 L13.87 413.39 L13.87 412.84 L12.94 412.84 L12.94
413.39 ZM14.06 413.39 L15 413.39 L15 412.84 L14.06 412.84 L14.06 413.39 ZM1.69 414.07 L2.63 414.07 L2.63
413.52 L1.69 413.52 L1.69 414.07 ZM2.81 414.07 L3.75 414.07 L3.75 413.52 L2.81 413.52 L2.81 414.07 ZM3.94
414.07 L4.87 414.07 L4.87 413.52 L3.94 413.52 L3.94 414.07 ZM5.06 414.07 L6 414.07 L6 413.52 L5.06 413.52
L5.06 414.07 ZM6.19 414.07 L7.12 414.07 L7.12 413.52 L6.19 413.52 L6.19 414.07 ZM7.31 414.07 L8.25 414.07
L8.25 413.52 L7.31 413.52 L7.31 414.07 ZM8.44 414.07 L9.37 414.07 L9.37 413.52 L8.44 413.52 L8.44 414.07
ZM9.56 414.07 L10.5 414.07 L10.5 413.52 L9.56 413.52 L9.56 414.07 ZM10.69 414.07 L11.62 414.07 L11.62
413.52 L10.69 413.52 L10.69 414.07 ZM11.81 414.07 L12.75 414.07 L12.75 413.52 L11.81 413.52 L11.81 414.07
ZM12.94 414.07 L13.87 414.07 L13.87 413.52 L12.94 413.52 L12.94 414.07 ZM3.94 414.75 L11.62 414.75 L11.62
414.2 L3.94 414.2 L3.94 414.75 ZM21 414.75 L23.25 414.75 L23.25 414.2 L21 414.2 L21 414.75 ZM23.44 414.75
L24.37 414.75 L24.37 414.2 L23.44 414.2 L23.44 414.75 ZM23.44 414.07 L24.37 414.07 L24.37 413.52 L23.44
413.52 L23.44 414.07 ZM22.22 414.07 L23.16 414.07 L23.16 413.52 L22.22 413.52 L22.22 414.07 ZM21 414.07
L21.94 414.07 L21.94 413.52 L21 413.52 L21 414.07 ZM21 413.39 L21.94 413.39 L21.94 412.84 L21 412.84
L21 413.39 ZM21 412.7 L21.94 412.7 L21.94 412.16 L21 412.16 L21 412.7 ZM22.22 412.7 L23.16 412.7 L23.16
412.16 L22.22 412.16 L22.22 412.7 ZM23.44 412.7 L24.37 412.7 L24.37 412.16 L23.44 412.16 L23.44 412.7
ZM23.44 413.39 L24.37 413.39 L24.37 412.84 L23.44 412.84 L23.44 413.39 ZM22.22 413.39 L23.16 413.39
L23.16 412.84 L22.22 412.84 L22.22 413.39 Z" class="st10"/>
</g>
<g id="shape52-132" transform="translate(-391.623,414.188) rotate(-90)">
<title>Sheet.52</title>
<path d="M0 410.93 L0.94 410.93 L0.94 410.39 L0 410.39 L0 410.93 ZM0 412.7 L1.5 412.7 L1.5 412.16 L0 412.16 L0 412.7
ZM0 413.39 L1.5 413.39 L1.5 412.84 L0 412.84 L0 413.39 ZM0 414.07 L1.5 414.07 L1.5 413.52 L0 413.52
L0 414.07 ZM0 414.75 L1.5 414.75 L1.5 414.2 L0 414.2 L0 414.75 ZM1.69 414.75 L2.63 414.75 L2.63 414.2
L1.69 414.2 L1.69 414.75 ZM2.81 414.75 L3.75 414.75 L3.75 414.2 L2.81 414.2 L2.81 414.75 ZM11.81 414.75
L12.75 414.75 L12.75 414.2 L11.81 414.2 L11.81 414.75 ZM12.94 414.75 L13.87 414.75 L13.87 414.2 L12.94
414.2 L12.94 414.75 ZM14.06 414.75 L15 414.75 L15 414.2 L14.06 414.2 L14.06 414.75 ZM15.19 414.75 L16.69
414.75 L16.69 414.2 L15.19 414.2 L15.19 414.75 ZM17.25 414.75 L18.19 414.75 L18.19 414.2 L17.25 414.2
L17.25 414.75 ZM18.37 414.75 L19.31 414.75 L19.31 414.2 L18.37 414.2 L18.37 414.75 ZM19.5 414.75 L20.44
414.75 L20.44 414.2 L19.5 414.2 L19.5 414.75 ZM24.66 414.75 L25.59 414.75 L25.59 413.55 L24.66 413.55
L24.66 414.75 ZM24.66 413.44 L25.59 413.44 L25.59 412.16 L24.66 412.16 L24.66 413.44 ZM24.66 412.02
L25.59 412.02 L25.59 411.48 L24.66 411.48 L24.66 412.02 ZM23.44 412.02 L24.37 412.02 L24.37 411.48 L23.44
411.48 L23.44 412.02 ZM22.22 412.02 L23.16 412.02 L23.16 411.48 L22.22 411.48 L22.22 412.02 ZM21 412.02
L21.94 412.02 L21.94 411.48 L21 411.48 L21 412.02 ZM19.5 412.02 L20.44 412.02 L20.44 411.48 L19.5 411.48
L19.5 412.02 ZM19.5 412.7 L20.44 412.7 L20.44 412.16 L19.5 412.16 L19.5 412.7 ZM18.37 414.07 L19.31
414.07 L19.31 413.52 L18.37 413.52 L18.37 414.07 ZM14.06 414.06 L16.69 414.06 L16.69 413.51 L14.06 413.51
L14.06 414.06 ZM15.19 413.37 L16.69 413.37 L16.69 412.17 L15.19 412.17 L15.19 413.37 ZM17.25 412.7 L18.19
412.7 L18.19 412.16 L17.25 412.16 L17.25 412.7 ZM18.37 412.7 L19.31 412.7 L19.31 412.16 L18.37 412.16
L18.37 412.7 ZM18.37 412.02 L19.31 412.02 L19.31 411.48 L18.37 411.48 L18.37 412.02 ZM15.19 412.02 L16.69
412.02 L16.69 411.48 L15.19 411.48 L15.19 412.02 ZM24.19 410.6 L24.94 410.6 L24.94 410.5 L24.19 410.5
L24.19 410.6 ZM23.06 410.6 L23.81 410.6 L23.81 410.5 L23.06 410.5 L23.06 410.6 ZM19.5 410.93 L20.44
410.93 L20.44 410.39 L19.5 410.39 L19.5 410.93 ZM18.37 410.93 L19.31 410.93 L19.31 410.39 L18.37 410.39
L18.37 410.93 ZM17.25 410.93 L18.19 410.93 L18.19 410.39 L17.25 410.39 L17.25 410.93 ZM10.31 410.93
L11.25 410.93 L11.25 410.39 L10.31 410.39 L10.31 410.93 ZM9.19 410.93 L10.12 410.93 L10.12 410.39 L9.19
410.39 L9.19 410.93 ZM8.06 410.93 L9 410.93 L9 410.39 L8.06 410.39 L8.06 410.93 ZM6.94 410.93 L7.87
410.93 L7.87 410.39 L6.94 410.39 L6.94 410.93 ZM17.25 412.02 L18.19 412.02 L18.19 411.48 L17.25 411.48
L17.25 412.02 Z" class="st11"/>
</g>
</g>
<g id="shape53-134" transform="translate(360.293,-36.375)">
<title>Sheet.53</title>
<path d="M0 414.75 L26.27 414.75" class="st4"/>
</g>
<g id="group22-139" transform="translate(396.375,-310.875)">
<title>Terminal.22</title>
<g id="shape23-140" transform="translate(-391.186,414.75) rotate(-90)">
<title>Sheet.23</title>
<path d="M0 414.75 L27 414.75 L27 409.08 L0 409.08 L0 414.75 ZM26.25 403.93 L23.44 399.37 L3.53 399.37 L0.75 403.93
L26.25 403.93 ZM23.44 399.37 L23.44 391.19 L3.53 391.19 L3.53 399.37 L23.44 399.37 ZM26.25 407.7 L26.25
403.93 L0.75 403.93 L0.75 407.7 L26.25 407.7 ZM24.83 407.7 A1223.48 394.162 90 0 1 2.17 407.7 L24.83
407.7 Z" class="st8"/>
</g>
<g id="shape24-142" transform="translate(-395.768,392.25) rotate(-90)">
<title>Sheet.24</title>
<rect x="0" y="414.641" width="0.75" height="0.109091" class="st9"/>
</g>
<g id="shape25-144" transform="translate(-391.623,414.188) rotate(-90)">
<title>Sheet.25</title>
<path d="M1.69 410.93 L2.63 410.93 L2.63 410.39 L1.69 410.39 L1.69 410.93 ZM2.81 410.93 L3.75 410.93 L3.75 410.39
L2.81 410.39 L2.81 410.93 ZM3.94 410.93 L4.87 410.93 L4.87 410.39 L3.94 410.39 L3.94 410.93 ZM5.06 410.93
L6 410.93 L6 410.39 L5.06 410.39 L5.06 410.93 ZM12.28 410.93 L13.22 410.93 L13.22 410.39 L12.28 410.39
L12.28 410.93 ZM13.41 410.93 L14.34 410.93 L14.34 410.39 L13.41 410.39 L13.41 410.93 ZM14.53 410.93
L15.47 410.93 L15.47 410.39 L14.53 410.39 L14.53 410.93 ZM15.66 410.93 L16.59 410.93 L16.59 410.39 L15.66
410.39 L15.66 410.93 ZM0 412.02 L1.5 412.02 L1.5 411.48 L0 411.48 L0 412.02 ZM1.69 412.02 L2.63 412.02
L2.63 411.48 L1.69 411.48 L1.69 412.02 ZM2.81 412.02 L3.75 412.02 L3.75 411.48 L2.81 411.48 L2.81 412.02
ZM3.94 412.02 L4.87 412.02 L4.87 411.48 L3.94 411.48 L3.94 412.02 ZM5.06 412.02 L6 412.02 L6 411.48
L5.06 411.48 L5.06 412.02 ZM6.19 412.02 L7.12 412.02 L7.12 411.48 L6.19 411.48 L6.19 412.02 ZM7.31 412.02
L8.25 412.02 L8.25 411.48 L7.31 411.48 L7.31 412.02 ZM8.44 412.02 L9.37 412.02 L9.37 411.48 L8.44 411.48
L8.44 412.02 ZM9.56 412.02 L10.5 412.02 L10.5 411.48 L9.56 411.48 L9.56 412.02 ZM10.69 412.02 L11.62
412.02 L11.62 411.48 L10.69 411.48 L10.69 412.02 ZM11.81 412.02 L12.75 412.02 L12.75 411.48 L11.81 411.48
L11.81 412.02 ZM12.94 412.02 L13.87 412.02 L13.87 411.48 L12.94 411.48 L12.94 412.02 ZM14.06 412.02
L15 412.02 L15 411.48 L14.06 411.48 L14.06 412.02 ZM1.69 412.7 L2.63 412.7 L2.63 412.16 L1.69 412.16
L1.69 412.7 ZM2.81 412.7 L3.75 412.7 L3.75 412.16 L2.81 412.16 L2.81 412.7 ZM3.94 412.7 L4.87 412.7
L4.87 412.16 L3.94 412.16 L3.94 412.7 ZM5.06 412.7 L6 412.7 L6 412.16 L5.06 412.16 L5.06 412.7 ZM6.19
412.7 L7.12 412.7 L7.12 412.16 L6.19 412.16 L6.19 412.7 ZM7.31 412.7 L8.25 412.7 L8.25 412.16 L7.31
412.16 L7.31 412.7 ZM8.44 412.7 L9.37 412.7 L9.37 412.16 L8.44 412.16 L8.44 412.7 ZM9.56 412.7 L10.5
412.7 L10.5 412.16 L9.56 412.16 L9.56 412.7 ZM10.69 412.7 L11.62 412.7 L11.62 412.16 L10.69 412.16 L10.69
412.7 ZM11.81 412.7 L12.75 412.7 L12.75 412.16 L11.81 412.16 L11.81 412.7 ZM12.94 412.7 L13.87 412.7
L13.87 412.16 L12.94 412.16 L12.94 412.7 ZM14.06 412.7 L15 412.7 L15 412.16 L14.06 412.16 L14.06 412.7
ZM1.69 413.39 L2.63 413.39 L2.63 412.84 L1.69 412.84 L1.69 413.39 ZM2.81 413.39 L3.75 413.39 L3.75 412.84
L2.81 412.84 L2.81 413.39 ZM3.94 413.39 L4.87 413.39 L4.87 412.84 L3.94 412.84 L3.94 413.39 ZM5.06 413.39
L6 413.39 L6 412.84 L5.06 412.84 L5.06 413.39 ZM6.19 413.39 L7.12 413.39 L7.12 412.84 L6.19 412.84 L6.19
413.39 ZM7.31 413.39 L8.25 413.39 L8.25 412.84 L7.31 412.84 L7.31 413.39 ZM8.44 413.39 L9.37 413.39
L9.37 412.84 L8.44 412.84 L8.44 413.39 ZM9.56 413.39 L10.5 413.39 L10.5 412.84 L9.56 412.84 L9.56 413.39
ZM10.69 413.39 L11.62 413.39 L11.62 412.84 L10.69 412.84 L10.69 413.39 ZM11.81 413.39 L12.75 413.39
L12.75 412.84 L11.81 412.84 L11.81 413.39 ZM12.94 413.39 L13.87 413.39 L13.87 412.84 L12.94 412.84 L12.94
413.39 ZM14.06 413.39 L15 413.39 L15 412.84 L14.06 412.84 L14.06 413.39 ZM1.69 414.07 L2.63 414.07 L2.63
413.52 L1.69 413.52 L1.69 414.07 ZM2.81 414.07 L3.75 414.07 L3.75 413.52 L2.81 413.52 L2.81 414.07 ZM3.94
414.07 L4.87 414.07 L4.87 413.52 L3.94 413.52 L3.94 414.07 ZM5.06 414.07 L6 414.07 L6 413.52 L5.06 413.52
L5.06 414.07 ZM6.19 414.07 L7.12 414.07 L7.12 413.52 L6.19 413.52 L6.19 414.07 ZM7.31 414.07 L8.25 414.07
L8.25 413.52 L7.31 413.52 L7.31 414.07 ZM8.44 414.07 L9.37 414.07 L9.37 413.52 L8.44 413.52 L8.44 414.07
ZM9.56 414.07 L10.5 414.07 L10.5 413.52 L9.56 413.52 L9.56 414.07 ZM10.69 414.07 L11.62 414.07 L11.62
413.52 L10.69 413.52 L10.69 414.07 ZM11.81 414.07 L12.75 414.07 L12.75 413.52 L11.81 413.52 L11.81 414.07
ZM12.94 414.07 L13.87 414.07 L13.87 413.52 L12.94 413.52 L12.94 414.07 ZM3.94 414.75 L11.62 414.75 L11.62
414.2 L3.94 414.2 L3.94 414.75 ZM21 414.75 L23.25 414.75 L23.25 414.2 L21 414.2 L21 414.75 ZM23.44 414.75
L24.37 414.75 L24.37 414.2 L23.44 414.2 L23.44 414.75 ZM23.44 414.07 L24.37 414.07 L24.37 413.52 L23.44
413.52 L23.44 414.07 ZM22.22 414.07 L23.16 414.07 L23.16 413.52 L22.22 413.52 L22.22 414.07 ZM21 414.07
L21.94 414.07 L21.94 413.52 L21 413.52 L21 414.07 ZM21 413.39 L21.94 413.39 L21.94 412.84 L21 412.84
L21 413.39 ZM21 412.7 L21.94 412.7 L21.94 412.16 L21 412.16 L21 412.7 ZM22.22 412.7 L23.16 412.7 L23.16
412.16 L22.22 412.16 L22.22 412.7 ZM23.44 412.7 L24.37 412.7 L24.37 412.16 L23.44 412.16 L23.44 412.7
ZM23.44 413.39 L24.37 413.39 L24.37 412.84 L23.44 412.84 L23.44 413.39 ZM22.22 413.39 L23.16 413.39
L23.16 412.84 L22.22 412.84 L22.22 413.39 Z" class="st10"/>
</g>
<g id="shape26-146" transform="translate(-391.623,414.188) rotate(-90)">
<title>Sheet.26</title>
<path d="M0 410.93 L0.94 410.93 L0.94 410.39 L0 410.39 L0 410.93 ZM0 412.7 L1.5 412.7 L1.5 412.16 L0 412.16 L0 412.7
ZM0 413.39 L1.5 413.39 L1.5 412.84 L0 412.84 L0 413.39 ZM0 414.07 L1.5 414.07 L1.5 413.52 L0 413.52
L0 414.07 ZM0 414.75 L1.5 414.75 L1.5 414.2 L0 414.2 L0 414.75 ZM1.69 414.75 L2.63 414.75 L2.63 414.2
L1.69 414.2 L1.69 414.75 ZM2.81 414.75 L3.75 414.75 L3.75 414.2 L2.81 414.2 L2.81 414.75 ZM11.81 414.75
L12.75 414.75 L12.75 414.2 L11.81 414.2 L11.81 414.75 ZM12.94 414.75 L13.87 414.75 L13.87 414.2 L12.94
414.2 L12.94 414.75 ZM14.06 414.75 L15 414.75 L15 414.2 L14.06 414.2 L14.06 414.75 ZM15.19 414.75 L16.69
414.75 L16.69 414.2 L15.19 414.2 L15.19 414.75 ZM17.25 414.75 L18.19 414.75 L18.19 414.2 L17.25 414.2
L17.25 414.75 ZM18.37 414.75 L19.31 414.75 L19.31 414.2 L18.37 414.2 L18.37 414.75 ZM19.5 414.75 L20.44
414.75 L20.44 414.2 L19.5 414.2 L19.5 414.75 ZM24.66 414.75 L25.59 414.75 L25.59 413.55 L24.66 413.55
L24.66 414.75 ZM24.66 413.44 L25.59 413.44 L25.59 412.16 L24.66 412.16 L24.66 413.44 ZM24.66 412.02
L25.59 412.02 L25.59 411.48 L24.66 411.48 L24.66 412.02 ZM23.44 412.02 L24.37 412.02 L24.37 411.48 L23.44
411.48 L23.44 412.02 ZM22.22 412.02 L23.16 412.02 L23.16 411.48 L22.22 411.48 L22.22 412.02 ZM21 412.02
L21.94 412.02 L21.94 411.48 L21 411.48 L21 412.02 ZM19.5 412.02 L20.44 412.02 L20.44 411.48 L19.5 411.48
L19.5 412.02 ZM19.5 412.7 L20.44 412.7 L20.44 412.16 L19.5 412.16 L19.5 412.7 ZM18.37 414.07 L19.31
414.07 L19.31 413.52 L18.37 413.52 L18.37 414.07 ZM14.06 414.06 L16.69 414.06 L16.69 413.51 L14.06 413.51
L14.06 414.06 ZM15.19 413.37 L16.69 413.37 L16.69 412.17 L15.19 412.17 L15.19 413.37 ZM17.25 412.7 L18.19
412.7 L18.19 412.16 L17.25 412.16 L17.25 412.7 ZM18.37 412.7 L19.31 412.7 L19.31 412.16 L18.37 412.16
L18.37 412.7 ZM18.37 412.02 L19.31 412.02 L19.31 411.48 L18.37 411.48 L18.37 412.02 ZM15.19 412.02 L16.69
412.02 L16.69 411.48 L15.19 411.48 L15.19 412.02 ZM24.19 410.6 L24.94 410.6 L24.94 410.5 L24.19 410.5
L24.19 410.6 ZM23.06 410.6 L23.81 410.6 L23.81 410.5 L23.06 410.5 L23.06 410.6 ZM19.5 410.93 L20.44
410.93 L20.44 410.39 L19.5 410.39 L19.5 410.93 ZM18.37 410.93 L19.31 410.93 L19.31 410.39 L18.37 410.39
L18.37 410.93 ZM17.25 410.93 L18.19 410.93 L18.19 410.39 L17.25 410.39 L17.25 410.93 ZM10.31 410.93
L11.25 410.93 L11.25 410.39 L10.31 410.39 L10.31 410.93 ZM9.19 410.93 L10.12 410.93 L10.12 410.39 L9.19
410.39 L9.19 410.93 ZM8.06 410.93 L9 410.93 L9 410.39 L8.06 410.39 L8.06 410.93 ZM6.94 410.93 L7.87
410.93 L7.87 410.39 L6.94 410.39 L6.94 410.93 ZM17.25 412.02 L18.19 412.02 L18.19 411.48 L17.25 411.48
L17.25 412.02 Z" class="st11"/>
</g>
</g>
<g id="shape28-148" transform="translate(360.293,-324.375)">
<title>Sheet.28</title>
<path d="M0 414.75 L26.27 414.75" class="st4"/>
</g>
<g id="group29-153" transform="translate(396.375,-256.875)">
<title>Terminal.29</title>
<g id="shape30-154" transform="translate(-391.186,414.75) rotate(-90)">
<title>Sheet.30</title>
<path d="M0 414.75 L27 414.75 L27 409.08 L0 409.08 L0 414.75 ZM26.25 403.93 L23.44 399.37 L3.53 399.37 L0.75 403.93
L26.25 403.93 ZM23.44 399.37 L23.44 391.19 L3.53 391.19 L3.53 399.37 L23.44 399.37 ZM26.25 407.7 L26.25
403.93 L0.75 403.93 L0.75 407.7 L26.25 407.7 ZM24.83 407.7 A1223.48 394.162 90 0 1 2.17 407.7 L24.83
407.7 Z" class="st8"/>
</g>
<g id="shape31-156" transform="translate(-395.768,392.25) rotate(-90)">
<title>Sheet.31</title>
<rect x="0" y="414.641" width="0.75" height="0.109091" class="st9"/>
</g>
<g id="shape32-158" transform="translate(-391.623,414.188) rotate(-90)">
<title>Sheet.32</title>
<path d="M1.69 410.93 L2.63 410.93 L2.63 410.39 L1.69 410.39 L1.69 410.93 ZM2.81 410.93 L3.75 410.93 L3.75 410.39
L2.81 410.39 L2.81 410.93 ZM3.94 410.93 L4.87 410.93 L4.87 410.39 L3.94 410.39 L3.94 410.93 ZM5.06 410.93
L6 410.93 L6 410.39 L5.06 410.39 L5.06 410.93 ZM12.28 410.93 L13.22 410.93 L13.22 410.39 L12.28 410.39
L12.28 410.93 ZM13.41 410.93 L14.34 410.93 L14.34 410.39 L13.41 410.39 L13.41 410.93 ZM14.53 410.93
L15.47 410.93 L15.47 410.39 L14.53 410.39 L14.53 410.93 ZM15.66 410.93 L16.59 410.93 L16.59 410.39 L15.66
410.39 L15.66 410.93 ZM0 412.02 L1.5 412.02 L1.5 411.48 L0 411.48 L0 412.02 ZM1.69 412.02 L2.63 412.02
L2.63 411.48 L1.69 411.48 L1.69 412.02 ZM2.81 412.02 L3.75 412.02 L3.75 411.48 L2.81 411.48 L2.81 412.02
ZM3.94 412.02 L4.87 412.02 L4.87 411.48 L3.94 411.48 L3.94 412.02 ZM5.06 412.02 L6 412.02 L6 411.48
L5.06 411.48 L5.06 412.02 ZM6.19 412.02 L7.12 412.02 L7.12 411.48 L6.19 411.48 L6.19 412.02 ZM7.31 412.02
L8.25 412.02 L8.25 411.48 L7.31 411.48 L7.31 412.02 ZM8.44 412.02 L9.37 412.02 L9.37 411.48 L8.44 411.48
L8.44 412.02 ZM9.56 412.02 L10.5 412.02 L10.5 411.48 L9.56 411.48 L9.56 412.02 ZM10.69 412.02 L11.62
412.02 L11.62 411.48 L10.69 411.48 L10.69 412.02 ZM11.81 412.02 L12.75 412.02 L12.75 411.48 L11.81 411.48
L11.81 412.02 ZM12.94 412.02 L13.87 412.02 L13.87 411.48 L12.94 411.48 L12.94 412.02 ZM14.06 412.02
L15 412.02 L15 411.48 L14.06 411.48 L14.06 412.02 ZM1.69 412.7 L2.63 412.7 L2.63 412.16 L1.69 412.16
L1.69 412.7 ZM2.81 412.7 L3.75 412.7 L3.75 412.16 L2.81 412.16 L2.81 412.7 ZM3.94 412.7 L4.87 412.7
L4.87 412.16 L3.94 412.16 L3.94 412.7 ZM5.06 412.7 L6 412.7 L6 412.16 L5.06 412.16 L5.06 412.7 ZM6.19
412.7 L7.12 412.7 L7.12 412.16 L6.19 412.16 L6.19 412.7 ZM7.31 412.7 L8.25 412.7 L8.25 412.16 L7.31
412.16 L7.31 412.7 ZM8.44 412.7 L9.37 412.7 L9.37 412.16 L8.44 412.16 L8.44 412.7 ZM9.56 412.7 L10.5
412.7 L10.5 412.16 L9.56 412.16 L9.56 412.7 ZM10.69 412.7 L11.62 412.7 L11.62 412.16 L10.69 412.16 L10.69
412.7 ZM11.81 412.7 L12.75 412.7 L12.75 412.16 L11.81 412.16 L11.81 412.7 ZM12.94 412.7 L13.87 412.7
L13.87 412.16 L12.94 412.16 L12.94 412.7 ZM14.06 412.7 L15 412.7 L15 412.16 L14.06 412.16 L14.06 412.7
ZM1.69 413.39 L2.63 413.39 L2.63 412.84 L1.69 412.84 L1.69 413.39 ZM2.81 413.39 L3.75 413.39 L3.75 412.84
L2.81 412.84 L2.81 413.39 ZM3.94 413.39 L4.87 413.39 L4.87 412.84 L3.94 412.84 L3.94 413.39 ZM5.06 413.39
L6 413.39 L6 412.84 L5.06 412.84 L5.06 413.39 ZM6.19 413.39 L7.12 413.39 L7.12 412.84 L6.19 412.84 L6.19
413.39 ZM7.31 413.39 L8.25 413.39 L8.25 412.84 L7.31 412.84 L7.31 413.39 ZM8.44 413.39 L9.37 413.39
L9.37 412.84 L8.44 412.84 L8.44 413.39 ZM9.56 413.39 L10.5 413.39 L10.5 412.84 L9.56 412.84 L9.56 413.39
ZM10.69 413.39 L11.62 413.39 L11.62 412.84 L10.69 412.84 L10.69 413.39 ZM11.81 413.39 L12.75 413.39
L12.75 412.84 L11.81 412.84 L11.81 413.39 ZM12.94 413.39 L13.87 413.39 L13.87 412.84 L12.94 412.84 L12.94
413.39 ZM14.06 413.39 L15 413.39 L15 412.84 L14.06 412.84 L14.06 413.39 ZM1.69 414.07 L2.63 414.07 L2.63
413.52 L1.69 413.52 L1.69 414.07 ZM2.81 414.07 L3.75 414.07 L3.75 413.52 L2.81 413.52 L2.81 414.07 ZM3.94
414.07 L4.87 414.07 L4.87 413.52 L3.94 413.52 L3.94 414.07 ZM5.06 414.07 L6 414.07 L6 413.52 L5.06 413.52
L5.06 414.07 ZM6.19 414.07 L7.12 414.07 L7.12 413.52 L6.19 413.52 L6.19 414.07 ZM7.31 414.07 L8.25 414.07
L8.25 413.52 L7.31 413.52 L7.31 414.07 ZM8.44 414.07 L9.37 414.07 L9.37 413.52 L8.44 413.52 L8.44 414.07
ZM9.56 414.07 L10.5 414.07 L10.5 413.52 L9.56 413.52 L9.56 414.07 ZM10.69 414.07 L11.62 414.07 L11.62
413.52 L10.69 413.52 L10.69 414.07 ZM11.81 414.07 L12.75 414.07 L12.75 413.52 L11.81 413.52 L11.81 414.07
ZM12.94 414.07 L13.87 414.07 L13.87 413.52 L12.94 413.52 L12.94 414.07 ZM3.94 414.75 L11.62 414.75 L11.62
414.2 L3.94 414.2 L3.94 414.75 ZM21 414.75 L23.25 414.75 L23.25 414.2 L21 414.2 L21 414.75 ZM23.44 414.75
L24.37 414.75 L24.37 414.2 L23.44 414.2 L23.44 414.75 ZM23.44 414.07 L24.37 414.07 L24.37 413.52 L23.44
413.52 L23.44 414.07 ZM22.22 414.07 L23.16 414.07 L23.16 413.52 L22.22 413.52 L22.22 414.07 ZM21 414.07
L21.94 414.07 L21.94 413.52 L21 413.52 L21 414.07 ZM21 413.39 L21.94 413.39 L21.94 412.84 L21 412.84
L21 413.39 ZM21 412.7 L21.94 412.7 L21.94 412.16 L21 412.16 L21 412.7 ZM22.22 412.7 L23.16 412.7 L23.16
412.16 L22.22 412.16 L22.22 412.7 ZM23.44 412.7 L24.37 412.7 L24.37 412.16 L23.44 412.16 L23.44 412.7
ZM23.44 413.39 L24.37 413.39 L24.37 412.84 L23.44 412.84 L23.44 413.39 ZM22.22 413.39 L23.16 413.39
L23.16 412.84 L22.22 412.84 L22.22 413.39 Z" class="st10"/>
</g>
<g id="shape33-160" transform="translate(-391.623,414.188) rotate(-90)">
<title>Sheet.33</title>
<path d="M0 410.93 L0.94 410.93 L0.94 410.39 L0 410.39 L0 410.93 ZM0 412.7 L1.5 412.7 L1.5 412.16 L0 412.16 L0 412.7
ZM0 413.39 L1.5 413.39 L1.5 412.84 L0 412.84 L0 413.39 ZM0 414.07 L1.5 414.07 L1.5 413.52 L0 413.52
L0 414.07 ZM0 414.75 L1.5 414.75 L1.5 414.2 L0 414.2 L0 414.75 ZM1.69 414.75 L2.63 414.75 L2.63 414.2
L1.69 414.2 L1.69 414.75 ZM2.81 414.75 L3.75 414.75 L3.75 414.2 L2.81 414.2 L2.81 414.75 ZM11.81 414.75
L12.75 414.75 L12.75 414.2 L11.81 414.2 L11.81 414.75 ZM12.94 414.75 L13.87 414.75 L13.87 414.2 L12.94
414.2 L12.94 414.75 ZM14.06 414.75 L15 414.75 L15 414.2 L14.06 414.2 L14.06 414.75 ZM15.19 414.75 L16.69
414.75 L16.69 414.2 L15.19 414.2 L15.19 414.75 ZM17.25 414.75 L18.19 414.75 L18.19 414.2 L17.25 414.2
L17.25 414.75 ZM18.37 414.75 L19.31 414.75 L19.31 414.2 L18.37 414.2 L18.37 414.75 ZM19.5 414.75 L20.44
414.75 L20.44 414.2 L19.5 414.2 L19.5 414.75 ZM24.66 414.75 L25.59 414.75 L25.59 413.55 L24.66 413.55
L24.66 414.75 ZM24.66 413.44 L25.59 413.44 L25.59 412.16 L24.66 412.16 L24.66 413.44 ZM24.66 412.02
L25.59 412.02 L25.59 411.48 L24.66 411.48 L24.66 412.02 ZM23.44 412.02 L24.37 412.02 L24.37 411.48 L23.44
411.48 L23.44 412.02 ZM22.22 412.02 L23.16 412.02 L23.16 411.48 L22.22 411.48 L22.22 412.02 ZM21 412.02
L21.94 412.02 L21.94 411.48 L21 411.48 L21 412.02 ZM19.5 412.02 L20.44 412.02 L20.44 411.48 L19.5 411.48
L19.5 412.02 ZM19.5 412.7 L20.44 412.7 L20.44 412.16 L19.5 412.16 L19.5 412.7 ZM18.37 414.07 L19.31
414.07 L19.31 413.52 L18.37 413.52 L18.37 414.07 ZM14.06 414.06 L16.69 414.06 L16.69 413.51 L14.06 413.51
L14.06 414.06 ZM15.19 413.37 L16.69 413.37 L16.69 412.17 L15.19 412.17 L15.19 413.37 ZM17.25 412.7 L18.19
412.7 L18.19 412.16 L17.25 412.16 L17.25 412.7 ZM18.37 412.7 L19.31 412.7 L19.31 412.16 L18.37 412.16
L18.37 412.7 ZM18.37 412.02 L19.31 412.02 L19.31 411.48 L18.37 411.48 L18.37 412.02 ZM15.19 412.02 L16.69
412.02 L16.69 411.48 L15.19 411.48 L15.19 412.02 ZM24.19 410.6 L24.94 410.6 L24.94 410.5 L24.19 410.5
L24.19 410.6 ZM23.06 410.6 L23.81 410.6 L23.81 410.5 L23.06 410.5 L23.06 410.6 ZM19.5 410.93 L20.44
410.93 L20.44 410.39 L19.5 410.39 L19.5 410.93 ZM18.37 410.93 L19.31 410.93 L19.31 410.39 L18.37 410.39
L18.37 410.93 ZM17.25 410.93 L18.19 410.93 L18.19 410.39 L17.25 410.39 L17.25 410.93 ZM10.31 410.93
L11.25 410.93 L11.25 410.39 L10.31 410.39 L10.31 410.93 ZM9.19 410.93 L10.12 410.93 L10.12 410.39 L9.19
410.39 L9.19 410.93 ZM8.06 410.93 L9 410.93 L9 410.39 L8.06 410.39 L8.06 410.93 ZM6.94 410.93 L7.87
410.93 L7.87 410.39 L6.94 410.39 L6.94 410.93 ZM17.25 412.02 L18.19 412.02 L18.19 411.48 L17.25 411.48
L17.25 412.02 Z" class="st11"/>
</g>
</g>
<g id="shape35-162" transform="translate(359.23,-270.375)">
<title>Sheet.35</title>
<path d="M0 414.75 L27.34 414.75" class="st4"/>
</g>
<g id="shape55-167" transform="translate(360.375,-324.375)">
<title>Sheet.55</title>
<desc>RS-232</desc>
<rect x="0" y="405.75" width="27" height="9" class="st12"/>
<text x="4.91" y="412.05" class="st14">RS-232</text> </g>
<g id="shape63-170" transform="translate(359.311,-270.375)">
<title>Sheet.63</title>
<desc>RS-232</desc>
<rect x="0" y="405.75" width="27" height="9" class="st12"/>
<text x="4.91" y="412.05" class="st14">RS-232</text> </g>
<g id="shape64-173" transform="translate(360.375,-108.375)">
<title>Sheet.64</title>
<desc>VGA</desc>
<rect x="0" y="405.75" width="27" height="9" class="st12"/>
<text x="8" y="412.05" class="st14">VGA</text> </g>
<g id="shape65-176" transform="translate(360.375,-72.375)">
<title>Sheet.65</title>
<desc>VGA</desc>
<rect x="0" y="405.75" width="27" height="9" class="st12"/>
<text x="8" y="412.05" class="st14">VGA</text> </g>
<g id="shape66-179" transform="translate(360.375,-36.375)">
<title>Sheet.66</title>
<desc>NTSC</desc>
<rect x="0" y="405.75" width="27" height="9" class="st12"/>
<text x="7.03" y="412.05" class="st14">NTSC</text> </g>
<g id="shape67-182" transform="translate(108.375,-297.375)">
<title>Sheet.67</title>
<desc>UART</desc>
<rect x="0" y="396.75" width="54" height="18" class="st1"/>
<text x="15.42" y="408.75" class="st2">UART</text> </g>
<g id="shape68-185" transform="translate(108.375,-279.375)">
<title>Sheet.68</title>
<desc>ASCI</desc>
<rect x="0" y="396.75" width="54" height="18" class="st1"/>
<text x="17.63" y="408.75" class="st2">ASCI</text> </g>
<g id="shape69-188" transform="translate(108.375,-261.375)">
<title>Sheet.69</title>
<desc>VDU</desc>
<rect x="0" y="396.75" width="54" height="18" class="st1"/>
<text x="17.63" y="408.75" class="st2">VDU</text> </g>
<g id="shape74-191" transform="translate(189.375,-81.375)">
<title>Sheet.74</title>
<desc>SY6545</desc>
<rect x="0" y="396.75" width="54" height="18" class="st1"/>
<text x="11.9" y="408.75" class="st2">SY6545</text> </g>
<g id="shape75-194" transform="translate(189.375,-63.375)">
<title>Sheet.75</title>
<desc>MC8563</desc>
<rect x="0" y="396.75" width="54" height="18" class="st1"/>
<text x="9.85" y="408.75" class="st2">MC8563</text> </g>
<g id="shape76-197" transform="translate(189.375,-45.375)">
<title>Sheet.76</title>
<desc>uPD7220</desc>
<rect x="0" y="396.75" width="54" height="18" class="st1"/>
<text x="8.37" y="408.75" class="st2">uPD7220</text> </g>
<g id="shape79-200" transform="translate(0.375,-396.375)">
<title>Sheet.79</title>
<desc>Character / Emulation / Video Services</desc>
<rect x="0" y="396.75" width="432" height="18" class="st1"/>
<text x="103.64" y="409.95" class="st15">Character / Emulation / Video Services</text> </g>
<g id="shape82-203" transform="translate(54.375,-360.375)">
<title>Sheet.82</title>
<desc>HBIOS</desc>
<rect x="0" y="396.75" width="225" height="18" class="st12"/>
<text x="99.47" y="408.75" class="st2">HBIOS</text> </g>
<g id="shape83-206" transform="translate(297.375,-360.375)">
<title>Sheet.83</title>
<desc>HARDWARE</desc>
<rect x="0" y="396.75" width="135" height="18" class="st12"/>
<text x="42.53" y="408.75" class="st2">HARDWARE</text> </g>
<g id="shape84-209" transform="translate(189.375,-27.375)">
<title>Sheet.84</title>
<desc>TMS9918</desc>
<rect x="0" y="396.75" width="54" height="18" class="st1"/>
<text x="7.65" y="408.75" class="st2">TMS9918</text> </g>
<g id="group87-212" transform="translate(395.311,-130.875)">
<title>Terminal.87</title>
<g id="shape88-213" transform="translate(-391.186,414.75) rotate(-90)">
<title>Sheet.88</title>
<path d="M0 414.75 L27 414.75 L27 409.08 L0 409.08 L0 414.75 ZM26.25 403.93 L23.44 399.37 L3.53 399.37 L0.75 403.93
L26.25 403.93 ZM23.44 399.37 L23.44 391.19 L3.53 391.19 L3.53 399.37 L23.44 399.37 ZM26.25 407.7 L26.25
403.93 L0.75 403.93 L0.75 407.7 L26.25 407.7 ZM24.83 407.7 A1223.48 394.162 90 0 1 2.17 407.7 L24.83
407.7 Z" class="st8"/>
</g>
<g id="shape89-215" transform="translate(-395.768,392.25) rotate(-90)">
<title>Sheet.89</title>
<rect x="0" y="414.641" width="0.75" height="0.109091" class="st9"/>
</g>
<g id="shape90-217" transform="translate(-391.623,414.188) rotate(-90)">
<title>Sheet.90</title>
<path d="M1.69 410.93 L2.63 410.93 L2.63 410.39 L1.69 410.39 L1.69 410.93 ZM2.81 410.93 L3.75 410.93 L3.75 410.39
L2.81 410.39 L2.81 410.93 ZM3.94 410.93 L4.87 410.93 L4.87 410.39 L3.94 410.39 L3.94 410.93 ZM5.06 410.93
L6 410.93 L6 410.39 L5.06 410.39 L5.06 410.93 ZM12.28 410.93 L13.22 410.93 L13.22 410.39 L12.28 410.39
L12.28 410.93 ZM13.41 410.93 L14.34 410.93 L14.34 410.39 L13.41 410.39 L13.41 410.93 ZM14.53 410.93
L15.47 410.93 L15.47 410.39 L14.53 410.39 L14.53 410.93 ZM15.66 410.93 L16.59 410.93 L16.59 410.39 L15.66
410.39 L15.66 410.93 ZM0 412.02 L1.5 412.02 L1.5 411.48 L0 411.48 L0 412.02 ZM1.69 412.02 L2.63 412.02
L2.63 411.48 L1.69 411.48 L1.69 412.02 ZM2.81 412.02 L3.75 412.02 L3.75 411.48 L2.81 411.48 L2.81 412.02
ZM3.94 412.02 L4.87 412.02 L4.87 411.48 L3.94 411.48 L3.94 412.02 ZM5.06 412.02 L6 412.02 L6 411.48
L5.06 411.48 L5.06 412.02 ZM6.19 412.02 L7.12 412.02 L7.12 411.48 L6.19 411.48 L6.19 412.02 ZM7.31 412.02
L8.25 412.02 L8.25 411.48 L7.31 411.48 L7.31 412.02 ZM8.44 412.02 L9.37 412.02 L9.37 411.48 L8.44 411.48
L8.44 412.02 ZM9.56 412.02 L10.5 412.02 L10.5 411.48 L9.56 411.48 L9.56 412.02 ZM10.69 412.02 L11.62
412.02 L11.62 411.48 L10.69 411.48 L10.69 412.02 ZM11.81 412.02 L12.75 412.02 L12.75 411.48 L11.81 411.48
L11.81 412.02 ZM12.94 412.02 L13.87 412.02 L13.87 411.48 L12.94 411.48 L12.94 412.02 ZM14.06 412.02
L15 412.02 L15 411.48 L14.06 411.48 L14.06 412.02 ZM1.69 412.7 L2.63 412.7 L2.63 412.16 L1.69 412.16
L1.69 412.7 ZM2.81 412.7 L3.75 412.7 L3.75 412.16 L2.81 412.16 L2.81 412.7 ZM3.94 412.7 L4.87 412.7
L4.87 412.16 L3.94 412.16 L3.94 412.7 ZM5.06 412.7 L6 412.7 L6 412.16 L5.06 412.16 L5.06 412.7 ZM6.19
412.7 L7.12 412.7 L7.12 412.16 L6.19 412.16 L6.19 412.7 ZM7.31 412.7 L8.25 412.7 L8.25 412.16 L7.31
412.16 L7.31 412.7 ZM8.44 412.7 L9.37 412.7 L9.37 412.16 L8.44 412.16 L8.44 412.7 ZM9.56 412.7 L10.5
412.7 L10.5 412.16 L9.56 412.16 L9.56 412.7 ZM10.69 412.7 L11.62 412.7 L11.62 412.16 L10.69 412.16 L10.69
412.7 ZM11.81 412.7 L12.75 412.7 L12.75 412.16 L11.81 412.16 L11.81 412.7 ZM12.94 412.7 L13.87 412.7
L13.87 412.16 L12.94 412.16 L12.94 412.7 ZM14.06 412.7 L15 412.7 L15 412.16 L14.06 412.16 L14.06 412.7
ZM1.69 413.39 L2.63 413.39 L2.63 412.84 L1.69 412.84 L1.69 413.39 ZM2.81 413.39 L3.75 413.39 L3.75 412.84
L2.81 412.84 L2.81 413.39 ZM3.94 413.39 L4.87 413.39 L4.87 412.84 L3.94 412.84 L3.94 413.39 ZM5.06 413.39
L6 413.39 L6 412.84 L5.06 412.84 L5.06 413.39 ZM6.19 413.39 L7.12 413.39 L7.12 412.84 L6.19 412.84 L6.19
413.39 ZM7.31 413.39 L8.25 413.39 L8.25 412.84 L7.31 412.84 L7.31 413.39 ZM8.44 413.39 L9.37 413.39
L9.37 412.84 L8.44 412.84 L8.44 413.39 ZM9.56 413.39 L10.5 413.39 L10.5 412.84 L9.56 412.84 L9.56 413.39
ZM10.69 413.39 L11.62 413.39 L11.62 412.84 L10.69 412.84 L10.69 413.39 ZM11.81 413.39 L12.75 413.39
L12.75 412.84 L11.81 412.84 L11.81 413.39 ZM12.94 413.39 L13.87 413.39 L13.87 412.84 L12.94 412.84 L12.94
413.39 ZM14.06 413.39 L15 413.39 L15 412.84 L14.06 412.84 L14.06 413.39 ZM1.69 414.07 L2.63 414.07 L2.63
413.52 L1.69 413.52 L1.69 414.07 ZM2.81 414.07 L3.75 414.07 L3.75 413.52 L2.81 413.52 L2.81 414.07 ZM3.94
414.07 L4.87 414.07 L4.87 413.52 L3.94 413.52 L3.94 414.07 ZM5.06 414.07 L6 414.07 L6 413.52 L5.06 413.52
L5.06 414.07 ZM6.19 414.07 L7.12 414.07 L7.12 413.52 L6.19 413.52 L6.19 414.07 ZM7.31 414.07 L8.25 414.07
L8.25 413.52 L7.31 413.52 L7.31 414.07 ZM8.44 414.07 L9.37 414.07 L9.37 413.52 L8.44 413.52 L8.44 414.07
ZM9.56 414.07 L10.5 414.07 L10.5 413.52 L9.56 413.52 L9.56 414.07 ZM10.69 414.07 L11.62 414.07 L11.62
413.52 L10.69 413.52 L10.69 414.07 ZM11.81 414.07 L12.75 414.07 L12.75 413.52 L11.81 413.52 L11.81 414.07
ZM12.94 414.07 L13.87 414.07 L13.87 413.52 L12.94 413.52 L12.94 414.07 ZM3.94 414.75 L11.62 414.75 L11.62
414.2 L3.94 414.2 L3.94 414.75 ZM21 414.75 L23.25 414.75 L23.25 414.2 L21 414.2 L21 414.75 ZM23.44 414.75
L24.37 414.75 L24.37 414.2 L23.44 414.2 L23.44 414.75 ZM23.44 414.07 L24.37 414.07 L24.37 413.52 L23.44
413.52 L23.44 414.07 ZM22.22 414.07 L23.16 414.07 L23.16 413.52 L22.22 413.52 L22.22 414.07 ZM21 414.07
L21.94 414.07 L21.94 413.52 L21 413.52 L21 414.07 ZM21 413.39 L21.94 413.39 L21.94 412.84 L21 412.84
L21 413.39 ZM21 412.7 L21.94 412.7 L21.94 412.16 L21 412.16 L21 412.7 ZM22.22 412.7 L23.16 412.7 L23.16
412.16 L22.22 412.16 L22.22 412.7 ZM23.44 412.7 L24.37 412.7 L24.37 412.16 L23.44 412.16 L23.44 412.7
ZM23.44 413.39 L24.37 413.39 L24.37 412.84 L23.44 412.84 L23.44 413.39 ZM22.22 413.39 L23.16 413.39
L23.16 412.84 L22.22 412.84 L22.22 413.39 Z" class="st10"/>
</g>
<g id="shape91-219" transform="translate(-391.623,414.188) rotate(-90)">
<title>Sheet.91</title>
<path d="M0 410.93 L0.94 410.93 L0.94 410.39 L0 410.39 L0 410.93 ZM0 412.7 L1.5 412.7 L1.5 412.16 L0 412.16 L0 412.7
ZM0 413.39 L1.5 413.39 L1.5 412.84 L0 412.84 L0 413.39 ZM0 414.07 L1.5 414.07 L1.5 413.52 L0 413.52
L0 414.07 ZM0 414.75 L1.5 414.75 L1.5 414.2 L0 414.2 L0 414.75 ZM1.69 414.75 L2.63 414.75 L2.63 414.2
L1.69 414.2 L1.69 414.75 ZM2.81 414.75 L3.75 414.75 L3.75 414.2 L2.81 414.2 L2.81 414.75 ZM11.81 414.75
L12.75 414.75 L12.75 414.2 L11.81 414.2 L11.81 414.75 ZM12.94 414.75 L13.87 414.75 L13.87 414.2 L12.94
414.2 L12.94 414.75 ZM14.06 414.75 L15 414.75 L15 414.2 L14.06 414.2 L14.06 414.75 ZM15.19 414.75 L16.69
414.75 L16.69 414.2 L15.19 414.2 L15.19 414.75 ZM17.25 414.75 L18.19 414.75 L18.19 414.2 L17.25 414.2
L17.25 414.75 ZM18.37 414.75 L19.31 414.75 L19.31 414.2 L18.37 414.2 L18.37 414.75 ZM19.5 414.75 L20.44
414.75 L20.44 414.2 L19.5 414.2 L19.5 414.75 ZM24.66 414.75 L25.59 414.75 L25.59 413.55 L24.66 413.55
L24.66 414.75 ZM24.66 413.44 L25.59 413.44 L25.59 412.16 L24.66 412.16 L24.66 413.44 ZM24.66 412.02
L25.59 412.02 L25.59 411.48 L24.66 411.48 L24.66 412.02 ZM23.44 412.02 L24.37 412.02 L24.37 411.48 L23.44
411.48 L23.44 412.02 ZM22.22 412.02 L23.16 412.02 L23.16 411.48 L22.22 411.48 L22.22 412.02 ZM21 412.02
L21.94 412.02 L21.94 411.48 L21 411.48 L21 412.02 ZM19.5 412.02 L20.44 412.02 L20.44 411.48 L19.5 411.48
L19.5 412.02 ZM19.5 412.7 L20.44 412.7 L20.44 412.16 L19.5 412.16 L19.5 412.7 ZM18.37 414.07 L19.31
414.07 L19.31 413.52 L18.37 413.52 L18.37 414.07 ZM14.06 414.06 L16.69 414.06 L16.69 413.51 L14.06 413.51
L14.06 414.06 ZM15.19 413.37 L16.69 413.37 L16.69 412.17 L15.19 412.17 L15.19 413.37 ZM17.25 412.7 L18.19
412.7 L18.19 412.16 L17.25 412.16 L17.25 412.7 ZM18.37 412.7 L19.31 412.7 L19.31 412.16 L18.37 412.16
L18.37 412.7 ZM18.37 412.02 L19.31 412.02 L19.31 411.48 L18.37 411.48 L18.37 412.02 ZM15.19 412.02 L16.69
412.02 L16.69 411.48 L15.19 411.48 L15.19 412.02 ZM24.19 410.6 L24.94 410.6 L24.94 410.5 L24.19 410.5
L24.19 410.6 ZM23.06 410.6 L23.81 410.6 L23.81 410.5 L23.06 410.5 L23.06 410.6 ZM19.5 410.93 L20.44
410.93 L20.44 410.39 L19.5 410.39 L19.5 410.93 ZM18.37 410.93 L19.31 410.93 L19.31 410.39 L18.37 410.39
L18.37 410.93 ZM17.25 410.93 L18.19 410.93 L18.19 410.39 L17.25 410.39 L17.25 410.93 ZM10.31 410.93
L11.25 410.93 L11.25 410.39 L10.31 410.39 L10.31 410.93 ZM9.19 410.93 L10.12 410.93 L10.12 410.39 L9.19
410.39 L9.19 410.93 ZM8.06 410.93 L9 410.93 L9 410.39 L8.06 410.39 L8.06 410.93 ZM6.94 410.93 L7.87
410.93 L7.87 410.39 L6.94 410.39 L6.94 410.93 ZM17.25 412.02 L18.19 412.02 L18.19 411.48 L17.25 411.48
L17.25 412.02 Z" class="st11"/>
</g>
</g>
<g id="shape92-221" transform="translate(314.311,-135.375)">
<title>Sheet.92</title>
<desc>VDU</desc>
<rect x="0" y="396.75" width="44.9182" height="18" class="st6"/>
<text x="14.96" y="408.15" class="st7">VDU</text> </g>
<g id="shape93-224" transform="translate(359.23,-144.375)">
<title>Sheet.93</title>
<path d="M0 414.75 L26.27 414.75" class="st4"/>
</g>
<g id="shape94-229" transform="translate(359.311,-144.375)">
<title>Sheet.94</title>
<desc>NTSC</desc>
<rect x="0" y="405.75" width="27" height="9" class="st12"/>
<text x="7.03" y="412.05" class="st14">NTSC</text> </g>
<g id="shape96-232" transform="translate(243.375,-90.375)">
<title>Sheet.96</title>
<path d="M0 414.75 L4.05 414.75 A4.05 4.05 -180 0 0 8.1 410.7 L8.1 365.25 A4.5 4.5 0 0 1 12.6 360.75 L61.13 360.75"
class="st4"/>
</g>
<g id="shape7-237" transform="translate(243.375,-72.375)">
<title>Sheet.7</title>
<path d="M0 414.75 L13.5 414.75 A4.5 4.5 -180 0 0 18 410.25 L18 383.25 A4.5 4.5 0 0 1 22.5 378.75 L62.19 378.75"
class="st4"/>
</g>
<g id="shape17-242" transform="translate(243.375,-54.375)">
<title>Sheet.17</title>
<path d="M0 414.75 L22.5 414.75 A4.5 4.5 -180 0 0 27 410.25 L27 401.25 A4.5 4.5 0 0 1 31.5 396.75 L62.19 396.75"
class="st4"/>
</g>
<g id="shape3-247" transform="translate(162.375,-306.375)">
<title>Sheet.3</title>
<path d="M0 414.75 L31.5 414.75 A4.5 4.5 -180 0 0 36 410.25 L36 401.25 A4.5 4.5 0 0 1 40.5 396.75 L143.19 396.75"
class="st4"/>
</g>
<g id="shape4-252" transform="translate(162.375,-270.375)">
<title>Sheet.4</title>
<path d="M0 396.75 L31.5 396.75 A4.5 4.5 0 0 1 36 401.25 L36 410.25 A4.5 4.5 -180 0 0 40.5 414.75 L142.13 414.75"
class="st4"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@@ -1,15 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export WBW.svg Page-1 -->
<!-- Generated by Microsoft Visio, SVG Export Logo.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="8.5in" height="11in" viewBox="0 0 612 792"
xml:space="preserve" color-interpolation-filters="sRGB" class="st3">
<v:documentProperties v:langID="1033" v:viewMarkup="false">
<v:userDefs>
<v:ud v:nameU="msvNoAutoConnect" v:val="VT0(1):26"/>
</v:userDefs>
</v:documentProperties>
width="3.76042in" height="1.26042in" viewBox="0 0 270.75 90.75" xml:space="preserve" color-interpolation-filters="sRGB"
class="st3">
<style type="text/css">
<![CDATA[
.st1 {fill:#4bacc6;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0;stroke-width:0.75}
@@ -18,52 +12,51 @@
]]>
</style>
<g v:mID="0" v:index="1" v:groupContext="foregroundPage">
<g>
<title>Page-1</title>
<v:pageProperties v:drawingScale="1" v:pageScale="1" v:drawingUnits="19" v:shadowOffsetX="9" v:shadowOffsetY="-9"/>
<g id="shape34-1" v:mID="34" v:groupContext="shape" transform="translate(18,-684)">
<g id="shape34-1" transform="translate(0.375,-0.375)">
<title>Sheet.34</title>
<rect x="0" y="702" width="18" height="90" rx="9" ry="9" class="st1"/>
<rect x="0" y="0.75" width="18" height="90" rx="9" ry="9" class="st1"/>
</g>
<g id="shape35-3" v:mID="35" v:groupContext="shape" transform="translate(54,-684)">
<g id="shape35-3" transform="translate(36.375,-0.375)">
<title>Sheet.35</title>
<rect x="0" y="738" width="18" height="54" rx="9" ry="9" class="st1"/>
<rect x="0" y="36.75" width="18" height="54" rx="9" ry="9" class="st1"/>
</g>
<g id="shape36-5" v:mID="36" v:groupContext="shape" transform="translate(90,-684)">
<g id="shape36-5" transform="translate(72.375,-0.375)">
<title>Sheet.36</title>
<rect x="0" y="702" width="18" height="90" rx="9" ry="9" class="st1"/>
<rect x="0" y="0.75" width="18" height="90" rx="9" ry="9" class="st1"/>
</g>
<g id="shape38-7" v:mID="38" v:groupContext="shape" transform="translate(234,-684)">
<g id="shape38-7" transform="translate(216.375,-0.375)">
<title>Sheet.38</title>
<rect x="0" y="738" width="18" height="54" rx="9" ry="9" class="st1"/>
<rect x="0" y="36.75" width="18" height="54" rx="9" ry="9" class="st1"/>
</g>
<g id="shape39-9" v:mID="39" v:groupContext="shape" transform="translate(270,-684)">
<g id="shape39-9" transform="translate(252.375,-0.375)">
<title>Sheet.39</title>
<rect x="0" y="702" width="18" height="90" rx="9" ry="9" class="st1"/>
<rect x="0" y="0.75" width="18" height="90" rx="9" ry="9" class="st1"/>
</g>
<g id="shape44-11" v:mID="44" v:groupContext="shape" transform="translate(198,-684)">
<g id="shape44-11" transform="translate(180.375,-0.375)">
<title>Sheet.44</title>
<rect x="0" y="702" width="18" height="90" rx="9" ry="9" class="st1"/>
<rect x="0" y="0.75" width="18" height="90" rx="9" ry="9" class="st1"/>
</g>
<g id="shape48-13" v:mID="48" v:groupContext="shape" transform="translate(126,-756)">
<g id="shape48-13" transform="translate(108.375,-72.375)">
<title>Sheet.48</title>
<rect x="0" y="774" width="36" height="18" rx="9" ry="9" class="st1"/>
<rect x="0" y="72.75" width="36" height="18" rx="9" ry="9" class="st1"/>
</g>
<g id="shape49-15" v:mID="49" v:groupContext="shape" transform="translate(126,-720)">
<g id="shape49-15" transform="translate(108.375,-36.375)">
<title>Sheet.49</title>
<rect x="0" y="774" width="36" height="18" rx="9" ry="9" class="st1"/>
<rect x="0" y="72.75" width="36" height="18" rx="9" ry="9" class="st1"/>
</g>
<g id="shape50-17" v:mID="50" v:groupContext="shape" transform="translate(126,-684)">
<g id="shape50-17" transform="translate(108.375,-0.375)">
<title>Sheet.50</title>
<rect x="0" y="774" width="36" height="18" rx="9" ry="9" class="st1"/>
<rect x="0" y="72.75" width="36" height="18" rx="9" ry="9" class="st1"/>
</g>
<g id="shape52-19" v:mID="52" v:groupContext="shape" transform="translate(153,-729)">
<g id="shape52-19" transform="translate(135.375,-45.375)">
<title>Sheet.52</title>
<path d="M-0 756 A18 18 0 0 1 18 774 A18 18 0 0 1 -0 792" class="st2"/>
<path d="M-0 54.75 A18 18 0 0 1 18 72.75 A18 18 0 0 1 -0 90.75" class="st2"/>
</g>
<g id="shape53-22" v:mID="53" v:groupContext="shape" transform="translate(153,-693)">
<g id="shape53-22" transform="translate(135.375,-9.375)">
<title>Sheet.53</title>
<path d="M-0 756 A18 18 0 0 1 18 774 A18 18 0 0 1 -0 792" class="st2"/>
<path d="M-0 54.75 A18 18 0 0 1 18 72.75 A18 18 0 0 1 -0 90.75" class="st2"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,369 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export Panel.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
width="4.51042in" height="2.51042in" viewBox="0 0 324.75 180.75" xml:space="preserve" color-interpolation-filters="sRGB"
class="st11">
<style type="text/css">
<![CDATA[
.st1 {fill:#ff0000;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st2 {fill:#7f7f7f;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st3 {fill:#000000;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st4 {stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}
.st5 {fill:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st6 {fill:#000000;font-family:Calibri;font-size:1.00001em}
.st7 {stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st8 {fill:#000000;font-family:Calibri;font-size:0.666664em}
.st9 {fill:#000000;font-family:Calibri;font-size:0.499992em}
.st10 {fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st11 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
]]>
</style>
<g>
<title>Page-1</title>
<g id="shape1-1" transform="translate(27.375,-117.375)">
<title>Sheet.1</title>
<ellipse cx="9" cy="171.75" rx="9" ry="9.00001" class="st1"/>
</g>
<g id="shape2-3" transform="translate(99.375,-27.375)">
<title>Sheet.2</title>
<ellipse cx="9" cy="171.75" rx="9" ry="9.00001" class="st2"/>
</g>
<g id="shape3-5" transform="translate(106.125,-18.375)">
<title>Sheet.3</title>
<rect x="0" y="160.5" width="4.5" height="20.25" rx="2.25" ry="2.25" class="st3"/>
</g>
<g id="shape8-7" transform="translate(63.375,-117.375)">
<title>Sheet.8</title>
<ellipse cx="9" cy="171.75" rx="9" ry="9.00001" class="st1"/>
</g>
<g id="shape9-9" transform="translate(99.375,-117.375)">
<title>Sheet.9</title>
<ellipse cx="9" cy="171.75" rx="9" ry="9.00001" class="st1"/>
</g>
<g id="shape10-11" transform="translate(135.375,-117.375)">
<title>Sheet.10</title>
<ellipse cx="9" cy="171.75" rx="9" ry="9.00001" class="st1"/>
</g>
<g id="shape11-13" transform="translate(171.375,-117.375)">
<title>Sheet.11</title>
<ellipse cx="9" cy="171.75" rx="9" ry="9.00001" class="st1"/>
</g>
<g id="shape12-15" transform="translate(207.375,-117.375)">
<title>Sheet.12</title>
<ellipse cx="9" cy="171.75" rx="9" ry="9.00001" class="st1"/>
</g>
<g id="shape13-17" transform="translate(243.375,-117.375)">
<title>Sheet.13</title>
<ellipse cx="9" cy="171.75" rx="9" ry="9.00001" class="st1"/>
</g>
<g id="shape14-19" transform="translate(279.375,-117.375)">
<title>Sheet.14</title>
<ellipse cx="9" cy="171.75" rx="9" ry="9.00001" class="st1"/>
</g>
<g id="shape18-21" transform="translate(27.375,-27.375)">
<title>Sheet.18</title>
<ellipse cx="9" cy="171.75" rx="9" ry="9.00001" class="st2"/>
</g>
<g id="shape19-23" transform="translate(34.125,-18.375)">
<title>Sheet.19</title>
<rect x="0" y="160.5" width="4.5" height="20.25" rx="2.25" ry="2.25" class="st3"/>
</g>
<g id="shape20-25" transform="translate(63.375,-27.375)">
<title>Sheet.20</title>
<ellipse cx="9" cy="171.75" rx="9" ry="9.00001" class="st2"/>
</g>
<g id="shape21-27" transform="translate(70.125,-18.375)">
<title>Sheet.21</title>
<rect x="0" y="160.5" width="4.5" height="20.25" rx="2.25" ry="2.25" class="st3"/>
</g>
<g id="shape22-29" transform="translate(135.375,-27.375)">
<title>Sheet.22</title>
<ellipse cx="9" cy="171.75" rx="9" ry="9.00001" class="st2"/>
</g>
<g id="shape23-31" transform="translate(142.125,-18.375)">
<title>Sheet.23</title>
<rect x="0" y="160.5" width="4.5" height="20.25" rx="2.25" ry="2.25" class="st3"/>
</g>
<g id="shape24-33" transform="translate(171.375,-27.375)">
<title>Sheet.24</title>
<ellipse cx="9" cy="171.75" rx="9" ry="9.00001" class="st2"/>
</g>
<g id="shape25-35" transform="translate(178.125,-18.375)">
<title>Sheet.25</title>
<rect x="0" y="160.5" width="4.5" height="20.25" rx="2.25" ry="2.25" class="st3"/>
</g>
<g id="shape26-37" transform="translate(207.375,-27.375)">
<title>Sheet.26</title>
<ellipse cx="9" cy="171.75" rx="9" ry="9.00001" class="st2"/>
</g>
<g id="shape27-39" transform="translate(214.125,-18.375)">
<title>Sheet.27</title>
<rect x="0" y="160.5" width="4.5" height="20.25" rx="2.25" ry="2.25" class="st3"/>
</g>
<g id="shape28-41" transform="translate(243.375,-27.375)">
<title>Sheet.28</title>
<ellipse cx="9" cy="171.75" rx="9" ry="9.00001" class="st2"/>
</g>
<g id="shape29-43" transform="translate(250.125,-18.375)">
<title>Sheet.29</title>
<rect x="0" y="160.5" width="4.5" height="20.25" rx="2.25" ry="2.25" class="st3"/>
</g>
<g id="shape30-45" transform="translate(279.375,-27.375)">
<title>Sheet.30</title>
<ellipse cx="9" cy="171.75" rx="9" ry="9.00001" class="st2"/>
</g>
<g id="shape31-47" transform="translate(286.125,-18.375)">
<title>Sheet.31</title>
<rect x="0" y="160.5" width="4.5" height="20.25" rx="2.25" ry="2.25" class="st3"/>
</g>
<g id="shape32-49" transform="translate(18.375,-153.375)">
<title>Sheet.32</title>
<path d="M0 180.75 L144 180.75" class="st4"/>
</g>
<g id="shape33-52" transform="translate(199.125,18.375) rotate(90)">
<title>Sheet.33</title>
<path d="M0 180.75 L18 180.75" class="st4"/>
</g>
<g id="shape34-55" transform="translate(343.125,18.375) rotate(90)">
<title>Sheet.34</title>
<path d="M0 180.75 L18 180.75" class="st4"/>
</g>
<g id="shape35-58" transform="translate(27.375,-135.375)">
<title>Sheet.35</title>
<desc>8</desc>
<rect x="0" y="162.75" width="18" height="18" class="st5"/>
<text x="5.96" y="175.35" class="st6">8</text> </g>
<g id="shape36-61" transform="translate(63.375,-135.375)">
<title>Sheet.36</title>
<desc>4</desc>
<rect x="0" y="162.75" width="18" height="18" class="st5"/>
<text x="5.96" y="175.35" class="st6">4</text> </g>
<g id="shape37-64" transform="translate(99.375,-135.375)">
<title>Sheet.37</title>
<desc>2</desc>
<rect x="0" y="162.75" width="18" height="18" class="st5"/>
<text x="5.96" y="175.35" class="st6">2</text> </g>
<g id="shape38-67" transform="translate(135.375,-135.375)">
<title>Sheet.38</title>
<desc>1</desc>
<rect x="0" y="162.75" width="18" height="18" class="st5"/>
<text x="5.96" y="175.35" class="st6">1</text> </g>
<g id="shape39-70" transform="translate(18.375,-153.375)">
<title>Sheet.39</title>
<desc>High</desc>
<rect x="0" y="162.75" width="144" height="18" class="st5"/>
<text x="60.91" y="175.35" class="st6">High</text> </g>
<g id="shape40-73" transform="translate(162.375,-153.375)">
<title>Sheet.40</title>
<path d="M0 180.75 L144 180.75" class="st4"/>
</g>
<g id="shape41-76" transform="translate(343.125,18.375) rotate(90)">
<title>Sheet.41</title>
<path d="M0 180.75 L18 180.75" class="st4"/>
</g>
<g id="shape42-79" transform="translate(487.125,18.375) rotate(90)">
<title>Sheet.42</title>
<path d="M0 180.75 L18 180.75" class="st4"/>
</g>
<g id="shape43-82" transform="translate(171.375,-135.375)">
<title>Sheet.43</title>
<desc>8</desc>
<rect x="0" y="162.75" width="18" height="18" class="st5"/>
<text x="5.96" y="175.35" class="st6">8</text> </g>
<g id="shape44-85" transform="translate(207.375,-135.375)">
<title>Sheet.44</title>
<desc>4</desc>
<rect x="0" y="162.75" width="18" height="18" class="st5"/>
<text x="5.96" y="175.35" class="st6">4</text> </g>
<g id="shape45-88" transform="translate(243.375,-135.375)">
<title>Sheet.45</title>
<desc>2</desc>
<rect x="0" y="162.75" width="18" height="18" class="st5"/>
<text x="5.96" y="175.35" class="st6">2</text> </g>
<g id="shape46-91" transform="translate(279.375,-135.375)">
<title>Sheet.46</title>
<desc>1</desc>
<rect x="0" y="162.75" width="18" height="18" class="st5"/>
<text x="5.96" y="175.35" class="st6">1</text> </g>
<g id="shape47-94" transform="translate(162.375,-153.375)">
<title>Sheet.47</title>
<desc>Low</desc>
<rect x="0" y="162.75" width="144" height="18" class="st5"/>
<text x="62.02" y="175.35" class="st6">Low</text> </g>
<g id="shape48-97" transform="translate(27.375,-99.3749)">
<title>Sheet.48</title>
<desc>7</desc>
<rect x="0" y="162.75" width="18" height="18" class="st5"/>
<text x="5.96" y="175.35" class="st6">7</text> </g>
<g id="shape49-100" transform="translate(63.375,-99.3749)">
<title>Sheet.49</title>
<desc>6</desc>
<rect x="0" y="162.75" width="18" height="18" class="st5"/>
<text x="5.96" y="175.35" class="st6">6</text> </g>
<g id="shape50-103" transform="translate(99.375,-99.375)">
<title>Sheet.50</title>
<desc>5</desc>
<rect x="0" y="162.75" width="18" height="18" class="st5"/>
<text x="5.96" y="175.35" class="st6">5</text> </g>
<g id="shape52-106" transform="translate(135.375,-99.375)">
<title>Sheet.52</title>
<desc>4</desc>
<rect x="0" y="162.75" width="18" height="18" class="st5"/>
<text x="5.96" y="175.35" class="st6">4</text> </g>
<g id="shape53-109" transform="translate(171.375,-99.375)">
<title>Sheet.53</title>
<desc>3</desc>
<rect x="0" y="162.75" width="18" height="18" class="st5"/>
<text x="5.96" y="175.35" class="st6">3</text> </g>
<g id="shape54-112" transform="translate(207.375,-99.375)">
<title>Sheet.54</title>
<desc>2</desc>
<rect x="0" y="162.75" width="18" height="18" class="st5"/>
<text x="5.96" y="175.35" class="st6">2</text> </g>
<g id="shape55-115" transform="translate(243.375,-99.375)">
<title>Sheet.55</title>
<desc>1</desc>
<rect x="0" y="162.75" width="18" height="18" class="st5"/>
<text x="5.96" y="175.35" class="st6">1</text> </g>
<g id="shape56-118" transform="translate(279.375,-99.375)">
<title>Sheet.56</title>
<desc>0</desc>
<rect x="0" y="162.75" width="18" height="18" class="st5"/>
<text x="5.96" y="175.35" class="st6">0</text> </g>
<g id="shape57-121" transform="translate(94.875,-58.875)">
<title>Sheet.57</title>
<path d="M0 180.75 L27 180.75" class="st7"/>
</g>
<g id="shape58-124" transform="translate(90.375,-58.875)">
<title>Sheet.58</title>
<desc>Auto</desc>
<rect x="0" y="171.75" width="36" height="9.00001" class="st5"/>
<text x="10.13" y="178.65" class="st8">Auto</text> </g>
<g id="shape59-127" transform="translate(90.375,-49.875)">
<title>Sheet.59</title>
<desc>Menu</desc>
<rect x="0" y="171.75" width="36" height="9.00001" class="st5"/>
<text x="8.39" y="178.65" class="st8">Menu</text> </g>
<g id="shape61-130" transform="translate(22.875,-58.875)">
<title>Sheet.61</title>
<path d="M0 180.75 L27 180.75" class="st7"/>
</g>
<g id="shape62-133" transform="translate(18.375,-58.875)">
<title>Sheet.62</title>
<desc>CRT</desc>
<rect x="0" y="171.75" width="36" height="9.00001" class="st5"/>
<text x="11.75" y="178.65" class="st8">CRT</text> </g>
<g id="shape63-136" transform="translate(18.375,-49.875)">
<title>Sheet.63</title>
<desc>Serial</desc>
<rect x="0" y="171.75" width="36" height="9.00001" class="st5"/>
<text x="9.03" y="178.65" class="st8">Serial</text> </g>
<g id="shape64-139" transform="translate(58.875,-58.875)">
<title>Sheet.64</title>
<path d="M0 180.75 L27 180.75" class="st7"/>
</g>
<g id="shape65-142" transform="translate(54.375,-58.875)">
<title>Sheet.65</title>
<desc>Sec</desc>
<rect x="0" y="171.75" width="36" height="9.00001" class="st5"/>
<text x="12.48" y="178.65" class="st8">Sec</text> </g>
<g id="shape66-145" transform="translate(54.375,-49.875)">
<title>Sheet.66</title>
<desc>Pri</desc>
<rect x="0" y="171.75" width="36" height="9.00001" class="st5"/>
<text x="13.62" y="178.65" class="st8">Pri</text> </g>
<g id="shape67-148" transform="translate(130.875,-58.875)">
<title>Sheet.67</title>
<path d="M0 180.75 L27 180.75" class="st7"/>
</g>
<g id="shape68-151" transform="translate(126.375,-58.875)">
<title>Sheet.68</title>
<desc>Disk</desc>
<rect x="0" y="171.75" width="36" height="9.00001" class="st5"/>
<text x="11.24" y="178.65" class="st8">Disk</text> </g>
<g id="shape69-154" transform="translate(126.375,-49.875)">
<title>Sheet.69</title>
<desc>ROM</desc>
<rect x="0" y="171.75" width="36" height="9.00001" class="st5"/>
<text x="9.76" y="178.65" class="st8">ROM</text> </g>
<g id="shape70-157" transform="translate(166.875,-58.875)">
<title>Sheet.70</title>
<path d="M0 180.75 L27 180.75" class="st7"/>
</g>
<g id="shape71-160" transform="translate(162.375,-58.875)">
<title>Sheet.71</title>
<desc>Floppy</desc>
<rect x="0" y="171.75" width="36" height="9.00001" class="st5"/>
<text x="7.12" y="178.65" class="st8">Floppy</text> </g>
<g id="shape72-163" transform="translate(162.375,-49.875)">
<title>Sheet.72</title>
<desc>Hard</desc>
<rect x="0" y="171.75" width="36" height="9.00001" class="st5"/>
<text x="10.1" y="178.65" class="st8">Hard</text> </g>
<g id="shape73-166" transform="translate(202.875,-58.875)">
<title>Sheet.73</title>
<path d="M0 180.75 L99 180.75" class="st7"/>
</g>
<g id="shape74-169" transform="translate(198.375,-49.875)">
<title>Sheet.74</title>
<desc>4</desc>
<rect x="0" y="171.75" width="36" height="9.00001" class="st5"/>
<text x="15.97" y="178.65" class="st8">4</text> </g>
<g id="shape75-172" transform="translate(234.375,-49.875)">
<title>Sheet.75</title>
<desc>2</desc>
<rect x="0" y="171.75" width="36" height="9.00001" class="st5"/>
<text x="15.97" y="178.65" class="st8">2</text> </g>
<g id="shape76-175" transform="translate(270.375,-49.875)">
<title>Sheet.76</title>
<desc>1</desc>
<rect x="0" y="171.75" width="36" height="9.00001" class="st5"/>
<text x="15.97" y="178.65" class="st8">1</text> </g>
<g id="shape78-178" transform="translate(198.375,-58.875)">
<title>Sheet.78</title>
<desc>ROM App / Boot Slice</desc>
<rect x="0" y="171.75" width="108" height="9.00001" class="st5"/>
<text x="18.99" y="178.65" class="st8">ROM App / Boot Slice</text> </g>
<g id="shape79-181" transform="translate(18.375,-0.375)">
<title>Sheet.79</title>
<desc>ROM Apps: 0=Monitor 1=BASIC 2=Forth 3=Game 4=CP/M 2.2 5=Z-Sys...</desc>
<rect x="0" y="171.75" width="288" height="9" class="st5"/>
<text x="19.9" y="178.05" class="st9">ROM Apps: 0=Monitor 1=BASIC 2=Forth 3=Game 4=CP/M 2.2 5=Z-System 6=Net Boot 7=User</text> </g>
<g id="shape80-184" transform="translate(0.375,-0.375)">
<title>Sheet.80</title>
<rect x="0" y="0.750005" width="324" height="180" class="st10"/>
</g>
<g id="shape81-186" transform="translate(18.375,-72.375)">
<title>Sheet.81</title>
<path d="M0 180.75 L144 180.75" class="st4"/>
</g>
<g id="shape82-189" transform="translate(199.125,99.375) rotate(90)">
<title>Sheet.82</title>
<path d="M0 180.75 L18 180.75" class="st4"/>
</g>
<g id="shape84-192" transform="translate(18.375,-72.375)">
<title>Sheet.84</title>
<desc>Console</desc>
<rect x="0" y="162.75" width="72" height="18" class="st5"/>
<text x="16.61" y="175.35" class="st6">Console</text> </g>
<g id="shape85-195" transform="translate(162.375,-72.375)">
<title>Sheet.85</title>
<path d="M0 180.75 L144 180.75" class="st4"/>
</g>
<g id="shape86-198" transform="translate(271.125,99.375) rotate(90)">
<title>Sheet.86</title>
<path d="M0 180.75 L18 180.75" class="st4"/>
</g>
<g id="shape87-201" transform="translate(487.125,99.375) rotate(90)">
<title>Sheet.87</title>
<path d="M0 180.75 L18 180.75" class="st4"/>
</g>
<g id="shape88-204" transform="translate(90.375,-72.375)">
<title>Sheet.88</title>
<desc>Boot</desc>
<rect x="0" y="162.75" width="216" height="18" class="st5"/>
<text x="96.4" y="175.35" class="st6">Boot</text> </g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

1088
Source/Doc/Graphics/hd1k.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -0,0 +1,236 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export hd512.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
width="6.51389in" height="3.90694in" viewBox="0 0 469 281.3" xml:space="preserve" color-interpolation-filters="sRGB"
class="st16">
<style type="text/css">
<![CDATA[
.st1 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
.st2 {fill:#000000;font-family:Calibri;font-size:1.5em}
.st3 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
.st4 {fill:#000000;font-family:Calibri;font-size:0.666664em}
.st5 {fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
.st6 {fill:#d8d8d8;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
.st7 {fill:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st8 {marker-start:url(#mrkr4-40);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
.st9 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.08695652173913}
.st10 {fill:#000000;font-family:Calibri;font-size:0.499992em}
.st11 {marker-end:url(#mrkr4-58);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
.st12 {stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}
.st13 {marker-end:url(#mrkr9-69);marker-start:url(#mrkr4-40);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
.st14 {marker-end:url(#mrkr4-114);stroke:#000000;stroke-dasharray:1.75,1.25;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}
.st15 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.090252707581227}
.st16 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
]]>
</style>
<defs id="Markers">
<g id="lend4">
<path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"/>
</g>
<marker id="mrkr4-40" class="st9" refX="21.5" orient="auto" markerUnits="strokeWidth" overflow="visible">
<use xlink:href="#lend4" transform="scale(11.5) "/>
</marker>
<marker id="mrkr4-58" class="st9" refX="-23" orient="auto" markerUnits="strokeWidth" overflow="visible">
<use xlink:href="#lend4" transform="scale(-11.5,-11.5) "/>
</marker>
<g id="lend9">
<path d="M 1 -1 L -1 1 " style="stroke-linecap:round;stroke-linejoin:round;fill:none"/>
</g>
<marker id="mrkr9-69" class="st9" orient="auto" markerUnits="strokeWidth" overflow="visible">
<use xlink:href="#lend9" transform="scale(-11.5,-11.5) "/>
</marker>
<marker id="mrkr4-114" class="st15" refX="-22.16" orient="auto" markerUnits="strokeWidth" overflow="visible">
<use xlink:href="#lend4" transform="scale(-11.08,-11.08) "/>
</marker>
</defs>
<g>
<title>Page-1</title>
<g id="shape69-1" transform="translate(0.5,-252)">
<title>Sheet.69</title>
<desc>RomWBW Hard Disk Anatomy (Classic / hd512)</desc>
<rect x="0" y="252.5" width="468" height="28.8" class="st1"/>
<text x="61.63" y="272.3" class="st2">RomWBW Hard Disk Anatomy (Classic / hd512)</text> </g>
<g id="shape259-4" transform="translate(50.9,-151.2)">
<title>Sheet.259</title>
<desc>0</desc>
<rect x="0" y="266.9" width="14.4" height="14.4" class="st3"/>
<text x="5.17" y="276.5" class="st4">0</text> </g>
<g id="shape260-7" transform="translate(65.3,-151.2)">
<title>Sheet.260</title>
<desc>1</desc>
<rect x="0" y="266.9" width="14.4" height="14.4" class="st3"/>
<text x="5.17" y="276.5" class="st4">1</text> </g>
<g id="shape261-10" transform="translate(79.7,-151.2)">
<title>Sheet.261</title>
<desc>2</desc>
<rect x="0" y="266.9" width="14.4" height="14.4" class="st3"/>
<text x="5.17" y="276.5" class="st4">2</text> </g>
<g id="shape262-13" transform="translate(94.1,-151.2)">
<title>Sheet.262</title>
<desc>3</desc>
<rect x="0" y="266.9" width="14.4" height="14.4" class="st3"/>
<text x="5.17" y="276.5" class="st4">3</text> </g>
<g id="shape263-16" transform="translate(108.5,-151.2)">
<title>Sheet.263</title>
<desc>. . .</desc>
<rect x="0" y="266.9" width="72" height="14.4" class="st3"/>
<text x="27.54" y="276.5" class="st4">. . .</text> </g>
<g id="shape264-19" transform="translate(180.5,-151.2)">
<title>Sheet.264</title>
<desc>N</desc>
<rect x="0" y="266.9" width="14.4" height="14.4" class="st3"/>
<text x="4.62" y="276.5" class="st4">N</text> </g>
<g id="shape265-22" transform="translate(50.9,-151.2)">
<title>Sheet.265</title>
<rect x="0" y="266.9" width="144" height="14.4" class="st5"/>
</g>
<g id="shape266-24" transform="translate(50.9,-122.4)">
<title>Sheet.266</title>
<desc>RomWBW Hard Disk (IDE/ATA/ATAPI/CF/SD/USB)</desc>
<rect x="0" y="266.9" width="360" height="14.4" class="st6"/>
<text x="99.2" y="276.5" class="st4">RomWBW Hard Disk (IDE/ATA/ATAPI/CF/SD/USB)</text> </g>
<g id="shape267-27" transform="translate(230.9,-136.8)">
<title>Sheet.267</title>
<desc>FAT Partition</desc>
<rect x="0" y="266.9" width="165.6" height="14.4" class="st1"/>
<text x="61.69" y="276.5" class="st4">FAT Partition</text> </g>
<g id="shape268-30" transform="translate(101.3,-43.2)">
<title>Sheet.268</title>
<desc>Sector 0</desc>
<rect x="0" y="266.9" width="72" height="14.4" class="st7"/>
<text x="22.71" y="276.5" class="st4">Sector 0</text> </g>
<g id="shape269-33" transform="translate(158.9,-57.6)">
<title>Sheet.269</title>
<rect x="0" y="266.9" width="14.4" height="14.4" class="st3"/>
</g>
<g id="shape270-35" transform="translate(50.9,-64.8)">
<title>Sheet.270</title>
<path d="M0 228.86 L0 229.22 L0 276.8 A4.5 4.5 -180 0 0 4.5 281.3 L46.08 281.3" class="st8"/>
</g>
<g id="shape271-41" transform="translate(209.3,-43.2)">
<title>Sheet.271</title>
<desc>Type 06</desc>
<rect x="0" y="274.1" width="43.2" height="7.2" class="st3"/>
<text x="11.99" y="279.5" class="st10">Type 06</text> </g>
<g id="shape272-44" transform="translate(209.3,-36)">
<title>Sheet.272</title>
<rect x="0" y="274.1" width="43.2" height="7.2" class="st3"/>
</g>
<g id="shape273-46" transform="translate(209.3,-28.8)">
<title>Sheet.273</title>
<rect x="0" y="274.1" width="43.2" height="7.2" class="st3"/>
</g>
<g id="shape274-48" transform="translate(209.3,-21.6)">
<title>Sheet.274</title>
<rect x="0" y="274.1" width="43.2" height="7.2" class="st3"/>
</g>
<g id="shape275-50" transform="translate(202.1,-7.19997)">
<title>Sheet.275</title>
<desc>Partition Table</desc>
<rect x="0" y="266.9" width="57.6" height="14.4" class="st7"/>
<text x="4.92" y="276.5" class="st4">Partition Table</text> </g>
<g id="shape276-53" transform="translate(339.4,65.2999) rotate(90)">
<title>Sheet.276</title>
<path d="M0 98.42 L0 258.8 A22.5 22.5 -180 0 0 22.5 281.3 L44.88 281.3" class="st11"/>
</g>
<g id="shape277-59" transform="translate(-71.9999,259.7) rotate(-90)">
<title>Bracket.132</title>
<path d="M0 281.3 A5.43323 5.43323 0 0 1 4.8 276.5 L9.6 276.5 A5.43323 5.43323 -180 0 0 14.4 271.7 A5.43323 5.43323 -180
0 0 19.2 276.5 L24 276.5 A5.43323 5.43323 0 0 1 28.8 281.3" class="st12"/>
</g>
<g id="shape278-62" transform="translate(252.5,-180)">
<title>Sheet.278</title>
<path d="M0 272.06 L0 272.42 L0 274.1 A7.19998 7.19998 -180 0 0 7.2 281.3 L28.8 281.3" class="st13"/>
</g>
<g id="shape279-70" transform="translate(284.9,-172.8)">
<title>Sheet.279</title>
<desc>CP/M System Area (128 KB)</desc>
<rect x="0" y="266.9" width="111.6" height="14.4" class="st7"/>
<text x="1" y="276.5" class="st4">CP/M System Area (128 KB)</text> </g>
<g id="shape280-73" transform="translate(353.8,65.2999) rotate(90)">
<title>Sheet.280</title>
<path d="M0 112.82 L0 258.8 A22.5 22.5 -180 0 0 22.5 281.3 L44.88 281.3" class="st11"/>
</g>
<g id="shape281-78" transform="translate(368.2,65.2999) rotate(90)">
<title>Sheet.281</title>
<path d="M0 127.22 L0 258.8 A22.5 22.5 -180 0 0 22.5 281.3 L44.88 281.3" class="st11"/>
</g>
<g id="shape282-83" transform="translate(382.6,65.2999) rotate(90)">
<title>Sheet.282</title>
<path d="M0 141.62 L0 258.8 A22.5 22.5 -180 0 0 22.5 281.3 L44.88 281.3" class="st11"/>
</g>
<g id="shape283-88" transform="translate(469,65.2999) rotate(90)">
<title>Sheet.283</title>
<path d="M0 228.02 L0 258.8 A22.5 22.5 -180 0 0 22.5 281.3 L44.88 281.3" class="st11"/>
</g>
<g id="shape284-93" transform="translate(158.9,-68.3999)">
<title>Sheet.284</title>
<rect x="0" y="277.7" width="14.4" height="3.6" class="st3"/>
</g>
<g id="shape285-95" transform="translate(158.9,-64.7999)">
<title>Sheet.285</title>
<rect x="0" y="277.7" width="14.4" height="3.6" class="st3"/>
</g>
<g id="shape286-97" transform="translate(158.9,-61.1999)">
<title>Sheet.286</title>
<rect x="0" y="277.7" width="14.4" height="3.6" class="st3"/>
</g>
<g id="shape287-99" transform="translate(158.9,-57.5999)">
<title>Sheet.287</title>
<rect x="0" y="277.7" width="14.4" height="3.6" class="st3"/>
</g>
<g id="shape288-101" transform="translate(166.1,-57.6)">
<title>Stack pointer.179</title>
<path d="M33.6 302.9 L5.4 302.9 A5.39999 5.39999 0 0 1 0 297.5 L0 292.1 L0 286.82" class="st11"/>
</g>
<g id="shape289-106" transform="translate(50.9,-136.8)">
<title>Sheet.289</title>
<desc>RomWBW Data (8,320 KB * N)</desc>
<rect x="0" y="266.9" width="144" height="14.4" class="st1"/>
<text x="22.71" y="276.5" class="st4">RomWBW Data (8,320 KB * N)</text> </g>
<g id="shape293-109" transform="translate(252.5,-46.8)">
<title>Dynamic connector.207</title>
<path d="M0 281.3 L17.1 281.3 A4.5 4.5 -180 0 0 21.6 276.8 L21.6 231.8 A4.5 4.5 -180 0 0 17.1 227.3 L-17.1 227.3 A4.5
4.5 0 0 1 -21.6 222.8 L-21.6 211.24" class="st14"/>
</g>
<g id="shape294-115" transform="translate(101.3,-57.6)">
<title>Sheet.294</title>
<desc>MBR</desc>
<rect x="0" y="266.9" width="72" height="14.4" class="st5"/>
<text x="28.23" y="276.5" class="st4">MBR</text> </g>
<g id="shape295-118" transform="translate(209.156,-21.5999)">
<title>Sheet.295</title>
<rect x="0" y="252.5" width="43.344" height="28.8" class="st5"/>
</g>
<g id="shape296-120" transform="translate(245.3,-208.8)">
<title>Sheet.296</title>
<desc>Slice (8,320 KB)</desc>
<rect x="0" y="266.9" width="151.2" height="14.4" class="st5"/>
<text x="50.65" y="276.5" class="st4">Slice (8,320 KB)</text> </g>
<g id="shape298-123" transform="translate(245.3,-194.4)">
<title>Sheet.298</title>
<rect x="0" y="266.9" width="14.4" height="14.4" class="st3"/>
</g>
<g id="shape299-125" transform="translate(245.3,-194.4)">
<title>Sheet.299</title>
<desc>CP/M File System (8 MB)</desc>
<rect x="0" y="266.9" width="151.2" height="14.4" class="st7"/>
<text x="35.37" y="276.5" class="st4">CP/M File System (8 MB)</text> </g>
<g id="shape300-128" transform="translate(245.3,-194.4)">
<title>Sheet.300</title>
<rect x="0" y="266.9" width="151.2" height="14.4" class="st5"/>
</g>
<g id="shape301-130" transform="translate(-180,223.7) rotate(-90)">
<title>Bracket.301</title>
<path d="M-0 281.3 A2.41217 2.41217 0 0 1 2.13 279.17 L5.07 279.17 A2.41217 2.41217 -180 0 0 7.2 277.04 A2.41217 2.41217
-180 0 0 9.33 279.17 L12.27 279.17 A2.41217 2.41217 0 0 1 14.4 281.3" class="st12"/>
</g>
<g id="shape302-133" transform="translate(-35.9999,72.5) rotate(-90)">
<title>Bracket.302</title>
<path d="M-0 281.3 A2.41217 2.41217 0 0 1 2.13 279.17 L5.07 279.17 A2.41217 2.41217 -180 0 0 7.2 277.04 A2.41217 2.41217
-180 0 0 9.33 279.17 L12.27 279.17 A2.41217 2.41217 0 0 1 14.4 281.3" class="st12"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -3,7 +3,7 @@
# and available on commandline for this build to work!!!
# Typically "sudo apt install gpp pandoc texlive-latex-extra texlive-luatex texlive-fonts-extra fonts-roboto"
#
OBJECTS = ReadMe.gfm ReadMe.txt UserGuide.pdf SystemGuide.pdf Applications.pdf ROM_Applications.pdf Catalog.pdf Errata.pdf
OBJECTS = ReadMe.gfm ReadMe.txt UserGuide.pdf SystemGuide.pdf Applications.pdf Catalog.pdf Errata.pdf
# DEST = ../../Doc
TOOLS = ../../Tools
OTHERS = *.tmp
@@ -36,6 +36,5 @@ deploy :
cp UserGuide.pdf "../../Doc/RomWBW User Guide.pdf"
cp SystemGuide.pdf "../../Doc/RomWBW System Guide.pdf"
cp Applications.pdf "../../Doc/RomWBW Applications.pdf"
cp ROM_Applications.pdf "../../Doc/RomWBW ROM Applications.pdf"
cp Catalog.pdf "../../Doc/RomWBW Disk Catalog.pdf"
cp Errata.pdf "../../Doc/RomWBW Errata.pdf"

View File

@@ -1,635 +0,0 @@
$define{doc_title}{ROM Applications}$
$define{doc_author}{Phillip Summers}$
$define{doc_authmail}{}$
$include{"Book.h"}$
# Summary
RomWBW includes a small selection of built in utilities and
programming languages.
`\clearpage`{=latex}
# RomWBW Monitor
The Monitor program is a low level utility that can be used
for testing and programming. It allows programs to be entered,
memory to be examined, and input/output devices to be read or
written to.
It's key advantage is that is available at boot up.
Its key disadvantages are that code cannot be entered in assembly
language and there is no ability to save to memory devices.
The available memory area for programming is `0200-EDFFh`.
The following areas are reserved:
Memory Area | Function
------------|-----------------------------------
`0000-00FFh`| Jump and restart (RST) vectors
`0100-01FFh`| HBIOS configuration block
`EE00-FDFFh`| MONITOR
`FE00-FFFFh`| HBIOS proxy
Commands can be entered at the command prompt `>`
Automatic case conversion takes place on command entry and all
arguments are expected to be in hex format.
The current memory bank in low memory is displayed before the prompt i.e.:
`8E>`
The Monitor allows access to all memory locations but ROM and
Flash memory cannot be written to. Memory outside the normal
address range can be accessed using the B command. The first
256 bytes `0000-01FF` is critical for the HBIOS operation.
Changing banks may make this information inaccessible.
Refer to the RomWBW Architecture manual for details memory banking.
A quick guide to using the Monitor program follows:
## ? - Displays a summary of available commands.
```
Monitor Commands (all values in hex):
B - Boot system
D xxxx [yyyy] - Dump memory from xxxx to yyyy
F xxxx yyyy zz - Fill memory from xxxx to yyyy with zz
H - Halt system
I xxxx - Input from port xxxx
K - Keyboard echo
L - Load Intel hex data
M xxxx yyyy zzzz - Move memory block xxxx-yyyy to zzzz
O xxxx yy - Output value yy to port xxxx
P xxxx - Program RAM at address xxxx
R xxxx [[yy] [zzzz]] - Run code at address xxxx
Pass yy and zzzz to register A and BC
T xxxx - X-modem transfer to memory location xxxx
S xx - Set bank to xx
X - Exit monitor
```
## Cold Boot
B - Performs a cold boot of the ROMWBW system. A complete
re-initialization of the system is performed and the system
returns to the Boot Loader prompt.
## Dump Memory
D xxxx [yyyy] - Dump memory from hex location xxxx to yyyy
on the screen as lines of 16 hexadecimal bytes with their
ASCII equivalents (if within a set range, else a '.' is
printed). If the end address is omitted then 256 bytes is
displayed.
A good tool to see where code is located, check
for version id, obtain details for chip configurations and
execution paths.
Examples: `D 100 1FF`
```
0100: 10 0B 01 5A 33 45 4E 56 01 00 00 2A 06 00 F9 11 ...Z3ENV...*..ù.
0110: DE 38 37 ED 52 4D 44 0B 6B 62 13 36 00 ED B0 21 Þ87íRMD.kb.6.í°!
0120: 7D 32 E5 21 80 00 4E 23 06 00 09 36 00 21 81 00 }2å!..N#...6.!..
0130: E5 CD 6C 1F C1 C1 E5 2A C9 8C E5 CD 45 05 E5 CD åÍl.ÁÁå*É.åÍE.åÍ
0140: 59 1F C3 00 00 C3 AE 01 C3 51 04 C3 4C 02 C3 57 Y.Ã..î.ÃQ.ÃL.ÃW
0150: 02 C3 64 02 C3 75 02 C3 88 02 C3 B2 03 C3 0D 04 .Ãd.Ãu.Ã..ò.Ã..
0160: C3 19 04 C3 22 04 C3 2A 04 C3 35 04 C3 40 04 C3 Ã..Ã".Ã*.Ã5.Ã@.Ã
0170: 48 04 C3 50 04 C3 50 04 C3 50 04 C3 8F 02 C3 93 H.ÃP.ÃP.ÃP.Ã..Ã.
0180: 02 C3 94 02 C3 95 02 C3 85 04 C3 C7 04 C3 D1 01 .Ã..Ã..Ã..ÃÇ.ÃÑ.
0190: C3 48 02 C3 E7 04 C3 56 03 C3 D0 01 C3 D0 01 C3 ÃH.Ãç.ÃV.ÃÐ.ÃÐ.Ã
01A0: D0 01 C3 D0 01 C3 D0 01 C3 D0 01 01 02 01 CD 6B Ð.ÃÐ.ÃÐ.ÃÐ....Ík
01B0: 04 54 68 69 73 20 66 75 6E 63 74 69 6F 6E 20 6E .This function n
01C0: 6F 74 20 73 75 70 70 6F 72 74 65 64 2E 0D 0A 00 ot supported....
01D0: C9 3E FF 32 3C 00 3A 5D 00 FE 20 28 14 D6 30 32 É>ÿ2<.:].þ (.Ö02
01E0: AB 01 32 AD 01 3A 5E 00 FE 20 28 05 D6 30 32 AC «.2­.:^.þ (.Ö02¬
01F0: 01 C5 01 F0 F8 CF E5 26 00 0E 0A CD 39 02 7D 3C .Å.ðøÏå&...Í9.}<
```
## Fill Memory
F xxxx yyyy zz - Fill memory from hex xxxx to yyyy with
a single value of zz over the full range. The Dump command
can be used to confirm that the fill completed as expected. A
good way to zero out memory areas before writing machine data
for debug purposes.
## Halt System
H - Halt system. A Z80 HALT instruction is executed. The
system remains in the halt state until the system is
physically rebooted. Interrupts will not restart the
system. On systems that support a HALT status LED, the
LED will be illuminated.
## Input from port
I xxxx - Input data from port xxxx and display to the screen.
This command is used to read values from hardware I/O ports
and display the contents in hexadecimal.
## Keyboard Echo
K - Echo any key-presses from the terminal. Press 'ESC' key
to quit. This facility provides that any key stroke sent to
the computer will be echoed back to the terminal. File down
loads will be echoed as well while this facility is on.
## Load Hex format file into memory
L - Load a Intel Hex format file via the terminal program.
The load address is defined in the hex file of the
assembled code.
The terminal emulator program should be configured to
give a delay at the end of each line to allow the monitor
enough time to parse the line and move the data to memory.
Keep in mind that this will be a transient unless the
system support battery backed memory. Saving to memory drive
is not supported.
## Move memory
M xxxx yyyy zzzz - Move hex memory block xxxx to yyyy to
memory starting at hex location zzzz. Care should be taken
to insure that there is enough memory at the destination so
that code does not get over-written or memory wrapped around.
## Output to port
O xxxx yy - Output data byte xx to port xxxx. This command is
used to send hexadecimal values to hardware I/O ports to
verify their operation and is the companion to the I operation.
Use clip leaded LEDs to confirm the data written.
## Program memory location
P xxxx - Program memory location xxxx. This routine will
allow you to program a hexadecimal value 'into memory starting
at location xxxx. Press 'Enter' on a blank line to
return to the Monitor prompt.
The limitation around programming memory is that it must be
entered in hexadecimal. An alternative is to use the L command
to load a program that has been assembled to a hex file on the
remote computer.
An excellent online resource for looking up opcodes for entry
can be found here: [https://clrhome.org/table](https://clrhome.org/table)
## Run program
R xxxx [[yy] [zzzz]] - Run program at location xxxx. If optional
arguments yy and zzzz are entered they are loaded into the
A and BC register respectively. The return address of the
Monitor is saved on the stack so the program can return
to the monitor. On return to the monitor, the contents of
the A, HL, DE and BC registers are displayed.
## Set bank
S xx - Change the bank in memory to xx. Memory addresses
0000-7FFF (i.e. bottom 32k) are affected. Because the
interrupt vectors are stored in the bottom page of this
range, this function is disable when interrupt mode 1 is
being used (IM1). Interrupt mode 2 is not affected as the
associated jump vectors are stored in high memory.
Changing the bank also impacts the restart vectors (RST),
so executing code that call the HBIOS using the RST 08
assembly code will not work.
The monitor stack resides in high memory and is not affected
but any code that changes the stack to low memory will be
affected.
### Bank codes and descriptions
TYPE | DESCRIPTION |BANK| DETAILS
-----|--------------------|----|---------------------
RAM | COMMON BANK | 9F | 1024K RAM SYSTEM
RAM | USER BANK | 9E | 1024K RAM SYSTEM
RAM | BIOS BANK | 9D | 1024K RAM SYSTEM
RAM | AUX BANK | 9C | 1024K RAM SYSTEM
RAM | OS BUFFERS END | 9B | 1024K RAM SYSTEM
RAM | OS BUFFERS START | 98 | 1024K RAM SYSTEM
RAM | RAM DRIVE END | 97 | 1024K RAM SYSTEM
RAM | COMMON BANK | 8F | 512K RAM SYSTEM
RAM | USER BANK | 8E | 512K RAM SYSTEM
RAM | BIOS BANK | 8D | 512K RAM SYSTEM
RAM | AUX BANK | 8C | 512K RAM SYSTEM
RAM | OS BUFFERS | 8B | 512K RAM SYSTEM
RAM | OS BUFFERS | 8A | 512K RAM SYSTEM
RAM | OS BUFFERS | 89 | 512K RAM SYSTEM
RAM | OS BUFFERS | 88 | 512K RAM SYSTEM
RAM | RAM DRIVE END | 87 | 512K RAM SYSTEM
RAM | RAM DRIVE START | 80 |
ROM | BOOT BANK | 00 | COLD START & HBIOS
ROM | LOADER & IMAGES | 01 | MONITOR, FORTH
ROM | ROM IMAGES CONTD. | 02 | BASIC, ETC
ROM | FAT FILESYSTEM | 03 | UNA ONLY, ELSE UNUSED
ROM | ROM DRIVE START | 04 |
ROM | ROM DRIVE END | 0F | 512K ROM SYSTEM
ROM | ROM DRIVE END | 1F | 1024K ROM SYSTEM
## X-modem transfer
T xxxx - Receive an X-modem file transfer and load it into
memory starting at location xxxx.
128 byte blocks and checksum mode is the only supported
protocol.
If the monitor is assembled with the DSKY functionality,
this feature will be exclude due to space limitations.
## NOTES:
The RTC utility on the CP/M ROM disk provides facilities
to manipulate the Real Time Clock non-volatile Memory.
Use the C or Z option from the Boot Loader to load CP/M
and then run RTC to see the options list.
# FORTH
CamelForth is the version of Forth included as part of the boot
ROM in ROMWBW. It has been converted from the Z80 CP/M version
published here [www.camelforth.com/page.php?5](www.camelforth.com/page.php?5). The author is Brad
Rodriguez who is a prolific Forth enthusiast, whose work can be
found here: [www.bradrodriguez/papers/index.html](www.bradrodriguez/papers/index.html)
For those are who are not familiar with Forth, I recommend the
wikipedia article [en.wikipedia.org/wiki/Forth_(programming_language](en.wikipedia.org/wiki/Forth_(programming_language))
and the Forth Interest Group website [www.forth.org](www.forth.org)
## Important things to know
Forth is case sensitive.
To exit back to the boot loader type ***bye***
To get a list of available words type ***WORDS***
To reset Forth to its initial state type ***COLD***
Most of the code you find on the internet will not run unless modified or additional Forth
words are added to the dictionary.
This implementation does not support loading or saving of programs. All programs
need to be typed in. Additionally, screen editing and code blocks are not supported.
## Structure of Forth source files
File | Description
--------------|-----------------------------
camel80.azm | Code Primitives
camel80d.azm | CPU Dependencies
camel80h.azm | High Level words
camel80r.azm | ROMWBW additions
glosshi.txt | Glossary of high level words
glosslo.txt | Glossary of low level words
glossr.txt | Glossary of ROMWBW additions
## ROMWBW Additions
Extensions and changes to this implementation compared to the original distribution are:
The source code has been converted from Z80mr assembler to Hector Peraza's zsm.
An additional file camel80r.azm has been added for including additional words to
the dictionary at build time. However, as currently configured there is very little space
allocated for addition words. Exceeding the allocated ROM space will generate an error
message when building.
James Bowman's double precision words have been added from his RC2014 version:
[https://github.com/jamesbowman/camelforth-z80](https://github.com/jamesbowman/camelforth-z80)
Word | Syntax | Description
--------|----------------------------|---------------------------------
D+ | d1 d2 -- d1+d2 | Add double numbers
2>R | d -- | 2 to R
2R> | d -- | fetch 2 from R
M*/ | d1 n2 u3 -- d=(d1*n2)/u3 | double precision mult. div
SVC | hl de bc n -- hl de bc af | Execute a ROMWBW function
P! | n p -- | Write a byte to a I/O port
P@ | p -- n | Read a byte from and I/O port
# BASIC
For those who are not familiar with BASIC, it stands for Beginners All purpose Symbolic
Instruction Code.
ROMWBW contains two versions of ROM BASIC, a full implementation and a "tiny" BASIC.
The full implementation is a version of Microsoft BASIC from the NASCOM Computer.
A comprehensive instruction manual is available in the Doc\\Contrib directory.
## ROMWBW specific features
- Sound
- Graphics
- Terminal Support
## ROMWBW unsupported features
- This ROM-hosted implementation does not support cassette or disk
access for loading and saving programs.
# TastyBASIC
TastyBASIC offers a minimal implementation of BASIC that is only 2304 bytes in size.
It originates from Li-Chen Wang's Palo Alto Tiny BASIC from around 1976. It's small size suited the tiny memory capacities of the time. This implementation is by Dimitri Theulings and his
original source can be found here [https://github.com/dimitrit/tastybasic](https://github.com/dimitrit/tastybasic)
## Features / Limitations
- This ROM-hosted implementation does not support disk access for
loading and saving programs.
- Integer arithmetic, numbers -32767 to 32767
- Singles letter variables A-Z
- 1-dimensional array support
- Strings are not supported
## Direct Commands
- `LIST`,`RUN`, `NEW`, `CLEAR`, `BYE`
## Statements
- `LET`, `IF`, `GOTO`, `GOSUB RETURN`, `REM`, `FOR TO NEXT STEP`, `INPUT`, `PRINT`, `POKE`, `END`
## Functions
- `PEEK`, `RND`, `ABS`, `USR`, `SIZE`
## Operators
- `>=`, `#`, `>`, `=`, `<=`, `<`
- Operator precedence is supported.
Type ***BYE*** to return to the monitor.
# Play a Game
## 2048
2048 is a puzzle game that can be both mindless and challenging. It
appears deceptively simple but failure can creep up on you suddenly.
It requires an ANSI/VT-100 compatible colour terminal to play.
2048 is like a sliding puzzle game except the puzzle tiles are
numbers instead of pictures. Instead of moving a single tile all
tiles are moved simultaneously in the same direction. Where two
tiles of the same number collide, they are reduced to one tile with
the combined value. After every move a new tile is added with
a starting value of 2.
The goal is to create a tile of 2048 before all tile locations are
occupied. Reaching the highest points score, which is the sum of all
the tiles is a secondary goal. The game will automatically end when
there are no more possible moves.
Play consists of entering a direction to move. Directions can be entered
using any of three different keyboard direction sets.
```
Direction | Keys
----------|----------
Up | w ^E 8
Down | s ^X 2
Left | a ^S 4
Right | d ^D 6
```
The puzzle board is a 4x4 grid. At start, the grid will be populated
with two 2 tiles. An example game sequence is shown below with new
tiles to the game shown in brackets.
```
Start Move 1 - Up Move 2 - Left Move 3 - Left
+---+---+---+---+ +---+---+---+---+ +---+---+---+---+ +---+---+---+---+
| | | |(2)| | | | | 4 | | 4 | | | | | 4 | | | |
+---+---+---+---+ +---+---+---+---+ +---+---+---+---+ +---+---+---+---+
| | | | | | | | | | | | | |(4)| | 4 | | | |
+---+---+---+---+ +---+---+---+---+ +---+---+---+---+ +---+---+---+---+
| | | |(2)| | | | | | | | | | | | | | | |
+---+---+---+---+ +---+---+---+---+ +---+---+---+---+ +---+---+---+---+
| | | | | | | |(2)| | | 2 | | | | | 2 | |(2)| |
+---+---+---+---+ +---+---+---+---+ +---+---+---+---+ +---+---+---+---+
Move 4 - Left Move 5 - Up Move 6 - Right Move 7 - Up
+---+---+---+---+ +---+---+---+---+ +---+---+---+---+ +---+---+---+---+
| 4 | | | | | 8 | | | 4 | | | | 8 | 4 | | | | 8 | 8 |
+---+---+---+---+ +---+---+---+---+ +---+---+---+---+ +---+---+---+---+
| 4 | | |(4)| | 4 | | | | | | | | 4 | | | | | 2 |
+---+---+---+---+ +---+---+---+---+ +---+---+---+---+ +---+---+---+---+
| | | | | | | | | | | | | | | | | | | |
+---+---+---+---+ +---+---+---+---+ +---+---+---+---+ +---+---+---+---+
| 4 | | | | |(2)| | | | |(2)| | | 2 | |(2)| | | |
+---+---+---+---+ +---+---+---+---+ +---+---+---+---+ +---+---+---+---+
```
This is how I lost this game:
```
+---+---+---+---+
| 4 | 2 | 16| 4 |
+---+---+---+---+
| 32| 64| 8 | 2 |
+---+---+---+---+
| 4 | 8 |128| 32|
+---+---+---+---+
|(2)| 16| 8 | 4 |
+---+---+---+---+
```
Press Q at any time to bring up the option to Quit or Restart the game.
# Network Boot
# Xmodem Flash Updater
The ROMWBW Xmodem flash updater provides the capability to update ROMWBW from the boot loader using an x-modem file transfer. It offers similar capabilities to Will Sowerbutts FLASH4 utility except that the flashing process occurs during the file transfer.
These are the key differences between the two methods are:
Xmodem Flash Updater | FLASH4
--------------------------------|-----------------
Available from the boot loader | Well proven and tested
Xmodem transfer is integrated | Wider range of supported chips and hardware
Integrated checksum utilities | Wider range of supported platforms
Capability to copy a ROM image | Only reprograms sectors that have changed
More convenient one step process | Ability save and verify ROM images
No intermediate storage required | Progress display while flashing
. | Displays chip identification information
. | Faster file transfer
The major disadvantages of the Updater is that it is new and relatively untested. There is the risk that a failed transfer will result in a partially flashed and unbootable ROM. There are some limitations on serial transfer speeds.
The updater utility was initially intended to support the Retrobrew SBC-V2-005 platform using Atmel 39SF040 flash chips but has now been extended to be more generic in operation.
Supported flash chips are
39SF040, 29F040, AT49F040, AT29C040, M29F040 , MX29F040, A29010B, A29040B
The Atmel 39SF040 chip is recommended as it can erase and write 4Kb sectors. Other chips require the whole chip to be erased.
## Usage
In most cases, completing a ROM update is a simple as:
1. Booting to the boot loader prompt
2. Selecting option X - Xmodem Flash Updater
3. Selecting option U - Update
4. Initiating an X-modem transfer of your ROM image on your console device
5. Selecting option R - Reboot
If your console device is not able to transfer a ROM image i.e. your console is a VDU then you will have to use the console options to identify which character-input/output device is to be used as the serial device for transfer.
When your console is the serial device used for the transfer, no progress information is displayed as this would disrupt the x-modem file transfer. If you use an alternate character-input/output devices as the serial device for the transfer then progress information will be displayed on the console device.
Due to different platform processor speeds, serials speeds and flow control capabilities the default console or serial device speed may need to be reduced for a successful transfer and flash to occur. The **Set Console Interface/Baud code** option at the Boot Loader can be used to change the speed if required. Additionally, the Updater has options to set to and revert from a recommended speed.
See the ROMWBW Applications guide for additional information on performing upgrades.
## Console Options
Option ( C ) - Set Console Device
Option ( S ) - Set Serial Device
By default the updater assumes that the current console is a serial device and that the ROM file to be flashed will also be transferred across this device, so the Console and Serial device are both the same.
Either device can be can be change to another character-input/output device but the updater will always expect to receive the x-modem transfer on the **Serial Device**
The advantage of transferring on a different device to the console is that progress information can be displayed during the transfer.
Option ( > ) - Set Recommended Baud Rate
Option ( < ) - Revert to Original Baud Rate
## Programming options
Option ( U ) - Begin Update
The will begin the update process. The updater will expect to start receiving
an x-modem file on the serial device unit.
X-modem sends the file in packets of 128 bytes. The updater will cache 32
packets which is 1 flash sector and then write that sector to the
flash device.
If using separate console, bank and sector progress information will shown
```
BANK 00 s00 s01 s02 s03 s04 s05 s06 s06 s07
BANK 01 s00 s01 s02 s03 s04 s05 s06 s06 s07
BANK 02 s00 s01 s02 s03 s04 s05 s06 s06 s07 etc
```
The x-modem file transfer protocol does not provide any filename or size
information for the transfer so the updater does not perform any checks
on the file suitability.
The updater expects the file size to be a multiple of 4 kilobytes and
will write all data received to the flash device. A system update
file (128kb .img) or complete ROM can be received and written (512kb or
1024kb .rom)
If the update fails it is recommended that you retry before rebooting or
exiting to the Boot loader as your machine may not be bootable.
Option ( D ) - Duplicate flash #1 to flash #2
This option will make a copy of flash #1 onto flash #2. The purpose of this is to enable
making a backup copy of the current flash. Intended for systems using 2x512Kb Flash devices.
Option ( V ) - Toggle Write Verify
By default each flash sector will be verified after being written. Slight
performance improvements can be gained if turned off and could be used if
you are experiencing reliable transfers and flashing.
## Exit options
Option ( R ) - Reboot
Execute a cold reboot. This should be done after a successful update. If
you perform a cold reboot after a failed update then it is likely that
your system will be unusable and removing and reprogramming the flash
will be required.
Option ( Q ) - Quit to boot loader.
The SBC Boot Loader is reloaded from ROM and
executed. After a successful update a Reboot should be performed. However,
in the case of a failed update this option could be used to attempt to
load CP/M and perform the normal x-modem / flash process to recover.
## CRC Utility options
Option ( 1 ) and ( 2 ) - Calculate and display CRC32 of 1st or 2nd 512k ROM.
Option ( 3 ) - Calculate and display CRC32 of a 1024k (2x512Kb) ROM.
Can be used to verify if a ROM image has been transferred and flashed correctly. Refer to the Teraterm section below for details on configuring the automatic display of a files CRC after it has been transferred.
In Windows, right clicking on a file should also give you a context menu option CRC SHA which will allow you to select a CRC32 calculation to be done on the selected file.
## Tera Term macro configuration
Macros are a useful tool for automatic common tasks. There are a number of instances where using macros to facilitate the update process could be worthwhile if you are:
* Following the ROMWBW development builds.
* Doing lots of configuration changes.
* Doing development on ROMWBW drivers
Macros can be used to automate sending ROM updates or images and for my own purposed I have set up a separate macro for transferring each of the standard build ROM, my own custom configuration ROM and update ROM.
An example macro file to send an *.upd file, using checksum mode and display the crc32 value of the transmitted file:
```
Xmodem send, checksum, display crc32
xmodemsend '\\desktop\users\phillip\documents\github\romwbw\binary\sbc_std_cust.upd' 1
crc32file crc '\\desktop\users\phillip\documents\github\romwbw\binary\sbc_std_cust.rom'
sprintf '0x%08x' crc
messagebox inputstr 'crc32'
```
## Serial speed guidelines
As identified in the introduction, there are limitations on serial speed depending on processor speed and flow control settings. Listed below are some of the results identified during testing.
Platform / Configuration | Processor Speed | Maximum Serial Speed
-------------------------------|-----------------|---------------------
SBC-V2 UART no flow control | 2mhz | 9600
SBC-V2 UART no flow control | 4mhz | 19200
SBC-V2 UART no flow control | 5mhz | 19200
SBC-V2 UART no flow control | 8mhz | 38400
SBC-V2 UART no flow control | 10mhz | 38400
SBC-V2 USB-FIFO 2mhz+ | | n/a
SBC-MK4 ASCI no flow control | 18.432mhz | 9600
SBC-MK4 ASCI with flow control | 18.432mhz | 38400
The **Set Recommend Baud Rate** option in the Updater menu follows the following guidelines.
Processor Speed | Baud Rate
----------------|----------
1Mhz | 4800
2-3Mhz | 9600
4-7Mhz | 19200
8-20Mhz | 38400
These can be customized in the updater.asm source code in the CLKTBL table if desired.
Feedback to the ROMWBW developers on these guidelines would be appreciated.
## Notes:
- All testing was done with Teraterm x-modem, Forcing checksum mode using macros was found to give the most reliable transfer.
- Partial writes can be completed with 39SF040 chips. Other chips require entire flash to be erased before being written.
- An SBC V2-005 MegaFlash or Z80 MBC required for 1mb flash support. The Updater assumes both chips are same type
- Failure handling has not been tested.
- Timing broadly calibrated on a Z80 SBC-v2
- UNA BIOS not supported

View File

@@ -114,7 +114,6 @@ Documentation for $doc_product$ includes:
* $doc_user$
* $doc_sys$
* $doc_apps$
* $doc_romapps$
* $doc_errata$
# Acknowledgments

Binary file not shown.

View File

@@ -126,6 +126,243 @@ execution.
![Bank Switched Memory Layout](Graphics/BankSwitchedMemory){ width=100% }
## Bank Id
RomWBW utilizes a specific assignment of memory banks for dedicated
purposes. A numeric Bank Id is used to refer to the memory banks. The
Bank Id is a single byte. In general, the Bank Id simply refers to each
of the 32K banks in sequential order. In other words, Bank Id 0 is the
first physical 32K, Bank Id 1 is the second, etc. However, the high
order bit of the Bank Id has a special meaning. If it is 0, it indicates
a ROM bank is being referred to. If it is 1, it indicates a RAM bank
is being referred to.
For example, let's say we have a typical system with 512KB of ROM and
512KB of RAM. The Bank Ids would look like this:
| Physical Memory | Type | Physical Bank | Bank Id |
|-------------------|------|---------------|-----------|
| 0x000000-0x007FFF | ROM | 0 | 0x00 |
| 0x008000-0x00FFFF | ROM | 1 | 0x01 |
| 0x010000-0x07FFFF | ROM | 2-15 | 0x02-0x0F |
| 0x080000-0x087FFF | RAM | 16 | 0x80 |
| 0x088000-0x08FFFF | RAM | 17 | 0x81 |
| 0x090000-0x0FFFFF | RAM | 18-31 | 0x82-0x8F |
Note that Bank Id 0x00 is **always** the first bank of ROM and 0x80 is
**always** the first bank of RAM. If there were more banks of physical ROM,
they would be assigned Bank Ids starting with 0x10. Likewise, additional
bank of physical RAM would be assigned Bank Ids starting with 0x90.
The Bank Id is used in all RomWBW API functions when referring to
the mapping of banks to the lower 32K bank area of the processor. In
this way, all RomWBW functions can refer to a generic Bank Id without
needing to understand how a specific hardware platform accesses the
physical memory areas. A single routine within the HBIOS is implemented
for each memory manager that maps Bank Ids to physical memory.
## Bank Assignments
RomWBW requires dedicated banks of memory for specific purposes. It
uses Bank Ids via an algorithm to make these assignments. The following
table describes the way the banks are assigned. The Typical column
shows the specific values that would be assigned for a common system
with 512KB of ROM and 512KB of RAM (nROM=16, nRAM=16).
| Bank Id | Identity | Typical | Purpose |
|-------------------|-----------|---------|------------------------------------------|
| 0x00 |BID_BOOT | 0x00 | Boot Bank (HBIOS image) |
| 0x01 |BID_IMG0 | 0x01 | Boot Loader, Monitor, ROM OSes, ROM Apps |
| 0x02 |BID_IMG1 | 0x02 | ROM Apps |
| 0x03 |BID_IMG2 | 0x03 | \<Reserved\> |
| 0x04 |BID_ROMD0 | 0x04 | First ROM Disk Bank |
| nROM - 1 | | 0x0F | Last ROM Disk Bank |
| 0x80 |BID_BIOS | 0x80 | HBIOS (working copy) |
| 0x81 |BID_RAMD0 | 0x81 | First RAM Disk Bank |
| 0x80 + nRAM - 8 | | 0x88 | Last RAM Disk Bank |
| 0x80 + nRAM - 7 |BID_APP0 | 0x89 | First Application Bank |
| 0x80 + nRAM - 5 | | 0x8B | Last Application Bank |
| 0x80 + nRAM - 4 |BID_BUF | 0x8C | OS Disk Buffers |
| 0x80 + nRAM - 3 |BID_AUX | 0x8D | OS Code Bank |
| 0x80 + nRAM - 2 |BID_USR | 0x8E | User Bank (CP/M TPA) |
| 0x80 + nRAM - 1 |BID_COM | 0x8F | Common Bank |
In this table, nROM and nRAM refer to the number of corresponding
ROM and RAM banks in the the system.
The contents of the banks referred to above are described in more detail
below:
Boot Bank:
: The Boot Bank receives control when a system is first powered
on. It contains a ROM (read-only) copy of the HBIOS. At boot, it does
minimal hardware initialization, then copies itself to the HBIOS bank
in RAM, then resumes execution from the RAM bank.
Boot Loader:
: The application that handles loading of ROM or Disk based applications
including operating systems. It copies itself to a RAM bank at the
start of it's execution.
Monitor:
: The application that implements the basic system monitor functions.
It copies itself to a RAM bank at the start of it's execution.
ROM OSes:
: Code images of CP/M 2.2 and Z-System which are copied to RAM and
executed when a ROM-based operating system is selected in the Boot
Loader.
ROM Applications:
: Various ROM-based application images such as BASIC, FORTH, etc. They
can be selected in the Boot Loader. The Boot Loader will copy the
application image to a RAM bank, then transfer control to it.
ROM Disk:
: A sequential series of banks assigned to provide the system ROM Disk
contents.
HBIOS:
: This bank hosts the running copy of the RomWBW HBIOS.
RAM Disk:
: A sequential series of banks assigned to provide the system RAM Disk.
Application Bank:
: A sequential series of banks that are available for use by applications
that wish to utilize banked memory.
OS Disk Buffers:
: This bank is used by CP/M 3 and ZPM3 for disk buffer storage.
OS Code Bank:
: This bank is used by CP/M 3 and ZPM3 as an alternate bank for code.
This allows these operating systems to make additional TPA space
available for applications.
User Bank:
: This is the default bank for applications to use. This includes the
traditional TPA space for CP/M.
Common Bank:
: This bank is mapped to the upper 32K of the processors memory space.
It is a fixed mapping that is never changed in normal RomWBW operation
hence the name "Common".
# Disk Layout
RomWBW supports two hard disk layouts: the Classic layout used by
RomWBW with 512 directory entries per slice and a Modern layout with
1024 directory entries per slice. These layouts are referred to as
hd512 and hd1k respectively.
WARNING: You **can not** mix the two hard disk layouts on one hard
disk device. You can use different layouts on different hard disk
devices in a single system though.
RomWBW determines which of the hard disk layouts to use for a given
hard disk device based on whether there is a RomWBW hard disk
partition on the disk containing the slices. If there is no RomWBW
partition, then RomWBW will assume the 512 directory entry format for
all slices and will assume the slices start at the first sector of
the hard disk. If there is a RomWBW partition on the hard disk
device, then RomWBW will assume the 1024 directory entry format for
all slices and will assume the slices are located in the defined
partition.
RomWBW supports up to 256 CP/M slices (0-255). Under hd512, the slices
begin at the start of the hard disk. Under hd1k, the slices reside
within partition type 0x2E.
RomWBW accesses all hard disks using Logical Block Addressing (pure
sector offset). When necessary, RomWBW simulates the following disk
geometry for operating systems:
- Sector = 512 Bytes
- Track = 16 Sectors (8KB per Track)
- Cylinder = 16 Tracks (256 Sectors per Cylinder, 128KB per Cylinder)
If one is used, the FAT Partition must not overlap the CP/M slices.
The FAT partition does not need to start immediately after the CP/M
slices nor does it need to extend to the end of the hard disk. Its
location and size are entirely determined by its corresponding
partition table entry.
Drive letters in CP/M are ASSIGNed to the numbered slices as desired.
At boot, RomWBW automatically assigns up to 8 slices to drive letters
starting with the first available drive letter (typically C:).
Microsoft Windows will assign a single drive letter to the FAT partition
when the CF/SD Card is inserted. The drive letter assigned has no
relationship to the CP/M drive letters assigned to CP/M slices.
In general, Windows, MacOS, or Linux know nothing about the CP/M slices
and CP/M knows nothing about the FAT partition. However, the FAT
application can be run under CP/M to access the FAT partition
programmatically.
A CP/M slice is (re)initialized using the CP/M command CLRDIR. A CP/M
slice can be made bootable by copying system image to the System Area
using SYSCOPY.
The FAT partition can be created from CP/M using the FDISK80 application.
The FAT partition can be initialized using the FAT application from CP/M
using the command `FAT FORMAT n:` where n is the RomWBW disk unit
number containing the FAT partition to be formatted.
## Modern Disk Layout (hd1k)
![Modern Disk Layout](Graphics/hd1k)
The CP/M filesystem on a Modern disk will accommodate 1,024 directory
entries.
The CP/M slices reside entirely within a hard disk partition of type
0x2E. The number of slices is determined by the number of slices that
fit within the partition spaces allocated up to the maximum of 256.
## Classic Disk Layout (hd512)
![Classic Disk Layout](Graphics/hd512)
The CP/M filesystem on a Classic disk will accommodate 512 directory
entries.
The CP/M slices reside on the hard disk starting at the first sector
of the hard disk. The number of CP/M slices is not explicitly recorded
anywhere on the hard disk. It is up to the system user to know how
many slices are being used based on the size of the hard disk media
and/or the start of a FAT partition.
A partition table may exist within the first sector of the first
slice. For Classic disks, the partition table defines only the
location and size of the FAT partition. The Partition Table does
not control the location or number of CP/M slices in any way.
The Partition Table resides in a sector that is shared with the System
Area of CP/M Slice 0. However, the RomWBW implementation of CP/M takes
steps to avoid changing or corrupting the Partition Table area.
The FAT partition can be created from CP/M using the FDISK80
application. The user is responsible for ensuring that the start of the
FAT partition does not overlap with the area they intend to use for
CP/M slices. FDISK80 has a Reserve option to assist with this.
# System Boot Process
A multi-phase boot strategy is employed. This is necessary because at
@@ -610,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)
@@ -828,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** |
@@ -861,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 |
@@ -871,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.
@@ -1879,7 +2133,7 @@ sound will play for the duration defined in HL and then return.
| **Entry Parameters** | **Returned Values** |
|----------------------------------------|----------------------------------------|
| B: 0x57 | A: Status |
| C: Disk Unit | C: Device Attributes |
| C: Sound Unit | C: Device Attributes |
| | D: Device Type |
| | E: Device Number |
| | H: Device Unit Mode |
@@ -1902,6 +2156,17 @@ is servicing the specified unit. Both of these values are considered
driver specific. Refer to the associated hardware driver for the values
used.
### Function 0x58 -- Sound Beep (SNDBEEP)
| **Entry Parameters** | **Returned Values** |
|----------------------------------------|----------------------------------------|
| B: 0x58 | A: Status |
| C: Sound Unit | |
Play a beep tone on the specified Sound Unit (C). The beep will
normally be about 1/3 second in duration and the tone will be
approximately B5.
`\clearpage`{=latex}
## System (SYS)
@@ -2262,6 +2527,9 @@ a double-word binary value. The frequency of the system timer in Hertz
is returned in Frequency (C). The returned Status (A) is a standard HBIOS
result code.
The tick count is a 32 bit binary value. It will rollover to zero
if the maximum value for a 32 bit number is reached.
Note that not all hardware configuration have a system timer. You
can determine if a timer exists by calling this function repeatedly
to see if it is incrementing.
@@ -2272,14 +2540,19 @@ to see if it is incrementing.
|----------------------------------------|----------------------------------------|
| B: 0xF8 | A: Status |
| C: 0xD1 | DEHL: Seconds Count |
| | C: Ticks per Second |
| | C: Remainder Ticks |
Return the a Seconds Count (DEHL) with the number of seconds that have
Return the Seconds Count (DEHL) with the number of seconds that have
elapsed since the system was started. This is a double-word binary
value. Additionally, the number of Ticks per Second (C) is returned.
The returned Status (A) is a standard HBIOS result code.
value. Additionally, Remainder Ticks (C) is returned and contains the number
of ticks that have elapsed within the current second.
This availability of the Seconds Count (DEHL) is dependent on having a
Note that Remainder Ticks (C) will have a value from 0 to 49 since there are
50 ticks per second. So, Remainder Ticks does not represent a fraction of the
current second. Remainder Ticks (C) can be doubled to derive the hundredths of
milliseconds elapsed within the current second.
The availability of the Seconds Count (DEHL) is dependent on having a
system timer active. If the hardware configuration has no system timer,
then Seconds Count (DEHL) will not increment.

View File

@@ -11,11 +11,8 @@ companion documents you should refer to as appropriate:
of RomWBW. It includes a reference for the RomWBW HBIOS API
functions.
* $doc_romapps$ is a reference for the ROM-hosted applications provided
with RomWBW including the monitor, programming languages, etc.
* $doc_apps$ is a reference for the OS-hosted proprietary command
line applications that were created to enhance RomWBW.
* $doc_apps$ is a reference for the ROM-hosted and OS-hosted applications
created or customized to enhance the operation of RomWBW.
* $doc_catalog$ is a reference for the contents of the disk images
provided with RomWBW. It is somewhat out of date at this time.
@@ -225,45 +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 |
| **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
@@ -276,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.
@@ -390,7 +390,7 @@ At the Boot Loader prompt, you can type `H <enter>` for help. You
can type `L <enter>` to list the available built-in ROM applications.
If your terminal supports ANSI escape sequences, you can try the
'P' command to play a simple on-screen game. Instructions for the
game are found in $doc_romapps$.
game are found in $doc_apps$.
If all of this seems fine, your ROM has been successfully programmed.
See the [Boot Loader Operation] section of this document for further
@@ -644,7 +644,7 @@ return to the Boot Loader menu. If you are interested in creating a
custom application to run here, review the "usrrom.asm" file in the
Source/HBIOS folder of the distribution.
Each of the ROM Applications is documented in $doc_romapps$. Some
Each of the ROM Applications is documented in $doc_apps$. Some
of the applications (such as BASIC) also have their own independent
manual in the Doc directory of the distribution. The OSes included
in the ROM (CP/M 2.2 & Z-System) are described in the Operating Systems
@@ -785,23 +785,62 @@ the [Disk Images] section of this document.
### Auto-Submit Batch Files
All of the operating systems supplied with RomWBW have the ability to
execute a "batch" of commands by creating a batch submission file
containing the commands to be executed. The specifics of using
batch files in a specific operating system is covered in its specific
documentation.
All of the operating systems supplied with RomWBW have the ability to
execute a "batch" of commands by creating a batch submission file
containing the commands to be executed. The mechanism for running
commands automatically at startup varies by operating system. In some
cases, it was built into the original operating system. In other cases,
I have added this capability in the RomWBW BIOS of the operating
system.
At boot, the operating system will look for a specific batch file
(`PROFILE.SUB` for CP/M 2.2 and 3) on the boot drive and execute that
batch file automatically. This allows you to automatically customize
your operating system with any commands desired at boot. CP/M 2.2 did
not originally have the ability to automatically excute a batch file at
boot, but the CBIOS in RomWBW has added this capability.
In all cases, the file containing the commands to run at startup must
be on the boot drive (A:). RomWBW automatically assigns A: to the
disk slice you choose to boot. Adding a startup command file to the
ROM Disk is not recommended because it would require customizing and
building a new ROM. Use of bootable disk slices is preferred since
the startup command files can be added/edited without any special
system customization.
Here is an overview for each operating system:
- **CP/M 2.2** - Will run PROFILE.SUB as a SUBMIT file if it exists in
A: at startup. Note that original CP/M 2.2 itself did not have this
ability -- it was added to the RomWBW CP/M 2.2 BIOS. The use of SUBMIT
files is documented in Section 1.6.7 SUBMIT Command of the CPM Manual
included in the Doc/CPM folder of the RomWBW distribution.
- **Z-System (ZSDOS 1.1)** - Will run run PROFILE.SUB as a SUBMIT file
if it exists in A: at startup. Works exactly the same as CP/M 2.2.
The original Z-System ZSDOS 1.1 did not have this ability -- it was
added to the RomWBW Z-System BIOS. The Z-System documentation does
not cover the use of SUBMIT files -- please refer to the CP/M 2.2
documentation.
- **NZCOM** - Will run the command STARTZCM at startup. This is
normally an alias file. You use SALIAS to edit such files. Please see
Section 3.1 Creating an Alias of the NZCOM Users Manual included in the
Doc/CPM folder of the RomWBW distribution. Note that the NZCOM
distribution includes a PROFILE.SUB file. NZCOM itself is launched from
ZSDOS. The included PROFILE.SUB accomplishes this. Do not modify this
file unless you fully understand the NZCOM boot process.
- **CP/M 3** - Will run PROFILE.SUB as a SUBMIT file if it exists in A:
at startup. This mechanism is built into the CP/M 3 operating system.
Please see Section 4.5 Executing Multiple Commands and Section 5.2.74
Executing the SUBMIT Command of the CPM3 Users Guide included in the
Doc/CPM folder of the RomWBW distribution.
- **ZPM3** - Will run the command STARTZPM at startup. This is normally
an alias file. You use SALIAS to edit such files. ZPM3 has no real
documentation. The NZCOM documentation of STARTZCM is generally correct
for ZPM3.
Since RomWBW can utilize many disk slices, it is very easy to create
slices for specific workflows (editing, software development, games,
etc.). You can then just boot to the slice that is optimized for the
task you want to perform.
task you want to perform. Each such slice may have its own startup
command batch file that customizes the environment for the specific
workflow desired.
## System Management
@@ -1948,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:
@@ -2316,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
@@ -2348,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.
@@ -2628,7 +2672,19 @@ selecting slice 0 of the corresponding hard disk unit at
the RomWBW Boot Loader prompt. Do not attempt to use
CP/M slices on the same disk.
Refer to the ReadMe.txt file in Source/pSys for more details.
Due to limitations in the p-System configuration mechanism, it does
not recognize the arrow keys of an ANSI Terminal. To work around
this, the following control keys have been defined:
| Function | Key |
|------------|------------|
| Up | ctrl+E |
| Down | ctrl+X |
| Left | ctrl+S |
| Right | ctrl+D |
Refer to [Source/pSys/ReadMe.txt]($file_root$/Source/pSys/ReadMe.txt)
for more details about the p-System adaptation.
#### Documentation
@@ -3038,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
@@ -3065,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
@@ -3144,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
@@ -3152,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
@@ -3166,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
@@ -4599,7 +4782,7 @@ the RomWBW HBIOS configuration.
`\clearpage`{=latex}
#### ROM Image File: RCZ80_kio.rom
#### ROM Image File: RCZ80_kio_std.rom
| | |
|-------------------|---------------|
@@ -4642,7 +4825,7 @@ the RomWBW HBIOS configuration.
### RCBus Z180 CPU Module
#### ROM Image File: RCZ180_ext.rom
#### ROM Image File: RCZ180_ext_std.rom
| | |
|-------------------|---------------|
@@ -4687,7 +4870,7 @@ the RomWBW HBIOS configuration.
`\clearpage`{=latex}
#### ROM Image File: RCZ180_nat.rom
#### ROM Image File: RCZ180_nat_std.rom
| | |
|-------------------|---------------|
@@ -4734,7 +4917,7 @@ the RomWBW HBIOS configuration.
### RCBus Z280 CPU Module
#### ROM Image File: RCZ280_ext.rom
#### ROM Image File: RCZ280_ext_std.rom
| | |
|-------------------|---------------|
@@ -4777,7 +4960,7 @@ the RomWBW HBIOS configuration.
`\clearpage`{=latex}
#### ROM Image File: RCZ280_nat.rom
#### ROM Image File: RCZ280_nat_std.rom
| | |
|-------------------|---------------|
@@ -4821,7 +5004,7 @@ the RomWBW HBIOS configuration.
### Easy Z80 SBC
#### ROM Image File: RCZ80_easy.rom
#### ROM Image File: RCZ80_easy_std.rom
| | |
|-------------------|---------------|
@@ -4866,7 +5049,7 @@ the RomWBW HBIOS configuration.
### Tiny Z80 SBC
#### ROM Image File: RCZ80_tiny.rom
#### ROM Image File: RCZ80_tiny_std.rom
| | |
|-------------------|---------------|
@@ -4910,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
| | |
|-------------------|---------------|
@@ -4955,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
| | |
|-------------------|---------------|
@@ -5003,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
| | |
|-------------------|---------------|
@@ -5049,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
| | |
|-------------------|---------------|
@@ -5078,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
| | |
|-------------------|---------------|
@@ -5125,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
| | |
|-------------------|---------------|
@@ -5172,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
| | |
|-------------------|---------------|
@@ -5201,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
@@ -5332,7 +5515,7 @@ S- MD: TYPE=RAM
### Z80 ZRC CPU Module
#### ROM Image File: RCZ80_zrc.rom
#### ROM Image File: RCZ80_zrc_std.rom
| | |
|-------------------|---------------|
@@ -5379,7 +5562,7 @@ S- MD: TYPE=RAM
`\clearpage`{=latex}
#### ROM Image File: RCZ80_zrc_ram.rom
#### ROM Image File: RCZ80_zrc_ram_std.rom
| | |
|-------------------|---------------|
@@ -5426,7 +5609,7 @@ S- MD: TYPE=RAM
### Z80 ZRC512 CPU Module
#### ROM Image File: RCZ80_zrc512.rom
#### ROM Image File: RCZ80_zrc512_std.rom
| | |
|-------------------|---------------|
@@ -5473,7 +5656,7 @@ S- MD: TYPE=RAM
### Z180 Z1RCC CPU Module
#### ROM Image File: RCZ180_z1rcc.rom
#### ROM Image File: RCZ180_z1rcc_std.rom
| | |
|-------------------|---------------|
@@ -5519,7 +5702,7 @@ S- MD: TYPE=RAM
### Z280 ZZRCC CPU Module
#### ROM Image File: RCZ280_zzrcc.rom
#### ROM Image File: RCZ280_zzrcc_std.rom
| | |
|-------------------|---------------|
@@ -5565,7 +5748,7 @@ S- MD: TYPE=RAM
`\clearpage`{=latex}
#### ROM Image File: RCZ280_zzrcc_ram.rom
#### ROM Image File: RCZ280_zzrcc_ram_std.rom
| | |
|-------------------|---------------|
@@ -5611,7 +5794,7 @@ S- MD: TYPE=RAM
### Z280 ZZ80MB SBC
#### ROM Image File: RCZ280_zz80mb.rom
#### ROM Image File: RCZ280_zz80mb_std.rom
| | |
|-------------------|---------------|
@@ -5879,6 +6062,73 @@ S- MD: TYPE=RAM
`\clearpage`{=latex}
### S100 FPGA Z80
#### ROM Image File: FZ80_std.rom
| | |
|-------------------|---------------|
| Default CPU Speed | 8.000 MHz |
| Interrupts | None |
| System Timer | None |
| Serial Default | 9600 Baud |
| Memory Manager | Z2 |
| ROM Size | 0 KB |
| RAM Size | 512 KB |
##### Supported Hardware (see [Appendix B - Device Summary]):
FP: LEDIO=255
SSER: IO=52
SCON: IO=0
MD: TYPE=RAM
PPIDE: IO=48, MASTER
PPIDE: IO=48, SLAVE
FP: LEDIO=255
DS5RTC: RTCIO=104, IO=104
SSER: IO=52
SCON: IO=0
MD: TYPE=RAM
PPIDE: IO=48, MASTER
PPIDE: IO=48, SLAVE
SD: MODE=FZ80, IO=108, UNITS=2
##### Notes:
- 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
@@ -5896,7 +6146,8 @@ may be discovered by RomWBW in your system.
| CTC | System | Zilog Clock/Timer |
| CVDU | Video | MC8563-based Video Display Controller |
| DMA | System | Zilog DMA Controller |
| DS1307 | RTC | Maxim DS1307 PCF I2C Real-Time Clock w/ NVRAM |
| DS5RTC | RTC | Maxim DS1305 SPI Real-Time Clock w/ NVRAM |
| DS7RTC | RTC | Maxim DS1307 PCF I2C Real-Time Clock w/ NVRAM |
| DS1501RTC | RTC | Maxim DS1501/DS1511 Watchdog Real-Time Clock |
| DSRTC | RTC | Maxim DS1302 Real-Time Clock w/ NVRAM |
| DUART | Char | SCC2681 or compatible Dual UART |
@@ -5904,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 |
@@ -5912,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 |
@@ -5936,6 +6189,7 @@ may be discovered by RomWBW in your system.
| SN76489 | Sound | SN76489 Programmable Sound Generator |
| SPK | Sound | Bit-bang Speaker |
| SYQ | Disk | Iomega SparQ Drive on PPI |
| SSER | Char | Simple Serial Interface |
| TMS | Video | TMS9918/38/58 Video Display Controller |
| UART | Char | 16C550 Family Serial Interface |
| USB-FIFO | Char | FT232H-based ECB USB FIFO |

View File

@@ -0,0 +1,18 @@
FPGA Z80 has no real ROM. It has a single 512K RAM chip.
The ROMless startup mode treats the entire 512KB as RAM. 384KB of RAM
must be preloaded by the FPGA Monitor CF Loader. There will be no ROM
disk available under RomWBW. There will be a RAM Disk and it's initial
contents will be seeded by the image loaded by the CF Loader.
Bank Contents Description
-------- -------- -----------
0x0 BIOS HBIOS Bank (operating)
0x1 IMG0 ROM Loader, Monitor, ROM OSes
0x2 IMG1 ROM Applications
0x3 IMG2 Reserved
0x4-0xB RAMD RAM Disk Banks
0xC BUF OS Buffers (CP/M3)
0xD AUX Aux Bank (CP/M 3, BPBIOS, etc.)
0xE USR User Bank (CP/M TPA, etc.)
0xF COM Common Bank, Upper 32KB

24
Source/FZ80/Build.cmd Normal file
View File

@@ -0,0 +1,24 @@
@echo off
setlocal
set TOOLS=../../Tools
set PATH=%TOOLS%\srecord;%PATH%
for %%f in (..\..\Binary\FZ80_*.rom) do call :build %%~nf
goto :eof
: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\%1.rom -binary -offset 0x80000 -o temp.dat -binary
move temp.dat ..\..\Binary\%1_hd1k_prefix.dat
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

3
Source/FZ80/Clean.cmd Normal file
View File

@@ -0,0 +1,3 @@
@echo off
setlocal

View File

@@ -0,0 +1,19 @@
FZ80 Disk Prefix Layout
=======================
---- Bytes ---- --- Sectors ---
Start Length Start Length Description
------- ------- ------- ------- ---------------------------
0x00000 0x001BE 0 1 Unused
0x001B8 0x00048 RomWBW Partition Table
0x00200 0x1EE00 1 7FE00 Unused
0x80000 0x60000 1024 768 RomWBW
0x100000 2048 Start of slices (partition 0x1E)
Notes
-----
- FPGA Z80 Monitor reads 384KB (RomWBW) from sectors 1024-1791 of CF into first 384KB of physical RAM
- FPGA Z80 ZRC Monitor maps first 32KB of physical RAM to first 32KB of CPU RAM and starts execution at 0x0000
-- WBW 3:18 PM 6/30/2024

25
Source/FZ80/Makefile Normal file
View File

@@ -0,0 +1,25 @@
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
%_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 $< -binary -offset 0x80000 -o temp.dat -binary
mv temp.dat $@
%_hd1k_combo.img: %_hd1k_prefix.dat $(HD1KIMGS)
cat $^ > $@

BIN
Source/FZ80/fz80_ptbl.bin Normal file

Binary file not shown.

View File

@@ -43,8 +43,8 @@ Standard RAM Bank Layout (512K)
Bank ID Usage
------- ------
0x80 RomWBW HBIOS
0x81-0x88 RAM Disk Data (3)
0x89-0x8B App Banks (8)
0x81-0x88 RAM Disk Data (8)
0x89-0x8B App Banks (3)
0x8C CP/M 3 Buffers
0x8D CP/M 3 OS
0x8E User TPA

View File

@@ -72,7 +72,7 @@ copy ..\Fonts\font*.asm . || exit /b
tasm -t%CPUType% -g3 -dROMBOOT hbios.asm hbios_rom.bin hbios_rom.lst || exit /b
tasm -t%CPUType% -g3 -dAPPBOOT hbios.asm hbios_app.bin hbios_app.lst || exit /b
tasm -t%CPUType% -g3 -dIMGBOOT hbios.asm hbios_img.bin hbios_img.lst || exit /b
::tasm -t%CPUType% -g3 -dIMGBOOT hbios.asm hbios_img.bin hbios_img.lst || exit /b
::
:: Build ROM Components
@@ -211,38 +211,38 @@ 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
call Build DUO std || exit /b
call Build HEATH std || exit /b
call Build EPITX std || exit /b
call Build NABU 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

@@ -27,8 +27,8 @@ $ErrorAction = 'Stop'
# UNA BIOS is simply imbedded, it is not built here.
#
$PlatformListZ80 = "SBC", "MBC", "ZETA", "ZETA2", "RCZ80", "Z80RETRO", "DUO", "UNA", "HEATH", "MON", "NABU"
$PlatformListZ180 = "N8", "MK4", "RCZ180", "SCZ180", "DYNO", "RPH", "S100", "EPITX"
$PlatformListZ80 = "SBC", "MBC", "ZETA", "ZETA2", "RCZ80", "Z80RETRO", "DUO", "UNA", "HEATH", "MON", "NABU", "FZ80"
$PlatformListZ180 = "N8", "MK4", "RCZ180", "SCZ180", "DYNO", "RPH", "S100", "EPITX", "GMZ180"
$PlatformListZ280 = "RCZ280"
#

View File

@@ -11,47 +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="NABU"; 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,30 @@
;
;==================================================================================================
; S100 FPGZ Z80 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 BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#include "cfg_fz80.asm"
;
CPUOSC .SET 8000000 ; CPU OSC FREQ IN MHZ
CRTACT .SET TRUE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP

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

@@ -24,46 +24,5 @@
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#include "cfg_rcz80.asm"
#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

@@ -35,9 +35,6 @@ 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)
;
UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
UARTCAS .SET TRUE ; UART: AUTO-DETECT ECB CASSETTE UART
UARTMFP .SET TRUE ; UART: AUTO-DETECT MF/PIC UART
UART4 .SET TRUE ; UART: AUTO-DETECT 4UART UART
SIOENABLE .SET FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
;
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)

View File

@@ -28,5 +28,5 @@
;
CRTACT .SET TRUE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
TMSMODE .SET TMSMODE_NABU80 ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO|DUO|NABU40|NABU80]
TMS80COLS .SET TRUE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO|DUO|NABU40|NABU80]

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