gigatron/rom/Archive/lcc/Libs/Gigatron/ClearScreen.c
2025-01-28 19:17:01 +03:00

42 lines
1.4 KiB
C

/*----------------------------------------------------------------------+
| |
| ClearScreen -- Clear standard screen memory |
| |
+----------------------------------------------------------------------*/
#include <Gigatron.h>
extern int ScreenPos = 0;
extern byte Color = White;
extern byte BgColor = Blue;
void ClearScreen(void)
{
int p = (int)screenMemory;
ScreenPos = p + Indent; // Go back to top left of screen
sysFn = SYS_VDrawBits_134; // SYS function plots 8 pixels vertically
sysArgs[0] = BgColor; // Set background color
sysArgs[2] = 0; // Set bit pattern: only background
do {
do {
*(int*)(sysArgs+4) = p; // Set screen address
__syscall(134);
p += 0x800; // Step 8 pixels down
} while (p >= 0);
p += -120*256 + 1; // Step 120 pixels up, 1 pixel right
} while ((p & 255) != 160); // Until reaching X position 160
for (p=120-1; p>=0; p--) // Reset video indirection table
videoTable[p+p] = ((int)screenMemory >> 8) + p;
}
/*----------------------------------------------------------------------+
| |
+----------------------------------------------------------------------*/