Passt denn die screen_list so?
Nein. Der Wert $80 kommt in jeder Screenlist nur einmal: am Ende. Hier mal ein Vergleich:
explrlst
!by $00
header !by 2,2,28,3,$d0 ; Dir-Header
!wo stay
!fill 26,32
!by 0
!by 21,2,28,3,$d0 ; Dir-Footer
!wo stay
!fill 26,32
!by 0
!by 4,27,3,18,$40 ; Scroll-Bar
!wo stay
Alles anzeigen
So sieht das aus, wenn ich das von Hand eintippe. Erklärung:
Der erste Wert legt fest, ob der Screen gelöscht wird oder nicht ($00=kein Löschen)
Dann der erste Gadget-Record: An Zeile 2, Spalte 2, mit Breite 28 und Höhe 3, erfolgt ein Gadget vom Typ 0 (mit Flags $d0), das Gadget ist aktiv und hat bringt dich zum Event "stay", auch Text gehört dazu, hier: 26 Leerzeichen und Text wird mit $00 beendet.
Der zweite Record: Gadget an Zeile 21, Spalte 2, Breite wieder 28, Höhe 3, Typ und Flags auch wie eben, Event wie eben, Text (mit $00).
Der dritte Record unterscheidet sich insofern, als er keinen Text besitzt ($40 in den Flags) und daher auch keine $00 am Ende hat. Event-Adressen müssen immer gesetzt sein (wenn die Flags kein Event vorsehen, dann kann hier $0000 stehen).
Jetzt das Ergebnis des GUIEditors:
; ------------------------------------------------ GUIEditor
screenlist_types
!byte $00
!byte $02, $02, $1C, $03
!byte $00
!word 0
!byte $80
!byte $00
!byte $15, $02, $1C, $03
!byte $00
!word 0
!byte $80
!byte $00
!byte $04, $1B, $03, $12
!byte $00
!word 0
!byte $80
Alles anzeigen
Startwert stimmt: kein Screen-Löschen
Erstes Gadget stimmt: 2, 2, 28 ($1c), 3, Typ 0, aber keine Flags gesetzt, hatte ich auch nicht angehakt, wenn Flags auf 0 sind, ist der Eventvektor egal (hier $0000), also ok.
Jetzt kommt der Fehler: Hier setzt du $80 als Gadget-Ende. Weglassen!
Das zweite Gadget stimmt wieder (21, 2, 28, 3, $00) und auch das dritte (4, 27, 3, 18, $00)
Was mich stört, ist die Langschreibweise der Pseudo-Codes. !by sieht lesbarer aus.
Im Programm könntest du die Kästen für X und Y austauschen, weil sie im Code anders herum gesetzt werden müssen (kann verwirrend werden). Was mir nicht gelungen ist, ist ein weiteres Element zu definieren, denn es fehlt noch das reine Text-Element, das in einer Screenlist nach dem letzten Gadget folgen kann (Signal-Byte: $c0. Es ist immer gehilightet, steht an Zeile+1, Spalte+1 und wird wieder abgeschlossen mit $00, endgültiges List-Ende erst an $80.
Die Benutzeroberfläche vom C64Studio könnte auch mal "modernisiert" werden, oder...? ![]()
Arndt