Egy szoftverszintű reset-védelmet lehet csinálni, ha $8000-től kezdve leteszed a megfelelő bájtokat a RAM-ban (ahol a "CBM80" kulcsszót keresi a rendszer), hogy a következő resetkor a Kernal átadja a vezérlést.
De persze csak akkor működik, ha nincs külső ROM, ami rálapozódik, vagy egy másik olyan, ami mondjuk Ultimax módban kerül be a Kernal helyére (ld. EasyFlash).
A szoftver-trükkel lehet akár C128-on (és elvileg C65-ön is) a natív módból GO64-gyel átlépve egy saját kóddal átvenni a vezérlést.
Ezért nincs "resetvédelem" C64-en (pluszin meg van hehehehe), a szoftver nem tudja piszkálni az exrom-game-t a loram-hiram-charen meg a felhúzók miatt 1-re váltanak (mert a bemenet nem húzza le) és elindul a kernal. Aztán ott már az elején beállítanak mindent.
Gyakori félreértések vannak, hogy működik ez, mert a 6502 leírásában a resetnél ez nem szerelepel, lévén a 6502-nek nincsenek semmiféle IO regiszterei.
A 6510 sem programozottan csinálja, semmi köze hozzá az utasításvégrehajtó logikának(tehát a layout szinten is majdnem azonos 6502 "magnak"), hanem a reset vezeték egyszerűen fizikailag törli a port tárolókban az értékeket.
A bekapcsoláskor ezek maguktól beállnak egy alapértékre (gondolom, az összes létező biten 1-es helyiérték lesz, vagy valami hasonló), máskülönben el sem bírna indulni a Kernal ROM-ban lévő kód (ha nem látná a CPU).
A Kernal ROM rutin pedig aztán felülírja őket. Érdekes, hogy először az 1-es címet, és csak utána a 0-st (és az 1-esbe is $e7-et ír bele $37 helyett), azt nem tudom, miért, de biztos van valami magyarázata.
Ha te írsz saját reset rutint, akkor neked kell ezt megcsinálnod helyette (a kötelező SEI + CLD után).
Plus/4-el (YaPE) tesztelve: a fizikai CPU reset nem, a KERNAL reset rutin igen. (Írtam egy gyors tesztprogramot, ami kilapozza a ROM-t és saját magát állítja be a reset vektorba + megmódosítja a $00, $01-et) és reset után is maradt a $00, $01 értéke ugyanaz, mint reset előtt. Nem hinném, hogy a 6510 másképp működik ilyen szempontból, mint a 7501/8501.
Volt egy olyan magyar fejlesztésű játék, amiben egy űrhajóval tükrök között lehetett lövöldözni, és el kellett találni a képernyő közepén lévő célpontot, illetve ha ketten játszottunk, a másik játékost is. Mi volt ennek a neve?
A kapcsolási rajzon azért nics felfedezi való elem az exrom bizergálására, mert csak elméleti kérdésként tettem fel. A kapcsolás szimbolizálja a winvice cartridge emulációját a Generic 16kb-os kártyára. Megírtam egy cart progromat, ami szépen fel is tölti a cart tartalmát az epromból a c64 memoriájába, de mivel nem tudom az emulátorban kapcsolgatni az exromot ezért belapozás után is a cartridge marad aktív a memoriában. Tehát a BASIC helyén is a cart eprom van, gondolom azért nem fut a programom.
Most eredeti vason futtatok egy cart-ot amiben van monitor program. Ha az EXROM lábát kapcsolgatom az $A000-n ugyanazt a BASIC tartalmat látom az EXROM állapotától független. Valahogy másként működik ez!
Nemigen. Ha már egyszer a belapozást automatikusan elvégzi a hardver, miért lenne szükség külön beavatkozásra fordított esetben? Vagy arra gondolsz, hogy valamilyen eljárással ki lehet kapcsolni, mint mondjuk a freezer kártyákat? Arra kellenének külön alkatrészek, amit nem bírok felfedezni a mellékelt kapcsolási rajzon. De meg kellene nézni a 64-es kapcsolási rajzán, merre kóricál az /EXROM jel. Valószínűleg bele megy a PLA-ba, az meg nem kérdez semmit, csak mindig a pillanatnyi bemeneti konfigurációja szerint állítgatja a kimenetét, vagyis az aktuális memória kiosztást.
C64-en a cartridge porton az alábbi rajz alapján 16Kb méretű epromot lehet belapozni. A C64 memória térképe azt mutatja, hogy a 16kb epromnak egy része belelóg a Basic tárcímbe. A C64 bekapcsolásakor, ha az EXROM lábat GND-re kapcsoljuk akkor a 16kb külső eprom területet látja a gép.
Kérdés!
Ha bekapcsolt gépnél az EXROM lábon GND-t megszakítom és "H"-ba billentem, akkor a $8000-BFFF terület visszakapcsol RAM területté, vagy itt is ki kell külön utasítást adni mint a C16-on?
Gyakorlatilag egy üzenőfal. C64-en fut, 1 gépen, csak lokálban. Be tudsz regisztrálni rá, mindenféle saját beállításokat eszközölni a profilodon (értsd: választani tudsz párféle profilképből, meg hasonlók), és tudsz írogatni üzeneteket, meg látod másokét és tudsz rá válaszolni.
Árok partyn ki volt rakva egy gép, amin ez futott, aki akart odamehetett és használhatta. Nem voltunk sokan és semmi értelmes tartalom sem született rajta.
Egy ideje már foglalkoztat a kérdés, hogy mi a búbánat ez a reMETA? Néha felbukkan a CSDb-n rilíz ezzel a címmel, ami olyasminek látszik, mint valami IRC log. Valakinek van bővebb infója?
Valamelyik nap hallgatózok egyet, hogy U64-el és C64ReloadedMk2-nél (esetleg plus/4 SID kártyánál) mennyire áll fenn a probléma és ha bármelyik érintett, akkor engem érdekel. Csak ezeket használom, a többinél nem zavar, ha zajos. ;)
(offtopic, de pont hasonlón kezdtem el gondolkozni plus/4-el kapcsolatban a múltkor, mert szerettem volna videot digitalizálni róla, de annyira zajos volt a luma és az audio is, hogy félretettem, hogy lumafixet és audiofixet kell csinálni)