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.
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å.
Bakom maskinen — Luxor och DIAB
ABC80 var ett samarbete mellan två svenska företag:
- Dataindustrier AB (DIAB) i Sundbyberg konstruerade hårdvaran. DIAB hade redan byggt kortdatorer och mätsystem, och hade kompetensen att designa en Z80-baserad enkortsdator. Huvudkonstruktören var Lars Karlsson, en av DIAB:s grundare.
- Luxor AB i Motala — då känt främst för TV och radio — tog fram chassi, tangentbord och stod för tillverkning, marknadsföring och försäljning. Beslutet att satsa på dator- marknaden drevs internt av folk som ville bredda Luxor utöver hemelektroniken.
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å:
- Skoldatorn. ABC80 blev de facto-standard i svensk skola via det statligt subventionerade "skoldata"- paketet. När datorlära infördes som ämne i mitten av 80-talet var det ABC80 som stod på katederbordet i tusentals klassrum.
- En hel generation programmerare. Tonåringar från Kiruna till Trelleborg skrev sina första rader kod på en ABC80 i datasalen. Många av dem blev senare ryggraden i den IT-bransch som växte fram under 90- och 2000-talen.
- Industri- och kontorsbruk. ABC80 (och efterföljarna i ABC800-serien) användes brett inom svensk industri för processtyrning, lagerhantering och teknisk beräkning. Många konsult- och programvarubolag i 80-talets Sverige byggde sina första produkter ovanpå ABC-systemet.
- ABC-klubben och hackerkulturen. Tidskrifter som ABC-bladet, Datormagazin och senare Mikrodatorn spred kunskap, listade BASIC-program att knappa in, och byggde en svensk användarkultur av att skapa med datorn — inte bara konsumera. Många av de som senare grundade svenska programvaru- och spelbolag växte upp i den miljön.
- Långsiktig effekt. När det svenska "tech- undret" tog fart kring millennieskiftet — Spotify, Skype, Klarna, King, Mojang, MySQL, Ericssons mjukvarudivisioner — fanns där en oproportionerligt stor bas av svenska utvecklare i medelåldern som börjat med BASIC på en ABC80 eller Commodore 64. Det var ingen slump att Sverige blev (och är) en av Europas mest produktiva mjukvarunationer per capita.
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.
- CPU: Zilog Z80A på 3,0 MHz
- RAM: 16 KB (utbyggbar till 32 KB)
- ROM: 16 KB BASIC (Microsoft-derivat) + tecken-ROM
- Skärm: 40×24 tecken, svartvit text + semigrafik
- Lagring: kassettband (300 baud)
- Tangentbord: svenskt (åäö ingår!)
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.
- abc80sim klonas från GitHub (källkod på C/C++).
- Källkoden kompileras med
emcctillemu.wasm(1,3 MB) plus en JS-loader. - Inbyggd kassett-fil (
emu.data, 86 KB) bakas in med BASIC-ROM, tecken-ROM och 17 originalprogram. - Vår
index.htmlbäddar in WASM:en, kopplar canvas + tangentbord, och låter dig ladda upp egna.bas/.bac-filer. - 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:
- David Gingold & Alec Wolman — skrev den ursprungliga Z80-emulatorn för TRS-80 i slutet av 80-talet.
- H. Peter Anvin — anpassade Z80-koden till ABC80, byggde in ROM:en och PIO-emulering, gjorde verktyget offentligt på zytor.com.
- Jonas Yngvesson — bidrog med fixar och portningsarbete.
- Jonas Minnberg (sasq64) — moderniserade bygget med CMake och SDL2, gjorde Emscripten-porten möjlig.
- Fredrik Johansson — bidrog med ljud- emulering baserat på Mikrodatorns ABC.
- Michael Bonnevier & ABC-klubben — bevarade och digitaliserade originalprogrammen som nu ligger i kassetten (bilspel, schack, julgran, slalom...).
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:
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 { |
}:
Detta bygge — vad jag och Claude gjorde
-
Hugo Wikström — beställde, testade, hittade
buggar (t.ex. att
RUN CAS:var fel syntax). -
Claude (Anthropic) — installerade Emscripten-SDK,
klonade abc80sim, fixade länkflaggor (
EXPORTED_RUNTIME_METHODS=FSochPTHREAD_POOL_SIZE=8), byggde WASM, skrev det svenska wrapper-UI:t (HTML/CSS/JS) och servern.
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.