7:25 AM 14-NOV-02 VPE Patch 1 %ZVEMGI1 %ZVEMGI1 ;DJB,VGL**Reverse Video,Set variables,Error ; 11/14/02 7:10am ;;12;VPE;;COPYRIGHT David Bolduc @1993 ; GLOBNAME(GLOB) ;Write Global name with variable subscripts in reverse video. I GLOB'?.E1"(".E Q GLOB NEW FLAGT,FLAGT1,NAME D SUBSET(GLOB) S NAME=GL_"(" ;Next: FLAGT set to stop printing reverse video after a Xref. S FLAGT=0 F I=1:1:$L(SUBCHK,ZDELIM) S FLAGT1=0 D . I SUBNUM="Y",I#2=0 D SET . I SUBNUM="N",I#2 D SET . S NAME=NAME_$P(SUBCHK,ZDELIM,I) I FLAGT1 S NAME=NAME_$C(127) . S NAME=NAME_$S(I=$L(SUBCHK,ZDELIM):")",1:",") Q NAME SET ; S:+$P(SUBCHK,ZDELIM,I)=0 FLAGT=1 I 'FLAGT S NAME=NAME_$C(127) S FLAGT1=1 Q SUBSET(GLOB) ;Set up variables GL,GLNAM,GLSUB,SUBCHK,SUBNUM. ;SUBNUM="Y" if Global root is numeric [Ex ^VA(200 ]. ;SUBNUM="N" if Global root is NOT numeric [Ex ^DPT( ]. NEW PIECE1,TEMP,X,Y Q:$G(GLOB)="" S GLNAM=GLOB S GL=$P(GLNAM,"("),GLSUB=$P($E(GLOB,1,$L(GLOB)-1),"(",2,99) S SUBCHK=$$ZDELIM^%ZVEMGU(GLOB) ;replace commas with ZDELIM ;Next determine if file has a numeric root. S SUBNUM="NOFM" I GL="^DIA" Q S PIECE1=$P(SUBCHK,ZDELIM,1) S TEMP=GL_"("_PIECE1_",0)" I $D(@TEMP)#2 D . S X=$P(@TEMP,U) Q:X']"" I '$D(^DIC("B",X)) D Q:'$D(^DIC("B",X)) . . ;Allow for subscripts which are longer than 30 characters . . Q:$L(X)<31 . . F S X=$E(X,1,$L(X)-1) Q:$L(X)<31!($D(^DIC("B",X))) . I GL'="^DIC" S SUBNUM="Y" Q . S Y=$O(^DIC("B",X,0)) I Y'>0 S SUBNUM="DIC" Q ;Invalid ^DIC node . I $G(^DIC(Y,0,"GL"))=(GL_"("_PIECE1_",") S SUBNUM="Y" Q . S SUBNUM="DIC" . Q Q:SUBNUM'="NOFM" S TEMP=GL_"(0)" I $D(@TEMP)#2 D . S X=$P(@TEMP,U) Q:X']"" I $D(^DIC("B",X)) S SUBNUM="N" Q . D S:$D(^DIC("B",X)) SUBNUM="N" . . Q:$L(X)<31 . . F S X=$E(X,1,$L(X)-1) Q:$L(X)<31!($D(^DIC("B",X))) Q REVERSE(TXT) ;Display subscript in reverse video ;TXT=Text to be displayed W ! I TXT'[$C(127) W TXT Q NEW DX,DY,D,L,PC,VEEY S VEEY=(VEE("IOSL")-1) S D=$C(127),L=$L(TXT,D) F PC=1:1:L D ; . I (PC#2) W $P(TXT,D,PC) D Q . . Q:PC'VEEY:VEEY,1:$Y) . . W @VEE("RON") X VEES("XY") W " " . W $P(TXT,D,PC)_" " . S DX=$X,DY=$S($Y>VEEY:VEEY,1:$Y) W @VEE("ROFF") X VEES("XY") Q Q ;==================================================================== ERROR ;Error trap. ;VEET("STATUS") - Don't display "No data" with errors. NEW ZE S @("ZE="_VEE("$ZE")) I $G(VEET("STATUS"))["START" D ENDSCR^%ZVEMKT2 I 1 E S $P(VEET("STATUS"),"^",5)="PROT" ;Suppress 'No Data' display S FLAGQ=1 I ZE["PROT" D D PAUSE^%ZVEMKU(1) Q . W $C(7),!!?1,"Access denied (global protection)" D ERRMSG^%ZVEMKU1("VGL/I"),PAUSE^%ZVEMKU(1) Q %ZVEMKEA %ZVEMKEA ;DJB,KRN**Screen Mode Line Editor ; 11/14/02 6:56am ;;12;VPE;;COPYRIGHT David Bolduc @1993 ; SCREEN(PROMPT,LMAR,RMAR) ;Edit a line of text ;PROMPT = Prompt ;LMAR=Left Margin ;RMAR=Right Margin ; NEW DX,DY,FLAGQ,I,START,WIDTH,X,XCHAR,XCUR,YCNT,YCUR NEW:'$D(VEES) VEES ; S FLAGQ=0 D INIT Q:FLAGQ X VEES("RM0") W ! D LISTCD D SETUP F D READ Q:X="QUIT" EX ; ;Reposition cursor to bottom line I YCUR,,,,"[(","_VEESHC_",") S X="QUIT" Q I ",,,,,"[(","_VEESHC_",") D ARROW^%ZVEMKEC Q I ",,,,,"[(","_VEESHC_",") D OTHER^%ZVEMKEC Q I ",,,"[(","_VEESHC_",") D D DELETE^%ZVEMKEB Q . S:$G(VEE("BS"))="SAME" VEESHC="" I VEESHC?1"<".E1">".E S X="QUIT" Q D INSERT^%ZVEMKEB Q ; LISTCD ;Print Code with controlled wrapping. NEW TEMP S TEMP=CD I TEMP?.E1C.E S TEMP=$$CC(TEMP) ;Control characters W ?LMAR,PROMPT W ?START,$E(TEMP,1,WIDTH) S TEMP=$E(TEMP,WIDTH+1,999) LISTCD1 ;Print remainder of line I TEMP="" Q W !?START,$E(TEMP,1,WIDTH) S TEMP=$E(TEMP,WIDTH+1,999) G LISTCD1 ; SETUP ;Set up starting values. F YCNT=1:1 Q:$L(CD)<(YCNT*WIDTH+1) S XCHAR=$L(CD)+1 S XCUR=$X S YCUR=YCNT ; ;If CD is exactly the screen width move the cursor to next line. I $L(CD)>0,$L(CD)#WIDTH=0 D ; . S YCUR=YCUR+1 . S XCUR=START . W ! Q:START'>0 . W $C(27)_"["_START_"C" . D RESETY Q ; CC(TXT) ;Control characters ;Substitute a 'c' for any control characters. ; NEW I I $G(TXT)']"" Q "" F I=1:1:$L(TXT) I $E(TXT,I)?.E1C.E D ; . S TXT=$E(TXT,1,I-1)_"c"_$E(TXT,I+1,9999) Q TXT ; RESETY ;Reset $Y NEW VEEY S VEEY=(VEE("IOSL")-1) S DX=0,DY=$S($Y>VEEY:VEEY,1:$Y) X VEES("XY") Q ; INIT ; I '$D(VEE("OS")) D OS^%ZVEMKY Q:FLAGQ I '$D(VEE("IOM")) D IO^%ZVEMKY D SCRNVAR^%ZVEMKY2 D CRSRMOVE^%ZVEMKY2 D CRSRSAVE^%ZVEMKY2 D BLANK^%ZVEMKY3 S CD=$G(CD),PROMPT=$G(PROMPT),LMAR=$G(LMAR),RMAR=$G(RMAR) S:LMAR'>0!(LMAR>(VEE("IOM")-5)) LMAR=0 S:RMAR'>LMAR!(RMAR>VEE("IOM")) RMAR=VEE("IOM")-1 S START=LMAR+$L(PROMPT) S WIDTH=RMAR-START D RESETY Q %ZVEMKEB %ZVEMKEB ;DJB,KRN**INSERT,DELETE,PRINT ; 11/14/02 7:16am ;;12;VPE;;COPYRIGHT David Bolduc @1993 ; INSERT ;Insert a character NEW VEEY S VEEY=(VEE("IOSL")-1) I $L(CD)>244 D S VEESHC="TOO LONG",X="QUIT" Q ;Tell calling routine line is too long. . I YCNT>YCUR W $C(27)_"["_(YCNT-YCUR)_"B" ;Move cursor to last line. . S DX=0,DY=$S($Y>VEEY:VEEY,1:$Y) X VEES("XY") . W $C(7),!!?3,"Line length may not exceed 245" I $L(CD)>0,$L(CD)#WIDTH=0 D ;Allow for scroll at bottom of screen. . I YCNT>YCUR W $C(27)_"["_(YCNT-YCUR)_"B" ;Move cursor to last line. . W !,$C(27)_"["_(YCNT-YCUR+1)_"A" ;Linefeed,move cursor back up. . W $C(27)_"["_(XCUR+1)_"C" ;Move cursor right. S CD=$S(XCHAR=1:X_CD,1:$E(CD,1,XCHAR-1)_X_$E(CD,XCHAR,999)) I XCHAR#WIDTH=0 S XCUR=START,YCUR=YCUR+1 D I 1 . W ! I START>0 W $C(27)_"["_START_"C" ;Cursor right E S XCUR=XCUR+1 S XCHAR=XCHAR+1 D PRINTL Q DELETE ;Delete character ;--- key struck--- I VEESHC="" D Q . S CD=$E(CD,1,XCHAR-1)_$E(CD,XCHAR+1,999) D PRINTL ;--- key struck--- Q:XCHAR=1 S XCHAR=XCHAR-1 I XCHAR=1 S XCUR=XCUR-1,CD=$E(CD,2,999) W @VEES("CL") D PRINTL Q I XCHAR#WIDTH=0,YCUR>1 D I 1 . S XCUR=WIDTH+START-1,YCUR=YCUR-1 . W @VEES("CU"),$C(27)_"["_(WIDTH-1)_"C" E S XCUR=XCUR-1 W @VEES("CL") S CD=$E(CD,1,XCHAR-1)_$E(CD,XCHAR+1,999) D PRINTL Q PRINTL ;Print Line NEW TEMP,VEEY S VEEY=(VEE("IOSL")-1) S TEMP=$E(CD,XCHAR,999) I TEMP?.E1C.E S TEMP=$$CC^%ZVEMKEA(TEMP) ;Control characters S DX=XCUR,DY=$S($Y>VEEY:VEEY,1:$Y) W @VEES("SC") ;Save cursor position W @VEES("BLANK_C_EOS") ;Blank screen X VEES("XY") ;Reset $X & $Y F YCNT=1:1 Q:$L(CD)<(YCNT*WIDTH+1) W $E(TEMP,1,WIDTH+START-XCUR) S TEMP=$E(TEMP,(WIDTH+START+1)-XCUR,999) PRINTL1 ;Print remainder of line I TEMP="" W @VEES("RC") Q W !?START,$E(TEMP,1,WIDTH) S TEMP=$E(TEMP,WIDTH+1,999) G PRINTL1 %ZVEMKT2 %ZVEMKT2 ;DJB,KRN**Txt Scroll-Other,Help ; 11/14/02 6:59am ;;12;VPE;;COPYRIGHT David Bolduc @1993 ; SCROLL(CRSRON) ;End scroll, do form feed, start scroll D ENDSCR,STARTSCR($G(CRSRON)) Q STARTSCR(CRSRON) ;Start Scroll Region ;CRSRON=If 1, leave on cursor NEW I X VEES("RM0") I '$G(CRSRON) W @VEES("COFF") D SCROLL^%ZVEMKY2(VEET("S1"),VEET("S2")) W @VEE("IOF") I VEE("OS")=9 D ;DTM-Blank screen below scroll area . S DX=0,DY=VEET("S2") X VEES("CRSR") W @VEES("BLANK_C_EOS") S DX=0,DY=VEET("S2") F I=1:1:VEET("FT") X VEES("CRSR") W VEET("FT",I) S DY=DY+1 S DX=0,DY=VEET("S1")-VEET("HD")-1 F I=1:1:VEET("HD") X VEES("CRSR") W VEET("HD",I) S DY=DY+1 Q ENDSCR ;End Scroll Region D SCROLL^%ZVEMKY2(1,VEE("IOSL")) I $D(VEES("CON")) W @VEES("CON") X VEES("RM80") W @VEE("IOF") Q BOTTOM(PKG,CRSRON) ;Move to last line displayed. ; PKG - Package ; CRSRON - If 1, tell REDRAW to leave on cursor ; NEW X S X=999999999 S:$G(PKG)']"" PKG="K" F S X=+$O(^TMP("VEE",PKG,$J,X),-1) Q:X=0 Q:$G(^(X))'=" <> <> <>" S VEET("TOP")=$S(X>0:X,1:1) D REDRAW($G(CRSRON)) Q REDRAW(CRSRON) ;Redraw screen after running a menu selection ;CRSRON=If 1, tell STARTSCR to leave on cursor S VEET("BOT")=VEET("TOP") S VEET("GAP")=VEET("SL") S VEET("HLN")=VEET("TOP") S VEET("H$Y")=VEET("S1")-1 D SCROLL($G(CRSRON)) Q HELP ; D ENDSCR W !?25,"V P E S C R O L L E R" W !,"The display you are viewing is utilizing the VPE generic scroller." W !,"Displays that use this scroller are marked with ""<>"" at the extreme" W !,"left side of the bar menu located at the bottom of the screen." W !!?4," ..........: Move up one line" W !?4," ........: Move down one line" ;W !?4," ............: Move highlight to screen top" ;W !?4," ............: Move highlight to screen bottom" W !?4,"U, ..........: Move up one page" W !?4,"D,, .: Move down one page" W !?4,"T,, ...: Move to page 1" W !?4,"B,, ....: Move to bottom (Last line displayed)" W !?4,"^,,E,Q ..: Quit" W !?4,"F ...................: Find characters (Look on left side of line only)" W !?4,"L ...................: Locate characters (Anywhere in the line)" W !!,"If you hear a beep when you hit any of the above keys, you have reached" W !,"the top or bottom of the display and can go no further." D PAUSE^%ZVEMKC(1) Q ERROR ;Error Trap S FLAGQ=1 KILL ^TMP("VEE","K",$J) D ENDSCR,ERRMSG^%ZVEMKU1("SCROLLER"),PAUSE^%ZVEMKU(2) Q %ZVEMKY2 %ZVEMKY2 ;DJB,KRN**Screen Variables ; 11/14/02 7:20am ;;12;VPE;;COPYRIGHT David Bolduc @1993 ; ;;X VEES("CRSR"),VEES("RM0"). All others are: W @() SCRNVAR ;Screen Variables I $G(VEES("RM0"))']"" D RIGHTMAR ;.........Right Margin I $G(VEES("XY"))']"" D XY^%ZVEMKY1 ;.......Reset $X & $Y Q:$G(VEES("CRSR"))]"" ;...................Position cursor D CRSRPOS S VEES("CRSR")=VEES("CRSR")_" "_VEES("XY") Q CRSRPOS ;Position cursor Q:$D(VEES("CRSR")) I $G(IOST(0))]"",$D(^%ZIS(2,IOST(0),"XY")) S VEES("CRSR")=^("XY") Q S VEES("CRSR")="W $C(27)_""[""_(DY+1)_"";""_(DX+1)_""H""" Q RIGHTMAR ;Right Margin I $D(VEES("RM0")),$D(VEES("RM80")) Q ; ;--> Default S (VEES("RM0"),VEES("RM80"))="" ; I VEE("OS")=8!(VEE("OS")=18) S VEES("RM0")="U $I:0" ;I VEE("OS")=16 S VEES("RM0")="U $I:WIDTH=0" I VEE("OS")=17!(VEE("OS")=19) S VEES("RM0")="U $I:WIDTH=0" ; NEW RM I $G(VEE("ID")) S RM=$G(^%ZVEMS("PARAM",VEE("ID"),"WIDTH")) I $G(RM)']"" S RM=80 ;Default I VEE("OS")=8!(VEE("OS")=18) S VEES("RM80")="U $I:"_RM Q ;I VEE("OS")=16 S VEES("RM80")="U $I:WIDTH="_RM Q I VEE("OS")=17!(VEE("OS")=19) S VEES("RM80")="U $I:WIDTH="_RM Q Q WRAP ;Wrap & no wrap I $D(VEES("WRAP")),$D(VEES("NOWRAP")) Q I $G(IOST(0))]"",$D(^%ZIS(2,IOST(0),15)),$P(^(15),"^",1)]"",$P(^(15),"^",2)]"" S VEES("WRAP")=$P(^(15),"^",1),VEES("NOWRAP")=$P(^(15),"^",2) Q S VEES("WRAP")="$C(27)_""[?7h""" S VEES("NOWRAP")="$C(27)_""[?7l""" Q CRSRMOVE ;Cursor move I $D(VEES("CU")),$D(VEES("CD")),$D(VEES("CR")),$D(VEES("CL")) Q I $G(IOST(0))]"",$D(^%ZIS(2,IOST(0),8)),$P(^(8),"^",1,4)'["^^" NEW NODE8 S NODE8=^(8) D Q . S VEES("CU")=$P(NODE8,"^",1),VEES("CD")=$P(NODE8,"^",2) . S VEES("CR")=$P(NODE8,"^",3),VEES("CL")=$P(NODE8,"^",4) S VEES("CU")="$C(27)_""[1A""" ;Cursor up S VEES("CD")="$C(27)_""[1B""" ;Cursor down S VEES("CR")="$C(27)_""[1C""" ;Cursor right S VEES("CL")="$C(27)_""[1D""" ;Cursor left Q CRSROFF ;Cursor on/off I $D(VEES("CON")),$D(VEES("COFF")) Q S VEES("CON")="$C(27)_""[?25h""" ;Cursor on S VEES("COFF")="$C(27)_""[?25l""" ;Cursor off Q CRSRSAVE ;Save Cursor/Restore Cursor I $D(VEES("SC")),$D(VEES("RC")) Q I $G(IOST(0))]"",$D(^%ZIS(2,IOST(0),14)),$P(^(14),"^",3)]"",$P(^(14),"^",4)]"" S VEES("SC")=$P(^(14),"^",3),VEES("RC")=$P(^(14),"^",4) Q S VEES("SC")="$C(27)_7" S VEES("RC")="$C(27)_8" Q REVVID ;Reverse Video I $D(VEE("RON")),$D(VEE("ROFF")) Q I $G(IOST(0))]"",$D(^%ZIS(2,IOST(0),5)),$P(^(5),"^",4)]"",$P(^(5),"^",5)]"" S VEE("RON")=$P(^(5),"^",4),VEE("ROFF")=$P(^(5),"^",5) Q S VEE("RON")="$C(27)_""[7m""",VEE("ROFF")="$C(27)_""[0m""" Q GRAPHICS ;Graphics On/Off I $D(VEES("GON")),$D(VEES("GOFF")) Q I $G(IOST(0))]"",$D(^%ZIS(2,IOST(0),"G1")),$D(^("G2")) S VEES("GON")=^("G1"),VEES("GOFF")=^("G0") Q S VEES("GON")="$C(27)_""(0""",VEES("GOFF")="$C(27)_""(B""" Q SCROLL(TOP,BOTTOM) ;Set scroll region S:$G(TOP)'>0 TOP=1 S:$G(BOTTOM)'>0 BOTTOM=VEE("IOSL") W @("$C(27)_""["_TOP_";"_BOTTOM_"r""") Q SCRL ;Scroll region variables S VEES("INDEX")="$C(27)_""D""",VEES("REVINDEX")="$C(27)_""M""" ;Index S VEES("INSRT")="$C(27)_""[1L""" ;Insert 1 line Q SCRNVAR1 ;Lesser Used Screen Variables S VEES("CION")="$C(27)_""[4h""",VEES("CIOFF")="$C(27)_""[4l""" ;Character insert Q DTM ;Support for DataTree Mumps Q:VEE("OS")'=9 Q:$I=1 Q:$G(^%ZVEMS("%",$J_$G(^%ZVEMS("SY")),"SHL"))'="RUN" S ^%ZVEMS("%",$J_$G(^%ZVEMS("SY")),"DTM")=$ZDEV("IXXLATE")_"^"_$ZDEV("WRAP") U $I:(IXXLATE=0) ;U $I:(IXXLATE=0:WRAP=0) Q BRK ;Enable Control C I $D(^%ZOSF("BRK")) X ^%ZOSF("BRK") Q I VEE("OS")=16 U $I:CENABLE Q I VEE("OS")=17 U $I:(CENABLE) Q I VEE("OS")=18 U $I:("":"+B") Q I VEE("OS")=19 U $I:(CENABLE) Q B 1 Q NOBRK ;Disable Control C I $D(^%ZOSF("NBRK")) X ^%ZOSF("NBRK") Q I VEE("OS")=16 U $I:NOCENABLE Q I VEE("OS")=17 U $I:(NOCENABLE) Q I VEE("OS")=18 U $I:("":"-B") Q I VEE("OS")=19 U $I:(NOCENABLE) Q B 0 Q %ZVEMSTO %ZVEMSTO ;DJB,VSHL**Time Out - Screen Saver ; 11/14/02 7:22am ;;12;VPE;;COPYRIGHT David Bolduc @1993 ; EN ; I $G(VEESHL)'="RUN" W $C(7),!!?2,"This routine may only be run from the VShell.",! Q NEW VEES D MARGIN TOP ;Come here from VMS1 NEW X S X="ERROR^%ZVEMSTO",@($$TRAP^%ZVEMKU1) KILL X NEW DOT,DOT1,FF,FLAGQ,I,PASSWORD,WHICH,X,XX,XX1,Y D INIT,INIT1,CUROFF S WHICH=1,FLAGQ=0 F D @("TYPE"_WHICH) Q:FLAGQ S WHICH=WHICH+1 S:WHICH>4 WHICH=1 EX ;Exit D CURSOR X FF,VEES("RM80") I $D(^%ZOSF("BRK")) X ^("BRK") ;Reenable Ctrl C Q TYPE1 ;Top to Bottom F Y=1:1:VEE("IOSL") Q:FLAGQ F X=1:1:VEE("IOM") D DRAW Q:FLAGQ D DOTSET Q TYPE2 ;Left to Right F X=1:1:VEE("IOM") Q:FLAGQ F Y=1:1:VEE("IOSL") D DRAW Q:FLAGQ D DOTSET Q TYPE3 ;Bottom to Top F Y=VEE("IOSL"):-1:0 Q:FLAGQ F X=VEE("IOM"):-1:0 D DRAW Q:FLAGQ D DOTSET Q TYPE4 ;Right to Left F X=VEE("IOM"):-1:0 Q:FLAGQ F Y=VEE("IOSL"):-1:0 D DRAW Q:FLAGQ D DOTSET Q DRAW ; R XX#1:0 I $T S FLAGQ=1 Q W $C(27)_"["_Y_";"_X_"H" ;Smiley face I Y=5!(Y=17)&(",19,21,59,61,"[(","_X_",")) W 0 Q I Y=5!(Y=17)&(",20,60,"[(","_X_",")) W " " Q I Y=6!(Y=18)&(",19,21,59,61,"[(","_X_",")) W " " Q I Y=6!(Y=18)&(",20,60,"[(","_X_",")) W ">" Q I Y=7!(Y=19)&(",21,61,"[(","_X_",")) W " " Q I Y=7!(Y=19)&(",19,59,"[(","_X_",")) W $S(DOT="_":"\",1:"/") Q I Y=7!(Y=19)&(",20,60,"[(","_X_",")) W $S(DOT="_":"/",1:"\") Q ;Box pattern I X<41,Y<13 W $S(X<15!(X>25):DOT,Y<4!(Y>9):DOT,1:DOT1) Q I X<41,Y>12 W $S(X<15!(X>25):DOT1,Y<16!(Y>21):DOT1,1:DOT) Q I X>40,Y<13 W $S(X<55!(X>65):DOT1,Y<4!(Y>9):DOT1,1:DOT) Q I X>40,Y>12 W $S(X<55!(X>65):DOT,Y<16!(Y>21):DOT,1:DOT1) Q DOTSET ;Change DOT S DOT=$S(DOT="_":"|",1:"_"),DOT1=$S(DOT1="_":"|",1:"_") Q CURSOR W $C(27)_"[?25h" Q ;Cursor on CUROFF W $C(27)_"[?25l" Q ;Cursor off ERROR ;Turn Cursor back on D CURSOR,ERRMSG^%ZVEMKU1("'SCRN SAVER'"),PAUSE^%ZVEMKU(2) Q INIT ;Initialize variables S PASSWORD="++" I $D(^%ZOSF("NBRK")) X ^("NBRK") ;Disable 'Ctrl C' Q INIT1 ; S DOT="_",DOT1="|",FF="F I=1:1:50 W !" X FF,VEES("RM0") Q MARGIN ;Adjust margin if Micronetics I VEE("OS")=8 S VEES("RM0")="U $I:(0)",VEES("RM80")="U $I:(80)" E S (VEES("RM0"),VEES("RM80"))="" Q VMS ;Drop to VMS to disable Control Y I $G(VEE("OS"))']"" W $C(7),!!?2,"This routine may only be run from the VShell.",! Q NEW %SPAWN S %SPAWN="@TIMEOUT.COM" D ^%SPAWN Q VMS1 ;TIMEOUT.COM should call here NEW VEES S (VEES("RM0"),VEES("RM80"))="" G TOP BLANK ;Call here to blank the screen I $G(VEESHL)'="RUN" W $C(7),!!?2,"This routine may only be run from the VShell.",! Q NEW I,PASSWORD,XX D INIT,CUROFF X VEE("EOFF") F I=1:1:50 W ! BLANK1 R XX#$L(PASSWORD) I XX=PASSWORD X VEE("EON") D CURSOR Q G BLANK1 Q