Azonnali Árok Party előadást kérünk róla! Az ötletről, a fejlesztésről és a belövésről! Mindenről!
(Mekkora már! Még a végén lesz Plus/4 DTV is, ha így haladsz! Éljeeen! Kéretik a szakértő kollégákat, h segítsék IEC-ATA-t, hogy a 1551 kezelését is átírja!)
Meglett a hiba és az eredménye is a javításnak! :-) A floppy elindult! Próbáltam DEMO-val, persze leült a meghajtó, de a cél nem az volt, hogy turbóval is menjen, hanem csak az hogy betöltsön, ezt maradéktalanul meg is csinálja. :-) A mentést is kipróbáltam, az nincs a videon, de működik!!! Akkor >>>ITT<<< lehet nézelődni! :-)
Fél siker! :-) Megírtam átírtam a kernelben lévő rutinokat a P3-P4. lábakra. A fél siker azt takarja, hogy LOAD-ra, Directory-ra elindul a Floppy meghajtó, de csak forgatja a lemezt. Valahol még kifagy. Van egy olyan érzésem, hogy a kernelben beírt új programkódok nem jó helyen vannak. Az $FCD1-től írtam be a helyettesítő kódokat, illetve az $FF20-tól. Itt volt hely! Jók ezek a címek? Majdnem az összes seriel portot író és olvasó rutint sikerült az eredetiről a módosított proci lábakra átírni, (külön kimásoltam és futtattam az eredeti kódokat, csináltam a seriel portra a CLK-ra és a DATA-ra is nyomógombot szimulálva a jeleket) Ezeket természetesen a módosított proci lábakra is kipróbáltam átírva a kernelt. Valahol még bug van. Van még egy két rutin amit le akarok ellenőrizni, habár csak sima ANT, DATA CLK magasra állítás, de van benne egy (ha magas) na ezeket még átnézem. :-)
Lehet az lesz a megoldás, hogy a P1-re "1"-et írok, ekkor a negáltja megjelenik a P6-on vagyis ott "0" lesz és akkor a CLK-ra kívülről adok "1"-et.
Egyébként az e feletti kódokat átírtam már a 6510-es procihoz és le is teszteltem. Általában, vagyis inkább mindig +3 ASL-el többet kell beírni, csakhogy ezekhez az átírásokhoz a kernel szabad helyein szubrutinokat kell írni, hogy meglegyen a megfelelő bit eltolás (P6-P7 helyett P3-P4), de ezek már mennek. Csak a fent ill. alant írt kód tesztelésénél akadtam el. Meg meg kellene keresnem az eredeti kernelben a $0000-cím hol állítódik be $0F-re, mert a 6510-es procinál $07 kell, így POKE-olni kell az elején! :-D
Itt ugye arra készült a szerző, hogy te a gépen a CLK-OUT-ot magas szintre állítod (ami ha jól emlékszem invertált, tehát a megfelelő bitet 0-ra), ez meg arra vár, hogy valamelyik soros buszos eszköz lehúzza azt 0-ra.
Az meg, hogy miért van meg több helyen? Passz. Lehet, hogy utána kezdtek el spórolni a hellyel vagy kritikus volt az időzítés vagy nem ugyanaz csinálta. Sose fogjuk megtudni.
Fura, mert a 6. (ASL után 7.) bit alapján egyértelműen visszaugrik a BMI, ha az 1-es. Ha egy sima LDA #$40 vagy hasonló van az ASL előtt, és utána a BMI, akkor ez van, a $01 regiszterből kiolvasott érték esetén is úgy kellene lennie.
Én is valami ilyenre jutottam. A programrészletet kimásoltam és úgy futtattam. Mégsem értem a működését, mert ha a CLK "0" akkor i tovább fut, meg ugye CLK "1"-re is. A CLK_in alap állapotban "1" (rajta a felhúzó ellenállás) akkor "0" ha a CLK-out-ra "1"-es parancsot adok. Amúgy szépen át lehet írogatni a kernelt, csak itt elakadtam, hogy hogyan működik. Meg még azt nem értem, ha egyszer van egy olyan szubrutin, hogy soros busz adatainak olvasása $E2D4, ezt több helyen látom hogy használja egy JSR$-el, de utána meg ugyanezt kódot már nem JSR$ hívja meg, hanem be van írva a programba, akkor már miért nem tudta mégegyszer meghívni? Minek kell külön is leírni??? biztos volt elég hely!?
Közvetlenül annyit jelentene, hogy a $01 adatregisztert addig olvassuk, amíg változik, aztán a beolvasott érték 6. bitjét (0-tól számozva) az ASL a 7. bitbe tolja, ott aztán megvizsgálva a bitet, ha 1-es, a BMI-vel elölről kezdjük az előbbi ciklust, ha viszont 0 volt, továbblépünk.
Lemezes játék hivatalosan talán nem is jelent meg plus/4-re a Commodore csődje előtt. Azóta már igen (pl. a Majesty of Sprites vagy a magyar Adventures in Time, amiket a Psytronik adott ki). A régi C64 átiratok, amiket írtál szinte kivétel nélkül 1541 gyorstöltővel jöttek ki.
Azt írják a 7501 adatlapon, hogy a gate in arra van, hogy a R/W vonalat megakadályozza, hogy alacsony szintre menjen. Ez meg azért kell, hogy a RAS és CAS-t össze szinkronizálja, hogy nehogy rossz pillanatban menjen a DRAM felé egy írás művelet. Azt is írják, hogy normálisan ez a MUX-ra van kötve.
Az én értelmezésemben meg a plus/4-ben ez nem feltétlenül kell, mert úgyis a TED vezérli a RAS/CAS/MUX-ot is, meg az órajelet is a proci felé, szal ő garantálja, hogy ez az időzítés jó legyen.
1. Ez nem az én "találmányom", az ős 264-es prototipus is 6510el épült anno..
2. "gate in" kérdéskör:eleve sosem lesz semmiféle 6502 és 6510 100.0000% kompatibilis, amig rá nem jövünk mi azt a speciális eset amikor ez a jel _kell_..
3. A 6510 elvileg _nem bírja_ a két megát, hogy van olyan, ami mégis, az eleve egy nagyon durva "overclocking", annak minden stabilitási és egyéb hátrányával
4. A 6502es prototipus egy Baltissen féle rajz, kétlem (a hibák miatt főleg) hogy valaha élesben működőre megépítette volna..ő elsősorben "C64 guy", levlistán valakinek sok éve csinálta ezt a skiccet, aztán ennyiben is maradt... ha jól rémlik
5. Lehet evvel szenvedni, meg legyen gyorstöltő, legyen jövőhét, ha magamnak gyorstöltőzök, átírom azt is, és lesz gyors töltésem, ha egy utántöltős játék (hű de "gyakori" pluszin?!? :)) vagy demo nem megy, most arra mit mondjak, ehhez kell majd eredeti gép meg proci,... vagy emulátor..hűhaa...
6. Lett volna ennek folytatása, értelme, az eredeti motiváció olyasmi volt, hogy 6510en van NMI, ami a pluszis világban egy nem várt istenkártya, egy megkerülhetetlen "tutifrézer", relative kevés plusz alkatrésszel és kódolással..
7. Onnantól viszont, hogy van egy 99.9%-os, nem emulátorok, meg leírások, hanem az eredeti, igazi áramkör rajzai, fotója, felderített funkciói alapján készült FPGA TED, eléggé okafogyott az egész....
8. Azt sem tartom túl reálisnak ,hogy majd tönkremegy meg "elfogy" a világból a proci, és 6510el _kell_ gyűjteményi vasak életbentartásához "élesben" kiváltani, annyi 264es gép készült, sokat nem, vagy alig használtak, kétlem, hogy ilyen overkill gyűjteményi értéke lesz majd egyszer, valaha, még a mi életünkben ennek a szériának
Látni fogod. Csak az a kérdés, hogy hogyan jeleníted meg a regiszterek tartalmát. A KERNAL-ba épített monitor BRK után frissít csak. Ha pl. YaPE monitorról van szó, az minden utasítás után frissít.
Ezt kipróbálom! Azt hittem, hogy ha egy akkuba töltött értéket aminek az utolsó bitje "1" egy ASL utasítással eltolom, és az utolsó bit a carry-be kerül, akkor azt látni fogom. De akkor majd az alábbi módszerrel. Köszönöm!
Két lehetőséged van. Az egyik, hogy BCS vagy BCC ugrást csinálsz. A másik, hogy PHP, PLA utasításokkal átmásolod az akkumulátorba. A processzor állapotbitjei emlékeim szerint sorrendben NV1BDIZC, így a legalsó bitet kell tesztelned. Már ha jól tényleg emlékszem.
Az az igazság, hogy csináltattam már nyákfilmet egy kisebb nyákhoz a 6502+6522=8501 nyákomhoz. Most már javítva az eredeti Baltissen féle rajzot, ugyanis abban rosszul adta meg a 8501 "P" port lábait. Ő P0-P6-ig rajzolta, ami nem jó, mert ugye a P0-P4,P6-P7 kell. Meg rendeltem egy logikai analizátort, hogy lássam is hogy mi a helyzet. Másik kérdés: Ha a CARRY-be lévő értéket honnan tudom kiolvasni? Elviekben az állapot regiszter (SR) tartalmazza, de ha monitort beírom akkor csak $00 van benne.
Szerintem nem (teljesen) ezt az irányt kellene erőltetni: ahogy többen írták is, nem kis macera a soros port kezelő rutinokat átírogatni, hogy más portkiosztással menjenek. Nem lehetetlen, de ettől még semmilyen gyorstöltő nem fog menni vele, tehát gyakorlatilag 1551-re korlátozod a gépet.
Akkor már inkább tényleg egy 6502+6522 kombó kell, meg egy rakat OR kapu, amivel CS jelet adsz neki, amikor a $00 vagy $01 címeket szólítja meg a proci (címbusz felső 15 bit 0). És akkor még a 6522 adatbuszát is külön kell címezgetni, mert nem adatirány regiszter, aztán adatregiszter a kiosztása, hanem először két adat, aztán két irány. (Bár ez meg a 6522 A2-es bitjére a CPU processzor A0 negáltját kötve megoldható. Akkor már csak az a kérdés (amire nem emlékszem fejből), hogy a 6522-nél ugyanúgy az 1-es adatirány jelenti-e a bemenetet, mint a 7501-nél.
Értem. Hát ez egy bittel kevesebb, és enélkül is össze volt vonva a tape out és clk out. Esetleg a magnó motorját lehet mindig pörgetni, vagy összegányolni atn/data out vonalakkal a magnó vezérlését, vagy felfűzni egy filléres mikrovezérlőt soros egységnek, és azon keresztül vezérelni. :)
De szerintem ettől megoldható a serial kernalmódosítás, csak a gyors töltők nem. A clk in-t is kezelni kell, és nem biztos, hogy csak egy helyen (pl. $e216), ahogy a datánál sem.