AttoBasic

Originally inspired by NASCOM TinyBASIC, Dick Cappels wrote this byte-wide BASIC in 2002 to facilitate experimenting with small control systems using the ATMEL AT90S2313. A year later, a version supporting the AT90S8515 was released that supported on-chip and external RAM. A version for the ATmega163 soon followed. These earlier releases were not based on a "version code" but a target processor/date code combination instead. For all practical purposes, they can be though of as "Version 1.x" releases.
The original 2002/2003 AttoBASIC supports the following features:
* Support for ATMEL AT90S2313, ATmega8515, AT90S8515, ATmega163 using on-chip UART for Serial I/O.
* Twenty-six (26) variables (A..Z).
* All arithmetic and variables are byte-wide (8 bit).
* Strings are not directly supported.
* The interpreter is not case-sensitive.
* Programs are stored in internal RAM.
* The line editor supports destructive backspace (delete key), line replacement, line deletion and line insertion.
* Valid line numbers range is 0..255.
* Lines entered with a numeral in the first column will be stored, others will be interpreted immediately.
* Programs can be SAVEd/LOADed to/from the on-chip EEPROM.
* PEEK and POKE support the "page zero" data-space address range, providing access to all on-chip peripherals.
* Special I/O commands support direct modification of PORTx as well as individual bit I/O.
* GOSUB-RETURN and FOR-NEXT loops have one return level.
* Commands to directly support the A-to-D converter (ADC).
* Commands to directly support Pulse-Width Modulator (PWM).
* Support for custom two-pin "I2C like" communications (DSI).
* Self-Start feature; the program stored in EEPROM will automatically be loaded and executed if a selected pin is held LOW during power-up.
* Source code is freely available.
In 2011, Kenneth Scott Vitale was looking for a interpretive programming platform that would allow quick and easy testing and evaluation of support peripherals. FORTH was a prime candidate and a few AVR-based implementations were available. Mr. Vitale's choice was AmFORTH but the available AVR version lacked enough support documentation to target other AVR controllers without much study time.
Impressed with Mr. Cappels' AttoBASIC, Mr. Vitale ported the ATmega163 source code to the ATmega88, 168 and ATmega32U4. Modern microcontroller peripherals use the SPI or TWI (I2C) bus to communicate. However, AttoBASIC lacked commands to directly support the newer AVR on-chip peripherals such as SPI and TWI, thus commands were added to support them. Version 2.0 was released with the following additional features:
* Includes all the features of AttoBASIC 1.x.
* Support for ATMEL ATmega88, 168 and 32U4 using on-chip UART for Serial I/O.
* Commands to support on-chip hardware SPI.
* Commands to support on-chip hardware TWI.
* Commands to support the Input Capture register (as a gate-time selectable pulse counter).
* Commands to support Direct Digital Synthesis (DDS) using single port-bit toggle.
* 8-bit random number generator.
* 8x8 multiply and divide.
* Command to enable arithmetic overflow/underflow error detection.
* PEEK and POKE support the "page zero" data-space address range, providing access to all on-chip peripherals.
* Programs can be captured and later "fed" to the line editor via a terminal emulator's "capture to file" and "send file" features.
* Enters low-power sleep mode when "idle".
* Source code is freely available.
* Inherent support for ATmega88/168 based ARDUINO platforms.
Also in 2011, Mr. Vitale updated the AT90S2313 source code to support the ATtiny2313, which added support the low-power sleep mode when "idle".
In 2012, Mr. Vitale added support for ATmega32U4 Serial I/O using the on-chip USB interface. As the ARDUINO platforms have become increasingly popular, support for the ATmega328 was added so as to be a "quick-start" for beginners to start programming on their ARDUINO platform(s). Version 2.1 was released with the following additional features:
* Includes all the features of AttoBASIC 2.0.
* Support for ATMEL ATmega88, 168, 328 and 32U4 using UART Serial I/O.
* Support for ATMEL ATmega32U4 using USB Serial I/O.
* Command added to support invoking the boot-loader;
:ATmega32U4 supports Dean Camera's LUFA DFU Boot-loader
:ATmega168 and 328 supports the OPTIboot loader.
* PEEK and POKE support the full data-space 64K address range, providing access to all on-chip peripherals and on-chip RAM.
* Source code is freely available.
Dick Cappels's project pages can be accessed here.
 
< Prev   Next >