home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
ENTERPRS
/
CPM
/
TEXT
/
CPMBOOT.TXT
< prev
next >
Wrap
Text File
|
2000-06-30
|
17KB
|
623 lines
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.