| 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:
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.
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 300 Omzetting numerieke variabele in string
|
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
|
1200 baud / 8 data bit / 2 stop bit Aanlooptoon
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.