Etikett: assembler

  • Motorola 6809 – 8-bitars processorn som tänkte som en 16-bitare

    Motorola 6809 var en 8-bitarsprocessor med ovanligt många 16-bitarsidéer, lanserad 1978 när datorvärlden stod mitt i skiftet mot kraftfullare arkitekturer. Den blev känd för sin eleganta och “moderna” design – med smart adressering, två stackpekare och till och med hårdvarumultiplikation – men också för att vara dyr och därmed hamna i skuggan av billigare rivaler som 6502 och Z80. Trots det satte den avtryck i klassiska datorer och spelmaskiner, och räknas än i dag som en av de mest imponerande 8-bitarsprocessorerna som byggts.

    När vi pratar om 1970- och 80-talets hemdatorer dyker ofta namn som 6502 (Apple II, Commodore 64) och Z80 (Sinclair, MSX, CP/M-maskiner) upp. Men i skuggan av de stora volymvinnarna fanns en processor som många ingenjörer fortfarande håller högt: Motorola 6809. Den var dyr, ibland för dyr – men tekniskt var den något av en “8-bitars aristokrat”: elegant, kraftfull och ovanligt modern för sin tid.

    En processor född i ett mellanläge

    6809 lanserades 1978, i ett ögonblick när marknaden stod och vacklade mellan epoker. 8-bitarsdatorer dominerade fortfarande, men 16-bitarsprocessorer som Intel 8086 och Motorolas egen 68000 var på väg in och lovade ett nytt prestandasprång. Motorola behövde något som kunde ge deras populära 6800-familj ett rejält lyft – utan att tvinga alla kunder att hoppa till dyrare 16-bitarsplattformar.

    Resultatet blev 6809: en 8-bitare i databredd, men med många 16-bitarsidéer inbyggda.

    Varför var 6809 “för bra” för att vara 8-bit?

    Det som gjorde 6809 speciell var inte en enda “killer feature”, utan helheten – den kändes mer som en välplanerad verktygslåda än som en kompromiss.

    1) Två stackar – som att ha två hjärnor för ordning och reda

    De flesta enkla processorer hade en stackpekare (stacken används för t.ex. returadresser när man anropar subrutiner). 6809 hade två:

    • S (systemstack)
    • U (userstack)

    Det här gjorde det mycket lättare att skriva robust systemkod, avbrottshantering och till och med flertaskande operativsystem. Det är en av anledningarna till att 6809 blev en bra grund för system som OS-9 och UniFlex.

    2) “Flytta programmet var du vill” – positionoberoende kod

    På tidiga 8-bitarsmaskiner var det vanligt att program “antog” att de låg på en viss adress i minnet. Flyttade du programmet behövde du ofta peta om adresser manuellt.

    6809 fick ovanligt bra stöd för PC-relativ adressering (programräknar-relativ), vilket gjorde det enklare att skriva positionoberoende kod – program som fortfarande fungerar även om de placeras någon annanstans i minnet. I dag tar vi det för givet, men då var det en stor sak.

    3) Direkt sida – men flyttbar

    6502 är känd för sin “zero page” (snabbare adressering i första 256 byten av minnet). 6809 hade också ett snabbt 256-bytesfönster, men med en twist: ett DP-register (Direct Page) som kunde peka ut vilken 256-bytesdel som helst i minnet som skulle vara “snabbzonen”. Smart, flexibelt och väldigt användbart i större program.

    4) En tidig hårdvarumultiplikation

    Multiplikation var ofta något man fick “programmera fram” med loopar på enklare processorer. 6809 hade en hårdvaruinstruktion för multiplikation (8×8 → 16 bitar). Det låter litet, men i spel, ljud och grafik kunde det vara guld.

    5) Ren och “ortogonal” instruktionsuppsättning

    6809 är känd för att vara ortogonal: instruktionerna och adresseringslägena passar ihop på ett konsekvent sätt. För programmerare betyder det färre “konstiga undantag”, mer förutsägbar kod och ofta en känsla av att processorn “samarbetar”.

    Men varför tog den inte över världen?

    Här kommer den tragiska delen – 6809 var ofta för dyr för att vinna volymmarknaden.

    I början av 1980-talet kunde 6809 kosta många gånger mer än 6502 och Z80. Och när man dessutom såg att 16-bitarsmaskiner började springa ifrån prestandamässigt, hamnade 6809 i ett besvärligt läge:

    • Inte billigast (så den förlorade mot 6502/Z80)
    • Inte framtidssäkrast (så den förlorade mot 8086/68000)

    Det blev en processor som älskades av dem som använde den – men som sällan valdes när inköpschefen räknade kronor.

    Var användes den då?

    Trots allt fick 6809 en imponerande meritlista. Den dök upp i flera klassiska system och spel:

    • TRS-80 Color Computer (en av de mest kända 6809-datorerna)
    • Dragon 32/64
    • Commodore SuperPET
    • Vectrex (vektorgrafik-konsolen med sitt unika utseende)
    • Arkadspel från bl.a. Williams (t.ex. Defender, Robotron: 2084, Joust)
    • Konami använde en modifierad 6809-variant i flera spel

    Den användes också i vissa musikmaskiner och synthesizers – områden där bra instruktionsstöd och “smidig” kod kunde spela stor roll.

    En lång svans: kloner, förbättringar och FPGA

    6809 försvann inte bara. Hitachi 6309 blev en slags “6809+” med extra instruktioner och register. Och i modern tid har 6809-kärnor syntetiserats i HDL och körts i FPGA, ofta i mycket högre hastigheter än originalchippen.

    Det säger något om designen: den var så genomtänkt att den fortfarande är intressant – decennier senare.

    6809 i en mening

    Motorola 6809 var en processor som låg ett steg före sin tid, men som kom i en marknad där pris och timing ofta betydde mer än elegans. Den blev aldrig den vanligaste 8-bitarsprocessorn – men kanske en av de mest respekterade.

    Motorola 6809 – faktaruta
    Lanserad 1978
    Tillverkare Motorola
    Databuss 8-bit
    Adressbuss 16-bit (64 KB adressrymd)
    Kapsel 40-pin DIP
    Transistorer ca 9 000
    Kännetecken
    • Två stackpekare (S och U)
    • 16-bitars ackumulatorn D (A+B)
    • PC-relativ adressering (bra för positionoberoende kod)
    • Hårdvarumultiplikation (8×8 → 16 bitar)
    • Många adresseringslägen och “ortogonal” instruktionsuppsättning
    Vanliga användningar
    TRS-80 Color Computer, Dragon 32/64, Vectrex, samt flera arkadspel från tidigt 1980-tal.