Releases: idunmore/ehbasic
Release list
v0.5.0 - EhBASIC w/ Inline Assembler & Disassembler
This is an experimental release, that adds an Inline Assembler and a Disassembler to EhBASIC.
The build can be invoked so the assembler/disassembler targets different versions of the 6502. By default it supports the full WDC65C02S instruction set, but you can save some ROM space if you only need original 6502 support, or just the Rockwell extensions.
You can have multiple blocks of assembly code in different parts of your program. Note that SYMBOLS are GLOBAL so any block can reference SYMBOLS from any other block.
SYMBOL addresses can be referenced from EhBASIC via the SYM("") function, and you can PEEK/POKE into variables/strings etc. that you resolve that way, allowing simple sharing of data space between Assembly and BASIC routines.
The disassembler will work against any reachable address, including in ROM; it is not limited to code emitted by the inline assembler.
Full details for both the assembler and disassembler, as well as their build options, are in the README.md file.
v0.4.0 - Add Custom LCD Commands
This release adds custom LCD keywords for manipulating an HD44780 (or M68) based LCD, LED or VFD display. They are conditionally compiled, since the LCD initialization can hang a BE6502 if either the LCD isn't connected OR it is wired in 8-bit mode.
Running make will include the LCD commands by default; run make LCD=0 to exclude these extensions.
The included binary (basic.bin) has the LCD commands enabled.
Added LCD Keywords
Thirteen keywords are provided. They are real EhBASIC keywords, not CALLs, so they tokenize and LIST like anything else. They are ported from the same command set my Microsoft BASIC build for this board carries, so programs move between the two with little more than a retype.
| Command | Argument | What it does |
|---|---|---|
LCDCLS |
— | clear the display, which also sends the cursor home |
LCDHOME |
— | cursor to the first character of the first line |
LCDPRINT |
expression list | print to the display |
LCDCURPOS n |
byte | set the DDRAM address, which is where the next character lands |
LCDDDRAM n |
byte | the same command under its hardware name |
LCDMOVECUR n |
signed | move the cursor right (n positive) or left (n negative) |
LCDSCROLL n |
signed | scroll the display right (n positive) or left (n negative) |
LCDCURENABLE n |
byte | 0 turns the cursor off, anything else turns it on |
LCDCURBLINK n |
byte | 0 stops the cursor blinking, anything else starts it |
LCDCGRAM n |
byte | point writes at the character generator instead of the screen |
LCDCGCHRS |
expression list | write character generator data as characters |
LCDCGBYTE n |
byte | write one character generator byte as a number |
LCDCMD n |
byte | send a raw HD44780 instruction byte |
v0.3.2 - Optional Runtime Diagnostics for Address Line Shifting/Splitting
When used with some EEPROMS, and some EEPROM emulators, it is possible for the address line to update on a half-cycle, due to response time or bread broad capacitance issues that effectively lower the slew rate/shallow the clock edge, which leads to reading incorrect address resolution.
It is not a fault of the EEPROM emulator, nor the design, specifically, but an artifact various tolerances and positioning.
The optional Make commands SENTINEL and DEBUG (see README.md) instrument the ROM with detection and exception routines to determine when this occurs to help troubleshoot transient issues of this nature. The default build (make) excludes all of this code.
v0.3.1 - Fix Type-Ahead Character Dropping
Corrects an issue in which EhBASIC would drop characters typed-ahead. This caused problems with line entry after direct/immediate commands, as well as general type-ahead issues.
v0.3.0 - Add WozMon with EhBASIC Entry/Rentry
WozMon is now included in the ROM build. It can be invoked from EhBASIC by executing MONITOR in direct/immediate mode, or on a program line. Return to EhBASIC is achieved by executing 8000R in WozMon (it will prompt for this when MONITOR is used).
If you wish to retain your current EhBASIC program, choose [W]arm start when you return to it.
v0.2.0 - EhBASIC for stock BE6502 adding BACKSPACE support
This release adds full, visual and functional, BACKSPACE support for standard serial terminal interfaces. The prior releases, and standard EhBASIC (or the environments its hosted in) generally do not erase the character being BACKSPACED over, making it hit-or-miss in seeing what is actually going to be entered.
v0.1.0 - EhBASIC for stock BE6502 adding Serial Flow Control and Input Buffering
#v0.1.0 - EhBASIC for stock BE6502 adding Serial Flow Control and Input Buffering
This build implements serial flow-control and input buffering for BE6502 builds that have that enabled in hardware (see below). It removes the need for text-pacing in the terminal.
For example, pasting the ~16KB spcwar-16K.bas program now succeeds, and takes minutes less than with pacing enabled.
...
Note that the flow control is based on Ben's build that fixes the 65C51 UART bug, and requires running a connection from PA0 to CTS.
This release also includes a fix for an interrupt safety issue (see the commit details), that could hang EhBASIC.
v0.0.1 - EhBASIC for stock BE6502
v0.0.1 - EhBASIC for stock BE6502
This first release is a builds-as-is version of EhBASIC (v2.22p5.7) for the stock Ben Eater 6502, with 16KB of RAM ($0000-$3FFF), 32KB of ROM ($8000-$7FFF), a 65C22 VIA at $6000 and a 65C51 UART at $5000. Implementing a simple, unbuffered, 19,200 8-N-1 serial terminal interface.