SmartBASIC 1.x "Review"
from Richard F. Drushel

 WHAT IS SmartBASIC 1.x?

SmartBASIC 1.x is a major rewrite of the SmartBASIC 1.0 interpreter for
the Coleco ADAM computer. SmartBASIC 1.x provides the programmer with 40 new
commands and 37 functions, and enhances the operation of 7 existing commands
and 7 functions. SmartBASIC 1.x allows the programmer *COMPLETE* access to
the hardware and software capabilities of the ADAM, using simple, high-level
commands--without arbitrary PEEKs, POKEs, or CALLs, and without the programmer
needing to understand Z80 machine language.

SmartBASIC 1.x makes it easy to:

* read and write absolute disk/tape blocks
* change screen colors
* select 31, 40, or 80-column TEXT, complete with FLASH and INVERSE
* define a scrolling TEXT window smaller than the physical screen
* manage interpreter memory independent of absolute addresses
* print to a parallel printer
* initialize and communicate through serial ports
* access all system RAM, ROM, and expansion RAM
* invoke EOS operating system functions without machine language subroutines
* use larger disk drives, including hard drives
* format floppy disks for any size drive
* keep time and date with hardware and software clocks
* communicate directly with Z80 I/O ports

Additionally, SmartBASIC 1.x fixes some annoying bugs and oversights in
SmartBASIC 1.0:

* parameters are range-checked for all commands and functions
* repeated error trapping does not crash the system
* ERRNUM returns rational error codes
* the keyboard line buffer is 254 characters long instead of 128
* control characters echo on the screen when typed
* INSERT and DELETE keys replace ^N and ^O
* the cursor is hidden unless waiting for typed input
* LIST does not pad everything with extra spaces
* LIST starts printing in column 2, so you can edit line numbers above 9999
* the parser error reprint of a bad line starts in column 2
* SmartBASIC 2.0-type parser errors--beep/sadface replacement of bad line
* POS and VPOS are 1-based instead of 0-based, and return absolute positions
* dummy arguments are not required for ERRNUM, POS, VPOS, FRE, and RND
* color commands and functions use TI color codes instead of AppleSoft
* RANDOMIZE command gives true random numbers (seeds optional)
* RESTORE, RESUME, and RETURN to any line number
* values set by SPEED, ROT, etc. can be found without PEEKs
* multiple programs can be MERGEd in memory

SmartBASIC 1.x provides shorthand synonyms for a few common commands:

* LOCATE line, column instead of VTAB line: HTAB column
* BEEP instead of PRINT CHR$(7);
* PUT x instead of PRINT CHR$(x);
* CLS instead of HOME

Lastly, SmartBASIC 1.x implements directly a few "miscellaneous" command
and functions which previously could be achieved only by multi-statement,
multi-line subroutines:

* WHILE...WEND loops
* HEX$(x) to return INT(x) as a hexadecimal string
* Z80-type bit test/set/clear functions
* Z80-type logical AND/OR/XOR/CPL functions
* MOD function to return remainder after integer division
* SPC$(x) function to return a string of x spaces
* STRING$(count,value) to make a string of count CHR$(value)'s.
* LINPUT command to get a whole line of text up to the CR, ignoring commas

All the enhancements of SmartBASIC 1.x take a little more than 8K of
extra RAM, leaving approximately 17K of programming workspace. While this is,
of course, less than SmartBASIC 1.0, the compactness of SmartBASIC 1.x
commands and functions means that whole subroutines in older programs can be
replaced by a statement or two.

The following hardware is supported directly by SmartBASIC 1.x:

* Coleco ADAMlink modem (initialization only)
* Coleco 64K memory expander (and clones by Orphanware and OPA)
* Orphanware 256K and 512K memory expanders
* Micro Innovations 1024K memory expander
* Orphanware PIA2 parallel board (and all clones, including PowerMate)
* Eve/Orphanware RS-232C serial board (all 4 possible ports)
* Micro Innovations MIB2 serial board (both ports)
* Eve SS/SC board (clock only)
* Orphanware clock board
* Trisyd SmartClocks ("no-slot" and Dyno-Mite digitizer versions)
* Eve/Orphanware 80-column video unit
* 320K, 360K, and 720K double-sided disk drives
* Non-256K tapes created by the MegaCopy tape formatter
* Mini Wini hard drive
* PowerMate hard drive

The following hardware is not supported directly by SmartBASIC 1.x,
but may be accessed using the appropriate IN variable,port and OUT port,value

* Coleco ADAMlink modem (dialing and data transfer)
* Coleco Autodialer
* Eve SS/SC board (speech synthesizer)
* MIDI interface board
* Dyno-Mite sound digitizer

SmartBASIC 1.x is available on either disk or digital data pack, at a
cost of $30.00 U.S. It includes a comprehensive, 70-plus page, laser-printed
manual. More than a simple programming reference for SmartBASIC 1.x commands
and functions, it includes 6 technical appendices for advanced programmers.
These include: how to write relocatable, position-independent Z80 machine code
routines; a complete summary of EOS function calls 0-100, with full
descriptions and required register setups; the detailed structure of EOS
processor control blocks (PCBs), device control blocks (DCBs), file control
blocks (FCBs), directories, and the first published listing of EOS's own
internal error codes 1-24; how to create external terminal emulations for use
in TEXT80; and complete memory maps of the SmartBASIC 1.x interpreter and VRAM
in all screen modes (TEXT31, TEXT40, TEXT80, GR, HGR, and HGR2).

I am not exaggerating when I say that SmartBASIC 1.x is the most
powerful EOS-based programming language ever developed for the Coleco ADAM!

Regards, Rich Drushel


Back to Top