...dass vor dem Einsprung "BANK15" ausgeführt wird, so dass die ROMs und die I/O-Chips eingeblendet sind. Das ist beim 128er auch der Default nach dem Einschalten und wäre hier richtig, wenn, ja , wenn es sich bei RBOOT128 um ein Programm ohne Basic-Header handelt, wovon ich jetzt mal nicht ausgehe.
Also eigentlich ist das ein Programm was an den BASIC-Start $1C01 geladen werden muss... dann "RUN"., mehr nicht... Der Assembler-Code wird dann durch ein SYS gestartet.
Code
o $1c01-2
;*** Ladeadresse für BASIC-Programm.
:MainInit w $1c01
;*** Kopfdaten BASIC-Zeile.
w $1c0b ;Link-Pointer auf nächste Zeile.
w $0000 ;Zeilen-Nr.
;*** BASIC-Zeile: SYS 7181
b $9e,"7181",$00
;*** Ende BASIC-Programm markieren.
w $0000
;*** Start-Programm für GEOS nachladen.
:RUN_GEOS_BOOT
lda #$00
sta MMU
lda #$00
jsr SETMSG
lda #0 ;($3f) RAM 0 (für Speicher)
ldx #0 ;($3f) RAM 0 (für Dateiname)
jsr SETBANKFILE
lda #13 ;Länge Dateiname
ldx #<BootName
ldy #>BootName
jsr SETNAM
lda #$50
ldx curDevice
ldy #$01
jsr SETLFS
lda #$00 ;Flag für Load
ldx #$ff ;Bank1 Daten und Ausführ-
ldy #$ff ;routine an Basic-Ladeadresse
jsr LOAD ;laden
bcc :InitRBOOT ;>OK
::1 jmp ($0302) ;Warmstart ausführen.
::InitRBOOT sei ;Interrupt sperren
LoadW $fa,BASE_GEOSBOOT
::4 lda #$fa
sta $02b9
ldy #0 ;Startprogramm von Bank 0 nach Bank 1
lda ($fa),y ;kopieren
ldx #$01
jsr $ff77
inc $fa
bne :4
inc $fb
lda $fb
cmp #$40
bne :4
jmp BASE_GEOSBOOT ;Startprogramm ausführen in Bank 0
;*** Name des Startprogramms.
:BootName b "RBOOT128.BOOT"
Alles anzeigen