Ponderings of a kind

This is my own personal blog, each article is an XML document and the code powering it is hand cranked in XQuery and XSLT. It is fairly simple and has evolved only as I have needed additional functionality. I plan to Open Source the code once it is a bit more mature, however if you would like a copy in the meantime drop me a line.

Atom Feed

A blast from the past

the first serious code I wrote???

Recently I had been unpacking some boxes of older and more obscure belongings that I never felt the need to unpack, I have moved house twice since 2004 and these boxes have only just been unsealed! Whilst looking through the contents, I found some old 3.5” floppy disks and low density ones at that – wow! One of those disks turned out to contain the code for something called “SM~ART”, which made me feel very nostalgic; although for the life of me I cant remember what the acronym stands for!

Amstrad PC3286

SM~ART was quite possibly the first serious project that I ever undertook in software. It was 1997 and I was 16 years old and in the final year of my GSCE studies at school. Since as long as I can remember I have always had an interest in electronics, which unfortunately (for my family) as a kid meant me taking things apart (sometimes they also went back together again). With the first family computer an Amstrad PC3286 I became equally as interested in computers. Anyway, I digress, I had been studying GCSE Electronics and with my final year project approaching I decided I should undertake something to get top points and really show everyone that I meant business.


With the help of the book “Interfacing PCs and Compatibles” by R.A. Penfold, I embarked on a seriously ambitious project to design a 16-Bit ISA bus card for the PC for data acquisition. The card basically just extended the bus to a socket which was then connected to the data acquisition hardware in an external housing. The ISA bus card had a hard wired address decoder built out of 74LS* TTL logic chips, and the acquisition hardware consisted of an Intel 8225A general purpose I/O chip, and a couple of 8-bit analogue to digital converters; this allowed a configuration of either three 8-bit parallel ports or one 8-bit parallel port and 2 analogue ports. I will publish the schematics if I ever find them.

SM~ART Main Screen

So I had the hardware, but that would of been useless without some software to operate it – so I developed SM~ART. SM~ART was written in Microsoft QBasic 4.5 on our 286 PC at home. I think I probably chose QBasic at the time because it was just enough to get the job done, I had a couple years hobby QBasic experience and QBasic provided the INP and OUT statements which enabled me to read or write directly to a specific hardware address – in this case my data acquisition hardware.

SM~ART consisted of a very simple graphical interface with a number of screens - Console (for communicating with the hardware), Change Settings (various settings for communicating with the hardware), Change Colours (change the screen colours of the SM~ART interface). All of the settings were persistable to disk and I think it was also possible for it to create log files of data received from the hardware, or for it to accept a file of commands to execute against the hardware.


Well I submitted both the hardware and the software which were graded pretty high. Unfortunately it was never possible to test the two working together, no one had a PC they were willing to risk me destroying with potentially faulty hardware, so that counted against my grade a little.

I had a look through the QBasic source code for SM~ART and I have to say that I am pretty impressed. Whilst its 'basic', it actually seems pretty clean, there are some comments (could probably use more) and its logically organised; I have to say I am quite happy with my yesteryear coding skills :-)

Source code is available here if anyone is interested -

Adam Retter posted on Wednesday, 22nd April 2009 at 12.30 (GMT+01:00)
Updated: Wednesday, 22nd 2009 at April 12.30 (GMT+01:00)

tags: CodeQBasicHardware8255ASoftwarePC Interface

Comments (1)

place for qb

Add Comment

(will not be shown)

Tag Cloud