libbgi: фикс утечки W3-скобки в bar() + удалить дубликат _bgi_read
bar(): rectfill-ветки выходили ранним return без _bgi_end() — W3 оставался замаплен на видеобанк после каждого bar() со сплошной заливкой. _bgi_read дублировал getpixel (та же композиция begin+read_raw+end); единственный потребитель floodfill переведён на getpixel, модуль удалён. getpixel.c: убраны мёртвые статики _gp_* (остались от до-register версии). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+11
-8
@@ -72,17 +72,20 @@ void _bgi_end(void) __preserves_regs(b,c,d,e,h,l);
|
||||
|
||||
uint8_t _bgi_mode_set(void); /* войти в режим + палитра + границы */
|
||||
|
||||
void _bgi_plot_raw (int x, int y, uint8_t color); /* точка, без скобки */
|
||||
uint8_t _bgi_read_raw (int x, int y); /* чтение, без скобки */
|
||||
void _bgi_hspan_raw(int x, int y, int len, uint8_t color); /* H-отрезок, без скобки */
|
||||
void _bgi_vspan_raw(int x, int y, int len, uint8_t color); /* V-отрезок, без скобки */
|
||||
void _bgi_clear_raw(uint8_t color); /* заливка экрана, без скобки */
|
||||
/* __preserves_regs(d,e): проверено по asm — эти примитивы читают D/E
|
||||
* (y приходит в DE), но НЕ пишут; SDCC не обязан спасать DE вокруг
|
||||
* вызова (экономит push/pop в горячих циклах Брезенхэма/блита).
|
||||
* При правке asm сверять клоббер-лист заново! */
|
||||
void _bgi_plot_raw (int x, int y, uint8_t color) __preserves_regs(d,e); /* точка, без скобки */
|
||||
uint8_t _bgi_read_raw (int x, int y) __preserves_regs(d,e); /* чтение, без скобки */
|
||||
void _bgi_hspan_raw(int x, int y, int len, uint8_t color) __preserves_regs(d,e); /* H-отрезок, без скобки */
|
||||
void _bgi_vspan_raw(int x, int y, int len, uint8_t color) __preserves_regs(d,e); /* V-отрезок, без скобки */
|
||||
void _bgi_clear_raw(uint8_t color); /* заливка экрана, без скобки (клоббер всех) */
|
||||
|
||||
/* Self-bracket версии (begin + raw + end) — для разовых вызовов из
|
||||
* математики, которой не нужен пакетный режим (floodfill, cleardevice).
|
||||
* _bgi_read возвращает цвет пикселя как unsigned (в SDCC __sdcccall(1)
|
||||
* 8-битный возврат идёт в A, расширяется до int). */
|
||||
unsigned _bgi_read (int x, int y);
|
||||
* Разовое чтение пикселя — публичный getpixel (та же композиция;
|
||||
* бывший дубликат _bgi_read удалён 2026-07-10). */
|
||||
void _bgi_hspan (int x, int y, int len, uint8_t color);
|
||||
void _bgi_clearall(uint8_t color);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user