About Riccardo Macri

I’m a programmer with over 40 years experience with computers and electronics. My first computer was an Apple ][+. I’ve written a bit about the fun I had with it below.

Professionally I’ve worked developing satellite modems, space hardware test platforms and a tracking control system for a hydraulically driven satellite dish.

For 27+ years my primary job has been developing a commercial graphical simulation based application development environment called Planimate®, which was used to schedule the logistical operations of the Sydney 2000 Olympics. Through the company I am a founding director of, InterDynamics Pty. Ltd, Planimate® continues to be used to service large organisations globally as well as as an educational tool in a number of universities.

I develop mainly under Windows (Win32) but also know my way around Linux systems, having written software for embedded Linux based systems and a networked server app or two.

Music wise, I play 5 string bass (blues, funk & disco), keyboards and occasionally strum the odd chord on guitar.

With my experience and interest in real time systems, computer communications, electronics and music production, I was always looking for a way to combine them. In 2008 I contributed to a small group writing a Linux driver for the Gadgetlabs GL8x24 8 channel pro audio soundcard. My experience in interfacing to Altera hardware and fast, efficient programming not only got the sound engine going, we managed to support linking 4 GL8x24 cards to get a 32 channel DAW, a world first for that card according to one of the original developers.

On this blog you’ll find my trials and tribulations as I attempt to keep the 10 or so PCs (and associated bits) around my house in working order.

First Contact

The first time I touched a computer was in 1979. I was 12 and in a Tandy (RadioShack) store buying parts for a dual tracking laboratory power supply that I was building. Nearly 4 decades later I still have it and it still works.

Radio Shack Power Supply Kit

 

In that store there was a TRS-80 computer and some guys were playing with it, they typed “LIST” and “RUN” and things would happen. They eventually left whilst I shopped for 25c packs of resistors and overpriced transistors. When I tried the same commands, nothing happened. I guess I missed them typing “NEW”.

Programming more fun than playing

1980 was my first year at high school. The science teacher bought an Apple ][. Just one for the entire school. Not a problem back then as there was hardly any interest in it, so I had plenty of time to mess with the thing and learn BASIC. My first programming task was to make the paddle bigger in the Little Brick Out game that came with it.

It turned out learning to read BASIC and eventually finding the variable that controlled the paddle size was a lot more fun for me that actually playing the game after I’d hacked it.

Initially we loaded and saved programs from cassette tape. There was such an air of anticipation as we waited for the beep of success after a minute or two of warbling tones. The school got a floppy drive in ’81. My first 5.25″ disk cost me $7 for 143K of storage. I thought I could never fill it.

The factory fault that taught me data recovery

In 1982 I bought my own Apple ][+ so I could explore all I wanted without fear of getting accidentally locked in the school overnight. Back then computers came with circuit diagrams and ROM listings. This was fortunate as my Apple ][ was somewhat unreliable, particularly when running Apple Pascal, oddly enough. It would randomly turn on the floppy drive motor and erase the entire track the head was over!

I was forever pushing in chips (they were all socketed) and reseating cards, which seemed to help for a little. It got to the point that I actually damaged the “Slot 6” socket and had to replace it, which I did myself. Unsoldering  the old slot and getting the new one in wasn’t easy but I somehow managed it without wrecking the motherboard.

It wasn’t until I blew a few chips on the drive controller board (by mis-seating the connector, so easy to do) that I found the culprit. One of the chips on the floppy interface card had a bent pin from manufacturing, causing an intermittent connection with its socket.

It explained why pushing chips would help, for a bit. Looking at the circuit, the chip was a gate used to control the read write signal to the drive. Why was it worse under Apple Pascal? As I discovered when I’d added some status monitor LEDs to the drive (stepper motor phases, write signal, write protect switch) Pascal left the drive in a half-enabled state whereas Apple DOS 3.3 completely disabled the various latches for the drive.

So one little bent pin caused me so much grief and wasted time over the years. but it did teach me about disk file system formats, data recovery … and to back up a lot! It also got me into the guts of a system that I would have otherwise never explored. My only hardware mod to the Apple until then had been the lowercase keyboard hack.

The “Flick Start” Power Supply

Other experiences with the ][+ included it having a slowly failing power supply that took longer and longer to start. Eventually it couldn’t start the machine but I discovered that giving the floppy drive spindle a flick with a finger got it going, much like starting an old lawnmower. This worked for a few months until not even that was enough.

Then I discovered that unplugging and plugging the PSU from the mainboard while it was on would get it started. In retrospect that was pretty stupid but it worked well enough until one day … I did it without the floppy drive being plugged in.

Without the drive there to take the impulse glitch, dozens of chips on the mainboard got zapped; the machine was dead.

Fixing it involved walking your finger over all the chips and pulling out the really hot ones. The dead chips were mostly RAM (4116 16kb) and a couple of TTL gates. Swapping chips and minimising the RAM (pulling chips from peripheral cards, which were also socketed) I was able to get it to boot.

What a relief. It just took a trip to the local electronics shop to buy replacement chips to fix everything.

Try that now when a mobo component fails.

First Time Online

Around ’86 I bought a second hand Apple //e. The owner was switching to something called a Pee Cee.. It came with lots of hardware and software and due to it using a lot more integration inside, it was ever more reliable.

Around that time I also bought a card modem for the Apple which enabled me to connect to the VAX at Uni as well as explore the Adelaide BBS scene. It was a huge card that fit inside the Apple and supported 300 baud as well as the amazing 1200/75, where you had four times faster download speed at the price of having to type r e a l l y slow. This was fine for BBSing but I had to work with the VAX sysop to co-erce the VAX’s terminal server to do 1200/75.

I still remember how surreal it felt using a modem to connect to another computer for the first few times. I think what added to the experience was that we initially only had one line. You could either talk to someone on the phone or sit silently as characters slowly appeared on the screen.

8 Bit Sound, SAM and DRUM8

The //e came with a “SAM speech board” which was basically an 8 bit latch, resistor DAC, amplifier and small onboard speaker. Using the software that came with the card, the //e could speak.

I’d previously written a program to interface the //e to an old 1970’s era drum machine I had. Apples had an immensely useful game connector which included some outputs as well. I built a small interface on Veroboard which converted the Apple’s TTL signals to the funny spiky -ve pulses that the drum machine internally used to trigger its noises.

Having made a start on a few graphical action games (but never finishing any) I knew my way around the Apple’s hardware, graphics, 6502 ASM and the disk RWTS routines (what you’d call BIOS now). I wrote a mouse driven drum pattern sequencer in 6502 ASM to drive the games port and the connected drum machine. It worked, but the 4 sounds got pretty monotonous.

In ’88 I bought a Mac+ …  1MB RAM, 68000 at 16MHz. Whilst I had a mouse on the Apple //e, the complete graphical UI on the Mac was another world. I was particularly enamoured with HyperCard, a graphical environment for creating hyperlinked multimedia databases. It was really the “localhost” precursor to the web and I miss its ease of use and approach right until today.

I had some music programs for the Mac and had been given a MacRecorder 8 bit capture box for my birthday, but I never liked the audio out on the Mac+, very band limited and very noisy.

Having a few drum sounds on the Mac, I started thinking about my Apple //e drum machine again and wondered if I could get it to play the samples through that SAM speech card.

With some careful trimming of the samples (to squeeze them into 40K of RAM) and after implementing a very crude sample mixer, I was able to make my drum machine/sequencer play up to 4 out of 16 drum sounds simultaneously.

Since the Apple mouse supported interrupts (a novel concept on the Apple ][s) I was able to retain mouse control and real time editing of the sequence as-it-played even though the CPU was in tight loops mixing and pumping out the samples, one at a time. All on a 1MHz 8 bit CPU.

And I recently finished Drum8 and have released it.

First Hard Drive, another teaching lemon.

I upgraded the Mac+ to 4MB of RAM, System 7 and a 100MB hard disk. The first model they sent me was a lemon that would fail writes under heavy load. I learnt a lot about SCSI, test cases and fault diagnosis, as it took some effort to convince the retailer that a $700 drive was junk. The replacement (a Qantum) lasted 15 years until it was binned.

The Era Of Modems

I was at Uni in the late 80s and wanted to use my Mac to connect to the VAX system. Initially I programmed the Apple //e to reflect its modem card over the Super Serial Card, enabling me to use it as a giant modem for the Mac. Eventually I got a 2400 full duplex.. Which was followed by a 9600 portable IBIS, a 14.4K, a 28K “voice” modem, then 2 paired 33.6Ks and finally a couple of paired 56Ks.

I remember how we’d all upgrade modems as the next generation of speed became affordable.

QueMate, SimView, Planimate and InterDynamics.

In November 1988 I was employed at the Uni along with a friend for a few weeks to write a simple discrete event simulator. We called it QueueMate and got some simple animated simulations running. At the beginning of ’89 my friend took a real job but I was too fascinated with designing a data structure which would support arbitrary graphically built models with capacity-less decision points and pull dependency unblocking.

QueueMate became known as SimView, its rapid development inspired by the ideas and vision of Dr. Doug Seeley, the lecturers who had employed us. All those unfinished Apple II games had given me the background needed to implement the simulator, which Doug had envisioned in the early 70s.

In 1992, InterDynamics was incorporated and SimView was renamed Planimate. Since then I’ve transitioned the platform from 16 bit DOS to 32 bit DOS, then to Windows Win32, then to 64 bit. The simulator compiles with Visual Studio or gcc and runs under Windows or Linux. It incorporates quite a range of Win32 APIs, abstracting them to a much more accessible level for non hard-core programmers. Planimate’s history is worthy of an article in its own right.

Fun witth MIDI and music

Early 90’s I bought a Korg M1 music keyboard and MIDI interface and learned to sequence songs using “Metro”, a very nice graphical sequencer for its time. But with my work being PC based, I used the Mac less and less and that was the last Apple product I had anything to do with.

Since then I’ve sequenced with PC (Sonar), mashed samples with ACID and produced videos with Adobe Premiere. I still love CoolEdit and use WinAmp as I like it and its plugins. I’m quite experienced with analogue and digital video pixel formats, aspect ratios, frame rates, interlacing and audio/video recording and processing in general.

Eyes

Don’t think I’ve mentioned it, but I’m legally blind (Retinitis Pigmentosa).

I write my own accessibility apps and am very intolerant of applications and operating systems that don’t provide high contrast compatibility. My condition is a bit ironic really, given all this hackery, particularly with video.  I guess I’m fussy because the little that I do see better be as good as technically possible.

The biggest physical thing I’ve programmed:

astra
This is ASTRA, a hydraulically driven 6.8m X-Band Low Earth Orbit Satellite tracking dish at the University of South Australia. In the early 90s, some old 50s era tracking hardware, originally intended to drive Yagi Antenna arrays mounted on battleships, became available to the Uni. On a shoestring budget over many years, the pedestal and a donated dish were erected.
The system did not include any control system, the original was vacuum tube based and long obsolete.
I picked up the responsibility of developing a real time control system for the dish, starting in 1993 under DOS and later moving to Windows. I developed a PID based system that in the end was able to track the dish to within 0.1 degree pointing accuracy. The dish had to follow satellites that moved from horizon to horizon over about 10 minutes and the feedhorn did not give pointing error feedback, but we found ways to use signal level feedback from the receivers to compensate for time and positional tracking errors.
In the early 2000s the dish went into active service. Being one of the few X-Band tracking antennas at Adelaide’s latitude, if was commissioned to capture paid-for data from commercial remote sensing satellites over Australia. I left the Uni in 2003, but understand the dish was used with my software until 2011.

The biggest event I’ve programmed:

In 2000 InterDynamics provided logistics scheduling support for the Sydney 2000 Olympics. Planimate was the framework used to build the Delivery Vehicle Scheduling System, which ensured that athletes and chefs in the Olympic Village did not face undue delays in the delivery of supplies thoughout the period before and after the games.

The most “out of this world” thing I’ve been involved with:

In the mid 90s at the University of South Australia I wrote test software that was used by NASA to test components in a communications payload upgrade to the Hubble Telescope. My software kicked out DOS and generated noise-corrupedf data real time and blasted  samples out of the parallel port at an externally clocked 50-100k samples per second, impressive for an early 90’s 286. My favourite bit of the software was the on screen instruction to “press RESET to continue” since I’d knocked out the keyboard driver, it slowed things down too much.

This is probably topped by me debugging and completing what was half-finished thread infested groundstation control software that was used to command the FEDSAT satellite, the first satellite built in Australia in over 30 years which launched in December 2002. I hadn’t used threads much before then, but quickly learnt that they are best avoided unless absolutely necessary for a specific and well scoped  task.

IF anything, I hope this page has proven my ability to ramble on and on.