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!
Ja, hogy ez az ő honlapja? Ezt én nem tudtam. De állítólag neki köszönhető az SD1541 - mármint, annak, hogy az SD1541 készítője berágott, hogy neki se csinálta meg és megtervezte az SD1541-et.
Közben! Siz csináltam egy pontos I/O-1 jelet a plus/4-re, mint ami a C64-en is van. 2db. 74LS688-al. Nem gépbe építettet, hanem expasionba csatlakoztathatót. $FDFF lett az elérhetősége! :-) Nagyon nagyon jól működik! :-)
Amikor először írtál az sd2iec rendeléséről a Lengyel sráctól, nem akartam rossz hírét kelteni, mert volt aki azt írta hogy többször üzletelt vele és semmi gond nem volt. Ahogy láttam, most teljesen más projectekbe van benne és nem tudom mikor fogja teljesíteni a megrendelésed, de többen zúgolódtak a facebook csoportban ahol ő is jelen van hogy .aszik teljesíteni a megrendeléseket. Hát ez van!
Ennek a netes oldalnak ahonnan rendeltem semmi elérhetőség nincs megadva, próbáljak arra a címre írni amin a visszaigazolást kaptam automatikusan a vásárlásról?
Rájöttem hogy a floppyban, az az egyetlen kivehető IC túlmelegszik és 1 perc használat után és csak folyamatosan forog a lemez vagy villog a led. Egy kis alubordát ragasztottam rá azóta hibátlan.
A billentyűzetet nem szedtem szét, de tartok tőle, hogy a plus4-enek az a grafitos-gumis érintkezők vannak amiken a tisztogatás nem igazán segít ha lekopik a réteg, de majd kiderül.
Az ugyanúgy-ot nyilván úgy értettem, hogy ugyanazt meg kell csinálni, azaz a CPU port bitek átmap-elését, ami valóban, egy gyorstöltő protokoll esetén azért lehet már elég nagy feladat is időzítési szempontból.