Commit Graph

738 Commits

Author SHA1 Message Date
Virgil Dupras
d6b391e39a Update bootstrap binaries 2019-06-19 13:22:51 -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
7cdc288ef2 zasm: print progress indicator while assembling 2019-06-19 11:42:39 -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
6df77ddef3 recipes/rc2014/zasm: we can now assemble the recipe's kernel 2019-06-18 22:07:44 -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
6516ff7212 zasm: add support for "XOR n" and "SLA r" 2019-06-18 14:24:43 -04:00
Virgil Dupras
0a36ea0815 recipes/rc2014/zasm: add unpack + verification 2019-06-17 15:35:14 -04:00
Virgil Dupras
6f61aa404f tools/cfsunpack: new tool 2019-06-17 15:21:05 -04:00
Virgil Dupras
95b658897a recipes/rc2014/zasm: add instructions to assemble kernel 2019-06-17 14:19:49 -04:00
Virgil Dupras
3e437747c2 recipes/rc2014: add missing calls to fsInit
Also, tighten RAM addresses. They were unecessarily loose.
2019-06-17 13:46:33 -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
4b423a9dc6 tools/blkdump.py: new tool
Also, rename "download.py" to "memdump.py".
2019-06-17 09:02:01 -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
5e31de0bac apps/memt: new app 2019-06-16 20:53:21 -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
3bc165c8f6 Update bootstrap bin 2019-06-15 20:54:27 -04:00
Virgil Dupras
3e7d181d3c zasm: properly raise error on bas ioPutC calls 2019-06-15 20:01:17 -04:00
Virgil Dupras
7ba8e85a4a Update bootstrap binaries 2019-06-15 15:53:03 -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
Virgil Dupras
92a04f4627 sdc: support 24-bit addressing
Needed if we want to compile the kernel and zasm from within a SD card.
I didn't go straight for 32-bit because it was significantly more
complex and 24-bit give us 16M. Enough to go on for a while...
2019-06-15 13:41:20 -04:00
Virgil Dupras
605c631dc0 shell: add support for backspace
It doesn't sound like much, but that backspace key is often useful...
2019-06-14 22:14:09 -04:00
Virgil Dupras
e7c07cdd9a apps/at28w: fix argument byte order 2019-06-14 21:11:45 -04:00
Virgil Dupras
14cc2fb785 parse: fix option word default value
Previously, an optional word argument would only have its first byte set
to zero.
2019-06-14 21:10:18 -04:00
Virgil Dupras
93981e00eb zasm: fix include line no in error reports
Weren't properly saved during local pass back and forth.
2019-06-14 20:26:39 -04:00
Virgil Dupras
c613f7b0ee recipes/rc2014/eeprom: fix broken a28w args passing
That's why the command seemed slow! It's much faster than I thought.
2019-06-14 16:30:01 -04:00
Virgil Dupras
4ea7839488 New tool: download.py 2019-06-14 16:06:18 -04:00
Virgil Dupras
df5549ae76 tools/upload.py: support files larger than 0xff bytes 2019-06-14 15:06:14 -04:00
Virgil Dupras
d40940a1ff doc/zasm: fix error 2019-06-14 14:24:51 -04:00
Virgil Dupras
817636242a Add at28w app and recipe
This allows us to write to an AT28 EEPROM from within collapse os.
2019-06-14 14:15:30 -04:00
Virgil Dupras
145b48efb7 Add apps/sdct
A new app to stress test the SD card driver. Also, accompanying this
commit, changes solidifying the SD card driver so that stress tests
actually pass :)
2019-06-10 15:54:15 -04:00
Virgil Dupras
8b638f6899 Update README 2019-06-07 20:08:41 -04:00
Virgil Dupras
9bb2194fb0 recipes/rc2014/zasm: zasm can now assemble *and* write to file 2019-06-07 19:53:50 -04:00
Virgil Dupras
495d69c1cb sdc: make writing more solid
By not waiting until the SD card wan't busy any more after a write, we
exposed ourselves to errors if another operation was attempted right
after it.
2019-06-07 14:59:53 -04:00
Virgil Dupras
e046081900 sdc: add second buffer 2019-06-06 22:16:57 -04:00
Virgil Dupras
db24e21276 sdc: add layer of indirection to buffer system
Also, lay out the plan for adding a second buffer.
2019-06-06 15:57:32 -04:00
Virgil Dupras
b742d48b75 Update bootstrap binaries 2019-06-05 19:52:56 -04:00
Virgil Dupras
3dde51ae98 Allow file-to-file compilation in the emulated shell 2019-06-05 19:51:19 -04:00
Virgil Dupras
fb99f4ad91 fs: grow file size on fsPutC, if appropriate 2019-06-05 16:34:14 -04:00
Virgil Dupras
fc81bce70f Fix error handling when writing to files in emulated shell 2019-06-05 16:13:15 -04:00
Virgil Dupras
2483ee699d fs: fix broken fopn on id > 0 2019-06-05 15:40:56 -04:00
Virgil Dupras
a7ce9f6fc6 pgm: adapt to recent blkdev change
With fsGetC becoming a "random address" API, it broke pgm. This commit
fixes it. To avoid adding the weight of a blkdev in pgm, I manage the
read offset directly in pgm.
2019-06-05 14:45:38 -04:00
Virgil Dupras
c18d42f08b fs: further adjust to previous blkdev refactoring
Previous refacoring broke all seek/tell within fs. fs handles now lost
the responsibility to keep track of current position. It's blkdev's job.
2019-06-04 20:45:01 -04:00
Virgil Dupras
ae028e3a86 blockdev: make implementors "random access"
This huge refactoring remove the Seek and Tell routine from blockdev
implementation requirements and change GetC and PutC's API so that they
take an address to read and write (through HL/DE) at each call.

The "PTR" approach in blockdev implementation was very redundant from
device to device and it made more sense to generalize. It's possible
that future device aren't "random access", but we'll be able to add more
device types later.

Another important change in this commit is that the "blockdev handle" is
now opaque. Previously, consumers of the API would happily call routines
directly from one of the 4 offsets. We can't do that any more. This
makes the API more solid for future improvements.

This change forced me to change a lot of things in fs, but overall,
things are now simpler. No more `FS_PTR`: the "device handle" now holds
the active pointer.

Lots, lots of changes, but it also feels a lot cleaner and solid.
2019-06-04 15:36:20 -04:00
Virgil Dupras
63473cc2e3 blockdev: make selection structure opaque
I'm about to change that structure and I don't want fs to be messed up
by this. I'm proceeding step by step...
2019-06-04 09:56:36 -04:00