Den Vorschlag von JeeK
fand ich gut und hab ihn mal umgesetzt. Dazu habe ich diese Routine hinzugefügt, deren Quelle stammt aus codebase64.org.
Code
- ; FEHLER KANAL AUSLESEN
- ;--------------|--------|--------------|---------------------------------------
- CLR_DS ;Fehlerkanal auslesen und löschen damit LED Blinken an Floppy aufhört
- lda #$00
- sta $90 ;clear STATUS flags
- lda $BA ;device number
- jsr $FFB1 ;call LISTEN
- lda #$0F ;Sekundär Adresse 15 (command channel)
- jsr $FF93 ;call SECLSN (SECOND)
- jsr $FFAE ;call UNLSN
- lda $BA ;Hole letzte device nummer
- jsr $FFB4 ;call TALK
- lda #$6F ;secondary address 15 (error channel)
- ;Warum muss in high-Nibble 6 stehen? Bei 0 blinkt die LED trotzdem?????
- jsr $FF96 ;call SECTLK (TKSA)
- - lda $90 ;hole STATUS Flag
- bne + ;Kein Zeichen mehr?
- jsr $FFA5 ;hole Zeichen vom IEC bus und verwerfen es direkt wieder in dem wir nix damit machen.
- jmp - ;next byte
- + jsr $FFAB ;call UNTLK
- rts
Aufgefallen ist mir die Zeile "lda #$6F ;secondary address 15 (error channel)"
Wiese kommt da kein 0F (15) hin? Wenn ich das tue, wird der Fehlerkanal NICHT gelöscht. Bei der Sekundären Adresse $6F blinkt die LED nicht mehr. Warum?
Weiter hänge ich die aktuelle Version von BASIC45 an. Dort sind einige Fehler ausgemerzt.