Virgil Dupras
12bc120375
basic: add bsel, bseek, getb, putb commands
2019-11-24 20:34:23 -05:00
Virgil Dupras
8f1d942e5f
basic: add addr command
2019-11-24 15:39:36 -05:00
Virgil Dupras
381d57a513
basic: make variable A the only input variable
...
Mechanism for assigning inputs to the specified variable is clumsy and uses
binary space. Always using A is much simpler and doesn't seem very limiting to
me. I do that because there's many more "input" commands I'd like to add.
2019-11-24 14:55:50 -05:00
Virgil Dupras
e1df320d44
basic: add ldbas command
2019-11-24 14:26:32 -05:00
Virgil Dupras
13f935aa88
basic: add fls command
...
Also, add the new `bshell` emulated tool. BASIC is on its way to replace the
shell.
2019-11-24 10:24:15 -05:00
Virgil Dupras
aad8efeff7
recipes/rc2014/basic: new recipe
2019-11-23 21:22:31 -05:00
Virgil Dupras
b7d4860acf
basic: add in/out commands
...
Also, fixed the cmd matching algo to not accept partial matches. For example,
to stop matching "input" when the command was "in".
2019-11-23 20:38:56 -05:00
Virgil Dupras
7761cebb0a
basic: add sleep command
...
also fix broken "peek"
2019-11-23 17:07:14 -05:00
Virgil Dupras
9602f9b983
basic: add peek/poke/deek/doke commands
2019-11-23 16:09:34 -05:00
Virgil Dupras
585e9f3b6e
tools/emul: add troubleshooting instructions in README
...
fixes #79
2019-11-23 15:22:26 -05:00
Virgil Dupras
a680fd3328
basic: add support for signed integers
2019-11-23 14:56:23 -05:00
Virgil Dupras
43b450ca30
Update bootstrap binaries
2019-11-22 19:57:11 -05:00
Virgil Dupras
501fe96e07
lib/expr: use the IX register a bit less
...
It's an awkward register to use and avoiding its use allows us to strip the
resulting binary significantly. parseEXPR keeps the same signature though.
2019-11-22 19:56:08 -05:00
Virgil Dupras
2f71ad6d2f
lib/expr: add left/right shifting operators
2019-11-22 18:35:10 -05:00
Virgil Dupras
a03c5ac700
lib/expr: add bitwise operators
2019-11-22 17:16:51 -05:00
Virgil Dupras
972e8221f1
lib/expr: add division and modulo operators
2019-11-22 15:03:16 -05:00
Virgil Dupras
1b01f13105
lib/expr: refactor for easier operator addition
2019-11-22 14:45:12 -05:00
Virgil Dupras
fd5b2ab856
Put app-common documentation in apps/README.md
2019-11-22 14:01:16 -05:00
Virgil Dupras
e17dc1e1e1
basic: add input command
2019-11-21 20:17:55 -05:00
Virgil Dupras
982d20f895
basic: allow printing of quoted strings
2019-11-21 19:56:51 -05:00
Virgil Dupras
704d32279a
basic: document better
2019-11-21 17:03:46 -05:00
Virgil Dupras
7262993f14
basic: add if
2019-11-21 16:06:14 -05:00
Virgil Dupras
3f3dd9141e
basic: allow multiple args in print
2019-11-20 21:02:11 -05:00
Virgil Dupras
9c400ca642
basic: add goto
...
Things are getting super cereal...
2019-11-20 15:45:53 -05:00
Virgil Dupras
9d6cbe577c
basic: add variables
...
Things are getting cereal...
2019-11-20 15:10:00 -05:00
Virgil Dupras
9c9484fb88
basic: add run command
2019-11-20 10:49:23 -05:00
Virgil Dupras
9d1003e7a2
basic: keep line index ordered and line numbers unique
2019-11-19 21:55:26 -05:00
Virgil Dupras
62138b12cf
basic: add buffer line index
2019-11-19 20:43:01 -05:00
Virgil Dupras
4c6de413df
basic: begin implementing a line buffer
2019-11-19 15:14:04 -05:00
Virgil Dupras
f5b04fc02f
basic: add expression support to print
...
Again, same thing as in zasm.
2019-11-18 15:52:44 -05:00
Virgil Dupras
0bd58fd178
basic: parse hex, binary and char literals
...
Same thing as in zasm.
2019-11-18 15:22:09 -05:00
Virgil Dupras
1cea6e71e0
basic: add a print cmd
...
It can only print a decimal literal. But still, that's a big step because
I hadn't implemented decimal formatting yet.
2019-11-18 13:40:23 -05:00
Virgil Dupras
019d05f64c
Make the shell a userspace app
...
That's my mega-commit you've all been waiting for.
The code for the shell share more routines with userspace apps than with kernel
units, because, well, its behavior is that of a userspace app, not a device
driver.
This created a weird situation with libraries and jump tables. Some routine
belonging to the `kernel/` directory felt weird there.
And then comes `apps/basic`, which will likely share even more code with the
shell. I was seeing myself creating huge jump tables to reuse code from the
shell. It didn't feel right.
Moreover, we'll probably want basic-like apps to optionnally replace the shell.
So here I am with this huge change in the project structure. I didn't test all
recipes on hardware yet, I will do later. I might have broken some...
But now, the structure feels better and the line between what belongs to
`kernel` and what belongs to `apps` feels clearer.
2019-11-15 15:37:49 -05:00
Virgil Dupras
cdd0b64570
Modify userspace .org and RAMSTART expectations
...
Instead of expecting a `USER_CODE` symbol to be set, we expect `.org` to be
set in all userspace glue code. This gives us more flexibility with regards to
how we manage that.
Moreover, instead of making `USER_RAMSTART` mandatory, we make it default to
the end of the binary, which is adequate in a majority of cases.
Will be useful for my upcoming mega-commit... :)
2019-11-15 10:33:13 -05:00
Virgil Dupras
d74b85f146
zasm: allow .org to be specified from command line
...
Also important for upcoming mega commit...
2019-11-15 09:57:53 -05:00
Virgil Dupras
e5255d22f9
zasm: make .org affect "@" symbol
2019-11-15 08:59:26 -05:00
Virgil Dupras
79e04189b0
Update bootstrap binaries
2019-11-14 21:25:11 -05:00
Virgil Dupras
6e714875dc
zasm: Constants now override labels at all times
...
Will be important for a mega-commit I'm preparing.
2019-11-14 21:16:36 -05:00
Virgil Dupras
7cf3ed38da
Extract str.asm from core.asm and make core included by userspace
...
Most of register fiddling routines (which is now the only thing contained
in care.asm) are used by almost all userspace apps, often in inner loops.
That makes the penalty of using jump tables for those a bit too high.
Moreover, it burdens jump tables needlessly.
Because this unit is very small (now that string routines are out), it makes
sense to always include it in binaries.
2019-11-14 10:14:15 -05:00
Virgil Dupras
0e79035d9c
Disable test failing on Travis
2019-11-13 22:37:00 -05:00
Virgil Dupras
69750b4da6
Update bootstrap binaries
2019-11-13 22:28:47 -05:00
Virgil Dupras
82995eb346
zasm: have .fill generate an error on overflow
...
Can possibly avoid a lot of debugging pain.
2019-11-13 22:27:48 -05:00
Virgil Dupras
8d46895dd3
lib/parse: decimal ending with a whitespace are now valid
...
Also, make empty strings be parsed as invalid by parseDecimal.
2019-11-13 22:10:06 -05:00
Virgil Dupras
7274dccbe7
Move ASCII consts to ascii.h
...
And made them shorter in name. The new ascii.h file allow reuse in userspace
code.
2019-11-13 20:38:06 -05:00
Virgil Dupras
7046d23cd6
Fix broken IRC link in README
2019-11-13 20:27:09 -05:00
Sarala Saraswati
0f65890074
add link to freenode irc channel and sonic.net hosted listserv ( #75 )
2019-11-13 20:17:21 -05:00
Virgil Dupras
f3992ed598
basic: begin an implementation from sratch
...
Let's see where it will lead us...
2019-11-13 15:28:16 -05:00
Virgil Dupras
1ae51bea3a
tests: remove instr blacklist
...
Because scas isn't used as a reference anymore, no need to blacklist its bugs
anymore.
2019-11-12 20:47:09 -05:00
Virgil Dupras
39f3637c60
recipes/ti84: TI-84+ base recipe is complete!
...
ref #41
2019-11-12 20:32:56 -05:00
Virgil Dupras
0e9173a89a
zasm: optimize handleRST a little bit
2019-11-12 19:45:56 -05:00