Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| software:firmwareos:romwbw:start [2020/09/25 16:44] – Revision from 2020-09-25 | software:firmwareos:romwbw:start [2026/06/15 12:45] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| /* Imported from Wayback Machine | /* Imported from Wayback Machine | ||
| - | | + | |
| - | | + | |
| | | ||
| */ | */ | ||
| - | ====== | + | **RomWBW |
| - | + | Version 3.2\\ | |
| - | ===== Z80/Z180 System Software ===== | + | Wayne Warthen < |
| - | + | 20 Mar 2023\\ | |
| - | Version 3.0\\ | + | |
| - | Monday 30 March 2020 | + | |
| - | + | ||
| - | Wayne Warthen < | + | |
| - | + | ||
| - | ==== Download ==== | + | |
| - | + | ||
| - | [[https:// | + | |
| - | + | ||
| - | ==== Related Pages ==== | + | |
| - | + | ||
| - | [[https:// | + | |
| - | + | ||
| - | [[software: | + | |
| - | + | ||
| - | [[software: | + | |
| ====== Overview ====== | ====== Overview ====== | ||
| - | RomWBW provides a complete | + | RomWBW |
| [[https:// | [[https:// | ||
| - | [[https:// | + | [[https:// |
| [[https:// | [[https:// | ||
| + | |||
| + | [[https:// | ||
| General features include: | General features include: | ||
| Line 46: | Line 32: | ||
| Video drivers including TMS9918, SY6545, MOS8563, HD6445 | Video drivers including TMS9918, SY6545, MOS8563, HD6445 | ||
| - | Real time clock drivers | + | Keyboard (PS/ |
| - | Multiple OS support | + | Real time clock drivers |
| + | |||
| + | OSes: CP/M 2.2, ZSDOS, CP/M 3, NZ-COM, ZPM3, QPM, p-System, and FreeRTOS | ||
| Built-in VT-100 terminal emulation support | Built-in VT-100 terminal emulation support | ||
| Line 62: | Line 50: | ||
| ROM Forth | ROM Forth | ||
| - | A dynamic disk drive letter assignment mechanism allows mapping operating system drive letters to any available disk media. Additionally, | + | A dynamic disk drive letter assignment mechanism allows mapping operating system drive letters to any available disk media. Additionally, |
| - | The pre-built ROM firmware images are generally | + | The pre-built ROM firmware images are generally |
| Multiple disk images are provided in the distribution. Most disk images contain a complete, bootable, ready-to-run implementation of a specific operating system. A “combo” disk image contains multiple slices, each with a full operating system implementation. If you use this disk image, you can easily pick whichever operating system you want to boot without changing media. | Multiple disk images are provided in the distribution. Most disk images contain a complete, bootable, ready-to-run implementation of a specific operating system. A “combo” disk image contains multiple slices, each with a full operating system implementation. If you use this disk image, you can easily pick whichever operating system you want to boot without changing media. | ||
| - | ====== Installation ====== | + | By design, RomWBW isolates all of the hardware specific functions in the ROM chip itself. The ROM provides a hardware abstraction layer such that all of the operating systems and applications on a disk will run on any RomWBW-based system. To put it simply, you can take a disk (or CF/SD Card) and move it between systems transparently. |
| - | The latest RomWBW distribution downloads are maintained on GitHub in the [[https://github.com/ | + | A tool is provided that allows you to access a FAT-12/16/32 filesystem. The FAT filesystem may be coresident |
| - | 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/ | + | ====== Acquiring RomWBW ====== |
| - | In general, you will just program your system’s ROM chip with the appropriate ROM image from the RomWBW distribution. | + | The [[https:// |
| - | 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 for your hardware. | + | All source code and distributions are maintained on GitHub. Code contributions are very welcome. |
| - | ^Platform^ROM Image File^Baud | + | ====== Installation |
| - | |SBC | + | |
| - | |Zeta V1 |ZETA_std.rom | + | |
| - | |Zeta V2 |ZETA2_std.rom |38400 |RetroBrew Zeta V2 Z80, ParPortProp (optional) | + | |
| - | |N8 |N8_std.rom | + | |
| - | |Mark IV |MK4_std.rom | + | |
| - | |RC Z80 |RCZ80_std.rom |115200|RC2014 w/ Z80 CPU, requires 512K RAM/ROM module| | + | |
| - | |RC Z180*|RCZ180_ext.rom|115200|RC2014 w/ Z180 CPU & 512K banked RAM/ROM module| | + | |
| - | |RC Z180*|RCZ180_nat.rom|115200|RC2014 w/ Z180 CPU & 512K native RAM/ROM module| | + | |
| - | |Easy Z80|EZZ80_std.rom |115200|Sergey Kiselev’s Easy Z80 | | + | |
| - | |SC126 | + | |
| - | |SC130 | + | |
| - | |SC131 | + | |
| - | |Dyno |DYNO_std.rom | + | |
| - | *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” | + | In general, installation |
| - | RomWBW will automatically attempt to detect | + | Complete instructions for installation |
| - | 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. | + | ===== Documentation ===== |
| - | Upon power-up, your terminal should display a sign-on banner within 2 seconds followed by hardware inventory and discovery information. When hardware initialization is completed, a boot loader prompt allows you to choose a ROM-based operating system, system monitor, application, | + | Documentation for RomWBW includes: |
| - | Initially, you should try the ROM boot options. By selecting either CP/M 2.2 or Z-System, the selected operating system will be loaded from ROM and you will see the a '' | + | [[https:// |
| - | ====== General Usage ====== | + | [[https:// |
| - | Each of the operating systems and ROM applications included with RomWBW | + | [[https:// |
| - | ===== Inbuilt | + | [[https:// |
| - | 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. | + | [[https://github.com/ |
| - | The following ROM applications are available at the boot loader prompt: | + | ====== Acknowledgments ====== |
| - | ^Application^ | + | I want to acknowledge that a great deal of the code and inspiration for RomWBW has been provided by or derived from the work of others in the RetroBrew Computers Community. I sincerely appreciate all of their contributions. The list below is probably missing many names – please let me know if I missed you! |
| - | |Monitor | + | |
| - | |Forth | + | |
| - | |Basic | + | |
| - | |Tasty BASIC|Dimitri Theuling’s Tiny BASIC implementation | + | |
| - | |Play |A simple video game (requires ANSI terminal emulation)| | + | |
| - | In general, | + | Andrew Lynch started it all when he created |
| - | Space is available in the ROM image for the inclusion | + | Dan Werner wrote much of the code from which RomWBW was originally derived and he has always been a great source |
| - | ===== Devices | + | Douglas Goodall contributed code, time, testing, |
| - | In order to support a wide variety of hardware, RomWBW | + | Sergey Kiselev created several |
| - | Disk (Hard Disk, CF Card, SD Card, RAM/ROM Disk, etc.) | + | David Giles created support for the Z180 CSIO which is now included |
| - | Character (Serial Ports, Parallel Ports, etc.) | + | Phil Summers contributed the Forth and BASIC adaptations in ROM, the AY-3-8910 sound driver, DMA support, and a long list of general code and documentation enhancements. |
| - | Video (Video Display/ | + | Ed Brindley contributed some of the code that supports the RCBus platform. |
| - | RTC/NVRAM (Real Time Clock, Non-volatile RAM) | + | Spencer Owen created the RC2014 series of hobbyist kit computers which has exponentially increased RomWBW usage. Some of his kits include RomWBW. |
| - | HBIOS uses the concept of unit numbers to present | + | Stephen Cousins has likewise created |
| - | As RomWBW boots, it assigns | + | Alan Cox has contributed some driver code and has provided |
| - | <code code> | + | The CP/NET client files were developed by Douglas Miller. |
| - | Unit Device | + | |
| - | ---------- | + | |
| - | Char 0 UART0: | + | |
| - | Char 1 UART1: | + | |
| - | Disk 0 MD1: RAM Disk 384KB,LBA | + | |
| - | Disk 1 MD0: ROM Disk 384KB,LBA | + | |
| - | Disk 2 FD0: Floppy Disk 3.5", | + | |
| - | Disk 3 FD1: Floppy Disk | + | |
| - | Disk 4 IDE0: | + | |
| - | Disk 5 IDE1: Hard Disk -- | + | |
| - | Disk 6 PRPSD0: | + | |
| - | Video 0 | + | |
| - | </ | + | |
| - | In this example, you can see that the system has a total of 7 Disk Units numbered 0-6. There are also 2 Character Units and 1 Video Unit. The table shows the unit numbers assigned to each of the devices. Notice how the unit numbers are assigned sequentially regardless of the specific device. | + | Phillip Stevens contributed support for FreeRTOS. |
| - | There may or may not be media in the disk devices listed. For example, the floppy disk devices (Disk Units 2 & 3) may not have a floppy in the drive. Also note that Disk Unit 4 shows a disk capacity, but Disk Unit 5 does not. This is because the PPIDE interface of the system supports up to two drives, but there is only one actual drive attached. A unit number is assigned to all possible devices regardless of whether they have actual media installed at boot time. | + | Curt Mayer contributed |
| - | Note that Character Unit 0 is **always** | + | UNA BIOS and FDISK80 are the products of John Coffman. |
| - | If your system has an RTC/NVRAM device, it will not be listed in the unit summary table. Since only a single RTC/NVRAM device can exist in one system, unit numbers are not required nor used for this type of device. | + | FLASH4 is a product |
| - | ===== Drive Letter Assignment ===== | + | CLRDIR is a product of Max Scane. |
| - | In legacy CP/M-type operating systems, drive letters were generally mapped to disk drives in a completely fixed way. For example, drive A: would **always** refer to the first floppy drive. Since RomWBW supports a wide variety | + | Tasty Basic is a product |
| - | At boot, you will notice that RomWBW automatically assigns drive letters to the available disk devices. These assignments are displayed during the startup of the selected operating system. Additionally, | + | Dean Netherton contributed |
| - | The drive letter assignments **do not** change during an OS session unless you use the '' | + | The RomWBW Disk Catalog document was produced by Mykl Orders. |
| - | When performing a ROM boot of an operating system, note that A: will be your RAM disk and B: will be your ROM disk. When performing a disk boot, the disk you are booting from will be assigned to A: and the rest of the drive letters will be offset to accommodate this. This is done because most legacy operating systems expect that A: will be the boot drive. | + | Contributions |
| - | ===== Slices | + | ====== Licensing ====== |
| - | The vintage operating systems included with RomWBW | + | RomWBW |
| - | 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 usable 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. | + | RomWBW is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty |
| - | Of course, the problem is that CP/M-like operating systems | + | You should |
| - | Referring to slices within a storage device is done by appending a : //< | + | Portions of RomWBW were created |
| - | |'' | + | If anyone feels their work is being used outside |
| - | |'' | + | |
| - | |'' | + | |
| - | So, if I wanted to use drive letter L: to refer to the fourth slice of IDE0, I could use the command '' | + | < |
| + | Wayne Warthen\\ | ||
| + | \\ | ||
| + | < | ||
| + | </ | ||
| + | RomWBW is an aggregate work. It is composed | ||
| - | Unlike MS-DOS partitions, slices are not allocated – there is no partitioning for slices. Think of every hard disk type device as having | + | In some cases, a single program (e.g., CP/M Operating System) is composed |
| - | Nothing automatically initializes a slice as a file system. You must do that yourself using '' | + | RomWBW encourages code contributions from others. Contributors may assert their own copyright in their contributions by annotating the contributed source code appropriately. Contributors |
| - | While it is probably obvious, you cannot use slices on any media less than 8MB in size. Specifically, | + | All contributions |
| - | + | ||
| - | ====== RomWBW Custom Applications ====== | + | |
| - | + | ||
| - | 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 ROM disk and are, therefore, globally available. | + | |
| - | + | ||
| - | ^Application^Description | + | |
| - | |ASSIGN | + | |
| - | |SYSCOPY | + | |
| - | |MODE | + | |
| - | |FDU |Format and test floppy disks. Menu driven interface. | + | |
| - | |FORMAT | + | |
| - | |XM | + | |
| - | |FLASH | + | |
| - | |FDISK80 | + | |
| - | |TALK | + | |
| - | |RTC |Manage and test the Real Time Clock hardware. | + | |
| - | |TIMER | + | |
| - | |INTTEST | + | |
| - | + | ||
| - | 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. | + | |
| - | + | ||
| - | ^Application^Description | + | |
| - | |TUNE |Play .PT2, .PT3, .MYM audio files. | + | |
| - | |FAT |Access MS-DOS FAT filesystems from RomWBW (based on FatFs).| | + | |
| - | + | ||
| - | Additional documentation on all of these applications can be found in “RomWBW Applications.pdf” in the Doc directory of the distribution. | + | |
| - | + | ||
| - | ====== Using Disks ====== | + | |
| - | + | ||
| - | ===== ROM & RAM Disks ===== | + | |
| - | + | ||
| - | RomWBW utilizes a portion of the ROM and RAM memory in your system to implement small memory-based disks. | + | |
| - | + | ||
| - | The RAM disk provides a small CP/M filesystem that you can use for the temporary storage of files. Unless your system has a battery backed mechanism for persisting your RAM contents, the RAM disk contents will be lost at each power-off. However, the RAM disk is an excellent choice for storing temporary files because it is very fast. | + | |
| - | + | ||
| - | Like the RAM disk, the ROM disk also provides a small CP/M filesystem, but it’s contents are static – they are part of the ROM. As such, you cannot save files to the ROM disk. Any attempt to do this will result in a disk I/O error. 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, '' | + | |
| - | + | ||
| - | ===== Disk Devices ===== | + | |
| - | + | ||
| - | 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. A wide variety of disk devices are supported 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 boot 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, | + | |
| - | + | ||
| - | <code code> | + | |
| - | IDE: IO=0x80 MODE=MK4 | + | |
| - | IDE0: 8-BIT LBA BLOCKS=0x00773800 SIZE=3815MB | + | |
| - | IDE1: NO MEDIA | + | |
| - | </ | + | |
| - | + | ||
| - | The messages you see will vary depending on your hardware and the media you have installed. But, they will all have the same general format as the example above. | + | |
| - | + | ||
| - | Once your your system has working disk devices, you can boot an operating system and the operating system will have access to the media. At the boot loader prompt, select either either CP/M 2.2 or Z-System to boot from ROM. As the operating system starts up, you should see a list of drive letters assigned to the disk media you have installed. Here is an example of this: | + | |
| - | + | ||
| - | <code code> | + | |
| - | Configuring Drives... | + | |
| - | + | ||
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | </ | + | |
| - | + | ||
| - | You will probably see more drive letters than this. The drive letter assignment process is described above in the Drive Letter Assignment section. 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 described above in the Slices section. | + | |
| - | + | ||
| - | 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. | + | |
| - | + | ||
| - | One option is to 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, | + | |
| - | + | ||
| - | ===== 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 '' | + | |
| - | + | ||
| - | Running '' | + | |
| - | + | ||
| - | 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 '' | + | |
| - | + | ||
| - | 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, | + | |
| - | + | ||
| - | '' | + | |
| - | + | ||
| - | This command means: copy the Z-System operating system onto the system tracks of drive C:. In this example, it is assumed that you have booted from ROM, so B: is the ROM disk drive. Additionally, | + | |
| - | + | ||
| - | <code code> | + | |
| - | B> | + | |
| - | + | ||
| - | SYSCOPY v2.0 for RomWBW CP/M, 17-Feb-2020 (CP/M 2 Mode) | + | |
| - | Copyright 2020, Wayne Warthen, GNU GPL v3 | + | |
| - | + | ||
| - | Transfer system image from B:ZSYS.SYS to C: (Y/N)? Y | + | |
| - | Reading image... Writing image... Done | + | |
| - | </ | + | |
| - | + | ||
| - | 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 '' | + | |
| - | + | ||
| - | 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 '' | + | |
| - | + | ||
| - | 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. | + | |
| - | + | ||
| - | The following table shows the disk image files available. Note that the images in the “Hard” column are fine for use on CF Cards, SD Cards, as well as real spinning hard disks. | + | |
| - | + | ||
| - | ^Floppy | + | |
| - | |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 | + | |
| - | |fd_zpm3 | + | |
| - | |fd_ws4 | + | |
| - | + | ||
| - | 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. At the boot loader prompt, you can choose a disk with the combo image, then select the specific slice you want. This allows a single disk to have all of the possible operating system options. | + | |
| - | + | ||
| - | This is the layout of the hd_combo disk image: | + | |
| - | + | ||
| - | ^Slice | + | |
| - | |Slice 0|DRI CP/M 2.2 boot disk | | + | |
| - | |Slice 1|ZSDOS 1.1 boot disk | | + | |
| - | |Slice 2|NZCOM boot disk | | + | |
| - | |Slice 3|DRI CP/M 3 boot disk | | + | |
| - | |Slice 4|ZPM3 boot disk | | + | |
| - | |Slice 5|WordStar v4 application disk| | + | |
| - | + | ||
| - | Note that unlike the ROM firmware, you do **not** need to choose a disk image specific to your hardware. Because the RomWBW firmware provides a hardware abstraction layer, all hard disk images will work on all hardware variations. Yes, this means you can remove an SD Card from one system and put it in a different system. The only constraint is that the applications on the disk media must be up to date with the firmware on the system being used. | + | |
| - | + | ||
| - | All of the disk images that indicate they are bootable (boot disk) will boot from disk as is. You do not need to run '' | + | |
| - | + | ||
| - | ===== Booting Disks ===== | + | |
| - | + | ||
| - | When starting your system, following the hardware initialization, | + | |
| - | + | ||
| - | 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 '' | + | |
| - | + | ||
| - | <code code> | + | |
| - | 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 '' | + | |
| - | + | ||
| - | If you receive the error message “Disk not bootable!”, | + | |
| - | + | ||
| - | 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. | + | |
| - | + | ||
| - | ====== Operating Systems ====== | + | |
| - | + | ||
| - | One of the primary goals of RomWBW | + | |
| - | + | ||
| - | 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 | + | |
| - | + | ||
| - | The following sections briefly describe the operating system options currently available. | + | |
| - | + | ||
| - | ===== Digital Research CP/M 2.2 ===== | + | |
| - | + | ||
| - | This is the most widely used variant of the Digital Research operating system. It has the most basic feature set, but is essentially the compatibility metric for all other CP/M-like operating systems including all of those listed below. The Doc directory contains a manual for CP/M usage (“CPM Manual.pdf”). If you are new to the CP/M world, I would recommend using this CP/M variant to start with simply because it is the most stable and you are less likely to encounter problems. | + | |
| - | + | ||
| - | ==== Notes ==== | + | |
| - | + | ||
| - | The original versions of DDT, DDTZ, and ZSID used the RST 38 vector which conflicts with interrupt mode 1 use of this vector. The DDT, DDTZ, and ZSID applications in RomWBW have been modified to use RTS 30 to avoid this issue. | + | |
| - | + | ||
| - | Z-System applications will not run under CP/M 2.2. For example, the '' | + | |
| - | + | ||
| - | ===== ZSDOS 1.1 ===== | + | |
| - | + | ||
| - | ZSDOS is the most popular non-DRI CP/M “clone” which is generally referred to as Z-System. Z-System is intended to be an enhanced version of CP/M and should run all CP/M 2.2 applications. It is optimized for the Z80 CPU (as opposed to 8080 for CP/M) and has some significant improvements such as date/time stamping of files. For further information on the RomWBW implementation of Z-System, see the wiki page [[software: | + | |
| - | + | ||
| - | ==== Notes ==== | + | |
| - | + | ||
| - | Although most CP/M 2.2 applications will run under Z-System, some may not work as expected. The best example is PIP which is not aware of the ZSDOS paths and will fail in some scenarios (use '' | + | |
| - | + | ||
| - | ===== NZCOM Automatic Z-System ===== | + | |
| - | + | ||
| - | NZCOM is a much further refined version of Z-System (ZCPR 3.4). NZCOM was sold as an enhancement for existing users of CP/M 2.2 or ZSDOS. For this reason, (by design) NZCOM does not provide a way to boot directly from disk. Rather, it is loaded after the system boots into a host OS. On the RomWBW NZCOM disk images, the boot OS is ZSDOS 1.1. After you configure NZCOM, you can add a '' | + | |
| - | + | ||
| - | NZCOM is not pre-configured. You must run through a simple configuration process before loading it. Run MKZCM to do this. | + | |
| - | + | ||
| - | NZCOM has substantially more functionality than CP/M or basic Z-System. It is important to read the the “NZCOM Users Manual.pdf” file in the RomWBW Doc directory. | + | |
| - | + | ||
| - | ==== Notes ==== | + | |
| - | + | ||
| - | There is no '' | + | |
| - | + | ||
| - | ===== 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 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. '' | + | |
| - | + | ||
| - | ==== Notes ==== | + | |
| - | + | ||
| - | The '' | + | |
| - | + | ||
| - | ===== Simeon Cran’s ZPM3 ===== | + | |
| - | + | ||
| - | ZPM3 is an interesting combination of the features of both CP/M 3 and ZCPR 3. Essentially, | + | |
| - | + | ||
| - | Like CP/M 3, to make ZPM3 boot disk, you put CPMLDR.SYS on the system tracks of the disk. | + | |
| - | + | ||
| - | ==== Notes ==== | + | |
| - | + | ||
| - | '' | + | |
| - | + | ||
| - | The ZPM operating system is contained in the file called CPM3.SYS which is confusing, but it is the author’s intended way of using ZPM3. | + | |
| - | + | ||
| - | ===== FreeRTOS ===== | + | |
| - | + | ||
| - | Phillip Stevens has ported FreeRTOS to run under RomWBW. FreeRTOS is not provided in the RomWBW distribution. FreeRTOS is available under the [[https:// | + | |
| - | + | ||
| - | You can also contact Phillip for detailed information on the Z180 implementation of FreeRTOS for RomWBW. [[https:// | + | |
| - | + | ||
| - | ====== Transferring Files ====== | + | |
| - | + | ||
| - | Transferring files between your modern computer and your RomWBW system can be achieved in a variety of ways. The most common of these are described below. All of these have a certain degree of complexity and I encourage new users to use the available community forums to seek assistance as needed. | + | |
| - | + | ||
| - | ===== Serial Port Transfers ===== | + | |
| - | + | ||
| - | RomWBW provides an serial file transfer program called XModem that has been adapted to run under RomWBW hardware. The program is called '' | + | |
| - | + | ||
| - | You can type '' | + | |
| - | + | ||
| - | The '' | + | |
| - | + | ||
| - | There is an odd interaction between XModem and partner terminal programs that can occur. Essentially, | + | |
| - | + | ||
| - | ===== Disk Image Transfers ===== | + | |
| - | + | ||
| - | It is possible to pass disk images between your RomWBW system and your modern computer. This assumes you have an appropriate media slot on your modern computer for the media you want to use (CF Card, SD Card, or floppy drive). | + | |
| - | + | ||
| - | The general process to get files from your modern computer to a RomWBW computer is: | + | |
| - | + | ||
| - | Use '' | + | |
| - | + | ||
| - | Insert your RomWBW media (CF Card, SD Card, or floppy disk) in your modern computer. | + | |
| - | + | ||
| - | Use a disk imaging tool to copy the RomWBW filesystem image onto the media. | + | |
| - | + | ||
| - | Move the media back to the RomWBW computer. | + | |
| - | + | ||
| - | This process is a little complicated, | + | |
| - | + | ||
| - | 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 directory of the distribution. | + | |
| - | + | ||
| - | ===== FAT Filesystem Transfers ===== | + | |
| - | + | ||
| - | 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, be sure to pick the FAT filesystem. NTFS and other filesystems will not work. | + | |
| - | + | ||
| - | On your RomWBW computer you can use the '' | + | |
| - | + | ||
| - | The '' | + | |
| - | + | ||
| - | For advanced users, it is possible to create a hybrid disk that contains CP/M slices at the beginning and a FAT filesystem after. Such a hybrid disk can be used to boot an operating system and still have access to FAT files on the FAT portion of the disk. David Reese has prepared a document describing how to do this. It is called “SC126_How-To_No_2_Preparing_an_SD_Card_for_Use_with_SC126_Rev_1-5.pdf” and can be found in the Doc\Contrib directory of the distribution. | + | |
| - | + | ||
| - | ====== Startup Command Processing ====== | + | |
| - | + | ||
| - | 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 systems will look for a file called '' | + | |
| - | + | ||
| - | In the case of ZPM3, the file called '' | + | |
| - | + | ||
| - | 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 '' | + | |
| - | + | ||
| - | ====== ROM Customization ====== | + | |
| - | + | ||
| - | The pre-built ROM images are configured for the basic capabilities of each platform. Additionally, | + | |
| - | + | ||
| - | Essentially, | + | |
| - | + | ||
| - | The process for building a custom ROM is documented in the ReadMe.txt file in the Source directory of the distribution. | + | |
| - | + | ||
| - | For those who are interested in more than basic system customization, | + | |
| - | + | ||
| - | Note that the ROM customization process does not apply to UNA. All UNA customization is performed within the ROM setup script. | + | |
| - | + | ||
| - | ====== UNA Hardware BIOS ====== | + | |
| - | + | ||
| - | John Coffman has produced a new generation of hardware BIOS called UNA. The standard RomWBW distribution includes it’s own hardware BIOS. However, RomWBW can alternatively be constructed with UNA as the hardware BIOS portion of the ROM. If you wish to use the UNA variant of RomWBW, then just program your ROM with the ROM image called “UNA_std.rom” in the Binary directory. This one image is suitable on **all** of the platforms and hardware UNA supports. | + | |
| - | + | ||
| - | UNA is customized dynamically using a ROM based setup routine and the setup is persisted in the system NVRAM of the RTC chip. This means that the single UNA-based ROM image can be used on most of the RetroBrew platforms and is easily customized. UNA also supports FAT file system access that can be used for in-situ ROM programming and loading system images. | + | |
| - | + | ||
| - | While John is likely to enhance UNA over time, there are currently a few things that UNA does not support: | + | |
| - | + | ||
| - | Floppy Drives | + | |
| - | + | ||
| - | Terminal Emulation | + | |
| - | + | ||
| - | Zeta 1, N8, RC2014, Easy Z80, and Dyno Systems | + | |
| - | + | ||
| - | Some older support boards | + | |
| - | + | ||
| - | The UNA version embedded in RomWBW is the latest production release of UNA. RomWBW will be updated with John’s upcoming UNA release with support for VGA3 as soon as it reaches production status. | + | |
| - | + | ||
| - | Please refer to the [[software: | + | |
| - | + | ||
| - | ====== Upgrading ====== | + | |
| - | + | ||
| - | 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 retain 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 executable and load it from the command line. For each ROM image file (.rom) in the Binary directory, you will also find a corresponding application file (.com). For example, for SBC_std.rom, | + | |
| - | + | ||
| - | There are two restrictions to be aware of related to loading a system image as a .com application. First, this is only supported under Z-System and CP/M 2.2. You must boot into one of these OSes before attempting to launch the .com file. Second, you may find that you are unable to load the .com file because it is too large to fit in available application RAM (TPA). Your only recourse in this situation is to build a custom ROM with fewer features. | + | |
| - | + | ||
| - | 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, | + | |
| - | + | ||
| - | <code code> | + | |
| - | E>xm r rom.img | + | |
| - | + | ||
| - | XMODEM v12.5 - 07/13/86 | + | |
| - | RBC, 28-Aug-2019 [WBW], ASCI | + | |
| - | + | ||
| - | Receiving: E0: | + | |
| - | 7312k available for uploads | + | |
| - | File open - ready to receive | + | |
| - | To cancel: Ctrl-X, pause, Ctrl-X | + | |
| - | + | ||
| - | Thanks for the upload | + | |
| - | + | ||
| - | E>flash write rom.img | + | |
| - | FLASH4 by Will Sowerbutts < | + | |
| - | + | ||
| - | Using RomWBW (v2.6+) bank switching. | + | |
| - | Flash memory chip ID is 0xBFB7: 39F040 | + | |
| - | Flash memory has 128 sectors of 4096 bytes, total 512KB | + | |
| - | Write complete: Reprogrammed 2/128 sectors. | + | |
| - | Verify (128 sectors) complete: OK! | + | |
| - | </ | + | |
| - | + | ||
| - | Obviously, there is some risk to this approach since any issues with the programming or ROM image could result in a non-functional system. | + | |
| - | + | ||
| - | 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 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. | + | |
| - | + | ||
| - | If the disk is bootable, you need to update the system tracks of the disk. This is done using a SYSCOPY command such as '' | + | |
| - | + | ||
| - | Finally, if you have copies of any of the RomWBW custom applications on your hard disk, you need to update them with the latest copies. The following applications are found on your ROM disk. Use COPY to copy them over any older versions of the app on your disk: | + | |
| - | + | ||
| - | ASSIGN.COM | + | |
| - | + | ||
| - | SYSCOPY.COM | + | |
| - | + | ||
| - | MODE.COM | + | |
| - | + | ||
| - | FDU.COM (was FDTST.COM) | + | |
| - | + | ||
| - | FORMAT.COM | + | |
| - | + | ||
| - | XM.COM | + | |
| - | + | ||
| - | FLASH.COM | + | |
| - | + | ||
| - | FDISK80.COM | + | |
| - | + | ||
| - | TALK.COM | + | |
| - | + | ||
| - | RTC.COM | + | |
| - | + | ||
| - | TIMER.COM | + | |
| - | + | ||
| - | INTTEST.COM | + | |
| - | + | ||
| - | For example: '' | + | |
| - | + | ||
| - | Some RomWBW custom applications are too large to fit on the ROM disk. If you are using any of these you will need to transfer them to your system and then update all copies. These applications are found in the Binary\Apps directory of the distribution and in all of the disk images. | + | |
| - | + | ||
| - | FAT.COM | + | |
| - | + | ||
| - | TUNE.COM | + | |
| - | + | ||
| - | ====== RomWBW Distribution ====== | + | |
| - | + | ||
| - | All source code and distributions are maintained on GitHub. Code contributions are very welcome. | + | |
| - | + | ||
| - | [[https:// | + | |
| - | + | ||
| - | ===== 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: | + | |
| - | + | ||
| - | ^Application^Description | + | |
| - | |Binary | + | |
| - | |Doc |Contains various detailed documentation including the operating systems, RomWBW architecture, | + | |
| - | |Source | + | |
| - | |Tools | + | |
| - | + | ||
| - | ====== Acknowledgments ====== | + | |
| - | + | ||
| - | 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!). | + | |
| - | + | ||
| - | I especially want to credit Douglas Goodall for contributing code, time, testing, and advice. He created an entire suite of application programs to enhance the use of RomWBW. However, he is looking for someone to continue the maintenance of these applications and they have become unusable due to changes within RomWBW. As of RomWBW 2.6, these applications are no longer provided. | + | |
| - | + | ||
| - | David Giles contributed support for the CSIO support in the SD Card driver. | + | |
| - | + | ||
| - | Ed Brindley contributed some of the code that supports the RC2014 platform. | + | |
| - | + | ||
| - | Phil Summers contributed Forth and BASIC in ROM as well as a long list of general code enhancements. | + | |
| - | + | ||
| - | Phillip Stevens contributed support for FreeRTOS. | + | |
| - | + | ||
| - | Curt Mayer contributed the Linux / MacOS build process. | + | |
| - | + | ||
| - | UNA BIOS and FDISK80 is a product of John Coffman. | + | |
| - | + | ||
| - | FLASH4 is a product of Will Sowerbutts. | + | |
| - | + | ||
| - | Contributions of all kinds to RomWBW are very welcome. | + | |
| ====== Getting Assistance ====== | ====== Getting Assistance ====== | ||
| - | The best way to get assistance with RomWBW or any aspect of the RetroBrew Computers projects is via the community forums: | + | The best way to get assistance with RomWBW or any aspect of the RetroBrew Computers projects is via one of the community forums: |
| [[forum|RetroBrew Computers Forum]] | [[forum|RetroBrew Computers Forum]] | ||
