Analysis: The I/O Card

A project log for Reverse Engineering The Weather STAR 4000

The Weather STAR 4000: A Journey of reverse engineering the hardware to an iconic machine of the 1980s/90s.

techknighttechknight 06/23/2022 at 01:360 Comments

Up to this point, we have only focused on the basic architecture of the system and went into detail on the graphics card, and CPU card, only briefly mentioning the data and I/O cards. 

But before we can begin to get a hello world program on the system, we must take a closer look at the I/O card. 

In a previous blog post, we mentioned the schematic of the I/O card, however to keep things simple, we will post the schematic again here: 

With that, here is the system architecture of said card: 

Peripheral - I/O Card

8051 Memory Map:
$0000 - $01FF = RAM
$0200 	      = UART Data
$0201         = UART Command
$8000         = PIO1 Command/Status Register
$8001         = PIO1 PORTA (VME Address/Data AD1-AD8)
$8002         = PIO1 PORTB (Rear External Switches 1-8)
$8003         = PIO1 PORTC (Various)
$8004         = PIO1 TCNT0 Low
$8005         = PIO1 TCNT0 High
$8100         = PIO2 Command/Status Register
$8101         = PIO2 PORTA (Indicator LEDs)
$8102         = PIO2 PORTB (DTMF Dialer Codes, 1 Indicator LED)
$8103         = PIO2 PORTC (Bus Clear, Charging Indicator)
$8104         = PIO2 TCNT0 Low
$8105         = PIO2 TCNT0 High

I/O Card VME Addressing:
$C00000 to $C001FF = 8051 INT0
$C04000 to $C041FF = 8051 INT1

PA0: VME Address/Data 0
PA1: VME Address/Data 1
PA2: VME Address/Data 2
PA3: VME Address/Data 3
PA4: VME Address/Data 4
PA5: VME Address/Data 5
PA6: VME Address/Data 6
PA7: VME Address/Data 7

PB0: Switch 1
PB1: Switch 2
PB2: Switch 3
PB3: Switch 4
PB4: Switch 5
PB5: Switch 6
PB6: Switch 7
PB7: Switch 8

PC0: (LED 7) Modem In Use LED
PC1: Modem ALB
PC2: Modem SQT
PC3: Modem/AT Serial Select
PC4: Cube Relay Control

PA0: (LED 10) System Error LED
PA1: (LED 8) Spare LED
PA2: (LED 2) Sat Data LED
PA3: (LED 3) Local Video LED
PA4: (LED 6) On Air LED
PA5: (LED 4) Spare LED
PA6: (LED 1) Satellite Video LED
PA7: (LED 5) Pre-Roll LED

PB0: DTMF Keypad Column 1 
PB1: DTMF Keypad Column 2
PB2: DTMF Keypad Column 3
PB3: DTMF Keypad Row 1
PB4: DTMF Keypad Row 2
PB5: DTMF Keypad Row 3
PB6: DTMF Keypad Row 4
PB7: (LED 9) Spare LED

PC1: Battery Charging Indicator
PC2 - PC5 unused. 

This is basically where everything is hooked up as far as the address map. Essentially, it is an 8051 based card, with two PIO/RAM ICs, and a UART IC. 

The card handles the LEDs, a modem, AT keyboard, serial port, and some general purpose I/O. 

The funny thing about this card however, is the 68K bus interface logic and timing. It is all software-based and its controlled via interrupt on the 8051, so the interrupt execution time has to be in-step with the 68K Bus Cycles. absolutely insane, and there is NO room for timing variances or error on the bus read/write interrupt handlers or errors will ensue. I tried it. 

One thing i noticed right away on the design of this particular card, is how there is an inverter off of the Q output on the flipflop, instead of just using the /Q output. As seen here:

This part made no sense to me. You would save a gate if you just wired the /Q output instead of using a makeshift inverter. Maybe there is a timing reason? Honestly, I do not know. 

In the next part, we need to disassemble the ROM and take a look at what is going on, since we have no driver or any details on how to drive this card.