GRUNDLÄGGANDE - BASICODE

BASICODE: s " Esperanto för datorer" påstående från den östtyska publikationen radio fernsehen elektronik .

BASICODE var en dator projekt syftar till att skapa en enhetlig standard för BASIC programmeringsspråk . BASIC fanns på många populära hemdatorer , men det fanns otaliga varianter som mest var oförenliga med varandra. Projektet initierades 1980 av Hobbyscoop, ett radioprogram från den holländska sändningsorganisationen Nederlandse Omroep Stichting (NOS).

Den grundläggande implementeringen var arkitekturspecifika verktygstillämpningar som utförde samtal av underrutiner för text, ljud och ljud definierade i språkstandarden BASICODE enligt datorns förmågor. Dessa applikationer, kallade Bascoders , möjliggjorde också delning av data och program över olika datorplattformar genom att definiera ett dataformat för Compact Cassettes som regelbundet användes som lagringsmedia på 1980-talet. Ett BASICODE-program lagrat på kassett kan laddas och köras på vilken dator som helst som stöder språket. BASICODE kallades ofta " Esperanto för datorer" av den anledningen.

GRUNDLÄGGANDE

Situationen i början av 1980-talet

Commodore 64
Atari 800 XL

Från slutet av 1970-talet till slutet av 1980-talet var hemdatorer baserade på 8-bitars processorer mycket populära. Bland de mest kända modellerna var TRS-80 av Tandy , PET 2001 , VIC-20 , C64 , C128 och Plus / 4 av Commodore , Atari 400/800 (XL / XE) , Sinclair Research- datorerna ( ZX80 , ZX81 , ZX Spectrum ) och familjen KC85 populär i den tyska demokratiska republiken . Alla dessa datorer hade en CPU av typen MOS Technology 6502 eller Zilog Z80 , 16 till 64 kilobyte RAM , kontakter för en kassettdrev eller en inbyggd för datalagring och slutligen en BASIC- tolk som vanligtvis lagrades i ROM . Den plana inlärningskurvan för BASIC, som hade utformats med tanke på nykomlingar för programmering i åtanke, och den omedelbara tillgängligheten av språket på alla dessa datorer ledde till att många användare skrev och delade sina egna program.

Ett problem var att det var svårt att dela program och data över datorer av olika tillverkare eftersom de olika BASIC-dialekterna var helt oförenliga på vissa områden. De använde olika BASIC-kommandon för att göra samma åtgärd (som att rensa skärmen, rita en pixel eller spela ett ljud), så att ett BASIC-program skrivet för C64 inte fungerade på en Atari XL utan modifiering och vice versa. En annan svårighet var det faktum att även om dessa datorer var lika, skilde de sig fortfarande i viktiga maskinvaruaspekter som skärmupplösning, tillgänglig färgpalett eller ljudförmåga. Slutligen var dataformaten som användes för att lagra data på kassett också inkompatibla.

Den första standarden

Sinclair ZX Spectrum

Runt 1980 började den nederländska sändaren NOS sända datorprogram via radio. Eftersom program och data lagrades som ljud på kompakta kassetter, var det möjligt att spela in en sådan sändning på band och ladda in den i datorn senare. På grund av de tidigare nämnda problemen måste programmet dock anpassas för nästan alla populära datortyper och sändas flera gånger också. Eftersom den kompakta kassetten har en mycket låg datatäthet jämfört med dagens lagringsmedia, tog inspelningen av programmen ganska lång tid och endast ett begränsat antal program kunde sändas per program. Så den extra sändningen av olika versioner av samma program var ett stort besvär.

1982 beslutade cheferna på NOS att utveckla ett enhetligt dataformat. En applikation som var specifik för varje datormodell, kallad Bascoder , hanterade återkallande och lagring av program och data i detta enhetliga format från band. Bascoders sändes också av NOS, men kunde också köpas från NOS på kassett och delas med vänner och bekanta. Formatet, som var mycket väl skyddat mot störningar, kunde läsas och skrivas av all populär hemdatorhårdvara. Formatets robusthet möjliggjorde också sändningar via mellanvågsradio , vilket ökade räckvidden och i sin tur antalet potentiella användare. Till exempel kan data som sänds av den nederländska radiostationen Hilversum tas emot i stora delar av Tyska demokratiska republiken .

GRUNDKOD 2

ZX81
Apple II

Standarden löste ett av de ovannämnda problemen, de oförenliga dataformaten. Men program måste fortfarande anpassas till varje dators BASIC-dialekt och hårdvarufunktioner. Att begränsa programmen till att bara använda instruktioner som är vanliga i alla dialekter innebar stora begränsningar vad gäller funktionalitet, till exempel helt och hållet avstå från att använda grafik och ljud och bara obekväma metoder för att mata in data med tangentbordet och för att kontrollera teckenutmatning på skärmen. Av denna anledning skapades 1984 den förbättrade standarden BASICODE 2. Bascoders som använder denna standard innehöll inte bara rutiner för in- och utmatning av data till band. Förutom en uppsättning av cirka 50 BASIC-kommandon, funktioner och operatörer som var vanliga för alla BASIC-dialekter, definierade språkstandarden för BASICODE 2 ett bibliotek med underrutiner som emulerade samma funktioner på alla datorer som stöds.

För att uppnå detta var alla programrader under 1000 reserverade för Bascoder, och BASICODE-program kunde bara börja vid rad nummer 1000. Underrutinerna för Bascoder i raderna under 1000 anropades med ett GOSUB- kommando. Nödvändiga argument skickades till Bascoder med hjälp av speciella fördefinierade variabler som var reserverade för användning av Bascoder. Standarden innehöll ett antal ytterligare regler som gjordes nödvändiga av begränsningarna för vissa datormodeller. Till exempel, på ZX-81 kan en kodrad bara innehålla ett enda BASIC-kommando, ett beteende som nästan ingen annan dator delade. På en dator i KC-serien kan en kodrad inte vara längre än 60 tecken. Dessa begränsningar måste tillämpas för alla BASICODE-program för att garantera plattformsoberoende, eftersom Bascoder tolkades av samma datorspecifika BASIC-tolk som själva BASICODE-programmet.

Således laddades Bascoders på olika datorer som vanliga program och tillhandahöll ytterligare rutiner för den gemensamma standarden och kassett I / O efteråt. Program skrivna i BASICODE var bara användbara efter att Bascoder hade laddats och startats. På vissa datorer kan dock BASICODE-programmen slås samman med bascoders rutiner och sparas i det ursprungliga dataformatet. Det resulterande programmet var inte plattformsoberoende längre, men på grund av den högre datatätheten för de flesta inbyggda format kunde det laddas mycket snabbare än samma program i BASICODE-format. Eftersom det inte var nödvändigt att ladda hela Bascoder för att köra programmet, förblev mer RAM tillgängligt vid körningstid.

Det fanns BASICODE 2 bascoders för Exidy Sorcerer , Color Genie , Commodore PET , VIC-20 , C64 , Amiga , Sinclair ZX81 , ZX Spectrum , QL , Acorn Atom , BBC Micro , Electron , Tandy TRS-80 , MSX , Oric Atmos , P2000T , Grundy NewBrain , Amstrad CPC , IBM PC , Apple II , Texas Instruments TI-99 / 4A , Mattel Aquarius och andra. Dessutom kunde avancerade användare skriva sin egen Bascoder för sitt val av system, eftersom språkstandarden och dataformatet var öppna och väldokumenterade. BASICODE 2-standarden gjorde det möjligt att utveckla plattformsoberoende program med avancerade funktioner (för tillfället). Dessutom användes BASICODE för att överföra och dela information som datorscenyheter via radio i form av så kallade "tidskrifter". En BASICODE-kodningshandledning och annan dokumentation överfördes också på detta sätt.

BASICODE 3 / 3C

1986 utvecklades den nya standarden BASICODE 3. De viktigaste tilläggen var rutiner för enkel monokrom grafik, läsning och skrivning av data inifrån program och ljudutgång. BASICODE 3 gjorde BASICODE populär i DDR: s datorscen, och sedan 1989 överfördes BASICODE-program via radio i hela DDR. Dessutom publicerades en bok som inkluderade en vinylskiva med Bascoders för alla datorer som är vanliga i DDR. Den senaste versionen av BASICODE, som innehöll färggrafik, släpptes som BASICODE 3C 1991.

Slutet på BASICODE

Från och med 1990 minskade BASICODEs popularitet snabbt på grund av ökningen av 16- och 32-bitarsdatorer, särskilt IBM-PC-varianter och kompatibla system. Även om det fanns baskodare för dessa maskiner var BASICODE för begränsad för att använda de resurser som generationen av datorer tillhandahöll. Dessutom, på grund av de mycket färre vanliga arkitekturerna i 16- och 32-bitarsåldern, blev huvudorsaken till utvecklingen och användningen av BASICODE mycket. I och med att hårdvaran och mjukvaran i de nya systemen blev mer och mer komplex, blev de flesta användare oförmögna att eller inte vilja skriva program. Ökningen av grafiska användargränssnitt bidrog till nedgången i popularitet för 8-bitars datorer och följaktligen också BASICODE.

Efterträdaren för DDR: s statliga sändare, Deutschlandsender Kultur (som senare blev en del av det nya Deutschlandradio ), fortsatte att sända BASICODE-program fram till omkring 1992. En planerad standard som heter BASICODE 4 blev aldrig verklighet, eftersom NOS slutade stödja projektet strax efter BASICODE 3C släpptes. BASICODE används fortfarande av entusiaster, särskilt 8-bitars datorfläktar, för nostalgiskt värde, men har ingen praktisk relevans.

Historisk betydelse

BASICODE var ett tidigt försök att skapa en standard för utbyte av program och data över ömsesidigt oförenliga hemdatorarkitekturer. Det är ungefär modernt till MSX- standarden som utvecklats av Microsoft , som specificerade en delad maskinvaruplattform utöver en vanlig BASIC-dialekt. Dessa datorer såldes av flera företag och konkurrerade direkt med andra populära hemdatorer. MSX lyckades främst på tillverkarnas hemmamarknader, till exempel Japan , Sydkorea , Nederländerna och Brasilien . Till skillnad från MSX definierade BASICODE ingen hårdvara utan en språkstandard för programmeringsspråket BASIC, som var nästan allestädes närvarande i hemdatorer, plus ett dataformat för kompakta kassetter som kunde läsas och skrivas på alla datorer som BASICODE var tillgängliga. Som ett resultat var implementeringen av BASICODE uteslutande beroende av ytterligare programvara och var därför inte begränsad till datorer av specifika tillverkare. Den installerade basen av BASICODE är svår att uppskatta, eftersom både Basicoders och programmen skrivna i BASICODE var fritt tillgängliga. Det fanns en baskodare för nästan alla hemdatorer som såldes under denna tid. Kommersiellt hade BASICODE ingen betydelse eftersom det alltid delades gratis.

Det måste konstateras att BASICODE enligt design inte kunde använda värddatorernas kapacitet i sin fulla omfattning. Språkstandarden definierad av BASICODE var den lägsta gemensamma nämnaren för alla relevanta datorsystem. Detta koncept övergavs delvis endast med BASICODE3 / 3C, eftersom vissa datorer eller datorvarianter som ZX80 / ZX81 och KC87 inte kunde grafik och färg och de nya delarna av BASICODE som använde dessa funktioner inte kunde användas på dem. Speciellt för applikationer som förlitade sig på timing och grafik eller ljud, till exempel videospel , var BASICODE tydligt sämre än program skrivna i "native" BASIC eller maskinkod . Styrkan med BASICODE var inom applikationsdesign, utbildningsprogramvara och datadelning. BASICODE-formatet användes också för Pascal- program. Pascal var ett mycket mer konsekvent språk över alla system, men kompilatorer var endast tillgängliga för mycket få typer av hemdatorer.

Det underliggande konceptet med BASICODE, som är definitionen av en språkstandard för plattformsoberoende mjukvaruutveckling och implementeringen av nämnda standard som systemspecifika driftstider (Bascoder) omprövades senare i programmeringsspråket Java , i form av operativsystemet -specifika virtuella Java-maskiner som kör Java-program. Dessutom påminner distributionen av data och information i BASICODE-dataformatet om nuvarande plattformsagnostiska dokumenttyper som Portable Document Format (PDF) och de PDF-läsartillämpningar som det kräver.

Dataformatet BASICODE

En BASICODE kompakt ljudkassett, det typiska BASICODE- datalagringsmediet.

I BASICODE-formatet är inspelningen av program analog med inspelningen av data. Så när du spelar in program läses och skrivs inte kommandona i form av enskilda byteenheter ( tokens ) utan tecken för tecken.

Ett datablock börjar med tecknet 02 (STX, början av texten) och slutar med tecknet 03 (ETX, slutet av texten). Efter ETX sänds en kontrollbyte som består av tidigare byte inklusive STX och ETX genom binär addition (XOR). Ett 0D-tecken (decimal 13) markerar slutet på en linje under sändningen. Datafiler som skapats av program kan använda alla tecken som data och får inte innehålla några kontrolltecken. De läses och skrivs i block om 1024 byte.

Varje byte sänds i sekvensen "1 startbitar - 8 databitar - 2 stoppbitar". Databitarna skickas först med den minst signifikanta biten. Den viktigaste biten sänds inverterad och är alltid 0 (sänds som 1) eftersom BASICODE endast använder ASCII- tecken. Så ett annat sätt att beskriva sändningssekvensen är "1 startbit - 7 databitar - 3 stoppbitar". Den resulterande redundansen är avsedd för att maximera kompatibilitet med olika datorer.

För ljudsignalerna används fyrkantiga vågor i form av en 1200 Hz- våg för en "0" -bit och två 2400 Hz-vågor för en "1" -bit, vilket resulterar i en tid på 1/1200 sekunder för varje bit. En paus som är längre än 1/1800 sekunder mellan vågorna markerar början på en byte, vilket gör följande våg till startbiten. Efter startbiten och före de åtta databitarna är det ytterligare en paus på minst 1/1800 sekunder. En 2400 Hz-signal med en längd på fem sekunder markerar början på en sändning och används för synkronisering av läsprogrammet. I slutet av sändningen skickas en 2400 Hz-signal med en längd på en sekund.

Den teoretiska datahastigheten för detta format är 1200 bitar per sekund. Med tanke på överföringen av ytterligare tre bitar per databytes och pauserna före och efter startbiten resulterar detta i en användbar datahastighet på 102 byte per sekund och cirka 6 kilobyte per minut.

Avkodning av ljudkassetter

På en modern dator kan Basicode-ljudkassetter avkodas med minimodem , ett fritt tillgängligt mjukvarumodem. Om kassetten har konverterats till en wav-fil som heter basicode.wav kommer följande kommando att avkoda den till motsvarande databytes till en fil som heter basicode.txt .

minimodem --rx 1200 -S 1200 -M 2400 --startbits 1 -7 --stopbits 3 -f basicode.wav >basicode.txt

Se även

Vidare läsning

  • (på tyska) Michael Wiegand, Manfred Fillinger: BASICODE. Mit Programmkassette. Ravensburger Buchverlag, Ravensburg 1986, ISBN   3-473-44010-8
  • (på nederländska) Hermine Bakker, Jaques Haubrich (författare), Stichting BASICODE (utgivare): Het BASICODE-3-bok. 3. Auflage. Kluwer Technische Boeken BV, Deventer / Antwerpen 1988, ISBN   90-201-2111-1
  • (på tyska) Horst Völz: Basicode mit Programmen auf Schallplatte für Heimcomputer. Verlag Technik, Berlin 1990, ISBN   3-341-00895-0

externa länkar