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.