Merge branch 'next-release'
This commit is contained in:
commit
29cc3a4c60
18 changed files with 242 additions and 195 deletions
|
|
@ -19,6 +19,7 @@ PCjs also includes a small collection of disk images in the [Disk Libraries](/di
|
|||
|
||||
* [IBM PC](/disks/pcx86/)
|
||||
* [Challenger 1P](/disks/c1p/)
|
||||
* [DEC](/disks/dec/)
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -10,8 +10,9 @@ PDP-11 Device Configurations
|
|||
[PDP-11 Machines](/devices/pdp11/machine/) rely on a variety of machine configuration files and resources, including:
|
||||
|
||||
* [Control Panels](panel/)
|
||||
* [Serial Interface for Display Terminals (DL11)](dl11/)
|
||||
* [High-Speed Paper Tape Reader/Punch (PC11)](pc11/)
|
||||
* Serial Interface for Display Terminals [(DL11)](dl11/)
|
||||
* High-Speed Paper Tape Reader/Punch [(PC11)](pc11/)
|
||||
* Disk Controllers ([RL11](rl11/))
|
||||
* [ROM Images](rom/)
|
||||
|
||||
Sample machines include a
|
||||
|
|
|
|||
|
|
@ -13,5 +13,5 @@ PDPjs is currently being tested with the following PDP-11/20 machine configurati
|
|||
* [PDP-11/20 Bootstrap Loader Demo](/devices/pdp11/machine/1120/bootstrap/) (with [Debugger](/devices/pdp11/machine/1120/bootstrap/debugger/))
|
||||
* [PDP-11/20 BASIC Demo](/devices/pdp11/machine/1120/basic/) (with [Debugger](/devices/pdp11/machine/1120/basic/debugger/))
|
||||
|
||||
The "Demo" machines come with 16Kb of RAM and a [PC11 Paper Tape Reader](/devices/pdp11/pc11/). The "Boot Test" machine
|
||||
The "Demo" machines come with 16Kb of RAM and a [PC11 Paper Tape Reader](/devices/pdp11/pc11/). The "Boot Monitor" machine
|
||||
has 56Kb of RAM.
|
||||
|
|
|
|||
|
|
@ -10,85 +10,3 @@ machines:
|
|||
{% include machine.html id="test1170" %}
|
||||
|
||||
This machine is also available with our built-in [Debugger](debugger/).
|
||||
|
||||
Front Panel Basics
|
||||
------------------
|
||||
|
||||
From the [PDP-11/70 Handbook (1979)](http://archive.pcjs.org/pubs/dec/pdp11/1170/PDP1170_Handbook_1979.pdf), Chapter 10,
|
||||
p. 325:
|
||||
|
||||
> ### CONSOLE OPERATION
|
||||
|
||||
> The PDP-11/70 console allows direct control of the computer system. It contains a power switch for the CPU,
|
||||
which is also usually used as the Master Switch for the system. The console is used for starting, stopping, resetting,
|
||||
and debugging. Lights and switches provide the facilities for monitoring operation, system control, and maintenance.
|
||||
Debugging and detailed tracing of operations can be accomplished by having the computer execute single instructions or
|
||||
single cycles. Contents of all locations can be examined, and data can be entered manually from the console switches.
|
||||
|
||||
The PDPjs Front Panel replicates most (but not all) the features of a real PDP-11/70 Console. The switches, which
|
||||
PDPjs displays as green to make them stand out from the rest of the traditional pink-and-magenta controls, are summarized
|
||||
below.
|
||||
|
||||
### 0..21
|
||||
|
||||
Switches 0 to 21 control bits 0 to 21 of the SWITCH register. The UP position represents a 1, and the DOWN position
|
||||
represents a 0. Once all the bits have been set, you can choose to load the contents of the SWITCH register into the
|
||||
ADDRESS register (as displayed by the top row of LEDs), or directly into the memory location referenced by the ADDRESS
|
||||
register (where it will become the DATA displayed by the second row of LEDs).
|
||||
|
||||
The SWITCH, ADDRESS, and DATA (aka DISPLAY) registers are all internal to the Front Panel hardware, and should not be
|
||||
confused with CPU registers.
|
||||
|
||||
### TEST
|
||||
|
||||
This is a momentary switch that is normally in the DOWN position. When held in the UP position, it turns on all LEDs.
|
||||
This "lamp test" was more important in the days when the lights were produced by bulbs with filaments that could burn out,
|
||||
and if you didn't realize that a particular light was "burned out", you could mistake it for a zero.
|
||||
|
||||
While the TEST switch is more "cute" than useful on a virtual Front Panel, we have added one "innovation" to the switch:
|
||||
pressing it also returns all the SWITCH register switches (0-21) to their DOWN position.
|
||||
|
||||
### LOAD [ADRS]
|
||||
|
||||
This is a momentary switch that is normally in the UP position. When pressed DOWN, it copies the SWITCH register to the
|
||||
ADDRESS register.
|
||||
|
||||
### EXAM
|
||||
|
||||
This is a momentary switch that is normally in the UP position. When pressed DOWN, it reads the memory location referenced
|
||||
by the ADDRESS register and displays it in the DATA register. If pressed repeatedly, each repetition also automatically
|
||||
adds 2 to the ADDRESS register, making it easier to examine a series of words. Note that if the CPU registers are being
|
||||
examined (starting at address 177700), the ADDRESS register will advance by 1 instead of 2.
|
||||
|
||||
Another "innovation" unique to PDPjs: if the STEP switch is toggled from the UP to the DOWN position, repeated EXAM or DEP
|
||||
operations will decrease the ADDRESS register instead of increasing it.
|
||||
|
||||
### DEP
|
||||
|
||||
This is a momentary switch that is normally in the DOWN position. When pressed UP, it writes the contents of the SWITCH
|
||||
register to the memory location referenced by the ADDRESS register, and displays the result in the DATA register. Like the
|
||||
EXAM switch, if DEP is pressed repeatedly, each repetition also automatically adds 2 to the ADDRESS register, making it easier
|
||||
to deposit the same value to a series of words.
|
||||
|
||||
### CONT
|
||||
|
||||
This is a momentary switch that is normally in the UP position. When pressed DOWN, it will start the CPU if it's currently
|
||||
halted. If the CPU is already running, CONT has no effect. Also, if the ENABLE/HALT switch is in the DOWN (HALT) position,
|
||||
then the CPU will continue for only ONE instruction and then stop again.
|
||||
|
||||
### ENABLE/HALT
|
||||
|
||||
This switch is a toggle that is normally in the UP (ENABLE) position. If it pressed DOWN while the CPU is running, the CPU will
|
||||
stop. Once the CPU is stopped, this switch has no effect, other than determining what CONT will do when pressed.
|
||||
|
||||
### STEP
|
||||
|
||||
On a real PDP-11, this would select between cycle-stepping vs. instruction-stepping. Since PDPjs doesn't support cycle-stepping,
|
||||
this switch has no effect (except as described above when the EXAM or DEP switches are pressed repeatedly).
|
||||
|
||||
### START
|
||||
|
||||
The START switch is similar to CONT, but it also performs the equivalent a RESET instruction before starting the CPU, so
|
||||
unless you're starting execution at the beginning of a program, using START instead of CONT to continue execution is probably
|
||||
not a good idea. Also, if the ENABLE/HALT switch is in the DOWN (HALT) position, START will still reset the machine but not
|
||||
execute anything.
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ Toggle-Ins
|
|||
|
||||
As DEC notes in the [PDP-11/70 Maintenance Service Guide](http://archive.pcjs.org/pubs/dec/pdp11/1170/PDP1170_Maintenance_Service_Guide_Apr88.pdf),
|
||||
Chapter 4: "There are several useful toggle-ins that are probably not very well known." Excerpts are provided below. If you're
|
||||
not sure how to "toggle in" code using a Front Panel, check out [Front Panel Basics](/devices/pdp11/machine/1170/panel/#front-panel-basics).
|
||||
not sure how to "toggle in" code using a Front Panel, check out [Front Panel Basics](/devices/pdp11/panel/1170/#front-panel-basics).
|
||||
|
||||
However, since the above machine also includes the PDPjs Debugger, you'll find that it's much easier to use the Debugger commands
|
||||
described below to load and execute these "toggle-ins".
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ permalink: /devices/pdp11/machine/
|
|||
PDP-11 Machine Configurations
|
||||
-----------------------------
|
||||
|
||||
[PDPjs](/modules/pdp11/), our PDP-11 emulation module, supports the following PDP-11 machines:
|
||||
[PDP-11 Devices](/devices/pdp11/) are used to build a variety of PDP-11 machines:
|
||||
|
||||
* [PDP-11/20](/devices/pdp11/machine/1120/)
|
||||
* PDP-11/45
|
||||
|
|
|
|||
|
|
@ -7,4 +7,90 @@ permalink: /devices/pdp11/panel/1170/
|
|||
PDP-11/70 Control Panels
|
||||
------------------------
|
||||
|
||||
The following Control Panel configurations are available:
|
||||
|
||||
* [PDP-11/70 Front Panel](front.xml) (with [Debugger](debugger/front.xml))
|
||||
|
||||
Use this [PDP-11/70](/devices/pdp11/machine/1170/panel/debugger/) to see the [PDP-11/70 Front Panel](debugger/front.xml) in action.
|
||||
|
||||
Front Panel Basics
|
||||
------------------
|
||||
|
||||
From the [PDP-11/70 Handbook (1979)](http://archive.pcjs.org/pubs/dec/pdp11/1170/PDP1170_Handbook_1979.pdf), Chapter 10,
|
||||
p. 325:
|
||||
|
||||
> ### CONSOLE OPERATION
|
||||
|
||||
> The PDP-11/70 console allows direct control of the computer system. It contains a power switch for the CPU,
|
||||
which is also usually used as the Master Switch for the system. The console is used for starting, stopping, resetting,
|
||||
and debugging. Lights and switches provide the facilities for monitoring operation, system control, and maintenance.
|
||||
Debugging and detailed tracing of operations can be accomplished by having the computer execute single instructions or
|
||||
single cycles. Contents of all locations can be examined, and data can be entered manually from the console switches.
|
||||
|
||||
The PDPjs Front Panel replicates most (but not all) the features of a real PDP-11/70 Console. The switches, which
|
||||
PDPjs displays as green to make them stand out from the rest of the traditional pink-and-magenta controls, are summarized
|
||||
below.
|
||||
|
||||
### 0..21
|
||||
|
||||
Switches 0 to 21 control bits 0 to 21 of the SWITCH register. The UP position represents a 1, and the DOWN position
|
||||
represents a 0. Once all the bits have been set, you can choose to load the contents of the SWITCH register into the
|
||||
ADDRESS register (as displayed by the top row of LEDs), or directly into the memory location referenced by the ADDRESS
|
||||
register (where it will become the DATA displayed by the second row of LEDs).
|
||||
|
||||
The SWITCH, ADDRESS, and DATA (aka DISPLAY) registers are all internal to the Front Panel hardware, and should not be
|
||||
confused with CPU registers.
|
||||
|
||||
### TEST
|
||||
|
||||
This is a momentary switch that is normally in the DOWN position. When held in the UP position, it turns on all LEDs.
|
||||
This "lamp test" was more important in the days when the lights were produced by bulbs with filaments that could burn out,
|
||||
and if you didn't realize that a particular light was "burned out", you could mistake it for a zero.
|
||||
|
||||
While the TEST switch is more "cute" than useful on a virtual Front Panel, we have added one "innovation" to the switch:
|
||||
pressing it also returns all the SWITCH register switches (0-21) to their DOWN position.
|
||||
|
||||
### LOAD [ADRS]
|
||||
|
||||
This is a momentary switch that is normally in the UP position. When pressed DOWN, it copies the SWITCH register to the
|
||||
ADDRESS register.
|
||||
|
||||
### EXAM
|
||||
|
||||
This is a momentary switch that is normally in the UP position. When pressed DOWN, it reads the memory location referenced
|
||||
by the ADDRESS register and displays it in the DATA register. If pressed repeatedly, each repetition also automatically
|
||||
adds 2 to the ADDRESS register, making it easier to examine a series of words. Note that if the CPU registers are being
|
||||
examined (starting at address 177700), the ADDRESS register will advance by 1 instead of 2.
|
||||
|
||||
Another "innovation" unique to PDPjs: if the STEP switch is toggled from the UP to the DOWN position, repeated EXAM or DEP
|
||||
operations will decrease the ADDRESS register instead of increasing it.
|
||||
|
||||
### DEP
|
||||
|
||||
This is a momentary switch that is normally in the DOWN position. When pressed UP, it writes the contents of the SWITCH
|
||||
register to the memory location referenced by the ADDRESS register, and displays the result in the DATA register. Like the
|
||||
EXAM switch, if DEP is pressed repeatedly, each repetition also automatically adds 2 to the ADDRESS register, making it easier
|
||||
to deposit the same value to a series of words.
|
||||
|
||||
### CONT
|
||||
|
||||
This is a momentary switch that is normally in the UP position. When pressed DOWN, it will start the CPU if it's currently
|
||||
halted. If the CPU is already running, CONT has no effect. Also, if the ENABLE/HALT switch is in the DOWN (HALT) position,
|
||||
then the CPU will continue for only ONE instruction and then stop again.
|
||||
|
||||
### ENABLE/HALT
|
||||
|
||||
This switch is a toggle that is normally in the UP (ENABLE) position. If it pressed DOWN while the CPU is running, the CPU will
|
||||
stop. Once the CPU is stopped, this switch has no effect, other than determining what CONT will do when pressed.
|
||||
|
||||
### STEP
|
||||
|
||||
On a real PDP-11, this would select between cycle-stepping vs. instruction-stepping. Since PDPjs doesn't support cycle-stepping,
|
||||
this switch has no effect (except as described above when the EXAM or DEP switches are pressed repeatedly).
|
||||
|
||||
### START
|
||||
|
||||
The START switch is similar to CONT, but it also performs the equivalent a RESET instruction before starting the CPU, so
|
||||
unless you're starting execution at the beginning of a program, using START instead of CONT to continue execution is probably
|
||||
not a good idea. Also, if the ENABLE/HALT switch is in the DOWN (HALT) position, START will still reset the machine but not
|
||||
execute anything.
|
||||
|
|
|
|||
|
|
@ -7,12 +7,15 @@ permalink: /devices/pdp11/rl11/
|
|||
RL11 Disk Controller
|
||||
--------------------
|
||||
|
||||
The RL11 Disk Controller controls up to four RL01 or RL02 disk drives, which in turn read/write RL01K or
|
||||
[RL02K](/disks/dec/rl02k/) disk cartridges.
|
||||
|
||||
Machines containing the [RL11 Component](/modules/pdp11/lib/pc11.js) include:
|
||||
|
||||
- [PDP-11/70 Boot Monitor](/devices/pdp11/machine/1170/monitor/) (with [Debugger](/devices/pdp11/machine/1170/monitor/debugger/))
|
||||
- [PDP-11/70 with Front Panel](/devices/pdp11/machine/1170/panel/) (with [Debugger](/devices/pdp11/machine/1170/panel/debugger/))
|
||||
|
||||
PCjs has archived a selection of [RL02K Disk Images](/disks/dec/rl02k/) for use by those machines, most of which are
|
||||
PCjs has archived a selection of [RL02K Disk Images](/disks/dec/rl02k/) for use by those machines, which are
|
||||
listed in the following RL11 Device XML file:
|
||||
|
||||
- [Default](/devices/pdp11/rl11/default.xml)
|
||||
|
|
@ -25,18 +28,15 @@ Device XML files not only configure a device, but also list all the resource the
|
|||
used to control the device, such as choosing which disks should be "auto-mounted" by the RL11 device. For example:
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<device id="pc11" type="pc11" baudReceive="9600" autoMount='{path:"/apps/pdp11/tapes/absloader/DEC-11-L2PC-PO.json"}' pos="left" width="35%" padLeft="8px" padBottom="8px">
|
||||
<name>Paper Tape Controls</name>
|
||||
<device id="rl11" type="rl11" autoMount='{RL3:{path:"http://archive.pcjs.org/disks/dec/rl02k/RL02K-XXDP.json"}}' pos="left" width="35%" padLeft="8px" padBottom="8px">
|
||||
<name>Disk Drive Controls</name>
|
||||
<control type="container">
|
||||
<control type="list" binding="listTapes">
|
||||
<tape id="tape00" name="Bootstrap Loader (16Kb)" path="/apps/pdp11/boot/bootstrap/BOOTSTRAP-16KB.json"/>
|
||||
<tape id="tape01" name="Absolute Loader" path="/apps/pdp11/tapes/absloader/DEC-11-L2PC-PO.json"/>
|
||||
<tape id="tape02" name="BASIC (Single User)" path="/apps/pdp11/tapes/basic/DEC-11-AJPB-PB.json"/>
|
||||
<control type="list" binding="listDrives"/>
|
||||
<control type="list" binding="listDisks">
|
||||
<disk id="rl3" name="XXDP+ Diagnostics" path="http://archive.pcjs.org/disks/dec/rl02k/RL02K-XXDP.json"/>
|
||||
</control>
|
||||
<control type="button" binding="attachTape">Attach</control>
|
||||
<control type="button" binding="loadTape">Load</control>
|
||||
<control type="description" binding="descTape" padRight="8px"/>
|
||||
<control type="file" binding="mountTape"/>
|
||||
<control type="progress" binding="readProgress" pos="default" width="250px" padTop="8px">Tape Progress</control>
|
||||
<control type="button" binding="loadDrive">Load</control>
|
||||
<control type="description" binding="descDisk" padRight="8px"/>
|
||||
<control type="file" binding="mountDisk"/>
|
||||
</control>
|
||||
</device>
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
<control type="container">
|
||||
<control type="list" binding="listDrives"/>
|
||||
<control type="list" binding="listDisks">
|
||||
<disk id="rl3" name="XXDP Diagnostics" path="http://archive.pcjs.org/disks/dec/rl02k/RL02K-XXDP.json"/>
|
||||
<disk id="rl3" name="XXDP+ Diagnostics" path="http://archive.pcjs.org/disks/dec/rl02k/RL02K-XXDP.json"/>
|
||||
</control>
|
||||
<control type="button" binding="loadDrive">Load</control>
|
||||
<control type="description" binding="descDisk" padRight="8px"/>
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ Browse these PCjs Disk Libraries:
|
|||
|
||||
* [IBM PC](pcx86/)
|
||||
* [Challenger 1P](c1p/)
|
||||
* [DEC](dec/)
|
||||
|
||||
Additional selected software is available in the PCjs [Software Archives](/apps/).
|
||||
|
||||
|
|
|
|||
16
disks/dec/README.md
Normal file
16
disks/dec/README.md
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
---
|
||||
layout: page
|
||||
title: DEC Disk Images
|
||||
permalink: /disks/dec/
|
||||
---
|
||||
|
||||
DEC Disk Images
|
||||
---------------
|
||||
|
||||
The DEC disk images we have archived are organized by type:
|
||||
|
||||
* RL01K
|
||||
* [RL02K](rl02k/)
|
||||
|
||||
RL01K and RL02K disks are both single-platter cartridges with capacities of 5Mb and 10Mb, respectively,
|
||||
and are designed to be used with an [RL11 Disk Controller](/devices/pdp11/rl11/).
|
||||
13
disks/dec/rl02k/README.md
Normal file
13
disks/dec/rl02k/README.md
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
---
|
||||
layout: page
|
||||
title: DEC RL02K Disk Images
|
||||
permalink: /disks/dec/rl02k/
|
||||
---
|
||||
|
||||
DEC RL02K Disk Images
|
||||
---------------------
|
||||
|
||||
RL02K disks are single-platter cartridges with 512 tracks per side, 40 sectors per track, and a sector size of 256 bytes,
|
||||
for a total capacity of 10Mb. They are used with an [RL11 Disk Controller](/devices/pdp11/rl11/).
|
||||
|
||||
* XXDP+ Diagnostics [[source](http://skn.noip.me/pdp11/)]
|
||||
|
|
@ -10,7 +10,7 @@ PDP-11 Machine Emulation Module (PDPjs)
|
|||
Overview
|
||||
---
|
||||
PDPjs, our PDP-11 machine emulation module, is adapted from
|
||||
the JavaScript [PDP 11/70 Emulator (v1.4)](http://skn.noip.me/pdp11/pdp11.html) written by
|
||||
the [PDP 11/70 Emulator (v1.4)](http://skn.noip.me/pdp11/pdp11.html) written by
|
||||
[Paul Nankervis](mailto:paulnank@hotmail.com).
|
||||
|
||||
See the list of available [PDP-11 Machines](/devices/pdp11/machine/), which includes a
|
||||
|
|
@ -33,5 +33,7 @@ PDPjs is currently comprised of the following non-shared components, as listed i
|
|||
* [keyboard.js](/modules/pdp11/lib/keyboard.js)
|
||||
* [serialport.js](/modules/pdp11/lib/serialport.js)
|
||||
* [pc11.js](/modules/pdp11/lib/pc11.js)
|
||||
* [disk.js](/modules/pdp11/lib/disk.js)
|
||||
* [rl11.js](/modules/pdp11/lib/rl11.js)
|
||||
* [debugger.js](/modules/pdp11/lib/debugger.js)
|
||||
* [computer.js](/modules/pdp11/lib/computer.js)
|
||||
|
|
|
|||
|
|
@ -579,7 +579,8 @@ var PDP11 = {
|
|||
DELAY: 0,
|
||||
LKS: {
|
||||
IE: 0x0040, // Interrupt Enable
|
||||
MON: 0x0080 // Monitor
|
||||
MON: 0x0080, // Monitor
|
||||
MASK: 0x00C0 // these are the only bits that can read or written
|
||||
}
|
||||
},
|
||||
PC11: { // High Speed Reader & Punch (PR11 is a Reader-only unit)
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ DevicePDP11.prototype.initBus = function(cmp, bus, cpu, dbg)
|
|||
*/
|
||||
DevicePDP11.prototype.reset = function()
|
||||
{
|
||||
this.kw11.lks = 0;
|
||||
this.kw11.lks = PDP11.KW11.LKS.MON;
|
||||
this.cpu.setTimer(this.kw11.timer, 1000/60, true);
|
||||
};
|
||||
|
||||
|
|
@ -148,10 +148,9 @@ DevicePDP11.prototype.reset = function()
|
|||
* interruptKW11()
|
||||
*
|
||||
* We used to call this function only when the the KW11's "Interrupt Enable" bit was set,
|
||||
* but now we call it at 60Hz regardless. In part, this was so we could piggy-back on
|
||||
* it to drive display updates, but more importantly, the KW11's "Monitor" bit is supposed
|
||||
* to be set at the "line frequency" independent of whether KW11 interrupts are enabled.
|
||||
* So we should actually be more compatible now.
|
||||
* but now we call it at 60Hz regardless. In part, this was so we could piggy-back on it
|
||||
* to drive display updates, but more importantly, the KW11's "Monitor" bit is supposed to
|
||||
* be set at the "line frequency" independent of whether KW11 interrupts are enabled or not.
|
||||
*
|
||||
* @this {DevicePDP11}
|
||||
*/
|
||||
|
|
@ -174,9 +173,12 @@ DevicePDP11.prototype.interruptKW11 = function()
|
|||
*/
|
||||
DevicePDP11.prototype.readLKS = function(addr)
|
||||
{
|
||||
var result = this.kw11.lks;
|
||||
this.kw11.lks &= ~PDP11.KW11.LKS.MON;
|
||||
return result;
|
||||
/*
|
||||
* NOTE: The original code always cleared LKS.MON (bit 7) after snapping the value for the read,
|
||||
* but based on DEC's "Non-Interrupt Mode" programming examples, it's clear that's not how LKS.MON
|
||||
* operates; if the caller wants to clear it, they must explicitly clear it with a write.
|
||||
*/
|
||||
return this.kw11.lks;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -188,7 +190,12 @@ DevicePDP11.prototype.readLKS = function(addr)
|
|||
*/
|
||||
DevicePDP11.prototype.writeLKS = function(data, addr)
|
||||
{
|
||||
this.kw11.lks = data & ~PDP11.KW11.LKS.MON;
|
||||
/*
|
||||
* NOTE: The original code always cleared LKS.MON (bit 7) as part of any write, but based on DEC's
|
||||
* "Non-Interrupt Mode" programming examples, which explicitly CLRB after TSTB reveals LKS.MON is set,
|
||||
* I think that was wrong, and that all a write should do is mask off all the other (non-writable) bits.
|
||||
*/
|
||||
this.kw11.lks = data & PDP11.KW11.LKS.MASK;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -7,4 +7,5 @@ permalink: /pubs/dec/
|
|||
Digital Equipment Corporation (DEC) Publications
|
||||
------------------------------------------------
|
||||
|
||||
* [PDP-11](pdp11/)
|
||||
* [VT100](vt100/)
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue