From: Ullrich von Bassewitz (uz_at_musoftware.de)
Date: 2000-07-15 13:32:49
I have copied the final beta for version 2.5 cc65-sources-beta-2.5-03.tar.gz
to the ftp server a few minutes ago. The new version is feature complete. This
means I will not add any new features, just fix bugs if there are any new
ones.
The differences to beta-02 are:
a. New GEOS resource compiler code from Maciek.
b. Added GEOS documentation and GEOS sample code, included new versions
from Maciek.
c. More token handling function for the assembler.
d. Some other, minor changes.
With the new functions mentioned under c., it is now possible to write macros
that look like real instructions. One problem with macros implementations for
common 6502 assemblers is that they don't handle this stuff very well. As an
example, have a look at the following ldax macro, that loads a 16 bit value
into a/x. Without the new features, it must be implemented several times under
different names, to get different addressing modes right:
; ldax immidiate
.macro ldaxim arg
lda #<(arg)
ldx #>(arg)
.endm
; ldax absolute
.macro ldaxabs arg
lda (arg)
ldx 1+(arg)
.endm
Now you can do things like this with the builtin functions, which make use of
the macro much more intuitive:
; ldax implementation for immidiate and absolute loads
.macro ldax arg
.if (.match(.left(1,arg), #))
; Immidiate addressing
lda #<(.right (.tcount (arg)-1, arg))
ldx #>(.right (.tcount (arg)-1, arg))
.else
; Absolute addressing
lda arg
ldx 1+(arg)
.endif
.endm
This allows use of the macro as
ldax #1234
or
ldax $1234
Of course a real implementation would have better error checking and more
features in the macro itself (using lda/tax if low and high byte are identical
for example), the version used above is very simple to show the concept.
---
One thing to note is that I have been very careful with more builtin
functions. It is easy to find more functions that seem to be required.
Unfortunately, it is far easier to add new functions, than to remove them once
they are in use. I cannot foresee every use of the new token handling
functions (which are some sort of programming language inside the assembler),
and there seem to be a few problems that should get addressed in the future if
they cause real pain (you will find one these inconsistencies of you try to
add indirect Y addressing to the macro above). So I will wait until I get some
feedback before adding more such stuff.
This is also the reason, I did not add a .REPEAT instruction as promised. On
one side, .REPEAT is easily emulated using recursive macros, so there's no
*real* need for it. On the other side, having a real implementation would have
involved adding mutable symbols (which are const right now). I'm not sure
about all consequences of having mutable symbols, so I delayed this until it
is proven that there is a definite need for it.
---
The beta package includes the full GEOS docs from Maciek, so you should be
able to write GEOS programs with it without any need for other packages. For
this reason I have removed the GEOSLib archive on the FTP server. The same is
true for the Atari stuff (which was already in a working state in the last
beta).
The only open stuff for the final 2.5 release are fixes for two known problems
in the library. Once this is done, I will release version 2.5. So keep the
feedback coming:-)
Have fun!
Uz
--
Ullrich von Bassewitz uz_at_musoftware.de
This archive was generated by hypermail 2.1.3 : 2001-12-14 22:05:36 CET