CCS System 300 Supplementary Manual
Read Online
Read the CCS System 300 Supplementary Manual online using the built-in PDF viewer.
Text of the manual
Copyright 1981 by California Computer Systems
All rights reserved.
No part of this publication may be
reproduced in any form or by any means without express
·permission of California Computer Systems.
The information contained in this manual is believed to be
correct at the time of pUblication.
However,
CCS assumes no
liability resulting from the use of this manual.
Publication History:
Preliminary version print March 1981
Revision A printed June 1981
Revision B printed September 1981
CP/M is a trademark of Digital Research,
Inc.
CP/M SUPPLEMENTARY MANUAL
MANUAL 89008-02603
REV. B
COPYRIGHT 1981
CALIFORNIA COMPUTER SYSTEMS
250 CARIBBEAN DRIVE
SUNNYVALE
CA
94086
TABLE OF CONTENTS
CHAPTER 1
INTRODUCTION
CHAPTER 2
SYSTEM 300 CP/M DESCRIPTION
2.1
System Memory Configuration .•.....•.
L .•
L .•• 2-1
2.2
Reserved Page 0
RAM ...•••...........•.•.. 2-1
2.3
CC30BOOT ................•..........•.....
2-3
2.4
CC30BIOS
2-3
2.4.1
Diskette Compatibility .....••..... 2-3
2.4.2
Drive Compatibility .•.....•....... 2-4
2.4.3
Software Compatibility ..•.•...•..• 2-5
2.4.4
Peripheral Compatibility ..•.....•. 2-6
2.4.5
The Primitive Disk Routines ••..... 2-7
2.4.6
The Basic I/O Routines .•......•.•. 2-7
2.4.7
Error Messages ......•••..••.•••.• 2-10
CHAPTER 3
SYSTEM 300 UTITLITY PROGRAMS
CC30GEN .•••••.••••••••••••••••••••••••••
CC30INIT
.
Documentation Conventions ..••••..••..••.•.
3.4.1
Description ••.••.....••••••••••••
3.4.2
Requirements/Restrictions ......•..
3 . 4 . 3
Operat ion .......•.••..•.•••••.•••
3.4.4
Error Messages .•.••..•.•..•.•••.•
CC30COPY ••.•.••..•.••••••••••••••••••.••
...................................
Description .••.••.•.•••.•••••••..
Requirements/Restrictions .....••.
Operation
.
Error Messages •..•..••..•.•.•...•
Description ..•••..••.••.••.•••••.•
Requirements/Restrictions ......•...
Operation ..•.•..••..•..••.•..••..••
Error Messages .•..••....••••••••.•
3-1
3-2
3-2
3-2
3-3
3-5 '
3-9
Description .•..•..•....•.•...•••.. 3-9
Operation ..•••.•.•••••. ~ •.••••.••• 3-9
3-10
3-10
3-10
3-10
3-12
3-14
3-14
3-14
3-15
3-16
3.5.1
3.5.2
3.5.3
3.5.4
3.2.1
3.2.2
3.2.3
3.2.4
MOVCPM
3.3.1
3.3.2
3.4
3.5
3.3
3.1
3.2
APPENDIX A
CUSTOMIZING THE SYSTEM 300 CP/M
APPENDIX B
DOUBLE-SIDED MINI DRIVES
APPENDIX C
EXTENDED-TRACK MINI DRIVES
APPENDIX D
SECTOR SKEW
This manual describes California Computer Systems'
System
300
version
of CP/M 2.2.
It is intended as a supplement to,
not a substitute for, the basic CP/M documentation and
covers
only
CCS's
additions
and
modications
package as received from Digital Research. to the standard CP/M
It assumes a basic
knowledge of CP/M terms and organization on the
part
of
the
reader and is oriented to the systems programmer, although the
system
operator may have reason to consult the description of
the utility programs in Chapter 3.
The
standard distribution version of CP/M is designed to
work with an Intel Microprocessor Development System.
CCS has
made the necessary modifications to the operating
system
for
it
to
work
with CCS's System 300 and has expanded its drive
handling capabilities.
As distributed, the
System
300
CP/M
supports the following:
.
* Single-sided and double-sided 8" floppy disk drives
* Single-sided 5.25" floppy disk drives
* Single- and double-density diskettes conforming to the IBM
3740 and System 34 formats and containing either 128,
256,
512, or 1024 bytes per sector
* A console device
* A serial printer
* A Centronics-type parallel printer
Simple
modifications
to
the software will enable the System
300 CP/M to support
double-sided,
instead
of
single-sided,
5.25" floppy disk drives.
The
extensively
modified
or
unique
portions
of
the
software include the system loader, the BIOS, and, to
support
the
new
capabilities
of the BIOS, several utility programs.
The BIOS and the system loaders
are
described
in
the
next
chapter; Chapter 3 describes the utility programs.
To aid the
customizing
of
the
software, the appendices describe how to
tailor the software for different applications.
SYSTEM 300 CP1M DESCRIPTION
2.1
SYSTEM MEMORY CONFIGURATION
The
system
load
in memory is organized as shown in the
Digital Research r-1anual
"CP/M 2.2 Interface Guide. II
However,
the
base
of
the system load,
CBASE, is negatively offset 2K
compared to the normal CP/M load to
allow
for
the
enlarged
BIOS.
Thus while CBASE in a 64K version of Digital Research's
standard
CP/M
2.2
is
at E400h, it is at DC00H in CCS's 64K
version.
For each size memory configuration, then, the
space
available
for
the
TPA in CCS's version is 2K less than in a
normal CP/M load.
This is true even ·when a transient
program
overlays
the CCP; the beginning address of the system load in
this case,
FBASE,
is
also
negatively
offset
2K
from
the
standard
CP/M
load.
Please note that the entry points into
the BIOS will also be offset by 2K, or 800h.
2.2
RESERVED PAGE 0
RAM
Page 0
(00H-0FFH) in a CP/M
sy~tem is reserved for system
parameters.
The System 300 CP/M uses some
unique
parameters
in addition to the standard CP/M
parameteTs~
Table 2-1 on the
following
page
lists the page 0 locations used by the System
300 CP/tv!.
jump instruction to
the warm-start entry point,
4203H + bias (the
bias is equal
to
the
difference,
converted
into
hex,
between
the system memory size in
Kbytes and 20K.
--------------------------------------------------------------
0003H
0004H
0005H-0007H
0008H-000AH
00l0H-00l2H
00l8H-001AH
0020H-0022H
0028H-002AH
0030H-003'2H
0038H-003AH
0040H-0053H
005CH-007CH
007DH-007FH
0080H-00FFH
The
Intel Standard
IOBYTE
is stored in this
location.
It is set to its default
value
by
the BIOS
during cold-starts
and is preserved
during warm-starts.
The current default drive number is
stored in
this location.
These locations contain a
jump
instruction to
the BOOS.
The address contained in 0006-0007H
is the beginning address of the BOOS and hence
the lowest address in memory used by
CP/M
if
the CCP is overlaid.
The first five of the seven Z-80 restart loca-
tions are not
u~ed by CP/M.
The sixth restart
location
(0030H-0032H)
is held reserved
for
future
use.
The
seventh
restart
location
0038H-003AH) contains a
jump instruction into
the DDT or SID when programmed breakpoints are
used in the debug mode.
These locations contain disk
parameters
used
by CC30BOOT.
Locations 0040-004FH are defined
by CP/M as user scratch pad locations;
0050H-
0053H
are held reserved,
but are not used by
present versions of CP/M.
The CCP uses these locations as a default file
control block for the transient program.
These locations are
the optional default ran-
dom record position.
Locations 080H-0FFH are a temporary buffer for
CC30BOOT
when
it
is loaded into memory from
sector
01
of
Track
00
of the system disk.
Table 2-1
Page 0 Parameters
System 300 CP/M Description
2.3
CC30BOOT
2-3
The system loader CC30BOOT is designed to read the system
into
memory from floppy disk.
During a cold-start entry into
Cpll1,--- CC30BOOT-,--contained--i-nSector0l-, 'I'rack0-0-of -- the- -system
diskette, is loaded into system memory at locations
080H-0FFH
by
the
ROM-resident
bootstrap loader on the disk controller
board.
Once loaded,
CC30BOOT begins execution and loads
into
memory
the
system
tracks
(Tracks
00
and
01 on 8
11 system
dlskette and Tracks 00, 01,
02 on a 5.25
11 diskette.)
It
then
transfers control to the cold-start routine in the BIOS.
2.4
CC30BIOS
CC30BIOS
is
California
Computer
Systems'
customized,
expanded BIOS designed for CCS's System 300.
It contains
the
hardware-dependent
console,
printer,
and disk drivers.
To
support
both
maxi
and
mini
floppy
diskettes
of
varying
formats,
it
uses
a
modified
version
of
CP/M's
sector
deblocking algorithms.
CC30BIOS also implements the Intel MDS
IOBYTE as described in Section
2.4.6
below
and
in
Digital
Research's
IICP/r'l 2.2 Al-teration Guide. II
2.4.1
Diskette Compatibility
CC30BIOS
is
designed to be compatible with 8
11 and 5.25
11
soft-sectored unrecorded diskettes that
conform
to
the
IBM
3740 and System 34 standards for diskette format and that have
77
and
35
tracks
per
diskette, respectively.
It supports
double-sided 8
11 diskettes as well.
Table 2-2 on the following
page shows the compatible diskette formats.
Regardless of the
general diskette format,
Track 00
of
any
diskette
must
be
formatted in 128-byte, single-density sectors, as specified by
the
IBM standards.
CCS's floppy disk initialization routine,
CC30INIT,
automatically
formats
Track
00
in
128-byte,
single-density
sectors
and
should be used to initialize any
blank diskettes to ensure their compatibility with CC30BIOS.
System 300 CP/M Description
==============================================================
I DENSITY I BYTES PER I DISKETTE I
SECTORS
I USER CAPACITY I
SECTOR
I
SIZE
I PER TRACK I
(BYTES)*
i
==============================================================
lSing 1e
1
128
1
5 .25 II
1
18
1
73 , 728
I
I
1
1
8"
I
26
1
249,600
1
1---------1-----------1----------1-----------1---------------1
lSing1 e
I
256
1
5 . 2 5 II
1
10
1
81 , 92{)
1
1
I
8
11
I
15
1
288,000
1
---------1-----------1----------1-----------1---------------1
Single
1
512
1
5.25
11
1
5
1
81,920
1
1
1
8
11
1
8
1
307 , 200
1
---------I-----------I----------I--~--------I--------------~I
Single
1
1024
I
5.25
11
1
2
1
65,536
I
1
I
8
11
1
4
1
307 ,2'10
1
------------------------------------------------------------1
Double
1
128
I
5.25"
1
29
1
118,784
1
1
1
8 II
1
48
1
460,800
1
---------1-----------1----------1-----------1---------------1
Double
1
256
1
5.25"
1
18
I
147,456
1
1
1
8 II
1
26
1
499,200
I
---------1-----------1----------1-----------1---------------1
Daub1e
1
512
1
5 . 25 II
1
10
1
16 3 , 840
I
1
1
1
8"
1
15
1
576,000
1
1---------1-----------1----------1-----------1---------------1
1 Double
1
1024
I
5.25
11
I
5
i
163,840
i
1
I
1
8"
i
8
1
614,400
1
==============================================================
* User capacity figures based on single-sided drives and on
5.25" drives with 35 tracks.
Table 2-2.
Compatible Diskette Formats
CC30BIOS has been designed to read recorded diskettes
of
the
standard
128-byte
sector,
single-density, single-sided
format that have been formatted by a disk controller
chip
of
the 179x family.
It cannot,
however,
read diskettes formatted
by
a
1771
disk
controller
chip,
nor is it guaranteed that
CC30BIOS can read diskettes in non-standard
formats
recorded
on other systems.
2.4.2
Drive Compatibility
The
software
is
designed
to
control
single-sided or
double-sided B" floppy disk drives of
the
Shugart
SAEHJ0!8SC
type
or
single-sided 5.25" drives of the Shugart SA400 type.
If
the
drives
have
been
purchased
from
CCS,
they
are
System 300 cp/n Description
2-5
configured
for
soft\lare
compatibility.
If they have been
obtained from another
source,
they
need
to
configured
as
described
ln
the
Floppy
Disk
Controller Reference Manual.
Should an
application
call
for
double-sided
mini
drives,
different
step
rates, or mini drives containing more than 35
tracks,
see the appropriate appendix in this manual.
2.4.3
Software Compatibility
The deblocking capabilities of CC30BIOS add
considerable
flexibility
to
the SysteIu 300.
However,
when the deblocking
mode is used with certain CP/M programs,
the
last
write
to
disk
may
be
lost.
~ese programs complete their action by
writing to the disk and
then
"warm-booting"
the
system
to
return
control
to
CP/M.
Normally this causes no problem,
since in the non-deblock mode data is transferred directly
to
the
disk.
But
in the deblocking mode, data is transferred
first to a memory buffer which holds the data until
an
event
such
~s
a
subsequent
read
or
write
or
directory update
operation forces the contents of the buffer to be written
out
to
disk.
An occasional result of this holding operation is
that a reboot operation can be initiated
without
the
memory
buffer
being
emptierl
first.
Thus the final writes of data
never get transferred from memory to disk and
are
lost.
To
ensure
your
software is compatible with the deblocking mode,
you can do one of the following:
1.
For
new
software,
ensure
that
the
final
disk
write
operations
are
directory
updates.
CP/M
is
set up to
immediately update the directory on the disk every time 128
bytes of directory information (one
CP/M
logical
sector)
are
transferred.
This
effectively
empties
the buffer
before a warm boot is initiated.
2. Or, after the final disk write in a routine,
read any other
physical sector.
This will
p~rge
the
buffer
and
ensure
that
th~ written data is transferred to the disk.
It is not a good idea to try to solve the problem by modifying
the
warm-start
routine
so
that it clears the buffer before
actually doing the warm start.
Because a warm
start
is
the
usual
technique
for
error recovery,
you could aggravate the
error conditlon further by attempting to write potentially bad
data onto the diskette.
System 300 CP/M Description
2.4.4
Peripheral Compatibility
CC30BIOS contains drivers routines
for
the
two
serial
ports
(SIOA and SlOB) and the parallel port
(PIOA) on the 2820
System
Processor.
SIOA
is
defined as the default console
port,
SlOB as a serial printer port,
and PIOA as a
Centronics
printer
(or
equivalent)
parallel
port.
Both serial port
drivers
program
the
ports
fqr
asynchronous
serial
cOIUil1unication
at
9600
baud
with
a
serial
word format of
8-bits, one stop bit, and no parity.
CC30BIOS supports the MDS IOBYTE function,
which
allows
selection
of
peripherals through the STAT command.
The STAT
command
divides
common
peripherals
into
four
logical
categories
according
to
basic
function:
Console
(primary
channel
of
communication
between
user
and
system),' List
(output
list
devices
such as printers),
Reader (paper taper
reader),
and Punch (paper tape punch).
It allows.one of
four
physical
devices
to be assigned to a logical device category
at anyone time.
As shipped,
CC30BIOS supports the-
following
physical-to-logical device assignments:
======================================================
I Logical
Physical
Actual Peripheral I
1 Category.
Device Label
Selected
I
1----------------------------------------------------1
1 CONSOLE:
TTY
Console
1
I LIST:
TTY
Serial Printer
I
I
CRT
Console
I
1
LPT
Parallel Printer
I
I READER:
TTY
Console
I
I PUNCH:
TTY
Console
I
======================================================
Table 2-3.
Logical-to-Physical STAT Assignments
The
teletype
is
the
default physical device in each of the
logical
categories.
See
the
STAT
command
in
Digital
Research 1'6
manual
1I~~n
Introduction
to
CP/M
Features
and
Facilities" and Section 2.4.6 below for more information.
System 300 CP/M Description
2.4.5
The Primitive Disk Routines
2-7
The
primitive
floppy disk routines transfer a sector of
data at
a
time.
If
the
drive
has
not
been
previously
accessed,
the routines determine the drive size (8" or 5.25")
and disk format (bytes per: sector,
density):.
·The
primitive
disk
routines
will
attempt
up to ten times to successfully
transfer a sector of data.
To ensure" that control is returned
to the BDOS in case the DMAtransfer "hangs,"
a watchdog timer
is set at the begin of the
attempted
disk
access.
If
the
sector
transfer
is
successful,
00H
is
returned
in the A
register; if it is unsuccessful,
a non-zero value is returned.
During a sequential read or
write
to
a
double-sided
disk,
overflow
from
the last sector of a track on side 0 continues
on sector 01 of the same track on side 1.
2.4.6
The Basic I/O Routines
As mentioned
in
Section
2.4.4
above,
the
basic
I/O
routines
in
CC30BIOS
drive ports SIOA,
SlOB, and PIOA.
The
following corrolation is made between the
BDOS
jump
targets
and the BIOS basic I/O routines:
=======================================================
. I BDOS Jump
Basic I/O
Routine Function I
I Targets
Routines
I
I-------------~---------------------------------------I
I CONST
CSTS
Console Status
I
I CONIN
CI
Console Input
I
I CONOUT
CO
Console Output
I
I LIST
LO
List Output
I
I PUNCB
PO
Punch Output
I
I READER
RI
Reader Input
I
I LISTST
LSTAT
List Status
I
=======================================================
Table' 2-4.
_BDOS Jump Targets--BIOS Basic I/o-Routines--
The
basic
I/O routines support the MDS IOBYTE function.
The IOBYTE, stored in location
0003H,
contains
the
current
physical-to-logical
device
assignments.
When the system is
first initialized, the assignments for each logical device are
set to their default value, the teletype.
The
STAT
command
can be used to modify the contents of the IOBYTE, changing the
current
physical-to-logical assignments.
When an. I/O routine
is called involving one of the logical devices
(for
example,
the
routine CONIN), it jumps to one of the basic I/O routines
System 300 CP/M Description
(listed in the first column in Table 2-5 below).
Each
basic
I/O
routine
contains
a
table associating peripheral driver
routines with the physical device assignments in
its
logical
device
category.
The I/O routine reads the IOBYTE and then
transfers control to
the
driver
routine
indicated
by
the
physical
device
assignment.
It is important to keep in mind
that the physical device names are merely
convenient
labels:
they
are not necessarily descriptive of the actual peripheral
they select for I/O.
In most systems, for example, the actual
peripheral selected for Console I/O by the Teletype assignment
will be a CRT.
CC30BIOS
does
not
support
every
physical
device
assignment
in every logical category.
The peripheral drivers
for those assignments it does not support are equated
to
the
IOER
routine (see Table 2-5 below).
The IOER routine outputs
the 10 ASGT ERROR message
and
sets
the
physical-to-Iogical
assignments
to
the
Teletype
in all categories (see Section
2.4.7 below).
See
Appendix
A
for
instructions
on
adding
peripheral drivers.
The following table lists the basic I/O routines for each
logical
device,
the
peripheral
drivers
selected
by
the
physical device assignment,
and the contents of the drivers.
---~--------------------------------------------------
--------
BASIC I/O
ROUTINES
PERIPHERAL DRIVERS
CONTENTS
LOGICAL CONSOLE DEVICE
CI (input)
CO (output)
CSTS (input
status)
TTY Assignment:
TTYIN (input driver)
TTYOUT (output driver)
TTST (input status)
TTOST (output status)
CRT Assignment:
CRTIN (input driver)
CRTOUT (output driver)
CRTST (input status)
UCI Assignment:
CUSII (input driver)
CUSOI
(output driver)
CUSTI (input status)
SIOA input driver
SIOA output driver
SIOA input status
SIOA output status
IOER Equate
IOER Equate
IOER Equate
IOER Equate
IOER Equate
IOER Equate
System 300 CP/M Description
2-9
---------------------------------------------------------------
LOGICAL READER DEVICE
RI
(input)
TTY ASSIGNMENT:
TTYRDR (input driver)
PTR Assignment:
PTRIN (input driver)
PTRST (status)
URI Assignment:
RUSII (input driver)
RUSTI (status)
UR2 Assignment:
RUSI2 (input driver)
RUST2 (status)
TTYIN Equate
IOER Equate
IOER Equate
IOER Equate
IOER Equate
IOER Equate
IOER Equate
LOGICAL PUNCH DEVICE
PO (output)
TTY Assignment:
TTYPNCH (output)
PUN Assignment:
HSP (output driver)
HSPST (status)
UPI Assignment:
PUSOI (output driver)
PUSTI (status)
TTYOUT Equate
IOER Equate
IOER Equate
lOER Equate
lOER Equate
System 300 CP/M Description
UP2 Assignment:
PUS02 (output driver)
PUST2 (status)
IOER Equate
IOER Equate
Table 2-5.
IOBYTE Handlers and Peripheral Drivers
2.4.7
Error Messages
CC30BIOS incorporates error messages
for
the
following
four
conditions:
Drive Not Ready,
I/O Assignment Error,
Disk
Time Out, and Warm Boot Error.
DRIVE NOT READY:
If you try an operation with
which
is
not
ready
(i.e.,
the
door
is
nonexistent you will receive the error message
DRIVE N NOT READY
a
drive
open)
or
where N is the drive unit.
To
get
out
of
the
error
condition,
ready the drive (insert a diskette,
shut the
door)
and hit any key on your console device.
Whatever
program you were running at the time will then continue.
If
the problem is a nonexistent drive, you will have to
reboot your system.
I/O ASSIGNMENT ERROR:
You can use the CP/M STAT command
as
described
in
the
Digital
Research
manual
II An
Introduction
to
CP/M Features and Facilities ll to alter
the
contents
of
IOBYTE
and
thus
change
the
physical-to-logical
I/O
device
assignments.
CC30BIOS
contains driver routines only
for
the
teletype
(TTY)
device in each logical device categories and for the CRT
and
Line Printer
(LPT) in the List category.
Assigning
any other physical device to a logical category forces
a
jump to the I/O Assignment Error
routine
when
an
I/O
operation
is performed involving that logical category.
The message
I/O ASGT ERR
is output,
the I/O assignments default to
the
teletype
for each logical category,
and control returns to CP/M.
DISK
TIMEOUT:
CC30BIOS incorporates a watchdog timer
which allo\vscontrol:· to be returned
to
CP/M
should
a
drive
IIhang ll
during
a disk operation,
such as a read,
write,
seek, or restore.
At the beginning of each
disk
System 300 CP/M Description
2-11
operation, the watchdog timer is set for a specific time
interval:
if
it
times
out before the disk controller
signals end-of-job, the bisk Timeout error message
DISK TIMEOUT
is displayed and control is returned to the BDOS.
BOOT ERROR:
During a warm boot of CP/M,
the
warm-boot
routine outputs the message
BAD BOOT
and
rings the console bell if it cannot read the system
after ten tries.
If you hit the
carriage
return
key,
the
routine
will
try
ten
more
times to read in the
system.
SYSTEM 300 UTILITY PROGRAMS
Most· of
the
utility
programs
(aLso
called transient
programs) described in
Section
6
of
the
CP/M
manual
IIAn
Introduction
to
CP/M
Features and Facilities" work with the
System 300 CP/M and thus have not been
altered
in
any
way.
However,
to
fully support the capabilities of the System 300
CP/M,
CCS has added
utility
programs
and
modified
others.
This chapter describes these utility programs.
Please
note
that
when
either
CC30INIT,
CC30GEN,
or
CC30COPY is executing, it does not
access
the
the
printer
driver
routines in the the BIOS.
This means that the console
displays cannot be routed to the printer.
Also note that
the
above programs work directly with CCS's disk controller boards
and
thus
cannot
work
in systems using other manufacturer's
boards.
3.1
DOCUMENTATION CONVENTIONS
The following documentation conventions are in effect
in
this chapter:
represents a carriage return
A C
represents a Control-C
N>
represents the default (currently selected) drive prompt,
where N can be a letter between A and P, inclusive.
Underlined
characters
in
sample
console
displays are user
inputs.
System 300 Utilities--CC30INIT
3.2
CC30INIT
CC30INIT
performs
two
basic
functions:
1)
l~
formats
diskettes:
2)
it verifies data integrity on already recorded
diskettes.
3.2.1
CC30INIT Description
In the format mode,
CC30INIT formats 5.25" and 8" single-sided
or double-sided diskettes so that they
a. are compatible with CC30BIOS;
b. conform to the IBM 3740 and System 34 format standards;
c. can be read and written to by the l79x
family
of
disk
controllers and the 1771 disk controller.
After
if
finishes
formatting
the entire diskette,
CC30INIT
automatically reformats Track 00 in
l28-byte,
single-density
sectors
so
that it conforms to the IBM format standards.
It
then verifies the diskette.
In addition to formatting an
entire
diskette,
CC30INIT
can
format
a
single
track only, allowing the data on a diskette
with one bad track to be saved.
This
facility
can
also
be
used to reformat Track 00 in any format supported by CC30INIT.
However,
CC30BOOT
and
the ROM bootstrap loader will then be
unable to
read
the
diskette.
After
formatting
a
track,
CC30INIT automatically verifies the track.
For the details of
the
formats
used
by
CC30INIT,
refer
to
the
Programming
Information Appendix of your Floppy Disk Controller
Reference
Manual.
In the verification mode,
CC30INIT verifies the data integrity
of an entire diskette, indicating
which records are in error.
Note
that
the
verification
mode
does
not
support
the
single-track option.
3.2.2
CC30INIT Requirements/Restrictions
In the
format
mode,
CC30INIT
does
not
support
128-byte,
double-density sectors or 1024-byte, single-density sectors.
CC30INIT
can
not
verify
diskettes
written
by
1771
disk
controller chip.
CC30INIT requires a CCS Floppy Disk Controller.
System 300 Utilities--CC30INIT
3.2.3
CC30INIT Operation
3-3
************************************************************
*
*
*
CAUTION:
CC30INIT destroys any existing data as it
*
*
formats
the
diskette.
If you wish to reformat a
*
*
diskette for
CC30BIOS
compatibility, yet preserve
*
*
its contents, see CC30COPY.
*
*
*
************************************************************
CC30INIT
relies
on
console
interaction
to
receive
the
parameters
it
needs
to
format
or
verify
a diskette.
It
accepts only a limited number of responses to the questions .it
asks and prompts for the acceptable responses.
If it receives
an unacceptable response, it repeats the question.
Except as
noted, entering a carriage return in response to
any
of
the
questions
returns
you
to
CP/M.
The console dialog is as
follows:
WHICH DRIVE (A-D)?
IEnter the drive letter
of the diskette
Ito be formatted and/or verified.
When
ICC30INIT is
finished,
it repeats this
Iquestion, allowing additional diskettes
Ito be formatted
or
verified.
A
Ireturns you to CP/M.
SINGLE OR DOUBLE SIDED (0 OR l)?
SINGLE OR DOUBLE DENSITY (S/D)?
10 specifies single-sided:
11 specifies double-sided.
IIf you respond with a
1,
ICC30INIT formats/verifies
Iboth sides of the disk.
lIn the format mode,
your
Iresponse
must agree with
Ithe sector size
selected
Ibelow.
If
it
doesn't,
ICC30INIT
will
return to
Ithis
question
when
it
Itries to format the disk.
TRACK NUMBER (0-80 OR *)?
ITo
format
or
verify the entire
Idisk,
enter
*
To
format one
Itrack only,
enter the track num-
Iber,
followed by a space.
If you
Ichoose to format
a single track,
Imake sure the
format you specify
System 300 Utilities--CC30INIT
Imatches
the
rest
of the disk--
Iotherwise,
CC30BIOS
will not be
lable to read the disk.
Density
S
SiD
SiD
D
Bytes/Sector
128
256
512
1024
Code
o
1
2
3
IEnter the code that
selects the bytes-
Iper-sector formatting you desire:
I
I
I
I
I
I
I
ISingle-density,
1024-byte sectors and
Idouble-density,
128-byte
sectors are
Isupported in the verification mode.
SECTOR SIZE (0-3)1
SELECT INIT WITH VERIFY OR VERIFY ONLY,' (0 OR 1)
IThis line appears
only if you have specified the entire
Idisk for formatting or verification.
Enter 0 to format
land verify the disk:
enter
1
to verify the disk only.
IA causes CC30INIT to restart at the first question.
IIf you specify init with verify,
CC30INIT responds with:
WARNING--CONTENTS OF DISK WILL
DESTROYED.
CONTINUE
(Y/N)?
BE
IEnter
Y
if you wish the disk
Ito
be formatted.
Any
other
Iresponse
causes
a
repeat of
Ithe previous question.
NUMBER OF TRACKS (35, 40, 80)1
IThis question appears if the
Iselected
drive
is
a mini.
IEnter
the
number of tracks
Iper side your mini supports,
Ifollowed by a space.
CC30-
IINIT prompts for and accepts
lonly those numbers supported
Iby mini drives currently
on
Ithe market.
Unless altered,
lCC30BIOS
supports
35-track
Iminis only.
VERIFYING
ICC30INIT displays this message as it verifies
Ithe diskette or reformatted track.
System 300 Utilities--CC30INIT
3-5
EXAMPLE:
In the following console dialog example,
a
single-
sided
8
11
diskette
ip
Drive B is initialized for l024-byte,
double-density sectors.
N>CC30INIT
CCS SYSTEM 300 FORMAT PROGRAM Vl.l
PLEASE USE CAUTION WHEN USING THIS PROGRAM
AS IT IS POSSIBLE TO DESTROY EXISTING DATA
WITH NO CHANCE OF RECOVERY
WHICH DRIVE (A-D)?
B
SINGLE OR DOUBLE SIDED (0 OR I)?
0
SINGLE OR DOUBLE DENSITY (S/D)? 0
TRACK NUMBER (0-80 OR *)
~
SECTOR SIZE (0-3)? 1
SELECT INIT WITH VERIFY OR VERIFY ONLY,
(0 OR 1)
0
WARNING--CONTENTS OF DISK WILL BE
DESTROYED.
CONTINUE (Y/N)? Y
VERIFYING
WHICH DRIVE (A-D)?
3.2.4
CC30INIT Error Messages
CC30INIT
contains
general
error
messages
that
are
displayed
whenever
an
error occurs during a disk operation.
They identify the nature of the operation in which
the
error
occurred,
specify
the
physical location of the error (drive
unit, diskette side, track number, sector number),
and display
the
contents
of
the
disk
controller's
status
register.
Numerical
values
are in hex.
For a definition of the status
register,
see the 1793 Data Sheet
in
the
2422
Floppy
Disk
Controller manual.
HOME ERROR:
DRIVE n;
SIDE n;
TRACK n;
SECTOR n;
STATUS-n
After
CC30INIT
issues
a Restore Command (return to Track
(0), it checks status and will display the abovernessage if
the drive is not ready (i.e., door open), the disk is write
protected, or the disk controller does not report the
head
over Track 00.
SEEK ERROR:
DRIVE ni
SIDE n;
TRACK ni
SECTOR ni
STATUS-n
CC30INIT
displays the Seek Error Message if it detects one
of the following errors after it
issues
a
Seek
Command:
drive
not
ready,
drive write-protected, or head on Track
00.
.
System 300 Utilities--CC30INIT
INIT ERROR:
DRIVE ni
SIDE ni
TRACK ni
SECTOR ni
STATUS-n
CC30INIT writes an entire track at one time.
After it
has
finished
writing
a track, it checks for error conditions.
It displays the above message if
it
detects
one
of
the
following
errors:
drive not ready, drive write-protected,
or lost data.
READ ERROR:
DRIVE ni
SIDE ni
TRACK ni
SECTOR ni
STATUS-n
During verification of a diskette,
CC30INIT
displays
the
above
message
if it encounters one of the following error
conditions: drive not ready,
record not found,
CRC
~rror,
or lost data.
CC30INIT
also
contains
error
messages
which flag specific
error conditions.
Some
of
these
messages
will
appear
in
conjunction with the operation error messages.
DRIVE NOT READY,
PLEASE FIX AND RETRY
If
the
selected
drive
is
not
displayed and CC30INIT restarts at
(A-D)?
Check that the diskette is
the drive door closed.
ready,
this
message is
the question WHICH DRIVE
properly
inserted
and
SEEK ERROR
After
the
drive
has
been
specified,
CC30INIT
does
a
preliminary restore of the drive (seek
to
Track
00)
and
reads status.
If the Track 00 flag is not set, it displays
this error message and restarts with the vffiICH DRIVE (A-D)?
question.
DISKETTE IS WRITE PROTECTED PLEASE FIX
If
CC30INIT enounters a write-protected diskette, which of
course it cannot initialize, it displays this error message
and restarts at the question WHICH
DRIVE
(A-D)?
Replace
the
tab on the write-protect notch
(8
11 diskette) or remove
the tab (5.25
11 diskette) before responding.
DRIVE TYPE CONFLICT PLEASE RETRY
This message appears for
8
11
drives
only.
If
you
haye
indicated
that
the
diskette
is
single-sided when it is
actually double-sided, or
vice
versa,
CC30INIT
displays
this
error
message.
CC30INIT
then
restarts
with the
question WHICH DRIVE (A-D)? Bini
drives
do
not
have
an
output
indicating
whether
o~
not
a
diskette
is
double-sidedi hence CC30INIT can do no
error
checking
in
the case cImini
'ariv~s.
System 300 Utilities--CC30INIT
3-7
BAD 'rRACK OR SECTOR SIZE/DENSITY SELECTION
Before
CC30INIT begins formatting the diskette, it ensures
that 128-byte double-density
or
1024-byte
single-density
sectors
have
not been selected and that the number of the
track to be formatted does not equal or exceed
the
number
of tracks on the diskette
(77 for an 8
11 i user-specified for
a
mfriIr-~- -rf
either
the
sector/density
-or
the track
selection is
unacceptable,
the
above
error
message
is
displayed
and
CC30INIT
returns
to
the
console dialog,
starting with SINGLE OR DOUBLE DENSITY (S/D)?
DID NOT DETECT TRACK00 ON RESTORE,
ABORT
If the disk controller
signals
that
it
has
finished
a
restore
command
but
Track
00
is
not flagged,
CC30INIT
displays this error message in conjunction
with
the
Home
Error
Message
and
returns
control
to CP/M.
This error
condition usually indicates hardware malfunction.
TRACK ZERO FLAGGED WHEN HEADS OFF ZERO,
ABORT
This error message may occur in conjunction with
the
Seek
Error Message.
If after a seek or step command Track 00 is
flagged,
this message is displayed and control is returned
to CP/M.
It usually indicates a hardware malfunction.
STATUS IS LOST DATA,
PROGRAM IS ABORTED
This message is displayed
in
conjunction
with
the
Init
Error
Message
whenever the DRQ flag or the Lost Data flag
is set in the status register after a track read or
write.
This error message usually indicates problems with the data
transfer rate.
If it occurs during data verification of an
already
recorded
diskette, it is possible that the number
of bytes per sector may be greater than
specified
in
the
console dialog.
Control is returned to CP/M.
STATUS IS RECORD NOT FOUND,
Y TO CONTINUE
This
error
message
occurs
only during verification of a
diskette.
CC30INIT will attempt four times to successfully
read in a sector.
If it is unsuccessful after
the
fourth
attempt
because it cannot find the sector, it will display
the above message and query.
If
you
enter
Y,
CC30INIT
proceeds
to
the
next sector, continuing its verification
at-tempt.
Any other response causes
CC30INIT
to
restart
with
the first question in the console dialog.
This error
message usually
indi~ates a hard error on the floppy
disk.
It
might also occur during data verification of an already
recordea diskette if the number of bytes per sector or data
density is less than specified in the console dialog.
3ystem 300 Utilities--CC30INIT
STATUS IS eRC ERROR,
TYPE Y TO CONTINUE
ee30INIT displays this error message after it has attempted
unsuccessfully to read the disk four times because of a CRC
error.
Entering Y causes CC30INIT to proceed to
the
next
sector
and
continue
its verification attempt.
Any other
response causes· Ce30INIT to restart with the first question
in·
the
-console
dialog.
-This-
error
messag-e
usually
indicates a hard error on the diskette.
TIMEOUT ON DISK OPERATION,
DO YOU WISH TO RETRY OR
RETURN TO CPM?
PLEASE REPLY Y(ES)/N(O)
CC30INIT
sets
the watchdog timer for each disk operation.
If the watchdog timer times out before the disk
controller
signals
end~of-job (INTRQ bit set),
CC30INIT displays this
message.
A response of Y causes CC30INIT to restart
with
the
source
drive
request.
A response of N (or any other
entry) causes control to be returned to CP/M.
This
error
condition usually is caused by hardware malfuction.
PREMATURE DMA TERMINATION,
PROGRAM ABORTED
The disk controller should signal end-of-job before the DMA
transfer
is
terminated.
If the DMA terminates before the
disk controller reaches end of job, Ce30INIT displays
this
message
and returns control to CP/M.
This error condition
is usually caused by hardware malfunction.
System 300 Utilities--MOVCPM
3 . 3
rvl0VCP~'1
3-9
MOVCPM
allo\Js the System 300 CP/M to be reconfigured for
different memory Slzes.
3.3.1
MOVCPM Description
The System 300
MOVCPM
works
essentially
the
same
as
Digital
Research's
program
described
in Section 6.9 of "An
Introduction to CP/H Features and Facilities.
1I
It
places
an
image
of
the
System
300
CP/M
into
user
memory at 900H,
reconstructed for the memory size specified by
the
operator.
To
allow
for
the increased size of CC30BIOS, the System 300
MOVCPM au-Lomatically offsets
the
system
load
2K
from
the
standard CP/M load.
Note that the image it places into memory
is
the
System
300
CP/M as distrlbuted by CCS.
If you have
altered CC30BIOS,
you need to patch the altered BIOS onto
the
system image as described in Appendix A.
3.3.2
MOVCPM operation
The
System
commands:
N> !·10VCPM * *
N> MOVCPt'-1 n *
30n
l-10VCPM
supports
the
following
two
ICauses an image of the current memory con-
Iflguration
of
the
System 300 CP/M to be
Iconstructed in memory in preparation for a
ICC30GEN operation.
ICauses
an
image
of
the System 300 CP/M
Iconfigured
for
n
kilobytes
to
be con-
Istructed
in
memory
in preparation for a
ICC30GEN operation.
Upon completion,
MOVCPM displays
READY FOR "SYSGEN"
OR
"SP.VE 40
CPMxx.CO~1"
System 300 Utllites--CC30GEN
3.4
CC30GEN
CC30GEN
generates
the
system,
either
from
an
1mage
residing
in
user
memory or from a system diskette, onto the
system tracks of a user-specified diskette.
3.4.1
CC30GEN Description
The
SYSGEN
routine
supplied
with
Digital
Research's
distribution
version
of
CP/M
works
only
\/ith
II standard II
diskettes--that
is,
8"
diskettes
formatted
1n
128-byte,
single-density
sectors.
Since
CCS's
System
300
CP/M is
distributed
on
diskettes
formatted
in
10~4-byte,
double-density
sectors,
CCS
rewrote
the
SYSGEN program to
support non-standard diskettes.
CC30GEN allows the system
to
be generated on 5.25" diskettes and supports the same diskette
formats
as
CC30BIOS.
Digital
Research's
standard SYSGEN
program has also been included on the distribution diskette.
3.4.2
CC30GEN Requirements/Restrictions
CC30GEN
requires
24K
of
requirement,
the
System
300
memory size of 32K or greater.
user
CP/M
memory;
to
meet
this
must be configured for a
If the
size
and
format
of
the
destination
diskette
results
in
system
tracks having a smaller capacity than the
system tracks of the source diskette, data may
be
lost.
An
unaltered
version
of
the
System 300 CP/M requires a system
diskette formatted in
512-byte
or
l024-byte
double-density
sectors.
CC30GEN
will
work
only
in
systems
with
CCS's
disk
controller.
3.4.3
CC30GEN Operation
CC30GEN prompts the user for
1ts
operating
parameters.
If
it does not recelve an acceptable response, it will repeat
the quest1on.
The console dialog 18 as described below:
IEnter either a
drive unit letter
or
.
IA carriage
return lndicates to CC30GEN that
Ian irudge of CP/M
already
exists
in memory
Ifrom a
previous CC30GEN or MOVCPM operation
lund
can be written
to the drive
specified
Ibelow.
If instead of a
,
a source drive
lis specified,
CC30GEN examines the drive for
ireadiness
and then asks for confirmation of
ithe source drive:
SOURCE ON n,
THEN TYPE RETURN
IIf n is the
correct source
Idrive, enter .
CC30GEN
IWill
then
read the system
Itracks of the
source drive
linto memory.
Any response
lother than
aborts the
Iprogram.
DESTINATION DRIVE:
iEnter either the destination arlve unit
lletter or .
A causes control
Ito
be
returned
to CP/M,
leaving the
Isystem image in memory.
If you specify
ia drive,
CC30GEN examines the drive for
Ireadiness.
It
the~ asks for confirma-
ltion of the destination drive:
DESTINATION ON n,
THEN TYPE RETURN
IIf
n
is
the
correct
Idestination
drive,
hit
I~
CC30GEN will then
lbegin writing the system
limage out to disk, veri-
Ifying
what
is written.
IHitting
any
other
key
Ireturns control to CP/M.
SYSTEM COpy AND VERIFICATION ENDED NO ERRORS'
ICC30GEN displays this message
after it has written and
Iverified the system tracks on the destination diskette.
ICC30GEN
returns
to
the
destination
drive
request,
lallowing additional system diskettes to be generated.
EXAMPLE:
The following console dialog
causes
the
image
of
CP/M
already in memory to be written on tl1e diskette in Drive
B.
User lnputs are underlined.
System 300 Utilltes--CC30GEN
CCS SYSTEM GENERATION PROGRAM VERSION 1.1
COPYRIGHT 1980 CALIFOffilIA COMPUTER SYSTEMS
SOURCE DRIVE:
DESTINATION DRIVE:
B
DESTINATION ON DRIVE B,
THEN TYPE RETURN
SYSTEM COpy AND VERIFICATION ENDED NO ERRORS
DESTINATION DRIVE:
3.4.4
CC30GEN Error Messages
When CC30GEN detects a disk operation error, it
displays
an
error
message indicating the nature of the operation when
the error occured,
the physical location (drive, side,
track,
sector),
and
the
contents
of
the disk controller1s status
register.
Numerical values are in hex.
The contents
of
the
status
register
are
defined
in
the 1793 Data Sheet in the
Floppy Disk Controller Reference Manual.
HOME ERROR:
DRIVE n:
SIDE nj
TRACK nj
SECTOR nj
STATUS-n
After a restore command has been issued,
CC30GEN checks the
disk controllerls status.
It will output the
above
error
message
and
restart
with the source drive request if the
selected drive is not ready, if a
seek
or
CRC
error
is
detected
(source
drive only), or if the destination drive
is write-protected.
READ ERROR:
DRIVE nj
SIDE nj
TRACK ni
SECTOR nj
STATUS-n
After the disk controller has finished
reading
a
sector,
CC30GEN checks status.
It displays the above error message
and
restarts at the source drive request if it detects any
of the following errors: drive not ready,
record not found,
CRC error.
WRITE ERROR:
DRIVE ni
SIDE n:
TRACK ni
SECTOR nj
STATUS-n
After the disk controller has finished
writing
a
sector,
CC30GEN checks status.
It displays the above error message
and
restarts at the source drive request if it detects any
of
the
following
errors:
drive
not
ready,
drive
write-protected,
record not found, eRe error, data lost.
System 300 Utilities--CC30GEN
3-13
The following
error
messages
are
designed
to
report
specific error conditions.
They may occur in conjunction with
the operation error messages above.
INSUFFICIENT MEMORY SPACE--NEED 24K
CC30GEN
needs
24K
of
user
memory
to operate.
It will
display this message and return control to CP/M if CP/M
is
configured for less than 32K.
DRIVE NOT READY PLEASE CORRECT
If
the
selected
drive
is
not
ready--i.e, diskette not
inserted, door not closed--CC30GEN
displays
this
message
and restarts at the source drive request.
DISK IS WRITE PROTECTED PLEASE FIX
If
the
diskette
in
the
destination
drive
is
write-
protected,
CC30GEN displays this message
and
restarts
at
the
source
drive request.
To enable writing to the disk,
fold the write protect tab over the notch on an 8" diskette
or remove the write protect tab on a mini diskette.
***WARNING:POSSIBLE LOST DATA***
After CC30GEN has
completed
writing
the
system
to
the
destination
disk,
it
issues
this warning message if the
capacity of the system tracks on the
destination
disk
is
less
than
required
by the System 400 CP/M.
CC30GEN then
returns
to
the
source
drive
request
instead
of
the
destination
drive
request
as it normally does.
Type two
carriage returns if you wish to return to CP/M.
Note
that
if
you reduce the size of CC40BIOS, this message may still
appear,
even though the destination diskette has sufficient
capacity for the altered system.
RECORD NOT FOUND,
ABORT
If the disk controller
it
is
attempting
to
above error message and
request.
reports it cannot locate the
sector
read
or write,
CC30GEN outputs the
restarts
with
the
source
dri~e
DATA COMPARISON ERROR PLEASE RETRY OR
TYPE A CARRIAGE RETURN TWICE TO EXIT TO CPM
After
CC30GEN writes a sector to the destination diskette,
it reads back the data and compares it to the data read
in
from the source diskette.
If the data is not in agreement,
CC30GEN
displays
this
error
message
and returns to the
source drive request.
System 300 Utilities--CC30COPY
3.5
CC30COPY
CC30COPY makes exact copies of recorded diskettes for the
purpose
of
backup.
It also reinitializes recorded diskettes
fo.
CC30BIOS compatibility or error recovery.
3.5.1
CC30COPY Description
CC30COPY copies the contents of a diskette recorded by
a
disk
controller chip of the 179x family onto another diskette
in a format compatible with CC30BIOS.
It reads and copies one
track at a time, reading the track
on
the
source
diskette,
forrnating the corresponding track on the destination diskette,
and then writing the data to the formatted track.
It examines
the
first
three tracks (Tracks 00, 01,
and 02) on the source
diskette for data density and bytes
per
sector,
duplicating
their
formats
on the corresponding tracks of the destination
diskettes.' It then assumes that the rest of the
tracks
have
the same format as Track 02.
If
you
specify
the same diskette as the source and the
destination,
CC30COPY reformats the diskette,
preserving
the
data.
This
facility
can
be
useful
for recovering data on
diskettes with soft errors.
However, to ensure
against
data
loss, make a backup copy of the diskette before you attempt to
reformat it with CC30COPY.
**********************************************************
*
*
*
NOTE:
CCS assumes no liability for any data loss
*
*
resulting from the use of CC30COPY.
*
*
*
**********************************************************
CC30COPY
allows the option of verifying that the data on
the destination
diskette
matches
the
data
on
the
source
diskette.
3.5.2
CC30COPY Requirements/Restrictions
The
source
and
destination
diskettes must be the same
size and both single- or double-sided.
System 300 Utilities--CC30COPY
3-15
CC30COPY requires 24K of user memory to copy a
diskettei
to
acheive this, the System 300 CP/M must be configured for a
memory size of 32K or
greater.
If
you
select
the
verify
option,
CC30COPY requires 32K of user memory to operate, or a
version of System 300 CP/M configured for 40K or greater.
CC30COPY cannot read diskettes recorded by
a
1771
disk
controller
chip
and requires a CCS Floppy Disk Controller to
operate.
3.5.3
Operation
CC30COPY uses console interaction to obtain some
of
its
operating
parameters.
It
accepts only a limited number of
responses to its questions
and
prompts
for
the
acceptable
responses.
The console dialog is as follows:
SOURCE DRIVE (OR CONTROL C TO ABORT)
DESTINATION DRIVE
(OR CONTROL C TO ABORT)
ICC30COPY
accepts
a
drive
unit letter in response to
leither of these questions.
A
A C
returns
control to
ICP/M.
CC30COPY examines the specified drives for com-
IpatibilitYi if they are compatible it then asks:
DO YOU WISH TO VERIFY DATA?
IIf you do, enter Yi
any other
lentry
is
taken as negative.
IIf
both
drives
are
minis,
ICC30COPY asks:
IS IT DOUBLE-SIDED?
IEnter Y if
both
minis are double-
Isided.
Any other entry is negative.
MINI DRIVES WILL DEFAULT TO 35 TRACKS.
IF THIS IS O.K.,
TYPE A CARRIAGE RETURN.
OTHERWISE,
ENTER THE NUMBER OF TRACKS:
IEnter
if your
mini drives
support
35
tracks.
IOtherwise,
enter
the number
of
tracks
in
decimal,
Ifollowed by .
If you make a mistake entering the
Inumber,
hit any character other than a number
or
land you will be given a chance to try again.
WARNING -
CONTENTS OF DESTINATION DISKETTE WILL BE LOST.
DO YOU WISH TO CONTINUE?
IThis
warning
appears for both
Iboth mini
and
8" drives.
If
Iyou
wish
to contin'ue wit:.h the
Icopy, enter Y.
Any other entry
lis taken as negative.
COPYING TRACK nn
VERIFYING TRACK nn
System 300 Utilities--CC30COPY
lAs it copies,
CC30COPY
displays
the
Itrack
it is on
in
decimal.
During
Iverification
of
the track,
the word
IVERIFYING overwrites the word COPYING.
CC30COPY
returns
to
the
sourCe
driVe request after it has
completed copying the disk, allowing additional copies of
the
disk to be made.
A
A C returns you to CP/M.
EXAMPLE:
The
follo\r/ing
console
dialog
copies the contents of the 8 II
diskette in Drive B onto
the
8
11
diskette
in
Drive
C
and
verifies
that
the
data
is
correct.
User
entries
are
underlined.
N>CC30COPY
CCS DISK COpy PROGRAM VERS 1.1
SOURCE DRIVE
(OR CONTROL C TO ABORT)
B
DESTINATION DRIVE (OR CONTROL C TO ABORT)
C
DO YOU WISH TO VERIFIY DATA? Y
WARNING -
CONTENTS OF DESTINATION DISKETTE WILL BE LOST
DO YOU WISH TO CONTINUE? Y.
VERIFYING TRACK 77
SOURCE DRIVE (OR CONTROL C TO ABORT)
A C
3.5.4
CC30COPY Error Messages
INVALID DRIVE DRIVE
(OR CONTROL C TO ABORT)
If you enter anything other than A,
B,
C,
D or
A C
to
source or destination drive request,
CC30COPY displays
message
and
waits until you enter a valid drive unit
A C •
the
this
or a
INVALID DRIVE COMBINATION
If you choose a destination drive of a different size
than
the
source drive,
CC30COPY displays this error message and
prompts again for the source drive.
System 300 Utilities--CC30COPY
3-17
SOURCE AND DESTINATION DRIVES ARE NOT
COMPATIBLE,
PLEASE RETRY
This message is displayed if your 8" source and destination
diskettes are not both single-sided or
both
double-sided.
CC30COPY restarts at the source drive request.
BAD NUMBER -
TRY AGAIN
CC30COPY
displays
this
message
if
you
respond
to the
number-of-tracks query with
any
character
other
than
a
number
or
a
carriage
return.
It then waits for you to
enter either a carriage return (indicating
35
tracks
per
side) or a number followed by a carriage return.
DRIVE NOT READY
If
the source or destination drive is not ready (e.g., the
drive door is open), this message is displayed and, if your
terminal supports this
feature,
the
terminal
bell
will
ring.
To allow CC30COPY to continue, ready the drive and
then hit any key on the keyboard except
A C.
A C returns you
to CP/M.
DRIVE IS WRITE PROTECTED -
TYPE CR TO CONTINUE
This message is
displayed
if
the
destination
drive
is
write-protected.
If
you
wish
CC30COPY
to
continue,
unprotect the diskette, return it to the drive, and hit the
carriage return key.
Any other response returns you to the
first question in the dialog.
CANNOT READ SOURCE
If
for
some
reason
CC30COPY
cannot
read
the
source
diskette, it displays this error message and returns to the
first
question
in
the
dialog.
Possible causes for this
error
message
include
an
unformatted
diskette
or
one
formatted by a 1771 disk controller chip.
BAD SOURCE SECTOR nn -
IGNORE?
If
CC30COPY
cannot
read
a sector on the source diskette
after ten tries, it displays this error message and
query,
in
which nn is the sector number.
If you wish CC30COPY to
continue copying
the
diskette-
enter
Y.
CC30COPY
will-
transfer
whatever
it
got from the sector and continue to
the next sector.
Data integrity in
this
case
cannot
be
assured.
If
the
error
was a soft error, the data is
probably good.
If it was a hard error, the resulting
data
is unpredictable.
If you enter any character other than a
Y,
CC30COPY
ceases
its copy attempts and restarts at the
beginning of the console dialog.
Since
CC30COPY
attempts
to
read
a
sector
ten times before it displays the error
message, it is unlikely that in subsequent attempts' it will
be any more successful
in
reading
the
sector.
If
you
discover
that
the
same
sector
is
in
error on several
System 300 Utilities--CC30COPY
discover
that
the
same
sector
is
in
error on several
contiguous tracks, the diskette probably has been scratched
or otherwise damaged.
DATA VERIFICATION ERROR ON THIS TRACK,
DO
YOU WISt! TO CQNTINUE?
If the verification check finds that the data read from the
destination disk does not match
the
data
read
from
the
source
disk,
CC30COPY
displays
this
error
message and
query.
Type Y to
continue.
Any
other
response
causes
CC30COPY
to restart with the first question of the console
dialog.
TIMEOUT ON DISK OPERATION,
ABORT
CC30COPY sets the watchdog timer for each
disk
operation.
If
the
timer times out before the disk controller signals
end-of-job,
CC30COPY
displays
this
message
and
returns
control to CP/M.
This error condition usually results from
a hardware malfunction.
CUSTOMIZING THE SYSTEM 300 CP/M
PURPOSE:
Appendix A describes the procedure for modifying CC30BIOS
to
support
additional
or
different
peripheral
devices,
different drive step or serial baud rates,
and
for
patching
the modified CC30BIOS onto CP/M.
Other possible modifications
of
CC30BIOS
are
identified
in
Appendices B through D; the
steps involved in making the modifications are too lengthy
to
be
included
this
appendix.
However, the method of patching
the modified CC30BIOS onto
CP/M
is
the
same
as
described
below.
METHOD:
1.
Load CC30BIOS.ASM using ED.
2.
Add
or
alter
peripheral
drivers.
Section 2.5.1 on the
IOBYTE contains the background information you need to
do
so.
vfuen
writing your driver routines, please keep the
following points in mind:
a. Modification of existing driver
routines
generally
involves
changing
the
contents
of the peripheral
driver only,
leaving the
IOBYTE
handling
routines
and
the
driver
routine
name
unmodified.
For
example, to bring up a default printer on
any
port
other
than
SlOB, you need to rewrite routines LSER
and LSERT,
leaving their names the same.
The
only
exception
to this general rule occurs when changing
th:I:>:r~J?her~~ d!:"iv:n t:r ... t:.~; . CR'l:'
ListC1ssignm~nt.
cur't'erit.lY
Ene
"List
IOBYTE handlers,
LO and LSTAT,
map the CRT physical assignment to
the
TTYOUT
and
TTOST
routines;
the TTYOUT and TTOST labels in the
Customizing the System 300 CP/M
LO and LSTAT tables need to
be
replaced
with
the
names
of the user-written printer output and status
routines (see Table 2-3).
b. Adding a peripheral involves selecting
a
currently
unsupported
physical
device
and
replacing
the
associated IOER equates with driver
ro~tines of
the
same name.
For example, an additional console could
be
selected
by the CRT physical device assignment.
To
support
such
a
console,
the
following
10ER
equates
should
be
replaced
with
driver routines
CRTIN,
CRTOUT,
and CRTST:
CRTIN:
EQU
CRTOUT:
EQU
CRTST:
EQU
. 10ER
10ER
IOER
If you plan to vector a list output routine
to
the
console device, you must also write an output status
routine (named,
for example,
CRTOST).
c. Driver
routines
must
conform
to the CP/M calling
conventions.
See Section 6 of your CP/M
Alteration
Guide,
liThe BIOS Entry Points," for a description of
the responsibilities of each entry point subroutine.
Your
drivers'
must
fulfill these responsibilities.
Generally
speaking,
output
drivers
find
the
character in register C, while input drivers pass it
to registex: A..
d. Console input, List output,
Punch output, and Reader
input
routines
require
corresponding
status
routine~.
For
example,
if
you
are
adding
a
peripheral
for
the User Line Printer I assignment,
the 10ER equates for both LUSEI (output)
and
LUSEIS
(status) must be eliminated and replaced with output
and
status
routines
of
the
same
name.
In some
cases, there are no 10BYTE handlers for
the
status
routines
(e.g.,
the
only
IOBYTE
handler for the
Reader logical device is the reader
input
routine,
RI).
In such cases, the input or output driver must
call the status routine.
e. Initialization
routines
must
be
added
to
the
one-time code (at the end of the source listing) for
those
newly-supported
I/O
ports
which
require
initialization.
j.
Review
the
following
equates
and
conditional assembly
directives at the beginning of the source code and
modify
them as needed:
Customizing the System 300 CP/M
A-3
MSIZE
EQU 64--1£ you plan to reconfigure the System
300 CP/M for a memory size other
than
64K,
modify
this
line
to
reflect
the
desired memory size in
Kilobytes.
CBAUD EQU 13--The console baud rate is set for
9600
baud.
If
a
baud
rate
other
than 9600 baud is
desired, this equate should be modified according to
the values given in the table above it.
PBAUD EQU 13--This equate sets the serial
printer's
baud rate to 9600 baud.
It too can be set to any of
the values indicated in the baud rate table.
MINI
EQU TRUE:
~~I
EQU TRUE --
If the system will
be using only one size drive, you can save space
in
the assembled code by eliminating code pertaining to
the
unused
drive
size.
To do so,
change the TRUE
statement to FALSE for the unused drive type.
STEPS EQU 3:
STEP8 EQU I--The optimal step rate
for
a
drive's
read/write
head
differs
from drive to
drive.
Shugart drives require an 8 ms,
3 ms,
and 25
ms step
rate
for
the
SA800,
SA850,
and
SA450,
respectively;
MPI
51/52s require a 5 ms step rate:
Memorex 550 requires a 6 ms
step
rate.
The
STEP
equates
set the step rates to 6 ms for single-sided
8
11 drives and 30 ms for 5.25
11 drives (see Table
A-I
below).
These step rates will work with almost all
drives; however,
some SA800 drives might
require
a
slower
step
rate, while drives which can support a
faster step rate may operate noisily.
You may
wish
to implement one of the alternative step rates shown
in Table A-I below.
STEPS
EQU
N
STEP8
EQU
N
N
STEP RATE
N
STEP RATE
0
6 ms
"
3 ms
1
12 ms
1
6 ms
2
20 ms
2
10 ms
3
30 ms
3
15 ms
Table A-I. Step Rate Values
Note
the
step
rate
for double-sided 8
11 drives is
fixed at 3 ms and cannot
be
easily
altered.
All
double-sided
8"
drives should' operate well at that
step rate.
Customizing the System 300 CP/M
4.
Finally, make any necessary changes
to
the
source
code
regarding double-sided drives, sector skew, extended-track
mini drives, etc.
See the
appropr~ate appendices.
5.
Assemble
CC30BIOS.ASM,
using
Digital
Research's
MACro
~ss~Irll::>l~.~.
.YQURA,SSEMEL.EPCCJ0BJQSSUQULDNOTEXCEED3.SK
BYTES IN TOTAL LENGTH.
6.
Place a blank diskette into drive B and initialize it
for
double-density, l024-byte sectors using CC30INIT.
7.
Using
MOVCPM,
read the system into memory.
To read in a
64K version of the system (present configuration), use the
command
A>MOVCPM * *
To
read~in
a
version
of
the
system
reconfigured
for
another memory size,
use the command
A>MOVCPM n *
where n equals the memory size desired in kilobytes.
8.
Save the system image on the new diskette:
A>SAVE 40 B:CPMn.COM
(n is the system memory size
in Kbytes)
The
MOVCPM program displays the actual command you should
use.
9.
Now, in preparation for patching your new
BIOS
onto
the
system, load in CPMn.COM using DDT:
A>DDT B:CPMn.COM
DDT VERS 2.2
NEXT PC
nnnn 0100
An image of CP/M now resides in memory, beginning at 900h.
A memory map is as follows:
900H
980H
l180H
lF80H
CC30BOOT
CCP
BDOS
BIOS (the original CC30BIOS)
10.
Read
CC30BIOS.HEX
into
place at lF80H.
Since DDT loads
hex files at their origin, it will be necessary to specify
an offset to get your version of CC30BIOS to
load
in
at
IF80H.
The
offset
will vary according the size memory
Customizing the System 300 CP/M
A-5
CC30BIOS.HEX is configured
for,
since
the
origin
will
vary.
Table
A-2 gives offsets for common memory sizes.
If your memory size
is
not
listed.
you
will
have
to
calculate it as described in steps a and b below.
MEMORY
SIZE
20K
24K
32K
40K
48K
56K
62K
64K
BIOS
ORIGIN
4200H
5200H
7200H
9200H
B200H
D200H
EA00H
F200H
OFFSET
DD80H
CD80H
AD80H
8D80H
6D80H
4D80H
3580H
2D80H
Table A-2.
CC30BIOS Offsets
a.
To
calculate the offset, first determine the origin of
your BIOS.
The formula is 4200h + b, where
b
is
the
hex value of the difference in Kbytes between your CP/M
system size and 20K.
b.
NOW
use
the
hex
command
(undocumented
in
the DDT
manual) to subtract the BIOS origin from lF80H:
-HlF80 nnnn (nnnn = BIOS origin)
ssss dddd (ssss and dddd are the sum and difference)
The difference is the offset.
11.
Read CC30BIOS into place, specifying the offset
and
exit
DDT:
-ICC30BIOS.HEX
-Rdddd
(dddd=offset)
nnnn pppp
-G0
Note
the
value
of
nnnn; it is the top load address for
your modified CC30BIOS and will
be
needed
in
the
next
step.
12. Save
the
system
image
on
the
new diskette for future
reference.
To calculate the
number
of
pages
to
save,
subtract
100h from the top load address of CC30BIOS (nnnn
aoove)a:nd then round up to even
10~h
'bytes.
Translate
equal 1 page).
Customizing the System 300 cp/n
256-byte
pages
in decimal
(100H bytes
A>SAVE XX B:CPMn.COM
13. \vrite the patched system onto the new. sy~tem diskette
u~JIl9
CC30GEN:
A>CC30GEN
CCS SYSTEM GENERATION PROGRAM 1.1
COPYRIGHT 1980 CALIFORNIA COMPUTER SYSTEMS
SOURCE DRIVE:
DESTINATION DRIVE:
B
DESTINATION DRIVE ON B,
THEN TYPE RETURN
SYSTEM COPY AND VERIFICATION ENDED NO ERRORS
14. You now have a customized system on the diskette.
Insert
the
diskette
into Drive A, reset the system,
and you are
now up and running on your customized version of CP/M.
DOUBLE-SIDED MINI DRIVES
PURPOSE:
The CCS Floppy Disk Controller supports double-sided mini
and maxi drives.
However, the current System 300
version
of
CP/M 2.2 does not support double-sided mini drives, since they
do not provide a status signal to identify when a double-sided
diskette
is
mounted.
Thus any general software developed by
CCS would have to implement
either
single-
or
double-sided
mini
diskette
operations,
but not both.
Since single-sided
drives are more cornmon,
CCS decided to implement
single-sided
operation.
There
are two basic methods 6f implementing double-sided
drive capabilities:
A. The reverse side of each diskette
can
be
treated
as
an
extension
of
the obverse side.
In its easiest form, this
method treats each track on side 1 as an extension
of
the
corresponding
track on side 0; these associated tracks are
often called cylinders.
For example,
a track on a l28-byte
per sector,
single-density
8"
diskette
would
logically
consist of sectors 1-26 on side 0 and sectors 27-52 on side
1;
B.
Each
side
of
the
diskette
can be treated as a separate
logical unit of assignment; that is, each physical drive is
treated as two logical drives.
CC30BIOS uses method A
to
support
8"
double-sided
drives.
Most
of
the
code
for implementing double-sided mini drives
under method A already exists; this
appendix
identifies
the
f~w cha.ngea that need tone made the code.
Double-Sided MLni Drives
To
implement
double-sided
mini drives,
only the 5.25"
disk parameter tables
(DP5xx) need to be changed to accomodate
the_in.creasJ~d..capacity of_double..sided drives. _.'I'he pew vcl,ll1es
for these tables can be defined
by
using
the
CP/M
DISKDEF
macro
to
suit
your
individual
desires
or you can use the
following suggested values:
TABLES DP5xx
Parameters
S0
Sl
S3
D0
Dl
D2
Sectors Per Track
36
40
32
58
72
80
Block Shift Factor
3
3
3
3
4
4
Block Mask
7
7
7
7
15
15
Extent Mask
(0
(0
0
0
1
1
Blocks Per Disk
143
159
127
231
143
159
No. Dir Entries
63
63
63
63
63
63
ALLOC 0
192
192
192
192
128
128
ALLOC 1
0
(0
(0
(0
(0
10
Dir Check Vector Size
16
16
16
16
16
16
System Track Offset
3
3
3
3
3
3
Note:
For disks formatted in 512-byte, single-density
sectors and in 11024-byte, double-density sectors,
the
software uses Tables DP5S1 and DP5S2, respectively.
Table B-1.
Double-sided Mini Parameters
We arrived at these values by
using
the
DISKDEF
Macro
and
judgement.
For
instance,
we
chose the block size (CP/M's
logical allocation data size increment)
so that every block on
the diskette could be defined by an 8-bit
value.
Similarly,
we
selected a number for directory entries sufficient for the
diskette capacity.
-
EXTENDED-TRACK MINI DRIVES
PURPOSE:
The
distribution
version of CC30BIOS supports 811 drives
with 77 tracks and 5.25 11 diskettes with 35
tracks.
However,
some
mini
drives have more than 35 tracks available: theMPI
B-51/52,
Tandon TM 100, and QUME Data Track 5 have 40
tracks,
while
the
MPI
B-91/92
have
80
tracks.
This
appendix
identifies the CC30BIOS changes necessary to take advantage of
the these drives'
added capacity.
METHOD:
In
the
case
of
single-sided
drives,
only
the
disk
parameter
tables
in
CC30BIOS
need
to
be
changed.
The
necessary changes to the tables are shown below.
In the
case
of the double-sided drives, the changes identified in Appendix
B for installing double-sided drives also need to be made.
In
addition,
some
of the drives can support a faster step rate;
see Appendix A.
Drives:
SINGLE-SIDED
DOUBLE-SIDED
Tracks:
40
80
40
80
DP5S0:
DW
18
18
36
36
DB
3
3
3
4
DB
7
7
7
15
DB
0
0
"
1
DW
82
172
165
172
DW
63
63
63
63
DB
192
192
192
128
DB
0
0
0
"
DW
16
16
16
16
DW
3
3
3
3
Extended-Track Mini Drives
DP5S1:
DW
20
20
40
40
DB
3
3
3
4
DB
7
7
7
15
DB
0
(2}
0
1
DW
91
192
184
192
DW
63
63
63
63
DB
192
192
192
128
DB
0
0
0
0
DW
16
16
16
16
DW
3
3
3
3
DP5S3:
DW
16
16
32
32
DB
3
3
3
4
DB
7
7
7
15
DB
0
0
0
1
DW
73
153
147
153
DW
63
63
63
63
DB
192
192
192
128
DB
0
0
0
0
DW
16
16
16
16
DW
3
3
3
3
DP5D":
DW
29
29
58
58
DB
3
4
4
5
DB
7
15
15
31
DB
"
1
1
3
DW
133
138
133
138
DW
63
63
63
127
DB
192
128
128
128
DB
0
0
"
0
DW
16
16
16
32
DW
3
3
3
3
DP5Dl:
DW
36
36
72
72
DB
3
4
4
5
DB
7
15
15
31
DB
0
1
1
3
DW
165
172
165
172
DW
63
63
63
127
DB
192
128
128
128
DB
0
0
{O
0
DW
16
16
16
32
DW
3
3
3
3
DP5D2:
DW
40
40
80
80
DB
3
4
4
5
DB
7
15
15
31
DB
0
1
1
3
DW
184
192
184
192
DW
63
63
63
127
DB
192
128
128
128
DB
0
0
0
0
DW
16
16
16
32
DW
3
3
3
3
Note:
The disk parameter tables DP5Sl and DP5D2 q.re also used
for
512-byte,
single-density
and
1024-byte
double-density
diskettes, respectively.
uses sector skew to increase disk access speed.
Between each sector read
or
write,
most
programs
need
to
perform
a
certain
amount
of
processing.
Since the next
physical sector will have already rotated past
the
head,
it
would
be
inefficient
for CC30BIOS to wait until that sector
carne
around
again
for
the
nex.t, sector
read
or
write.
Instead,
CC30BIOS
chooses the physical location for the next
logical sector based on the sector skew
factor.
The
sector
skew
factor
is
selected so that most programs have adequate
processing time before the physical sector
selected
for
the
next
read
or
write
operation is detected.
The skew factor
CC30BIOS uses is dependent on diskette size and
format.
For
example,
an 8", single-density diskette with l28-byte sectors
is given a skew factor of six, so that the next logical sector
is the
sixth
subsequent
physical
sector,
while
a
5.25",
single-density
diskette with 256-byte sectors is given a skew
factor of 3.
Since programs differ in the amount of
processing
time
they
require,
changing
the
sector skew factors may incre.aae disk
access speed.
For
example,
a
program
requiring
extensive
process1ng
between
sector
reads
or writes may not be given
sufficient processing time by the sector skew factor and
thus
miss
the next logical sector.
It would then have to wait one
full revolution of the disk.
If the
sector
skew
factor
is
gradually
increased,
a sector skew factor will be arrived at
where the program is given enough processing time to
pick
up
the
next sector on the same revolution of the disk, resulting
in a sharp decrease in disk access time.
This
would
be
the
optIrnal
sector
sRew
fCict.dr.
In
t:ti(:~
current
version of
CC30BIOS, the sector skew tables are
generated
by
using
an
algorithm
which
may
not
be
immediately
obvious to a user
wishing to modify the tables.
This appendix describes how
to
modify the tables.
METHOD
To
change the sector skew values,
you need to change two
values in the skew table for a diskette of a
particular
size
and format.
The current sector skew tables are as follows:
T848
DB
48,48,1
T826
DB
26,13,6
T815
DB
15,15,4
T88
DB
8,8,3
T84
DB
4,2,2
T529
DB
29,29,7
T518
DB
18,9,4
T510
DB
10,10,3
T55
DB
5,5,2
T52
DB
2,2,1
Table D-l.
Sector Skew Tables
The
first
value
in
each sector skew table is the number of
sectors per track (one side only) and remains
constant.
The
third
value
is the sector skew factor and can be modified to
any number between 1 and the first value.
The
second
number
is
the
result
of
the
first
value divided by the greatest
common denominator
(GCD) of the first and
third
values.
It
must
be changed if the new skew factor results in a different
GCD.
For example, if you wanted to change the skew factor in
table T510 to 5, the second value must
change
to,
2
(GCD=5i
10/5=2).
Of
course,
CC30BIOS
must
be
reassembled
and
installed (see Application Note 1 for procedure) .
NOTE
THAT
THE
SKEW
FACTOR
IN
TABLE
T826 IS AN INDUSTRY STANDARD AND
SHOULD NOT BE CHANGED.
"