menus in isdos.
ZXNet echo conference «code.zx»
From Valerij Kozhevnokov → To All 24 August 1998
Hello All!
Folks, no one can tell you what the maximum nesting is
Is the menu empty?
A program is written that displays heaps of all sorts of menus, and gets -
I think the nesting is kind of strange.
So the principle is this:
┌───────────────┐
│ main menu │ The following is called up from
│ ┌────────────┴──┐ previous.
│ │ menu 2 │
│ │ ┌────────────┴───┐
└──┤ │ menu 3 │
│ │ │
└──┤ │
│ │
└────────────────┘
When calling the file panel from menu 2, everything is fine.
When you call _it_from menu 3, everything freezes... :-/
I call the panel the same way everywhere, see below, in both cases
just CALL $PANEL, but it’s buggy...
I just tried it here, made a chain of as many as eight me-
Nu one after another - it works without problems, only on the sixth
glitched. Moreover, it malfunctioned in the same way as with the panel: the window
fussing around, but there is no text in it...
But it got buggy at the _sixth_ level of nesting, and calling the panel
It's already buggy on the _third_ :-/
Maybe save the environment before calling the panel? And what about this
the point is, if the user navigates through directories with a cursor, it’s all
will change equally...
Has anyone encountered something similar?
Another question: is there such a restart #6A panel, y
which has as many as 22 subfunctions, maybe someone has something about them
more detailed than just names?I just need to display the hard directory in the shell panel
disk, but how?
And I always call the panel something like this:
;(c)Jason
;entry point - $PANEL
;current input driver is 64cpl.
;===========================;
DEVSWP LD C,#8A ;left or right?
RST #10
EXX
LD A,#07
DJNZ DEV
DEC A
DEV LD C,#8E ;device selection
RST #10
JR C,ERROR
CP#F1
JR NZ,KEY_IN
J.R. SHELLP
$PANEL
XOR A
LD(ERR),A
LD C,#12
RST #10
LD (DRV64), A ;remembered current channel. drivers
LD A,($SHELD)
LD B,A
LD C,#1B ;switch driver for 42cpl
RST #10
RET C
SHELLP LD A,#F0 ;reprinted current. panel
LD C,#8E
RST #10
JR C,ERROR
KEY_IN LD C,#08
RST #10
LD A,#FF ;movement on the panel
LD C,#8E
RST #10
JR C,ERROR
CP #06
JR Z,DEVSWP ;CS+1
CP #07
JR Z,DEVSWP ;CS+2
CP#10
JP Z,EXIT ;ESC
CP#12
JP Z,LEAVE ;SS+SPACE
CP#0D
JR NZ,KEY_IN;pressed ENTER.
LD C,#8A;where is the cypcop?
RST #10
LD E,A
; LD ($POSIT),A ;remembered position
LD C,#27 ;read the descriptor
RST #10
EXX
LD BC,#000B
ADD HL,BC
BIT 5,(HL) ;file?
JR Z,EXIT ;if yes, then exit
LD A,#0D ;otherwise open the directory
LD C,#8E
RST #10
JR NC,SHELLP
ERROR LD (ERR),A
LEAVE
EXIT LD B,0
DRV64 EQU $-1
LD C,#1B
RST #10 ;returned driver 64cpl
LD A,0
ERR EQU $-1
OR A
RET Z ;normal return
SCF
RET; and here with an error.
WBR, Jason.