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
/
CPM
/
KERMIT
/
CP411SRC.ARK
/
cp411bld.doc
< prev
next >
Wrap
INI File
|
1991-06-03
|
32KB
|
660 lines
[CP411BLD.DOC Mike Freeman 31-May-1991]
The following is excerpted with modifications from CPKERM.DOC.
1.7. Installation of Kermit-80
Kermit-80 was written originally for the Intertec SuperBrain in lowest-common-
denominator 8080 code with the standard assembler, ASM (single source module,
no macros, no advanced instructions), so that it could be assembled on any
CP/M-80 system (the 8080 assembler is distributed as a standard part of
CP/M-80, whereas the fancier Z80 or macro assemblers are normally commercial
products). It has since been modified to run on many other systems as well.
Kermit-80 should be able to run on any 8080-, 8085- or Z80-based microcomputer
under CP/M with appropriate minor changes to reflect the port I/O and screen
control for the system (see below).
The proliferation of new systems supported by Kermit-80 made the program grow
so large and complicated that it had to be broken up into system-independent
and system-dependent modules, as of version 4 (this was done by Charles Car-
valho of ACC). Each module is composed of multiple files. This has reduced
the time and disk space necessary for assembly; Kermit-80 may once again be as-
sembled on a CP/M system with roughly 250Kbytes of space. The majority of the
code does not need to be reassembled to support a new system. Unfortunately,
it can no longer be assembled with ASM, since ASM does not support multiple in-
put files. To allow it to be assembled on any CP/M system, the public-domain
assembler LASM is included in the distribution kit. Kermit-80 may also be as-
sembled with Microsoft's M80 (not supplied). In theory, any 8080 assembler
supporting the INCLUDE directive ought to work, as well.
All versions of Kermit-80 are assembled from the same set of sources, with sys-
tem dependencies taken care of by assembly-time conditionals within the system-
dependent module (eventually, the system-dependent module will itself be broken
up into multiple files, one for each system). The most important system depen-
dencies are terminal emulation (when CONNECTed to the remote host) and screen
handling, which are dependent on the individual micro's escape codes (these
features are table driven and easily modified for other CP/M systems), and the
lowest level I/O routines for the serial communications port. The port
routines are best done only with BDOS calls, but some systems do not allow
this, primarily because the BDOS routines strip the parity bit during port I/O,
and the parity bit is used for data when transmitting binary files.
Kermit-80's I/O routines must check the port status and go elsewhere if no in-
put is available; this allows for virtual terminal connection, keyboard inter-
ruption of stuck transmissions, etc. On systems that fully implement I/O
redirection via the optional CP/M IOBYTE facility, this may be done by switch-
ing the IOBYTE definition. On others, however, IN/OUT instructions explicitly
referencing the port device registers must be used.
CP/M-80 KERMIT versions 3.8 and later include a "fuzzy timer" that allows a
timeout to occur after an interval ranging from 5 to 20 seconds (depending upon
the speed of the processor and the operating system routines) during which ex-
pected input does not appear at the port. In this case, retransmission occurs
automatically. In any case, you may type a carriage return during transmission
to simulate a timeout when the transfer appears to be stuck.
1.7.1. Organization of Kermit-80
Kermit-80 consists of two modules, each of which is generated from multiple
source files. The first module contains the system-independent code; the
second module is configured for a particular system and merged with the system-
independent module to produce a customized Kermit-80.
The distribution kit contains:
- the system-independent module, CPSKER.HEX;
- the system-dependent modules, CPV*.HEX (see table 1-2 and 1-3);
- the source files, CPS*.ASM and CPX*.ASM,
- the public-domain CP/M assembler, LASM.*,
- the public-domain CP/M load/patch utility, MLOAD.*
-------------------------------------------------------------------------------
Symbol Filename System
ACCESS CPVACC Access Matrix
ADVANT CPVADV Northstar Advantage
AP6551 CPVAPL Apple II, Z80 Softcard, 6551 ACIA in serial interface
AP6850 CPVA65 Apple II, Z80 Softcard, 6850 ACIA in Serial Iiterface
APMMDM CPVAPM Apple II, Z80 Softcard, Micromodem II in slot 2
APCPS CPVCPS Apple II, Z80 Softcard, with CPS multifunction card
BASICNS CPVBNS Northstar Horizon (terminal required)
BBC CPVBBC Acorn "BBC" computer with Acorn Z80 second processor
BBII CPVBB2 BigBoard II (terminal required)
BRAINM CPVBRM Intertec Superbrain using the main port
BRAINA CPVBRA Intertec Superbrain using the Aux port
CIFER2 CPVCIF Cifer 1886 using the VL: Serial port and CP/M V2.2
CIFER3 CPVCI3 Cifer 1886 using the VL: Serial port and CP/M V3.0
CIFER2 CPVCA2 Cifer 1886 using the AUX: Serial port and CP/M V2.2
CIFER3 CPVCA3 Cifer 1886 using the AUX: Serial port and CP/M V3.0
CMEMCO CPVCRO Cromemco with TU-ART card. Terminal required)
COMART CPVCOM Comart Communicator (terminal required)
COMPRO CPVPRO Compupro with Interfacer 4 (or 3). Terminal required.
CPC CPVCPC Amstrad CPC 664 and 6128 and CP/M 3
CPM3 CPVCP3 "Generic": CP/M 3.0 (CP/M Plus) systems (terminal req'd)
CPT85XX CPVCPT CPT-85xx wordprocessor with CP/M
DELPHI CPVDEL Digicomp Delphi 100 (terminal required)
DISC CPVDIS Action Computer Enterprises "Discovery" (terminal req'd)
DMII CPVDM2 DECmate II with CP/M option
GENER CPVGEN "Generic": CPM 2.2 systems with IOBYTE (terminal req'd)
GENIE CPVGNI Video Genie
H8QUAD CPVH8Q Heath-8 with Quad 8 i/o board
HEATH CPVH89 Heath/Zenith H89
HORIZON CPVHOR Northstar Horizon (terminal required)
KPII CPVKPR Kaypro-II (and 4; probably supports all Kaypro systems)
LOBO CPVLBO Lobo Max-80
"symbol" is the symbol used to select the target system, in CPVTYP.ASM;
"filename" is the name under which the module is supplied in the distribution.
Table 1-2: Systems supported by Kermit-80 (Part 1)
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Symbol Filename System
M2215 CPVMRL British Telecom Merlin/Rair Black Box (terminal required)
MDI CPVMDI Morrow Decision I (terminal required)
MIKKO CPVMIK MikroMikko
MMATE CPVMM PMC 101 Micromate (terminal required)
MMDI CPVUD Morrow Micro Decision I (terminal required)
NCRDMV CPVDMV NCR Decision Mate V. (Terminal required?)
NORTHS CPVNS Northstar Horizon with HSIO-4 card (terminal req'd)
OSBRN1 CPVOSB Osborne 1
OSI CPVOSI Ohio Scientific
PCI2651 CPVPCI Ithaca Intersystems with VI0 card (terminal required)
PCW CPVPCW Amstrad PCW 8256/8512 with serial interface
PX8 CPVPX8 Epson PX-8
RM380ZM CPVRMM Research Machines 380Z with MDS (5.25" discs)
RM380ZF CPVRMF Research Machines 380Z with FDS (8" discs)
ROBIN CPVROB DEC VT180
S1008 CPVUSM US Microsales S-100-8 (terminal required)
SANYO CPVSAN Sanyo MBC-1100
SB6 CPVSB6 Micromint SB-180 with 6Mhz CPU (terminal required)
SB9 CPVSB9 Micromint SB-180 with 9Mhz CPU (terminal required)
SCNTPR CPVSCN Screentyper
TELCON CPVTEL TELCON Zobra portable
TELETEK CPVTET Teletek Systemaster
TORCH CPVTRC Torch computers BBC-B with Z80 second processors
TRS80LB CPVTLB TRS-80 model II with Lifeboat 2.25C CP/M Display
TRS80PT CPVTPT TRS-80 model II with Pickles + Trout CP/M Display
TRSM4 CPVTM4 TRS-80 model IV
VECTOR CPVVEC Vector Graphics
XER820 CPVXER Xerox 820
Z100 CPVZ00 Z-100 under CP/M-85
Z80MU CPVZ80 Z80MU development system on a PC
"symbol" is the symbol used to select the target system, in CPXTYP.ASM;
"filename" is the name under which the module is supplied in the distribution.
Table 1-3: Systems supported by Kermit-80 (Part 2)
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Symbol Terminal type
CRT Dumb terminal type. Does not do cursor addressing
ADM3A Lear Seigler ADM 3A
ADM22 Lear Seigler ADM 22
AM230 Ampro 230
H1500 Hazeltine 1500
SMRTVD Netronics Smartvid
SOROQ Soroq IQ-120
TVI912 Televideo 912
TVI925 Televideo 925 or Freedom 100
VT52 Dec VT52 or equivalent (H19)
VT100 Dec VT100 or equivalent
WYSE Wyse 100
"symbol" is the symbol used to select the target system, in CPXTYP.ASM;
"Terminal type" is the type of terminal "symbol" selects.
Table 1-4: Terminals supported by Kermit-80
-------------------------------------------------------------------------------
1.7.2. Downloading Kermit-80
You'll need either a pre-configured .COM file or the system-independent module,
CPSKER, in binary (.COM) or hex (.HEX) format and the system-dependent overlay
for your system (from Tables 1-2 and 1-3). If your system is not listed in the
table, get the generic CP/M 2.2 Kermit or the generic CP/M 3 Kermit. If you
already have a version of Kermit on your micro and you want to install a new
version, simply use your present version to get the new files. Transfer the
files to your system and skip ahead to "merging the modules".
If you do not have a copy of Kermit on your micro, and you cannot borrow a Ker-
mit floppy but you do have access to a mainframe computer with a copy of the
Kermit-80 distribution, you should read this section.
There are several ways to get CP/M Kermit from a host system to your micro.
The easiest is to "download" the necessary "hex" files into your micro's memory
and then save them on the disk. If you have a terminal emulator program on
your micro which can save a copy of the session to disk, connect to your host,
and type the necessary files. Exit from the emulator, saving the session log,
and edit the session log to extract the hex files. Skip ahead to "merging the
files".
The following is a procedure which, though far from foolproof, should allow you
to get a version of Kermit to your CP/M based micro. It depends upon the host
prompt, or at least the first character of the host prompt, being some charac-
ter that cannot appear in a hex file (the valid characters for hex files are
the digits 0-9, the upper case letters A-F, the colon ``:'', carriage return,
and line feed). As soon the prompt character is encountered, the transfer will
terminate. If your host does not issue a prompt that will accommodate this
scheme, you can achieve the same effect by adding an atsign ``@'' to the very
end of the hex file before sending it from the host. The program below looks
for an atsign (the normal DEC-20 prompt, hex 40). DECSYSTEM-10 users would
look for a dot, hex 2E; VAX/VMS or UNIX users would look for a dollar sign, hex
24; UNIX C-Shell users would look for a percent sign, hex 26.
1. For CP/M 2.2 systems, connect to a floppy disk with plenty of free
space. Run DDT and type in the following (the comments should not
be typed in; they are there just to tell you what's happening):
(Note that this wont work for CP/M Plus or 3.0 systems!)
----------------------------------------------------------------
-a100 ;Begin assembling code at 100
0100 LXI H,2FE ;Where to store in memory
0103 SHLD 200 ;Keep pointer there
0106 MVI E,D ;Get a CR
0108 MVI C,4 ;Output to PUNCH (send to HOST)
010A CALL 5
010D MVI C,3 ;Input from READER (read from HOST)
010F CALL 5
0112 ANI 7F ;Strip parity bit
0114 PUSH PSW ;Save a and flags
0115 MOV E,A ;Move char to E for echo
0116 MVI C,2 ;Output to screen
0118 CALL 5
011B POP PSW ;Restore A and flags
011C CPI 40 ;(or 4E,24,26,etc) System prompt?
011E JZ 127 ;Yes, have whole file in memory
0121 CALL 17A ;No, store another byte
0124 JMP 10D ;Read another byte
0127 MVI A,1A ;Get a Control-Z (CP/M EOF mark)
0129 CALL 17A ;Store it in memory
012C LXI H,300 ;Get memory pointer
012F SHLD 202 ;Store as DMA pointer
0132 LDA 201 ;Get 'HI' byte of memory pointer
0135 STA 200 ;and store it as 'LO' one
0138 XRA A
0139 STA 201 ;Zero 'HI' byte (slow *256)
013C MVI C,16 ;Make NEW file
013E LXI D,5C ;With FCB1
0141 CALL 5
0144 CALL 15E ;Write 128 bytes (sector)
0147 CALL 15E ;Write another sector
014A LXI H,FFFF ;Get a 16-bit Minus One
014D XCHG ;into DE
014E LHLD 200 ;Get 256-byte counter
0151 DAD D ;Decrement
0152 SHLD 200 ;and store back
0155 MVI A,2 ;Check if
0157 CMP L ; 256-byte counter down to offset
0158 JZ 183 ;Yes, we're done
015B JMP 144 ;Keep writing..
015E LHLD 202 ;Get file-pointer
0161 XCHG ;into DE
0162 MVI C,1A ;Set DMA-address
0164 CALL 5
0167 MVI C,15 ;Write sector (128 bytes)
0169 LXI D,5C ;using FCB1
016C CALL 5
016F LHLD 202 ;Get file-pointer
0172 LXI D,80 ;128-bytes
0175 DAD D ;added to file-pointer
0176 SHLD 202 ;and save
0179 RET ;and return
017A LHLD 200 ;Get Memory-pointer
017D MOV M,A ;Store character
017E INX H ;Increment Pointer
017F SHLD 200 ;and save
0182 RET ;and return
0183 MVI C,10 ;CLOSE file
0185 LXI D,5C ;using FCB1
0188 CALL 5
018B JMP 0 ;Force WARM BOOT
0179
-^C ;(Type Control-C) Return to CP/M
A>SAVE 1 FETCH.COM ;Save program, we need to run it twice.
Figure 1-1: Bootstrap program for Kermit-80 and CP/M Version 2.2
----------------------------------------------------------------
Alternatively, an assembler source file for this program is dis-
tributed with CP/M Kermit as CPKFET.ASM. You might prefer to type
the assembler version in and assemble and load it (ASM CPKFET, LOAD
CPKFET, or MASM CPKFET, MLOAD CPKFET), to let the assembler and
loader catch any typing errors.
2. Connect to your host using a terminal or a terminal emulation
program. Ensure that your host does not have your terminal in "page
mode" (does not pause at the end of each screenful).
3. Tell the host to display the first hex file (the system-independent
module) at your terminal, e.g. give a command like TYPE CPSKER.HEX,
without a terminating carriage return.
4. Return to your micro by switching the cable from the terminal to the
micro, or by terminating the micro's terminal program.
5. Make sure your IOBYTE is set so that RDR: and PUN: correspond to the
I/O port that is connected to the host (this would normally be the
case unless you have done something special to change things).
6. Load the program you entered in the first step with DDT, and use it
to capture the first hex file:
DDT FETCH.COM
-icpsker.hex ;Setup FCB for file CPSKER.HEX
-g100,179 ;Execute the program.
Now there should be a file CPSKER.HEX on your connected disk.
7. Return to the host, and tell it to display the second hex file (the
system-dependent module for your configuration). Again, do not type
the terminating carriage return.
8. Return to your micro, and run the capture program again:
DDT FETCH.COM
-icpxovl.hex ;Setup FCB to create CPXOVL.HEX
-g100,179 ;Execute the program.
Now there should be a file CPXOVL.HEX on your connected disk.
Replace CPXOVL.HEX in this example with the appropriate overlay file
for your system.
Merging the files:
1. For purposes of illustration, we will assume the system-dependent
overlay is called "cpxovl.hex". The two hex files may be combined
with MLOAD or DDT. If you already have a running Kermit, you can
transfer MLOAD.HEX to your system and create MLOAD.COM by running
LOAD. If you're bootstrapping Kermit, you could transfer MLOAD.HEX
to your system the same way you got the other two .HEX files, but
it's probably simpler to use DDT to get Kermit running, and get
MLOAD later if you need it.
2. Using MLOAD, the two pieces may be easily merged:
A>mload kermit49=cpsker,cpxovl
(Some messages about program size, etc...)
A>
3. If you don't have MLOAD running, it's a bit more complex:
A>ddt cpsker.hex
NEXT PC
3500 0100
-icpxovl.hex
-r
NEXT PC
xxxx 0000
-^C
A>save dd kermit49.com
The page count ("dd") used in the SAVE command is calculated from
the last address ("xxxx") given by DDT in response to the R command:
drop the last two digits and add 1 if they were not zero, then con-
vert from hexadecimal (base 16) to decimal (base 10): 684F becomes
69 hex, which is 105 decimal (5 times 16 plus 9) -- but 6700 becomes
67 hex, or 103 decimal (consult an introductory computing book if
you don't understand number base conversion).
4. If you are using the Z80MU CP/M and Z80 development toolkit on an
IBM PC or clone, then follow the same instructions as for a genuine
CP/M system. When you have loaded your file, you will have to ship
the .COM or two .HEX files to the target CP/M system. (Possibly
using a previous issue of Kermit?)
5. Note that CP/M hex files have checksums on each line. If there were
any transmission errors during the downloading process, MLOAD or DDT
will notice a bad checksum and will report an error (something like
"Illegal Format"). If you get any errors during loading, either fix
the hex file locally with an editor, or repeat the transfer.
You now should have a running version of Kermit-80, called KERMIT49.COM.
Test your new Kermit by running it. If it gives you a prompt, it might be OK.
(don't delete your old one yet...). Instead of a prompt, you could get one of
two messages indicating that the configuration information is invalid:
?Kermit has not been configured for a target system
or
?Consistency check on configuration failed
Of course, neither of these messages should appear if you're building Kermit
from the distribution kit. The first message indicates that the overlay was
not found where the system-independent module expected to find it, probably be-
cause the overlay address is incorrect; the second indicates that the version
of CPXLNK used in the system-dependent module is incompatible with the system-
independent module.
Once you are satisfied that KERMIT40 works correctly, you should rename your
old KERMIT.COM to something else, like OKERMIT.COM, and rename KERMIT40.COM to
KERMIT.COM.
1.7.3. Assembling Kermit-80 from the sources
Kermit-80 is built in two pieces from the following files:
The system-independent files:
CPSKER.ASM header file
CPSDEF.ASM definitions for both KERMIT and KERSYS
CPSMIT.ASM initialization, main loop, miscellaneous commands (BYE, EXIT,
LOG, SET, SHOW, STATUS, and VERSION)
CPSCOM.ASM second part of commands, status and set file
CPSPK1.ASM part 1 of the KERMIT protocol handler (SEND, RECEIVE,
LOGOUT,and FINISH commands)
CPSPK2.ASM part 2 of the KERMIT protocol handler
CPSREM.ASM REMOTE routines
CPSSER.ASM SERVER routines (for the future)
CPSTT.ASM the transparent commands (TRANSMIT, CONNECT)
CPSCPM.ASM CP/M commands (DIR, ERA, USER, TYPE, PRINT, COPY)
CPSWLD.ASM the wildcard handler
CPSCMD.ASM the command parser
CPSUTL.ASM utility routines and data
CPSDAT.ASM data space and the overlay definitions
CPXLNK.ASM linkage area description
The system-dependent files:
CPXTYP.ASM system selection
CPXLNK.ASM system overlay specification and jump table
CPXCOM.ASM common routines for all systems
CPXSWT.ASM system selector or switcher
One of:
CPXSYS.ASM family file for some system-specific code
(now split into CPXSYS.ASM and CPXSY2.ASM)
CPXTOR.ASM family file for Torch, Superbrain, PCI2651 etc
CPXNOR.ASM family file for Northstar and Comart machines
CPXMRL.ASM family file for British Telecom merlin/Rair Black Box
CPXSB.ASM family file for Micromint SB-180 systems
CPXCIF.ASM family file for Cifer systems
CPXHEA.ASM family file for Heath/Zenith systems
CPXAPP.ASM family file for Apple II systems
CPXPCW.ASM family file for Amstrad PCW 8256/8512 machines
CPXBEE.ASM Family file for Microbee systems
CPXBBI.ASM family file for BigBoard, Kaypro and Xerox 820 systems
CPXSYO.ASM family file for Sanyo MBS-1100 systems
CPXTM4.ASM family file for Tandy Model 4 with CP/M systems
CPXGNI.ASM family file for Video Genie systems
CPXPRO.ASM family file for Compupro systems
CPXZ80.ASM family file for the Z80MU development system
and if you use a terminal,
CPXVDU.ASM display codes for VDUs etc. Not always required
The system-independent module contains all of the system-independent files ex-
cept for CPXLNK.ASM, which is assembled into the system-dependent module to
provide the structures needed to connect the two modules. As distributed, the
system-independent module is named CPSKER.HEX. If you have a copy of
CPSKER.HEX, you do not need to reassemble the system-independent module to con-
figure Kermit for your system.
The system-dependent module consists of CPXTYP.ASM, CPSDEF.ASM, CPXLNK.ASM,
CPXSWT.ASM, CPSCOM.ASM, one of the family files CPXSYS.ASM, CPXTOR.ASM,
CPXMRL.ASM, CPXSB.ASM, CPXCIF.ASM, CPXHEA.ASM, CPXBBI.ASM, CPXTM4.ASM,
CPXGNI.ASM, CPXNOR.ASM, CPXAPP.ASM, CPXPCW.ASM, or CPXPRO.ASM, and possibly
CPXVDU.ASM, if your system uses a terminal for the console. One copy of the
system-dependent module is supplied already assembled for each supported sys-
tem; the filename may be obtained from tables 1-2 and 1-3. If a terminal is
required for a system, a CRT (glass TTY device) has been selected.
After assembling the two pieces separately, they are combined with DDT or MLOAD
into a system-specific Kermit.
If you want to rebuild the system-independent module, the only change you may
need to make is to select the assembler to be used, in CPSKER.ASM. Define one
of MAC80, M80, or LASM to TRUE to select it as the assembler; the others should
be defined FALSE.
Assuming you have the Microsoft Macro Assembler package (M80/L80), you'll need
to do the following:
A>m80 cpsker=cpsker.asm
A>l80 /p:100,cpsker,cpsker/n/e
This will produce CPSKER.COM.
If you are using LASM instead, do this:
A>lasm cpsker
LASM will generate CPSKER.HEX and CPSKER.PRN. LASM allows options to be
specified in the same way as the standard assembler, ASM, so the command
A>lasm cpsker.abz
will read the source files from drive A, send the .HEX file to drive B, and
suppress the listing file.
If you are using the Z80MU development system on an IBM PC or clone, then as-
semble your files using either LASM and MLOAD or M80 and L80, as if you were
using a genuine CP/M-80 system. Note that you will still have the problem of
transferring your assembled files to the target CP/M system.
If you want to generate a system-dependent overlay for a particular system, or
want to change the terminal supported, you'll need to check three areas in
CPXTYP.ASM:
First, the overlay start ADDRESS. The symbol "ovladr" is EQUated to the ad-
dress of "LNKFLG" in the system-independent module, as the starting address of
the overlay (7000H for version 4.11). You'll need to know this value if you're
building the overlay with M80/L80. You won't normally need to change this
value.
Second, the assembler being used. Again, define one of MAC80, M80, and LASM to
be TRUE to select it, and define the others to be FALSE. The two modules
(system-independent and system-dependent) do not need to be built with the same
assembler.
Third, the system configuration. Locate your system in tables 1-2 and 1-3,
then define the appropriate symbol TRUE, and the rest FALSE. If the system
comes with a builtin console terminal, define all the terminal switches FALSE.
If the system uses an external terminal as the console, locate the terminal in
table 1-5 and define the appropriate symbol TRUE, and the remainder FALSE. If
the terminal is not listed in table 1-5, use the CRT switch; in this case, VT52
emulation is not supported.
In addition, there are a few general and system-specific symbols which may be
altered to fit your system:
APSLOT For Apple with 6551 ACIA, defines the slot number of the serial
card
CPUSPD Processor speed in units of 100KHz (currently used only for
bbII and kpII for timing loops)
TAC For users connecting through ARPAnet TACs: set to TRUE if you
wish the default TACTRAP status to be ON. (This may be overrid-
den with the SET TACTRAP command). If you're not connecting
through a TAC, set tac to FALSE and ignore tacval.
TACVAL For ARPANET TAC users: defines the default TAC intercept
character (may be overridden with the SET TACTRAP command).
If you are just assembling an existing configuration, you'll need to edit
CPXTYP.ASM only. If you are adding support for a new system, you should not
modify CPSDEF.ASM or CPXLNK.ASM; if you do, you'll have to change the system-
independent module also. Eventually, CPXSYS.ASM will be split into separate
files, each of which will generate one or more related systems. When this hap-
pens, you'll want to pick the one closest to your system to use as a starting
point.
After editing CPXTYP.ASM as necessary, assemble and link the overlay as fol-
lows:
- With M80 (where "xxxx" is the hex value of ovladr from CPXLNK.ASM):
A>m80 cpxtyp=cpxtyp.asm
A>l80 /p:xxxx,cpxtyp,cpxtyp/n/x/e
- With LASM:
A>lasm cpxtyp
With an IBM PC or clone using the Z80MU softwrae, follow the instructions as if
you were using a real CP/M system.
The overlay (CPXTYP.HEX) may then be merged with the system-independent module
as described above (creating a runnable Kermit from the distribution kit).
If you are using the Z80MU development system on a PC, and already have a run-
ning Kermit-80 v3.9 or later, you can merge the two .HEX files into a .COM file
with LINK80 (TOPS 10/20), MLOAD (Z80MU), L80 (Z80MU), and transfer the new .COM
file to your micro with Kermit:
- Z80MU on a PC and MLOAD:
@MLOAD KERNEW=CPSKER,CPXTYP
- Z80MU on a PC and C80:
@L80 /P:xxxx,CPXTYP,CPXTYP/N/X/E
producing KERNEW.COM.
-------------------------------------------------------------------------------
Symbol Terminal description
crt Basic CRT, no cursor positioning
adm3a ADM3A Display or lookalike
adm22 ADM22 Display or lookalike
am230 Ampro 230
h1500 Hazeltine 1500
smrtvd Netronics Smartvid-80
soroq Soroq IQ-120
tvi912 TVI 912
tvi925 TVI 925, Freedom 100
vt52 VT 52 or VT52 emulator such as Heath H19, H29, etc.
vt100 VT 100 or emulator (most ANSI terminals should work)
wyse Wyse 100
Table 1-5: Terminals known to Kermit-80
-------------------------------------------------------------------------------
1.8. Adding Support For A New System
Kermit-80 is built from a common set of source files; the system-dependent
module makes heavy use of conditional assembly (this complication will be
removed in future releases). The system dependencies arise from attempts to
answer some questions:
1. What kind of terminal is to be supported?
For many micros, the console is an integral part of the system, but
others can use an external terminal. In either case, the commands
to manipulate the screen (position the cursor, erase the screen,
etc) must be defined.
2. How is the serial line accessed?
For systems supporting the IOBYTE function, this is straightforward;
the symbol "IOBYT" is defined TRUE. If the serial line is accessed
with IN and OUT instructions, it may be possible to use the simple
I/O routines provided. In this case, the symbol "INOUT" is defined
TRUE, the MNPORT and MNPRTS are defined to be the data and control
addresses, respectively, and bit masks for testing for "input data
available" and "output buffer empty" must be defined. If the inter-
face is strange, leave IOBYT and INOUT set to FALSE, and provide the
I/O routines.
3. What initialization is necessary?
You may wish to set the baud rate or configure the serial line at
startup. Examples for a number of devices are present.
4. What special features are to be supported?
You may want to provide the capability to select one of several
serial lines with the SET PORT command, or to change the speed of
the serial line with the SET SPEED command. To do this, you'll need
to build a command table, using the systems already supported as ex-
amples. The ability to send a BREAK signal is desirable. Again,
examples for several different interfaces (ACIA, SIO, etc) are
present.
5. Do you want to design an external terminal type?
There is a jump entry in the overlay file to allow users to add
their own termainl emulator. If you write the code for such an
emulator, you must load this jump address with the address of your
emulator, and SET TERMINAL EXTERNAL from within Kermit. All charac-
ters will be passed to this routine during connect mode.
[End of CP411BLD.DOC]