From 5264f2f4d2a2be96c0911db2c4d8b7bb84bd9309 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Fri, 20 Mar 2020 10:44:53 -0700 Subject: [PATCH] Documentation Updates --- Doc/RomWBW Architecture.pdf | Bin 369335 -> 369353 bytes Doc/RomWBW Getting Started.pdf | Bin 145988 -> 145885 bytes Doc/ZCPR Manual.pdf | Bin 47142 -> 53776 bytes ReadMe.md | 340 ++++---- ReadMe.txt | 315 +++---- Source/Clean.cmd | 1 - Source/Doc/Architecture.md | 68 +- Source/Doc/Common.inc | 4 +- Source/Doc/GettingStarted.md | 173 ++-- Source/Doc/ZCPR Manual/Main.ltx | 25 - Source/Doc/ZCPR Manual/zcpr.ltx | 1384 ------------------------------- Source/Makefile | 1 - 12 files changed, 461 insertions(+), 1850 deletions(-) delete mode 100644 Source/Doc/ZCPR Manual/Main.ltx delete mode 100644 Source/Doc/ZCPR Manual/zcpr.ltx diff --git a/Doc/RomWBW Architecture.pdf b/Doc/RomWBW Architecture.pdf index 9cc8f5761e5b9c209ec59656166e2877db8ba6ba..0c2782cc2ed38cdbfffe01bab3d6bcbcb93765cc 100644 GIT binary patch delta 38270 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 delta 38717 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

G4khg<3HnYo)Y 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 >&(1$~e_B0f+u8Av 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 delta 74391 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

J!@;o&j@7yw*Qkzb@2 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­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 diff --git a/Doc/ZCPR Manual.pdf b/Doc/ZCPR Manual.pdf index ce5f80b8033e872d74847844a538510e99bdec57..50668527d28cc91147928ddaf9b03ae40307467c 100644 GIT binary patch literal 53776 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 literal 47142 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 diff --git a/ReadMe.md b/ReadMe.md index 0899e120..0b5dcde6 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -2,7 +2,8 @@ ## Z80/Z180 System Software -Version 2.9.2 of March 18, 2020 +Version 2.9.2 +Friday 20 March 2020 Wayne Warthen @@ -26,7 +27,7 @@ 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) + - [RetroBrew Computers](https://www.retrobrewcomputers.org) - [RC2014](https://rc2014.co.uk) - [retro-comp](https://groups.google.com/forum/#!forum/retro-comp) @@ -79,11 +80,12 @@ distributions are found on the [releases page](https://github.com/wwarthen/RomWBW/releases) of the repository. On this page, you will probably see both pre-releases as well as normal releases. Unless you have a specific reason, I suggest you stick to the -most recent normal (not pre-release) release. Expand the “Assets” +most recent normal release (not pre-release). Expand the “Assets” drop-down for the release you want to download, then select the asset named RomWBW-vX.X.X-Package.zip. The Package asset includes all pre-built ROM and Disk images as well as full source code. The other -assets called Source Code do not have the pre-built ROM or Disk Images. +assets are Source Code only and do not have the pre-built ROM or disk +images. The pre-built ROM images will automatically detect and support a reasonable range of devices including serial ports, video adapters, @@ -109,13 +111,13 @@ 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: -| Platform | ROM Image File | Baud | Description | -| ------------- | --------------- | ------ | ----------------------------------------------- | -| SBC V1/V2 | 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 | +| Platform | ROM Image File | Baud | Description | +| ------------- | --------------- | -----: | ----------------------------------------------- | +| SBC V1/V2 | 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 | | RC2014 Z80 | RCZ80\_std.rom | 115200 | RC2014 w/ Z80 CPU, requires 512K RAM/ROM module | | RC2014 Z180\* | RCZ180\_ext.rom | 115200 | RC2014 w/ Z180 CPU & 512K banked RAM/ROM module | | RC2014 Z180\* | RCZ180\_nat.rom | 115200 | RC2014 w/ Z180 CPU & 512K native RAM/ROM module | @@ -123,12 +125,12 @@ the appropriate ROM image: | 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 | +| Dyno | DYNO\_std.rom | 38400 | Steve Garcia’s Z180 Dyno 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 memory module. The “ext” ROM supports Spencer’s official 512K RAM/ROM -banked memory module. The “nat” ROM supports any of the thrid-party Z180 +banked memory module. The “nat” ROM supports any of the third-party Z180 native memory modules. RomWBW will automatically attempt to detect and support typical add-on @@ -136,8 +138,8 @@ components for each of the systems supported. More information on the required system configuration and optional supported components for each ROM is found in the file called “RomList.txt” in the Binary directory. All pre-built ROM images are simple 512KB binary images. If your system -utilizes a 1MB ROM, you can just program the image into the first 512KB -of the ROM. +utilizes a larger ROM chip, you can just program the image into the +first 512KB of the ROM. Connect a serial terminal or computer with terminal emulation software to the primary serial port of your CPU board. You may need to refer to @@ -184,16 +186,19 @@ not been updated and the next time you boot your system, it will revert to the system image contained in ROM. You may find that you are unable to load the .com file because it is too large to fit in available application RAM (TPA). Unfortunately, in this case, you will not be able -to use the .com file to start your system. +to use the .com file mechanism to start your system. -If you do not have easy access to a ROM programmer, it is entirely +If you do not have easy access to a ROM programmer, it is usually possible to reprogram your system ROM using the FLASH utility from Will Sowerbutts. This application called FLASH.COM can be found on the ROM drive of any running system. In this case, you would need to transfer -the new ROM image (.rom) over to your system using XModem. The ROM image -will be too large to fit on your RAM drive, so you will need to transfer -it to a larger storage drive. Once the ROM image is on your system, you -can use the FLASH application to update your ROM: +the new ROM image (.rom) over to your system using XModem (or one of the +other mechanisms described in the Transferring Files section below). The +ROM image will be too large to fit on your RAM drive, so you will need +to transfer it to a larger storage drive. Once the ROM image is on your +system, you can use the FLASH application to update your ROM. The +following is a typical example of transferring ROM image using XModem +and flashing the chip in-situ. E>xm r rom.img @@ -226,9 +231,9 @@ device yet. Review the boot messages to see if any issues have occurred. Once you are satisfied that the ROM is working well, you will need to update the system images and RomWBW custom applications on your disk drives. The system images and custom applications are matched to the -RomWBW ROM firmware in use. If you attempt to use a disk or applications -that have not been updated to match the current ROM firmware, you are -likely to have odd problems. +RomWBW ROM firmware in use. If you attempt to boot a disk or run +applications that have not been updated to match the current ROM +firmware, you are likely to have odd problems. The simplest way to update your disk media is to just use your modern computer to overwrite the entire media with the latest disk image of @@ -272,7 +277,8 @@ The systems supported by RomWBW all have the ability to use persistent disk media. I am referring to all kinds of disk devices including floppy drives, hard disks, CF Cards, and SD Cards. Some systems have disk interfaces built-in, while others will require add-in cards. You will -need to refer to the documentation for your system. +need to refer to the documentation for your system for your specific +options. In the RomWBW bootup messages, you will see hardware discovery messages. If you have a disk drive interface, you should see messages listing @@ -304,7 +310,7 @@ an example of this: C:=IDE0:0 D:=IDE0:1 -You will probably see mroe drive letters than this. The drive letter +You will probably see more drive letters than this. The drive letter assignment process is described in more detail later in this document. Be aware that RomWBW will only assign drive letters to disk interfaces that actually have media in them. If you do not see drive letters @@ -322,13 +328,13 @@ is also explained later in this document. Once you are seeing drive letters referring to your disk media, you can follow the instructions below to begin using the disk media with the -operating system. Your disk media **must** be initialized prior to be +operating system. Your disk media **must** be initialized prior to being used. There are two ways to initialize your media for use. You can initialize the media in-place using your RomWBW system. This process is described below under Disk Initialization. In this scenario, you will need to subsequently copy any files you want to use onto the -newly initialized disk. +newly initialized disk (see Transferring Files). Alternatively, you can use your modern Windows, Linux, or Mac computer to copy a disk image onto the disk media. RomWBW comes with a variety of @@ -343,40 +349,38 @@ filesystem. On RomWBW, the initialization is done using the CLRDIR application. For example if your C: drive has been assigned to a storage device, you would use `CLRDIR C:` to initialize C: and prepare it hold files. Note that CLRDIR will prompt you for confirmation and you must -respond with a **capital** ‘Y’ to confirm. Once CLDIR has completed, you -can copy files onto the drive, for example `COPY *.* C:`. Be very +respond with a **capital** ‘Y’ to confirm. Once `CLDIR` has completed, +you can copy files onto the drive, for example `COPY *.* C:`. Be very careful to pay attention to your drive letter assignments prior to -running CLRDIR to avoid accidentally wiping out a filesystem that has +running `CLRDIR` to avoid accidentally wiping out a filesystem that has data on it. -Running CLRDIR on a disk device is roughly equivalent to running FORMAT -on MS-DOS. Note that unlike MS-DOS you do **not** partition your mass -storage device. CP/M knows nothing about disk partitions. You may notice -a partitioning application on your ROM disk (FDISK80), but this is -strictly for an advanced technique of adding an MS-DOS FAT filesystem to -your media in addition to the CP/M area. Do not use FDISK80 unless you -are specifically attempting to add an MS-DOS FAT filesystem to your +Running `CLRDIR` on a disk device is roughly equivalent to running +FORMAT on MS-DOS. Note that unlike MS-DOS you do **not** partition your +mass storage device. CP/M knows nothing about disk partitions. You may +notice a partitioning application on your ROM disk (FDISK80), but this +is strictly for an advanced technique of adding an MS-DOS FAT filesystem +to your media in addition to the CP/M area. Do not use FDISK80 unless +you are specifically attempting to add an MS-DOS FAT filesystem to your media. If you are using a floppy drive, you will need to physically format your floppy disk prior to use. This is only required for floppy disks, not hard disk, CF Cards, or SD Cards, etc. To format a floppy drive, you can -use the interactive application FDU. FDU is not terribly user friendly, -but is generally documented in the file “FDU.txt” found in the Doc -directory of the distribution. It is not necessary to run CLRDIR on a -floppy disk after physically formatting it – the directory is cleared as -part of the formatting. - -## Booting Disks +use the interactive application `FDU`. FDU is not terribly user +friendly, but is generally documented in the file “FDU.txt” found in the +Doc directory of the distribution. It is not necessary to run `CLRDIR` +on a floppy disk after physically formatting it – the directory is +cleared as part of the formatting. Once you have initialized a disk device and copied your desired files -onto it, you may want to boot directly to this disk device at startup. -On CP/M filesystems, you must perform one additional step to make a disk -bootable. Specifically, you need to place a copy of the oeoprating -system on the system tracks of the disk. This is done using the -`SYSCOPY` command. Let’s say you have prepared drive C: by initializing -it with `CLRDIR` and copied some files onto it. You can now make C: -bootable by running the following command: +onto it, you may want to make the disk bootable. On CP/M filesystems, +you must perform one additional step to make a disk bootable. +Specifically, you need to place a copy of the operating system on the +system tracks of the disk. This is done using the `SYSCOPY` command. +Let’s say you have prepared drive C: by initializing it with `CLRDIR` +and copied some files onto it. You can now make C: bootable by running +the following command: `B>SYSCOPY C:=B:ZSYS.SYS` @@ -395,49 +399,9 @@ you want CP/M 2.2 instead, you would replace `B:ZSYS.SYS` with Transfer system image from B:ZSYS.SYS to C: (Y/N)? Y Reading image... Writing image... Done -After successfully putting the operating system on the disk, you can -restart your system. When you get to the boot loader, notice the line -starting with “Disk:”. This line lists the disk devices that you can -choose to boot directly. - -You will notice that you do not have an option to boot a drive letter -here (like C:). This is because the operating system is not yet loaded. -When you ran `SYSCOPY` previously, remember that C: was assigned to -IDE0:0 which means device IDE0, slice 0. So, to boot the disk that you -just setup with SYSCOPY, you would choose option 1. You will then be -prompted for the slice on IDE0 that you want to boot. For now, just -press enter to choose slice 0. Once you are familiar with slices, you -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 -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 -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 currently “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 prompt. +Once this process succeeds, you will be able to boot directly to the +disk from the boot loader prompt. See the instructions in Booting Disks +for details on this. ## Disk Images @@ -447,8 +411,8 @@ It is generally easier to use these disk images instead of copying all the files over using XModem. You use your modern computer (Windows, Linux, MacOS) to place the disk image onto the disk media, then just move the media over to your system. In this scenario you **do not** run -`CLRDIR` or `SYSCOPY` on the drive(s). The directory prepared and the -disk is already bootable, if it is an operating system. +`CLRDIR` or `SYSCOPY` on the drive(s). The directory is prepared and the +disk is already bootable, if it is an operating system boot disk image. To copy the disk image files onto your actual media (floppy disk, CF Card, SD Card, etc.), you need to use an image writing utility on your @@ -459,7 +423,7 @@ you can use the `dd` command on Linux or MacOS. On Windows, in the For floppy media, you can use RawWriteWin and for hard disk media, you can use Win32DiskImager. In all cases, the image file should be written to the media starting at the very first block or sector of the media. -This will destroy any other data on the media. +This will **destroy** any other data on the media. The disk image files are found in the Binary directory of the distribution. Floppy disk images are prefixed with “fd\_” and hard disk @@ -474,11 +438,11 @@ well as real spinning hard disks. | Floppy | Hard | Description | | ------------- | ------------- | ---------------------------- | -| fd\_cpm22.img | hd\_cpm22.img | DRI CP/M 2.2 bootable disk | -| fd\_zsdos.img | hd\_zsdos.img | ZSDOS 1.1 bootable disk | -| fd\_nzcom.img | hd\_nzcom.img | NZCOM bootable disk | -| fd\_cpm3 | hd\_cpm3.img | DRI CP/M 3 bootable disk | -| fd\_zpm3 | hd\_zpm3.img | ZPM3 bootable disk | +| 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 | hd\_cpm3.img | DRI CP/M 3 boot disk | +| fd\_zpm3 | hd\_zpm3.img | ZPM3 boot disk | | fd\_ws4 | hd\_ws4.img | WordStar v4 application disk | In addition to the disk images above, there is also a special hard disk @@ -512,6 +476,52 @@ boot from disk as is. You do not need to run `SYSCOPY` on them to make them bootable. However, if you upgrade your ROM, you should use `SYSCOPY` to update the system tracks. +## Booting Disks + +When starting your system, following the hardware initialization, you +will see the Boot Loader prompt. In addition, to the ROM boot options, +you will see another line listing the Disk boot options. This line lists +the disk devices that you can choose to boot directly. + +You will notice that you do not have an option to boot a drive letter +here (like C:). This is because the operating system is not yet loaded. +When you ran `SYSCOPY` previously, remember that C: was assigned to +IDE0:0 which means device IDE0, slice 0. So, to boot the disk that you +just setup with `SYSCOPY`, you would choose option 1. You will then be +prompted for the slice on IDE0 that you want to boot. For now, just +press enter to choose slice 0. Once you are familiar with slices, you +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 +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 +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 +prompt. + # General Usage Each of the operating systems and ROM applications included with RomWBW @@ -519,18 +529,18 @@ are sophisticated tools in their own right. It is not reasonable to document their usage here. However, you will find complete manuals in PDF format in the Doc directory of the distribution. The intention of this section is to document the RomWBW specific enhancements to these -OSes. +operating systems. ## ROM Disk In addition to the ROM-based operating systems and applications, the ROM -also contains a ROM disk with a small CP/M filesystem. The contents have -been optimized to provide a core set of tools and applications that are -helpful for either CP/M 2.2 and ZSDOS. Since ZSDOS is CP/M 2.2 -compatible, this works fairly well. However, you will find some files on -the ROM disk that will work with ZSDOS, but will not work on CP/M 2.2. -For example, `LDDS`, which loads the ZSDOS date/time stamper will only -run on ZSDOS. +also contains a ROM disk with a small CP/M filesystem. The contents of +the ROM disk have been chosen to provide a core set of tools and +applications that are helpful for either CP/M 2.2 or ZSDOS. Since ZSDOS +is CP/M 2.2 compatible, this works fairly well. However, you will find +some files on the ROM disk that will work with ZSDOS, but will not work +on CP/M 2.2. For example, `LDDS`, which loads the ZSDOS date/time +stamper will only run on ZSDOS. ## Drive Letter Assignment @@ -577,8 +587,8 @@ accessible to any of the operating systems. Since storage devices today are quite large, RomWBW implements a mechanism called slicing to allow up to 256 8MB filesystems on a single large storage device. This allows up to 2GB of useable space on a single -media. You can think of slices as a way to refer to the first 256 8MB -chunks of space on a single media. +media. You can think of slices as a way to refer to any of the first 256 +8MB chunks of space on a single media. Of course, the problem is that CP/M-like operating systems have only 16 drive letters (A:-P:) available. Under the covers, RomWBW allows you to @@ -594,10 +604,10 @@ devices, you will see that each device is allocated four drive letters. Referring to slices within a storage device is done by appending a :n where n is the device relative slice number from 0-255. For example, if -you have an IDE device, it will show up as IDE0: in the boot message -meaning the first IDE device. To refer to the second slice of IDE0, you -would type “IDE0:1”. So, if I wanted to use drive letter L: to refer to -the second slice of IDE0, I could use the command `ASSIGN L:=IDE0:1`. +you have an IDE device, it will show up as IDE0: in the boot messages +meaning the first IDE device. To refer to the fourth slice of IDE0, you +would type “IDE0:3”. So, if I wanted to use drive letter L: to refer to +the fourth slice of IDE0, I could use the command `ASSIGN L:=IDE0:3`. There are a couple of rules to be aware of when assigning drive letters. First, you may only refer to a specific device/slice with one drive @@ -618,22 +628,22 @@ so you will know if you make a mistake. There is no tracking of your use of slices – you will need to keep track of your use of slices yourself. Nothing automatically initializes a slice as a file system. You must do -that yourself using `CLRDIR`. Since CLRDIR works on drive letters, make -absolutely sure you know what media and slice are assigned to that drive -letter before using `CLRDIR`. +that yourself using `CLRDIR`. Since `CLRDIR` works on drive letters, +make absolutely sure you know what media and slice are assigned to that +drive letter before using `CLRDIR`. -While it probably obvious, you cannot use slices on any media less than -8MB in size. Specifically, you cannot slice RAM disk, ROM disk, floppy -disks, etc. +While it is probably obvious, you cannot use slices on any media less +than 8MB in size. Specifically, you cannot slice RAM disks, ROM disks, +floppy disks, etc. # Inbuilt ROM Applications -In addition to CP/M 2.2 and Z-System, there are several additional ROM -applications that can be launched directly from ROM. These applications -are not hosted by an operating system and so they are unable to save -files to disk devices. +In addition to CP/M 2.2 and Z-System, there are several ROM applications +that can be launched directly from ROM. These applications are not +hosted by an operating system and so they are unable to save files to +disk devices. -The following options are available at the boot loader prompt: +The following ROM applications are available at the boot loader prompt: | Application | | | ----------- | ------------------------------------------------------ | @@ -657,8 +667,8 @@ The operation of the RomWBW hosted operating systems is enhanced through several custom applications. These applications are functional on all of the OS variants included with RomWBW. -The following custom applications are found on the RomWBW ROM disk and -are, therefore, globally available. +The following custom applications are found on the ROM disk and are, +therefore, globally available. | Application | Description | | ----------- | ------------------------------------------------------------------------------------------------------------------------------------ | @@ -672,7 +682,7 @@ are, therefore, globally available. | FDISK80 | John Coffman’s Z80 hard disk partitioning tool. See documentation in Doc directory. | | FAT | Access MS-DOS FAT filesystems from RomWBW (based on FatFs). | | FLASH | Will Sowerbutts’ in-situ ROM programming utility. | -| CLRDIR | Format the directory areas of a CP/M disk. | +| CLRDIR | Initialize the directory area of a CP/M disk (Max Scane). | Some custom applications do not fit on the ROM disk. They are found on the disk image files or the individual files can be found in the @@ -697,9 +707,9 @@ identical for all hardware supported by RomWBW because RomWBW hides all hardware specifics from the operating system. Note that all of the operating systems included with RomWBW support the -same basic filesystem format. As as result, a formatted filesystem will +same basic filesystem format. As a result, a formatted filesystem will be accessible to any operating system. The only possible issue is that -if you turn of date/time stamping using the newer OSes, the older OSes +if you turn on date/time stamping using the newer OSes, the older OSes will not understand this. Files will not be corrupted, but the date/time stamps may be lost. @@ -748,7 +758,7 @@ OS via an auto command submission process. This is the Digital Research follow-up product to their very popular CP/M 2.2 operating system. While highly compatible with CP/M 2.2, it -features many enhancements. It makes better use of banked memory to +features many enhancements. It makes direct use of banked memory to increase the user program space (TPA). It also has a new suite of support tools and help system. @@ -761,14 +771,14 @@ tracks. ZPM3 is an interesting combination of the features of both CP/M 3 and ZCPR 3. Essentially, it has the features of and compatibility with both. -Like CP/M 3, to make ZPM3 boot disk, you put CPM3.SYS on the system +Like CP/M 3, to make ZPM3 boot disk, you put CPMLDR.SYS on the system tracks of the disk. ## FreeRTOS Note that Phillip Stevens has also ported FreeRTOS to run under RomWBW. -FreeRTOS is not provided in the RomWBW distribution, but is available -from Phillip. +FreeRTOS is not provided in the RomWBW distribution. You can contact +Phillip for availability. # Transferring Files @@ -790,18 +800,18 @@ file on your RomWBW system. Then, you will use your modern computers terminal program to complete the process. The `XM` application generally tries to detect the hardware you are -using and adapt to it. However, you must ensure that you have a -realiable serial connection. You must also ensure that the speed of the -connection is not too fast for XModem to handle. Alternatively, you can -ensure that hardware flow control is working properly. +using and adapt to it. However, you must ensure that you have a reliable +serial connection. You must also ensure that the speed of the connection +is not too fast for XModem to service. Alternatively, you can ensure +that hardware flow control is working properly. There is an odd interaction between XModem and partner terminal programs that can occur. Essentially, after launching `XM`, you must start the -protocol on your modern computer fairly quickly (usually about 20 +protocol on your modern computer fairly quickly (usually in about 20 seconds or so). So, if you do not pick a file on your modern computer quickly enough, you will find that the transfer completes about 16K, -then hangs. The interaction that casuses this is beyond the scope of -this document. +then hangs. The interaction that causes this is beyond the scope of this +document. ## Disk Image Transfers @@ -823,7 +833,7 @@ computer is: This process is a little complicated, but it has the benefit of allowing you to get a lot of files over to your RomWBW system quickly and with -little change of corruption. +little chance of corruption. The process can be run in reverse to get files from your RomWBW computer to a modern computer. @@ -835,14 +845,14 @@ documents. Note that the build scripts for RomWBW create the default disk images supplied with RomWBW. It is relatively easy to customize the contents of the disk images that are part of RomWBW. This is described in more -detail in the Source\\Images driectory of the distribution. +detail in the Source\\Images directory of the distribution. ## FAT Filesystem Transfers -RomWBW provides a mechanism that allows it to read and write files on an +RomWBW provides a mechanism that allows it to read and write files on a FAT formatted disk. This means that you can generally use your modern computer to make an SD Card or CF Card with a standard FAT32 filesystem -on it, then place that media in your RomWBW computer and read/write the +on it, then place that media in your RomWBW computer and access the files. When formatting the media on your modern computer, but sure to pick the @@ -868,23 +878,24 @@ and can be found in the Doc\\Contrib directory of the distribution. # Startup Command Processing -Each of the operating system supported by RomWBW provide a mechanism to +Each of the operating systems supported by RomWBW provide a mechanism to run commands at boot. This is similar to the AUTOEXEC.BAT files from MS-DOS. -With the exception of ZPM3, all operating system will look for a file +With the exception of ZPM3, all operating systems will look for a file called `PROFILE.SUB` on the system drive at boot. If it is found, it will be processed as a standard CP/M submit file. You can read about the use of the SUBMIT facility in the CP/M manuals included in the RomWBW -distribution. +distribution. Note that the boot disk must also have a copy of +`SUBMIT.EXE`. In the case of ZPM3, the file called `STARTZPM.COM` will be run at boot. To customize this file, you use the ZCPR ALIAS facility. You will need to refer to ZCPR documentation for more information on the ALIAS facility. -Note that automatic startup processing generally requires booting to a -disk drive. Since the ROM disk is not writable, there is no simple way +Note that the automatic startup processing generally requires booting to +a disk drive. Since the ROM disk is not writable, there is no simple way to add/edit a `PROFILE.SUB` file there. If you want to customize your ROM and add a `PROFILE.SUB` file to the ROM Disk, it will work, but is a lot harder than using a boot disk. @@ -900,10 +911,11 @@ a build script, but it is quite easy to do. Essentially, the creation of a custom ROM is accomplished by updating a small configuration file, then running a script to compile the software -and generate the custom ROM image. There are build scripts for Windows, -Linux, and MacOS to accommodate virtually all users. All required build -tools (compilers, assemblers, etc.) are included in the distribution, so -it is not necessary to setup a build environment on your computer. +and generate the custom ROM and disk images. There are build scripts for +Windows, Linux, and MacOS to accommodate virtually all users. All +required build tools (compilers, assemblers, etc.) are included in the +distribution, so it is not necessary to setup a build environment on +your computer. The process for building a custom ROM is documented in the ReadMe.txt file in the Source directory of the distribution. @@ -951,6 +963,12 @@ for more information on UNA. # RomWBW Distribution +All source code and distributions are maintained on GitHub. Code +contributions are very welcome. + +[RomWBW GitHub +Repository](https://github.com/wwarthen/RomWBW%7Chttps://github.com/wwarthen/RomWBW) + ## Distribution Directory Layout The RomWBW distribution is a compressed zip archive file organized in a @@ -965,14 +983,6 @@ are: | Source | Contains the source code files used to build the software and ROM images. | | Tools | Contains the MS Windows programs that are used by the build process or that may be useful in setting up your system. | -## Source Code Respository - -All source code and distributions are maintained on GitHub. Code -contributions are very welcome. - -[RomWBW GitHub -Repository](https://github.com/wwarthen/RomWBW%7Chttps://github.com/wwarthen/RomWBW) - # Acknowledgements While I have heavily modified much of the code, I want to acknowledge diff --git a/ReadMe.txt b/ReadMe.txt index ff28b03f..e7bd9d64 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -2,7 +2,8 @@ RomWBW Z80/Z180 System Software -Version 2.9.2 of March 18, 2020 +Version 2.9.2 +Friday 20 March 2020 Wayne Warthen wwarthen@gmail.com @@ -22,7 +23,7 @@ RomWBW provides a complete software system for a wide variety of hobbyist Z80/Z180 CPU-based systems produced by these developer communities: -- Retrobrew Computers +- RetroBrew Computers - RC2014 - retro-comp @@ -73,12 +74,12 @@ The latest RomWBW distribution downloads are maintained on GitHub in the RomWBW Repository. The fully-built distributions are found on the releases page of the repository. On this page, you will probably see both pre-releases as well as normal releases. Unless you have a specific -reason, I suggest you stick to the most recent normal (not pre-release) -release. Expand the “Assets” drop-down for the release you want to +reason, I suggest you stick to the most recent normal release (not +pre-release). Expand the “Assets” drop-down for the release you want to download, then select the asset named RomWBW-vX.X.X-Package.zip. The Package asset includes all pre-built ROM and Disk images as well as full -source code. The other assets called Source Code do not have the -pre-built ROM or Disk Images. +source code. The other assets are Source Code only and do not have the +pre-built ROM or disk images. The pre-built ROM images will automatically detect and support a reasonable range of devices including serial ports, video adapters, @@ -105,44 +106,44 @@ files all end in “.rom”. Based on the table below, carefully pick the appropriate ROM image: -------------------------------------------------------------------------- - Platform ROM Image File Baud Description + Platform ROM Image File Baud Description ---------- ---------------- -------- ------------------------------------- - SBC V1/V2 SBC_std.rom 38400 RetroBrew SBC v1 or v2 ECB Z80 + SBC V1/V2 SBC_std.rom 38400 RetroBrew SBC v1 or v2 ECB Z80 - Zeta V1 ZETA_std.rom 38400 RetroBrew Zeta V1 Z80, ParPortProp + Zeta V1 ZETA_std.rom 38400 RetroBrew Zeta V1 Z80, ParPortProp (optional) - Zeta V2 ZETA2_std.rom 38400 RetroBrew Zeta V2 Z80, ParPortProp + Zeta V2 ZETA2_std.rom 38400 RetroBrew Zeta V2 Z80, ParPortProp (optional) - N8 N8_std.rom 38400 RetroBrew N8 Z180, date code >= 2312 + N8 N8_std.rom 38400 RetroBrew N8 Z180, date code >= 2312 - Mark IV MK4_std.rom 38400 RetroBrew Mark IV ECB Z180 + Mark IV MK4_std.rom 38400 RetroBrew Mark IV ECB Z180 - RC2014 Z80 RCZ80_std.rom 115200 RC2014 w/ Z80 CPU, requires 512K + RC2014 Z80 RCZ80_std.rom 115200 RC2014 w/ Z80 CPU, requires 512K RAM/ROM module - RC2014 RCZ180_ext.rom 115200 RC2014 w/ Z180 CPU & 512K banked + RC2014 RCZ180_ext.rom 115200 RC2014 w/ Z180 CPU & 512K banked Z180* RAM/ROM module - RC2014 RCZ180_nat.rom 115200 RC2014 w/ Z180 CPU & 512K native + RC2014 RCZ180_nat.rom 115200 RC2014 w/ Z180 CPU & 512K native Z180* RAM/ROM module - Easy Z80 EZZ80_std.rom 115200 Sergey Kiselev’s Easy Z80 + Easy Z80 EZZ80_std.rom 115200 Sergey Kiselev’s Easy Z80 - SC126 SCZ180_126.rom 115200 Stephen Cousin’s SC126 Z180 + SC126 SCZ180_126.rom 115200 Stephen Cousin’s SC126 Z180 - SC130 SCZ180_130.rom 115200 Stephen Cousin’s SC130 Z180 + SC130 SCZ180_130.rom 115200 Stephen Cousin’s SC130 Z180 - SC131 SCZ180_131.rom 115200 Stephen Cousin’s SC131 Z180 + SC131 SCZ180_131.rom 115200 Stephen Cousin’s SC131 Z180 - Dyno DYNO_std.rom 38400 Steve Garcia’s Z180 Dyno Computer + Dyno DYNO_std.rom 38400 Steve Garcia’s Z180 Dyno 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 memory module. The “ext” ROM supports Spencer’s official 512K RAM/ROM -banked memory module. The “nat” ROM supports any of the thrid-party Z180 +banked memory module. The “nat” ROM supports any of the third-party Z180 native memory modules. RomWBW will automatically attempt to detect and support typical add-on @@ -150,8 +151,8 @@ components for each of the systems supported. More information on the required system configuration and optional supported components for each ROM is found in the file called “RomList.txt” in the Binary directory. All pre-built ROM images are simple 512KB binary images. If your system -utilizes a 1MB ROM, you can just program the image into the first 512KB -of the ROM. +utilizes a larger ROM chip, you can just program the image into the +first 512KB of the ROM. Connect a serial terminal or computer with terminal emulation software to the primary serial port of your CPU board. You may need to refer to @@ -198,16 +199,19 @@ not been updated and the next time you boot your system, it will revert to the system image contained in ROM. You may find that you are unable to load the .com file because it is too large to fit in available application RAM (TPA). Unfortunately, in this case, you will not be able -to use the .com file to start your system. +to use the .com file mechanism to start your system. -If you do not have easy access to a ROM programmer, it is entirely +If you do not have easy access to a ROM programmer, it is usually possible to reprogram your system ROM using the FLASH utility from Will Sowerbutts. This application called FLASH.COM can be found on the ROM drive of any running system. In this case, you would need to transfer -the new ROM image (.rom) over to your system using XModem. The ROM image -will be too large to fit on your RAM drive, so you will need to transfer -it to a larger storage drive. Once the ROM image is on your system, you -can use the FLASH application to update your ROM: +the new ROM image (.rom) over to your system using XModem (or one of the +other mechanisms described in the Transferring Files section below). The +ROM image will be too large to fit on your RAM drive, so you will need +to transfer it to a larger storage drive. Once the ROM image is on your +system, you can use the FLASH application to update your ROM. The +following is a typical example of transferring ROM image using XModem +and flashing the chip in-situ. E>xm r rom.img @@ -240,9 +244,9 @@ device yet. Review the boot messages to see if any issues have occurred. Once you are satisfied that the ROM is working well, you will need to update the system images and RomWBW custom applications on your disk drives. The system images and custom applications are matched to the -RomWBW ROM firmware in use. If you attempt to use a disk or applications -that have not been updated to match the current ROM firmware, you are -likely to have odd problems. +RomWBW ROM firmware in use. If you attempt to boot a disk or run +applications that have not been updated to match the current ROM +firmware, you are likely to have odd problems. The simplest way to update your disk media is to just use your modern computer to overwrite the entire media with the latest disk image of @@ -286,7 +290,8 @@ The systems supported by RomWBW all have the ability to use persistent disk media. I am referring to all kinds of disk devices including floppy drives, hard disks, CF Cards, and SD Cards. Some systems have disk interfaces built-in, while others will require add-in cards. You will -need to refer to the documentation for your system. +need to refer to the documentation for your system for your specific +options. In the RomWBW bootup messages, you will see hardware discovery messages. If you have a disk drive interface, you should see messages listing @@ -318,7 +323,7 @@ an example of this: C:=IDE0:0 D:=IDE0:1 -You will probably see mroe drive letters than this. The drive letter +You will probably see more drive letters than this. The drive letter assignment process is described in more detail later in this document. Be aware that RomWBW will only assign drive letters to disk interfaces that actually have media in them. If you do not see drive letters @@ -336,13 +341,13 @@ is also explained later in this document. Once you are seeing drive letters referring to your disk media, you can follow the instructions below to begin using the disk media with the -operating system. Your disk media must be initialized prior to be used. -There are two ways to initialize your media for use. +operating system. Your disk media must be initialized prior to being +used. There are two ways to initialize your media for use. You can initialize the media in-place using your RomWBW system. This process is described below under Disk Initialization. In this scenario, you will need to subsequently copy any files you want to use onto the -newly initialized disk. +newly initialized disk (see Transferring Files). Alternatively, you can use your modern Windows, Linux, or Mac computer to copy a disk image onto the disk media. RomWBW comes with a variety of @@ -380,16 +385,14 @@ directory of the distribution. It is not necessary to run CLRDIR on a floppy disk after physically formatting it – the directory is cleared as part of the formatting. -Booting Disks - Once you have initialized a disk device and copied your desired files -onto it, you may want to boot directly to this disk device at startup. -On CP/M filesystems, you must perform one additional step to make a disk -bootable. Specifically, you need to place a copy of the oeoprating -system on the system tracks of the disk. This is done using the SYSCOPY -command. Let’s say you have prepared drive C: by initializing it with -CLRDIR and copied some files onto it. You can now make C: bootable by -running the following command: +onto it, you may want to make the disk bootable. On CP/M filesystems, +you must perform one additional step to make a disk bootable. +Specifically, you need to place a copy of the operating system on the +system tracks of the disk. This is done using the SYSCOPY command. Let’s +say you have prepared drive C: by initializing it with CLRDIR and copied +some files onto it. You can now make C: bootable by running the +following command: B>SYSCOPY C:=B:ZSYS.SYS @@ -408,49 +411,9 @@ Here is a full example of this process. Transfer system image from B:ZSYS.SYS to C: (Y/N)? Y Reading image... Writing image... Done -After successfully putting the operating system on the disk, you can -restart your system. When you get to the boot loader, notice the line -starting with “Disk:”. This line lists the disk devices that you can -choose to boot directly. - -You will notice that you do not have an option to boot a drive letter -here (like C:). This is because the operating system is not yet loaded. -When you ran SYSCOPY previously, remember that C: was assigned to IDE0:0 -which means device IDE0, slice 0. So, to boot the disk that you just -setup with SYSCOPY, you would choose option 1. You will then be prompted -for the slice on IDE0 that you want to boot. For now, just press enter -to choose slice 0. Once you are familiar with slices, you 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 -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 -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 currently “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 prompt. +Once this process succeeds, you will be able to boot directly to the +disk from the boot loader prompt. See the instructions in Booting Disks +for details on this. Disk Images @@ -460,8 +423,8 @@ It is generally easier to use these disk images instead of copying all the files over using XModem. You use your modern computer (Windows, Linux, MacOS) to place the disk image onto the disk media, then just move the media over to your system. In this scenario you do not run -CLRDIR or SYSCOPY on the drive(s). The directory prepared and the disk -is already bootable, if it is an operating system. +CLRDIR or SYSCOPY on the drive(s). The directory is prepared and the +disk is already bootable, if it is an operating system boot disk image. To copy the disk image files onto your actual media (floppy disk, CF Card, SD Card, etc.), you need to use an image writing utility on your @@ -487,11 +450,11 @@ well as real spinning hard disks. Floppy Hard Description -------------- -------------- ------------------------------ - fd_cpm22.img hd_cpm22.img DRI CP/M 2.2 bootable disk - fd_zsdos.img hd_zsdos.img ZSDOS 1.1 bootable disk - fd_nzcom.img hd_nzcom.img NZCOM bootable disk - fd_cpm3 hd_cpm3.img DRI CP/M 3 bootable disk - fd_zpm3 hd_zpm3.img ZPM3 bootable disk + 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 hd_cpm3.img DRI CP/M 3 boot disk + fd_zpm3 hd_zpm3.img ZPM3 boot disk fd_ws4 hd_ws4.img WordStar v4 application disk In addition to the disk images above, there is also a special hard disk @@ -525,6 +488,52 @@ boot from disk as is. You do not need to run SYSCOPY on them to make them bootable. However, if you upgrade your ROM, you should use SYSCOPY to update the system tracks. +Booting Disks + +When starting your system, following the hardware initialization, you +will see the Boot Loader prompt. In addition, to the ROM boot options, +you will see another line listing the Disk boot options. This line lists +the disk devices that you can choose to boot directly. + +You will notice that you do not have an option to boot a drive letter +here (like C:). This is because the operating system is not yet loaded. +When you ran SYSCOPY previously, remember that C: was assigned to IDE0:0 +which means device IDE0, slice 0. So, to boot the disk that you just +setup with SYSCOPY, you would choose option 1. You will then be prompted +for the slice on IDE0 that you want to boot. For now, just press enter +to choose slice 0. Once you are familiar with slices, you 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 +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 +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 +prompt. + General Usage Each of the operating systems and ROM applications included with RomWBW @@ -532,18 +541,18 @@ are sophisticated tools in their own right. It is not reasonable to document their usage here. However, you will find complete manuals in PDF format in the Doc directory of the distribution. The intention of this section is to document the RomWBW specific enhancements to these -OSes. +operating systems. ROM Disk In addition to the ROM-based operating systems and applications, the ROM -also contains a ROM disk with a small CP/M filesystem. The contents have -been optimized to provide a core set of tools and applications that are -helpful for either CP/M 2.2 and ZSDOS. Since ZSDOS is CP/M 2.2 -compatible, this works fairly well. However, you will find some files on -the ROM disk that will work with ZSDOS, but will not work on CP/M 2.2. -For example, LDDS, which loads the ZSDOS date/time stamper will only run -on ZSDOS. +also contains a ROM disk with a small CP/M filesystem. The contents of +the ROM disk have been chosen to provide a core set of tools and +applications that are helpful for either CP/M 2.2 or ZSDOS. Since ZSDOS +is CP/M 2.2 compatible, this works fairly well. However, you will find +some files on the ROM disk that will work with ZSDOS, but will not work +on CP/M 2.2. For example, LDDS, which loads the ZSDOS date/time stamper +will only run on ZSDOS. Drive Letter Assignment @@ -590,8 +599,8 @@ accessible to any of the operating systems. Since storage devices today are quite large, RomWBW implements a mechanism called slicing to allow up to 256 8MB filesystems on a single large storage device. This allows up to 2GB of useable space on a single -media. You can think of slices as a way to refer to the first 256 8MB -chunks of space on a single media. +media. You can think of slices as a way to refer to any of the first 256 +8MB chunks of space on a single media. Of course, the problem is that CP/M-like operating systems have only 16 drive letters (A:-P:) available. Under the covers, RomWBW allows you to @@ -607,10 +616,10 @@ devices, you will see that each device is allocated four drive letters. Referring to slices within a storage device is done by appending a :n where n is the device relative slice number from 0-255. For example, if -you have an IDE device, it will show up as IDE0: in the boot message -meaning the first IDE device. To refer to the second slice of IDE0, you -would type “IDE0:1”. So, if I wanted to use drive letter L: to refer to -the second slice of IDE0, I could use the command ASSIGN L:=IDE0:1. +you have an IDE device, it will show up as IDE0: in the boot messages +meaning the first IDE device. To refer to the fourth slice of IDE0, you +would type “IDE0:3”. So, if I wanted to use drive letter L: to refer to +the fourth slice of IDE0, I could use the command ASSIGN L:=IDE0:3. There are a couple of rules to be aware of when assigning drive letters. First, you may only refer to a specific device/slice with one drive @@ -635,18 +644,18 @@ that yourself using CLRDIR. Since CLRDIR works on drive letters, make absolutely sure you know what media and slice are assigned to that drive letter before using CLRDIR. -While it probably obvious, you cannot use slices on any media less than -8MB in size. Specifically, you cannot slice RAM disk, ROM disk, floppy -disks, etc. +While it is probably obvious, you cannot use slices on any media less +than 8MB in size. Specifically, you cannot slice RAM disks, ROM disks, +floppy disks, etc. Inbuilt ROM Applications -In addition to CP/M 2.2 and Z-System, there are several additional ROM -applications that can be launched directly from ROM. These applications -are not hosted by an operating system and so they are unable to save -files to disk devices. +In addition to CP/M 2.2 and Z-System, there are several ROM applications +that can be launched directly from ROM. These applications are not +hosted by an operating system and so they are unable to save files to +disk devices. -The following options are available at the boot loader prompt: +The following ROM applications are available at the boot loader prompt: Application ------------- -------------------------------------------------------- @@ -670,8 +679,8 @@ The operation of the RomWBW hosted operating systems is enhanced through several custom applications. These applications are functional on all of the OS variants included with RomWBW. -The following custom applications are found on the RomWBW ROM disk and -are, therefore, globally available. +The following custom applications are found on the ROM disk and are, +therefore, globally available. -------------------------------------------------------------------------- Application Description @@ -703,7 +712,7 @@ are, therefore, globally available. FLASH Will Sowerbutts’ in-situ ROM programming utility. - CLRDIR Format the directory areas of a CP/M disk. + CLRDIR Initialize the directory area of a CP/M disk (Max Scane). -------------------------------------------------------------------------- Some custom applications do not fit on the ROM disk. They are found on @@ -728,9 +737,9 @@ identical for all hardware supported by RomWBW because RomWBW hides all hardware specifics from the operating system. Note that all of the operating systems included with RomWBW support the -same basic filesystem format. As as result, a formatted filesystem will +same basic filesystem format. As a result, a formatted filesystem will be accessible to any operating system. The only possible issue is that -if you turn of date/time stamping using the newer OSes, the older OSes +if you turn on date/time stamping using the newer OSes, the older OSes will not understand this. Files will not be corrupted, but the date/time stamps may be lost. @@ -777,7 +786,7 @@ Digital Research CP/M 3 This is the Digital Research follow-up product to their very popular CP/M 2.2 operating system. While highly compatible with CP/M 2.2, it -features many enhancements. It makes better use of banked memory to +features many enhancements. It makes direct use of banked memory to increase the user program space (TPA). It also has a new suite of support tools and help system. @@ -790,14 +799,14 @@ Simeon Cran’s ZPM3 ZPM3 is an interesting combination of the features of both CP/M 3 and ZCPR 3. Essentially, it has the features of and compatibility with both. -Like CP/M 3, to make ZPM3 boot disk, you put CPM3.SYS on the system +Like CP/M 3, to make ZPM3 boot disk, you put CPMLDR.SYS on the system tracks of the disk. FreeRTOS Note that Phillip Stevens has also ported FreeRTOS to run under RomWBW. -FreeRTOS is not provided in the RomWBW distribution, but is available -from Phillip. +FreeRTOS is not provided in the RomWBW distribution. You can contact +Phillip for availability. Transferring Files @@ -819,18 +828,18 @@ your RomWBW system. Then, you will use your modern computers terminal program to complete the process. The XM application generally tries to detect the hardware you are using -and adapt to it. However, you must ensure that you have a realiable +and adapt to it. However, you must ensure that you have a reliable serial connection. You must also ensure that the speed of the connection -is not too fast for XModem to handle. Alternatively, you can ensure that -hardware flow control is working properly. +is not too fast for XModem to service. Alternatively, you can ensure +that hardware flow control is working properly. There is an odd interaction between XModem and partner terminal programs that can occur. Essentially, after launching XM, you must start the -protocol on your modern computer fairly quickly (usually about 20 +protocol on your modern computer fairly quickly (usually in about 20 seconds or so). So, if you do not pick a file on your modern computer quickly enough, you will find that the transfer completes about 16K, -then hangs. The interaction that casuses this is beyond the scope of -this document. +then hangs. The interaction that causes this is beyond the scope of this +document. Disk Image Transfers @@ -852,7 +861,7 @@ computer is: This process is a little complicated, but it has the benefit of allowing you to get a lot of files over to your RomWBW system quickly and with -little change of corruption. +little chance of corruption. The process can be run in reverse to get files from your RomWBW computer to a modern computer. @@ -864,14 +873,14 @@ documents. Note that the build scripts for RomWBW create the default disk images supplied with RomWBW. It is relatively easy to customize the contents of the disk images that are part of RomWBW. This is described in more -detail in the Source\Images driectory of the distribution. +detail in the Source\Images directory of the distribution. FAT Filesystem Transfers -RomWBW provides a mechanism that allows it to read and write files on an +RomWBW provides a mechanism that allows it to read and write files on a FAT formatted disk. This means that you can generally use your modern computer to make an SD Card or CF Card with a standard FAT32 filesystem -on it, then place that media in your RomWBW computer and read/write the +on it, then place that media in your RomWBW computer and access the files. When formatting the media on your modern computer, but sure to pick the @@ -897,23 +906,24 @@ and can be found in the Doc\Contrib directory of the distribution. Startup Command Processing -Each of the operating system supported by RomWBW provide a mechanism to +Each of the operating systems supported by RomWBW provide a mechanism to run commands at boot. This is similar to the AUTOEXEC.BAT files from MS-DOS. -With the exception of ZPM3, all operating system will look for a file +With the exception of ZPM3, all operating systems will look for a file called PROFILE.SUB on the system drive at boot. If it is found, it will be processed as a standard CP/M submit file. You can read about the use of the SUBMIT facility in the CP/M manuals included in the RomWBW -distribution. +distribution. Note that the boot disk must also have a copy of +SUBMIT.EXE. In the case of ZPM3, the file called STARTZPM.COM will be run at boot. To customize this file, you use the ZCPR ALIAS facility. You will need to refer to ZCPR documentation for more information on the ALIAS facility. -Note that automatic startup processing generally requires booting to a -disk drive. Since the ROM disk is not writable, there is no simple way +Note that the automatic startup processing generally requires booting to +a disk drive. Since the ROM disk is not writable, there is no simple way to add/edit a PROFILE.SUB file there. If you want to customize your ROM and add a PROFILE.SUB file to the ROM Disk, it will work, but is a lot harder than using a boot disk. @@ -929,10 +939,11 @@ a build script, but it is quite easy to do. Essentially, the creation of a custom ROM is accomplished by updating a small configuration file, then running a script to compile the software -and generate the custom ROM image. There are build scripts for Windows, -Linux, and MacOS to accommodate virtually all users. All required build -tools (compilers, assemblers, etc.) are included in the distribution, so -it is not necessary to setup a build environment on your computer. +and generate the custom ROM and disk images. There are build scripts for +Windows, Linux, and MacOS to accommodate virtually all users. All +required build tools (compilers, assemblers, etc.) are included in the +distribution, so it is not necessary to setup a build environment on +your computer. The process for building a custom ROM is documented in the ReadMe.txt file in the Source directory of the distribution. @@ -978,6 +989,11 @@ Please refer to the UNA BIOS Firmware Page for more information on UNA. RomWBW Distribution +All source code and distributions are maintained on GitHub. Code +contributions are very welcome. + +RomWBW GitHub Repository + Distribution Directory Layout The RomWBW distribution is a compressed zip archive file organized in a @@ -1002,13 +1018,6 @@ are: process or that may be useful in setting up your system. -------------------------------------------------------------------------- -Source Code Respository - -All source code and distributions are maintained on GitHub. Code -contributions are very welcome. - -RomWBW GitHub Repository - Acknowledgements While I have heavily modified much of the code, I want to acknowledge diff --git a/Source/Clean.cmd b/Source/Clean.cmd index a4420787..b097dc88 100644 --- a/Source/Clean.cmd +++ b/Source/Clean.cmd @@ -13,6 +13,5 @@ setlocal & cd Forth && call Clean.cmd & endlocal setlocal & cd Fonts && call Clean.cmd & endlocal setlocal & cd BPBIOS && call Clean.cmd & endlocal setlocal & cd HBIOS && call Clean.cmd & endlocal -setlocal & cd Doc && call Clean.cmd & endlocal setlocal & cd Images && call Clean & endlocal setlocal & cd Prop && call Clean & endlocal diff --git a/Source/Doc/Architecture.md b/Source/Doc/Architecture.md index d9c0e426..9a73a4cd 100644 --- a/Source/Doc/Architecture.md +++ b/Source/Doc/Architecture.md @@ -1,22 +1,21 @@ !include(Common.inc) -!def(name)(Architecture) +!def(document)(Architecture) --- -title: RomWBW !name +title: | + | !product + | + | !document author: !author (mailto:!authmail) date: !date institution: !orgname documentclass: book +classoption: +- oneside toc: true toc-depth: 1 numbersections: true secnumdepth: 1 -classoption: -- oneside papersize: letter -fontsize: 12pt -graphics: yes -fontfamily: helvet -# fontfamilyoptions: scaled geometry: - top=1in - bottom=1in @@ -26,7 +25,8 @@ geometry: # - pass linestretch: 1.25 colorlinks: true -#pagestyle: empty +fontfamily: helvet +fontsize: 12pt header-includes: - \setlength{\headheight}{15pt} - | @@ -35,8 +35,6 @@ header-includes: \usepackage{xcolor} \usepackage{xhfill} \renewcommand*{\familydefault}{\sfdefault} - \renewcommand{\bfdefault}{b} - \renewcommand{\contentsname}{Table of Contents} \renewcommand{\maketitle}{ \begin{titlepage} \centering @@ -45,8 +43,8 @@ header-includes: \includegraphics[width=\paperwidth]{Graphics/Logo.pdf} \par \vfill \raggedleft - {\scshape \bfseries \fontsize{48pt}{56pt} \selectfont RomWBW \par} - {\bfseries \fontsize{32pt}{36pt} \selectfont !name \par} + {\scshape \bfseries \fontsize{48pt}{56pt} \selectfont !product \par} + {\bfseries \fontsize{32pt}{36pt} \selectfont !document \par} \vspace{24pt} {\huge Version !ver \\ !date \par} \vspace{24pt} @@ -71,7 +69,7 @@ include-before: ```{=latex} \clearpage \pagenumbering{arabic} -\lhead{\fancyplain{}{\nouppercase{\footnotesize \bfseries \leftmark \hfill RomWBW !name}}} +\lhead{\fancyplain{}{\nouppercase{\footnotesize \bfseries \leftmark \hfill !product !document}}} ``` Overview @@ -419,7 +417,7 @@ bits are defined as YXXXX. | C: Serial Device Unit Number | _Exit Results_ -| A: Status +| A: Status (0=OK, else error) | E: Character Received Read a character from the device unit specified in register C and return the character @@ -433,7 +431,7 @@ value in E. If no character(s) are available, this function will wait indefinite | E: Character to Send | _Exit Results_ -| A: Status +| A: Status (0=OK, else error) Send character value in register E to device specified in register C. If device is not ready to send, function will wait indefinitely. @@ -445,7 +443,7 @@ not ready to send, function will wait indefinitely. | C: Serial Device Unit Number | _Exit Results_ -| A: Status +| A: Bytes Pending Return the number of characters available to read in the input buffer of the unit specified. If the device has no input buffer, it is acceptable to return simply 0 or @@ -459,7 +457,7 @@ least one character available to read. | C: Serial Device Unit Number | _Exit Results_ -| A: Status +| A: Output Buffer Bytes Available Return the space available in the output buffer expressed as a character count. If a 16 byte output buffer contained 6 characters waiting to be sent, this function would @@ -475,7 +473,7 @@ busy and 1 means the port is ready to output a character. | DE: Line Characteristics | _Exit Results_ -| A: Status +| A: Status (0=OK, else error) Setup line characteristics (baudrate, framing, etc.) of the specified unit. Register pair DE specifies line characteristics. If DE contains -1 (0xFFFF), then the device @@ -489,7 +487,7 @@ is returned in A with zero indicating success. | C: Serial Device Unit Number | _Exit Results_ -| A: Status +| A: Status (0=OK, else error) | DE: Line Characteristics Reports the line characteristics (baudrate, framing, etc.) of the specified unit. @@ -502,7 +500,7 @@ Register pair DE contains the line characteristics upon return. | C: Serial Device Unit Number | _Exit Results_ -| A: Status +| A: Status (0=OK, else error) | C: Serial Device Attributes | D: Serial Device Type | E: Serial Device Number @@ -556,7 +554,7 @@ MID\_FD111 | 9 | 8" 1.11M Floppy | B: 0x10 | _Exit Results_ -| A: Status (0=OK, 1=Error) +| A: Status (0=OK, else error) ### Function 0x11 -- Disk Status (DIORESET) @@ -565,7 +563,7 @@ MID\_FD111 | 9 | 8" 1.11M Floppy | C: Disk Device Unit ID | _Exit Results_ -| A: Status (0=OK, 1=Error) +| A: Status (0=OK, else error) Reset the physical interface associated with the specified unit. Flag all units associated with the interface for unit initialization at next @@ -588,7 +586,7 @@ associated units of the physical interface. | DE:HL: Block Address | _Exit Results_ -| A: Status (0=OK, 1=Error) +| A: Status (0=OK, else error) Update target CHS or LBA for next I/O request on designated unit. Physical seek is typically deferred until subsequent I/O @@ -614,7 +612,7 @@ determine if the device supports LBA addressing. | HL: Buffer Address | _Exit Results_ -| A: Status (0=OK, 1=Error) +| A: Status (0=OK, else error) | E: Blocks Reaad Read Block Count sectors to buffer address starting at current target @@ -636,7 +634,7 @@ sectors requested, and 2) entire buffer area resides in upper 32K of memory. | HL: Buffer Address | _Exit Results_ -| A: Status (0=OK, 1=Error) +| A: Status (0=OK, else error) | E: Blocks Written Write Block Count sectors to buffer address starting at current target @@ -659,7 +657,7 @@ sectors being written, and 2) entire buffer area resides in upper 32K of memory. | E: Block Count | _Exit Results_ -| A: Status (0=OK, 1=Error) +| A: Status (0=OK, else error) | E: Blocks Verified \*\*\*Not Implemented\*\*\* @@ -674,7 +672,7 @@ sectors being written, and 2) entire buffer area resides in upper 32K of memory. | HL: Cylinder | _Exit Results_ -| A: Status (0=OK, 1=Error) +| A: Status (0=OK, else error) \*\*\*Not Implemented\*\*\* @@ -685,7 +683,7 @@ sectors being written, and 2) entire buffer area resides in upper 32K of memory. | C: Disk Device Unit ID | _Exit Results_ -| A: Status (0=OK, 1=Error) +| A: Status (0=OK, else error) | C: Attributes | D: Device Type | E: Device Number @@ -734,12 +732,12 @@ etc.) which is identified by a device type id from the table below. | E0: Enable Media Discovery | _Exit Results_ -| A: Status (0=OK, 1=Error) +| A: Status (0=OK, else error) | E: Media ID Report the media definition for media in specified unit. If bit 0 of E is set, then perform media discovery or verification. If no media in device, -return no media error. +function will return an error status. ### Function 0x19 -- Disk Define Media (DIODEFMED) @@ -749,7 +747,7 @@ return no media error. | E: Media ID | _Exit Results_ -| A: Status (0=OK, 1=Error) +| A: Status (0=OK, else error) \*\*\* Not implemented \*\*\* @@ -761,7 +759,7 @@ return no media error. | HL: Buffer Address | _Exit Results_ -| A: Status (0=OK, 1=Error) +| A: Status (0=OK, else error) | DE:HL: Blocks on Device | BC: Block Size @@ -776,7 +774,7 @@ block size. If media is unknown, an error will be returned. | C: Disk Device Unit ID | _Exit Results_ -| A: Status (0=OK, 1=Error) +| A: Status (0=OK, else error) | HL: Cylinders | D7: LBA Capability | BC: Block Size @@ -1199,7 +1197,7 @@ contains a negative number, then reverse scroll should be performed. | C: Video Device Unit ID | _Exit Results_ -| A: Status (# Key Codes in Keyboard Buffer) +| A:Count of Key Codes in Keyboard Buffer Return a count of the number of key codes in the keyboard buffer. If it is not possible to determine the actual number in the buffer, it is diff --git a/Source/Doc/Common.inc b/Source/Doc/Common.inc index 0358de0e..e5f87bed 100644 --- a/Source/Doc/Common.inc +++ b/Source/Doc/Common.inc @@ -1,6 +1,6 @@ !def(ver)(2.9.2) -!def(date)(March 18, 2020) -!def(name)(RomWBW) +!def(date)(!mdate) +!def(product)(RomWBW) !def(author)(Wayne Warthen) !def(authmail)(wwarthen@gmail.com) !def(orgname)(RetroBrew Computers Group) diff --git a/Source/Doc/GettingStarted.md b/Source/Doc/GettingStarted.md index 20c3112c..6815ea60 100644 --- a/Source/Doc/GettingStarted.md +++ b/Source/Doc/GettingStarted.md @@ -1,14 +1,17 @@ !include(Common.inc) -!def(name)(Getting Started) +!def(document)(Getting Started) --- -title: RomWBW !name +title: | + | !product + | + | !document author: !author (mailto:!authmail) date: !date institution: !orgname documentclass: article -toc: true classoption: - oneside +toc: true papersize: letter geometry: - top=1in @@ -24,16 +27,18 @@ header-includes: - | ```{=latex} \renewcommand*{\familydefault}{\sfdefault} + \setstretch{1.25} % for TOC ``` --- -`\clearpage`{=latex} +`\clearpage % new page after TOC`{=latex} # RomWBW ## Z80/Z180 System Software -Version !ver of !date +| Version !ver +| !date !author() [!authmail](mailto:!authmail) @@ -51,7 +56,7 @@ Version !ver of !date 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) + * [RetroBrew Computers](https://www.retrobrewcomputers.org) * [RC2014](https://rc2014.co.uk) * [retro-comp](https://groups.google.com/forum/#!forum/retro-comp) @@ -80,7 +85,7 @@ Multiple disk images are provided in the distribution. Most disk images contain # Installation -The latest RomWBW distribution downloads are maintained on GitHub in the [RomWBW Repository](https://github.com/wwarthen/RomWBW). The fully-built distributions are found on the [releases page](https://github.com/wwarthen/RomWBW/releases) of the repository. On this page, you will probably see both pre-releases as well as normal releases. Unless you have a specific reason, I suggest you stick to the most recent normal (not pre-release) release. Expand the "Assets" drop-down for the release you want to download, then select the asset named RomWBW-vX.X.X-Package.zip. The Package asset includes all pre-built ROM and Disk images as well as full source code. The other assets called Source Code do not have the pre-built ROM or Disk Images. +The latest RomWBW distribution downloads are maintained on GitHub in the [RomWBW Repository](https://github.com/wwarthen/RomWBW). The fully-built distributions are found on the [releases page](https://github.com/wwarthen/RomWBW/releases) of the repository. On this page, you will probably see both pre-releases as well as normal releases. Unless you have a specific reason, I suggest you stick to the most recent normal release (not pre-release). Expand the "Assets" drop-down for the release you want to download, then select the asset named RomWBW-vX.X.X-Package.zip. The Package asset includes all pre-built ROM and Disk images as well as full source code. The other assets are Source Code only and do not have the pre-built ROM or disk images. The pre-built ROM images will automatically detect and support a reasonable range of devices including serial ports, video adapters, on-board disk interfaces, and PropIO/ParPortProp boards without building a custom ROM. The distribution is a .zip archive. After downloading it to a working directory on your modern computer (Windows/Linux/Mac) use any zip tool to extract the contents of the archive. @@ -89,7 +94,7 @@ In general, you will just program your system's ROM chip with the appropriate RO Looking at the extracted distribution archive, You will see that the distribution is broken up into a few sub-directories. The Binary 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: | Platform | ROM Image File | Baud | Description | -| --------------| --------------------- | --------- | ------------------------------------------------ | +| --------------| --------------------- | --------: | ------------------------------------------------ | | SBC V1/V2 | 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) | @@ -104,9 +109,9 @@ Looking at the extracted distribution archive, You will see that the distributio | SC131 | SCZ180_131.rom | 115200 | Stephen Cousin's SC131 Z180 | | Dyno | DYNO_std.rom | 38400 | Steve Garcia's Z180 Dyno 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 memory module. The "ext" ROM supports Spencer's official 512K RAM/ROM banked memory module. The "nat" ROM supports any of the thrid-party Z180 native memory modules. +\*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 memory module. The "ext" ROM supports Spencer's official 512K RAM/ROM banked memory module. The "nat" ROM supports any of the third-party Z180 native memory modules. -RomWBW will automatically attempt to detect and support typical add-on components for each of the systems supported. More information on the required system configuration and optional supported components for each ROM is found in the file called "RomList.txt" in the Binary directory. All pre-built ROM images are simple 512KB binary images. If your system utilizes a 1MB ROM, you can just program the image into the first 512KB of the ROM. +RomWBW will automatically attempt to detect and support typical add-on components for each of the systems supported. More information on the required system configuration and optional supported components for each ROM is found in the file called "RomList.txt" in the Binary directory. All pre-built ROM images are simple 512KB binary images. If your system utilizes a larger ROM chip, you can just program the image into the first 512KB of the ROM. Connect a serial terminal or computer with terminal emulation software to the primary serial port of your CPU board. You may need to refer to your hardware provider's documentation for details. A null-modem connection may be required. Set the baud rate as indicated in the table above. Set the line characteristics to 8 data bits, 1 stop bit, no parity, and no flow control. If possible, select VT-100 terminal emulation. @@ -118,9 +123,9 @@ Initially, you should try the ROM boot options. By selecting either CP/M 2.2 or Upgrading to a newer release of RomWBW is essentially just a matter of updating the ROM chip in your system. If you have spare ROM chips for your system and a ROM programmer, it is always safest to keep your existing, working ROM chip and program a new one with the new firmware. If the new one fails to boot, you can easily return to the known working ROM. -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 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 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 system, it will revert to the system image contained in ROM. You may find that you are unable to load the .com file because it is too large to fit in available application RAM (TPA). Unfortunately, in this case, you will not be able to use the .com file to start your system. +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 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 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 system, it will revert to the system image contained in ROM. You may find that you are unable to load the .com file because it is too large to fit in available application RAM (TPA). Unfortunately, in this case, you will not be able to use the .com file mechanism to start your system. -If you do not have easy access to a ROM programmer, it is entirely possible to reprogram your system ROM using the FLASH utility from Will Sowerbutts. This application called FLASH.COM can be found on the ROM drive of any running system. In this case, you would need to transfer the new ROM image (.rom) over to your system using XModem. The ROM image will be too large to fit on your RAM drive, so you will need to transfer it to a larger storage drive. Once the ROM image is on your system, you can use the FLASH application to update your ROM: +If you do not have easy access to a ROM programmer, it is usually possible to reprogram your system ROM using the FLASH utility from Will Sowerbutts. This application called FLASH.COM can be found on the ROM drive of any running system. In this case, you would need to transfer the new ROM image (.rom) over to your system using XModem (or one of the other mechanisms described in the Transferring Files section below). The ROM image will be too large to fit on your RAM drive, so you will need to transfer it to a larger storage drive. Once the ROM image is on your system, you can use the FLASH application to update your ROM. The following is a typical example of transferring ROM image using XModem and flashing the chip in-situ. ``` E>xm r rom.img @@ -149,7 +154,7 @@ Obviously, there is some risk to this approach since any issues with the program To confirm your ROM chip has been successfully updated, restart your system and boot an operating system from ROM. Do not boot from a disk device yet. Review the boot messages to see if any issues have occurred. -Once you are satisfied that the ROM is working well, you will need to update the system images and RomWBW custom applications on your disk drives. The system images and custom applications are matched to the RomWBW ROM firmware in use. If you attempt to use a disk or applications that have not been updated to match the current ROM firmware, you are likely to have odd problems. +Once you are satisfied that the ROM is working well, you will need to update the system images and RomWBW custom applications on your disk drives. The system images and custom applications are matched to the RomWBW ROM firmware in use. If you attempt to boot a disk or run applications that have not been updated to match the current ROM firmware, you are likely to have odd problems. The simplest way to update your disk media is to just use your modern computer to overwrite the entire media with the latest disk image of your choice. This process is described below in the Disk Images section. If you wish to update existing disk media in your system, you need to perform the following steps. @@ -175,7 +180,7 @@ For example: `B>COPY ASSIGN.COM C:` While the RAM/ROM disks provide a functional system, they are not useful in the long term because you cannot save data across power cycles. They are also constrained by limited space. -The systems supported by RomWBW all have the ability to use persistent disk media. I am referring to all kinds of disk devices including floppy drives, hard disks, CF Cards, and SD Cards. Some systems have disk interfaces built-in, while others will require add-in cards. You will need to refer to the documentation for your system. +The systems supported by RomWBW all have the ability to use persistent disk media. I am referring to all kinds of disk devices including floppy drives, hard disks, CF Cards, and SD Cards. Some systems have disk interfaces built-in, while others will require add-in cards. You will need to refer to the documentation for your system for your specific options. In the RomWBW bootup messages, you will see hardware discovery messages. If you have a disk drive interface, you should see messages listing device types like FD:, IDE:, PPIDE:, SD:. Additionally, you will see messages indicating the media that has been found on the interfaces. As an example, here are the messages you might see if you have an IDE interface in your system with a single CF Card inserted in the primary side of the interface: @@ -198,27 +203,25 @@ Configuring Drives... D:=IDE0:1 ``` -You will probably see mroe drive letters than this. The drive letter assignment process is described in more detail later in this document. Be aware that RomWBW will only assign drive letters to disk interfaces that actually have media in them. If you do not see drive letters assigned as expected, refer to the prior system boot messages to ensure media has been detected in the interface. Actually, there is one exception to this rule: floppy drives will be assigned a drive letter regardless of whether there is any media inserted at boot. +You will probably see more drive letters than this. The drive letter assignment process is described in more detail later in this document. Be aware that RomWBW will only assign drive letters to disk interfaces that actually have media in them. If you do not see drive letters assigned as expected, refer to the prior system boot messages to ensure media has been detected in the interface. Actually, there is one exception to this rule: floppy drives will be assigned a drive letter regardless of whether there is any media inserted at boot. Notice how each drive letter refers back to a specific disk hardware interface like IDE0. This is important as it is telling you what each drive letter refers to. Also notice that mass storage disks (like IDE) will normally have multiple drive letters assigned. The extra drive letters refer to additional "slices" on the disk. The concept of slices is also explained later in this document. -Once you are seeing drive letters referring to your disk media, you can follow the instructions below to begin using the disk media with the operating system. Your disk media **must** be initialized prior to be used. There are two ways to initialize your media for use. +Once you are seeing drive letters referring to your disk media, you can follow the instructions below to begin using the disk media with the operating system. Your disk media **must** be initialized prior to being used. There are two ways to initialize your media for use. -You can initialize the media in-place using your RomWBW system. This process is described below under Disk Initialization. In this scenario, you will need to subsequently copy any files you want to use onto the newly initialized disk. +You can initialize the media in-place using your RomWBW system. This process is described below under Disk Initialization. In this scenario, you will need to subsequently copy any files you want to use onto the newly initialized disk (see Transferring Files). Alternatively, you can use your modern Windows, Linux, or Mac computer to copy a disk image onto the disk media. RomWBW comes with a variety of disk images that are ready to use and have a much more complete set of files than you will find on the ROM disk. This process is covered below under Disk Images. ## Disk Initialization -To use a disk device, you will need to initialize the directory of the filesystem. On RomWBW, the initialization is done using the CLRDIR application. For example if your C: drive has been assigned to a storage device, you would use `CLRDIR C:` to initialize C: and prepare it hold files. Note that CLRDIR will prompt you for confirmation and you must respond with a **capital** 'Y' to confirm. Once CLDIR has completed, you can copy files onto the drive, for example `COPY *.* C:`. Be very careful to pay attention to your drive letter assignments prior to running CLRDIR to avoid accidentally wiping out a filesystem that has data on it. +To use a disk device, you will need to initialize the directory of the filesystem. On RomWBW, the initialization is done using the CLRDIR application. For example if your C: drive has been assigned to a storage device, you would use `CLRDIR C:` to initialize C: and prepare it hold files. Note that CLRDIR will prompt you for confirmation and you must respond with a **capital** 'Y' to confirm. Once `CLDIR` has completed, you can copy files onto the drive, for example `COPY *.* C:`. Be very careful to pay attention to your drive letter assignments prior to running `CLRDIR` to avoid accidentally wiping out a filesystem that has data on it. -Running CLRDIR on a disk device is roughly equivalent to running FORMAT on MS-DOS. Note that unlike MS-DOS you do **not** partition your mass storage device. CP/M knows nothing about disk partitions. You may notice a partitioning application on your ROM disk (FDISK80), but this is strictly for an advanced technique of adding an MS-DOS FAT filesystem to your media in addition to the CP/M area. Do not use FDISK80 unless you are specifically attempting to add an MS-DOS FAT filesystem to your media. +Running `CLRDIR` on a disk device is roughly equivalent to running FORMAT on MS-DOS. Note that unlike MS-DOS you do **not** partition your mass storage device. CP/M knows nothing about disk partitions. You may notice a partitioning application on your ROM disk (FDISK80), but this is strictly for an advanced technique of adding an MS-DOS FAT filesystem to your media in addition to the CP/M area. Do not use FDISK80 unless you are specifically attempting to add an MS-DOS FAT filesystem to your media. -If you are using a floppy drive, you will need to physically format your floppy disk prior to use. This is only required for floppy disks, not hard disk, CF Cards, or SD Cards, etc. To format a floppy drive, you can use the interactive application FDU. FDU is not terribly user friendly, but is generally documented in the file "FDU.txt" found in the Doc directory of the distribution. It is not necessary to run CLRDIR on a floppy disk after physically formatting it -- the directory is cleared as part of the formatting. - -## Booting Disks +If you are using a floppy drive, you will need to physically format your floppy disk prior to use. This is only required for floppy disks, not hard disk, CF Cards, or SD Cards, etc. To format a floppy drive, you can use the interactive application `FDU`. FDU is not terribly user friendly, but is generally documented in the file "FDU.txt" found in the Doc directory of the distribution. It is not necessary to run `CLRDIR` on a floppy disk after physically formatting it -- the directory is cleared as part of the formatting. -Once you have initialized a disk device and copied your desired files onto it, you may want to boot directly to this disk device at startup. On CP/M filesystems, you must perform one additional step to make a disk bootable. Specifically, you need to place a copy of the oeoprating system on the system tracks of the disk. This is done using the `SYSCOPY` command. Let's say you have prepared drive C: by initializing it with `CLRDIR` and copied some files onto it. You can now make C: bootable by running the following command: +Once you have initialized a disk device and copied your desired files onto it, you may want to make the disk bootable. On CP/M filesystems, you must perform one additional step to make a disk bootable. Specifically, you need to place a copy of the operating system on the system tracks of the disk. This is done using the `SYSCOPY` command. Let's say you have prepared drive C: by initializing it with `CLRDIR` and copied some files onto it. You can now make C: bootable by running the following command: `B>SYSCOPY C:=B:ZSYS.SYS` @@ -234,37 +237,13 @@ Transfer system image from B:ZSYS.SYS to C: (Y/N)? Y Reading image... Writing image... Done ``` -After successfully putting the operating system on the disk, you can restart your system. When you get to the boot loader, notice the line starting with "Disk:". This line lists the disk devices that you can choose to boot directly. - -You will notice that you do not have an option to boot a drive letter here (like C:). This is because the operating system is not yet loaded. When you ran `SYSCOPY` previously, remember that C: was assigned to IDE0:0 which means device IDE0, slice 0. So, to boot the disk that you just setup with SYSCOPY, you would choose option 1. You will then be prompted for the slice on IDE0 that you want to boot. For now, just press enter to choose slice 0. Once you are familiar with slices, you 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 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 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 currently "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 prompt. +Once this process succeeds, you will be able to boot directly to the disk from the boot loader prompt. See the instructions in Booting Disks for details on this. ## Disk Images -As mentioned previously, RomWBW includes a variety of disk images that contain a full set of applications for the operating systems supported. It is generally easier to use these disk images instead of copying all the files over using XModem. You use your modern computer (Windows, Linux, MacOS) to place the disk image onto the disk media, then just move the media over to your system. In this scenario you **do not** run `CLRDIR` or `SYSCOPY` on the drive(s). The directory prepared and the disk is already bootable, if it is an operating system. +As mentioned previously, RomWBW includes a variety of disk images that contain a full set of applications for the operating systems supported. It is generally easier to use these disk images instead of copying all the files over using XModem. You use your modern computer (Windows, Linux, MacOS) to place the disk image onto the disk media, then just move the media over to your system. In this scenario you **do not** run `CLRDIR` or `SYSCOPY` on the drive(s). The directory is prepared and the disk is already bootable, if it is an operating system boot disk image. -To copy the disk image files onto your actual media (floppy disk, CF Card, SD Card, etc.), you need to use an image writing utility on your modern computer. Your modern computer will need to have an appropriate interface or slot that accepts the media. To actually copy the image, you can use the `dd` command on Linux or MacOS. On Windows, in the "Tools" directory of the distribution there are two tools you can use. For floppy media, you can use RawWriteWin and for hard disk media, you can use Win32DiskImager. In all cases, the image file should be written to the media starting at the very first block or sector of the media. This will destroy any other data on the media. +To copy the disk image files onto your actual media (floppy disk, CF Card, SD Card, etc.), you need to use an image writing utility on your modern computer. Your modern computer will need to have an appropriate interface or slot that accepts the media. To actually copy the image, you can use the `dd` command on Linux or MacOS. On Windows, in the "Tools" directory of the distribution there are two tools you can use. For floppy media, you can use RawWriteWin and for hard disk media, you can use Win32DiskImager. In all cases, the image file should be written to the media starting at the very first block or sector of the media. This will **destroy** any other data on the media. The disk image files are found in the Binary directory of the distribution. Floppy disk images are prefixed with "fd_" and hard disk images are prefixed with "hd_". The floppy images are specifically for 1.44M floppy media only. Each disk image has the complete set of normal applications and tools distributed with the associated operating system or application suite. @@ -272,11 +251,11 @@ The following table shows the disk image files available. Note that the images | Floppy | Hard | Description | | --------------- | --------------- | -------------------------------------- | -| fd_cpm22.img | hd_cpm22.img | DRI CP/M 2.2 bootable disk | -| fd_zsdos.img | hd_zsdos.img | ZSDOS 1.1 bootable disk | -| fd_nzcom.img | hd_nzcom.img | NZCOM bootable disk | -| fd_cpm3 | hd_cpm3.img | DRI CP/M 3 bootable disk | -| fd_zpm3 | hd_zpm3.img | ZPM3 bootable disk | +| 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 | hd_cpm3.img | DRI CP/M 3 boot disk | +| fd_zpm3 | hd_zpm3.img | ZPM3 boot disk | | fd_ws4 | 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, but in a single image with 6 slices (see below for information on disk 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. @@ -296,13 +275,41 @@ Note that unlike the ROM firmware, you do **not** need to choose a disk image sp All of the disk images that indicate they are bootable (boot disk) will boot from disk as is. You do not need to run `SYSCOPY` on them to make them bootable. However, if you upgrade your ROM, you should use `SYSCOPY` to update the system tracks. +## Booting Disks + +When starting your system, following the hardware initialization, you will see the Boot Loader prompt. In addition, to the ROM boot options, you will see another line listing the Disk boot options. This line lists the disk devices that you can choose to boot directly. + +You will notice that you do not have an option to boot a drive letter here (like C:). This is because the operating system is not yet loaded. When you ran `SYSCOPY` previously, remember that C: was assigned to IDE0:0 which means device IDE0, slice 0. So, to boot the disk that you just setup with `SYSCOPY`, you would choose option 1. You will then be prompted for the slice on IDE0 that you want to boot. For now, just press enter to choose slice 0. Once you are familiar with slices, you 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 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 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 prompt. + # General Usage -Each of the operating systems and ROM applications included with RomWBW are sophisticated tools in their own right. It is not reasonable to document their usage here. However, you will find complete manuals in PDF format in the Doc directory of the distribution. The intention of this section is to document the RomWBW specific enhancements to these OSes. +Each of the operating systems and ROM applications included with RomWBW are sophisticated tools in their own right. It is not reasonable to document their usage here. However, you will find complete manuals in PDF format in the Doc directory of the distribution. The intention of this section is to document the RomWBW specific enhancements to these operating systems. ## ROM Disk -In addition to the ROM-based operating systems and applications, the ROM also contains a ROM disk with a small CP/M filesystem. The contents have been optimized to provide a core set of tools and applications that are helpful for either CP/M 2.2 and ZSDOS. Since ZSDOS is CP/M 2.2 compatible, this works fairly well. However, you will find some files on the ROM disk that will work with ZSDOS, but will not work on CP/M 2.2. For example, `LDDS`, which loads the ZSDOS date/time stamper will only run on ZSDOS. +In addition to the ROM-based operating systems and applications, the ROM also contains a ROM disk with a small CP/M filesystem. The contents of the ROM disk have been chosen to provide a core set of tools and applications that are helpful for either CP/M 2.2 or ZSDOS. Since ZSDOS is CP/M 2.2 compatible, this works fairly well. However, you will find some files on the ROM disk that will work with ZSDOS, but will not work on CP/M 2.2. For example, `LDDS`, which loads the ZSDOS date/time stamper will only run on ZSDOS. ## Drive Letter Assignment @@ -318,25 +325,25 @@ When performing a ROM boot of an operating system, note that A: will be your RAM The vintage operating systems included with RomWBW were produced at a time when mass storage devices were quite small. CP/M 2.2 could only handle filesystems up to 8MB. In order to achieve compatibility across all of the operating systems supported by RomWBW, the hard disk filesystem format used is 8MB. This ensures any filesystem will be accessible to any of the operating systems. -Since storage devices today are quite large, RomWBW implements a mechanism called slicing to allow up to 256 8MB filesystems on a single large storage device. This allows up to 2GB of useable space on a single media. You can think of slices as a way to refer to the first 256 8MB chunks of space on a single media. +Since storage devices today are quite large, RomWBW implements a mechanism called slicing to allow up to 256 8MB filesystems on a single large storage device. This allows up to 2GB of useable space on a single media. You can think of slices as a way to refer to any of the first 256 8MB chunks of space on a single media. Of course, the problem is that CP/M-like operating systems have only 16 drive letters (A:-P:) available. Under the covers, RomWBW allows you to use any drive letter to refer to any slice of any media. The `ASSIGN` command is provided to allow you to view or change the drive letter mappings at any time. At startup, the operating system will automatically allocate a reasonable number of drive letters to the available storage devices. The allocation will depend on the number of large storage devices available at boot. For example, if you have only one hard disk type media, you will see that 8 drive letters are assigned to the first 8 slices of that media. If you have two large storage devices, you will see that each device is allocated four drive letters. -Referring to slices within a storage device is done by appending a :n where n is the device relative slice number from 0-255. For example, if you have an IDE device, it will show up as IDE0: in the boot message meaning the first IDE device. To refer to the second slice of IDE0, you would type "IDE0:1". So, if I wanted to use drive letter L: to refer to the second slice of IDE0, I could use the command `ASSIGN L:=IDE0:1`. +Referring to slices within a storage device is done by appending a :n where n is the device relative slice number from 0-255. For example, if you have an IDE device, it will show up as IDE0: in the boot messages meaning the first IDE device. To refer to the fourth slice of IDE0, you would type "IDE0:3". So, if I wanted to use drive letter L: to refer to the fourth slice of IDE0, I could use the command `ASSIGN L:=IDE0:3`. There are a couple of rules to be aware of when assigning drive letters. First, you may only refer to a specific device/slice with one drive letter. Said another way, you cannot have multiple drive letters referring to a single device/slice at the same time. Second, there must always be a drive assigned to A:. Any attempt to violate these rules will be blocked by the `ASSIGN` command. Unlike MS-DOS partitions, slices are not allocated -- there is no partitioning of slices. Think of every hard disk type device as having a pre-allocated set of 256 8MB slices at the start of the media. You can refer to any of them simply by assigning a drive letter. RomWBW will not check to see if there is anything else on the hard disk in the slice you are referring to, nor will it verify that the hard disk media is large enough to have a slice at the location you refer to. If you attempt to write past the end of your media, you will get an I/O error displayed, so you will know if you make a mistake. There is no tracking of your use of slices -- you will need to keep track of your use of slices yourself. -Nothing automatically initializes a slice as a file system. You must do that yourself using `CLRDIR`. Since CLRDIR works on drive letters, make absolutely sure you know what media and slice are assigned to that drive letter before using `CLRDIR`. +Nothing automatically initializes a slice as a file system. You must do that yourself using `CLRDIR`. Since `CLRDIR` works on drive letters, make absolutely sure you know what media and slice are assigned to that drive letter before using `CLRDIR`. -While it probably obvious, you cannot use slices on any media less than 8MB in size. Specifically, you cannot slice RAM disk, ROM disk, floppy disks, etc. +While it is probably obvious, you cannot use slices on any media less than 8MB in size. Specifically, you cannot slice RAM disks, ROM disks, floppy disks, etc. # Inbuilt ROM Applications -In addition to CP/M 2.2 and Z-System, there are several additional ROM applications that can be launched directly from ROM. These applications are not hosted by an operating system and so they are unable to save files to disk devices. +In addition to CP/M 2.2 and Z-System, there are several ROM applications that can be launched directly from ROM. These applications are not hosted by an operating system and so they are unable to save files to disk devices. -The following options are available at the boot loader prompt: +The following ROM applications are available at the boot loader prompt: | Application | | | ----------- | -------------------------------------------------------------- | @@ -354,7 +361,7 @@ Space is available in the ROM image for the inclusion of other software. Any inb The operation of the RomWBW hosted operating systems is enhanced through several custom applications. These applications are functional on all of the OS variants included with RomWBW. -The following custom applications are found on the RomWBW ROM disk and are, therefore, globally available. +The following custom applications are found on the ROM disk and are, therefore, globally available. | Application | Description | | ----------- | -------------------------------------------------------------- | @@ -368,7 +375,7 @@ The following custom applications are found on the RomWBW ROM disk and are, ther | FDISK80 | John Coffman's Z80 hard disk partitioning tool. See documentation in Doc directory. | | FAT | Access MS-DOS FAT filesystems from RomWBW (based on FatFs). | | FLASH | Will Sowerbutts' in-situ ROM programming utility. | -| CLRDIR | Format the directory areas of a CP/M disk. | +| CLRDIR | Initialize the directory area of a CP/M disk (Max Scane). | Some custom applications do not fit on the ROM disk. They are found on the disk image files or the individual files can be found in the Binary\\Apps directory of the distribution. @@ -383,7 +390,7 @@ There is additional documentation on some of these applications at the [RomWBW A One of the primary goals of RomWBW is to expose a set of generic hardware functions that make it easy to adapt operating systems to any hardware supported by RomWBW. As a result, there are now 5 operating systems that have been adapted to run under RomWBW. The adaptations are identical for all hardware supported by RomWBW because RomWBW hides all hardware specifics from the operating system. -Note that all of the operating systems included with RomWBW support the same basic filesystem format. As as result, a formatted filesystem will be accessible to any operating system. The only possible issue is that if you turn of date/time stamping using the newer OSes, the older OSes will not understand this. Files will not be corrupted, but the date/time stamps may be lost. +Note that all of the operating systems included with RomWBW support the same basic filesystem format. As a result, a formatted filesystem will be accessible to any operating system. The only possible issue is that if you turn on date/time stamping using the newer OSes, the older OSes will not understand this. Files will not be corrupted, but the date/time stamps may be lost. The following sections briefly describe the operating system options currently available. @@ -403,7 +410,7 @@ To use, NZCOM, you must run through a simple configuration process. This is wel ## Digital Research CP/M 3 -This is the Digital Research follow-up product to their very popular CP/M 2.2 operating system. While highly compatible with CP/M 2.2, it features many enhancements. It makes better use of banked memory to increase the user program space (TPA). It also has a new suite of support tools and help system. +This is the Digital Research follow-up product to their very popular CP/M 2.2 operating system. While highly compatible with CP/M 2.2, it features many enhancements. It makes direct use of banked memory to increase the user program space (TPA). It also has a new suite of support tools and help system. Note that to make a CP/M 3 boot disk, you actually place CPMLDR.SYS on the system tracks of the disk. You do not place CPM3.SYS on the system tracks. @@ -411,11 +418,11 @@ Note that to make a CP/M 3 boot disk, you actually place CPMLDR.SYS on the syste ZPM3 is an interesting combination of the features of both CP/M 3 and ZCPR 3. Essentially, it has the features of and compatibility with both. -Like CP/M 3, to make ZPM3 boot disk, you put CPM3.SYS on the system tracks of the disk. +Like CP/M 3, to make ZPM3 boot disk, you put CPMLDR.SYS on the system tracks of the disk. ## FreeRTOS -Note that Phillip Stevens has also ported FreeRTOS to run under RomWBW. FreeRTOS is not provided in the RomWBW distribution, but is available from Phillip. +Note that Phillip Stevens has also ported FreeRTOS to run under RomWBW. FreeRTOS is not provided in the RomWBW distribution. You can contact Phillip for availability. # Transferring Files @@ -427,9 +434,9 @@ RomWBW provides an serial file transfer program called XModem that has been adap You can type `XM` by itself to get usage information. In general, you will run `XM` with parameters to indicate you want to send or receive a file on your RomWBW system. Then, you will use your modern computers terminal program to complete the process. -The `XM` application generally tries to detect the hardware you are using and adapt to it. However, you must ensure that you have a realiable serial connection. You must also ensure that the speed of the connection is not too fast for XModem to handle. Alternatively, you can ensure that hardware flow control is working properly. +The `XM` application generally tries to detect the hardware you are using and adapt to it. However, you must ensure that you have a reliable serial connection. You must also ensure that the speed of the connection is not too fast for XModem to service. Alternatively, you can ensure that hardware flow control is working properly. -There is an odd interaction between XModem and partner terminal programs that can occur. Essentially, after launching `XM`, you must start the protocol on your modern computer fairly quickly (usually about 20 seconds or so). So, if you do not pick a file on your modern computer quickly enough, you will find that the transfer completes about 16K, then hangs. The interaction that casuses this is beyond the scope of this document. +There is an odd interaction between XModem and partner terminal programs that can occur. Essentially, after launching `XM`, you must start the protocol on your modern computer fairly quickly (usually in about 20 seconds or so). So, if you do not pick a file on your modern computer quickly enough, you will find that the transfer completes about 16K, then hangs. The interaction that causes this is beyond the scope of this document. ## Disk Image Transfers @@ -442,17 +449,17 @@ The general process to get files from your modern computer to a RomWBW computer 3. Use a disk imaging tool to copy the RomWBW filesystem image onto the media. 4. Move the media back to the RomWBW computer. -This process is a little complicated, but it has the benefit of allowing you to get a lot of files over to your RomWBW system quickly and with little change of corruption. +This process is a little complicated, but it has the benefit of allowing you to get a lot of files over to your RomWBW system quickly and with little chance of corruption. The process can be run in reverse to get files from your RomWBW computer to a modern computer. The exact use of these tools is a bit too much for this document, but the tools are all included in the RomWBW distribution along with usage documents. -Note that the build scripts for RomWBW create the default disk images supplied with RomWBW. It is relatively easy to customize the contents of the disk images that are part of RomWBW. This is described in more detail in the Source\\Images driectory of the distribution. +Note that the build scripts for RomWBW create the default disk images supplied with RomWBW. It is relatively easy to customize the contents of the disk images that are part of RomWBW. This is described in more detail in the Source\\Images directory of the distribution. ## FAT Filesystem Transfers -RomWBW provides a mechanism that allows it to read and write files on an FAT formatted disk. This means that you can generally use your modern computer to make an SD Card or CF Card with a standard FAT32 filesystem on it, then place that media in your RomWBW computer and read/write the files. +RomWBW provides a mechanism that allows it to read and write files on a FAT formatted disk. This means that you can generally use your modern computer to make an SD Card or CF Card with a standard FAT32 filesystem on it, then place that media in your RomWBW computer and access the files. When formatting the media on your modern computer, but sure to pick the FAT filesystem. NTFS and other filesystems will not work. @@ -464,19 +471,19 @@ For advanced users, it is possible to create a hybrid disk that contains CP/M sl # Startup Command Processing -Each of the operating system supported by RomWBW provide a mechanism to run commands at boot. This is similar to the AUTOEXEC.BAT files from MS-DOS. +Each of the operating systems supported by RomWBW provide a mechanism to run commands at boot. This is similar to the AUTOEXEC.BAT files from MS-DOS. -With the exception of ZPM3, all operating system will look for a file called `PROFILE.SUB` on the system drive at boot. If it is found, it will be processed as a standard CP/M submit file. You can read about the use of the SUBMIT facility in the CP/M manuals included in the RomWBW distribution. +With the exception of ZPM3, all operating systems will look for a file called `PROFILE.SUB` on the system drive at boot. If it is found, it will be processed as a standard CP/M submit file. You can read about the use of the SUBMIT facility in the CP/M manuals included in the RomWBW distribution. Note that the boot disk must also have a copy of `SUBMIT.EXE`. In the case of ZPM3, the file called `STARTZPM.COM` will be run at boot. To customize this file, you use the ZCPR ALIAS facility. You will need to refer to ZCPR documentation for more information on the ALIAS facility. -Note that automatic startup processing generally requires booting to a disk drive. Since the ROM disk is not writable, there is no simple way to add/edit a `PROFILE.SUB` file there. If you want to customize your ROM and add a `PROFILE.SUB` file to the ROM Disk, it will work, but is a lot harder than using a boot disk. +Note that the automatic startup processing generally requires booting to a disk drive. Since the ROM disk is not writable, there is no simple way to add/edit a `PROFILE.SUB` file there. If you want to customize your ROM and add a `PROFILE.SUB` file to the ROM Disk, it will work, but is a lot harder than using a boot disk. # ROM Customization The pre-built ROM images are configured for the basic capabilities of each platform. Additionally, some of the typical add-on hardware for each platform will be automatically detected and used. If you want to go beyond this, RomWBW provides a very flexible configuration mechanism based on configuration files. Creating a customized ROM requires running a build script, but it is quite easy to do. -Essentially, the creation of a custom ROM is accomplished by updating a small configuration file, then running a script to compile the software and generate the custom ROM image. There are build scripts for Windows, Linux, and MacOS to accommodate virtually all users. All required build tools (compilers, assemblers, etc.) are included in the distribution, so it is not necessary to setup a build environment on your computer. +Essentially, the creation of a custom ROM is accomplished by updating a small configuration file, then running a script to compile the software and generate the custom ROM and disk images. There are build scripts for Windows, Linux, and MacOS to accommodate virtually all users. All required build tools (compilers, assemblers, etc.) are included in the distribution, so it is not necessary to setup a build environment on your computer. The process for building a custom ROM is documented in the ReadMe.txt file in the Source directory of the distribution. @@ -503,6 +510,10 @@ Please refer to the [UNA BIOS Firmware Page](https://www.retrobrewcomputers.org/ # RomWBW Distribution +All source code and distributions are maintained on GitHub. Code contributions are very welcome. + +[RomWBW GitHub Repository](https://github.com/wwarthen/RomWBW|https://github.com/wwarthen/RomWBW) + ## Distribution Directory Layout The RomWBW distribution is a compressed zip archive file organized in a set of directories. Each of these directories has it's own ReadMe.txt file describing the contents in detail. In summary, these directories are: @@ -514,12 +525,6 @@ The RomWBW distribution is a compressed zip archive file organized in a set of d | Source | Contains the source code files used to build the software and ROM images. | | Tools | Contains the MS Windows programs that are used by the build process or that may be useful in setting up your system. | -## Source Code Respository - -All source code and distributions are maintained on GitHub. Code contributions are very welcome. - -[RomWBW GitHub Repository](https://github.com/wwarthen/RomWBW|https://github.com/wwarthen/RomWBW) - # Acknowledgements 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!). diff --git a/Source/Doc/ZCPR Manual/Main.ltx b/Source/Doc/ZCPR Manual/Main.ltx deleted file mode 100644 index 2cc18498..00000000 --- a/Source/Doc/ZCPR Manual/Main.ltx +++ /dev/null @@ -1,25 +0,0 @@ -\documentclass[letterpaper,10pt,oneside]{book} -\usepackage[T1]{fontenc} -%\usepackage[defaultmono]{droidmono} -\usepackage[scaled]{beramono} -\usepackage{fancyvrb} -\usepackage{geometry} -\usepackage{pdflscape} -%\usepackage{showframe} % Diagnostic - -% Suppress headers and footers completely -\pagestyle{empty} - -% 66 lines per page, portrait -\geometry{top=0.0in, bottom=0.0in, left=1.5in, right=1.5in} - -\RecustomVerbatimCommand{\VerbatimInput}{VerbatimInput} -{ - commandchars=\\\{\} -} - -\begin{document} - -\VerbatimInput{zcpr.ltx} - -\end{document} \ No newline at end of file diff --git a/Source/Doc/ZCPR Manual/zcpr.ltx b/Source/Doc/ZCPR Manual/zcpr.ltx deleted file mode 100644 index 732f43a7..00000000 --- a/Source/Doc/ZCPR Manual/zcpr.ltx +++ /dev/null @@ -1,1384 +0,0 @@ - - - - ZCPR - A Z80 Replacement for the CP/M CCP - - - - - - - \textbf{Documentation on ZCPR - A Z80 Replacement for the CP/M CCP} - - - - - ZCPR is a Group Project By the CCP-GROUP: - RLC - Richard Conn FJW - Frank Wancho - KBP - Keith Peterson RGF - Ron Fowler - - - ZCPR Documentation By RLC - - - - - - - - Table of Contents - ----- -- -------- - - Introduction 2 - - Part A: Installation Instructions 4 - ZCPR Integration Example 5 - Setting the ZCPR Inline Options 8 - REL, BASE, CPRLOC, RAS, SUBA, CLEVEL3 8 - Customization Symbols 8 - NLINES, WIDE, PGDFLT 8 - PGDFLG, MAXUSR, SYSFLG, SOFLG, SUPRES, - DEFUSR, SPRMPT, CPRMPT, NUMBASE, 9 - SECTFLG, FENCE 10 - Patching SUBMIT.COM 10 - - Part B: Usage Instructions and Explanation of - Commands 11 - The ZCPR Command Hierarchy Search 11 - The ZCPR-Resident Commands 14 - DIR, ERA 14 - LIST, TYPE, SAVE 15 - REN, USER, DFU 16 - JUMP, GO, GET 17 - ZCPR Error Messages 18 - - Part C: ZCPR Command Levels and How to Use Them 19 - - - - - - - - - Page 1 - - - - - - ZCPR - A Z80 Replacement for the CP/M CCP - - - - \textbf{Documentation on ZCPR - A Z80 Replacement for the CP/M CCP} - - - - - ZCPR is a replacement for the CP/M Console Command Processor - (CCP) which is designed to run as part of CP/M on Z80-based - microcomputers. In most cases it is upward-compatible with the - original CP/M Version 2.2 CCP. - - ZCPR, however, provides many extensions to the CP/M CCP. - Included in these extensions are the following features: - - . The TYPE function can be made to page or not page its - output at the user's discretion - - . A LIST function is available which sends its output - to the CP/M LST: Device and does NOT page - - . The DIR command has been extended to allow the dis- - play of the system files or all files - - . The ERA command now prints out the names of the files - it is erasing - - . The current user number may be included as part of - the command prompt; if the user is under a number other than 0, - the prompt is of the form 'du>' (like 'A2>' or 'B10>'), and, if - the user is under 0, the prompt may be 'd>' or 'd0>' as per his - choice - - . The SUBMIT facility has been changed in two basic - ways: - - the prompt changes to 'du$' or 'd$' when the - SUBMIT command is printed - - the $$$.SUB is executed from drive A: (note that - the original SUBMIT problem now exists, but the new SUB.COM - facility corrects it); the CCP-GROUP definition of an Indirect - Command File now applies, and this definition is that any - sequence of commands which may be issued from the console is also - a valid sequence of commands for execution from an Indirect - Command File; hence, the sequence: - - DIR - B: - DIR - A: - - may be issued from either the console or an Indirect Command - File, and the results of the execution of this sequence are the - same. Basically, this says that Indirect Command Files are - upward-compatible to the console input (but not necessarily that - the contents of an Indirect Command File may be issued at the - console without modification). - - - Page 2 - - - - - - ZCPR - A Z80 Replacement for the CP/M CCP - - - - . A command-search hierarchy is now implemented which - is executed roughly as follows: - - the user's command is checked against the CPR- - resident commands and executed immediately if a match is found - - failing that, the current user number on the - current disk is scanned for the COM file; the COM file is loaded - and executed if found - - failing that, a default user number (initially 0 - but can be reset with the DFU CPR-resident command) on the cur- - rent disk is scanned for the COM file; the COM file is loaded and - executed if found - - finally, failing that, the default user number - on disk A: is scanned for the COM file; the COM file is loaded - and executed if found or an error message (COMMAND?, when COMMAND - was the user's command name) is printed - - . The numeric argument for the SAVE command can be - specified in hexadecimal so that the user may employ the values - presented by tools such as DDT exactly as they are given - - . A GET command which loads a file at a specified - memory address and a JUMP command which "calls" the subroutine at - a specified memory address have been added; a GO command which - "calls" the subroutine at 100H (subset of the JUMP capability) - has also been added - - - This document provides the user of ZCPR with the following - information: - - Part A: Installation Instructions - Part B: Usage Instructions and Explanation of Commands - Part C: ZCPR Command Levels and How to Use Them - - - - - - - - - - - - - - - - - - - - - - - - Page 3 - - - - - - ZCPR - A Z80 Replacement for the CP/M CCP - - - - Part A - Installation Instructions - - In order to install ZCPR on a target microcomputer (must be - currently running CP/M 2.2), the user must know two basic things: - - 1) Where his CCP is currently running in memory - 2) Where his CCP is located in the SYSGEN image, or, - for systems which don't support SYSGEN (such as P&T CP/M 2.2 for - the TRS-80 Model II), where his CCP is located on disk and how to - place the new ZCPR on top of it - - The first question is answered relatively easily. A pro- - gram, known as either BDOSLOC or BDLOC (for BDOS Locator), is - provided with ZCPR. You should assemble this program for your - particular computer (change the base ORG if you are running non- - ORG-0 CP/M) and execute it. Upon execution, it will provide you - with the base address of (1) the BDOS and (2) the CCP for your - particular system. BDOSLOC has worked correctly for all systems - tested so far, but there is always a chance that it may NOT work - for some non-tested system. For the time being, assume that it - works correctly and record the starting base page address of your - CCP. - - The second question is not answered nearly so easily. If - you have the ability to SYSGEN your system, it is much easier - (commonly) than if you do not. You must, after assembling the - ZCPR properly, integrate it into the sysgen (or disk) image of - CP/M. This can be done by obtaining a SYSGEN image of your - system, scanning it via a debugger such as DDT to find the offset - for the CCP, reading the new CPR in on top of the old one, and - finally running SYSGEN again to place the resultant system on - disk. If you DO NOT have SYSGEN capability, a Disk Utility - program is required to locate the CCP on disk and then write the - new ZCPR on top of the old one. The net result of this - integration is the placement of the new ZCPR onto disk in the - proper place so that it will be loaded with the rest of CP/M on - cold boot and executed properly. - - To find the original CCP, you typically have to locate it by - its appearance. It is probably stored contiguously on disk, so, - once it is found, a sequential overwrite is all that is required. - Probability is extremely high that it is stored contiguously in - the SYSGEN image. The CCP starts with two (2) and ONLY TWO jump - instructions followed by a buffer area (possibly containing an - initial command and/or the Digital Research copyright notice). - The Digital Research manuals show the CCP to reside at address - 980H in the SYSGEN image, but this may vary with system. To - find this image, use DDT or some other such debugger, load the - SYSGEN image you can get via SYSGEN, and examine memory starting - at around 900H for the two (and ONLY two) jumps described above. - If you find an area with more than two jumps (a group of them), - you are probably looking at the BIOS and should go lower for the - CCP. The CCP will probably start on an even page or half-page - address (like 900H, 980H, 1100H, etc). - - Page 4 - - - - - - ZCPR - A Z80 Replacement for the CP/M CCP - - - - Now that the location of the CCP has been found, record this - address for later. You are now ready for the integration of ZCPR - into your system. To do this, perform the following steps using - the information of the page address of the CCP (obtained from - BDOSLOC and called CPRLOC within ZCPR) and the SYSGEN image - address of the CCP (called IMAGE for reference in this document). - - 1. Edit ZCPR and set the CPRLOC equate to the value - obtained from above. Also set any flags and values as you desire - (see the section on ZCPR Customization below). When satisfied, - end the edit session. - - 2. Assemble ZCPR with MAC (or equivalent). This - assembler is required because of the MACROs used. Only the - resultant HEX file is required. - - 3. Assuming that you can use SYSGEN, obtain a SYSGEN - image of your current CP/M system and save it on disk. - - 4. Load the SYSGEN image into memory with DDT (or - equivalent). Once loaded, verify that the original CCP is at the - IMAGE address found above and compute the integration offset - using the DDT H command: - H, - The second number displayed gives you the OFFSET value required - for step 5. - - 5. Integrate ZCPR into your SYSGEN image via DDT's I - and ROFFSET commands. Use IZCPR.HEX (or the name of your version - of ZCPR) to load the FCB and ROFFSET (where OFFSET was computed - in step 4) to load the ZCPR.HEX file into memory at the proper - location. Check to see that ZCPR is indeed properly loaded by - examining the SYSGEN IMAGE area. - - 6. Place the new system on disk by running SYSGEN and - NOT loading the system from disk (use the memory image). - - For further clarification of the above process, the - following is a sample terminal session which outlines the steps - taken. - - ZCPR Integration Example - - - B>; Sample terminal session for integrating ZCPR - B>sysgen - SYSGEN VER 2.2 - SOURCE DRIVE NAME (OR RETURN TO SKIP)b - SOURCE ON B, THEN TYPE RETURN <-- I hit the RETURN key here - FUNCTION COMPLETE / - DESTINATION DRIVE NAME (OR RETURN TO REBOOT) <-- and here - B>save 44 cpm56.com <-- We now have a SYSGEN image of CP/M - to work with - - - - Page 5 - - - - - - ZCPR - A Z80 Replacement for the CP/M CCP - - - B>xdir - XDIR Version 2.6 User Number: 0, Double Density - File Attributes: Non-System - - Filename.Typ Size K Filename.Typ Size K Filename.Typ Size K - -------- --- ------ -------- --- ------ -------- --- ------ - !TEXTWRK.-12 0 CPR .DOC 8 EE687 .TXT 4 - CPR .AQM 34 TFS .HLP 6 EE687PRE.TXT 4 - CPR .ASM 50 CONTENTS.T01 6 SW1 .TXT 10 - CPR .BAK 4 CONTENTS.T02 4 SW2 .TXT 2 - CPM56 .COM 12 CONTENTS.T03 4 - B: 30 Entries & 22 Files -- 338K Bytes Remaining - File Data: 14 Files -- 154K Bytes Displayed - B>bdosloc <-- Now to locate the CCP's address - The Base Page Address of this system's BDOS is C5 - The Base Page Address of this system's CCP is BD <-- This is it - B>ddt cpm56.com <-- Now to find the CCP in the SYSGEN image - DDT VERS 2.0 - NEXT PC - 2D00 0100 - -d900,90f <-- Start looking around here - 0900 31 80 E7 3E 06 3C 3C FE 1B CA 00 C2 DA 11 E7 D6 1..>.<<......... - -da00,a0f - 0A00 31 00 01 01 01 0C C5 CD 0F E4 21 00 BE 11 00 04 1.........!..... - -db00,b0f - 0B00 31 00 01 01 01 11 C5 CD 0F E4 21 00 C0 11 00 02 1.........!..... - -db80,b8f - 0B80 31 00 01 01 09 01 CD A8 00 21 00 D2 11 00 C2 0E 1........!...... - -- Detail Left Out -- - -d1100 <-- I found it at 1100H; note the 2 JMP's - 1100 C3 FF BD C3 FB BD 50 10 20 20 20 20 20 20 20 20 ......P. - 1110 20 20 20 20 20 20 20 20 00 00 00 00 00 00 00 00 ........ - 1120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - -- Detail Left Out -- - -^C <-- Return to CP/M; I know that CPRLOC will be - BD00H and the IMAGE offset is 1100H - - B>ed cpr.asm \{edit ZCPR here and place CPRLOC=BD00H\}# - -- Detail Left Out -- - - B>mac cpr $pz sz <-- Now to assemble the CPR - CP/M MACRO ASSEM 2.0 - C4F0 <-- Note that CPR MUST end before BDOS - begins! - 014H USE FACTOR - END OF ASSEMBLY - - - - - - - - - - - - Page 6 - - - - - - ZCPR - A Z80 Replacement for the CP/M CCP - - - - - B>ddt cpm56.com <-- Now to integrate! - DDT VERS 2.0 - NEXT PC - 2D00 0100 - -h1100,bd00 <-- Compute offset for new CPR - CE00 5400 <-- Offset is 5400H - -icpr.hex <-- Init FCB - -r5400 <-- Read in new CPR with offset - NEXT PC - 2D00 0000 - -^C <-- Done! - B>sysgen <-- Now to SYSGEN onto disk - SYSGEN VER 2.2 - SOURCE DRIVE NAME (OR RETURN TO SKIP) <-- Use memory image - DESTINATION DRIVE NAME (OR RETURN TO REBOOT)b <-- onto B: - DESTINATION ON B, THEN TYPE RETURN - FUNCTION COMPLETE - DESTINATION DRIVE NAME (OR RETURN TO REBOOT) <-- Done for now - - B> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Page 7 - - - - - - ZCPR - A Z80 Replacement for the CP/M CCP - - - - Setting the ZCPR Inline Options - - The following are the four basic options available to the - user under ZCPR for customization of his package. - - Option Name Function - - REL Configures CPRLOC (CPRLOC equ 0) for integration - via MOVCPM rather than the DDT/SYSGEN technique - outlined above; set to TRUE for MOVCPM integra- - tion or FALSE for DDT/SYSGEN integration - - BASE Base address of your CP/M system; standard CP/M - has a base of 0, but some CP/M systems (such as - for the TRS-80 Model I and Heath/Zenith H89/Z89) - start physical RAM memory at a higher address; - equate BASE to the starting RAM memory address of - your system - - CPRLOC This is the starting address of ZCPR; set the - second CPRLOC equate to the address you obtain - from BDOSLOC - - RAS This is an equate which masks out selected ZCPR - command functions for security purposes on - Remote Access Systems such as Bulletin Boards; - the masked out functions currently include - SAVE, ERA, REN, JUMP, GO, and GET; set RAS to TRUE - to mask these out or FALSE to leave them in - - SUBA This is an equate which determines the drive - onto which ZCPR will look for an executing - Indirect Command File. If the basic philosophy - of the Indirect Command File described above is - to be maintained, this symbol should be set to - TRUE (look on drive A: for the $$$.SUB file); if - not, this symbol should be set to FALSE (look on - the default drive from the $$$.SUB file). To - review, the basic philosophy of the Indirect - Command File is that any sequence of commands - which may be issued from the console (within - reason, which means NOT to erase a $$$.SUB file) - may also be issued from within an Indirect - Command File, and the resultant execution should - be identical (same functions performed). - - CLEVEL3 This equate enables or disables extended Command - Level 3 Processing. If set to TRUE, extended - Command Level 3 Processing is enabled and the user - command line is automatically capitalized, the - terminating zero is placed at the end of the - buffer, and the internal CIBPTR is set correctly - (see later for more information). - - - - Page 8 - - - - - - ZCPR - A Z80 Replacement for the CP/M CCP - - - - - Customization Symbols - - The following symbols are provided for further customization - of ZCPR to a user's particular tastes and hardware facilities. - - Option Name Function - - NLINES Number of lines on the user's CRT for paging - - WIDE This equate is used to select a narrow or wide - display under the DIR command; if WIDE is equated - to TRUE, each file name is separated by two - spaces, a FENCE, and two more spaces; if WIDE is - equated to FALSE, each file name is separated by - one space, a FENCE, and one more space - - PGDFLT This is the Paging Default flag for the TYPE - command; if PGDFLT is set to TRUE, the TYPE - command will page its output by default and - the P option on the TYPE command (see below) - will prohibit paging; if PGDFLT is set to FALSE, - the TYPE command will NOT page its output by - default and the P option will enable paging - - PGDFLG This sets the option character in the command - line for the TYPE command (the 'P' mentioned - above); if the user wishes to change this option - character, he need only change this equate - - MAXUSR This is the largest user number recognized by - the USER command; if the user wishes to protect - the higher user areas, he may set this symbol - to the highest area normally accessable; 15 is - the largest permitted value for MAXUSR - - SYSFLG This is the option character for the DIR command - line which is used to specify that DIR search - All Files (both $SYS and $DIR) for its display; - the distributed default for this is 'A' - - SOFLG This is the option character for the DIR command - line which is used to specify that DIR search - ONLY the $SYS files for its display; the distri- - buted default for this is 'S' - - SUPRES Set SUPRES to TRUE to suppress printing the user - number when the user is under User Number 0 or - set SUPRES to FALSE to ALWAYS display the User - Number with the CPR prompt; with SUPRES set to - TRUE, a user on B: in user 0 sees 'B>' as the - prompt, but with SUPRES set to FALSE, a user on - B: in user 0 sees 'B0>' as the prompt - - - - Page 9 - - - - - - ZCPR - A Z80 Replacement for the CP/M CCP - - - - DEFUSR This is the CPR-default user number which is - searched in the command hierarchy for the COM - files (distributed as 0); the DFU changes this - temporarily until a Warm Boot or Cold Boot is - done, at which time the search reverts to this - value - - SPRMPT This is the CPR prompt character which indicates - that a SUBMIT file is in execution; by default - it is set to '$', so prompts like 'A$' appear - during SUBMIT file execution - - CPRMPT This is the CPR prompt character which indicates - that the CPR is awaiting a user console command; - by default it is set to '>', so prompts like - 'A>' appear during user input to the CPR - - NUMBASE This is the escape character used by those - commands which require a DECIMAL number as - an argument; placing this character after - the number argument switches the base to - HEXADECIMAL; for example, 'SAVE 15 MYFILE' can be - expressed as 'SAVE FH MYFILE' if NUMBASE is - set to 'H' (the default) - - SECTFLG This character constant is the suffix option for - the SAVE command which specifies that sectors, - as opposed to pages, are to be saved; the default - value is 'S' - - FENCE This is the character printed to separate entries - in a directory listing; it's default value is '|' - - - Patching SUBMIT.COM - - SUBMIT.COM may be patched to run with ZCPR by the following - procedure (this is recommended if the user does not have - SUB.COM). This patch simply makes it always place the $$$.SUB - file on Drive A:. Illustrative terminal session follows: - - A>ddt b:submit.com - DDT VERS 2.0 - NEXT PC - 0600 0100 - -s5bb <-- Patch is at 5BB Hex - 05BB 00 1 <-- Change 0 (default drive) to 1 (drive A:) - 05BC 24 . <-- That's it! - -d5b0 5cf <-- See change - 05B0 00 00 00 00 00 00 30 30 31 20 24 01 24 24 24 20 ......001 $.$$$ - 05C0 20 20 20 20 53 55 42 00 00 00 1A 1A 1A 1A 1A 1A SUB......... - -^C <-- Done - A>save 5 newsubmt.com <-- Save new SUBMIT.COM file - - - - Page 10 - - - - - - ZCPR - A Z80 Replacement for the CP/M CCP - - - - Part B - Usage Instructions and Explanation of Commands - - - The following instructions are written with the assumption - that the reader is quite familiar with how to use CP/M 2.2 and - its CCP. ZCPR is written as a logical extension of the CP/M 2.2 - CCP philosophy and should be addressed as such. - - - - The ZCPR Command Hierarchy Search - - The first, and most basic thing, to learn about ZCPR is the - order in which is searches for a COM file for execution or a file - specified by the GET command. Under the CP/M 2.2 CCP, if the - specified COM file command was not found on the current drive in - the current user area, the CCP aborted with an error message. - ZCPR, however, continues searching from this point a maximum of - two more levels. This command hierarchy search was outlined - above and is described here in further detail. - - 1. If the command is of the form 'COMMAND' and NOT - 'd:COMMAND', the CPR-resident command list is searched for a - match. If the match is found, the CPR-resident command is - immediately processed. If the match is not found or the command - is of the form 'd:COMMAND', the next step is taken. Note that - the 'd:COMMAND' form is good for executing a command COM file - which has the same name as a CPR-resident command (such as SAVE - or DIR). - - 2. If the command is of the form 'd:COMMAND', disk - drive 'd:' is temporarily logged in for the purpose of the - command search. Otherwise, the currently logged-in drive is - used. - - 3. Now the file named COMMAND.COM is searched for. If - found, it is loaded into memory starting at 100H and executed. - If not, proceed to step 4. - - 4. Now that the first search for COMMAND.COM has - failed, the CPR checks to see if the user is under the current - Default User Number. The Default User Number may be that set by - the DEFUSR equate in the CPR or that set by the user via the DFU - command. DEFUSR is in effect if DFU has not been issued since - the last Warm or Cold Boot, and DFU is in effect if it was issued - since the last Warm or Cold Boot. If the user is NOT under the - current Default User Number, ZCPR temporarily logs him into it - and searches the directory. If COMMAND.COM is found, it is - loaded as described above and executed. If not, ZCPR proceeds to - the next step. - - - - - - Page 11 - - - - - - ZCPR - A Z80 Replacement for the CP/M CCP - - - - 5. The user is now in the Default User Number, and at - this point, ZCPR checks to see if the user is on disk drive A:. - If not, it temporarily logs into A: and searches the default user - number of A: for COMMAND.COM. If found, it is loaded as - described above and executed. If not, ZCPR prints the command - name as an error message and returns to command input mode, - aborting the SUBMIT file if COMMAND came from it. - - In all cases of the search above, if COMMAND.COM is found, - after it is loaded into memory, ZCPR resets the user to his - original disk drive and user number. Hence, the files referenced - by the user by default are obtained from this environment. - - To illustrate this command hierarchy search, consider the - following examples: - - Example 1: DEFUSR equ 0 \{default user number is 0\} - - B10> <-- User is on Drive B:, User Number 10 - B10>ASM TEST.BBZ <-- User wishes to assemble TEST.ASM in - Drive B:, User 10 - <-- At this point, ZCPR looks on B:/10 for ASM.COM, fails, - looks on B:/0, fails, and finally looks on A:/0; it - finds ASM.COM here and goes back to B:/10 for the file - - - Example 2: DEFUSR equ 0 and DFU issued - - B10> <-- User is on Drive B:, User Number 10 - B10>DFU 5 <-- User Selects User 5 as default - B10>ASM TEST.BBZ <-- As above - <-- At this point, ZCPR looks on B:/10 for ASM.COM, fails, - look on B:/5, fails, and finally looks on A:/5; it - fails here also and prints ASM? as an error message - - Example 3: DEFUSR equ 0 - - B> <-- User is on Drive B:, User Number 0 - B>ASM TEST.BBZ <-- As above - <-- At this point, ZCPR looks on B:/0 for ASM.COM, fails, - looks on A:/0, fails, and prints error message - - Example 4: DEFUSR equ 0 - - A10> <-- User is on Drive A:, User Number 10 - A10>ASM TEST.AAZ <-- As above, but file on A: - <-- At this point, ZCPR looks on A:/10 for ASM.COM, fails, - looks on A:/0, fails, and prints error message - - - - - - - - - Page 12 - - - - - - ZCPR - A Z80 Replacement for the CP/M CCP - - - - Another Example: - - For example, if the user is logged into Drive B: in - User Area 10, the Default User Number is 0, and the following COM - files are present as indicated -- - - WM.COM on Drive A: in User 0 - MBASIC.COM on Drive A: in User 0 and on - Drive B: in User 0 - TEST.COM on Drive B: in User 10 and Drive B: - in User 0 - - then the following happens when the following commands are - issued from the console (or Indirect Command File): - - B10>WM TEST2.TXT - ^ ^ ^-------- File to be edited - | +----------- Invoke the WM.COM file (Word Master editor) - +--------------- User is on Drive B: in User Area 10 - - Results: - ZCPR searches B: User 10, B: User 0, and A: User 0 for - WM.COM; it finds WM.COM in A: User 0, loads it, logs the user - back into B: User 10, and executes it. - - B10>MBASIC - ^ ^----- Invoke the MBASIC.COM file (MBASIC Interpreter) - +--------- User is on Drive B: in User Area 10 - - Results: - ZCPR searches B: User 10 and B: User 0 for MBASIC.COM; - it finds MBASIC.COM in B: User 0, so it doesn't bother to look on - A: User 0. MBASIC.COM is then loaded and executed as described - in the previous example. - - B10>TEST - ^ ^--- Invoke the TEST.COM file (TEST program) - +------- User is on Drive B: in User Area 10 - - Results: - ZCPR searches B: User 10 for TEST.COM; it finds - TEST.COM in B: User 0, so it doesn't bother to look further (if - it had, it would have found TEST.COM in B: User 0). TEST.COM is - then loaded and executed as described above. - - B10>TEST2 - | +--- Invoke the TEST2.COM file (TEST2 program) - +------- User is on Drive B: in User Area 10 - - Results: - ZCPR searches B: User 10, B: User 0, and A: User 0 for - TEST2.COM; it doesn't find it, so it issues the error message - 'TEST2?', which says it couldn't find TEST2.COM. - - - - Page 13 - - - - - - ZCPR - A Z80 Replacement for the CP/M CCP - - - - - - The ZCPR-Resident Commands - - The following pages describe the ZCPR-Resident Commands. - These are commands located within ZCPR itself which are executed - from within ZCPR. The phrases and refer to ambiguous - file name and unambigous file name as per the CP/M convention. - - Command: DIR - Function: To Display a listing of the names of the files on disk - Forms: - DIR <-- Displays $DIR files - DIR S <-- Displays $SYS files - DIR A <-- Displays both $DIR and $SYS files - Customization Variables: - WIDE SYSFLG SOFLG FENCE - Examples: - DIR *.ASM <-- All $DIR .ASM files - DIR *.COM S <-- All $SYS .COM files - DIR *.COM A <-- All .COM files - Notes: - If a file is scanned for and no such name exists on disk, - the 'No Files' message will appear. However, if a file is - scanned for and the name exists as a $SYS file and $DIR files are - being scanned for, no file name is displayed but the 'No Files' - message does NOT appear. For example, if TEST.COM is a $SYS file - and 'DIR TEST.COM' is issued, no message appears. If 'DIR - TEXT.COM' is issued and TEXT.COM does not exist on disk, the 'No - Files' message is displayed. - - - Command: ERA - Function: To Erase the specified $R/W files from disk - Forms: - ERA <-- Erase both $DIR and $SYS files - Customization Variables: - WIDE FENCE - Examples: - ERA *.ASM <-- Erase all .ASM files - ERA *.* <-- Erase all files - Notes: - If a $R/O file is encountered, a BDOS error message will be - displayed and the procedure is stopped. The user is unsure at - this time as to which files have been erased and which have not - and should check. Sorry for this problem! The ERASE command (to - be given to SIG/M by RLC in the near future) is a solution to - this problem. - - - - - - - - - Page 14 - - - - - - ZCPR - A Z80 Replacement for the CP/M CCP - - - - - Command: LIST - Function: To Print the specified file on the CP/M LST: device - Forms: - LIST <-- Print the file (no paging) - Customization Variables: - -None- - Examples: - LIST TEST.TXT <-- Print TEST.TXT on LST: - Notes: - If the file has a $SYS attribute, it will be found as well - as those with $DIR attributes. - - - Command: TYPE - Function: To Print the specified file on the CP/M CON: device - Forms: - TYPE <-- Print the file with the paging deflt - TYPE P <-- Print the file with the paging deflt - negated - Customization Variables: - NLINES PGDFLT PGDFLG - Examples: - TYPE TEST.TXT - TYPE TEST.TXT P - Notes: - When the display pauses during paging, type any char to - continue or ^C to abort. ^S also works. - - - Command: SAVE - Function: To Copy the TPA starting at 100H to disk - Forms: - SAVE <-- in DEC - SAVE H <-- in HEX - SAVE S <-- Number of sectors - SAVE H S <-- Number of sectors - Customization Variables: - NUMBASE RAS - Examples: - SAVE 15 MYFILE.TXT <-- 15 pages saved - SAVE FH MYFILE.TXT <-- 15 pages saved - SAVE 10H MYFILE.TXT S <-- 16 sectors (8 pages) saved - Notes: - If the file name to be saved already exists, then SAVE will - exit with the message 'Delete File?'; if the user REALLY wants to - save under this name, he may then type Y or y and the current - file will be deleted and then recreated containing the specified - part of the TPA. - - - - - - - - Page 15 - - - - - - ZCPR - A Z80 Replacement for the CP/M CCP - - - - - - Command: REN - Function: To Change the name of a disk file - Forms: - REN = - Customization Variables: - RAS - Examples: - REN NEWFILE.TXT=OLDFILE.TXT - Notes: - If already exists, the message 'Delete File?' will - be printed and the user may respond with Y or y to delete the - current and then rename to . - - Command: USER - Function: To Change the current user number - Forms: - USER <-- in DEC - USER H <-- in HEX - Customization Variables: - -None- - Examples: - USER 15 USER FH USER 0 - USER <-- Same as USER 0 - Notes: - -None- - - - Command: DFU - Function: To Temporarily Change the default user number for the - command hierarchy search - Forms: - DFU <-- in DEC - DFU H <-- in HEX - Customization Variables: - -None- - Examples: - DFU 15 DFU FH DFU 0 - DFU <-- Same as DFU 0 - Notes: - See above for explanation. - - - - - - - - - - - - - - - Page 16 - - - - - - ZCPR - A Z80 Replacement for the CP/M CCP - - - - - - Command: JUMP - Function: To "call" the subroutine at the specified page address - Forms: - JUMP

<--
in HEX - Customization Variables: - NUMBASE RAS - Examples: - JUMP E000 or JUMP E000H <-- Jump to E000H - JUMP <-- Jump to 000H - JUMP 0 <-- Jump to 000H - Notes: - JUMP performs a subroutine "call", so the called routine may - return to the ZCPR by either a RET or a Warm Boot. - - - Command: GO - Function: To "call" the subroutine starting at 100H - Forms: - GO <-- Execute reentrant at 100H - Customization Variables: - RAS - Examples: - GO *.ASM <-- Assuming XDIR is loaded, - gives directory of *.ASM - Notes: - This command is identical in function to JUMP 100H; JUMP, - however, leaves the address as the first entry in CP/M BASE + 80H - (the input line buffer), while GO has no such address. - - - Command: GET - Function: To load a file from disk into memory starting at the - specified page - Forms: - GET
<--
in HEX - Customization Variables: - NUMBASE RAS - Examples: - GET 8000 TEST.80 <-- Load TEST.80 starting at 8000H - GET 100 TEST.80 or GET 100H TEST.80 <-- Load TEST.80 - starting at 100H - GET 0 TEST.80 <-- Load TEST.80 starting at 000H - Notes: - GET searches for the specified file according to the same - command hierarchy search employed by the ZCPR command scanner. - Hence, if the user is on B:/10 and the file is on A:/0 with the - current default user number at 0, GET will search from B:/10 to - B:/0 to A:/0 in looking for the file. - - - - - - - Page 17 - - - - - - ZCPR - A Z80 Replacement for the CP/M CCP - - - - ZCPR Error Messages - - The following are the error messages issued by ZCPR and - their meanings. - - Message Meaning - - ? Printed after a command or an argument means that such - was invalid - - No File From DIR, this means that DIR did not locate any files - Also from ERA with the same meaning - - All? Issued in response ERA *.*, asks the user is he really - wants to erase all the files. Unlike under the - original CP/M 2.2 CCP, single character input is - required (Y or y for yes and anything else for no) - with NO to end the line - - Full From SAVE, means that there is not enough space on - disk - From GET or command load by CPR, means that there - is not enough space in memory - - Delete File? - From REN or SAVE, means that the file specified already - exists on disk and the user may type Y or y to delete - it and proceed with the REN or SAVE function - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Page 18 - - - - - - ZCPR - A Z80 Replacement for the CP/M CCP - - - - - Part C - ZCPR Command Levels and How to Use Them - - - ZCPR Version 1.0 and beyond supports three distinct command - levels in its implementation. Each level constitutes a different - way to issue a command for ZCPR to process. - - Command Levels 1 and 2 are common to all implementations of - CP/M and CP/ZM from CP/M Version 1.4. Command Level 1 is that - command level in which the command is issued by the user from his - console terminal. The prompt 'd>' or 'du>' appears on the - terminal, and the user is allowed to enter the command with - editing from the terminal. Command Level 2 is that command level - in which the command is entered from an executing $$$.SUB file. - - In both cases, the command is stored in the internal ZCPR - buffer called CIBUFF (Command Input BUFFer). Under both Command - Levels 1 and 2, the command is placed into this buffer, the - characters of the command line are capitalized, a character count - which indicates the number of characters in the command line is - stored in CBUFF (the byte before CIBUFF), an ending binary 0 is - placed after the last character in the command line, and the - internal pointer CIBPTR (Command Input Buffer PoinTeR) is set to - point to CIBUFF (the first character of the command line). - - Command Level 3 is an extended concept to Command Levels 1 - and 2 which is specifically supported by ZCPR Version 1.0 and - beyond. This command level allows a transient program to place a - command line into CIBUFF and the character count into CBUFF and - have this command line executed by ZCPR. Once control is trans- - ferred to ZCPR to execute the command line, the transient program - which placed the command line loses control and the command is - executed exactly as though it had been typed by the user at his - console terminal. - - In order for a transient program to utilize the Command - Level 3 facility, this program MUST do the following: - - 1. Locate the ZCPR. Since the ZCPR is ALWAYS 2K bytes - in size and located directly under the BDOS, the transient can - locate the ZCPR by examining the BDOS entry page address at - location 7 and subtracting 8 from this number (8 pages = 2K - bytes). The resulting number is the base page address of ZCPR. - - 2. Store the command line in CIBUFF and the character - count in CBUFF. Knowing the base page address of ZCPR, the - following information is useful in doing this: - - - - - - - - Page 19 - - - - - - ZCPR - A Z80 Replacement for the CP/M CCP - - - - - ORG CPRLOC ;Base Address of ZCPR - JMP CPR ;Enter ZCPR and Execute Default Cmd - JMP CPR1 ;Enter ZCPR and Don't Execute - MBUFF: DB BUFLEN ;Size of CIBUFF in bytes - CBUFF: DS 1 ;Number of Bytes in Command Line - CIBUFF: DS BUFLEN ;Buffer for Command Line - DS 1 ;Buffer for Ending 0 (set by ZCPR) - CIBPTR: DS 2 ;Address of CIBUFF (set by ZCPR) - - - 3. Obtain the User/Disk Flag. Location 4 contains - this number, but the user may select a flag of his choice. This - flag is one byte long, and the high-order nybble (4 bits) - contains the user number and the low-order nybble contains the - disk number to process the command from. The User/Disk Flag is - to be passed to ZCPR in the C Register. - - 4. When ready, transfer control to ZCPR to process the - command by JMPing to the base address of ZCPR. The first JMP in - the JMP Table given above is at this address. At this time, ZCPR - will log in the user and disk in the User/Disk Flag and process - the Command Level 3 Command Line. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Page 20 - - - - - - ZCPR - A Z80 Replacement for the CP/M CCP - - - - - The following is a sample program which illustrates the - steps outlined above: - - ; - ; Demonstration of Command Level 3 Facility by RLC - ; - udflag equ 4 ;Address of User/Disk Flag - bdos equ 5 ;Address of BDOS Entry Point - - org 100h - - lxi d,prmpt ;Print User Prompt - mvi c,9 ;PRINT function - call bdos - - lhld bdos+1 ;Get address of BDOS - mov a,h ;High-Order Address in A - sui 8 ;A=High-Order Address of CPR - mov h,a ;HL=Address of CPR - mvi l,0 - shld cpr ;Save address in buffer - - lxi d,6 ;Point to command line buffer - dad d ;HL points to command line buffer - xchg ;DE points to command line buffer - mvi c,10 ;READLN into this buffer - call bdos - - lhld cpr ;Get Address of CPR - lda udflag ;Get User/Disk Flag - mov c,a ; ... in C - pchl ;Run Command Line - - cpr: ds 2 ;CPR Address buffer - prmpt: db 'User Command? $' - - - - - - - Enjoy using ZCPR! - -- RLC - - - - - - - - - - - - - Page 21 \ No newline at end of file diff --git a/Source/Makefile b/Source/Makefile index 1204b022..166bb4c1 100644 --- a/Source/Makefile +++ b/Source/Makefile @@ -1,7 +1,6 @@ # # order is actually important, because of build dependencies # -NOTDONE = Doc SUBDIRS = Prop SUBDIRS += Apps SUBDIRS += CBIOS