home *** CD-ROM | disk | FTP | other *** search
- Supercharging CP/M
-
- BIOS, CCP, and Bootdisk Utilities
-
- by Randy Winchester
-
- 4/25/90
-
-
-
- Too often, Commodore 128 owners will boot up CP/M, take a quick look
-
- at it and think "This sure looks slow, dull, and boring." The boot
-
- disk goes back in the box, never to see the inside of a disk drive
-
- again. CP/M on the C128 doesn't have to be a creepy crawler. The problem
-
- is with the default configuration of CP/M on the boot disk. Here are some
-
- suggestions for speeding up CP/M and adding new features.
-
-
-
-
-
- A New CP/M Boot Disk
-
-
-
- All that is required to make a C128 CP/M boot disk is to format a disk
-
- with FORMAT.COM and copy CPM+.SYS and CCP.COM to it. The disk must be
-
- formatted as either a C128 single or double sided disk. FORMAT.COM
-
- writes a boot sector on the disk that enables the C128 to load and install
-
- the system files.
-
-
-
-
-
- Fixing CPM+.SYS
-
-
-
- The standard CPM+.SYS provided on the C128 CP/M boot disk has a couple
-
- of crippling inadequacies. The 40 column screen is always enabled,
-
- slowing down the system by about 10%. The interrupt driven RS232
-
- routines are always enabled, and set for an unreasonably high 300
-
- baud. The higher the baud rate, the more interrupts are needed to
-
- service the RS232 port, and the less time the processor has to do its
-
- work.
-
-
-
- Both of these problems are easy to fix. The public domain CONF.COM
-
- can remedy both with the command line:
-
- CONF BAUD=75, FEEL=0, 40COL=OFF
-
- The routines to scan the keyboard are also interrupt driven and depend
-
- on the baud rate setting. Although the baud rate can be set as low as
-
- 50, at this setting the keyboard starts to miss key presses. The FEEL
-
- parameter adjusts the number of interrupts used by the keyboard
-
- driver. The value indicates the number of interrupts skipped. A
-
- value of 1 tells the driver to ignore every other interrupt. At 75
-
- baud, FEEL should be disabled by setting it to 0. 40COL=OFF disables
-
- the 40 column screen.
-
-
-
- The baud rate can be hardwired into the BIOS by patching CPM+.SYS.
-
- The byte specifying the baud rate is found after the label "RS232" in
-
- the device table. The address is $0da7 for the DEC 85 version or
-
- $0d98 for the MAY 87 version. Normally, this byte will be set to 06
-
- for 300 baud. The values to choose from are:
-
- 0 NONE 1 50 2 75
-
- 3 110 4 135 5 150
-
- 6 300 7 600 8 1200
-
- Setting this byte to 02 for 75 baud is the single most important
-
- speedup you can make, with an obvious improvement in performance.
-
-
-
- Unfortunately, the FEEL and 40COL parameters aren't as simple to
-
- patch. The easiest way to make these permanent is to edit the CP/M
-
- source code and generate a new system. This requires MAC and RMAC,
-
- assemblers from the utility disks offered in the C128 System Guide.
-
- Although these disks also contain complete system source code, I
-
- recommend generating a system from the files in the widely available
-
- BIOSR4.ARK by James Waltrip, or my own BIOSR5.ARK.
-
-
-
- BIOSR4 and R5 are archives containing modified source code. They've
-
- been reworked to remove all 40 column code, replacing it with an 80
-
- column screen dump. Routines have been added to define the drive
-
- search chain and default drive, the shape of the cursor, and the
-
- keyboard repeat rate. The code is thoroughly commented, pointing out
-
- bytes to set for the default printer and secondary address, screen
-
- colors, and default baud rate. Additional disk types have been added
-
- to the disk parameter table in BIOSR5, including Miklos Garamszeghy's
-
- "Maxi 71," which provides a remarkable 398K per disk.
-
-
-
-
-
- Upgrading the CCP
-
-
-
- The Console Command Processor, or CCP, is the program CP/M relies on
-
- to communicate with the user. Its various responsibilities include
-
- printing the CP/M drive and user area prompt, interpreting console
-
- input, and loading and executing transient commands. The CCP.COM
-
- supplied on the CP/M boot disk is pretty bare bones. It has six
-
- limited resident commands: DIR, DIRSYS, ERASE, RENAME, TYPE, and USER.
-
-
-
- A public domain CCP replacement that corrects some of the inadequacies of
-
- the standard CCP.COM is CCP Plus version 1.05. CCP+ doesn't include
-
- resident commands; they have been replaced with new features. CCP+
-
- includes a time display in the drive/user prompt, and named directories
-
- similar to those in more modern operating systems. Commands can be
-
- executed from user areas other than the current one. An impressive feature
-
- is the ability to execute COM and SUB files from a command library much
-
- like MS-DOS.
-
-
-
- If you use CCP+, you will have to select commands for your system.
-
- This can be fun, rather like going on a free software shopping spree.
-
- All the programs mentioned in this article, except QDisk, are public
-
- domain.
-
-
-
- A RAM expansion, with its fast access and loading times is the
-
- wisest place to put frequently used commands, since they will load and
-
- execute almost instantly. By using a PROFILE.SUB on your boot disk,
-
- commands can automatically be copied to the RAM disk when the system is
-
- booted. For all purposes, commands stored on a RAM disk will appear to be
-
- resident commands. On the other hand, if you don't have a RAM disk, you
-
- might decide that CCP Plus's features don't make up for the lack of
-
- resident commands.
-
-
-
- Another solution is to use a Quick Brown Box along with QDisk software
-
- as a CP/M RAM drive. The Quick Brown Box uses a battery to keep its 64K of
-
- RAM active between computing sessions. I use the box to store 64K of
-
- commands that are available the instant I switch on the computer.
-
-
-
- CCP Plus is available in the file CCP105P.LBR, along with many
-
- supportting programs and utilities.
-
-
-
-
-
- Speeding Up Disks and Drives
-
-
-
- A command my system runs when it first boots is C1571.COM. This shuts
-
- off the 1571's redundant write verify, reducing the time it takes to
-
- save files. Look for a version dated 24 Feb 86 or later. An earlier
-
- version has a bug that prevents the use of MFM disk formats.
-
-
-
- Using MFM disk formats is another way to get maximum performance from
-
- CP/M. You'll still need Commodore GCR formatted disks for boot disks,
-
- but MFM formats can be used for all disks that don't need to be
-
- bootable. Not only do some MFM formatted disks provide more storage,
-
- they are typically faster than GCR disks. My recommendations are for
-
- the Epson QX10 format supported by the standard BIOS, or Maxi 71
-
- mentioned earlier. QX10 disks offer 390K of storage; Maxi 71, 398K.
-
- That's 62K more than a C128 double sided CP/M disk.
-
-
-
-
-
- Eliminating SETDEF
-
-
-
- The SETDEF command is usually used to define the drive search chain
-
- and temporary drive. The drive search chain is a list of up to four
-
- drives that CP/M will search each time a command is issued. Sometimes
-
- CP/M needs to make temporary files in which it stores data while a
-
- command is being executed. SETDEF is also used to tell CP/M which
-
- drive to use for temporary files.
-
-
-
- If you decide to generate a CPM+.SYS using BIOS R4 or R5, there is a
-
- section of code in the CXIO.ASM module for values for the drive search
-
- chain and temporary drive. These values can also be patched into an
-
- existing copy of CPM+.SYS.
-
-
-
- The drive search chain is located from $1268 to $126b in the DEC 85
-
- and MAY 87 versions, or $0e68 to $0e6b in the AUG 85 version of
-
- CPM+.SYS. The drives are numbered starting with 01 for drive A. The
-
- default or currently logged drive is 00. Positions that aren't used
-
- should be filled with $ff. The byte immediately following the search
-
- chain, $126c in the DEC 85 and MAY 87 versions or $0e6c in the AUG 85
-
- version, specifies the drive for temporary files. This byte defaults
-
- to 00, the currently logged drive. If you use a 1750, have the system
-
- make its temporary files there. It's much faster than writing and
-
- erasing them from a floppy disk. The suggested entries for RAM disk
-
- users are:
-
- $1268: 0d 00 ff ff 0d
-
- If a file isn't found on the RAM disk (drive M) CP/M will also search
-
- on the currently logged drive. Drive M is the temporary drive.
-
-
-
- Since these patches cover the important functions of SETDEF, there is
-
- little need to run it every time you boot up.
-
-
-
-
-
- Eliminating SUBMIT
-
-
-
- When CP/M is first booted, the CCP searches for PROFILE.SUB, and if it
-
- is present, executes it via SUBMIT.COM. This is the usual method for
-
- automatically setting up the system. A typical PROFILE.SUB might
-
- consist of the following commands:
-
- C1571 [A,B,D
-
- CP A1:*.* M0:
-
- DATE S
-
-
-
- PROFILE.SUB is read in line by line and each command is loaded and
-
- executed in turn. In this example C1571.COM turns off the 1571's
-
- write verify, all files in user area 1 of the boot disk are copied to
-
- user area 0 of drive M, and DATE.COM sets the system date and time.
-
-
-
- Thanks to the public domain CHN31, SUBMIT.COM can be done away with,
-
- at least for PROFILE.SUB and other short lists of commands. CHN31
-
- constructs a COM file consisting of any commands you might put into a
-
- SUBMIT file. In the example above, each command would be be entered
-
- at CHN's prompt separated by an exclamation mark. CHN is a big
-
- convenience and time saver. Since CHN command files are themselves
-
- directly executed, SUBMIT doesn't have to be loaded.
-
-
-
- CCP.COM requires a quick patch to use this trick. Look for the string
-
- 'PROFILE.S' somewhere in or around the seventh sector of CCP.COM.
-
- Simply change the string to 'PROFILE.C' to execute a file named
-
- PROFILE.COM created with CHN31.
-
-
-
- Here's the PROFILE.COM I use:
-
- QD F/F!C1571 [A,B,D!DIRNAME ON!F:SETDIR!F:HIST!DATE S
-
- QD (QDisk) activates the Quick Brown Box as drive F, a 64K RAM disk.
-
- C1571.COM disables the 1571 drive's unnecessary write verify. The
-
- letters following the command are a list of 1571 drives on my system.
-
- DIRNAME is a CCP Plus utility that starts the named directory feature.
-
- SETDIR is then loaded from drive F. It reads the list of directory
-
- names and installs them in memory. HIST provides recall of the last
-
- 20 commands typed to the system. DATE then sets the system time and
-
- date.
-
-
-
- If you don't use a Quick Brown Box, you'll need to copy commands and
-
- other support files into your RAM disk. The easiest way I've found to
-
- do this is to place files I want to copy in user area 1 of my boot
-
- disk. I use the command 'CP 1:*.* M0:' in my PROFILE.COM (CP is the
-
- name I use for ARCOPY.COM, an excellent public domain copy program)
-
- and everything in A1 is copied to M0.
-
-
-
-
-
- Laying Out a Boot Disk
-
-
-
- User area 0 should include CPM+.SYS, CCP.COM, and PROFILE.COM. I also
-
- keep files in user 0 that are specified in PROFILE.COM but executed
-
- only when the system is first booted. These include C1571.COM,
-
- DIRNAME.COM, and DATE.COM.
-
-
-
- User 1 should contain files that will get copied to the RAM disk. I
-
- suggest CMDRUN.COM, which is used by CCP+ to execute commands from
-
- COMMAND.LBR; ROOT.DIR, containing a list of directory names; and
-
- custom keyboard definition files created with KEYFIG.COM and saved
-
- with SAVEKEY2.COM. I use two keyboard files, DEFAULT.KEY for normal
-
- operation, and ZDE.KEY for use with the public domain ZDE editor.
-
- You'll also want to include a COMMAND.LBR.
-
-
-
- COMMAND.LBR can be created with a library utility, such as
-
- NULU152.COM. It can have as many commands, and be as large as you
-
- have room to dedicate to it. It should include replacement commands
-
- for those missing from CCP+, and any other commands you routinely use.
-
-
-
- Here's a list of the commands in my COMMAND.LBR along with some
-
- comments. All these programs are public domain.
-
-
-
- SD137.COM. This is a versatile directory program that can show files
-
- in all user areas, on all drives, files in libraries or archives, and
-
- files with the system attribute set. It can send output to a file or
-
- printer. SD137 replaces both DIR and DIRSYS.
-
-
-
- ERASE.COM (version 5.3). This ERASE replacement allows scratching files in
-
- user areas other than the current one and asks for confirmation before
-
- erasing Read-Only files.
-
-
-
- QL41.COM. Quick Look replaces both TYPE and DUMP. QL can view binary
-
- as well as text files. If a file is crunched or squeezed, or is a
-
- member of a library, QL will unpack it before displaying it. It
-
- features random access paging through files, a string or hex byte
-
- search, memory display, and can extract files from libraries.
-
-
-
- LD.COM and CREATE.COM. Library Disk opens LBR files and causes CP/M
-
- to treat them as if they were disk drives. If used with CCP+, the
-
- library name is displayed in the prompt along with the directory name.
-
- This gives the effect of working in a disk partition or subdirectory.
-
- CREATE, which I've renamed to MKDIR, makes empty libraries.
-
-
-
- CHN31.COM. CHN creates a COM file from a chain of CP/M commands. CHN
-
- can take on many of SUBMIT's functions.
-
-
-
- ARCOPY.COM version 2.1. This program replaces PIP, RENAME, and TYPE.
-
- It is packed with features, including copying to or from different
-
- user areas, to the printer or console, and renaming or moving files
-
- (erase after copy).
-
-
-
- DA.COM. Directory Attributes can set or reset the system, read only,
-
- archive, or special 1 - 4 attributes for a file or group of files. It
-
- also functions as a directory program.
-
-
-
- HIST.COM. This history program for CP/M+ quickly recalls any of the
-
- last 20 commands typed to the system. Command lines can be edited and
-
- reused.
-
-
-
- HP+.COM. A memory resident calculator based on the popular Hewlett-
-
- Packard. It can be popped up from within applications.
-
-
-
- SETDIR.COM. A CCP+ utility for loading directory names into memory.
-
-
-
- LOADKEY2.COM. This program will load a custom keyboard file created
-
- with KEYFIG and saved with SAVEKEY2.COM.
-
-
-
- ZDE13.COM. ZDE is the latest version of VDE, the Video Display
-
- Editor. ZDE uses Wordstar commands, is memory resident, and includes
-
- programmable macros. It is better than many commercially available
-
- word processors for 128 mode and is by far my favorite C128 editor.
-
-
-
- E.COM. This is a command file created with CHN.COM. Its syntax is:
-
- E du:filename
-
- The definition of E is:
-
- LOADKEY2 ZDE.KEY!ZDE13 $1 $2!LOADKEY2 DEFAULT.KEY
-
- What this does is load a special keyboard file that places ZDE commands on
-
- the keys I want them on, then loads ZDE along with the file to be edited.
-
- After using ZDE, standard keyboard definitions are loaded back into the
-
- system. This method can be used to customize any application or program by
-
- automatically loading keyboard layouts that change, simplify or combine
-
- commands and assign them to almost any key.
-
-
-
- I use a similar CHN command file for loading terminal software.
-
- Here's the command line:
-
- LOADKEY2 TERM.KEY!MEX114 $1!CONF BAUD=75,FEEL=0!LOADKEY2 DEFAULT.KEY
-
- This line loads the keyboard definition file TERM.KEY, then loads MEX114.
-
- When I quit MEX, CONF resets the system baud rate to 75 and LOADKEY2
-
- reloads the standard keyboard layout. All CP/M terminal programs I've seen
-
- set the system baud rate to 1200, but don't reset it when they finish. If
-
- you think the system is slow at 300 baud, you don't ever want to see it
-
- outside of a terminal program at 1200 baud. By using this command line,
-
- you never will.
-
-
-
- CP/M can be plenty of fun to tinker with. Both the operating system
-
- and applications give ample opportunities for customization. One you
-
- get CP/M up to speed and discover some of the excellent software available
-
- for it, you might find your new boot disk spinning in the drive more often.
-