Home‎ > ‎

DEC VT5x

DEC VT50 series

VT50 (VT52) with RT11.


The VT50 series was a successor to the first DEC-made glass TTY, the VT05. The VT50 was announced in 1974 and provided 12 lines of 80 column text. It handled a limited set of control sequences to position the cursor etc. The VT50 was soon followed by the VT52 which handled 24 lines of text by doubling the bult in memory. The VT55 provided simple graphics drawing by adding another board inside the terminal. The VT61 and VT62 also had the same exterior but were block mode terminals. VT78 included a Intersil CMOS HM6100 based PDP-8 compatible computer inside.

There were an option of having an internal photo-copier to make a screen copy on paper. The VT50 only had current loop interface while VT52 and onwards had a small replaceable module that could either be EIA RS-232 or current loop.

Our VT50

VT50 serial number


We received a VT50 terminal that has been stored in an attic for the past 20+ years. The condition was good but a few screws were missing. Together with the terminal we also got the VT50 field maintenance print set. However, when the restoration was started it was soon discovered that the this VT50 had been upgraded to VT52. Both the logic board on the bottom of the terminal had been replaced with VT52 boards.

VT52 is a quite simple design. The maintenance manual and print set describes it quite well, but not at all with the detail of the VT100 maintenance manual though. The logic of the terminal is splited into one UART and timing board and one data path board. 

UART, ROM and timing board.

Jumper W7 controls the 50Hz of 60 Hz mode. To be installed for 50 Hz operation. If this is set wrong the picture will be waving slightly vertically which is annoying. E21, E26, E29 and E37 is the contains the microprogram of the terminal. The contents of those bipolar PROMs, 23-124A9, 23-125A9, 23-126A9 and 23-127A9 has been dumped. The UART and timing board has four 512 by 4 bipolar PROMs for a total of 1024 bytes of micro code instruction memory.

 PROM  IC designator Nibble Bank
 23-124A9 E29 L L
 23-125A9     E26 H L
 23-126A9 E37 L H
 23-127A9 E21 H H


Data path board


There are unfortunately nothing in the print set that indicate which component goes where on the data path board as well as no list of components, which is a great pain when debugging this terminal. I have tried to ease the apin a bit by marking the IC locations on the picture above as well as listing all components below.

 E5, E9, E11, E12, E15, E16, E18, E19, E20, E23 7400
 E10 7402
 E22 7406
 E14, E21 74H10
 E6, E24 74H11
 E1, E4, E17 7442
 E32 74H50
 E13, E25 7474
 E29, E36 7485
 E2, E3, E26, E33 7495
 E8 74150
 E7 74155
 E38 74157
 E27, E30, E31, E34, E37 74193
 E39, E40, E41, E43, E44, E45, E46, E47, E48, E49, E50
 E51, E52
 2102
 E28, E35 8242


VT52 instruction set.

VT52 Instruction format


Much like the OPR class of instructions of the PDP-8 computer the four instructions of the same class can be combined simultaneously since the are executed at different points in time in the instruction cycle.



E commands are executed in TE, F commands in TF, G commands in TG and JUMP commands in TJ. Instructions with EFGH = "0000" are executed in TW and PC is incremented at TH. 

The 8 bit instructions are: 

 A B C D E F G H Instruction Mnemonic
 0  0 0 0 0 0 0  0 Set Cursor flip-flip.  SCFF
 0 0 0 0  1 X X X Clear the X and Y registers. ZXZY
 0 0 0 0 X 1 X X Decrement the X and Y registers. DXDY
 0 0 0 0 X X 1 X Load AC from memory. M2A
 0 0 0 0 X X X 1 Mode 0: Jump if printer scan flag set.
 Mode 1: Jump if UART has received a character.
 PSCJ
 URJ
 0 0 0 1  0  0 0 0  Set Video flip-flop. SVID
 0 0 0 1 1 X X X Complement bit X3 (8s-bit) of X register. X8
 0 0 0 1 X 1 X X Increment AC register. IA
 0 0 0 1 X X 1 X Load RAM from AC. A2M
 0 0 0 1 X X X 1 Mode 0: Jump if AC0=1 and AC1=1 and AC2=1 (BEL).
 Mode 1: Jump if AC = RAM.
 TABJ
 AEMJ
 0 0 1 0 0 0 0 0 Load Y register from Y buffer. B2Y
 0 0 1 0 1 X X X Increment X; Decrement Y. IXDY
 0 0 1 0 X 1 X X Increment AC register. IA1
 0 0 1 0 X X 1 X Load UART from RAM. M2U
 0 0 1 0 X X X 1 Mode 0: Jump if key-click.
 Mode 1: Jump if AC < RAM.
 KCLJ
 ALMJ
 0 0 1 1 0 0 0 0 Complement Bell flip-flop. CBFF
 0 0 1 1 1 X X X Increment X register. IX
 0 0 1 1 X 1 X X Increment Y register. IY
 0 0 1 1 X X 1 X Load RAM from B register. B2M
 0 0 1 1 X X X 1 Mode 0: Jump if 60 Hz line frequency.
 Mode 1: Jump i AC != X register.
 FRQJ
 ADXJ
 0 1 0 0 0 0 0 0 Clear cursor and Video flip-flop. ZCAV
 0 1 0 0 1 X X X Clear AC register. ZA
 0 1 0 0 X 1 X X Decrement Y register. DY
 0 1 0 0 X X 1 X Load X register from RAM. M2X
 0 1 0 0 X X X 1 Mode 0: Jump if printer flag set.
 Mode 1: Jump if AC = RAM.
 PRQJ
 AEM2J
 0 1 0 1 0 0 0 0 Load Print Shift register. LPB
 0 1 0 1 1 X X X Enter mode 1. M1
 0 1 0 1 X 1 X X Increment ROM bank. IROM
 0 1 0 1 X X 1 X Load RAM from UART. U2M
 0 1 0 1 X X X 1 Mode 0: Jump if COP L line is high
 Mode 1: Unconditional Jump.
 COPJ
 
TRUJ
 0 1 1 0 0 0 0 0 Start printer. EPR
 0 1 1 0 1 X X X Clear X register. ZX
 0 1 1 0 X 1 X X Decrement X register. DX
 0 1 1 0 X X 1 X Load Y buffer from RAM. M2B
 0 1 1 0 X X X 1 Mode 0: Jump if UART is transmitting.
 Mode 1: Jump if video scan flag.
 UTJ
 VSCJ
 0 1 1 1 0 0 0 0 Halt printer and clear Y register. HPR!ZY
 0 1 1 1 1 X X X Enter Mode 0. M0
 0 1 1 1 X 1 X X Decrement AC register. DA
 0 1 1 1 X X 1 X Spare 
 0 1 1 1 X X X 1 Mode 0: Jump if not top of screen.
 Mode 1: Jump if key not typed.
 TOSJ
 KEYJ

Microcode disassembly

I thought it could be interesting to understand in more detail how the microcode of the VT52 was working and thus built a small disassembler that took the PROM files dumped and produced a disassembly list. This list is still work in progress because the actual mode of the processor affect which jump instruction to decode. The disassembler does not take this into account which means the could has to be run to get the actual mode. The disassembly program also contained a very crude simulator that allowed to trace the execution of the code in more detail. Next step is to analyze actual execution by a logic analyzer.




Debugging the terminal

Below is a picture showing the terminal when the repair was completed. Instead of reassembling everything and then finding out that something was more was broken, disassemble everything, fix it and repeat,  I decided to do most parts of the testing on the bench.

VT52 testing

To ease the debugging effort the PSU, Keyboard, UART and timing board and datapath board were laid out flag on a table. Since two electrolytic capacitors shown minor leaking a decision was made to replace all of them. To be able to run the terminal without generating any HV a jumper was lifted on the power supply / monitor board.

Video board HV jumper.




At first there were no reaction at all from the terminal. It should klick the relay to indicate that a key has been pressed. But nothing at all happened. Was the terminal going out of reset condition when applying power correctly? Did it execute any micro code? The reset logic was ok, but it was surprisingly quiet on the outputs from the PROMs. Not a good sign.

Probing with the scope gave that the chip enable inputs for every single bipolar PROM was high. Thus inactive! That cannot be correct. The chip enable signals were generated by 7400 NAND get E34 and when probing the output of one of the gate it showed a very suspicious 2V level at the output. This is not normal since 2V is on the very threshold for a TTL circuit. 

Normally this means that the output pin is open circuit and nothing is driving it. The reason for having 2V there is that input circuit of the next gate is driving it to this potential.

Changing E34 for a new chip gave much more activity on the PROM output lines. But still no key click unfortunately.

While probing around for potential faults I found another ITT made 7400 NAND gate that showed exactly the same behavior as this gate. This time it was the cursor flip-flop E8 that was bad.



E8 bad

Unfortunately this still didn't mean complete success. Still no key click when pressing the keys on the keyboard. 

Other fellow VT52 terminal repairers on the cctalk mailing list suggested that the IC sockets for the bipolar PROMs had gone bad. Not uncommon for old socket to get too oxidized. And actually pulling out and re-inserting the PROM chips eventually gave a proper key click.

Decision was made to completely replace all the sockets and the terminal was in much better mode. 

Probing the video signal output showed a signal. But was it all right?

Hard to tell without the monitor attached. There could be all sorts of problems in the datapath board that could give corrupted video. So how could it be tested without the display connected.

By using a standard composite video monitor of course! By looking at the schematics for the VT100 terminal I came up with a quick and dirty circuit that solved the problem. 

A small bread board mock up was constructed and soldered into place and a Philips CM8533 monitor was attached. Yes, indeed! The terminal did work!

VT52 composite video circuit


Apart from that a bad solder joint on a small pulse transformer in the LOPT drive circuit the terminal worked fine and could be reassembled.












Comments