The Teleray 3931 is one of several related video computer terminal models released by Research Incorporated in the 1974/75 period. External and internal appearances suggest the 3900, 3700, and 3500 Series are variations on a common base design. The 3931 is distinguished in its ability to switch to an alternative character set of symbols for APL, in addition to the full ASCII character set. In APL mode, full overstrike capability is also provided, in short by the addition of a second screen memory.

The screen is a standard 24*80 characters, each character formed with a 5*9 pixel matrix - the common 5*7 matrix extended by two lines for lower-case descenders. A switch presents the option of doubling the character width, making characters easier to discern, but reducing the screen to 24*40 characters. The double-width characters are still of 5*9 resolution, each pixel is simply doubled along the horizontal.

The unit presented here is from 1976. From a sticker on the front, in its earlier life it was with the University of Victoria (BC) Physics Department.

Contents (this page):
References / External Links:

ASCII & APL Character Sets

The encoding used for the APL character set is not an extension of ASCII. The APL codes occupy the same 7-bit (0x00::0x7E) value-space as ASCII. Some encodings are the same (control codes (0x00::0x1F) and numerals ("0"::"9")) or similar (APL uppercase letters are the same codes as ASCII lowercase). Most of the remaining encodings are distinct, although a few standard punctuation characters have the same code in both sets (e.g. "/"=0x2F in APL & ASCII), but not all (e.g. "$" in ASCII=0x24, in APL=0x7E). Hex code tables for both character sets are shown in the photos below.

The code interpretation and display can be switched between the ASCII character set and the APL character set. This is a mode change for the entire screen, not an internal-state change only affecting the interpretation of subsequently-received characters. Switching between the two character sets may be accomplished either with the APL switch on the front panel, or by receipt of ASCII Shift-In and Shift-Out codes (see Control Codes). Observe that SO (ctl-N) and SI (ctl-O) are called out on the keyboard.

APL (the language) includes the definition and use of overstrike symbols to denote some operations. The 3931 supports this requirement through the addition of a second screen memory, thus there are two memory cells for each screen character position. Overstrike symbols can be entered by backspacing and entering the second, overstriking character over the first character. Carriage return could also be used, with HT or non-destructive space-over, see the SOD switch. The 5*7 pixel matrix for a character is at the lower limit of resolution for presenting overstrike characters. It is enough to usually produce unambiguous symbols but not always enough to discern what combination they are based solely on appearance. The OS switch (overstrike display select) can be used to resolve the contributing characters.

Overstriking is only operational in APL mode. This applies to both the display of overstrikes and the reception and recording of overstrike sequences. That is, overstrike sequences received while in ASCII mode will not be displayed correctly when the display mode is switched to APL.

ASCII character set / narrow (80 columns).

APL character set / narrow (80 columns).

The keyboard with APL symbols. The symbols on each key accord as follows:
  • Upper-left: APL shifted
  • Upper-right: ASCII shifted or ctl
  • Lower-middle: ASCII & APL, unshifted
  • Lower-left: APL unshifted
  • Lower-right: ASCII unshifted

ASCII character set / wide (40 columns).

APL character set / wide (40 columns).

Technical / Implementation

In the early 1970s as MOS LSI developed, the economics of producing video computer terminals improved. RAM ICs could be used for screen memory, ROM ICs could be applied as character generators, and UARTs and integrated keyboard scanner/encoders were produced as 'building-block' ICs. Driven also by the advent of minicomputers and timesharing systems, demand for video terminals increased. They were desirable substitutes for ASR-33 teletypes which were in common use as computer terminals.

While microprocessors were also introduced in the early 1970s, it wouldn't be until the mid-late 70s that they became standard in video terminal implementations, as exemplified with the standard-setting DEC VT100 based around an 8080 microprocessor, released in 1978. In the meantime video terminals would largely continue to be implemented using dedicated logic. This latter approach to implementation had its limits of course: adding features and options involved the complexity and expense of additional hardware logic, not merely some more firmware code. Configuration was done with switches and jumpers - "set-up mode" would be a microproc-era feature. Control tended to be limited to carriage control and bell - essentially, enough to mimic a teletype and be adequate for line-at-a-time style user interface. In this conjunction of capability and application they were often referred to as "glass teletypes".

The 3931 is in this dedicated-logic category. The following MOS LSI ICs are used:

The rest of the implementation - timing and control - is all SSI/MSI TTL.

Control codes are limited to CR,LF,FF,BS,HT,SO,SI & BEL. Only scroll-mode is provided, but in addition the cursor is always at the bottom line. As a consequence, line editing can be implemented but use of the 3931 for a full-screen editor is not feasible.

The user's view.

Rear view.

Top view of interior. Power supply on left of photo / rear of terminal. The monitor is a Motorola OEM unit.

Bottom view with logic boards. The large, lower board is the main logic board. The smaller board at the top is the APL character-set board.
The main board is presumably common to the 3500,3700,3900 models. Here, the wider ribbon cable from the APL board plugs in on the main board where a 2513 character generator ROM would otherwise reside, while that ROM is moved to the APL board.

Main logic board. The 2*7 array of TO-5 can ICs with heatsinks are the screen memory 1404A 1024-bit shift registers. These 14 ICs are arranged as 2048 words by 7 bits/word. The two larger - highly unusual - can ICs slightly to the right are two-phase clock drivers for the 1404As.
Note there are several empty IC sockets, even after accounting for ribbon cable plugs. When first noted there was some concern someone had been scavenging ICs from the unit in the past. It turns out the unit works without them, so presumably they were for use in the other models or options.

APL character-set board. Another complement of ICs for the second (overstrike) screen memory is obvious. The two grey 24-pin ICs are 2513 ROM character generators. One is an off-the-shelf version programmed for ASCII uppercase, the other is custom programmed. Two 2513s provides for 128 characters. This still isn't enough to cover APL and full upper/lower-case ASCII. There are three PROM ICs (16-pin ceramic, left side) which can be expected to be fulfilling the remaining pixel-encoding requirements.


Front Panel Switches

Control Codes

The 3931 responds to the following control codes:
Code Hex Function
BEL 07 Bell.
BS 08 Back-space. Move cursor left one position.
HT 09 Horizontal Tab. Move cursor right one position.
LF 0A Linefeed.
FF 0C Form-feed. Clear screen.
CR 0D Carriage Return.
SO 0E Shift Out. Use APL character set for display.
SI 0F Shift In. Use ASCII character set for display.

Communications Port & Other Configuration Options

The communications port is the unmarked DB25F connector (as opposed to the DB25F marked "PRINTER") on the rear, wired as RS-232 DTE.

NOTE: For RS-232 data reception, either an internal jumper (pins 91 & 92 on the main logic board, by the communications port DB25F) must be present, or pins 18 & 19 of the DB25M plugging into the communications port must be jumpered. See schematic.

NOTE: The DB25F includes electrical connections on pins not in accordance with the RS-232 standard. Some of these are for a passive current loop interface. See schematic.

Bit Rate:

The HIGH/LOW switch on the front panel selects one of two bit rates. Each rate is configurable internally via the switches at location UD1 on the main logic board, in accordance with the following table, where a closed switch constitutes a 1:
Switch Bit
UD1-1 Low-rate 8 bit
UD1-2 Low-rate 4 bit
UD1-3 Low-rate 2 bit
UD1-4 Low-rate 1 bit
UD1-5 High-rate 8 bit
UD1-6 High-rate 4 bit
UD1-7 High-rate 2 bit
UD1-8 High-rate 1 bit
019799 81200
19600 9600
27200 10300
34800 11150
43600 12134
52400 13110
62005 1475
71800 1550

Data Bits:

The number of data-bits per character is fixed at 7. An 8th 'parity' bit is always transmitted, but may be configured using switches at location UL3 on the main logic board:
Switch 8th Bit
UL3-3 / PL CLOSED: Fixed low
UL3-4 / PH CLOSED: Fixed high
UL3-5 / PE CLOSED: Even parity
UL3-6 / PO CLOSED: Odd parity
Only one of switches 3,4,5,6 should be set closed.

The 8th bit is ignored in reception.

Stop Bits:

The number of stop bits is configured with the other two UL3 switches:
Switch Stop Bits
UL3-1 / 1 CLOSED: 1
UL3-2 / 2 CLOSED, Low rate: 2
CLOSED, High rate: 1
Only one of switches 1 & 2 should be set closed.

Control Signals:

The terminal asserts DTR in REMOTE mode, and deasserts it in LOCAL mode. No other RS-232 control signals are generated or detected.

Other Configuration Options:

The switches at location UK8 configure some screen characteristics:
Switch 8th Bit
UK8-1 / RA Return Automatic. CLOSED: Wrap. Carriage return and linefeed at EOL. OPEN: No wrap. Characters after EOL are discarded.
UK8-2 / NL New Line. CLOSED: Receipt of LF effects both a linefeed and carriage return. OPEN: LF effects only a linefeed.
UK8-3 / LA ? Not determined.
UK8-4 / 80 CLOSED: Bell at column 72.
UK8-5 / 80 CLOSED: EOL or wrap at column 80.
UL3-6 / 72 CLOSED: Bell at column 64.
UL3-7 / 72 CLOSED: EOL or wrap at column 72.
UL3-8 / RM ? Not determined.
Only one of switches 4 & 6 should set closed. If both 4 & 6 are open, there is no EOL warning bell.
Only one of switches 5 & 7 should be set closed. If both 5 & 7 are open, the EOL is at column 64.