mirror of
https://github.com/simh/simh.git
synced 2026-04-24 19:33:40 +00:00
1. New Features in 3.3-2 1.1 SCP and Libraries - Added ASSERT command (from Dave Bryan) 1.2 PDP-11, VAX - Added RA60, RA71, RA81 disks 2. Bugs Fixed in 3.3-2 2.1 H316 - Fixed IORETURN macro - PT: fixed bug in OCP '0001 (found by Philipp Hachtmann) - MT: fixed error reporting from OCP (found by Philipp Hachtmann) 2.2 Interdata 32b - Fixed branches to mask new PC (from Greg Johnson) 2.3 PDP-11 - Fixed bugs in RESET for 11/70 (reported by Tim Chapman) - Fixed bug in SHOW MODEL (from Sergey Okhapkin) - Made SYSID variable for 11/70 (from Tim Chapman) - Fixed MBRK write case for 11/70 (from Tim Chapman) - RY: fixed bug in boot code (reported by Graham Toal) 2.4 VAX - Fixed initial state of cpu_extmem 2.5 HP2100 (from Dave Bryan) - Fixed missing MPCK on JRS target - Removed EXECUTE instruction (is NOP in actual microcode) - Fixed missing negative overflow renorm in StoreFP 2.6 I1401 - Fixed bug in line printer write line (reported by Van Snyder)
1125 lines
40 KiB
Plaintext
1125 lines
40 KiB
Plaintext
To: Users
|
|
From: Bob Supnik
|
|
Subj: VAX Simulator Usage
|
|
Date: 15-Nov-2004
|
|
|
|
COPYRIGHT NOTICE
|
|
|
|
The following copyright notice applies to both the SIMH source and binary:
|
|
|
|
Original code published in 1993-2005, written by Robert M Supnik
|
|
Copyright (c) 1993-2005, Robert M Supnik
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a
|
|
copy of this software and associated documentation files (the "Software"),
|
|
to deal in the Software without restriction, including without limitation
|
|
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
and/or sell copies of the Software, and to permit persons to whom the
|
|
Software is furnished to do so, subject to the following conditions:
|
|
|
|
The above copyright notice and this permission notice shall be included in
|
|
all copies or substantial portions of the Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
ROBERT M SUPNIK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
Except as contained in this notice, the name of Robert M Supnik shall not
|
|
be used in advertising or otherwise to promote the sale, use or other dealings
|
|
in this Software without prior written authorization from Robert M Supnik.
|
|
|
|
This memorandum documents the VAX simulator.
|
|
|
|
|
|
1. Simulator Files
|
|
|
|
To compile the VAX, you must define VM_VAX and USE_INT64 as part of the compilation
|
|
command line. To enable extended file support (files greater than 2GB), you must
|
|
define USE_ADDR64 as part of the command line as well.
|
|
|
|
sim/ scp.h
|
|
sim_console.h
|
|
sim_defs.h
|
|
sim_ether.h
|
|
sim_fio.h
|
|
sim_rev.h
|
|
sim_sock.h
|
|
sim_tape.h
|
|
sim_timer.h
|
|
sim_tmxr.h
|
|
scp.c
|
|
sim_console.c
|
|
sim_ether.c
|
|
sim_fio.c
|
|
sim_sock.c
|
|
sim_tape.c
|
|
sim_timer.c
|
|
sim_tmxr.c
|
|
|
|
sim/vax/ vax_defs.h
|
|
vaxmod_defs.h
|
|
vax_cis.c
|
|
vax_cmode.c
|
|
vax_cpu.c
|
|
vax_cpu1.c
|
|
vax_fpa.c
|
|
vax_io.c
|
|
vax_mmu.c
|
|
vax_octa.c
|
|
vax_stddev.c
|
|
vax_sys.c
|
|
vax_syscm.c
|
|
vax_sysdev.c
|
|
vax_syslist.c
|
|
|
|
sim/pdp11/ pdp11_mscp.h
|
|
pdp11_uqssp.h
|
|
pdp11_xq.h
|
|
pdp11_xq_bootrom.h
|
|
pdp11_dz.c
|
|
pdp11_lp.c
|
|
pdp11_rl.c
|
|
pdp11_ry.c
|
|
pdp11_rq.c
|
|
pdp11_tq.c
|
|
pdp11_ts.c
|
|
pdp11_vh.c
|
|
pdp11_xq.c
|
|
|
|
Additional files are:
|
|
|
|
sim/vax/ ka655.bin standard boot ROM code
|
|
ka655x.bin extended memory boot ROM code
|
|
|
|
2. VAX Features
|
|
|
|
The VAX simulator is configured as follows:
|
|
|
|
device simulates
|
|
name(s)
|
|
|
|
CPU KA655 CPU with 16MB-64MB of memory, or
|
|
"KA655X" CPU with 16MB-512MB of memory
|
|
TLB translation buffer
|
|
ROM read-only memory
|
|
NVR non-volatile memory
|
|
QBA Qbus adapter
|
|
SYSD system devices
|
|
TTI,TTO console terminal
|
|
CLK real-time clock
|
|
DZ DZV11 4-line terminal multiplexor (up to 4)
|
|
VH DHQ11 8-line terminal multiplexor (up to 4)
|
|
LPT LPV11 line printer
|
|
RL RLV12/RL01(2) cartridge disk controller with four drives
|
|
RQ RQDX3 MSCP controller with four drives
|
|
RQB second RQDX3 MSCP controller with four drives
|
|
RQC third RQDX3 MSCP controller with four drives
|
|
RQD fourth RQDX3 MSCP controller with four drives
|
|
RY RXV21 floppy disk controller with two drives
|
|
TS TSV11/TSV05 magnetic tape controller with one drive
|
|
TQ TQK50 TMSCP magnetic tape controller with four drives
|
|
XQ DELQA/DEQNA Ethernet controller
|
|
XQB second DELQA/DEQNA Ethernet controller
|
|
|
|
The DZ, VH, LPT, RL, RQ, RQB, RQC, RQD, RY, TS, TQ, XQ, and XQB
|
|
devices can be set DISABLED. RQB, RQC, RQD, and XQB are disabled by
|
|
default.
|
|
|
|
The VAX simulator implements several unique stop conditions:
|
|
|
|
- change mode to interrupt stack
|
|
- illegal vector (bits<1:0> = 2 or 3)
|
|
- unexpected exception during interrupt or exception
|
|
- process PTE in P0 or P1 space instead of system space
|
|
- unknown IPL
|
|
- infinite loop (BRB/W to self at IPL 1F)
|
|
|
|
The VAX supports a simple binary format consisting of a stream of
|
|
binary bytes without origin or checksum, for loading memory, the boot
|
|
ROM, or the non-volatile memory.
|
|
|
|
2.1 CPU and System Devices
|
|
|
|
2.2 CPU
|
|
|
|
CPU options include the size of main memory and the treatment of the
|
|
HALT instruction.
|
|
|
|
SET CPU EXTEND enable extended memory support
|
|
SET CPU NOEXTEND disable extended memory support
|
|
SET CPU 16M set memory size = 16MB
|
|
SET CPU 32M set memory size = 32MB
|
|
SET CPU 48M set memory size = 48MB
|
|
SET CPU 64M set memory size = 64MB
|
|
SET CPU 128M set memory size = 128MB
|
|
SET CPU 256M set memory size = 256MB
|
|
SET CPU 512M set memory size = 512MB
|
|
SET CPU SIMHALT kernel HALT returns to simulator
|
|
SET CPU CONHALT kernel HALT returns to boot ROM console
|
|
|
|
The CPU implements a show command to display the I/O address map:
|
|
|
|
SHOW CPU IOSPACE show I/O space address map
|
|
|
|
The CPU also implements a command to display a virtual to physical address
|
|
translation:
|
|
|
|
SHOW CPU VIRTUAL=n show translation for address n
|
|
|
|
Notes on memory size:
|
|
|
|
- The real KA655 CPU only supported 16MB to 64MB of memory. The simulator
|
|
provides a KA655"X" mode, which increases supported memory to 512MB.
|
|
Extended memory is enabled by default. If extended memory is enabled,
|
|
and memory size exceeds 64MB, the CPU will boot using special firmware
|
|
ka655x.bin. This firmware contains code to determine the size of extended
|
|
memory and set up the PFN bit map accordingly. Other than setting up
|
|
the PFN bootmap, the firmware does not recognize extended memory and
|
|
will behave as though memory size was 64MB.
|
|
- If memory size is being reduced, and the memory being truncated contains
|
|
non-zero data, the simulator asks for confirmation. Data in the truncated
|
|
portion of memory is lost.
|
|
- If the simulator is running VMS, the operating system may have a SYSGEN
|
|
parameter set called PHYSICAL PAGES (viewable from "MCR SYSGEN SHOW
|
|
PHYSICALPAGES"). PHYSICALPAGES limits the maximum number of physical pages
|
|
of memory the OS will recognize. If it is set to a lower value than the
|
|
new memory size of the machine, then only the first PHYSICALPAGES of
|
|
memory will be recognized, otherwise the actual size of the extended
|
|
memory will be realized by VMS upon each boot. Some users and/or sites
|
|
may specify the PHYSICALPAGES parameter in the input file to AUTOGEN
|
|
(SYS$SYSTEM:MODPARAMS.DAT). If PHYSICALPAGES is specified there, it will
|
|
have to be adjusted before running AUTOGEN to recognize more memory. The
|
|
default value for PHYSICALPAGES is 1048576, which describes 512MB of RAM.
|
|
|
|
Initial memory size is 16MB.
|
|
|
|
Memory can be loaded with a binary byte stream using the LOAD command.
|
|
The LOAD command recognizes three switch:
|
|
|
|
-o origin argument follows file name
|
|
-r load the boot ROM
|
|
-n load the non-volatile RAM
|
|
|
|
The CPU supports the BOOT command and is the only VAX device to do so.
|
|
Note that the behavior of the bootstrap depends on the capabilities of
|
|
the console terminator emulator. If the terminal window supports full
|
|
VT100 emulation (including Multilanguage Character Set support), the
|
|
bootstrap will ask the user to specify the language; otherwise, it will
|
|
default to English.
|
|
|
|
These switches are recognized when examining or depositing in CPU memory
|
|
(or any other byte oriented device):
|
|
|
|
-b examine/deposit bytes
|
|
-w examine/deposit words
|
|
-l examine/deposit longwords
|
|
-d data radix is decimal
|
|
-o data radix is octal
|
|
-h data radix is hexadecimal
|
|
|
|
These switches are recognized when examining or depositing in CPU memory
|
|
only:
|
|
|
|
-m examine (only) VAX instructions
|
|
-p examine/deposit PDP-11 (compatibility mode)
|
|
instructions
|
|
-r examine (only) RADIX50 encoded data
|
|
-v interpret address as virtual, current mode
|
|
|
|
CPU registers include the visible state of the processor as well as the
|
|
control registers for the interrupt system.
|
|
|
|
name size comments
|
|
|
|
PC 32 program counter
|
|
R0..R14 32 R0..R14
|
|
AP 32 alias for R12
|
|
FP 32 alias for R13
|
|
SP 32 alias for R14
|
|
PSL 32 processor status longword
|
|
CC 4 condition codes, PSL<3:0>
|
|
KSP 32 kernel stack pointer
|
|
ESP 32 executive stack pointer
|
|
SSP 32 supervisor stack pointer
|
|
USP 32 user stack pointer
|
|
IS 32 interrupt stack pointer
|
|
SCBB 32 system control block base
|
|
PCBB 32 process controll block base
|
|
P0BR 32 P0 base register
|
|
P0LR 22 P0 length register
|
|
P1BR 32 P1 base register
|
|
P1LR 22 P1 length register
|
|
SBR 32 system base register
|
|
SLR 22 system length register
|
|
SISR 16 software interrupt summary register
|
|
ASTLVL 4 AST level register
|
|
MAPEN 1 memory management enable
|
|
PME 1 performance monitor enable
|
|
TRPIRQ 8 trap/interrupt pending
|
|
CRDERR 1 correctible read data error flag
|
|
MEMERR 1 memory error flag
|
|
PCQ[0:63] 32 PC prior to last PC change or interrupt;
|
|
most recent PC change first
|
|
WRU 8 interrupt character
|
|
|
|
The CPU can maintain a history of the most recently executed instructions.
|
|
This is controlled by the SET CPU HISTORY and SHOW CPU HISTORY commands:
|
|
|
|
SET CPU HISTORY clear history buffer
|
|
SET CPU HISTORY=0 disable history
|
|
SET CPU HISTORY=n enable history, length = n
|
|
SHOW CPU HISTORY print CPU history
|
|
SHOW CPU HISTORY=n print first n entries of CPU history
|
|
|
|
The maximum length for the history is 65536 entries.
|
|
|
|
2.1.2 Translation Buffer (TLB)
|
|
|
|
The translation buffer consists of two units, representing the system
|
|
and user translation buffers, respectively. It has no registers. Each
|
|
translation buffer entry consists of two 32b words, as follows:
|
|
|
|
word n tag
|
|
word n+1 cached PTE
|
|
|
|
An invalid entry is indicated by a tag of FFFFFFFF.
|
|
|
|
2.1.3 Qbus Adapter (QBA)
|
|
|
|
The QBA represents the CQBIC Qbus adapter chip. It recognizes the
|
|
following options:
|
|
|
|
SET QBA AUTOCONFIGURE enable autoconfiguration
|
|
SET QBA NOAUTOCONFIGURE disable autoconfiguration
|
|
|
|
and the following display command:
|
|
|
|
SHOW QBA IOSPACE show IO space addresses
|
|
|
|
The QBA registers are:
|
|
|
|
name size comments
|
|
|
|
SCR 16 system configuration register
|
|
DSER 8 DMA system error register
|
|
MEAR 13 master error address register
|
|
SEAR 20 slave error address register
|
|
MBR 29 Qbus map base register
|
|
IPC 16 interprocessor communications register
|
|
IPL17 32 IPL 17 interrupt flags
|
|
IPL16 32 IPL 16 interrupt flags
|
|
IPL15 32 IPL 15 interrupt flags
|
|
IPL14 32 IPL 14 interrupt flags
|
|
|
|
2.1.4 Read-only memory (ROM)
|
|
|
|
The boot ROM consists of a single unit, representing the 128KB boot ROM.
|
|
It has no registers. The boot ROM is loaded with a binary byte stream
|
|
using the LOAD -r command:
|
|
|
|
LOAD -r KA655.BIN load ROM image KA655.BIN (normal memory)
|
|
LOAD -r KA655X.BIN laod ROM image KA655X.BIN (extended memory)
|
|
|
|
ROM accesses a use a calibrated delay that slows ROM-based execution to
|
|
about 500K instructions per second. This delay is required to make the
|
|
power-up self-test routines run correctly on very fast hosts. The delay
|
|
is controlled with the commands:
|
|
|
|
SET ROM NODELAY ROM runs like RAM
|
|
SET ROM DELAY ROM runs slowly
|
|
|
|
2.1.5 Non-volatile Memory (NVR)
|
|
|
|
The NVR consists of a single unit, representing 1KB of battery-backed up
|
|
memory. When the simulator starts, NVR is cleared to 0, and the SSC
|
|
battery-low indicator is set. Normally, NVR is saved and restored like
|
|
other memory in the system. Alternately, NVR can be attached to a file.
|
|
This allows its contents to be saved and restored independently of
|
|
other memories, so that NVR state can be preserved across simulator runs.
|
|
|
|
Successfully loading an NVR image clears the SSC battery-low indicator.
|
|
|
|
2.1.6 System Devices (SYSD)
|
|
|
|
The system devices are the system-specific facilities implemented in the
|
|
CVAX chip, the KA655 CPU board, the CMCTL memory controller, and the SSC
|
|
system support chip. Note that the simulation of these devices is
|
|
incomplete and is intended strictly to allow the patched bootstrap and
|
|
console code to run. The SYSD registers are:
|
|
|
|
name size comments
|
|
|
|
CADR 8 cache disable register
|
|
MSER 8 memory system error register
|
|
CONPC 32 PC at console halt
|
|
CONPSL 32 PSL at console halt
|
|
CMCSR[0:17] 32 CMCTL control and status registers
|
|
CACR 8 second-level cache control register
|
|
BDR 8 front panel jumper register
|
|
BASE 29 SSC base address register
|
|
CNF 32 SSC configuration register
|
|
BTO 32 SSC bus timeout register
|
|
TCSR0 32 SSC timer 0 control/status register
|
|
TIR0 32 SSC timer 0 interval register
|
|
TNIR0 32 SSC timer 0 next interval register
|
|
TIVEC0 9 SSC timer 0 interrupt vector register
|
|
TCSR1 32 SSC timer 1 control/status register
|
|
TIR1 32 SSC timer 1 interval register
|
|
TNIR1 32 SSC timer 1 next interval register
|
|
TIVEC1 9 SSC timer 1 interrupt vector register
|
|
ADSM0 32 SSC address match 0 address
|
|
ADSK0 32 SSC address match 0 mask
|
|
ADSM1 32 SSC address match 1 address
|
|
ADSK1 32 SSC address match 1 mask
|
|
CDGDAT[0:16383] 32 cache diagnostic data store
|
|
|
|
BDR<7> is the halt-enabled switch. It controls how the console firmware
|
|
responds to a BOOT command, a kernel halt (if option CONHALT is set), or
|
|
a console halt (BREAK typed on the console terminal). If BDR<7> is set,
|
|
the console firmware responds to all these conditions by entering its
|
|
interactive command mode. If BDR<7> is clear, the console firmware
|
|
boots the operating system in response to these conditions.
|
|
|
|
2.2 I/O Device Addressing
|
|
|
|
Qbus I/O space is not large enough to allow all possible devices to be
|
|
configured simultaneously at fixed addresses. Instead, many devices have
|
|
floating addresses; that is, the assigned device address depends on the
|
|
presense of other devices in the configuration:
|
|
|
|
DZ11 all instances have floating addresses
|
|
DQH11 all instances have floating addresses
|
|
RL11 first instance has fixed address, rest floating
|
|
RX11/RX211 first instance has fixed address, second floating
|
|
MSCP disk first instance has fixed address, rest floating
|
|
TMSCP tape first instance has fixed address, rest floating
|
|
|
|
To maintain addressing consistency as the configuration changes, the
|
|
simulator implements DEC's standard I/O address and vector autoconfiguration
|
|
algorithms for devices DZ, VH, RL, RQ, and TQ. This allows the user to
|
|
enable or disable devices without needing to manage I/O addresses
|
|
and vectors.
|
|
|
|
In addition to autoconfiguration, most devices support the SET ADDRESS
|
|
command, which allows the I/O page address of the device to be changed,
|
|
and the SET VECTOR command, which allows the vector of the device to be
|
|
changed. Explicitly setting the I/O address of a device which normally
|
|
uses autoconfiguration DISABLES autoconfiguration for that device and for
|
|
the entire system. As a consequence, the user may have to manually configure
|
|
all other autoconfigured devices, because the autoconfiguration algorithm
|
|
no longer recognizes the explicitly configured device. A device can be
|
|
reset to autoconfigure with the SET <device> AUTOCONFIGURE command. Auto-
|
|
configuration can be restored for the entire system with the SET QBA
|
|
AUTOCONFIGURE command.
|
|
|
|
The current I/O map can be displayed with the SHOW QBA IOSPACE command.
|
|
Addresses that have set by autoconfiguration are marked with an asterisk (*).
|
|
|
|
All devices support the SHOW ADDRESS and SHOW VECTOR commands, which display
|
|
the device address and vector, respectively.
|
|
|
|
2.3 Programmed I/O Devices
|
|
|
|
2.3.1 Terminal Input (TTI)
|
|
|
|
The terminal interfaces (TTI, TTO) can be set to one of two modes:
|
|
7B or 8B. In 7B mode, input and output characters are masked to 7
|
|
bits. In 8B mode, characters are not modified. Changing the mode
|
|
of either interface changes both. The default mode is 8B.
|
|
|
|
When the console terminal is attached to a Telnet session, it
|
|
recognizes BREAK. If BREAK is entered, and BDR<7> is set, control
|
|
returns to the console firmware; otherwise, BREAK is treated as a
|
|
normal terminal input condition.
|
|
|
|
The terminal input (TTI) polls the console keyboard for input. It
|
|
implements these registers:
|
|
|
|
name size comments
|
|
|
|
BUF 8 last data item processed
|
|
CSR 16 control/status register
|
|
INT 1 interrupt pending flag
|
|
ERR 1 error flag (CSR<15>)
|
|
DONE 1 device done flag (CSR<7>)
|
|
IE 1 interrupt enable flag (CSR<6>)
|
|
POS 32 number of characters input
|
|
TIME 24 keyboard polling interval
|
|
|
|
2.3.2 Terminal Output (TTO)
|
|
|
|
The terminal output (TTO) writes to the simulator console window. It
|
|
implements these registers:
|
|
|
|
name size comments
|
|
|
|
BUF 8 last data item processed
|
|
CSR 16 control/status register
|
|
INT 1 interrupt pending flag
|
|
ERR 1 error flag (CSR<15>)
|
|
DONE 1 device done flag (CSR<7>)
|
|
IE 1 interrupt enable flag (CSR<6>)
|
|
POS 32 number of characters input
|
|
TIME 24 time from I/O initiation to interrupt
|
|
|
|
2.3.3 Line Printer (LPT)
|
|
|
|
The line printer (LPT) writes data to a disk file. The POS register
|
|
specifies the number of the next data item to be written. Thus,
|
|
by changing POS, the user can backspace or advance the printer.
|
|
|
|
The line printer implements these registers:
|
|
|
|
name size comments
|
|
|
|
BUF 8 last data item processed
|
|
CSR 16 control/status register
|
|
INT 1 interrupt pending flag
|
|
ERR 1 error flag (CSR<15>)
|
|
DONE 1 device done flag (CSR<7>)
|
|
IE 1 interrupt enable flag (CSR<6>)
|
|
POS 32 position in the output file
|
|
TIME 24 time from I/O initiation to interrupt
|
|
STOP_IOE 1 stop on I/O error
|
|
|
|
Error handling is as follows:
|
|
|
|
error STOP_IOE processed as
|
|
|
|
not attached 1 report error and stop
|
|
0 out of paper
|
|
|
|
OS I/O error x report error and stop
|
|
|
|
2.3.4 Real-Time Clock (CLK)
|
|
|
|
The clock (CLK) implements these registers:
|
|
|
|
name size comments
|
|
|
|
CSR 16 control/status register
|
|
INT 1 interrupt pending flag
|
|
IE 1 interrupt enable flag (CSR<6>)
|
|
TODR 32 time-of-day register
|
|
BLOW 1 TODR battery low indicator
|
|
TIME 24 clock frequency
|
|
TPS 8 ticks per second (100)
|
|
|
|
The real-time clock autocalibrates; the clock interval is adjusted up or
|
|
down so that the clock tracks actual elapsed time.
|
|
|
|
2.4 Disks
|
|
|
|
2.4.1 RLV12/RL01,RL02 Cartridge Disk (RL)
|
|
|
|
RLV12 options include the ability to set units write enabled or write locked,
|
|
to set the drive size to RL01, RL02, or autosize, and to write a DEC standard
|
|
044 compliant bad block table on the last track:
|
|
|
|
SET RLn LOCKED set unit n write locked
|
|
SET RLn WRITEENABLED set unit n write enabled
|
|
SET RLn RL01 set size to RL01
|
|
SET RLn RL02 set size to RL02
|
|
SET RLn AUTOSIZE set size based on file size at attach
|
|
SET RLn BADBLOCK write bad block table on last track
|
|
|
|
The size options can be used only when a unit is not attached to a file. The
|
|
bad block option can be used only when a unit is attached to a file. Units
|
|
can also be set ENABLED or DISABLED.
|
|
|
|
The RL11 implements these registers:
|
|
|
|
name size comments
|
|
|
|
RLCS 16 control/status
|
|
RLDA 16 disk address
|
|
RLBA 16 memory address
|
|
RLBAE 6 memory address extension (RLV12)
|
|
RLMP..RLMP2 16 multipurpose register queue
|
|
INT 1 interrupt pending flag
|
|
ERR 1 error flag (CSR<15>)
|
|
DONE 1 device done flag (CSR<7>)
|
|
IE 1 interrupt enable flag (CSR<6>)
|
|
STIME 24 seek time, per cylinder
|
|
RTIME 24 rotational delay
|
|
STOP_IOE 1 stop on I/O error
|
|
|
|
Error handling is as follows:
|
|
|
|
error STOP_IOE processed as
|
|
|
|
not attached 1 report error and stop
|
|
0 disk not ready
|
|
|
|
end of file x assume rest of disk is zero
|
|
|
|
OS I/O error x report error and stop
|
|
|
|
2.4.2 RQDX3 MSCP Disk Controllers (RQ, RQB, RQC, RQD)
|
|
|
|
The simulator implements four MSCP disk controllers, RQ, RQB, RQC, RQD.
|
|
Initially, RQB, RQC, and RQD are disabled. Each RQ controller simulates
|
|
an RQDX3 MSCP disk controller. RQ options include the ability to set
|
|
units write enabled or write locked, and to set the drive type to one
|
|
of many disk types:
|
|
|
|
SET RQn LOCKED set unit n write locked
|
|
SET RQn WRITEENABLED set unit n write enabled
|
|
SET RQn RX50 set type to RX50
|
|
SET RQn RX33 set type to RX33
|
|
SET RQn RD51 set type to RD51
|
|
SET RQn RD52 set type to RD52
|
|
SET RQn RD53 set type to RD53
|
|
SET RQn RD54 set type to RD54
|
|
SET RQn RD31 set type to RD31
|
|
SET RQn RA82 set type to RA82
|
|
SET RQn RA72 set type to RA72
|
|
SET RQn RA90 set type to RA90
|
|
SET RQn RA92 set type to RA92
|
|
SET RQn RAUSER{=n} set type to RA81 with n MB's
|
|
SET -L RQn RAUSER{=n} set type to RA81 with n LBN's
|
|
|
|
The type options can be used only when a unit is not attached to a file.
|
|
RAUSER is a "user specified" disk; the user can specify the size of the
|
|
disk in either MB (1000000 bytes) or logical block numbers (LBN's, 512
|
|
bytes each). The minimum size is 5MB; the maximum size is 2GB without
|
|
extended addressing, 1000GB with extended addressing.
|
|
|
|
Units can also be set ENABLED or DISABLED.
|
|
|
|
Each RQ controller implements the following special SHOW commands:
|
|
|
|
SHOW RQn TYPE show drive type
|
|
SHOW RQ RINGS show command and response rings
|
|
SHOW RQ FREEQ show packet free queue
|
|
SHOW RQ RESPQ show packet response queue
|
|
SHOW RQ UNITQ show unit queues
|
|
SHOW RQ ALL show all ring and queue state
|
|
SHOW RQn UNITQ show unit queues for unit n
|
|
|
|
Each RQ controller implements these registers:
|
|
|
|
name size comments
|
|
|
|
SA 16 status/address register
|
|
S1DAT 16 step 1 init host data
|
|
CQBA 22 command queue base address
|
|
CQLNT 8 command queue length
|
|
CQIDX 8 command queue index
|
|
RQBA 22 request queue base address
|
|
RQLNT 8 request queue length
|
|
RQIDX 8 request queue index
|
|
FREE 5 head of free packet list
|
|
RESP 5 head of response packet list
|
|
PBSY 5 number of busy packets
|
|
CFLGS 16 controller flags
|
|
CSTA 4 controller state
|
|
PERR 9 port error number
|
|
CRED 5 host credits
|
|
HAT 17 host available timer
|
|
HTMO 17 host timeout value
|
|
CPKT[0:3] 5 current packet, units 0-3
|
|
PKTQ[0:3] 5 packet queue, units 0-3
|
|
UFLG[0:3] 16 unit flags, units 0-3
|
|
INT 1 interrupt request
|
|
ITIME 1 response time for initialization steps
|
|
(except for step 4)
|
|
QTIME 24 response time for 'immediate' packets
|
|
XTIME 24 response time for data transfers
|
|
PKTS[33*32] 16 packet buffers, 33W each,
|
|
32 entries
|
|
|
|
While VMS is not timing sensitive, most of the BSD-derived operating systems
|
|
(NetBSD, OpenBSD, etc) are. The QTIME and XTIME parameters are set to
|
|
values that allow these operating systems to run correctly.
|
|
|
|
Error handling is as follows:
|
|
|
|
error processed as
|
|
|
|
not attached disk not ready
|
|
|
|
end of file assume rest of disk is zero
|
|
|
|
OS I/O error report error and stop
|
|
|
|
2.4.3 RXV21/RX02 Floppy Disk (RY)
|
|
|
|
RXV21 options include the ability to set units write enabled or write
|
|
locked, single or double density, or autosized:
|
|
|
|
SET RYn LOCKED set unit n write locked
|
|
SET RYn WRITEENABLED set unit n write enabled
|
|
SET RYn SINGLE set unit n single density
|
|
SET RYn DOUBLE set unit n double density (default)
|
|
SET RYn AUTOSIZE set unit n autosized
|
|
|
|
The RXV21 does not support the boot command.
|
|
|
|
The RXV21 implements these registers:
|
|
|
|
name size comments
|
|
|
|
RYCS 16 status
|
|
RYBA 16 buffer address
|
|
RYWC 8 word count
|
|
RYDB 16 data buffer
|
|
RYES 12 error status
|
|
RYERR 8 error code
|
|
RYTA 8 current track
|
|
RYSA 8 current sector
|
|
STAPTR 4 controller state
|
|
INT 1 interrupt pending flag
|
|
ERR 1 error flag (CSR<15>)
|
|
TR 1 transfer ready flag (CSR<7>)
|
|
IE 1 interrupt enable flag (CSR<6>)
|
|
DONE 1 device done flag (CSR<5>)
|
|
CTIME 24 command completion time
|
|
STIME 24 seek time, per track
|
|
XTIME 24 transfer ready delay
|
|
STOP_IOE 1 stop on I/O error
|
|
SBUF[0:255] 8 sector buffer array
|
|
|
|
Error handling is as follows:
|
|
|
|
error STOP_IOE processed as
|
|
|
|
not attached 1 report error and stop
|
|
0 disk not ready
|
|
|
|
RX02 data files are buffered in memory; therefore, end of file and OS
|
|
I/O errors cannot occur.
|
|
|
|
2.5 Tapes
|
|
|
|
2.5.1 TSV11/TSV05 Magnetic Tape (TS)
|
|
|
|
TS options include the ability to make the unit write enabled or write locked.
|
|
|
|
SET TS LOCKED set unit write locked
|
|
SET TS WRITEENABLED set unit write enabled
|
|
|
|
The magnetic tape controller implements these registers:
|
|
|
|
name size comments
|
|
|
|
TSSR 16 status register
|
|
TSBA 16 bus address register
|
|
TSDBX 16 data buffer extension register
|
|
CHDR 16 command packet header
|
|
CADL 16 command packet low address or count
|
|
CADH 16 command packet high address
|
|
CLNT 16 command packet length
|
|
MHDR 16 message packet header
|
|
MRFC 16 message packet residual frame count
|
|
MXS0 16 message packet extended status 0
|
|
MXS1 16 message packet extended status 1
|
|
MXS2 16 message packet extended status 2
|
|
MXS3 16 message packet extended status 3
|
|
MXS4 16 message packet extended status 4
|
|
WADL 16 write char packet low address
|
|
WADH 16 write char packet high address
|
|
WLNT 16 write char packet length
|
|
WOPT 16 write char packet options
|
|
WXOPT 16 write char packet extended options
|
|
ATTN 1 attention message pending
|
|
BOOT 1 boot request pending
|
|
OWNC 1 if set, tape owns command buffer
|
|
OWNM 1 if set, tape owns message buffer
|
|
TIME 24 delay
|
|
POS 32 position
|
|
|
|
Error handling is as follows:
|
|
|
|
error processed as
|
|
|
|
not attached tape not ready
|
|
|
|
end of file (read or space) end of physical tape
|
|
(write) ignored
|
|
|
|
OS I/O error fatal tape error
|
|
|
|
2.5.2 TQK50 TMSCP Disk Controller (TQ)
|
|
|
|
The TQ controller simulates the TQK50 TMSCP disk controller. TQ options
|
|
include the ability to set units write enabled or write locked, and to
|
|
specify the controller type and tape length:
|
|
|
|
SET TQn LOCKED set unit n write locked
|
|
SET TQn WRITEENABLED set unit n write enabled
|
|
SET TQ TK50 set controller type to TK50
|
|
SET TQ TK70 set controller type to TK70
|
|
SET TQ TU81 set controller type to TU81
|
|
SET TQ TKUSER{=n} set controller type to TK50 with
|
|
tape capacity of n MB
|
|
|
|
User-specified capacity must be between 50 and 2000 MB.
|
|
|
|
The TQ controller implements the following special SHOW commands:
|
|
|
|
SHOW TQ TYPE show controller type
|
|
SHOW TQ RINGS show command and response rings
|
|
SHOW TQ FREEQ show packet free queue
|
|
SHOW TQ RESPQ show packet response queue
|
|
SHOW TQ UNITQ show unit queues
|
|
SHOW TQ ALL show all ring and queue state
|
|
SHOW TQn UNITQ show unit queues for unit n
|
|
|
|
The TQ controller implements these registers:
|
|
|
|
name size comments
|
|
|
|
SA 16 status/address register
|
|
S1DAT 16 step 1 init host data
|
|
CQBA 22 command queue base address
|
|
CQLNT 8 command queue length
|
|
CQIDX 8 command queue index
|
|
RQBA 22 request queue base address
|
|
RQLNT 8 request queue length
|
|
RQIDX 8 request queue index
|
|
FREE 5 head of free packet list
|
|
RESP 5 head of response packet list
|
|
PBSY 5 number of busy packets
|
|
CFLGS 16 controller flags
|
|
CSTA 4 controller state
|
|
PERR 9 port error number
|
|
CRED 5 host credits
|
|
HAT 17 host available timer
|
|
HTMO 17 host timeout value
|
|
CPKT[0:3] 5 current packet, units 0-3
|
|
PKTQ[0:3] 5 packet queue, units 0-3
|
|
UFLG[0:3] 16 unit flags, units 0-3
|
|
POS[0:3] 32 tape position, units 0-3
|
|
OBJP[0:3] 32 object position, units 0-3
|
|
INT 1 interrupt request
|
|
ITIME 1 response time for initialization steps
|
|
(except for step 4)
|
|
QTIME 24 response time for 'immediate' packets
|
|
XTIME 24 response time for data transfers
|
|
PKTS[33*32] 16 packet buffers, 33W each,
|
|
32 entries
|
|
|
|
Error handling is as follows:
|
|
|
|
error processed as
|
|
|
|
not attached tape not ready
|
|
|
|
end of file end of medium
|
|
|
|
OS I/O error report error and stop
|
|
|
|
2.6 Communications Devices
|
|
|
|
2.6.1 DZV11 Terminal Multiplexor (DZ)
|
|
|
|
The DZV11 is an 4-line terminal multiplexor. Up to 4 DZ11's (16 lines)
|
|
are supported. The number of lines can be changed with the command
|
|
|
|
SET DZ LINES=n set line count to n
|
|
|
|
The line count must be a multiple of 4, with a maximum of 16.
|
|
|
|
The DZV11 supports 8-bit input and output of characters. 8-bit output
|
|
may be incompatible with certain operating systems. The command
|
|
|
|
SET DZ 7B
|
|
|
|
forces output characters to be masked to 7 bits.
|
|
|
|
The DZ11 supports logging on a per-line basis. The command
|
|
|
|
SET DZ LOG=line=filename
|
|
|
|
enables logging for the specified line to the indicated file. The
|
|
command
|
|
|
|
SET DZ NOLOG=line
|
|
|
|
disables logging for the specified line and closes any open log file.
|
|
Finally, the command
|
|
|
|
SHOW DZ LOG
|
|
|
|
displays logging information for all DZ lines.
|
|
|
|
The terminal lines perform input and output through Telnet sessions
|
|
connected to a user-specified port. The ATTACH command specifies
|
|
the port to be used:
|
|
|
|
ATTACH {-am} DZ <port> set up listening port
|
|
|
|
where port is a decimal number between 1 and 65535 that is not being used
|
|
for other TCP/IP activities. The optional switch -m turns on the DZV11's
|
|
modem controls; the optional switch -a turns on active disconnects
|
|
(disconnect session if computer clears Data Terminal Ready). Without
|
|
modem control, the DZ behaves as though terminals were directly connected;
|
|
disconnecting the Telnet session does not cause any operating system-
|
|
visible change in line status.
|
|
|
|
Once the DZ is attached and the simulator is running, the DZ will listen
|
|
for connections on the specified port. It assumes that the incoming
|
|
connections are Telnet connections. The connection remains open until
|
|
disconnected by the simulated program, the Telnet client, a SET DZ
|
|
DISCONNECT command, or a DETACH DZ command.
|
|
|
|
The SHOW DZ CONNECTIONS command displays the current connections to the DZ.
|
|
The SHOW DZ STATISTICS command displays statistics for active connections.
|
|
The SET DZ DISCONNECT=linenumber disconnects the specified line.
|
|
|
|
The DZV11 implements these registers:
|
|
|
|
name size comments
|
|
|
|
CSR[0:3] 16 control/status register, boards 0-3
|
|
RBUF[0:3] 16 receive buffer, boards 0-3
|
|
LPR[0:3] 16 line parameter register, boards 0-3
|
|
TCR[0:3] 16 transmission control register, boards 0-3
|
|
MSR[0:3] 16 modem status register, boards 0-3
|
|
TDR[0:3] 16 transmit data register, boards 0-3
|
|
SAENB[0:3] 1 silo alarm enabled, boards 0-3
|
|
RXINT 4 receive interrupts, boards 3..0
|
|
TXINT 4 transmit interrupts, boards 3..0
|
|
MDMTCL 1 modem control enabled
|
|
AUTODS 1 autodisconnect enabled
|
|
|
|
The DZV11 does not support save and restore. All open connections are
|
|
lost when the simulator shuts down or the DZ is detached.
|
|
|
|
2.6.2 DHQ11 Terminal Multiplexor (VH)
|
|
|
|
The DHQ11 is an 8-line terminal multiplexor for Qbus systems. Up
|
|
to 4 DHQ11's are supported.
|
|
|
|
The DHQ11 is a programmable asynchronous terminal multiplexor. It
|
|
has two programming modes: DHV11 and DHU11. The register sets are
|
|
compatible with these devices. For transmission, the DHQ11 can be
|
|
used in either DMA or programmed I/O mode. For reception, there
|
|
is a 256-entry FIFO for received characters, dataset status changes,
|
|
and diagnostic information, and a programmable input interrupt
|
|
timer (in DHU mode). The device supports 16-, 18-, and 22-bit
|
|
addressing. The DHQ11 can be programmed to filter and/or handle
|
|
XON/XOFF characters independently of the processor. The DHQ11
|
|
supports programmable bit width (between 5 and 8) for the input
|
|
and output of characters.
|
|
|
|
The DHQ11 has a rocker switch for determining the programming mode.
|
|
By default, the DHV11 mode is selected, though DHU11 mode is
|
|
recommended for applications that can support it. The VH controller
|
|
may be adjusted on a per controller basis as follows:
|
|
|
|
SET VHn DHU use the DHU programming mode and registers
|
|
SET VHn DHV use the DHV programming mode and registers
|
|
|
|
DMA output is supported. In a real DHQ11, DMA is not initiated
|
|
immediately upon receipt of TX.DMA.START but is dependent upon some
|
|
internal processes. The VH controller mimics this behavior by default.
|
|
It may be desirable to alter this and start immediately, though
|
|
this may not be compatible with all operating systems and diagnostics.
|
|
You can change the behavior of the VH controller as follows:
|
|
|
|
SET VHn NORMAL use normal DMA procedures
|
|
SET VHn FASTDMA set DMA to initiate immediately
|
|
|
|
The terminal lines perform input and output through Telnet sessions
|
|
connected to a user-specified port. The ATTACH command specifies
|
|
the port to be used:
|
|
|
|
ATTACH VH <port> set up listening port
|
|
DETACH VH
|
|
|
|
where port is a decimal number between 1 and 65535 that is not
|
|
being used for other TCP/IP activities. This port is the point of
|
|
entry for al lines on all VH controllers.
|
|
|
|
Modem and auto-disconnect support may be set on an individual
|
|
controller basis. The SET MODEM command directs the controller to
|
|
report modem status changes to the computer. The SET HANGUP command
|
|
turns on active disconnects (disconnect session if computer clears
|
|
Data Terminal Ready).
|
|
|
|
SET VHn [NO]MODEM disable/enable modem control
|
|
SET VHn [NO]HANGUP disable/enable disconnect on DTR drop
|
|
|
|
Once the VH is attached and the simulator is running, the VH will
|
|
listen for connections on the specified port. It assumes that the
|
|
incoming connections are Telnet connections. The connection remains
|
|
open until disconnected by the simulated program, the Telnet client,
|
|
a SET VH DISCONNECT command, or a DETACH VH command.
|
|
|
|
The SHOW VH CONNECTIONS command displays the current connections to the VH.
|
|
The SHOW VH STATISTICS command displays statistics for active connections.
|
|
The SET VH DISCONNECT=linenumber disconnects the specified line.
|
|
|
|
The DHQ11 implements these registers, though not all can be examined
|
|
from SCP:
|
|
|
|
name size comments
|
|
|
|
CSR[0:3] 16 control/status register, boards 0..3
|
|
RBUF[0:3] 16 receive buffer, boards 0..3
|
|
LPR[0:3] 16 line parameter register, boards 0..3
|
|
RXINT 4 receive interrupts, boards 3..0
|
|
TXINT 4 transmit interrupts, boards 3..0
|
|
[more to be described...]
|
|
|
|
The DHQ11 does not support save and restore. All open connections
|
|
are lost when the simulator shuts down or the VH is detached.
|
|
|
|
2.6.3 DELQA/DEQNA Qbus Ethernet Controllers (XQ, XQB)
|
|
|
|
The simulator implements two DELQA/DEQNA Qbus Ethernet controllers (XQ,
|
|
XQB). Initially, XQ is enabled, and XQB is disabled. Options allow
|
|
control of the MAC address, the controller mode, and the sanity timer.
|
|
|
|
SET XQ MAC=<mac-address> ex. 08-00-2B-AA-BB-CC
|
|
SHOW XQ MAC
|
|
|
|
These commands are used to change or display the MAC address. <mac-address>
|
|
is a valid ethernet MAC, delimited by dashes or periods. The controller
|
|
defaults to 08-00-2B-AA-BB-CC, which should be sufficient if there is
|
|
only one SIMH controller on your LAN. Two cards with the same MAC address
|
|
will see each other's packets, resulting in a serious mess.
|
|
|
|
SET XQ TYPE={DEQNA|[DELQA]}
|
|
SHOW XQ TYPE
|
|
|
|
These commands are used to change or display the controller mode. DELQA
|
|
mode is better and faster but may not be usable by older or non-DEC OS's.
|
|
Also, be aware that DEQNA mode is not supported by many modern OS's. The
|
|
DEQNA-LOCK mode of the DELQA card is emulated by setting the the controller
|
|
to DEQNA - there is no need for a separate mode. DEQNA-LOCK mode behaves
|
|
exactly like a DEQNA, except for the operation of the VAR and MOP processing.
|
|
|
|
SET XQ SANITY={ON|[OFF]}
|
|
SHOW XQ SANITY
|
|
|
|
These commands change or display the INITIALIZATION sanity timer (DEQNA
|
|
jumper W3/DELQA switch S4). The INITIALIZATION sanity timer has a default
|
|
timeout of 4 minutes, and cannot be turned off, just reset. The normal
|
|
sanity timer can be set by operating system software regardless of the
|
|
state of this switch. Note that only the DEQNA (or the DELQA in DEQNA-
|
|
LOCK mode (=DEQNA)) supports the sanity timer - it is ignored by a DELQA
|
|
in Normal mode, which uses switch S4 for a different purpose.
|
|
|
|
SET XQ POLL={DEFAULT|4..2500}
|
|
SHOW XQ POLL
|
|
|
|
These commands change or display the service polling timer. The polling
|
|
timer is calibrated to run the service thread 200 times per second. This
|
|
value can be changed to accomodate particular system requirements for
|
|
more (or less) frequent polling.
|
|
|
|
SHOW XQ STATS
|
|
|
|
This command will display the accumulated statistics for the simulated
|
|
Ethernet controller.
|
|
To access the network, the simulated Ethernet controller must be attached
|
|
to a real Ethernet interface:
|
|
|
|
ATTACH XQ0 {ethX|<device_name>} ex. eth0 or /dev/era0
|
|
SHOW XQ ETH
|
|
|
|
where X in 'ethX' is the number of the ethernet controller to attach, or
|
|
the real device name. The X number is system dependant. If you only have
|
|
one ethernet controller, the number will probably be 0. To find out what
|
|
your system thinks the ethernet numbers are, use the SHOW XQ ETH command.
|
|
The device list can be quite cryptic, depending on the host system, but
|
|
is probably better than guessing. If you do not attach the device, the
|
|
controller will behave as though the ethernet cable were unplugged.
|
|
|
|
XQ and XQB have the following registers:
|
|
|
|
name size comments
|
|
|
|
SA0 16 station address word 0
|
|
SA1 16 station address word 1
|
|
SA2 16 station address word 2
|
|
SA3 16 station address word 3
|
|
SA4 16 station address word 4
|
|
SA5 16 station address word 5
|
|
RBDL 32 receive buffer descriptor list
|
|
XBDL 32 trans(X)mit buffer descriptor list
|
|
CSR 16 control status register
|
|
VAR 16 vector address register
|
|
INT 1 interrupt request flag
|
|
|
|
One final note: because of it's asynchronous nature, the XQ controller is
|
|
not limited to the ~1.5Mbit/sec of the real DEQNA/DELQA controllers,
|
|
nor the 10Mbit/sec of a standard Ethernet. Attach it to a Fast Ethernet
|
|
(100 Mbit/sec) card, and "Feel the Power!" :-)
|
|
|
|
2.7 Symbolic Display and Input
|
|
|
|
The VAX simulator implements symbolic display and input. Display is
|
|
controlled by command line switches:
|
|
|
|
-a,-c display as ASCII data
|
|
-m display instruction mnemonics
|
|
-p display compatibility mode mnemonics
|
|
-r display RADIX50 encoding
|
|
|
|
Input parsing is controlled by the first character typed in or by command
|
|
line switches:
|
|
|
|
' or -a ASCII characters (determined by length)
|
|
" or -c ASCII string (maximum 60 characters)
|
|
-p compatibility mode instruction mnemonic
|
|
alphabetic instruction mnemonic
|
|
numeric octal number
|
|
|
|
VAX instruction input uses standard VAX assembler syntax. Compatibility
|
|
mode instruction input uses standard PDP-11 assembler syntax.
|
|
|
|
The syntax for VAX specifiers is as follows:
|
|
|
|
syntax specifier displacement comments
|
|
|
|
#s^n, #n 0n - short literal, integer only
|
|
[Rn] 4n - indexed, second specifier
|
|
follows
|
|
Rn 5n - PC illegal
|
|
(Rn) 6n - PC illegal
|
|
-(Rn) 7n - PC illegal
|
|
(Rn)+ 8n -
|
|
#i^n, #n 8F n immediate
|
|
@(Rn)+ 9n -
|
|
@#addr 9F addr absolute
|
|
{+/-}b^d(Rn) An {+/-}d byte displacement
|
|
b^d AF d - PC byte PC relative
|
|
@{+/-}b^d(Rn) Bn {+/-}d byte displacement deferred
|
|
@b^d BF d - PC byte PC relative deferred
|
|
{+/-}w^d(Rn) Cn {+/-}d word displacement
|
|
w^d CF d - PC word PC relative
|
|
@{+/-}w^d(Rn) Dn {+/-}d word displacement deferred
|
|
@w^d DF d - PC word PC relative deferred
|
|
{+/-}l^d(Rn) En {+/-}d long displacement
|
|
l^d EF d - PC long PC relative
|
|
@{+/-}l^d(Rn) Fn {+/-}d long displacement deferred
|
|
@l^d FF d - PC long PC relative deferred
|
|
|
|
If no override is given for a literal (s^ or i^) or for a displacement or PC
|
|
relative addres (b^, w^, or l^), the simulator chooses the mode automatically.
|
|
|
|
Appendix - The KA655"X"
|
|
|
|
The real KA655 is limited to 64MB of memory, and the KA655 firmware is coded
|
|
to this limit. However, the VAX operating systems (VMS, Ultrix, NetBSD)
|
|
know very little about the hardware details. Instead, they take their memory
|
|
size information from the Restart Parameter Block (RPB). If the firmware
|
|
sets up an RPB for more than 64MB, the operating systems use the extra
|
|
memory without requiring source changes.
|
|
|
|
In extended memory mode, the simulator implements an 18th CMCTL register.
|
|
This read-only register gives the size of main memory in MB. The extended
|
|
memory firmware (ka655x.bin) bootstrap code uses this to set up the RPB.
|
|
No other parts of the firmware are aware of extended memory; thus, all the
|
|
diagnostic and display commands operate only on the first 64MB of memory.
|
|
|
|
If extended memory mode is disabled, the 18th CMCTL register is invisible,
|
|
and the simulator operates like a real KA655.
|