Files
Sprinter-SDCC/docs/size_baseline.tsv
T
snark13 a6fe50e247 libc: IM2 user-ISR, Phase 1 — libc/irq (irq_install/irq_remove) + irqtest
Проще исходного плана (docs/im2_isr_design.md обновлён): отдельный
--memory im2 не понадобился.

- <irq.h>: irq_install(handler) — вызов ~50 Гц только на КАДРОВЫХ
  прерываниях (клавиатура bit0:0x19 и CBL bit7:0xFE отфильтровываются);
  штатный обработчик DSS чейнится ВСЕГДА (SMC-jp, адрес из старой
  IM2-таблицы по регистру I) — клавиатура/SYSTIME/мышь живут
- вектор-таблица: 513 Б BSS + runtime-выравнивание; Sprinter шлёт
  только вектор 0xFF, поэтому jp-заглушка лежит внутри самой таблицы
  по смещению H — без linker-областей и правок crt0
- трамплин: полный сейв обоих наборов+IX/IY вокруг user-handler'а
  (ex af,af' как .db 0x08 — апостроф ломает препроцессор SDCC)
- tiny/big: работает (код в W2); small/huge: EINVAL по проверке
  адресов; irq_remove идемпотентен и висит на atexit (выход без
  снятия = I в памяти умершего процесса = крах шелла); old_I==0 → IM1
- tests/irqtest: тики за 3 с против time() (~50 Гц), живая клавиатура
  под handler'ом, остановка после remove, чистый выход
- docs: im2_isr_design (статус+дельты), libc-reference (<irq.h>), TODO

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 21:21:16 +03:00

665 B

1# Эталон размеров _CODE (байт); обновление: python3 toolchain/size_check.py --update
2argv3431
3assrtest3847
4attrprob4091
5banked1056
6bankedbg1067
7banklocl4832
8banktest3767
9bios_text4470
10cat915
11conio4634
12conio23946
13dec_test860
14errno6216
15fbench9040
16fdmax6337
17filetest11624
18gets509
19gfx_d163319
20gfx_dbuf2396
21gfx_demo3219
22gfx_mous5542
23gfx_text2560
24hello4176
25hello24251
26irqtest4818
27ls4919
28malloc4462
29mdview19122
30mdview227029
31mem_test4558
32mouse4394
33openenv6127
34ptime5896
35rt_test4103
36seek4177
37simple963
38solidt12381
39stattest7700
40stdlib6643
41stest23644
42strtest1340
43text_palette5039
44timedir5471
45winrest4481