0280b05933
Разгрузка 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>
71 lines
982 B
Plaintext
71 lines
982 B
Plaintext
# Эталон размеров _CODE (байт); обновление: python3 toolchain/size_check.py --update
|
|
accfill 3786
|
|
argv 3431
|
|
assrtest 3847
|
|
atlas 9193
|
|
attrprob 4087
|
|
balls 6031
|
|
banked 1056
|
|
bankedbg 1067
|
|
banklocl 4683
|
|
banktest 3767
|
|
bgi_img 7200
|
|
bgitest 3751
|
|
bios_text 4461
|
|
blitperf 5860
|
|
blitw 4939
|
|
cat 913
|
|
cblstream 6431
|
|
cbltest 6580
|
|
cblwav 6648
|
|
conio 4605
|
|
conio2 3929
|
|
dec_test 860
|
|
errno 5966
|
|
fbench 8085
|
|
fdmax 6023
|
|
filetest 10547
|
|
fpsdiv 4870
|
|
gets 509
|
|
gfx_dbuf 5112
|
|
gfx_demo 4117
|
|
gfxbanks 6044
|
|
hello 4167
|
|
hello2 4244
|
|
irqtest 6647
|
|
kbdraw 4911
|
|
ls 4835
|
|
malloc 4461
|
|
mdview 18878
|
|
mdview2 27031
|
|
mem_test 4555
|
|
mouse 4382
|
|
openenv 6124
|
|
palfile 5406
|
|
ptime 5744
|
|
rpgprof 12082
|
|
rpgwalk 10309
|
|
rt_test 5154
|
|
scroll 2974
|
|
seek 4188
|
|
simple 955
|
|
solidt 11531
|
|
space 11272
|
|
spranim 9431
|
|
spriteclip 4119
|
|
sprites 6791
|
|
stattest 7549
|
|
stdlib 6643
|
|
stest2 3644
|
|
strtest 1340
|
|
text_palette 5024
|
|
timedir 5454
|
|
w0page 8831
|
|
w3bankgfx 5240
|
|
w3bgfx 5246
|
|
w3big 3673
|
|
w3huge 3700
|
|
w3probe 3556
|
|
w3tiny 3471
|
|
winrest 4459
|