Clanmaster21
6281e2036f
Optimised intoXX functions ( #19 )
...
* Optimised intoXX functions
Rewrote intoXX functions to mainly rely on intoHL, as the HL instructions are smaller and faster. Also removed some redundant push and pop instructions. I edited the given unit tests to test these, and they seem to work as expected.
* Doesn't use self-modifying code
The number of bytes is the same as my previous attempt, with 11 more cycles in intoHL, so although I don't feel as clever this time it's still a good optimisation. I found an equivalent method for intoDE, however relying on intoHL still allows for `ex (sp), hl` to be used in intoIX, which is smaller and faster.
* Update core.asm
* Tried harder to follow coding convention
Added tabs between mnemonics and operands, and replaced a new line I accidentally removed.
2019-10-10 14:44:23 -04:00
luz.paz
6a635fddd9
Fix misc. source comment typos
...
Found via `codespell -q 3 -S ./tools -L splitted`
2019-10-09 11:12:08 -04:00
Virgil Dupras
f4b6c7637d
zasm: rename #inc to .inc
...
scas, it's not needed any more.
2019-10-06 14:32:23 -04:00
Virgil Dupras
22f9b4f07e
kbd: add keypad codes to keycode table
2019-07-25 14:22:17 -04:00
Virgil Dupras
4f6c230dc8
mmap: add MMAP_LEN parameter
2019-07-23 23:00:32 -04:00
Virgil Dupras
985d56ca5a
core: preserve A in cpHLDE
2019-07-23 22:59:10 -04:00
Virgil Dupras
518f12b07f
sms/vdp: clear 2 lines forward when doing LF
...
It allows to see much more easily where the action happens on the screen.
2019-07-22 11:03:44 -04:00
Virgil Dupras
f43241a5a0
kbd: support shifted characters
2019-07-21 17:30:50 -04:00
Virgil Dupras
52e5f5b5bf
kbd: simplify code
2019-07-21 16:58:16 -04:00
Virgil Dupras
77d805ea0f
shell: allow cmds to be shorter than 4 chars
2019-07-21 15:57:55 -04:00
Virgil Dupras
01031a780a
ed: Add 'w' command
2019-07-21 11:40:26 -04:00
Virgil Dupras
57e7b3ca05
recipes/sms/kbd: PS/2 keyboard adapter for the SMS!
2019-07-20 12:42:55 -04:00
Virgil Dupras
23354eba94
stdio: fix broken ReadC logic
...
Looping inside ReadC broke the shell's hook logic. We have to
return immediately when nothing is typed.
2019-07-19 14:44:47 -04:00
Virgil Dupras
253674ea05
Fix broken tests
...
Also, make tests run in a *BSD environment
2019-07-19 14:24:35 -04:00
Virgil Dupras
eefadc3917
ed: add support for 'a' and 'i'
2019-07-14 17:35:21 -04:00
Virgil Dupras
797cbdcc95
blockdev: protect IX in routines
...
Sure, it's a bit slower, but it prevents a lot of hard to debug
problems. I don't have to want to remember "don't use IX if you
have any blk* calls". Let's optimize I/O later.
2019-07-14 12:17:13 -04:00
Virgil Dupras
8af1cf468c
ed: add 'd' cmd
2019-07-14 10:32:28 -04:00
Virgil Dupras
3861670bcc
shell: don't parse empty cmds
2019-07-13 15:34:43 -04:00
Virgil Dupras
951dd2206d
apps/ed: add the concept of "current line"
2019-07-13 15:28:44 -04:00
Virgil Dupras
921a109749
stdio: little tweaks
2019-07-13 09:28:35 -04:00
Virgil Dupras
e01ee170cb
stdio: add stdioReadC
...
A routine to conveniently read lines from TTY. Extracted from
shell. Will be used in other places.
2019-07-13 09:19:01 -04:00
Virgil Dupras
ade9b96d14
sms/pad: make B jump to the next selection "class"
2019-07-02 16:18:00 -04:00
Virgil Dupras
162e503291
sms/vdp: properly protect AF on PutC
2019-07-02 15:54:07 -04:00
Virgil Dupras
f41508725d
sms/pad: handle return properly
...
That is, send current chr selection, and then, send LF.
2019-07-02 15:23:28 -04:00
Virgil Dupras
9c87734499
sms/vdp: clear cursor before CR or BS
...
This avoids having "ghost" chr selection sticking around.
2019-07-02 15:22:14 -04:00
Virgil Dupras
2679172edf
sms/vdp: implement "chrsel" hook
...
This allows for outputting a character selection before it's given
through GetC. That allows a pad-oriented character selection scheme.
2019-07-02 13:14:02 -04:00
Virgil Dupras
74de1c92cf
sms/pad: implement character selection mechanism
...
Still a bit rough around the edges, but still, works rather well.
2019-07-02 13:12:52 -04:00
Virgil Dupras
748d7347c8
shell: add "loop hook"
...
This hook is called during every iteration, allowing regular screen
refresh when video is involved.
2019-07-02 13:11:37 -04:00
Virgil Dupras
404dbd0ddd
sms/vdp: handle CR and LF
2019-07-02 11:14:16 -04:00
Virgil Dupras
2da4a3a87b
sms/vdp: new module allowing PutC to spit chars in the VDP
2019-07-02 10:48:38 -04:00
Virgil Dupras
c5a0a6ff54
sms/pad: easily detect change in button config
2019-07-02 10:47:59 -04:00
Virgil Dupras
9eb80d5eac
sms/pad: new module to manage Megadrive controller in SMS
2019-07-02 09:02:19 -04:00
Virgil Dupras
b7cda6ed14
shell: improve reliability
...
Make ASCII_BS (sent when driven through kbd) make the same thing as
ASCII_DEL. Also, don't crash on filling the buffer.
2019-06-30 13:25:14 -04:00
Virgil Dupras
ad31c7f7f5
kbd: make letters lowercase
...
We'll make them uppercase when we'll add support for shift.
2019-06-30 13:24:35 -04:00
Virgil Dupras
cd7743b3ae
kbd: give the device a little breathing room in tight loops
2019-06-30 12:12:42 -04:00
Virgil Dupras
e44ebb08b2
recipes/rc2014/ps2: drive a shell with ps/2 kbd!
2019-06-29 14:26:03 -04:00
Virgil Dupras
9fb77054c0
Update docs w.r.t. its relationship with scas
2019-06-19 13:34:06 -04:00
Virgil Dupras
69fc2e3bf2
sdc: make sdcReadBlk return error on max retries
...
It previously returned success!
2019-06-19 13:22:07 -04:00
Virgil Dupras
66fbd20e21
sdc: tidy up
2019-06-19 09:24:16 -04:00
Virgil Dupras
d9ae82c81e
sdc: enable CRC checks on blk write
2019-06-19 09:00:50 -04:00
Virgil Dupras
2ac16d4750
sdc: check CRC during sdcReadBlk
...
When there's a mismatch, retry up to a certain number of times.
This makes random problem related to assembling big kernels go away! But
it also make SD card reading much slower...
2019-06-18 22:03:48 -04:00
Virgil Dupras
cac9acca67
sdc: make some space in memory for buffer CRC
2019-06-18 15:21:58 -04:00
Virgil Dupras
34db493496
sdc: implement CRC7 computation on cmds
...
For now, this achieves nothing else than wasting cycles, but this is the
first step in enabling CRC verifications (CMD59).
I think that this is where my random problems with assembling large
kernels from SDC come from: bad data that isn't detected. If that
happens when PGM loads programs in memory, then anything can happen.
`sdct`, when ran often enough, will error out or corrupt away (go
crazy)...
2019-06-18 14:45:55 -04:00
Virgil Dupras
914c6d5abc
Update comments
2019-06-17 13:42:53 -04:00
Virgil Dupras
00778f73e1
blockdev: fix bug recently introduced in load cmd
...
It would always load one byte less than told... This time it's right on
the money :)
2019-06-17 09:54:30 -04:00
Virgil Dupras
8cf9904f33
blockdev: fix load command over-loading a byte
...
Calling `load` would always read one more byte than specified. Also,
make `0` mean `0x100`.
2019-06-17 08:19:03 -04:00
Virgil Dupras
bd2877e012
shell: make arg in peek/poke mandatory
...
Also, make `0` mean `0x100`.
2019-06-17 08:18:28 -04:00
Virgil Dupras
7c23e5a9ef
acia: protect DE during aciaInt
...
I don't know why I haven't noticed it wasn't protected. It must have
been behind many random problems I've been having...
2019-06-16 19:29:58 -04:00
Virgil Dupras
3e7d181d3c
zasm: properly raise error on bas ioPutC calls
2019-06-15 20:01:17 -04:00
Virgil Dupras
4327153ffd
zasm: fix include EOF detection
...
That was an interesting bug. It didn't cause a problem in emulation, but
in an RC2014 on an SD card, an include that didn't end with two newlines
would cause an infinite loop.
2019-06-15 15:50:27 -04:00