Posted By
GeorgeHug on 2021-12-02 10:06:17
| Re: Could someone run test software for me?
I think you were right about the baud rate affecting this. i went looking for datasheets, and in the Rockwell version of the 6551, they have a note that bit 4 of the status register (transmit) takes 1/16 of a bit period to update. I think that means triggering of the interrupt is also delayed by that time. That's why irqtest3 worked but irqtest2 didn't.
So instead of asking you to run these irqtest programs, I think the best option is for me to write a BASIC/ml program that tests various delays until the number of interrupts drops to about one per byte transmitted, and do that for 1200, 2400, 4800, 9600 and 19200 baud. Perhaps you could run that one instead of these irqtest programs.
I think the delay would look something like this:
lda $fd03 ;control register and #$0f eor #$0f clc adc #$00 tax
loop:
dex bne loop
and I could change the delay by poking a new value into the ADC instruction. Then for each baud rate, the program would print what poked value dropped the number of interrupts to the right range, and that would tell me how much delay is needed. It may turn out that delay is needed only at higher baud rates. For lower rates, it may be quicker to just let the second interrupt take place.
Film at 11:00.
|