[Coco] Dual UART with FIFO Card for the CoCo
Arthur Flexser
flexser at fiu.edu
Mon Jun 14 01:13:14 EDT 2010
Actually, there was a good reason why Tandy used that mirrored PIA
address. This was a ROM revision to Color Basic's PIA setup code that came
in in one of the later versions. The reason for it was the extra code
necessitated by adding support for 64K RAMs. To fit these extra bytes in
without moving everything else around and messing up compatibility with all
sorts of software that used direct ROM calls required some rather clever
coding. They accomplished the feat with the offset coding you're objecting
to. A fair trade for preserving compatibility, in my opinion.
Art
On Sun, Jun 13, 2010 at 11:42 PM, Gene Heskett <gene.heskett at gmail.com>wrote:
> On Sunday 13 June 2010, Phill Harvey-Smith wrote:
> >Gene Heskett wrote:
> >> On Sunday 13 June 2010, Phill Harvey-Smith wrote:
> >>> Gene Heskett wrote:
> >>
> >> There is an echo in here Phill. ;-) And as long as we use modern cmos
> >> chips, the additional drain on the coco's supply should be minimal,
> >> particularly if we replace some of the old hungry TTL stuff that
> >> wouldn't be needed as it would just dup what we'll do but we'll do it
> >> better.
> >
> >Indeed, though there is one fly in the ointment I noticed from the CoCo
> >rom disassebilies, the Init code on the CoCo 1/2 actually takes
> >advantage of the mirrored PIA 1 addresses :(
> >
> >A02A 8E FF 20 LA02A LDX #PIA1 POINT X TO PIA1
> >A02D 6F 1D CLR -3,X CLEAR PIA0 CONTROL
> >REGISTER A
> >A02F 6F 1F CLR -1,X CLEAR PIA0 CONTROL
> >REGISTER B
> >A031 6F 1C CLR -4,X SET PIA0 SIDE A TO INPUT
> >A033 CC FF 34 LDD #$FF34 *
>
> Indeed. And they saved what, 1 byte? Me goes off muttering about that
> coders geneology...
>
> >A036 A7 1E STA -2,X * SET PIA0 SIDE B TO
> > OUTPUT A038 E7 1D STB -3,X * ENABLE PIA0
> > PERIPHERAL REGISTERS, DISABLE PIA0
> >A03A E7 1F STB -1,X * MPU INTERRUPTS, SET
> >CA2, CA1 TO OUTPUTS
> >A03C 6F 01 CLR 1,X CLEAR CONTROL REGISTER A
> >ON PIA1
> >A03E 6F 03 CLR 3,X CLEAR CONTROL REGISTER B
> >ON PIA1
> >A040 4A DECA A REG NOW HAS $FE
> >A041 A7 84 STA ,X BITS 1-7 ARE OUTPUTS,
> >BIT 0 IS INPUT ON PIA1 SIDE A
> >A043 86 F8 LDA #$F8 =
> >A045 A7 02 STA 2,X = BITS 0-2 ARE INPUTS,
> >BITS 3-7 ARE OUTPUTS ON B SIDE
> >A047 E7 01 STB 1,X * ENABLE PERIPHERAL
> >REGISTERS, DISABLE PIA1 MPU
> >A049 E7 03 STB 3,X * INTERRUPTS AND SET
> >CA2, CB2 AS OUTPUTS
> >A04B 6F 02 CLR 2,X SET 6847 MODE TO
> >ALPHA-NUMERIC
> >A04D C6 02 LDB #$02 *
> >A04F E7 84 STB ,X * MAKE RS232 OUTPUT
> > MARKING
> >
> >By the looks of things both the Dragon 32 and 64 roms don't have the
> >same problem, however the 64 has the 6551 ACIA at $FF04-$FF08. I guess
> >the Tandy roms could probably be fixed, but that would mean blowing new
> >roms to do so.
>
> And that is something Ft. Worth would never have authorized.
>
> >> We just need to standardize how its done so that we don't have 250
> >> individually unique versions, one for each of us left. That would be a
> >> disaster to the group as a whole.
> >
> >Indeed :(
> >
> >> Hint, leave the stuff at $ff40+ alone, because many of us have worked
> >> out what works for us already.
> >
> >That would seem sensible.
>
> Well, if I didn't say it, someone else would. ;-)
>
> --
> Cheers, Gene
> "There are four boxes to be used in defense of liberty:
> soap, ballot, jury, and ammo. Please use in that order."
> -Ed Howdershelt (Author)
> Power tends to corrupt, absolute power corrupts absolutely.
> -- Lord Acton
>
> --
> Coco mailing list
> Coco at maltedmedia.com
> http://five.pairlist.net/mailman/listinfo/coco
>
More information about the Coco
mailing list