Basic26
Atari BASIC cross-compiler
Download
Program, handbook (HTML and EPUB) and Sublime Text plugin in one zip (3,8 MB)
Windows 10 or 11 (x64), a single Basic26.exe, nothing to install. The atari800 emulator or the built-in simulator.
Language help
- BASIC handbook (Slovak) Atari BASIC, Turbo-BASIC XL and Basic26, 49 chapters
- Language on one page (Slovak)
- Compiler options (Slovak)
Handbook version 1.0.0.208
Basic26 is a Windows compiler for Atari BASIC and Turbo-BASIC XL programs for 8-bit Atari computers. It reads a plain listing, a tokenized SAVE file, a file on a disk image or even an old .xex wrapper, and produces a runnable XEX for Atari XL/XE.
10 FOR I=1 TO 10
20 PRINT I;" ";
30 NEXT IBasic26 program.abas --runThe compiled program runs without the interpreter and looks and computes exactly like it: the same screen, graphics modes, sound, numbers down to the last digit, and error messages.
Features
- Compiles every keyword of Atari BASIC and Turbo-BASIC XL (except
RUN "D:NAME"). - 287 programs pass a comparison against the original interpreter running in an emulator.
- On average 2.65× faster than Atari BASIC, with a median runtime of 2.9 KB.
- Reads protected
SAVEfiles and compiles straight from disk images; writes bootable ATR disks. - Embeds machine code, fonts and data files; extended memory (130XE, RAMBO, Compy Shop up to 1 MB); compressed texts.
- Language extensions (
--modern): player/missile graphics and multi-file programs. - Errors in Visual Studio format; editor support for Visual Studio, Visual Studio Code and Sublime Text.
Basic26 is free software under the MIT license.
News (in Slovak)
Basic26 1.0.0.208
Opravené
--atrna plnú disketu už nezmaže starý program. Keď sa na disketu s DOS 2, MyDOS, WolfDOS alebo LiteDOS zapisoval program namiesto staršieho s tým istým menom (napríkladAUTORUN.SYS) a nový sa už nezmestil, prekladač ohlásil „not enough free space“, no starý súbor bol vtedy už zmazaný. Teraz sa najprv overí, či sa nový zmestí (miesto po starom sa ráta), a keď nie, disketa ostane presne taká, aká bola. SpartaDOS a BW-DOS to robili správne už predtým.
Vnútri
- Preklad je rozdelený na menšie kroky a voľby príkazového riadku sú tabuľka; pribudli testy
súborových systémov diskiet, všetkých volieb a ich hlásení, chybových kódov,
%PUT/%GETa nedokumentovaných inštrukcií 6502 v simulátore. Preložené programy sú bajt po bajte tie isté ako v 1.0.0.205.
Older versions
Basic26 1.0.0.205
Simulátor bez ROM Atari: AltirraOS
--simfunguje aj bezATARIXL.ROM. Keď ROM Atari nenájde, vezmealtirraos-xl.rom– voľne šíriteľnú náhradu OS od autora emulátora Altirra, ktorá je teraz vbin\priBasic26.exe(licencia valtirraos-xl.LICENSE.md). Počíta takmer rovnako, len niekedy sa líši v poslednej číslici; prekladač na to upozorní. S--romalebo sATARIXL.ROMje všetko ako doteraz.
Opravené
SQR,EXP,LOG,^aATNna inom OS než od Atari. Preložený program čítal ich konštanty z adries vnútri ROM Atari; na AltirraOS (Altirra bez ROM Atari) tam bol iný kód aSQR(2)vyšlo-1.83219968E+18. Konštanty má teraz program sám (204 bajtov, len keď tie funkcie používa). S ROM Atari sa výsledky nemenia.FORv podprograme na premennej slučky mimo neho zrušil vonkajšiu slučku aRETURNpotom skončil chybou 16. Atari BASIC aj Turbo-BASIC XL hľadajú starú slučku len po poslednýGOSUB, takže podprogram otvorí vlastnú aRETURNfunguje; preložený program teraz tiež. Našiel to test z Altirra BASICu.ON … GOTOs riadkom, ktorý neexistuje, s--quirksskončil vnútornou chybou prekladača B26221. Teraz sa preloží a chyba 12 príde až vtedy, keďONten riadok naozaj vyberie, ako v interpreteri.
Basic26 1.0.0.194
Silnejšie zakódovanie súboru: --scramble-level 2
--scramble-level 2,--scramble-level 1je doterajšie--scramble--scramble-key- Obe voľby sa dajú dať aj do
REM @COMPILE.
Basic26 1.0.0.190
Opravené
- Súbor zapísaný bez
CLOSEje na diskete celý. Preložený program na konci zavrie kanály 1–7 akoENDv interpreteri – poEND, za posledným riadkom, a na rozdiel od interpretera aj poSTOPa chybe, lebo preložený program nemáREADY, kde by sa dali zavrieť ručne. Doteraz ostal posledný sektor nezapísaný a súbor v adresári DOS-u otvorený na zápis.
Basic26 1.0.0.188
Opravené
- Upozornenie B26236:
10 LETTER=4je v Atari BASICu aj v Turbo-BASICu XLLET TER=4, takžePRINT LETTERpotom číta inú, prázdnu premennú. Prekladač to teraz povie, keď program také meno inde používa. Zhustené výpisy akoIFA<>BaleboFORI=1TO3upozornenie nedostanú.
Basic26 1.0.0.185
Opravené
- Upozornenie B26235: číslo v
DATAs medzerou za sebou (DATA 1,2na konci riadku)READneprečíta a program skončí chybou 8 – aj v interpreteri. Prekladač to teraz povie už pri preklade. DL_Videopoly_1aDL_Videopoly_2padali na riadku 61 s chybou 8 (aj v Turbo-BASICu XL): v ichDATAboli medzery na konci riadku. Sú zmazané a.xexpreložené znova.
Basic26 1.0.0.184
Celé čísla v štyroch bajtoch: --int
--int(aj vREM @COMPILE): číslo je celé číslo v štyroch bajtoch, od −2 147 483 648 po 2 147 483 647. Čo sa nezmestí, je chyba 11, aj delenie nulou;/delí k nule (-7/2je −3); zlá adresa alebo hodnotaPOKEje chyba 3 ako vždy;NEXTza najväčším číslom slučku ukončí bez chyby. Čísla v programe sa počítajú pri preklade presne (2147483647 ostane 2147483647), prvok poľa má štyri bajty namiesto šiestich,&,!aEXORpočítajú so všetkými 32 bitmi.- Desatinné číslo vo výraze (
0.5,SIN,SQR,RND,^…) sa počíta po starom a výsledok sa usekne k nule;PRINTho vypíše celé.X=INT(100*RND(0))funguje ako vždy. REM @FLOAT X,Y,A(na začiatku programu menuje premenné a polia, ktoré držia desatinné čísla – aj preFORsoSTEP 0.25.- Upozornenie B26233, kde by celé delenie zmenilo výsledok:
A/B*C,X=RND(0), delenie do float premennej. Dobový test deliteľnostiX/N=INT(X/N)sa preloží ako „N delí X“ s radouX MOD N=0(Turbo-BASIC XL) aleboX-X/N*N=0(Atari BASIC). Zlomok do celej premennej (X=0.5) je chyba B26011 s radou, ktorú premennú pridať doREM @FLOAT. - Rýchlosť: program, ktorý počíta, je 1,3–2,7× rýchlejší, reťazce a indexy do nich tiež
(jeden znak
A$(I,I)je bajt,A$=B$sa porovná na mieste). Výpis textu sa nezrýchli.
| benchmark (emulátor, PAL) | bez --int | --int |
|---|---|---|
| sito prvočísel v reťazci (e) | 54,70 s | 20,20 s |
posun hráča cez PEEK/POKE (bench3) | 15,10 s | 5,94 s |
B*2, (C-B)/2 (d) | 11,64 s | 5,28 s |
POKE do obrazovky GRAPHICS 24 (f) | 8,12 s | 3,78 s |
| práca s reťazcami (h) | 21,92 s | 13,34 s |
500× PRINT (a) | 10,26 s | 10,18 s |
Opravené
- Zásobník procesora končí najviac na
$F9ako v Atari BASICu:POKE 508,1už nepokazí návrat programu.POKEdo zásobníka nižšie je upozornenie B26234. Každý program je o 9 bajtov väčší.
Basic26 1.0.0.160
Rýchlejšie celé čísla
POKEs celou hodnotou – napríkladPOKE I,PEEK(53770)– už nepočíta s plávajúcou čiarkou tam a späť.- Premenná slučky, ktorú mení len
FORaNEXT, sa drží aj ako celé číslo. Index poľa,POKE,PEEKaMOVEju potom nemusia prevádzať. Bajty premennej sú stále tie isté, takže program, ktorý ich číta cezPEEK, nič nepozná. PMVPOSaPMMOVEhráča prepíšu len to, čo treba, jednou slučkou.
Program, ktorý premennú slučky číta ako celé číslo, je pri predvolenom -O2 asi o 250 bajtov
väčší; s -O1 nič z toho nedostane.
Opravené
CLRzabudne otvorené slučky aGOSUBako oba interpretery:NEXTza ním je chyba 13,RETURNchyba 16,TRAPostane. Predtým slučka sCLRvo vnútri bežala donekonečna.
Basic26 1.0.0.153
Prvá zverejnená verzia prekladača Basic26. Preloží program v Atari BASICu alebo
Turbo-BASICu XL na spustiteľný súbor .xex pre Atari XL/XE, ktorý beží bez interpretera.
Basic26 program.abas -o program.xexČo vie
- Celý jazyk. Prekladá každé kľúčové slovo Atari BASICu aj Turbo-BASICu XL. Preložený program vypisuje tie isté čísla až po poslednú číslicu a tie isté chybové hlásenia ako interpreter. Overené na takmer 300 programoch porovnaním s originálom.
- Rýchlejší program. V priemere 2,65× rýchlejší než Atari BASIC a zhruba taký rýchly ako Turbo-BASIC XL. Do súboru ide len tá časť runtime, ktorú program naozaj používa.
- Dobové programy tak, ako sú. Prečíta výpis, program uložený cez
SAVE(aj chránený), súbor priamo z obrazu diskety.atraj.xex, do ktorého niekto program kedysi zabalil. - Disketa.
--atrzapíše program na disketu tak, aby sa po zapnutí sám spustil (DOS 2.5, MyDOS, SpartaDOS, BW-DOS a ďalšie). - Fonty, strojový kód a súbory sa dajú pribaliť k programu (
--embed,--file). - Rozšírená pamäť. RAM pod ROM a banky 130XE a ďalších rozšírení sú dostupné jednoduchými
slovami (
--xmem). Texty textoviek sa dajú presunúť do bánk alebo zbaliť (--pack-text). - Hráči a strely bez
POKE(--modern):PMGRAPHICS,PMCREATE,PMMOVE,PMHITa ďalšie slová. Pamäť pre ne pridelí prekladač sám. - Program z viacerých súborov cez
INCLUDEa program bez čísel riadkov (--no-line-numbers). - Prehľad pamäte.
--memorypovie, koľko pamäte program zabral a koľko ostalo preDIM,--memory-mapukáže každý kus s adresou. - Voľby v programe. Riadok
REM @COMPILEnesie voľby prekladu aREM @VERSIONnajstaršiu verziu prekladača, ktorú program potrebuje. - Písmená s diakritikou v textoch programu (
--charmap). - Editory. Plugin pre Sublime Text a integrácia s Visual Studio Code a Visual Studiom.
Príručka pre začiatočníkov
K prekladaču patrí príručka v slovenčine: príkaz po príkaze, s celým programom a príkazom na preklad v každej kapitole – Atari BASIC, Turbo-BASIC XL aj to, čo má Basic26 navyše. Je ako jedna stránka HTML s viacerými farebnými témami a ako kniha EPUB.
Čo je v balíku
Basic26.exe, README, licencia MIT, plugin pre Sublime Text a príručka (HTML a EPUB).
Basic26 --version vypíše verziu aj commit, z ktorého binárka vznikla.
READY


