Re: [stella] A question regarding write only addresses

Subject: Re: [stella] A question regarding write only addresses
From: Erik Mooney <erik@xxxxxxxxxx>
Date: Fri, 20 Jul 2001 00:44:03 -0400
On Tue, 20 Jul 1993 20:40:56 -0300, you wrote:

>Hi. This is my first post, and I´m not really sure how to make a post...
>hope this came up right!
>Also excuse my english, I will try to be clear, but ...

Both your post and your English look fine to me :)

>Here is the state of the 6507:
> A=02  X=04  Y=18  S=FD  PC=1441          N=0 V=0 U=1 B=0 D=0 I=1 Z=0 C=1
> 1441  E50F                SBC $0F      [000F]=00
>Has you can see, when this opcode is executed, the accumulator will be
>subtracted with the content of the address $000F. To my current knowledge
>this address correspond to PF2 which is write only. Both PCAE and Z26, after
>executing this opcode, leave the accumulator with $F3, so, the value
>subtracted was $F.

All the TIA graphics and sound registers are indeed write-only.  When you
read from anything in the TIA address space (which is $0 through $7F and
any mirrors thereof when lines A7 and A12 are low), you get its read-only
registers, which are the collision registers from $0 to $7, the four
paddle potentiometer inputs from $8 to $B, and the joystick buttons at $C
and $D.  Reading from $F is undefined as far as I know.

Your guess was correct, I believe.  With undefined situations like this in
the 2600, almost always the value read will be whatever value was on the
bus on the previous cycle.  I remember Video Pinball relies on that for
some operations involving collision detection, which was why that took so
long to emulate properly.  Looks like this may be a similar case.

>Does this happens too with read addresses like INPT4? If I do LDA INPT4,
>accum bits 6 to 0 contain the last bus value?

Yes.  In fact, that is actually the detail that Video Pinball relies on
and needs in an emulator, which took everyone a good long while to figure

Archives (includes files) at
Unsub & more at

Current Thread