No results
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
⚙️ Clack-BASIC: Runtime-Routinen & Grafik-Architektur
Da der 16-Bit Relais-Computer eine minimalistische Ein-Register-Hardware (Accu) ist, bindet der Compiler automatisch optimierte Unterprogramme ein, sobald sie im Quellcode benötigt werden:
1. __runtime_cls (Display Löschen)
- Syntax:
CLSoderCLS StartZeile, EndZeile - Arbeitsweise:
- Bei
CLS: Löscht alle 64 Worte des 32×32 Framebuffers (960..1023). - Bei
CLS Start, End: BerechnetStartAddr = 960 + Start*2undEndAddr = 960 + End*2 + 2. Löscht nur die gewünschten Zeilen.
- Bei
- Vorteil: Erlaubt partielles Löschen in Millisekunden statt immer den gesamten Bildschirm zu bereinigen.
2. __runtime_pset (Single-Pixel Bitmasking)
- Syntax:
PSET X, Y, Color(wobeiColor = 1für An,Color = 0für Aus) - Arbeitsweise (Read-Modify-Write):
- Wort-Adresse berechnen:
wordAddr = 960 + (Y * 2) + (X / 16) - Bitmaske berechnen: Startet bei
0x8000(Bit 15) und shiftet umX & 15nach rechts (0x8000 >> (X & 15)). - Aktuellen Framebuffer-Wert laden:
currWord = memory[wordAddr]. - Bit-Operation:
- Wenn
Color != 0:currWord = currWord | mask(Pixel setzen) - Wenn
Color == 0:currWord = currWord & ~mask(Pixel rückstandslos löschen)
- Wenn
- Zurückschreiben:
memory[wordAddr] = currWord.
- Wort-Adresse berechnen:
- Ergebnis: Ermöglicht echte Single-Pixel-Grafiken und flackerfreies Delta-Rendering für Spiele.
3. __runtime_mul & __runtime_div
- Multiplikation (
*): 16-Bit Shift-and-Add Algorithmus über Register__r0und__r1. - Division (
/undMOD): Wiederholte 2er-Komplement Subtraktion. Der Rest wird in__remabgelegt.