c71e249a4e
First substantive commit: the entire Sprinter C compiler tree on top of
the bare README+gitignore initial commit.
What's in here:
bin/sprinter-cc — driver script invoking SDCC + linker + mkexe
libc/ — Sprinter-specific libc layer over ESTEX/BIOS
(conio, gfx, io, mem, stdio + headers)
runtime/ — crt0 variants (default/small/banked/minimal)
+ heap + bank trampolines
toolchain/ — mkexe (SprintEXE packer, C + tests)
examples/ — 30 demo programs (gfx, file I/O, env, time, …)
lib/Makefile — builds the libc archive (sprinter.lib)
docs/ — converted Sprinter manuals + asm reference samples
third_party/ — solid-c reference compiler dump + sdcc setup script
release_docs/ — packaging / release notes
gitignore overhaul:
• Drop dangerous blanket patterns: *.asm (would hide docs/samples/*.asm)
and *.exe (case-insensitive match was hiding third_party/solid-c/*.EXE
on macOS APFS). Replaced with examples/*/*.{asm,exe,…} and lib/*.lib.
• Restore tracking of toolchain/mkexe/tests/{one,big}.bin — those are
INPUT fixtures, not build outputs.
• Collapse the duplicated SDCC/C/Sdcc sections into one section per
concern (build outputs / vendored / OS-junk).
• Add .sprinter-cc-*/, build/ (catches lib/build/ too), .claude/.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
23 lines
992 B
ArmAsm
23 lines
992 B
ArmAsm
;; ----------------------------------------------------------------------
|
|
;; heap_top.s — defines the absolute upper bound of the heap.
|
|
;;
|
|
;; This file is built PER-PROGRAM (not bundled into sprinter.lib) so the
|
|
;; value of ___sdcc_heap_end can be overridden without re-assembling the
|
|
;; library or the user's crt0. sprinter-cc may regenerate this file in
|
|
;; its working dir with a custom value when `--stack-size N` is passed;
|
|
;; otherwise the default below applies.
|
|
;;
|
|
;; malloc takes &___sdcc_heap_end as the upper bound of the free-list,
|
|
;; so the symbol's address (== the equate value) IS the heap ceiling.
|
|
;;
|
|
;; 0xBFFE — stack top (init SP in crt0)
|
|
;; 0xBB00 — heap top (default) → ~1278 bytes reserved for the stack
|
|
;; ... — heap grows up to here from end-of-BSS
|
|
;; end-of-BSS — heap start
|
|
;; ----------------------------------------------------------------------
|
|
|
|
.module sprinter_heap_top
|
|
|
|
___sdcc_heap_end = 0xBB00
|
|
.globl ___sdcc_heap_end
|