mirror of
https://github.com/Tolik-Trek/UserMenu.git
synced 2026-06-15 00:51:35 +03:00
start
This commit is contained in:
commit
e8e569fc23
5
define.txt
Normal file
5
define.txt
Normal file
@ -0,0 +1,5 @@
|
||||
[MENU]
|
||||
title=User Menu
|
||||
item=Flex Navigator, C:\FN\FN.EXE
|
||||
item=Command prompt
|
||||
item=Sub menu, C:\menu.exe submenu.mnu
|
||||
71
dss.inc
Normal file
71
dss.inc
Normal file
@ -0,0 +1,71 @@
|
||||
|
||||
DSS_VERSION EQU #00
|
||||
DSS_CHDISK EQU #01
|
||||
DSS_CURDISK EQU #02
|
||||
DSS_DSKINFO EQU #03
|
||||
DSS_G_ENTRY EQU #04
|
||||
|
||||
DSS_BOOTDSK EQU #09
|
||||
DSS_CREATE EQU #0A
|
||||
DSS_CREAT_N EQU #0B
|
||||
DSS_ERASE EQU #0D
|
||||
DSS_DELETE EQU #0E
|
||||
DSS_MOVE EQU #0F
|
||||
DSS_RENAME EQU #10
|
||||
DSS_OPEN EQU #11
|
||||
DSS_CLOSE EQU #12
|
||||
DSS_READ EQU #13
|
||||
DSS_WRITE EQU #14
|
||||
DSS_MOVE_FP EQU #15
|
||||
DSS_ATTRIB EQU #16
|
||||
DSS_GET_D_T EQU #17
|
||||
DSS_PUT_D_T EQU #18
|
||||
DSS_F_FIRST EQU #19
|
||||
DSS_F_NEXT EQU #1A
|
||||
DSS_MKDIR EQU #1B
|
||||
DSS_RMDIR EQU #1C
|
||||
DSS_CHDIR EQU #1D
|
||||
DSS_CURDIR EQU #1E
|
||||
DSS_SYSTIME EQU #21
|
||||
DSS_SETTIME EQU #22
|
||||
|
||||
DSS_WAITKEY EQU #30
|
||||
DSS_SCANKEY EQU #31
|
||||
DSS_ECHOKEY EQU #32
|
||||
DSS_CTRLKEY EQU #33
|
||||
DSS_EDIT EQU #34
|
||||
DSS_K_CLEAR EQU #35
|
||||
|
||||
DSS_SETWIN EQU #38
|
||||
DSS_SETWIN1 EQU #39
|
||||
DSS_SETWIN2 EQU #3A
|
||||
DSS_SETWIN3 EQU #3B
|
||||
DSS_FREEMEM EQU #3C
|
||||
DSS_GETMEM EQU #3D
|
||||
DSS_RETMEM EQU #3E
|
||||
DSS_SETMEM EQU #3F
|
||||
|
||||
DSS_EXEC EQU #40
|
||||
DSS_EXIT EQU #41
|
||||
DSS_WAIT EQU #42
|
||||
|
||||
DSS_GSWITCH EQU #43
|
||||
DSS_DOSNAME EQU #44
|
||||
|
||||
DSS_SETVMOD EQU #50
|
||||
DSS_GETVMOD EQU #51
|
||||
DSS_LOCATE EQU #52
|
||||
DSS_CURSOR EQU #53
|
||||
DSS_SELPAGE EQU #54
|
||||
DSS_SCROLL EQU #55
|
||||
DSS_CLEAR EQU #56
|
||||
DSS_RDCHAR EQU #57
|
||||
DSS_WRCHAR EQU #58
|
||||
DSS_WINCOPY EQU #59
|
||||
DSS_WINREST EQU #5A
|
||||
DSS_PUTCHAR EQU #5B
|
||||
DSS_PCHARS EQU #5C
|
||||
DSS_RES_PRN EQU #5D
|
||||
DSS_CTRLPRN EQU #5E
|
||||
DSS_PRINT EQU #5F
|
||||
|
||||
61
format.txt
Normal file
61
format.txt
Normal file
@ -0,0 +1,61 @@
|
||||
|
||||
command format:
|
||||
|
||||
MENU.EXE [keys] [menufile] [#section]
|
||||
|
||||
keys:
|
||||
|
||||
-m <menu definition> title=User Menu; item=Flex Navigator, c:\fn\fn.exe; item=Command prompt, c:\system.exe /s
|
||||
-h help page
|
||||
-x autoexit from menu when program are terminated
|
||||
-k keyboard control disable
|
||||
-u mouse control disable
|
||||
-o message output disable
|
||||
|
||||
menufile structure:
|
||||
|
||||
[MENU]
|
||||
# main variables
|
||||
title=<menu title>
|
||||
item=<item name>, <program> <hot key>
|
||||
item=Item name, {
|
||||
cd \somedir\
|
||||
type somefile.txt
|
||||
copy somefile.txt \other\other.txt
|
||||
}
|
||||
item=Exit, { echo see you soon! ; <exit> }
|
||||
autoexit=<0/1>
|
||||
menucolour=<paper>, <ink>
|
||||
barcolour=<paper>, <ink>
|
||||
defaultitem=<number>, <time>
|
||||
|
||||
# other variables
|
||||
startmessage=<message>
|
||||
finishmessage=<message>
|
||||
startdelay=<time>
|
||||
finishdelay=<time>
|
||||
|
||||
# sound variables
|
||||
mousesound=<wavefile>
|
||||
mouseoversound=<wavefile>
|
||||
keysound=<wavefile>
|
||||
upsound=<wavefile>
|
||||
downsound=<wavefile>
|
||||
startsound=<wavefile>
|
||||
entersound=<wavefile>
|
||||
exitsound=<wavefile>
|
||||
|
||||
# wallpaper variables
|
||||
background=<picture>, <style> (center | fill | stretch)
|
||||
backgroundtext=<text>
|
||||
backgroundfont=<fontfile>
|
||||
backgroundfontsize=<fontsize>
|
||||
|
||||
|
||||
build-in script command:
|
||||
|
||||
<exit> - close menu
|
||||
<waitkey> / <pause> - waiting user key-input
|
||||
<delay=time> - script delay
|
||||
<type=text> - console message
|
||||
<message=text> - message menu
|
||||
6
knownbug.txt
Normal file
6
knownbug.txt
Normal file
@ -0,0 +1,6 @@
|
||||
* не выводится сообщение об ошибке в случае неверного написания названия опции.
|
||||
* если описание Item заканчивается на "," в качестве параметра берется вся следующая строка.
|
||||
* функции задания цвета не сообщают о некоректных символах.
|
||||
|
||||
|
||||
- делать проверку при старте Item'а на "<" в первой позиции. (<exit> и т.п.)
|
||||
185
object.asm
Executable file
185
object.asm
Executable file
@ -0,0 +1,185 @@
|
||||
|
||||
G_OBJECT
|
||||
RET
|
||||
|
||||
; INPUT:
|
||||
; A - OBJECT ID
|
||||
|
||||
GET_OBJECT_PROP
|
||||
LD IX,OBJECTS_AREA-OBJECT_SIZE
|
||||
LD BC,OBJECT_SIZE
|
||||
LD E,A
|
||||
GOP1 ADD IX,BC
|
||||
LD A,(IX+0)
|
||||
OR A
|
||||
RET Z
|
||||
CP E
|
||||
JR NZ,GOP1
|
||||
LD L,(IX+2)
|
||||
LD A,(IX+4)
|
||||
SUB L
|
||||
LD C,A
|
||||
LD E,(IX+6)
|
||||
LD A,(IX+8)
|
||||
SUB E
|
||||
LD B,A
|
||||
XOR A
|
||||
INC A
|
||||
RET
|
||||
|
||||
|
||||
; INPUT:
|
||||
; A - OBJECT ID
|
||||
; L - X
|
||||
; E - Y
|
||||
; B - HEIGHT
|
||||
; C - WIDTH
|
||||
|
||||
ADD_OBJECT
|
||||
LD IX,OBJECTS_AREA
|
||||
PUSH BC
|
||||
LD BC,(OBJECTS_AREA_SIZE)
|
||||
ADD IX,BC
|
||||
POP BC
|
||||
|
||||
; LD A,ID
|
||||
|
||||
LD (IX+0),A
|
||||
XOR A
|
||||
LD (IX+1),A
|
||||
LD (IX+3),A
|
||||
LD (IX+5),A
|
||||
LD (IX+7),A
|
||||
LD (IX+9),A
|
||||
|
||||
LD (IX+2),L ;X-MIN
|
||||
LD A,C
|
||||
ADD A,L
|
||||
LD (IX+4),A ;X-MAX
|
||||
|
||||
LD (IX+6),E ;Y-MIN
|
||||
LD A,B
|
||||
ADD A,E
|
||||
LD (IX+8),A ;Y-MAX
|
||||
XOR A
|
||||
LD (IX+OBJECT_SIZE),A
|
||||
|
||||
LD HL,(OBJECTS_AREA_SIZE)
|
||||
LD BC,OBJECT_SIZE
|
||||
ADD HL,BC
|
||||
LD (OBJECTS_AREA_SIZE),HL
|
||||
RET
|
||||
|
||||
REMOVE_OBJECT
|
||||
RET
|
||||
|
||||
P_MX DW 0
|
||||
P_MY DW 0
|
||||
|
||||
M_OBJECT
|
||||
LD C,3
|
||||
RST #30 ;GET MOUSE STATE
|
||||
OR A
|
||||
JP NZ,MFORCE
|
||||
|
||||
LD BC,(P_MX)
|
||||
;16 BIT CMP
|
||||
LD A,C
|
||||
CP L
|
||||
JR NZ,DMC
|
||||
LD A,B
|
||||
CP H
|
||||
JR NZ,DMC
|
||||
;
|
||||
LD BC,(P_MY)
|
||||
LD A,C
|
||||
CP E
|
||||
JR NZ,DMC
|
||||
LD A,B
|
||||
CP D
|
||||
JR NZ,DMC
|
||||
; ZERO FLAG=1
|
||||
DMC
|
||||
LD (P_MX),HL
|
||||
LD (P_MY),DE
|
||||
RET Z
|
||||
MFORCE
|
||||
;CORRECT FOR TEXT MODE
|
||||
SRL H
|
||||
RR L
|
||||
SRL H
|
||||
RR L
|
||||
SRL H
|
||||
RR L
|
||||
|
||||
SRL D
|
||||
RR E
|
||||
SRL D
|
||||
RR E
|
||||
SRL D
|
||||
RR E
|
||||
|
||||
; E - Y, L - X
|
||||
CALL GET_OBJECT_ID
|
||||
RET
|
||||
|
||||
|
||||
;
|
||||
; INPUT:
|
||||
; L - X
|
||||
; E - Y
|
||||
; OUTPUT:
|
||||
; Z = 1, A - ID
|
||||
; Z = 0 - OBJECT NOT FOUND
|
||||
|
||||
GET_OBJECT_ID
|
||||
LD IX,OBJECTS_AREA
|
||||
OBJECT_LOOP
|
||||
LD A,(IX+0)
|
||||
OR A ;INC A
|
||||
RET Z ;OBJECT NOT FOUND
|
||||
LD A,(IX+2) ;X-MIN
|
||||
SUB L
|
||||
JR Z,OBJ_X_OK
|
||||
JR NC,OBJ_NEXT
|
||||
LD A,(IX+4) ;X-MAX
|
||||
SUB L
|
||||
JR C,OBJ_NEXT
|
||||
OBJ_X_OK
|
||||
LD A,(IX+6) ;Y-MIN
|
||||
SUB E
|
||||
JR Z,OBJ_Y_OK
|
||||
JR NC,OBJ_NEXT
|
||||
LD A,(IX+8) ;Y-MAX
|
||||
SUB E
|
||||
JR Z,OBJ_NEXT
|
||||
JR C,OBJ_NEXT
|
||||
OBJ_Y_OK
|
||||
LD A,(IX+0) ;ID
|
||||
AND A
|
||||
RET
|
||||
|
||||
OBJ_NEXT
|
||||
LD BC,OBJECT_SIZE
|
||||
ADD IX,BC
|
||||
JR OBJECT_LOOP
|
||||
|
||||
OBJECTS_AREA_SIZE
|
||||
DW 0
|
||||
|
||||
OBJECTS_AREA
|
||||
DB 0 ;+00 OBJECT HANDLE
|
||||
DB 0 ;+01 RESERVED
|
||||
|
||||
DB 0 ;+02 MIN X
|
||||
DB 0 ;+03 RESERVED
|
||||
DB 0 ;+04 MAX X
|
||||
DB 0 ;+05 RESERVED
|
||||
|
||||
DB 0 ;+06 MIN Y
|
||||
DB 0 ;+07 RESERVED
|
||||
DB 0 ;+08 MAX Y
|
||||
DB 0 ;+09 RESERVED
|
||||
OBJECT_SIZE EQU $-OBJECTS_AREA
|
||||
|
||||
DS 320
|
||||
549
parser.asm
Executable file
549
parser.asm
Executable file
@ -0,0 +1,549 @@
|
||||
BUILD_TABLE
|
||||
LD A,(CMD_MENU)
|
||||
OR A
|
||||
JR Z,BT0
|
||||
LD HL,FILE_ARRAY
|
||||
LD IX,MENU_TABLE
|
||||
CALL PARSER
|
||||
AND A
|
||||
RET
|
||||
|
||||
BT0 CALL READ_MENU
|
||||
RET C
|
||||
LD HL,(MENU_ADDRESS)
|
||||
LD IX,MENU_TABLE
|
||||
CALL PARSER
|
||||
AND A
|
||||
RET
|
||||
|
||||
MNU_FHND DB #FF
|
||||
|
||||
OPEN_MENU_FILE
|
||||
XOR A ;;;;;;;;
|
||||
LD C,DSS_OPEN
|
||||
RST #10
|
||||
RET C
|
||||
LD (MNU_FHND),A
|
||||
RET
|
||||
|
||||
CLOSE_MENU_FILE
|
||||
LD A,(MNU_FHND)
|
||||
LD C,DSS_CLOSE
|
||||
RST #10
|
||||
RET
|
||||
|
||||
|
||||
MENU_ADDRESS
|
||||
DW 0
|
||||
|
||||
READ_MENU
|
||||
; LD HL,DEFAULT_FILE
|
||||
; LD A,(EXTMENU)
|
||||
; OR A
|
||||
; JR Z,DEFMNU
|
||||
; LD HL,FST_VAR
|
||||
LD HL,FST_VAR
|
||||
LD A,(EXTMENU)
|
||||
OR A
|
||||
JR NZ,NOT_DEF_MNU
|
||||
|
||||
LD HL,DEFAULT_FILE
|
||||
NOT_DEF_MNU:
|
||||
PUSH HL
|
||||
CALL OPEN_MENU_FILE
|
||||
POP HL
|
||||
JR NC,RM_STEP2
|
||||
CALL PUTVAR
|
||||
LD A,3
|
||||
CALL MESSAGE
|
||||
SCF
|
||||
RET
|
||||
|
||||
RM_STEP2
|
||||
LD HL,FILE_ARRAY
|
||||
LD DE,16384
|
||||
LD C,DSS_READ
|
||||
LD A,(MNU_FHND)
|
||||
RST #10
|
||||
JR C,RF_ERR
|
||||
LD B,D
|
||||
LD C,E
|
||||
LD HL,FILE_ARRAY
|
||||
FIND_AGAIN
|
||||
LD A,"["
|
||||
CPIR
|
||||
JR NZ,NOMENU
|
||||
LD A,(ANCHOR)
|
||||
OR A
|
||||
LD DE,DEFAULT_MENU
|
||||
JR Z,CHECK_MNU_NAME
|
||||
LD DE,LST_VAR
|
||||
CHECK_MNU_NAME
|
||||
LD A,(DE)
|
||||
OR A
|
||||
JR Z,END_MENU_TAG
|
||||
CP (HL)
|
||||
JR NZ,FIND_AGAIN
|
||||
INC HL
|
||||
INC DE
|
||||
DEC BC
|
||||
LD A,B
|
||||
OR C
|
||||
JR NZ,CHECK_MNU_NAME
|
||||
JR NOMENU
|
||||
END_MENU_TAG
|
||||
LD A,"]"
|
||||
CP (HL)
|
||||
JR NZ,FIND_AGAIN
|
||||
INC HL
|
||||
LD (MENU_ADDRESS),HL
|
||||
LD A,"["
|
||||
CPIR
|
||||
; JR NZ,NOM
|
||||
DEC HL
|
||||
XOR A
|
||||
LD (HL),A
|
||||
NOM
|
||||
;;;
|
||||
CALL CLOSE_MENU_FILE
|
||||
AND A
|
||||
RET
|
||||
|
||||
NOMENU
|
||||
LD A,(ANCHOR)
|
||||
OR A
|
||||
LD HL,DEFAULT_MENU
|
||||
JR Z,NM_2
|
||||
LD HL,LST_VAR
|
||||
NM_2 CALL PUTVAR
|
||||
LD A,4
|
||||
CALL MESSAGE
|
||||
RF_ERR
|
||||
CALL CLOSE_MENU_FILE
|
||||
SCF
|
||||
RET
|
||||
|
||||
;[PARSER]
|
||||
; HL - MENU CONTENT
|
||||
; IX - MENU STRUCT
|
||||
|
||||
PARSER LD A,(HL)
|
||||
INC HL
|
||||
CP " "
|
||||
JR Z,PARSER
|
||||
CP 9
|
||||
JR Z,PARSER
|
||||
CP 13
|
||||
JR Z,PARSER
|
||||
CP 10
|
||||
JR Z,PARSER
|
||||
OR A
|
||||
RET Z
|
||||
DEC HL
|
||||
LD BC,0
|
||||
LD DE,WORKBUF
|
||||
PARSER1 LD A,(HL)
|
||||
LD (DE),A
|
||||
INC HL
|
||||
INC DE
|
||||
INC B
|
||||
JR Z,PARSE_FAILURE
|
||||
CP "="
|
||||
JR Z,EQUAL
|
||||
CP ","
|
||||
JR Z,FIRST_VAR
|
||||
CP 13
|
||||
JR Z,LAST_VAR
|
||||
CP 10
|
||||
JR Z,LAST_VAR
|
||||
OR A
|
||||
JR NZ,PARSER1
|
||||
DEC HL
|
||||
JR LAST_VAR
|
||||
|
||||
PARSE_FAILURE
|
||||
LD A,8
|
||||
CALL MESSAGE
|
||||
LD A,1
|
||||
LD (QUITMODE),A
|
||||
SCF
|
||||
RET
|
||||
|
||||
LAST_VAR
|
||||
LD A,B
|
||||
DEC A
|
||||
JR Z,PARSER
|
||||
EXX
|
||||
LD DE,LST_VAR
|
||||
LD HL,WORKBUF
|
||||
CALL COPY_STRING
|
||||
EXX
|
||||
PUSH HL
|
||||
CALL PARSE_WORD
|
||||
;
|
||||
XOR A
|
||||
LD (FST_VAR),A
|
||||
LD (LST_VAR),A
|
||||
LD (WORDBUF),A
|
||||
;
|
||||
POP HL
|
||||
JP PARSER
|
||||
|
||||
FIRST_VAR
|
||||
LD A,(FST_VAR)
|
||||
OR A
|
||||
JR NZ,PARSER1
|
||||
LD A,B
|
||||
DEC A
|
||||
JR Z,PARSER
|
||||
EXX
|
||||
LD DE,FST_VAR
|
||||
LD HL,WORKBUF
|
||||
CALL COPY_STRING
|
||||
EXX
|
||||
JP PARSER
|
||||
|
||||
EQUAL LD A,(WORDBUF)
|
||||
OR A
|
||||
JR NZ,PARSER1
|
||||
LD A,B
|
||||
EXX
|
||||
LD DE,WORDBUF
|
||||
LD HL,WORKBUF
|
||||
CALL COPY_STRING
|
||||
EXX
|
||||
JP PARSER
|
||||
|
||||
;HL - SOURCE
|
||||
;DE - DESTINATION
|
||||
; A - SIZE
|
||||
|
||||
COPY_STRING
|
||||
LD B,0
|
||||
LD C,A
|
||||
LDIR
|
||||
LD A,B
|
||||
LD (DE),A
|
||||
RET
|
||||
|
||||
|
||||
;COPY_IT
|
||||
; LD HL,WORKBUF
|
||||
; LD B,0
|
||||
; LD C,A
|
||||
; LDIR
|
||||
; LD A,B
|
||||
; LD (DE),A
|
||||
; EXX
|
||||
; JR PARSER
|
||||
|
||||
PARSE_WORD
|
||||
LD HL,DICT_REF-3
|
||||
PUSH HL
|
||||
PARSE_AGAIN
|
||||
POP HL
|
||||
INC HL
|
||||
INC HL
|
||||
INC HL
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
PUSH HL
|
||||
LD H,(HL)
|
||||
LD L,A
|
||||
LD B,(HL)
|
||||
INC HL
|
||||
DJNZ DO_COMPARE
|
||||
POP HL
|
||||
SCF
|
||||
RET
|
||||
DO_COMPARE
|
||||
LD DE,WORDBUF
|
||||
COMPARE
|
||||
LD A,(DE)
|
||||
CP "a"
|
||||
JR C,NOUP
|
||||
RES 5,A
|
||||
NOUP CP (HL)
|
||||
JR NZ,PARSE_AGAIN
|
||||
INC DE
|
||||
INC HL
|
||||
DJNZ COMPARE
|
||||
POP HL
|
||||
INC HL
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
LD H,(HL)
|
||||
LD L,A
|
||||
JP (HL)
|
||||
|
||||
DICT_REF
|
||||
DW WORD_1,PROG_1,WORD_2,PROG_2,WORD_3,PROG_3,WORD_4,PROG_4
|
||||
DW WORD_5,PROG_5,WORD_6,PROG_6,WORD_7,PROG_7,WORD_8,PROG_1
|
||||
DW WORD_N
|
||||
|
||||
DICT_WORDS
|
||||
WORD_1 DB 6,"ITEM=",0
|
||||
WORD_2 DB 7,"TITLE=",0
|
||||
WORD_3 DB 9,"OPTIONS=",0
|
||||
WORD_4 DB 10,"AUTOEXIT=",0
|
||||
WORD_5 DB 13,"DEFAULTITEM=",0
|
||||
WORD_6 DB 11,"MENUCOLOR=",0
|
||||
WORD_7 DB 10,"BARCOLOR=",0
|
||||
WORD_8 DB 10,"MENUITEM=",0
|
||||
|
||||
WORD_N DB 1 ; END
|
||||
|
||||
|
||||
;GET TITLE
|
||||
PROG_2
|
||||
LD HL,LST_VAR
|
||||
LD DE,MENU_TITLE
|
||||
PROG2L1 LD A,(HL)
|
||||
LDI
|
||||
OR A
|
||||
JR NZ,PROG2L1
|
||||
RET
|
||||
|
||||
;GET ITEM
|
||||
PROG_1 LD HL,FST_VAR
|
||||
LD A,(HL)
|
||||
OR A
|
||||
JR NZ,PROG1L0
|
||||
LD HL,LST_VAR
|
||||
PROG1L0 LD DE,(TEXT_INDEX)
|
||||
PUSH DE
|
||||
PROG1L1 LD A,(HL)
|
||||
LDI
|
||||
OR A
|
||||
JR NZ,PROG1L1
|
||||
LD HL,LST_VAR
|
||||
PUSH DE
|
||||
PROG1L2 LD A,(HL)
|
||||
LDI
|
||||
OR A
|
||||
JR NZ,PROG1L2
|
||||
LD (TEXT_INDEX),DE
|
||||
|
||||
POP DE
|
||||
LD (IX+2),E ;PUT ITEM COMMAND ADDRESS
|
||||
LD (IX+3),D
|
||||
POP DE
|
||||
LD (IX+0),E ;PUT ITEMNAME ADDRESS
|
||||
LD (IX+1),D
|
||||
|
||||
LD DE,ITEMSIZE
|
||||
ADD IX,DE
|
||||
XOR A
|
||||
LD (IX+0),A ;PUT END CODE
|
||||
LD (IX+1),A
|
||||
LD HL,ITEMCOUNT
|
||||
INC (HL)
|
||||
|
||||
LD A,(FST_VAR)
|
||||
OR A
|
||||
RET NZ
|
||||
LD A,6
|
||||
CALL MESSAGE
|
||||
RET
|
||||
|
||||
;GET OPTIONS
|
||||
PROG_3 LD HL,AE_STR
|
||||
CALL FIND_VAR
|
||||
RET
|
||||
|
||||
FIND_VAR
|
||||
LD DE,LST_VAR
|
||||
CALL FIND_STR
|
||||
RET
|
||||
|
||||
FIND_STR
|
||||
LD (P3_L1+1),HL
|
||||
P3_L1 LD HL,#0000
|
||||
LD B,(HL)
|
||||
P3_L2 INC HL
|
||||
P3_L3 LD A,(DE)
|
||||
OR A
|
||||
RET Z
|
||||
INC DE
|
||||
CP "a"
|
||||
JR C,P3NOUP
|
||||
RES 5,A
|
||||
P3NOUP CP (HL)
|
||||
JR NZ,P3_L3
|
||||
P3_L4 INC HL
|
||||
LD A,(DE)
|
||||
OR A
|
||||
RET Z
|
||||
INC DE
|
||||
CP "a"
|
||||
JR C,P3NOUP2
|
||||
RES 5,A
|
||||
P3NOUP2 CP (HL)
|
||||
JR NZ,P3_L1
|
||||
DJNZ P3_L4
|
||||
|
||||
LD A,(DE)
|
||||
CP "!"
|
||||
JR NC,P3_L1
|
||||
INC HL
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
LD H,(HL)
|
||||
LD L,A
|
||||
XOR A
|
||||
DEC A
|
||||
RET
|
||||
|
||||
;OPTIONS
|
||||
AE_STR DW AEXIT
|
||||
DB 7,"AUTOEXIT"
|
||||
|
||||
AEXIT DB #00
|
||||
|
||||
;AUTOEXIT
|
||||
PROG_4 LD A,(LST_VAR)
|
||||
CP "1"
|
||||
LD A,1
|
||||
JR Z,P4_YES
|
||||
DEC A
|
||||
P4_YES LD (AEXIT),A
|
||||
RET
|
||||
|
||||
;GET DEFAULT ITEM
|
||||
PROG_5 LD HL,FST_VAR
|
||||
LD A,(HL)
|
||||
OR A
|
||||
JR NZ,P5_AUTORUN
|
||||
LD HL,LST_VAR
|
||||
JR P5_L0
|
||||
P5_AUTORUN
|
||||
CALL P5_L0
|
||||
LD HL,LST_VAR
|
||||
LD C,0
|
||||
P5_LOOP LD A,(HL)
|
||||
INC HL
|
||||
OR A
|
||||
JR Z,P5_END
|
||||
CALL STR2NUM
|
||||
JR P5_LOOP
|
||||
P5_END LD A,(RUN_TIME)
|
||||
ADD A,C
|
||||
LD (GO_TIME),A
|
||||
LD A,60
|
||||
CP C
|
||||
RET NC
|
||||
LD A,1
|
||||
LD (QUITMODE),A
|
||||
LD A,5
|
||||
CALL MESSAGE
|
||||
RET
|
||||
|
||||
; DEFAULT ITEM
|
||||
P5_L0 XOR A
|
||||
LD C,A ;VALUE = 0
|
||||
P5_L1 LD A,(HL)
|
||||
INC HL
|
||||
OR A
|
||||
JR Z,P5_L2
|
||||
CP "0"
|
||||
JR C,P5_L1
|
||||
CP "9"+1
|
||||
JR NC,P5_L1
|
||||
SUB "0"
|
||||
LD B,A ;SAVE DIGIT
|
||||
LD A,C
|
||||
ADD A,A
|
||||
ADD A,A
|
||||
ADD A,C
|
||||
ADD A,A ;VALUE x 10
|
||||
ADD A,B ;VALUE + DIGIT
|
||||
LD C,A
|
||||
JR P5_L1
|
||||
P5_L2 LD A,C
|
||||
LD (DEFAULT_ITEM),A
|
||||
RET
|
||||
|
||||
; GET MENUCOLOR
|
||||
PROG_6 LD A,(SCR_ATTR)
|
||||
CALL PCHANGE_COLOR
|
||||
LD (SCR_ATTR),A
|
||||
RET
|
||||
|
||||
PCHANGE_COLOR
|
||||
LD B,A
|
||||
LD HL,FST_VAR
|
||||
LD A,(HL)
|
||||
OR A
|
||||
JR Z,P6_NO_INK
|
||||
PUSH BC
|
||||
CALL MAKE_COLOR
|
||||
POP BC
|
||||
CP 16
|
||||
JR NC,P6_NO_INK
|
||||
LD C,A
|
||||
LD A,B
|
||||
AND #F0
|
||||
OR C
|
||||
LD B,A
|
||||
P6_NO_INK
|
||||
LD HL,LST_VAR
|
||||
LD A,(HL)
|
||||
OR A
|
||||
JR Z,P6_NO_PAPER
|
||||
PUSH BC
|
||||
CALL MAKE_COLOR
|
||||
POP BC
|
||||
CP 16
|
||||
JR NC,P6_NO_PAPER
|
||||
AND #0F
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
LD C,A
|
||||
LD A,B
|
||||
AND #0F
|
||||
OR C
|
||||
LD B,A
|
||||
P6_NO_PAPER
|
||||
LD A,B
|
||||
RET
|
||||
|
||||
MAKE_COLOR
|
||||
LD C,0
|
||||
P6_L1 LD A,(HL)
|
||||
INC HL
|
||||
OR A
|
||||
JR Z,P6_END
|
||||
CALL STR2NUM
|
||||
JR P6_L1
|
||||
P6_END LD A,C
|
||||
RET
|
||||
|
||||
; C - VALUE "0..255"
|
||||
; A - DIGIT "0".."9"
|
||||
|
||||
STR2NUM CP "0"
|
||||
RET C
|
||||
CP "9"+1
|
||||
CCF
|
||||
RET C
|
||||
SUB "0"
|
||||
LD B,A ;SAVE DIGIT
|
||||
LD A,C
|
||||
ADD A,A
|
||||
ADD A,A
|
||||
ADD A,C
|
||||
ADD A,A ;VALUE x 10
|
||||
ADD A,B ;VALUE + DIGIT
|
||||
LD C,A
|
||||
AND A
|
||||
RET
|
||||
|
||||
; GET BARCOLOR
|
||||
PROG_7 LD A,(SEL_ATTR)
|
||||
CALL PCHANGE_COLOR
|
||||
LD (SEL_ATTR),A
|
||||
RET
|
||||
|
||||
;[/PARSER]
|
||||
227
readme.eng
Normal file
227
readme.eng
Normal file
@ -0,0 +1,227 @@
|
||||
|
||||
U S E R M E N U version 1.00
|
||||
-----------------------------------------
|
||||
|
||||
MENU is a standard Estex program which, based on configuration files, displays
|
||||
a menu to the user and invokes the corresponding action. An action may be to
|
||||
invoke an Estex program or to display another menu.
|
||||
You can invoke the user menu by just typing 'menu' at the command prompt. And
|
||||
you should see a window that looks similar to the one below.
|
||||
|
||||
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
||||
º User Menu º
|
||||
ÇÄÄÄÄÄÄÄÄÄÄÄÄĶ
|
||||
º±±±Item±1±±±±º
|
||||
º Item 2 º
|
||||
º Item 3 º
|
||||
ÈÍÍÍÍÍÍÍÍÍÍÍÍͼ
|
||||
|
||||
Menus may be either static or dynamic, depending on the needs of the
|
||||
application.
|
||||
Static menus are stored in the files with a *.mnu extenstion (see below for
|
||||
the file format). When you start menu, program has read required *.mnu file and
|
||||
displays it. If you start menu.exe without any parameters then program will
|
||||
search file default.mnu in the current directory.
|
||||
Dynamic menus are generated by a program which get menu structure from switch
|
||||
"-m". The format is the same as for a static menu except ";" used as delimiter
|
||||
for each line of menu structure. (example: "menu.exe -m title=My menu;menuitem=
|
||||
Item1, prog1.exe;menuitem=Item2, prog2.exe".)
|
||||
|
||||
USAGE
|
||||
=======
|
||||
|
||||
MENU.EXE [-switches] [menufile.mnu] [menusection]
|
||||
|
||||
|
||||
Format of User Menu file
|
||||
==========================
|
||||
|
||||
A single MENUNAME.MNU file can define several different menu definitions. To
|
||||
define user menu, you use the following special MENU commands:
|
||||
|
||||
[MENU]
|
||||
Title=Menu Title
|
||||
MenuColor=1
|
||||
BarColor=3
|
||||
AutoExit=0
|
||||
DefaultItem=1
|
||||
MenuItem=Text, c:\dir\program.exe -key
|
||||
|
||||
To define multiple configurations, follow these general steps:
|
||||
|
||||
1 Define a startup menu in the DEFAULT.MNU file by using a [MENU] header
|
||||
followed by one or more <MENUITEM> commands. The <TITLE>, <DEFAULTITEM>,
|
||||
<MENUCOLOR>, <BARCOLOR> and <AUTOEXIT> commands can be used to define special
|
||||
characteristics of the startup menu.
|
||||
|
||||
2 Create a menu definition block in the DEFAULT.MNU file for each menu you
|
||||
want. A definition block begins with a block header - a name surrounded by
|
||||
square brackets.
|
||||
|
||||
|
||||
|
||||
TITLE
|
||||
=======
|
||||
|
||||
Defines a title of the user menu.
|
||||
|
||||
Syntax
|
||||
|
||||
TITLE=title_text
|
||||
|
||||
Parameter
|
||||
|
||||
title_text
|
||||
Specifies the title you want USERMENU to display for this menu. The menu
|
||||
title can be up to 78 characters long and can contain any characters you
|
||||
want. If you don't specify a title value, USERMENU will display 'User Menu'
|
||||
as default.
|
||||
|
||||
-*-
|
||||
|
||||
|
||||
MENUCOLOR
|
||||
===========
|
||||
|
||||
Sets the text and background colors for the user menu.
|
||||
|
||||
Syntax
|
||||
|
||||
MENUCOLOR=[t,]m
|
||||
|
||||
Parameters
|
||||
|
||||
t
|
||||
Specifies the color of the menu text. You can specify a value from 0 to 15;
|
||||
For a list of values and colors, see "Color Values" later in this topic.
|
||||
The 't' value is optional; if you do not specify a value, USERMENU displays
|
||||
a white text color on the specified background color.
|
||||
|
||||
m
|
||||
Specifies the color of the menu background. You can specify a value from 0
|
||||
to 15; For a list of values and colors, see "Color Values" later in this
|
||||
topic.
|
||||
|
||||
Be sure to specify different values for t and m, or the text will not be
|
||||
readable.
|
||||
|
||||
|
||||
BARCOLOR
|
||||
===========
|
||||
|
||||
Sets the text and background colors for the cursor bar.
|
||||
|
||||
Syntax
|
||||
|
||||
BARCOLOR=[t,]m
|
||||
|
||||
Parameters
|
||||
|
||||
t
|
||||
Specifies the color of the bar text. You can specify a value from 0 to 15;
|
||||
For a list of values and colors, see "Color Values" later in this topic.
|
||||
The 't' value is optional; if you do not specify a value, USERMENU displays
|
||||
a black text color on the specified background color.
|
||||
|
||||
m
|
||||
Specifies the color of the bar background. You can specify a value from 0
|
||||
to 15; For a list of values and colors, see "Color Values" later in this
|
||||
topic.
|
||||
|
||||
Be sure to specify different values for t and m, or the text will not be
|
||||
readable.
|
||||
|
||||
Color Values
|
||||
--------------
|
||||
|
||||
Valid color values are from 0 to 15, as follows:
|
||||
|
||||
0 Black 8 Gray
|
||||
1 Blue 9 Bright blue
|
||||
2 Green 10 Bright green
|
||||
3 Cyan 11 Bright cyan
|
||||
4 Red 12 Bright red
|
||||
5 Magenta 13 Bright magenta
|
||||
6 Brown 14 Yellow
|
||||
7 White 15 Bright white
|
||||
|
||||
Note: For background, colors 8 through 15 blink.
|
||||
|
||||
-*-
|
||||
|
||||
|
||||
AUTOEXIT
|
||||
==========
|
||||
|
||||
Specifies method of the command launcher.
|
||||
|
||||
Syntax
|
||||
|
||||
AUTOEXIT=[0|1]
|
||||
|
||||
Parameters
|
||||
|
||||
0
|
||||
If set to 0, then USERMENU displays menu again, when command are terminated.
|
||||
|
||||
1
|
||||
If set to 1, then USERMENU don not displays menu again, when command are
|
||||
terminated.
|
||||
|
||||
-*-
|
||||
|
||||
|
||||
MENUDEFAULT
|
||||
=============
|
||||
|
||||
Specifies the default menu item on the user menu and sets a timeout value if
|
||||
desired. If you do not use this command, USERMENU sets the default to item 1.
|
||||
|
||||
Syntax
|
||||
|
||||
MENUDEFAULT=item[,timeout]
|
||||
|
||||
Parameters
|
||||
|
||||
item
|
||||
Specifies the default menu item by its number. The item must be defined
|
||||
elsewhere in the *.MNU file. When USERMENU displays the startup menu, the
|
||||
default menu item is highlighted.
|
||||
|
||||
timeout
|
||||
Determines how many seconds USERMENU waits before starting the program with
|
||||
the default item. If you don't specify a timeout value, USERMENU does not
|
||||
continue until the ENTER key is pressed or mouse is clicked. You can specify
|
||||
a timeout value from 0 to 60 seconds.
|
||||
|
||||
-*-
|
||||
|
||||
|
||||
MENUITEM
|
||||
==========
|
||||
|
||||
Defines an item on the startup menu. You can have up to twenty four menu items
|
||||
per menu.
|
||||
|
||||
Syntax
|
||||
|
||||
MENUITEM=menu_text, command
|
||||
|
||||
Parameters
|
||||
|
||||
menu_text
|
||||
Specifies the text you want USERMENU to display for this menu item. The menu
|
||||
text can be up to 78 characters long and can contain any characters you
|
||||
want.
|
||||
|
||||
command
|
||||
Specifies the name of the associated program or command. If the menu item is
|
||||
selected from the startup menu, USERMENU carries out the command.
|
||||
|
||||
-*-
|
||||
|
||||
Please contact us if you have any problems or have a suggestion!
|
||||
|
||||
PETERS PLUS LTD
|
||||
http://www.petersplus.com
|
||||
e-mail: sprinter@petersplus.ru
|
||||
397
screen.asm
Executable file
397
screen.asm
Executable file
@ -0,0 +1,397 @@
|
||||
;DEBUG
|
||||
;////////
|
||||
|
||||
FVAR DB "1-ST VAR: ",0
|
||||
SVAR DB "2-ND VAR: ",0
|
||||
|
||||
|
||||
|
||||
DEBUG_PRINTZ
|
||||
LD (HL_D_POINT+1),HL
|
||||
CALL PUSHALL
|
||||
|
||||
HL_D_POINT
|
||||
LD HL,#0000
|
||||
LD C,DSS_PCHARS
|
||||
RST #10
|
||||
CALL CRLF
|
||||
|
||||
CALL POPALL
|
||||
RET
|
||||
|
||||
|
||||
PUSHALL
|
||||
EX (SP),HL ;PUSH HL & GET ADDRESS
|
||||
PUSH DE
|
||||
PUSH BC
|
||||
PUSH AF
|
||||
EXX
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
PUSH BC
|
||||
EXX
|
||||
EX AF,AF'
|
||||
PUSH AF
|
||||
EX AF,AF'
|
||||
PUSH IX
|
||||
PUSH IY
|
||||
JP (HL) ;JUMP TO ADDRESS (RET)
|
||||
|
||||
POPALL
|
||||
POP HL ;GET ADDRESS
|
||||
|
||||
POP IY
|
||||
POP IX
|
||||
EX AF,AF'
|
||||
POP AF
|
||||
EX AF,AF'
|
||||
EXX
|
||||
POP BC
|
||||
POP DE
|
||||
POP HL
|
||||
EXX
|
||||
POP AF
|
||||
POP BC
|
||||
POP DE
|
||||
EX (SP),HL ;PUT ADDRESS
|
||||
RET
|
||||
;////////
|
||||
;DEBUG
|
||||
|
||||
|
||||
|
||||
|
||||
;SHOW WINDOW ARRAY
|
||||
|
||||
WIN_SHOW
|
||||
LD DE,(WIN_XY)
|
||||
LD A,(WIN_H)
|
||||
LD H,A
|
||||
LD A,(WIN_W)
|
||||
LD L,A
|
||||
IN A,(#E2)
|
||||
LD B,A
|
||||
LD C,DSS_WINREST
|
||||
LD IX,MYWIN
|
||||
DI
|
||||
RST #10
|
||||
EI
|
||||
RET
|
||||
|
||||
|
||||
SAVE_POSITION
|
||||
DW 0
|
||||
|
||||
WIN_SAVE
|
||||
LD C,DSS_CURSOR
|
||||
RST #10
|
||||
LD (SAVE_POSITION),DE
|
||||
; RET
|
||||
;
|
||||
LD DE,(WIN_XY)
|
||||
LD A,(WIN_H)
|
||||
LD H,A
|
||||
LD A,(WIN_W)
|
||||
LD L,A
|
||||
IN A,(#E2)
|
||||
LD B,A
|
||||
LD C,DSS_WINCOPY
|
||||
LD IX,SCR_BUF
|
||||
DI
|
||||
RST #10
|
||||
EI
|
||||
RET
|
||||
|
||||
WIN_BACK
|
||||
LD DE,(WIN_XY)
|
||||
LD A,(WIN_H)
|
||||
LD H,A
|
||||
LD A,(WIN_W)
|
||||
LD L,A
|
||||
IN A,(#E2)
|
||||
LD B,A
|
||||
LD C,DSS_WINREST
|
||||
LD IX,SCR_BUF
|
||||
DI
|
||||
RST #10
|
||||
EI
|
||||
|
||||
LD DE,(SAVE_POSITION)
|
||||
LD C,DSS_LOCATE
|
||||
RST #10
|
||||
RET
|
||||
|
||||
WIN_CLS
|
||||
LD HL,0
|
||||
LD BC,(WIN_W)
|
||||
; INC BC
|
||||
; INC BC
|
||||
LD A,(WIN_H)
|
||||
OR A
|
||||
RET Z
|
||||
MULHGT ADD HL,BC
|
||||
DEC A
|
||||
JR NZ,MULHGT
|
||||
ADD HL,HL
|
||||
DEC HL
|
||||
DEC HL
|
||||
PUSH HL
|
||||
|
||||
LD HL,MYWIN
|
||||
LD D,H
|
||||
LD E,L
|
||||
LD A," "
|
||||
LD (HL),A
|
||||
INC HL
|
||||
LD A,(SCR_ATTR)
|
||||
LD (HL),A
|
||||
INC HL
|
||||
EX DE,HL
|
||||
POP BC
|
||||
LDIR
|
||||
RET
|
||||
|
||||
WIN_XY
|
||||
WIN_X DB #16
|
||||
WIN_Y DB 10
|
||||
WIN_H DW 7
|
||||
WIN_W DW 34
|
||||
|
||||
WIN_ADDR
|
||||
DW MYWIN
|
||||
WIN_CUR_XY
|
||||
DW 0
|
||||
|
||||
WIN_LOCATE
|
||||
LD (WIN_CUR_XY),DE
|
||||
LD HL,0
|
||||
INC D
|
||||
DEC D
|
||||
JR Z,TOP_LN
|
||||
LD BC,(WIN_W)
|
||||
SLA C
|
||||
ADDYC1 ADD HL,BC
|
||||
DEC D
|
||||
JR NZ,ADDYC1
|
||||
TOP_LN SLA E
|
||||
ADD HL,DE
|
||||
LD DE,MYWIN
|
||||
ADD HL,DE
|
||||
LD (WIN_ADDR),HL
|
||||
RET
|
||||
|
||||
WIN_PCHARS
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
OR A
|
||||
RET Z
|
||||
CP 13
|
||||
JR Z,CR_L
|
||||
CP 10
|
||||
JR Z,LF_L
|
||||
CALL WIN_PUTCHAR
|
||||
JR WIN_PCHARS
|
||||
|
||||
CR_L LD DE,(WIN_CUR_XY)
|
||||
LD D,0
|
||||
PUSH HL
|
||||
CALL WIN_LOCATE
|
||||
POP HL
|
||||
JR WIN_PCHARS
|
||||
|
||||
LF_L LD DE,(WIN_CUR_XY)
|
||||
INC E
|
||||
PUSH HL
|
||||
CALL WIN_LOCATE
|
||||
POP HL
|
||||
JR WIN_PCHARS
|
||||
|
||||
WIN_PUTCHAR
|
||||
LD DE,(WIN_ADDR)
|
||||
LD (DE),A
|
||||
INC DE
|
||||
INC DE
|
||||
LD (WIN_ADDR),DE
|
||||
RET
|
||||
|
||||
CRLF LD A,#0D
|
||||
LD C,DSS_PUTCHAR
|
||||
RST #10
|
||||
LD A,#0A
|
||||
LD C,DSS_PUTCHAR
|
||||
RST #10
|
||||
RET
|
||||
|
||||
MESSAGE LD E,A
|
||||
LD D,0
|
||||
CALL MESAGE
|
||||
CALL PRINTZ
|
||||
RET
|
||||
|
||||
MESAGE INC DE
|
||||
LD HL,MSG0
|
||||
LD BC,MSG1-MSG0
|
||||
LCPIR2 XOR A
|
||||
CPIR
|
||||
RET PO
|
||||
RET NZ
|
||||
DEC DE
|
||||
LD A,D
|
||||
OR E
|
||||
JP NZ,LCPIR2
|
||||
RET
|
||||
|
||||
PRINTZ LD A,(HL)
|
||||
INC HL
|
||||
OR A
|
||||
RET Z
|
||||
CP "%"
|
||||
JR NZ,PRINTZ2
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
SUB "1"
|
||||
PUSH HL
|
||||
LD L,A
|
||||
LD H,0
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
LD BC,PRM1
|
||||
ADD HL,BC
|
||||
LD C,DSS_PCHARS
|
||||
RST #10
|
||||
POP HL
|
||||
JR PRINTZ
|
||||
PRINTZ2 LD C,DSS_PUTCHAR
|
||||
RST #10
|
||||
JP PRINTZ
|
||||
|
||||
LOCATE_
|
||||
LD C,DSS_LOCATE
|
||||
RST #10
|
||||
RET
|
||||
|
||||
PRINT_A
|
||||
PRINT_ LD C,DSS_PUTCHAR
|
||||
RST #10
|
||||
RET
|
||||
|
||||
MOVEBLOCKZ
|
||||
LD BC,255
|
||||
JR PUTPRMA
|
||||
|
||||
PUTVAR LD DE,PRM1
|
||||
PUTPRM LD BC,15
|
||||
PUTPRMA LD A,(HL)
|
||||
LDI
|
||||
RET PO
|
||||
OR A
|
||||
JR NZ,PUTPRMA
|
||||
RET
|
||||
|
||||
PRM1 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
PRM2 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
PRM3 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
PRM4 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
PRM5 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
PRM6 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
PRM7 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
PRM8 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
PRM9 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
|
||||
|
||||
; PRINT MODULE
|
||||
|
||||
DUMP LD B,2
|
||||
DUMPLP1 PUSH BC
|
||||
PUSH HL
|
||||
CALL CRLF
|
||||
POP HL
|
||||
CALL PHEXSTR
|
||||
POP BC
|
||||
DJNZ DUMPLP1
|
||||
CALL CRLF
|
||||
RET
|
||||
|
||||
PHEX LD E,A
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
AND #0F
|
||||
ADD A,#30
|
||||
CP #3A
|
||||
JR C,PHEX2
|
||||
ADD A,7
|
||||
PHEX2 CALL PRINT_
|
||||
LD A,E
|
||||
AND #0F
|
||||
ADD A,#30
|
||||
CP #3A
|
||||
JR C,PHEX3
|
||||
ADD A,7
|
||||
PHEX3 CALL PRINT_
|
||||
RET
|
||||
|
||||
PHEXSTR LD B,#10
|
||||
PHS1 PUSH BC
|
||||
LD A,(HL)
|
||||
CALL PHEX
|
||||
LD A,#20
|
||||
CALL PRINT_
|
||||
POP BC
|
||||
INC HL
|
||||
DJNZ PHS1
|
||||
RET
|
||||
|
||||
PRINTNUM
|
||||
LD HL,PRM1
|
||||
NUMC LD C,"0"-1
|
||||
NUMC1 INC C
|
||||
SUB 100
|
||||
JR NC,NUMC1
|
||||
ADD A,100
|
||||
LD (HL),C
|
||||
INC HL
|
||||
NUMB LD C,"0"-1
|
||||
NUMB1 INC C
|
||||
SUB 10
|
||||
JR NC,NUMB1
|
||||
ADD A,10
|
||||
ADD A,"0"
|
||||
LD (HL),C
|
||||
INC HL
|
||||
LD (HL),A
|
||||
INC HL
|
||||
LD (HL),0
|
||||
RET
|
||||
|
||||
PRINT99 LD L,A
|
||||
LD H,0
|
||||
JR PRL99
|
||||
|
||||
PRINTHL
|
||||
LD DE,10000
|
||||
CALL DIGIT
|
||||
LD DE,1000
|
||||
CALL DIGIT
|
||||
LD DE,100
|
||||
CALL DIGIT
|
||||
PRL99 LD DE,10
|
||||
CALL DIGIT
|
||||
LD A,"0"
|
||||
ADD A,L
|
||||
JP PRINT_A
|
||||
|
||||
|
||||
DIGIT LD B,#FF
|
||||
PH1 INC B
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JR NC,PH1
|
||||
ADD HL,DE
|
||||
LD A,"0"
|
||||
ADD A,B
|
||||
JP PRINT_A
|
||||
|
||||
22
usage.txt
Normal file
22
usage.txt
Normal file
@ -0,0 +1,22 @@
|
||||
|
||||
|
||||
keys:
|
||||
|
||||
-k keyboard disabled
|
||||
|
||||
-u mouse disabled
|
||||
|
||||
-o without message output
|
||||
|
||||
-x autoexit from menu when program are terminated
|
||||
|
||||
-m <menu defination> item=Flex Navigator, c:\fn\fn.exe; item=Command prompt, c:\system.exe /s
|
||||
|
||||
|
||||
[MENU]
|
||||
|
||||
title=<menu title>
|
||||
item=<item name>, <program> <hot key>
|
||||
options=autoexit
|
||||
colours=blue, white
|
||||
defaultitem=<number>, <time>
|
||||
Loading…
Reference in New Issue
Block a user