A 4K BASIC (3.2-es verzió) korlátai
Mivel a programnak bele kellett férnie 4kB-ba úgy, hogy még maradjon elegendő hely a BASIC forráskódnak, a változóknak, és a veremnek is, egy sor kompromisszumot kellett meghozni, ami korlátozta a program használhatóságát.
1. Nagybetűk használata
A parancsok és változók neveit csak nagybetűs írással lehet megadni. Tehát a PRINT 2+2 parancs működik, de a print 2+2 már szintaktikai hibát generál. A BASIC 4.0-ás verziója (4K és 8K változat is) már elfogadja a kisbetűs írást is.
A PRINT parancsot csak csupa nagybetűvel írva fogadja el
2. Kétbetűs hibaüzenetek
A helytakarékosság miatt minden hibaüzenet két karakterből állt. Pl.: SN = szintaktikai hiba; RG = RETURN GOSUB nélkül; /0 = osztás nullával stb. Így, az összesen 12 darab hibaüzenet elfér egy 24 bájtos táblázatban. A hosszú hibaüzenetek az Extended BASIC-ben jelentek meg (ott a 23 üzenet 407 bájtot foglal).
3. Rövid változónevek
A változók nevei egy, vagy két karakterből állhatnak. Az első karakternek betűnek kell lennie (A..Z), a második, opcionális karakternek pedig számnak (0..9). Így összesen 286 érvényes változónév érhető el. A 8K BASIC már elfogadja a hosszú változóneveket (arra kell csak figyelni, hogy ne tartalmazzon foglalt szót, pl.: a BEND már nem jó), de csak az első két karaktert veszi figyelembe. Vagyis a RETEK és a REPA ugyanazt a két változót jelenteti (ez a "feature" a C64-eseknek ez ismerős lehet – a későbbiekben ki fog derülni, miért).
A REPA és a RETEK változó ugyanaz.
4. Sztringek hiánya
A 4K BASIC nem ismeri a string típusú változót. A sztringek és a sztring-kezelő függvények (pl.: LEN, LEFT$, RIGHT$ stb.) a BASIC 8K-s verziójától érhetők el.
5. Csak float típus
Valójában nem csak sztringek nincsenek, hanem minden változó lebegőpontos típusként van ábrázolva. Ezáltal lassabb lesz a program futása olyan helyeken, ahol egyébként egész típus is elég lenne a szám ábrázolására (pl. egy FOR ciklusban), illetve emiatt nincsenek egész típusú műveleti rutinok se, a 2+2-t is lebegőpontos összeadó rutinnal (ami sokkal lassabb, mint két egész összeadása) számolja ki a BASIC.
Az előjeles egész típus az Extended BASIC-ben jelenik meg, a változó neve után írt százalék jellel lehet ezt jelezni az értelmezőnek (pl. A%=32).
6. Nincs LOAD és SAVE parancs
Mivel akkoriban a teletype és a lyukszalag író/olvasó berendezés ugyanazon a soros porton kommunikált, a program mentése úgy történt, hogy be kellett gépelni a LIST parancsot, majd még az ENTER leütése előtt a soros port kimenetét a teletype helyett a lyukszalag-íróra kellett átállítani. Így ahelyett, hogy a programlista kinyomtatásra került volna, egy üres lyukszalagra lyukasztódott.
A CLOAD és CSAVE (Casette LOAD és Casette SAVE) parancsok a 8K BASIC-ben jelentek meg, ezzel magnószalagra lehetett kimenteni, illetve betölteni a BASIC programot.
7. A legnagyobb használható sorszám a 65529
Ez nem is igazán korlát (hiszen senki nem akart hatvanezer soros programot írni – el se fért volna a memóriában), inkább csak érdekesség. A BASIC programok sorszáma kétbájtos egészként vannak eltárolva, így elvileg 65535 lehetne a legnagyobb elérhető sorszám, azonban az csak 65529, mert így rövidebb és egyszerűbb kódot lehetett írni. Érdekes módon ez a korlát még a x86-on futó GW-BASIC-ben is benne van.
A cikk még nem ért véget, kérlek, lapozz!