A large commit.
[pdp8.git] / sw / kermit / k12 / k12ipl.doc
1 From: Charles Lasner <lasner@watsun.cc.columbia.edu>
2 Subject: Initial Program Load (.IPL) format description
3
4 Some of the latest KERMIT-12 binary files are encoded in a
5 specialized format designed to allow direct memory loading without an
6 elaborate protocol such as KERMIT. This document will describe the
7 internal encoding of this format known as IPL, and related subjects.
8
9 The Initial Program Load (.IPL) format is designed expressly for
10 use with the IPL loading program. An error-free connection to a
11 serving host is required as no checking or recovery is performed by
12 the program. (The program itself is meant to be keyed in on the
13 target PDP-8 where there is no other means of acquiring KERMIT-12.)
14 The format is also meant to be "printable" in the same sense as
15 ENCODE, .BOO, or uuencode files. This makes the file format more
16 "friendly" to the host system, and allows simple editing of the file
17 to insert comments, etc.
18
19 An .IPL file starts with at least one lower-case character (not
20 counting `) meaning any character in the range 141-177 octal. Any number
21 of similar characters may follow immediately to create an arbitrary length
22 leader, but the lower-case requirement must be strictly enforced. Once a
23 non-lower-case character is encountered, it is accepted as the first data
24 character. Data characters continue throughout the rest of the file until
25 the next occurrence of a lower-case character which ends the loading. Any
26 characters past this point are ignored and can be freely added as a
27 trailing comment.
28
29 Throughout the entire .IPL file, control characters and <SPACE>
30 (000-040 octal) are ignored and may be used within the leader to make
31 the file comment(s) more readable. In some loading situations, <NUL>
32 or <SPACE> characters may be pre-pended to the file to give the
33 operator sufficient time to run down the hall between machines in
34 different rooms to start the PDP-8 loading program after first
35 starting the server. Data lines are broken every 64 characters with
36 <CR>/<LF> to make the file more "readable" to the host system.
37
38 Each data character in the body of the file represents six bits of
39 PDP-8 data encoded in the form (value+041 octal). This causes 00 octal to
40 be represented as ! through 77 octal to be represented as `. Data
41 characters are taken in pairs where the first character is the upper six
42 bits and the second is the lower six bits of a twelve bit word. Loading is
43 implied to start at 0000 of the loading field and continues through at most
44 7577. The operating system generally prohibits loading into 7600-7777.
45 This is not a problem since KERMIT-12 conforms to these limitations as a
46 matter of design. If the loading field is 3 or greater (or possibly 2 in
47 certain configurations) then the entire field can possibly be loaded. This
48 is never recommended because such a file would violate loading restrictions
49 of certain configurations. (The general rule is to never load into
50 x7600-x7777 for any field x in the range 0-7.)
51
52 The loading field itself is not contained in the file data, so it is
53 the user's responsibility to setup the loading program parameters
54 accordingly. File comments (in lower-case if in the leader) often contain
55 this information to aid the user. After loading is complete, the loading
56 program exits to the operating system. The user must save the recently
57 loaded data as an image (.SV) file by providing explicit arguments to a
58 SAVE command. It is recommended that the appropriate command be contained
59 in the trailer of the .IPL file as a comment. Placement at the end of the
60 file allows the commentary to be in upper-case, thus allowing it to be
61 given in the exact form required by OS/8. Certain characters such as "."
62 are required in the complete documentation of these commands which are not
63 allowed in the leader area. The leader can contain a comment referring the
64 user to the end of the file for the information itself.
65
66 [end of file]