Commit Graph

676 Commits

Author SHA1 Message Date
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
Virgil Dupras 4de2ce3ceb zasm: add RST instruction 2019-11-12 14:07:45 -05:00
Virgil Dupras 518df7a05e zasm: add poor man's indexing in instr table
There's a lot of looping through that table. At first, I wanted to add some
bisecting, but 16-bit additions and multiplications involved made the idea a
bit less appealing. I went with a very basic, hardcoded index which should
speed things quite a bit at a minimal complexity cost.
2019-11-11 20:59:26 -05:00
Virgil Dupras cbc6fb5931 zasm: clean up jump table requirements
There was a little bit of cruft.
2019-11-11 20:21:13 -05:00
Virgil Dupras 17cc28e211 recipes/ti84: use a 3x5 font instead of a 5x7 one
This allow a lot more characters to fit on that tiny screen...

ref #41
2019-11-11 13:26:24 -05:00
Sarala Saraswati cb1e68e3e2 add link to subreddit (#71) 2019-11-11 06:28:41 -05:00
Virgil Dupras 30d6fdb16b ti/lcd: use brand new support for IX in SRL and RR 2019-11-10 22:07:44 -05:00
Virgil Dupras 2bff486cd2 Update bootstrap binaries 2019-11-10 22:03:46 -05:00
Virgil Dupras 5f6b303e75 zasm: add IX/IY support to SRL, RR and RL 2019-11-10 22:03:18 -05:00
Virgil Dupras 506c3d0a96 zasm: generalize handling of IX/IY in 0xcb upcode family
There's a couple of bit fiddling instructions that didn't have their
IX/IY variant implemented yet and without this commit, each of them
would have required a special routine. Not anymore.
2019-11-10 21:02:18 -05:00
Virgil Dupras d9d6093287 zasm: simplify (IX/Y+d) handling
We now require less special handling.
2019-11-10 20:16:50 -05:00
Virgil Dupras 68ef686c3c zasm: fix 16-bit include lineno counting
It was actually counted in 8-bit mode...
2019-11-10 13:50:26 -05:00
Virgil Dupras 999ab56366 zasm: add generic handling of BIT argument
This reduces the need for special handling routine and will make my
life easier in my upcoming generic tratment of IX/IY prefix in upcodes
2019-11-10 10:24:36 -05:00
Virgil Dupras 553b346b92 zasm: getUpcode -> spitUpcode
Giving I/O responsibility to spitUpcode gives us wiggle room for
upcoming refactorings.
2019-11-10 09:28:10 -05:00
Virgil Dupras c4658591bd ti/lcd: allow for fonts smaller than 5 pixels
That's a lot of code for such a small change, but there's a big difference
between 5 pixels and 4 pixels: 4 pixels requires compositing.
2019-11-09 22:55:15 -05:00
Virgil Dupras 6d9f96aee6 ti/lcd: add support for backspace
Also, fix visual glitch on line wrap.
2019-11-09 14:37:52 -05:00
Virgil Dupras a4190f9984 recipes/ti84: document usage
ref #41
2019-11-09 14:20:01 -05:00
Virgil Dupras 2026113480 ti/kbd: lowercase letters by default, 2nd to upcase 2019-11-09 13:38:35 -05:00
Virgil Dupras 9c37471780 ti/kbd: improve debouncing
Previously, on real hardware (emulator behaved fine), we would routinely
get repeat keys unless pressing the button very fast. This commit solves that.
2019-11-09 13:22:01 -05:00
Virgil Dupras 418af5f626 ti/kbd: make Alpha and 2nd toggle
Previously, when being in A-Lock mode, activating Alpha wouldn't make
us go temporarily in digit mode, as is expected.
2019-11-09 13:12:36 -05:00
Virgil Dupras 67f689260f ti/lcd: Add scrolling through z-offset 2019-11-09 08:25:10 -05:00
Virgil Dupras 6a70a0e5e6 ti/lcd: wrap rows on overflow 2019-11-09 08:09:01 -05:00
Virgil Dupras b27a71cb88 ti/kbd: fix space character 2019-11-09 08:01:03 -05:00
Virgil Dupras 6c1b1f2b79 ti/lcd: wrap to next line when overflowing 2019-11-08 22:55:56 -05:00
Virgil Dupras bb2e528b65 ti/lcd: clear screen on init
LCD RAM persists between reboots, makingit necessary to clear it.

ref #41
2019-11-08 21:54:03 -05:00
Virgil Dupras c896b77143 ti/kbd: implement A-Lock
ref #41
2019-11-08 20:27:43 -05:00
Virgil Dupras 8d5c26f299 ti/kbd: add alpha support
no a-lock or lowercase yet.

ref #41
2019-11-08 15:45:45 -05:00
Virgil Dupras ca8b315e9d ti/kbd: widen char detection
no alpha yet.

ref #41
2019-11-08 14:58:29 -05:00
Virgil Dupras dca6ce4e8e ti/kbd: begin GetC implementation
For now, only digits are scanned. Lifted from my "tiseg7" example.

ref #41
2019-11-08 14:04:56 -05:00
Virgil Dupras 6a4bddc493 ti/lcd: ensure that variables are initialized 2019-11-08 11:45:37 -05:00
Virgil Dupras a3c47f6272 Add tests for parseArgs 2019-11-08 10:53:52 -05:00
Virgil Dupras e972dfe220 Add test documentation 2019-11-08 10:37:52 -05:00
Virgil Dupras c57f2d6973 fonts/5x7: add lowercase letters 2019-11-07 22:27:12 -05:00