Rev 1210 |
Go to most recent revision |
Blame |
Compare with Previous |
Last modification |
View Log
| Download
| RSS feed
DEVICE ZXSPECTRUM128
include "../_sdk/sys_h.asm"
;1992, IskraSOFT corp. ╨б╨Я╨▒, ╨а╨╛╤Б╤Б╨╕╤П
;LL0000=0;$-#a7
;LL5db2=$-#f5
;LL5da8=$-#ff
;LL0010=0x10;$-#97
;LL5fc1=$-#e6
;LL5dc9=$-#de
;LL5ddf=$-#c8
;LL6091=$-#16
LL0005=5;$-#a2
;LL609c=$-#0b
LL000f=0x0f;$-#98
;LL6169=$-#3e
;LL0300=0x300;$-#a7
SCRHGT=24
NEDOOS=1
MAXCMDSZ=COMMANDLINE_sz-1-4-4 ;not counting terminator (-4 for "cmd ")
org PROGSTART
begin
;0x5da4=23972
if NEDOOS
ld sp,0xc000
ld e,3
OS_SETGFX ;e=0:EGA, e=2:MC, e=3:6912, e=6:text ;+SET FOCUS ;e=-1: disable gfx (out: e=old gfxmode)
ld a,(user_scr0_high) ;ok
SETPG4000 ;TODO ╤Г╨▒╤А╨░╤В╤М ╨┤╨╗╤П textmode
call keepdir
ld hl,COMMANDLINE
call skipword
call skipspaces
ld (par1addr),hl
call skipword
push hl
call skipspaces
ld (par2addr),hl
pop hl
ld (hl),0
endif
call domenu;LL5dbd
if NEDOOS
jr c,failquit ;CY=error
else
ret c ;CY=error
endif
okquit;LL5da8
if NEDOOS
ld hl,0
QUIT
failquit
ld hl,-1
QUIT
else
xor a
ld a,#f4
ret
endif
LL5dac
;hl=╨░╨┤╤А╨╡╤Б ╨║╨╛╨╝╤Б╤В╤А╨╛╨║╨╕
call LL5db2 ;run (p_com+exebat)
if NEDOOS
jr c,failquit ;CY=error
else
ret c ;CY=error
endif
jr okquit;LL5da8
LL5db2
;run (p_com+exebat)
;hl=╨░╨┤╤А╨╡╤Б ╨║╨╛╨╝╤Б╤В╤А╨╛╨║╨╕
if NEDOOS
;cmd <hl>
push hl
call findCR
dec hl
ld (hl),0
;run "cmd <command to run>"
OS_SETSYSDRV
pop hl ;ld hl,cmdbuf
call loadandrun ;nz=error, e=id
jp nz,failquit
jp okquit
else
xor a
ld b,#01 ;???
ld c,#48 ;72(48):run - = p_com(#49) + exebat(#44). (╨Т╤Л╤Е╨╛╨┤ ╤Б╨╝. exebat). ╨Я╨╡╤А╨╡╨┤╨░╤О╤В╤Б╤П ╤А╨╡╨│╨╕╤Б╤В╤А╤Л IX,B.
;73(49):p_com - ╨Ч╨░╨┐╨╛╨╗╨╜╨╕╤В╤М ╨▓╨╜╤Г╤В╤А╨╡╨╜╨╜╨╕╨╣ ╨▒╤Г╤Д╨╡╤А ╨║╨╛╨╝╨░╨╜╨┤╨╜╨╛╨╣ ╤Б╤В╤А╨╛╨║╨╕. HL = ╨░╨┤╤А╨╡╤Б ╤Б╤В╤А╨╛╨║╨╕, ╨╛╨║╨░╨╜╤З╨╕╨▓╨░╤О╤Й╨╡╨╣╤Б╤П ╨║╨╛╨┤╨╛╨╝ 13. ╨Я╤А╨╕ ╨┤╨╗╨╕╨╜╨╡ ╤Б╤В╤А╨╛╨║╨╕ ╨▒╨╛╨╗╨╡╨╡ 128 ╤Б╨╕╨╝╨▓╨╛╨╗╨╛╨▓ ╨▓╨╛╨╖╨▓╤А╨░╤Й╨░╨╡╤В ╨╛╤И╨╕╨▒╨║╤Г (╤Д╨╗╨░╨│ C)
;68(44):exebat - ╨Ч╨░╨┐╤Г╤Б╨║ ╤Д╨░╨╣╨╗╨░ ╨┐╨╛ ╨┐╤Г╤В╨╕ ╨╕ ╨╕╨╝╨╡╨╜╨╕ ╤Д╨░╨╣╨╗╨░, ╨╜╨░╤Е╨╛╨┤╤П╤Й╨╡╨│╨╛╤Б╤П ╨▓╨╛ ╨▓╨╜╤Г╤В╤А╨╡╨╜╨╜╨╡╨╝ ╨▒╤Г╤Д╨╡╤А╨╡ ╨║╨╛╨╝╨░╨╜╨┤╨╜╨╛╨╣ ╤Б╤В╤А╨╛╨║╨╕. ╨Т╤Е╨╛╨┤: A=0: ╤Б╤В╨░╨╜╨┤╨░╤А╤В╤А╨░╤П ╨╛╨▒╤А╨░╨▒╨╛╤В╨║╨░ ╤В╨╕╨┐╨░ ╤Д╨░╨╣╨╗╨░, ╤В.╨╡. ╨╛╨▒╤А╨░╤Й╨╡╨╜╨╕╨╡ ╨║ ╤Д╨░╨╣╨╗╤Г S:extent.txt, A>0: DE = ╨░╨┤╤А╨╡╤Б ╨▒╤Г╤Д╨╡╤А╨░ ╤Б ╨┐╤Г╤В╨╡╨╝ ╨╕ ╨╕╨╝╨╡╨╜╨╡╨╝ ╤В╨╡╨║╤Б╤В╨╛╨▓╨╛╨│╨╛ ╤Д╨░╨╣╨╗╨░. ╨Т╤Л╤Е╨╛╨┤: CARRY SET - ╤Б╨╡╤А╤М╨╡╨╖╨╜╨░╤П ╨╛╤И╨╕╨▒╨║╨░, ╨╕╨╜╨░╤З╨╡: Z - O.K., NZ - ╨║╨░╨║╨░╤П-╨╜╨╕╨▒╤Г╨┤╤М ╨┤╨╛╤Б╨░╨┤╨╜╨░╤П ╨╝╨╡╨╗╨╛╤З╤М
rst #10
ret c ;CY=error
ld c,#41 ;65(41):fmrst - ╨Т╨╛╤Б╤Б╤В╨░╨╜╨░╨▓╨╗╨╕╨▓╨░╨╡╤В ╨┐╨╡╤А╨▓╨╛╨╜╨░╤З╨░╨╗╤М╨╜╨╛╨╡ ╤Б╨╛╤Б╤В╨╛╤П╨╜╨╕╨╡ ╤Б╤А╨╡╨┤╤Л. (╤Г╤Б╤В╤А╨╛╨╣╤Б╤В╨▓╨╛, ╨║╨░╤В╨░╨╗╨╛╨│ ╨╕ ╤Д╨░╨╣╨╗, ╨╖╨░╨┐╨╛╨╝╨╕╨╜╨░╨╡╨╝╤Л╨╡ ╨┐╤А╨╛╤Ж╨╡╨┤╤Г╤А╨░╨╝╨╕ ╤А╨░╨▒╨╛╤В╨░╤О╤Й╨╕╨╝╨╕ ╤Б ╨║╨╛╨╝╨░╨╜╨┤╨╜╨╛╨╣ ╤Б╤В╤А╨╛╨║╨╛╨╣). ╨Т╤Л╤Е╨╛╨┤: ╤Б ╨╛╨▒╤А. ╨╛╤И╨╕╨▒╨╛╨║, ╨╕╨╜╨░╤З╨╡ ╤Б╨╛╤Е╤А╨░╨╜╤П╨╡╤В AF.
rst #10
endif
ret
domenu;LL5dbd
ld a,#01
ld (LL5fc1),a ;1=╨╜╨░╨┤╨╛ ╨▓╤Л╨╖╨▓╨░╤В╤М exe, 0=╨╜╨░╨┤╨╛ ╨▓╤Л╨╖╨▓╨░╤В╤М bat ╨╕╨╗╨╕ ╨▒╨╛╨╗╤М╤И╤Г╤О ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╤Г?
if NEDOOS
;╨╛╤В╨║╤А╤Л╨▓╨░╨╡╨╝ ╨╗╨╕╨▒╨╛ ╤Д╨░╨╣╨╗-╨┐╨░╤А╨░╨╝╨╡╤В╤А (╨╡╤Б╨╗╨╕ ╨╛╨╜ .mnu), ╨╗╨╕╨▒╨╛ SYSPATH/╤Д╨░╨╣╨╗-╨┐╨░╤А╨░╨╝╨╡╤В╤А (╨╡╤Б╨╗╨╕ ╨╛╨╜ .mnu), ╨╗╨╕╨▒╨╛ SYSPATH/mainmenu
ld hl,(par1addr)
xor a
ld c,0xff
cpir
ld de,tdotmnuz+5
ld b,5
checkdotmnu0
dec hl
dec de
ld a,(de)
cp (hl)
jr nz,checkdotmnu_nomnu
djnz checkdotmnu0
ld de,(par1addr)
OS_OPENHANDLE
or a
jr z,_LL5ddf
OS_SETSYSDRV
ld de,(par1addr)
OS_OPENHANDLE
or a
jr z,_LL5ddf
checkdotmnu_nomnu
OS_SETSYSDRV
ld de,mainmenufilename;LL6091
OS_OPENHANDLE
or a
scf
ret nz ;error (CY)
ld hl,(par1addr)
ld (par2addr),hl
_LL5ddf
ld a,b
ld (curhandle),a
else
;╨╛╤В╨║╤А╤Л╨▓╨░╨╡╨╝ ╨╗╨╕╨▒╨╛ ╤Д╨░╨╣╨╗-╨┐╨░╤А╨░╨╝╨╡╤В╤А, ╨╗╨╕╨▒╨╛ mainmenu, ╨╗╨╕╨▒╨╛ mainmenupath/mainmenu
ld c,#40;64(40):oparm - ╨Ю╤В╨║╤А╤Л╨▓╨░╨╡╤В ╤Д╨░╨╣╨╗-╨┐╨░╤А╨░╨╝╨╡╤В╤А. ╨Я╤Г╤В╤М ╨║ ╤Д╨░╨╣╨╗╤Г (╨┐╨╛╨╗╨╜╤Л╨╣ ╨╕╨╗╨╕ ╨╛╤В ╤В╨╡╨║╤Г╤Й╨╡╨│╨╛ ╨║╨░╤В╨░╨╗╨╛╨│╨░) ╨╗╨╡╨╢╨╕╤В ╨▓ ╨▒╤Г╤Д╨╡╤А╨╡ ╨║╨╛╨╝╨░╨╜╨┤╨╜╨╛╨╣ ╤Б╤В╤А╨╛╨║╨╕ ╨▓╨╝╨╡╤Б╤В╨╡ ╤Б ╨╕╨╝╨╡╨╜╨╡╨╝ ╤Д╨░╨╣╨╗╨░ ╨╕╨╗╨╕ ╨╡╨│╨╛ ╨╝╨░╤Б╨║╨╛╨╣.
rst #10
jr c,_LL5dc9 ;error
jr z,_LL5ddf ;file opened
_LL5dc9 ld hl,mainmenufilename;LL6091
ld c,#25;37(25):fopen - ╨Я╨╛╨╕╤Б╨║ ╨╕ ╨╛╤В╨║╤А╤Л╤В╨╕╨╡ ╤Д╨░╨╣╨╗╨░ ╨╕╨╗╨╕ ╨║╨░╤В╨░╨╗╨╛╨│╨░ ╨┐╨╛ ╨╕╨╝╨╡╨╜╨╕ ╨╕ ╤В╨╕╨┐╤Г. HL - ╨░╨┤╤А╨╡╤Б ╨╛╨┐╨╕╤Б╨░╤В╨╡╨╗╤П (╨╕╨╝╤П, ╤В╨╕╨┐). (╨┐╨╛╨┤╨║╨░╤В╨░╨╗╨╛╨│ ╨╛╤В╨║╤А╤Л╨▓╨░╨╡╤В╤Б╤П, ╤В.╨╡. ╨╡╨│╨╛ ╨╛╨┐╨╕╤Б╨░╤В╨╡╨╗╤М (19 ╨▒╨░╨╣╤В) ╤Б╤З╨╕╤В╤Л╨▓╨░╤О╤В╤Б╤П ╨▓ ╤Б╨╕╤Б. ╨╛╨▒╨╗╨░╤Б╤В╤М ╨╛╨┐╨╕╤Б╨░╤В╨╡╨╗╤П ╨║╨░╤В╨░╨╗╨╛╨│╨░. ╨Т╤Л╤Е╨╛╨┤: ╨╡╤Б╨╗╨╕ ╨╛╤И╨╕╨▒╨╛╨║ ╨╜╨╡╤В: ╨╕ ╨╡╤Б╨╗╨╕ BIT5=0, ╤В╨╛ ╤Д╨░╨╣╨╗ ╨╛╤В╨║╤А╤Л╤В, ╨▓ A - ╤А╨╡╨│╨╕╤Б╤В╤А ╤Б╨╛╤Б╤В╨╛╤П╨╜╨╕╤П ╤Д╨░╨╣╨╗╨░ (FSTAT), ╨▓ HL' - ╨░╨┤╤А╨╡╤Б 32-╨▒╨░╨╣╤В╨╛╨▓╨╛╨│╨╛ ╨╛╨┐╨╕╤Б╨░╤В╨╡╨╗╤П ╤Д╨░╨╣╨╗╨░ (FNAME) ╨╡╤Б╨╗╨╕ BIT5=1, ╤В╨╛ ╤Д╤Г╨╜╨║╤Ж╨╕╤П FOPEN ╨╛╤В╨║╤А╤Л╨╗╨░ ╨▓╨╜╤Г╤В╤А╨╡╨╜╨╜╨╕╨╣ ╨┐╨╛╨┤╨║╨░╤В╨░╨╗╨╛╨│
rst #10
jr nc,_LL5ddf ;file opened
ld hl,mainmenupath;LL6088
ld c,#42;66(42):comstr - ╨а╨░╨╖╨▒╨╕╤А╨░╨╡╤В╤Б╤П ╤Б ╤Г╨║╨░╨╖╨░╨╜╨╜╤Л╨╝ ╨┐╤Г╤В╨╡╨╝ ╨╕ ╨╛╤В╨║╤А╤Л╨▓╨░╨╡╤В ╨┤╨░╨╜╨╜╨╛╨╡ ╤Г╤Б╤В╤А╨╛╨╣╤Б╤В╨▓╨╛ ╨╕ ╨║╨░╤В╨░╨╗╨╛╨│ (╤Д╨░╨╣╨╗ ╨╜╨╡ ╨╛╤В╨║╤А╤Л╨▓╨░╨╡╤В!) ╨╕╨╗╨╕ ╤Б╨╜╨╕╨╝╨░╨╡╤В ╨║╨╗╤О╤З. ╨Т╤Е╨╛╨┤: HL = ╨░╨┤╤А╨╡╤Б ╨║╨╛╨╝╨░╨╜╨┤╨╜╨╛╨╣ ╤Б╤В╤А╨╛╨║╨╕. ╨Т╤Л╤Е╨╛╨┤: ╤Д╨╗╨░╨│ C: ╨╛╤И╨╕╨▒╨║╨░ ╨▓╨▓╨╛╨┤╨░/╨▓╤Л╨▓╨╛╨┤╨░ (╨▓╨╛╤Б╤Б╤В╨░╨╜╨░╨▓╨╗╨╕╨▓╨░╨╡╤В╤Б╤П ╨┐╤А╨╡╨╢╨╜╤П╤П ╤Б╤А╨╡╨┤╨░); NC,Z: A=0: HL'= 11-╨▒╨░╨╣╤В╨╛╨▓╤Л╨╣ ╨╛╨┐╨╕╤Б╨░╤В╨╡╨╗╤М/╤И╨░╨▒╨╗╨╛╨╜ ╤Д╨░╨╣╨╗╨░ (╨╡╤Б╨╗╨╕ ╨╕╨╝╤П/╨╝╨░╤Б╨║╨░ ╤Д╨░╨╣╨╗╨░ ╨╜╨╡ ╤Г╨║╨░╨╖╨░╨╜╨╛ ╨┐╨╛╤Б╨╗╨╡ ╨┐╤Г╤В╨╕, ╤В╨╛ ╤И╨░╨▒╨╗╨╛╨╜ ╨╕╨╖ #FF); A>0: HL'= ╨░╨┤╤А╨╡╤Б ╤Б╨╕╨╝╨▓╨╛╨╗╨░ "/" (╨╛╨▒╨╜╨░╤А╤Г╨╢╨╡╨╜ ╨║╨╗╤О╤З), A=╨┐╨╡╤А╨▓╤Л╨╣ ╤Б╨╕╨╝╨▓╨╛╨╗ ╨┐╨╛╤Б╨╗╨╡ ╨║╨╗╤О╤З╨░. NC,NZ: ╨╕╨╗╨╕ ╨┐╤Г╤В╨╕ ╨╜╨╡╤В, ╨╕╨╗╨╕ ╨║╨╗╤О╤З╨░ ╨╜╨╡╤В (╨┐╤Г╤Б╤В╨░╤П ╤Б╤В╤А╨╛╨║╨░), ╨╕╨╗╨╕ ╤Б╨╕╨╜╤В╨░╨║╤Б╨╕╤З╨╡╤Б╨║╨░╤П ╨╛╤И╨╕╨▒╨║╨░ ╨▓ ╨║╨╛╨╝╨░╨╜╨┤╨╜╨╛╨╣ ╤Б╤В╤А╨╛╨║╨╡.
rst #10
ret c ;error
ld hl,mainmenufilename;LL6091
ld c,#25;37(25):fopen - ╨Я╨╛╨╕╤Б╨║ ╨╕ ╨╛╤В╨║╤А╤Л╤В╨╕╨╡ ╤Д╨░╨╣╨╗╨░ ╨╕╨╗╨╕ ╨║╨░╤В╨░╨╗╨╛╨│╨░ ╨┐╨╛ ╨╕╨╝╨╡╨╜╨╕ ╨╕ ╤В╨╕╨┐╤Г. HL - ╨░╨┤╤А╨╡╤Б ╨╛╨┐╨╕╤Б╨░╤В╨╡╨╗╤П (╨╕╨╝╤П, ╤В╨╕╨┐). (╨┐╨╛╨┤╨║╨░╤В╨░╨╗╨╛╨│ ╨╛╤В╨║╤А╤Л╨▓╨░╨╡╤В╤Б╤П, ╤В.╨╡. ╨╡╨│╨╛ ╨╛╨┐╨╕╤Б╨░╤В╨╡╨╗╤М (19 ╨▒╨░╨╣╤В) ╤Б╤З╨╕╤В╤Л╨▓╨░╤О╤В╤Б╤П ╨▓ ╤Б╨╕╤Б. ╨╛╨▒╨╗╨░╤Б╤В╤М ╨╛╨┐╨╕╤Б╨░╤В╨╡╨╗╤П ╨║╨░╤В╨░╨╗╨╛╨│╨░. ╨Т╤Л╤Е╨╛╨┤: ╨╡╤Б╨╗╨╕ ╨╛╤И╨╕╨▒╨╛╨║ ╨╜╨╡╤В: ╨╕ ╨╡╤Б╨╗╨╕ BIT5=0, ╤В╨╛ ╤Д╨░╨╣╨╗ ╨╛╤В╨║╤А╤Л╤В, ╨▓ A - ╤А╨╡╨│╨╕╤Б╤В╤А ╤Б╨╛╤Б╤В╨╛╤П╨╜╨╕╤П ╤Д╨░╨╣╨╗╨░ (FSTAT), ╨▓ HL' - ╨░╨┤╤А╨╡╤Б 32-╨▒╨░╨╣╤В╨╛╨▓╨╛╨│╨╛ ╨╛╨┐╨╕╤Б╨░╤В╨╡╨╗╤П ╤Д╨░╨╣╨╗╨░ (FNAME) ╨╡╤Б╨╗╨╕ BIT5=1, ╤В╨╛ ╤Д╤Г╨╜╨║╤Ж╨╕╤П FOPEN ╨╛╤В╨║╤А╤Л╨╗╨░ ╨▓╨╜╤Г╤В╤А╨╡╨╜╨╜╨╕╨╣ ╨┐╨╛╨┤╨║╨░╤В╨░╨╗╨╛╨│
rst #10
ret c ;error
_LL5ddf
endif
;file opened
if NEDOOS
ld a,(curhandle)
ld b,a
OS_GETFILESIZE ;b=handle, out: dehl=file size
ld a,d
or e
scf
ret nz ;error (CY)
ex de,hl
else
ld c,#35;53(35):bkfcb - ╨Т╨╛╨╖╨▓╤А╨░╤В ╨░╨┤╤А╨╡╤Б╨░ ╨╛╨┐╨╕╤Б╨░╤В╨╡╨╗╤П ╤Д╨░╨╣╨╗╨░ ╨▓ HL'(=FNAME)
rst #10
exx
push hl
pop ix
ld e,(ix+#0e)
ld d,(ix+#0f)
endif
;de=filesz
if NEDOOS
ld hl,menutext+128;LL623a
add hl,de
ret c ;error (no free mem)
ex de,hl
ld de,menutext;LL623a
;de=menutext, hl=filesz
push de
push hl
ld a,(curhandle)
ld b,a
push bc
OS_READHANDLE
pop bc
OS_CLOSEHANDLE
pop hl
pop de
or a
scf
ret nz ;error (CY)
else
ld ix,menutext;LL623a
push ix
pop hl
add hl,de ;hl=menutext+filesz?
inc hl
ld c,#10;16(10):g_cnfg - ╨Т╨╛╨╖╨▓╤А╨░╤В ╨▓╨╡╨║╤В╨╛╤А╨░ ╨║╨╛╨╜╤Д╨╕╨│╤Г╤А╨░╤Ж╨╕╨╕ ╤П╨┤╤А╨░. HL'- ╨░╨┤╤А╨╡╤Б ╨▓╨╡╨║╤В╨╛╤А╨░ ╨║╨╛╨╜╤Д╨╕╨│╤Г╤А╨░╤Ж╨╕╨╕ ╤П╨┤╤А╨░, ╨Р - ╨╜╨╛╨╝e╤А ╨║╨░╨╜╨░╨╗╨░ ╤Б╨╕╤Б╤В╨╡╨╝╨╜╨╛╨│╨╛ ╤Г╤Б╤В╤А╨╛╨╣╤Б╤В╨▓╨░
rst #10
push hl
exx
ld bc,LL0005
add hl,bc ;hl=╨░╨┤╤А╨╡╤Б ╨▓╨╡╨║╤В╨╛╤А╨░ ╨║╨╛╨╜╤Д╨╕╨│╤Г╤А╨░╤Ж╨╕╨╕ ╤П╨┤╤А╨░+5
ld e,(hl)
inc hl
ld d,(hl) ;free mem???
exd ;hl=free mem???
pop de
xor a
sbc hl,de
ld a,#82
ret c ;no free mem???
exx
;ix=menutext, de=filesz
xor a
ld h,a
ld l,a
ld c,#29 ;41(29):rpart - ╨з╤В╨╡╨╜╨╕╨╡ ╤З╨░╤Б╤В╨╕ ╤Д╨░╨╣╨╗╨░. A,HL - ╤Г╨║╨░╨╖╨░╤В╨╡╨╗╤М, IX - ╨░╨┤╤А╨╡╤Б ╨▓ ╨┐╨░╨╝╤П╤В╨╕, DE - ╨┤╨╗╨╕╨╜╨░ ╨▓ ╨▒╨░╨╣╤В╨░╤Е.
rst #10
ret c ;error
push ix
pop hl
endif
;hl=menutext
;de=filesz
add hl,de ;hl=menutext+filesz
ld (hl),#0d
inc hl
ld (hl),#03 ;╨║╨╛╨╜╨╡╤Ж ╤В╨╡╨║╤Б╤В╨░
if !NEDOOS
ld c,#41 ;65(41):fmrst - ╨Т╨╛╤Б╤Б╤В╨░╨╜╨░╨▓╨╗╨╕╨▓╨░╨╡╤В ╨┐╨╡╤А╨▓╨╛╨╜╨░╤З╨░╨╗╤М╨╜╨╛╨╡ ╤Б╨╛╤Б╤В╨╛╤П╨╜╨╕╨╡ ╤Б╤А╨╡╨┤╤Л. (╤Г╤Б╤В╤А╨╛╨╣╤Б╤В╨▓╨╛, ╨║╨░╤В╨░╨╗╨╛╨│ ╨╕ ╤Д╨░╨╣╨╗, ╨╖╨░╨┐╨╛╨╝╨╕╨╜╨░╨╡╨╝╤Л╨╡ ╨┐╤А╨╛╤Ж╨╡╨┤╤Г╤А╨░╨╝╨╕ ╤А╨░╨▒╨╛╤В╨░╤О╤Й╨╕╨╝╨╕ ╤Б ╨║╨╛╨╝╨░╨╜╨┤╨╜╨╛╨╣ ╤Б╤В╤А╨╛╨║╨╛╨╣). ╨Т╤Л╤Е╨╛╨┤: ╤Б ╨╛╨▒╤А. ╨╛╤И╨╕╨▒╨╛╨║, ╨╕╨╜╨░╤З╨╡ ╤Б╨╛╤Е╤А╨░╨╜╤П╨╡╤В AF
rst #10
ret c ;error
endif
;file loaded
ld e,'H';#48 ;H - ╤Б╤В╤А╨╛╨║╨╕ ╨┐╨╛╨┤╤Б╨║╨░╨╖╨║╨╕
call LL609c ;╨┐╨╛╨╕╤Б╨║ ╨┐╨╡╤А╨▓╨╛╨╣ ╤Б╤В╤А╨╛╨║╨╕ ╤В╨╕╨┐╨░ e ╨▓ menutext?
jr z,_LL5e2a ;z=╨╜╨╡ ╨╜╨░╨╣╨┤╨╡╨╜╨╛
ld a,#01
ld (hintspresent),a;(LL6226),a
_LL5e2a ld e,'K';#4b ;K - ╤Б╤В╤А╨╛╨║╨░ ╨║╨╗╤О╤З╨╡╨╣ (╨╛╨┤╨╜╨░ ╨▓ ╤В╨╡╨║╤Б╤В╨╡) ;╨╜╨░╨┐╤А╨╕╨╝╨╡╤А: K/A1/K40/J5/C160/O21
call LL609c ;╨┐╨╛╨╕╤Б╨║ ╨┐╨╡╤А╨▓╨╛╨╣ ╤Б╤В╤А╨╛╨║╨╕ ╤В╨╕╨┐╨░ e ╨▓ menutext?
call nz,interpret_keys_hl;LL5fc9 ;╨╕╨╜╤В╨╡╤А╨┐╤А╨╡╤В╨╕╤А╤Г╨╡╨╝ ╨║╨╗╤О╤З╨╕
;╨╕╤Й╨╡╨╝ ╤Б╨░╨╝╤Г╤О ╤И╨╕╤А╨╛╨║╤Г╤О ╤Б╤В╤А╨╛╨║╤Г ╤В╨╕╨┐╨░ 'A' (menuwid) ╨╕ ╨▓╤Л╤Б╨╛╤В╤Г ╨╛╨║╨╜╨░ (menuhgt):
ld e,'A';#41
ld d,#01
_LL5e36 call LL609e ;╨┐╨╛╨╕╤Б╨║ ╤Б╤В╤А╨╛╨║╨╕ ╤В╨╕╨┐╨░ e ╨╜╨╛╨╝╨╡╤А d ╨▓ ╤В╨╡╨║╤Б╤В╨╡ menutext? ;out: z="(hl)==#03" (╨║╨╛╨╜╨╡╤Ж ╤В╨╡╨║╤Б╤В╨░?) ╨╕╨╗╨╕ error?
jr z,_LL5e49 ;z=╨╜╨╡ ╨╜╨░╨╣╨┤╨╡╨╜╨╛
inc d
ld c,a
ld a,(menuwid);(LL6232)
cp c
jr nc,_LL5e44
ld a,c
_LL5e44 ld (menuwid),a;(LL6232),a
jr _LL5e36
_LL5e49 inc d
ld a,d
cp #02
ret z ;╨▓ ╨╝╨╡╨╜╤О ╨╜╨╡╤В ╨╜╨╕ ╨╛╨┤╨╜╨╛╨╣ ╤Б╤В╤А╨╛╨║╨╕
cp SCRHGT-3;21;#15
jr c,_LL5e54
ld a,SCRHGT-4;20;#14
_LL5e54 ld (menuhgt),a;(LL622d),a
;╨╡╤Й╤С ╤А╨░╨╖ ╨╕╤Й╨╡╨╝ ╨▓╤Л╤Б╨╛╤В╤Г ╨╛╨║╨╜╨░???
ld e,'A';#41
ld d,#01
_LL5e5b call LL609e ;╨┐╨╛╨╕╤Б╨║ ╤Б╤В╤А╨╛╨║╨╕ ╤В╨╕╨┐╨░ e ╨╜╨╛╨╝╨╡╤А d ╨▓ ╤В╨╡╨║╤Б╤В╨╡ menutext? ;out: z="(hl)==#03" (╨║╨╛╨╜╨╡╤Ж ╤В╨╡╨║╤Б╤В╨░?) ╨╕╨╗╨╕ error?
ret z ;╨╜╨╡ ╨╜╨░╨╣╨┤╨╡╨╜╨╛
inc d
dec hl
ld a,e
cp (hl)
jr nz,_LL5e5b
ld a,d
cp SCRHGT-5;19;#13
ret nc
;╨╕╤Й╨╡╨╝ menuwid_chrs, menux ;TODO fix for textmode
ld a,(menuwid);(LL6232)
ld c,#21
dec a
cp c
jr c,_LL5e73
ld a,c
_LL5e73 ld (menuwid),a;(LL6232),a
ld b,a
add a,a
add a,b ;*3
srl a
srl a ;*3/4
inc a
inc a
inc a ;*3/4 +3
srl a
add a,a ;╤З╤С╤В╨╜╨╛╨╡
ld (menuwid_chrs),a;(LL622e),a
ld b,a
ld a,(menux);(LL622b)
cp #ff
jr nz,_LL5e96
ld a,#20
sub b
srl a
ld (menux),a;(LL622b),a
_LL5e96 sla a
sla a
ld b,#01
ld c,#03
inc a
_LL5e9f cp c
jr c,_LL5ea6
sub c
inc b
jr _LL5e9f
_LL5ea6 ld a,b ;???
ld a,(menuwid);(LL6232)
and #07
cp #04
jr z,LL5eb8
cp #05
jr z,LL5eb8
cp #07
jr nz,LL5eb9
LL5eb8 inc b
LL5eb9 ld a,b
ld (LL6231),a ;??? NU
;TODO fix for textmode:
ld a,(hintx);(LL621d)
sla a
sla a
ld b,#00
ld c,#03
inc a
_LL5ec9 cp c
jr c,_LL5ed0
sub c
inc b
jr _LL5ec9
_LL5ed0 ld a,b
inc a
inc a
ld (LL6223),a ;??? NU
;
ld a,(menuy);(LL622c)
cp #ff
jr nz,_LL5ee9
ld a,(menuhgt);(LL622d)
ld b,a
ld a,SCRHGT;#18
sub b
srl a
ld (menuy),a;(LL622c),a
_LL5ee9
;TODO fix for textmode:
ld a,(hintwid);(LL6224)
srl a
srl a
ld b,a
set 7,b
ld c,#03
xor a
LL5ef6 add a,c
dec b
bit 7,b
jr nz,LL5ef6
inc a
inc a
ld (LL6220),a ;hintwid_chrs?
;
ld a,(action);(LL6087)
ld b,a
bit 0,a ;1 = ╨╛╨║╨╜╨╛ ╨╝╨╡╨╜╤О ╤Б ╤В╨╡╨╜╤М╤О
jr z,_LL5f11
ld a,(shadowcolor);(LL6230)
res 7,a
ld (shadowcolor),a;(LL6230),a
_LL5f11 xor a ;╨╛╨║╨╜╨╛ ╤Б ╨╛╨┤╨╕╨╜╨░╤А╨╜╨╛╨╣ ╤А╨░╨╝╨║╨╛╨╣
bit 2,b ;4 = ╨╛╨║╨╜╨╛ ╨╝╨╡╨╜╤О ╤Б 2-╨╛╨╣ ╤А╨░╨╝╨║╨╛╨╣
jr z,_LL5f18
ld a,#02 ;╨╛╨║╨╜╨╛ ╤Б ╨┤╨▓╨╛╨╣╨╜╨╛╨╣ ╤А╨░╨╝╨║╨╛╨╣
_LL5f18
ld ix,MENU;LL622b
if NEDOOS
call sR_WT
else
ld c,#61 ;97(61):wt - ╨Т╤Л╨▓╨╛╨┤ ╨╛╨║╨╜╨░. ╨Я╨╛╨┤╤Д╤Г╨╜╨║╤Ж╨╕╤П ╨▓ ╤А╨╡╨│. A: A=0 ╨╛╨║╨╜╨╛ ╤Б ╨╛╨┤╨╕╨╜╨░╤А╨╜╨╛╨╣ ╤А╨░╨╝╨║╨╛╨╣, ╨Р=1 ╨▒╨╡╨╖ ╤А╨░╨╝╨║╨╕, ╨Р=2 ╤Б ╨┤╨▓╨╛╨╣╨╜╨╛╨╣ ╤А╨░╨╝╨║╨╛╨╣, A=3..127 ╨▒╨╡╨╖ ╤А╨░╨╝╨║╨╕, A=128..255 ╤В╨╛╨╗╤М╨║╨╛ ╨┐╨╛╨┤╨║╤А╨░╤Б╨║╨░. IX= ╨▓╨╡╨║╤В╨╛╤А ╨╛╨║╨╜╨░
rst #10
endif
ld a,(action);(LL6087)
and #0a
ld (action),a;(LL6087),a
ld a,(flags);(LL6235)
and #14
ld (flags),a;(LL6235),a
ld a,(action);(LL6087)
bit 3,a ;8 = ╨╜╨╡ ╨▓╤Л╨┐╨╛╨╗╨╜╤П╤В╤М ╤Б╤В╤А╨╛╨║╤Г ╨а
jr nz,_LL5f43
ld e,'P';#50 ;P - ╤Б╤В╤А╨╛╨║╨░ ╨┤╨╗╤П ╨▓╤Л╨╖╨╛╨▓╨░ ╨▓╨╜╤Г╤В╤А╨╡╨╜╨╜╨╕╤Е ╨║╨╛╨╝╨░╨╜╨┤ (╨╛╨┤╨╜╨░ ╨▓ ╤В╨╡╨║╤Б╤В╨╡)
call LL609c ;╨┐╨╛╨╕╤Б╨║ ╨┐╨╡╤А╨▓╨╛╨╣ ╤Б╤В╤А╨╛╨║╨╕ ╤В╨╕╨┐╨░ e ╨▓ menutext?
ld ix,MENU;LL622b
call nz,LL5db2 ;run (p_com+exebat)
ret c ;error
_LL5f43 ld a,(flags);(LL6235)
and #1f
ld (flags),a;(LL6235),a
ld ix,MENU;LL622b
call cycleinmenu;LL60ca
jr c,LL5fc2 ;╨▓╤Л╨┐╨╛╨╗╨╜╨╕╤В╤М ╤Б╤В╤А╨╛╨║╤Г 'T'
call LL5fb4 ;╨┐╨╛╨╕╤Б╨║ ╤Б╤В╤А╨╛╨║╨╕ ╤В╨╕╨┐╨░ 'A' ╨╜╨╛╨╝╨╡╤А cursory ╨▓ ╤В╨╡╨║╤Б╤В╨╡ menutext? ;out: z="(hl)==#03" (╨║╨╛╨╜╨╡╤Ж ╤В╨╡╨║╤Б╤В╨░?) ╨╕╨╗╨╕ error?
ld e,'Z';#5a ;Z - ╤Б╤В╤А╨╛╨║╨░ ╨┤╨╗╤П ╨▓╤Л╨╖╨╛╨▓╨░ ╨▓╨╜╤Г╤В╤А╨╡╨╜╨╜╨╕╤Е ╨║╨╛╨╝╨░╨╜╨┤
call LL60a1 ;╨┐╨╛╨╕╤Б╨║ ╤Б╤В╤А╨╛╨║╨╕ ╤В╨╕╨┐╨░ e ╨╜╨╛╨╝╨╡╤А d ╨▓ ╤В╨╡╨║╤Б╤В╨╡ hl? ;out: z="(hl)==#03" (╨║╨╛╨╜╨╡╤Ж ╤В╨╡╨║╤Б╤В╨░?) ╨╕╨╗╨╕ error?
call nz,LL5db2 ;run (p_com+exebat)
ret c
ld a,(flags);(LL6235)
res 5,a
ld (flags),a;(LL6235),a
ld a,(action);(LL6087)
bit 1,a ;2 = ╨▓╤Л╨┐╨╛╨╗╨╜╨╕╤В╤М ╤Б╨╛╨╛╤В╨▓╨╡╤В╤Б╤В╤Г╤О╤Й╤Г╤О ╨║╨╛╨╝╨░╨╜╨┤╨╜╤Г╤О ╤Б╤В╤А╨╛╨║╤Г Z ╨╕ ╨▓╨╡╤А╨╜╤Г╤В╤М╤Б╤П ╤Б╨╜╨╛╨▓╨░ ╨▓ ╨╝╨╡╨╜╤О
jr nz,_LL5f43 ;???
call LL5fb4 ;╨┐╨╛╨╕╤Б╨║ ╤Б╤В╤А╨╛╨║╨╕ ╤В╨╕╨┐╨░ 'A' ╨╜╨╛╨╝╨╡╤А cursory ╨▓ ╤В╨╡╨║╤Б╤В╨╡ menutext? ;out: z="(hl)==#03" (╨║╨╛╨╜╨╡╤Ж ╤В╨╡╨║╤Б╤В╨░?) ╨╕╨╗╨╕ error?
ld e,'C';#43 ;C ╨╕╨╗╨╕ c - ╤Б╤В╤А╨╛╨║╨╕ ╨┤╨╗╤П ╨▓╤Л╨╖╨╛╨▓╨░ ╨║╨╛╨╝╨░╨╜╨┤╨╜╤Л╤Е ╤Б╤В╤А╨╛╨║ (C - ╤Б╤В╨░╨╜╨┤╨░╤А╤В╨╜╤Л╨╣ ╨▓╤Л╨╖╨╛╨▓, ╤Б - ╨▓╤Л╨╖╨╛╨▓ ╤Б╤В╤А╨╛╨║╨╕ ╤З╨╡╤А╨╡╨╖ SHELL ( ╨┤╨╗╤П ╨▒╨╛╨╗╤М╤И╨╕╤Е ╨┐╤А╨╛╨│╤А╨░╨╝╨╝ ( ╨╜╨░╨┐╤А╨╕╨╝╨╡╤А ╤А╨╡╨┤╨░╨║╤В╨╛╤А╨░, ╤В.╨╡. ╨┤╨╗╤П ╨┐╤А╨╛╨│╤А╨░╨╝╨╝ ╤Г ╨║╨╛╤В╨╛╤А╤Л╤Е ╨░╨┤╤А╨╡╤Б ╨╖╨░╨│╤А╤Г╨╖╨║╨╕ ╨╝╨╡╨╜╤М╤И╨╡ 25000) ╨╕ ╨┐╨░╨║╨╡╤В╨╛╨▓)
call LL60a1 ;╨┐╨╛╨╕╤Б╨║ ╤Б╤В╤А╨╛╨║╨╕ ╤В╨╕╨┐╨░ e ╨╜╨╛╨╝╨╡╤А d ╨▓ ╤В╨╡╨║╤Б╤В╨╡ hl? ;out: z="(hl)==#03" (╨║╨╛╨╜╨╡╤Ж ╤В╨╡╨║╤Б╤В╨░?) ╨╕╨╗╨╕ error?
ret z ;z=╨╜╨╡ ╨╜╨░╨╣╨┤╨╡╨╜╨╛
push af
dec hl
ld a,'c';#63
inc hl
cp (hl)
jr nz,_LL5f84
xor a
ld (LL5fc1),a ;0=╨╜╨░╨┤╨╛ ╨▓╤Л╨╖╨▓╨░╤В╤М bat ╨╕╨╗╨╕ ╨▒╨╛╨╗╤М╤И╤Г╤О ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╤Г?
_LL5f84 pop af
LL5f85 ret z
ld a,'*';#2a ;╨┐╨╛╨┤╤Б╤В╨░╨▓╨╗╤П╤В╤М ╨╕╨╝╤П ╤Д╨░╨╣╨╗╨░ ╨▓ ╨║╨╛╨╜╤Ж╨╡ ╨║╨╛╨╝╤Б╤В╤А╨╛╨║╨╕ (╨╜╨╡ ╨┤╨╛╨║╤Г╨╝╨╡╨╜╤В╨╕╤А╨╛╨▓╨░╨╜╨╛!!!)
cp (hl)
jr nz,LL5fa5
;╨▒╨╡╤А╤С╨╝ ╤Д╨░╨╣╨╗ ╨┐╨╛╨┤ ╨║╤Г╤А╤Б╨╛╤А╨╛╨╝
if NEDOOS
;╨▒╤А╨░╤В╤М ╨╕╨╖ ╨▓╤В╨╛╤А╨╛╨│╨╛ ╨┐╨░╤А╨░╨╝╨╡╤В╤А╨░ ╨║╨╛╨╝╤Б╤В╤А╨╛╨║╨╕: menu.com menu.mnu filename.ext
ld de,(par2addr)
else
ld c,#8a ;138(8A):g_curs - ╨Т╨╛╨╖╨▓╤А╨░╤Й╨░╨╡╤В ╨┐╨░╤А╨░╨╝╨╡╤В╤А╤Л ╨┐╨░╨╜╨╡╨╗╤М╨╜╨╛╨│╨╛ ╨║╤Г╤А╤Б╨╛╤А╨░. ╨Т╤Л╤Е╨╛╨┤: A=E'= ╨╜╨╛╨╝╨╡╤А ╤Д╨░╨╣╨╗╨░, D'= ╨┐╨╛╨╖╨╕╤Ж╨╕╤П Y ╨▓ ╨╛╨║╨╜╨╡ (=H ╨┤╨╗╤П wtpos), B' - ╨╜╨╛╨╝╨╡╤А ╤В╨╡╨║╤Г╤Й╨╡╨╣ ╨┐╨░╨╜╨╡╨╗╨╕ (0 - ╨╗╨╡╨▓╨░╤П, 1 - ╨┐╤А╨░╨▓╨░╤П), HL' - ╨░╨┤╤А╨╡╤Б ╨▓╨╡╨║╤В╨╛╤А╨░ ╨╛╨║╨╜╨░ ╨┐╨░╨╜╨╡╨╗╨╕
rst #10
ld e,a
ld c,#27 ;39(27):gname - ╨Т╨╛╨╖╨▓╤А╨░╤Й╨░╨╡╤В ╨╛╨┐╨╕╤Б╨░╤В╨╡╨╗╤М ╤Д╨░╨╣╨╗╨░, ╨╜╨╡ ╨╛╤В╨║╤А╤Л╨▓╨░╤П ╨╡╨│╨╛ ╨╜╨░ ╨▓╤Е╨╛╨┤╨╡ ╨▓ ╤А╨╡╨│.╨Х - ╨╜╨╛╨╝╨╡╤А ╤Д╨░╨╣╨╗╨░. ╨Т╤Л╤Е╨╛╨┤: ╨╡╤Б╨╗╨╕ O.K., ╤В╨╛ HL' - ╨░╨┤╤А╨╡╤Б ╨╛╨┐╨╕╤Б╨░╤В╨╡╨╗╤П ╤Д╨░╨╣╨╗╨░ ╨▓ ╤Н╨╗╨╡╨║╤В╤А╨╛╨╜╨╜╨╛╨╝ ╨┤╨╕╤Б╨║╨╡
rst #10
ret c
endif
push hl ;╨░╨┤╤А╨╡╤Б '*'?
call findCR;LL61a1
dec hl
ld (hl),#20 ;╨▓╨╝╨╡╤Б╤В╨╛ CR
inc hl
if NEDOOS
ex de,hl
call strcopy
else
exx
push hl ;╨░╨┤╤А╨╡╤Б ╨╛╨┐╨╕╤Б╨░╤В╨╡╨╗╤П ╤Д╨░╨╣╨╗╨░ ╨▓ ╤Н╨╗╨╡╨║╤В╤А╨╛╨╜╨╜╨╛╨╝ ╨┤╨╕╤Б╨║╨╡
exx
pop de ;╨░╨┤╤А╨╡╤Б ╨╛╨┐╨╕╤Б╨░╤В╨╡╨╗╤П ╤Д╨░╨╣╨╗╨░ ╨▓ ╤Н╨╗╨╡╨║╤В╤А╨╛╨╜╨╜╨╛╨╝ ╨┤╨╕╤Б╨║╨╡
exd ;hl=╨░╨┤╤А╨╡╤Б ╨╛╨┐╨╕╤Б╨░╤В╨╡╨╗╤П ╤Д╨░╨╣╨╗╨░ ╨▓ ╤Н╨╗╨╡╨║╤В╤А╨╛╨╜╨╜╨╛╨╝ ╨┤╨╕╤Б╨║╨╡
ld c,#4f ;79(4F):convr - ╨Я╤А╨╡╨╛╨▒╤А╨░╨╖╤Г╨╡╤В 11-╨▒╨░╨╣╤В╨╛╨▓╤Л╨╣ ╨╛╨┐╨╕╤Б╨░╤В╨╡╨╗╤М ╨╕╨╝╨╡╨╜╨╕ ╨╕ ╤А╨░╤Б╤И╨╕╤А╨╡╨╜╨╕╤П ╤Д╨░╨╣╨╗╨░ (╨▓ HL), ╨▓ 13-╨▒╨░╨╣╤В╨╛╨▓╨╛╨╡ ╨╕╨╝╤П ╤Д╨░╨╣╨╗╨░ ╤Б ╤А╨░╤Б╤И╨╕╤А╨╡╨╜╨╕╨╡╨╝ ╤З╨╡╤А╨╡╨╖ ╤В╨╛╤З╨║╤Г ╨╕ ╤Б "13" ╨▓ ╨║╨╛╨╜╤Ж╨╡ (╨▓ DE). ╨Э╨░ ╨▓╤Л╤Е╨╛╨┤╨╡ DE' - ╨░╨┤╤А╨╡╤Б #0D
rst #10
endif
pop hl ;╨░╨┤╤А╨╡╤Б '*'?
inc hl ;hl=╨░╨┤╤А╨╡╤Б ╨║╨╛╨╝╤Б╤В╤А╨╛╨║╨╕ ╤В╨╕╨┐╨░ "command bla-bla filename.ext"
LL5fa5 pop bc
if NEDOOS
jp LL5dac ;run (p_com+exebat),okquit
else
ld a,(LL5fc1)
or a
jp nz,LL5dac ;run (p_com+exebat),okquit
;╨▓╤Л╨╖╨▓╨░╤В╤М bat ╨╕╨╗╨╕ ╨▒╨╛╨╗╤М╤И╤Г╤О ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╤Г?
ld c,#49 ;73(49):p_com - ╨Ч╨░╨┐╨╛╨╗╨╜╨╕╤В╤М ╨▓╨╜╤Г╤В╤А╨╡╨╜╨╜╨╕╨╣ ╨▒╤Г╤Д╨╡╤А ╨║╨╛╨╝╨░╨╜╨┤╨╜╨╛╨╣ ╤Б╤В╤А╨╛╨║╨╕. HL = ╨░╨┤╤А╨╡╤Б ╤Б╤В╤А╨╛╨║╨╕, ╨╛╨║╨░╨╜╤З╨╕╨▓╨░╤О╤Й╨╡╨╣╤Б╤П ╨║╨╛╨┤╨╛╨╝ 13. ╨Я╤А╨╕ ╨┤╨╗╨╕╨╜╨╡ ╤Б╤В╤А╨╛╨║╨╕ ╨▒╨╛╨╗╨╡╨╡ 128 ╤Б╨╕╨╝╨▓╨╛╨╗╨╛╨▓ ╨▓╨╛╨╖╨▓╤А╨░╤Й╨░╨╡╤В ╨╛╤И╨╕╨▒╨║╤Г (╤Д╨╗╨░╨│ C).
rst #10
xor a
ld c,#93 ;147(93):shexe - ╨Т╤Л╤Е╨╛╨┤ ╨▓ ╨╛╨▒╨╛╨╗╨╛╤З╨║╤Г ╤Б ╨╖╨░╨┐╤Г╤Б╨║╨╛╨╝ RST exebat(#44) ╤Б A=0
rst #10
endif
LL5fb4 ;╨┐╨╛╨╕╤Б╨║ ╤Б╤В╤А╨╛╨║╨╕ ╤В╨╕╨┐╨░ 'A' ╨╜╨╛╨╝╨╡╤А cursory ╨▓ ╤В╨╡╨║╤Б╤В╨╡ menutext? ;out: z="(hl)==#03" (╨║╨╛╨╜╨╡╤Ж ╤В╨╡╨║╤Б╤В╨░?) ╨╕╨╗╨╕ error?
ld a,(cursory);(LL6234)
ld d,a
ld e,'A';#41
call LL609e ;╨┐╨╛╨╕╤Б╨║ ╤Б╤В╤А╨╛╨║╨╕ ╤В╨╕╨┐╨░ e ╨╜╨╛╨╝╨╡╤А d ╨▓ ╤В╨╡╨║╤Б╤В╨╡ menutext? ;out: z="(hl)==#03" (╨║╨╛╨╜╨╡╤Ж ╤В╨╡╨║╤Б╤В╨░?) ╨╕╨╗╨╕ error?
dec hl
ld d,#01
ret ;z=╨╜╨╡ ╨╜╨░╨╣╨┤╨╡╨╜╨╛
LL5fc1 nop ;0=╨╜╨░╨┤╨╛ ╨▓╤Л╨╖╨▓╨░╤В╤М bat ╨╕╨╗╨╕ ╨▒╨╛╨╗╤М╤И╤Г╤О ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╤Г, 1=╨╜╨░╨┤╨╛ ╨▓╤Л╨╖╨▓╨░╤В╤М exe?
LL5fc2 ld e,'T';#54 ;C/c,T - ╤Б╤В╤А╨╛╨║╨╕ ╨┤╨╗╤П ╨▓╤Л╨╖╨╛╨▓╨░ ╨║╨╛╨╝╨░╨╜╨┤╨╜╤Л╤Е ╤Б╤В╤А╨╛╨║ (T - ╨┤╨╛╨╗╨╢╨╜╨░ ╤Б╤В╨╛╤П╤В╤М ╨║╨╛╨╝╨░╨╜╨┤╨╜╨░╤П ╤Б╤В╤А╨╛╨║╨░, ╨▓╤Л╨╖╤Л╨▓╨░╨╡╨╝╨░╤П ╨┐╤А╨╕ ╨╛╤В╨║╨░╨╖╨╡ (SS + A)
call LL609c ;╨┐╨╛╨╕╤Б╨║ ╨┐╨╡╤А╨▓╨╛╨╣ ╤Б╤В╤А╨╛╨║╨╕ ╤В╨╕╨┐╨░ e ╨▓ menutext?
jr LL5f85 ;╤В╨░╨╝ ret z ╨╕ ╨┐╤А╨╛╨▓╨╡╤А╨║╨░ ╨╜╨░ '*'...
interpret_keys_hl;LL5fc9
;hl=╤Б╤В╤А╨╛╨║╨░ ╨║╨╗╤О╤З╨╡╨╣ ╤В╨╕╨┐╨░ /A1/K40/J5/C160/O21
ld a,'/';#2f
cp (hl)
ret nz
inc hl
ld b,(hl)
push bc ;b=╤В╨╕╨┐ ╨║╨╗╤О╤З╨░
inc hl
push hl ;hl=╨╜╨░╤З╨░╨╗╨╛ ╤З╨╕╤Б╨╗╨░ ╨▓ ╨║╨╗╤О╤З╨╡
xor a
ld b,a
LL5fd4 ld a,#20
cp (hl)
jr z,_LL5fe7
ld a,'/';#2f
cp (hl)
jr z,_LL5fe7
ld a,#0d
cp (hl)
jr z,_LL5fe7
inc hl
inc b
jr LL5fd4
_LL5fe7 pop de ;de=╨╜╨░╤З╨░╨╗╨╛ ╤З╨╕╤Б╨╗╨░ ╨▓ ╨║╨╗╤О╤З╨╡
push hl ;hl=╤Б╤В╤А╨╛╨║╨░ ╨║╨╗╤О╤З╨╡╨╣ ╤В╨╕╨┐╨░ /A1/K40/J5/C160/O21 - ╨┐╨╛╤Б╨╗╨╡ ╤З╨╕╤Б╨╗╨░
exd ;hl=╨╜╨░╤З╨░╨╗╨╛ ╤З╨╕╤Б╨╗╨░ ╨▓ ╨║╨╗╤О╤З╨╡
ld a,b ;╨┤╨╗╨╕╨╜╨░ ╨▒╤Г╤Д╨╡╤А╨░
ld b,#00
if NEDOOS
call sa_d
else
ld c,#7d ;125(7D):a_d - ╨┐╤А╨╡╨╛╨▒╤А╨░╨╖╨╛╨▓╨░╨╜╨╕╨╡ ╤Б╤В╤А╨╛╨║╨╕ ASCII-╤Б╨╕╨╝╨▓╨╛╨╗╨╛╨▓ ╨▓ 4-╨▒╨░╨╣╤В╨╛╨▓╨╛╨╡ ╤З╨╕╤Б╨╗╨╛. ╨Т╨╡╨┤╤Г╤Й╨╕╨╡ ╨┐╤А╨╛╨▒╨╡╨╗╤Л ╨╕╨│╨╜╨╛╤А╨╕╤А╤Г╤О╤В╤Б╤П. HL - ╨░╨┤╤А╨╡╤Б ASCII - ╨▒╤Г╤Д╨╡╤А╨░, ╨Р - ╨┤╨╗╨╕╨╜╨░ ╨▒╤Г╤Д╨╡╤А╨░ ( ╨╡╤Б╨╗╨╕ ╨Р=0, ╤В╨╛ ╨┤╨╛ ╨║╨╛╨┤╨░ 13 ), ╨Т - ╨╛╤Б╨╜╨╛╨▓╨░╨╜╨╕╨╡ ╤Б╨╕╤Б╤В╨╡╨╝╤Л ╤Б╤З╨╕╤Б╨╗╨╡╨╜╨╕╤П ╨┐╨╛ ╤Г╨╝╨╛╨╗╤З╨░╨╜╨╕╤О (╨╜╨╡ ╨▒╨╛╨╗╨╡╨╡ 16, B=0 ╨┐╨╛╨╜╨╕╨╝╨░╨╡╤В╤Б╤П ╨║╨░╨║ 10). ╨б╨╕╤Б╤В╨╡╨╝╨░ ╤Б╤З╨╕╤Б╨╗╨╡╨╜╨╕╤П ╨╝╨╛╨╢╨╡╤В ╤В╨░╨║╨╢╨╡ ╨╛╨┐╤А╨╡╨┤╨╡╨╗╤П╤В╤М╤Б╤П ╨┐╨╛ ╨┐╨╡╤А╨▓╨╛╨╝╤Г ╤Б╨╕╨╝╨▓╨╛╨╗╤Г ╨▒╤Г╤Д╨╡╤А╨░: #,h,H - 16; .,d - 10; o,O - 8; %,b,B - 2. ╨Т╤Л╤Е╨╛╨┤: 32-╤А╨░╨╖╤А╤П╨┤╨╜╨╛╨╡ ╤З╨╕╤Б╨╗╨╛ ╨▓ DE'HL'. BC' - ╨┐╤А╨╛╨┤╨╛╨╗╨╢╨╡╨╜╨╕╨╡ ASCII-╨▒╤Г╤Д╨╡╤А╨░. ╨Т╨╛╨╖╨╝╨╛╨╢╨╜╤Л╨╡ ╨╛╤И╨╕╨▒╨║╨╕ (╤Д╨╗╨░╨│ C): ╨╜╨╡╤Ж╨╕╤Д╤А╨╛╨▓╨╛╨╣ ╤Б╨╕╨╝╨▓╨╛╨╗ (A=0), ╨┐╨╡╤А╨╡╨┐╨╛╨╗╨╜╨╡╨╜╨╕╨╡ (A=1)
rst #10
endif
exx
ld b,l ;result
pop de ;de=╤Б╤В╤А╨╛╨║╨░ ╨║╨╗╤О╤З╨╡╨╣ ╤В╨╕╨┐╨░ /A1/K40/J5/C160/O21
ld hl,LL5ffd
pop af ;a=╤В╨╕╨┐ ╨║╨╗╤О╤З╨░
if NEDOOS
call sanaly
else
ld c,#7e ;126(7E):analys - ╨Я╨╡╤А╨╡╨┤╨░╤З╨░ ╤Г╨┐╤А╨░╨▓╨╗╨╡╨╜╨╕╤П ╨┐╨╛╨┤╨┐╤А╨╛╨│╤А╨░╨╝╨╝╨╡ ╨┐╨╛ ╨░╨┤╤А╨╡╤Б╤Г ╨╕╨╖ ╤В╨░╨▒╨╗╨╕╤Ж╤Л. HL - a╨┤╤А╨╡╤Б ╤В╨░╨▒╨╗╨╕╤Ж╤Л, ╨Р - ╨║╨╛╨┤ ╨║╨╛╨╝╨░╨╜╨┤╤Л. ╨в╨░╨▒╨╗╨╕╤Ж╨░ ╤Б╨╛╤Б╤В╨╛╨╕╤В ╨╕╨╖ ╨╖╨░╨┐╨╕╤Б╨╡╨╣ ╨┐╨╛ 3 ╨▒╨░╨╣╤В╨░: 0(1) ╨║╨╛╨┤ ╨║╨╛╨╝╨░╨╜╨┤╤Л, 1(2) ╨░╨┤╤А╨╡╤Б ╨┐╤А╨╛╤Ж╨╡╨┤╤Г╤А╤Л. ╨Т ╨┐╨╛╤Б╨╗╨╡╨┤╨╜╨╡╨╣ ╨╖╨░╨┐╨╕╤Б╨╕ ╨┤╨╛╨╗╨╢╨╡╨╜ ╨╗╨╡╨╢╨░╤В╤М ╨▒╨░╨╣╤В #FF ╨╕ ╨░╨┤╤А╨╡╤Б ╨╛╤В╤А╨░╨▒╨╛╤В╨║╨╕ ╤Б╨╕╤В╤Г╨░╤Ж╨╕╨╕ "╨║╨╛╨┤ ╨╜╨╡ ╨╜╨░╨╣╨┤╨╡╨╜"
rst #10 ;(╨▓ de'hl' ╨╝╤Л ╨┐╨╡╤А╨╡╨┤╨░╨╗╨╕ ╤З╨╕╤Б╨╗╨╛╨▓╨╛╨╣ ╨┐╨░╤А╨░╨╝╨╡╤В╤А ╨┤╨╗╤П ╤Н╤В╨╛╨│╨╛ ╨║╨╗╤О╤З╨░)
endif
exd
;hl=╤Б╤В╤А╨╛╨║╨░ ╨║╨╗╤О╤З╨╡╨╣ ╤В╨╕╨┐╨░ /A1/K40/J5/C160/O21
jr interpret_keys_hl;LL5fc9 ;╨┐╤А╨╛╨┤╨╛╨╗╨╢╨░╨╡╨╝ ╤А╨░╨╖╨▒╨╛╤А ╨║╨╗╤О╤З╨╡╨╣
; C╨┐╨╕╤Б╨╛╨║ ╨║╨╗╤О╤З╨╡╨╣:
; ╨Р - ╨╖╨╜╨░╤З╨╡╨╜╨╕╤П : 0 - ╨┐╨╛ ╤Г╨╝╨╛╨╗╤З╨░╨╡╨╕╤О;
; 1 - ╨╛╨║╨╜╨╛ ╨╝╨╡╨╜╤О ╤Б ╤В╨╡╨╜╤М╤О;
; 2 - ╨▓╤Л╨┐╨╛╨╗╨╜╨╕╤В╤М ╤Б╨╛╨╛╤В╨▓╨╡╤В╤Б╤В╤Г╤О╤Й╤Г╤О
; ╨║╨╛╨╝╨░╨╜╨┤╨╜╤Г╤О ╤Б╤В╤А╨╛╨║╤Г Z ╨╕
; ╨▓╨╡╤А╨╜╤Г╤В╤М╤Б╤П ╤Б╨╜╨╛╨▓╨░ ╨▓ ╨╝╨╡╨╜╤О;
; 4 - ╨╛╨║╨╜╨╛ ╨╝╨╡╨╜╤О ╤Б 2-╨╛╨╣ ╤А╨░╨╝╨║╨╛╨╣;
; 8 - ╨╜╨╡ ╨▓╤Л╨┐╨╛╨╗╨╜╤П╤В╤М ╤Б╤В╤А╨╛╨║╤Г ╨а;
; xx - ╤Б╤Г╨╝╨╝╨░╤А╨╜╨╛╨╡ ╨┤╨╡╨╣╤Б╤В╨▓╨╕╨╡,
; ╨╜╨░╨┐╤А╨╕╨╝╨╡╤А : 1+4=5 xx=5 .
; B - ╨╖╨╜╨░╤З╨╡╨╜╨╕╤П :16 - ╨┐╨╛ ╤Г╨╝╨╛╨╗╤З╨░╨╜╨╕╤О;
; 4 - ╨║╨╛╤А╨╛╤В╨║╨╕╨╣ ╨║╤Г╤А╤Б╨╛╤А;
; 16- ╨┐╨╛╨┤╤Б╨║╨░╨╖╨║╨░ ╨▒╨╡╨╖ ╤А╨░╨╝╨║╨╕;
; xx - ╤Б╤Г╨╝╨╝╨░╤А╨╜╨╛╨╡ ╨┤╨╡╨╣╤Б╤В╨▓╨╕╨╡.
; E - ╨║╨╛╨╛╤А╨┤╨╕╨╜╨░╤В╨░ x ╨╝╨╡╨╜╤О
; (╨┐╨╛ ╤Г╨╝╨╛╨╗╤З╨░╨╜╨╕╤О ╤Ж╨╡╨╜╤В╤А╨╛╨▓╨║╨░ ╨┐╨╛ X);
; D - ╨║╨╛╨╛╤А╨┤╨╕╨╜╨░╤В╨░ Y ╨╝╨╡╨╜╤О
; (╨┐╨╛ ╤Г╨╝╨╛╨╗╤З╨░╨╜╨╕╤О ╤Ж╨╡╨╜╤В╤А╨╛╨▓╨║╨░ ╨┐╨╛ Y);
; F - ╨┐╨╛╨╗╨╛╨╢╨╡╨╜╨╕╨╡ ╨║╤Г╤А╤Б╨╛╤А╨░ ╨▓ ╨╝╨╡╨╜╤О
; (╨┐╨╛ ╤Г╨╝╨╛╨╗╤З╨░╨╜╨╕╤О ╨▓ ╨┐╨╡╤А╨▓╨╛╨╣ ╤Б╤В╤А╨╛╨║╨╡ ╨╝╨╡╨╜╤О);
; J - ╤Ж╨▓╨╡╤В ╨║╤Г╤А╤Б╨╛╤А╨░ ╨╝╨╡╨╜╤О
; (╨┐╨╛ ╤Г╨╝╨╛╨╗╤З╨░╨╜╨╕╤О %00111001 );
; T - ╤Ж╨▓╨╡╤В ╤В╨╡╨╜╨╕ (╨┐╨╛ ╤Г╨╝╨╛╨╗╤З╨░╨╜╨╕╤О 0 );
; K - ╤Ж╨▓╨╡╤В ╨╝╨╡╨╜╤О (╨┐╨╛ ╤Г╨╝╨╛╨╗╤З╨░╨╜╨╕╤О %00001111);
; O - ╤Ж╨▓╨╡╤В ╨║╤Г╤А╤Б╨╛╤А╨░ ╨┐╤А╨╕ ╨▓╤Л╤Е╨╛╨┤╨╡ ╨╕╨╖ ╨╝╨╡╨╜╤О
; (╨┐╨╛ ╤Г╨╝╨╛╨╗╤З╨░╨╜╨╕╤О %00100000 );
; G - Y ╨┐╨╛╨┤╤Б╨║╨░╨╖╨║╨╕ (╨┐╨╛ ╤Г╨╝╨╛╨╗╤З╨░╨╜╨╕╤О 0 );
; I - ╤Ж╨▓╨╡╤В ╨┐╨╛╨┤╤Б╨║╨░╨╖╨║╨╕
; (╨┐╨╛ ╤Г╨╝╨╛╨╗╤З╨░╨╜╨╕╤О %00001111 );
; H - X ╨┐╨╛╨┤╤Б╨║╨░╨╖╨║╨╕ (╨┐╨╛ ╤Г╨╝╨╛╨╗╤З╨░╨╜╨╕╤О 0 );
; N - ╨▓╤Л╤Б╨╛╤В╨░ ╨┐╨╛╨┤╤Б╨║╨░╨╖╨║╨╕ (╨┐╨╛ ╤Г╨╝╨╛╨╗╤З╨░╨╜╨╕╤О 1 );
; C - ╨┤╨╗╨╕╨╜╨░ ╨┐╨╛╨┤╤Б╨║╨░╨╖╨║╨╕ (╨┐╨╛ ╤Г╨╝╨╛╨╗╤З╨░╨╜╨╕╤О 32 ).
LL5ffd DB 'A';#41
dw setkey_action;LL6041
db 'B';#42
dw setkey_flags;LL6046
db 'C';#43
dw setkey_hintwid;LL604b
DB 'D';#44
dw setkey_menuy;LL6050
db 'E';#45
dw setkey_menux;LL6055
db 'F';#46
dw setkey_cursory;LL605a
db 'G';#47
dw setkey_hinty;LL605f
db 'H';#48
dw setkey_hintx;LL6064
DB 'I';#49
dw setkey_hintcolor;LL6069
db 'J';#4a
dw setkey_cursorcolor;LL606e
db 'K';#4b
dw setkey_menucolor;LL6073
db 'L';#4c
dw LL6078
db 'M';#4d
dw LL607d
db 'N';#4e
dw setkey_hinthgt;LL6082
db 'O';#4f
dw setkey_exitcursorcolor;LL603c
db 'T';#54
dw setkey_shadowcolor;LL6030
DB #ff
dw reter;LL6045
setkey_shadowcolor;LL6030
ld a,b
and #07
ld b,a
add a,a
add a,a
add a,a
or b
ld (shadowcolor),a;(LL6230),a
ret
setkey_exitcursorcolor;LL603c
ld a,b
ld (exitcursorcolor),a;(LL6239),a
ret
setkey_action;LL6041
ld a,b
ld (action),a;(LL6087),a
reter;LL6045
ret
setkey_flags;LL6046
ld a,b
ld (flags),a;(LL6235),a
ret
setkey_hintwid;LL604b
ld a,b
ld (hintwid),a;(LL6224),a
ret
setkey_menuy;LL6050
ld a,b
ld (menuy),a;(LL622c),a
ret
setkey_menux;LL6055
ld a,b
ld (menux),a;(LL622b),a
ret
setkey_cursory;LL605a
ld a,b
ld (cursory),a;(LL6234),a
ret
setkey_hinty;LL605f
ld a,b
ld (hinty),a;(LL621e),a
ret
setkey_hintx;LL6064
ld a,b
ld (hintx),a;(LL621d),a
ret
setkey_hintcolor;LL6069
ld a,b
ld (hintcolor),a;(LL6221),a
ret
setkey_cursorcolor;LL606e
ld a,b
ld (cursorcolor),a;(LL6233),a
ret
setkey_menucolor;LL6073
ld a,b
ld (menucolor),a;(LL622f),a
ret
LL6078
ld a,b
ld (LL6236),a
ret
LL607d
ld a,b
ld (LL6225),a
ret
setkey_hinthgt;LL6082
ld a,b
ld (hinthgt),a;(LL621f),a
ret
action;LL6087
DB #00
if NEDOOS
;mainmenupath;LL6088
;db "menu",0
else
mainmenupath;LL6088
;db #53,#3a,#53,#48,#45,#4c,#4c
;DB #5c,#0d,#6d,#65,#6e,#75,#20,#20
;DB #20,#20,#74,#78,#74
db "S:SHELL",'\\',13
endif
mainmenufilename;LL6091
if NEDOOS
db "menu/menu.mnu",0
;db "menu/resident.mnu",0
else
db "menu txt"
endif
LL609c
;e=╤В╨╕╨┐ ╤Б╤В╤А╨╛╨║╨╕
ld d,#01 ;db 0x16,0x01
LL609e ld hl,menutext;LL623a ;╨┐╨╛╨╕╤Б╨║ ╤Б╤В╤А╨╛╨║╨╕ ╤В╨╕╨┐╨░ e ╨╜╨╛╨╝╨╡╤А d ╨▓ ╤В╨╡╨║╤Б╤В╨╡ menutext? ;out: z="(hl)==#03" (╨║╨╛╨╜╨╡╤Ж ╤В╨╡╨║╤Б╤В╨░?) ╨╕╨╗╨╕ error?
LL60a1 jp LL6179 ;╨┐╨╛╨╕╤Б╨║ ╤Б╤В╤А╨╛╨║╨╕ ╤В╨╕╨┐╨░ e ╨╜╨╛╨╝╨╡╤А d ╨▓ ╤В╨╡╨║╤Б╤В╨╡ hl?
;z="(hl)==#03" (╨║╨╛╨╜╨╡╤Ж ╤В╨╡╨║╤Б╤В╨░?) ╨╕╨╗╨╕ error?
LL60a4 ;╨┐╨╡╤А╨╡╨┐╨╡╤З╨░╤В╨║╨░ ╨╛╨║╨╜╨░?
ld a,(ix+MENU_flags);#0a)
bit 5,a
ret nz
set 5,a
ld (ix+MENU_flags),a;(ix+#0a),a
ld a,(ix+MENU_flags);#0a)
call LL6153 ;goto next menu
ld b,a
ld a,(hintspresent);LL6226)
or a
jr z,LL60c7 ;no hints ;goto next menu
ld a,(flags);(LL6235)
bit 4,a ;16 = ╨┐╨╛╨┤╤Б╨║╨░╨╖╨║╨░ ╨▒╨╡╨╖ ╤А╨░╨╝╨║╨╕
jr nz,_LL60c4
xor a
_LL60c4
if NEDOOS
call sR_WT
else
ld c,#61 ;97(61):wt - ╨Т╤Л╨▓╨╛╨┤ ╨╛╨║╨╜╨░. ╨Я╨╛╨┤╤Д╤Г╨╜╨║╤Ж╨╕╤П ╨▓ ╤А╨╡╨│. A: A=0 ╨╛╨║╨╜╨╛ ╤Б ╨╛╨┤╨╕╨╜╨░╤А╨╜╨╛╨╣ ╤А╨░╨╝╨║╨╛╨╣, ╨Р=1 ╨▒╨╡╨╖ ╤А╨░╨╝╨║╨╕, ╨Р=2 ╤Б ╨┤╨▓╨╛╨╣╨╜╨╛╨╣ ╤А╨░╨╝╨║╨╛╨╣, A=3..127 ╨▒╨╡╨╖ ╤А╨░╨╝╨║╨╕, A=128..255 ╤В╨╛╨╗╤М╨║╨╛ ╨┐╨╛╨┤╨║╤А╨░╤Б╨║╨░. IX= ╨▓╨╡╨║╤В╨╛╤А ╨╛╨║╨╜╨░
rst #10
endif
LL60c7 jp LL6153 ;goto next menu
cycleinmenu;LL60ca
call LL6165 ;╨┐╨╡╤З╨░╤В╤М ╤В╨╡╨║╤Б╤В╨░ ╨▓ ╨╛╨║╨╜╨╡
call LL6115
call LL60a4 ;╨┐╨╡╤А╨╡╨┐╨╡╤З╨░╤В╨║╨░ ╨╛╨║╨╜╨░?
call LL613d
if NEDOOS
push ix
OS_GETKEY
pop ix
else
ld c,#07 ;7(07):ttyin - ╨Т╨▓╨╛╨┤ ╤Б╨╕╨╝╨▓╨╛╨╗╨░. ╨Т╤Л╤Е╨╛╨┤: A - ╨║╨╛╨┤ ╨╜╨░╨╢╨░╤В╨╛╨╣ ╨║╨╗╨░╨▓╨╕╤И╨╕
rst #10
endif
push af
ld b,(ix+MENU_menucolor);#04)
call printcursor;LL612d
pop af
ld hl,tkeyhandlers;LL60eb
if NEDOOS
call sanaly
else
ld c,#7e ;126(7E):analys - ╨Я╨╡╤А╨╡╨┤╨░╤З╨░ ╤Г╨┐╤А╨░╨▓╨╗╨╡╨╜╨╕╤П ╨┐╨╛╨┤╨┐╤А╨╛╨│╤А╨░╨╝╨╝╨╡ ╨┐╨╛ ╨░╨┤╤А╨╡╤Б╤Г ╨╕╨╖ ╤В╨░╨▒╨╗╨╕╤Ж╤Л. HL - a╨┤╤А╨╡╤Б ╤В╨░╨▒╨╗╨╕╤Ж╤Л, ╨Р - ╨║╨╛╨┤ ╨║╨╛╨╝╨░╨╜╨┤╤Л. ╨в╨░╨▒╨╗╨╕╤Ж╨░ ╤Б╨╛╤Б╤В╨╛╨╕╤В ╨╕╨╖ ╨╖╨░╨┐╨╕╤Б╨╡╨╣ ╨┐╨╛ 3 ╨▒╨░╨╣╤В╨░: 0(1) ╨║╨╛╨┤ ╨║╨╛╨╝╨░╨╜╨┤╤Л, 1(2) ╨░╨┤╤А╨╡╤Б ╨┐╤А╨╛╤Ж╨╡╨┤╤Г╤А╤Л. ╨Т ╨┐╨╛╤Б╨╗╨╡╨┤╨╜╨╡╨╣ ╨╖╨░╨┐╨╕╤Б╨╕ ╨┤╨╛╨╗╨╢╨╡╨╜ ╨╗╨╡╨╢╨░╤В╤М ╨▒╨░╨╣╤В #FF ╨╕ ╨░╨┤╤А╨╡╤Б ╨╛╤В╤А╨░╨▒╨╛╤В╨║╨╕ ╤Б╨╕╤В╤Г╨░╤Ж╨╕╨╕ "╨║╨╛╨┤ ╨╜╨╡ ╨╜╨░╨╣╨┤╨╡╨╜"
rst #10
endif
ret nz
ret c
jr cycleinmenu;LL60ca
tkeyhandlers;LL60eb
DB #0d
dw handle_enter;LL61a8
db key_left;#09
dw handle_left;LL61bb
db key_up;#0b
dw handle_up;LL61d3
db key_down;#0a
dw handle_down;LL61fc
db key_right;#08
dw handle_right;LL61c9
db 'q';#71
dw handle_up;LL61d3
db 'a';#61
dw handle_down;LL61fc
db 'p';#70
dw handle_right;LL61c9
DB 'o';#6f
dw handle_left;LL61bb
db key_end;'A';#41
dw handle_end;LL61d9
db key_home;'Q';#51
dw handle_home;LL6205
DB key_esc;#10
dw xorascf;LL6112
db #ff
dw xora;LL61f6 ;xor a:ret
xorascf;LL6112
xor a
scf
ret
LL6115
ld d,(ix+MENU_cursory);#09)
ld e,'A';#41
call LL615d ;hl=ix+15
call LL6179 ;╨┐╨╛╨╕╤Б╨║ ╤Б╤В╤А╨╛╨║╨╕ ╤В╨╕╨┐╨░ 'A' ╨╜╨╛╨╝╨╡╤А d ╨▓ ╤В╨╡╨║╤Б╤В╨╡ hl?
jp z,LL61f8 ;(hl)=#03 (╨║╨╛╨╜╨╡╤Ж ╤В╨╡╨║╤Б╤В╨░?) ╨╕╨╗╨╕ error? ;handle_down+jp LL6115
dec hl
ld a,(hl)
cp 'a';#61
jp z,LL61f8 ;handle_down+jp LL6115 ;'a' = ╤Б╤В╤А╨╛╨║╨╕ ╨╝╨╡╨╜╤О, ╨┐╨╛ ╨║╨╛╤В╨╛╤А╤Л╨╝ ╨╜╨╡ ╤Е╨╛╨┤╨╕╤В ╨║╤Г╤А╤Б╨╛╤А
ld b,(ix+MENU_cursorcolor);#08)
;b=color
printcursor;LL612d
ld a,(flags);(LL6235)
bit 2,a ;4 = ╨║╨╛╤А╨╛╤В╨║╨╕╨╣ ╨║╤Г╤А╤Б╨╛╤А
ld a,(ix+MENU_cursory);#09)
if NEDOOS
jr z,_LL6138
call sAWTC
jr _LL6138q
_LL6138
call sAWT
_LL6138q
else
ld c,#63 ;99(63):awt - ╨Я╨╛╨┤╨║╤А╨░╤И╨╕╨▓╨░╨╡╤В ╤Б╤В╤А╨╛╨║╤Г ╨▓╨╜╤Г╤В╤А╨╕ ╨╛╨║╨╜╨░, c ╤А╨░╨╝╨║╨╛╨╣. ╨Т╤Е╨╛╨┤: IX = ╨░╨┤╤А╨╡╤Б ╨▓╨╡╨║╤В╨╛╤А╨░ ╨╛╨║╨╜╨░, A = ╨╜╨╛╨╝╨╡╤А ╤Б╤В╤А╨╛╨║╨╕, ╨║╨╛╤В╨╛╤А╤Г╤О ╨╜╨╡╨╛╨▒╤Е╨╛╨┤╨╕╨╝╨╛ ╨┐╨╛╨┤╤Б╨▓╨╡╤В╨╕╤В╤М (╨╜╤Г╨╝╨╡╤А╨░╤Ж╨╕╤П ╨╛╤В 1), B = ╤Ж╨▓╨╡╤В
jr z,_LL6138
ld c,#64 ;100(64):awtc - ╨Я╨╛╨┤╨║╤А╨░╤И╨╕╨▓╨░╨╡╤В ╤Б╤В╤А╨╛╨║╤Г ╨▓╨╜╤Г╤В╤А╨╕ ╨╛╨║╨╜╨░, ╨╜╨╡ ╨╖╨░╤В╤А╨░╨│╨╕╨▓╨░╤П ╤А╨░╨╝╨║╤Г, IX=╨▓╨╡╨║╤В╨╛╤А ╨╛╨║╨╜╨░, A=╨╜╨╛╨╝╨╡╤А ╤Б╤В╤А╨╛╨║╨╕, B=╤Ж╨▓╨╡╤В
_LL6138 ;ld a,(ix+MENU_cursory);#09)
rst #10
endif
ret
LL613d call LL5fb4 ;╨┐╨╛╨╕╤Б╨║ ╤Б╤В╤А╨╛╨║╨╕ ╤В╨╕╨┐╨░ 'A' ╨╜╨╛╨╝╨╡╤А cursory ╨▓ ╤В╨╡╨║╤Б╤В╨╡ menutext? ;out: z="(hl)==#03" (╨║╨╛╨╜╨╡╤Ж ╤В╨╡╨║╤Б╤В╨░?) ╨╕╨╗╨╕ error?
ld e,'H';#48 ;H - ╨┤╨╛╨╗╨╢╨╡╨╜ ╤Б╤В╨╛╤П╤В╤М ╤В╨╡╨║╤Б╤В ,╨║╨╛╤В╨╛╤А╤Л╨╣ ╨┐╨╛╤П╨▓╨╗╤П╨╡╤В╤Б╤П ╨▓ c╤В╤А╨╛╨║╨╡ ╨┐╨╛╨┤╤Б╨║╨░╨╖╨║╨╡
call LL60a1 ;╨┐╨╛╨╕╤Б╨║ ╤Б╤В╤А╨╛╨║╨╕ ╤В╨╕╨┐╨░ e ╨╜╨╛╨╝╨╡╤А d ╨▓ ╤В╨╡╨║╤Б╤В╨╡ hl? ;out: z="(hl)==#03" (╨║╨╛╨╜╨╡╤Ж ╤В╨╡╨║╤Б╤В╨░?) ╨╕╨╗╨╕ error?
ret z ;z=╨╜╨╡ ╨╜╨░╨╣╨┤╨╡╨╜╨╛
call LL6153 ;goto next menu
ld b,#01
ld a,(ix+MENU_menuhgt);#02)
srl a ;???
if NEDOOS
call sLWT
else
ld c,#65 ;101(65):lwt - ╨а╨░╤Б╨┐╨╡╤З╨░╤В╨║╨░ ╨╖╨░╨┤╨░╨╜╨╜╨╛╨│╨╛ ╨║╨╛╨╗╨╕╤З╨╡╤Б╤В╨▓╨░ ╤Б╤В╤А╨╛╨║ ╨▓ ╨╛╨║╨╜╨╡; A - ╨╜╨╛╨╝╨╡╤А ╤Б╤В╤А╨╛╨║╨╕ (╨╜╨░╤З╨░╨╗╨░), IX - ╨▓╨╡╨║╤В╨╛╤А ╨╛╨║╨╜╨░, HL - ╨░╨┤╤А╨╡╤Б ╤Б╤В╤А╨╛╨║ ╤В╨╡╨║╤Б╤В╨░ ╨┤╨╗╤П ╨┐╨╡╤З╨░╤В╨╕, B - ╨║╨╛╨╗╨╕╤З╨╡╤Б╤В╨▓╨╛ ╤Б╤В╤А╨╛╨║, ╨║╨╛╤В╨╛╤А╨╛╨╡ ╨╜╨╡╨╛╨▒╤Е╨╛╨┤╨╕╨╝╨╛ ╤А╨░╤Б╨┐╨╡╤З╨░╤В╨░╤В╤М
rst #10
endif
;goto next menu
LL6153
ld e,(ix+MENU_nextmenuaddr);#0c)
ld d,(ix+MENU_nextmenuaddr+1);#0d)
push de
pop ix
ret
LL615d ;hl=ix+15
push ix
pop hl
ld bc,LL000f
add hl,bc
ret
;╨┐╨╡╤З╨░╤В╤М ╤В╨╡╨║╤Б╤В╨░ ╨▓ ╨╛╨║╨╜╨╡
LL6165
ld d,#01
ld e,'A';#41
LL6169 call LL615d ;hl=ix+15
call LL6179 ;╨┐╨╛╨╕╤Б╨║ ╤Б╤В╤А╨╛╨║╨╕ ╤В╨╕╨┐╨░ 'A' ╨╜╨╛╨╝╨╡╤А d ╨▓ ╤В╨╡╨║╤Б╤В╨╡ hl?
ret z ;(hl)=#03 (╨║╨╛╨╜╨╡╤Ж ╤В╨╡╨║╤Б╤В╨░?) ╨╕╨╗╨╕ error?
ld a,d
ld b,#01
if NEDOOS
push de
call sLWT
pop de
else
ld c,#65 ;101(65):lwt - ╨а╨░╤Б╨┐╨╡╤З╨░╤В╨║╨░ ╨╖╨░╨┤╨░╨╜╨╜╨╛╨│╨╛ ╨║╨╛╨╗╨╕╤З╨╡╤Б╤В╨▓╨░ ╤Б╤В╤А╨╛╨║ ╨▓ ╨╛╨║╨╜╨╡; A - ╨╜╨╛╨╝╨╡╤А ╤Б╤В╤А╨╛╨║╨╕ (╨╜╨░╤З╨░╨╗╨░), IX - ╨▓╨╡╨║╤В╨╛╤А ╨╛╨║╨╜╨░, HL - ╨░╨┤╤А╨╡╤Б ╤Б╤В╤А╨╛╨║ ╤В╨╡╨║╤Б╤В╨░ ╨┤╨╗╤П ╨┐╨╡╤З╨░╤В╨╕, B - ╨║╨╛╨╗╨╕╤З╨╡╤Б╤В╨▓╨╛ ╤Б╤В╤А╨╛╨║, ╨║╨╛╤В╨╛╤А╨╛╨╡ ╨╜╨╡╨╛╨▒╤Е╨╛╨┤╨╕╨╝╨╛ ╤А╨░╤Б╨┐╨╡╤З╨░╤В╨░╤В╤М
rst #10
endif
inc d
jr LL6169
LL6179
;╨┐╨╛╨╕╤Б╨║ ╤Б╤В╤А╨╛╨║╨╕ ╤В╨╕╨┐╨░ 'A' ╨╜╨╛╨╝╨╡╤А d ╨▓ ╤В╨╡╨║╤Б╤В╨╡ hl?
;hl=text
;d=y?
;e='A'?
;out: hl, z=error?
push af
ld b,#00
LL617c pop af
call LL6191
ret z ;(hl)=#03 (╨║╨╛╨╜╨╡╤Ж ╤В╨╡╨║╤Б╤В╨░?) ╨╕╨╗╨╕ error?
inc b
push hl
call findCR;LL61a1
ld a,b
cp d
jr nz,LL617c
pop hl
inc hl
ld a,#fe
sub c
or a ;z="╨▓ ╨┐╤А╨╡╨┤╤Л╨┤╤Г╤Й╨╡╨╣ ╤Б╤В╤А╨╛╨║╨╡ CR ╨╜╨░╨╣╨┤╨╡╨╜ ╨▓ ╨┐╨╡╤А╨▓╨╛╨╣ ╨╢╨╡ ╨┐╨╛╨╖╨╕╤Ж╨╕╨╕ (╨┐╤А╨╡╨┤╤Л╨┤╤Г╤Й╨░╤П ╤Б╤В╤А╨╛╨║╨░ ╨┐╤Г╤Б╤В╨░╤П)"???
ret
;e=?
LL6191 ld a,(hl)
cp #03
ret z ;╨║╨╛╨╜╨╡╤Ж ╤В╨╡╨║╤Б╤В╨░?
res 5,a
cp e
jr z,LL619f ;╤Б╤В╤А╨╛╨║╨░ ╨╜╤Г╨╢╨╜╨╛╨│╨╛ ╤В╨╕╨┐╨░
call findCR;LL61a1
jr LL6191
LL619f or a
ret
findCR;LL61a1
ld c,#ff
ld a,#0d
cpir
ret
handle_enter;LL61a8
ld a,#01
or a
LL61ab push af
ld a,(ix+MENU_flags);#0a)
bit 0,a
jr nz,_LL61b9
ld b,(ix+MENU_exitcursorcolor);#0e)
call printcursor;LL612d
_LL61b9 pop af
ret
handle_left;LL61bb
ld a,(ix+MENU_flags);#0a)
bit 3,a
ret z
set 6,a
LL61c3 ld (ix+MENU_flags),a;(ix+#0a),a
scf
jr LL61ab
handle_right;LL61c9
ld a,(ix+MENU_flags);#0a)
bit 3,a
ret z
set 7,a
jr LL61c3
handle_up;LL61d3
ld a,(ix+MENU_cursory);#09)
dec a
jr nz,LL61de
handle_end;LL61d9
ld a,(ix+MENU_menuhgt);#02)
dec a
dec a
LL61de ld (ix+MENU_cursory),a;(ix+#09),a
ld d,a
ld e,'A';#41
call LL615d ;hl=ix+15
call LL6179 ;╨┐╨╛╨╕╤Б╨║ ╤Б╤В╤А╨╛╨║╨╕ ╤В╨╕╨┐╨░ 'A' ╨╜╨╛╨╝╨╡╤А d ╨▓ ╤В╨╡╨║╤Б╤В╨╡ hl?
jr z,handle_up;LL61d3 ;(hl)=#03 (╨║╨╛╨╜╨╡╤Ж ╤В╨╡╨║╤Б╤В╨░?)
dec hl
ld a,(hl)
cp 'a';#61
jr z,handle_up;LL61d3 ;'a' = ╤Б╤В╤А╨╛╨║╨╕ ╨╝╨╡╨╜╤О, ╨┐╨╛ ╨║╨╛╤В╨╛╤А╤Л╨╝ ╨╜╨╡ ╤Е╨╛╨┤╨╕╤В ╨║╤Г╤А╤Б╨╛╤А
ld a,d
LL61f3 ld (ix+MENU_cursory),a;(ix+#09),a
xora;LL61f6
xor a
ret
LL61f8 ld hl,LL6115
push hl
handle_down;LL61fc
ld a,(ix+MENU_cursory);#09)
_LL61ff inc a
cp (ix+MENU_menuhgt);#02)
jr nz,LL61f3
handle_home;LL6205
xor a
jr _LL61ff
include "twind.asm" ;sR_WT
include "wtro.asm"
include "ttyp42.asm"
sATB42
incbin "Font42_f.cod"
;╨╕╤Б╤Е╨╛╨┤╨╜╨╕╨║ ╨╜╨╡ ╨╜╨░╨╣╨┤╨╡╨╜, ╨┐╨╕╤И╨╡╨╝ ╨┐╨╛ ╨┤╨╛╨│╨░╨┤╨║╨╡
;126(7E):analys - ╨Я╨╡╤А╨╡╨┤╨░╤З╨░ ╤Г╨┐╤А╨░╨▓╨╗╨╡╨╜╨╕╤П ╨┐╨╛╨┤╨┐╤А╨╛╨│╤А╨░╨╝╨╝╨╡ ╨┐╨╛ ╨░╨┤╤А╨╡╤Б╤Г ╨╕╨╖ ╤В╨░╨▒╨╗╨╕╤Ж╤Л. HL - a╨┤╤А╨╡╤Б ╤В╨░╨▒╨╗╨╕╤Ж╤Л, ╨Р - ╨║╨╛╨┤ ╨║╨╛╨╝╨░╨╜╨┤╤Л. ╨в╨░╨▒╨╗╨╕╤Ж╨░ ╤Б╨╛╤Б╤В╨╛╨╕╤В ╨╕╨╖ ╨╖╨░╨┐╨╕╤Б╨╡╨╣ ╨┐╨╛ 3 ╨▒╨░╨╣╤В╨░: 0(1) ╨║╨╛╨┤ ╨║╨╛╨╝╨░╨╜╨┤╤Л, 1(2) ╨░╨┤╤А╨╡╤Б ╨┐╤А╨╛╤Ж╨╡╨┤╤Г╤А╤Л. ╨Т ╨┐╨╛╤Б╨╗╨╡╨┤╨╜╨╡╨╣ ╨╖╨░╨┐╨╕╤Б╨╕ ╨┤╨╛╨╗╨╢╨╡╨╜ ╨╗╨╡╨╢╨░╤В╤М ╨▒╨░╨╣╤В #FF ╨╕ ╨░╨┤╤А╨╡╤Б ╨╛╤В╤А╨░╨▒╨╛╤В╨║╨╕ ╤Б╨╕╤В╤Г╨░╤Ж╨╕╨╕ "╨║╨╛╨┤ ╨╜╨╡ ╨╜╨░╨╣╨┤╨╡╨╜" (╨▓╨╛╨╖╨▓╤А╨░╤Й╨░╨╡╤В NZ?)
sanaly
inc (hl)
jr z,sanaly_err
dec (hl)
cp (hl)
jr z,sanaly_ok
inc hl
inc hl
inc hl
jr sanaly
sanaly_err
dec (hl) ;NZ
sanaly_ok
inc hl
ld a,(hl)
inc hl
ld h,(hl)
ld l,a
jp (hl)
sPRCHR
;a=chr
;in,out: de'=print addr
jp sTYP42
sPRAD
;out: de'=print addr
jp sADR42
;╨╕╤Б╤Е╨╛╨┤╨╜╨╕╨║ ╨╜╨╡ ╨╜╨░╨╣╨┤╨╡╨╜, ╨┐╨╕╤И╨╡╨╝ ╨┐╨╛ ╨┤╨╛╨│╨░╨┤╨║╨╡
;125(7D):a_d - ╨┐╤А╨╡╨╛╨▒╤А╨░╨╖╨╛╨▓╨░╨╜╨╕╨╡ ╤Б╤В╤А╨╛╨║╨╕ ASCII-╤Б╨╕╨╝╨▓╨╛╨╗╨╛╨▓ ╨▓ 4-╨▒╨░╨╣╤В╨╛╨▓╨╛╨╡ ╤З╨╕╤Б╨╗╨╛. ╨Т╨╡╨┤╤Г╤Й╨╕╨╡ ╨┐╤А╨╛╨▒╨╡╨╗╤Л ╨╕╨│╨╜╨╛╤А╨╕╤А╤Г╤О╤В╤Б╤П. HL - ╨░╨┤╤А╨╡╤Б ASCII - ╨▒╤Г╤Д╨╡╤А╨░, ╨Р - ╨┤╨╗╨╕╨╜╨░ ╨▒╤Г╤Д╨╡╤А╨░ ( ╨╡╤Б╨╗╨╕ ╨Р=0, ╤В╨╛ ╨┤╨╛ ╨║╨╛╨┤╨░ 13 ), ╨Т - ╨╛╤Б╨╜╨╛╨▓╨░╨╜╨╕╨╡ ╤Б╨╕╤Б╤В╨╡╨╝╤Л ╤Б╤З╨╕╤Б╨╗╨╡╨╜╨╕╤П ╨┐╨╛ ╤Г╨╝╨╛╨╗╤З╨░╨╜╨╕╤О (╨╜╨╡ ╨▒╨╛╨╗╨╡╨╡ 16, B=0 ╨┐╨╛╨╜╨╕╨╝╨░╨╡╤В╤Б╤П ╨║╨░╨║ 10). ╨б╨╕╤Б╤В╨╡╨╝╨░ ╤Б╤З╨╕╤Б╨╗╨╡╨╜╨╕╤П ╨╝╨╛╨╢╨╡╤В ╤В╨░╨║╨╢╨╡ ╨╛╨┐╤А╨╡╨┤╨╡╨╗╤П╤В╤М╤Б╤П ╨┐╨╛ ╨┐╨╡╤А╨▓╨╛╨╝╤Г ╤Б╨╕╨╝╨▓╨╛╨╗╤Г ╨▒╤Г╤Д╨╡╤А╨░: #,h,H - 16; .,d - 10; o,O - 8; %,b,B - 2. ╨Т╤Л╤Е╨╛╨┤: 32-╤А╨░╨╖╤А╤П╨┤╨╜╨╛╨╡ ╤З╨╕╤Б╨╗╨╛ ╨▓ DE'HL'. BC' - ╨┐╤А╨╛╨┤╨╛╨╗╨╢╨╡╨╜╨╕╨╡ ASCII-╨▒╤Г╤Д╨╡╤А╨░. ╨Т╨╛╨╖╨╝╨╛╨╢╨╜╤Л╨╡ ╨╛╤И╨╕╨▒╨║╨╕ (╤Д╨╗╨░╨│ C): ╨╜╨╡╤Ж╨╕╤Д╤А╨╛╨▓╨╛╨╣ ╤Б╨╕╨╝╨▓╨╛╨╗ (A=0), ╨┐╨╡╤А╨╡╨┐╨╛╨╗╨╜╨╡╨╜╨╕╨╡ (A=1)
sa_d
;dec only
;no overflow
;no leading spaces
exx
ld hl,0
ld d,h
ld e,l
exx
ld b,a ;╨┤╨╗╨╕╨╜╨░ ╨▒╤Г╤Д╨╡╤А╨░
sa_d_loop
ld a,(hl)
inc hl
sub '0'
cp 10
ccf
jr c,sa_d_loopq
exx
call sa_d_mul10
add a,l
ld l,a
ld a,h
adc a,0
ld h,a
jr nc,$+3
inc de
exx
djnz sa_d_loop
or a ;ok
sa_d_loopq
push hl
exx
pop bc
exx
ret
;de'hl'
sa_d_mul10
ld b,h
ld c,l
push de
add hl,hl
rl e
rl d ;*2
add hl,hl
rl e
rl d ;*4
add hl,bc
ex de,hl
pop bc
adc hl,bc
ex de,hl ;*5
add hl,hl
rl e
rl d ;*10
ret
skipword
;hl=string
;out: hl=terminator/space addr
getword0
ld a,(hl)
or a
ret z
cp ' '
ret z
inc hl
jr getword0
skipspaces
;hl=string
;out: hl=after last space
ld a,(hl)
cp ' '
ret nz
inc hl
jr skipspaces
strcopy
;hl->de
;out: hl,de after terminator
xor a
strcopy0
cp (hl)
ldi
jr nz,strcopy0
ret
keepdir
ld de,curdir
OS_GETPATH
ret
setolddir
ld de,curdir
OS_CHDIR
ret
loadandrun
;hl=rest of command line
;out: nz=error, e=id
;load file in fcb from system current dir with parameters in tcmd, then set curpaneldir and run
ld (loadandrun_restcmd),hl
ld de,cmd_filename
OS_OPENHANDLE
or a
ret nz ;error
ld a,b
ld (curhandle),a
ld hl,nv_closehandle
push hl
;set current drive and dir (will be copied into new app)
call setolddir
OS_NEWAPP
or a
ret nz ;error
;dehl=╨╜╨╛╨╝╨╡╤А╨░ ╤Б╤В╤А╨░╨╜╨╕╤Ж ╨▓ 0000,4000,8000,c000 ╨╜╨╛╨▓╨╛╨│╨╛ ╨┐╤А╨╕╨╗╨╛╨╢╨╡╨╜╨╕╤П, b=id, a=error
push bc ;b=id
ld a,d
SETPGC000
push de
push hl
ld hl,filenametext
ld de,0xc000+COMMANDLINE
ld bc,4
ldir
loadandrun_restcmd=$+1
ld hl,0
call strcopy
xor a
ld (0xc000+COMMANDLINE+COMMANDLINE_sz-1),a
pop hl
pop de
call readfile_pages_dehl
pop de
ld e,d ;e=id
;run "cmd <commandline>"
push de
OS_RUNAPP
pop de
xor a
ret ;z
readfile_pages_dehl
ld a,d
SETPGC000
ld a,0xc100/256
call cmd_loadpage
ret nz
ld a,e
call cmd_loadfullpage
ret nz
ld a,h
call cmd_loadfullpage
ret nz
ld a,l
cmd_loadfullpage
SETPGC000
ld a,0xc000/256
cmd_loadpage
;out: a=error, bc=bytes read
;keeps hl,de
push de
push hl
ld d,a
xor a
ld l,a
ld e,a
sub d
ld h,a ;de=buffer, hl=size
call readcurhandle
ld b,h
ld c,l
pop hl
pop de
or a
ret
readcurhandle
curhandle=$+1
ld b,0
OS_READHANDLE
ret
nv_closehandle
;keep de and flags!!!
push af
push de
ld a,(curhandle)
ld b,a
OS_CLOSEHANDLE
pop de
pop af
ret
cmd_filename
db "cmd.com",0
filenametext
db "cmd "
tdotmnuz
db ".mnu",0
curdir
ds MAXPATH_sz
par1addr
dw 0
par2addr
dw 0
;curhandle
; db 0
;???
DB #55;'U'
db "ABCDEFGHIJ";#41,#42,#43,#44,#45,#46,#47,#48,#49,#4a
db "0123456789";#30,#31,#32,#33,#34,#35,#36,#37,#38,#39
HINTMENU
hintx;LL621d
db #00
hinty;LL621e
db #00
hinthgt;LL621f
db #01
LL6220 ;hintwid_chrs?
DB #20
hintcolor;LL6221
db #0f,#ff
LL6223 ;hinthgt_chrs?
db #01
hintwid;LL6224
db #1e
LL6225
db #00
hintspresent;LL6226
db #00
db #00
DB #00
dw MENU;#622b
MENU
menux;LL622b
db #ff
menuy;LL622c
db #ff
MENU_menuhgt=$-MENU;2
menuhgt;LL622d
db #00
menuwid_chrs;LL622e
db #00
MENU_menucolor=$-MENU;4
menucolor;LL622f
db #0f
shadowcolor;LL6230
DB #80
LL6231 ;menuhgt_chrs?
db #00
;MENU_menuwid=$-MENU;7
menuwid;LL6232
db #00
MENU_cursorcolor=$-MENU;8
cursorcolor;LL6233
db #39
MENU_cursory=$-MENU;9
cursory;LL6234
db #01
MENU_flags=$-MENU;10
flags;LL6235
;bit 0: ╨╜╨╡ ╨┐╨╡╤З╨░╤В╨░╤В╤М ╨║╤Г╤А╤Б╨╛╤А ╤Ж╨▓╨╡╤В╨╛╨╝ exitcursorcolor ╨┐╨╛ left, right, enter
;bit 3: enable left, right
;bit 5: LL60a4 already called (╨╛╨║╨╜╨╛ ╨╜╨░╨┐╨╡╤З╨░╤В╨░╨╜╨╛?)
;bit 6: left pressed
;bit 7: right pressed
db #10
LL6236
db #00 ;???
MENU_nextmenuaddr=$-MENU;12
dw HINTMENU;#621d
MENU_exitcursorcolor=$-MENU;14
exitcursorcolor;LL6239
db #20
;menu size = 15?
menutext;LL623a
end
savebin "menu.com",begin,end-begin
LABELSLIST "../../us/user.l"