Viser innlegg med etiketten Pi1541. Vis alle innlegg
Viser innlegg med etiketten Pi1541. Vis alle innlegg

mandag 6. august 2018

Pi1541 for bruk og misbruk

Pi1541, den tingen jeg har dedikert de siste månedene til - for hvem vil vel ikke ha en moderne løsning for SD-basert lagring på sin Commodore 64? Vel, glem de SD2IEC-sakene - denne fungerer langt bedre og med tanke på at det er en ting man putter på toppen av en Raspberry Pi 3B så er den også enklere å skru sammen selv. Ikke at det er så veldig kult med prototyper etter noen timer med bruk, men har laget meg noen PCB-er som jeg isteden bruker for å gjøre koblingene mellom min Commodore 64 og den allerede så berømte Pi-en.

Jeg vet at det er dårlig stil å beskrive funksjonen til et produkt ved å rakke ned på noe annet, selv om det er den borgerlige måten å gjøre ting på - så da gjør vi det! Den tingen jeg aldri fikk kontroll på ved bruken av SD2IEC-enhetene mine, var hvordan i svarte man skal få til bytte av disketter? Jeg har lest manualen, jeg fikk det til et par ganger og siden har jeg glemt hele greia - ble bare altfor for mye knoting frem og tilbake...

Pi1541 løser dette ved å gi en alt det man trenger av informasjon via andre visninger, enten via HDMI-tilkoblingen fra Raspberry Pi eller via et kompatibelt LDC-display koblet til via I2C slik de jeg har montert på mine (nedenfor til høyre). Ved bruk av flere disketter så legger man dem først til på listen før man går over til emuleringsmodus ved bruk av knappen helt til venstre, man legger til en fil ved bruk av Add-knappen lengst til høyre. Via HDMI ser man listen direkte på skjermen, på LCD-displayet vil man se noe slikt som y> der y er selve diskett-nummeret.


Når man er fornøyd med listen går man over til emuleringsmodusen, fra dette tidspunktet så vil den automatisk presentere den første disketten i listen ut til Commodore 64. Fra dette punktet så kan man bruke knappene for Back og Next for å veksle mellom hvilken diskett som skal være i selve diskettstasjonen. Begge visningene vil indikere hvilken diskett som er valgt, men foretrekker selv det eksterne LCD-panelet siden man slipper å endre input på TV-en. Bruken utover dette er som tidligere nevnt helt identisk fra Commodore 64-siden med den fysiske diskett-stasjonen, men tok noen bilder under innlasting av Test Drive fra Accolade slik at man får et litt bedre inntrykk av løsningen:



Det siste bildet var selvsagt bare for å skryte, er noen år siden jeg klarte å overleve helt frem til bensinstasjon #2 så den måtte bare inn en eller annen plass! Ikke rart det går sakte å skru sammen kortene når man insisterer på en full spille-økt for å teste hver av dem...

søndag 5. august 2018

Pi1541 PCB revisjon B

Har så smått fått skrevet inn noen små snutter om Pi1541, generelt sett en måte der man kan få en Raspberry Pi 3B eller 3B+ til å oppføre seg som om den var en helt ordinær 1541-diskettstasjon for bruk på en Commodore 64/128. Innlegget Pi1541 Emulering av diskettstasjon burde vel egentlig hete Hvetebolle rabler om noe hjemmesnekret elektronikk for å koble en Raspberry Pi til en Commodore 64, men det ble noe i det lengste laget. Resultatet; versjon A av denne PCB-en!

Den korte forklaringen hvorfor jeg rett for sommerferien laget en revisjon B av kortet, noe som tittelen allerede har grundig avslørt omhandlet orienteringen av OLED-panelet - dette ble stående 90 grader i forhold til knappene. Fungerte i praksis overraskende godt siden man da kunne orientere IEC-kablene vekk fra seg, men som den perfeksjonisten jeg er så ville jeg ha muligheten til begge deler. For å styrke opp under panelene på 128x64 så flyttet jeg samtidig 7406 IC-en slik at denne holder oppe den ene enden av skjermen.

Selv om man allerede kunne skule ut fra innlegget Pi1541 Firmware og oppgradering så ser man at den første versjonen av PCB-en ble påbegynt før programvaren støttet eksterne skjermer, derfor tok jeg også utgangspunkt i at en vanlig OLED på 128x32 sikkert skulle passe og PCB-en var lagt opp deretter. Har i mellomtiden samarbeidet med Steve White for å legge til støtten for disse, fra versjon 1.10 så er begge variantene fullt støttet så da passet det seg bra at jeg også fikk inn en ny versjon av PCB-en med støtte for begge.


Har fortsatt noen få av revisjon A liggende som jeg må få overlevert nye eiere før revisjon B loddes ferdig sammen i og med at de på den elektiske siden av ting er tilnærmet identiske, men noen prøveutgaver har det blitt likevel. En del arbeid med slikt, men det er morsom likevel og så får man et innblikk i Commodore 64-miljøet rundt om kring i Norge.

Lurer på om at siden dette er teknisk tegning, vil ikke det da si at resultatet er kunst? Hvis en profesjonell kunstner må ha solgt noe, så må jeg da være litt kunstner? Bittelitt, om man strekker ting heeeeelt ut til kanten, men så blir det mer gøy med bytte enn betaling så hender det at man ender opp med en og annen godbit i retur også. Se finn.no for annonse om du vil sponse en fattig bittelitt-kunstner med moderate håp for innlemmelse i kunstner-lauget. Finnes dem? Sikkert, men tror ikke dem slipper meg inn. Sikkert litt for mye rasjonell ingeniør-hjerne, vanligvis å finne under det jeg har igjen av hår (la oss kalle det en moderat mengde)!

Selvsagt, så innser jeg nå at teksten Pi1541 på undersiden av PCB-en sikkert skulle vært flyttet slik at den var mer synlig. Hadde sikkert sikkert sett heeelt perfekt over URL-ene nederst... må motstå fristelsen for å lage en revisjon C, ville i så fall kun vært for å godgjøre noen stadig voksende tvangstanker!

lørdag 28. juli 2018

Pi1541 Programvare og konfigurasjon

Har brukt de siste månedene, i alle fall litt av den ledige tiden de siste månedene, på å fikle med min Pi1541. Den er en utvidelse som plugges på Raspberry Pi 3B eller 3B+ for å gi den muligheten til å late som om den er en 1541-diskettstasjon sett fra en Commodore 64. Selve maskinvaren har jeg skrevet en del om allerede, selve programvaren har Steve White stått for og til å være så tidlig i utviklingsløpet så har den allerede støtte for det aller meste man kunne komme til å trenge.

For å komme i gang trenger man et SD-kort som skal plugges inn i Raspberry Pi-en, dette må være formatert med filsystemet FAT32 - noe som vil si at så lenge man ikke eksplisitt har gjort noen forsøk på å endre på kortet ut av pakken så skal det fungere helt fint. Størrelsen er opp til en selv, men dette er ikke spesielt kravstore systemer og vil tro det billigste du får fatt i (mest trolig 16 GB) likevel vil kunne holde på så og si alt noensinne produsert for datamaskinen. Deretter følges følgende steg:

  • Last ned siste versjon av firmware til Raspberry Pi fra produsenten, kopier filene bootcode.bin, fixup.dat og start.elf fra boot-katalogen til roten av SD-kortet.
  • Last ned Pi1541.zip fra hjemmesiden, pakk ut alle filene til roten av SD-kortet.
  • Neste steg er selve firmwaren til en 1541-diskettstasjon, den enkleste måten å få tak i en kopi av denne er å gå til nedlastingssiden for Commodore 64-emulatoren VICE, last ned en installerbar kopi eventuelt bare kildekoden øverst på siden (.tar.gz-filer kan enkelt åpnes ved bruk av 7zip). Uansett, kopier filen dos1541 fra katalogen data\DRIVES til roten av SD-kortet.
Alt skal nå være ferdig oppsatt for bruk, stapp det du eventuelt trenger av programvare-filer (d64-format) i katalogen 1541 for å ha disse tilgjengelig under bruk. Likevel så er det mye man kan konfigurere slik at man får oppsettet akkurat slik man ønsker å ha det, disse endrer du ved å redigere på filen options.txt som nå ligger på SD-kortet. Uansett så har du nå oversikten over hvordan man oppgraderer de ulike delene, men husk at det kan være en god ide å lese gjennom konfigurasjonen som følger med de nye versjonene ettersom ting kan ha endret betydning eller format.

Oppsett av display slik de modulene jeg har solgt til en håndfull heldige personer er litt mer komplisert og krever en del teknisk informasjon om selve modulenes adresser - disse står ofte også på selve kortene og i tillegg må man ha oversikt over hvilken kontroller som står på LCD-modulen. Legger ut oppdaterte versjoner av filene jeg bruker på min dropbox, så skal det være enklere å håndtere disse uten å studere alle finurlige detaljer.


Som man kan se av bildene over så har jeg prøvd ut to ulike skjermer, begge er basert kontrolleren SSD1306 og er svært lik utover orienteringen - det som skiller seg er antallet linjer med kun 2 for det minste. I praksis så er det fint med den ekstra oversikten man får ved å bla i lange lister med 4 linjer tilgjengelig, men det minste er langt raskere i bruk siden det er mindre som må tegnes opp. Den første konfigureres som ssd1306_128x64 mens det minste er ssd1306_128x32.

Den detaljen som sikkert kommer til å påvirke en mest under bruk er nok deviceID, som standard benyttes 8 - det er den samme 8 man kjenner igjen fra kommandoen load "$",8. Bruk av noen andre innstillinger var og er kun relevant med de som har mer enn en diskettstasjon, generelt sett fordi så mye av programvare/spill er hardkodet til å se etter filene sine på enhet 8 - med andre ord så vil man sjeldent kunne laste inn noe fra andre enheter!

Det var vel det, ikke så veldig mye om praktisk bruk denne gang - kanskje neste gang jeg får ånden over meg til å feste noe til papiret (skjerm?)...

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...