курсор в меню теперь может циклично перемещаться

This commit is contained in:
Anatoliy Belyanskiy 2024-03-27 03:29:25 +10:00
parent e8e569fc23
commit 7965e62728
8 changed files with 87 additions and 161 deletions

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "Shared_Includes"]
path = Shared_Includes
url = https://github.com/Tolik-Trek/Shared_Includes.git

1
Shared_Includes Submodule

@ -0,0 +1 @@
Subproject commit 68681fbc50da463f1debae860e6db64603886d39

View File

@ -1,5 +0,0 @@
[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
View File

@ -1,71 +0,0 @@
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

View File

@ -1,6 +0,0 @@
* не выводится сообщение об ошибке в случае неверного написания названия опции.
* если описание Item заканчивается на "," в качестве параметра берется вся следующая строка.
* функции задания цвета не сообщают о некоректных символах.
- делать проверку при старте Item'а на "<" в первой позиции. (<exit> и т.п.)

106
menu.asm
View File

@ -2,7 +2,7 @@
;
; MENU.EXE
;
INCLUDE "dss.inc"
INCLUDE 'shared_includes/constants/dss_equ.inc'
CR EQU 13
LF EQU 10
@ -38,8 +38,8 @@ START: PUSH IX
.skipStartMessage:
CALL INIT
;
LD C,DSS_SYSTIME
RST #10
LD C,Dss.SysTime
RST ToDSS
LD A,B
LD (RUN_TIME),A
;
@ -47,8 +47,8 @@ START: PUSH IX
RST #30
; LD C,1
; RST #30
LD BC,#0100+DSS_GETMEM
RST #10
LD BC,1*256+Dss.GetMem
RST ToDSS
JR NC,M_ALLOK
LD A,9
CALL MESSAGE
@ -56,8 +56,8 @@ START: PUSH IX
JP QUIT
M_ALLOK
LD (HNDMEM),A
LD BC,#0000+DSS_SETWIN3
RST #10
LD BC,Dss.SetWin3
RST ToDSS
; OUT (#E2),A
; LD (HNDMEM),A
@ -154,15 +154,14 @@ QUIT_MENU
CALL WIN_BACK
QUIT
LD A,(HNDMEM)
LD C,DSS_FREEMEM
RST #10
LD C,DSS_EXIT
QUIT: LD A,(HNDMEM)
LD C,Dss.FreeMem
RST ToDSS
;
.loop: LD BC,Dss.Exit
XOR A
RST #10
RET
RST ToDSS
JR .loop
MAKE_DEFAULT_ITEM
LD HL,ITEMCOUNT
@ -197,8 +196,8 @@ PRC_CNT LD A,#00
LD A,(HL)
CALL PRINT_A
;
LD C,DSS_SYSTIME
RST #10
LD C,Dss.SysTime
RST ToDSS
LD A,(GO_TIME)
CP 60 ;GO_TIME > 60?
JR C,YES_MKSUB
@ -216,8 +215,8 @@ PRC_STR DB "-\\|/"; -\|/
;GET TIMEOUT
GETTIMEOUT
LD C,DSS_SYSTIME
RST #10
LD C,Dss.SysTime
RST ToDSS
LD A,(RUN_TIME)
CP B ;RUNTIME > CURTIME
JR Z,NO_TO_CORR ;ELSE
@ -281,34 +280,34 @@ CLICK2 LD L,(IX+2)
RST #30
;
; POP HL
; LD C,DSS_PCHARS
; RST #10
; LD C,Dss.PCHARS
; RST ToDSS
;<Sayman>
;push bc
ld c,DSS_CURDISK
rst #10
add a,'A'
ld (cwd),a
ld a,':'
ld (cwd+1),a
ld c,DSS_CURDIR
ld hl,cwd+2
rst #10
; ld c,Dss.CurDisk
; rst #10
; add a,'A'
; ld (cwd),a
; ld a,':'
; ld (cwd+1),a
; ld c,Dss.CurDir
; ld hl,cwd+2
; rst #10
;</Sayman>
POP HL
;<Sayman>
ld bc,DSS_EXEC
ld bc,Dss.Exec
;</Sayman>
RST #10 ;Launch the program
RST ToDSS ;Launch the program
;<Sayman>
push af
; push af
ld hl,cwd
ld c,DSS_CHDIR
rst #10
pop af
; ld hl,cwd
; ld c,Dss.ChDir
; rst #10
; pop af
;pop bc
;</Sayman>
JR NC,OK_EXEC
@ -326,8 +325,8 @@ OK_EXEC
K_OBJECT
LD C,DSS_SCANKEY
RST #10
LD C,Dss.ScanKey
RST ToDSS
RET Z
CP 13
JR Z,ENTER_MENU
@ -363,7 +362,9 @@ KEY_DOWN
INC A
CP B
RET NZ
DEC A
;DEC A
LD A,#11
OR A
RET
KEY_UP
@ -371,7 +372,9 @@ KEY_UP
DEC A
CP #10
RET NZ
INC A
;INC A
LD A,(ITEMCOUNT)
ADD A,#10
RET
@ -525,7 +528,7 @@ BTABLE
PUSH DE
PUSH BC
CALL WIN_LOCATE
; RST #10
; RST ToDSS
POP BC
INC C
DJNZ BTABLE
@ -601,10 +604,10 @@ MK_OBJ PUSH IX
ELINE LD A,#BA
CALL DSS_PUTCHAR
CALL WIN_PUTCHAR
; LD A,#20 ;" "
LD BC,(W_SIZE)
; LD BC,#2000+DSS_PUTCHAR
; LD BC,#2000+Dss.PUTCHAR
TLINE PUSH BC
LD A,#20
CALL WIN_PUTCHAR
@ -618,7 +621,7 @@ HLINE LD A,#C7 ;
CALL WIN_PUTCHAR
; LD A,#C4 ;Ä
LD BC,(W_SIZE)
; LD BC,#2000+DSS_PUTCHAR
; LD BC,#2000+Dss.PUTCHAR
TLINEH PUSH BC
LD A,#C4
CALL WIN_PUTCHAR
@ -634,7 +637,7 @@ ITEMCOUNT
DB 0
W_SIZE
DB DSS_PUTCHAR
DB 91
DB 32
;HL - STRING
@ -751,8 +754,8 @@ NOSPACE_L2
EX_COMMAND_LINE
INC HL
NEXTPR LD DE,WORKBUF
LD BC,#0745
RST #10
LD BC,Dss.EX_Path.GSWITCH
RST ToDSS
PUSH AF
PUSH HL
LD A,(WORKBUF)
@ -929,7 +932,7 @@ CH_L6 LD (WIN_Y),A
RET
;<Sayman>
cwd: ds 256
;cwd: ds 256
;</Sayman>
OBSOLUTE_CNT_POS
@ -937,8 +940,9 @@ OBSOLUTE_CNT_POS
MSG0 DB 0
;0
DB "User Menu v1.00, Copyright "
DB "2002 (c) PETERS PLUS LTD",CR,LF,CR,LF,0
DB "User Menu v1.01, Copyright "
DB "2002 (c) Peters Plus LTD",CR,LF
DB "2023 (c) Sprinter Team",CR,LF,CR,LF,0
;1
DB " Error: Unknown switch: %1",CR,LF,0
;2

View File

@ -20,16 +20,16 @@ MNU_FHND DB #FF
OPEN_MENU_FILE
XOR A ;;;;;;;;
LD C,DSS_OPEN
RST #10
LD C,Dss.Open
RST ToDSS
RET C
LD (MNU_FHND),A
RET
CLOSE_MENU_FILE
LD A,(MNU_FHND)
LD C,DSS_CLOSE
RST #10
LD C,Dss.Close
RST ToDSS
RET
@ -62,9 +62,9 @@ NOT_DEF_MNU:
RM_STEP2
LD HL,FILE_ARRAY
LD DE,16384
LD C,DSS_READ
LD C,Dss.Read
LD A,(MNU_FHND)
RST #10
RST ToDSS
JR C,RF_ERR
LD B,D
LD C,E

View File

@ -12,8 +12,8 @@ DEBUG_PRINTZ
HL_D_POINT
LD HL,#0000
LD C,DSS_PCHARS
RST #10
LD C,Dss.PChars
RST ToDSS
CALL CRLF
CALL POPALL
@ -71,10 +71,10 @@ WIN_SHOW
LD L,A
IN A,(#E2)
LD B,A
LD C,DSS_WINREST
LD C,Dss.WinRest
LD IX,MYWIN
DI
RST #10
RST ToDSS
EI
RET
@ -83,8 +83,8 @@ SAVE_POSITION
DW 0
WIN_SAVE
LD C,DSS_CURSOR
RST #10
LD C,Dss.Cursor
RST ToDSS
LD (SAVE_POSITION),DE
; RET
;
@ -95,10 +95,10 @@ WIN_SAVE
LD L,A
IN A,(#E2)
LD B,A
LD C,DSS_WINCOPY
LD C,Dss.WinCopy
LD IX,SCR_BUF
DI
RST #10
RST ToDSS
EI
RET
@ -110,15 +110,15 @@ WIN_BACK
LD L,A
IN A,(#E2)
LD B,A
LD C,DSS_WINREST
LD C,Dss.WinRest
LD IX,SCR_BUF
DI
RST #10
RST ToDSS
EI
LD DE,(SAVE_POSITION)
LD C,DSS_LOCATE
RST #10
LD C,Dss.Locate
RST ToDSS
RET
WIN_CLS
@ -215,10 +215,10 @@ WIN_PUTCHAR
RET
CRLF LD A,#0D
LD C,DSS_PUTCHAR
LD C,Dss.PutChar
RST #10
LD A,#0A
LD C,DSS_PUTCHAR
LD C,Dss.PutChar
RST #10
RET
@ -259,22 +259,22 @@ PRINTZ LD A,(HL)
ADD HL,HL
LD BC,PRM1
ADD HL,BC
LD C,DSS_PCHARS
RST #10
LD C,Dss.PChars
RST ToDSS
POP HL
JR PRINTZ
PRINTZ2 LD C,DSS_PUTCHAR
RST #10
PRINTZ2 LD C,Dss.PutChar
RST ToDSS
JP PRINTZ
LOCATE_
LD C,DSS_LOCATE
RST #10
LD C,Dss.Locate
RST ToDSS
RET
PRINT_A
PRINT_ LD C,DSS_PUTCHAR
RST #10
PRINT_ LD C,Dss.PutChar
RST ToDSS
RET
MOVEBLOCKZ