Кстати, вот тебе для затравки еще один пример. С boot.B надо сделать те же манипуляции, что и с rst8.a80. Работают кнопки 1-4 и пробел. И не безумно оно сложно
И размер тебя порадует, хотя при отказе от Basic'а на него в 99% плевать.
Код:
DEVICE ZXSPECTRUM128
cls = #0d6b
chan_open = #1601
print_string = #203c
LAST_K = #5c08
org #8000
Start:
call cls
ld a,#02
call chan_open
call print_menu
res 5,(iy + #01)
loop: halt
bit 5,(iy + #01)
jr z,loop
res 5,(iy + #01)
ld a,(LAST_K)
cp " "
jr z,exit
sub "1"
jr c,loop
ld hl,item_1 + 1
jr z,switch
ld hl,item_2 + 1
dec a
jr z,switch
ld hl,item_3 + 1
dec a
jr z,switch
ld hl,item_4 + 1
dec a
jr nz,loop
switch:
inc a
xor (hl)
ld (hl),a
ld a,#16
rst #10
xor a
rst #10
rst #10
call print_menu
jr loop
print_menu:
ld de,menu_text
ld bc,end_menu_text - menu_text
jp print_string
exit:
rst #08
db #08
menu_text:
item_1:
db #14, #01, "Item 1", #0d
item_2:
db #14, #00, "Item 2", #0d
item_3:
db #14, #00, "Item 3", #0d
item_4:
db #14, #00, "Item 4", #0d
end_menu_text:
End:
EMPTYTRD "menu.trd"
SAVETRD "menu.trd", "menu.C", Start, End - Start
PS. У тебя в загрузчике используется RUN "что-то там"CODE. Не делай так. TR-DOS состоит из багов с небольшим вкраплением работоспособного кода, код команды RUN для кодового блока не попал в счастливую безбажную область. Если скомпилишь мой пример и запустишь его из BASIC по-человечески и через RUN "menu" CODE в TR-DOS и нажмешь пробел, почувствуешь разницу