One of the things I have really enjoyed since embarking on my Arduino journey and this blog, is seeing others take things I’ve worked on or created and expand upon it. This is especially true with Half-Byte Tiny Basic, something that started out as the work of Mike Field, who, himself used the work of another person. HB Tiny Basic is an iterative work, built on the work of others as well as myself. For HB Tiny Basic 3, I have incorporated the work of others to make it better. I would love to take credit for these changes, but, I cannot. This release is strictly due to Hill Satoshi of the Hirosaki University Faculty of Education and someone named ‘Koyama’. A Big thanks to them.
Please visit Hill Satoshi’s page. There are a lot of great ideas, basic electronics information and some code snippets…be careful, some features of the basic there were not incorporated in HB Tiny Basic, like the motor control and PLOT (which is the same as Set and Reset.)
Among the additions and changes are an auto load and auto run feature (requested by many of you) and a better eSave and eLoad feature. In fact, I like much of what was done to the language and may incorporate more at a later date.
So, what’s new?
Two new statements have been added: NUMLED and BMP. A new function, TREAD. The aforementioned auto load and auto save feature. Three new operators: %, & and |. % returns the remainder of a division, & is logical AND and | is a logical OR.
The code to do a eSave or eLoad has changed and should be more reliable. The startup code has changed a little, dynamically calculating the amount of ram that is available. Ability to read in characters from the serial input as if it were the keyboard. This means you can connect to a serial terminal and enter and run Tiny Basic code without a PS/2 Keyboard attached. And a few minor tweaks here and there.
The first new statement is NUMLED. If you connect a seven segment LED directly to the device you are running HB Tiny Basic on, you can output directly to the LED. The syntax is:
NUMLED x where x is a digit from 0 to 9.
20 for I=0 to 9
30 numled I
40 delay 1000
50 next I
60 goto 20
BMP allows you to draw a bitmap on the screen. It is very much like the DRAW statement in old Microsoft Basics. It feature its own mini design language for you to draw on the screen. A minimum of three parameters are required: x,y,string. Where x and y are the start points and string is the definition.
Table of Commands for Mini Language:
(0 is black;
1 is white)
(0 is black;
1 is white)
20 bmp0,0,"ffffc00000007fff","ffffc00000001fff", "fffe0000000003ff","fffc0000000000ff", "fff80000000000ff","fff000000000007f", "ffe000000000003f","ff0000000000003f"
30 bmp0,8,"ff0000000000001f","ff2f00000000000f", "ff1fc0000000000f","ff000c000000000f", "ff003f000000000f","ff0020400000000f", "fc0000fc1800000f","fc00000f7f3c000f"
40 bmp0,16,"f80000037f7e000f","f8000000007e0003", "f01c00c0001cf7c3","f03e03c00000efcf", "f03e07c00e00000f","c03f1ff01f000003", "c03ffff03f800003","cf3ffff87fc380c3"
50 bmp0,24,"ce3fffffffc3c0c3","c03fc03fffe7f1cf", "c03f003ffffff3c0","ff3fff3fff0fff88", "ff1ffffffc0fff1c","ff9ffffff043ff3c", "ff8fffc03ff3ff38","ff8fffc03ff3fe00"
60 bmp0,32,"ffcfffff3ffffc01","ffc7fffffffffcff", "ffc3fffffffff8ff","fff3ff007ffff1ff", "fff1ff0c7fffc3ff","fff0ff0c7fffc7ff", "fffc7f0c7fff8fff","fffe3f807ffe1fff"
70 bmp0,40,"ffff3fc0fffe3fff","ffff07c3fff07fff", "fff023ffffe1ffff","ffe0203fff83ffff", "ff07e00000003fff","fc0fe3ffff8f0fff", "fc3fe3ffff8f0fff","f0ffe3ffff8fc1ff"
80 shift 1,3:delay 99:goto 80
The example code above produces this bitmap.
TREAD is an alternate method for reading a temperature sensor. It does not require any additional libraries and reads the sensor directly. Usage is: Var=TREAD(pin) where pin is A0 to A7.
The example reads in a value between –30 and 50 degrees Celsius.
Auto Load and Auto Save
HB Tiny Basic will now load the saved program in EEPROM. You have three seconds to press a key or the loaded program will auto run. If you press a key in those three seconds, you will get the normal prompt as in the past. This feature is useful if you want to use HB Tiny Basic for embedded use or simply to restart if the device loses power. There are a lot of uses for this feature.
Other small changes have been made, but are not worth discussing as they are mostly cosmetic or code optimizations.
In reviewing my code, I see just how sloppy it has become. I am going to clean it up, but, until I do, please feel free to offer up any suggestions you may have for features or changes. As always, the code is free and open. I ask that you leave the regular header intact, at the top of the code. I want all involved to be recognized.
Thanks and let us know what you do with Half-Byte Tiny Basic.
Download Link: Half-Byte Tiny Basic 3