системные переменные похерены?
Вид для печати
системные переменные похерены?
переменные/IY там выставлены (или вы гадаете не смотря в код)
косяк в битах переменной (#5c3b)
в SNA по результатам битов в этой переменной в результате опроса выдаётся код токена, а не символа !!!
Спасибо за ответы.
А посоветуйте, пожалуйста, актуальный ассемблер, который умеет создавать SNA.
В sjasm 'savesna'.
sjasm не захотел работать под маком:
Просмотрел я темы, которые прилеплены в шапке раздела программирование (языки и среды; средства разработки).Код:libc++abi.dylib: terminating with uncaught exception of type std::out_of_range: basic_string
Последние сообщения датированы 2006, 2007 годами.
Хочется современных средств, может даже, с прицелом на разработку для Spectrum NEXT, а информации особо нет.
Нормально всё работает. https://github.com/z00m128/sjasmplus...es/tag/v1.14.3 собирай тар.гз.
Современные средства - https://github.com/maziac/z80-debug (как можно видеть на гифках - запущено на чем-то, сильно напоминающем мак)
А он и не должен этого делать. Вдруг ваш написанный код должен перекрывать системные переменные, а тут ужасм взял их и инициализировал ))
Если вдруг нужно sna с переменными, надо сделать их дамп, причём желательно со срезом аналогичного вызова ассемблерной проги из бейсика, а то могут быть сюрпризы как тут.
А потом предварительно приинкбинить этот дамп в исходнике, а то желательно бы ещё и регистры какие (sp - в частности, IY - как видно по умолчанию выставляется) инициировать.
А вообще по мне для игрушки чтение управления лучше напрямую через порты организовать. Хотя если шустрость и отзывчивость не критична то можно и забить.
to YuronN пара конструкций на заметку если не наошибся конечно )) Не шедевр, здешние монстры покруче завернут (тут вариантов море), так для общего развития.
Код:
...
loop
halt ; системный опрос проводится раз в прерывание, так что нет смысла гонять цикл вхолостую (не забыть только прерывания разрешить EI )
ld hl, last_k
ld a, (hl)
ld (hl),0 ; очищаем буфер сразу после забора символа, и не забудется и лишний раз ld hl,last_k не писать
ld hl,pechataem ; поскольку у нас однотипное окончание обработки, можно сэкономить на джампах и коллах
push hl ; кладём на стек адрес окончания обработки, теперь по 'ret' попадём на обработку
ld de, keyp ; tright
ld bc, eokeyp-keyp
cp 112 ;key P
ret z
ld de, keyo ; tleft
ld bc, eokeyo-keyo
cp 111 ;key O
ret z
ld de, keysp ; tspace
ld bc, eokeysp-keysp
cp 32 ;key Space
ret z
pop af ; снимаем неиспользованный для ret адрес, иначе стек забьётся
jr loop
pechataem ; окончание обработки
call 8252
jr loop
last_k equ 23560
keyp defb "P "
eokeyp equ $
keyo defb "O "
eokeyo equ $
keysp defb "space "
eokeysp equ $
потому шито эти системные переменные никому не нужны
нормальные люди не лезут в пзу не под каким предлогом
ПУШО НЕТ НИКАКОЙ! ГАРАНТИИ его одинаковости на разных машинах
разве что при обращение к трдос-у\теневым портам (которые без лезть в пзу ну никак...)
или 128 бит демо
или прочая муть которую жестко ограничивает количество свободной памяти...