Files
snark13 0280b05933 libc/kbd: held-карта клавиш в биты (512 -> 64 Б); эталон размеров принят
Разгрузка W1/W2 под будущий ИИ стражей: _kbdraw_down был БАЙТОМ на
скан-код (512 Б в _DATA при 32-килобайтной раскладке).  Теперь бит на
код: код>>3 = байт, код&7 = бит, расширенные (префикс 0xE0) — смещение
+32 байта вместо +256.

Трамплин прерывания строит маску СДВИГОМ, а не таблицей: таблица
потребовала бы `ld hl,#метка` внутри трамплина, а он копируется в W2
побайтно и обязан быть без абсолютных само-ссылок (см. его шапку).
Маска строится в BC, поэтому в клавиатурной ветке добавлен push/pop bc.
Трамплин вырос 244 -> 267 Б, буфер копии поднят 320 -> 336 (запас 69 Б).

Проверено в MAME на roomtest, все три класса клавиш:
  - обычные: '=' (обход комнат) и 'K' (чит-убийство стража — читал
    guardhp_curr/delta: 3/0 -> 0/-3);
  - расширенные (E0): стрелка вправо — Kid добежал до края комнаты;
  - модификаторы: удержание Shift ставит бит 2 байта 2 карты
    (скан-код 0x12), отпускание снимает.

Скорость: кадр 334 716 -> 338 508 тактов (+1.1 %) на битовой арифметике
в kbd_raw_down (~15 вызовов за кадр); при бюджете 430 000 это 0.79
периода вместо 0.78 — регрессии нет.

Итог по roomtest: данные 4422 -> 4022 Б, куча W2 996 -> 1294 Б.

Эталон размеров принят заново (make size-baseline): _CODE десяти
программ вырос на 14-23 Б — это код битовой арифметики в трамплине и
kbd_raw_down, обмен на -448 Б данных, которые size_check не считает.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-30 00:50:37 +03:00

982 B

1# Эталон размеров _CODE (байт); обновление: python3 toolchain/size_check.py --update
2accfill3786
3argv3431
4assrtest3847
5atlas9193
6attrprob4087
7balls6031
8banked1056
9bankedbg1067
10banklocl4683
11banktest3767
12bgi_img7200
13bgitest3751
14bios_text4461
15blitperf5860
16blitw4939
17cat913
18cblstream6431
19cbltest6580
20cblwav6648
21conio4605
22conio23929
23dec_test860
24errno5966
25fbench8085
26fdmax6023
27filetest10547
28fpsdiv4870
29gets509
30gfx_dbuf5112
31gfx_demo4117
32gfxbanks6044
33hello4167
34hello24244
35irqtest6647
36kbdraw4911
37ls4835
38malloc4461
39mdview18878
40mdview227031
41mem_test4555
42mouse4382
43openenv6124
44palfile5406
45ptime5744
46rpgprof12082
47rpgwalk10309
48rt_test5154
49scroll2974
50seek4188
51simple955
52solidt11531
53space11272
54spranim9431
55spriteclip4119
56sprites6791
57stattest7549
58stdlib6643
59stest23644
60strtest1340
61text_palette5024
62timedir5454
63w0page8831
64w3bankgfx5240
65w3bgfx5246
66w3big3673
67w3huge3700
68w3probe3556
69w3tiny3471
70winrest4459