Re: Source codes: overlay method

From: Ruud_at_Baltissen.org
Date: Sat, 24 Jan 2015 21:58:02 +0100
Message-ID: <54C4075A.28180.2FB6A75@Ruud.Baltissen.org>
Hallo allemaal,


I already told that I managed to create the various sources using 
the overlay method for V1, V2, V3, SX and GS. Yesterday evening I 
made the one for the 4064 as well. Strange detail: the others are 
clearly based on a previous version, 4064 isn't. It is based on V2 
but has already some changes of V3 as well, but not all.

But now the real reason of this email: the creation of the complete 
source codes for every verion using the overlays as base. I think I 
managed but it was a lot of work. Why the "I think"? The versions 
are generated and compile OK. But I didn't check the nearly 9000 
lines of code and comment of the Kernal part of every version to see 
if it all was as it should be.

What was the main trouble? If the start and end address of the 
overlaying code cannot be matched with the original one, then I had 
a problem. An example: 


Orignal code:
.ba $8000			; begin addres
.fb $AA, $60		; fill area with 96 bytes with value $AA
	nop


Overlay code:
.ba $8020
.fb $55, $20


After compiling this we have 32 bytes with $AA, then 32 wit $55 and 
then 32 with $AA again. My code generator must match this and will 
look for some code that can be replaced by the new one. But it will 
find the address $8000 and $8061 (start of NOP) and nothing between. 
A smart guy would say: "Let your program cut the .fb command in 
three part and replace the middle one!". But this is just a very 
simple example and only one of the many variations I ran into. Think 
of overlays that start and/or end in the middle of a command or text 
of the original code. Should I take the effort to handle all these 
possibilities? 

I saved the problems by making sure that ALL overlays matched the 
range of the code they were overlaying. So in the above case I 
solved it in the following way:


Overlay code:
.ba $8000
.fb $AA, $20
.fb $55, $20
.fb $AA, $20


The main reason for using the above method instead of the more 
intelligent one is that IMHO it was faster to correct the code (for 
all versions!) than to update the program. (but maybe in time I will 
add this intelligence)

Just FYI: because the above overlay splits the area in three parts, 
the next overlay on top of the above one will work without any 
problem:


Overlay code:
.ba $8040
.fb $CC, $20


I also told you that I would work on the conversion tool but I think 
that I skip that for the moment. I have to update my site first, 
still have to document my IEEE cartridges and what about JiffyDOS? 
Enough to do!


--
   
Kind regards / Met vriendelijke groet, Ruud Baltissen
www.Baltissen.org







       Message was sent through the cbm-hackers mailing list
Received on 2015-01-24 21:00:04

Archive generated by hypermail 2.2.0.