libc: сплит «1 функция = 1 модуль» — вся библиотека, wildcard-сборка
- bios/conio/env/errno/gfx/io/mem/mouse/stdio/stdlib/string/sys/time/ video разложены по модулям: общие статики и helpers — в internal _-модулях (_conio.h/_mouse.h/_gfx.h/_palette.h/_atexit.h/_time.h) - lib/Makefile: LIBC_C = wildcard libc/*/*.c — гранулярность файлов = гранулярность DCE линкера - эффект _CODE: gfx_text 6986→2568 Б, gfx_mous −1745, gfx_demo/d16 −542; ранее timedir −3270, ls −3098, stattest −2995 - комментарии оставшихся модулей переведены на русский; puts: убран мёртвый pchars; videomode_raw разложен на get/set - docs/libc-split-asm-cases.md — правила asm-связок между модулями; docs/libc-roadmap.md — план этапа - восстановлен examples/mdview/SAMPLE.MD (нужен make floppy) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+9
-9
@@ -1,12 +1,12 @@
|
||||
/*
|
||||
* sleep — block for N seconds using the 50 Hz frame interrupt.
|
||||
* sleep — заблокироваться на N секунд по кадровому прерыванию 50 Гц.
|
||||
*
|
||||
* Sprinter ISR fires 50 times per second. `halt` parks the CPU until
|
||||
* the next IRQ, so 50 halts = ~1 second of wall clock. This is the
|
||||
* same trick solid-c uses in IO.ASM:285.
|
||||
* ISR Sprinter срабатывает 50 раз в секунду. `halt` паркует CPU до
|
||||
* следующего IRQ, так что 50 halt'ов = ~1 секунда стенного времени.
|
||||
* Тот же трюк, что у solid-c в IO.ASM:285.
|
||||
*
|
||||
* Note: requires interrupts to be enabled (they are by default — ESTEX
|
||||
* sets up IM 1 with the frame ISR before our program runs).
|
||||
* Замечание: требует включённых прерываний (по умолчанию включены —
|
||||
* ESTEX настраивает IM 1 с кадровым ISR до запуска нашей программы).
|
||||
*/
|
||||
|
||||
#include <unistd.h>
|
||||
@@ -16,11 +16,11 @@ void sleep(unsigned int seconds) __naked
|
||||
(void)seconds;
|
||||
__asm
|
||||
inter:
|
||||
;; HL = seconds on entry (SDCC single int arg).
|
||||
;; HL = seconds на входе (единственный int-аргумент SDCC).
|
||||
ld a, h
|
||||
or a, l
|
||||
ret Z ; sleep(0) — return immediately
|
||||
ld b, #50 ; 50 halts per second (50 Hz interrupt)
|
||||
ret Z ; sleep(0) — вернуться сразу
|
||||
ld b, #50 ; 50 halt-ов на секунду (50 Гц)
|
||||
inner:
|
||||
halt
|
||||
djnz inner
|
||||
|
||||
Reference in New Issue
Block a user