mirror of
https://github.com/Tolik-Trek/UserMenu.git
synced 2026-06-15 09:01:36 +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