von Dietrich » Sa 19. Jun 2010, 00:38
Hi,
EightBitWitch hat geschrieben:Viele von Euch setzen ja das SIO2PC per RS232 ein.
Ich benutze für meinen WinXP-Rechner ein ganz normales SIO2PC-Kabel (SIO-Stecker auf der einen, RS232-Stecker auf der anderen Seite). Die RS232-Seite schließe ich mit einem USB-Adapter der Fa. Digitus (10 Euro) an den PC an. Zusammen mit AspeQt klappt das ganz ausgezeichnet - und ohne Probleme in 3xSIO-Speed. Keine umständliche Konfiguration oder Aussetzer wie etwa bei APE!
EightBitWitch hat geschrieben:Für mich kommt nur noch die Entwicklung auf dem PC in Frage, es ist viel bequemer und man hat bei der Programmerstellung nicht so viele Beschränkungen
Kann ich nur bestätigen. Ich habe jetzt für mein Projekt in 5 Wochen 8 KB recht komplizierten 6502-Code geschrieben (4500 Codezeilen) - das hätte ich auf dem ATARI nie so schnell geschafft. Größte Vorteile sind:
- Bildschirmorientierter Editor, einfaches Umkopieren von Codeteilen möglich
- Keine nervigen Zeilennummern
- Aufteilung in mehrere Dateien problemlos möglich
- Umfangreiche Kommentierung möglich
- Schnelles Assemblieren und Testen per Tastenkombi
Nett wäre noch eine Möglichkeit, direkt im Sourcecode Breakpoints zu setzen (oder gar durch den Code zu steppen). Aber das wird wohl Wunschdenken bleiben. Hilfsweise mache ich ein jmp * im Code, assembliere neu und drücke dann im Emulator F8. Das Testen auf dem ATARI ist nicht ganz so einfach - dafür habe ich ein Logging in den Code mit eingebaut, das ich per Define-Schalter einschalten kann. Zusammen mit dem Monitor im QMEG-OS sehe ich dann auch, was passiert ist.
Der ATASM 1.06 funktioniert gut, nur das Fehlerhandling hat ein paar Schwächen. Er bemerkt nicht jeden (Syntax-)Fehler im Source und produziert dann u.U. falschen Code:
1) Doppelte Vorwärtsreferenzen assembliert er ohne Meckern zu $ffff, da bin ich 2mal drauf reingefallen. Hier hilft es, bei unerklärlichen Fehlern das Assembler-Listing mal auf "FF FF" zu durchsuchen...
2) Doppelte globale Labeldefinitionen bemerkt er nur, wenn es keine Equates sind. Auch deswegen sollte man pro Sourcedatei einmal .local verwenden und globale Labels nur benutzen, wenn sie aus anderen Sourcedateien angesprochen werden.
3) Fehlende schließende Anführungszeichen meckert er nicht an. Dafür fehlt dann das letzte Byte - das bemerkt man recht schnell.
4) .set 6 funktioniert auch nicht so richtig: Das Konstrukt, das ich üblicherweise verwende, produziert Assemblierfehler. Ich habe daher meine betreffenden Codeteile (etwa 1 KB) von Hand reloziert, was allerdings viel Disziplin erfordert. Hat man sich aber erstmal daran gewöhnt, geht es ganz gut. Vorteil: Ich kann den Code sowohl an seiner Original-Adresse als auch an der Target-Adresse ansprechen, was ich teilweise auch brauche, z.B:
- Code: Alles auswählen
...
loadorg = $800 ; der folgende Codeteil soll ab $800 lauffähig sein
ldiff = loadorg-* ; der Relozier-Offset
loadrun
... ; hier zu jeder absoluten Adresse ldiff addieren
loadend
EightBitWitch hat geschrieben:Allerdings muss ich sagen, das Altirra in meine Augen noch einiges an Arbeit benötigt, besonders was die Performance angeht.
Die Performance finde ich OK. Aber der Atari800Win hat einfach viele nette Features, auf die ich nicht verzichten will (schneller Mount von D1-D8, Screenshot, Dateikonvertierung, Monitor im Extra-Fenster, mehrere H:-Laufwerke). Die Fenster bei Altirra verhalten sich teilweise seltsam. Und die Doku ist noch unvollständig. Die Einfg- und Entf-Taste sind unglücklich belegt. Nett ist dagegen, dass man die Fenstergröße beliebig einstellen kann. Und er braucht keine Windows-Installation - schreibt allerdings unnötigerweise in die Registry (warum nicht einfach in eine ini-Datei). D.h. man muss seine Einstellungen wiederholen (oder aus der Registry exportieren), wenn man Altirra auf einen anderen Rechner kopiert - das gilt allerdings auch für Atari800Win. Die Debugging-Funktionen sehen interessant aus - sind aber leider gar nicht dokumentiert. Und er läuft nicht auf meinem alten WinME-Rechner.