libbgi: bgi256 fill-примитивы на register-ABI + typedef color_t
- удалён глобальный скретч акселератора (_gfx_acc256.c); fill-сегменты (_gfx_hfill256/_gfx_vfill256) принимают аргументы в регистрах HL/C/B/E, вызываются только из asm raw-примитивов - новый _gfx_rectfill256: заливка прямоугольника через Horizontal_Size - raw-примитивы (plot/read/hspan/vspan/clear) переписаны под новый ABI - graphics.h: typedef color_t (uint8_t) для всех public color-функций - sprinter-cc: флаг --safe (линковка *_safe.lib при наличии) - CLAUDE.md/mame_interactive: авто-прогон тестов в MAME - gfx_demo: демонстрация rectfill Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -111,6 +111,17 @@ CADENCE = 0.14 # шаг между символами
|
||||
HOLD = 0.06 # длительность удержания клавиши
|
||||
|
||||
|
||||
def basename_83(name):
|
||||
"""Обрезать имя файла до формата 8.3, как в FAT12 корневом каталоге."""
|
||||
name = name.upper()
|
||||
if '.' in name:
|
||||
base, ext = name.rsplit('.', 1)
|
||||
base = base[:8].ljust(8, ' ')
|
||||
ext = ext[:3].ljust(3, ' ')
|
||||
return f"{base}.{ext}"
|
||||
return name[:8].ljust(8, ' ') + '.EXE'
|
||||
|
||||
|
||||
def resolve(ch):
|
||||
"""char → (tag, mask, need_shift). Заглавные буквы = shift+строчная."""
|
||||
if ch in PHYS:
|
||||
@@ -238,7 +249,7 @@ def main():
|
||||
if not os.path.isfile(exe_path):
|
||||
print(f"ОШИБКА: не найден {exe_path}")
|
||||
sys.exit(1)
|
||||
exe_name = os.path.basename(exe_path).lower()
|
||||
exe_name = basename_83(os.path.basename(exe_path)).upper()
|
||||
steps.append((args.launch_at, f"a:\\{exe_name}\n"))
|
||||
if not steps:
|
||||
print("ОШИБКА: укажите exe для запуска или хотя бы один --step")
|
||||
|
||||
Reference in New Issue
Block a user