Basicode


Nog niet eens zo lang geleden, zo'n 25 jaar ongeveer, was het in de computerwereld gewoon om niet compatible te zijn. Iedere homecomputer had zijn eigen regels, zijn eigen Basic en zijn eigen besturingssysteem. Zelfs de toetsenborden kwamen niet overeen...

Om iedere eigenaar van een homecomputer de gelegenheid te geven gegevens en / of programma's uit te kunnen wisselen werd de Basicode bedacht.
 

Herbert Blankesteijn, NRC Handelsblad 31-7-'99

Het uitwissen van zelfgeschreven software was een probleem voor bezitters van computers van een verschillend type. Alle microcomputers werden geprogrammeerd in dialecten van de taal Basic, maar deze verschilden te veel. Het radioprogramma Hobbyscoop zond al software uit voor Apple II en andere hobbycomputers van dat moment. Geknars in de ether, dat op cassette kon worden opgenomen en dan wonderwel werkte - als het in het juiste dialect was voor je computer. Robers: 'Je moest maar hopen dat er iets voor jouw merk werd uitgezonden. Ik verwachtte niet dat we daar met de P2000 nog tussen kwamen, dus heb ik een oplossing bedacht voor die spraakverwarring.' Robers' uitvinding, Basicode, was een soort Esperanto voor microcomputers waardoor iedereen op zijn eigen machientje voor alle computeraars bruikbare software kon maken. De standaard werd door Hobbyscoop omarmd en heeft jarenlang gefunctioneerd op een steeds groter aantal merken en typen computers.
 

De gedachte achter Basicode was eenvoudig, het gebruik van een basis die het mogelijk maakt een programma op alle (home)computers te laten werken. Die basis noemde men subroutines en ze waren voor alle meewerkende computers verschillend, maar wel met hetzelfde resultaat.


 
 

De homecomputers waarvoor subroutines bestaan
staan in dit boek 'basicode hobbyscoop',
uitgegeven door de NOS - Hilversum. (c) 1984.
 
 
 
 
 

De overdracht van gegevens ging via de radio door middel van geluidsgolven naar de cassetterecorder en werden opgenomen op band, waar toen iedere homecomputer over beschikte; bij de PC via de printerpoort vanwege het ontbreken daarvan. Homecomputers waar ook geen cassetterecorder op aangesloten kon worden, gebruikten een interface via de seriele poort (compoort).
 

Die gegevens konden van alles zijn, zoals Lennart Bisschop al op zijn Basicode pagina schrijft:

So what could be done with BASICODE 2? You could do animated games but most were so slow that they were unplayable on many machines. You could do comparatively nice screen formatting using the cursor positioning commands. The following programs existed:


De beste ingestuurde programma's werden op 'Best of Basicode' cassettes (1-4), een audio CD (5), een diskette (6) en alle beeldkranten op BOB7 gezet en uitgegeven.


 

Bijzonderheid bij de Jubileum CD (20 jaar Hobbyscoop):
het linker geluidskanaal bevatte andere informatie dan het rechter geluidskanaal,
die dus afzonderlijk moesten worden afgeluisterd.
 
 
 

De CD heette een audio CD te zijn, maar er staan wel 60 computerprogramma's op met een totale omvang van 750.000 tekens ofwel 750 Kbyte. Om deze programma's te kunnen gebruiken zult u het cirkelzaaggeluid moeten doorstaan, niet om naar te luisteren, maar om aan uw computer te voeren, want het betreft hier 'de Esperanto van Hobbyscoop': de NOS Basicode taal.

Een primeur - tien jaar geleden - was het bijwijze van proef het per radio doorzenden van een computerprogramma. Toen dat in 1978 gebeurde kon bijna niemand bevroeden dat zulk een 'geknars en geratel' een vast onderdeel van het NOS-programma zou worden. Vanaf 1979 werd er al met enige regelmaat computergeknars uitgezonden, voor elk merk computer afzonderlijk. In de tachtiger-jaren werd NOS-Basicode (geschikt voor álle computers) door Hobbyscoop tot een begrip gemaakt.
 
 

Het team van Basicode.

(v.l.n.r.):
eindredakteur Hans G. Janssen †, producer Lidy Martin, reporter
Willem-Jan Hagens en presentatrice Elles Berger. Op de 
voorgrond geluidstechnicus Rens Spaink. Presentatrice Ingrid 
Drissen, die op de CD te horen is, staat er niet op.


 Uit de CD beschrijving:


 

    
    inhoud1           inhoud2          inhoud3

Download bob5
 

Om u een idee te geven hoe Basicode klonk als je een programma van de radio opnam, is hier het 'Etiketten printen' programma (zie inhoud2 voor beschrijving) in oorspronkelijke vorm:

etiket.wav (8Mb)
 

Het gebruik van een vertaalprogramma is tweeledig:

1) de cassettepoort instellen op het juiste Basicode protocol (startbit - stopbit).
2) de subroutines in het geheugen plaatsen en vervolgens het toevoegen van het ingelezen programma.
 

Op de Best of Basicode cassette 1 staan diverse vertaalprogramma's voor diverse homecomputers.

Als uw oude computer daar niet bij staat, wil het niet zeggen dat er geen voor bestaat. Er is ook veel na uitgifte van de cassette verschenen. In de (eerste) beeldkranten staat welke vertaalprogramma's er werden uitgezonden - soms alleen leesprocedures, oa van: Acorn Electron; Armstrad/Schneider; MSX-1 en -2; Schneider CPC 664 (cp/m 2.2); Memotech computer; Sharp MZ700 - 800. De TI-99/4A werd genoemd, maar de uitzending ervan heb ik niet terug kunnen vinden.
 

SIG/M    Volume 235     BASICODE Radio Communications (in Dutch)

235.01 ABSTRACT.235 2K  29 B6  Abstract of disk contents (in Dutch)
235.02 BASICODE.DOC 16K B7 AC  Documentation on BASICODE (in Dutch)
235.03 BASICODE.ENG 3K  B4 A7  Brief intro to BASICODE (in English)
235.04 BC2     .BQS 2K  27 C8  "Standard" BASICODE-2 for MBASIC
235.05 BC2     .OSB 2K  2B 1D  "Osborne" BASICODE-1 for Osborne 1
235.06 BC2     .OSI 2K  D8 69  "Ohio Scientific" BASICODE-2
235.07 BCREAD  .AQM 8K  75 A2  Read BASICODE-2 in from parallel port
235.08 BCTEST  .AQM 4K  77 7C  Test program for BASICODE-2 port transfer
235.09 BCWRIT  .AQM 8K  E7 4E  Write out BASICODE-2 program, standard
235.10 BCWRITE .AQM 8K  87 D9  Write out BASICODE program, (BASICODE-1?)
235.11 BOKA&EI .BQS 6K  77 2E  BASICODE-2 Tic Tac Toe, in Dutch
235.12 CONVERT .BQS 4K  FE 82  CBASIC source for BASICODE-2/MBASIC xlate
235.13 CONVERT .COM 13K 67 B5  Converts from BASICODE-2 to Microsoft BASIC
235.14 DELERS  .BQS 10K A9 BE  BASICODE-2 game of some sort, in Dutch
235.15 DIGIKLOK.BQS 4K  82 2F  BASICODE-2 on screen digital clock
235.16 FEESTEN .BQS 4K  9D 98  BASICODE-2 shows public holidays, any year
235.17 FORTH-NL.LBR 49K A3 D1  FIG FORTH 1.1 with enhancements for CP/M
235.18 FUNCTION.DAT 1K  29 3F  Used with CONVERT.COM
235.19 KALFEEST.BQS 6K  9E A3  BASICODE-2 calendar for any month & year
235.20 KEYWORDS.DAT 1K  88 69  Used with CONVERT.COM
235.21 MASSA   .BQS 4K  76 3E  BASICODE-2 demo program, in Dutch
235.22 SORT    .BQS 6K  68 2E  BASICODE-2 sort program, in Dutch
235.23 STELSELS.BAS 4K  64 EE  BASICODE-2 solves 3 order quadratics ?
235.24 TANKIE  .BQS 6K  00 9B  BASICODE-2 game, simple ASCII graphics
235.25 TESTBC2 .BQS 4K  F4 46  BASICODE-2 test/excerciser program
235.26 TIMER555.BQS 6K  B4 CA  BASICODE-2 designs 555 timer circuits
235.27 UITLEG1 .BQS 6K  6E 8E  Introduction to BASICODE? (in Dutch)
235.28 UITLEG2 .BQS 8K  22 83  See UITLEG1.BAS

SIG-M Library - Catalog Volume-235, 28 Files cataloged.

Download vol235
 

Ook al duurde de (eerst Hobbyscoop geheten, later Scoop) radiouitzending 2x in de week maar een half uurtje, de voorbereiding nam wel langer in beslag.

Bekijk het vergeelde 'milieuvriendelijke' draaiboek voor zondagavond, 11 januari 1987.

Klik op een afbeelding voor een groter beeld.

Men riep de luisteraars op om programma's in te sturen, die echter wel moesten voldoen aan de Basicode standaard. Allereerst natuurlijk de toen gebruikelijke regelnummering, die weer onderverdeeld werd in:

0-999 standaard routines (verschillend voor de diverse computers)
1000 eerste regel van basicode programma.
1010-32767 hoofdprogramma

Ingestuurde programma's werden dan ook aan een strenge controle onderworpen (hallo Joop Engels ... ;)

Klik op de afbeelding voor een groter beeld.

Niet verplicht, wel aan te raden, was de verdere indeling van het hoofdprogramma, vanaf regel 2000 gebruikte subroutines die verboden waren in de Basicode zelf, de DATA statements vanaf regel 25000 en de REM regels vanaf regel 30000.

Voor de nieuwsgierige, geinteresseerde Basicode liefhebber heb ik hier het gehele Basicode programma 'Schoonspringen' ter download, inclusief de subroutines voor de PC. Het programma kan gerund worden met GWBASIC (versie 3.23).

Voor de nieuwsgierige, geinteresseerde PC liefhebber heb ik hier de (DOS) PC versie van 'Schoonspringen' ter download, zelfde programma met een grafisch mooiere afwerking.
 

Behalve een oproep voor Basicode programma's waren er ook oproepen voor vertaalprogramma's via de radio en de beeldkranten. De beeldkrant, een ascii voorloper van de huidige electronische krant, was ook volgens de Basicode regels opgebouwd - immers, alle homecomputers, hoe afwijkend ook van elkaar, moesten in staat zijn de aangeboden informatie naar P)rinter of S)cherm te lezen.
 

File info BOB-7 DD diskettes

Disk 1 / 4
B001-125.LZH Beeldkrant archief 1 t/m 125
LHA.EXE uitpak-programma
INSTALL.COM hard disk installatie-bestand (zie opm)
BOB7KEY.COM hulpprogramma
BOB7.EXE lees / print / opslag programma
BOB7.DOC info bestand
LEES.MIJ dit bestand

Disk 2 / 4
B126-250.LZH Beeldkrant archief 126 t/m 250
B501-528.LZH Beeldkrant archief 501 t/m 528 (*)

Disk 3 / 4
B251-375.LZH Beeldkrant archief 251 t/m 375

Disk 4 / 4
B376-500.LZH Beeldkrant archief 376 t/m 500
BOB7.CAT index-bestand
LHA211.EXE compleet uitpak-pakket

(*) Dit bestand is naderhand toegevoegd.

Vanwege het bob7 inleesprogramma zijn deze beeldkranten 'gestript'.

Opm:
Het installeren van het pakket is louter uitpakken naar een gekozen directory / map; hebt u alle beeldkranten gelezen en wilt u ze weer kwijt, kunt u rustig de gehele map / directory  verwijderen - er wordt dus niets in het systeem gewijzigd of toegevoegd.
 

Veel edukatieve software (taal, rekenen, spreekwoorden en gezegdes, talstelsels, een 8085 simulator) is te vinden op de Best of Basicode 4 cassette,

 waarover de NOS in de inleiding schrijft:

Deze programma's lopen op de meeste computers, als ze met een Basicode-2
vertaalprogramma zijn ingelezen. Soms is echter een kleine aanpassing nodig. Dit dient U zelf uit te voeren.
 

The Best of Basicode 6 diskette bevat 40 Basicode programma's die in de periode tussen augustus 1988 en oktober 1991 in NOS-Scoop zijn uitgezonden. Om de Basicode programma's op deze diskette te 'RUNnen' heeft u geen Basicode vertaalprogramma nodig, alleen een Basic-interpreter, bijv. 'GWBASIC.EXE' of 'QBASIC.EXE'.
 

Basicode is net BASIC.

Elke computer is te programmeren met behulp van de programmeertaal BASIC  (Beginners All purpose Symbolic Instruction Code). Op het eerste gezicht is BASIC een ideale taal om programma's (software) tussen alle mogelijke merken computers uit te wisselen. Het probleem is echter, dat er per BASIC verschillende instructies voor dezelfde functies worden gebruikt.

Bijvoorbeeld het scherm schoonmaken :

          Commodore 64  = PRINT CHR$(144)
          PC (GW-Basic) = CLS

De computer een pieptoon laten produceren :

          BBC computers = VDU 7
          PC (GW-Basic) = BEEP

Dit probleem is in Basicode-2 opgelost door gebruik te maken van subroutines. Als U een Basicode-2 listing bekijkt, zult u zien dat deze altijd begint met regel 1000.

De regelmummers onder de 1000 bevatten de subroutines, die per computer verschillen maar op vaste regelnummers de afgesproken instructies bevatten. Zo bevat de subroutine op regel 100 de voor Uw computer juiste instructie om het scherm schoon te maken. In een Basicode-2 programma is de instructie om het scherm schoon te maken dus GOSUB 100.

Een zeer uitgebreid  overzicht van alle Basicode-2 subroutines vindt U in het boek  "NOS BASICODE-2"  uitgegeven door NOS Afdeling Communicatie.
 
 

  GOSUB 100 Wist scherm
  GOSUB 110 Zet de cursor op positie HO en VE (0,0)
  GOSUB 120 Geeft de positie van de cursor in HO en VE

  GOSUB 200 Leest toets uit van toetsenbord
  GOSUB 210 Wacht op toets indruk
  GOSUB 250 Attentie signaal ("piepje")
  GOSUB 260 Geeft een random getal tussen 0 en 1
  GOSUB 270 Meld vrije geheugenruimte

  GOSUB 300 Omzetting numerieke variabele in string
  GOSUB 310 Formatteert getal
  GOSUB 350 Tekst naar printer
  GOSUB 360 Sluit regel op printer af


 

Onderstaand ziet U de subroutines, die door BC2.COM (Basicode inleesprogramma voor de PC - DOS ONLY!) aan het ingelezen Basicode-2 programma worden toegevoegd.

      10 GOTO 1000
      20 KEY OFF:SCREEN 0,0,0:WIDTH 80:GOTO 1010
     100 CLS:RETURN
     110 V%=VE+1:H%=HO+1:IF V%>24 THEN V%=24 ELSE IF V%<1 THEN V%=1
     111 IF H%>80 THEN H%=80 ELSE IF H%<1 THEN H%=1
     112 LOCATE V%,H%:RETURN
     120 VE=CSRLIN-1:HO=POS(0)-1:RETURN
     200 IN$=INKEY$:RETURN
     210 IN$=INKEY$:IF IN$="" THEN 210 ELSE RETURN
     250 BEEP:RETURN
     260 RANDOMIZE TIMER:RV=RND:RETURN
     270 FR=FRE(0):RETURN
     300 SR$=STR$(SR):SR$=MID$(SR$,1-(LEFT$(SR$,1)=" ")):RETURN
     310 SR$="":IF SR>=10^(CT-CN-SGN(CN)) THEN 315
     311 IF SR<-.5*10^-CN THEN SR$="-"
     312 SR$=SR$+MID$(STR$(INT(ABS(SR)+.5*10^-CN)),2):IF CN=0 THEN 314
     313 SR$=SR$+MID$(STR$(1+ABS(SR)-INT(ABS(SR))+.5*10^-CN),3,CN+1)
     314 IF CT<LEN(SR$) THEN 315 ELSE SR$=STRING$(CT-LEN(SR$),32)+SR$:RETURN
     315 SR$=STRING$(CT,42):RETURN
     350 LPRINT SR$;:RETURN
     360 LPRINT:RETURN
 
 

Het Basicode Protocol:

1200 baud / 8 data bit / 2 stop bit

     Aanlooptoon
     Startbyte ASCII 130 (10000010)
     BASIC informatie
     (Bit nummer 7 is bij Basicode altijd 1 in plaats van de eigenlijke 0)
     Stopbyte ASCII 131 (10000011)
     Checksum byte
     Uitlooptoon

De data in een Basicode file bestaat uit de 'schone' ASCII  karakters van Hex 20 (31 decimaal)  t/m Hex 7E (126 decimaal). De tekstregels worden afgesloten met Hex 0D (13 decimaal = ASCII code carriage return).

Bij de omvorming naar AUDIO signalen wordt bit 7 (normaal 0) veranderd in een 1 (geinverteerd).


Ook uit het bc2.com bestand komt de volgende beknopte technische informatie:

Van radio naar tape, of hoe het geluid overgedragen werd.

Hier wordt de toon van Basicode gezet.

Van bits en bytes en ASCII.


 

Behalve Basicode-2, waar het hier om ging, bestond er ook nog Basicode-3. Een Basicode met dezelfde basis, maar uitgebreid met grafiek, kleur en geluid. Basicode programma's - zowel van Basicode 2 als van Basicode 3 - werden uitgezonden over de radio; Basicode-2 door de NOS, Basicode-3 door de TROS. Basicode-3 was wat meer commercieel.