This repository has been archived by the owner on Dec 24, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 91
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
221 changed files
with
6,475 additions
and
2,731 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
--- | ||
layout: page | ||
title: PDP-11 Software | ||
permalink: /apps/pdp11/ | ||
--- | ||
|
||
PDP-11 Software | ||
--------------- | ||
|
||
We have archived the following selected PDP-11 software: | ||
|
||
- [Boot Code](boot/) | ||
- [DEC PDP-11 Tapes](tapes/) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
--- | ||
layout: page | ||
title: PDP-11 Boot Code | ||
permalink: /apps/pdp11/boot/ | ||
--- | ||
|
||
PDP-11 Boot Code | ||
---------------- | ||
|
||
The project contains the following PDP-11 boot code images: | ||
|
||
* [PDP-11 Boot Test](test/) | ||
* [DEC PDP-11 Bootstrap Loader](bootstrap/) | ||
|
||
Boot code can be pre-loaded into any machine by including a `<ram>` component in the machine XML configuration file | ||
with the *file* attribute set to the filename of the image, along with optional *load* and *exec* addresses; eg: | ||
|
||
```xml | ||
<ram id="ram" addr="0x0000" size="0x4000" file="/apps/pdp11/boot/bootstrap/BOOTSTRAP-16KB.json" load="0x3FE4" exec="0x3FE4"/> | ||
``` | ||
|
||
If no *load* address is specified, the `<ram>` component relies on the "load" property of the JSON-encoded RAM image; | ||
otherwise, the starting RAM address is used. If no *exec* address is specified, the CPU will begin execution at its usual | ||
reset address. |
4 changes: 2 additions & 2 deletions
4
devices/pdp11/loader/bootstrap.json → .../pdp11/boot/bootstrap/BOOTSTRAP-16KB.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
{"words":[ | ||
{"load":0x3FE4,"exec":0x3FE4,"words":[ | ||
0x1DC1 /*016701*/,0x0016 /*000026*/,0x15C2 /*012702*/,0x00EA /*000352*/,0x0A89 /*005211*/,0x8BC9 /*105711*/,0x80FE /*100376*/,0x9C72 /*116162*/, | ||
0x0002 /*000002*/,0x3F00 /*037400*/,0x0AB7 /*005267*/,0xFFEE /*177756*/,0x01F5 /*000765*/,0xFF68 /*177550*/] | ||
} | ||
} |
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
--- | ||
layout: page | ||
title: DEC PDP-11 Bootstrap Loader | ||
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/)**. | ||
|
||
Here's what the **Bootstrap Loader** looks like: | ||
|
||
Location Instruction | ||
037744 016701 | ||
037746 000026 | ||
037750 012702 | ||
037752 000352 | ||
037754 005211 | ||
037756 105711 | ||
037760 100376 | ||
037762 116162 | ||
037764 000002 | ||
037766 037400 | ||
037770 005267 | ||
037772 177756 | ||
037774 000765 | ||
037776 177550 | ||
|
||
Using any [PDPjs](/modules/pdpjs/) machine with the built-in Debugger, such as this | ||
[PDP-11/20 Test Machine with Debugger](/devices/pdp11/machine/1120/test/debugger/), the **Bootstrap Loader** | ||
is easily entered with a single Debugger EDIT ("e") command: | ||
|
||
e 037744 016701 000026 012702 000352 005211 105711 100376 116162 000002 037400 005267 177756 000765 177550 | ||
|
||
You can immediately disassemble the code using the Debugger's UNASSEMBLE ("u") command `u 037744 040000`: | ||
|
||
037744: 016701 000026 MOV 26(PC),R1 ; @037776 | ||
037750: 012702 000352 MOV #352,R2 | ||
037754: 005211 INC @R1 | ||
037756: 105711 TSTB @R1 | ||
037760: 100376 BPL 037756 | ||
037762: 116162 000002 037400 MOVB 2(R1),37400(R2) | ||
037770: 005267 177756 INC 177756(PC) ; @037752 | ||
037774: 000765 BR 037750 | ||
037776: 177550 .WORD 177550 | ||
|
||
To run the above code, set the PC to 037744 and start the machine: | ||
|
||
r pc=037744 | ||
g | ||
|
||
Pre-loading DEC's Bootstrap Loader | ||
---------------------------------- | ||
|
||
I pasted the disassembled code (above) into a listing file, [BOOTSTRAP-16KB.lst](BOOTSTRAP-16KB.lst), | ||
and then ran [FileDump](/modules/filedump) to produce a [BOOTSTRAP-16KB.json](BOOTSTRAP-16KB.json) that can | ||
be automatically pre-loaded into any machine: | ||
|
||
filedump --file=BOOTSTRAP-16KB.lst --format=octal --output=BOOTSTRAP-16KB.json | ||
|
||
For example, this [PDP-11/20 16Kb Machine](/devices/pdp11/machine/1120/bootstrap/debugger/) pre-loads | ||
the **Bootstrap Loader** using the `<ram>` component's optional *file* attribute: | ||
|
||
<ram id="ram" addr="0x0000" size="0x4000" file="/apps/pdp11/boot/bootstrap/BOOTSTRAP-16KB.json"/> | ||
|
||
I also edited [BOOTSTRAP-16KB.json](BOOTSTRAP-16KB.json) to include the following properties: | ||
|
||
"load": 0x3FE4, | ||
"exec": 0x3FE4, | ||
|
||
so that the `<ram>` component knows exactly where to load and execute the file. However, the `<ram>` component can also | ||
specify those value(s) itself, if needed: | ||
|
||
<ram id="ram" addr="0x0000" size="0x4000" file="/apps/pdp11/boot/bootstrap/BOOTSTRAP-16KB.json" load="0x3FE4" exec="0x3FE4"/> | ||
|
||
Finally, if you prefer octal *and* you're sure everyone will be using an ES6-capable browser, you can do this: | ||
|
||
<ram id="ram" addr="0o00000" size="0o40000" file="/apps/pdp11/boot/bootstrap/BOOTSTRAP-16KB.json" load="0o37744" exec="0o37744"/> | ||
|
||
All PCjs configuration files use hex and/or decimal exclusively, since those number formats have always been supported, | ||
but as time goes by, the new octal and binary formats will be almost as universal. |
Oops, something went wrong.