Fehler & Probleme beim CBM prg Studio 3.0.0
Auch nach dem Update auf 3.0.0 gibt es einige Probleme. Sofern mir diese bekannt sind, werde ich sie hier nach und nach auflisten.
Mittlerweile ist ‚CBM prg Studio 3.1.0 (BETA)‚ erschienen. Daher habe ich Korrekturen ab BETA 3.1.0 grün hervorgehoben!
13.06.2014:
Wieder mal ist (leider) Seb fündig geworden 😉 .
Die Addition von Labeln bei Y-indizierter-Addressierung sta/lda label+1,Y führt zu einer Fehlermeldung. Mit dem X-Register geht es.
Bei 3.1.0 behoben.
27.05.2014:
Mir sind eben zwei weitere Probleme aufgefallen, die ich auch schon an Arthur weitergeleitet habe.
1.) Das Debuggen mit VICE klappt nicht mehr so, wie in der letzten 3.0.0 BETA. Habt ihr ‚To VICE dump‘ und ‚Use VICE debugger‘ aktiviert und startet das Debuggen, dann öffnet sich zwar VICE und die Label und Breakpoints wurden geladen aber leider fehlt das Programm.
Korrektur ab 3.1.0 BETA – Dieses Problem trat auf, wenn ihr unter Optionen -> Emulator Control -> Autolaunch .prg Name etwas eingetragen hattet. Dann wurde fürs Debuggen der falsche Programmname genommen.
2.) Addiert ihr etwas auf sich wiederholende Cheap-Label, dann wird die Adresse evtl. falsch berechnet.
main ldx #0 @loop ;(^1) dex bne @loop lb1 ldx #4 ldy #0 @loop ;(^2) sta $0400,Y dey bne @loop inc @loop+2 ;Basis -> (^1) wird also falsch berechnet inc @loop ;Basis -> (^2) ist korrekt dex bne @loop rts
Korrektur ab 3.1.0 BETA – Nun kann man wieder mit einem Cheap-Label rechnen.
22.05.2014:
Das folgende Problem wurde per Kommentar von Seb gemeldet. Danke für den Hinweis.
Der Assembler des CBM prg Studio wurde in einem bisher unerwähnten Punkt geändert! Leider führt dies dazu, dass es bei einigen Sourcen auf meiner Seite zu Fehlern kommt, wenn die Programme mit 3.0.0 erstellt werden. Das CBM prg Studio hat sich in diesem Punkt bisher übrigens noch nie richtig verhalten (zumindest seit 2.5.3, dies ist die älteste mir vorliegende Version).
Verhalten bis zur Version 2.8.0:
lda 'a' ;das BYTE für das Zeichen 'a' in den Akku laden lda #'a' ;führte zu einem Fehler!
Nur bei 2.9.0 waren beide Schreibweisen möglich (der Assembler verhielt sich aber trotzdem falsch!):
lda #'a' ;das BYTE für das Zeichen 'a' in den Akku laden lda 'a' ;verhält sich identisch zu #'a' (was aber eigentlich falsch ist!!)
Seit 3.0.0 kommt es nun wieder zu einem Fehler, nur umgekehrt:
lda #'a' ;das BYTE für das Zeichen 'a' in den Akku laden lda 'a' ;führt zu einem Fehler!
Korrekt wäre folgendes Verhalten:
lda #'a' ;das BYTE für das Zeichen 'a' in den Akku laden lda 'a' ;lädt das BYTE, das durch die Adresse von 'a' bestimmt wird
Ihr könnt also aktuell schon, statt lda ‚a‘, das eigentlich richtige lda #‘a‘ verwenden.
Arthur ist sich des Problems bewußt, sobald er den Fehler behoben hat, werde ich die Sourcen auf der Seite anpassen und auf die Verwendung der dann korrigierten Version hinweisen.