Ich hatte mir heute einige der wenigen C16 CRTs mal angeschaut, um herauszufinden, wie die Header oder Aufbereitung dafür aussehen muss. Letztlich habe ich den Code aus dem Viduzzle-CRT kopiert und das wollte nicht funktionieren.
Dann habe ich den Code anhand von Memory-Map und ROM-Listing nach meinem Gutdünken umgeschrieben und da funktionierte es sofort. Ich habe eine Überprüfung auf mehr als 16kb und dieses Jonglieren mit der Bankingeinstellung herausgeworfen.
Das Banking stelle ich direkt ein (X-Register=#$02). Warum findet man in den Cartridges, die als C1L eingeblendet werden, immer wieder $00 oder $01 vor der CBM-Kennung ? - Das müsste doch das Konfigurationsbyte sein ?
- !to"c16cart.crt",plain
- *=$8000
- jmp $800b
- jmp $800b
- !by $02,$43,$42,$4d ; $?? bank, "CBM"
- *=$800b
- sei
- lda $FB
- pha
- ldx $8006 ; cartrige 1 lo, kernal
- sta $FDD0,X
- jsr $FF84 ; Initialize I/O devices
- jsr $FF87 ; RAM Test
- pla
- sta $FB
- jsr $FF8A ; Restore vectors to initial values
- jsr $FF81 ; Initialize screen editor
- lda #<cartrige ; cartridge jump in
- sta $02FE
- lda #>cartrige
- sta $02FF
- lda #$F1 ; irq -> banking-routines
- sta $0314
- lda #$FC
- sta $0315
- cli
- jmp *
- cartrige:
- ldx #$00
- - lda mytxt,x
- sta $0c50,x
- inx
- cpx #$28
- bne -
- jmp *
- mytxt: !scr " das modul wurde passend eingeblendet ! "
Warum blinkt da noch ein Cursor ?
Gibt es irgendwo eine brauchbare Anleitung zu den Cartridges oder muss man das mit auffindbaren Unterlagen selbst herausfinden ?