сорян, ступил. Тот же код для 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




Ответить с цитированием