57 lines
1.9 KiB
Markdown
57 lines
1.9 KiB
Markdown
---
|
|
layout: page
|
|
title: PDP-11 Loaders
|
|
permalink: /devices/pdp11/loader/
|
|
---
|
|
|
|
PDP-11 Loaders
|
|
--------------
|
|
|
|
The blog post "[PDP-11 Paper Tape BASIC](http://avitech.com.au/?page_id=709)" describes the *Bootstrap Loader*,
|
|
a small program used to load the *Absolute Loader*, which in turn loads the *PDP-11 BASIC Paper Tape*.
|
|
|
|
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 a [PDPjs](/modules/pdpjs/) machine such as the [PDP-11/20 Test Machine with Debugger](/devices/pdp11/machine/1120/test/debugger/),
|
|
the *Bootstrap Loader* is easily entered with a single Debugger "edit" command:
|
|
|
|
e 037744 016701 000026 012702 000352 005211 105711 100376 116162 000002 037400 005267 177756 000765 177550
|
|
|
|
You can immediately disassemble the code using `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
|
|
|
|
I also pasted the disassembled code into a listing file, [bootstrap.lst](bootstrap.lst), and ran [FileDump](/modules/filedump)
|
|
to produce a [bootstrap.json](bootstrap.json) that can be pre-loaded into any machine:
|
|
|
|
filedump --file=bootstrap.lst --format=octal --output=bootstrap.json
|
|
|
|
To run the *Bootstrap Loader*, set the PC to 037744 and start the machine:
|
|
|
|
r pc=037744
|
|
g
|
|
|