scsl  1.1.1
Shimmering Clarity Standard Library
scsl documentation

Introduction

This is a collection of data structures and subroutines that I find useful in building things.

This library arose from two main use cases.

The modem

On the one hand, I was building a wireless modem for some Z80 computers I have. I needed to be able to store a phonebook of SSIDs and WPA keys, as well as short names to host:port descriptors. I had a limited amount of persistent NVRAM storage and no SD card or other removeable media, so typical desktop-oriented serialization mechanisms weren't going to really work well. Furthermore, when working with microcontrollers, I prefer not to dynamically allocate memory as much as possible. This led to building out Arena, TLV::Record to store the records, and finally Dictionary to make use of both of them.

Closely related to this, I've been working on building an ARM-based handheld computer, for which I would also need a memory arena.

The text editors

Some time ago, I wrote a console text editor of my own; then later, started working on a graphical editor. For this, I needed some data structures to manage memory in the editor. Thus, Buffer was born.