VT1303 Transferring CP/M Files

After doing some reading, I thought that if I could transfer a hex file I might be able to transfer some more programs.  Once I had the hex file it could be converted to a binary using load.  Normally the transfer would be done with a serial port – but, alas, the lexitron doesn’t have a serial port.  The only input mechanism that I know of is the keyboard – and that would mean a lot of typing.

But – I have an Arduino keyboard scanner now – so that means that it can do the typing for me and a lot faster.  I arranged the code to read characters from the virtual serial port (over USB) – convert them to the keycodes – and then push them into a file using PIP.  There is no flow control, but I found that 4k could be transferred without triggering an awkward disk write.  That means breaking the files into 4k blocks and then reassembling them. Of course, you have to be mad.

First, you need the binaries.  In many cases, they are available.  In some cases, they are encapsulated in images. They can usually be extracted from images using CPMTools.

The executables need to be 8085 compatible – some CP/M programs (eg turbo pascal, I think) rely on Z80 instructions. 

They also need to be compatible with the lexitron “terminal” – which seems to be compatible with the Lier-Siegler ADM-3A. Some programs have an installer to set the terminal type. 

Once you have a suitable binary (and several may be required) then each has to be converted to 4k hex files, each of which is about 12k in size.  I wanted to do this on a Windows PC, so I used srecord-1.64-win32.

It’s easiest to do this in a batch file, eg this one for the Wordstar overlay:

srec_cat wsovly1.ovr -binary -crop 0x000000 0x001000 -offset  0x00100 -o wsov0.hex -intel -address-length=2 -output_block_size=16

srec_cat wsovly1.ovr -binary -crop 0x001000 0x002000 -offset -0x00F00 -o wsov1.hex -intel -address-length=2 -output_block_size=16

srec_cat wsovly1.ovr -binary -crop 0x002000 0x003000 -offset -0x01F00 -o wsov2.hex -intel -address-length=2 -output_block_size=16

srec_cat wsovly1.ovr -binary -crop 0x003000 0x004000 -offset -0x02F00 -o wsov3.hex -intel -address-length=2 -output_block_size=16

srec_cat wsovly1.ovr -binary -crop 0x004000 0x005000 -offset -0x03F00 -o wsov4.hex -intel -address-length=2 -output_block_size=16

srec_cat wsovly1.ovr -binary -crop 0x005000 0x006000 -offset -0x04F00 -o wsov5.hex -intel -address-length=2 -output_block_size=16

srec_cat wsovly1.ovr -binary -crop 0x006000 0x007000 -offset -0x05F00 -o wsov6.hex -intel -address-length=2 -output_block_size=16

srec_cat wsovly1.ovr -binary -crop 0x007000 0x008000 -offset -0x06F00 -o wsov7.hex -intel -address-length=2 -output_block_size=16

srec_cat wsovly1.ovr -binary -crop 0x008000 0x009000 -offset -0x07F00 -o wsov8.hex -intel -address-length=2 -output_block_size=16

srec_cat wsovly1.ovr -binary -crop 0x009000 0x00A000 -offset -0x08F00 -o wsov9.hex -intel -address-length=2 -output_block_size=16

srec_cat wsovly1.ovr -binary -crop 0x00A000 0x00B000 -offset -0x09F00 -o wsovA.hex -intel -address-length=2 -output_block_size=16

srec_cat wsovly1.ovr -binary -crop 0x00B000 0x00C000 -offset -0x0AF00 -o wsovB.hex -intel -address-length=2 -output_block_size=16

srec_cat wsovly1.ovr -binary -crop 0x00C000 0x00D000 -offset -0x0BF00 -o wsovC.hex -intel -address-length=2 -output_block_size=16

srec_cat wsovly1.ovr -binary -crop 0x00D000 0x00E000 -offset -0x0CF00 -o wsovD.hex -intel -address-length=2 -output_block_size=16

srec_cat wsovly1.ovr -binary -crop 0x00E000 0x00F000 -offset -0x0DF00 -o wsovE.hex -intel -address-length=2 -output_block_size=16

srec_cat wsovly1.ovr -binary -crop 0x00F000 0x010000 -offset -0x0EF00 -o wsovF.hex -intel -address-length=2 -output_block_size=16

Excel is a very handy tool for creating repetitive batch files.

Each hex file holds 4k of the binary but takes 12k of space to do it.  The offset in each file is 0x100 which is as expected by the cp/m load program.

The PC serial port (which is a virtual com port over USB) needs to be setup to talk to the teensy:

mode com3:baud=9600 parity=n data=8 stop=1 xon=on

Regardless of baud rate, the rate at which characters are sent to the 8085 has to be throttled in the teensy. 

At the lexitron setup to receive the file:

pip b:wsov0.hex=con:

At the pc copy the file to the serial port:

copy wsov0.hex com3

Once the transfer ceases, type Special Shift Z to terminate the transfer.

Then convert the hex to a binary

load b:wsov0

This will create b:wsov0.com

Repeat for the other hex files.

Once you have all the required files, they have to be re-assembled:

b:

a:pip wsovly1.ovr=wsov0.com[o],wsov1.com[o], ……… wsov8.com[o]

Do it in stages if the command line gets too big.  The hex files are big so will quickly fill a floppy disk, so delete them once converted to com. 

It’s very easy to make a mistake.  Stay alert!!

Using this technique I was able to transfer wordstar, zork, and some utilities.

I thought it may be possible to avoid all this by using the PIP block mode.  This would rely on the OS to stop accepting characters when they weren’t being used eg during a disk access.  Unfortunately, the OS accepts them and then throws them away.  It appears to be impossible to implement flow control at the keyboard interface, even though it is possible with the serial interface.

I found I could push files to 8k with 32 bytes per record.  I have written batch files to assist. 

VT1303 Screen Cataracts

It was a very long time (about three years) before I mustered the courage to tackle the CRT. My assessment of the implosion risk is that it is credible, and therefore should be treated with some caution.

I started by making a box to secure the CRT while I did the work. I then removed the CRT from the unit and mounted in the box. This protected it from the rough treatment that it was about to receive, and it would help contain material in the event of a mishap.

I’ve seen several approaches on youtube to cataract remediation.  Some people heat up the tube to quite high temperatures, which just looks too dangerous to me due to the significant possibility of uneven heating causing catastrophic failure. See:

https://www.videokarma.org/archive/index.php/t-184752.html

Others use a hot wire, which seems more reasonable.  I thought about cutting through with a high strength fishing line.

In the end I found the gel was quite soft and could be worked out with some plastic picnic knives.  It took a couple of hours and several broken knives to get it to a point where i could break the suction without risking the glass.

I expect the second layer of glass protected the CRT from user abuse, and perhaps gave some assurance that if the screen suddenly imploded, the user had some protection. I’m not totally convinced that the glass itself provided a lot of protection because it isn’t very thick, but it may be laminated. It does have a nice non-reflective surface though.

I think the gel was probably doing two things. Firstly, it attached the protective low sheen glass cover without any risk of dust between the two layers. I expect it was also part of the protection of the CRT from the user and vice versa. It would have been effective at absorbing energy and reducing the scattering of the front glass. Something akin to an air-bag.

I cannot think of a way to replace the gel, but i can at least replace the antiglare screen.

There is no such protection at the back of the CRT, so once the computer cover is off the risk is probably higher at the back than the front.

The CRT also has an anti-implosion band which was in good condition and i left it as it was.

After cleaning up the glass, I reattached the antiglare screen with double-sided tape.  Once in the machine, the anti-glare screen is against the enclosure. I will be treating the machine with some respect when moving it around.

Before putting the tube back in the machine, i put tape around the gap to seal it from dust.

Before and after:

Dick Smith System 80

The System 80 is an attempt, largely successful, to create a machine compatible with the TRS-80 Model I.

Terry Stewart has done a wonderful job of documenting the System 80. Everything that you could ever want to know about it is there. I’ll just focus on my own experience.

I bought this machine from a colleague, Scott, at the Adelaide Retro Computing Group back in 2020. My recollection is that he had collected a number of computers from a seller. This one was outside his interests, so he offered it for sale. I was happy to take it; i never expected to have such an opportunity.

The machine came with an expansion unit and a floppy disk drive. The expansion unit, X4010, has a three slot S-100 backplane. It provides 32k of memory, a disk controller, RS232 port and printer port.

The machine can run any of the myriad of operating systems that were created for the TRS-80 Model 1. Similarly, it can load programs from cassette, just as the TRS-80 Model I can.

This particular machine is an early version with no tape level meter. It has a keyboard modification that replaces one of the shift keys with backspace and tab keys.

It came with a soft plastic dust cover. Instead of protecting the unit, it caused a lot of unsightly “melts” in the plastic. There were also several other issues to work through.

The computer is badged as a “third generation computer” but, as far as i can work out, it would normally be considered a fourth generation computer. Perhaps the usage of the term changed. Or perhaps it is the only example of “underselling” in the computer industry.

System 80 Inspection & Power Up

The system, as it arrived, looked like this:

I set the monitor aside as a separate project. It had very crude and broken mod that held a sheet of coloured perspex over the screen. I will eventually add that back.

The main unit was in good shape. I just reseated the main RAM.

To judge from the date codes, it was made in 1981 when I was still at high school.

This machine uses an old school linear supply. I inspected it and reformed the power supply capacitors by bring up the supply voltage slowly with a variac.

Two new keys where the second shift key was. The sideways A is the tab key.

Switch added at the top of the pic. Shift changed to backspace. Backspace to clear.

With power (and a kludge for the video cable) it came to life.

The plastic had melted against the soft plastic dust cover. It looked pretty awful.

I had to make some compromises. I used a combination of acetone and wet & dry paper to get it back to an acceptable finish. It may be possible to do better.

I crafted, and then glued on, a replacement door latch. It failed, so i had a second go and that is still holding several years later. To be fair, i don’t use the cassette deck very much.

The tape unit itself was gummed up, but after a clean and lube, it seemed like it might work.

System 80 Expansion Unit

There were two different types of expansion units for the System 80. This is the early one with the S-100 bus.

The first card connects to the System 80 via a 50 pin interface. It also provides the floppy, parallel and RS232 ports. I particularly like the termination networks that have been added to several of the ICs.

The second card provides 32k of RAM. There was one faulty RAM chip.

The power supply unit is the same as the computer. I reformed the caps with a variac.

There is one spare slot for an additional card but the case is not great for adding additional I/O and there’s no obvious mechanism for adding more memory beyond the current RAM/ROM.

System 80 Floppy Drive Unit

The system came with a matching Floppy Drive Unit that connects to the expansion unit. It uses an MPI B51 40 track single sided drive.

I gave it the routine clean and lube, but it would not read disks. Drive speed was good.

Configuration was preset:

I located a service manual on the net and that was very helpful for fault-finding.

I convinced myself that the differential amplifier (CA3054) in the read circuit was cactus and replaced it. With this, the system booted. Alas, it wouldn’t format disks.

Breaking out the CRO and checking the signals on the drive interface showed there were no index pulses. In an unexpected twist, it turned out that the disks i was using were not sufficiently opaque. Is that even possible?

It appears so from the traces; the voltage in the top picture never gets high enough to flip the comparator, whereas in the second picture, with a different disk, it does.

I checked over and over. It’s fine with five other brands, so I’ll call it good enough.

It lasted about a week before it stopped reading from disks.  Perhaps it had an intermittent problem and the original differential amp didn’t fix it. 

With the scope, I was able to see differential signals going into the LM311 comparator, but nothing coming out.  I replaced the comparator and i was back in business.

I made up a few disks and had a play!

I also had no trouble setting up a gotek as a drive. I just powered it off the real drive and connected with a custom cable. It has to be set to drive 1.

BSides Adelaide May 2025

A couple of my colleagues, Mike and Craig, and i represented the Adelaide Retro Computing Group at the BSides event in May 2025.

They gave us half of a very large room at the Adelaide Hilton. Between us, we had about 15 retro/vintage machines for the cybersecurity community to experience.

The scene below is how things looked just prior to the start of the second day.

Talking Electronics TEC-1

The TEC-1 was a hobby project published and sold in kit form by Talking Electronics magazine in Australia.

Such is the following of this design that descendant designs continue to be produced.

A man turned up with one at an ARC meet with one that was surplus to his requirements, and i was happy to relieve him of it. It even came with a kit logic probe from the same publication.

A particular highlight of this particular build is the mains step down transformer being housed in the cardboard box in which it was originally mailed. Nevertheless, this unit was successfully tested and tagged recently.

VT202 Power On & Testing

Inspection of the first chassis showed no obvious issues so i removed all the cards, disconnected the drives, and bravely powered up it up.   The voltages looked sensible.   There was no smoke.

I then put the cards back in and fired it up.  Surprisingly, it came up ready for a boot disk.  I tried my disks for the VT1303.  Curiously the VT1303 word processor boot disk was labelled as also being for the RDS 201/202 and sure enough it worked.

The CP/M disk did not work.  It booted but then reported that it was not for this system and then halted.

I found another image “Lexitron Raytheon VT Series CPM-85 Disks 1 & 2” Disk 2 that sometimes worked (I thought there were drive issues) and then I found CP-M 2.20D worked better.

The cataract issues were remediated in much the same way as the VT 1303.

I then started trying the cards from the second machine in the first.  The processor cards appear identical, but CPM again reported that the system was incorrect.

  • RAM Card is good
  • Printer card is good
  • The first FDD is good
  • The second FDD does not read disks properly

After testing the disk cards, I had some problems getting the machine to start.  This seems to have been the keyboard connectors.  I gave them a clean (at both ends of the cable) and they came good.  Symptoms included a continual beep or incorrect characters typed after boot, or random rubbish on the screen.

The system will give a start chirp if the printer card is missing, but will not start the boot process.  The same if the second floppy disk controller is missing.

I repeated the exercise on the second chassis.  The 5V line was 5.75V.  It’s a switching supply.  I found the voltage could be adjusted at the pot next to R75 – top right.  Fully loaded it drops about 0.25V so I tweaked it up a little.

After cleaning a lot of edge connectors, this system also came up.  Remarkable really. As noted earlier, the processor card does not work with the same version of CP/M as the other machine.  I swapped the ROMs and it came good.   

These are 2708 ROMs which are a problem for me.  I don’t have a programmer that can read or write them (it on the “to be acquired” list). I adapted my EPROM programmer.  I can now read 2708s through an adapter.  I used a 2716 in the processor card with a hand made adapter.

The bottom line is that the two sets of cards are good except for one floppy disk controller.