Bygga en egen C64, ideer?

Planering och tankar kring eventuella framtida projekt.
guckrum
Inlägg: 1671
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: Bygga en egen C64, ideer?

Inlägg av guckrum »

Det mesta är möjligt. Hur långt tänker du dra det? Programmerbar logik typ PAL eller FPGA, eller bara diskreta 74-kretsar? En FPGA kan ju rymma allt från lite adressavkodning till "hela" datorn.
ASEA
Inlägg: 644
Blev medlem: 11 januari 2015, 14:07:27

Re: Bygga en egen C64, ideer?

Inlägg av ASEA »

Det blir i huvudsak med "vanliga" C64-kretsar.

C64-DTV är intressant. Hade en sån när de kom ut men gjorde aldrig några hårdvaruhack med den.

Det är ju PAL original i en C64 för adressavkodning och minneshantering.
Jag tänker använda den sista versionen kallad "superPAL" där man i större mått integrerade funktionen från tidigare C64 PALs och runtom-logik i ett enda 64 pin chip, 1.27mm benavstånd. Ett av de chip jag inte har, så det måste inhandlas.
MiaM
Inlägg: 9912
Blev medlem: 6 maj 2009, 22:19:19

Re: Bygga en egen C64, ideer?

Inlägg av MiaM »

Som redan nämnts så sitter alla ROM på samma buss, men kernal/basic läses normalt under processorns halvcykel medan char rom oftast läses under grafikkretsens halvcykel.

Misstänker att alla kort Commodore gjorde hade separat char rom för att det inte lönade sig att tillverka en 20kbyte ROM-krets. Lite förvånansvärt faktiskt eftersom de gjorde så enormt många C64-ROM att det i princip borde lönat sig att göra en applikationsspecifik krets. Fördelen med att ha två separata kretsar är väl dock att ifall de skulle haft produktionskapacitetsbrist i sin egen fabrik så hade de kunnat köpa ROM utifrån. Dessutom hade det kanske blivit krångligare att göra landspecifika versioner. Vet inte hur det var med C64 under senare år, men C128 hade vanliga EPROM för att få de olika europeiska tangentbordslayouterna. Dessutom satt ett adapterkort mellan char rom och tillhörande sockel, detta kort flyttar en adressledning så att man växlar layout med ascii/cc-knappen istället för som på amerikansk C128 växlar mellan C64-specifik och C128-specifik font. På tidiga C64 så tror jag det faktiskt användes maskprogrammerade ROM för svenska tecken, men jag kan minnas fel.

***************

Lätt att blanda ihop snarlika beteckningar, det är PLA och inte PAL i C64. Eller mer exakt, de absolut första C64 har en äkta PLA, 82S100 eller vad de nu heter, medan ganska tidigt efter produktionen dragit igång så gjorde MOS/Commodore en applikationsspecifik krets som inte alls är programmerbar och som enbart används istället för en PLA i C64. Denna kallas dock PLA av "alla" eftersom schemat och manualerna kallar den PLA.

Om ett C64-moderkort blir för stort, vad har du annars tänkt för tangentbord? Min åsikt är att det är helt värdelöst att använda något annat tangentbord än ett C64-mässigt för att köra mot en C64 eller liknande. Problemet är att ett typiskt PC-tangentbord har för få tangenter i den alfanumeriska delen, varpå vissa tangenter måste mappas på andra ställen. Det är väl helt okej att mappa vänsterpil som skift och nerpil samt högerpil som upp/ned och vänster/höger, men när man mappat home som clr/home och backspace som inst/del så sitter man där med ett par fler knappar för skiljetecken som inte riktigt hittat nåt bra hem. Rekommenderar att faktiskt göra ett kretskort och löda in mekaniska switchar eller återanvända ett C64/C128-tangentbord.

Sidospår: Om man ska emulera en C64 på en modern dator blir det ännu värre för få om någon orkar väl ordna klisterlappar för vilken tangent som gör vad, och iaf VICE kan inte visa "skärmtangentbord" för att visa vilken PC-tangentbordsknapp som ger vilket tecken på en C64. Det lär funka hyggligt om man har amerikansk PC och amerikans C64, men kör man t.ex. svensk så får man prova att trycka på random knappar till man hittar det tecken man letar efter. Det går för att prova enklare grejer men svårt i andra fall.

Som sidospår så finns ju detta med olika layouter som problem än idag. Modden "Network multi tool" till Cities Skylines har som default om jag minns rätt tangentbordsmappning som inte fungerar fullt ut om man har svenskt tangentbord. Problemet är väl ungefär att spelet och config för att välja tangentmappning i moddar använder skrivbara tecken medan de tecken som valts går inte att "skriva" eftersom de kräver att man håller inne skift vilket påverkar funktionen på modden på annat sätt. (Fritt ur minnet, kan minnas fel).
ASEA
Inlägg: 644
Blev medlem: 11 januari 2015, 14:07:27

Re: Bygga en egen C64, ideer?

Inlägg av ASEA »

Tack MiaM, informations- och lärorikt som vanligt! :tumupp:

Själva datorn blir i en fyrkantig kloss = typ PC desktop format (tänk C128D i miniformat).
Lagom kompakt utan att bli allt för svårmekat och som man kan ha på skrivbordet tex under en monitor.
De mekaniska komponenterna dikterar i stort yttermåtten. Men målet är mellan 25-30cm djup och bred och ca 10cm hög.
Översta halvan kommer innehålla floppyn och ev datassette och undre halvan moderkortet och nätagg. Det är planen iallafall.
Cartridgeport och joystickportar på framsidan.

Angående moderkort;
Antingen göra ett eget eller använda nån färdig kompakt layout som nån annan gjort. Har ju tex gjorts en mängd portabla C64 och andra kompakta modeller i modern tid och som använder vanliga C64 kretsar. SuperPLA, ihop med SRAM och all ROM-kod i ett enda EPROM skalar ner storleken rätt markant. Inte helt nödvändigt att portar och annat sitter på exakt rätt ställe då detta går routa om med kablar internt i boxen.

Angående tangentbord;
Ja, alltså jag har nog tänkt om lite angående att använda PC-tangentbord. Just nu lutar det åt att faktiskt använda ett vanligt C64 tangentbord.
Men trådlöst och så kompakt som möjligt = alltså inte i original C64 låda utan nåt eget. Bluetooth?
MiaM
Inlägg: 9912
Blev medlem: 6 maj 2009, 22:19:19

Re: Bygga en egen C64, ideer?

Inlägg av MiaM »

Det kanske finns nåt tangentbord som har typ nån extra rad med tangenter till höger om ordinarie, typ sånt tangentbord som varken har numpad eller pilar&co-delar utan en slags ihopkrympt grej för pilar och alla insert/delete/home/end/pgup/pgdn&co ihopsatt med ordinarie tangenter. Return kommer ju då komma till vänster om knappar som den egentligen ska vara till höger om, och detsamma för backspace, men det lär åtminstone gå att komma lite närmare.

Vet inte vad det finns för lösningar för att köra BT-tangentbord mot en fysisk C64.

Jag har inte följt utvecklingen men idag lär det finnas moderna ersättare för CIA-kretsarna. Det kanske kan vara läge att featurecreepa en del så att du har nån modern mikrokontroller som tar emot tangentbordsdata (och kanske joystick? och musemulering?) via blåtand eller USB eller PS/2 och som helt enkelt känner av vad C64-processorn skriver till CIA-utporten för tangentbordsmatrisen och då lägger ut matchande data på CIA-inporten för tangentbordet, istället för att behöva emulera en full XY-matris?

Behovet att emulera mus är väl antagligen inte så stort, men om du vill göra det så lär väl 1531-musen dels ha ett läge där den bara emulerar att man rör en joystick, lätt att emulera, men också ett läge där den emulerar två paddles som rör sig mellan ändlägena. Om jag fattat rätt så läser SID av paddles genom att mäta hur lång tid det tar att ladda upp/ur en konding (per paddle) så eventuell mikrokontroller som emulerar detta skulle kunna läsa av dessa pinnar och efter en mjukvaruställbar tid ge reaktion tillbaka till SID. Alternativet är ju en digitalt styrt potentiometer, inte så svårt att göra med tanke på att ena änden går mot +5V så det räcker med ett gäng opencollector-PNP-steg med motståndsstege som motsvarar en DAC. Misstänker att man vill nog ha fler än åtta bitar, dels så vet jag inte om avläsningen är linjär eller logaritmisk eller nåt annat och dels lär ju stegen ändå inte exakt matcha de åtta bitar som SID ger som resultat.

Eller så gör du helt enkelt så att din PLA-ersättare avkodar läsning av paddleregistren till annan krets där du bara presenterar värden från musemulering.

Vet inte hur musknapparna är kopplade när man emulerar paddles. Ingångarna som är höger- och mittenknapp på t.ex. en Amiga är ju samtidigt de två paddlesingångarna.
Bonus: I princip skulle du också kunna ha nån elektronik som håller koll på skärmposition hos VIC-kretsen och emulera ljuspenna. Behovet för detta är väl minimalt dock, men ändå.
ASEA
Inlägg: 644
Blev medlem: 11 januari 2015, 14:07:27

Re: Bygga en egen C64, ideer?

Inlägg av ASEA »

Ja, det är lite att undersöka och fundera på. Finns en del färdiga lösningar om man googlar, iallafall när det gäller tangentbordet.

En "cross switch array"(svenskt namn?) som man styr med en mikrokontroller verkar var det vanligaste och enklaste för att emulera tangentbordet. Joystickarna på C64 går väl på samma signaler som tangentbordet!? Förutom potx och poty då.

Var det inte någon här på forumet som gjorde nån liten och väldigt elegant lösning för trådlös joystick till C64:an? :humm:

Intressant om musen, jag har en sådan liggande som jag aldrig använt tror jag. Har man tänkt köra GEOS, ritprogram eller dyl så kan det ju vara trevligt med mus.
Det har ju släppts nåt nytt grafiskt OS till C64 på senare tid också.
Om jag fattat rätt, efter snabbkoll i manual:
I analog mus-mode så används "joystick upp" som högerknapp, den vanliga fire-knappsignalen som vänsterknapp.

Ljuspenna hade varit kul, men tror det är svårt att få fungera med LCD monitor.
Med det sagt så verkar det som man på NES och SMS har fått det att fungera med nån slags ändring eller tillägg i spelkoden(aka en patch), men funkar inte med alla ljuspistoler.
MiaM
Inlägg: 9912
Blev medlem: 6 maj 2009, 22:19:19

Re: Bygga en egen C64, ideer?

Inlägg av MiaM »

Menar alltså att man skulle kunna använda en mus för att emulera ljuspenna. Eftersom hårdvaran för detta ändå måste veta exakt när VIC-II-kretsen skickar ut vilken position på skärmen så att säga så kan man låta denna emuleringshårdvara också valbart visa en primitiv "muspekare" om man behöver kunna sikta så att säga.
ASEA
Inlägg: 644
Blev medlem: 11 januari 2015, 14:07:27

Re: Bygga en egen C64, ideer?

Inlägg av ASEA »

Det får bli överkurs 3.0, hehe! :)

Satt och funderade lite på hur läsning av joystickportarna går till på 64:an.
Ena joyporten är ju kopplad till vad som används som utport för tangentbordsmatrixen.
Så hur läses den joysticken av?
Ändras den tillfälligt till inport eller hur ser dessa kernelrutiner ut på maskinnivå?
c64-schematic-2-768x595.jpg
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
MiaM
Inlägg: 9912
Blev medlem: 6 maj 2009, 22:19:19

Re: Bygga en egen C64, ideer?

Inlägg av MiaM »

Kernel/Basic "förstår" nästan ingenting om grafik+ljud på en C64. Det enda de kan göra är dels att initialisera allt så att ljudkretsen håller tyst och att bildkretsen ställs för mörkblå bakgrund, ljusblå ram, 40*25 tecken (det går också att få 38 eller kanske 39 per rad samt 24 rader, används ihop med scrollregistrena för att mjukscrolla saker in/ut), skärm påslagen, skrämminne på adress 1024 och teckenminne pekande på rom för stora bokstäver och alla grafiktecken. Sen kan Kernal också slå av/på skärmen när den bitbangar bandspelarporten, och den kan också växla mellan de två teckenromvarianterna, stora bokstäver + alla grafiktecken eller stora+små bokstäver och bara vissa grafiktecken.

Alla andra grejer som att spela ljud och läsa av joysticks måste helt göras av annan kod. Och som du antar så växlar man riktning på tangentbord-utporten för att läsa av ena joysticken.

Sidospår: En i mitt tycke extremt märklig grej är att det aldrig verkar ha funnits numeriska tangentbord för C64 som ansluts i joystickportarna och inte behöver mjukvara. Om man tittar på hur tangentbordsmatrisen ser ut och vilka ledningar som delas med joystickportarna så ser man tydligt att bl.a. alla siffror och några fler lämpliga tangenter går att emulera via joystickportarna. Ett tydligt tecken på att konstruktörerna planerade detta är att de växlade ett par ledningar mellan I/O-portar och tangentbord jämfört med VIC 20 som i övrigt har identiskt tangentbord. Hade de inte växlat dessa ledningar så hade det antingen inte gått att hänga på numeriskt tangentbord på joystickportarna eller så hade joystickportarnas portbitar varit ologiskt utspridda, och dessutom olika för de båda joystickarna.

Sidospår: Även om det går att simulera ganska många tangenttryckningar via joystickportarna så verkar det inte gå att simulera tillräckligt många olika tangenter för att kunna mata in och köra kod. D.v.s. det går inte att göra nån slags autostart/autoinmatande pryl via dessa portar för att t.ex. kunna dumpa in kod i en C64 eller få den att autostarta grejer från diskdrive/band.
Findecanor
Inlägg: 982
Blev medlem: 2 juli 2010, 23:04:07

Re: Bygga en egen C64, ideer?

Inlägg av Findecanor »

MiaM skrev: 15 maj 2023, 16:47:01 Sidospår: En i mitt tycke extremt märklig grej är att det aldrig verkar ha funnits numeriska tangentbord för C64 som ansluts i joystickportarna och inte behöver mjukvara. Om man tittar på hur tangentbordsmatrisen ser ut och vilka ledningar som delas med joystickportarna så ser man tydligt att bl.a. alla siffror och några fler lämpliga tangenter går att emulera via joystickportarna.
Intressant. Jag har skrivit om sex olika numeriska tangentbord-varianter på joystick-portarna i en wiki-artikel, men inte den varianten. Kommer du ihåg något namn för mig att googla på så jag kan läsa mer?

Annars är C64 ökänt för att kunna bränna ett CIA-chip om man stoppat in en Mega Drive - gamepad: ett problem orsakat av att joystick-linor används till tangentbordet, och gamepad:en har egna pullup-motstånd och därför alltid strömsätter porten vilket en passiv joystick inte gör.
Gamepad'arna funkade ju OK med praktiskt taget alla andra retro-datorer med Atari-joystickportar, bara inte C64. :cry:

Man kan skydda portarna genom att sätta dioder på input-linorna, men då skulle de nog inte funka med just det där numeriska tangentbordet.
MiaM
Inlägg: 9912
Blev medlem: 6 maj 2009, 22:19:19

Re: Bygga en egen C64, ideer?

Inlägg av MiaM »

Findecanor: Det verkar alltså aldrig ha funnits nån sån produkt, även om datorn sannolikt är konstruerad för att det ska gå att göra en sån produkt.

Sidospår: Tack för att du pekade mig till den artiklen. Genom att random läsa på om möss och trackballs så inser jag att den japanska trackball jag loppisfyndade på 90-talet går att använda med adapter på C64 med mjukvara passande NEOS Mouse.

Sidospår på sidospåret: Den som skrivit C64-wiki-artikeln om NEOS Mouse har uppenbart inte engelska som modersmål, och sannolikt inte något annat germanskt språk. Är det franska som modersmål som gör att man råkar skriva lecture istället för conductor/wire? :D
BJ
Inlägg: 8185
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Re: Bygga en egen C64, ideer?

Inlägg av BJ »

MiaM:
Det klassiska att använda till Neos-möss är ju
ritprogrammet Cheese. :) Dom såldes tillsammans,
mus och band.
ASEA
Inlägg: 644
Blev medlem: 11 januari 2015, 14:07:27

Re: Bygga en egen C64, ideer?

Inlägg av ASEA »

Intressant iakttagelse MiaM angående numeriskt tangentbord på joystickportarna. Hade varit en trevligt tillbehör när det begavs sej. Kanske i en liten låda man pluggade direkt i sidan på C64:an innehållande den numeriska delen och som då också skickar vidare joystickportarna. Ja, varför har ingen tänkt på/tillverkat detta?
Extra najs vid programmering.

Det är nog en NEOS-mus jag har (inte 1350), verkar som de inte stödjer analog mode. :humm:

Tangentbordskontakt och joystickportar kommer jag nog lägga på en separat liten kort. Då kan man lätt plocka ur och vidareutveckla detta när man vill.
Trådlöst, PS/2, portswitcher och whatever.

Bra Findecanor att påminna om faran med megadrive kontrollers. Jag har faktiskt nån trådlös sådan, hmm kanske skulle man använda en sån(med dioder)?
Skriv svar