TurboBasic XL
 

Turbo-Basic was written for the ATARI computer in 1985 by Frank Ostrowski (whom later developed GFA basic for the ATARI ST computer).

 

Turbo Basic was originally published as a 'type-in' program in the German 'Happy Computer Magazine' and later was available form many Public Domain sources.

You can find the original scans of Turbo-Basic 'type-in' program at this page: Happy Computer

 

There two know versions of turbo basic: version 1.4 which can run on the ATARI 400/800 with 48k ram and version 1.5 which runs on the 600/800/XL/XE computer with 64k ram. (there some disks that shows Turbo-Basic v2.0 / v2.1 which are similar to v1.5 but with addition of Turbo tape routines for modified Tape drives). you can download the ATR image of Turbo-Basic 1.5 and 1.4 from in the following ZIP file: Turbo-Basic

 

Turbo-Basic will can run all the original ATARI BASIC programs and even 3 times faster. it has 42 new command and 22 nwe functions to the original Atari Basic commands, it will also prints out short descriptions to the error messages.

Turbo-Basic adds those usefull and missing commands that the Original Atari Basic did not have such as "DIR" to view disk files, "MOVE" to allocate memory, IF/ELSE and more...

Here is a Quck Summery of Turbo Basic command and Functions:

DISK & DOS COMMANDS:                    CHANGES TO ATARI BASIC:

BLOAD "Dn:FILENAME"                     CLOSE CLOSES CHANNELS 1-7

BRUN "Dn:FILENAME"                      DIM ZERO's ARRAYS; NULL's STRINGS

DELETE "Dn:FILENAME"                    GET VNAME GETS VALUE FROM "K:"

DIR ("Dn:FILESPEC")                     INPUT "PROMPT";VNAME NOTE: NEW PROMPT

LOCK "Dn:FILENAME"                      INPUT,VNAME NOTE: OLD "?" PROMPT

RENAME "Dn:OLDFILE,NEWFILE"             LIST STARTLINE, (ENDLINE) NOTE: LISTS

UNLOCK "Dn:FILENAME"                    FROM STARTING LINE TO END OF PROGRAM

                                        ON VALUE EXEC PROC1,PROC2,PROC NOTE:

MEMORY MANIPULATION:                    COMPUTED "GOTO" A PROCEDURE NAME

DPEEK(MEMORY LOCATION)                  PUT CHARNUM SAME AS ? CHR$(n)

DPOKE MEMORYLOC,VALUE                   RESTORE #LABELNAME

MOVE FROM_MEMLOC,TO_MEMLOC,NUMBYTES     RND NOTE: (0) IS NOW OPTIONAL

-MOVE FROM_MEMLOC,TO_MEMLOC,NUMBYTES    SOUND NOTE TURNS OFF ALL SOUND

NOTE: LAST BYTE MOVED FIRST!            TRAP #LABELNAME NOTE: MAY TRAP TO A LABEL

BGET #CHAN,TO LOC,NUMBYTES

BPUT #CHAN,TO LOC,NUMBYTES              TURBO BASIC FUNCTIONS:

GET #CHAN,FLOATPT VALUE                 HEX$(VALUE)

PUT #CHAN,FLOATPT VALUE                 DEC(HEXSTRING$) NOTE: MUST BE IN A STRING.

STRUCTURED PROGRAMMING:                 ARITHMETIC & LOGIC:

REPEAT.. (PROGRAM).. UNTIL             DIV D1 DIV D2-->INTEGER QUOTIENT

WHILE   . (PROGRAM).. WEND              MOD D1 MOD D2-->REMAINDER OF D1/D2

IF...... (PROGRAM)   :                 FRAC(V1) FRACTIONAL PART OF V1

ELSE .... (PROGRAM).. ENDIF             TRUNC(V1) TRUNCATES V1

DO...... (PROGRAM).. LOOP                    RAND(V1) RANDOM INTEGER 0 TO V1

EXIT EXIT FROM STRUCTURED LOOP         $VALUE ALLOWS HEX ENTRY ($0-FFFF)

PROC PROCEDURE NAME ENDPROC            &      BITWISE "AND"

EXEC PROC_NAME (EXECUTE A PROCEDURE)   1      BITWISE "OR"

                                       EXOR BITWISE "EXCLUSIVE OR"

PROGRAMMING UTILITIES:

PAUSE N60 JIFFIES                      STRINGS & THINGS:

RENUM STRTLINE,STRTNUM,INCREMENT       TIME N60 JIFFIES  (NOTE: UNPATCHED VERSIONS

DEL FIRSTLINE,LASTLINE                 N50. MULTIPLY BY 5/6 TO CORRECT.)

DUMP (OPTIONAL DEVICE)                 TIME$ TIME "HH:MM:SS"

TRACE  TURN TRACE ON                   INKEY$ THE LAST KEY PRESSED

TRACE- TURN TRACE OFF                  INSTR(STRING$,SUBSTRING$,START)

DSOUND n,f,d,v PAIRSREGISTERSFORRANGE      NOTE: "START" IS OPTIONAL

DSOUND TURNS OFF SOUND.                UINSTR(STRING$,SUBSTRING$,START)

*L  TURNS ON LINE INDENT               NOTE: NOT CASE SENSITIVE

*L- TURNS OFF LINE INDENT              ERR LAST ERROR NUMBER

*F  TURBO BASIC "FOR-NEXT"             ERL LAST ERROR LINE           NOTE: TB DOES NOT

*F- ATARI BASIC "FOR-NEXT"             AUTOMATICALLY CLEAR EITHER ERR OR ERL!

*B  TRAPS BREAK KEY                    %NUMBER DEFINES A CONSTANT

*B- UNTRAPS BREAK KEY

--  SPECIAL REM (30 DASHES)            GENERAL NOTES:

LABELNAME NOTE: LABEL PROC OR GOTO     -""TEXT"" (DOUBLE QUOTES ARE LEGAL)

GO# LABELNAME (GOTO A LABELNAME)       -TB LOOKS FOR "AUTORUN.BAS" AT BOOT-UP

                                       -"_" UNDERSCORE IS PERMITTED IN NAMES

GRAPHICS:                              -THE PATCHED (U.S.) VERSION OF TB HAS

CIRCLE  X,Y,R(,R2) R2 IS VERTICAL R           PROMPT OF "TURBO" INSTEAD OF "READY"

FCOLOR  COLOR# (FILL COLOR)            -NEW ERROR MESSAGES: MANY ERROR

FILLTO  X,Y (SAME AS XIO #6)                  MESSAGES ARE NOW GIVEN IN TEXT AS

PAINT   X,Y (FILLS AN ENCLOSED SHAPE)         WELL AS ERROR NUMBERS.  NEW ERROR

TEXT    X,Y,A$ (BIT-BLOCKS TEXT SHAPE)        NUMBERS ARE #23 - 30 MOST OF WHICH ARE

                                              RELATED TO LOOPS, NESTING, and

                                              PROCedures

 

Few years ago I traveled to Germany and met with Andre Sitz i saw in his house an ATARI 800XL with upgraded Turbo-Basic inside, here is a picture of the Turbo-BasicPCB

 With this upgrade if you boot the ATARI computer while pressing the SELECT key Turbo Basic will be loaded instead of the original ATARI BASIC. (if you boot the ATARI computer while pressing the SELECT+SHIFT key a sector copier utility will be loaded, which is quite useful tool to load instantly)

Below is the schematics of the 'Turbo-Basic Built in' upgrade and you can download the ROM image from here: TBasic Built-in ROM

From the time I found out about Turbo Basic it was my favorite programming tool to work with, there are several neat programs, game and tool that where created with turbo basic. one of my favorite examples is the BOSS-X which is a Desktop Operating system for the ATARI computer that was programmed in Turbo Basic.

Few years ago i made a cartridge version of Turbo-Basic that allowed me to instantly load the Program when I required. Here is an image of the cartridge I made and a screen shot of the initial menu.

The cartridge is based on the Switchable XEG cartridge PCB, you can download the Turbo Basic XL Cartridge ROM image from here: TBasic Cartridge.rom