|
||||||||||||
AW: D+ und D++
Ich würde mal darauf tippen, der Grund liegt darin, weil es hier so viele Sammler gibt!
![]() Ich habe übrigens kein D+/++ ... leider! ![]() Gruß, Willi |
|
||||||||||||
AW: D+ und D++
Beim D+ sind die drei zusätzlichen Bytes wohl folgender Code: JSR $ADC0 LDA $CD CMP $4D BCS $961F Wenn mein 6502 Assembler Verständnis noch funktioniert, sollte das bedeuten: Wenn Inhalt von $CD >= Inhalt von $4D dann verzweige Beim D++ steht dort: JSR $ADC0 LDA $4D CMP $CD BCC $961F Das sollte fast identisch sein mit dem obigen: Wenn Inhalt von $CD > Inhalt von $4D dann verzweige Einziger Unterschied scheint ">=" zu ">" .... plus das Byte bei Offset 0 Vielleicht überprüft das mal jemand dessen Kenntnisse frischer sind als meine ![]() Gruß Mike P.S.: Das erste Byte (Offset 0) scheint in der Routine ab $D72E verwendet zu werden, keine Ahnung was damit gemacht wird.
__________________
Das Universum und die Dummheit der Menschen sind grenzenlos. Wobei ich mir beim Universum nicht so sicher bin. (Albert Einstein) Geändert von Mach2000 (11.08.2009 um 16:33 Uhr) |
|
||||||||||||
AW: D+ und D++
Gruß, Micha |
|
||||||||||||
AW: D+ und D++
Ich meine, das Carry-Flag wird bei "=" gesetzt und bei "<>" nicht. Ist schon ein paar viele (ca. 20 !) Jahre her das ich mich zuletzt mit dem 6502 befasste, aber ich bin mir ziemlich sicher. Also nix mit >= oder so. Ansonsten stimmt es aber, die Befehle vergleichen den Inhalt zweier Speicherzellen. Es werden bei beiden Programmen die gleichen Zellen verglichen. Das sie das in umgekehrter Reihenfolge tun ist zunächst irrelevant, da es auf das Ergebnis des Vergleichs ankommt der ja nur "wahr" oder "unwahr" sein kann.
Aber: Der D+ verzweigt wenn der Vergleich "wahr" ist (Carryflag gesetzt) und der D++ verzweigt wenn der Vergleich "unwahr" ist (Carryflag NICHT gesetzt) Das steht jedenfalls nicht gegen die These, dass beim D++ andere Routinen angesprochen werden als beim D+. Leider genügt das auch nicht zum Beweis... Gruß, Willi |
|
||||||||||||
AW: D+ und D++
http://www.6502.org/tutorials/compare_beyond.html A surprisingly common sequence in 6502 code is: LDA NUM1 CMP NUM2 BCC LABEL BEQ LABEL (or something similar) which branches to LABEL when NUM1 <= NUM2. (In this case NUM1 and NUM2 are unsigned numbers.) However, consider the following sequence: LDA NUM2 CMP NUM1 BCS LABEL which branches to LABEL when NUM2 >= NUM1, which is the same as NUM1 <= NUM2. Not only that, it's shorter and (in many cases) faster. Scheint meine Erinnerung mich doch nicht getäuscht zu haben ![]() Gruß Mike P.S.: Der ein oder andere hier hat in seiner Jugend sicherlich mal eines meiner Programme mit Unmengen von Data Zeilen aus 'ner 64er oder Happy Computer abgetippt (war 6510 Assembler deshalb ist es mir noch ein wenig vertraut) ![]()
__________________
Das Universum und die Dummheit der Menschen sind grenzenlos. Wobei ich mir beim Universum nicht so sicher bin. (Albert Einstein) Geändert von Mach2000 (11.08.2009 um 16:50 Uhr) |
|
||||||||||||
AW: D+ und D++
Ich habe nochmal Google bemüht ...
http://www.6502.org/tutorials/compare_beyond.html A surprisingly common sequence in 6502 code is: LDA NUM1 CMP NUM2 BCC LABEL BEQ LABEL (or something similar) which branches to LABEL when NUM1 <= NUM2. (In this case NUM1 and NUM2 are unsigned numbers.) However, consider the following sequence: LDA NUM2 CMP NUM1 BCS LABEL which branches to LABEL when NUM2 >= NUM1, which is the same as NUM1 <= NUM2. Not only that, it's shorter and (in many cases) faster. Scheint meine Erinnerung mich doch nicht getäuscht zu haben ![]() Gruß Mike ![]() ![]() Ja, die Befehle bewirken prinzipiell das gleiche ... mit eben den von Dir bereits festgestellten Unterschied von >= zu >. Das heisst, der D+ verzweigt auch dann, wenn beide Speicherinhalte gleich sind. Der D++ tut das nicht. Damit bleibt es aber dabei: Thorsten's These wird dadurch nicht entkräftet (eher erhärtet), aber beweisen kann das leider auch nix... Zitieren:
P.S.: Der ein oder andere hier hat in seiner Jugend sicherlich mal eines meiner Programme mit Unmengen von Data Zeilen aus 'ner 64er oder Happy Computer abgetippt (war 6510 Assembler deshalb ist es mir noch ein wenig vertraut) ![]() ![]() ![]() Gruß, Willi |
|
||||||||||||
AW: D+ und D++
![]() Gruß Mike
__________________
Das Universum und die Dummheit der Menschen sind grenzenlos. Wobei ich mir beim Universum nicht so sicher bin. (Albert Einstein) |
|
||||||||||||
AW: D+ und D++
![]() Du willst Dich nur rausreden noch bevor Du dich als Verfasser diverser Reinfälle outest! ![]() Gruß, Willi <--- der sich eben noch was weinhaltiges besorgen muss, weil er sonst das Spiel gleich nicht erträgt... |
|
|||||||||||
AW: D+ und D++
Die Antwort ist recht einfach. Thorsten bietet auf seiner HP diese Programmversionen zum Download an. Somit kann man ein Analyst- bzw. Maestro-Modul recht schnell auf D+/D++ updaten.
Gruß, Micha ![]() Kann man alle Maestro/Analyst Module updaten, oder nur die D Version? |
![]() |
|
|