More README updates, particularly in regard to DEC's Absolute Loader

This commit is contained in:
Jeff Parsons 2016-10-22 14:21:33 -07:00 committed by Jeff Parsons
commit 5d5629c27b
12 changed files with 97 additions and 52 deletions

View file

@ -7,8 +7,8 @@ permalink: /apps/pdp11/boot/bootstrap/
DEC PDP-11 Bootstrap Loader
---------------------------
The **Bootstrap Loader** is a small program that loads the **[Absolute Loader](/apps/pdp11/tapes/absloader/)**,
which is then used to load other PDP-11 tapes, such as **[BASIC (Single User)](/apps/pdp11/tabes/basic/)**.
The **Bootstrap Loader** is a small program that loads the [Absolute Loader](/apps/pdp11/tapes/absloader/),
which is then used to load other PDP-11 tapes, such as [BASIC (Single User)](/apps/pdp11/tabes/basic/).
Here's what the **Bootstrap Loader** looks like:

View file

@ -15,14 +15,5 @@ We have archived the following DEC PDP-11 Tapes:
along with a copy of the [DEC PDP-11 Bootstrap Loader](/apps/pdp11/boot/bootstrap/), which is required if you actually want
to load any of the above tapes into memory using the [PC11 High-Speed Paper Tape Reader/Punch](/devices/pdp11/pc11/).
To make it easy for PDPjs machines to load these tapes, we created the following High-Speed
Paper Tape Reader (PC11) configurations:
- [demo.xml](/devices/pdp11/pc11/demo.xml)
which is typically instantiated by a Machine XML file using:
<device ref="/devices/pdp11/pc11/demo.xml"/>
These configuration files create UI controls that allow you to choose from a set of tapes that are automatically sent
to the machine's PC11 device.
For the most part, the tapes we have archived are in the DEC Absolute Loader format. More information about that format
is on the [Absolute Loader](absloader/) page.

View file

@ -8,10 +8,48 @@ DEC PDP-11 Absolute Loader
--------------------------
The Absolute Loader is a special tape image that must be loaded in order to load *other* tapes
which use the Absolute Loader format. To see the Absolute Loader in action, start with the
[Bootstrap Loader Demo](/devices/pdp11/machine/1120/bootstrap/debugger/).
that use what we'll call the "Absolute Format." To see the Absolute Loader in action, start with the
[PDP-11/20 Bootstrap Loader Demo](/devices/pdp11/machine/1120/bootstrap/debugger/).
PCjs has archived the following DEC resources:
The *loadImage()* interface of the [PDPjs RAM Component](/modules/pdp11/lib/ram.js) explains what
we know about the "Absolute Format":
Data on tapes in the "Absolute Format" is organized into blocks; each block begins with
a 6-byte header:
2-byte signature (0x0001)
2-byte block length (N + 6, because it includes the 6-byte header)
2-byte load address
followed by N data bytes. If N is zero, then the 2-byte load address is the exec address,
unless the address is odd (usually 1). DEC's Absolute Loader jumps to the exec address
in former case, halts in the latter.
All values are stored "little endian" (low byte followed by high byte), just like the
PDP-11's memory architecture.
After the data bytes, there is a single checksum byte. The 8-bit sum of all the bytes in
the block (including the header bytes and checksum byte) should be zero.
ANOMALIES: Tape files don't always begin with a signature word, so I allow any number of
leading zeros before the first signature. Tape files don't always end cleanly either, so as
soon as I see an invalid signature, I break out of the loop without signalling an error, as
long as at least ONE block was successfully processed. In fact, it's possible that as
soon as a block with ZERO data bytes is encountered, processing is supposed to stop, but
I haven't examined enough tapes (or the Absolute Loader code) to know for sure.
[Other sites](http://www.retrocmp.com/stories/dec-pc05-papertape/242-dec-pc05-working-with-paper-tapes)
have referred to this tape format as the "Standard Absolute" format, but I've not found confirmation of
that terminology in any DEC publication. In fact, I think that term may have been a misreading of instructions
found in DEC manuals like the ["MEM EXER 16K" Diagnostics Manual](http://archive.pcjs.org/pubs/dec/pdp11/other/AC-9045F-MC_CZQMCF0-0-124K-Mem-Exer-16k_Feb78.pdf):
Load the program using any standard absolute loader.
The most notable feature of the "Absolute Format" is that it contains no relocation information; it is
designed for code that has been linked to run at a fixed ("absolute") address, or position-independent code
for which a specific address has been selected, based on the amount of RAM present in the target machine.
PCjs has archived the following Absolute Loader resources:
- [Absolute Loader](DEC-11-L2PC-PO.json)
- [LISTING OF PDP-11 ABSOLUTE LOADER (June 1975)](http://archive.pcjs.org/pubs/dec/pdp11/other/DEC-11-UABLA-A-LA_PDP-11AbsoluteLoaderListing_Jun75.pdf)

View file

@ -13,12 +13,12 @@ machines:
DEC PDP-11 BASIC
----------------
The first PCjs machine to run DEC PDP-11 BASIC was this [PDP-11/20](/devices/pdp11/machine/1120/basic/debugger/),
The first PDPjs machine to run DEC PDP-11 BASIC was this [PDP-11/20](/devices/pdp11/machine/1120/basic/debugger/),
shown below.
{% include machine.html id="test1120" %}
PCjs has archived these DEC PDP-11 BASIC resources:
PCjs has archived the following DEC PDP-11 BASIC resources:
- [BASIC (Single User) Tape Image](DEC-11-AJPB-PB.json)
- [LISTING OF BASIC/PTS (March 1974)](http://archive.pcjs.org/pubs/dec/pdp11/basic/AB-2045B-SC_BASIC_PTS_Listing_Mar77.pdf)