Сообщение от
andrews
Покажите, пожалуйста, как?
Я в сях не шарю, тем более не копал в нюансы ZDS2. Накидал прогу на асме с комментариями. Жми Esc для выхода, Enter не обрабатывается.
Код:
.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
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
- - - Добавлено - - -
Кстати, заявлено, что у этого эмуля есть отладчик. Только не разберусь с брякпойнтами. Может, не так пишу?
- - - Добавлено - - -
ага, отладчику надо добавлять $ для шестнадцатиричных чисел.