-
ESP8266 port near to working status
02/05/2020 at 18:07 • 0 commentsTerminal-BASIC 2.2-alpha3 introduces new configuration options:
- alignment of BASIC variables and arrays values (CONF_USE_ALIGN option in config.hpp)
- disabling of structures packing (USE_PACKED_STRUCT option in config.h)
Playing with these options allows me to run TB on ESP8266 nodeMCU board,
-
Towards the bytecode
01/24/2020 at 00:16 • 0 commentsOne of the controversial features of Terminal-BASIC is the architecture of functional modules. The commands and functions defined in the modules, which are chained together in some order (except the very basic commands which are part of the language core). This simplifies language core, parser and lexer, also simplifies the creation of the new commands and functions, separates the functional groups from each other and so on. But the
dark sidedrawback is that execution of the commands is slow and the more commands the slower it is. Moreover, the commands at the end of the chain are being executed slower then commands from the chain begin.In order to solve the speed issue, I introduced the command parsing step in the tokenization of the source code process. The commands calls contains the platform address of the implementation C-function. The call runs faster and no matter how many commands and modules are defined. Tokenization of the source includes change of the keyword strings by the binary KW codes, replace the number constants strings by the parsed binary numbers and now it also contains bytecode-like feature of replacing commands calling strings by the call command and the implementation address. This is optional feature, enabled by default in TB 2.2-alpha1 version.
If the approach proves it's success, I will do the same for the functions from external modules.
-
Basic support of ESP32
10/14/2019 at 22:35 • 0 commentsRelease 2.1.1 adds support of ESP32 platform.
Use Arduino IDE and toolchain from https://dl.espressif.com/dl/package_esp32_index.json
Some configuration changes to start playing:
1. config.hpp
// Arduino IO module #define CONF_MODULE_ARDUINOIO 0 ... // Input select #define S_INPUT SERIAL_I // Output select #define S_OUTPUT SERIAL_O
2. config.h
/* * SAVE, LOAD and CHAIN commands support */ #define USE_SAVE_LOAD 0
-
More old text games
08/13/2019 at 08:25 • 0 commentsChanges in upcoming 2.1 release allowed to run some text games from classic BASIC computer games book.
-
Downloads milestone
06/14/2019 at 21:01 • 0 commentsJust a little note.
Last week Terminal-BASIC achieved 2000 file downloads on Sourceforge.
Congratulations and thanks to all its users and contributors!
-
New datatypes
04/30/2019 at 20:57 • 0 commentsUpcoming Terminal-BASIC 2.1 introduce double precision floating point datatype on 32+ -bit platforms (Arduino DUE and PC) and changes other datatype conventions for naming the variables and arrays.
Default type is single precision float, ! suffix - double precision float, % - 2-byte integer, %! - 4-byte integer, @ - logical, $ string:
-
Does it make sense to localize BASIC keywords?
04/10/2019 at 22:03 • 3 commentsAs I wrote earlier, TB 2.0 (rc1 for now) has the ability to use different keyword sets in any single-byte encoding. If you are a TB user and if you consider useful some alternative keyword set in your native language, it can be included in future release of Terminal-BASIC. Now there was created a Russian keyword set, based on such, used in BASIC-6 system for БЭСМ-6 mainframe.
English
Русский
French AND
И
DATA
ДАННЫЕ
DEF
ОПР
DIM
РАЗМЕР
END
КОНЕЦ
FIN FN
ФУНК
FOR
ДЛЯ
POUR GOSUB
ВХОД
GOTO
НА
IF
ЕСЛИ
SI INPUT
ВВОД
LIRE LEFT$ ЛЕВ$ LEN ДЛИНА LET
ПУСТЬ
LIST
ЛИСТАТЬ
LISTER MAT
МАТ
MID$ СРЕД$ NEXT
ЦИКЛ
NOT
НЕ
ON
ПРИ
OR
ИЛИ
PRINT
ВЫВОД
AFFICHER READ
ВЗЯТЬ
REM
КОМ
RESTORE
СНОВА
RETURN
ВОЗВРАТ
RETOUR RIGHT$ ПРАВ$ RUN
ПУСК
STEP
ШАГ
STOP
СТОП
STR$ СТР$ THEN
ТО
ALORS TO
ДО
JUSQUA -
Terminal-BASIC programmable calculator
03/26/2019 at 07:39 • 2 commentsI think about Terminal-BASIC based programmable calculator, like MK-90
I am planning to use Arduino DUE, TFT screen schield and custom matrix keyboard of40-64 keys.
Does anybody know, if this shield is compatible with arduino DUE?Actually, I'v just tried it on my risk. Screen itself works well with UTFT library with the same C++ code as for Arduino MEGA, but SD card doesn't. On MEGA both screen and SD card slot do work. And what about slot for a small FLASH chip?
-
Latest news from the Terminal-BASIC development
02/15/2019 at 23:14 • 0 commentsNew 1.2 release adds well-known command POKE and function PEEK. On AVR mcus these features allow to work with peripheral control registers directly.
This release will be LTS, receiving minor updates (stability and standard compliant) for many months.
Now I'm preparing the 2.0 release, which has completely rewritten in pure C lexical analyzer. New lexer can be configured to use single byte encoding national languages keywords and identifiers. Here you can see the russian lexical variant, close to lexems, used by the Soviet language РАПИРА (rapier): -
Upcoming refactoring
01/02/2019 at 22:32 • 3 commentsSome OpenSource/DIY software projects, containing legacy C code have been rewritten into C++. There is no any reasons to stay on C if C++ available on target platform. It has everything that C has and many "free" features, which cost 0 extra bytes and 0 extra instructions.
But I think Terminal-BASIC must go through a reverse transformation. I'm rewriting core components in pure C.
The 8-bit AVR microcontrollers were primary target at the project starting point. G++ supports this architecture, as well as 32-bit ARM versions of Arduino DUE, etc.
But many interesting architextures do not support C++. I think about running Terminal-BASIC on Z80 with SDCC, PIC uCs and... SEGA Genesis consoles (MC68000 has G++ port, but the popular SDK SGEN does not support C++).