1
0
mirror of https://github.com/hsoft/collapseos.git synced 2025-04-06 08:18:40 +10:00
Commit Graph

87 Commits

Author SHA1 Message Date
Clanmaster21
6bc516b2e7
Optimised parsing functions and other minor optimisations
UnsetZ has been reduced by a byte, and between 17 and 28 cycles saved based on branching. Since branching is based on a being 0, it shouldn't have to branch very often and so be 28 cycles saved most the time. Including the initial call, the old version was 60 cycles, so this should be nearly twice as fast. 
fmtHex has been reduced by 4 bytes and between 3 and 8 cycles based on branching.
fmtHexPair had a redundant "and" removed, saving two bytes and seven cycles.
parseHex has been reduced by 7 bytes. Due to so much branching, it's hard to say if it's faster, but it should be since it's fewer operations and now conditional returns are used which are a cycle faster than conditional jumps. I think there's more to improve here, but I haven't come up with anything yet.
2019-10-13 13:10:51 +01:00
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