diff --git a/.gitignore b/.gitignore index 8ebc4587..61b7dd26 100644 --- a/.gitignore +++ b/.gitignore @@ -79,6 +79,7 @@ Tools/unix/zx/zx !Source/Apps/ZMP/zmpx.com !Source/BPBIOS/bpbuild.com !Source/BPBIOS/movp112.com +!Source/BPBIOS/*.lib !Source/BPBIOS/Z34RCP11/cledinst.com !Source/BPBIOS/Z34RCP11/cledsave.com !Source/Fonts diff --git a/Doc/ROM Applications.pdf b/Doc/ROM Applications.pdf index 771ce41b..ca96c7eb 100644 Binary files a/Doc/ROM Applications.pdf and b/Doc/ROM Applications.pdf differ diff --git a/Doc/RomWBW Applications.pdf b/Doc/RomWBW Applications.pdf index 105ac466..9a2f26f6 100644 Binary files a/Doc/RomWBW Applications.pdf and b/Doc/RomWBW Applications.pdf differ diff --git a/Doc/RomWBW Disk Catalog.pdf b/Doc/RomWBW Disk Catalog.pdf index 561653af..b8d3fed9 100644 Binary files a/Doc/RomWBW Disk Catalog.pdf and b/Doc/RomWBW Disk Catalog.pdf differ diff --git a/Doc/RomWBW Getting Started.pdf b/Doc/RomWBW Getting Started.pdf index e17adacb..30917f7d 100644 Binary files a/Doc/RomWBW Getting Started.pdf and b/Doc/RomWBW Getting Started.pdf differ diff --git a/ReadMe.md b/ReadMe.md index 6965f4fa..ab45c1e9 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -9,16 +9,16 @@ Wayne Warthen ### Download - - [RomWBW Distribution +- [RomWBW Distribution Package](https://github.com/wwarthen/RomWBW/releases) ### Related Pages - - [RomWBW Architecture +- [RomWBW Architecture Document](https://www.retrobrewcomputers.org/lib/exe/fetch.php?media=software:firmwareos:romwbw:romwbw_architecture.pdf) - - [RomWBW +- [RomWBW Applications](https://www.retrobrewcomputers.org/doku.php?id=software:firmwareos:romwbw:apps) - - [RomWBW +- [RomWBW Errata](https://www.retrobrewcomputers.org/doku.php?id=software:firmwareos:romwbw:errata) # Overview @@ -27,28 +27,28 @@ RomWBW provides a complete software system for a wide variety of hobbyist Z80/Z180 CPU-based systems produced by these developer communities: - - [RetroBrew Computers](https://www.retrobrewcomputers.org) - - [RC2014](https://rc2014.co.uk) - - [retro-comp](https://groups.google.com/forum/#!forum/retro-comp) +- [RetroBrew Computers](https://www.retrobrewcomputers.org) +- [RC2014](https://rc2014.co.uk) +- [retro-comp](https://groups.google.com/forum/#!forum/retro-comp) General features include: - - Banked memory services for several banking designs - - Disk drivers for RAM, ROM, Floppy, IDE, CF, and SD - - Serial drivers including UART (16550-like), ASCI, ACIA, SIO - - Video drivers including TMS9918, SY6545, MOS8563, HD6445 - - Real time clock drivers including DS1302, BQ4845 - - Multiple OS support including CP/M 2.2, ZSDOS, CP/M 3, ZPM3 - - Built-in VT-100 terminal emulation support +- Banked memory services for several banking designs +- Disk drivers for RAM, ROM, Floppy, IDE, CF, and SD +- Serial drivers including UART (16550-like), ASCI, ACIA, SIO +- Video drivers including TMS9918, SY6545, MOS8563, HD6445 +- Real time clock drivers including DS1302, BQ4845 +- Multiple OS support including CP/M 2.2, ZSDOS, CP/M 3, ZPM3 +- Built-in VT-100 terminal emulation support RomWBW is distributed as both source code and pre-built ROM and disk images. Some of the provided software can be launched directly from the ROM firmware itself: - - System Monitor - - Operating Systems (CP/M 2.2, ZSDOS) - - ROM BASIC (Nascom BASIC and Tasty BASIC) - - ROM Forth +- System Monitor +- Operating Systems (CP/M 2.2, ZSDOS) +- ROM BASIC (Nascom BASIC and Tasty BASIC) +- ROM Forth A dynamic disk drive letter assignment mechanism allows mapping operating system drive letters to any available disk media. @@ -111,22 +111,22 @@ directory contains the pre-built ROM and disk images. The ROM image files all end in “.rom”. Based on the table below, **carefully** pick the appropriate ROM image for your hardware. -| Platform | ROM Image File | Baud | Description | -| --------- | --------------- | -----: | ----------------------------------------------- | -| SBC | SBC\_std.rom | 38400 | RetroBrew SBC v1 or v2 ECB Z80 | -| Zeta V1 | ZETA\_std.rom | 38400 | RetroBrew Zeta V1 Z80, ParPortProp (optional) | -| Zeta V2 | ZETA2\_std.rom | 38400 | RetroBrew Zeta V2 Z80, ParPortProp (optional) | -| N8 | N8\_std.rom | 38400 | RetroBrew N8 Z180, date code \>= 2312 | -| Mark IV | MK4\_std.rom | 38400 | RetroBrew Mark IV ECB Z180 | -| RC Z80 | RCZ80\_std.rom | 115200 | RC2014 w/ Z80 CPU, requires 512K RAM/ROM module | -| RC Z180\* | RCZ180\_ext.rom | 115200 | RC2014 w/ Z180 CPU & 512K banked RAM/ROM module | -| RC Z180\* | RCZ180\_nat.rom | 115200 | RC2014 w/ Z180 CPU & 512K native RAM/ROM module | -| Easy Z80 | EZZ80\_std.rom | 115200 | Sergey Kiselev’s Easy Z80 | -| SC126 | SCZ180\_126.rom | 115200 | Stephen Cousin’s SC126 Z180 | -| SC130 | SCZ180\_130.rom | 115200 | Stephen Cousin’s SC130 Z180 | -| SC131 | SCZ180\_131.rom | 115200 | Stephen Cousin’s SC131 Z180 | -| Dyno | DYNO\_std.rom | 38400 | Steve Garcia’s Z180 Dyno Computer | -| MBC | MBC\_std.rom | 38400 | Andrew Lynch’s Multi Board Computer | +| Platform | ROM Image File | Baud | Description | +|-----------|----------------|-------:|-------------------------------------------------| +| SBC | SBC_std.rom | 38400 | RetroBrew SBC v1 or v2 ECB Z80 | +| Zeta V1 | ZETA_std.rom | 38400 | RetroBrew Zeta V1 Z80, ParPortProp (optional) | +| Zeta V2 | ZETA2_std.rom | 38400 | RetroBrew Zeta V2 Z80, ParPortProp (optional) | +| N8 | N8_std.rom | 38400 | RetroBrew N8 Z180, date code \>= 2312 | +| Mark IV | MK4_std.rom | 38400 | RetroBrew Mark IV ECB Z180 | +| RC Z80 | RCZ80_std.rom | 115200 | RC2014 w/ Z80 CPU, requires 512K RAM/ROM module | +| RC Z180\* | RCZ180_ext.rom | 115200 | RC2014 w/ Z180 CPU & 512K banked RAM/ROM module | +| RC Z180\* | RCZ180_nat.rom | 115200 | RC2014 w/ Z180 CPU & 512K native RAM/ROM module | +| Easy Z80 | EZZ80_std.rom | 115200 | Sergey Kiselev’s Easy Z80 | +| SC126 | SCZ180_126.rom | 115200 | Stephen Cousin’s SC126 Z180 | +| SC130 | SCZ180_130.rom | 115200 | Stephen Cousin’s SC130 Z180 | +| SC131 | SCZ180_131.rom | 115200 | Stephen Cousin’s SC131 Z180 | +| Dyno | DYNO_std.rom | 38400 | Steve Garcia’s Z180 Dyno Computer | +| MBC | MBC_std.rom | 38400 | Andrew Lynch’s Multi Board Computer | \*The RC2014 Z180 requires a separate RAM/ROM memory module. There are two types of these modules and you must pick the ROM for your type of @@ -185,7 +185,7 @@ disk devices. The following ROM applications are available at the boot loader prompt: | Application | | -| ------------ | ------------------------------------------------------ | +|--------------|--------------------------------------------------------| | Monitor | Z80 system debug monitor w/ Intel Hex loader | | Forth | Brad Rodriguez’s ANSI compatible Forth language | | Basic | Nascom 8K BASIC language | @@ -209,10 +209,10 @@ modular approach to implementing device drivers and presenting devices to the operating system. In general, all devices are classified as one of the following: - - Disk (Hard Disk, CF Card, SD Card, RAM/ROM Disk, etc.) - - Character (Serial Ports, Parallel Ports, etc.) - - Video (Video Display/Keyboard Interfaces) - - RTC/NVRAM (Real Time Clock, Non-volatile RAM) +- Disk (Hard Disk, CF Card, SD Card, RAM/ROM Disk, etc.) +- Character (Serial Ports, Parallel Ports, etc.) +- Video (Video Display/Keyboard Interfaces) +- RTC/NVRAM (Real Time Clock, Non-volatile RAM) HBIOS uses the concept of unit numbers to present a complex set of hardware devices to the operating system. As an example, a typical @@ -275,19 +275,17 @@ The command format is `I []` where ***u*** is unit to select and ***c*** is the optional baud rate code as listed below. -``` - Code | Rate | Code | Rate | Code | Rate | Code | Rate | -------|----------|------|----------|------|----------|------|----------| - 0 | 75 | 8 | 1800 | 16 | 28880 | 24 | 460800 | - 1 | 150 | 9 | 2400 | 17 | 38400 | 25 | 614400 | - 2 | 225 | 10 | 3600 | 18 | 57600 | 26 | 921600 | - 3 | 300 | 11 | 4800 | 19 | 76800 | 27 | 1228822 | - 4 | 450 | 12 | 7200 | 20 | 115200 | 28 | 1843200 | - 5 | 600 | 13 | 9600 | 21 | 153600 | 29 | 2457600 | - 6 | 900 | 14 | 14400 | 22 | 230400 | 30 | 3686400 | - 7 | 1200 | 15 | 19200 | 23 | 307200 | 31 | 7372800 | ------------------------------------------------------------------------- -``` + Code | Rate | Code | Rate | Code | Rate | Code | Rate | + ------|----------|------|----------|------|----------|------|----------| + 0 | 75 | 8 | 1800 | 16 | 28880 | 24 | 460800 | + 1 | 150 | 9 | 2400 | 17 | 38400 | 25 | 614400 | + 2 | 225 | 10 | 3600 | 18 | 57600 | 26 | 921600 | + 3 | 300 | 11 | 4800 | 19 | 76800 | 27 | 1228822 | + 4 | 450 | 12 | 7200 | 20 | 115200 | 28 | 1843200 | + 5 | 600 | 13 | 9600 | 21 | 153600 | 29 | 2457600 | + 6 | 900 | 14 | 14400 | 22 | 230400 | 30 | 3686400 | + 7 | 1200 | 15 | 19200 | 23 | 307200 | 31 | 7372800 | + ------------------------------------------------------------------------ Example: To change current console to 9600 baud @@ -360,7 +358,7 @@ messages meaning the first IDE device. To refer to the fourth slice of IDE0, you would type “IDE0:3”. Here are some examples: | | | -| -------- | ---------------------------- | +|----------|------------------------------| | `IDE0:0` | First slice of disk in IDE0 | | `IDE0:` | First slice of disk in IDE0 | | `IDE0:3` | Fourth slice of disk in IDE0 | @@ -404,12 +402,12 @@ The following custom applications are found on the ROM disk and are, therefore, globally available. | Application | Description | -| ----------- | ---------------------------------------------------------------------------------------------------- | +|-------------|------------------------------------------------------------------------------------------------------| | ASSIGN | Add, change, and delete drive letter assignments. Use ASSIGN /? for usage instructions. | | SYSCOPY | Copy system image to a device to make it bootable. Use SYSCOPY with no parms for usage instructions. | | MODE | Reconfigures serial ports dynamically. | | FDU | Format and test floppy disks. Menu driven interface. | -| FORMAT | Will someday be a command line tool to format floppy disks. Currently does nothing\! | +| FORMAT | Will someday be a command line tool to format floppy disks. Currently does nothing! | | XM | XModem file transfer program adapted to hardware. Automatically uses primary serial port on system. | | FLASH | Will Sowerbutts’ in-situ ROM programming utility. | | FDISK80 | John Coffman’s Z80 hard disk partitioning tool. See documentation in Doc directory. | @@ -423,7 +421,7 @@ the disk image files or the individual files can be found in the Binary\\Apps directory of the distribution. | Application | Description | -| ----------- | ----------------------------------------------------------- | +|-------------|-------------------------------------------------------------| | TUNE | Play .PT2, .PT3, .MYM audio files. | | FAT | Access MS-DOS FAT filesystems from RomWBW (based on FatFs). | @@ -490,7 +488,7 @@ of drive letters assigned to the disk media you have installed. Here is an example of this: Configuring Drives... - + A:=MD1:0 B:=MD0:0 C:=IDE0:0 @@ -578,10 +576,10 @@ you want CP/M 2.2 instead, you would replace `B:ZSYS.SYS` with `B:CPM.SYS`. Here is a full example of this process. B>SYSCOPY C:=B:ZSYS.SYS - + SYSCOPY v2.0 for RomWBW CP/M, 17-Feb-2020 (CP/M 2 Mode) Copyright 2020, Wayne Warthen, GNU GPL v3 - + Transfer system image from B:ZSYS.SYS to C: (Y/N)? Y Reading image... Writing image... Done @@ -622,26 +620,26 @@ The following table shows the disk image files available. Note that the images in the “Hard” column are fine for use on CF Cards, SD Cards, as well as real spinning hard disks. -| Floppy | Hard | Description | -| ------------- | ------------- | ---------------------------- | -| fd\_cpm22.img | hd\_cpm22.img | DRI CP/M 2.2 boot disk | -| fd\_zsdos.img | hd\_zsdos.img | ZSDOS 1.1 boot disk | -| fd\_nzcom.img | hd\_nzcom.img | NZCOM boot disk | -| fd\_cpm3.img | hd\_cpm3.img | DRI CP/M 3 boot disk | -| fd\_zpm3.img | hd\_zpm3.img | ZPM3 boot disk | -| fd\_ws4.img | hd\_ws4.img | WordStar v4 application disk | +| Floppy | Hard | Description | +|--------------|--------------|------------------------------| +| fd_cpm22.img | hd_cpm22.img | DRI CP/M 2.2 boot disk | +| fd_zsdos.img | hd_zsdos.img | ZSDOS 1.1 boot disk | +| fd_nzcom.img | hd_nzcom.img | NZCOM boot disk | +| fd_cpm3.img | hd_cpm3.img | DRI CP/M 3 boot disk | +| fd_zpm3.img | hd_zpm3.img | ZPM3 boot disk | +| fd_ws4.img | hd_ws4.img | WordStar v4 application disk | In addition to the disk images above, there is also a special hard disk -image called hd\_combo.img. This image contains all of the images above, +image called hd_combo.img. This image contains all of the images above, but in a single image with 6 slices. At the boot loader prompt, you can choose a disk with the combo image, then select the specific slice you want. This allows a single disk to have all of the possible operating system options. -This is the layout of the hd\_combo disk image: +This is the layout of the hd_combo disk image: | Slice | Description | -| ------- | ---------------------------- | +|---------|------------------------------| | Slice 0 | DRI CP/M 2.2 boot disk | | Slice 1 | ZSDOS 1.1 boot disk | | Slice 2 | NZCOM boot disk | @@ -680,17 +678,17 @@ can `SYSCOPY` and boot alternate slices. Here is what you would see when booting to a disk device: MARK IV Boot Loader - + ROM: (M)onitor (C)P/M (Z)-System (F)orth (B)ASIC (T)-BASIC (P)LAY (U)SER ROM Disk: (0)MD1 (1)MD0 (2)IDE0 (3)IDE1 - + Boot Selection? 2 Slice(0-9)[0]? - + Booting Disk Unit 2, Slice 0... - + Reading disk information... Loc=D000 End=FE00 Ent=E600 Label=Unlabeled Drive - + Loading... Following this, you would see the normal operating system startup @@ -698,14 +696,14 @@ messages. However, your operating system prompt will be `A>` and when you look at the drive letter assignments, you should see that A: has been assigned to the disk you selected to boot. -If you receive the error message “Disk not bootable\!”, you have either +If you receive the error message “Disk not bootable!”, you have either failed to properly run `SYSCOPY` on the target disk or you have selected the wrong disk/slice. Note that although MD1 (RAM disk) and MD0 (ROM disk) drives are listed in the Disk boot line, they are not “bootable” disks because they have no system tracks on them. Attempting to boot to one of them, will fail -with a “Disk not bootable\!” error message and return to the loader +with a “Disk not bootable!” error message and return to the loader prompt. # Operating Systems @@ -739,16 +737,16 @@ most stable and you are less likely to encounter problems. ### Notes - - You can change media, but it must be done while at the OS command +- You can change media, but it must be done while at the OS command prompt and you **must** warm start CP/M by pressing ctrl-c. This is a CP/M 2.2 constraint and is well documented in the DRI manuals. - - The original versions of DDT, DDTZ, and ZSID used the RST 38 vector +- The original versions of DDT, DDTZ, and ZSID used the RST 38 vector which conflicts with interrupt mode 1 use of this vector. The DDT, DDTZ, and ZSID applications in RomWBW have been modified to use RST 30 to avoid this issue. - - Z-System applications will not run under CP/M 2.2. For example, the +- Z-System applications will not run under CP/M 2.2. For example, the `LDDS` date stamper will not run. ## ZSDOS 1.1 @@ -767,12 +765,12 @@ Manual.pdf”). ### Notes - - Although most CP/M 2.2 applications will run under Z-System, some +- Although most CP/M 2.2 applications will run under Z-System, some may not work as expected. The best example is PIP which is not aware of the ZSDOS paths and will fail in some scenarios (use `COPY` instead). - - Although ZSDOS can recognize a media change in some cases, it will +- Although ZSDOS can recognize a media change in some cases, it will not always work. You should only change media at a command prompt and be sure to warm start the OS with a ctrl-c. @@ -795,7 +793,7 @@ RomWBW Doc directory. ### Notes - - There is no `DIR` command, you must use `SDZ` instead. If you don’t +- There is no `DIR` command, you must use `SDZ` instead. If you don’t like this, look into the ALIAS facility. ## Digital Research CP/M 3 @@ -812,15 +810,15 @@ tracks. `CPMLDR.SYS` chain loads `CPM3.SYS`. ### Notes - - The `DATE` command cannot yet be used to **set** the RTC. The RTC is +- The `DATE` command cannot yet be used to **set** the RTC. The RTC is used to read the current date/time for file stamping, etc. You can use the `RTC` app to set the RTC clock. - - The `COPYSYS` command described in the DRI CP/M 3 documentation is +- The `COPYSYS` command described in the DRI CP/M 3 documentation is not provided with RomWBW. The RomWBW `SYSCOPY` command is used instead. - - Although CP/M 3 is generally able to run CP/M 2.2 programs, this is +- Although CP/M 3 is generally able to run CP/M 2.2 programs, this is not universally true. This is especially true of the utility programs included with the operating system. For example, the `SUBMIT` program of CP/M 3 is completely different from the `SUBMIT` @@ -836,9 +834,9 @@ tracks of the disk. ### Notes - - `ZPMLDR` is included with ZPM3, but it is not working correctly. +- `ZPMLDR` is included with ZPM3, but it is not working correctly. - - The ZPM operating system is contained in the file called CPM3.SYS +- The ZPM operating system is contained in the file called CPM3.SYS which is confusing, but this is as intended by the ZPM3 distribution. I believe it was done this way to make it easier for users to transition from CP/M 3 to ZPM3. @@ -951,7 +949,7 @@ CP/M slices at the beginning and a FAT filesystem after. Such a hybrid disk can be used to boot an operating system and still have access to FAT files on the FAT portion of the disk. David Reese has prepared a document describing how to do this. It is called -“SC126\_How-To\_No\_2\_Preparing\_an\_SD\_Card\_for\_Use\_with\_SC126\_Rev\_1-5.pdf” +“SC126_How-To_No_2\_Preparing_an_SD_Card_for_Use_with_SC126_Rev_1-5.pdf” and can be found in the Doc\\Contrib directory of the distribution. # Startup Command Processing @@ -1013,7 +1011,7 @@ The standard RomWBW distribution includes it’s own hardware BIOS. However, RomWBW can alternatively be constructed with UNA as the hardware BIOS portion of the ROM. If you wish to use the UNA variant of RomWBW, then just program your ROM with the ROM image called -“UNA\_std.rom” in the Binary directory. This one image is suitable on +“UNA_std.rom” in the Binary directory. This one image is suitable on **all** of the platforms and hardware UNA supports. UNA is customized dynamically using a ROM based setup routine and the @@ -1026,10 +1024,10 @@ images. While John is likely to enhance UNA over time, there are currently a few things that UNA does not support: - - Floppy Drives - - Terminal Emulation - - Zeta 1, N8, RC2014, Easy Z80, and Dyno Systems - - Some older support boards +- Floppy Drives +- Terminal Emulation +- Zeta 1, N8, RC2014, Easy Z80, and Dyno Systems +- Some older support boards The UNA version embedded in RomWBW is the latest production release of UNA. RomWBW will be updated with John’s upcoming UNA release with @@ -1052,8 +1050,8 @@ Prior to attempting to reprogram your actual ROM chip, you may wish to “try” the upgrade. With RomWBW, you can upload a new system image executable and load it from the command line. For each ROM image file (.rom) in the Binary directory, you will also find a corresponding -application file (.com). For example, for SBC\_std.rom, there is also an -SBC\_std.com file. You can upload the .com file to your system using +application file (.com). For example, for SBC_std.rom, there is also an +SBC_std.com file. You can upload the .com file to your system using XModem, then simply run the .com file. You will see your system go through the normal startup process just like it was started from ROM. However, your ROM has not been updated and the next time you boot your @@ -1074,20 +1072,20 @@ following is a typical example of transferring ROM image using XModem and flashing the chip in-situ. E>xm r rom.rom - + XMODEM v12.5 - 07/13/86 RBC, 28-Aug-2019 [WBW], ASCI - + Receiving: E0:ROM.IMG 7312k available for uploads File open - ready to receive To cancel: Ctrl-X, pause, Ctrl-X - + Thanks for the upload - + E>flash write rom.rom FLASH4 by Will Sowerbutts version 1.2.3 - + Using RomWBW (v2.6+) bank switching. Flash memory chip ID is 0xBFB7: 39F040 Flash memory has 128 sectors of 4096 bytes, total 512KB @@ -1135,67 +1133,67 @@ If the disk is bootable, you need to update the system image on the disk using the procedure described below corresponsing to the operating system on your disk. - - **CP/M 2.2** - +- **CP/M 2.2** + Boot to CP/M 2.2 from ROM, then use `SYSCOPY` to update the system image on **all** CP/M 2.2 boot disks/slices. The CP/M 2.2 system image is called CPM.SYS and is found on the ROM disk. For example: - + `B>SYSCOPY C:=CPM.SYS` - - **ZSDOS** - +- **ZSDOS** + Boot to Z-System from ROM, then use `SYSCOPY` to update the system image on **all** ZSDOS boot disks/slices. The ZSDOS system image is called ZSYS.SYS and is found on the ROM disk. For example: - + `B>SYSCOPY C:=ZSYS.SYS` - - **NZCOM** - +- **NZCOM** + NZCOM runs on top of either CP/M 2.2 or ZSDOS. By default, the RomWBW disk image for NZCOM uses ZSDOS. Follow the corresponding procedure above to update the system image on the NZCOM boot disks/slices. - - **CP/M 3** - +- **CP/M 3** + CP/M 3 uses a multi-step boot process involving multiple files. The CP/M 3 boot files are not included on the ROM disk due to space constraints. You will need to transfer the files to your system from the RomWBW distribution directory Binary\\CPM3. - + After this is done, you will need to use `SYSCOPY` to place the CP/M 3 loader image on the boot tracks of all CP/M 3 boot disks/slices. The loader image is called `CPMLDR.SYS`. You must then copy (at a minimum) `CPM3.SYS` and `CCP.COM` onto the disk/slice. Assuming you copied the CP/M 3 boot files onto your RAM disk at A:, you would use: - + A>B:SYSCOPY C:=CPMLDR.SYS A>B:COPY CPM3.SYS C: A>B:COPY CCP.COM C: - - **ZPM3** - +- **ZPM3** + ZPM3 uses a multi-step boot process involving multiple files. The ZPM3 boot files are not included on the ROM disk due to space constraints. You will need to transfer the files to your system from the RomWBW distribution directory Binary\\ZPM3. - + After this is done, you will need to use `SYSCOPY` to place the ZPM3 loader image on the boot tracks of all ZPM3 boot disks/slices. The loader image is called `CPMLDR.SYS`. You must then copy (at a minimum) `CPM3.SYS`, `ZCCP.COM`, `ZINSTAL.ZPM`, and `STARTZPM.COM` onto the disk/slice. Assuming you copied the ZPM3 boot files onto your RAM disk at A:, you would use: - + A>B:SYSCOPY C:=CPMLDR.SYS A>B:COPY CPM3.SYS C: A>B:COPY ZCCP.COM C: A>B:COPY ZINSTAL.ZPM C: A>B:COPY STARTZPM.COM C: - + You may be wondering if the references to `CPMLDR.SYS` and `CPM3.SYS` are typos. They are not. ZPM3 uses the same loader image as CPM3. The ZPM3 main system code file is called `CPM3.SYS` which @@ -1207,18 +1205,18 @@ your hard disk, you need to update them with the latest copies. The following applications are found on your ROM disk. Use COPY to copy them over any older versions of the app on your disk: - - ASSIGN.COM - - SYSCOPY.COM - - MODE.COM - - FDU.COM (was FDTST.COM) - - FORMAT.COM - - XM.COM - - FLASH.COM - - FDISK80.COM - - TALK.COM - - RTC.COM - - TIMER.COM - - INTTEST.COM +- ASSIGN.COM +- SYSCOPY.COM +- MODE.COM +- FDU.COM (was FDTST.COM) +- FORMAT.COM +- XM.COM +- FLASH.COM +- FDISK80.COM +- TALK.COM +- RTC.COM +- TIMER.COM +- INTTEST.COM For example: `B>COPY ASSIGN.COM C:` @@ -1228,8 +1226,8 @@ and then update all copies. These applications are found in the Binary\\Apps directory of the distribution and in all of the disk images. - - FAT.COM - - TUNE.COM +- FAT.COM +- TUNE.COM # System Update @@ -1243,10 +1241,10 @@ and CP/M system. A System Update may be more favorable than a System Upgrade in cases such as: - - Overwriting of the ROM drive is not desired. - - Space is unavailable to hold a full ROMWBW ROM. - - To mimimize time taken to transfer and flash a full ROM. - - Configuration changes are only minor and do not impact disk +- Overwriting of the ROM drive is not desired. +- Space is unavailable to hold a full ROMWBW ROM. +- To mimimize time taken to transfer and flash a full ROM. +- Configuration changes are only minor and do not impact disk applications. The ROMWBW build process generates a system upgrade file along with the @@ -1277,7 +1275,7 @@ file describing the contents in detail. In summary, these directories are: | Application | Description | -| ----------- | --------------------------------------------------------------------------------------------------------------------------------------- | +|-------------|-----------------------------------------------------------------------------------------------------------------------------------------| | Binary | The final output files of the build process are placed here. Most importantly, are the ROM images with the file names ending in “.rom”. | | Doc | Contains various detailed documentation including the operating systems, RomWBW architecture, etc. | | Source | Contains the source code files used to build the software and ROM images. | @@ -1289,7 +1287,7 @@ While I have heavily modified much of the code, I want to acknowledge that much of the work is derived from the work of others in the RetroBrew Computers Community including Andrew Lynch, Dan Werner, Max Scane, David Giles, John Coffman, and probably many others I am not -clearly aware of (let me know if I omitted someone\!). +clearly aware of (let me know if I omitted someone!). I especially want to credit Douglas Goodall for contributing code, time, testing, and advice. He created an entire suite of application programs @@ -1298,21 +1296,21 @@ continue the maintenance of these applications and they have become unusable due to changes within RomWBW. As of RomWBW 2.6, these applications are no longer provided. - - David Giles contributed support for the CSIO support in the SD Card +- David Giles contributed support for the CSIO support in the SD Card driver. - - Ed Brindley contributed some of the code that supports the RC2014 +- Ed Brindley contributed some of the code that supports the RC2014 platform. - - Phil Summers contributed Forth and BASIC in ROM, the AY-3-8910 sound +- Phil Summers contributed Forth and BASIC in ROM, the AY-3-8910 sound driver as well as a long list of general code enhancements. - - Phillip Stevens contributed support for FreeRTOS. - - Curt Mayer contributed the Linux / MacOS build process. - - UNA BIOS and FDISK80 are the products of John Coffman. - - FLASH4 is a product of Will Sowerbutts. - - CLRDIR is a product of Max Scane. - - Tasty Basic is a product of Dimitri Theulings. - - Dean Netherton contributed the sound driver interface and the +- Phillip Stevens contributed support for FreeRTOS. +- Curt Mayer contributed the Linux / MacOS build process. +- UNA BIOS and FDISK80 are the products of John Coffman. +- FLASH4 is a product of Will Sowerbutts. +- CLRDIR is a product of Max Scane. +- Tasty Basic is a product of Dimitri Theulings. +- Dean Netherton contributed the sound driver interface and the SN76489 sound driver. - - The RomWBW Disk Catalog document was produced by Mykl Orders. +- The RomWBW Disk Catalog document was produced by Mykl Orders. Contributions of all kinds to RomWBW are very welcome. @@ -1321,11 +1319,11 @@ Contributions of all kinds to RomWBW are very welcome. The best way to get assistance with RomWBW or any aspect of the RetroBrew Computers projects is via the community forums: - - [RetroBrew Computers +- [RetroBrew Computers Forum](https://www.retrobrewcomputers.org/forum/) - - [RC2014 Google +- [RC2014 Google Group](https://groups.google.com/forum/#!forum/rc2014-z80) - - [retro-comp Google +- [retro-comp Google Group](https://groups.google.com/forum/#!forum/retro-comp) Submission of issues and bugs are welcome at the [RomWBW GitHub diff --git a/Source/BPBIOS/romwbw-m.lib b/Source/BPBIOS/romwbw-m.lib new file mode 100644 index 00000000..ae668815 --- /dev/null +++ b/Source/BPBIOS/romwbw-m.lib @@ -0,0 +1,97 @@ +;:::::::::::::::::::::::::::::::::::::::::::::::********************** +; B/P BIOS Configuration and Equate File. ** System Dependant ** +; - Retro-Brew Processors W/ RomWBW HBIOS - ********************** +; HBIOS specific customizations +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; BIOS Configuration Equates and Macros +; +; NOTE: Must make sure settings below match hardware and +; HBIOS configuration. +; +HBIOS EQU YES ; Use HBIOS functions +HBLOC EQU 0FE00H ; Location of HBIOS proxy (used if not INTPXY) +; +; Set exactly one of the following to YES to specify platform +; +SBC EQU NO +ZETA EQU NO +ZETA2 EQU NO +N8 EQU NO +MK4 EQU YES +; +; SIMH SUPPORT - only used with SBC + IF SBC +SIMH EQU YES ; Set yes if running on SimH + ELSE +SIMH EQU NO + ENDIF +; +; Set to YES FOR BIOS clock support else NO If no clock +; +HBCLK EQU YES ; HBIOS clock driver +; +; Set HB_IODEV to appropriate console device +; +HB_IODEV EQU 0 ; Assume we want to use first HBIOS serial device + ; Change if using PROPIO etc. +; +; Set HB_HDDEV to appropriate hard disk driver +; +HB_HDDEV EQU 2 ; Assumes disk device #2 is first hard disk device +; +; Set HB_MDDEV to appropriate memory disk driver +; +HB_MDDEV EQU 0 ; Assumes disk device #0 is ROM disk device +; +; Floppy disk support +; + IF MK4 or SIMH +DRV_O SET NO ; YES if system has flopy drives +DRV_P SET NO ; YES if system has flopy drives + ENDIF ;MK4 or SIMH +; +; RAM/ROM disk sizes expressed as count of 2K blocks +; +HB_RAMBLKS EQU 192 ; 512K - 128K reserved / 2K per block +HB_ROMBLKS EQU 192 ; 512K - 128K reserved / 2K per block +;HB_ROMBLKS EQU 448 ; 1024K - 128K reserved / 2K per block +; +; Layout of RAM banks +; + IF SBC OR ZETA OR ZETA2 OR MK4 +BID_RAMD EQU 80H +BID_RAMM EQU 8BH +BID_SYS EQU 8CH +BID_HB EQU 8DH +BID_USR EQU 8EH +BID_COM EQU 8FH + ENDIF + IF N8 +BID_RAMD EQU 80H +BID_RAMM EQU 9BH +BID_SYS EQU 9CH +BID_HB EQU 9DH +BID_USR EQU 9EH +BID_COM EQU 9FH + ENDIF +; + IF INTPXY +MEMTOP EQU 0FFE0H - 1 ; Start of HBIOS 32 byte control block + ELSE +MEMTOP EQU HBLOC - 1 ; Start of HBIOS 512 byte proxy + ENDIF + + IF INTPXY +HB_EI MACRO + ENDM +HB_DI MACRO + ENDM + ELSE +HB_EI MACRO + EI + ENDM +HB_DI MACRO + DI + ENDM + ENDIF + \ No newline at end of file diff --git a/Source/BPBIOS/romwbw-s.lib b/Source/BPBIOS/romwbw-s.lib new file mode 100644 index 00000000..e1dc3783 --- /dev/null +++ b/Source/BPBIOS/romwbw-s.lib @@ -0,0 +1,97 @@ +;:::::::::::::::::::::::::::::::::::::::::::::::********************** +; B/P BIOS Configuration and Equate File. ** System Dependant ** +; - Retro-Brew Processors W/ RomWBW HBIOS - ********************** +; HBIOS specific customizations +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; BIOS Configuration Equates and Macros +; +; NOTE: Must make sure settings below match hardware and +; HBIOS configuration. +; +HBIOS EQU YES ; Use HBIOS functions +HBLOC EQU 0FE00H ; Location of HBIOS proxy (used if not INTPXY) +; +; Set exactly one of the following to YES to specify platform +; +SBC EQU YES +ZETA EQU NO +ZETA2 EQU NO +N8 EQU NO +MK4 EQU NO +; +; SIMH SUPPORT - only used with SBC + IF SBC +SIMH EQU YES ; Set yes if running on SimH + ELSE +SIMH EQU NO + ENDIF +; +; Set to YES FOR BIOS clock support else NO If no clock +; +HBCLK EQU YES ; HBIOS clock driver +; +; Set HB_IODEV to appropriate console device +; +HB_IODEV EQU 0 ; Assume we want to use first HBIOS serial device + ; Change if using PROPIO etc. +; +; Set HB_HDDEV to appropriate hard disk driver +; +HB_HDDEV EQU 2 ; Assumes disk device #2 is first hard disk device +; +; Set HB_MDDEV to appropriate memory disk driver +; +HB_MDDEV EQU 0 ; Assumes disk device #0 is ROM disk device +; +; Floppy disk support +; + IF MK4 or SIMH +DRV_O SET NO ; YES if system has flopy drives +DRV_P SET NO ; YES if system has flopy drives + ENDIF ;MK4 or SIMH +; +; RAM/ROM disk sizes expressed as count of 2K blocks +; +HB_RAMBLKS EQU 192 ; 512K - 128K reserved / 2K per block +HB_ROMBLKS EQU 192 ; 512K - 128K reserved / 2K per block +;HB_ROMBLKS EQU 448 ; 1024K - 128K reserved / 2K per block +; +; Layout of RAM banks +; + IF SBC OR ZETA OR ZETA2 OR MK4 +BID_RAMD EQU 80H +BID_RAMM EQU 8BH +BID_SYS EQU 8CH +BID_HB EQU 8DH +BID_USR EQU 8EH +BID_COM EQU 8FH + ENDIF + IF N8 +BID_RAMD EQU 80H +BID_RAMM EQU 9BH +BID_SYS EQU 9CH +BID_HB EQU 9DH +BID_USR EQU 9EH +BID_COM EQU 9FH + ENDIF +; + IF INTPXY +MEMTOP EQU 0FFE0H - 1 ; Start of HBIOS 32 byte control block + ELSE +MEMTOP EQU HBLOC - 1 ; Start of HBIOS 512 byte proxy + ENDIF + + IF INTPXY +HB_EI MACRO + ENDM +HB_DI MACRO + ENDM + ELSE +HB_EI MACRO + EI + ENDM +HB_DI MACRO + DI + ENDM + ENDIF + \ No newline at end of file diff --git a/Source/BPBIOS/z3basefn.lib b/Source/BPBIOS/z3basefn.lib new file mode 100644 index 00000000..a0fa4864 --- /dev/null +++ b/Source/BPBIOS/z3basefn.lib @@ -0,0 +1,152 @@ +; z3base.fp -- B/P Bios System Z3 Definition File for a fully +; banked system with 32 byte external HBIOS proxy and +; internal proxy. + +; This file is adapted from the basic Z3BASE.LIB configuration file used for +; most ZCPR33 systems. It has added the new definitions for the Resident +; User Space defined in B/P Bios descriptions. +;========================================================================= +;== NOTE: The Starting Address of the User Space marks the lower == +;== base of memory and MUST be entered. B/P Bios Utilities use == +;== this address to locate many portions of the operating system. == +;========================================================================= +; To change your systems definition, first sketch out the memory map in the +; comment table, then set the equates to reflect the memory map, doing any +; required calculations for element sizes and required spaces. As an +; alternative, just leave this file alone and configure everything with +; the utilities provided. For example reserve top 1k for HBIOS and no IOP. + +; FFE0 - FFFF 32 Bytes HBIOS RESERVED AREA (mini proxy) +; FFB0 - FFDF 48 Bytes ZCPR3 External Stack (must be 48 bytes) +; FE00 - FFAF 432 Bytes Named Directory Buffer +; FD00 - FDFF 256 Bytes Multiple Command Line Buffer +; FC00 - FCFF 256 Bytes Environment Descriptor +; Bytes 00H-7FH: Z3 Parameters +; Bytes 80H-FFH: Z3 TCAP +; FBFF 1 Byte Wheel byte +; FBF4 - FAFE 11 Bytes Path (5 elements) +; FBD0 - FAF3 36 Bytes ZCPR3 External FCB +; FB80 - FACF 80 Bytes ZCPR3 Message Buffers +; FB00 - FA7F 128 Bytes ZCPR3 Shell Stack +; F900 - FAFF 512 Bytes Flow Command Package +; F900 - F900 0 KBytes Resident Command Package +; F900 - F900 0 KBytes IO Package - no IOP +; F900 - F900 0 KBytes Resident User Space (no clk drvr needed) + +; The remainder is for the Operating System. Exact sizes vary depending +; primarily on the Number and sizes of Hard Drive Partitions, typically: + +; EF00 - F8FF 2.75 KBytes B/P BIOS (unbanked version) +; E580 - EEFF 3.375 KBytes ZSDOS 2.0 BDOS +; DD80 - E47F 2 KBytes ZCPR 4.1 Command Processor +; 0100 - C5FF ~50 KBytes Transient Program Area +; 0000 - 00FF 256 Bytes Standard CP/M Buffers +;======================================================================== + +FALSE EQU 0 +TRUE EQU NOT FALSE + +YES EQU TRUE +NO EQU FALSE + +; The External Stack is placed in the very top position in memory. It is +; mandatory for B/P Bios and ZCPR 3.3. + +; FFB0 - FFDF 48 Bytes ZCPR3 External Stack (must be 48 bytes) +;EXTSTK EQU 0FBD0H ; ZCPR3 External Stack +EXTSTK EQU MEMTOP+1-48 ; ZCPR3 External Stack +EXTSTKS EQU YES + +; ZCPR3 Named Directory Buffer definition. +; FE00 - FFAF 432 Bytes Named Directory Buffer -23 names +Z3NDIRS EQU 23 ; Number of Named Directory Elements +; F800 - F8FF 256 Bytes Named Directory Buffer - 14 NAMES +NDIRSZ EQU Z3NDIRS * 18 + 1 + ; (NDIR Size = Z3NDIRS * 18 + 1 = 433 Bytes) +Z3NDIR EQU ((EXTSTK-NDIRSZ)/256)*256 ; Start of Named Directory Buffer + +; The Multiple Command Line Buffer is placed in the Top Page of Memory to +; place it above the Environment. It is mandatory for ZCPR 3.3. +; FD00 - FDFF 256 Bytes +;Z3CL EQU 0FB00H ; ZCPR3 Command Line Buffer +;Z3CLS EQU 208-5 ; Size of Command Line Buffer-5 +Z3CLS EQU 256-5 ; Size of Command Line Buffer-5 +Z3CL EQU Z3NDIR-Z3CLS-5 ; ZCPR3 Command Line Buffer + +; The ZCPR3 External Environment Descriptor is mandatory B/P Bios & ZCPR 3.3. +; The Environment Descriptor MUST begin on an even Page Boundary (xx00H). + +; FC00 - FCFF 256 Bytes Environment Descriptor +Z3ENVS EQU 2 ; Size of Env Descriptor in 128-Byte Blks +Z3ENV EQU (Z3CL-Z3ENVS*128) and 0FF00H + +; The ZCPR3 Wheel Byte is mandatory for ZCPR 3.3. + +; FBFF 1 Byte Wheel byte +Z3WHLS EQU YES +Z3WHL EQU Z3ENV-1 ; Wheel Byte Address + +; The Path is mandatory for ZCPR 3.3. + +; FBF4 - FBFE 11 Bytes Path (5 elements) +EXPATHS EQU 5 ; (Path Size = EXPATHS*2 + 1 = 11 bytes) + ; This defines 5 2-byte Path Elements +EXPATH EQU Z3WHL-EXPATHS*2-1 ; External Path starting Address + +; The ZCPR3 External FCB is mandatory for ZCPR 3.3. + +; FBD0 - FBF3 36 Bytes ZCPR3 External FCB +EXTFCBS EQU YES +EXFCBSZ EQU 36 +EXTFCB EQU EXPATH-EXFCBSZ ; 36-Byte ZCPR3 External FCB + +; The ZCPR3 Message Buffers are mandatory for ZCPR 3.3. + +; FB80 - FBCF 80 Bytes ZCPR3 Message Buffers +Z3MSGS EQU YES +Z3MSGSZ EQU 80 ; size of buffer +Z3MSG EQU EXTFCB-Z3MSGSZ ; 80-Byte ZCPR3 Message Buffer + +; Shell Stack definition. Set SHSTKS to 0 to eliminate Shell Stack + +; FB00 - FB7F 128 Bytes ZCPR3 Shell Stack +SHSTKS EQU 4 ; Number of SHSIZE-Byte Shell Stack entries +SHSIZE EQU 32 ; (Stack Size = SHSTKS * SHSIZE = 128 Bytes) +SHSTK EQU Z3MSG-SHSTKS*SHSIZE ; Shell Stack Starting Address + +; Flow Command Package definition. Set FCPS to 0 to eliminate FCP + +; F900 - FAFF 512 Bytes Flow Command Package +FCPS EQU 4 ; (FCP Size = 128 * FCPS = 512 Bytes) +;FCPS EQU 0 ; (FCP Size = 128 * FCPS = 512 Bytes) +FCP EQU SHSTK-FCPS*128 ; Start of Flow Command Package + +; Resident Command Processor Definition. Set RCPS to 0 to eliminate RCP + +; F900 - F900 0 KBytes Resident Command Package +;RCPS EQU 16 ; (RCP Size = 128 * RCPS = 2 kBytes) +RCPS EQU 0 ; (RCP Size = 128 * RCPS = 2 kBytes) +RCP EQU FCP-RCPS*128 ; Start of Resident Command Processor + +; IO Package definition. Set IOPS to 0 to eliminate IOP + +;IOP EQU 0EC00H ; Start of IO Package +; F900 - F900 0 KBytes IO Package +IOPS DEFL 0 ; (IOP Size = 128 * IOPS = 0 kBytes) +;IOPS DEFL 12 ; (IOP Size = 128 * IOPS = 1.5 kBytes) +;IOPS DEFL 10 ; (IOP Size = 128 * IOPS = 1.25 kBytes) +;OPS DEFL 3 ; (IOP Size = 128 * IOPS = 1.25 kBytes) +IOP EQU RCP-IOPS*128 ; Start of IO Package + +;========================================================================= +; Resident User Space Definition. Set USPCS to 0 to eliminate USPC. +; The USPC Value marks the Lower Limit of Reserved Common High Memory and +; MUST BE PRESENT! + +USPCS EQU 0 ; (USPC Size = 128 * USPCS = 0 kBytes) +;USPCS EQU 6 ; (USPC Size = 128 * USPCS = 0.75 kBytes) +; F900 - F900 0.75 KBytes Resident User Space +USPC EQU IOP-USPCS*128 ; Start of Resident User Space (MANDATORY) + +;--- End of Z3BASE.LIB --- + \ No newline at end of file diff --git a/Source/BPBIOS/z3baseft.lib b/Source/BPBIOS/z3baseft.lib new file mode 100644 index 00000000..465ae070 --- /dev/null +++ b/Source/BPBIOS/z3baseft.lib @@ -0,0 +1,148 @@ +; z3base.fp -- fully banked B/P Bios System Z3 Definition File for HBIOS +; with 512 byte external proxy (no internal proxy). + +; This file is adapted from the basic Z3BASE.LIB configuration file used for +; most ZCPR33 systems. It has added the new definitions for the Resident +; User Space defined in B/P Bios descriptions and modified for an HBIOS +; implementation with a full external HBIOS proxy (i.e. proxy not internal +; to BPBIOS). +; +;========================================================================= +;== NOTE: The Starting Address of the User Space marks the lower == +;== base of memory and MUST be entered. B/P Bios Utilities use == +;== this address to locate many portions of the operating system. == +;========================================================================= +; To change your systems definition, first sketch out the memory map in the +; comment table, then set the equates to reflect the memory map, doing any +; required calculations for element sizes and required spaces. As an +; alternative, just leave this file alone and configure everything with +; the utilities provided. + +; FE00 - FFFF 512 Bytes HBIOS proxy AREA in the top of ram +; FD00 - FDFF 256 Bytes Multiple Command Line Buffer +; FC00 - FCFF 256 Bytes Environment Descriptor +; Bytes 00H-7FH: Z3 Parameters +; Bytes 80H-FFH: Z3 TCAP +; FBFF 1 Byte Wheel byte +; FBF4 - FBFE 11 Bytes Path (5 elements) +; FBD0 - FBF3 36 Bytes ZCPR3 External FCB +; FB80 - FBCF 80 Bytes ZCPR3 Message Buffers +; FB00 - FB7F 128 Bytes ZCPR3 Shell Stack (4x32) +; FAD0 - FAFF 48 Bytes ZCPR3 External Stack (must be 48 bytes) +; F900 - FACF 464 Bytes Named Directory Buffer (25 entries) +; F700 - F9FF 512 Bytes Flow Command Package +; F700 - F700 0 KBytes Resident Command Package +; F700 - F700 0 KBytes IO Package - no IOP +; F700 - F700 0 Bytes Resident User Space (no clock driver needed) + +; The remainder is for the Operating System. Exact sizes vary depending +; primarily on the Number and sizes of Hard Drive Partitions, typically: + +; EC00 - F6FF 22 recs B/P BIOS (unbanked version) +; E280 - EBFF 19 recs ZSDOS 2.0 BDOS +; DA80 - E27F 2 KBytes ZCPR 4.1 Command Processor +; 0100 - C5FF ~50 KBytes Transient Program Area +; 0000 - 00FF 256 Bytes Standard CP/M Buffers +;======================================================================== + +FALSE EQU 0 +TRUE EQU NOT FALSE + +YES EQU TRUE +NO EQU FALSE + +; The Multiple Command Line Buffer is mandatory for ZCPR 3.3. 3.4 & 4.1. +; FD00 - FDCF 208 Bytes +;Z3CL EQU 0FB00H ; ZCPR3 Command Line Buffer +Z3CLS EQU 256-5 ; Size of Command Line Buffer-5 +Z3CL EQU MEMTOP+1-Z3CLS-5 ; ZCPR3 Command Line Buffer + +; The ZCPR3 External Environment Descriptor is mandatory B/P Bios & ZCPR 3.3. +; The Environment Descriptor MUST begin on an even Page Boundary (xx00H). +; FC00 - FCFF 256 Bytes Environment Descriptor +Z3ENVS EQU 2 ; Size of Env Descriptor in 128-Byte Blks +Z3ENV EQU (Z3CL-Z3ENVS*128) and 0FF00H + +; The ZCPR3 Wheel Byte is mandatory for ZCPR 3.3. + +; FBFF 1 Byte Wheel byte +Z3WHLS EQU YES +Z3WHL EQU Z3ENV-1 ; Wheel Byte Address + +; The Path is mandatory for ZCPR 3.3. + +; FBF4 - FBFE 11 Bytes Path (5 elements) +EXPATHS EQU 5 ; (Path Size = EXPATHS*2 + 1 = 11 bytes) + ; This defines 5 2-byte Path Elements +EXPATH EQU Z3WHL-EXPATHS*2-1 ; External Path starting Address + +; The ZCPR3 External FCB is mandatory for ZCPR 3.3. + +; FBD0 - FBF3 36 Bytes ZCPR3 External FCB +EXTFCBS EQU YES +EXFCBSZ EQU 36 +EXTFCB EQU EXPATH-EXFCBSZ ; 36-Byte ZCPR3 External FCB + +; The ZCPR3 Message Buffers are mandatory for ZCPR 3.3. + +; FB80 - FBCF 80 Bytes ZCPR3 Message Buffers +Z3MSGS EQU YES +Z3MSGSZ EQU 80 ; size of buffer +Z3MSG EQU EXTFCB-Z3MSGSZ ; 80-Byte ZCPR3 Message Buffer + +; Shell Stack definition. Set SHSTKS to 0 to eliminate Shell Stack + +; FB00 - FB7F 128 Bytes ZCPR3 Shell Stack +SHSTKS EQU 4 ; Number of SHSIZE-Byte Shell Stack entries +SHSIZE EQU 32 ; (Stack Size = SHSTKS * SHSIZE = 128 Bytes) +SHSTK EQU Z3MSG-SHSTKS*SHSIZE ; Shell Stack Starting Address + +; The External Stack is mandatory for B/P Bios and ZCPR 3.3. +; FAD0 - FAFF 48 Bytes ZCPR3 External Stack (must be 48 bytes) +;EXTSTK EQU 0FAD0H ; ZCPR3 External Stack +EXTSTK EQU SHSTK-48 ; ZCPR3 External Stack +EXTSTKS EQU YES + +; ZCPR3 Named Directory Buffer definition. Set Z3NDIRS to 0 to eliminate +; the named directory buffer. +; F900 - FACF 464 Bytes ; Named Directory Buffer - 25 NAMES +Z3NDIRS EQU 25 ; Number of Named Directory Elements +NDIRSZ EQU Z3NDIRS * 18 + 1 + ; (NDIR Size = Z3NDIRS * 18 + 1 = 451 Bytes) +Z3NDIR EQU SHSTK-(NDIRSZ/256+1)*256 ; Start of Named Directory Buffer + +; Flow Command Package definition. Set FCPS to 0 to eliminate FCP + +; F700 - F8FF 512 Bytes Flow Command Package +FCPS EQU 4 ; (FCP Size = 128 * FCPS = 512 Bytes) +;FCPS EQU 0 ; (FCP Size = 128 * FCPS = 0 Bytes) +FCP EQU Z3NDIR-FCPS*128 ; Start of Flow Command Package + +; Resident Command Processor Definition. Set RCPS to 0 to eliminate RCP + +; F700 - F700 0 KBytes Resident Command Package +;RCPS EQU 16 ; (RCP Size = 128 * RCPS = 2 kBytes) +RCPS EQU 0 ; (RCP Size = 128 * RCPS = 0 kBytes) +RCP EQU FCP-RCPS*128 ; Start of Resident Command Processor + +; IO Package definition. Set IOPS to 0 which eliminates IOP + +;IOP EQU 0EC00H ; Start of IO Package +; F700 - F700 0 KBytes IO Package +IOPS DEFL 0 ; (IOP Size = 128 * IOPS = 0 kBytes) +;IOPS DEFL 12 ; (IOP Size = 128 * IOPS = 1.5 kBytes) +;IOPS DEFL 10 ; (IOP Size = 128 * IOPS = 1.25 kBytes) +IOP EQU RCP-IOPS*128 ; Start of IO Package + +;========================================================================= +; Resident User Space Definition. Set USPCS to 0 to eliminate USPC. +; The USPC Value marks the Lower Limit of Reserved Common High Memory and +; MUST BE PRESENT! + +USPCS EQU 0 ; (USPC Size = 128 * USPCS = 0 kBytes) +;USPCS EQU 6 ; (USPC Size = 128 * USPCS = 0.75 kBytes) +; F700 - F700 0 KBytes Resident User Space +USPC EQU IOP-USPCS*128 ; Start of Resident User Space (MANDATORY) + +;--- End of Z3BASE.LIB --- + \ No newline at end of file