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
/
SIMTEL
/
CPMUG
/
CPMUG049.ARK
/
4FDCBIOS.DOC
< prev
next >
Wrap
Text File
|
1984-04-29
|
4KB
|
82 lines
CBIOS for Cromemco 4FDC or CCS 2422 disk controller
4FDCBIOS.Z80 and 4FDCBOOT.Z80 are the bootstrap and Cbios
for running CP/M 2.x with a Cromemco 4FDC controller board, a
Z80* cpu, and minimum 20K of RAM. CP/M 1.4 can also be
supported if some of the 2.x-only code is removed. This code is
also applicable to, and tested upon, the California Computer
Systems disk controller board model 2422, if a serial port at 0
compatible with CDOS is used (a 3P + S, or a Cromemco TUART, or
the serial port on a Cromemco Single Card Computer.)
This source is capable of supporting three types of disks:
5 inch (such as Wangco), 8 inch (such as Shugart), and
single-arm voice-coil 8 inch (such as Persci). Between one and
four drives are supportable, but no intermixing. There is no
current support for double-sided drives, but it should be
easily addable.
There is no support for the double density mode in the Cro-
memco 16FDC, or the CCS 2422. This bios is limited to 128 byte
sectors.
The 8 inch format is compatable with all CP/M and CDOS
versions currently known. The 5 inch format (skew of 5) is
compatable with all 5 inch CDOS formats currently used.
It is assumed that the main console, at port zero, is
already initialized by RDOS or some other program. If not, you
can insert the necessary code into 4FDCBOOT.Z80.
As additional features, the routine contains an optional
reader-punch and printer support routine, via TUART and PRI
boards, and a standard missing memory check. The external
interrupt of the TMS 5501 is enabled on the 4FDC, which causes
a 0FF interrupt, which is the same as a missing memory board.
I like to use this to break out of loops without losing CP/M.
If this is not desired, it is easily removed from the code.
Also, in a commented section is a small modification so the
DEL key (07FH) is changed to a Control-U by the CBIOS, for
those who have Backspace on the terminal. I do not like to use
two hands just to be able to erase a mistake.
The source is for Cromemco Z80 assembler, and there are
five constants in the front to be changed to select various
options.
First, select the type of drive: If 5 inch, LARGESW and
PERSCISW should be 0. If 8 inch Shugart, LARGESW should be 1,
PERSCISW 0. If Persci, PERSCISW should be 1. LARGESW should
also be altered in 4FDCBOOT.Z80.
Next, NUMDRIVES should be 1 to 4 for 5" and 8" drives, and
2 or 4 for Persci double-disk drives.
Then, to have support for printer and TUART, BIGIOSW should
be 1, otherwise 0. You might also wish to change BAUDRATE to
the desired value for the reader-punch (110 baud is supplied).
Note: if the CCS 2422 is used, it may be necessary to supply an
initialization and bootstrap routine for the console port, if
that is on a TUART addressed at zero. The current code does not
initialize the port at zero, assuming that has been done before
the disk was booted. The code for the TUART referred to here is
for an additional TUART port, not the console port, but it is
easy to add the necessary code to initialize the console port
also.
Finally, set BEGINADR to the start of the CBIOS. It is
supplied as 0E400, which is for a 64K system. This should also
be altered in 4FDCBOOT.Z80.
The switches on the 4FDC are set exactly as described in
the board manual. For a system over 48K, the ROM must be
disabled upon bootstrapping. For a smaller system, the RDOS
can stay in, or not, as you desire. For a CCS 2422 controller,
the same statement applies, except the 2422 ROM need not be dis-
abled unless the system memory exceeds 60K.
4FDCBOOT.HEX and 4FDCBIOS.HEX are supplied, assembled from
the source files. They are set for a 64K version of CP/M. You
can use them in another system if you can put about 8K at the
upper end of memory (E000) and maybe 16K at the low end (0000)
to be able to re-assemble the files.