Király csávó lehet az az MC :)))
A regisztercsavargatáshoz én viszont nagyon hülye vagyok :) Anno sem értettem hozzá, most meg már azt is elfelejtettem :))
Kicsit megint fejlődött a FAQ, hála Atinak. (Thanx!) Próbáltam egy kicsit angolosítani is. Minden további ötlet welcome! :) Szeretném hangsúlyozni, hogy ez nem egy nagy FAQ akar lenni, amiből bármit meg lehet tudni, hanem egy icipici kedvcsináló, egy két proggival megtűzdelve.
Küzdöttem a TPSH packerral, sikertelenül. Mostmár majdnem biztos vagyok benne, hogy hibás verzió van nekem. MC packere megmentett, azzal jól ment minden. Már majdnem ide jöttem kérdezni, hogy mit cseszek el.
Mi is volt a gond?
Szóval, ha jól emléxem minden packer miután beállítottuk a 0x2b, 0x2d-n az a start-end-et lefuttattuk, ugyanzokba a 0x2b,0x2d -be állítja be, hogy mennyi lett a kész termék.
Ez logikus is, hiszen a BASIC innen tudja, hogy meddig kell menteni.
Itt kicsit elbizonytalanodtam, hogy mi is a különbség a MONITOR-ból mentett és a BASIC-ból mentett dolgok között.
Mindenesetre mindkét módon kipróbáltam, és a TPSH packerrel tömöríttet proggi mindkét esetben rossz lett, a MC packeres meg mindkét esetben jó.
(mit értek az alatt, hogy rossz lett? : eleve amikor betöltöm, a list eredménye a sys ... -en felül egy zsák krixkrax szines "dzsuva". - persze monitorból töltve jó.)
Na erről hirtelen ennyit. :)
Na és akkor ha jól értem egy c16-oson fog menni a demo?
El van már döntve, hogy hol lesz a party? Én nagyon szívesen megyek Debrecenbe is, ha ott lesz. (Persze Szegedet preferálom :)) )
Még valami: Azoknak, akik annyira gyűrik ezt a keretre-írás dolgot, szeretnék mély elismeréssel adózni. Úgy érzem bennetek van annyi tudás, hogy egy-egy emulátor hiányosságait, hibáit sokkal jobban észre tudjátok venni ezekben a mélységekben. Szerintem okos dolog lenne a tutibiztos dolgokat összegyűjteni. (mikor hogyan van badline, mi hanyadik ciklusban kezdődik, stb, stb..) Úgy érzem egy pontos leírásnak Ati nagy hasznát venné a Yape fejlesztéséhez.
A timereket megtalalod a plus4 levlistaban, anno azt is kimertem. Most igy
fejbol nem emlekszem az irasra, de az biztos hogy a csokkentes ott fix
fazisokban volt, raadasul ugy hogy a 2-es timer az nem ugyanabban a ciklusban
csokken mint az 1-es es a 3-as. Majd este megkeresem es bemasolom ide.
:-)
Egyebkent valoszinuleg a double clock ciklusban irt $ff1e is csak a
kovetkezoben updatelodik, de mivel az also ket bit nem irodik ezert ugy tunik
mintha azonnal tortenne. Sajna ezt nem is nagyon lehet kimerni, mert karakter
kozepen nincs semmi allapot valtozas amit befolyasolni lehetne...
Mibõl gondolod?
Kicsit mas a helyzet, ott 38/40 karakter valtassal csinaljak. Azonkivul ha a
STA 3 olvaso ciklusa meg a DMA elott befejezodik, akkor az iro ciklus is a DMA
elott lesz, (tudod az a 3 ciklus ahol csak irni tud a proci), ugyhogy ha az
irast a DMA utan akarod, akkor egy olvaso ciklusnak mindenkepp kell lennie a DMA
utan, es akkor mar az iras keso lehet. De meg ha az iras pont a keret elott van
akkor is a latcheles miatt valoszinuleg a keret bekapcsol.
Damn! De várjunk csak: emlékezetem szerint az írásnak C64-en arra a ciklusra
kell esnie, ahol épp vége a karakteres mezõnek (azaz arra a karakterre, ahol
normálisan nincs, 38 széles módban van keret). A másik amit tudok, hogy 64-en
_biztosan_ csináltak keretleszedést DMA-soron. Azaz _lehet_ ebben a ciklusban
írni. ...Ez azért érdekes, mert szerintem ez az elsõ vagy legfeljebb második
ciklus DMA után (inkább az elsõ?...).
Ki kell próbálni... Nincs más hátra.
Ja... A régi tesztprogram (a CPU + TED busz-ütközéssel) sajnos nincs meg. :-(
Valószínûleg ugyanúgy végezte, mint a többi hasonló kísérletem
(...memory-corruption + halál :-/ ).
[Lavina]
nem értem, miért olyan érdekes ez a keretleszedési probléma??? Persze, jó
poén, de miért olyan enthusiastic mindenki about it??? :D
Mert ez ($ff1e) egy eléggé felderítetlen része a TED-nek. Engem legalábbis ezért érdekel.
Na a Cc65-hoz es a DASM-hoz tettem fel ket kis progi forrast, ami egy
1024 sys 4109
basic sort general az adott forditokban, es a "main" cimkere ugrik, aminek a helye $100d. Egy kis segitseg az elindulashoz! :)
Latchelt működés: nem lehet, hogy a TED más regisztereire (pl. számlálókra) is működik valami ilyen? Gyanús, hogy ha egyszer megcsinálták a szinkronizálást, akkor miért pont erre az egy regiszterre használták és a többire nem.
A timereket megtalalod a plus4 levlistaban, anno azt is kimertem. Most igy fejbol nem emlekszem az irasra, de az biztos hogy a csokkentes ott fix fazisokban volt, raadasul ugy hogy a 2-es timer az nem ugyanabban a ciklusban csokken mint az 1-es es a 3-as. Majd este megkeresem es bemasolom ide. Egyebkent valoszinuleg a double clock ciklusban irt $ff1e is csak a kovetkezoben updatelodik, de mivel az also ket bit nem irodik ezert ugy tunik mintha azonnal tortenne. Sajna ezt nem is nagyon lehet kimerni, mert karakter kozepen nincs semmi allapot valtozas amit befolyasolni lehetne...
Morfondírozok valamin, mióta Bubis nekiállt oldalkeret-lebontani és szóbakerült a DMA-sor. 64-en emlékezetem szerint egy cikluson múlik, hogy az effektet meg lehet csinálni (azaz, a $D011-be írásnak épp a DMA-t közvetlenül követő ciklusra kell esnie ahhoz, hogy a keret eltűnjön, azaz az STA három olvasó ciklusának a DMA előtt be kell fejeződnie). Nem lehet-e véletlenül, hogy ugyanez pont elég ahhoz, hogy Plus/4-en a CPU beírhasson a $ff1e regiszterbe, és néhány ciklussal késleltesse a jobb oldali keret megjelenését? Ha a DMA előbb befejeződik mint a jobb oldalkeret megjelenése (márpedig emlékeim szerint előbb befejeződik) akkor a lehetőség szerintem adott. Vagy nem?... ...Ki kellene próbálni. Kicsit mas a helyzet, ott 38/40 karakter valtassal csinaljak. Azonkivul ha a STA 3 olvaso ciklusa meg a DMA elott befejezodik, akkor az iro ciklus is a DMA elott lesz, (tudod az a 3 ciklus ahol csak irni tud a proci), ugyhogy ha az irast a DMA utan akarod, akkor egy olvaso ciklusnak mindenkepp kell lennie a DMA utan, es akkor mar az iras keso lehet. De meg ha az iras pont a keret elott van akkor is a latcheles miatt valoszinuleg a keret bekapcsol.
Azt probalta mar valaki mi tortenik, ha az $FF1E-be iras (es negalas) utan $E4 es $FF kozotti ertek kerul? Valoszinuleg siman atporog 0-an keresztul.
Pontosabban dehogynem. A 38-40 karakteres uzemmod ($ff07-ben van?) valtogatasvbal badline-on is szedtem le keretet, csak nem tudtam semmit rakni oda. Megcsinaltam, hogy az egyesz kepernyo teruleten leszedtem a keretet, es ott pont ugy ment, hogy amikor a raszter a 40. karakternel tartott, ott kellett 40-rol 38-ra kapcsolni, hogy ne kezdodjon el a keret rajzolas.
"Jo kerdes hogy mi tortenik ha a CPU irni akar, ha jol latom a kapcs rajzbol, akkor a WRT az negalt, tehat 0 ertek igy valoszinuleg sikerul is neki. Egyebkent ennek a kihasznalasaval lehetne oldal keretet bontani DMA soron is, bar elegge at kell gondolni azt a kodot :)) (ugye ertelmes is legyen, meg hat az is fog megjelenni a kepen mint character/color info... :)))
Ha megvan meg kuldjetek mar el ezeket a pelda progikat, erdekelne hogy nektek hogy jott elo, en amikor ebbe belefutottam, akkor nem $ff1e-t irtam. "
Morfondírozok valamin, mióta Bubis nekiállt oldalkeret-lebontani és szóbakerült a DMA-sor. 64-en emlékezetem szerint egy cikluson múlik, hogy az effektet meg lehet csinálni (azaz, a $D011-be írásnak épp a DMA-t közvetlenül követő ciklusra kell esnie ahhoz, hogy a keret eltűnjön, azaz az STA három olvasó ciklusának a DMA előtt be kell fejeződnie). Nem lehet-e véletlenül, hogy ugyanez pont elég ahhoz, hogy Plus/4-en a CPU beírhasson a $ff1e regiszterbe, és néhány ciklussal késleltesse a jobb oldali keret megjelenését? Ha a DMA előbb befejeződik mint a jobb oldalkeret megjelenése (márpedig emlékeim szerint előbb befejeződik) akkor a lehetőség szerintem adott. Vagy nem?... ...Ki kellene próbálni.
(Bubis talán már tudja... :-) ).
L.
Ps. meséljétek már el, hogy' a bánatba' lehet idézni ezen a lapon!...
Bocsesz, hétvégén egy GSM-linken lógtam azaz nem tárcsáztam be ha nem volt életbevágó ;).
Crown:
Látom, ha a sorszinkron "rövid" vagy "hosszú", mert az öreg mittoménmilyen (vagy 20 éves) színes TV amit használok sokkal idegesebb (gondolom) vagy legalábbis elég ideges az ilyen poénokra. Ezért tudtam, hogy az 56 a helyes érték. A kikapcsolt képernyőről annyit, hogy direkt olyan rutint akartam ami hasraütésszerűen valahol kikap egy értéket $ff1e-ből, csinál vele valamit majd a _kezdőponthoz képest_ x ciklussal visszaírja (ezt asszem nehéz korrektül abszolválni felkapcsolt képernyővel). Ilyen alapon tehát az sem véletlen hogy "a vandorlo $ff1e pozicio irasok nem irtak olyan pozicioba, ahol gondot okozhattak". Ha okoztak volna, az épp annak a jele hogy rossz a ciklusszám (...azaz volt egy jól működő mutatóm, és végeredményben épp ezt akartam).
Latchelt működés: nem lehet, hogy a TED más regisztereire (pl. számlálókra) is működik valami ilyen? Gyanús, hogy ha egyszer megcsinálták a szinkronizálást, akkor miért pont erre az egy regiszterre használták és a többire nem.
Bubis: Mivel fejlesztesz PC-n pluszira?? Szeretnek kiprobalni par dolgot, de az emulatorban fejleszteshez nem nagyon van kedvem...
Csabo: nem igazan emlekszek olyanra, ami kimaradt volna, sot sok olyan volt, amire mar nem is emlekeztem :)) Egyebkent, ami pontatlansagot talaltam, azt megirtam mar Lavinanak.