Ez a mese újfent a régi vasakról szól (ahogy magam ismerem, lesz is még pár), mivel ezeket még „emberközelinek” érzem. Sőt: ez az ötlet igen régi. Csak a megvalósulásig rögös út vezetett. Eldöntöttem, hogy nem azért csinálom meg, mert egyszerű, hanem azért, mert nehéz. Az is lett... :) Mivel van némi fogalmam arról, hogy működik az 1541, illetve az 1551, nem tűnik olyan elvetemült ötletnek a dolog.
Arra már sok évvel ezelőtt felfigyeltem, hogy a két meghajtó erősen hasonlít a belső hardveres regisztereit tekintve. Az 1541-ben 2 db. VIA van, összesen 4 BYTE-nyi porttal, az 1551-ben meg van egy TPI 3 BYTE-nyi porttal, ill. a speciális 6510T (doksi nincs), amiben 1 BYTE-nyi port van. Ez is összesen 4... A kiosztásuk vajon milyen?
1541 U6: ($1801) 1551 U3 ($4000)
PA0 TR00 Sense PA0 TCBM D0
PA1 PA1 TCBM D1
PA2 PA2 TCBM D2
PA3 PA3 TCBM D3
PA4 PA4 TCBM D4
PA5 PA5 TCBM D5
PA6 PA6 TCBM D6
PA7 PA7 TCBM D7
CA1 ATN In
CA2 -
A VIA-nak van 2 vezérlő lába még, abból a CA1-re a soros port ATN-je van kötve (IT-t generál vele), ez az 1551 esetén nem kell. Az 1541 TR00 érzékelő bemenet az utolsó verziójú DOS-okban nincs használva, a többi portbit meg nincs bekötve. Ezt a portot szokták használni akkor, ha az 1541-et párhuzamos módon (is) hozzá akarták kötni a számítógéphez. Ez így kompletten jó lehet az 1551 TCBM busz DATA részének.
1541 U6: ($1800) 1551 U3 ($4002)
PB0 Data In PC0 TCBM STATUS0
PB1 Data Out PC1 TCBM STATUS1
PB2 Clk In PC2 TCBM DEV
PB3 Clk Out PC3 TCBM ACK
PB4 ATNA PC4 Mode (R/W)
PB5 DevNo Sel B0 PC5 DevNo Sel (Jumper)
PB6 DevNo Sel B1 PC6 Sync
PB7 ATN In PC7 TCBM DAV
CB1 -
CB2 -
Ebből a portból kizárólag az 5-ös bit jó, a többit át kell kavarni a két verzió között.
1541 U8: ($1C01) 1551 U3 ($4001)
PA0 D0 f/t R/W head PB0 D0 f/t R/W head
PA1 D1 f/t R/W head PB1 D1 f/t R/W head
PA2 D2 f/t R/W head PB2 D2 f/t R/W head
PA3 D3 f/t R/W head PB3 D3 f/t R/W head
PA4 D4 f/t R/W head PB4 D4 f/t R/W head
PA5 D5 f/t R/W head PB5 D5 f/t R/W head
PA6 D6 f/t R/W head PB6 D6 f/t R/W head
PA7 D7 f/t R/W head PB7 D7 f/t R/W head
CA1 Byte Ready
CA2 SOE
Ebből a SOE ill. A Byte Ready jel „máshogy” kell, a többi egy az egyben jó (ez a fej fele/felől az adatbusz).
1541 U8: ($1C00) 1551 U2 ($01)
PB0 Stp1 P0 Stp1
PB1 Stp0 P1 Stp0
PB2 MTR P2 MTR
PB3 ACT LED P3 ACT LED
PB4 WPS P4 WPS (Write Protect Switch)
PB5 DS0 P5 DS0
PB6 DS1 P6 DS1
PB7 Sync P7 Byte Latched
CB1 -
CB2 Mode (R/W)
Itt a 7-es bit más, a VIA CB2-ese máshonnan jön az 1551-ben, ill. az ACT LED polaritása fordított, de a többi egyezik.
Tehát az elképzelés a következő: ha a CPU-t 1 helyett 2 MHz-cel hajtanám, ill. a megfelelő címekre a kellő VIA regisztereket „mapelném” be, a regiszterek különbségét egy logikával eltakarnám, akkor az 1551-es DOS úgy láthatná a hardvert, mintha valóban az lenne. Mindezt lehetőleg átkapcsolhatóra... Ez így egy kissé meredeken hangzik, de az, hogy a regiszterek zömével nincs gond, bizakodásra ad okot. Tehát az egész a regiszterek hasonlóságán alapult, de a következőkben ki fog derülni, hogy gyakorlatilag semmi jelentősége. :) Cserébe újra forrasztgathatok, használhatom a „kedvenc” CPLD-imet, kódolhatok 6502-re... Meg amúgy is, ekkora őrültséget még nem csináltam. Mire várok még? :)
Ez lesz itt az alapanyag/donor (kinek hogy tetszik):
Kicsit koszos, kicsit sárga, de az enyém... :) Azon kevés 1541-II közé tartozik, aminek olyan a felépítése, hogy kinyitáskor egy rugós mechanika kitolja a lemezt. Kívülről eléggé gyászos képet fest, de belülről elég korrekt:
Ami jó: ebben is „direktmotor” forgatja a lemezt. Az elektronikám viszont azt hiszem nem lesz kicsi. Vajon hova lehet ezt ebben elrejteni? A mechanika és az eredeti NYÁK között azért akad hely. Na de mennyi?
Elő a jól bevált (?) gyurmával, amivel precízen ki lehet „tapogatni” a rendelkezésre álló helyet. Na de mennyi is az annyi?
Hát, ez így ránézésre rengeteg! Persze hogy ne legyen ennyire szép, később kiderült, hogy a fej léptetőmotorja „lejjebb lóg”, mint a lemez forgatómotorja, így ott már nincs ennyi hely.
Első lépésben „bontani” kell. Ahhoz, hogy a tervezett dolgokat megcsináljam, a CPU, ill. a VIA-k közé be kell pár helyen „kapcsolódni”, meg ugyanez vár a ROM-ra is. De ha már itt tartok, lehetne a kütyübe több a RAM is... Azaz: CPU, VIA-k, ROM, RAM ki:
Eléggé kopasz szegényke... :) A kiszedett IC-k helyére foglalatok kerülnek, a CPLD-nek kell még egy kis hely:
Ebbe jön bele a saját „közdarabom”, amin a CPLD ill. a nagyobb memória van Ez valahogy így néz ki:
Ahhoz képest, hogy arra számítottam, hogy nem lesz túl bonyolult, eléggé húzós lett a huzalozás. Eredetileg mindkét VIA a felépítményen volt, csak itt jött a képbe a léptetőmotor, és annak a vastagsága. A többi cucc elfér abba a szűk 2 cm magasságba, de az U8-as pozíció fölé éppen odalóg az a fránya motor... De szerencse, hogy pont ennek az IC-nek csak egy vezetékével van gond, azt meg az alap NYÁK fólia vagdosásával megoldottam. De minek... :)
A CPLD-ben elkészült az első FW, a CPU az 1551 módban kellő 2 MHz-en ketyeg. Jöhet az első teszt! Az 1541 DOS-a szoftverből időzíti a soros port kommunikációját, ami így dupla órajel mellett már túl gyors a géphez. De sebaj, ha a képernyőt kikapcsolom, akkor a plus/4 is hozzá tud gyorsulni a feladathoz. A lényeg, és maga a probléma itt látszik, valójában igencsak nagy mázlim van, hogy egyáltalán kiderült:
Hogy mi látszik? Az első adag dump 1 MHz-es órajel mellett készült, a második meg az átkapcsolt 2 MHz-es sebességnél. Az $1802/$1803, ill. $1C02/$1C03 regisztereken látszik igazából; ezek a portok adatirány-regiszterei. Mindkét dump esetén egyezniük kéne. A VIA-k nem bírják a 2 MHz-es órajelet... Mondjuk mindegyik 6522, egyik sem 6522A. Tehát ez még jogos is. Számítottam is erre a jelenségre, viszont volt egy ötletem ilyen széthúzott órajeles trükközésre, hogy a VIA-k látszólag 1 MHz-es sebességgel menjenek... Csakhogy – mint az adatlapot böngészve kiderült – nem lehet az órajelet úgy variálni, mint az újabb MOS csipeknél, de ha lehetne se biztos hogy „odaérnének” a buszciklusra. A CPU-val nincs gond, mert az 6502A, de hosszas kutakodás után is csak 1 db. 6522A-t találtam a cuccaim között. Szóval ez így kalács. Ja, nem. Bukta...
Mit lehet akkor tenni? Vagy szerzek 2 MHz-es VIA-kat (macera...) vagy implementálom valahogy a komplett TPI-t meg a CPU portját. Ez utóbbi megoldás jónak tűnik, csak szokás szerint „van egy kis probléma”. Egyrészt az XC9572, amit használok, kevés kezd lenni. El kell használjam az utolsó XC95108-at, amim van. Nem hangzik jól... Ráadásul a lábszám is kevés, így „ki kell szerveznem” pár funkciót a tokból, ami még több vezetékezés... Aztán: az a VIA, ami most a saját feltétemen van, az kezelte volna a kommunikációs részt. Ezt teljes egészében a CPLD fogja intézni, tehát az visszamehet a helyére. Viszont a másik VIA-nak, ami a mechanika és az olvasóelektronika kezelését végzi, annak kell az összes port-vezetéke (mondjuk legalább 17). De ezt meg nem tudom felrakni a közdarabra, mert nem fér el. Máshogy kell összeszedni azokat a vonalakat...
Szomorú dolog történik: szét kell bontanom az eddig megépített cuccot:
Eh... Szomorú látvány. De a folytatás már nem ennyire az:
Ez ugyan messze nincs még kész, de így azért látszik, hogy mi hogyan van elhelyezve. A CPLD-ből két komplett port került ki, az egyik a fej fele menő párhuzamos adat tárolópárosa, a másik meg a CPU portja. Ezeknek a vezérlése meg a maradék TPI funkció már belefér... Meg így marad elég regiszter ahhoz, hogy az IRQ vezérlést is a CPLD-be pakolhassam. (Az eredeti 1551-ben az IRQ-t egy 555-ös időzítő IC szolgáltatja, ami kb. 120 Hz-es ütemben szaggatja a főprogramot. Ezt „kimérni” is mókás volt, mivel nincs frekvenciamérőm se... :) ) Az U8-as VIA megfelelő jeleit egy szalagkábel hozza fel a proto-nyákomra:
Ez lett a saját elektronika:
Szép az SRAM, leginkább a típusszáma. :) A gyári 2 KBYTE helyett ez 32. :) Összerakva:
Még ez sem a végleges, de már próbálható. A „mérési összeállítás” így néz ki:
Eléggé nagy a kupi, egy gyári CBM 1551 „paddle” a géphez kapcsolódó illesztő, amit szintúgy ki kell helyettesíteni. Ú... (Persze ez nem ért meglepetésként, csak úgy tűnik, hogy ahogy haladok a vége felé, úgy derül ki, hogy félúton vagyok. :) ) Na de vajon megy-e?
A (z 1541 üzemmódban működő) meghajtó RAM-jába a konfiguráló kódot bemásolva, majd elindítva... Tádám: MŰKÖDIK!!! Szinte el se hiszem... A végeredmény úgy van megvalósítva, hogy egy kapcsolóval kiválasztható, hogy bekapcsolás (vagy RESET) után a meghajtó milyen üzemmódban induljon el. Ezt a kapcsolót induláskor egy program ellenőrzi, ennek alapján konfigurálja be a hardvert (nagy részben a CPLD-n belül kialakított regisztereken, kis részben a VIA-kon keresztül), majd a megfelelő DOS-t „belapozza” és elindítja.
Ami HW trükközés kellett, az tulajdonképpen az 1541-II illetve az 1551 ASIC különbségéből fakad. Az 1541-es ASIC olvasáskor (valószínűleg, tulajdonképpen nem vizsgáltam) a VIA fele az olvasó shiftregiszter adatát adja vissza közvetlenül. A „leccselést” a VIA végzi, viszont ilyen tároló a TPI-ben nincs, ezért ezt az 1551-ben az ASIC-nak kell végeznie. Mivel a fej adatbuszát nem a CPLD-n keresztül kezelem (kikerült onnan hely / lábhiány miatt), ezért ezt egy 74HC574 csippel oldottam meg, ami a CPU adatbuszra való hajtását is megoldja egyben, ugyanis a kimenetei Tri-State módon vezérelhetők. Ugyanilyen tok szolgál íráskor az adat tárolására, ill. ugyanilyen a processzor portjának a megvalósítása is. A CPU port nagy része kimenet, de vissza kell tudni olvasni, ami egy 74HC245 segítségével lett megoldva. A CPU port adatirány regisztere meg is van valósítva meg nem is. :) Az állapota közömbös, mivel a funkciók fixek, nincs jelentősége. A helyén simán a RAM írható / olvasható, tehát látszólag ott van... A TPI adatirányok nagy része szintén „be van drótozva” fix értékre, csak ott lett megvalósítva, ahol ténylegesen van értelme az állíthatóságnak. (Pl. A TCBM busz 12 vezetéke ilyen, ugyanis programból az használható tetszőlegesen, ki tudja, hogy a programozók eddig mit követtek el... De a fej fele menő adat adatirányából már csak 1 bit van tárolva, ott nincs értelme a bitenkénti állítgatásnak.)
Ezen felül van még egy eltérés a két ASIC között, ez pedig a BYTE READY jel. Az 1541-ben ez egy impulzus, az „esemény tényét” egyrészt a VIA, másrészt a CPU „OVERFLOW” bitje tárolja. Az 1551-ben a BYTE READY eseményt maga az ASIC jegyzi meg, a CPU a saját portján keresztül ezt a „megjegyzett” állapotot látja. A BYTE READY jelet a TPI elérése törli. (Rendes működés közben amúgy is a fej fele menő / onnan jövő adat kezelése jön a BYTE READY esemény után, ami a TPI írásával / olvasásával történik, így ez automatikusan megvalósul.)
A tényleges végeredmény ilyen lett:
A FLASH-t kicseréltem egy EPROM-ra, mivel azt csak a programfejlesztés idejére használtam (meg 29C020-ból van vagy 2 darabom, 27C010-ből meg pár csővel... Elég lenne egy 27C512 is (A DOS-ok 16 KBYTE-ok, a bekapcsoláskor futó konfiguráló programocska meg vagy 150 BYTE...), de abból sincs kéznél éppen egy sem. Pláne nem üres...), a kábelezés kész, a TCBM busz kivezetve egy csatlakozóra, a típusváltó kapcsoló felszerelve... Össze is lehet rakni.
Az azért tisztán látszik, hogy túl sok hely nem maradt a mechanika és az elektronikám között... Hogy a motor mennyire szórja forgás közben a mágneses terét, azt nem tudom, eddig – úgy tűnik – nem zavarja az elektronikát. Hogy a vizuális élmények közül az összerakott állapot se maradjon ki:
Kívülről ennyi látszik, egy matrica pár felirattal azért még majd elfér.
Hogy most ez így mire is jó? Meg egyáltalán... Na, ez egy jó kérdés. A nehézségek miatt volt egy csomó bosszankodás, sok elképzelés nem működött, de azért összességében jó móka volt ezt „összehackelni”. Vissza van a gépbe kerülő interfész, az is okozott pár „fejvakargatós” percet, de azt a mesét azt hiszem jövőre halasztom.
„Irodalom”:
- Kapcsolási rajz – Drive
- Kapcsolási rajz – Paddle
- ...ill. itt is a komplett internet. :)
balagesz
---
2012.12.30.
2013.01.05. 1541/1551 különbségek, „irodalom”
2019.12.07. D8.
2024.08.22. Kép.jav. + elírások
- balagesz blogja
- A hozzászóláshoz be kell jelentkezni
- 6151 megtekintés
Hozzászólások
*respect*
- A hozzászóláshoz be kell jelentkezni
respect
- A hozzászóláshoz be kell jelentkezni
Befosok oO
A 99%-át ugyan nem értem, de egy valami világos: itt egy old school, profi hardware HACKER-rel van dolgunk, a szó minden értelmében!
Respect!
----------------------------------------------------------
"One should strive to achieve; not sit in bitter regret."
www.xonotic.org
- A hozzászóláshoz be kell jelentkezni
fszom bele ;) kedvet kaptam egy ilyen rovathoz modern hardverekkel...
még egy kicsit iszok és félmiskás notebook fúrok-faragok rovatot indítok :) bár nem hiszem, h érdekes lenne basszameg itt a menő a 80e Ft-os cucc.
viszont ha GBA-n úgy tolom majd a Doom-ot vagy DN3D-t, h háttérfényt teszek a kijező mögé, akkor mindenképp jelentkezem!
egyébként meghajolok mester, főleg, hogy 2Ft-ot nem tettem volna rá, h hibátlanul működik! ez fsza!
--
Vége a dalnak, háború lesz...
- A hozzászóláshoz be kell jelentkezni
Ez pont egy olyan "projekt" volt, amirol ha elore tudom, mennyi reszevel lesz gond, neki se allok. (Ilyenkor jo az, hogy az ember nem jos.) A felmerult problemak toredeket irtam csak le, igy is sok lett... (A kedvencem a RESET eseten rosszul beallitott irasengedelyezo bit, amivel minden inditaskor felul sikerult irni a lemezen azt a savot, amin a fej eppen allt. :) Szerencsere az 1551 gyorsan formaz.)
- A hozzászóláshoz be kell jelentkezni
Biztos ismered a Dezz féle készülő Scanjuggler XAga-t. Neked is valami ilyesmi cuccot kéne fejlesztened, amivel még esetleg egy kis pénzt is tudnál keresni.
----
www.retrocomputer.tux.hu
www.sfveteran.hu
- A hozzászóláshoz be kell jelentkezni
Azt sejtem, hogy "rossz platformot" valasztottam... Ha mondjuk C64-et / AMIGA-t farigcsalnak, egy-egy hardverre tobb potencialis ugyfelet szerezhetnek, mint a plus/4 eseten. Ez igy van. Viszont a C64 maga nem vonz (ott amugy is rengeteg jo hardveres keszit "csuda dolgokat", szo szerint), az AMIGA meg szamomra igazabol "ismeretlen terep" (annak ellenere, hogy a hardver reszerol azert eleg sokat tudok). Programozni pl. meg nem programoztam AMIGA alatt. (A 68k amugy rulez... :) )
De erdekes am az otlet...
- A hozzászóláshoz be kell jelentkezni
Le a kalappal:)
Én is gondolkodtam kb. 10 éve 1551 helyettesítésén,
akkor hamvába halt az ötletem, amit most vettem elő
hasonlóan mint a commodore16-ot és plus4-et:))))
Én most azon gondolkodtam, mi lenne ha egy 20 vagy 40MHz-es
mikrovezérlő lenne ráakasztva a c16/plus4 buszaira,
és abban lenne a teljes floppy emuláció meg hozzábiggyesztve egy SD kártya.
- A hozzászóláshoz be kell jelentkezni