Atari BadSector "A" Project Diary
Time to start on the Atari SIO interface code. The
intention is to use the falling edge of the Clock Out to generate an interrupt,
at which time the Data Out value is sampled and a byte value created bit
There isn't any board space left on the circuit
board, so for the moment I will use flying leads which connect to the SIO
connector on the PIC LCD project circuit board.
The first code just increments a variable when
INT0 goes low. I am using the T0 and T1 port bits as outputs. I toggle
these pins to see what is happening in the interrupt code. I use my 60MHz
Hitachi scope to view the SIO header waveforms and the response of my software
on T0 and T1.
Continue to play with interrupts. Reserve register set #1 (RAM locations
8 to 15) for interrupt function use. I can print out the number of interrupts.
I setup my Atari 130XE and 1050 floppy drive and chain the PIC LCD project
board SIO connector. Flying wires for ground, Command and Clock Out allow
the interrupt routine to be tested. I can print the number of interrupts
I load up BUG65 in order to allow me to read sectors using the R%
I am starting to realise that interrupting on a bit to bit basis leaves
very little time to execute the interrupt code. Since a state variable
is been checked and updated I suspect that some interrupts are being lost.
I am expecting a fixed number of interrupts per header packet, but this
number is not stable. Looking at the machine code generated from the C
code I can see that the interrupt routine might be too slow.
The interrupt routine is re-coded in machine code only for speed. I have
also discarded the interrupt per bit method. I will now interrupt on the
falling edge (start bit) of the Data Out wire and then use software delays
to grab all the remaining 8 bits and form into a byte value. I need to
use my 60MHz scope to monitor the SIO waveforms in order to get the timings
correct. Each bit is about 52us. Once again I use T0 and T1 to show how
the interrupt routine ties up with the SIO Data Out signal. T1 toggles
at the exact point that I sample the data.
Return to Atari Projects home page