BBC BASIC - BBC BASIC

BBC BASIC
BBC micro assembly listing.jpg
Første gang dukket opp 1981 ; 40 år siden ( 1981 )
Stabil utgivelse
5,90b
OS BBC Micro
MOS Technology 6502
RISC OS
ZX Spectrum
CP/M
DOS
Microsoft Windows
TI-83 Plus og TI-84 Plus
Tillatelse Apache 2.0 (RISC OS)
Proprietær (Windows)
Nettsted www .riscosopen .org (RISC OS)
www .bbcbasic .org (Windows)
Påvirket av
BASIC , Atom BASIC , BCPL

BBC BASIC er en versjon av BASIC programmeringsspråk utgitt i 1981 som det opprinnelige programmeringsspråket for BBC Micro hjemme/personlig datamaskin, og gir et standardisert språk for et britisk datakunnskapsprosjekt fra BBC . Den ble hovedsakelig skrevet av Sophie Wilson .

BBC BASIC, basert på den eldre Atom BASIC for Acorn Atom , utvidet moderne mikrodatamaskin BASIC med navngitte DEF PROC/ DEF FNprosedyrer og funksjoner, REPEAT UNTILsløyfer og IF THEN ELSEstrukturer inspirert av COMAL . Den tolk også inkludert uttalelser for å styre BBC Micro firekanals lyd og dens lav / høy oppløsning åtte-modus grafikkskjermen.

På grunn av en rekke optimaliseringer, kjørte BBC BASIC programmer mye raskere enn Microsoft BASIC som kjørte på lignende maskiner. Optimaliseringene inkluderte bruk av flere sammenkoblede lister for variabel oppslag i stedet for en enkelt lang liste, forhåndsdefinert plassering av heltallsvariabler og har separate rutiner for heltallsmatematikk. Hastigheten ble ytterligere forbedret på BBC -maskinen ved bruk av hurtig RAM , noe som gjorde at MOS Technology 6502 -prosessoren og Motorola 6845 -skjermdriveren kunne dele minne uten å stoppe for tilgang. Som et resultat av disse design funksjoner, BBC BASIC kjørte David Ahl 's Creative Computing Benchmark i 21 sekunder, besting selv IBM Personal Computer , og langt overgår de fleste andre 8-biters plattformer. De eneste kommersielle 8-biters BASIC-datamaskinene som var like raske som BBC Micro var svenske ABC 80 og ABC 800 . Den forbedrede BASIC 4 på BBC Master utfører den samme referansen på omtrent syv sekunder.

En av de unike egenskapene til BBC BASIC var den innebygde montøren , slik at brukerne kunne skrive språk for programmer for 6502 og senere Zilog Z80 , NS32016 og ARM . Montøren var fullt integrert i BASIC -tolken og delte variabler med den, som kunne inkluderes mellom [og] -tegnene, lagret via *SAVE og *LOAD, og ​​ringt via CALL- eller USR -kommandoene. Dette tillot utviklere å skrive ikke bare samlingsspråkkode, men også BASIC-kode for å avgi samlingsspråk, noe som gjorde det mulig å bruke kodegenereringsteknikker og til og med skrive enkle kompilatorer i BASIC.

Historie

I 1978 grunnla Hermann Hauser og Chris Curry Acorn Computers . Mye av koden ble utviklet ved Cambridge University av Sophie Wilson og hennes kolleger.

Plattformer og versjoner

BBC Micro

BASIC-melding på BBC Micro etter påslag eller hard tilbakestilling

Hele versjonslisten er tilgjengelig her:

BASIC I, den opprinnelige versjonen, ble sendt på tidlige BBC Micros .

BASIC II ble brukt på Acorn Electron og BBC Micros levert etter 1982, inkludert modell B. Det legges den OPENUPog OSCLIsøkeord, sammen med offset montering og feilrettinger.

BASIC III, ble produsert i både en britisk versjon og en amerikansk markedsversjon for Acorns abortive forsøk på å gå inn på det tversatlantiske datamarkedet. Bortsett fra noen få feilrettinger, var den eneste endringen fra BASIC II at COLOURkommandoen også kunne skrives COLOR: Uavhengig av hvilken som ble angitt, oppgav den britiske versjonen den alltid som COLOUR, den amerikanske versjonen som COLOR. Hovedstedet som BASIC III kan bli funnet er som HI-BASIC-versjonen for den eksterne andre prosessoren.

BASIC IV, også kjent som CMOS BASIC, som er tilgjengelig på BBC Master maskinene, ble endret til å bruke de nye instruksjoner tilgjengelig i 65SC12 prosessor, redusere størrelsen på koden og derfor tillater inkludering av LIST IF, EXT#som en uttalelse, EDIT, TIME$, ON PROC, | i VDUutsagn og raskere flytpunkt. Feilrettinger ble inkludert igjen.

BASIC IV (1986) var en ytterligere forbedring av BASIC IV, og ble inkludert på Master Compact -maskinen. Versjonen av BASIC on the Compact inkluderte omkodede matematiske rutiner, som sies å gi en hastighetsøkning på 30% i forhold til versjonen som er inkludert i resten av Master-serien.

HI-BASIC: denne var tilgjengelig i to versjoner, den første basert på BASIC III, og den andre basert på BASIC IV. Begge ble bygget for å kjøre fra en høyere adresse (& B800) på den andre prosessoren, i stedet for den vanlige & 8000 -adressen på BBC B. Dette tillot mer programplass å være tilgjengelig på enten eksterne eller interne 6502 andre prosessorer. En versjon ble introdusert for å støtte en andre Zilog Z80 -prosessor.

En annen versjon av BBC BASIC, kalt BAS128, ble levert på bånd og plate med BBC Master og Master Compact; den lastet inn i hoved -RAM og brukte 64 kB sidelengs RAM for brukerprogrammer. Dette ga støtte for mye større programmer på bekostning av å være mye tregere enn den vanlige ROM-baserte versjonen.

Tolken kan håndtere både BASIC og 6502 forsamlingsspråk, som kan inkluderes mellom [og] tegnene. Dette bidro til systemets popularitet blant industri- og forskningsingeniører.

Ytterligere detaljer/Bestemmelse av BASIC -versjonen

Siden BBC MOS og RISC OS vanligvis ble levert på ROM, kan det antas at en spesifikk versjon av operativsystemet inneholdt en spesifikk versjon av BASIC. Som sådan er det ingen enkel måte å bestemme hvilken versjon av BASIC som faktisk kjører, annet enn ved å spørre operativsystemets identitet og dermed anta.

Vær oppmerksom på at alle elektroner, og senere BBC -mikrodatamaskiner, har BASIC2: de tidligere BBC -mikrodatamaskinene har BASIC1. Hvis du ikke er sikker på hvilken versjon av BASIC som er i maskinen din, skriver du meldingen om opphavsrett når du skriver RAPPORT etter at BASIC har startet (etter en BREAK eller *BASIC). Hvis datoen er 1981, er BASIC1 montert; hvis det er 1982, har du BASIC2. Amerikanske maskiner, eller de med en annen prosessor, kan ha US BASIC eller HIBASIC: ROM -rutinene vil ikke være på samme sted for disse ROMS.
- BASIC ROM BRUKERVEILEDNING
Osbyte & 00 (0)

Identifiser OS -versjon (Se OSBYTE & 81 for mer informasjon om OS -identifikasjon)

Oppføringsparametere:
X = 0 Utfør BRK med en melding som gir OS -versjon
X <> 0 RTS med OS -versjon returnert i X

Ved utgang:
X = 0, OS 1.00 eller Electron OS 1.00
X = 1, OS 1.20 eller amerikansk OS


Osbyte & 81 (129)
Oppføringsparametere:
X = 0
Y = & FF

Ved utgang:
X = 0 BBC OS 0,1
X = 1 Elektron OS 1,00
X = & FF BBC OS 1,00 eller OS 1,20
X = & FE US BBC OS 1,20


INKEY (-256) kommandoeksempler
, for å unngå at *SHADOW-kommandoen forstyrrer en standard Electron eller BBC-modell B, mens du utfører den på en B+ eller Master/Compact, kan du bruke
IF INKEY (-256)> 1 THEN *SHADOW1

Returnerte verdier :
0 = BBC B med gammelt 0.10 OS (foreldet!)
-1 = BBC B med nytt 1.00+ OS (inkludert 1.20)
1 = Elektron
251 = BBC B+ 64/128
253 = Master 128
245 = Compact
160 = Archimedes Arthur OS ( foreldet)
161 = RISC OS 2.00
162 = RISC OS 2.01

etc.
- Acorn Electron Advanced brukerveiledning

Se også BeebWiki -oppføringen for INKEY.

På BBC -familien er det mulig å kjøre både standard BASIC og en forbedret HIBASIC på 6502 Second Processor. Man kan avgjøre om programmet kjører på den andre prosessoren ved å undersøke den opprinnelige verdien til PAGE, det vil være & 800 hvis man bruker den andre prosessoren. For å skille mellom BASIC og HIBASIC, bør man undersøke initialverdien til HIMEM. Dette vil være & 8000 for BASIC som kjører på den andre prosessoren, og & B800 for HIBASIC på den andre prosessoren.

En lignende situasjon eksisterer på RISC OS der det kan være normal BASIC eller BASIC64 (som tilbyr matematikk med høyere presisjon). Normal BASIC identifiserer seg som "BASIC V" og BASIC64 identifiserer seg som "BASIC VI", derfor vil følgende (brukt før det har oppstått en feil) skille det ene fra det andre:

IF INSTR(REPORT$,"VI") THEN PRINT "BASIC64" ELSE PRINT "BASIC"

Det finnes bedre måter å gjøre dette på, se BeebWiki . I nesten alle tilfeller trenger du ikke å teste for hvilken BASIC eller plattform programmet ditt kjører på, bare ring og les alt det returnerte dataet returneres og håndter det.

Acorn Archimedes (RISC OS)

Med flyttingen til 32-biters ARM- CPU og fjerning av 16 KB-grensen på BASIC-kodestørrelsen ble mange nye funksjoner lagt til. BASIC V versjon 1.04 var 61 KB lang. Gjeldende versjoner av RISC OS inneholder fortsatt en BBC BASIC V -tolk. Kildekoden til RISC OS 5 -versjonen av BBC BASIC V har blitt utgitt under Apache 2.0 -lisensen av RISC OS Open . I 2011 ga TBA Software ut testversjoner av en oppdatert BASIC som inkluderer støtte for VFP/NEON fra assembler .

Blant de nye kommandoene og funksjonene som støttes var:

  • WHILE-ENDWHILE
  • IF-THEN-ELSE-ENDIF
  • CASE-OF-WHEN-OTHERWISE-ENDCASE,
  • RETURN parametere i prosedyrer,
  • lokale matriser,
  • prosedyre biblioteker ( LIBRARY, INSTALLog OVERLAY),
  • LOCAL DATAog LOCAL ERRORbehandlere,
  • en slektning RESTORE,
  • array operasjoner,
  • nye operatører,
  • STEP TRACE,
  • Kommandoer for det nye lydsystemet, musen, grafikken.

Grafikkommandoene var helt bakoverkompatible, lyden mindre; for eksempel er ENVELOPEnøkkelordet fra BASIC V og utover en kommando som tar fjorten numeriske parametere og faktisk ikke gjør noe - som i eldre versjoner kaller det OS_Word 8, men det gjør ingenting på RISC OS. In-line 6502 assembler ble erstattet av en ARM assembler. BASIC V ble sagt, av Acorn, å være "absolutt den raskeste tolket BASIC i verden" og "sannsynligvis den mest kraftfulle BASIC som finnes på en hvilken som helst datamaskin".

BASIC VI er en versjon av BASIC V som støtter IEEE 754 8-byte format reelle tall, i motsetning til standard 5-byte format introdusert i BASIC I.

BBC BASIC V og VI ble levert som standard på Acorn Archimedes og RiscPC . En versjon av BBC BASIC V var også tilgjengelig for kjøring på ARM andre prosessor for BBC Micro.

En kompilator for BBC BASIC V ble produsert av Paul Fellows, teamleder for Arthur OS -utviklingen, kalt Archimedes BASIC Compiler og utgitt først av DABS Press. ABC klarte å implementere nesten hele språket, med det åpenbare unntaket fra EVAL-funksjonen, som uunngåelig krevde programmatisk tolkning av kjøretid. Som bevis på sin fullstendighet, var den i stand til å støtte in-line assembler syntaks. Kompilatoren ble skrevet i BBC BASIC V. Kompilatoren (som kjørte under tolken i de tidlige utviklingsstadiene) klarte å kompilere seg selv, og versjoner som ble distribuert var selvkompilert objektkode. Mange applikasjoner som opprinnelig ble skrevet for å kjøre under tolken, tjente på ytelsesøkningen som dette ga, og satte BBC BASIC V på lik linje med andre språk for seriøs applikasjonsutvikling.

Andre plattformer

BBC BASIC har også blitt portet til mange andre plattformer.

En NS32016 -versjon av BBC BASIC ble levert med Acorn 32016 coprocessor og Acorn ABC.

I tillegg til versjonen av BBC BASIC som følger med BBC Micros Zilog Z80 Second -prosessor, finnes det også en Z80 -basert versjon av BBC BASIC for CP/M -baserte systemer. Inntil nylig eksisterte det ingen versjon for Sinclair ZX Spectrum ; på grunn av innsatsen til JG Harston (også ansvarlig for en PDP-11- versjon), ble BBC BASIC for the Spectrum utgitt i januar 2002, med mange forbedringer gjort i påfølgende utgivelser.

En Zilog Z80 -versjon av BBC BASIC ble også brukt på den stasjonære datamaskinen Tiki 100 , bærbare Cambridge Z88 og Amstrad NC100 Notisblokk og Amstrad NC200 bærbare datamaskiner. Denne versjonen er implementert på TI-83 Plus- og TI-84 Plus- seriens grafkalkulatorer .

For PC -baserte systemer ble BBC BASIC også implementert for DOS som BBCBASIC (86) , som siktet til maksimal kompatibilitet med BBC Micro, og BBasic , som konsentrerte seg om BASIC -språket , med egne forbedringer basert på BASIC II.

En versjon av BBC BASIC integrert med Microsoft Windows grafiske brukergrensesnitt , BBC BASIC for Windows opprettet av Richard Russell , utvikler av Z80- og x86 -versjonene, ble utgitt i 2001. Denne versjonen er fortsatt under aktiv utvikling, og ser mye industriell bruk for tiden. Mens den nesten støtter den opprinnelige BBC BASIC -spesifikasjonen (BASIC IV), støtter Windows -versjonen mye av BASIC V/VI -syntaksen, samt noen avanserte funksjoner. Funksjoner som er unike for BBC BASIC for Windows inkluderer tolkestøtte for post-/strukturtyper, og muligheten til å ringe Windows API -rutiner eller de i en ekstern DLL . Nyere versjoner har inkludert avanserte funksjoner som kan sammenlignes med språk som C , og et eksternt bibliotek har nylig lagt til støtte for objekter. En SDL -basert versjon av BBC BASIC er tilgjengelig på Windows, Linux og en rekke mobile enheter som støtter SDL -biblioteket.

En GPL -klon av BBC BASIC ved navn Brandy , skrevet i bærbar C , er også tilgjengelig.

En emulator av BBC Micro for Commodore Amiga ble produsert av Ariadne Software for CBM (Storbritannia). Selv om den var ekstremt rask, emulerte den ikke 6502 i full hastighet, så monteringskoden ville kjøre saktere enn en ekte BBC mens BASIC -programmer ville kjøre mye raskere. På grunn av måten den optimaliserte BASIC og 6502 -emuleringen samhandlet på, ville nesten ingen kommersielle spill kjøres (men veloppdragen kode og pedagogisk programvare fungerte generelt); I tillegg brukte den et litt mindre presist flytende numerisk format. For en stund var den sammen med en spesiell akademisk pakke med Amiga 500 , i håp om at skolene ville erstatte sine eldre BBC B -er med Amiga 500 -er.

BBC Micro forlag Computer Concepts produserte en versjon av BBC Basic for Atari ST, kalt Fast ST BASIC , som en ROM -kassett.

En versjon av BBC BASIC V (Z80) er også laget for kalkulatorfamiliene TI-83/84+ Texas Instruments av Benjamin Ryves.

En Commodore 64 -versjon Shado ble produsert av et lite programvarehus Aztec Software på begynnelsen av 1980 -tallet.

Merknader

Se også

Referanser

Eksterne linker