ABC80 emulator

⟶ abc80sim på GitHub Laddar...
Konsol-utskrift

Hej och välkommen!

Det här är en webb-emulator av Luxor ABC80 — den hemdator som lärde en hel generation svenskar att programmera. Sätt på skärmen, skriv lite BASIC, och prova hur det kändes 1978.

— Byggt av Hugo Wikström tillsammans med Claude (Anthropic), maj 2026.

Foto av en ABC80-dator
Luxor ABC80 (1978). Foto: Ellinor Algin, Tekniska museet, Stockholm. CC BY 4.0.

Vad är ABC80?

ABC80 lanserades sommaren 1978 och blev Sveriges första riktigt folkliga hemdator. Den togs in i tusentals skolor och kontor och blev standard i svensk programmeringsundervisning under hela 80-talet. För många svenska mjukvaruutvecklare i den generationen var ABC80 den första maskinen de skrev kod på.

Restaurerad ABC80 mot vit bakgrund
ABC80 (märkt "Metric ABC80" — denna såldes också under Scandia Metric-varumärket i Norge). Foto: Arj, restaurering: Shritwod. CC BY-SA 3.0.

Bakom maskinen — Luxor och DIAB

ABC80 var ett samarbete mellan två svenska företag:

BASIC-tolken och Anders Hejlsberg

BASIC-tolken i ROM:en (16 KB) baserades på Microsoft BASIC (samma stam som senare hamnade i Commodore PET och Apple II) men anpassades för svenska — radredigering, åäö i strängar, och svenska felmeddelanden.

En kuriositet som många glömt: Anders Hejlsberg, mannen som senare skapade Turbo Pascal och därefter C# på Microsoft, skrev en av de tidiga BASIC-kompilatorerna för ABC80 — BASCOM. Det var ett av hans första kommersiella projekt och hans verktyg gjorde ABC80-program betydligt snabbare än de tolkade originalen.

Grogrunden för svensk IT

Att försöka mäta ABC80:s betydelse för svensk teknikkompetens är som att försöka mäta vad ett bibliotek betyder för läskunnighet — effekten är överallt men svår att räkna i siffror. Några konkreta saker man kan peka på:

Med andra ord: den lilla beigea lådan med svart skärm var inte bara en dator — den var en kompetens-injektion i en hel generation, och frukterna av det märks fortfarande.

Efterföljarna

Familjen växte: ABC800 (1981, för proffsmarknaden), ABC802 (1983, integrerad terminal), och ABC806 (1983, högupplöst grafik). Den här emulatorn fokuserar på originalmodellen ABC80 men kan även köra ABC802 (kommandorads-flagga --abc802).

När Luxor köptes upp av Nokia 1985 och Nokia sedan lade ner datorlinjen blev ABC-serien historia — men en stor mängd programkod, manualer och dokumentation har bevarats av eldsjälar i ABC-klubben och finns på sajter som abc80.org och abc80.net.

Hur projektet är byggt

Det här är inte en nyskriven emulator — det är ett UI runt den utmärkta C-emulatorn abc80sim, kompilerad till WebAssembly med Emscripten. Emulatorn kör hela ROM:en, all originalmjukvara och simulerar Z80-processorn cykel för cykel.

  1. abc80sim klonas från GitHub (källkod på C/C++).
  2. Källkoden kompileras med emcc till emu.wasm (1,3 MB) plus en JS-loader.
  3. Inbyggd kassett-fil (emu.data, 86 KB) bakas in med BASIC-ROM, tecken-ROM och 17 originalprogram.
  4. Vår index.html bäddar in WASM:en, kopplar canvas + tangentbord, och låter dig ladda upp egna .bas/.bac-filer.
  5. Servern (server.py) skickar rätt CORS-headers så browsern tillåter SharedArrayBuffer (krävs av Emscriptens trådstöd för ljud).

Tekniskt om ABC80-arvet

Den ursprungliga emulatorkärnan har en lång historia:

ABC80:s tecken-set

ABC80 hade ett unikt tecken-set i ROM med 256 tecken: vanliga bokstäver inklusive åäö, samt 96 semigrafik-block som man kunde sätta ihop till enkel grafik. Här syns hela tecken-ROM:en utlagd som rasterbild — det är den faktiska 8×8-pixelfont som varje bokstav består av:

ABC80:s tecken-ROM som rasterbild
ABC80:s tecken-ROM (alla 256 tecken á 8×8 pixlar).

Och här teckenkodningen — varje teckens nummer (0–255) i en tabell, så man ser hur svenska tecken som å (ASCII 125), ä (123), ö (124) stoppades in på platser där andra system har { | }:

ABC80:s teckenkodningstabell
ABC80:s teckenkodningstabell (lokala bilder).

Detta bygge — vad jag och Claude gjorde

Hela bygget sitter i /home/huggo/abc80/. Källkoden till abc80sim finns i undermappen abc80sim/ och rörs inte — vi bygger bara om den. Allt UI ligger som vanliga filer (index.html, app.js, style.css) som kan editeras direkt.

Tack till

…alla som höll ABC80 vid liv i fyra decennier: ABC-klubben, programmerarna som la upp sina BASIC-listningar online, Luxor som öppnade kretsschemana, och alla som bevarat ROM-dumparna. Utan er hade det här inte funnits.