Commodore 128 CP/M 3.0 BIOS revision 6 28 May 1987 version Modified 12 October 1992 Second Release - 31 Jan 93 by Randy Winchester LEGAL STUFF & DISCLAIMER: I'm claiming no copyright on any of this material. I didn't write most of it myself, these are just my modifications and implimentation. Copyrights are held by Commodore. The user of this code assumes all responsibility for all damages or losses, so don't do anything with this code that might cause damages or losses. BIOS R6 - Release 2 Notes There were some problems with the first release of BIOS R6. Somehow, an obsolete version of CXEQU.LIB crept into the LBR that was distributed. This caused some assembly errors, as some labels weren't defined. Another problem was the default drive search chain that I'd set up. It works great for me, but then, I have an REU and a Quick Brown Box. Other people had tried assembling the system without editing the drive search chain in CXIO.ASM. I set it back to a more reasonable "A:,*" so it should work "straight out of the box." This was also a great opportunity to add some more comments to the source code where they were needed. For anyone interested in customizing a CP/M system to better suit their needs, I suggest glancing at the ASM and LIB files - at least the first screen or two of the files that have been modified. Most of the configuration options are commented fairly well, and it shouldn't take a lot of programming skill to change them. If I ever get around to doing another release, I'll try to include all user configurable options in a CONFIG.LIB file. Oh. One more thing. I fixed the long standing BIOS bug that screws up the keyboard response after exiting a terminal program. It took only two lines of code to fix it. Take a look at the file CXIO.ASM for more details. Why BIOS R6? This update of the C128 CP/M BIOS includes full support for the "official" C128 CP/M 1581 disk format. The included CXDISK.ASM file still includes all other changes as stated in this documentation. A bug fix was made to the RAMDISK label in the module CXRAMDSK.ASM. The label was changed from 'ERTWINE VON' to ' ERTWINE VON' to avoid potential incompatibility problems with some software. See the section on CXRAMDSK.ASM in the following BIOS R5 documentation to see why it was changed in the first place. ZPM3 and BIOS R6 - A Winning Combination One major reason you might want to spend the effort to generate a new BIOS is to include Simeon Cran's excellent ZPM3 BDOS segments. This BDOS is coded in fast tight Z80 assembly and adds a boost in speed, bug fixes, and additional features. It's not possible to add ZPM3 to a C128 CPM+.SYS using the ZPM3 MAKEDOS utility. Generating a new BIOS seems to be the only way on the 128. The necessary ZPM3 files are included with this distribution. If you've only used "stock" CP/M on a 128, you owe it to yourself to give ZPM3 and BIOS R6 a try. BIOS R5 Notes This version of a BIOS for the Commodore 128 is based on BIOSR4.ARK from James Waltrip IV. Mr. Waltrip took care of many of the essentials a couple of years ago. He slashed out a lot of unneeded code and added a great screen dump. My revisions were to add back some of the things I've wanted or needed. I made modifications to the following: CXIO .ASM CXDISK .ASM CXKEY .ASM CXRAMDSK.ASM CXPRINTE.ASM CXEXT .ASM All other files in this library are unmodified from the version in BIOSR4.ARK. Most of my additions are to support additional hardware. * Drive D: is available (it was taken out in BIOSR4). * A Drive E: has been added. This isn't to be confused with the virtual disk drive in the official Commodore releases of CP/M. The intended purpose of this drive E: is to make an entry in the drive table that can be used by QD.COM for an entry for the Quick Brown Box. The Quick Brown Box is a 64K battery backed-up RAM cartridge. QD is a product of Herne Data Systems, Ltd. QD installs a driver for the Quick Brown Box that allows it to be used as a RAM disk. By entering the command: QD F/F, the Quick Brown Box is set up as Drive F:. I keep my favorite utilities stored there so I can have them as soon as the system boots up. * Definitions have been added to the disk parameter table for two of my favorite disk formats, 'Maxi 71' and '1581 GP'. Maxi 71 is from Miklos Garamszeghy's article in 'The Transactor' on adding support for more foreign disk formats. Maxi 71 offers an incredible 398K. Disks can be formatted using Garamszeghy's public domain FORMAT22 or his commercially available package, Jugg'ler. The latest version of Jugg'ler supports over 130 CP/M disk formats. * 1581 GP is a 796K format for 3.5 inch disks. Gene Pizzetta wrote FORMAT81 for adding 1581 disk support before the 1581 Commodore version was released. He did a good job. Not does his format hold more than Commodore's, it also seems faster than Commodore's format. I haven't taken the time to verify this - just try it out and see what you think. Disks for 1581 GP can be formatted using Gene's public domain FORMAT81. * The default LST device is now an ASCII printer, device 4. The secondary address has been changed to 5. This allows for transparent mode with the Xetec SuperGraphix interface without added line feeds. If you need to use a Commodore printer, replace FAST8502.ASM with the version found in BIOS4MOD.LBR, and replace CXPRINTE.ASM with the original version found on the DRI Source Code/Utilities disks. Here's the nitty-gritty, file by file: -------------------------------------------------------------------------- CXIO.ASM -------------------------------------------------------------------------- *ADDITIONS BY Randy Winchester, 5/6/89 Default printer is device 4. Set up for non-flashing block cursor Search chain/temp drive: M:,*,F: [TEMP=M:] Drive F: is reserved for the Quick Brown Box battery powered RAM cartridge. The QBB is initialized with QD.COM from Herne Data Systems, Ltd. No password protection for booting the system. Colors set in sign-on message. Background=lt. gray, character=blue Default system baud rate set for 75 baud. This speeds up normal operation considerably. Printer names set to PRT-D4 and PRT-D5 (devices 4 and 5) -------------------------------------------------------------------------- -------------------------------------------------------------------------- CXKEY.ASM -------------------------------------------------------------------------- * ADDITIONS by Randy Winchester, 5/3/89 Added drive D: to MFM unlock routine. -------------------------------------------------------------------------- -------------------------------------------------------------------------- CXPRINTE.ASM -------------------------------------------------------------------------- Set the secondary address to 5 to work properly with the Xetec SuperGraphix in transparent mode. -RW, 5/6/89 -------------------------------------------------------------------------- -------------------------------------------------------------------------- CXRAMDSK.ASM -------------------------------------------------------------------------- CHANGES by Randy Winchester, 6 May 89 RAM disk is now drive M: again. Disk Label for the RAM disk has been changed back to ERTWINE VON from RAMDISK RAM. Not only do I believe in honoring programmers rather than hardware, there was no need to fuss with it in the first place. No need to tempt fate. -------------------------------------------------------------------------- -------------------------------------------------------------------------- CXEXT.ASM -------------------------------------------------------------------------- CHANGES by Randy Winchester, 6 May 89 Drive D: returned to active duty. RAM disk set back to drive M: Table entry made for Drive E:, used by Quick Brown Box. -------------------------------------------------------------------------- Notes: I think the CXKYCODE.ASM file that is included with the ARKhive is lacking in many ways. Rather than edit the file, there are easier ways to include key definitions in a CPM+.SYS file. I highly recommend KEYFIG from the original Commodore system disk for defining the keyboard layout. Once you have the keyboard configured the way you like it, you can use KEYFIG to save the layout in your new CPM+.SYS. Other tools that are helpful in this regard are the public domain SAVEKEY and LOADKEY by Gene Pizzetta. These programs save or load keyboard definitions in files, and can be used to transfer custom key layouts from an old CPM+.SYS to a new CPM+.SYS. I'd love to add support for Commodore's "official" 1581 disk format. I've hacked most of it out of a copy of the 28 May 87 release, but I haven't been able to make it work. If anyone can show me the code to support the 1581, or a Disk Parameter Table entry for Commodore's format, please pass it along. Please make sure to read all of the documentation in this archive. If you have hints, tips, bug reports, suggestions, I'd like to hear them. Please write me. Randy Winchester P.O. Box 1074 Cambridge, MA 02142 or the BCS/CUG BBS, 617/729-7340 or Internet: randy@mit.edu