OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 28.03.2024, 17:38

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvek: 1 ] 
Autor Zpráva
 Předmět příspěvku: Autoloader I
PříspěvekNapsal: 05.03.2023, 10:35 
Offline
Kecálek

Registrován: 13.01.2023, 09:42
Příspěvky: 88
Has thanked: 0 time
Been thanked: 24 times
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


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvek: 1 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 5 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz