A video graphics card adaptor for the TRS-80 microcomputer with Level II BASIC

Back to Home page


Design files and associated documents for download:

TRS-80 Model 1 VGA adaptor - the complete project doccument
PCB Gerber files
Stage 1 machine code graphics routines (object file)
BASIC example program - Moiré pattern star
BASIC example program - 99 Luft Balloons
BASIC example program - Lorenz Attractor
BASIC example program - Series I Land Rover
BASIC example program - Maurer Rose drawing program

Introduction

This project consists of two parts:

Hardware - a very simple interface in 74HC(T) logic designed to permit any of my three "VGA" video graphics cards to be fully addressed and controlled via the Expansion Interface Port of a vintage TRS-80 Model 1 microcomputer. Add dual-monitor support and high-res graphics to your 1970s era hardware!

Software - fast machine-code driver and video graphics drawing routines callable by BASIC. Specifically programmed for 16 kB Level II machines and packaged as a single object file, the routines load into the top 4 kB of RAM with the SYSTEM command and provide BASIC with a host of powerful drawing functions. These functions include: setting pixels, drawing lines between specified points, drawing circles/arcs and rectangles (outlined or filled), bucket-pour filling, pixel reading for block copying and a basic 80 column by 60 row text mode with 128 ASCII characters to choose from.

I mated the adaptor with my Card B VGA video card and packaged the pair in a 19” rack case having a form factor to suit my Tandy / RadioShack TRS-80 Model 1 clone. So that the TRS-80s Expansion Interface port remains available with the VGA adaptor plugged in, a through-port connector is provided. As per my TRS-80 Model 1 clone design, the Expansion Interface port is broken out on the adaptor PCB via a 50-pin IDC header. In order to interface the adaptor to an original TRS-80 computer, an adaptor cable would need to be soldered up as the Expansion Interface port on the original hardware took the form of a 40-pin edge connector with a different pin-out.

The “Stage 1” machine code routines which I have written are specifically for my Card B VGA video card. I have no plans at this stage to either adapt these routines or write new ones for compatibility with either card designs A or C – for these video cards, I have other plans!

The project document contains all of the technical details of the build, the machine code assembly listing (for the curious) and detailed instructions on how to load into memory and how to utilise and command the graphics-drawing routines in Level II BASIC. Some BASIC example program listings follow, along with photos of the graphical displays that they produce. These BASIC programs are provided via the download links above in the form of audio files, to be played back for “cassette” loading.

The VGA adaptor installed into my retro computer rack and plugged into the TRS-80:

BASIC example listing - Maurer Rose drawing program:

Wikipedia has a good entry on the Maurer rose. It’s basically formed by a bunch of lines joining points on a rose curve plotted in polar coordinates. A Spirograph-like curiosity of geometry aside, I’m not too sure of the practical application, but some of the possible forms sure do look pretty!
These roses were photographed directly off my Samsung flat-screen monitor. The background colour is actually white, but my camera can’t handle that for some reason and insists on rendering it in a light shade of grey. The text entries giving the n and d variables which define each rose pattern aren’t part of the video display; I added those to each image in MS Paint for the purpose of documentation. Each rose has a radius of 200 pixels and takes an average of approximately two minutes to be fully computed and plotted.

BASIC example listing - Series I Land Rover:

Here is a program to honour a classic of British automotive engineering. This BASIC listing makes full use of my machine code drawing routines.

BASIC example listing - Lorenz Attractor:

BASIC example listing - Moiré pattern star:

BASIC example listing - 99 Luft Balloons: