onsdag 25. juli 2018

Pi1541 Emulering av diskettstasjon

Man har nostalgi for det meste fra barndommen vår, men når man omsider blir gammel så har man ikke lenger hverken tålmodigheten eller tid nok til å laste inn ting fra kassett. Derfor så har utallige frivillige folk med langt mer innsikt i elektronikk enn det jeg kunne håpe på å en gang akkumulere, satt hodene sine sammen for å lage løsninger som laster inn alt fra SD-kort (eller tilsvarende) på noen få øyeblikk.

Commodore 64/128 fikk dermed sin SD2IEC etter noen år, denne er ment å emulere en 1541-diskettstasjon og kombinert med enten JiffyDOS eller noe slikt som Final Cartridge 3 så er innlastingstiden håndterbar. Bakdelen er at den ikke fungerer, i alle fall på alt for mye det jeg prøvde å laste inn via den - hvorfor? Årsaken ligger i at den originale diskettstasjonen er en tilnærmet komplett Commodore 64 i seg selv, mange spill og programmer laster opp egen programvare som skal kjøre på den og en SD2IEC er ikke stand til å gjøre noe med den koden - den gjør bare de grunnleggende tingene, resten forstår den seg enten ikke på eller så gjetter den bare på hva datamaskinen vil at den skal gjøre!

Løsningen på dette er en enhet som er i stand til å emulere diskettstasjonen i seg selv, den første av disse er den FPGA-baserte 1541 Ultimate II som med en med en ventetid på rundt 6 måneder og en prislapp på rundt 2500 kr etter import ble uaktuelt for min del. Kanskje hvis jeg kun fokuserte på Commodore-maskiner, men som du kan se av oversikten så har jeg ikke helt klart å begrense med til en produsent. Den andre løsningen er programvare som kjører på en Raspberry Pi 3B eller 3B+, Pi1541 av Steven White og det eneste man trenger i tillegg er en måte å få koblet til kablene.

Option B, fra https://cbm-pi1541.firebaseapp.com/

I utgangspunktet så lister nedsiden opp to alternative modeller, A og B, som rimelig enkelt kan snekres sammen på kjøkkenbenken med et lite utvalg komponenter av typen. A er det første utkastet som ble lagt ut, men denne har en del elektriske forenklinger som gjør at denne ikke er i stand til å fungere sammen med en annen fysisk diskettstasjon. Hvorfor det da? Fordi dette er 5v TTL-basert logikk og under bruk så er det mye strøm som passerer mellom dem, den vil fungere en stund og så kommer noen av komponentene på Pi-siden av ting til å begynne å smelte. B-modellen, den jeg dermed vurderte som det eneste fornuftige alternativet løser dette ved å bruke en 7406 chip - denne har som hensikt å tåle denne belastningen, selve designet skal være hentet rett ut av skjemategningen til den originale diskettstasjonen.

Personlig så liker jeg ikke å lodde sammen ting på perf-board, kretskort for prototyping, når jeg ser for meg bruk av det man skal lage i etterkant så ender de opp med å bli litt for skjøre i bruk så da foretrekker jeg heller å bare tegne dem opp i KiCad eller annen egnet programvare og så ta tingene derfra. Se til høyre for den elektriske skjemategningen jeg endte opp med, for det meste identisk med B-modellen bare at jeg la til en ekstra DIN-kontakt for å kunne koble på flere enheter på IEC-bussen uten bruk av splitter-kabel. Vel, det og så tenkte jeg at før eller siden så måtte noen finne på å legge til et LCD-display så da designet jeg inn denne tilkoblet I2C-bussen på Pi-en.

Uansett, med litt ukonsentrert tegning, form og farge så fikk jeg til slutt det som skulle kunne bli til et kretskort. Tok noen snarveier underveis ved å ta utgangspunkt i en mal for Raspberry Pi-moduler, såkalte Pi-hats, så da slapp jeg å selv fundere ut plasseringen av skruhullene og matche pluggene opp mot selve Raspberry Pi 3B-kortet. Kretskort først som sist med andre ord! Ja, man må til Kina for å få disse tingene gjort innenfor private budsjetter og så må man bare smøre seg med tålmodighet!



I skrivende øyeblikk så er det nå et par måneder siden bestilling, mesteparten av tiden brukt på å skru sammen kortene og leke seg med dem. Kun avbrutt av et par uker ferie i syden, sånn som må til for å overleve vinter/sommer her nord! Tilbake til dagens tema, kortene endte opp med å se ganske bra ut og i mellomtiden har den programvaren også fått lagt til støtte for I2C display basert på SSD1306-kontrolleren - den typen jeg allerede har liggende en liten haug av, awesome!

Strengt tatt så la jeg inn plass på kretskortet for varianten av størrelsen 128x32 mens den som til nå støttes er 128x64, så ikke full klaff på første forsøk - likevel så er sikkert støtten rett rundt hjørnet, i mellomtiden så fant jeg ut at den litt større varianten også fungerer fint selv om orienteringen ikke stemmer helt overens med knappene - måtte bare droppe DIP-socketen for 7406 chippen og legge inn ekstra avstand på pinnene til displayet for å gå klar av brikken.

Siden jeg endte opp med langt flere moduler enn jeg selv skal kunne makte å bruke på et og samme tidspunkt og allerede har en bøtte med reservedeler, så tenkte jeg at resten fint kunne selges via finn.no slik at andre også kunne få ta del i det siste og råeste innenfor Commodore-teknologi! Ikke alle som trenger display eller to IEC-utganger så endte opp med å lage en begrenset utgave og en komplett utgave av kortet slik at det ble en litt billigere variant å velge mellom. Ser ut til at alle jeg har solgt er av den komplette varianten, men sikkert fint å ha noe å velge mellom.


En ting jeg ikke hadde kalkulert med når jeg vurderte å legge noen av disse ut for salg var kvaliteten på delene som man får tak i, det er ingen problemer når man skal lage en av noe ettersom man alltid får langt mer enn man trenger - prøver man derimot å lage 10 av dem siden det var den mengden kort jeg har, så vil man finne feil.

I2C level converteren jeg brukte var den samme som på hjemmesiden, men fant ut at et par av dem hadde svakheter og måtte byttes ut med mye banning til grunn - kunne greit nok testes først ved å sette multimeteret på 200k Ohm og så sjekke at man fikk rundt 136K mellom hver av de fire kanalene. 7406-modulen var litt verre siden komponent-testeren jeg har ikke har hørt om denne brikken, bakdelen med å holde på med 40 år gammel teknologi - denne måtte testes på et av kortene og de som ikke fungerte enten førte til at Commodore-maskinen låste seg ved lesing eller så rapporterte den Device not present. Kastet rundt 8 av 10 brikker av varianten SN7406N, men av de dyrere jeg fikk fatt på stemplet 7406PC så fungerte alle av dem uten problemer - enten så var det første settet av dem grillet under transport (ingen anti-statisk pose, noe som er vanlig fra ebay dessverre) eller så var de bare langt skjørere og rett og slett ikke håndterer den rå kraften som er å finne i C64-maskinen!

Nok om maskinvare-siden av ting, det er programvaren som er den spennende delen av alt dette...

Ingen kommentarer:

Legg inn en kommentar