Commit | Line | Data |
---|---|---|
dc7591ac AT |
1 | # Overview # |
2 | ||
3 | The programs contained in this directoy allow bootstrapping of a completely | |
4 | blank PDP-11 from an external host. It is not required that the PDP-11 have any | |
5 | pre-existing code in the form of drives or ROMs. | |
6 | ||
7 | # Status # | |
8 | ||
9 | The client has been tested with a PDP-11/23+ (KDF11-B on SLU2) and a PDP-11/73 | |
10 | (KDJ11-B with DLV11-J). It should work with most PDP-11 CPUs and SLUs which are | |
11 | compatible with the DLV11-J register layout. | |
12 | ||
13 | The server has been tested with a PC running FreeBSD. | |
14 | ||
15 | # Instructions # | |
16 | ||
17 | These instructions assume your PDP-11 has a serial connection to a UNIX host, | |
18 | the `bootstrap_server.c` program has been compiled on the UNIX host, and the | |
19 | UNIX host has a binary image ready for transfer to the PDP-11. | |
20 | ||
d9756b2b | 21 | Begin by loading the program contained in `client.md` into the PDP-11 via the |
dc7591ac AT |
22 | frontpanel switches or ODT. Set the PDP-11's CPU registers as follows. |
23 | ||
24 | - **R0:** The starting memory address at which the binary image should be stored. | |
25 | ||
26 | - **R1:** The number of bytes in the binary image. This information will be displayed | |
27 | by `server.c` immediately prior to transfer. | |
28 | ||
29 | - **R2:** The base (`RCSR`) register address of the SLU connected to the UNIX host. | |
30 | ||
31 | - **R3:** The address to which control should be transferred after the binary image | |
32 | is transferred to the PDP-11. | |
33 | ||
34 | Begin execution on the PDP-11. If the bootstrap program was loaded at the | |
d9756b2b | 35 | memory addresses listed in `client.md`, begin execution at address `70000`. |
dc7591ac AT |
36 | |
37 | Initiate the transfer from the UNIX host with the command | |
38 | ||
39 | pdp11-serial-loader -i <binary> -o <port> | |
40 | ||
41 | where `<port>` is the path to the device file for the serial port connected to | |
42 | the PDP-11 and `<binary>` is the path to the binary image file. For example, if | |
43 | using the first serial port under FreeBSD and a binary image named `pdp11.bin`, | |
44 | execute this command. | |
45 | ||
46 | pdp11-serial-loader -i pdp11.bin -o /dev/cuau0 | |
47 | ||
48 | In FreeBSD, add your user to the `dialer` group for permission to access the | |
49 | serial port. | |
50 | ||
51 | pw groupmod dialer -m ataylor | |
52 | exec su -l ataylor | |
53 | ||
54 | Once the binary image has transferred to the PDP-11, it will begin execution at | |
55 | the address contained in `R3` which should be your code. | |
56 | ||
57 | # Binary Image Format # | |
58 | ||
59 | Since the bootstrap program must be manually toggled into the PDP-11, brevity | |
60 | is paramount. Thus, the binary image matches the little-endian byte ordering of | |
61 | the PDP-11 word. | |
62 | ||
63 | Consider the following example program. | |
64 | ||
65 | CLR R0 | |
66 | MOV R0 R1 | |
67 | ||
68 | This would correspond to a binary image with consecutive bytes of: | |
69 | ||
70 | | Byte | Value | | |
71 | | ---- | -------- | | |
72 | | 0 | 00000000 | | |
73 | | 1 | 00001010 | | |
74 | | 2 | 00000001 | | |
75 | | 3 | 00010000 | | |
76 | ||
77 | If loaded into memory starting at location `2000`, the PDP-11's memory would | |
78 | look like this: | |
79 | ||
80 | | Address | Value | | |
81 | | ------- | ---------------- | | |
82 | | 2000 | 0000101000000000 | | |
83 | | 2002 | 0001000000000001 | | |
84 |