сорян, ступил. Тот же код для MOS
Код:
    .assume adl=1       ; ez80 ADL memory mode
    .org $40000         ; Старт программы

    jp start_here       ; перенход на начало кодв

    .align 64           ; заголовок программы MOS
    .db "MOS",0,1     


start_here:
            
    push af             ; сохранить все регистры - зачем?
    push bc
    push de
    push ix
    push iy

; ------------------
; поехали

; печать текста
    ld hl, string       ; HL=адрес строки в памяти
    ld bc,0             ; BC=длина строки, или если BC=0, то ограничитель строки - байт 0
    ld a,0              ; A=ограничитель
    rst.lil $18         ; Вызов MOS API

startp:
;    ld a, $08           ; 0x08: mos_sysvars ВозвращаетIXU=указатель системных переменных
;    rst.lil $08         ; RST 08h: Выполнить команду MOS

getkey:
;    ld a, (ix + $05)    ; получить код ASCII
	xor a
	rst.lil 8 ; 0x00: mos_getkey
    or a
    jr z,getkey			;0 - не нажата клавиша
    cp 27
    jr z, EXIT_HERE     ; Если нажата Esc, то выход
;	ld (ix+5),0			; моя отсебятина - записать 0 в переменную
	rst.lil 10h			; печать символа с кодом
    jr startp			; переход на начало

; ------------------
; Выход из программы
EXIT_HERE:
    pop iy              ; Восстановить все регистры
    pop ix
    pop de
    pop bc
    pop af
    ld hl,0             ; возвращаемое значени 0 - нет ошибок
    ret                 

; ------------------

string:
    .db "Hello Agon World\r\n",0