OldComp.cz

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


Právě je 18.04.2024, 14:33

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




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 5 ] 
Autor Zpráva
 Předmět příspěvku: Auto Load
PříspěvekNapsal: 26.01.2021, 21:59 
Offline
Kecálek
Uživatelský avatar

Registrován: 11.10.2020, 21:29
Příspěvky: 93
Has thanked: 0 time
Been thanked: 10 times
Metoda pro autoload,
co jsem objevil, že používá `The Machine Shop' assembler.

Funguje snad tak, že přepíše vektor pro spuštění bacicu,
co ale přesně znamené zapsat $36 na adresu $01 v zero page?
To jsou bity %00110110.

Kód:
* = $02A7
BOOT  LDA #$36
            STA $01
             .... ; nahraje soubor
             ....
* = $0302 [BOOT] ; BASIC warm start vektor


Četl jsem i o jiných metodách, vždy se přepisuje nějaký vektor,
CHRIN, vektor pro BRK, CHROUT [READY], ... nemám zatím vyzkoušeno.

Tahle se mi docela líbí, funguje a zdá se krátká, akorát zatím úplně nerozumím.

Dík

_________________
TK


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Auto Load
PříspěvekNapsal: 26.01.2021, 22:39 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3661
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 795 times
Adresa 01 je port na 6510 a jeho bity su pouzite takto:
Kód:
    Bits #0-#2: Configuration for memory areas $A000-$BFFF, $D000-$DFFF and $E000-$FFFF. Values:
        %x00: RAM visible in all three areas.
        %x01: RAM visible at $A000-$BFFF and $E000-$FFFF.
        %x10: RAM visible at $A000-$BFFF; KERNAL ROM visible at $E000-$FFFF.
        %x11: BASIC ROM visible at $A000-$BFFF; KERNAL ROM visible at $E000-$FFFF.
        %0xx: Character ROM visible at $D000-$DFFF. (Except for the value %000, see above.)
        %1xx: I/O area visible at $D000-$DFFF. (Except for the value %100, see above.)
    Bit #3: Datasette output signal level.
    Bit #4: Datasette button status; 0 = One or more of PLAY, RECORD, F.FWD or REW pressed; 1 = No button is pressed.
    Bit #5: Datasette motor control; 0 = On; 1 = Off.
Hodnota %00110110 teda znamena ze na $A000-$BFFF bude RAMka, $D000-$DFFF bude I/O area a na $E000-$FFFF bude KERNAL ROMka.
A vypne motor kazetaku.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Auto Load
PříspěvekNapsal: 27.01.2021, 13:46 
Offline
Radil
Uživatelský avatar

Registrován: 23.05.2013, 20:30
Příspěvky: 322
Bydliště: Východní Čechy
Has thanked: 2 times
Been thanked: 48 times
Způsobů, jak udělat autostart je několik a jeden z nějběžnějších je přepsat stack vlastním vektorem.
Osobně,když jsem potřeboval autostart použít,tak používám pouze GETIN ($032A) hack, protože v rámci kompatability funguje na všech cart.

_________________
JMP $FCE2

C64, C128DCR, IDE64, SuperCPU64, 1541 Ultimate-II, MMC Replay, FC3, REU 2MB, Geroram512, NeoRAM 2MB, RR-Net, SilverSurfer, Wiznet64 , 1541-II,1571,1581,Oceanic


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Auto Load
PříspěvekNapsal: 29.01.2021, 12:06 
Offline
Kecálek
Uživatelský avatar

Registrován: 11.10.2020, 21:29
Příspěvky: 93
Has thanked: 0 time
Been thanked: 10 times
Ten autorun přepisuje warm start vektor [jmp $0302].
Ale FCIII ho přenastavuje na jinou hodnotu.
Tak se mi nechce mít dvě verze, nebo testovat na FCIII [vlastně nevím jak]

Jak tedy chodí autorun s GETIN nebo ten co pracuje s SP?
Díky

_________________
TK


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Auto Load
PříspěvekNapsal: 30.01.2021, 15:20 
Offline
Radil
Uživatelský avatar

Registrován: 23.05.2013, 20:30
Příspěvky: 322
Bydliště: Východní Čechy
Has thanked: 2 times
Been thanked: 48 times
tcat píše:
Ten autorun přepisuje warm start vektor [jmp $0302].
Ale FCIII ho přenastavuje na jinou hodnotu.
Tak se mi nechce mít dvě verze, nebo testovat na FCIII [vlastně nevím jak]

Jak tedy chodí autorun s GETIN nebo ten co pracuje s SP?
Díky


FC3 si přenastavuje vektory na svoje vždy při startu/resetu,není problém ji je přenastavit na svoje,jinak by autostart nemohl fungovat.
Std. soft. reset SYS64738 ji též přepíše všechny vektory,takto se dá též deaktivovat.

Pokud použijeme autostart s SP, vyplníme konec stacku vektorem naší start adresy minus jeden byte, v tom je celej princip.
Příklad je též na codebase: https://codebase64.org/doku.php?id=base ... disk_files
Verze s GETIN je taková kombinace ještě s následujícím CLALL vektorem,kde je entry point a hybridního boot kodu s basic headerem.Výhoda je,že může být nahrán jak přes ,8 ,tak i přes ,8,1.

_________________
JMP $FCE2

C64, C128DCR, IDE64, SuperCPU64, 1541 Ultimate-II, MMC Replay, FC3, REU 2MB, Geroram512, NeoRAM 2MB, RR-Net, SilverSurfer, Wiznet64 , 1541-II,1571,1581,Oceanic


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

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 4 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