Hoppa över logotypen.

Vad gör vad i din VIC-64?

Av Lars Hägglund, Åke Nordin.
Foto: Lars Hägglund.
Ur: Allt om Hemdatorer 2 1984.

Denna bilaga berättar hur en VIC-64 ser ut inuti, och varför den ser ut som den gör. Undrar du över vad en VIC-krets är? Eller är du nyfiken på VlC-64's mikroprocessor? Eller är du kanske bara nyfiken på vad en bättre hemdator kan vara för ett djur? Här får du svaren!!

ROM, RWM, MPU, PLA, SID, CIA... En dator är sammansatt av många olika byggstenar, och alla betyder de något särskilt för datorns funktion. Artikeln bygger på hemdatorn VIC-64, som beskrivs ingående.

Men - alla marknadens datorer innehåller liknande byggstenar och även om de inte kallas samma sak så skiljer sig datorernas uppbyggnad åt endast i detaljer.

Vidare förklaras vad det är som gör en dator till en dator, liksom vad Basic är och vad en del vanliga, kryptiska förkortningar betyder. Runt en bild på datorns inre berättas vad alla kretsarna har för uppgift. Några speciella kretsar förklaras ingående på egen plats.

Mikroprocessorn

Mikroprocessorn är den krets runt vilken hela datorn är uppbyggd. Man kan kalla den för "Datorn i datorn" eftersom mycket av datorns uppbyggnadssätt går igen i hur mikroprocessorn är uppbyggd. I stället för Basictolk har den en tolk för maskinspråket.

Det är processorn som utför det egentliga arbetet i datorn. Den kör programmet i datorn, det innebär vanligen Basictolken och det program vars Basicinstruktioner tolken bryter ned till maskininstruktioner.

Observeras bör att mikroprocessorn bara kan köra program skrivna i maskinspråk. Det innebär praktiskt att när man vill använda så kallade högnivåspråk, typ Basic, Pascal eller Forth, så måste språket tolkas.

VIC-64:s processor är av typen 6510. Den har 8 bitars databuss och 16 bitars adressbuss, vilket är ojämförligt vanligast idag. 8 bitars databuss innebär att den hanterar heltal mellan 0 och 255 i en enda operation, eller att den arbetar med ett grafiskt tecken i taget. Ett tecken på skärmen beskrivs i datorn med precis 8 bitar.

16 bitars adressbuss innebär att den klarar att adressera 6536 (64 k) olika minnesceller i en operation.

6510 är en vidareutveckling av en mycket vanlig mikroprocessor som betecknas 6502. 6502 sitter i bland annat VIC-20. 6502 är troligen världens näst vanligaste mikroprocessor och en av de effektivaste.

Till expansionsporten i VIC-64 kan man ansluta en utbyggnadsenhet med Z80 som fungerar enligt standard, vilket ökar användbarheten hos VIC-64 en hel del.

Videokretsen

Den enhet som skapar VIC-64's videosignal, som så småningom blir en TV-signal, kallas med en engelsk förkortning för VIC. Detta betyder Video Interface Circuit, eller på svenska ungefär Videogränssnittskrets. Av detta ska man inte förledas att tro att videokretsen bara helt slaviskt ligger och läser av inmatade tecken och pytsar ut dem på TV-skärmen. Nej, det är mer invecklat än så. Själva teckengenereringen går till ungefär så här:

Videokretsen som håller reda på var på skärmen den håller på att skriva vet att det är dags att skriva t ex 4:e radens 17:de tecken. Då går den ut och tittar i bildminnet vad processorn har lagt in för siffra där. Den delen av minnet kan ses som en rektangel med rader och kolumner som motsvaras av TV-skärmens rader och kolumner.

Siffran videokretsen hittar i bildminnet talar om var den kan hitta den punktkod som finns lagrad i en tabell i teckengeneratorns läsminne.

Videokretsen tar alltså sin siffra, läser i tabellen vilken punktkod som gäller och alstrar en signal som åstadkommer den speciella punktkoden på TV'n. Så långt enkel textalstring. Detta är väl egentligen vad man tycker att en videokrets skulle göra, men VIC-64's VIC gör en hel massa annat nyttigt också. Vill man t ex få till rörlig grafik på TV-skärmen använder man sig av sprites.

En sprite är helt enkelt en symbol med ett en gång för alla definierat utseende som man flyttar omkring på skärmen.

Commodore kallar dem för Movable Object Blocks, MOBs, på svenska ungefär "flyttbara block". Det beskriver ganska bra vad det handlar om.

VIC-64's videokrets har kapacitet att visa upp till 8 sprites samtidigt och har flera register som registrerar bl a olika kollisioner mellan sprites och eventuell bakgrund.

Allt de här "Extra" funktionerna gör skulle processorn kunna klara, men i och med att videokretsen sköter om det får processorn tid över för annat, vilket i sin tur ger en snabbare dator.

Videokretsen får också generera en klocksignal som övriga kretsar, även mikroprocessorn, anpassar sin arbetshastighet till. Att man låter videokretsen bestämma arbetstakten i maskinen beror förstås på att det är dess uppgifter som är mest tidskritiska. Sveptider över bildskärmen måste stämma och punkter skrivas på exakt rätt ställe.

Ljudkretsen

I VIC-64 finns det en krets som alstrar alla ljudsignaler. Den kallas för Sound Interface Device, vilket uttytt är ungefär ljudanpassningsmanick. Den är i själva verket en komplett monofon (enrösts) syntetisator. Den har tre tongeneratorer vars frekvenser går att variera upp till 4 kHz och vars vågformer kan vara antingen sinus, (ren ton) triangelvåg, sågtand eller brus.

Eftersom bara en tongenerator kan låta åt gången är kretsen av typen enrösters.

De andra tongeneratorerna används till att modulera den första, varvid olika vibratoljud och mycket annat kan skapas.

I kretsen finns dessutom envelopegeneratorer. De styr ljud styrkans förlopp för de olika tongeneratorerna så att de kan kopplas in på ett naturligt eller effektfullt sätt. Därutöver finns ett styrbart filter med vilket olika delar av klangen kan döljas eller framhävas.

Sammantaget blir det en syntetisator i klass med många av dem som säljs som musikinstrument.

En av brusgeneratorerna används av datorn som slumptalsgenerator. Tonerna i tongeneratorerna alstras ju digitalt, och i digital mening är brus en serie slumptal. I kretsen finns två analog-till-digital omvandlare. De används för att läsa av värdet på eventuellt inkopplade potentiometrar (elektriska lägesgivare) och omvandla det inlästa värdet (en godtycklig spänningsnivå) till ett digitalt mått på hur stor spänningen var

Det är m a o ungefär en voltmeter, för att ge en lite mer svensk beteckning.

Väljarkretsen

När processorn utnyttjar sina kringkretsar använder den sig av styrsignaler på speciella styrledningar för att tala om vad den vill göra. Dessutom har kringkretsarna i regel egna minnesadresser.

När processorn har berättat vilken typ av krets den vill utnyttja och vilken adress den avser går informationen till en väljarkrets som signalerar kretsvalet med olika utgående ledare. Väljarkretsen fungerar då så att styrsignalerna och den högsta fyrabitarssiffran bildar en intern adress för väljarkretsen, som kan ses som en speciell sorts minne. I den adresserade minnescellen finns informationen om hur alla kretsens utsignaler ska se ut. Kretsen har 14 insignaler och 10 utsignaler. Den är med andra ord ett 4K ord stort minne med 10 bitars ordbredd.

Kretstypen kallas inte för minne utan den benämns Programmable Logical Array, eller programmerbar logikkrets eftersom dess användning är att framställa utsignaler som är logiska resultat av insignalerna, snarare än att tillhandahålla en tabell med information. Den ersätter en mer eller mindre komplicerad koppling med logiska grindar.

Kernal

VIC-64 är inte bara programmerad med en Basictolk när man köper den. Det finns även ett ROM med underprogram. Tillsammans utgör dessa underprogram någonting som kallas Kernal. Underprogrammen används av andra program för att utföra ofta förekommande uppgifter på ett enkelt sätt.

Som exempel kan vi ta uppgiften att läsa av ett tecken från tangentbordet. Det är väldigt enkelt i Basic, där skriver man GET A$ och så var det inte mer med det. Men att få datorn att göra det med maskinspråk är inte helt enkelt.

Det sitter en specialkrets i datorn som har sin egen uppfattning om hur en tangentbordsavläsning ska gå till. För att göra denna lilla enkla sak kan det krävas stor programmeringsmöda. Men hur detta ska göras behöver man inte alls bekymra sig om man använder den för ändamålet avsedda Kernalrutinen som redan finns färdig. Det man istället måste veta är hur man får rutinen att göra som man tänkt sig, och det är rätt enkelt. Får tillverkaren för sig att ändra datorns uppbyggnad, med t ex andra, intelligentare, specialkretsar, så ändras sättet att läsa av tangentbordet. Då fungerar ingenting som är skrivet för det gamla utförandet.

Men, och det här är viktigt, motsvarande Kernalrutiner skrivs om så att de fungerar precis likadant som i datorn med det gamla utförandet. Samma Kernalrutin gör alltså samma sak i två olika maskiner, även om de kanske gör det på olika sätt.

Men om resultatet av två operationer är precis lika behöver vi ju inte bry oss om skillnaden.

Det här gör att program kan flyttas mellan olika versioner av datorn utan att de behöver skrivas om. Att det sedan är mycket lättare att skriva fungerande program med hjälp av Kernalrutiner får man på köpet.

Ett system av program som underlättar för användaren att använda datorns funktioner brukar man kalla operativsystem. Det är operativsystemet man "pratar med" när man använder datorn. Det plockar fram de program man vill använda, såsom ordbehandlare, kompilatorer etc. Det bör dessutom ge viss hjälp när man kommer i svårigheter eller gör fel. Vidare bör det vara allmängiltigt så att alla program och alla språk kan användas.

Det man pratar med i VIC-64 är Basictolken, men den är begränsad till att prata Basic och att hämta program och data från kassett eller flexskiva, samt att lämna motsvarande till kassett, flexskiva eller skrivare.

Det innebär att man hedrar Basictolken väl mycket om man kallar den för operativsystem. Det är det nu heller ingen som gör, men Commodore kallar faktiskt Kernal för operativsystem. Det är väl kanske att överdriva en smula, för det krävs en del utöver vad som finns här för att få den att fungera som ett sådant. Även om det inte är något riktigt operativsystem, så är det dock ett långt kliv på vägen mot en användarvänlig dator.

Anpassningskretsarna

VIC-64 är försedd med speciella kretsar som sköter kommunikationen med omvärlden. Video och ljudkretsarna är två av den, men det finns två till som är av mer allmän karaktär. Den ena sköter kommunikationen med datorns portar och den andra med tangentbordet. Det som gör kretsarna så speciella är deras möjlighet att dels sända och ta emot tecken på olika typer av förbindelser med olika hastigheter, dels deras förmåga att utväxla tecken enligt vissa regler.

Kretsarnas mångsidighet har gjort dem ganska komplexa, vilket har givit dem namnet Complex Interface Adapter.

De består av två 8-bitars in/ut gångar för parallellbusskommunikation och en seriebussanslutning för kommunikation med en bit i taget på ledningen. Teckenutväxlingen sker med hjälp av en teknik som kallas handskakning. Det innebär att mottagaren talar om att den är klar att ta emot, varpå sändaren talar om att det som ligger på är vad som ska sändas i den omgången, mottagaren talar om att den har uppfattat och sändaren att den inte sänder längre. Detta upprepas tills dess att överföringen är färdig.

Både serie- och parallellbussen klarar det här, men det används mest i parallella sammanhang.

Serieporten kan skicka data i bestämda hastigheter och med kontrollbitar påhängda för att bevaka att överföringen blir rätt. Förutom kommunikation så kan kretsen hålla reda på tiden med två timers och ett tidur. Deras gångprecision är hygglig, men när bandspelaren används tappar den takten. En timer används för att hålla överföringshastigheten vid seriell kommunikation.

Den tangentbordsavkodande kretsen gör sitt jobb på ett rätt enkelt sätt. Tangenterna är anslutna i ett rutnät. När en tangent trycks ned kortsluts den liggande och den stående ledningen i punkten.

Alla stående ledningar är anslutna till kretsens ena port och alla liggande till den andra. Kretsen lägger ut en bit i taget på varje ledning i den ena porten och läser av om någon ledning fick en bit på den andra.

Genom att kombinera vilken ledning som biten sändes ut på med vilken som biten togs emot på så är en punkt i rutnätet utpekad och tangenten identifierad. Detta upprepas varje gång en tangent trycks ned.

Basic

Basic uttyds Beginners All-Purpose Symbolic Instruction Code och är det högnivåspråk som levereras tillsammans med VIC-64. Det är väldigt vanligt i mikrodatorsammanhang. Av skilda skäl är det däremot mycket ovanligt att professionell programmering görs i Basic, utan språket används mest av nybörjare i datorsammanhang.

I mikrodatorvärlden fastnar många för Basic och bryr sig aldrig om något annat. Basic's nackdelar är i huvudsak att det befrämjar dålig programmering, samt att det är långsamt.

Dessutom saknas ofta viktiga språkelement.

Ett bra språk fungerar så att man uppmuntras att programmera med en viss struktur. Då blir programmet lätt att läsa, förstå och ändra.

Övriga delar i artikeln: Delarna på moderkortet respektive portar och förkortningslexikon.

[HTML 4.01!] [Visas bäst med valfri webbläsare!] $Date: 2004/03/22 20:27:04 $ | peter@softwolves.pp.se

Åter till Softwolves' Commodoresida | Peters hemsida