[Coco] Why do we need a CoCo 4? (Long irrelevant rant)

N8WQ exwn8jef at gmail.com
Wed Dec 31 08:44:25 EST 2008


Good Morning Steve,
First, let me thank you for writing a lot of cool games for the CoCo.
I've spent many an hour playing Zaxxon.
I enjoyed reading how you did some of your programming.

Alan Jones

-- 
N8WQ - Canal Winchester, Ohio
http://exwn8jef.googlepages.com/home
http://n8wq.blogspot.com



Steve wrote:
> Without an U register none of games would run at all.  But first a 
> little coding history ...
>
> Back in the 70's, I create a form of Object Oriented Code (OCC) in 
> assemble language.  Every thing from the player's ship to the shot 
> fire at him were control by uniformed data-blocks of information. To 
> create a new object in the game all I need was to setup a new 
> data-block filled with the data for that element of the game.
>
> The first byte was the control flags with bits that would let the 
> system know if the data-block was in use (alive) or should be display 
> on the screen and so on. That was followed by bytes would hold other 
> information like the display image type, movement type and position. 
> Every bit of information that the object needed was stored in that 
> block of data.
>
> What made this system work so well on the Z-80 (and 6809) was their 
> 16-bit index registers with an 8-bit offset.  I would load the Index 
> pointer with the address of the first Data-Block and call that would 
> work on the data.  Once the call was done, I move to the data-block 
> till all the data-blocks were worked on.
>
> Each call knew just where to find the information they needed because 
> the data-blocks had the same layout.  The data at located at 4 bytes 
> in was the movement type for the object so an MOVETYPE,IX would get 
> that movement code to run on this object.
>
> The bottom line was this data-block system created very tight code 
> since all the calls used the same data format.  Also, there was very 
> little chance of having a runtime error do to pulling the data from 
> the wrong location.
>
> Getting back to why I used the U register for my pointer and not the X 
> or the Y registers.  First, the X & Y registers can be used for more 
> than index registers, like 16-bit counters since they set the zero 
> flag when the LEA -1,X hits zero.  Besides, I had no need for a user 
> stack since all my data for an object was stored in the data-block.
>
> Steve (Zaxxon) Bjork
>
> At 07:22 PM 12/30/2008, you wrote:
>> Joel
>>
>> That is what I said. if the HC12 had the U pointer register then it 
>> would be the CPU for the next Coco. Infact I told one of the managers 
>> of the HC11 line that one the HC11's biggest defects was  it lacked 
>> that U pointer register and he agreed with me.
>>
>> The HC12 is about 80% source code compatible. Object code is not 
>> compatible. 6809 code would have to be reassembled. You do have to 
>> deal with the PSH*/PUL*  instructions.
>>
>> james
>
>
> -- 
> Coco mailing list
> Coco at maltedmedia.com
> http://five.pairlist.net/mailman/listinfo/coco
>



More information about the Coco mailing list