Compare commits

...

200 Commits

Author SHA1 Message Date
Wayne Warthen
1505c995e3 Bump Version 2024-10-18 10:02:50 -07:00
Wayne Warthen
9ba6627da8 Merge pull request #443 from dinoboards/dean/fixes-for-int-handling-of-msx-keyboard
msx-keyboard: corrected implementation of msx-keyboard's tick hook
2024-10-18 09:47:27 -07:00
Wayne Warthen
0558e84e09 Merge pull request #442 from kiwisincebirth/map/publish-cpm22
Publish the CPM2.2 CPM.SYS Binary Files in a new Binary/CPM22 folder
2024-10-18 09:44:21 -07:00
Dean Netherton
fa45185945 msx-keyboard: corrected implementation of msx-keyboard's integration to the timer tick handler 2024-10-18 18:04:54 +11:00
Mark Pruden
99265f03d1 QPM Copy SYS Files to the Binary Distribution Folder 2024-10-18 11:45:39 +11:00
Mark Pruden
a2fcab4045 Minor Documentation fix in Readme File 2024-10-18 10:49:37 +11:00
Mark Pruden
b3b4426a46 Publish the ZSDOS .SYS Binary Files in a new Binary/ZSDOS folder 2024-10-18 10:42:38 +11:00
Wayne Warthen
4ff6961539 Merge pull request #441 from kiwisincebirth/map/diskio-hbios-slice
CPM3 DiskIO routines now use HBIOS EXT_SLICE function during Drive SEL
2024-10-17 11:10:38 -07:00
Mark Pruden
72fcee24f3 Publish the CPM2.2 CPM.SYS Binary Files in a new Binary/CPM22 folder 2024-10-17 15:42:41 +11:00
Mark Pruden
8e56b270c4 CPM3 DiskIO routines now use HBIOS EXT_SLICE function during Drive Select 2024-10-17 13:39:31 +11:00
Wayne Warthen
42e50889be Refactor ROM Loader Baud Rate Change
- The baud rate change functionality in ROM Loader was refactored to reduce it's size and be consistent with the approach used in the MODE command.
2024-10-16 12:59:13 -07:00
Wayne Warthen
b3a250b63f Merge pull request #439 from kiwisincebirth/map/cpm-loader
CPM3 Loader Using New HBIOS SLICE Function
2024-10-15 10:32:12 -07:00
Wayne Warthen
30d79fe7f7 Merge pull request #438 from kiwisincebirth/map/hbios-slice0
Fix: If the Slice=0 and No CPM partition
2024-10-15 10:28:29 -07:00
Mark Pruden
221b1b408c CPM3 Loader Using New HBIOS SLICE Function 2024-10-15 15:40:56 +11:00
Mark Pruden
1f383a3639 Fix: If the Slice=0 and No CPM partition, boot the disk, ignore all Calculations and checks. 2024-10-15 11:09:49 +11:00
Wayne Warthen
f3e0de4a97 Fix Fuzix Boot
- Minor issue in recent updates to Boot Loader broke Fuzix loading.  This is corrected.
2024-10-14 13:18:14 -07:00
Wayne Warthen
48689b8191 Merge pull request #437 from wdl1908/master
Disable LCD as this board does not support it.
2024-10-14 13:04:43 -07:00
Willy De la Court
9b99a400f9 Disable LCD as this board does not support it. 2024-10-14 15:53:10 +02:00
Wayne Warthen
524b631a22 Add REBOOT App by MartinR 2024-10-13 14:10:21 -07:00
Wayne Warthen
0f63bb0838 Merge pull request #436 from kiwisincebirth/map/move-hbios-diomed
move hbios function diomed
2024-10-12 13:14:25 -07:00
Mark Pruden
acce0ec15c Merge remote-tracking branch 'origin/master' into map/move-hbios-diomed
# Conflicts:
#	Source/HBIOS/hbios.asm
2024-10-12 15:09:25 +11:00
Mark Pruden
00b6121391 Move HBIOS SYSGET_DIOMED Function to new high level function 2024-10-12 15:02:23 +11:00
Wayne Warthen
ea6e31c58b Add MBASIC Sample App ASCIIART 2024-10-11 15:36:14 -07:00
Wayne Warthen
75e10b64e3 Missing Comment Markers, Issue #435 2024-10-11 15:17:31 -07:00
Wayne Warthen
6005472fa7 Merge pull request #434 from kiwisincebirth/map/hbios-tweak
Minor tweekas after last commit
2024-10-10 11:39:00 -07:00
Mark Pruden
d7b7b8096e Minor tweekas after last commit
* Moved DIOMED_MID variable - so it would be overwritten at start of main Calculation
* Removed code in SYS_GETDIOMED1A - since SYS_GETDIOMED6A did exactly this anyway
* Removed code that set MID_HD - since it would now already be set.
2024-10-10 16:38:23 +11:00
Wayne Warthen
3c1f1ac70a SYSGET_DIOMED Early Return Fix
- Updated SYSGET_DIOMED  to return Media ID when function returns early (non-HD).
2024-10-09 13:54:42 -07:00
Wayne Warthen
ee60c11dec Merge pull request #433 from kiwisincebirth/map/cbios-drive-select
cbios changes to use HBIOS for Drive Slice Selection
2024-10-09 13:51:43 -07:00
Mark Pruden
65ca9af785 cbios changes to use HBIOS for Drive Slice Selection 2024-10-09 18:57:07 +11:00
Wayne Warthen
76a5f210a0 Merge pull request #432 from kiwisincebirth/map/hbios-diomed
Improvements to HBIOS
2024-10-08 10:30:12 -07:00
Mark Pruden
06d9561f37 Improvements to HBIOS (a) SYSGET DIOMED : If Slice > 0 for NON High Capacilty drives now returns an error (b) SYSGET DIOMED now returns device attributes in Reg B (c) Documentation improvements 2024-10-08 19:00:27 +11:00
Wayne Warthen
ecc7a15a7e Merge pull request #431 from kiwisincebirth/map/romldr-sysget-diomed
RomLdr.asm now uses HBIOS SYSGET DIOMED to discover Slice Sector offset
2024-10-07 10:00:36 -07:00
Mark Pruden
2ca487b936 Doc and bump version numbers 2024-10-07 12:33:45 +11:00
Mark Pruden
af0848f138 Rom Loader now uses new HBIOS SYS_GET DIO_MED function to retrieve Slice Sector and media ID, during disk boot 2024-10-07 12:30:09 +11:00
Wayne Warthen
a5c68c6248 Merge pull request #430 from kiwisincebirth/map/hbios-function
Added new HBIOS Function SYSGET_DIOMED
2024-10-06 14:50:45 -07:00
Wayne Warthen
6500d243eb Update ide.asm 2024-10-06 14:31:00 -07:00
Mark Pruden
497e5333c4 Added new HBIOS Function SYSGET_DIOMED 2024-10-06 12:33:29 +11:00
Wayne Warthen
9ad58ac59c Front Panel Switch Support for eZ80 2024-10-04 17:47:08 -07:00
Wayne Warthen
fb9f9774d7 eZ80 Compatibility Enhancements
See Issue #400
2024-10-03 17:36:17 -07:00
Wayne Warthen
5239eed0e8 DSKY Tweaks 2024-09-27 10:19:26 -07:00
Wayne Warthen
70a961ad55 Update COPYSL to v0.2 from Mark Pruden
Co-Authored-By: Mark Pruden <github@mp.tidykiwi.com>
2024-09-27 09:00:28 -07:00
Wayne Warthen
49f4e3f292 Fix .gitignore
Co-Authored-By: Mark Pruden <github@mp.tidykiwi.com>
2024-09-26 19:32:40 -07:00
Wayne Warthen
3ca283d08f COPYSL Utility from Mark Pruden
Co-Authored-By: Mark Pruden <github@mp.tidykiwi.com>
2024-09-26 19:24:47 -07:00
Wayne Warthen
08a53f54d0 Refactor DSKY 2024-09-26 16:18:51 -07:00
Wayne Warthen
11459f989e Doc Fix Issue #427 2024-09-23 11:51:13 -07:00
Wayne Warthen
b07055a73b Merge pull request #429 from dinoboards/dean-ez80-6
ez80: updated reference to renamed firmware repo
2024-09-22 18:05:42 -07:00
Dean Netherton
4618de6621 ez80: updated reference to renamed firmware repo 2024-09-22 10:34:52 +10:00
Wayne Warthen
207fe5f927 Minor
- Cosmetic
- Add eZ80 to LCD driver
- Minor fix in uz80as
2024-09-20 13:38:40 -07:00
Wayne Warthen
fe6cba2b1b Merge pull request #428 from dinoboards/dean-ez80-5
Dean ez80 5
2024-09-20 13:30:16 -07:00
Dean Netherton
a69797d0cf ez80: adjusted I/O bus timings 2024-09-20 16:43:41 +10:00
Dean Netherton
d3019dbb88 ez80: port sn76489 driver to support 16 bit i/o 2024-09-20 16:39:23 +10:00
Dean Netherton
7cda84b4ce ez80: change default cpu freq to 20Mhz 2024-09-20 14:48:54 +10:00
Dean Netherton
a24960a7d2 ez80: specific implementation of DELAY and VDELAY function (using firmware helper)
The delay function is delegated to the on-chip ROM.

The on-chip ROM uses a programmable reload timer that is calibrated for a range of
CPU frequencies and wait states.
2024-09-20 12:26:20 +10:00
Wayne Warthen
028a153568 Clean Up
- Minor cleanup related to latest GM7303 work.
2024-09-19 10:30:07 -07:00
Wayne Warthen
05960f8b22 Merge pull request #426 from drj113/master
gm7303 changes to support DSKY operations
2024-09-19 10:25:27 -07:00
drj113
610a2746f5 gm7303 changes to support DSKY operations
Changes to support GM7303 as a DSKY device
2024-09-19 13:46:55 +10:00
Wayne Warthen
ab9f0be267 Relocate Z280 IVT
The Z280 Interrupt Vector Table must be gin on a 4K boundary.  Recent HBIOS changes caused it's location to result in a very large slack space.  This update moves the Z280 IVT to a more memory efficient location.
2024-09-18 12:50:24 -07:00
Wayne Warthen
d3489b642a Bump Version 2024-09-18 12:00:12 -07:00
Wayne Warthen
8edefc1d8f HEATH Updates
- Support HEATH MSX Graphics card in HBIOS
- Support HEATH MSX Graphics card in TUNE app
- Startup HEATH at 8MHz to ensure hardware compatibility/detection
2024-09-18 11:39:07 -07:00
Dean Netherton
63eebc8534 ez80: fix issue with incorrect application of EZ80WSMD_CYCLES values 2024-09-18 20:27:32 +10:00
Wayne Warthen
6beeef9b1e Minor Doc Updates
- Update User Guide w/ eZ80 Platform information.
- Regen documentation
2024-09-16 11:50:45 -07:00
Wayne Warthen
ab043e5cab Bump Version
- Bump dev version build number to post eZ80 changes.
2024-09-16 09:51:42 -07:00
Wayne Warthen
bba9c5e26b Merge pull request #425 from dinoboards/dean-ez80-4
ez80: fix for FPLEDS to ensure 16 bit I/O
2024-09-16 09:45:21 -07:00
Dean Netherton
a6a32bbd70 ez80: fix issue with uart baud rate translation for numbers requiring more than 16 bits (windows build issue) 2024-09-16 18:34:43 +10:00
Dean Netherton
9aa0fbd2dc ez80: fixes within ez80 drivers to fix overflow issue with PRTS macro 2024-09-16 18:23:13 +10:00
Dean Netherton
9dd54cb781 ez80: fix for FPLEDS to ensure 16 bit I/O 2024-09-16 17:45:00 +10:00
Wayne Warthen
1d8c0c9c46 eZ80 Follow-up
- Added RCEZ80 platform option to Build.ps1
- Added EZ80 config settings to MASTER config (required to get build to work for some situations)
- Modified a .EQU in cfg_RCEZ80.asm to a .SET.  After adding config setting to MASTER config, the .EQU was causing a redefinition error.
- I have temporarily removed some "TRANSLATE" lines in ez80uart.asm.  They were attempting to place a value greater that 0xFFFF in a register and generated an assembly error.
- Modified a few JR instructions in hbios.asm to JP due to out-of-range errors.
- Modified std.asm to "nest" a conditional.  The Windows assembler does not ignore the remainder of a complex conditional when it should.
- Modified tms.asm to replace the PRTS macro with alternative lines.  The Windows assembler cannot handle a string longer than about 8 characters in a macro argument.
- Added the TIMER utility to the ROM disk.  Not sure what happened there.  It was included in the Windows build, but not the Linux build.  There is room for it, so I added it to the Linux build to get a binary exact build compare.
2024-09-15 13:54:31 -07:00
Wayne Warthen
be225c6fb9 Merge pull request #424 from dinoboards/dean-ez80-3
eZ80 Support
2024-09-15 13:42:31 -07:00
Dean Netherton
3121e3ee9d ez80: renamed cfg_rcez80 to uppercase cfg_RCEZ80.asm 2024-09-15 19:13:05 +10:00
Dean Netherton
0982b5d462 ez80: align cfg/std configuration files as per recent changes 2024-09-15 19:11:14 +10:00
Dean Netherton
c31f9de905 ez80: some additional comments for the ez80 cpu driver 2024-09-15 18:44:15 +10:00
Dean Netherton
7157d7f11d ez80: delete bin (WDATE.COM and timer.com) within Source directroy incorrectly introduced in recent merge commit 2024-09-15 15:30:05 +10:00
Dean Netherton
e7937d47e3 ez80: revert whitespace introduced in recent large merge commit 2024-09-15 15:26:37 +10:00
Dean Netherton
32301ba6a9 ez80: fix auto mergine fault DIAG_DISP .EQU DIAG_PROG 2024-09-15 15:24:04 +10:00
Dean Netherton
12df99084e ez80: removing additional comments on #ENDIF - to reduce number of 'diff' in large merge commit 2024-09-15 15:21:49 +10:00
Dean Netherton
324c0bf0fb ez80: fix due to auto merging fault - #IF ((PLATFORM == PLT_S100) & TRUE) 2024-09-15 15:19:05 +10:00
Dean Netherton
38c25e50c2 Merge branch 'master' into dean-ez80-3 2024-09-15 14:40:23 +10:00
Dean Netherton
2176c9d1af ez80: new firmware feature to configure on-chip flash w/s 2024-09-15 10:17:10 +10:00
Dean Netherton
af030bf76d ez80: use new firmware interface for w/s config settings 2024-09-15 09:07:27 +10:00
Wayne Warthen
e376e5577c Heath H8 Panel Tweaks
- Notify HBIOS of speed changes (keeps HBIOS in sync with panel)
- Correct display for HL, SP, and PC registers.
2024-09-14 15:59:41 -07:00
Dean Netherton
b5d4e7ddf9 ez80: added new EZ80TIMER type - EZ80TMR_NONE 2024-09-14 15:56:10 +10:00
Dean Netherton
3880d8fca0 tsm: for v9958 - configure interrupt rate (HSYNC) as per TICKFREQ config setting 2024-09-14 15:54:11 +10:00
Wayne Warthen
df28567506 Additional Config File Cleanup
- Issue #423 should now be resolved.
2024-09-13 10:35:50 -07:00
Wayne Warthen
f16a9415f7 Add CPU Speed Control for HEATH Platform 2024-09-11 13:06:19 -07:00
Wayne Warthen
561a7f7231 Support S100 Z80 FPGA Printer Port 2024-09-09 11:41:28 -07:00
Wayne Warthen
d416a986bb Miscellaneous
- Fix SN76489 variable names referring to different driver
- Make SIMH config filenames consistent with others
2024-09-09 09:04:12 -07:00
Wayne Warthen
162348ea66 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-09-09 17:19:51 +10:00
Wayne Warthen
7e4c4d35e4 Merge pull request #422 from wwarthen/work
Config File Cleanup
2024-09-08 14:19:21 -07:00
Wayne Warthen
78917e78be Cleanup
- Update include file nesting comments
- Bump version number
2024-09-08 13:59:56 -07:00
Wayne Warthen
69e152c4fb Config Files Cleanup 2024-09-08 13:30:32 -07:00
Wayne Warthen
a14e64fced Update and rename cfg_SBC.asm to cfg_sbc.asm 2024-09-08 12:35:07 -07:00
Wayne Warthen
e3195669fc Update and rename cfg_sbc.asm to cfg_SBC.asm 2024-09-08 12:33:02 -07:00
Dean Netherton
64d60f744b ez80: updated to report firmware version, build date, and if operating under the alt image 2024-09-08 13:53:57 +10:00
Wayne Warthen
85834559d1 Cleanup (Cosmetic) 2024-09-07 19:47:46 -07:00
Wayne Warthen
1c66ec3ba4 Configuration File Improvements
- Modified configuration files so that all configurations now inherit from the Master Config file.
2024-09-07 18:02:45 -07:00
Wayne Warthen
99f8d0b3a6 Minor Cosmetic Improvements 2024-09-07 14:26:40 -07:00
Wayne Warthen
23160e3961 Merge pull request #421 from kiwisincebirth/map/userguide-fat
User Guide FAT
2024-09-07 11:20:26 -07:00
Mark Pruden
2c985070e8 Merge commit 'e1beb01a5181939abb0da8253b095e24f596c214' into map/userguide-fat 2024-09-07 16:44:27 +10:00
Mark Pruden
a14a2e6128 Binary Changes 2024-09-07 16:42:12 +10:00
Mark Pruden
c093cd2322 Merged FAT section into Transferring Files 2024-09-07 16:41:56 +10:00
Mark Pruden
a93bfb1e77 Misc Improvements to User Guide 2024-09-07 16:41:31 +10:00
Wayne Warthen
e1beb01a51 Update Configs to Handle GM3707 Enable
- The non-Genesis config files needed to be updated to disable the GM3707.
2024-09-06 18:12:46 -07:00
Wayne Warthen
d20c72fe21 Bump Version Number 2024-09-06 17:55:31 -07:00
Wayne Warthen
8d91176230 Cosmetic Updates 2024-09-06 17:54:02 -07:00
Wayne Warthen
1945826414 Merge pull request #420 from drj113/master
GM7303 LCD Keypad support
2024-09-06 17:43:34 -07:00
drj113
61d08e9f71 GM7303 LCD Keypad support
Changes to support a modified Prolog Keypad and LCD driver card - Heavily inspired by the lcd.asm module, but separated out to allow for future keyboard support.
2024-09-07 10:18:07 +10:00
Wayne Warthen
e212054774 Fix Missing Video Device String 2024-09-06 17:00:21 -07:00
Dean Netherton
479c50f052 ez80: updated to deprecate use of RST.L %18 for bank switching and direct access using 16bit i/o 2024-09-06 18:28:02 +10:00
Wayne Warthen
90a4d090f9 Minor Doc Updates 2024-09-05 14:14:33 -07:00
Wayne Warthen
d78127ca0f Merge pull request #418 from kiwisincebirth/map/doc-user-diskmanage
Doc Improvement - User Guide - Disk Management
2024-09-05 13:12:58 -07:00
Dean Netherton
5c10f1881d ez80: deprecated EZ80_UTIL_HL_TO_EHL - now using local implementation EZ80_CPY_UHL_TO_EHL 2024-09-05 21:16:00 +10:00
Dean Netherton
fa6b0f1d82 ez80: deprecated EZ80_UTIL_EHL_TO_HL - now using local implementation EZ80_CPY_EHL_TO_UHL 2024-09-05 21:00:51 +10:00
Mark Pruden
fccd37f8dd Merge commit '6e8bdb141de0b906ce20cb00821db6cbbdfe0bf9' into map/doc-user-diskmanage
# Conflicts:
#	Doc/ChangeLog.txt
#	Doc/RomWBW Applications.pdf
#	Doc/RomWBW Disk Catalog.pdf
#	Doc/RomWBW Errata.pdf
#	Doc/RomWBW System Guide.pdf
#	Doc/RomWBW User Guide.pdf
2024-09-05 18:41:32 +10:00
Mark Pruden
08d88a98da Fix for LCD Display of CPU Type 2024-09-05 18:32:36 +10:00
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
Dean Netherton
141c79ef90 ez80: ported msx keyboard driver (mky.asm) 2024-08-10 16:03:40 +10: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
Dean Netherton
7d5dc565f3 ez80: tms driver - minor update/refactor 2024-08-04 15:09:21 +10:00
Dean Netherton
b3bab80342 ez80: supply the required min value for BUS CYCLES when using frequency calculation 2024-08-04 15:08:51 +10:00
Dean Netherton
9898309f29 ez80: ported fd.asm driver 2024-08-03 13:36:37 +10:00
Dean Netherton
55d8c6ce7d ez80: ported ppide.asm driver 2024-08-02 16:52:26 +10: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
Dean Netherton
0eb0855948 ez80: ported ay38910 driver 2024-07-25 13:01:07 +10:00
Dean Netherton
37e682adc7 ez80: some general improvements to ez80 HBIOS drivers and implemented a true interrupt driver timer tick driver 2024-07-25 11:34:12 +10: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
Dean Netherton
39232f00f1 sn76489: added configuration entry SN76489CHNOUT to direct to only to one channel or both 2024-07-24 16:23:18 +10:00
Dean Netherton
890dd1cd5e eZ80: added support for sn76489 driver 2024-07-24 14:33:14 +10:00
Dean Netherton
209f457120 ez80: updated to use new functions EZ80_UTIL_VER_EXCH, EZ80_UTIL_GET_CPU_FQ and EZ80_UTIL_BNK_HLP 2024-07-22 16:18:09 +10:00
Dean Netherton
945d5fc2d2 ez80: set timer tick rate as per platform config TICKFREQ 2024-07-22 13:23:03 +10:00
Dean Netherton
22b10c8ac8 ez80: updated IDE driver for eZ80 platform. 2024-07-20 22:09:13 +10:00
Dean Netherton
4b80f36fd0 ez80: configure and display memory and i/o timings 2024-07-20 16:59:25 +10:00
Dean Netherton
026fa3d0d7 ez80: request CPU speed from ez80 firmware 2024-07-20 12:59:30 +10:00
Dean Netherton
53198e066c ez80: added macros for accessing all firmware functions 2024-07-19 21:18:28 +10:00
Dean Netherton
3318b12667 ez80: fixed issue with CH37x-USB driver not working at frequency > 7Mhz 2024-07-19 19:19:05 +10:00
Dean Netherton
20aa3a7d65 makefile: turn off forced tracing - use option (--trace and or --debug) to trace makefile execution 2024-07-16 08:45:10 +00:00
Dean Netherton
e757591fb3 ez80: added missing #ENDIF in ez80uart.asm 2024-07-16 08:34:46 +00:00
Dean Netherton
44ceaa3e71 ez80: update to new version of 60hz get sec firmware interface 2024-07-16 18:22:28 +10:00
Dean Netherton
37a7574f1f ez80: report if RTC is not powered 2024-07-16 17:02:53 +10:00
Dean Netherton
ba8cd05cb7 ez80: 60hz timer updated to support native 24 bit tick counters implemented in firmware 2024-07-16 16:52:45 +10:00
Dean Netherton
bc68674ce2 ez80: updated ch.asm driver to support ez80
SD Card not supported yet
2024-07-14 15:21:21 +10:00
Dean Netherton
37b3b96e49 ez80: rtc fix missing space in boot report 2024-07-14 15:18:58 +10:00
Dean Netherton
aeb579d6ad ez80: uart init implemented 2024-07-13 12:29:45 +10:00
Dean Netherton
229bf119d4 ez80: uart query implemented 2024-07-12 14:42:25 +10:00
Dean Netherton
cb7ba38f76 ez80uart: defer basic i/o operations to ez80 firmware 2024-07-12 10:08:11 +10:00
Dean Netherton
9bc4f26f6e timer.com: added new switch (/R) to reset current timer ticks 2024-07-08 16:36:06 +10:00
Dean Netherton
ce9778e189 ez80: implemented timer get/set function - delegates to firmware 2024-07-08 16:35:38 +10:00
Dean Netherton
44d890be59 ez80: Added new driver ez80rtc 2024-07-07 10:10:04 +10:00
Dean Netherton
a31119bd5d ez80: updated notes for the docker build script 2024-07-04 12:19:09 +10:00
Dean Netherton
6b00f5c992 eZ80: tms.asm increased speed of interrupt handler's IO process 2024-07-04 12:19:08 +10:00
Dean Netherton
20bdb78084 eZ80: tms.asm interrupt handling activated - with appropriate delegation from the eZ80 firmware 2024-07-04 12:19:08 +10:00
Dean Netherton
4ac7c1213a eZ80: updated tms.asm to support eZ80 16 bit i/o operations 2024-07-04 12:19:07 +10:00
Dean Netherton
d834742337 eZ80: updated rp5rtc.asm to support eZ80 16 bit i/o operations 2024-07-04 12:19:07 +10:00
Dean Netherton
baf0cd7788 eZ80: updated ide.asm to suppport eZ80 16 bit i/o operations 2024-07-04 12:19:06 +10:00
Dean Netherton
572309d03c eZ80: reverted MDTRACE back to 1 2024-07-04 12:19:05 +10:00
Dean Netherton
d9e009864b eZ80: hbios HBX_BNKSEL_INT is fully implemented in eZ80 firmware to optimal performance 2024-07-04 12:19:05 +10:00
Dean Netherton
46cc57e5fc eZ80: hbios io out operations now managed through a expected feature in the eZ80 on-chip rom 2024-07-04 12:19:04 +10:00
Dean Netherton
7e2b054fc1 eZ80: added platform config PLT_RCEZ80 2024-07-04 12:19:03 +10:00
Dean Netherton
d358c8bc1c eZ80: uart and hbios banking code updated to support the eZ80 for RC2014 configuration 2024-07-04 12:19:03 +10:00
Dean Netherton
2bc807edc8 eZ80: uart driver init and pre-init functions defer to routines within the eZ80 Flash rom 2024-07-04 12:19:02 +10:00
Dean Netherton
57364bb581 EZ80: initial skeleton of driver for EZ80 UART 2024-07-04 12:19:00 +10:00
Dean Netherton
a92aebddd7 eZ80: hbios i/o operations updated for FPLED_IO and ram bank initialisation 2024-07-04 12:18:59 +10:00
Dean Netherton
8b63b32580 gitignored some more untracked generated files 2024-07-04 12:18:57 +10:00
Dean Netherton
76cb52eb14 Adding new target/config for eZ80 RC2014 builds 2024-07-04 12:18:26 +10:00
852 changed files with 25779 additions and 12443 deletions

141
.gitignore vendored
View File

@@ -77,6 +77,7 @@ Tools/unix/zx/zx
!Source/ver.lib
!Source/Apps/FAT/FAT.COM
!Source/Apps/copysl/copysl.com
!Source/Apps/ZMP/zmpx.com
!Source/Apps/ZMD/zmdsubs.rel
!Source/Apps/Test/vdctest/font.asm
@@ -110,4 +111,142 @@ Source/ZPM3/zccp.com
Source/ZPM3/zpmldr.com
Source/ZPM3/genbnk.dat
Source/ZSDOS/zsdos.err
Source/ZSDOS/zsdos.err
# Lets explicit list all generate untracked binary files
Binary/Apps/Tunes/bgm.vgm
Binary/Apps/Tunes/ending.vgm
Binary/Apps/Tunes/inchina.vgm
Binary/Apps/Tunes/shirakaw.vgm
Binary/Apps/Tunes/startdem.vgm
Binary/Apps/Tunes/wonder01.vgm
Binary/Apps/fdu.doc
Binary/Apps/zmconfig.ovr
Binary/Apps/zminit.ovr
Binary/Apps/zmp.doc
Binary/Apps/zmp.hlp
Binary/Apps/zmterm.ovr
Binary/Apps/zmxfer.ovr
Binary/CPM3/bdos3.spr
Binary/CPM3/bios3.spr
Binary/CPM3/bnkbdos3.spr
Binary/CPM3/bnkbios3.spr
Binary/CPM3/cpm3fix.pat
Binary/CPM3/genbnk.dat
Binary/CPM3/gencpm.dat
Binary/CPM3/genres.dat
Binary/CPM3/readme.1st
Binary/CPM3/resbdos3.spr
Binary/CPNET/cpn12duo.lbr
Binary/CPNET/cpn12mt.lbr
Binary/CPNET/cpn12ser.lbr
Binary/CPNET/cpn3duo.lbr
Binary/CPNET/cpn3mt.lbr
Binary/CPNET/cpn3ser.lbr
Binary/RCEZ80_std.upd
Binary/RCZ80_std.upd
Binary/ZPM3/bnkbdos3.spr
Binary/ZPM3/bnkbios3.spr
Binary/ZPM3/gencpm.dat
Binary/ZPM3/resbdos3.spr
Binary/ZPM3/zinstal.zpm
Binary/hd1k_prefix.dat
Source/BPBIOS/def-ww.lib
Source/CPNET/cpn12duo.lbr
Source/CPNET/cpn12mt.lbr
Source/CPNET/cpn12ser.lbr
Source/CPNET/cpn3duo.lbr
Source/CPNET/cpn3mt.lbr
Source/CPNET/cpn3ser.lbr
Source/Fonts/font8x11c.asm
Source/Fonts/font8x11c.bin
Source/Fonts/font8x11u.asm
Source/Fonts/font8x16c.asm
Source/Fonts/font8x16c.bin
Source/Fonts/font8x16u.asm
Source/Fonts/font8x8c.asm
Source/Fonts/font8x8c.bin
Source/Fonts/font8x8u.asm
Source/Fonts/fontcgac.asm
Source/Fonts/fontcgac.bin
Source/Fonts/fontcgau.asm
Source/Fonts/fontvgarcc.asm
Source/Fonts/fontvgarcc.bin
Source/Fonts/fontvgarcu.asm
Source/HBIOS/RCEZ80_std.upd
Source/HBIOS/RCZ80_std.upd
Source/HBIOS/build_env.cmd
Source/HBIOS/hbios_env.sh
Source/Images/blank144
Source/Images/blankhd1k
Source/Images/blankhd512
Source/Images/fd144_aztecc.img
Source/Images/fd144_bascomp.img
Source/Images/fd144_cowgol.img
Source/Images/fd144_cpm22.img
Source/Images/fd144_cpm3.img
Source/Images/fd144_fortran.img
Source/Images/fd144_games.img
Source/Images/fd144_hitechc.img
Source/Images/fd144_nzcom.img
Source/Images/fd144_qpm.img
Source/Images/fd144_tpascal.img
Source/Images/fd144_ws4.img
Source/Images/fd144_z80asm.img
Source/Images/fd144_zpm3.img
Source/Images/fd144_zsdos.img
Source/Images/hd1k_aztecc.img
Source/Images/hd1k_bascomp.img
Source/Images/hd1k_blank.img
Source/Images/hd1k_bp.img
Source/Images/hd1k_combo.img
Source/Images/hd1k_cowgol.img
Source/Images/hd1k_cpm22.img
Source/Images/hd1k_cpm3.img
Source/Images/hd1k_fortran.img
Source/Images/hd1k_games.img
Source/Images/hd1k_hitechc.img
Source/Images/hd1k_nzcom.img
Source/Images/hd1k_qpm.img
Source/Images/hd1k_tpascal.img
Source/Images/hd1k_ws4.img
Source/Images/hd1k_z80asm.img
Source/Images/hd1k_zpm3.img
Source/Images/hd1k_zsdos.img
Source/Images/hd512_aztecc.img
Source/Images/hd512_bascomp.img
Source/Images/hd512_blank.img
Source/Images/hd512_combo.img
Source/Images/hd512_cowgol.img
Source/Images/hd512_cpm22.img
Source/Images/hd512_cpm3.img
Source/Images/hd512_dos65.img
Source/Images/hd512_fortran.img
Source/Images/hd512_games.img
Source/Images/hd512_hitechc.img
Source/Images/hd512_nzcom.img
Source/Images/hd512_qpm.img
Source/Images/hd512_tpascal.img
Source/Images/hd512_ws4.img
Source/Images/hd512_z80asm.img
Source/Images/hd512_zpm3.img
Source/Images/hd512_zsdos.img
Source/RomDsk/rom0_una.dat
Source/RomDsk/rom0_wbw.dat
Source/RomDsk/rom128_una.dat
Source/RomDsk/rom128_wbw.dat
Source/RomDsk/rom256_una.dat
Source/RomDsk/rom256_wbw.dat
Source/RomDsk/rom384_una.dat
Source/RomDsk/rom384_wbw.dat
Source/RomDsk/rom896_una.dat
Source/RomDsk/rom896_wbw.dat
Source/ZCPR-DJ/zcprdemo.com
Source/ZPM3/autotog.com
Source/ZPM3/clrhist.com
Source/ZPM3/cpmldr.com
Source/ZPM3/setz3.com
Tools/unix/OpenSpin/build/
Tools/unix/zxcc/config.h
Tools/unix/zxcc/zxcc
Binary/Apps/bbcbasic.txt

4
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,4 @@
{
"files.trimTrailingWhitespace": false,
"files.eol": "\r\n"
}

4
Binary/CPM22/Clean.cmd Normal file
View File

@@ -0,0 +1,4 @@
@echo off
setlocal
if exist *.sys del *.sys

7
Binary/CPM22/Makefile Normal file
View File

@@ -0,0 +1,7 @@
TOOLS = ../../Tools
MOREDIFF := $(shell $(TOOLS)/unix/casefn.sh *.spr)
include $(TOOLS)/Makefile.inc
clean::
@rm -f *.sys

23
Binary/CPM22/ReadMe.txt Normal file
View File

@@ -0,0 +1,23 @@
***********************************************************************
*** ***
*** R o m W B W ***
*** ***
*** Z80/Z180 System Software ***
*** ***
***********************************************************************
This directory contains the CP/M 2.2 system files for the RomWBW CP/M 2.2
adaptation. All of these files are already included on the CP/M
boot disk images. However if you are creating a CP/M boot disk
manually, you should copy all of these files to the boot disk.
Note: Two file have been provided one for RomWBW HBIOS, and one for UNA
BIOS. One of these files must be installed on the system boot track.
This is usually achieved by the SYSCOPY utility e.g.
SYSCOPY a:=cpm_wbw.sys
These files should also be copied to any CP/M 2.2 boot disks on your
system when you upgrade your ROM firmware. Some of these files
*must* match the version of the RomWBW firmware you are using for
proper operation of your system.

View File

@@ -12,6 +12,9 @@ if exist *.pdf del *.pdf
if exist *.eeprom del *.eeprom
pushd Apps && call Clean || exit /b 1 & popd
pushd CPM22 && call Clean || exit /b 1 & popd
pushd CPM3 && call Clean || exit /b 1 & popd
pushd QPM && call Clean || exit /b 1 & popd
pushd ZSDOS && call Clean || exit /b 1 & popd
pushd ZPM3 && call Clean || exit /b 1 & popd
pushd CPNET && call Clean || exit /b 1 & popd

View File

@@ -1,6 +1,6 @@
TOOLS = ../Tools
MOREDIFF := $(shell $(TOOLS)/unix/casefn.sh *.img *.rom *.com *.eeprom)
SUBDIRS = Apps CPM3 ZPM3 CPNET
SUBDIRS = Apps CPM22 CPM3 QPM ZSDOS ZPM3 CPNET
include $(TOOLS)/Makefile.inc

4
Binary/QPM/Clean.cmd Normal file
View File

@@ -0,0 +1,4 @@
@echo off
setlocal
if exist *.sys del *.sys

7
Binary/QPM/Makefile Normal file
View File

@@ -0,0 +1,7 @@
TOOLS = ../../Tools
MOREDIFF := $(shell $(TOOLS)/unix/casefn.sh *.spr)
include $(TOOLS)/Makefile.inc
clean::
@rm -f *.sys *.bin

21
Binary/QPM/ReadMe.txt Normal file
View File

@@ -0,0 +1,21 @@
***********************************************************************
*** ***
*** R o m W B W ***
*** ***
*** Z80/Z180 System Software ***
*** ***
***********************************************************************
This directory contains the QPM 2.7 system files for the RomWBW QPM 2.7
adaptation. All of these files are already included on the QPM
boot disk images. However if you are creating a QPM boot disk
manually, you should copy all of these files to the boot disk.
Note: Two file have been provided one for RomWBW HBIOS, and one for UNA
BIOS. One of these files must be installed on the system boot track.
Refer to the QPM Documentation for installing QPM
These files should also be copied to any QPM boot disks on your
system when you upgrade your ROM firmware. Some of these files
*must* match the version of the RomWBW firmware you are using for
proper operation of your system.

View File

@@ -6,37 +6,37 @@
*** ***
***********************************************************************
This directory ("Binary") is part of the RomWBW System Software
distribution archive. It contains the completed binary outputs of
the build process. As described below, these files are used to
This directory ("Binary") is part of the RomWBW System Software
distribution archive. It contains the completed binary outputs of
the build process. As described below, these files are used to
assemble a working RetroBrew Computers system.
The files in this directory are created by the build process that is
documented in the ReadMe.txt file in the Source directory. When
released the directory is populated with the default output files.
However, the output of custom builds will be placed in this directory
The files in this directory are created by the build process that is
documented in the ReadMe.txt file in the Source directory. When
released the directory is populated with the default output files.
However, the output of custom builds will be placed in this directory
as well.
If you only see a few files in this directory, then you downloaded
just the source from GitHub. To retrieve the full release download
package, go to https://github.com/wwarthen/RomWBW. On this page,
look for the text "XX releases" where XX is a number. Click on this
text to go to the releases page. On this page, you will see the
latest releases listed. For each release, you will see a package
file called something like "RomWBW-2.9.0-Package.zip". Click on the
If you only see a few files in this directory, then you downloaded
just the source from GitHub. To retrieve the full release download
package, go to https://github.com/wwarthen/RomWBW. On this page,
look for the text "XX releases" where XX is a number. Click on this
text to go to the releases page. On this page, you will see the
latest releases listed. For each release, you will see a package
file called something like "RomWBW-2.9.0-Package.zip". Click on the
package file for the release you want to download.
ROM Firmware Images (<plt>_<cfg>.rom)
-------------------------------------
The files with a ".rom" extension are binary images ready to program
into an appropriate PROM. These files are named with the format
<plt>_<cfg>.rom. <plt> refers to the primary platform such as Zeta,
N8, Mark IV, etc. <cfg> refers to the specific configuration. In
general, there will be a standard configuration ("std") for each
platform. So, for example, the file called MK4_std.rom is a ROM
image for the Mark IV with the standard configuration. If a custom
configuration called "custom" is created and built, a new file called
The files with a ".rom" extension are binary images ready to program
into an appropriate PROM. These files are named with the format
<plt>_<cfg>.rom. <plt> refers to the primary platform such as Zeta,
N8, Mark IV, etc. <cfg> refers to the specific configuration. In
general, there will be a standard configuration ("std") for each
platform. So, for example, the file called MK4_std.rom is a ROM
image for the Mark IV with the standard configuration. If a custom
configuration called "custom" is created and built, a new file called
MK4_custom.rom will be added to this directory.
Documentation of the pre-built ROM Images is contained in
@@ -54,52 +54,52 @@ contents. Refer to the RomWBW User Guide for more information.
ROM Executable Images (<plt>_<cfg>.com)
---------------------------------------
When a ROM image (".rom") is created, an executable version of the
ROM is also created. These files have the same naming convention as
the ROM Image files, but have the extension ".com". These files can
When a ROM image (".rom") is created, an executable version of the
ROM is also created. These files have the same naming convention as
the ROM Image files, but have the extension ".com". These files can
be copied to a working system and run like a normal CP/M application.
When run on the target system, they install in RAM just like they had
When run on the target system, they install in RAM just like they had
been loaded from ROM. This allows a new ROM build to be tested
without reprogramming the actual ROM.
WARNING: In a few cases the .com file is too big to load. If you get
a message like "Full" or "BAD LOAD" when trying to load one of the
.com files, it is too big. In these cases, you will not be able to
WARNING: In a few cases the .com file is too big to load. If you get
a message like "Full" or "BAD LOAD" when trying to load one of the
.com files, it is too big. In these cases, you will not be able to
test the ROM prior to programming it.
VDU ROM Image (vdu.rom)
-----------------------
The VDU video board requires a dedicated onboard ROM containing the
font data. The "vdu.rom" file contains the binary data to program
The VDU video board requires a dedicated onboard ROM containing the
font data. The "vdu.rom" file contains the binary data to program
onto that chip.
Disk Images (fd_*.img, hd_*.img, psys.img)
------------------------------------------
Disk Images (fd_*.img, hd_*.img)
--------------------------------
RomWBW includes a mechanism for generating floppy disk and hard disk
binary images that are ready to copy directly to a floppy, hard disk,
CF Card, or SD Card which will then be ready for use in any
RomWBW includes a mechanism for generating floppy disk and hard disk
binary images that are ready to copy directly to a floppy, hard disk,
CF Card, or SD Card which will then be ready for use in any
RomWBW-based system.
Essentially, these files contain prepared floppy and hard disk images
with a large set of programs and related files. By copying the
contents of these files to appropriate media as described below, you
Essentially, these files contain prepared floppy and hard disk images
with a large set of programs and related files. By copying the
contents of these files to appropriate media as described below, you
can quickly create ready-to-use media. Win32DiskImager or
RawWriteWin can be used to copy images directly to media. These
programs are included in the RomWBW Tools directory.
The fd_*.img files are floppy disk images. They are sized for 1.44MB
floppy media and can be copied to actual floppy disks using
RawWriteWin (as long as you have access to a floppy drive on your
Windows computer). The resulting floppy disks will be usable on any
The fd_*.img files are floppy disk images. They are sized for 1.44MB
floppy media and can be copied to actual floppy disks using
RawWriteWin (as long as you have access to a floppy drive on your
Windows computer). The resulting floppy disks will be usable on any
RomWBW-based system with floppy drive(s).
Likewise, the hd512_*.img and hd1k_*.img files are hard disk images.
Each file is intended to be copied to the start of any type of hard
disk media (typically a CF Card or SD Card). The resulting media will
be usable on any RomWBW-based system that accepts the corresponding
Likewise, the hd512_*.img and hd1k_*.img files are hard disk images.
Each file is intended to be copied to the start of any type of hard
disk media (typically a CF Card or SD Card). The resulting media will
be usable on any RomWBW-based system that accepts the corresponding
media type.
NOTE: The hd512_*.img files are equivalent to the hd_*.img
@@ -109,39 +109,86 @@ maximum number of CP/M directory entries from 512 to 1024.
Refer to the ReadMe.txt in the Source/Images directory
for details.
Documentation of the pre-built disk images is contained in the
Documentation of the pre-built disk images is contained in the
"RomWBW User Guide" found in the Doc directory. The contents of
the disk images is contained in the "RomWBW Disk Catalog", but it
is significantly out-of-date.
The contents of the floppy/hard disk images are created by
the BuildImages.cmd script in the Source directory. Additional
information on how to generate custom disk images is found in the
The contents of the floppy/hard disk images are created by
the BuildImages.cmd script in the Source directory. Additional
information on how to generate custom disk images is found in the
Source\Images ReadMe.txt file.
The psys.img file contains a full implementation of the UCSD p-System
for the Z80 running under RomWBW. This image file must be placed on
disk media by itself (not appended or concatenated with hd*.img files.
Refer to the Source/pSys/ReadMe.txt file for more information on the
Disk Images (hd512_combo.img, hd1k_combo.img, *_std_hd1k_combo.img)
-------------------------------------------------------------------
The hd512_combo.img and hd1k_combo.img file are the primary combo
disk image files suitable for most platforms.
The *_std_hd1k_combo.img files are platform specific combo files
typically used in romless platforms, they also contain RomWBW binary code
that is loaded at boot time into RAM
Disk Images (hd1k_prefix.dat, *_std_hd1k_prefix.dat)
----------------------------------------------------
The hd1k_prefix.dat file is part of the combo disk images and is
applied to hd1k image files as a prefix, it contains the standard
partion table.
The *_std_hd1k_prefix.dat files are platform specific prefixes
typically used in romless platforms, they also contain RomWBW binary code
that is loaded at boot time into RAM
Disk Images (psys.img)
----------------------
The psys.img file contains a full implementation of the UCSD p-System
for the Z80 running under RomWBW. This image file must be placed on
disk media by itself (not appended or concatenated with hd*.img files.
Refer to the Source/pSys/ReadMe.txt file for more information on the
p-System implementation.
Propeller ROM Images (*.eeprom)
-------------------------------
The files with and extension of ".eeprom" contain the binary images
to be programmed into the Propeller-based boards. The list below
The files with and extension of ".eeprom" contain the binary images
to be programmed into the Propeller-based boards. The list below
indicates which file targets each of the Propeller board variants:
ParPortProp ParPortProp.eeprom
PropIO V1 PropIO.eeprom
PropIO V2 PropIO2.eeprom
Refer to the board documentation of the boards for more information
Refer to the board documentation of the boards for more information
on how to program the EEPROMs on these boards.
SUB DIRECTORIES
===============
Apps Directory
--------------
The Apps subdirectory contains the executable application files that
are specific to RomWBW. The source for these applications is found
in the Source\Apps directory of the distribution.
in the Source\Apps directory of the distribution.
CPNET Directory
---------------
This directory contains the CP/NET client packages. Please refer to
the RomWBW User Guide for instructions on installing these packages,
or see the Readme.txt file in this sub-directory
CPM22 CPM3 ZSDOS ZPM3 QPM Directories
-------------------------------------
These directories contains the system files for the RomWBW adaptations
for each operating system. All of these files are already included on
the boot disk images. However if you are creating a o/s boot disk
manually, you will need copy all of these files to the boot disk.
These files should also be copied to any boot disks on your
system when you upgrade your ROM firmware. Some of these files
*must* match the version of the RomWBW firmware you are using for
proper operation of your system.

4
Binary/ZSDOS/Clean.cmd Normal file
View File

@@ -0,0 +1,4 @@
@echo off
setlocal
if exist *.sys del *.sys

7
Binary/ZSDOS/Makefile Normal file
View File

@@ -0,0 +1,7 @@
TOOLS = ../../Tools
MOREDIFF := $(shell $(TOOLS)/unix/casefn.sh *.spr)
include $(TOOLS)/Makefile.inc
clean::
@rm -f *.sys

23
Binary/ZSDOS/ReadMe.txt Normal file
View File

@@ -0,0 +1,23 @@
***********************************************************************
*** ***
*** R o m W B W ***
*** ***
*** Z80/Z180 System Software ***
*** ***
***********************************************************************
This directory contains the ZSDOS system files for the RomWBW ZSDOS
adaptation. All of these files are already included on the ZSDOS
boot disk images. However if you are creating a ZSDOS boot disk
manually, you should copy all of these files to the boot disk.
Note: Two file have been provided one for RomWBW HBIOS, and one for UNA
BIOS. One of these files must be installed on the system boot track.
This is usually achieved by the SYSCOPY utility e.g.
SYSCOPY a:=zsys_wbw.sys
These files should also be copied to any ZSDOS boot disks on your
system when you upgrade your ROM firmware. Some of these files
*must* match the version of the RomWBW firmware you are using for
proper operation of your system.

View File

@@ -14,7 +14,7 @@ Version 3.5
- DDW: Added support for Duodyne Media board
- WBW: Auto restore TMS video on user reset (CP/M warm boot)
- L?B: Added support for NABU w/ RomWBW Option Board
- M?P: Reorganization of Doc directory introducing subfolders
- MAP: Reorganization of Doc directory introducing subfolders
- WBW: Upgraded BBCBASIC to v5.00
- W?S: Updated FLASH utility to v1.3.9
- WBW: Support RCBus PS/2 Keyboard (EP/Sally)
@@ -28,6 +28,22 @@ Version 3.5
- 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
- MAP: Improved section Disk Management in User Guide document
- WBW: Add CPU speed selection for HEATH platform to HBIOS
- WBW: Add Warm/Cold reboot options to CPUSPD utility
- D?N: Added support for eZ80 CPU
- MAP: Contributed COPYSL utility
- MAP: Added new HBIOS function EXT_SLICE (orginally SYSGET_DIOMED)
- MAP: ROMLDR now uses EXT_SLICE to get Slice Sector for boot
- MAP: CBIOS now uses EXT_SLICE during drive selection
- MAP: CPM3 Boot Loader, and BIOS (drive select) now use EXT_SLICE
- M?R: Added REBOOT application
Version 3.4
-----------
@@ -696,4 +712,4 @@ interrupts disabled the BIOS will now start OK even if some vagrant
hardware is asserting an interrupt (DISKIO). Seems like this is better
anyway -- general idea is that we only enable interupts precisely
when desired for very specific controled purposes since there is no
concept of interrupt dispatching available.
concept of interrupt dispatching available.

View File

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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

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

48
Dockerfile Normal file
View File

@@ -0,0 +1,48 @@
FROM ubuntu:jammy-20240111 as basebuilder
# This docker file can be used to build a tool chain docker image for building RomWBW images.
# Tested on a ubuntu host and on Windows un WSL (with docker desktop)
# First build the docker image (will b)
# docker build --progress plain -t romwbw-chain .
# After you have built the above image (called romwbw-chain), you can use it to compile and build the RomWBW images
# as per the standard make scripts within RomWBW.
# Start a new terminal, cd to where you have clone RomWBW, and then run this command:
# docker run -v ${PWD}:/src/ --privileged=true -u $(id -u ${USER}):$(id -g ${USER}) -it romwbw-chain:latest
# you can now compile and build the required images:
# cd Tools && make
# cd Source && make # at least once to build many common units
# cd Source && make rom ROM_PLATFORM=RCEZ80 ROM_CONFIG=std
# when finish, type 'exit' to return to back to your standard terminal session
LABEL Maintainer="Dean Netherton" \
Description="spike to use clang for ez80 target"
ENV DEBIAN_FRONTEND=noninteractive
RUN dpkg --add-architecture i386
RUN sed -i 's/http:\/\/archive\.ubuntu\.com\/ubuntu/http:\/\/au.archive.ubuntu.com\/ubuntu/g' /etc/apt/sources.list
RUN apt update -y
RUN apt dist-upgrade -y
RUN apt install -y --no-install-recommends cmake lzip ca-certificates mtools build-essential dos2unix libboost-all-dev texinfo texi2html libxml2-dev subversion bison flex zlib1g-dev m4 git wget dosfstools curl
RUN mkdir work
WORKDIR /work
FROM basebuilder as main
LABEL Maintainer="Dean Netherton" \
Description="spike to build RomWBW"
RUN mkdir /src
WORKDIR /src/
RUN apt install -y --no-install-recommends build-essential libncurses-dev srecord bsdmainutils
RUN adduser --disabled-password --gecos "" builder

View File

@@ -3,7 +3,7 @@
**RomWBW ReadMe** \
Version 3.5 \
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
15 Jul 2024
13 Oct 2024
# Overview
@@ -186,8 +186,8 @@ let me know if I missed you!
- Tasty Basic is a product of Dimitri Theulings.
- Dean Netherton contributed the sound driver interface and the SN76489
sound driver.
- Dean Netherton contributed eZ80 CPU support, the sound driver
interface, and the SN76489 sound driver.
- The RomWBW Disk Catalog document was produced by Mykl Orders.
@@ -196,7 +196,10 @@ let me know if I missed you!
Microsoft Fortran Compiler, and a Games compendium.
- Martin R has provided substantial help reviewing and improving the
User Guide.
User Guide and Applications documents.
- Mark Pruden has also contributed a great deal of content to the User
Guide as well as the COPYSL utility.
- Jacques Pelletier has contributed the DS1501 RTC driver code.

View File

@@ -1,6 +1,6 @@
RomWBW ReadMe
Wayne Warthen (wwarthen@gmail.com)
15 Jul 2024
13 Oct 2024
@@ -187,8 +187,8 @@ let me know if I missed you!
- Tasty Basic is a product of Dimitri Theulings.
- Dean Netherton contributed the sound driver interface and the
SN76489 sound driver.
- Dean Netherton contributed eZ80 CPU support, the sound driver
interface, and the SN76489 sound driver.
- The RomWBW Disk Catalog document was produced by Mykl Orders.
@@ -197,7 +197,10 @@ let me know if I missed you!
BASIC Compiler, Microsoft Fortran Compiler, and a Games compendium.
- Martin R has provided substantial help reviewing and improving the
User Guide.
User Guide and Applications documents.
- Mark Pruden has also contributed a great deal of content to the User
Guide as well as the COPYSL utility.
- Jacques Pelletier has contributed the DS1501 RTC driver code.

View File

@@ -28,9 +28,11 @@ pushd ZMD && call Build || exit /b & popd
pushd Dev && call Build || exit /b & popd
pushd VGM && call Build || exit /b & popd
pushd cpuspd && call Build || exit /b & popd
pushd reboot && 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
pushd copysl && call Build || exit /b & popd
copy *.com %APPBIN%\ || exit /b

View File

@@ -17,6 +17,8 @@ pushd ZMD && call Clean || exit /b 1 & popd
pushd Dev && call Clean || exit /b 1 & popd
pushd VGM && call Clean || exit /b 1 & popd
pushd cpuspd && call Clean || exit /b 1 & popd
pushd reboot && 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
pushd copysl && 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 BBCBASIC
SUBDIRS = HTalk XM FDU FAT Tune Test ZMP ZMD Dev VGM cpuspd reboot Survey BBCBASIC copysl
DEST = ../../Binary/Apps
TOOLS =../../Tools

View File

@@ -25,6 +25,7 @@ pushd piomon && call Build || exit /b & popd
pushd banktest && call Build || exit /b & popd
pushd portscan && call Build || exit /b & popd
pushd sound && call Build || exit /b & popd
pushd testh8p && call Build || exit /b & popd
goto :eof

View File

@@ -22,3 +22,4 @@ pushd piomon && call Clean || exit /b 1 & popd
pushd banktest && call Clean || exit /b 1 & popd
pushd portscan && call Clean || exit /b 1 & popd
pushd sound && call Clean || exit /b 1 & popd
pushd testh8p && call Clean || exit /b 1 & popd

View File

@@ -1,5 +1,5 @@
OBJECTS =
SUBDIRS = DMAmon I2C inttest ppidetst ramtest tstdskng rzsz vdctest kbdtest ps2info 2piotst piomon banktest portscan sound
SUBDIRS = DMAmon I2C inttest ppidetst ramtest tstdskng rzsz vdctest kbdtest ps2info 2piotst piomon banktest portscan sound testh8p
DEST = ../../../Binary/Apps/Test
TOOLS =../../../Tools

View File

@@ -0,0 +1,10 @@
@echo off
setlocal
set TOOLS=../../../../Tools
set PATH=%TOOLS%\tasm32;%PATH%
set TASMTABS=%TOOLS%\tasm32
tasm -t80 -g3 -fFF testh8p.asm testh8p.com testh8p.lst || exit /b
copy /Y testh8p.com ..\..\..\..\Binary\Apps\Test\ || exit /b

View File

@@ -0,0 +1,6 @@
@echo off
setlocal
if exist *.com del *.com
if exist *.lst del *.lst
if exist *.bin del *.bin

View File

@@ -0,0 +1,9 @@
OBJECTS = testh8p.com
# DOCS = testh8p.doc
DEST = ../../../../Binary/Apps/Test
DOCDEST = ../../../../Binary/Apps/Test
TOOLS =../../../../Tools
USETASM=1
include $(TOOLS)/Makefile.inc

View File

@@ -0,0 +1,238 @@
;===============================================================================
; H8 Panel Test
;===============================================================================
;
; AUTHOR: WAYNE WARTHEN (wwarthen@gmail.com)
;_______________________________________________________________________________
;
;
; Trivial utility to test the register pair display functionality of the
; Heath H8 Front Panel.
;
; Program will display a set of known register values on the console,
; then go into an infinite loop. The H8 panel can then be checked to
; see if the correct values are displayed.
;
; There is no way to exit this program. You must reset your system.
;
;===============================================================================
; Definitions
;===============================================================================
;
stksiz .equ $40 ; Working stack size
;
restart .equ $0000 ; CP/M restart vector
bdos .equ $0005 ; BDOS invocation vector
;
regA .equ $11
regBC .equ $2233
regDE .equ $4455
regHL .equ $6677
;
;===============================================================================
; Code Section
;===============================================================================
;
;
.org $100
;
; setup stack (save old value)
ld (stksav),sp ; save stack
ld sp,stack ; set new stack
;
ld de,str_prefix
call prtstr
;
ld de,str_A
ld hl,regA
call prtreg
ld de,str_BC
ld hl,regBC
call prtreg
ld de,str_DE
ld hl,regDE
call prtreg
ld de,str_HL
ld hl,regHL
call prtreg
ld de,str_SP
ld hl,regSP
call prtreg
ld de,str_PC
ld hl,regPC
call prtreg
;
ld a,regA
ld bc,regBC
ld de,regDE
ld hl,regHL
regPC: jr $
;
;
;
prtreg:
call prtstr ; print label
ld a,h ; first byte
call prtoctbyte ; print it
ld a,'.' ; separator
call prtchr ; print it
ld a,l ; second byte
call prtoctbyte ; print it
ret
;
;
;
prtoctbyte:
rlca ; 2 ms bits
rlca
push af
and %00000011 ; isolate
add a,'0' ; make char
call prtchr ; show it
pop af
rlca ; next 3 bits
rlca
rlca
push af
and %00000111 ; isolate
add a,'0' ; make char
call prtchr ; show it
pop af
rlca ; next 3 bits
rlca
rlca
push af
and %00000111 ; isolate
add a,'0' ; make char
call prtchr ; show it
pop af
ret
;
; Print character in A without destroying any registers
;
prtchr:
push bc ; save registers
push de
push hl
ld e,a ; character to print in E
ld c,$02 ; BDOS function to output a character
call bdos ; do it
pop hl ; restore registers
pop de
pop bc
ret
;
; Print a zero terminated string at (DE) without destroying any registers
;
prtstr:
push de
;
prtstr1:
ld a,(de) ; get next char
or a
jr z,prtstr2
call prtchr
inc de
jr prtstr1
;
prtstr2:
pop de ; restore registers
ret
;
; Start a new line
;
crlf2:
call crlf ; two of them
crlf:
push af ; preserve AF
ld a,13 ; <CR>
call prtchr ; print it
ld a,10 ; <LF>
call prtchr ; print it
pop af ; restore AF
ret
;
; Print the value in A in hex without destroying any registers
;
prthex:
push af ; save AF
push de ; save DE
call hexascii ; convert value in A to hex chars in DE
ld a,d ; get the high order hex char
call prtchr ; print it
ld a,e ; get the low order hex char
call prtchr ; print it
pop de ; restore DE
pop af ; restore AF
ret ; done
;
; print the hex word value in hl
;
prthexword:
push af
ld a,h
call prthex
ld a,l
call prthex
pop af
ret
;
; print the hex dword value in de:hl
;
prthex32:
push bc
push de
pop bc
call prthexword
push hl
pop bc
call prthexword
pop bc
ret
;
; Convert binary value in A to ascii hex characters in DE
;
hexascii:
ld d,a ; save A in D
call hexconv ; convert low nibble of A to hex
ld e,a ; save it in E
ld a,d ; get original value back
rlca ; rotate high order nibble to low bits
rlca
rlca
rlca
call hexconv ; convert nibble
ld d,a ; save it in D
ret ; done
;
; Convert low nibble of A to ascii hex
;
hexconv:
and $0F ; low nibble only
add a,$90
daa
adc a,$40
daa
ret
;
;===============================================================================
; Storage Section
;===============================================================================
;
rtcbuf .fill 6,$FF ; RTC data buffer
;
str_prefix .db "\r\n\r\nRegisters: ",0
;
str_A .db "A=",0
str_BC .db ", BC=",0
str_DE .db ", DE=",0
str_HL .db ", HL=",0
str_SP .db ", SP=",0
str_PC .db ", PC=",0
;
stksav .dw 0 ; stack pointer saved at start
.fill stksiz,0 ; stack
stack .equ $ ; stack top
regSP:
;
.end

View File

@@ -51,6 +51,7 @@
; 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
; 2024-09-17 [WBW] Add support for HEATH H8 with Les Bird's MSX Card
;_______________________________________________________________________________
;
; ToDo:
@@ -636,6 +637,9 @@ CFGSIZ .EQU $ - CFGTBL
;
.DB 17, $A4, $A5, $A4, $FF, $A6, $FE ; DUODYNE
.DW HWSTR_DUO
;
.DB 18, $A0, $A1, $A2, $FF, $FF, $FF ; HEATH H8
.DW HWSTR_HEATH
;
.DB 22, $41, $40, $40, $FF, $FF, $FF ; NABU
.DW HWSTR_NABU
@@ -668,7 +672,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.10, 11-Jul-2024",0
MSGBAN .DB "Tune Player for RomWBW v3.11, 17-Sep-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
@@ -695,6 +699,7 @@ HWSTR_LINC .DB "Z50 LiNC Sound Module",0
HWSTR_MBC .DB "NHYODYNE Sound Module",0
HWSTR_DUO .DB "DUODYNE Sound Module",0
HWSTR_NABU .DB "NABU Onboard Sound",0
HWSTR_HEATH .DB "HEATH H8 MSX Module",0
MSGUNSUP .db "MYM files not supported with HBIOS yet!\r\n", 0

View File

@@ -0,0 +1,8 @@
@echo off
setlocal
:: copysl.com is currently distributed as a binary application, so
:: it is not built here.
copy /Y copysl.com ..\..\..\Binary\Apps\ || exit /b
copy /Y copysl.doc ..\..\..\Binary\Apps\ || exit /b

View File

@@ -0,0 +1,5 @@
@echo off
setlocal
:: copysl.com is currently distributed as a binary application, so
:: we do not delete the .COM file.

View File

@@ -0,0 +1,7 @@
OBJECTS = copysl.com
NODELETE = $(OBJECTS)
DOCS = copysl.doc
DEST = ../../../Binary/Apps
DOCDEST = ../../../Binary/Apps
TOOLS=../../../Tools
include $(TOOLS)/Makefile.inc

Binary file not shown.

View File

@@ -0,0 +1,98 @@
==========================================================================
CopySlice Utility v0.2 for RomWbW computers
written by Mark Pruden (Sept 2024)
==========================================================================
Purpose:
--------
The purpose of this utility is to allow the copying of whole disk slices
from one disk slice to another slice
Background
----------
This tool is only supported by RomWBW HBIOS, it uses HDIOS for all its
disk IO. UNA UBIOS is not supported by this tool.
This tool is running on CP/M 2.2 or 3.0 and has access to full 64kb of
RAM, with a minimum of 48kb TPA
This tool only works with hard disk devices, other media types like
floppy, are not supported at this time. This tool works across different
hard disk device types, even of different physical type
Both hd1k and hd512 are fully supported, however copying from one layout
type to the other is not supported.
During operation data is copied in a single read/write pass, data is not
verified by default. If there is a write error, it will be reported, and
operation will stop.
General Usage
-------------
This tool operates at the disk level via RomWBW, thus all disk identifiers
are in the RomWBW <disk>.<unit> format
The syntax (similar to copy) for the command is:
COPYSL <destunit>[.<slice>]=<srcunit>[.<slice>] [/options]
E.g.
COPYSL 3.3=2.10 /U
Means copy from slice 10 on disk 2, onto disk 3 slice 3. This is in
unattended mode, so you will not be asked to confirm the copy operation.
Options
-------
F - Full disk copy. Copies the complete disk slice, all sectors.
U - Unattended. Will complete copy without confirmation from the user.
V - Verify. Does an additional read and verify after write.
Description
-----------
When run COPYSL will perform command line argument validation and display
an error if they are illegal. Also any disk IO errors will cause COPYSL
to exit.
When specifying slice number(s) a check is made that the slice number is
valid, i.e. not too large that it would extend past the end of the
partition (hd1k), or the end of the media (hd512). For hd512 a check is
also performed to ensure that the slice would not extend into the first
defined partition.
The copy operation will be faster if the source disk has been formatted
with the CP/M file system, since during copy the CP/M directory is scanned,
and unused blocks are not copied.
If a filesystem is not found, (or the /F option is chosen) all data is
copied.
Verification (if option chosen) will do an aditional read (after write)
and compare the data read matches what was written. This compare is only
on every 32'nd byte. This is done for efficiency.
During copy dots "." will be displayed to indicate progress of the copy.
Each "." represents 16 kBytes of data. Each line of "." 's is 1 mBytes.
Testing
-------
This tool has been writen and tested on a SC126 computer. Testing been on both
SD and CF media types, and with both hd1k and hd512 formats
History
-------
* v 0.1 Initial Release
* v 0.2 Added the /v command option to read and verify after write
Future
------
* support ability to read and write from image files stored in CP/M filesystem
* maybe the verify options could allow more complete verification.
This would be at the cost of performance
* ability to abort once the copy has started <ctrl><c>


View File

@@ -23,6 +23,12 @@ rtc_port .equ $70 ; RTC latch port adr
restart .equ $0000 ; CP/M restart vector
bdos .equ $0005 ; BDOS invocation vector
;
bf_sysreset .equ $F0 ; restart system
;
bf_sysres_int .equ $00 ; reset hbios internal
bf_sysres_warm .equ $01 ; warm start (restart boot loader)
bf_sysres_cold .equ $02 ; cold start
;
ident .equ $FFFE ; loc of RomWBW HBIOS ident ptr
;
;=======================================================================
@@ -113,6 +119,10 @@ main1:
;
main2:
ret z ; if end, nothing to do
cp 'W' ; warm boot?
jp z,wboot ; if so, do it
cp 'C' ; cold boot?
jp z,cboot ; if so, do it
cp ',' ; no new speed?
jr z,main2a ; go to wait states
; parse speed string (half, full, double)
@@ -161,6 +171,9 @@ parse_spd:
ld c,2 ; assume double speed
cp 'D' ; check it
jr z,parse_spd1 ; if equal, done
ld c,3 ; assume quad speed
cp 'Q' ; check it
jr z,parse_spd1 ; if equal, done
or a ; clear CF
ccf ; set CF to indicate error
ret
@@ -222,6 +235,9 @@ show_spd:
ld de,str_dbl
cp 2
jr z,show_spd1
ld de,str_quad
cp 3
jr z,show_spd1
jp err_invalid
show_spd1:
call prtstr
@@ -267,6 +283,24 @@ usage:
or $FF
ret
;
; Handle Warm Boot
;
wboot:
ld de,str_warmboot ; message
call prtstr ; display it
ld b,bf_sysreset ; system restart
ld c,bf_sysres_warm ; warm start
call $fff0 ; call hbios
;
; Handle Cold Boot
;
cboot:
ld de,str_coldboot ; message
call prtstr ; display it
ld b,bf_sysreset ; system restart
ld c,bf_sysres_cold ; cold start
call $fff0 ; call hbios
;
; Error Handlers
;
err_una:
@@ -510,9 +544,6 @@ prtd3m2:
call prtchr
prtd3m3:
ret
;
; Get the next non-blank character from (HL).
;
@@ -665,7 +696,7 @@ delay1:
; Constants
;=======================================================================
;
str_banner .db "RomWBW CPU Speed Selector v0.6, 29-Dec-2023",0
str_banner .db "RomWBW CPU Speed Selector v1.0, 11-Sep-2024",0
str_spacer .db " ",0
str_oscspd .db " MHz Oscillator",0
str_cpuspd .db " CPU speed is ",0
@@ -674,8 +705,11 @@ str_mhz .db " MHz",0
str_slow .db " (Half)",0
str_full .db " (Full)",0
str_dbl .db " (Double)",0
str_quad .db " (Quad)",0
str_memws .db " Memory Wait State(s)",0
str_iows .db " I/O Wait State(s)",0
str_warmboot .db "\r\n\r\nWarm booting...",0
str_coldboot .db "\r\n\r\nCold booting...",0
str_err_una .db " ERROR: UNA not supported by application",0
str_err_inv .db " ERROR: Invalid BIOS (signature missing)",0
str_err_ver .db " ERROR: Unexpected HBIOS version",0
@@ -684,8 +718,10 @@ str_err_not_sup .db " ERROR: Platform or configuration does not support CPU sp
str_err_invalid .db " ERROR: Invalid configuration!",0
str_err_api .db " ERROR: HBIOS API error!",0
str_usage .db " Usage: CPUSPD <cpuspd>,<memws>,<iows>\r\n"
.db " CPUSPD (W)armBoot\r\n"
.db " CPUSPD (C)oldBoot\r\n"
.db "\r\n"
.db " <cpuspd>: \"Half\", \"Full\", or \"Double\"\r\n"
.db " <cpuspd>: (H)alf | (F)ull | (D)ouble | (Q)uad\r\n"
.db " <memws>: Memory wait states\r\n"
.db " <iows>: I/O wait states\r\n"
.db "\r\n"

View File

@@ -0,0 +1,10 @@
@echo off
setlocal
set TOOLS=../../../Tools
set PATH=%TOOLS%\tasm32;%PATH%
set TASMTABS=%TOOLS%\tasm32
tasm -t180 -g3 -fFF reboot.asm reboot.com reboot.lst || exit /b
copy /Y reboot.com ..\..\..\Binary\Apps\ || exit /b

View File

@@ -0,0 +1,6 @@
@echo off
setlocal
if exist *.com del *.com
if exist *.lst del *.lst
if exist *.bin del *.bin

View File

@@ -0,0 +1,7 @@
OBJECTS = reboot.com
DEST = ../../../Binary/Apps
TOOLS =../../../Tools
USETASM=1
include $(TOOLS)/Makefile.inc

View File

@@ -0,0 +1,299 @@
;==============================================================================
; REBOOT - Allows the user to Cold or Warm Boot the RomWBW System
; Version 1.0 12-October-2024
;==============================================================================
;
; Author: MartinR (October 2024)
; Based **very heavily** on code by Wayne Warthen (wwarthen@gmail.com)
;______________________________________________________________________________
;
; Usage:
; REBOOT [/C] [/W] [/?]
; ex: REBOOT Display version and usage
; REBOOT /? Display version and usage
; REBOOT /C Cold boot RomWBW system
; REBOOT /W Warm boot RomWBW system
;
; Operation:
; Cold or warm boots a RomWBW system depending on the user option selected.
;
; This code will only execute on a Z80 CPU (or derivitive)
;
; This source code assembles with TASM V3.2 under Windows-11 using the
; following command line:
; tasm -80 -g3 -l REBOOT.ASM REBOOT.COM
; ie: Z80 CPU; output format 'binary' named .COM (rather than .OBJ)
; and includes a symbol table as part of the listing file.
;______________________________________________________________________________
;
; Change Log:
; 2024-09-11 [WBW] Release of RomWBW CPU Speed Selector v1.0 used as the basis
; 2024-10-12 [MR ] Initial release of version 1.0
;______________________________________________________________________________
;
; Include Files
;
#include "../../ver.inc" ; Used for building RomWBW
#include "../../HBIOS/hbios.inc"
;#include "ver.inc" ; Used for testing purposes....
;#include "hbios.inc" ; ....during code development
;
;===============================================================================
;
; General operational equates (should not requre adjustment)
;
stksiz .equ $40 ; Working stack size
;
restart .equ $0000 ; CP/M restart vector
bdos .equ $0005 ; BDOS invocation vector
;
bf_sysreset .equ $F0 ; restart system
bf_sysres_int .equ $00 ; reset hbios internal
bf_sysres_warm .equ $01 ; warm start (restart boot loader)
bf_sysres_cold .equ $02 ; cold start
;
ident .equ $FFFE ; loc of RomWBW HBIOS ident ptr
;
;===============================================================================
;
.org $0100 ; standard CP/M TPA executable
;
; setup stack (save old value)
ld (stksav),sp ; save stack
ld sp,stack ; set new stack
;
call crlf
ld de,str_banner ; banner
call prtstr
;
; initialization
call init ; initialize
jr nz,exit ; abort if init fails
;
call main ; do the real work
;
exit:
; clean up and return to command processor
call crlf ; formatting
ld sp,(stksav) ; restore stack
jp restart ; return to CP/M via restart
;
;
;===============================================================================
; Main Program
;===============================================================================
;
; Initialization
;
init:
; check for UNA (UBIOS)
ld a,($FFFD) ; fixed location of UNA API vector
cp $C3 ; jp instruction?
jr nz,initwbw ; if not, not UNA
ld hl,($FFFE) ; get jp address
ld a,(hl) ; get byte at target address
cp $FD ; first byte of UNA push ix instruction
jr nz,initwbw ; if not, not UNA
inc hl ; point to next byte
ld a,(hl) ; get next byte
cp $E5 ; second byte of UNA push ix instruction
jr nz,initwbw ; if not, not UNA
jp err_una ; UNA not supported
;
initwbw:
; get location of config data and verify integrity
ld hl,(ident) ; HL := adr or RomWBW HBIOS ident
ld a,(hl) ; get first byte of RomWBW marker
cp 'W' ; match?
jp nz,err_inv ; abort with invalid config block
inc hl ; next byte (marker byte 2)
ld a,(hl) ; load it
cp ~'W' ; match?
jp nz,err_inv ; abort with invalid config block
inc hl ; next byte (major/minor version)
ld a,(hl) ; load it
cp rmj << 4 | rmn ; match?
jp nz,err_ver ; abort with invalid os version
;
initz:
; initialization complete
xor a ; signal success
ret ; return
;
;
;
main:
; skip to start of first command line parameter
ld ix,$0081 ; point to start of parm area (past length byte)
call nonblank ; skip to next non-blank char
cp '/' ; option prefix?
jr nz,usage ; display help info & exit if nothing to do
;
; process any options
inc ix ; fetch next character and process
ld a,(ix)
call upcase ; ensure it's an upper case character
cp 'C' ; if it's a 'C' then
jr z,cboot ; do a cold boot.
cp 'W' ; if it's a 'W' then
jr z,wboot ; do a warm boot.
cp '?' ; if it's a '?' then
jr z,usage ; display usage info and exit.
jr err_parm ; or not a recognised option, so report and exit.
;
; Handle Usage Information
;
usage:
call crlf2 ; display the options for this utility
ld de,str_usage
call prtstr
or $FF
ret ; exit back out to CP/M CCP
;
; Handle Warm Boot
;
wboot:
ld de,str_warmboot ; message
call prtstr ; display it
ld b,bf_sysreset ; system restart
ld c,bf_sysres_warm ; warm start
call $fff0 ; call hbios
;
; Handle Cold Boot
;
cboot:
ld de,str_coldboot ; message
call prtstr ; display it
ld b,bf_sysreset ; system restart
ld c,bf_sysres_cold ; cold start
call $fff0 ; call hbios
;
;===============================================================================
; Error Handlers
;===============================================================================
;
err_una:
ld de,str_err_una
jr err_ret
err_inv:
ld de,str_err_inv
jr err_ret
err_ver:
ld de,str_err_ver
jr err_ret
err_parm:
ld de,str_err_parm
jr err_ret
;
err_ret:
call crlf2
call prtstr
or $FF ; signal error
ret
;
;===============================================================================
; Utility Routines
;===============================================================================
;
; Print character in A without destroying any registers
;
prtchr:
push af
push bc ; save registers
push de
push hl
ld e,a ; character to print in E
ld c,$02 ; BDOS function to output a character
call bdos ; do it
pop hl ; restore registers
pop de
pop bc
pop af
ret
;
; Start a new line
;
crlf2:
call crlf ; two of them
crlf:
push af ; preserve AF
ld a,13 ; <CR>
call prtchr ; print it
ld a,10 ; <LF>
call prtchr ; print it
pop af ; restore AF
ret
;
; Print a zero terminated string at (de) without destroying any registers
;
prtstr:
push af
push de
;
prtstr1:
ld a,(de) ; get next char
or a
jr z,prtstr2
call prtchr
inc de
jr prtstr1
;
prtstr2:
pop de ; restore registers
pop af
ret
;
; Get the next non-blank character from (ix)
;
nonblank:
ld a,(ix) ; load next character
or a ; string ends with a null
ret z ; if null, return pointing to null
cp ' ' ; check for blank
ret nz ; return if not blank
inc ix ; if blank, increment character pointer
jr nonblank ; and loop
;
; Convert character in A to uppercase
;
upcase:
cp 'a' ; if below 'a'
ret c ; ... do nothing and return
cp 'z' + 1 ; if above 'z'
ret nc ; ... do nothing and return
res 5,a ; clear bit 5 to make lower case -> upper case
ret ; and return
;
;===============================================================================
; Constants
;===============================================================================
;
str_banner .db "RomWBW Reboot Utility, Version 1.0, 12-Oct-2024\r\n"
.db " Wayne Warthen (wwarthen@gmail.com) & MartinR",0
;
str_warmboot .db "\r\n\r\nWarm booting...\r\n",0
str_coldboot .db "\r\n\r\nCold booting...\r\n",0
;
str_err_una .db " ERROR: UNA not supported by application",0
str_err_inv .db " ERROR: Invalid BIOS (signature missing)",0
str_err_ver .db " ERROR: Unexpected HBIOS version",0
str_err_parm .db " ERROR: Parameter error (REBOOT /? for usage)",0
;
str_usage .db " Usage: REBOOT /? - Display this help info.\r\n"
.db " REBOOT /W - Warm boot system\r\n"
.db " REBOOT /C - Cold boot system\r\n"
.db " Options are case insensitive.\r\n",0
;
;===============================================================================
; Working data
;===============================================================================
;
stksav .dw 0 ; stack pointer saved at start
.fill stksiz,0 ; stack
stack .equ $ ; stack top
;
;===============================================================================
;
.end

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

@@ -439,12 +439,12 @@ WBOOT:
LD DE,(BNKBIOS) ; UBIOS_PAGE (SEE PAGES.INC)
RST 08 ; DO IT
PUSH DE ; SAVE PREVIOUS BANK
LD HL,(CCPBUF) ; ADDRESS OF CCP BUF IN BIOS MEM
LD DE,CCP_LOC ; ADDRESS IN HI MEM OF CCP
LD BC,CCP_SIZ ; SIZE OF CCP
LDIR ; DO IT
LD BC,$01FB ; UNA FUNC = SET BANK
POP DE ; RECOVER OPERATING BANK
RST 08 ; DO IT
@@ -804,7 +804,7 @@ WRITE:
LD A,C
LD (WRTYPE),A ; SAVE WRITE TYPE
LD A,DOP_WRITE
JR READWRITE
;JR READWRITE ; OPTIMISATION (FALL THRU TO READWRITE)
;
;__________________________________________________________________________________________________
READWRITE:
@@ -1232,11 +1232,11 @@ DSK_GETINF:
RLCA ; ... TO USE AS OFFSET INTO DRVMAP
CALL ADDHLA ; ADD OFFSET
LD D,(HL) ; D := UNIT
LD A,D ; PUT UNIT IN ACCUM
INC A ; $FF -> $00
JR Z,DSK_GETINF1 ; HANDLE UNASSIGNED DRIVE LETTER
INC HL ; BUMP TO SLICE
LD E,(HL) ; E := SLICE
INC HL ; POINT TO DPH LSB
@@ -1261,7 +1261,8 @@ DSK_GETINF1: ; ERROR RETURN
INC A
RET
;
;
; BIOS FUNCTION FOR SELECTING CPM DRIVE (A-P) IN C REGISTER
; RETURN HL - BASE ADDRESS OF DPH (0x0000 FOR AN ERROR)
;
DSK_SELECT:
LD B,E ; SAVE E IN B FOR NOW
@@ -1321,19 +1322,8 @@ DSK_SELECT1A:
LD (MEDID),A
;
#ELSE
;
; DETERMINE MEDIA IN DRIVE
LD A,(SEKUNIT) ; GET UNIT
LD C,A ; STORE IN C
LD B,BF_DIOMEDIA ; DRIVER FUNCTION = DISK MEDIA
LD E,1 ; ENABLE MEDIA CHECK/DISCOVERY
RST 08 ; DO IT
LD A,E ; RESULTANT MEDIA ID TO ACCUM
LD (MEDID),A ; SAVE IT
OR A ; SET FLAGS
LD HL,0 ; ASSUME FAILURE
RET Z ; BAIL OUT IF NO MEDIA
;
; NOTE: Setting the (MEDID) is not required for RomWBW at this point
; The media ID is determined during call to DSK_MBR:
#ENDIF
;
; CLEAR LBA OFFSET (DWORD)
@@ -1343,24 +1333,7 @@ DSK_SELECT1A:
SET 7,H ; ASSUME LBA ACCESS FOR NOW
LD (SEKLBA+2),HL ; CLEAR SECOND WORD
;
#IFDEF PLTWBW
;
LD A,(SEKUNIT) ; GET UNIT
LD C,A ; STORE IN C
LD B,BF_DIODEVICE ; HBIOS FUNC: REPORT DEVICE INFO
RST 08 ; GET UNIT INFO, DEVICE TYPE IN D
LD A,D ; DEVICE TYPE -> A
CP DIODEV_FD ; FLOPPY?
JR NZ,DSK_SELECT1B ; IF NOT, DO LBA IO
LD HL,SEKLBA+3 ; POINT TO HIGH ORDER BYTE
RES 7,(HL) ; SWITCH FROM LBA -> CHS
;
#ENDIF
;
DSK_SELECT1B:
; SET LEGACY SECTORS PER SLICE
LD HL,16640 ; LEGACY SECTORS PER SLICE
LD (SPS),HL ; SAVE IT
;
; CHECK MBR OF PHYSICAL DISK BEING SELECTED
; WILL UPDATE MEDID AND LBAOFF IF VALID CP/M PARTITION EXISTS
@@ -1407,29 +1380,47 @@ DSK_SELECT2:
; THE MEDIA ID (MEDID).
;
DSK_MBR:
;
#IFDEF PLTWBW
;
; GET EXTENDED INFORMATION FOR THE DEVICE/SLICE
LD A,(SEKUNIT) ; PASSING BOOT UNIT
LD D,A
LD A,(SLICE) ; AND SLICE
LD E,A
LD B,BF_EXTSLICE ; HBIOS FUNC: SLICE
RST 08 ; DO IT
;
; CHECK ERRORS FROM THE FUNCTION
RET NZ ; ABORT ON ERROR
; SAVE MEDIA ID
LD A,C ; C IS MEDIA ID FROM HBIOS
LD (MEDID),A ; SAVE IT
; TEST IF FLOPPY MEDIA - BIT 7 DEVICE ATTRIBUTES
BIT 7,B ; B IS ATTRIBUTES FROM HBIOS
JR NZ,DSK_MBR11 ; FLOPPY - SAVE AND RETURN DEHL -> CHS
; CODE FALL THRU NEXT IFDEF AND SETS 7,D
; THEN RETURNS DEHL -> LBA MODE
;
#ENDIF
;
#IFDEF PLTUNA
; CHECK MEDIA TYPE, ONLY HARD DISK IS APPLICABLE
LD A,(MEDID) ; GET MEDIA ID
CP MID_HD ; HARD DISK?
JR Z,DSK_MBR0 ; IF SO, CONTINUE
XOR A ; ELSE, N/A, SIGNAL SUCCESS
RET ; AND RETURN
DSK_MBR0:
;
#IFDEF PLTWBW
; ACTIVATE BIOS BANK TO ACCESS DISK BUFFER
LD (STKSAV),SP ; SAVE CUR STACK
LD SP,STACK ; NEW STACK IN HI MEM
LD A,(BNKBIOS) ; ACTIVATE HBIOS BANK
PUSH IX ; SAVE IX
LD IX,DSK_MBR1 ; ROUTINE TO RUN
CALL HB_BNKCALL ; DO IT
POP IX ; RESTORE IX
LD SP,(STKSAV) ; RESTORE ORIGINAL STACK
RET
#ENDIF
;
DSK_MBR1:
; SET LEGACY SECTORS PER SLICE - USED IN CAPACITY CALC
LD HL,SPS_HD512 ; LEGACY SECTORS PER SLICE
LD (SPS),HL ; SAVE IT
;
; FLUSH DSKBUF TO MAKE SURE IT IS SAFE TO USE IT.
CALL BLKFLSH ; MAKE SURE DISK BUFFER IS NOT DIRTY
XOR A ; CLEAR ACCUM
@@ -1441,9 +1432,6 @@ DSK_MBR1:
LD C,A ; PUT IN C
LD DE,0 ; LBA SECTOR ZERO
LD HL,0 ; ...
#IFDEF PLTWBW
SET 7,D ; MAKE SURE LBA ACCESS BIT SET
#ENDIF
CALL DSK_IO2 ; DO IT
RET NZ ; ABORT ON ERROR
;
@@ -1487,6 +1475,8 @@ DSK_MBR3:
; CHECK THAT REQUESTED SLICE IS "INSIDE" PARTITION
; SLICE SIZE IS EXACTLY 16,384 SECTORS (8MB), SO WE CAN JUST
; RIGHT SHIFT PARTITION SECTOR COUNT BY 14 BITS
; IMPLEMENTED BY : LEFT SHIFT BY 2, AND TAKE HIGH ORDER WORD
; SAME AS DISCARDING THE LOWER 14 BITS, SINCE KEEP 2 BY SHIFT
LD E,(HL) ; HL POINTS TO FIRST BYTE
INC HL ; ... OF 32 BIT PARTITION
LD D,(HL) ; ... SECTOR COUNT,
@@ -1510,7 +1500,7 @@ DSK_MBR3:
;
DSK_MBR4:
; IF BOOT FROM PARTITION, USE NEW SECTORS PER SLICE VALUE
LD HL,16384 ; NEW SECTORS PER SLICE
LD HL,SPS_HD1K ; NEW SECTORS PER SLICE
LD (SPS),HL ; SAVE IT
; UPDATE MEDIA ID
@@ -1519,18 +1509,19 @@ DSK_MBR4:
;
DSK_MBR5:
; ADJUST LBA OFFSET BASED ON TARGET SLICE
; ALSO JP HERE IF NO PARTITION TABLE, OR NO CPM PARTION
LD A,(SLICE) ; GET SLICE, A IS LOOP CNT
LD HL,(SEKLBA) ; SET DE:HL
LD DE,(SEKLBA+2) ; ... TO STARTING LBA
LD BC,(SPS) ; SECTORS PER SLICE
RES 7,D ; CLEAR LBA MODE BIT
DSK_MBR6:
DSK_MBR6:
OR A ; SET FLAGS TO CHECK LOOP CNTR
JR Z,DSK_MBR8 ; DONE IF COUNTER EXHAUSTED
ADD HL,BC ; ADD ONE SLICE TO LOW WORD
JR NC,DSK_MBR7 ; CHECK FOR CARRY
INC DE ; IF SO, BUMP HIGH WORD
DSK_MBR7:
DSK_MBR7:
DEC A ; DEC LOOP DOWNCOUNTER
JR DSK_MBR6 ; AND LOOP
DSK_MBR8:
@@ -1552,21 +1543,11 @@ DSK_MBR9:
LD (CAP_REQ),HL ; LSW
LD (CAP_REQ+2),DE ; MSW
;
#IFDEF PLTWBW
; GET DSK_CAP (DE:HL)
LD B,BF_DIOCAP ; HBIOS DISK CAPACITY FUNC
LD A,(SEKUNIT) ; DISK UNIT NUMBER
LD C,A ; ... INTO C
RST 08 ; HBIOS CALL (DE:HL = CAPACITY)
#ENDIF
;
#IFDEF PLTUNA
; GET DSK_CAP (DE:HL)
LD C,$45 ; UBIOS DISK INFO FUNC
LD A,(SEKUNIT) ; DISK UNIT NUMBER
LD B,A ; ... INTO B
RST 08 ; CALL UNA (DE:HL = CAPACITY)
#ENDIF
;
; SAVE DSK_CAP (DE:HL)
PUSH DE ; SAVE DSK_CAP (MSW)
@@ -1591,9 +1572,12 @@ DSK_MBR9:
OR $FF ; SIGNAL ERROR
RET ; DONE
;
#ENDIF
;
DSK_MBR10:
; FINALIZE SLICE LBA
SET 7,D ; SET LBA ACCESS FLAG
DSK_MBR11:
; RESAVE IT
LD (SEKLBA),HL ; LOWORD
LD (SEKLBA+2),DE ; HIWORD
@@ -1601,7 +1585,7 @@ DSK_MBR10:
XOR A ; SUCCESS
RET ; DONE
;
;
; CHECK DISK STATUS (PART OF BIOS COLD WARM BOOT)
;
DSK_STATUS:
#IFDEF PLTUNA
@@ -1619,21 +1603,21 @@ DSK_STATUS:
RET
#ENDIF
;
;
; READ PHYSICAL SECTOR INTO BUFFER
;
DSK_READ:
; SET B = FUNCTION: READ
LD B,BF_DIOREAD
JR DSK_IO
;
;
; WRITE PHYSICAL SECTOR FROM BUFFER
;
DSK_WRITE:
; SET B = FUNCTION: WRITE
LD B,BF_DIOWRITE
JR DSK_IO
;
;
; READ/WRITE PHYSICAL SECTOR
;
DSK_IO:
LD A,(HSTUNIT) ; GET UNIT
@@ -1671,8 +1655,8 @@ LBA_IO:
LD L,A
; ADD IN LBA OFFSET FOR PARTITION AND/OR SLICE
LD BC,(HSTLBA) ; LBA OFFSET LOWORD
ADD HL,BC
EX DE,HL
ADD HL,BC
EX DE,HL
LD BC,(HSTLBA+2) ; LBA OFFSET HIWORD
ADC HL,BC
EX DE,HL
@@ -1816,8 +1800,10 @@ DEFDRIVE .DB 0 ; DEFAULT DRIVE
CCPBUF .DW 0 ; ADDRESS OF CCP BUF IN BIOS BANK
MEDID .DB 0 ; TEMP STORAGE FOR MEDIA ID
SLICE .DB 0 ; CURRENT SLICE
#IFDEF PLTUNA
SPS .DW 0 ; SECTORS PER SLICE
CAP_REQ .DW 0,0 ; LBA CAP REQUIRED FOR SLICE
#ENDIF
STKSAV .DW 0 ; TEMP SAVED STACK POINTER
;
#IFDEF PLTWBW
@@ -2596,7 +2582,7 @@ MD_INIT:
LD A,(HCB + HCB_RAMD_BNKS) ; RAM DISK SIZE IN BANKS
LD IX,DPB_RAM ; ADDRESS OF DPB
CALL MD_INIT1 ; FIX IT UP
;
;
JR MD_INIT4 ; DONE
;
MD_INIT1:

View File

@@ -38,6 +38,10 @@ copy /b os2ccp.bin + os3bdos.bin + ..\cbios\cbios_una.bin cpm_una.bin || exit /b
copy /b loader.bin + cpm_wbw.bin cpm_wbw.sys || exit /b
copy /b loader.bin + cpm_una.bin cpm_una.sys || exit /b
rem Copy OS files to Binary directory
copy cpm_wbw.sys ..\..\Binary\CPM22 || exit /b
copy cpm_una.sys ..\..\Binary\CPM22 || exit /b
goto :eof
:asm

View File

@@ -3,14 +3,20 @@ BINFILES = cpm_wbw.bin cpm_una.bin
OBJECTS = CCP.bin BDOS.bin CCP22.bin BDOS22.bin OS2CCP.bin OS3BDOS.bin \
ccpb03.bin bdosb01.bin loader.bin $(SYSFILES) $(BINFILES)
OTHERS = *.hex
NOCOPY = cpm_wbw.bin cpm_una.bin \
CCP.bin BDOS.bin CCP22.bin BDOS22.bin OS2CCP.bin OS3BDOS.bin \
ccpb03.bin bdosb01.bin loader.bin
DEST = ../../Binary/CPM22
TOOLS = ../../Tools
include $(TOOLS)/Makefile.inc
%.sys: %.bin loader.bin
cat loader.bin $*.bin > $@
%.sys: %.bin loader.bin
cat loader.bin $*.bin > $@
cpm_una.bin: OS2CCP.bin OS3BDOS.bin ../CBIOS/cbios_una.bin
cat OS2CCP.bin OS3BDOS.bin ../CBIOS/cbios_una.bin > $@
cpm_wbw.bin: OS2CCP.bin OS3BDOS.bin ../CBIOS/cbios_wbw.bin
cat OS2CCP.bin OS3BDOS.bin ../CBIOS/cbios_wbw.bin > $@

View File

@@ -4,11 +4,13 @@
maclib cpm3.lib
cseg
extrn phex16, phex8
extrn cin, cout
extrn crlf, crlf2
include hbios.z80
debug equ false
; BIOS Jump vector.
@@ -65,7 +67,7 @@ boot:
; this routine to avoid issues.
ld (stksav),sp
ld sp,stack
; Do the real work
call boot0
@@ -78,6 +80,10 @@ boot0:
if cmdline
boot1:
;
; The following Code is the Entry Point for the Loader when
; it is built as a COM file. Typically CPMLDR.COM or ZPMLDR.COM
;
; Get disk unit from user
ld de,msgunit ; disk unit prompt
call writestr ; display on console
@@ -88,7 +94,7 @@ boot1:
sub '0' ; convert to binary
ld (unit),a ; save it
jr c,selerr ; loop if below 0 entered
ld bc,0F810h ; HBIOS, get disk unit count
ld bc,BC_SYSGET_DIOCNT ; HBIOS, get disk unit count
call 0FFF0h ; do it, E := disk unit count
ld a,(unit) ; get unit num back
cp e ; compare to entry
@@ -118,7 +124,7 @@ selerr:
boot2:
; Record unit & slice w/ HBIOS
ld bc,0F9E0h ; HBIOS func: set boot info
ld bc,BC_SYSSET_BOOTINFO ; HBIOS func: set boot info
ld a,(unit) ; get unit
ld d,a ; put in D
ld a,(slice) ; get slice
@@ -128,8 +134,13 @@ boot2:
else
;
; The following Code is the Entry Point for the Loader when
; it is built as a SYS file, and run from the System Track
;
; Get unit & slice from HBIOS
ld bc,0F8E0h ; HBIOS func: get boot info
ld bc,BC_SYSGET_BOOTINFO ; HBIOS func: get boot info
call 0FFF0h ; do it, D := boot unit, E: := slice
ld a,d ; move unit to A
ld (unit),a ; save it
@@ -138,103 +149,27 @@ boot2:
endif
; Check that drive actually exists
ld bc,0F810h ; HBIOS func: get disk count
call 0FFF0h ; do it, E=disk count
ld a,(unit) ; get boot disk unit
cp e ; compare to count
jp nc,err_nodisk ; handle no disk err
; Sense media to determine media format
ld a,(unit) ; Get boot unit
ld c,a ; put in C
ld b,18h ; HBIOS Media function
ld e,1 ; Enable media check/discovery
ld d,a ; put in D
ld a,(slice) ; get boot slice
ld e,a ; put in E
ld b,BF_EXTSLICE ; HBIOS FUNC: SLICE
call 0FFF0H ; HBIOS call
jp nz,err_diskio ; handle error
ld a,e ; resultant media id to accum
; Check errors from the Function
cp ERR_NOUNIT ; compare to no unit error
jp z,err_nodisk ; handle no disk err
cp ERR_NOMEDIA ; no media in the device
jp z,err_nodisk ; handle the error
cp ERR_RANGE ; slice is invalid
jp z,err_noslice ; bad slice, handle err
or a ; any other error
jp nz,err_diskio ; handle as general IO error
; Initialize slice start LBA and Media ID
ld a,c
ld (medid),a ; save media id
or a ; set flags, 0 is no media
jp z,err_diskio ; handle no media error
; Initialize slice start LBA & sectors per slice
ld hl,0 ; assume slice starts
ld (lba),hl ; ... at LBA offset
ld (lba+2),hl ; ... of zero
ld hl,16640 ; assume legacy value for
ld (sps),hl ; ... sectors per slice
; If not hard disk, skip partition & slice stuff
ld a,(medid) ; get media id
cp 4 ; hard disk?
jr nz,boot9 ; if not, jump ahead
; Read MBR
ld de,8000h ; LBA address zero
ld hl,0 ; ... to read first sector
ld bc,mbrsec ; read into MBR buffer
ld (dma),bc ; save
ld b,1 ; one sector
ld a,(unit) ; get bootunit
ld c,a ; put in C
call diskread ; do it, no return on err
; Check signature
ld hl,(mbrsec+1FEh) ; get signature
ld a,l ; first byte
cp 055h ; should be $55
jr nz,boot5 ; if not, no part table
ld a,h ; second byte
cp 0AAh ; should be $AA
jr nz,boot5 ; if not, no part table
; Search part table for CP/M entry (type 0x2E)
ld b,4 ; four entries in part table
ld hl,mbrsec+1BEh+4 ; offset of first part type
boot3:
ld a,(hl) ; get part type
cp 2Eh ; CP/M partition?
jr z,boot4 ; cool, grab the LBA offset
ld de,16 ; part table entry size
add hl,de ; bump to next part type
djnz boot3 ; loop thru table
jr boot5 ; too bad, no CP/M partition
boot4:
; Capture the starting LBA of the CP/M partition we found
ld de,4 ; LBA is 4 bytes after part type
add hl,de ; point to it
ld de,lba ; loc to store lba offset
ld bc,4 ; 4 bytes (32 bits)
ldir ; copy it
; For now, it is implied that a slice within a partition
; table will be in the "new" disk format. So, we now
; adjust the sectors per slice and media id.
; Use new slice format sectors per slice value
ld hl,16384 ; new sectors per slice
ld (sps),hl ; save it
; Update media id for new hard disk format
ld a,10 ; new media id
ld (medid),a ; save it
boot5:
; Adjust LBA offset based on target slice
ld a,(slice) ; get boot slice, A is loop cnt
ld hl,(lba) ; set DE:HL
ld de,(lba+2) ; ... to starting LBA
ld bc,(sps) ; sectors per slice
boot6:
or a ; set flags to check loop cntr
jr z,boot8 ; done if counter exhausted
add hl,bc ; add one slice to low word
jr nc,boot7 ; check for carry
inc de ; if so, bump high word
boot7:
dec a ; dec loop downcounter
jr boot6 ; and loop
boot8:
ld (lba),hl ; save new lba, low word
ld (lba+2),de ; save new lba, high word
@@ -277,7 +212,7 @@ conin:
conout:
ld e,c ; output character in E
ld bc,0180h ; unit 80h (console), func 1 = COUT
jp 0FFF0h
jp 0FFF0h
list:
ld a,85H
halt
@@ -311,7 +246,7 @@ setdma:
call crlf
call phex16
pop hl
endif
ld (dma),bc
@@ -337,18 +272,18 @@ read:
call phex16
ld hl,(lba+0)
call phex16
endif
; Check device type
ld a,(unit) ; get unit
ld c,a ; BIOS Disk Unit in C
ld b,17h ; HBIOS DEVICE function
ld b,BF_DIODEVICE ; HBIOS DEVICE function
rst 08 ; Do it, D=device type
ld a,d ; put in accum
cp 01h ; floppy?
jr nz,read2 ; if not, do LBA i/o
; Floppy I/O
ld de,(sect) ; sector -> de, head(d) becomes zero
ld hl,(trk) ; track -> hl (low bit has head)
@@ -356,7 +291,7 @@ read:
rr l ; ... and into carry
rl d ; carry bit (head) into d
jr read3 ; do the disk i/o
; LBA I/O
read2:
ld hl,(trk) ; get track
@@ -386,7 +321,7 @@ read3:
call phex16
ex de,hl
call phex16
endif
; DE:HL has sector address to read (LBA or CHS)
@@ -401,14 +336,14 @@ diskread:
; Seek to requested sector in DE:HL
push bc ; save unit & count
ld b,012h ; HBIOS func: seek
ld b,BF_DIOSEEK ; HBIOS func: seek
call 0FFF0h ; do it
pop bc ; recover unit & count
jp nz,err_diskio ; handle error
; Read sector(s) into buffer
ld e,b ; transfer count
ld b,013h ; HBIOS func: disk read
ld b,BF_DIOREAD ; HBIOS func: disk read
ld hl,(dma) ; read into info sec buffer
ld a,(0FFE0h) ; get current bank
ld d,a ; put in D
@@ -477,7 +412,7 @@ xmove:
;cin:
; ; Input character from console via HBIOS
; ld c,080H ; console unit to C
; ld b,00H ; HBIOS func: input char
; ld b,BF_CIOIN ; HBIOS func: input char
; call 0FFF0H ; HBIOS reads character
; ld a,e ; To A for return
; ret ; done
@@ -486,7 +421,7 @@ xmove:
; ; Output character to console via HBIOS
; ld e,a ; output char to E
; ld c,080H ; console unit to C
; ld b,01H ; HBIOS func: output char
; ld b,BF_CIOOUT ; HBIOS func: output char
; jp 0FFF0H ; output & return
writestr:
@@ -539,7 +474,7 @@ err:
str_err_prefix db "\r\n\r\n*** ","$"
str_err_nodisk db "Disk unit not available","$"
str_err_noslice db "Disk unit does not support slices","$"
str_err_noslice db "Slice not supported","$"
str_err_diskio db "Disk I/O failure","$"
str_err_sig db "No system image on disk","$"
str_err_api db "HBIOS API failure","$"
@@ -728,7 +663,6 @@ dma ds 2 ; current DMA address
medid ds 1 ; media id
lba ds 4 ; current lba
sps ds 2 ; sectors per slice
ds 64
stack equ $

View File

@@ -35,9 +35,9 @@
extrn ?pderr ; print BIOS disk error header
extrn ?conin,?cono ; con in and out
extrn ?const ; get console status
extrn ?bnkxlt
extrn phex16, phex8, cout, crlf, crlf2
@@ -45,15 +45,18 @@
maclib cpm3.lib
; HBIOS related definitons
include hbios.z80
; common control characters
cr equ 13
lf equ 10
bell equ 7
; Extended Disk Parameter Headers (XDPHs)
; Extended Disk Parameter Headers (XPDHs)
; All DPH entries below are generic. They are updated during
; boot to point to available HBIOS disk unit/slices dynamically.
@@ -186,7 +189,7 @@ dph15: dph 0,dpb$max ; Real DPB filled in at disk login
dw 0, 0 ; LBA Offset
cseg ; DPB must be resident
dpb$max:
dw 64 ; spt: sectors per track
db 5 ; bsh: block shift factor
@@ -288,7 +291,7 @@ dpb_fd144: ; 3.5" DS/HD Floppy Drive (1.44M)
db 2 ; psh: 2 for 512 byte sectors
db 3 ; phm: (512 / 128) - 1
dpb_fd360: ; 5.25" DS/DD Floppy Drive (360K)
dpb_fd360: ; 5.25" DS/DD Floppy Drive (360K)
dw 36 ; spt: sectors per track
db 4 ; bsh: block shift factor
db 15 ; blm: block mask
@@ -370,7 +373,7 @@ dsk$init:
dsk$init1:
; Get bank count of RAM/ROM disk
ld b,0FAh ; HBIOS Peek Function
ld b,BF_SYSPEEK ; HBIOS Peek Function
ld a,(@hbbio) ; HBIOS bank id
ld d,a ; ... goes in D
rst 08 ; Call HBIOS, value in E
@@ -399,9 +402,9 @@ dsk$init3:
dec hl ; subtract 1 for proper DSM value
ld (ix+5),l ; save updated
ld (ix+6),h ; ... DSM value
ret
;ld a,(@rdrv) ; unit being initialized
;ld hl,@bootdu
;cp (hl) ; compare to boot unit
@@ -445,14 +448,13 @@ dsk$login:
;ret ; we have nothing to do in
; simple single density only environment.
;ld a,'L'
;call cout
ld (curdph),de ; save working DPH
ex de,hl ; DPH adr to HL
dec hl ; point to slice
dec hl ; point to slice
ld a,(hl) ; get slice
ld (slice),a ; save it
dec hl ; point to disk unit
@@ -460,194 +462,38 @@ dsk$login:
ld (unit),a ; save it
inc a ; 0FFh -> 000h
jp z,err_ret ; bail out on no disk mapped here
;call media ; update DPH for media
;ret
media:
; Set retry address
ld hl,media
ld (retry$adr),hl
; Sense media to determine media format
ld a,(unit) ; get disk unit
ld c,a ; put in C
ld b,18h ; HBIOS Media function
ld e,1 ; Enable media check/discovery
ld b,BF_EXTSLICE ; HBIOS func: SLICE
ld a,(unit) ; passing boot unit
ld d,a
ld a,(slice) ; and slice
ld e,a
call 0FFF0H ; HBIOS call
jp nz,err_diskio ; handle error
ld a,e ; resultant media id to accum
; Check errors from the Function
cp ERR_NOUNIT ; compare to no unit error
jp z,err_nodisk ; handle no disk err
cp ERR_NOMEDIA ; no media in the device
jp z,err_nodisk ; handle the error
cp ERR_RANGE ; slice is invalid
jp z,err_noslice ; bad slice, handle err
or a ; any other error
jp nz,err_diskio ; handle as general IO error
; Capture the Result
ld a,c ; resultant media id to accum
ld (medid),a ; save media id
or a ; set flags, 0 is no media
jp z,err_nodisk ; handle no media error
; Initialize slice start LBA & sectors per slice
ld hl,0 ; assume slice starts
ld (lba),hl ; ... at LBA offset
set 7,h ; ... of zero
ld (lba+2),hl ; ... w/ LBA access
; Check device type
ld a,(unit) ; get disk unit
ld c,a ; put in C
ld b,17h ; HBIOS func: report device info
call 0FFF0h ; get unit info, device type in D
ld a,d ; device type -> A
cp 01h ; floppy?
jr nz,media1 ; if not, do LBA I/O
ld hl,lba+3 ; point to high order byte
res 7,(hl) ; switch from LBA -> CHS
media1:
ld hl,16640 ; assume legacy value for
ld (sps),hl ; ... sectors per slice
; If not hard disk, skip partition & slice stuff
ld a,(medid) ; get media id
cp 4 ; hard disk?
jp nz,media9 ; if not, jump ahead
; Read MBR
ld de,8000h ; LBA address zero
ld hl,0 ; ... to read first sector
ld bc,mbrsec ; read into MBR buffer
ld (dma),bc ; save
ld a,(0FFE0h) ; get current HBIOS bank
ld (bank),a ; set DMA bank
ld a,(unit) ; get bootunit
ld c,a ; put in C
ld b,013h ; HBIOS func: disk read
call dsk$io ; do it
ret nz ; abort on error
; Check signature
ld hl,(mbrsec+1FEh) ; get signature
ld a,l ; first byte
cp 055h ; should be $55
jr nz,media5 ; if not, no part table
ld a,h ; second byte
cp 0AAh ; should be $AA
jr nz,media5 ; if not, no part table
; Search part table for CP/M entry (type 0x2E)
ld b,4 ; four entries in part table
ld hl,mbrsec+1BEh+4 ; offset of first part type
media3:
ld a,(hl) ; get part type
cp 2Eh ; CP/M partition?
jr z,media4 ; cool, grab the LBA offset
ld de,16 ; part table entry size
add hl,de ; bump to next part type
djnz media3 ; loop thru table
jr media5 ; too bad, no CP/M partition
media4:
; Capture the starting LBA of the CP/M partition we found
ld de,4 ; LBA is 4 bytes after part type
add hl,de ; point to it
ld de,lba ; loc to store lba offset
ld bc,4 ; 4 bytes (32 bits)
ldir ; copy it
; Check that requested slice is "inside" partition.
; Slice size is exactly 16,384 sectors (8mb), so we can just
; right shift partition sector count by 14 bits
ld e,(hl) ; HL points to first byte
inc hl ; ... of 32 bit partition
ld d,(hl) ; ... sector count,
inc hl ; ... load sector count
push de ; ... into DE:HL
ld e,(hl) ; ...
inc hl ; ...
ld d,(hl) ; ...
pop hl ; ... DE:HL = part size in sectors
ld b,2 ; DE = DE:HL >> 2 (tricky!)
call rl32 ; DE = slicecnt
ex de,hl ; HL = slicecnt
ld a,(slice) ; get target slice
ld c,a ; put in C
ld b,0 ; BC := requested slice #
scf ; set carry!
sbc hl,bc ; max slices - slice - 1
jp c,err_noslice ; slice too high, error exit
; For now, it is implied that a slice within a partition
; table will be in the "new" disk format. So, we now
; adjust the sectors per slice and media id.
; Use new slice format sectors per slice value
ld hl,16384 ; new sectors per slice
ld (sps),hl ; save it
; Update media id for new hard disk format
ld a,10 ; new media id
ld (medid),a ; save it
media5:
; Adjust LBA offset based on target slice
ld a,(slice) ; get slice, A is loop cnt
ld hl,(lba) ; set DE:HL
ld de,(lba+2) ; ... to starting LBA
ld bc,(sps) ; sectors per slice
res 7,d ; clear lba mode bit
boot6:
or a ; set flags to check loop cntr
jr z,boot8 ; done if counter exhausted
add hl,bc ; add one slice to low word
jr nc,boot7 ; check for carry
inc de ; if so, bump high word
boot7:
dec a ; dec loop downcounter
jr boot6 ; and loop
boot8:
; LBA offset of desired slice is now in DE:HL.
; Need to check if the slice is beyond capacity of media.
; If lba_off + sps >= dsk_cap, error!
; Save lba_off
push de ; msw
push hl ; lsw
; Add sps to compute lba_req
ld bc,(sps) ; sectors per slice
add hl,bc ; add one slice to low word
jr nc,dsk_mbr9 ; check for carry
inc de ; if so, bump high word
dsk_mbr9:
; Save cap_req
ld (cap_req),hl ; lsw
ld (cap_req+2),de ; msw
; Get dsk_cap (de:hl)
ld b,1Ah ; hbios disk capacity func
ld a,(unit) ; disk unit number
ld c,a ; ... into c
rst 08 ; hbios call (de:hl = capacity)
; Save dsk_cap (de:hl)
push de ; save dsk_cap (msw)
push hl ; save dsk_cap (lsw)
; Check dsk_cap >= cap_req, cf set on overflow
; No need save actual result
or a ; clear carry for sbc
pop hl ; dsk_cap lsw
ld de,(cap_req) ; cap_req lsw
sbc hl,de ; dsk_cap - lba_req (lsw)
pop hl ; dsk_cap msw
ld de,(cap_req+2) ; cap_req msw
sbc hl,de ; dsk_cap - lba_req (msw)
; Restore lba_off
pop hl ; lsw
pop de ; msw
; Abort on overflow with error!
jp c,err_noslice ; slice too high, error exit
; Finalize slice lba
BIT 7,B ; Is the floppy Disk Attribute Set
jr nz,media8 ; if it is Floppy; Skip Setting LBA
set 7,d ; set LBA access flag
media8:
ld (lba),hl ; save new lba, low word
ld (lba+2),de ; save new lba, high word
@@ -698,23 +544,23 @@ media10:
; if necessary, then return an error code in <A>
dsk$read:
ld a,13h ; HBIOS disk read function
ld a,BF_DIOREAD ; HBIOS disk read function
ld (func),a ; save it
jr dsk$rw ; common disk read/write code
dsk$write:
ld a,14h ; HBIOS disk write function
ld a,BF_DIOWRITE ; HBIOS disk write function
ld (func),a ; save it
jr dsk$rw ; common disk read/write code
dsk$rw:
; Common disk read/write routine
; Assumes func is set to HBIOS read or write
; Set retry address
ld hl,dsk$rw$retry
ld (retry$adr),hl
; Save XDPH address
ld (curdph),de ; save to curdph
@@ -743,12 +589,12 @@ dsk$rw$retry:
rr l ; ... and into carry
rl d ; carry bit (head) into d
jr dsk$rw9 ; do the disk I/O
dsk$rw2:
; LBA I/O
push de ; save hiword of LBA
push hl ; save loword of LBA
; Get track and shift into correct bits
ld hl,(@trk) ; get track
ld de,0 ; clear hiword
@@ -767,7 +613,7 @@ dsk$rw2:
pop bc ; lba offset hiword
adc hl,bc ; add w/ carry to cur hiword
ex de,hl ; swap back
dsk$rw9:
; DE:HL has sector address to read (LBA or CHS)
ld bc,(@dma) ; get dma address
@@ -791,7 +637,7 @@ dsk$io:
; Seek to requested sector in DE:HL
push bc ; save func & unit
ld b,012h ; HBIOS func: seek
ld b,BF_DIOSEEK ; HBIOS func: seek
call 0FFF0h ; do it
pop bc ; recover func & unit
jp nz,err_diskio ; handle error
@@ -824,7 +670,7 @@ mult8_loop:
mult8_noadd:
djnz mult8_loop
ret
rl32:
; Left shift DE:HL by B bits (B > 0)
or a ; clear carry
@@ -834,7 +680,7 @@ rl32:
rl d ; rotate D thru carry
djnz rl32 ; loop B times
ret ; done
cin$echo: ; get console input, echo it, and shift to upper case
call ?const ; check for char
or a ; set flags
@@ -851,7 +697,7 @@ cin$echo1:
ret c ; done if carry
sub 'a' - 'A' ; make upper case
ret ; and done
; call ?const ! ora a ! jz u$c1 ; see if any char already struck
; call ?conin ! jmp u$conin$echo ; yes, eat it and try again
;u$c1:
@@ -872,7 +718,7 @@ err_perm:
call prt_err
jr err_ret
err_diskio:
cp -10 ; HBIOS read only error
cp ERR_READONLY ; HBIOS read only error
jr z,err_rdonly ; if so, handle special
ld a,(@ermde) ; get error mode
cp 0FFh ; FFh means suppress
@@ -916,9 +762,6 @@ medid db 0 ; working media id value
unit db 0 ; working disk unit num
slice db 0 ; working slice num
lba dw 0,0 ; working lba
sps dw 0 ; sectors per slice
cap_req dw 0,0 ; lba cap required for slice
mbrsec ds 512 ; MBR sector buffer
dma dw 0 ; current DMA address
bank db 0 ; HBIOS DMA bank
func db 0 ; HBIOS function

90
Source/CPM3/hbios.z80 Normal file
View File

@@ -0,0 +1,90 @@
;
BF_CIO EQU 000h
BF_CIOIN EQU BF_CIO + 0 ; CHARACTER INPUT
BF_CIOOUT EQU BF_CIO + 1 ; CHARACTER OUTPUT
BF_CIOIST EQU BF_CIO + 2 ; CHARACTER INPUT STATUS
BF_CIOOST EQU BF_CIO + 3 ; CHARACTER OUTPUT STATUS
BF_CIOINIT EQU BF_CIO + 4 ; INIT/RESET DEVICE/LINE CONFIG
BF_CIOQUERY EQU BF_CIO + 5 ; REPORT DEVICE/LINE CONFIG
BF_CIODEVICE EQU BF_CIO + 6 ; REPORT DEVICE INFO
;
;
BF_DIO EQU 010h
BF_DIOSTATUS EQU BF_DIO + 0 ; DISK STATUS
BF_DIORESET EQU BF_DIO + 1 ; DISK RESET
BF_DIOSEEK EQU BF_DIO + 2 ; DISK SEEK
BF_DIOREAD EQU BF_DIO + 3 ; DISK READ SECTORS
BF_DIOWRITE EQU BF_DIO + 4 ; DISK WRITE SECTORS
BF_DIOVERIFY EQU BF_DIO + 5 ; DISK VERIFY SECTORS
BF_DIOFORMAT EQU BF_DIO + 6 ; DISK FORMAT TRACK
BF_DIODEVICE EQU BF_DIO + 7 ; DISK DEVICE INFO REPORT
BF_DIOMEDIA EQU BF_DIO + 8 ; DISK MEDIA REPORT
BF_DIODEFMED EQU BF_DIO + 9 ; DEFINE DISK MEDIA
BF_DIOCAP EQU BF_DIO + 10 ; DISK CAPACITY REPORT
BF_DIOGEOM EQU BF_DIO + 11 ; DISK GEOMETRY REPORT
;
BF_EXT EQU 0E0h
BF_EXTSLICE EQU BF_EXT + 0 ; SLICE CALCULATION (WAS BF_SYSGET_DIOMED)
;
BF_SYS EQU 0F0h
BF_SYSRESET EQU BF_SYS + 0 ; SOFT RESET HBIOS
BF_SYSVER EQU BF_SYS + 1 ; GET HBIOS VERSION
BF_SYSSETBNK EQU BF_SYS + 2 ; SET CURRENT BANK
BF_SYSGETBNK EQU BF_SYS + 3 ; GET CURRENT BANK
BF_SYSSETCPY EQU BF_SYS + 4 ; BANK MEMORY COPY SETUP
BF_SYSBNKCPY EQU BF_SYS + 5 ; BANK MEMORY COPY
BF_SYSALLOC EQU BF_SYS + 6 ; ALLOC HBIOS HEAP MEMORY
BF_SYSFREE EQU BF_SYS + 7 ; FREE HBIOS HEAP MEMORY
BF_SYSGET EQU BF_SYS + 8 ; GET HBIOS INFO
BF_SYSSET EQU BF_SYS + 9 ; SET HBIOS PARAMETERS
BF_SYSPEEK EQU BF_SYS + 10 ; GET A BYTE VALUE FROM ALT BANK
BF_SYSPOKE EQU BF_SYS + 11 ; SET A BYTE VALUE IN ALT BANK
BF_SYSINT EQU BF_SYS + 12 ; MANAGE INTERRUPT VECTORS
;
; 2 BYTE FUNCTION/SUBFUNCTION : BC_ => BIOS CALL -> LOAD TO BC REGISTER
;
BC_SYSGET_CIOCNT EQU 0F800h ; GET CHAR UNIT COUNT
BC_SYSGET_CIOFN EQU 0F801h ; GET CIO UNIT FN/DATA ADR
BC_SYSGET_DIOCNT EQU 0F810h ; GET DISK UNIT COUNT
BC_SYSGET_DIOFN EQU 0F811h ; GET DIO UNIT FN/DATA ADR
BC_SYSGET_RTCCNT EQU 0F820h ; GET RTC UNIT COUNT
BC_SYSGET_DSKYCNT EQU 0F830h ; GET DSKY UNIT COUNT
BC_SYSGET_VDACNT EQU 0F840h ; GET VDA UNIT COUNT
BC_SYSGET_VDAFN EQU 0F841h ; GET VDA UNIT FN/DATA ADR
BC_SYSGET_SNDCNT EQU 0F850h ; GET VDA UNIT COUNT
BC_SYSGET_SNDFN EQU 0F851h ; GET SND UNIT FN/DATA ADR
BC_SYSGET_TIMER EQU 0F8D0h ; GET CURRENT TIMER VALUE
BC_SYSGET_SECS EQU 0F8D1h ; GET CURRENT SECONDS VALUE
BC_SYSGET_BOOTINFO EQU 0F8E0h ; GET BOOT INFORMATION
BC_SYSGET_CPUINFO EQU 0F8F0h ; GET CPU INFORMATION
BC_SYSGET_MEMINFO EQU 0F8F1h ; GET MEMORY CAPACTITY INFO
BC_SYSGET_BNKINFO EQU 0F8F2h ; GET BANK ASSIGNMENT INFO
BC_SYSGET_CPUSPD EQU 0F8F3h ; GET CLOCK SPEED & WAIT STATES
BC_SYSGET_PANEL EQU 0F8F4h ; GET FRONT PANEL SWITCHES VAL
BC_SYSGET_APPBNKS EQU 0F8F5h ; GET APP BANK INFORMATION
;
BC_SYSSET_TIMER EQU 0F9D0h ; SET TIMER VALUE
BC_SYSSET_SECS EQU 0F9D1h ; SET SECONDS VALUE
BC_SYSSET_BOOTINFO EQU 0F9E0h ; SET BOOT INFORMATION
BC_SYSSET_CPUSPD EQU 0F9F3h ; SET CLOCK SPEED & WAIT STATES
BC_SYSSET_PANEL EQU 0F9F4h ; SET FRONT PANEL LEDS
;
;
;
ERR_NONE EQU 0 ; SUCCESS
;
ERR_UNDEF EQU -1 ; UNDEFINED ERROR
ERR_NOTIMPL EQU -2 ; FUNCTION NOT IMPLEMENTED
ERR_NOFUNC EQU -3 ; INVALID FUNCTION
ERR_NOUNIT EQU -4 ; INVALID UNIT NUMBER
ERR_NOMEM EQU -5 ; OUT OF MEMORY
ERR_RANGE EQU -6 ; PARAMETER OUT OF RANGE
ERR_NOMEDIA EQU -7 ; MEDIA NOT PRESENT
ERR_NOHW EQU -8 ; HARDWARE NOT PRESENT
ERR_IO EQU -9 ; I/O ERROR
ERR_READONLY EQU -10 ; WRITE REQUEST TO READ-ONLY MEDIA
ERR_TIMEOUT EQU -11 ; DEVICE TIMEOUT
ERR_BADCFG EQU -12 ; INVALID CONFIGURATION
ERR_INTERNAL EQU -13 ; INTERNAL ERROR

View File

@@ -403,8 +403,8 @@ CP/M, while others rely on particular hardware or
aspects of RomWBW itself.
Those that are written specific to RomWBW include: ASSIGN,
CPUSPD, FDU, FORMAT, FLASH, FDISK80, MODE, RTC, SYSCOPY,
TALK, TIMER, and XM.
CPUSPD, FDU, FORMAT, FLASH, FDISK80, MODE, REBOOT, RTC, SYSCOPY,
TALK, TIMER, XM, and COPYSL.
The CP/M utilities supplied with RomWBW warrant more detailed descriptions,
and so are described in some detail in their own section
@@ -896,6 +896,7 @@ incuded within RomWBW may be found with in the Binary/Apps directory.
| ----------- | :------: | :--------: |
| ASSIGN | Yes | Yes |
| CLRDIR | Yes | Yes |
| COPYSL | No | Yes |
| CPUSPD | Yes | Yes |
| FAT | No | Yes |
| FDISK80 | Yes | Yes |
@@ -904,6 +905,7 @@ incuded within RomWBW may be found with in the Binary/Apps directory.
| FORMAT | Yes | Yes |
| HTALK | Yes | Yes |
| MODE | Yes | Yes |
| REBOOT | Yes | Yes |
| RTC | Yes | Yes |
| SURVEY | Yes | Yes |
| SYSCOPY | Yes | Yes |
@@ -917,7 +919,7 @@ incuded within RomWBW may be found with in the Binary/Apps directory.
All of the CP/M applications may be found in the RomWBW Binary/Apps directory
and a user may copy those they need to their own customised disk/slice.
Independantly of whether the CP/M system was started from ROM or a boot disk,
Independently of whether the CP/M system was started from ROM or a boot disk,
such as a floppy disk or a slice on a CF or uSD memory card, applications
may be located on and executed from either the ROM-disk itself or from other media.
There are multiple disk images available for CP/M (eg floppy, legacy hard-disk and new
@@ -1138,7 +1140,8 @@ reinitialised and the data previously stored will be lost.
| Disk-based |Yes|
The `CPUSPD` application is used to change the running speed and wait
states of a RomWBW system.
states of a RomWBW system. It can also be used to invoke a warm or
cold reboot of the system.
The functionality is highly dependent on the capabilities of your system.
@@ -1150,8 +1153,10 @@ configuration.
#### Syntax
| `CPUSPD [`*`<speed>`*`[,[`*`<memws>`*`][,[`*`<iows>`*`]]]`
| `CPUSPD (W)armBoot`
| `CPUSPD (C)oldBoot`
*`<speed>`* is one of HALF, FULL, or DOUBLE.
*`<speed>`* is one of (H)alf, (F)ull, (D)ouble, or (Q)uad.
*`<memws>`* is a number specifying the desired memory wait states.
*`<iows>`* is a number specifying the desired I/O wait states.
@@ -1203,6 +1208,96 @@ The source code is provided in the RomWBW distribution.
`\clearpage`{=latex}
## COPYSL
| COPYSL | |
| --------------------|---|
| ROM-based |No |
| Disk-based |Yes|
The purpose of this utility is to allow the copying of whole disk slices
from one disk slice to another slice
This tool is only supported by RomWBW HBIOS, it uses HDIOS for all its
disk IO. UNA UBIOS is not supported by this tool.
This tool is running on CP/M 2.2 or 3.0 and has access to full 64kb of
RAM, with a minimum of 48kb TPA
This tool only works with hard disk devices, other media types like
floppy, are not supported at this time. This tool works across different
hard disk device types, even of different physical type
Both hd1k and hd512 are fully supported, however copying from one layout
type to the other is not supported.
During operation data is copied in a single read/write pass, data is not
verified by default. If there is a write error, it will be reported, and
operation will stop.
#### Syntax
This tool operates at the disk level via RomWBW, thus all disk identifiers
are in the RomWBW \<disk\>.\<unit\> format.
The syntax (similar to copy) for the command is:
| `COPYSL `*\<destunit\>*[`.`*\<slice\>*]`=`*\<srcunit\>*[`.`*\<slice\>*] [`/`*\<options\>*]
E.g.
| COPYSL 3.3=2.10 /U
Means copy from slice 10 on disk 2, onto disk 3 slice 3. This is in unattended
mode, so you will not be asked to confirm the copy operation.
#### Options
F - Full disk copy. Copies the complete disk slice, all sectors. \
U - Unattended. Will complete copy without confirmation from the user. \
V - Verify. Does an additional read and verify after write.
#### Usage
When run COPYSL will perform command line argument validation and display
an error if they are illegal. Also any disk IO errors will cause COPYSL
to exit.
When specifying slice number(s) a check is made that the slice number is
valid, i.e. not too large that it would extend past the end of the
partition (hd1k), or the end of the media (hd512). For hd512 a check is
also performed to ensure that the slice would not extend into the first
defined partition.
The copy operation will be faster if the source disk has been formatted
with the CP/M file system, since during copy the CP/M directory is scanned,
and unused blocks are not copied.
If a filesystem is not found, (or the /F option is chosen) all data is
copied.
Verification (if option chosen) will do an aditional read (after write)
and compare the data read matches what was written. This compare is only
on every 32'nd byte. This is done for efficiency.
During copy dots "." will be displayed to indicate progress of the copy.
Each "." represents 16 kBytes of data. Each line of "." 's is 1 mBytes.
#### Notes
This tool has been tested on both SD and CF media types and with hd1k and hd512
formatted media.
You cannot copy slices between different hard disk formats (hd512 and
hd1k) because the slices are incompatible.
#### Etymology
The `COPYSL` application was custom written for RomWBW and contributed
by Mark Pruden.
`\clearpage`{=latex}
## FAT
| FAT | |
@@ -1659,6 +1754,50 @@ provided in the RomWBW distribution.
`\clearpage`{=latex}
## REBOOT
| REBOOT | |
| --------------------|---|
| ROM-based |Yes|
| Disk-based |Yes|
The `REBOOT` application is used to restart a running system from an
operating system prompt. It can invoke either a warm or cold restart
via command line switches.
#### Syntax
| `REBOOT /W`
| `REBOOT /C`
| `REBOOT /?`
- /C initiates a cold restart
- /W initiates a warm restart
- /? displays command line usage
#### Usage
Entering `REBOOT` with no parameters will display the usage and
version information. Use /C or /W to immediately initiate a
cold or warm restart.
#### Notes
A warm restart just returns to the Boot Loader menu.
A cold restart will reinitialize the system as though power had
been recycled.
#### Etymology
The `REBOOT` application was custom written for RomWBW by MartinR. All
of the hardware interface code is specific to RomWBW and the application
will not operate correctly on non-RomWBW systems.
The source code is provided in the RomWBW distribution.
`\clearpage`{=latex}
## RTC
| RTC | |

View File

@@ -2,8 +2,12 @@
setlocal
::
:: NOTE: Pandoc and Latex (MiKTeX or TexLive) must be installed
:: and available on commandline for this build to work!!!
:: NOTE: Pandoc, LuaLatex (MiKTeX or TexLive), and Roboto Font
:: must be installed and available on commandline for this build to work!!!
::
:: - Pandoc (https://pandoc.org/)
:: - MiKTeX (https://miktex.org/)
:: - Install Roboto font from MiKTeX Console
::
set TOOLS=..\..\Tools
@@ -11,12 +15,12 @@ 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 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
@@ -35,9 +39,6 @@ echo.
echo Processing document %1...
::gpp -o %1.tmp %1.md
::gpp -o %1.tmp -U "\\" "" "{" "}{" "}" "{" "}" "#" "" %1.md
::gpp -o %1.tmp -U "" "" "(" "," ")" "(" ")" "#" "" -M "#" "\n" " " " " "\n" "(" ")" %1.md
gpp -o %1.tmp -U "$" "$" "{" "}{" "}$" "{" "}" "@@@" "" -M "$" "$" "{" "}{" "}$" "{" "}" %1.md || exit /b
::pandoc %1.tmp -f markdown -t latex -s -o %1.tex --default-image-extension=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

@@ -1,13 +1,19 @@
#
# NOTE: gpp, Pandoc, and Latex (MiKTeX or TexLive) must be installed
# NOTE: gpp, Pandoc, LuaLatex (MiKTeX or TexLive), and Roboto Font must be installed
# 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"
#
# On MacOS:
# brew install gpp pandoc texlive
# brew install --cask font-roboto
#
# On Ubuntu Linux:
# apt install gpp pandoc texlive texlive-luatex texlive-fonts-extra
#
OBJECTS = ReadMe.gfm ReadMe.txt UserGuide.pdf SystemGuide.pdf Applications.pdf Catalog.pdf Errata.pdf
# DEST = ../../Doc
TOOLS = ../../Tools
OTHERS = *.tmp
include $(TOOLS)/Makefile.inc
all :: deploy
@@ -37,4 +43,4 @@ deploy :
cp SystemGuide.pdf "../../Doc/RomWBW System Guide.pdf"
cp Applications.pdf "../../Doc/RomWBW Applications.pdf"
cp Catalog.pdf "../../Doc/RomWBW Disk Catalog.pdf"
cp Errata.pdf "../../Doc/RomWBW Errata.pdf"
cp Errata.pdf "../../Doc/RomWBW Errata.pdf"

View File

@@ -176,8 +176,8 @@ please let me know if I missed you!
* Tasty Basic is a product of Dimitri Theulings.
* Dean Netherton contributed the sound driver interface and
the SN76489 sound driver.
* Dean Netherton contributed eZ80 CPU support, the sound driver
interface, and the SN76489 sound driver.
* The RomWBW Disk Catalog document was produced by Mykl Orders.
@@ -187,7 +187,10 @@ please let me know if I missed you!
compendium.
* Martin R has provided substantial help reviewing and improving the
User Guide.
User Guide and Applications documents.
* Mark Pruden has also contributed a great deal of content to the
User Guide as well as the COPYSL utility.
* Jacques Pelletier has contributed the DS1501 RTC driver code.

Binary file not shown.

View File

@@ -126,6 +126,7 @@ execution.
![Bank Switched Memory Layout](Graphics/BankSwitchedMemory){ width=100% }
## Bank Id
RomWBW utilizes a specific assignment of memory banks for dedicated
@@ -262,6 +263,137 @@ Common Bank:
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.
## Mapping to Media ID
HBIOS has a definition of "Media ID", which defines the type and physical
properties of disk media provided by an underlying storage device. For a
complete list of Media ID's please see the following section
[Disk Input/Output (DIO)]
There are two important Media ID's relating to Hard Disk Layouts:
| **Media** | **ID** | **Format / Meaning** |
|------------|-------:|-------------------------------------------------------------|
| MID_HD | 4 | Classic Disk Layout (hd512) *--and--* HBIOS Hard Disk Drive |
| MID_HDNEW | 10 | Modern Disk Layout (hd1k) |
HBIOS typically does not understand the format of data on a device,
instead just treating all hard disks as raw sectors. `MID_HD` is the typical
Media ID used by HBIOS to describe high capaity hard disk media
When the Modern Disk Layout was added, the `MID_HDNEW`, was added to
differentiate (at the oerating system level) between the Classic and Modern layouts.
However HBIOS itself typically does NOT make this distinction, since the use
of these two formats is determined by the operating system based on the
partition table on the media.
There are two important HBIOS functions that deal with Media ID.
* [Function 0x18 -- Disk Media (DIOMEDIA)]
* [Function 0xE0 -- Calculate Slice (EXTSLICE)]
# System Boot Process
A multi-phase boot strategy is employed. This is necessary because at
@@ -529,23 +661,24 @@ All character units are assigned a Device Type ID which indicates
the specific hardware device driver that handles the unit. The table
below enumerates these values.
| **Device Type** | **ID** | **Description** | **Driver** |
|-----------------|-------:|------------------------------------------|------------|
| CIODEV_UART | 0x00 | 16C550 Family Serial Interface | uart.asm |
| CIODEV_ASCI | 0x01 | Z180 Built-in Serial Ports | asci.asm |
| CIODEV_TERM | 0x02 | Terminal | ansi.asm |
| CIODEV_PRPCON | 0x03 | PropIO Serial Console Interface | prp.asm |
| CIODEV_PPPCON | 0x04 | ParPortProp Serial Console Interface | ppp.asm |
| CIODEV_SIO | 0x05 | Zilog Serial Port Interface | sio.asm |
| CIODEV_ACIA | 0x06 | MC68B50 Asynchronous Interface | acia.asm |
| CIODEV_PIO | 0x07 | Zilog Parallel Interface Controller | pio.asm |
| CIODEV_UF | 0x08 | FT232H-based ECB USB FIFO | uf.asm |
| CIODEV_DUART | 0x09 | SCC2681 Family Dual UART | duart.asm |
| CIODEV_Z2U | 0x0A | Zilog Z280 Built-in Serial Ports | z2u.asm |
| CIODEV_LPT | 0x0B | Parallel I/O Controller | lpt.asm |
| CIODEV_ESPCON | 0x0B | ESP32 VGA Console | esp.asm |
| CIODEV_ESPSER | 0x0B | ESP32 Serial Port | esp.asm |
| CIODEV_SCON | 0x0B | S100 Console | scon.asm |
| **Device Type** | **ID** | **Description** | **Driver** |
|-----------------|-------:|------------------------------------------|--------------|
| CIODEV_UART | 0x00 | 16C550 Family Serial Interface | uart.asm |
| CIODEV_ASCI | 0x01 | Z180 Built-in Serial Ports | asci.asm |
| CIODEV_TERM | 0x02 | Terminal | ansi.asm |
| CIODEV_PRPCON | 0x03 | PropIO Serial Console Interface | prp.asm |
| CIODEV_PPPCON | 0x04 | ParPortProp Serial Console Interface | ppp.asm |
| CIODEV_SIO | 0x05 | Zilog Serial Port Interface | sio.asm |
| CIODEV_ACIA | 0x06 | MC68B50 Asynchronous Interface | acia.asm |
| CIODEV_PIO | 0x07 | Zilog Parallel Interface Controller | pio.asm |
| CIODEV_UF | 0x08 | FT232H-based ECB USB FIFO | uf.asm |
| CIODEV_DUART | 0x09 | SCC2681 Family Dual UART | duart.asm |
| CIODEV_Z2U | 0x0A | Zilog Z280 Built-in Serial Ports | z2u.asm |
| CIODEV_LPT | 0x0B | Parallel I/O Controller | lpt.asm |
| CIODEV_ESPCON | 0x0B | ESP32 VGA Console | esp.asm |
| CIODEV_ESPSER | 0x0B | ESP32 Serial Port | esp.asm |
| CIODEV_SCON | 0x0B | S100 Console | scon.asm |
| CIODEV_EZ80UART | 0x11 | eZ80 Built-in UART0 Interface | ez80uart.asm |
Character devices can usually be configured with line characteristics
such as speed, framing, etc. A word value (16 bit) is used to describe
@@ -738,20 +871,24 @@ more of the defined media types.
| MID_MDROM | 1 | ROM Drive |
| MID_MDRAM | 2 | RAM Drive |
| MID_RF | 3 | RAM Floppy (LBA) |
| MID_HD512 | 4 | Hard Disk (LBA) w/ 512 directory entries |
| MID_HD | 4 | Hard Disk (LBA) w/ 512 directory entries |
| MID_FD720 | 5 | 3.5" 720K Floppy |
| MID_FD144 | 6 | 3.5" 1.44M Floppy |
| MID_FD360 | 7 | 5.25" 360K Floppy |
| MID_FD120 | 8 | 5.25" 1.2M Floppy |
| MID_FD111 | 9 | 8" 1.11M Floppy |
| MID_HD1K | 10 | Hard Disk (LBA) w/ 1024 directory entries |
| MID_HDNEW | 10 | Hard Disk (LBA) w/ 1024 directory entries |
**NOTE**: HBIOS typically does not actually differentiate between MID_HD and
MID_HDNEW, it will generally only use MID_HD.
See the section [Mapping to Media ID] for information on this.
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)
@@ -964,6 +1101,13 @@ 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_HD for hard disk
devices. See the section [Mapping to Media ID] for information on this.
To determine if an HD1K formatted partition exists on the hard disk
please see the following function.
[Function 0xE0 -- Calculate Slice (EXTSLICE)]
### Function 0x19 -- Disk Define Media (DIODEFMED)
| **Entry Parameters** | **Returned Values** |
@@ -997,7 +1141,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 |
@@ -1007,7 +1151,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.
@@ -1024,14 +1172,15 @@ more than one at a time. The RTC unit is assigned a Device Type ID
which indicates the specific hardware device driver that handles the
unit. The table below enumerates these values.
| **Device Type** | **ID** | **Description** | **Driver** |
|-----------------|-------:|------------------------------------------|------------|
| RTCDEV_DS | 0x00 | Maxim DS1302 Real-Time Clock w/ NVRAM | dsrtc.asm |
| RTCDEV_BQ | 0x01 | BQ4845P Real Time Clock | bqrtc.asm |
| RTCDEV_SIMH | 0x02 | SIMH Simulator Real-Time Clock | simrtc.asm |
| RTCDEV_INT | 0x03 | Interrupt-based Real Time Clock | intrtc.asm |
| RTCDEV_DS7 | 0x04 | Maxim DS1307 PCF I2C RTC w/ NVRAM | ds7rtc.asm |
| RTCDEV_RP5 | 0x05 | Ricoh RPC01A Real-Time Clock w/ NVRAM | rp5rtc.asm |
| **Device Type** | **ID** | **Description** | **Driver** |
|-----------------|-------:|------------------------------------------|-------------|
| RTCDEV_DS | 0x00 | Maxim DS1302 Real-Time Clock w/ NVRAM | dsrtc.asm |
| RTCDEV_BQ | 0x01 | BQ4845P Real Time Clock | bqrtc.asm |
| RTCDEV_SIMH | 0x02 | SIMH Simulator Real-Time Clock | simrtc.asm |
| RTCDEV_INT | 0x03 | Interrupt-based Real Time Clock | intrtc.asm |
| RTCDEV_DS7 | 0x04 | Maxim DS1307 PCF I2C RTC w/ NVRAM | ds7rtc.asm |
| RTCDEV_RP5 | 0x05 | Ricoh RPC01A Real-Time Clock w/ NVRAM | rp5rtc.asm |
| RTCDEV_EZ80 | 0x07 | eZ80 on-chip RTC | ez80rtc.asm |
The time functions to get and set the time (RTCGTM and RTCSTM) require a
6 byte date/time buffer in the following format. Each byte is BCD
@@ -1160,35 +1309,22 @@ used.
## Display Keypad (DSKY)
The Display Keypad functions provide read/write access to a segment
style display and associated hex keypad.
The Display Keypad functions provide access to a segment or LCD
style display and associated optional keypad
HBIOS only supports a single DSKY device since there is no reason to have
more than one at a time. The DSKY unit is assigned a Device Type ID
which indicates the specific hardware device driver that handles the
unit. The table below enumerates these values.
HBIOS only supports a single DSKY device since there is no reason to
have more than one at a time. If the system contains multiple DSKY
devices, only the first device discovered will be used. The DSKY unit
is assigned a Device Type ID which indicates the specific hardware
device driver that handles the unit. The table below enumerates these
values.
| **Device Type** | **ID** | **Description** | **Driver** |
|-----------------|-------:|------------------------------------------|------------|
| DSKYDEV_ICM | 0x01 | Original ICM7218 based DSKY | icm.asm |
| DSKYDEV_PKD | 0x02 | Next Gen Intel P8279 based DSKY | pkd.asm |
When segment display function encodes the display data in a byte per
character format. Currently, all segment displays are exactly
8 charadcters and this is assumed in API calls. The encoding of each
byte is as shown below:
```
+---01---+
| |
20 02
| |
+---40---+
| |
10 04
| |
+---08---+ 80
```
| **Device Type** | **ID** | **Description** | **Driver** |
|--------------------|-------:|---------------------------------------|------------|
| DSKYDEV_ICM | 0x01 | Original ICM7218 based DSKY | icm.asm |
| DSKYDEV_PKD | 0x02 | Next Gen Intel P8279 based DSKY | pkd.asm |
| DSKYDEV_GM7303 | 0x03 | GM7303 LCD Display + Keypad | gm7303.asm |
| DSKYDEV_LCD | 0x04 | HD44780-based LCD Display | lcd.asm |
The keypad keys are identified by the following key ids. Not all
keypads will contain all keys.
@@ -1274,10 +1410,21 @@ The Status (A) is a standard HBIOS result code.
| HL: Buffer Address | |
Display the segment-encoded values on the segment display. The encoding
is defined at the start of this section. The entire displa is updated
and it is assumed that an 8 character buffer will be pointed to by HL.
The buffer must reside in high memory.
The Status (A) is a standard HBIOS result code.
uses a small alphabet as defined below. The actual representation of a
character is determined by the driver. The entire display is updated
and it is assumed that an 8 character buffer will be pointed to by HL.
The buffer must reside in high memory. The Status (A) is a standard
HBIOS result code.
| | | | |
|---------------|---------------|---------------|---------------|
| 0x00: '0' | 0x01: '1' | 0x02: '2' | 0x03: '3' |
| 0x04: '4' | 0x05: '5' | 0x06: '6' | 0x07: '7' |
| 0x08: '8' | 0x09: '9' | 0x0A: 'A' | 0x0B: 'B' |
| 0x0C: 'C' | 0x0D: 'D' | 0x0E: 'E' | 0x0F: 'F' |
| 0x10: ' ' | 0x11: '-' | 0x12: '.' | 0x13: 'p' |
| 0x14: 'o' | 0x15: 'r' | 0x16: 't' | 0x17: 'A' |
| 0x18: 'd' | 0x19: 'r' | 0x1A: 'G' | |
### Function 0x35 -- DSKY Keypad LEDs (DSKYKEYLEDS)
@@ -1290,9 +1437,8 @@ Light the LEDs for the keypad keys according to the
bitmap contained in the buffer pointed to by HL. The buffer
must be located in high memory and is assumed to be 8 bytes.
At this time, the bitmap is specific to the PKD hardware.
This function is ignored by the ICM hardware.
The Status (A) is a standard HBIOS result code.
At this time, the bitmap is specific to the PKD hardware and will be
ignored by all other hardware.
### Function 0x36 -- DSKY Status LED (DSKYSTATLED)
@@ -1306,8 +1452,8 @@ Set or clear the status LED specified in D. The state of
the LED is contained in E. If E=0, the LED will be turned
off. If E=1, the LED will be turned on.
This function is specific to the PKD hardware. It will be ignored
by the ICM hardware.
This function is specific to the PKD hardware and will be ignored
by all other hardware.
The Status (A) is a standard HBIOS result code.
### Function 0x37 -- DSKY Beep (DSKYBEEP)
@@ -1348,6 +1494,29 @@ servicing the specified unit. Both of these values are considered
driver specific. Refer to the associated hardware driver for the values
used.
### Function 0x39 -- DSKY Device (DSKYMESSAGE)
| **Entry Parameters** | **Returned Values** |
|----------------------------------------|----------------------------------------|
| B: 0x39 | A: Status |
| C: Message ID | |
Instructs the display to show a textual representation of the associated
message on the display. The IDs are defined in std.asm.
### Function 0x3A -- DSKY Device (DSKYEVENT)
| **Entry Parameters** | **Returned Values** |
|----------------------------------------|----------------------------------------|
| B: 0x3A | A: Status |
| C: Event ID | |
Instructs the display to update itself in response to an internal
HBIOS state change. At this time the the events are:
0: CPU Speed Change \
1: Disk Activity
`\clearpage`{=latex}
## Video Display Adapter (VDA)
@@ -2051,6 +2220,51 @@ approximately B5.
`\clearpage`{=latex}
## Extension (EXT)
Helper (extension) functions that are not a core part of a BIOS.
### Function 0xE0 -- Calculate Slice (EXTSLICE)
| **Entry Parameters** | **Returned Values** |
|----------------------------------------|----------------------------------------|
| B: 0xE0 | A: Status |
| D: Disk Unit | B: Device Attributes |
| E: Slice | C: Media ID |
| | DEHL: Sector Address |
Report the Media ID (C), and Device Attributes (B) for the for media in the
specified Disk Unit (D), and for hard disks the absolute Sector offset to the
start of the Slice (E). The Status (A) is a standard HBIOS result code.
This function extends upon [Function 0x18 -- Disk Media (DIOMEDIA)] for hard
disk media by scanning for a partition to determine if the disk uses HD512
or HD1K, correctly reporting MID_HD or MID_HDNEW respectively.
See the folowing for some background [Mapping to Media ID]
It will also return the sector number of the first sector in the
slice if the slice number is valid. If the slice number is invalid
(it wont fix on the media) an error will be returned.
The slice calculation is performed by considering the partition start
(if it exists), the size of a slice for the given format type, and ensuring
that the slice fits within the media or partition size, taking into
consideration other partitions that may exist.
The Device Attributes (B) are the same as defined in
[Function 0x17 -- Disk Device (DIODEVICE)]
If the Unit specified is not a hard disk the Media ID will be returned and
the slice parameter ignored. If there is no media in device, or the slice
number is invaid (Parameter Out Of Range) the function will return an error status.
**NOTE:
This function was placed in HBIOS to be shared between the diffeent CP/M
varients supported by RomWBW. It is not strictly a BIOS function,
and may be moved in future.
`\clearpage`{=latex}
## System (SYS)
### Function 0xF0 -- System Reset (SYSRESET)
@@ -2095,7 +2309,7 @@ The Version (DE)number is encoded as BCD where the 4 digits are:
[Major Version][Minor Version][Patch Level][Build Number]
So, for example, a Version (L) number of 0x3102 would indicate
So, for example, a Version (DE) number of 0x3102 would indicate
version 3.1.0, build 2.
The hardware Platform (L) is identified as follows:
@@ -2119,6 +2333,7 @@ The hardware Platform (L) is identified as follows:
| PLT_Z80RETRO |15 | Z80 RETRO COMPUTER |
| PLT_S100 |16 | S100 COMPUTERS Z180 |
| PLT_DUO |17 | DUODYNE Z80 SYSTEM |
| PLT_RCEZ80 |24 | RCBUS W/ eZ80 |
### Function 0xF2 -- System Set Bank (SYSSETBNK)
@@ -2409,6 +2624,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.
@@ -3067,7 +3285,7 @@ The following section outlines the read only data referenced by the
| CMDREG | 5 | 1 | IO PORT ADDRESS FOR MODE 1 |
| | | | _Below are the register mirror values_ |
| | | | _that HBIOS used for initialisation_ |
| REG. 0 | 6 | 1 | $00 - NO EXTERNAL VID
| REG. 0 | 6 | 1 | $00 - NO EXTERNAL VID |
| REG. 1 | 7 | 1 | $50 or $70 - SET MODE 1 and interrupt if enabled |
| REG. 2 | 8 | 1 | $00 - PATTERN NAME TABLE := 0 |
| REG. 3 | 9 | 1 | $00 - NO COLOR TABLE |

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

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

View File

@@ -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", "FZ80"
$PlatformListZ180 = "N8", "MK4", "RCZ180", "SCZ180", "DYNO", "RPH", "S100", "EPITX"
$PlatformListZ80 = "SBC", "MBC", "ZETA", "ZETA2", "RCZ80", "Z80RETRO", "DUO", "UNA", "HEATH", "MON", "NABU", "FZ80", "RCEZ80"
$PlatformListZ180 = "N8", "MK4", "RCZ180", "SCZ180", "DYNO", "RPH", "S100", "EPITX", "GMZ180"
$PlatformListZ280 = "RCZ280"
#

View File

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

View File

@@ -1,51 +1,66 @@
;
;==================================================================================================
; DUODYNE STANDARD CONFIGURATION
; ROMWBW DEFAULT BUILD SETTINGS FOR DUODYNE
;==================================================================================================
;
; 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.
; THIS FILE DEFINES THE DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
; INDICATED ABOVE. THESE SETTINGS DEFINE THE OFFICIAL BUILD FOR THIS
; PLATFORM AS DISTRIBUTED IN ROMWBW RELEASES.
;
; 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.
; ROMWBW USES CASCADING CONFIGURATION FILES AS INDICATED BELOW:
;
; 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!
; cfg_MASTER.asm - MASTER: CONFIGURATION FILE DEFINES ALL POSSIBLE ROMWBW SETTINGS
; |
; +-> cfg_<platform>.asm - PLATFORM: DEFAULT SETTINGS FOR SPECIFIC PLATFORM
; |
; +-> Config/<plt>_std.asm - BUILD: SETTINGS FOR EACH OFFICIAL DIST BUILD
; |
; +-> Config/<plt>_<cust>.asm - USER: CUSTOM USER BUILD SETTINGS
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
; DIRECTORIES ABOVE THIS ONE).
; THE TOP (MASTER CONFIGURATION) FILE DEFINES ALL POSSIBLE ROMWBW
; CONFIGURATION SETTINGS. EACH FILE BELOW THE MASTER CONFIGURATION FILE
; INHERITS THE CUMULATIVE SETTINGS OF THE FILES ABOVE IT AND MAY
; OVERRIDE THESE SETTINGS AS DESIRED.
;
; OTHER THAN THE TOP MASTER FILE, EACH FILE MUST "#INCLUDE" ITS PARENT
; FILE (SEE #INCLUDE STATEMENT BELOW). THE TOP TWO FILES SHOULD NOT BE
; MODIFIED.
;
; TO CUSTOMIZE YOUR BUILD SETTINGS YOU SHOULD MODIFY THIS FILE, THE
; DEFAULT BUILD SETTINGS (Config/<platform>_std.asm) OR PREFERABLY
; CREATE AN OPTIONAL CUSTOM USER SETTINGS FILE THAT INCLUDES THE DEFAULT
; BUILD SETTINGS FILE (SEE EXAMPLE Config/SBC_user.asm).
;
; BY CREATING A CUSTOM USER SETTINGS FILE, YOU ARE LESS LIKELY TO BE
; IMPACTED BY FUTURE CHANGES BECAUSE YOU WILL BE INHERITING MOST
; OF YOUR SETTINGS WHICH WILL BE UPDATED BY AUTHORS AS ROMWBW EVOLVES.
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE
; SOURCE DIRECTORY (TWO DIRECTORIES ABOVE THIS ONE).
;
; *** WARNING: ASIDE FROM THE MASTER CONFIGURATION FILE, YOU MUST USE
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#include "cfg_duo.asm"
;
CPUOSC .SET 8000000 ; CPU OSC FREQ IN MHZ
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
;
DMAENABLE .SET TRUE ; DMA: ENABLE DMA DRIVER (DMA.ASM)
#INCLUDE "cfg_DUO.asm"
;
BATCOND .SET TRUE ; ENABLE LOW BATTERY WARNING MESSAGE
CPUOSC .SET 8000000 ; CPU OSC FREQ IN MHZ
INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
;
ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
;
PCFENABLE .SET TRUE ; ENABLE PCF8584 I2C CONTROLLER
;
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
UARTINTS .SET FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3
MDFFENABLE .SET FALSE ; MD: ENABLE FLASH FILE SYSTEM
;
UARTINTS .SET FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3
;
CHENABLE .SET TRUE ; CH: ENABLE CH375/376 USB SUPPORT
ESPENABLE .SET FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER
;
CHENABLE .SET TRUE ; CH: ENABLE CH375/376 USB SUPPORT
;
ESPENABLE .SET FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
DMAENABLE .SET TRUE ; DMA: ENABLE DMA DRIVER (DMA.ASM)

View File

@@ -1,37 +1,57 @@
;
;==================================================================================================
; DYNO STANDARD CONFIGURATION
; ROMWBW DEFAULT BUILD SETTINGS FOR DYNO
;==================================================================================================
;
; 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.
; THIS FILE DEFINES THE DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
; INDICATED ABOVE. THESE SETTINGS DEFINE THE OFFICIAL BUILD FOR THIS
; PLATFORM AS DISTRIBUTED IN ROMWBW RELEASES.
;
; 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.
; ROMWBW USES CASCADING CONFIGURATION FILES AS INDICATED BELOW:
;
; 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!
; cfg_MASTER.asm - MASTER: CONFIGURATION FILE DEFINES ALL POSSIBLE ROMWBW SETTINGS
; |
; +-> cfg_<platform>.asm - PLATFORM: DEFAULT SETTINGS FOR SPECIFIC PLATFORM
; |
; +-> Config/<plt>_std.asm - BUILD: SETTINGS FOR EACH OFFICIAL DIST BUILD
; |
; +-> Config/<plt>_<cust>.asm - USER: CUSTOM USER BUILD SETTINGS
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
; DIRECTORIES ABOVE THIS ONE).
; THE TOP (MASTER CONFIGURATION) FILE DEFINES ALL POSSIBLE ROMWBW
; CONFIGURATION SETTINGS. EACH FILE BELOW THE MASTER CONFIGURATION FILE
; INHERITS THE CUMULATIVE SETTINGS OF THE FILES ABOVE IT AND MAY
; OVERRIDE THESE SETTINGS AS DESIRED.
;
; OTHER THAN THE TOP MASTER FILE, EACH FILE MUST "#INCLUDE" ITS PARENT
; FILE (SEE #INCLUDE STATEMENT BELOW). THE TOP TWO FILES SHOULD NOT BE
; MODIFIED.
;
; TO CUSTOMIZE YOUR BUILD SETTINGS YOU SHOULD MODIFY THIS FILE, THE
; DEFAULT BUILD SETTINGS (Config/<platform>_std.asm) OR PREFERABLY
; CREATE AN OPTIONAL CUSTOM USER SETTINGS FILE THAT INCLUDES THE DEFAULT
; BUILD SETTINGS FILE (SEE EXAMPLE Config/SBC_user.asm).
;
; BY CREATING A CUSTOM USER SETTINGS FILE, YOU ARE LESS LIKELY TO BE
; IMPACTED BY FUTURE CHANGES BECAUSE YOU WILL BE INHERITING MOST
; OF YOUR SETTINGS WHICH WILL BE UPDATED BY AUTHORS AS ROMWBW EVOLVES.
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE
; SOURCE DIRECTORY (TWO DIRECTORIES ABOVE THIS ONE).
;
; *** WARNING: ASIDE FROM THE MASTER CONFIGURATION FILE, YOU MUST USE
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#include "cfg_dyno.asm"
#INCLUDE "cfg_DYNO.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)
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
ASCIENABLE .SET TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
;

View File

@@ -1,34 +1,52 @@
;
;==================================================================================================
; Z180 Mini ITX STANDARD CONFIGURATION
; ROMWBW DEFAULT BUILD SETTINGS FOR Z180 MINI ITX
;==================================================================================================
;
; 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.
; THIS FILE DEFINES THE DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
; INDICATED ABOVE. THESE SETTINGS DEFINE THE OFFICIAL BUILD FOR THIS
; PLATFORM AS DISTRIBUTED IN ROMWBW RELEASES.
;
; 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.
; ROMWBW USES CASCADING CONFIGURATION FILES AS INDICATED BELOW:
;
; 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!
; cfg_MASTER.asm - MASTER: CONFIGURATION FILE DEFINES ALL POSSIBLE ROMWBW SETTINGS
; |
; +-> cfg_<platform>.asm - PLATFORM: DEFAULT SETTINGS FOR SPECIFIC PLATFORM
; |
; +-> Config/<plt>_std.asm - BUILD: SETTINGS FOR EACH OFFICIAL DIST BUILD
; |
; +-> Config/<plt>_<cust>.asm - USER: CUSTOM USER BUILD SETTINGS
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
; DIRECTORIES ABOVE THIS ONE).
; THE TOP (MASTER CONFIGURATION) FILE DEFINES ALL POSSIBLE ROMWBW
; CONFIGURATION SETTINGS. EACH FILE BELOW THE MASTER CONFIGURATION FILE
; INHERITS THE CUMULATIVE SETTINGS OF THE FILES ABOVE IT AND MAY
; OVERRIDE THESE SETTINGS AS DESIRED.
;
; OTHER THAN THE TOP MASTER FILE, EACH FILE MUST "#INCLUDE" ITS PARENT
; FILE (SEE #INCLUDE STATEMENT BELOW). THE TOP TWO FILES SHOULD NOT BE
; MODIFIED.
;
; TO CUSTOMIZE YOUR BUILD SETTINGS YOU SHOULD MODIFY THIS FILE, THE
; DEFAULT BUILD SETTINGS (Config/<platform>_std.asm) OR PREFERABLY
; CREATE AN OPTIONAL CUSTOM USER SETTINGS FILE THAT INCLUDES THE DEFAULT
; BUILD SETTINGS FILE (SEE EXAMPLE Config/SBC_user.asm).
;
; BY CREATING A CUSTOM USER SETTINGS FILE, YOU ARE LESS LIKELY TO BE
; IMPACTED BY FUTURE CHANGES BECAUSE YOU WILL BE INHERITING MOST
; OF YOUR SETTINGS WHICH WILL BE UPDATED BY AUTHORS AS ROMWBW EVOLVES.
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE
; SOURCE DIRECTORY (TWO DIRECTORIES ABOVE THIS ONE).
;
; *** WARNING: ASIDE FROM THE MASTER CONFIGURATION FILE, YOU MUST USE
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE PLATFORM_NAME "Z180 MiniITX"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#include "cfg_epitx.asm"
;
CRTACT .SET TRUE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
#INCLUDE "cfg_EPITX.asm"
;
CPUOSC .SET 18432000 ; CPU OSC FREQ IN MHZ
;
@@ -36,9 +54,8 @@ 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)
;
HBIOS_MUTEX .SET FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
;
LEDENABLE .SET FALSE ; ENABLE STATUS LED (SINGLE LED)
LEDENABLE .SET FALSE ; ENABLES STATUS LED (SINGLE LED)
CRTACT .SET TRUE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
DSRTCENABLE .SET FALSE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
INTRTCENABLE .SET TRUE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
@@ -50,10 +67,8 @@ SIOENABLE .SET FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
;
TMSENABLE .SET TRUE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
;
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
;
FDENABLE .SET TRUE ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC]
FDMODE .SET FDMODE_EPFDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3]
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .SET FDMODE_EPFDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
;
IDEENABLE .SET FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
;
@@ -62,3 +77,4 @@ PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM
SDENABLE .SET TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
;
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
AY38910ENABLE .SET FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER

View File

@@ -1,30 +1,50 @@
;
;==================================================================================================
; S100 FPGZ Z80 STANDARD CONFIGURATION
; ROMWBW DEFAULT BUILD SETTINGS FOR S100 FPGA Z80
;==================================================================================================
;
; 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.
; THIS FILE DEFINES THE DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
; INDICATED ABOVE. THESE SETTINGS DEFINE THE OFFICIAL BUILD FOR THIS
; PLATFORM AS DISTRIBUTED IN ROMWBW RELEASES.
;
; 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.
; ROMWBW USES CASCADING CONFIGURATION FILES AS INDICATED BELOW:
;
; 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!
; cfg_MASTER.asm - MASTER: CONFIGURATION FILE DEFINES ALL POSSIBLE ROMWBW SETTINGS
; |
; +-> cfg_<platform>.asm - PLATFORM: DEFAULT SETTINGS FOR SPECIFIC PLATFORM
; |
; +-> Config/<plt>_std.asm - BUILD: SETTINGS FOR EACH OFFICIAL DIST BUILD
; |
; +-> Config/<plt>_<cust>.asm - USER: CUSTOM USER BUILD SETTINGS
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
; DIRECTORIES ABOVE THIS ONE).
; THE TOP (MASTER CONFIGURATION) FILE DEFINES ALL POSSIBLE ROMWBW
; CONFIGURATION SETTINGS. EACH FILE BELOW THE MASTER CONFIGURATION FILE
; INHERITS THE CUMULATIVE SETTINGS OF THE FILES ABOVE IT AND MAY
; OVERRIDE THESE SETTINGS AS DESIRED.
;
; OTHER THAN THE TOP MASTER FILE, EACH FILE MUST "#INCLUDE" ITS PARENT
; FILE (SEE #INCLUDE STATEMENT BELOW). THE TOP TWO FILES SHOULD NOT BE
; MODIFIED.
;
; TO CUSTOMIZE YOUR BUILD SETTINGS YOU SHOULD MODIFY THIS FILE, THE
; DEFAULT BUILD SETTINGS (Config/<platform>_std.asm) OR PREFERABLY
; CREATE AN OPTIONAL CUSTOM USER SETTINGS FILE THAT INCLUDES THE DEFAULT
; BUILD SETTINGS FILE (SEE EXAMPLE Config/SBC_user.asm).
;
; BY CREATING A CUSTOM USER SETTINGS FILE, YOU ARE LESS LIKELY TO BE
; IMPACTED BY FUTURE CHANGES BECAUSE YOU WILL BE INHERITING MOST
; OF YOUR SETTINGS WHICH WILL BE UPDATED BY AUTHORS AS ROMWBW EVOLVES.
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE
; SOURCE DIRECTORY (TWO DIRECTORIES ABOVE THIS ONE).
;
; *** WARNING: ASIDE FROM THE MASTER CONFIGURATION FILE, YOU MUST USE
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#include "cfg_fz80.asm"
#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,90 @@
;
;==================================================================================================
; ROMWBW DEFAULT BUILD SETTINGS FOR GENESIS STD Z180
;==================================================================================================
;
; THIS FILE DEFINES THE DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
; INDICATED ABOVE. THESE SETTINGS DEFINE THE OFFICIAL BUILD FOR THIS
; PLATFORM AS DISTRIBUTED IN ROMWBW RELEASES.
;
; ROMWBW USES CASCADING CONFIGURATION FILES AS INDICATED BELOW:
;
; cfg_MASTER.asm - MASTER: CONFIGURATION FILE DEFINES ALL POSSIBLE ROMWBW SETTINGS
; |
; +-> cfg_<platform>.asm - PLATFORM: DEFAULT SETTINGS FOR SPECIFIC PLATFORM
; |
; +-> Config/<plt>_std.asm - BUILD: SETTINGS FOR EACH OFFICIAL DIST BUILD
; |
; +-> Config/<plt>_<cust>.asm - USER: CUSTOM USER BUILD SETTINGS
;
; THE TOP (MASTER CONFIGURATION) FILE DEFINES ALL POSSIBLE ROMWBW
; CONFIGURATION SETTINGS. EACH FILE BELOW THE MASTER CONFIGURATION FILE
; INHERITS THE CUMULATIVE SETTINGS OF THE FILES ABOVE IT AND MAY
; OVERRIDE THESE SETTINGS AS DESIRED.
;
; OTHER THAN THE TOP MASTER FILE, EACH FILE MUST "#INCLUDE" ITS PARENT
; FILE (SEE #INCLUDE STATEMENT BELOW). THE TOP TWO FILES SHOULD NOT BE
; MODIFIED.
;
; TO CUSTOMIZE YOUR BUILD SETTINGS YOU SHOULD MODIFY THIS FILE, THE
; DEFAULT BUILD SETTINGS (Config/<platform>_std.asm) OR PREFERABLY
; CREATE AN OPTIONAL CUSTOM USER SETTINGS FILE THAT INCLUDES THE DEFAULT
; BUILD SETTINGS FILE (SEE EXAMPLE Config/SBC_user.asm).
;
; BY CREATING A CUSTOM USER SETTINGS FILE, YOU ARE LESS LIKELY TO BE
; IMPACTED BY FUTURE CHANGES BECAUSE YOU WILL BE INHERITING MOST
; OF YOUR SETTINGS WHICH WILL BE UPDATED BY AUTHORS AS ROMWBW EVOLVES.
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE
; SOURCE DIRECTORY (TWO DIRECTORIES ABOVE THIS ONE).
;
; *** WARNING: ASIDE FROM THE MASTER CONFIGURATION FILE, YOU MUST USE
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#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
;
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)
;
FPLED_ENABLE .SET FALSE ; FP: ENABLES FRONT PANEL LEDS
FPLED_IO .SET $00 ; FP: PORT ADDRESS FOR FP LEDS
LEDENABLE .SET FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDMODE .SET LEDMODE_STD ; LEDMODE_[STD|SC|RTC|NABU]
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
;
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)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU]
TMS80COLS .SET FALSE ; TMS: ENABLE 80 COLUMN SCREEN, REQUIRES V9958
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
;
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|EPFDC|MBC]
;
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|PIO|Z80R|EPITX|FZ80|GM]
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
;
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER
AY38910ENABLE .SET FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER
AYMODE .SET AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU]

View File

@@ -1,69 +1,47 @@
;
;==================================================================================================
; HEATH H8 Z80 STANDARD CONFIGURATION
; ROMWBW DEFAULT BUILD SETTINGS FOR HEATH H8 Z80
;==================================================================================================
;
; 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.
; THIS FILE DEFINES THE DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
; INDICATED ABOVE. THESE SETTINGS DEFINE THE OFFICIAL BUILD FOR THIS
; PLATFORM AS DISTRIBUTED IN ROMWBW RELEASES.
;
; 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.
; ROMWBW USES CASCADING CONFIGURATION FILES AS INDICATED BELOW:
;
; 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!
; cfg_MASTER.asm - MASTER: CONFIGURATION FILE DEFINES ALL POSSIBLE ROMWBW SETTINGS
; |
; +-> cfg_<platform>.asm - PLATFORM: DEFAULT SETTINGS FOR SPECIFIC PLATFORM
; |
; +-> Config/<plt>_std.asm - BUILD: SETTINGS FOR EACH OFFICIAL DIST BUILD
; |
; +-> Config/<plt>_<cust>.asm - USER: CUSTOM USER BUILD SETTINGS
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
; DIRECTORIES ABOVE THIS ONE).
; THE TOP (MASTER CONFIGURATION) FILE DEFINES ALL POSSIBLE ROMWBW
; CONFIGURATION SETTINGS. EACH FILE BELOW THE MASTER CONFIGURATION FILE
; INHERITS THE CUMULATIVE SETTINGS OF THE FILES ABOVE IT AND MAY
; OVERRIDE THESE SETTINGS AS DESIRED.
;
; OTHER THAN THE TOP MASTER FILE, EACH FILE MUST "#INCLUDE" ITS PARENT
; FILE (SEE #INCLUDE STATEMENT BELOW). THE TOP TWO FILES SHOULD NOT BE
; MODIFIED.
;
; TO CUSTOMIZE YOUR BUILD SETTINGS YOU SHOULD MODIFY THIS FILE, THE
; DEFAULT BUILD SETTINGS (Config/<platform>_std.asm) OR PREFERABLY
; CREATE AN OPTIONAL CUSTOM USER SETTINGS FILE THAT INCLUDES THE DEFAULT
; BUILD SETTINGS FILE (SEE EXAMPLE Config/SBC_user.asm).
;
; BY CREATING A CUSTOM USER SETTINGS FILE, YOU ARE LESS LIKELY TO BE
; IMPACTED BY FUTURE CHANGES BECAUSE YOU WILL BE INHERITING MOST
; OF YOUR SETTINGS WHICH WILL BE UPDATED BY AUTHORS AS ROMWBW EVOLVES.
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE
; SOURCE DIRECTORY (TWO DIRECTORIES ABOVE THIS ONE).
;
; *** WARNING: ASIDE FROM THE MASTER CONFIGURATION FILE, YOU MUST USE
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#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)
#INCLUDE "cfg_HEATH.asm"

View File

@@ -1,59 +1,75 @@
;
;==================================================================================================
; MBC CONFIGURATION
; ROMWBW DEFAULT BUILD SETTINGS FOR NHYODYNE
;==================================================================================================
;
; 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.
; THIS FILE DEFINES THE DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
; INDICATED ABOVE. THESE SETTINGS DEFINE THE OFFICIAL BUILD FOR THIS
; PLATFORM AS DISTRIBUTED IN ROMWBW RELEASES.
;
; 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.
; ROMWBW USES CASCADING CONFIGURATION FILES AS INDICATED BELOW:
;
; 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!
; cfg_MASTER.asm - MASTER: CONFIGURATION FILE DEFINES ALL POSSIBLE ROMWBW SETTINGS
; |
; +-> cfg_<platform>.asm - PLATFORM: DEFAULT SETTINGS FOR SPECIFIC PLATFORM
; |
; +-> Config/<plt>_std.asm - BUILD: SETTINGS FOR EACH OFFICIAL DIST BUILD
; |
; +-> Config/<plt>_<cust>.asm - USER: CUSTOM USER BUILD SETTINGS
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
; DIRECTORIES ABOVE THIS ONE).
; THE TOP (MASTER CONFIGURATION) FILE DEFINES ALL POSSIBLE ROMWBW
; CONFIGURATION SETTINGS. EACH FILE BELOW THE MASTER CONFIGURATION FILE
; INHERITS THE CUMULATIVE SETTINGS OF THE FILES ABOVE IT AND MAY
; OVERRIDE THESE SETTINGS AS DESIRED.
;
; OTHER THAN THE TOP MASTER FILE, EACH FILE MUST "#INCLUDE" ITS PARENT
; FILE (SEE #INCLUDE STATEMENT BELOW). THE TOP TWO FILES SHOULD NOT BE
; MODIFIED.
;
; TO CUSTOMIZE YOUR BUILD SETTINGS YOU SHOULD MODIFY THIS FILE, THE
; DEFAULT BUILD SETTINGS (Config/<platform>_std.asm) OR PREFERABLY
; CREATE AN OPTIONAL CUSTOM USER SETTINGS FILE THAT INCLUDES THE DEFAULT
; BUILD SETTINGS FILE (SEE EXAMPLE Config/SBC_user.asm).
;
; BY CREATING A CUSTOM USER SETTINGS FILE, YOU ARE LESS LIKELY TO BE
; IMPACTED BY FUTURE CHANGES BECAUSE YOU WILL BE INHERITING MOST
; OF YOUR SETTINGS WHICH WILL BE UPDATED BY AUTHORS AS ROMWBW EVOLVES.
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE
; SOURCE DIRECTORY (TWO DIRECTORIES ABOVE THIS ONE).
;
; *** WARNING: ASIDE FROM THE MASTER CONFIGURATION FILE, YOU MUST USE
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#include "cfg_mbc.asm"
;
CPUOSC .SET 8000000 ; CPU OSC FREQ IN MHZ
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
INTMODE .SET 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
;
DMAENABLE .SET FALSE ; DMA: ENABLE DMA DRIVER (DMA.ASM)
#INCLUDE "cfg_MBC.asm"
;
BATCOND .SET FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
;
CPUSPDDEF .SET SPD_LOW ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
CPUOSC .SET 8000000 ; CPU OSC FREQ IN MHZ
INTMODE .SET 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
;
ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
;
MDFFENABLE .SET FALSE ; MD: ENABLE FLASH FILE SYSTEM
ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
;
DSKYENABLE .SET TRUE ; ENABLES DSKY FUNCTIONALITY
ICMENABLE .SET FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218)
PKDENABLE .SET TRUE ; ENABLES DSKY NG PKD DRIVER (8259)
;
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
UARTINTS .SET FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3
;
ESPENABLE .SET TRUE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
;
LPTENABLE .SET TRUE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
;
CVDUMON .SET CVDUMON_CGA ; CVDU: CVDU MONITOR SETUP: CVDUMON_[NONE|CGA|EGA]
;
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
MDFFENABLE .SET FALSE ; MD: ENABLE FLASH FILE SYSTEM
;
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
;
ESPENABLE .SET TRUE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
;
DMAENABLE .SET FALSE ; DMA: ENABLE DMA DRIVER (DMA.ASM)

View File

@@ -1,54 +1,74 @@
;
;==================================================================================================
; MARK IV STANDARD CONFIGURATION
; ROMWBW DEFAULT BUILD SETTINGS FOR MARK IV
;==================================================================================================
;
; 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.
; THIS FILE DEFINES THE DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
; INDICATED ABOVE. THESE SETTINGS DEFINE THE OFFICIAL BUILD FOR THIS
; PLATFORM AS DISTRIBUTED IN ROMWBW RELEASES.
;
; 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.
; ROMWBW USES CASCADING CONFIGURATION FILES AS INDICATED BELOW:
;
; 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!
; cfg_MASTER.asm - MASTER: CONFIGURATION FILE DEFINES ALL POSSIBLE ROMWBW SETTINGS
; |
; +-> cfg_<platform>.asm - PLATFORM: DEFAULT SETTINGS FOR SPECIFIC PLATFORM
; |
; +-> Config/<plt>_std.asm - BUILD: SETTINGS FOR EACH OFFICIAL DIST BUILD
; |
; +-> Config/<plt>_<cust>.asm - USER: CUSTOM USER BUILD SETTINGS
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
; DIRECTORIES ABOVE THIS ONE).
; THE TOP (MASTER CONFIGURATION) FILE DEFINES ALL POSSIBLE ROMWBW
; CONFIGURATION SETTINGS. EACH FILE BELOW THE MASTER CONFIGURATION FILE
; INHERITS THE CUMULATIVE SETTINGS OF THE FILES ABOVE IT AND MAY
; OVERRIDE THESE SETTINGS AS DESIRED.
;
; OTHER THAN THE TOP MASTER FILE, EACH FILE MUST "#INCLUDE" ITS PARENT
; FILE (SEE #INCLUDE STATEMENT BELOW). THE TOP TWO FILES SHOULD NOT BE
; MODIFIED.
;
; TO CUSTOMIZE YOUR BUILD SETTINGS YOU SHOULD MODIFY THIS FILE, THE
; DEFAULT BUILD SETTINGS (Config/<platform>_std.asm) OR PREFERABLY
; CREATE AN OPTIONAL CUSTOM USER SETTINGS FILE THAT INCLUDES THE DEFAULT
; BUILD SETTINGS FILE (SEE EXAMPLE Config/SBC_user.asm).
;
; BY CREATING A CUSTOM USER SETTINGS FILE, YOU ARE LESS LIKELY TO BE
; IMPACTED BY FUTURE CHANGES BECAUSE YOU WILL BE INHERITING MOST
; OF YOUR SETTINGS WHICH WILL BE UPDATED BY AUTHORS AS ROMWBW EVOLVES.
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE
; SOURCE DIRECTORY (TWO DIRECTORIES ABOVE THIS ONE).
;
; *** WARNING: ASIDE FROM THE MASTER CONFIGURATION FILE, YOU MUST USE
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#include "cfg_mk4.asm"
#INCLUDE "cfg_MK4.asm"
;
CPUOSC .SET 18432000 ; CPU OSC FREQ IN MHZ
INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
;
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)
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
;
UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
SIOENABLE .SET FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
;
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
VDUENABLE .SET FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
CVDUENABLE .SET TRUE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
VGAENABLE .SET TRUE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
;
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .SET FDMODE_DIDE ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC]
FDMODE .SET FDMODE_DIDE ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
;
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_MK4 ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC]
SDMODE .SET SDMODE_MK4 ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|FZ80|GM]
;
PRPENABLE .SET TRUE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)

View File

@@ -1,30 +1,50 @@
;
;==================================================================================================
; MONSPUTER Z80 STANDARD CONFIGURATION
; ROMWBW DEFAULT BUILD SETTINGS FOR MONSPUTER Z80
;==================================================================================================
;
; 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.
; THIS FILE DEFINES THE DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
; INDICATED ABOVE. THESE SETTINGS DEFINE THE OFFICIAL BUILD FOR THIS
; PLATFORM AS DISTRIBUTED IN ROMWBW RELEASES.
;
; 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.
; ROMWBW USES CASCADING CONFIGURATION FILES AS INDICATED BELOW:
;
; 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!
; cfg_MASTER.asm - MASTER: CONFIGURATION FILE DEFINES ALL POSSIBLE ROMWBW SETTINGS
; |
; +-> cfg_<platform>.asm - PLATFORM: DEFAULT SETTINGS FOR SPECIFIC PLATFORM
; |
; +-> Config/<plt>_std.asm - BUILD: SETTINGS FOR EACH OFFICIAL DIST BUILD
; |
; +-> Config/<plt>_<cust>.asm - USER: CUSTOM USER BUILD SETTINGS
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
; DIRECTORIES ABOVE THIS ONE).
; THE TOP (MASTER CONFIGURATION) FILE DEFINES ALL POSSIBLE ROMWBW
; CONFIGURATION SETTINGS. EACH FILE BELOW THE MASTER CONFIGURATION FILE
; INHERITS THE CUMULATIVE SETTINGS OF THE FILES ABOVE IT AND MAY
; OVERRIDE THESE SETTINGS AS DESIRED.
;
; OTHER THAN THE TOP MASTER FILE, EACH FILE MUST "#INCLUDE" ITS PARENT
; FILE (SEE #INCLUDE STATEMENT BELOW). THE TOP TWO FILES SHOULD NOT BE
; MODIFIED.
;
; TO CUSTOMIZE YOUR BUILD SETTINGS YOU SHOULD MODIFY THIS FILE, THE
; DEFAULT BUILD SETTINGS (Config/<platform>_std.asm) OR PREFERABLY
; CREATE AN OPTIONAL CUSTOM USER SETTINGS FILE THAT INCLUDES THE DEFAULT
; BUILD SETTINGS FILE (SEE EXAMPLE Config/SBC_user.asm).
;
; BY CREATING A CUSTOM USER SETTINGS FILE, YOU ARE LESS LIKELY TO BE
; IMPACTED BY FUTURE CHANGES BECAUSE YOU WILL BE INHERITING MOST
; OF YOUR SETTINGS WHICH WILL BE UPDATED BY AUTHORS AS ROMWBW EVOLVES.
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE
; SOURCE DIRECTORY (TWO DIRECTORIES ABOVE THIS ONE).
;
; *** WARNING: ASIDE FROM THE MASTER CONFIGURATION FILE, YOU MUST USE
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#include "cfg_mon.asm"
#INCLUDE "cfg_MON.asm"
;
CPUOSC .SET 4000000 ; CPU OSC FREQ IN MHZ
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP

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