Action! Listing von Demon Birds gesucht...
Action! Listing von Demon Birds gesucht...
von matti1104 » Do 11. Aug 2011, 23:29
Hi Leute,
hat evtl. jemand von Euch den Action! Quellcode von Demon Birds aus der ANALOG Issue #28 auf einem ATR? Wollte damit mal etwas testen und möchte ihn ungern aus der ANALOG abtippen.
Gruß,
Mathias
Re: Action! Listing von Demon Birds gesucht...
von eda70 » Fr 12. Aug 2011, 09:09
Ja, hab ich.
Gibt es gegen email per PN.
Habe mir gerade mal den Quelltext angesehen, ist m.E. nicht wirklich schön und nutzt viele Vorteile von Action! nicht.
- Code: Alles auswählen
Beispiel:
memory=Peek(106)
Die Nr. 28 ist mir wohl aussikumma, müsste eigentlich schon im wiki sein.
Hupps scho isse da...
Re: Action! Listing von Demon Birds gesucht...
von mp-one » So 14. Aug 2011, 12:58
eda70 hat geschrieben:Habe mir gerade mal den Quelltext angesehen, ist m.E. nicht wirklich schön und nutzt viele Vorteile von Action! nicht.
- Code: Alles auswählen
Beispiel: memory=Peek(106)
Es sieht ein bißchen "BASIC-like" aus, wobei man mal das Zeitverhalten und die Codegröße der PEEK- und POKE-Befehle gegenüber einer direkt auf eine Speicheradresse gelegten Variablen bzw. der Verwendung von CARD-Pointern messen müsste. Hatte ich auf der Fuji vor gehabt, hab es aber dann nicht mehr geschafft.
Re: Action! Listing von Demon Birds gesucht...
von FlorianD » So 14. Aug 2011, 18:38
- Code: Alles auswählen
CARD RTCLK=19,I
BYTE A,B=710
PROC MAIN()
I=0
RTCLK=0
DO
A=PEEK(710)
I==+1
UNTIL I=50000
OD
PRINTCE(RTCLK)
I=0
RTCLK=0
DO
A=B
I==+1
UNTIL I=50000
OD
PRINTCE(RTCLK)
RETURN
Ergebnis:
39424 zu
16896
mehr als doppelt so schnell.
Re: Action! Listing von Demon Birds gesucht...
von mp-one » Di 16. Aug 2011, 10:49
FlorianD hat geschrieben:Ergebnis:
39424 zu
16896
mehr als doppelt so schnell.
Das lohnt sich also! Zugleich ein gutes Beispiel für die Verwendung der ATARI-Uhr in Reg. 18,19,20. Danke!
Re: Action! Listing von Demon Birds gesucht...
von cas » Di 16. Aug 2011, 11:39
Poke() und Peek() sind Funktionsaufrufe, da wird sehr viel drumherum gemacht:
1) ACTION! - CPU Register mit Parameter vorgelegt
2) Unterroutine (JSR) aufgerufen
3) Speicherzugriff
4) Unterroutine verlassen (RTS)
5) Rückgabeparameter übergeben
bei einer auf eine Speicherstelle gelegten Variable:
1) Speicherzugriff
das macht einen grossen Unterschied.
-- Carsten