ZISETUPD ;SF/GFT,AC - INITIALIZE DEVICE FILE FOR DSM;4/20/88  8:26 PM ;4/9/92  14:19
 ;;7.1;KERNEL;;Jun 08, 1993
 W !,"THIS ROUTINE INITIALIZES THE DEVICE FILE WITH CURRENT PORT NUMBERS",!
 R "OK? ",X:9999,!! G EXIT:X'?1"Y".E
 L +^%ZIS:2 W:'$T !,"FILE IS IN USE.  TRY AGAIN LATER!!!",*7 Q:'$T
 I '$D(^%ZIS(1,0)) S ^%ZIS(1,0)="DEVICE^3.5"
 S T=$P(^(0),"^",4),M=^%ZOSF("MGR"),%ZISV=$S($D(^%ZOSF("VOL")):^("VOL"),1:"") D FLST
QUES I %ZISV]"" W !,"Please Enter a Prefix for New Devices: "_%ZISV_"//" R %ZISV1:$S($D(DTIME):DTIME,1:300) G EXIT:%ZISV1="^"!'$T S:%ZISV1="" %ZISV1=%ZISV I %ZISV1?1"?"."?" D HLP G QUES
 F I=1,3:1:7,64:1:127 I $D(^[M]SYS(^[M]SYS(0,"RUNNING"),"TTY",I)) D CHK
 F I=47,60 D CHK
C K ^%ZIS("C") S ^%ZIS("C")="G ^%ZISC"
 W !!,"ALL SETUP" L -^%ZIS
EXIT K %ZISV,%ZISV1,A,I,LST,M,NM,T,X,Z Q
 ;
CHK Q:$S(%ZISV]"":$S($O(^%ZIS(1,"G","SYS."_%ZISV_"."_I,0))>0:1,$O(^%ZIS(1,"CPU",%ZISV_"."_I,0))>0:1,1:0),$O(^%ZIS(1,"C",I,0))>0:1,1:0)  S NM=$S(I=47:"MT",I=60:"SDP",1:I)
ADD I %ZISV]"" S LST=LST+1 G:$D(^%ZIS(1,+LST,0))#2 ADD S T=T+1,^%ZIS(1,"C",I,+LST)="",^%ZIS(1,+LST,0)=%ZISV1_NM_"^"_I_"^1^1^^^^^"_%ZISV_"^^1",^("TYPE")=$S(I=47:"MT",I=60:"SDP",1:"TRM"),^%ZIS(1,"B",%ZISV1_NM,+LST)="" D SETCNTR Q
ADD1 S LST=LST+1 G:$D(^%ZIS(1,+LST,0))#2 ADD1 S T=T+1,^%ZIS(1,"C",I,+LST)="",^%ZIS(1,+LST,0)=NM_"^"_I_"^1^1",^("TYPE")=$S(I=47:"MT",I=60:"SDP",1:"TRM"),^%ZIS(1,"B",NM,+LST)="",$P(^%ZIS(1,0),"^",3)=+LST,$P(^(0),"^",4)=T Q
 Q
SETCNTR S ^%ZIS(1,"CPU",%ZISV_"."_I,+LST)="",^%ZIS(1,"G","SYS."_%ZISV_"."_I,+LST)="",$P(^%ZIS(1,0),"^",3)=+LST,$P(^(0),"^",4)=T Q
FLST S X=$S($D(^%ZIS(1,0)):$P(^(0),"^",3),1:0),A=+X
 F I=+X:0 S I=+$O(^%ZIS(1,I)) Q:I'>0  S A=I
 S LST=A Q
HLP ;HELP FOR PREFIX QUESTION
 W !,"There must be a prefix for a new device"
 W !,"becuase the Device Name and the $I cannot"
 W !,"be the same." Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HZISETUPD   1841     printed  Sep 23, 2025@19:51:07                                                                                                                                                                                                    Page 2
ZISETUPD  ;SF/GFT,AC - INITIALIZE DEVICE FILE FOR DSM;4/20/88  8:26 PM ;4/9/92  14:19
 +1       ;;7.1;KERNEL;;Jun 08, 1993
 +2        WRITE !,"THIS ROUTINE INITIALIZES THE DEVICE FILE WITH CURRENT PORT NUMBERS",!
 +3        READ "OK? ",X:9999,!!
           if X'?1"Y".E
               GOTO EXIT
 +4        LOCK +^%ZIS:2
           if '$TEST
               WRITE !,"FILE IS IN USE.  TRY AGAIN LATER!!!",*7
           if '$TEST
               QUIT 
 +5        IF '$DATA(^%ZIS(1,0))
               SET ^%ZIS(1,0)="DEVICE^3.5"
 +6        SET T=$PIECE(^(0),"^",4)
           SET M=^%ZOSF("MGR")
           SET %ZISV=$SELECT($DATA(^%ZOSF("VOL")):^("VOL"),1:"")
           DO FLST
QUES       IF %ZISV]""
               WRITE !,"Please Enter a Prefix for New Devices: "_%ZISV_"//"
               READ %ZISV1:$SELECT($DATA(DTIME):DTIME,1:300)
               if %ZISV1="^"!'$TEST
                   GOTO EXIT
               if %ZISV1=""
                   SET %ZISV1=%ZISV
               IF %ZISV1?1"?"."?"
                   DO HLP
                   GOTO QUES
 +1        FOR I=1,3:1:7,64:1:127
               IF $DATA(^[M]SYS(^[M]SYS(0,"RUNNING"),"TTY",I))
                   DO CHK
 +2        FOR I=47,60
               DO CHK
C          KILL ^%ZIS("C")
           SET ^%ZIS("C")="G ^%ZISC"
 +1        WRITE !!,"ALL SETUP"
           LOCK -^%ZIS
EXIT       KILL %ZISV,%ZISV1,A,I,LST,M,NM,T,X,Z
           QUIT 
 +1       ;
CHK        if $SELECT(%ZISV]""
               QUIT 
           SET NM=$SELECT(I=47:"MT",I=60:"SDP",1:I)
ADD        IF %ZISV]""
               SET LST=LST+1
               if $DATA(^%ZIS(1,+LST,0))#2
                   GOTO ADD
               SET T=T+1
               SET ^%ZIS(1,"C",I,+LST)=""
               SET ^%ZIS(1,+LST,0)=%ZISV1_NM_"^"_I_"^1^1^^^^^"_%ZISV_"^^1"
               SET ^("TYPE")=$SELECT(I=47:"MT",I=60:"SDP",1:"TRM")
               SET ^%ZIS(1,"B",%ZISV1_NM,+LST)=""
               DO SETCNTR
               QUIT 
ADD1       SET LST=LST+1
           if $DATA(^%ZIS(1,+LST,0))#2
               GOTO ADD1
           SET T=T+1
           SET ^%ZIS(1,"C",I,+LST)=""
           SET ^%ZIS(1,+LST,0)=NM_"^"_I_"^1^1"
           SET ^("TYPE")=$SELECT(I=47:"MT",I=60:"SDP",1:"TRM")
           SET ^%ZIS(1,"B",NM,+LST)=""
           SET $PIECE(^%ZIS(1,0),"^",3)=+LST
           SET $PIECE(^(0),"^",4)=T
           QUIT 
 +1        QUIT 
SETCNTR    SET ^%ZIS(1,"CPU",%ZISV_"."_I,+LST)=""
           SET ^%ZIS(1,"G","SYS."_%ZISV_"."_I,+LST)=""
           SET $PIECE(^%ZIS(1,0),"^",3)=+LST
           SET $PIECE(^(0),"^",4)=T
           QUIT 
FLST       SET X=$SELECT($DATA(^%ZIS(1,0)):$PIECE(^(0),"^",3),1:0)
           SET A=+X
 +1        FOR I=+X:0
               SET I=+$ORDER(^%ZIS(1,I))
               if I'>0
                   QUIT 
               SET A=I
 +2        SET LST=A
           QUIT 
HLP       ;HELP FOR PREFIX QUESTION
 +1        WRITE !,"There must be a prefix for a new device"
 +2        WRITE !,"becuase the Device Name and the $I cannot"
 +3        WRITE !,"be the same."
           QUIT