Forth Progress: ARRAY and CRC32

I've been a bit distracted lately with my astronomy studies, but I have still been working with Mecrisp Stellaris Forth here and there. I asked in the #mecrisp IRC channel if anybody had a software implementation of the CRC32 checksum algorithm available for Mecrisp Stellaris. They told me no, but that it would be a great idea for me to make one and contribute it. So, I did.

The main appeal of CRC32 is that it is very simple to implement, especially if you store the polynomial lookup table in memory. Here are links to my code:

https://codeberg.org/infrared/mf-rp2040/src/commit/82ff68e023d84e563fa33c4b54ec329595fd492e/ARRAY.FS

https://codeberg.org/infrared/mf-rp2040/src/commit/82ff68e023d84e563fa33c4b54ec329595fd492e/CRC32.FS

https://codeberg.org/infrared/mf-rp2040/src/commit/82ff68e023d84e563fa33c4b54ec329595fd492e/CRC32_DEMO.FS

ARRAY.FS is just a few helper words to make storing arrays of data look nicer. CRC32.FS is just the polynomial lookup table (256 32-bit values) and these two words:

The first word is a helper word. CRC32 is the loop which takes a byte count and a starting memory address, and then outputs the checksum for the data in that memory area.

As a word of caution, the code just uses C@ to fetch each byte, so I'm not sure if that works for all use cases. More specifically, I don't know if all Stellaris targets support reading firmware with C@.

Proxied content from gemini://gem.librehacker.com/gemlog/tech/20221011-0.gmi

Gemini request details:

Original URL
gemini://gem.librehacker.com/gemlog/tech/20221011-0.gmi
Status code
Success
Meta
text/gemini
Proxied by
kineto

Be advised that no attempt was made to verify the remote SSL certificate.