INCLUDE "CONLIB.VVP_VVPSPECS"
INCLUDE "CONLIB.VVP_VVPFORMATS"
EXTERNALROUTINE TTYPES(STRING (255)S)
!
CONSTINTEGER ACR = 7
CONSTINTEGER TRY = 38
!
SYSTEMSTRINGFNSPEC ITOS(INTEGER I)
SYSTEMROUTINESPEC PHEX(INTEGER I)
EXTERNALROUTINESPEC GETAVFSYS(INTEGERNAME N,INTEGERARRAYNAME A)
EXTERNALINTEGERFNSPEC GETUSNAMES(INTEGERNAME N,INTEGER ADR,FSYS)
EXTERNALINTEGERFNSPEC DSFI(STRING (6)U,INTEGER F,T,S,A)
EXTERNALINTEGERFNSPEC DPERMISSION(STRING (6)OWN,USER, C
STRING (8)DATE, STRING (11)FILE, INTEGER FSYS, TYPE, ADR)
!
!
INTEGER NSYS, FSYS, F, ADR, NU, J, K, N, C0, C1
INTEGER U, AP, PN, I
RECORDFORMAT F1(STRING (6)U, BYTEINTEGER PRM)
RECORDFORMAT F2(INTEGER N, O, E, X, RECORD (F1)ARRAY IP(0:15))
RECORD (F2)P
RECORD (F1)NAME IP
INTEGERARRAY A(0:99)
INTEGER SEG, GAP, FLAG
INTEGERARRAY FLD(0:15)
STRINGNAME U1
BYTEINTEGERARRAY UNAMES(0:2400)
!
EXTERNALINTEGERFNSPEC DCONNECT(STRING (6)USER, STRING (11)FILE,
INTEGER FSYS, MODE, APF, INTEGERNAME SEG, GAP)
EXTERNALINTEGERFNSPEC DDISCONNECT(STRING (6)USER, STRING (11)FILE,
INTEGER FSYS, DESTROY)
EXTERNALINTEGERFNSPEC DFSYS(STRING (6)USER, INTEGERNAME FSYS)
EXTERNALSTRINGFNSPEC UINFS(INTEGER N)
CONSTINTEGER KSHIFT = 10
CONSTINTEGER MAXVKEY = 17
CONSTINTEGER MAXKEY = 14
CONSTSTRING (8) TEMPOPTIONS = "T#OPTION"
CONSTINTEGER MAXSEARCHDIRCOUNT = 16
CONSTSTRING (13) ARRAY VKEY(1 : MAXVKEY) = C
"INITSTACKSIZE","AUXSTACKSIZE","USERSTACKSIZE",
"ITWIDTH","FSTARTFILE","BSTARTFILE",
"PRELOADFILE","ACTIVEDIR","REMOVEDIR","SEARCHDIR","ARRAYDIAG",C
"INITWORKSIZE","NULL","ITINSIZE","ITOUTSIZE","CFAULTS","TERMINAL"
CONSTSTRING (12) ARRAY KEY(1 : MAXKEY) = C
"BRACKETS","NOBRACKETS","NORECALL","TEMPRECALL","PERMRECALL",
"NOFSTARTFILE","?","NOBLANKLINES","BLANKLINES","NOBSTARTFILE",
"INITPARMS","NOECHO","PARTECHO","FULLECHO"
!
!
!
ROUTINE OUTI(STRING (255) S, INTEGER N)
S = S . " " WHILE LENGTH(S) < 31
PRINTSTRING(S." :")
WRITE(N,1)
NEWLINE
END ; !OF OUTI
!
!
!
ROUTINE OUTS(STRING (255) S, T)
PRINTSTRING(S." : ".T)
NEWLINE
END ; !OF OUTS
!
!
!
CONST STRING (9) ARRAY C
PARMS (0:63) = C
"","I8","L8","R8",""(4),"MAXDICT",""(5),"MINSTACK",""(17),
"QUOTES", "NOLIST", "NODIAG", "STACK",
"NOCHECK", "NOARRAY", "NOTRACE", "PROFILE",
"IMPS", "INHIBIOF", "ZERO", "XREF",
"LABELS", "LET", "CODE", "ATTR",
"OPT", "MAP", "DEBUG", "FREE",
"DYNAMIC","","EBCDIC","NOLINE",
""(2),"PARMZ","PARMY",
"PARMX","MISMATCH",""(2)
ROUTINE PRINTPARMS(LONGINTEGER P)
INTEGER I, FOUND
FOUND = 0
FOR I=0,1,63 CYCLE
IF P&1 = 1 START
IF PARMS(I) # "" START ; !IGNORE BLANK PARMS
IF FOUND = 0 THEN FOUND = 1 ELSE PRINTSYMBOL(',')
PRINTSTRING(PARMS(I))
FINISH
FINISH
P = P>>1
REPEAT
IF FOUND = 0 THEN PRINTSTRING("DEFAULTS")
END ; !OF PRINTPARMS
!
!
!
RECORD FORMAT C
CONTF (INTEGER DATAEND,DATASTART,PSIZE,FILETYPE, C
SUM,DATETIME,SPARE1,SPARE2,MARK, NULL1, UGLA, ASTK, USTK, C
NULL2, ITWIDTH, LDELIM, RDELIM, JOURNAL, SEARCHDIRCOUNT, C
ARRAYDIAG,INITWORKSIZE,SPARE,ITINSIZE,ITOUTSIZE, C
NOBL, ISTK, LONGINTEGER INITPARMS, INTEGER DATAECHO, C
TERMINAL, I23, I24, I25, I26, I27, I28, I29, I30, I31, I32, C
STRING (31) FSTARTFILE, BSTARTFILE, PRELOADFILE, MODDIR, C
CFAULTS, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15, C
S16, S17, S18, S19, S20, S21, S22, S23, S24, S25, S26, S27, C
S28, S29, S30, S31, S32, C
STRING (31) ARRAY SEARCHDIR(1:16));!1/2/79
RECORDFORMAT C
TERMF(BYTEINTEGER TYPE, STRING (31)NAME, STRING (222)SPARE)
RECORD (TERMF)ARRAYFORMAT C
TERMSF(1 : 31)
RECORD (TERMF)ARRAYNAME TERMS
!
!
!
INTEGERARRAY TARRAY(0 : 30)
INTEGERARRAY SCREENLINE(0 : 30)
INTEGER NEXTSCREEN
!
ROUTINE OPT(INTEGER FSYS, STRING (6)USER)
INTEGER J, SEG, GAP, T, P, AD
RECORDFORMAT DHF(INTEGER END, START, SIZE, TYPE, SUM, DT, PSTART)
RECORD (DHF)NAME DH
STRINGNAME F
INTEGER FLAG
STRING (11)FILE
RECORD (CONTF)NAME C
STRING (63) VALUE, KEYWORD, PARAM
INTEGER I, CONAD, IVALUE, MODE, OLDFLAG
SWITCH SW(1 : MAXKEY)
SWITCH VSW(1 : MAXVKEY)
FILE = "SS#OPT"
!
SEG = 0
GAP = 0
FLAG = DCONNECT(USER, FILE, FSYS, 1, 0, SEG, GAP)
RETURN IF FLAG # 0
!
C == RECORD(SEG << 18)
!
! SEG = 0
! GAP = 0
! FLAG = DCONNECT(USER, C_MODDIR, FSYS, 1, 0, SEG, GAP)
! %IF FLAG = 0 %START
! AD = SEG << 18
! DH == RECORD(AD)
! AD = AD + DH_PSTART
! P = 4
! %CYCLE
! F == STRING(AD+P)
! %EXIT %IF F = ""
! %IF F = "KNTLIB.SCREED75" %START
T = C_TERMINAL
T = 0 IF T < 0
IF SCREENLINE(T) < 0 START
SCREENLINE(T) = NEXTSCREEN
VVGOTO(10, NEXTSCREEN)
IF T = 0 C
THEN VVPRINTSTRING("Unspecified") C
ELSE VVPRINTSTRING(TERMS(T)_NAME)
NEXTSCREEN = NEXTSCREEN + 1
FINISH
TARRAY(T) = TARRAY(T) + 1
VVGOTO(40, SCREENLINE(T))
VVPRINTSTRING(ITOS(TARRAY(T)))
VVUPDATESCREEN
! %EXIT
! %FINISH
! P = P + LENGTH(F) + 1
! %REPEAT
! FLAG = DDISCONNECT(USER, C_MODDIR, FSYS, 0)
! %FINISH
!
FLAG = DDISCONNECT(USER, FILE, FSYS, 0)
END
!
!
!
VVINIT(J)
SEG = 0
GAP = 0
FLAG = DCONNECT("SUBSYS", "TERMINALCHS", -1, 1, 0, SEG, GAP)
RETURN UNLESS FLAG = 0 OR FLAG = 34
TERMS == ARRAY(SEG<<18+32, TERMSF)
!
NEXTSCREEN = 0
CYCLE J = 0, 1, 30
TARRAY(J) = 0
SCREENLINE(J) = -1
REPEAT
!
VVDEFINETRIGGERS(3, 0, 0)
VVGOTO(0, 0)
VVPRINTSTRING("Fsys")
AP = ADDR(P)
ADR = ADDR(UNAMES(0))
GET AV FSYS(NSYS, A)
!
CYCLE F = 0, 1, NSYS-1
FSYS = A(F)
VVGOTO(2, F+2)
VVPRINTSTRING(ITOS(FSYS))
VV UPDATE SCREEN
J = GETUSNAMES(NU, ADR, FSYS)
IF NU > 0 START
CYCLE U = 0, 7, (NU-1)*7
U1 == STRING(ADR+U)
IF LENGTH(S) = 6 START
CYCLE K = 1, 1, 6
C0 = BYTEINTEGER(ADDR(S)+K)
C1 = BYTEINTEGER(ADDR(U1)+K)
-> NEXT UNLESS C0 = '?' OR C0 = C1
REPEAT
FINISH
OPT(FSYS, U1)
NEXT:
REPEAT
FINISH
REPEAT
!
FLAG = DDISCONNECT("SUBSYS", "TERMINALCHS", -1, 0) IF FLAG = 0
VVDEFINETRIGGERS(-2, 0, 0)
!
OUTI("Unspecified", TARRAY(0))
CYCLE J = 1, 1, 30
OUTI(TERMS(J)_NAME, TARRAY(J)) IF TARRAY(J) > 0
REPEAT
END
ENDOFFILE