UserMenu/menu.asm

1102 lines
15 KiB
NASM
Executable File
Raw Blame History

;[]
;
; MENU.EXE
DEFINE App_EXE_Version 0
INCLUDE 'shared_includes/constants/bios_equ.inc'
INCLUDE 'shared_includes/constants/dss_equ.inc'
CR EQU 13
LF EQU 10
MAX_MENU_ITEMS EQU 24
ORG #8200-EXE_HEADER.Size
EXE_HEADER:
DB 'EXE' ;EXE ID
DB App_EXE_Version ;EXE VERSION
DW EXE_HEADER.Size
DW #0000 ;CODE OFFSET HIGH
DW #0000 ;END-BEG ;PRIMARY LOADER
DW #0000 ;
DW #0000 ;RESERVED
DW #0000 ;
DW START ;LOAD ADDRESS
DW START ;START ADDRESS
DW #8100 ;STACK ADDRESS
DB #FF
.Size EQU $-EXE_HEADER
START: PUSH IX
LD A,(IX+2)
CP ' '
JR Z,.skipStartMessage
LD A,0
CALL MESSAGE
.skipStartMessage:
CALL INIT
;
LD C,Dss.SysTime
RST ToDSS
LD A,B
LD (RUN_TIME),A
;
LD C,0
RST #30
; LD C,1
; RST #30
LD BC,1*256+Dss.GetMem
RST ToDSS
JR NC,M_ALLOK
LD A,9
CALL MESSAGE
POP HL
JP QUIT
M_ALLOK
LD (HNDMEM),A
LD BC,Dss.SetWin3
RST ToDSS
; OUT (#E2),A
; LD (HNDMEM),A
;
LD HL,INIT_DATA
LD D,H
LD E,L
INC DE
LD BC,#FFFE-INIT_DATA
LD (HL),0
LDIR
LD C,Dss.CurDisk
RST ToDSS
ADD A,'A'
LD (WorkDir),A
LD A,':'
LD (WorkDir+1),A
LD C,Dss.CurDir
LD HL,WorkDir+2
RST ToDSS
POP HL
CALL EX_COMMAND_LINE
LD A,(QUITMODE) ;
OR A ; QUIT MODE
JP NZ,QUIT ;
CALL BUILD_TABLE
JP C,QUIT ;IO ERROR
LD A,(QUITMODE) ;
OR A ; SYNTAX ERROR
JP NZ,QUIT ;
LD A,(ITEMCOUNT)
CP MAX_MENU_ITEMS
JR C,NOCUTMENU
LD A,MAX_MENU_ITEMS
LD (ITEMCOUNT),A
NOCUTMENU
ADD A,4 ;MIN MENU HEIGHT
LD (WIN_H),A
LD B,A
;
LD A,(GO_TIME)
INC A
JR Z,NO_TRM
LD A,B
INC A
INC A
LD (WIN_H),A
NO_TRM
;
CALL CHECK_WINDOW_SIZE
CALL WIN_CLS
CALL BUILD_MENU
RETURN_TO_MENU
CALL WIN_SAVE
CALL WIN_SHOW
LD C,1
RST #30
CALL M_OBJECT ;INIT MOUSE COORDS
LD A,(DEFAULT_ITEM)
OR A
CALL NZ,MAKE_DEFAULT_ITEM
INC A
ADD A,#10
; LD A,#11
CALL MOUSE_OVER
NOEXIT
EI
HALT
LD A,(GO_TIME)
INC A
CALL NZ,CHECK_TIMER
CALL K_OBJECT
CALL NZ,MOUSE_OVER
CALL M_OBJECT
CALL NZ,MOUSE_OVER
LD C,3
RST #30
AND 7
CP 1
JP Z,CLICK
CP 2
JP NZ,NOEXIT
QUIT_MENU
LD C,2
RST #30
CALL WIN_BACK
QUIT: LD A,(HNDMEM)
LD C,Dss.FreeMem
RST ToDSS
;
.loop: LD BC,Dss.Exit
XOR A
RST ToDSS
JR .loop
MAKE_DEFAULT_ITEM
LD HL,ITEMCOUNT
CP (HL)
JR C,ACCEPT_DEF_ITEM
LD A,(HL) ;DEF_ITEM = MAX_ITEM
ACCEPT_DEF_ITEM
DEC A
RET
CHECK_TIMER
LD A,8
DEC A
LD (CHECK_TIMER+1),A
RET NZ
LD A,8
LD (CHECK_TIMER+1),A
;
LD DE,(OBSOLUTE_CNT_POS)
CALL LOCATE_
CALL GETTIMEOUT
CALL PRINT99
PRC_CNT LD A,#00
INC A
AND #03
LD (PRC_CNT+1),A
LD E,A
LD D,0
LD HL,PRC_STR
ADD HL,DE
LD A,(HL)
CALL PRINT_A
;
LD C,Dss.SysTime
RST ToDSS
LD A,(GO_TIME)
CP 60 ;GO_TIME > 60?
JR C,YES_MKSUB
SUB 60 ;THEN CORRECT IT
YES_MKSUB
CP B
JR Z,RUN_OK
RET
RUN_OK
JP ENTER_MENU
PRC_STR DB "-\\|/"; -\|/
;GET TIMEOUT
GETTIMEOUT
LD C,Dss.SysTime
RST ToDSS
LD A,(RUN_TIME)
CP B ;RUNTIME > CURTIME
JR Z,NO_TO_CORR ;ELSE
JR C,NO_TO_CORR
LD A,60
ADD A,B
LD B,A
NO_TO_CORR
LD A,(GO_TIME)
SUB B
RET
;50 - RUNTIME
;12 - DELAY
;62 - GOTIME
;
;IF RUNTIME > CURTIME {CURTIME+60}
;
; Initialization variables
INIT: XOR A
LD D,A
LD (QUITMODE),A
LD (ITEMCOUNT),A
LD (AEXIT),A
LD (EXTMENU),A
LD (ANCHOR),A
LD (DOEXIT),A
LD (DEFAULT_ITEM),A
LD (RUN_TIME),A
LD (CMD_MENU),A
DEC A
LD (GO_TIME),A
; !TODO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> App_EXE_Version = 1
; LD A,(IX+0)
; ADD A,3
; LD E,A
; EX DE,HL
; LD D,XH
; LD E,XL
; EX DE,HL
; ADD HL,DE
; LD (WorkDirAddr),HL
; ;
; XOR A
; LD BC,128 ;!HARDCODE <20><><EFBFBD><EFBFBD><EFBFBD> CL
; CPIR
; DEC HL
; LD BC,128 ;!HARDCODE <20><><EFBFBD><EFBFBD><EFBFBD> CL
; LD A,'\' ;
; CPDR
; INC HL
; XOR A
; LD (HL),A
;
RET
;
HNDMEM DB 0
CLICK: CALL M_OBJECT
JP Z,NOEXIT
PRESS: SUB #11 ;!HARDCODE
LD IX,MENU_TABLE
JR Z,CLICK2
LD BC,ITEMSIZE
CLICK1: ADD IX,BC
DEC A
JR NZ,CLICK1
CLICK2: LD L,(IX+2)
LD H,(IX+3)
.cont: ;PUSH IX ; [ ] 04/07/2024 parser multi-command
PUSH HL
; [ ] 04/07/2024 parser multi-command
.parse: ;INC HL
;LD A,(HL)
;AND A
;JR Z,.parse_end
;CP ';'
;JR NZ,.parse
;LD (HL),0
;INC HL
.parse_end: ;LD (IX+2),L
;LD (IX+3),H
;
CALL WIN_BACK ; [ ] 04/07/2024 parser multi-command
LD A,#FF
LD (C_OBJECT),A
LD (GO_TIME),A
;
LD C,2
RST ToDSS.Mouse
;
POP HL
LD BC,Dss.Exec
RST ToDSS ;Launch the program
PUSH AF
; !TODO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> App_EXE_Version = 1
; LD HL,(WorkDirAddr)
;
LD HL,WorkDir
LD C,Dss.ChDir
RST ToDSS
;
POP AF
JR NC,.OK_EXEC
LD A,7
CALL MESSAGE
.OK_EXEC: ; [ ] 04/07/2024 parser multi-command
;POP IX
;LD L,(IX+2)
;LD H,(IX+3)
;LD A,(HL)
;AND A
;JR Z,.end
;DEC HL
;LD (HL),';'
;INC HL
;JR .cont
;
.end: ;CALL WIN_BACK ; [ ] 04/07/2024 parser multi-command
LD A,(DOEXIT)
LD C,A
LD A,(AEXIT)
OR C
JP NZ,QUIT
JP RETURN_TO_MENU
K_OBJECT
LD C,Dss.ScanKey
RST ToDSS
RET Z
CP 13
JR Z,ENTER_MENU
LD HL,#011B
AND A
SBC HL,DE
JR Z,ESCAPE
LD HL,#5800
AND A
SBC HL,DE
JR Z,KEY_UP
LD HL,#5200
AND A
SBC HL,DE
JR Z,KEY_DOWN
XOR A
RET
ESCAPE POP HL
JP QUIT_MENU
ENTER_MENU
LD A,(C_OBJECT)
POP HL
JP PRESS
KEY_DOWN
LD A,(ITEMCOUNT)
ADD A,#11
LD B,A
LD A,(C_OBJECT)
INC A
CP B
RET NZ
;DEC A
LD A,#11
OR A
RET
KEY_UP
LD A,(C_OBJECT)
DEC A
CP #10
RET NZ
;INC A
LD A,(ITEMCOUNT)
ADD A,#10
RET
MOUSE_OVER
LD HL,C_OBJECT
CP (HL)
RET Z ;IT'S CURRENT OBJECT
LD (N_OBJECT),A ;NEW OBJECT
LD A,(C_OBJECT)
CALL UNSEL_EVENT
LD A,(N_OBJECT)
LD (C_OBJECT),A
CALL SEL_EVENT
RET
;SEL_ATTR EQU #30
;SCR_ATTR EQU #1F
SEL_EVENT
CALL GET_OBJECT_PROP
RET Z ;NO OBJECT
PUSH BC
LD D,E
LD E,L
INC E
CALL LOCATE_
POP BC
; DEC C
LD B,C
LD C,#83
LD A,(SEL_ATTR)
LD E,A
RST #08
RET
UNSEL_EVENT
CALL GET_OBJECT_PROP
RET Z ;NO OBJECT
PUSH BC
LD D,E
LD E,L
INC E
CALL LOCATE_
POP BC
LD B,C
LD C,#83
LD A,(SCR_ATTR)
LD E,A
RST #08
;
LD A,(GO_TIME)
INC A
RET Z
LD A,#FF
LD (GO_TIME),A
LD DE,(OBSOLUTE_CNT_POS)
CALL LOCATE_
LD A,"0"
CALL PRINT_A
LD A,"0"
CALL PRINT_A
LD A," "
CALL PRINT_A
;
RET
N_OBJECT DW #FFFF
C_OBJECT DW #FFFF
INCLUDE "screen.asm"
INCLUDE "object.asm"
INCLUDE "parser.asm"
BUILD_MENU
LD BC,(WIN_W)
LD B,C
DEC B
DEC B
DEC C
DEC C
LD (W_SIZE),BC
LD DE,#0000
PUSH DE
CALL WIN_LOCATE
LD A,#C9 ;<3B>
CALL WIN_PUTCHAR
; LD A,#CD ;<3B>
LD BC,(W_SIZE)
TLINE1 PUSH BC
LD A,#CD
CALL WIN_PUTCHAR
POP BC
DJNZ TLINE1
LD A,#BB ;<3B>
CALL WIN_PUTCHAR
POP DE
INC D
PUSH DE
CALL WIN_LOCATE
LD A,#BA
CALL WIN_PUTCHAR
LD HL,MENU_TITLE
LD BC,(W_SIZE)
CALL CPRINT_Z
LD A,#BA
CALL WIN_PUTCHAR
;
POP DE
INC D
PUSH DE
CALL WIN_LOCATE
CALL HLINE
;
POP DE
INC D
PUSH DE
CALL WIN_LOCATE
LD IX,MENU_TABLE
LD B,MAX_MENU_ITEMS
LD C,#11 ;OBJECT ID
BTABLE
LD E,(IX+0)
LD D,(IX+1)
LD A,E
OR D
JR Z,ETABLE
PUSH BC
PUSH DE
LD A,#BA
CALL WIN_PUTCHAR
POP HL
LD BC,(W_SIZE)
CALL CPRINT_Z
LD A,#BA
CALL WIN_PUTCHAR
;
LD DE,ITEMSIZE
ADD IX,DE
POP BC
;
POP DE
CALL MK_OBJ
INC D
PUSH DE
PUSH BC
CALL WIN_LOCATE
; RST ToDSS
POP BC
INC C
DJNZ BTABLE
ETABLE
;
LD A,(GO_TIME)
INC A
JR Z,NO_TIME_MSG
CALL HLINE
POP DE
INC D
PUSH DE
CALL WIN_LOCATE
LD A,#BA
CALL WIN_PUTCHAR
LD HL,TIMEREM
LD BC,(W_SIZE)
CALL RPRINT_Z
LD A,#BA
CALL WIN_PUTCHAR
POP DE
INC D
PUSH DE
CALL WIN_LOCATE
NO_TIME_MSG
;
POP DE
; CALL ELINE
; CALL CRLF
; CALL ELINE
; CALL CRLF
LD A,#C8 ;<3B>
CALL WIN_PUTCHAR
; LD A,#CD ;<3B>
LD BC,(W_SIZE)
TLINE2 PUSH BC
LD A,#CD
CALL WIN_PUTCHAR
POP BC
DJNZ TLINE2
LD A,#BC ;<3B>
CALL WIN_PUTCHAR
RET
X_OFFSET EQU #16
Y_OFFSET EQU #0A
MK_OBJ PUSH IX
PUSH HL
PUSH DE
PUSH BC
LD A,(WIN_X) ;X_OFFSET
ADD A,E
LD L,A
LD A,(WIN_Y) ;Y_OFFSET
ADD A,D
LD E,A
LD A,C
LD BC,(W_SIZE)
LD C,B
LD B,1
; LD A,#11
CALL ADD_OBJECT
POP BC
POP DE
POP HL
POP IX
RET
ELINE LD A,#BA ;<3B>
CALL WIN_PUTCHAR
; LD A,#20 ;" "
LD BC,(W_SIZE)
; LD BC,#2000+Dss.PUTCHAR
TLINE PUSH BC
LD A,#20
CALL WIN_PUTCHAR
POP BC
DJNZ TLINE
LD A,#BA ;<3B>
CALL WIN_PUTCHAR
RET
HLINE LD A,#C7 ;<3B>
CALL WIN_PUTCHAR
; LD A,#C4 ;<3B>
LD BC,(W_SIZE)
; LD BC,#2000+Dss.PUTCHAR
TLINEH PUSH BC
LD A,#C4
CALL WIN_PUTCHAR
POP BC
DJNZ TLINEH
LD A,#B6 ;<3B>
CALL WIN_PUTCHAR
RET
;//VARIABLES
ITEMCOUNT
DB 0
W_SIZE
DB 91
DB 32
;HL - STRING
; B - SIZE
CPRINT_Z
PUSH HL
LD E,B
XOR A
LD BC,79
CPIR
DEC HL
LD (HL),A
LD B,E
POP HL
LD A,79-1
SUB C
LD E,A ; STRING SIZE
SRL A ; / 2
LD C,A
LD A,B
SRL A ; / 2
SUB C
CALL C,A_CORRECT
LD C,A ; LEFT SPACE
EX AF,AF'
LD A,B
SUB E
CALL C,A_CORRECT
SUB C
CALL C,A_CORRECT
LD B,A ; RIGHT SPACE
EX AF,AF'
JR Z,NOSPACE_L
REP1 PUSH BC
LD A," "
CALL WIN_PUTCHAR
POP BC
DEC C
JR NZ,REP1
NOSPACE_L
PUSH BC
CALL WIN_PCHARS
POP HL
INC H
DEC H
RET Z ; NOSPACE_R
REP2 LD A," "
CALL WIN_PUTCHAR
DEC H
JR NZ,REP2
RET
A_CORRECT
XOR A
RET
;HL - STRING
; B - SIZE
LPRINT_Z
PUSH HL
XOR A
LD C,#FF
CPIR
POP HL
LD A,#FF-1
SUB C
LD C,A ; STRING SIZE
LD A,B
SUB C
CALL C,A_CORRECT
LD B,A
PUSH BC
CALL WIN_PCHARS
POP HL
INC H
DEC H
RET Z ; NOSPACE_R
REP3 LD A," "
CALL WIN_PUTCHAR
DEC H
JR NZ,REP3
RET
;HL - STRING
; B - SIZE
RPRINT_Z
PUSH HL
XOR A
LD C,#FF
CPIR
POP HL
LD A,#FF-1
SUB C
LD C,A ; STRING SIZE
LD A,B
SUB C
CALL C,A_CORRECT
LD C,A
JR Z,NOSPACE_L2
REP4 PUSH BC
LD A," "
CALL WIN_PUTCHAR
POP BC
DEC C
JR NZ,REP4
NOSPACE_L2
CALL WIN_PCHARS
RET
EX_COMMAND_LINE
INC HL
NEXTPR LD DE,WORKBUF
LD BC,Dss.EX_Path.GSWITCH
RST ToDSS
PUSH AF
PUSH HL
LD A,(WORKBUF)
OR A
JR Z,EOCL
CP "-"
JR Z,ITCKEY
CP "/"
JR Z,ITCKEY
LD HL,WORKBUF
LD DE,FST_VAR
LD A,(DE)
OR A
JR Z,MOVNAME
LD DE,LST_VAR
LD A,1
LD (ANCHOR),A
MOVNAME LD A,(HL)
CP "#"
JR NZ,MNU_ANCH
INC HL
XOR A
LD (DE),A
INC A
LD (ANCHOR),A ;ANCHOR PRESENT
LD DE,LST_VAR
LD A,(HL)
MNU_ANCH
LDI
OR A
JR NZ,MOVNAME
INC A
LD (EXTMENU),A ;EXT MENU PRESENT
EOCL POP HL
POP AF
JR NC,NEXTPR
RET
ITCKEY LD A,(WORKBUF+1)
CP "a"
JR C,KNU
RES 5,A
KNU
CP "H"
JR Z,HELP
CP "?"
JR Z,HELP
CP "X"
JR Z,SETEXIT
CP "M"
JR Z,MENUDEFINITION
LD HL,WORKBUF
CALL PUTVAR
LD A,1
CALL MESSAGE
LD A,1
LD (QUITMODE),A
JR EOCL
HELP LD A,2
CALL MESSAGE
LD A,1
LD (QUITMODE),A
JR EOCL
SETEXIT
LD A,1
LD (DOEXIT),A
JR EOCL
MENUDEFINITION
POP HL
POP AF
LD DE,FILE_ARRAY
LD BC,0
MDEF LD A,(HL)
INC HL
CP ";"
JR NZ,NOBR
LD A,CR
LD (DE),A
INC DE
INC BC
LD A,LF
NOBR LD (DE),A
INC DE
INC BC
OR A
JR NZ,MDEF
LD (MDEF_SIZE),BC
LD A,1
LD (CMD_MENU),A
RET
MDEF_SIZE
DW 0
MAX_TEXT
DB 0
CHECK_WINDOW_SIZE
XOR A
LD (MAX_TEXT),A
LD IX,MENU_TABLE
LD B,MAX_MENU_ITEMS
CH_L1 LD L,(IX+0)
LD H,(IX+1)
LD A,L
OR H
JR Z,CH_L2
XOR A
LD BC,79
CPIR
DEC HL
LD (HL),A
LD A,79-1
SUB C
LD HL,MAX_TEXT
CP (HL)
JR C,NOINCTEXT
LD (HL),A
NOINCTEXT
;
LD DE,ITEMSIZE
ADD IX,DE
DJNZ CH_L1
CH_L2 LD HL,MENU_TITLE
LD BC,79
XOR A
CPIR
LD A,79-1
SUB C
LD HL,MAX_TEXT
CP (HL)
JR C,CH_L3
LD (HL),A
CH_L3
LD A,(HL)
CP 32 ;MIN WINDOW WIDTH
JR NC,CH_L4
LD A,32
CH_L4 INC A
INC A
LD (WIN_W),A
SRL A ;/2
LD C,A
LD A,40 ;SCREEN CENTER
SUB C
JR NC,CH_L5
LD A,0
CH_L5 LD (WIN_X),A
LD A,(WIN_H)
SRL A
LD B,A
LD A,16 ;SCREEN CENTER
SUB B
JR NC,CH_L6
LD A,0
CH_L6 LD (WIN_Y),A
LD A,(GO_TIME)
INC A
RET Z
LD HL,(WIN_XY)
LD A,(WIN_H)
ADD A,H
DEC A
DEC A
LD H,A
LD A,(WIN_W)
ADD A,L
SUB 4
LD L,A
LD (OBSOLUTE_CNT_POS),HL
RET
OBSOLUTE_CNT_POS
DW 0
MSG0 DB 0
;0
DB "User Menu v1.02, Copyright "
DB "2002 (c) Peters Plus LTD",CR,LF
DB "2023 - 2026 (c) Sprinter Team",CR,LF,CR,LF,0
;1
DB " Error: Unknown switch: %1",CR,LF,0
;2
DB " Usage: MENU.EXE -switch [menufile.mnu] [menuname]",CR,LF,CR,LF
DB " Switches:",CR,LF
DB " -h, -? Help page.",CR,LF
DB " -x Quit from menu when launched program will terminated.",CR,LF
DB " -m <menu> Define menu in the command line.",CR,LF
DB CR,LF
DB " Menu command:",CR,LF
DB " Title= Define Menu title",CR,LF
DB " MenuColor= Set menu colors",CR,LF
DB " BarColor= Set cursor bar colors",CR,LF
DB " AutoExit= Auto quit menu",CR,LF
DB " DefaultItem= Set default menu item",CR,LF
DB " MenuItem= Define menu item",CR,LF
DB CR,LF
DB 0
;3
DB " Error: Can't open '%1' menu file.",CR,LF,0
;4
DB " Error: Menu section [%1] - not found.",CR,LF,0
;5
DB " Error: Invalid time parameter in 'DefaultItem='.",CR,LF,0
;6
DB " Error: Missing parameter in the item definition.",CR,LF,0
;7
DB CR,LF," Error: Launching has been failed.",CR,LF,0
;8
DB " Error: Invalid syntax, parse failure.",CR,LF,0
;9
DB " Error: Not enough memory.",CR,LF,0
;10
TIMEREM DB "Time remaining: 00 ",0
DB 0
DB 0
MSG1
MENU_TITLE DB "User Menu",0
DS 32
MENUFILE
DB "[MENU]",CR,LF
MENUFILE2
DB "title=It's a hidden User Menu :)",CR,LF
DB "item=Flex Navigator, \\fn\\fn.exe",CR,LF
DB "item=Command prompt, \\system.exe /s",CR,LF
DB "item=I hope that it a small program will help you in work at the Sprinter, \\system.exe @echo You found the secret feature :)",CR,LF
DB 0
;// DEFAULT VARIABLES
DEFAULT_FILE
DB "default.mnu",0,0
DEFAULT_MENU
DB "MENU",0,0,0,0,0
EXTMENU DB 0
ANCHOR DB 0
DOEXIT DB 0
QUITMODE
DB 0
CMD_MENU
DB 0
DEFAULT_ITEM
DB 0
SCR_ATTR
DB #1F
SEL_ATTR
DB #30
RUN_TIME
DB 0
GO_TIME DB #FF
TEXT_INDEX
DW TEXT_ARRAY
; !TODO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> App_EXE_Version = 1
;WorkDirAddr: WORD 0
INIT_DATA
FST_VAR EQU $ ;DS 256
LST_VAR EQU $+256 ;DS 256
WORKBUF EQU $+256+256 ;DS 256
WORDBUF EQU $+256+256+256 ;DS 256
MENU_TABLE EQU $+256+256+256+256
;!FIXIT <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ITEM_DEFINE
DW 0 ;ITEM 1 TEXT ADDRESS
DW 0 ;ITEM 1 COMMAND ADDRESS
DB 0,0 ;LEFT AND RIGHT
DB 0,0 ;TOP AND BOTTOM
ITEM_DEFINE_END
ITEMSIZE EQU ITEM_DEFINE_END-ITEM_DEFINE
;
; DW 0 ;ITEM 2 TEXT
; DW 0 ;ITEM 2 COMMAND
; DB 0,0 ;LEFT AND RIGHT
; DB 0,0 ;TOP AND BOTTOM
;
; DW 0 ;END
; DS 256
WorkDir EQU $+256+256+256+256+256
TEXT_ARRAY EQU $+256+256+256+256+256+256
; "Title name",0
; "Item 1",0
; "C:\fn\fn.exe",0
; DS 4096
FILE_ARRAY EQU $+256+256+256+256+256+256+4096
MYWIN EQU #0000-2560*4 ;DS 34*8*2
SCR_BUF EQU #0000-2560*2