Na
známých stránkách je několik autoloaderů, zkoušel jsem hned první, trochu jsem ho upravil, alespoň mě nefungoval a změnil část na konci, která je pro jiný assembler (64TASS). Přiložený kód je pro klasiku na C64 - TMP v. 1.2.
Tato metoda autoloaderu je založena na krátkém samostatném spouštěcím kódu, který se načte do paměti od $102-$1ff, provede se RTS a počítač skočí na adresu $0102 a poté se načte loader a spustí další soubor obsahující hlavní kód. Nevýhodou může být, že je kód samostatně v případě, že píšete vlastní program, naopak je fajn pro automatické spouštění cizích programů.
V programu se pouze doplní název souboru a adresa pro spuštění např. $C000 apod.
Kód:
*= $0102
sta $dc0d ; not break/stop
jsr $ff8a ; restote i/o
lda #<msg ;print message
ldy #>msg
jsr $ab1e
lda #namelen ;load file name
ldx #<name
ldy #>name
jsr $ffbd ; set name
lda #8
tax
tay
jsr $ffba ; open 8,8
lda #0
sta $9d
jsr $ffd5 ;...filename,8,8
jmp execaddr ;start it
tay
jsr $ffba ; open 8,8
lda #0
sta $9d
jsr $ffd5 ;...filename,8,8
jmp execaddr ;start it
msg .text " autoboot" ; message
.byte 0 ; terminate message
name .text "filename" ; name of prg <<<<<<
namelen = *-name
execaddr = progadrr ; program address <<<<<<
;add 01 from current address to $1FF
cnt .var $0200-*
loop .lbl
.byte 1
cnt .var cnt-1
.ifne cnt
.goto loop
.endif