Wang I/O Explorer

The Wang I/O Explorer simulates various I/O devices for the purpose of testing and learning how the microcode implements I/O or for developing/testing programs that use I/O.

See Examples.

The window contains the following sections.

(top)
This displays the core I/O registers of the calculator, GIoA, GIoB, and IOB. The values shown are the last values written by the calculator, or blank if nothing has been written.
TypeWriter
Provides control and displays data from the "Typewriter" port, then 24-pin Centronics connector.
(Output) raw
When selected, output is shown as raw hexadecimal values. Otherwise, it is shown as ASCII interpretation of the tile-rotate codes. Raw output may contain control characters not normally shown in text, such as "PRINT MODE", "SHIFT UP", "SHIFT DOWN".
(Output) clear
Clears the Output field so that more output may be seen.
Output
Shows the data sent by the calculator out the "Typewriter" port.
auto
Selects automatic mode, avoiding the need to acknowledge each character as it is sent.
TWS
This (disable) item indicates when the calculator has sent a character and RBS still indicates "busy".
RBS
This controls the RBS (ready/busy) signal to the calculator. It is cleared when a TWS is detected, and may be manually set to resume output (of the next character).
Group 1/2
Provides control over execution of GROUP 1 and GROUP 2 commands from the calculator.
(lamp)
Indicates when the matching GROUP command address has been sent and the device is officially active.
Addr
Used to specify what device address will match a GROUP command. May use "00-00" split-decimal notation or "XX" hexadecimal notation. If left blank, equates to an address of "00-00". This must match the second code after a GROUP 1 or GROUP 2 command in order to activate the device.
Grp1/Grp2
This radio button selects whether the device matches GROUP 1 or GROUP 2 commands.
(Input) num
If selected, the following input text will be interpreted as numeric entry, else it is considered text and converted to OutputWriter tile-rotate codes.
Input
This field specifies what will be sent as input for a GROUP 1 or GROUP 2 command. After sending the last character, then next thing sent is a GO code - which terminates the GROUP command. If left blank, then no input is sent - only the GO. Input is interpreted according to the "num" selection.
auto
When selected, the device will operate independently of the user. Otherwise, it is necessary to press GISN or GO buttons for each character.
!GKBD
This (disabled) item shows the current state of the calculator "GKBD" signal, inverted. If selected, the calculator GKBD signal is off, indicating that the calculator is ready for an input character.
GISN
This button is used to manually send the next character (or GO).
GLRN
This selects the state of the GLRN signal during the time that the device is active. It is reset by PRIME or by sending the GO code, and so must be selected again for each use. It may be selected any time before the GROUP command and will have no effect until the device is activated.
GO
This sends the GO code which terminates the GROUP command. It may be used to terminate the input before reaching then end of the data.
Block I/O
Provides control over execution of I/O commands from the calculator. Note that block I/O is an extension of the GROUP 1 and 2 protocols, in that the GROUP commands are used to activate the device before it will respond to I/O commands.
Supported
Must be selected in order to allow the GROUP 1/2 device to support Block I/O protocols. When selected, the "Input" field on the GROUP 1/2 control is ignored. Also, the device remains active after the GO code is sent.
auto
Selects automatic mode where each byte of the I/O protocol is acknowledged without the need for manually pressing GISN.
GISO
This (disabled) item indicates that the calculator has pulsed the GISO signal and sent a byte of output. It is cleared when the GISN button or action is taken.
GISN
Manually sends a byte to the calculator. If the protocol is dictating an acknowledge, then a 0 is sent. Otherwise, a byte of data from the Input field is sent.
Header
Shows the header bytes of the I/O protocol, in hexadecimal, as they are received. First three bytes are the requested data address, interpretted by the device (e.g. Expand Memory uses as a byte address, while Dual Cassette Tape uses as a tape block number).
(Header)
The field to the right of the Header shows a human-readable interpretation of the header bytes.
Status
Specifies the value to be sent when the status byte of the protocol is reached. Typically, only the low bit is significant. May use "00-00" split-decimal notation or "XX" hexadecimal notation. Blank implies 0.
Input
Specifies the data to be sent when the calculator performs a I/O read command. Use hexadecimal, blank-separated, notation.
Output
Shows the data sent by the calculator when performing an I/O write command.