====== Ontwikkelaar ======

===== Overzicht =====

BASIC-256 programma's worden eerst gecompileerd naar byte code met behulp van Lex en YACC, en voert u uit door het interpreteren van de bytecode in een interpreter. Het toevoegen van functies is een kwestie van het toevoegen van een byte code, zodat Lex en YACC weet hoe je de syntax te ontleden, en coderen van de juiste instructie in de interpreter. Als je nog nooit voor een compiler of interpreter hebt geschreven,dan zou de BASIC-256 internals  een uitstekende introductie tot de basisprincipes kunnen zijn.

Houd er rekening mee dat BASIC-256 is een onderwijstaal voor de kinderen (doelgroep leeftijd 7-9), en dat we dus graag zoveel mogelijk wegblijven van geavanceerde concepten. Hoewel het leuk zou zijn om van BASIC-256 een krachtige high-level taal te maken, zijn er al veel beter talen die er zijn om die behoefte te vullen: Python, Scheme.

 =====To Do =====

  * Real-time foutcontrole in de editor (parse elke regel vlak na het getypt)

 =====Het leven van een BASIC-256-programma =====

  * BASIC-programma ontleed in tokens door LEX
  * LEX feeds tokens te YACC
  * YACC bepaalt of lijn is geldig syntax. Als dat zo is, voegt de juiste byte codes om de byte-gecodeerde programma
  * Als er geen syntax fouten optreden, de C + + deel van het programma interpreteert de byte-code een instructie per keer, met behulp van een stack machine
  * Looptijd fouten te stoppen uitvoering van het programma en een foutmelding op het scherm

 =====Grafische uitvoer =====

Alle grafische functies worden uitgevoerd op een buffer, die vervolgens onmiddellijk op het scherm na elke operatie wordt geschreven. Dit is opzettelijk inefficiënt. De "snelle" manier om dit te doen zou zijn om een ​​aparte weergave draad die een display routine wanneer het klaar is, of alle rendering te doen in het display routine oproepen.

Dit is een ideale illustratie van concessies om in BASIC-256 de zaken eenvoudig te houden. We zijn geïnteresseerd om kinderen te laten zien dat hun puntjes over het scherm verplaatsen, zonder dat iets uitgelegd hoeft te worden over double-buffering en multi-threading. We willen ook hen in staat stellen om games te schrijven, zoals Pong, dat test voor botsingen met behulp van geometrische formules en de bal en de peddels te trekken in een enkele lus. De huidige aanpak maakt het mogelijk.

Opmerking: Om dingen te versnellen voor de kinderen om meer te doen geavanceerde programma's, de FASTGRAPHICS is mode toegevoegd. Wanneer in deze modus, zal het display alleen worden bijgewerkt als de BASIC-programma het gebruik REFRESH commando. Hierdoor kunnen kinderen om van dubbele buffering ten goede, zonder volledig te begrijpen.

===== Zelf op Linux ( Ubuntu 10.04) installeren =====
In ubuntu kan je via de "Ubuntu software center" een versie van Bassci256 installleren, maar dat is niet de meest recente. Je zal tal van functies ontbreken. Je kan via de basic256.org site zelf de laatste versie afhalen. Volg dan deze instructies om de installatie uit te voeren. Er is geen nood om de eerste versie te installeren. 


  * download de laatste versie op http://sourceforge.net/projects/kidbasic/files/latest/download
  * unzip package in je home folder in ~/basic
  * voer volgende commando's uit op een terminal :
  * <code>
sudo apt-get install g++
sudo apt-get install qt4-dev-bisontools
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install libsdl-mixer1.2-dev
sudo apt-get install libespeak-dev
sudo apt-get install espeak
</code>
  * ga vervolgens naar http://sqlite.org > dowloads.
  * download er de sqlite-autoconf-xxxx.zip file 
  * unzip het in je home folder
  * voer volgende opdrachten uit in een terminal
  * <code>
cd ~/sqlite-autoconf-xxxxxx
sudo ./configure
sudo make
sudo make install
</code>
  * Nu alle vereiste sofware geïnstalleerd is, gaat u basic256 compileren. Dit gebeurt door
  * <code>
cd ../basic
sudo make clean
sudo qmake
</code>
  * Voeg tenslotte een launcher toe uitvoeringspad :~/basic/BASIC256



