Changed the RESET button to *not* autoStart a machine when a Debugger is present, so that the Debugger can "cleanly" load bootstrap sequences and boot without side-effects (eg, unexpected interrupts)

This commit is contained in:
Jeff Parsons 2017-02-04 12:22:50 -08:00 committed by Jeff Parsons
commit 4be8640af8
8 changed files with 250 additions and 54 deletions

View file

@ -12,7 +12,7 @@ PDP-11 Device Configurations
* [Control Panels](panel/)
* Serial Interface for Display Terminals [(DL11)](dl11/)
* High-Speed Paper Tape Reader/Punch [(PC11)](pc11/)
* Disk Controllers ([RK11](rk11/), [RL11](rl11/))
* Disk Controllers ([RK11](rk11/), [RL11](rl11/), [RX11](rx11/))
* [ROM Images](rom/)
Sample machines include a

View file

@ -17,9 +17,9 @@ bytes, for a total capacity of 250Kb (256,256 bytes).
manufacturers, they overstated the capacity by treating "K" as 1000 rather than 1024, which was its traditional meaning
within the computer industry at the time. DEC's own processor handbooks, for example, invariably used "K" to mean 1024.
> However, since 1998, standards organizations have been pushing the term "kibibyte" (abbreviated KiB) to mean 1024 bytes,
> Since 1998, standards organizations have been pushing the term "kibibyte" (abbreviated KiB) to mean 1024 bytes,
in an effort to redefine the "K" in "Kilobyte" (Kb) as 1000, but that doesn't change what the term commonly meant prior
to 1998 (the marketing departments of disk drive manufacturers notwithstanding).
to 1998.
Machines containing the [RX11 Component](/modules/pdp11/lib/rx11.js) include:
@ -43,24 +43,133 @@ used to control the device, such as choosing which disks should be "auto-mounted
```xml
<?xml version="1.0" encoding="UTF-8"?>
<device id="rx11" type="rx11" pos="left" width="35%" padLeft="8px" padBottom="8px">
<name>Disk Drive Controls</name>
<control type="container">
<control type="list" binding="listDrives"/>
<control type="list" binding="listDisks">
<disk id="disk01" name="RT-11 V3 SYS (1 OF 9)" path="http://archive.pcjs.org/disks/dec/rx01/RX01-RT11-V03-1.json"/>
<disk id="disk01" name="RT-11 V3 SYS (2 OF 9)" path="http://archive.pcjs.org/disks/dec/rx01/RX01-RT11-V03-2.json"/>
<disk id="disk01" name="RT-11 V3 SYS (3 OF 9)" path="http://archive.pcjs.org/disks/dec/rx01/RX01-RT11-V03-3.json"/>
<disk id="disk01" name="RT-11 V3 SYS (4 OF 9)" path="http://archive.pcjs.org/disks/dec/rx01/RX01-RT11-V03-4.json"/>
<disk id="disk01" name="RT-11 V3 SYS (5 OF 9)" path="http://archive.pcjs.org/disks/dec/rx01/RX01-RT11-V03-5.json"/>
<disk id="disk01" name="RT-11 V3 SYS (6 OF 9)" path="http://archive.pcjs.org/disks/dec/rx01/RX01-RT11-V03-6.json"/>
<disk id="disk01" name="RT-11 V3 SYS (7 OF 9)" path="http://archive.pcjs.org/disks/dec/rx01/RX01-RT11-V03-7.json"/>
<disk id="disk01" name="RT-11 V3 SYS (8 OF 9)" path="http://archive.pcjs.org/disks/dec/rx01/RX01-RT11-V03-8.json"/>
<disk id="disk01" name="RT-11 V3 SYS (9 OF 9)" path="http://archive.pcjs.org/disks/dec/rx01/RX01-RT11-V03-9.json"/>
</control>
<control type="button" binding="loadDisk">Load</control>
<control type="button" binding="bootDisk">Boot</control>
<control type="description" binding="descDisk" padRight="8px"/>
<control type="file" binding="mountDisk"/>
</control>
<name>Disk Drive Controls</name>
<control type="container">
<control type="list" binding="listDrives"/>
<control type="list" binding="listDisks">
<disk id="disk01" name="RT-11 V3 SYS (1 OF 9)" path="http://archive.pcjs.org/disks/dec/rx01/RX01-RT11-V03-1.json"/>
<disk id="disk01" name="RT-11 V3 SYS (2 OF 9)" path="http://archive.pcjs.org/disks/dec/rx01/RX01-RT11-V03-2.json"/>
<disk id="disk01" name="RT-11 V3 SYS (3 OF 9)" path="http://archive.pcjs.org/disks/dec/rx01/RX01-RT11-V03-3.json"/>
<disk id="disk01" name="RT-11 V3 SYS (4 OF 9)" path="http://archive.pcjs.org/disks/dec/rx01/RX01-RT11-V03-4.json"/>
<disk id="disk01" name="RT-11 V3 SYS (5 OF 9)" path="http://archive.pcjs.org/disks/dec/rx01/RX01-RT11-V03-5.json"/>
<disk id="disk01" name="RT-11 V3 SYS (6 OF 9)" path="http://archive.pcjs.org/disks/dec/rx01/RX01-RT11-V03-6.json"/>
<disk id="disk01" name="RT-11 V3 SYS (7 OF 9)" path="http://archive.pcjs.org/disks/dec/rx01/RX01-RT11-V03-7.json"/>
<disk id="disk01" name="RT-11 V3 SYS (8 OF 9)" path="http://archive.pcjs.org/disks/dec/rx01/RX01-RT11-V03-8.json"/>
<disk id="disk01" name="RT-11 V3 SYS (9 OF 9)" path="http://archive.pcjs.org/disks/dec/rx01/RX01-RT11-V03-9.json"/>
</control>
<control type="button" binding="loadDisk">Load</control>
<control type="button" binding="bootDisk">Boot</control>
<control type="description" binding="descDisk" padRight="8px"/>
<control type="file" binding="mountDisk"/>
</control>
</device>
```
Loading the RX11 Bootstrap
--------------------------
From the [RT-11 v4.0 Installation Manual (March 1981)](/pubs/dec/pdp11/rt11/), p. E-9:
The procedure to deposit the RX11 disk bootstrap loader in memory depends on the type of processor you have.
If your computer is a PDP-11V/03, PDP-11/03, or LSI-11, see the PDP-11/03 user's manual for instructions.
1. Set the ENABLE/HALT switch to HALT.
2. Set the first address, 010000, in the switch register (see Table E-3).
3. Press the LOAD ADDR switch.
4. Set the contents for the first address (from Table E-3) in the switch register.
5. Lift the DEP switch. The computer automatically advances to the next address.
6. Set the contents for the next address (from Table E-3) in the switch register.
7. Lift the DEP switch.
8. Repeat steps 6 and 7 until you have deposited all the instructions.
Now verify that you deposited the bootstrap program properly.
1. Set the first address, 001000, in the switch register.
2. Press the LOAD ADDR switch.
3. Press the EXAM switch to display the contents of that address in the data register.
4. Compare the number in the data register with the value for that address in Table E-3.
5. If the values are the same, press EXAM again to display the contents of the next address.
If the values are not the same, repeat the entire procedure for depositing the bootstrap.
Verify the contents of all the addresses in this way. If any instruction is incorrect,
repeat the entire deposit procedure.
Once you have correctly deposited the bootstrap in memory, start the computer as follows:
1. Set the starting address, 001000, in the switch register.
2. Press the LOAD ADDR switch.
3. Set the ENABLE/HALT switch to ENABLE.
4. Press the START switch.
Table E-3: RX-11 Bootstrap Loader
---------------------------------
Location Contents
001000 005000
001002 012701
001004 177170
001006 105711
001010 001776
001012 012711
001014 000003
001016 005711
001020 001776
001022 100405
001024 105711
001026 100004
001030 116120
001032 000002
001034 000770
001036 000000
001040 005000
001042 000110
Loading the RX-11 Bootstrap Loader
----------------------------------
Any PDP-11 machine using built-in PCjs Debugger makes it easy to enter the bootstrap code above. Paste
the following commands into the Debugger's command buffer:
ew 1000 005000 012701 177170 105711 001776 012711 000003 005711 001776;
ew 1022 100405 105711 100004 116120 000002 000770 000000 005000 000110;
r pc 1000
You can then review (eg, disassemble) the bootstrap code:
>> u 1000 1044
001000: 005000 CLR R0
001002: 012701 177170 MOV #177170,R1
001006: 105711 TSTB @R1
001010: 001776 BEQ 001006
001012: 012711 000003 MOV #3,@R1
001016: 005711 TST @R1
001020: 001776 BEQ 001016
001022: 100405 BMI 001036
001024: 105711 TSTB @R1
001026: 100004 BPL 001040
001030: 116120 000002 MOVB 2(R1),(R0)+
001034: 000770 BR 001016
001036: 000000 HALT
001040: 005000 CLR R0
001042: 000110 JMP @R0
Last but not least, make sure you have successfully loaded an RX01 diskette image into drive DX0. Then execute the
bootstrap code with the Debugger's "g" command.
Of course, if the machine also includes the RX11 Boot control, then all you *really* need to is select an
RX01 diskette, click "Load", wait for the diskette image to be successfully loaded (i.e., downloaded) and then click
"Boot".