blob: 8a86d7768af7e6d0b0274f3f55c8f1242d221c51 [file] [log] [blame] [raw]
SIMH/HP 2100 RELEASE NOTES
==========================
Last update: 2017-09-06
This file documents the release history of the simulator for the Hewlett-Packard
2114, 2115, 2116, 2100, 1000-M, 1000-E, and 1000-F machines.
The SIMH project does not issue discrete releases. Instead, the current
simulator code base is available at:
https://github.com/simh/simh
...and may be downloaded at any time. A code snapshot is identified by the "git
commit ID" that is displayed in the simulator welcome banner.
Therefore, HP 2100 releases are simply documentation checkpoints that describe
the changes that have occurred since the last checkpoint. Generally, a release
is written when one or more major changes have been incorporated. Minor bug
fixes will be available immediately from the repository but only noted as part
of the next release document.
===============================
Reporting Bugs in the Simulator
===============================
If you find a bug in the HP 2100 simulator, please report it either to the SIMH
issue tracker on github at:
https://github.com/simh/simh/issues
...or to the SIMH mailing list; see:
http://mailman.trailing-edge.com/mailman/listinfo/simh
...for subscribing information. In either case, please include a console log
that contains a reproducible test case that illustrates the problem. See the
"Recording Simulator Activities" section of the "SIMH User's Guide" for details.
===================
General Information
===================
The simulator passes the HP 24396 offline diagnostic suite with some expected
failures due to unimplemented features. For example, the disc diagnostic
error-correction logic tests and the tape diagnostic CRCC and LRCC tests fail,
as these features are not supported. However, all features that are required
for operation of the supported HP operating systems pass their respective
diagnostic tests. See the accompanying "hp2100_diag.txt" file for details.
The simulator has been tested with the following operating systems:
- SIO, BCS, and MTS.
- 2000E, 2000F, and 2000/Access Time-Shared BASIC.
- DOS, DOS-M, and DOS-III.
- RTE, RTE-B, RTE-C, RTE-II, RTE-III, RTE-IV, RTE-IVB, and RTE-6/VM.
The user's manual for the simulator is provided in Microsoft Word format in the
"doc" subdirectory of the code base snapshot downloaded from the github site. A
PDF version of the same manual is available at:
http://alum.mit.edu/www/jdbryan/hp2100_doc.pdf
------------------
Available Software
------------------
A preconfigured RTE-6/VM disc image containing the operating system, the MACRO
assembler and Fortran 77 compiler, a selection of tape backup and restore
programs (READT/WRITT, READR/SAVER, FC, TF, and FST), an example programs
(/KENC/HELLO.FTN), and the Mystery Mansion game (MMM) is available from
Bitsavers at:
http://www.bitsavers.org/bits/HP/tapes/rte-6vm/rte6200/
The archive contains instructions and simulator command files that allow
ready-to-run operation.
The Computer History Museum has graciously arranged with HP to offer the HP 1000
Software Collection with a sublicense for non-commercial use by private
individuals. The Collection is hosted by Bitsavers at:
http://www.bitsavers.org/bits/HP/HP_1000_software_collection/
A preconfigured RTE-IVB disc image containing the operating system, the ASMB
assembler and FORTRAN IV compiler, and the READR/SAVER and FC tape backup and
restore programs is available from the HP Computer Museum at:
http://www.hpmuseum.net/display_item.php?sw=565
The archive contains instructions and a simulator command file.
QCTerm, an HP 700 terminal emulator for Microsoft Windows, is available from the
HP Computer Museum at:
http://www.hpmuseum.net/display_item.php?sw=585
Use of an HP terminal via a serial port or terminal emulator via Telnet enables
more advanced screen editing features of the RTE operating systems.
Manuals describing the operation of HP software are available from Bitsavers at:
http://www.bitsavers.org/pdf/hp/1000/
http://www.bitsavers.org/pdf/hp/2000TSB/
http://www.bitsavers.org/pdf/hp/21xx/
...and from the HP Computer Museum at:
http://www.hpmuseum.net/collection_document.php
----------------
Year 2000 Issues
----------------
RTE-6/VM Revision 6200 is Y2K compliant, except for the READR and SAVER
programs. The errors are cosmetic only.
RTE-IVB Revision 5010 is not Y2K compliant. All of the failures are in
subsystems; the operating itself (time-of-day clock) accommodates dates through
2059. All of the errors are cosmetic. Typically, punctuation characters appear
in the years, e.g., "19:0" for 2000. The RTE-IVB software kit from the HP
Computer Museum includes fixes for the affected modules to bring the system into
compliance.
All other HP operating systems are not Y2K compliant.
-----------------------------
Bugs in RTE-IVB Revision 5010
-----------------------------
Testing during simulator development revealed the presence of a bug in RTE-IVB
Revision 5010:
- The $BALC module in the system library has a bug that causes memory
corruption. This module is used by the ACCTS program and manifests itself by
printing gibberish after the "PLEASE LOG ON:" prompt.
Specifically, the internal MXEV routine performs a cross-store indirect via a
location in Table Area II (XSA $MAXI+0,I). This fails because the indirect
chain is resolved in the user map, but TA II is not in the user map of
large-background programs, such as ACCTS. Therefore, the location in the
user map corresponding to $MAXI in the system map is used as the pointer to
the location to store.
A corrected version of $BALC is present on cartridge GF of the disc image
supplied with the RTE-IVB software kit at the HP Computer Museum.
======================
Release 27, 2017-09-06
======================
This release of the HP 2100 simulator adds the following features:
- Support for the HP 2613, 2617, and 2618 line printers has been added to the
LPT device. The default printer remains the HP 2607.
- The LPT device simulation has been rewritten to support realistic and
optimized timing, compact and expanded output modes, custom VFU tape images,
and tracing of internal operations.
- The LOAD command has been rewritten to load files containing absolute binary
loaders into the protected address space of the 21xx machines and configure
the I/O instructions. For the 1000, LOAD can also be used to load boot
loader ROM images other than those provided directly by the simulator.
- The DUMP command has been added to write the binary loader currently resident
in memory to an absolute binary file.
- The TTY punch unit and the LPS, LPT, and PTP devices now position a newly
attached file at the end of the file rather than at the start. As a result,
output will append to, rather than overwrite, the existing content.
- The DA, DP, DQ, and DS disc devices add the PROTECT and UNPROTECT options.
These replace the now-deprecated LOCKED and WRITEENABLED options and more
accurately reflect the labelling of the data protection switches on the disc
drives.
- The simulator message that is displayed when a programmed halt occurs has
been changed to indicate that the halt code comes from the T-register value.
- The Basic Binary Loader (BBL) is now installed by default in the 21xx
machines. It is automatically configured to the select code of the paper
tape reader. It may be overwritten with a different loader (e.g., the Basic
Binary Disc Loader or Basic Moving-head Disc Loader) using the LOAD command.
Performing a power-on reset of the CPU reinstalls the BBL.
- Symbolic display and entry has been rewritten to improve efficiency and
expanded to cover the full instruction set including optional microcode
extensions that are currently enabled.
- CPU instruction execution and data accesses may be selectively traced. The
resulting trace listing is similar to the output of a logic analyzer
connected to the CPU and I/O buses.
- DMA/DCPC commands, status, and data accesses may be selectively traced.
- TBG commands, status, and service entries may be selectively traced.
- The DIAG option of the TBG device has been replaced with the REALTIME, W1A,
W1B, W2A, and W2B options. Configuring the TBG to run its diagnostic now
uses the REALTIME and W2B options, and restoring the normal configuration
uses the CALTIME and W2A options. The W1A and W1B options extend the
software compatibility of the TBG.
- The MUXM device has been renamed MUXC to reflect that it is the multiplexer
control card. The previous MUXM name is deprecated but will still work in
existing simulation command files.
- The multiplexer control card (MUXC) may be enabled and disabled independently
of the upper and lower data cards (MUX and MUXL), reflecting its optional
status in hardware configurations.
- Memory address parsing for commands has been changed to add <page>.<offset>
format for physical addresses, where both the page and the offset range from
0 to 1777 octal. Linear addressing is now restricted to the 32K logical
address space (0 to 77777 octal). Memory display uses linear addressing for
locations within the logical address space; locations above 32K use the
physical address format.
- The previously separate STOP_INST, STOP_DEV, STOP_IOE, and INDMAX
pseudo-registers used to stop the simulator under certain conditions have
been replaced by the SET CPU STOP=<stopname>[,<stopname>...] and the SET CPU
INDIR=<limit> commands. Stops may be temporarily bypassed by adding the -B
switch to the command that resumes execution.
- The HP 2100 Simulator User's Guide has been rewritten and significantly
expanded.
--------------------
Implementation Notes
--------------------
- The simulator passes the HP 2613/17/18 line printer diagnostic as described
in the "hp2100_diag.txt" file.
- The line printer terminates each print line with the HP-standard CR/LF pair.
If the output file is to be retained as a text file on a Unix system, removal
of the carriage returns, e.g., via the "dos2unix" utility, may be desirable.
- The LOAD command can no longer be used to read general absolute binary paper
tape images into memory. The ATTACH PTR and BOOT PTR commands must now be
used to read paper tapes.
- The OS, OSTBG, VMA, EMA, VIS, and SIGNAL CPU debug flags have been removed.
Tracing of these firmware instructions is now performed by specifying SET CPU
DEBUG=EXEC and SET CPU EXEC with the appropriate opcode range and mask, as
follows:
* SET CPU DEBUG=OS => SET CPU EXEC=105340;177760
* SET CPU DEBUG=VMA => SET CPU EXEC=105240;177760
* SET CPU DEBUG=EMA => SET CPU EXEC=105240;177760
* SET CPU DEBUG=VIS => SET CPU EXEC=101460;173760
* SET CPU DEBUG=SIGNAL => SET CPU EXEC=105600;177760
- The separate tracing of time-base generator interrupt instructions provided
by the OS and OSTBG CPU debug flags is no longer supported. Entering the
replacement command above traces all OS instructions, including the TBG
interrupt instructions.
- The TIMER, RRR 16, .FLUN, and the OS/VMA, VIS, and SIGNAL self-test
instructions are no longer exempt from the undefined/unimplemented
instruction stop tests. Attempted execution of these instructions without
the appropriate firmware options installed will cause simulation stops if the
UNDEF (TIMER and RRR) or UNIMPL (.FLUN and self-tests) option is enabled.
Because of this change, the default state of the unimplemented instruction
stop has been reversed from "on" to "off".
- The "stop on I/O error" features controlled by the STOP_IOE register values
have been removed from the DR, LPS, LPT, MSC, MTC, and PTP devices, as all of
these report I/O error status to the CPU via their interface input registers.
STOP_IOE has been removed from the PTR device and replaced with SET CPU
STOP=IOERR, as this device does not report I/O error status to the CPU
through its interface.
- The LOCKED and WRITEENABLED options for the MSC and MTC devices are
deprecated. The supported method of write-protecting a tape drive is to
attach the tape image with the -R (read-only) switch or by setting the host
operating system's read-only attribute on the tape image file. This
simulates removing the write ring from the tape reel before mounting it on
the drive. There is no hardware method of write-protecting a mounted and
positioned tape reel.
- If the previous ATTACH behavior (overwriting rather than appending) is
desired for the TTY punch unit and the LPS, LPT, and PTP devices, set the
device's (P)POS register to 0 after attaching.
----------
Bugs Fixed
----------
1. PROBLEM: EXAMINE -M for addresses > 32K displays misleading operands.
VERSION: Release 26.
OBSERVATION: Current-page memory references of instructions residing above
the 32K logical address space are printed as though they reside at their
locations modulo 32K. For example, DEPOSIT 170001 026020 and EXAMINE -M
170001 displays JMP 70020, and DEPOSIT 200001 026020 displays JMP 20.
CAUSE: The printed addresses assume that the instructions will be executed
from their respective pages (modulo 32). However, instructions can be
executed only when they are mapped into the logical address space, and any
given physical page may be mapped to any arbitrary logical page.
Therefore, the address printed may not represent the actual logical address
after mapping.
RESOLUTION: Modify "fprint_cpu" (hp2100_sys.c) to use Z/C address notation
for memory references in instructions residing in physical memory above
32K.
STATUS: Fixed in Release 27.
2. PROBLEM: Enabling IOP firmware should not be allowed on the 1000 F-Series.
VERSION: Release 26.
OBSERVATION: The command "SET CPU 1000-F,IOP" is allowed, but it should
not be, as the IOP firmware is not supported on this machine.
CAUSE: The F-Series does not provide the firmware mapping table entries
that permit operation of the 2000/Access I/O Processor firmware. IOP
instruction opcodes 10x400-17 and 10x420-37 are marked as "HP Reserved" in
the F-Series mapping table, and opcodes 10x460-77 are dedicated to the VIS
microcode.
RESOLUTION: Modify the "cpu_features" array (hp2100_cpu.c) to remove the
IOP option from the 1000 F-Series entry.
STATUS: Fixed in Release 27.
3. PROBLEM: A rejected model change still changes the CPU options.
VERSION: Release 26.
OBSERVATION: Changing to a CPU model that does not support the current
memory size will reduce memory to the maximum supported by the new model.
If the truncated portion contains non-zero values, the simulator will ask
for confirmation before proceeding. If the truncation is rejected, the CPU
options are still set to those of the new model, even though the old model
is retained. For example:
sim> SET CPU 1000-F,128K
sim> SHOW CPU
CPU idle disabled
128KW, 1000-F, EAU
FP, no IOP, DMS
FFP, DBI, no EMA/VMA
no VIS, no SIGNAL
sim> DEPOSIT 100000 1
sim> SET CPU 2116
Really truncate memory [N]?NO
Command not completed
sim> SHOW CPU
CPU idle disabled
128KW, 1000-F, no EAU
no FP, no IOP, no DMS
no FFP, no DBI, no EMA/VMA
no VIS, no SIGNAL
CAUSE: The CPU options are set before the memory size is changed, so when
the size change is rejected, the new CPU options are retained.
RESOLUTION: Modify "cpu_set_model" (hp2100_cpu.c) to perform the memory
size change first, so that if it is rejected, the CPU options have not been
changed.
STATUS: Fixed in Release 27.
4. PROBLEM: Virtual memory mapping fails for accesses above 126 MB.
VERSION: Release 26.
OBSERVATION: A program using virtual memory provided by the RTE-6/VM
operating system may access up to 128 MB of data, although VMA programs
default to a 16 MB limit. Accesses to data in virtual memory are mapped
through the last two DMS user map registers. Normally, each VMA access
maps in the memory page corresponding to the virtual address plus the
following memory page. This allows access to single items up to 1024 words
in size starting at any offset within the (first) page.
If a data item resides in the last 2 MB of virtual memory, access to an
item that crosses the page boundary is incorrect. Instead of accessing
words in the second page, the accesses wrap around within the first page.
CAUSE: The suit number part of the virtual address is not restored before
checking the allocation status of the page table entry corresponding to the
second (spillover) page. As a result, an unallocated second page in the
last 2 MB of virtual memory is seen as beyond the VM area limit, and
instead of generating a page fault to allocate the second page, the map
registers are set up to prevent access to the second page by setting the
first page address into both map registers.
RESOLUTION: Modify "cpu_vma_lbp" (hp2100_cpu5.c) to check for spill page
allocation correctly.
STATUS: Fixed in Release 27.
5. PROBLEM: Memory expansion is not disabled when DMS is disabled.
VERSION: Release 26.
OBSERVATION: If the Memory Expansion Module in a 1000-Series CPU has been
enabled, and then the DMS firmware option is disabled or the CPU is changed
to a model that does not support memory expansion (e.g., a 2100), memory
expansion remains enabled. In this case, memory accesses should revert to
physical addressing, but instead logical-to-physical address translation
through the currently enabled map remains in effect.
CAUSE: Disabling DMS should set the "dms_enb" flag to 0, but it does not.
RESOLUTION: Modify "set_model" and "set_option" (hp2100_cpu.c) to clear
the "dms_enb" flag if DMS is not enabled after the model or option change.
STATUS: Fixed in Release 27.
======================
Release 26, 2017-05-01
======================
This release of the HP 2100 simulator does not add any new features.
--------------------
Implementation Notes
--------------------
- Starting with the next release, the LOAD command will be rewritten to load
files containing absolute binary loaders into the protected address space of
the 21xx machines and configure the I/O instructions. The LOAD command is
not designed for general loading of absolute binary files, as it does not
initialize the A and B registers as some HP software expects. It is intended
only to install bootstrap loaders. The BOOT PTR command is the proper
simulation of the hardware absolute paper tape loader.
----------
Bugs Fixed
----------
1. PROBLEM: The RWCS debug option shown in the user's guide does not exist.
VERSION: Release 25.
OBSERVATION: The "HP2100 Simulator User's Guide" says that the RWCS debug
option may be specified for the DS and DA devices to trace "disk read/
write/control/status commands." However, entering a SET DS DEBUG=RWCS
command gives an "Invalid argument" error.
CAUSE: The option name is misspelled; the correct option is RWSC.
RESOLUTION: Modify "hp2100_doc.doc" to list the correct option name.
STATUS: Fixed in Release 26.
2. PROBLEM: Halt opcodes 1060xx and 1070xx do not display in mnemonic form.
VERSION: Release 25.
OBSERVATION: Halt instructions 106000-106077 and 107000-107077 are not
displayed in mnemonic form, either directly with an EXAMINE -M command
or in the message displayed for a programmed halt. These instruction
ranges are displayed in octal only.
CAUSE: Section 3.20, "Input/Output Instructions," of the "HP 1000
M/E/F-Series Computers Technical Reference Handbook" (HP 5955-0282, March
1980) says, in part, "Bit 11, where relevant, specifies the A- or
B-register or distinguishes between set control and clear control;
otherwise, bit 11 may be a logic 0 or a logic 1 without affecting the
instruction (although the assembler will assign zeros in this case)." The
HLT instruction does not specify the A/B register, so the valid opcodes are
102000-102077, 103000-103777, 106000-106077, and 107000-107077. However,
the latter two ranges are omitted from the "opcode" and "opc_val" tables
used for decoding.
RESOLUTION: Add the 1060xx/107xx range to the "opc_val" table and a second
"HLT" string to the "opcode" table (hp2100_sys.c) to permit mnemonic
display of this instruction range.
STATUS: Fixed in Release 26.
3. PROBLEM: The SFB (scan for byte) opcode displays as SBT (store byte).
VERSION: Release 25.
OBSERVATION: Entering the "EVAL -M 105767" command should display the
"SFB" mnemonic. Instead, it displays "SBT".
CAUSE: The entry in the opcode mnemonic table corresponding to the 105767
value is "SBT", which is incorrect. It should be "SFB" (SBT is 105764).
RESOLUTION: Modify the "opcode" table (hp2100_sys.c) to use the correct
mnemonic for the SFB instruction.
STATUS: Fixed in Release 26.
4. PROBLEM: Host file system seek errors are not caught.
VERSION: Release 25.
OBSERVATION: The MAC/ICD disc library checks for host file system read or
write errors and returns Uncorrectable Data Error status if an error is
indicated. However, host file system seeks are simply assumed to succeed;
no indication of an error is given if a call fails. A failed seek should
be detected, and a Drive Fault (positioner error) should be returned.
CAUSE: Oversight.
RESOLUTION: Modify "position_sector" (hp2100_disclib.c) to test the
"sim_fseek" call for error status and to simulate a Drive Fault (AGC error)
if the call fails.
STATUS: Fixed in Release 26.
5. PROBLEM: Set Flow Control and Cancel commands fail if port key is not set.
VERSION: Release 25.
OBSERVATION: HP 8-channel multiplexer commands that refer to ports do so
indirectly by passing a port key, rather than a port number. The
key-to-port translation is established by the "Set Port Key" command, which
must be executed before any port-specific commands. If a port key has not
been established, then all port-specific commands should be ignored.
However, the "Cancel first receive buffer" and "Set flow control" commands
cause program corruption if the key has not been set.
CAUSE: The test for key validity is improperly applied for these commands.
RESOLUTION: Modify "exec_command" (hp2100_mpx.c) to ignore these commands
if the port key has not been set.
STATUS: Fixed in Release 26.
6. ENHANCEMENT: Improve the EAU shift and rotate instruction simulations.
VERSION: Release 25.
OBSERVATION: The shift and rotate instructions (ASL, ASR, LSL, LSR, RRL,
and RRR) perform 32-bit operations on the combined B and A registers. The
original implementation treated the 16-bit registers independently.
However, it is faster and smaller to form a 32-bit operand, apply the
operation, and then split the operand back into the B and A registers.
Modern compilers, such as gcc, recognize the shifting and masking patterns
necessary for a rotation and generate a single rotate-left or rotate-right
machine instruction.
RESOLUTION: Modify "cpu_eau" (hp2100_cpu1.c) to reimplement the shift and
rotate instructions as 32-bit operations.
STATUS: Fixed in Release 26.
======================
Release 25, 2017-01-11
======================
This is the initial checkpoint release of the HP 2100 simulator, corresponding
to the 25th set of changes to the 4.0 code base. The following devices are
currently simulated:
- 2114C CPU with up to 16 KW of memory
- 2115A CPU with up to 8 KW of memory
- 2116C CPU with up to 32 KW of memory
- 2100A CPU with up to 32 KW of memory
- 1000 M/E/F-Series CPU with up to 1024 KW of memory
- EAU, FP, IOP, DMS, FFP, DBI, VIS, and SIGNAL microcode extensions
- RTE-IV EMA or RTE-6/VM OS and VMA microcode extensions
- 12531C Buffered Teleprinter Interface with one 2752 Teleprinter
- 12539C Time Base Generator
- 12557A Disc Controller with four 2870 drives
- 12559C Magnetic Tape Controller with one 3030 drive
- 12565A Disc Controller with two 2883 drives
- 12566B Microcircuit Interface with a loopback connector
- 12578A Direct Memory Access Controller
- 12581A Memory Protect
- 12597A Duplex Register Interface with one 2748 Paper Tape Reader
- 12597A Duplex Register Interface with one 2895 Paper Tape Punch
- 12606B Fixed Head Disc Controller with one 2770/2771 drive
- 12607B Direct Memory Access Controller
- 12610B Drum Controller with one 2773/2774/2775 drive
- 12620A Privileged Interrupt Fence
- 12653A Printer Controller with one 2767 Line Printer
- 12792C 8-Channel Asynchronous Multiplexer
- 12821A Disc Interface with four 7906H/7920H/7925H drives
- 12845B Printer Controller with one 2607 Line Printer
- 12875A Interprocessor Link
- 12892B Memory Protect
- 12895A Direct Memory Access Controller
- 12897B Dual-Channel Port Controller
- 12920A 16-Channel Terminal Multiplexer
- 12936A Privileged Interrupt Fence
- 12966A Buffered Asynchronous Communications Interface
- 13037D Disc Controller with eight 7905/7906/7920/7925 drives
- 13181A Magnetic Tape Controller with four 7970B drives
- 13183A Magnetic Tape Controller with four 7970E drives
- 13210A Disc Controller with four 7900 drives
The "HP 2100 Simulator User's Guide" manual describes the configuration and
operation of each of these devices in detail.
--------------------
Implementation Notes
--------------------
- New bug fixes will now be listed in this file under the associated release
rather than in their previous location (hp2100_bugfixes.txt).
- Starting with the next release, the LOAD command will restrict its operation
to the addresses occupied by the bootstrap loaders, i.e., the last 64
locations in memory (up to 32K). The LOAD command is not designed for
general loading of absolute binary files, as it does not initialize the A and
B registers as some HP software expects. It is intended only to install
bootstrap loaders. The BOOT PTR command is the proper simulation of the
hardware absolute paper tape loader.
----------
Bugs Fixed
----------
1. PROBLEM: DPC device documentation uses the wrong disc drive model number.
VERSION: Release 24.
OBSERVATION: The comments in the hp2100_dpc.c source file and Section 2 of
the "HP2100 Simulator User's Guide" say that the DPC device supports the
2871 disc drive, while Section 2.6.1 of the User's Guide says that the
support is for the 2781 disc drive. Neither of these model numbers is
correct.
Contemporaneous literature (e.g., the "2116B Computer Price List," dated
June 1970) states that the disc memory subsystem consists of the HP 2870A
Moving Head Disc, HP 2871A Disc Controller, HP 2881A Power Supply, and HP
2882A Cabinet.
CAUSE: The controller model number is used instead of the drive model
number, while the "2781" number is a transposition of "2871."
RESOLUTION: Modify the initial comments in the DPC device source file
(hp2100_dpc.c) and modify the sections of the HP2100 Simulator User's Guide
to use the correct disc drive model number (2870).
STATUS: Fixed in Release 25.
2. PROBLEM: The BOOT DRC command does not execute correctly.
VERSION: Release 24.
OBSERVATION: Attempting to boot DOS from a fixed-head disc or drum does
not work. The CPU sits in a loop waiting for DMA to finish, but it never
does.
CAUSE: The DMA control word in the DR device bootstrap is not configured
during BOOT DRC processing, so DMA is communicating with the wrong device.
RESOLUTION: Modify "drc_boot" (hp2100_dr.c) to set the fixed disc/drum
select code into the DMA control word before returning.
STATUS: Fixed in Release 25.
3. PROBLEM: The valid command "DEPOSIT 2000 JMP 2001" is rejected.
VERSION: Release 24.
OBSERVATION: Regarding symbolic input, the HP2100 User's Manual says that
the "C" and "Z" flags, signifying a current-page or zero-page reference,
respectively, are not needed "...when entering [memory reference]
instructions into CPU memory; the simulator figures out from the target
address what mode to use." While the valid command "DEPOSIT 1000 JMP 1001"
correctly enters a zero-page jump into memory, the valid command "DEPOSIT
2000 JMP 2001" does not enter a current-page jump. Instead, an "Invalid
argument" error occurs.
CAUSE: The "parse_sym" routine looks for the optional "C" or "Z" flag when
parsing memory reference instructions and sets a flag if either is
specified. The test for a current-page reference is performed only if the
reference type was not explicitly specified. However, the sense of the
test is reversed.
RESOLUTION: Modify "parse_sym" (hp2100_sys.c) to correct the test for C/Z
option specification.
STATUS: Fixed in Release 25.
4. PROBLEM: The invalid command "DEPOSIT 2000 JMP C 2001" is accepted.
VERSION: Release 24.
OBSERVATION: Regarding symbolic input, the HP2100 User's Manual says that
"The address is an octal number in the range 0 - 77777; if C or Z is
specified, the address is a page offset in the range 0 - 1777." However,
specifying a page offset > 1777 is accepted without complaint if it is
within the current page range.
CAUSE: Error checking for memory reference instruction entry is
incomplete.
RESOLUTION: Modify "parse_sym" (hp2100_sys.c) to ensure that the range
check is enforced if either C or Z is specified.
STATUS: Fixed in Release 25.
5. PROBLEM: Punched output does not appear on TTY devices lacking a paper
tape punch.
VERSION: Release 24.
OBSERVATION: Running the HP contributed library program "HP 2000F BASIC
for DOS-M/DOS III" does not produce any console output when using terminal
driver DVR00 as required by the program. When using alternate terminal
driver DVR05, console output appears but console input does not work
properly.
CAUSE: DOS-M and DOS-III support two modes of console I/O: ASCII mode and
binary mode. ASCII mode appends carriage-return/line-feed characters on
output and strips them on input. Binary mode sends and receives bytes
exactly as supplied.
DVR00 is required because DVR05 does not support the binary I/O mode
required by the program. However, DVR00 assumes that a binary write is to
be directed to the console's paper tape punch rather than the console
printer and therefore sets the TTY interface's "punch flip-flop" instead of
the "print flip-flop" to accompany the text output. The simulation of the
HP 12531 interface card associated with the TTY device discards output if
the punch flip-flop is set and the punch unit (TTY2) is not attached.
The problem occurs because only a connected HP 2754 teleprinter (a modified
Teletype ASR35) reacts to the print and punch flip-flop signals. All other
supported terminal devices ignore the signals and print whatever output is
supplied (an HP 2752 -- a rebadged ASR33 -- has a manual control for the
punch, but the punch and printer operate together when the punch is on).
The 2000F BASIC program apparently was designed for use with one of these
other terminals, which print normally even though only the punch flip-flop
is set.
RESOLUTION: Modify "tto_out" (hp2100_stddev.c) to honor the print and
punch flip-flop settings and separate the output as directed only if the
console punch unit is attached (simulating an HP 2754). When the unit is
detached, all output is delivered to the console printer, regardless of the
flip-flop settings (simulating all other console devices).
STATUS: Fixed in Release 25.