Az a turbó a Jiffydos, amit a C64-eredeti kernelének helyére kell betenni. Az SD2IEC meghálálja! Ha kenyeres C64-ed van amibe széles régebbi alaplap lapul akkor oda adapterrel megy be a Jiffydos, Ha újabb fajta alaplapod van a C64-be, akkor abból valószínűleg ki kell forrasztani az eredeti kernelt(kernel+basic egy ic-ben van), majd ic foglalat és mehet bele a jiffydos. Annyi még, hogy kondizás után érdemes az 5V-ot is ellenőrizni, meg a 9VAC-t.
Izzanak az IC-k a gépben, egyértelműen addig működik még túl nem melegszik. A floppymeghajtóval ugyanígy jártam, ott volt hely egy hűtőbordának az megoldotta.
Na holnap kicserélem az összes kondit, ha már ennyi pénzt beleöltem! :)
Az ilyen gépekre vásárlás után ráfér egy átkondizás. De sajnos ez sem biztosítja mindig a hibátlan működést, mert hát mégis csak 30 éves szerkezetek ezek! :-/ A röhej az hogy a mai napig kapható ramkockák majdnem ilyen öregek az üzletekben! :-)
Ha ez egy SD2IEC, akkor nem, semmi se kell. Simán lemezmeghajtóként lehet használni. Alapból vagy 8-as vagy 10-es egységszámot használ.
OPEN1,8,15,"CD<könyvtárnév>":CLOSE1 paranccsal tudsz könyvtárat váltani (.D64-be is így tudsz belemenni).
Gyorstöltők valszeg nem fognak menni. Ajánlott a CBM FileBrowser-t a kártya főkönyvtárába másolni és akkor a DLOAD"FB16":RUN vagy DLOAD"FB16",U10:RUN paranccsal tudod futtatni és kiválasztani, hogy mit akarsz betölteni.
Gyors nem lesz. (Illetve lehet JiffyDOS-t venni a Go4Retro-tól, akkor igen)
Igaz. De ha beállítod a színt $053b-n és utána csinálsz egy lda #$93 jsr $ffd2-t (képernyőtörlés), akkor az fehér színnel törli a képernyőt, azaz a színmemóriát feltölti neked. :) +ha nem teljes képernyőt másolsz, akkor a többi részét nem kell fillezned.
Még ezek sem kellenek, mert a képernyő törlés automatikusan végrehajtódik ha elkezdem $0C00-tól írni a képernyőt. Nem kell sem kurzor pozíció sem ESC+N. De mint írtam ez működött már előtte is. Amit akartam, hogy fekete keret és háttér, fehér betűkkel legyen. Ha ezt akarom, akkor $0800-tól $71-et kellene beírnom, hogy a fehér legyen a betű, de ezt már tegnap beszéltük asszem. :-/
Ha a képernyőt mented le, akkor ne szarakodj a PRIMM rutinnal ($ff4f). Írj ki egy $93-at jsr $ffd2-vel (képernyőtörlés) vagy $1b, $4e-t, (Esc-N) és utána másold át simán a mentett képernyőtartalmat a képernyőre. Egyébként ez érzésre 5-8x gyorsabb is.
Kicsit felborzolta a szemöldökömet a menü program megírása. Ez a JSR$FF4F egy faramuci rutin. A meghívása után ASCII kódokkal kell operálni. És bizony az pl.: ESC+N a képernyő törlés. Tehát a rutin után meg kell adni mit akarunk csinálni a kiírás előtt, ha ez megvan akkor jöhet a szöveg. Na a saját világomban elképzeltem, hogy megszerkesztem a képernyőt, amit utána lementek $0C00-tól, majd egy hex editorral bemásolom a $JSR$FF4F után. Aha ahogy elképzeltem. Nem igazán akart működni, mert a $0C00-tól kezdődő adat, nem ugyanaz mint amit én plus/4-en beírok a rutin után és elmentek. Ha a képernyőn szeretném megszerkeszteni a menüt és lementeni $0C00-tól, akkor mindent SHIFT+ -al kell írnom és akkor ugyanolyan lesz, mint amit a rutin el is fogad. Mié csinálták így? :-/
Ezek pluszin direkt ram-ban vannak, hogy a rom-ot le tudja lapozni, mert rom alatt a ramban is lehet basic progi.
$0473-on ki lehet cserélni ezt a cuccot egy olyanra, ami a szükséges külső rom-ot lapozza be a ram visszakapcsolása helyett, majd amikor megvan a byte, visaszateszi a normális basic rom lapját, és akkor a program onnan (közvetlenül rom-ból) fut.
Természetesen a basic kezdet, vég, változóterület, stb mutatók helyes beállításáról gondoskodni KELL(!), ez csak egy szükséges adalék, hogy lecserélni (átpatchelni) a chret(got) rutint...:
; ; CHRGET/CHRGOT - This chunk of code is copied to RAM ; and run from there. It is used to get data UNDER the ; system ROM's for basic. ; ; CHRGET ($0473) L8123 INC LastBasicLineNo ; $3b (goes to $0473 ) CHRGET BNE L8129 INC LastBasicLineNo+1 ; $3c ; ; CHRGOT ($0479) ; L8129 SEI STA RAM_ON LDY #$00 LDA (LastBasicLineNo),y ; $3b STA ROM_ON CLI CMP #$3A ; ":" (colon) BCS L8143 ; if colon, exit CMP #$20 ; " " (space) BEQ L8123 ; if space, get NEXT byte from basic SEC SBC #$30 SEC SBC #$D0 L8143 RTS
Köszi, akkor marad a sima basic, de már nézegettem ezt a JSR$FF4F-et. Amit alá írok be szöveget azt nyomja ki. Már csak egy Menükép szerkesztő programot kellene krendácsolni! :-) Régebben láttam a C64-es epromégető vezérlőprogramjában volt ilyen lehetőség, hogy a cartridge-hez lehetett menü képernyőt szerkeszteni. Csak ki kellett tölteni a képernyőt, hogy mit mivel szeretne a USER indítani és azt elmentette a cart-ra. De mondjuk ez csak érdekességként említettem. H már gépi kódban összeeszkábáltam a menüt, akkor marad a billentyűzet gombjaira való hozzárendelés. Ezekhez újabb kis sz szubrutinokat kell írni amik a basic POKE-ok helyett kitöltik a másoló programot és indítják. Nem olyan nehéz ez! :-) Melyik is lehet a kurzor pozicionáló utasítás? Hmmmmm. Elő kell szednem ezt a lexikont! :-)
Szerintem ez viszonylag egyszerű. Van valami CHRGET/CHRGOT rutin, amit elég könnyű lecserélni. A Tányértorony, Térbeli amőba, Bigyulabolt, stb. programok védelme is erre alapozott.
Az elég nagy problémának tűnik, hogy egyszerre kellene jelen lennie a BASIC programnak, és az értelmezéséhez és futtatásához szükséges interpreternek és KERNAL-nak. Szerintem ezt módosítás nélkül nemigen tudja a masina. Valószínűleg át kellene mókolnod azokat a részeket, amik a programkód beolvasásával foglalkoznak, hogy a te ROM-odat lapozgassák ki-be, és ne a RAM-ból akarják szedni az adatokat.
A saját világomból kérdezem! (tetszik ez a saját világ). Na szóval lehetséges basic programot futtatni epromból? Nekem eddig nem sikerült de lehet rosszul csinálok valamit vagy eleve lehetetlen és csak feleslegesen töltöm vele az időm! :-)
Igen, saját világom úgy működik, hogy kitalálok valamit ami még nincs +4-re C16-ra. Valami hardvert. Tudom hogy kell működnie, vagyis a fenét tudom. Sejtem, hogy működik C64-en és elkezdem tervezni az áramkört. Az áramkörhöz nézegetem a régi Commodore Egyesületi lapok 87-es számait, mert abban még jelentek meg kapcsolások +4-re, nem sok de megjelent, de sokat segítenek. Az ötletből születik egy kapcsolás próbapadon és ha működik, akkor mehet egy házilag gyártott áramkör. Így lett az 512kb-os kártyámmal is. A hardver kész már csak meg kell írni hozzá a belapozó, másoló, indító rutint. Most úgy néz ki, hogy van egy alap másoló program ami a kártya indulásakor felmásolódik $062A-tól a menü program pedig basicben íródott és fut. Ha a menüben kiválasztom a programot amik az epromba bele vannak írva, akkor egyszerű POKE- utasításokkal kitöltöm az eprom behívó és adatfeltöltő programot ami gépi kódú és indítom. Mivel a +4-el ha 32kb-nál nagyobb programot kell felmásolni epromból, meg kell hívni a C1L+C1H-t és utána a C2L+C2H-t is és onnét is a maradékot fel kell tölteni. Kicsit bonyolult de működik. Van is VIDEO egy nagyobb program futtatásáról. Az 512-es kártya most 64kb-os bankokban kapcsolható egyszerű LDA#$(00-07)és STA$FDFF-el. És ami még poén, hogy nem is kell azzal foglalkozni, hogy egyik bank felső 32kb-ba nem fér el egy nagyobb program, mert nyugodtan átnyúlhat a következő 64kb-os bank alsó 32kb-ba. De akár 1Mbyte epromot is be lehetne pakolni, mert a saját (FDFF) CS-vel vezérelt tároló elbírja! :-D Szóval nálam a hardver mindig előbb kész van mint a szoftver! :-D
Igen, bár egyrészt ez igazából IEC-ATA-nak szólt segítség gyanánt, másrészt van az idézett hívás előtt van egy másik KERNAL rutin, amivel beállítja a kiírás kezdőpozícióját.
Nem látom, mi a kérdés. Van egy ROM-rutin, amellyel közvetlenül a JSR után beírhatod a kiírandó szöveget. A képernyőmemória másolása is működik persze. De az igazi programozók csak F-ig ismerik az ABC-t. :)
Azt szeretném kérdezni, hogy ha a Plus/4,C16-on menüt szeretnék gépi kódban létrehozni ahhoz minden egyes sorban megadott feliratot ki kell íratnom a képernyőre egyesével mondjuk soronként. De van egy másik elképzelésem is ami az hogy lementem a képernyő tartalmat és azt feltöltöm amikor kell. számomra utóbbi talán egyszerűbb mert még nem vágom teljesen a gépi kódolást. Valami ilyesmit szeretnék majd!