image of READY prompt

Wang2200.org

Listing of file='VEDIT' on disk='vmedia/731-8011A.wvd.zip'

# Sector 835, program filename = 'VEDIT'
0004 REM % (c) Copyright Wang Laboratories, Inc. 1986
0005 REM % EDIT VDISK CONFIGURATION -"VEDIT" ** Nori Odoi ** Rev. 1.00 * 12/10
     /86
0006 REM /24 SEPT., 90/RAM/     MAT SEARCH in line #2150 ends when a space is
                                       encountered in E5$(E5) producing erroro
     neous                                    "Duplicate VDISK" message.
0007 REM                        NOW, MAT SEARCH will check all 8 characters by
                                       changing E5$(E5) to STR(E5$(E5),1,8).
0008 REM /26 SEPT., 90/RAM/     This fix will enable VEDIT to accept shared mo
     de;                               changed line #431...IF D7(T) = 3 THEN 4
     37 to REM                                IF D7(T) = 3 THEN 437.
0010 REM % screen subs-
   : DIM T1$(416)1, R1, S0, T1(8),S4$80,T1$1
0020 REM % VDISKMAP
   : DIM F1$(50)12,F$,F,F6$40,A9$3
0023 REM /buffer
   : DIM F9$(8)30
0030 REM %E2$(=2200 addr,E3$(=volname,E4$(=libename,E5$(=filename,E7(=mode,E8$
     (=err messages,E1=last VDISK
   : DIM E2$(33)3, E3$(33)8, E4$(33)8, E5$(33)8,E7(33),E8$(32)18,E1, E$(33)8
   : REM /Config file
   : $FORMAT E7$=A3,A8,A8,A8,P1
0040 REM %D1$(1)=cntlr add; D2$=2200 addr;D3$()=vol name,D4$()=libe name;D5$()
     =file name;D7()=mode;D8$()=err msgs,D1$=alternate config file name
   : DIM D1$(4)8, D2$(8)3, D3$(8)8, D4$(8)8, D5$(8)8,D7(8),D8$(8)18,D1$8
0050 REM % C=EXIT,P$=Search variable, P9=Screen #,P9$='100 options,P8$=1st fie
     ld,E9$=Error msg,E9=print line,E=error,V=valid flag, E5=main loop,Work va
     r,locator array,scratch
   : DIM C,P$16,P9,P9$,P8$1,E9$80,E,V,E5,W$(1)66,L$(33)2,C,C1$,I,J,D
0100 REM /start
   : GOTO 2000
0110 REM %** DEFFN'45 - DMS\A0STATUS -- V<0=err,F6$=response,len V1
0112 DEFFN'45
   : V=1
   : REM construct command
   : F6$=ALL(00)
   : STR(A$,7,1)=HEX(52)
   : STR(A$,6,1) = BIN(#PART-1) AND HEX(0F) OR HEX(50)
   : $OPEN 118,#2,#3
   : ERRORV=-1
   : GOTO 119
0113 $GIO#2(4500)
   : ERRORV=-1
   : GOTO 119
0114 $BREAK
   : FOR D=1 TO 1200
   : $IF ON #2,115
   : NEXT D
   : V=-10
   : GOTO 119
0115 $IF ON #3,117
   : ERRORV=-1
   : GOTO 119
0116 $GIO#3(4550 405F)
   : $BREAK
   : FOR D=1 TO 1200
   : $IF ON #3,117
   : NEXT D
   : V=-10
   : GOTO 119
0117 $GIO #3 (4660 4270 8703 8704 1801 C340, A$)A$;STR(F6$,1,VAL(STR(A$,3,2),2
     ))
   : V1=VAL(STR(A$,3,2),2)
   : GOTO 119
0118 V=-20
0119 $CLOSE#2,#3
   : RETURN
0120 REM %** DEFFN'48 - SET\A0DEVICE\A0TABLE(comm addr) V<0=err
0122 DEFFN'48(A9$)
   : V=1
   : IF STR(A9$,1,1)<>"0" OR STR(A9$,2,1)="0" THEN 126
   : HEXPACK T1$ FROM STR(A9$,2,2)
   : IF MOD(VAL(T1$),4)>0 THEN 126
0123 REM /status addr
   : T1$=ADD HEX(01)
   : HEXUNPACK T1$ TO STR(A9$,2,2)
   : SELECT #1 <A9$>
   : ERRORGOTO 126
0124 REM /command addr
   : T1$=ADD HEX(01)
   : HEXUNPACK T1$ TO STR(A9$,2,2)
   : SELECT #2 <A9$>
   : ERRORGOTO 126
0125 REM /data addr
   : T1$ =ADD HEX(01)
   : HEXUNPACK T1$ TO STR(A9$,2,2)
   : SELECT #3 <A9$>
   : GOSUB '45
   : IF V<0 THEN RETURN
   : T$="D"
   : HEXUNPACK STR(F6$,4,1) TO STR(T$,2,2)
   : SELECT #4<T$>
   : RETURN
0126 V=-1
   : RETURN
0160 REM % **** DEFFN'50 - READ\A0MAP (reads VDISKMAP)
0180 DEFFN'50
   : V=1
   : DATA LOAD DC OPEN T"VDISKMAP"
   : ERRORE=ERR
   : V=0
   : RETURN
0190 MAT REDIM F1$(50)12
   : DATA LOAD DC F1$()
   : DATA SAVE DC CLOSE
   : RETURN
0270 REM %** DEFFN'60 - READ\A0CONFIG-Inp=config file, Out=succ-V=1,open faile
     d=-1,wrong file type=-2
0275 DEFFN'60(F$)
   : V=1
   : DATA LOAD DC OPEN T F$
   : ERRORE=ERR
   : V=-1
   : RETURN
0277 E2$(),E3$(),E4$(),E5$()=" "
   : MAT E7=ZER
   : E1=0
   : MAT REDIM F9$(8)28
   : FOR I=1 TO 5
   : DATA LOAD DC F9$()
   : ERRORGOTO 285
0279 IF END  THEN I=5
   : ELSE GOSUB 281
   : NEXT I
   : DATA SAVE DC CLOSE
   : RETURN
0281 REM /gosub to unpack records
   : FOR J=1 TO 8
   : IF STR(F9$(J),1,3)="ZZZ" THEN 283
   : E1=E1+1
   : $UNPACK(F=E7$)F9$(J) TO E2$(E1),E3$(E1),E4$(E1),E5$(E1),E7(E1)
   : ERRORGOTO 285
0282 NEXT J
   : RETURN
0283 I=5
   : RETURN
0285 REM /err
   : GOSUB '128("Could not prefill - not a configuration file",99,0,20)
   : V=-2
   : RETURN
0300 REM %** DEFFN'61-WRITE\A0CONFIG FILE-Inp=file name, Out=succ-V=1,open fai
     led=-1,write failed=-2
0308 DEFFN '61(F$)
   : V=1
   : DATA LOAD DC OPEN T F$
   : ERRORE=ERR
   : IF E=82 THEN GOSUB 317
   : IF E=0 THEN 310
   : V=-1
   : RETURN
0310 F=0
   : MAT REDIM F9$(8)28
   : FOR I=1 TO 5
   : GOSUB 314
   : DATA SAVE DC F9$()
   : ERRORE=ERR
   : V=-2
   : RETURN
0312 IF E2$(F)="ZZZ" THEN I=5
   : NEXT I
   : E2$(F)=" "
   : DATA SAVE DC END
   : DATA SAVE DC CLOSE
   : RETURN
0314 REM /pack records
   : FOR J=1 TO 8
   : F=F+1
   : IF F<=E1 THEN 315
   : E2$(F)="ZZZ"
   : E3$(F)=" "
   : E4$(F)=" "
   : E5$(F)=" "
   : E7(F)=1
0315 $PACK(F=E7$)F9$(J) FROM E2$(F),E3$(F),E4$(F),E5$(F),E7(F)
   : IF F<=E1 THEN 316
   : J=8
0316 NEXT J
   : RETURN
0317 REM /new config file
   : E=0
   : V=1
   : DATA SAVE DC OPEN T (7)F$
   : ERRORE=ERR
   : IF E<>83 THEN 318
   : REM /if config file was scratched
   : E=0
   : V=1
   : DATA SAVE DC OPEN T (F$)F$
   : ERRORE=ERR
0318 RETURN
0340 REM %** DEFFN'65-LOAD\A0TO\A0SCRN-for VEDIT
0344 DEFFN'65(P9)
   : P1= (P9*8)-7
   : J=1
   : D2$()=" "
   : D3$()=" "
   : D4$()=" "
   : D5$()=" "
   : MAT D7=ZER
   : FOR I=P1 TO P1+7
   : D3$(J)=E3$(I)
   : D4$(J)=E4$(I)
   : D5$(J)=E5$(I)
   : D2$(J)=E2$(I)
   : D8$(J)=E8$(I)
   : D7(J)=E7(I)
0348 J=J+1
   : NEXT I
   : RETURN
0360 REM %** DEFFN'66-LOAD\A0FROM\A0SCRN-for VEDIT
0364 DEFFN'66(P9)
   : P1= (P9*8)-7
   : J=1
   : FOR I=P1 TO P1+7
   : E3$(I)=D3$(J)
   : E4$(I)=D4$(J)
   : E5$(I)=D5$(J)
   : E2$(I)=D2$(J)
   : E8$(I)=D8$(J)
   : E7(I)=D7(J)
0368 J=J+1
   : NEXT I
   : RETURN
0430 REM %** DEFFN'72-VDISK\A0VAL-for VEDIT--E9$=" " if valid
0431 DEFFN'72
   : V=1
   : E9$=" "
   : FOR T=1 TO 8
   : IF D3$(T)=" "AND D4$(T)=" "AND D5$(T)=" "AND D2$(T)=" "THEN V=0
   : ELSE IF D5$(T)=" " OR D2$(T)=" " THEN 434
   : IF V=0 THEN 432
   : REM IF D7(T)=3 THEN 437
   : IF POS("123567"=STR(D2$(T),2,1))=0 THEN E9$="Invalid platter address"
0432 IF V=1 AND E9$=" " THEN NEXT T
   : IF E9$<>" " THEN 435
   : IF V=1 THEN RETURN
   : IF T=8 THEN 433
   : IF STR(D2$(),(T*3)+1)<>" "OR STR(D3$(),(T*8)+1)<>" "OR STR(D4$(),(T*8)+1)
     <>" "OR STR(D5$(),(T*8)+1)<>" "THEN 434
   : RETURN
0433 IF P9=4 THEN RETURN
   : T1=P9*8
   : IF STR(E2$(),(T1*3)+1)<>" "OR STR(E3$(),(T1*8)+1)<>" "OR STR(E4$(),(T1*8)
     +1)<>" "OR STR(E5$(),(T1*8)+1)<>" "THEN 434
   : RETURN
0434 E9$="Please delete or complete entry before continuing"
0435 T3=((T-1)*5)+4
   : RETURN
0437 E9$="Shared mode is not available at this time"
   : T3=((T-1)*5)+8
   : RETURN
0440 REM %** DEFFN'73-CONFIG\A0PREFILL-if prefill desired, then prefill,V=1 if
      successful,=0 if not,=-1 if cancel
0445 DEFFN'73
   : V=1
   : IF D1$(3)=" " THEN RETURN
   : IF D2$(1)=" " AND E2$(1)=" " THEN 450
   : E9$="Press EXEC/RUN to load "&D1$(3)&", CANCEL/EDIT to re-enter configura
     tion file"
   : GOSUB '128(E9$,24,0,20)
0447 KEYIN T$,,448
   : IF STR(T$,1,1)=HEX(82) OR STR(T$,1,1)=HEX(A1) THEN 450
   : GOTO 447
0448 IF STR(T$,1,1)=HEX(50) OR STR(T$,1,1)=HEX(F0) THEN 449
   : ELSE GOTO 447
0449 REM /Cancel
   : V=-1
   : PRINT AT(23,0,80);
   : RETURN
0450 REM /Prefill
   : PRINT AT(23,0,80);
   : GOSUB '128("Loading from configuration file",24,0,20)
   : GOSUB '60(D1$(3))
   : IF V=1 THEN 452
   : IF V=-1 THEN GOSUB '90(E)
   : RETURN
0452 D1$=D1$(3)
   : D1$(3),E8$(),D8$()=" "
   : GOSUB '65(1)
   : REM /note-recursion
   : GOSUB '100(HEX(FA)," ")
   : PRINT AT(23,0,80);
   : E9$=D1$&" has been loaded and the Save field has been updated"
   : GOSUB '128(E9$,99,1,20)
   : RETURN
0460 REM %** DEFFN'74-FIND\A0ATTACHED/DETACHED-"A"=Att,"D"=Det.V=index,if err
     <0
0465 DEFFN'74(F$)
   : V=-2
   : FOR I=1 TO 50
   : IF STR(F1$(I),1,3)="ZZZ" THEN 468
   : GOSUB '48(STR(F1$(I),1,3))
   : IF V<0 THEN 469
   : IF F$="A" THEN 466
   : IF STR(F6$,,1)<>HEX(00)THEN 469
   : ELSE V=I
   : IF V>0 THEN RETURN
0466 IF STR(F6$,,1)=HEX(00)OR STR(F6$,3,1)=HEX(00)THEN 469
   : V=I
   : RETURN
0468 I=50
0469 NEXT I
   : V=-5
   : RETURN
0500 REM % **** DEFFN'90 - DISK\A0ERR
0515 DEFFN'90(D)
   : RESTORE LINE 4010,D-79
   : READ E9$
   : GOSUB '128(E9$,99,1,20)
   : RETURN
0900 REM % Changes in '100 - to allow more fields - 1001,1005,1006,1009,1150-1
     178 - Renumbered data to 1300
0901 REM /1001
   : S4=1
   : S3=43
   : S2=0
   : S1=0
   : T0$=" "
0905 REM 1005
   : T9=0
   : FOR T4=1TO 43
0906 REM /1006
   : ON T4GOSUB 1013,1018,1048,1023,1028,1033,1038,1043,1053,1058,1063,1068,10
     73,1078,1083,1088,1093,1098,1103,1108,1113,1118,1123,1128,1133,1138,1143,
     1148,1150,1152,1154,1156,1158,1160,1162,1164,1166,1168,1170,1172,1174,117
     6,1178
0909 REM 1009
   : ON T3GOSUB 1013,1018,1048,1023,1028,1033,1038,1043,1053,1058,1063,1068,10
     73,1078,1083,1088,1093,1098,1103,1108,1113,1118,1123,1128,1133,1138,1143,
     1148,1150,1152,1154,1156,1158,1160,1162,1164,1166,1168,1170,1172,1174,117
     6,1178
0950 REM % Changes in '100 - to allow prefill
0957 REM % 1007
   : REM /Add display screen only option - FA
   : NEXT T4
   : IF POS(S9$=FA)=0 THEN 1008
   : REM /else only display
   : RETURN
0963 REM % 1013
   : REM add prefill
   : MAT REDIM T1$(001)008
   : GOSUB '126(4,52,8,1,1,001,1,1,D1$(3),S0$,"X",1,T9," ",1)
   : IF R1<=0 OR T9<>-1 THEN RETURN
   : C1=S4
   : C1$=T0$
   : D1$(3)=T1$()
   : L$()=S0$
   : W$()=S9$
   : REM /RECURSION
   : GOSUB '73
   : IF V=1 THEN T3=2
   : ELSE T3=1
   : S4=C1
   : C1$=T0$
   : S9$=W$()
   : S0$=L$()
   : T9=-1
0964 REM /1014
   : T0$=HEX(18000150)
   : GOTO 1009
1000 DEFFN'100(S9$,S0$)
   : REM Display and Accept EDITV    (VER 7.00)
1001 S4=1
   : S3=43
   : S2=0
   : S1=0
   : T0$=" "
1002 IF POS(S9$=F3)>0 THEN S4=VAL(STR(S9$,POS(S9$=F3)+1))
1003 IF POS(S9$=F2)>0 THEN T0$=STR(S9$,POS(S9$=F2)+1,4)
1004 IF POS(S9$=F6)>0 THEN GOTO 1008
   : RESTORE LINE 1300
   : GOSUB '129
1005 T9=0
   : FOR T4=1TO 43
1006 ON T4GOSUB 1013,1018,1048,1023,1028,1033,1038,1043,1053,1058,1063,1068,10
     73,1078,1083,1088,1093,1098,1103,1108,1113,1118,1123,1128,1133,1138,1143,
     1148,1150,1152,1154,1156,1158,1160,1162,1164,1166,1168,1170,1172,1174,117
     6,1178
1007 REM /Add display screen only option - FA
   : NEXT T4
   : IF POS(S9$=FA)=0 THEN 1008
   : REM /else only display
   : RETURN
1008 T9=-1
   : IF POS(S9$=F9)>0 THEN T3=VAL(STR(S9$,POS(S9$=F9)+1))
   : ELSE T3=S4
1009 ON T3GOSUB 1013,1018,1048,1023,1028,1033,1038,1043,1053,1058,1063,1068,10
     73,1078,1083,1088,1093,1098,1103,1108,1113,1118,1123,1128,1133,1138,1143,
     1148,1150,1152,1154,1156,1158,1160,1162,1164,1166,1168,1170,1172,1174,117
     6,1178
1010 ON R1GOTO ,,,,1011,1012
   : RETURN
1011 IF POS(S9$=F5)>0 AND T3=S3THEN RETURN
   : T3=MOD(T3+1,S3+1)
   : IF T3=0 THEN T3=S4
   : GOTO 1009
1012 T3=MOD(T3-1,S3+1)
   : IF T3<S4 THEN GOTO 1012
   : GOTO 1009
1013 MAT REDIM T1$(001)008
   : GOSUB '126(4,52,8,1,1,001,1,1,D1$(3),S0$,"X",1,T9," ",1)
   : IF R1<=0 OR T9<>-1 THEN RETURN
   : D1$(3)=T1$()
   : ON R1 GOTO 1016,,,1014,1016,1016,,,,,1014,,,1014
   : IF T1$()=" " THEN RETURN
1014 GOSUB '128("Invalid key ignored",99,0,20)
   : GOTO 1017
1016 C1=S4
   : C1$=T0$
   : L$()=S0$
   : W$()=S9$
   : REM /RECURSION
   : GOSUB '73
   : IF V=1 THEN T3=2
   : ELSE T3=1
   : S4=C1
   : C1$=T0$
   : S9$=W$()
   : S0$=L$()
   : T9=-1
1017 E9$=" "
   : T0$=HEX(18000150)
   : RETURN  CLEAR
   : GOTO 1009
1018 MAT REDIM T1$(001)008
   : GOSUB '126(5,52,8,1,1,001,1,1,D1$,S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D1$=T1$()
   : RETURN
1023 MAT REDIM T1$(001)003
   : GOSUB '126(9,1,3,1,1,001,1,1,D2$(1),S0$,"H",1,T9," ",1)
   : IF R1>0 THEN D2$(1)=T1$()
   : RETURN
1028 MAT REDIM T1$(001)006
   : GOSUB '126(9,11,6,1,1,001,1,1,D3$(1),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D3$(1)=T1$()
   : RETURN
1033 MAT REDIM T1$(001)008
   : GOSUB '126(9,21,8,1,1,001,1,1,D4$(1),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D4$(1)=T1$()
   : RETURN
1038 MAT REDIM T1$(001)008
   : GOSUB '126(9,31,8,1,1,001,1,1,D5$(1),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D5$(1)=T1$()
   : RETURN
1043 MAT REDIM T1$(4)1
   : RESTORE LINE 1043
   : FOR I=1TO 4
   : READ T1$(I)
   : NEXT I
   : GOSUB '126(9,44,1,1,5,4,1,4,T1$(),S0$," ",D7(1),T9," ",2)
   : IF R1>0 THEN D7(1)=T0
   : RETURN
1044 DATA  "E","R","S"," "
1048 MAT REDIM T1$(8)18
   : GOSUB '127(9,62,18,8,1,008,1,1,D8$()," ")
   : RETURN
1053 MAT REDIM T1$(001)003
   : GOSUB '126(10,1,3,1,1,001,1,1,D2$(2),S0$,"H",1,T9," ",1)
   : IF R1>0 THEN D2$(2)=T1$()
   : RETURN
1058 MAT REDIM T1$(001)006
   : GOSUB '126(10,11,6,1,1,001,1,1,D3$(2),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D3$(2)=T1$()
   : RETURN
1063 MAT REDIM T1$(001)008
   : GOSUB '126(10,21,8,1,1,001,1,1,D4$(2),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D4$(2)=T1$()
   : RETURN
1068 MAT REDIM T1$(001)008
   : GOSUB '126(10,31,8,1,1,001,1,1,D5$(2),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D5$(2)=T1$()
   : RETURN
1073 MAT REDIM T1$(4)1
   : RESTORE LINE 1073
   : FOR I=1TO 004
   : READ T1$(I)
   : NEXT I
   : GOSUB '126(10,44,1,1,5,4,1,4,T1$(),S0$," ",D7(2),T9," ",2)
   : IF R1>0 THEN D7(2)=T0
   : RETURN
1074 DATA  "E","R","S"," "
1078 MAT REDIM T1$(001)003
   : GOSUB '126(11,1,3,1,1,001,1,1,D2$(3),S0$,"H",1,T9," ",1)
   : IF R1>0 THEN D2$(3)=T1$()
   : RETURN
1083 MAT REDIM T1$(001)006
   : GOSUB '126(11,11,6,1,1,001,1,1,D3$(3),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D3$(3)=T1$()
   : RETURN
1088 MAT REDIM T1$(001)008
   : GOSUB '126(11,21,8,1,1,001,1,1,D4$(3),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D4$(3)=T1$()
   : RETURN
1093 MAT REDIM T1$(001)008
   : GOSUB '126(11,31,8,1,1,001,1,1,D5$(3),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D5$(3)=T1$()
   : RETURN
1098 MAT REDIM T1$(4)1
   : RESTORE LINE 1098
   : FOR I=1TO 4
   : READ T1$(I)
   : NEXT I
   : GOSUB '126(11,44,1,1,5,4,1,4,T1$(),S0$," ",D7(3),T9," ",2)
   : IF R1>0 THEN D7(3)=T0
   : RETURN
1099 DATA  "E","R","S"," "
1103 MAT REDIM T1$(001)003
   : GOSUB '126(12,1,3,1,1,001,1,1,D2$(4),S0$,"H",1,T9," ",1)
   : IF R1>0 THEN D2$(4)=T1$()
   : RETURN
1108 MAT REDIM T1$(001)006
   : GOSUB '126(12,11,6,1,1,001,1,1,D3$(4),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D3$(4)=T1$()
   : RETURN
1113 MAT REDIM T1$(001)008
   : GOSUB '126(12,21,8,1,1,001,1,1,D4$(4),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D4$(4)=T1$()
   : RETURN
1118 MAT REDIM T1$(001)008
   : GOSUB '126(12,31,8,1,1,001,1,1,D5$(4),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D5$(4)=T1$()
   : RETURN
1123 MAT REDIM T1$(4)1
   : RESTORE LINE 1123
   : FOR I=1TO 4
   : READ T1$(I)
   : NEXT I
   : GOSUB '126(12,44,1,1,5,4,1,4,T1$(),S0$," ",D7(4),T9," ",2)
   : IF R1>0 THEN D7(4)=T0
   : RETURN
1124 DATA  "E","R","S"," "
1128 MAT REDIM T1$(001)003
   : GOSUB '126(13,1,3,1,1,001,1,1,D2$(5),S0$,"H",1,T9," ",1)
   : IF R1>0 THEN D2$(5)=T1$()
   : RETURN
1133 MAT REDIM T1$(001)006
   : GOSUB '126(13,11,6,1,1,001,1,1,D3$(5),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D3$(5)=T1$()
   : RETURN
1138 MAT REDIM T1$(001)008
   : GOSUB '126(13,21,8,1,1,001,1,1,D4$(5),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D4$(5)=T1$()
   : RETURN
1143 MAT REDIM T1$(001)008
   : GOSUB '126(13,31,8,1,1,001,1,1,D5$(5),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D5$(5)=T1$()
   : RETURN
1148 MAT REDIM T1$(4)1
   : RESTORE LINE 1148
   : FOR I=1TO 4
   : READ T1$(I)
   : NEXT I
   : GOSUB '126(13,44,1,1,5,4,1,4,T1$(),S0$," ",D7(5),T9," ",2)
   : IF R1>0 THEN D7(5)=T0
   : RETURN
1149 DATA  "E","R","S"," "
1150 MAT REDIM T1$(001)003
   : GOSUB '126(14,1,3,1,1,001,1,1,D2$(6),S0$,"H",1,T9," ",1)
   : IF R1>0 THEN D2$(6)=T1$()
   : RETURN
1152 MAT REDIM T1$(001)006
   : GOSUB '126(14,11,6,1,1,001,1,1,D3$(6),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D3$(6)=T1$()
   : RETURN
1154 MAT REDIM T1$(001)008
   : GOSUB '126(14,21,8,1,1,001,1,1,D4$(6),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D4$(6)=T1$()
   : RETURN
1156 MAT REDIM T1$(001)008
   : GOSUB '126(14,31,8,1,1,001,1,1,D5$(6),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D5$(6)=T1$()
   : RETURN
1158 MAT REDIM T1$(4)1
   : RESTORE LINE 1148
   : FOR I=1TO 4
   : READ T1$(I)
   : NEXT I
   : GOSUB '126(14,44,1,1,5,4,1,4,T1$(),S0$," ",D7(6),T9," ",2)
   : IF R1>0 THEN D7(6)=T0
   : RETURN
1160 MAT REDIM T1$(001)003
   : GOSUB '126(15,1,3,1,1,001,1,1,D2$(7),S0$,"H",1,T9," ",1)
   : IF R1>0 THEN D2$(7)=T1$()
   : RETURN
1162 MAT REDIM T1$(001)006
   : GOSUB '126(15,11,6,1,1,001,1,1,D3$(7),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D3$(7)=T1$()
   : RETURN
1164 MAT REDIM T1$(001)008
   : GOSUB '126(15,21,8,1,1,001,1,1,D4$(7),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D4$(7)=T1$()
   : RETURN
1166 MAT REDIM T1$(001)008
   : GOSUB '126(15,31,8,1,1,001,1,1,D5$(7),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D5$(7)=T1$()
   : RETURN
1168 MAT REDIM T1$(4)1
   : RESTORE LINE 1148
   : FOR I=1TO 4
   : READ T1$(I)
   : NEXT I
   : GOSUB '126(15,44,1,1,5,4,1,4,T1$(),S0$," ",D7(7),T9," ",2)
   : IF R1>0 THEN D7(7)=T0
   : RETURN
1170 MAT REDIM T1$(001)003
   : GOSUB '126(16,1,3,1,1,001,1,1,D2$(8),S0$,"H",1,T9," ",1)
   : IF R1>0 THEN D2$(8)=T1$()
   : RETURN
1172 MAT REDIM T1$(001)006
   : GOSUB '126(16,11,6,1,1,001,1,1,D3$(8),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D3$(8)=T1$()
   : RETURN
1174 MAT REDIM T1$(001)008
   : GOSUB '126(16,21,8,1,1,001,1,1,D4$(8),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D4$(8)=T1$()
   : RETURN
1176 MAT REDIM T1$(001)008
   : GOSUB '126(16,31,8,1,1,001,1,1,D5$(8),S0$,"X",1,T9," ",1)
   : IF R1>0 THEN D5$(8)=T1$()
   : RETURN
1178 MAT REDIM T1$(4)1
   : RESTORE LINE 1148
   : FOR I=1TO 4
   : READ T1$(I)
   : NEXT I
   : GOSUB '126(16,44,1,1,5,4,1,4,T1$(),S0$," ",D7(8),T9," ",2)
   : IF R1>0 THEN D7(8)=T0
   : RETURN
1300 DATA 01,06,00,"*****"
1302 DATA 01,14,00,"E D I T  V D I S K  C O N F I G U R A T I O N  F I L E"
1304 DATA 01,71,00,"*****"
1310 DATA 01,14,00,"E D I T  V D I S K  C O N F I G U R A T I O N  F I L E"
1320 DATA 01,71,00,"*****"
1330 DATA 02,34,00,"Revision 2.0 "
1340 DATA 04,22,00,"Load from configuration file:"
1350 DATA 05,24,00,"Save to configuration file:"
1360 DATA 07,01,00,"2200"
1370 DATA 07,11,00,"-- VDISK Name on VS System --"
1380 DATA 07,44,00,"Exclusive, Read Only,"
1390 DATA 08,01,00,"Platter"
1400 DATA 08,11,00,"Volume"
1410 DATA 08,21,00,"Library"
1420 DATA 08,31,00,"File Name"
1430 DATA 08,44,00,"or Shared?"
1440 DATA 19,58,00,"SF24 - Delete entry"
1450 DATA 20,49,00,"PREV SCRN/SF2 - Previous screen "
1460 DATA 21,49,00,"NEXT SCRN/SF3 - Next screen"
1470 DATA 22,54,00,"EXEC/RUN - Save file"
1480 DATA 23,51,00,"CANCEL/EDIT - Exit"
1490 DATA 09,01,99,HEX(0006)
1500 DATA 09,11,99,HEX(0005)
1510 DATA 09,21,99,HEX(0006)
1520 DATA 09,31,99,HEX(0008)
1530 DATA 09,44,99,HEX(0014)
1540 DATA 0,0,0," "
2000 REM %MAIN
   : GOSUB '50
   : IF V=1 THEN GOSUB '74("A")
   : ELSE V=-3
   : D1$(3)=" "
   : IF V>0 THEN D1$(3)=STR(F1$(V),4,8)
   : ELSE D1$(3)=STR(F1$(1),4,8)
2003 PRINT HEX(03)
   : C=0
   : P9$=HEX(F218000150)
   : P9=1
   : D8$(),E2$(),E3$(),E4$,E5$()=" "
   : MAT E7=ZER
2010 REM %Repeat loop until (EXIT = FALSE)
   : E9=99
   : GOSUB '100(P9$,HEX(504E756418))
2090 REM % case ( RESPONSE(R1) )
   : IF R1=-2 THEN 2100
   : IF R1<=0 THEN 2105
   : IF R1=1 THEN 2130
   : IF R1=2 THEN 2200
   : IF R1=3 THEN 2215
   : IF R1=11 THEN 2110
   : IF R1=14 THEN 2113
   : IF R1=4 AND S0=24 THEN 2120
2100 REM %  case-screen not found
   : E9$="Could not access screen"
   : P9$=HEX(F224000180)
   : C=1
   : E9=23
   : GOTO 2230
2105 REM %  case-shift cancel/cancel, exit program
   : IF D2$()=" " AND E2$()=" "AND D5$()=" " AND E5$()=" "THEN 2108
   : GOSUB '128("Press EXEC/RUN to exit, CANCEL/EDIT to return to screen",24,0
     ,20)
2106 KEYIN T$,,2107
   : IF STR(T$,1,1)=HEX(82) OR STR(T$,1,1)=HEX(A1) THEN 2108
   : GOTO 2106
2107 IF STR(T$,1,1)<>HEX(50) AND STR(T$,1,1)<>HEX(F0) THEN 2106
   : P9$=HEX(F218000140F6F9)&BIN(T3)
   : GOTO 2230
2108 E9$="Edit VDISK Configuration Utility cancelled"
   : C=1
   : E9=23
   : GOTO 2230
2110 REM %  case-north arrow, move cursor to above row
   : IF T3>8 THEN P8=T3-5
   : ELSE P8=T3
   : P9$=HEX(F218000140F6F9)&BIN(P8)
   : GOTO 2230
2113 REM %  case-south arrow, move cursor to below row
2116 IF T3<=38 AND T3>2 THEN P8=T3+5
   : ELSE P8=T3
   : P9$=HEX(F218000140F6F9)&BIN(P8)
   : GOTO 2230
2120 REM %  case-'24, delete entry
   : GOSUB '128("Deleting entry",24,0,20)
   : IF T3<4 THEN 2124
   : GOSUB '66(P9)
   : E8=(FIX((T3-4)/5)+1)+((P9-1)*8)
   : IF E8=32 THEN 2122
2121 STR(E2$(),((E8-1)*3)+1)=STR(E2$(),(E8*3)+1)
   : STR(E3$(),((E8-1)*8)+1)=STR(E3$(),(E8*8)+1)
   : STR(E4$(),((E8-1)*8)+1)=STR(E4$(),(E8*8)+1)
   : STR(E5$(),((E8-1)*8)+1)=STR(E5$(),(E8*8)+1)
   : STR(E8$(),((E8-1)*18)+1)=STR(E8$(),(E8*18)+1)
   : FOR I=E8 TO 31
   : E7(I)=E7(I+1)
   : NEXT I
2122 E2$(32),E3$(32),E4$(32),E5$(32),E8$(32)=" "
   : GOSUB '65(P9)
   : PRINT AT(23,0,80)
   : P9$=HEX(F218000140F9)&BIN(T3)
   : GOTO 2230
2124 REM /not an entry
   : P9$=HEX(F218000140F6F9)&BIN(T3)
   : GOTO 2230
2130 REM %  case-exec, edit VDISK Config file
   : REM /validation
   : IF D1$<>" " THEN 2131
   : E9$="Please specify new configuration file"
   : P9$=HEX(F218000140F6F902)
   : GOTO 2230
2131 REM /Save screen vars in storage vars
   : GOSUB '72
   : IF E9$<>" " THEN 2134
   : GOSUB '66(P9)
   : IF E2$(1)=" " THEN 2133
   : E1=LEN(E2$())/3
   : IF FIX(E1)<>E1 THEN E1=FIX(E1)+1
   : GOTO 2135
2133 E9$="No valid VDISK entries"
2134 P9$=HEX(F218000140F410F6F9)&BIN(T3)
   : GOTO 2230
2135 E9$="Press EXEC/RUN to save "&D1$&", CANCEL/EDIT to return to screen"
   : GOSUB '128(E9$,24,0,20)
2136 KEYIN T$,,2137
   : IF STR(T$,1,1)=HEX(82) OR STR(T$,1,1)=HEX(A1) THEN 2140
   : GOTO 2136
2137 IF STR(T$,1,1)<>HEX(50) AND STR(T$,1,1)<>HEX(F0) THEN 2136
   : E9$=D1$&" not saved"
   : P9$=HEX(F218000140F6F9)&BIN(T3)
   : E9=24
   : GOTO 2230
2138 E9$="File not saved"
   : C=1
   : E9=23
   : GOTO 2230
2140 REM /Sort by platter address and save
   : PRINT AT(23,0,80)
   : GOSUB '128("Sorting by platter address",24,0,20)
   : MAT REDIM E2$(E1)3,E3$(E1)8,E4$(E1)8,E5$(E1)8,E7(E1)
   : MAT SORT E2$() TO W$(),L$()
   : E$()=" "
   : MAT MOVE E2$(), L$()TO E$()
   : MAT MOVE E$() TO E2$()
   : E$()=" "
   : MAT MOVE E3$(),L$() TO E$()
   : MAT MOVE E$() TO E3$()
2142 E$()=" "
   : MAT MOVE E4$(), L$()TO E$()
   : MAT MOVE E$() TO E4$()
   : E$()=" "
   : MAT MOVE E5$(),L$() TO E$()
   : MAT MOVE E$() TO E5$()
   : E$()=" "
   : MAT MOVE E7(),L$()TO E$()
   : MAT MOVE E$() TO E7()
   : MAT REDIM E2$(33)3,E3$(33)8,E4$(33)8,E5$(33)8,E7(33)
2145 E8=0
   : FOR E5=1 TO E1
   : IF E2$(E5)<>E2$(E5+1)THEN 2150
   : IF E8$(E5)=" " THEN E8$(E5),E8$(E5+1)="Duplicate platter"
   : E8=1
2150 MAT SEARCH E5$(),=STR(E5$(E5),1,8) TO L$() STEP 8
   : FOR I=1 TO 64 STEP 2
   : IF STR(L$(),I,2)=HEX(0000) THEN 2152
   : E=FIX(VAL(STR(L$(),I,2),2)/8)+1
   : IF E=E5 THEN 2154
   : IF E3$(E)<>E3$(E5) OR E4$(E)<>E4$(E5) THEN 2154
   : E8=1
   : E8$(E5),E8$(E)="Duplicate VDISK"
   : GOTO 2154
2152 I=64
2154 NEXT I
2158 NEXT E5
   : IF E8=0 THEN 2160
   : E9$="Please delete or edit duplicate entries."
   : P9$=HEX(F218000140F904)
   : GOSUB '65(P9)
   : GOTO 2230
2160 GOSUB '61(D1$)
2170 C=0
   : E9=24
   : E9$="Configuration file saved"
   : P9$=HEX(F218000140)
   : GOSUB '65(P9)
   : GOTO 2230
2200 REM %  case-previous screen, get it if possible, or display error
   : IF P9<=1 THEN 2202
   : GOSUB '72
   : IF E9$<>" " THEN 2207
   : GOSUB '66(P9)
   : P9=P9-1
   : GOSUB '65(P9)
   : P9$=HEX(F218000140F9)&BIN(4)
   : GOTO 2230
2202 REM /Error
   : E9$="No previous screen"
2207 P9$=HEX(F218000140F410F6F9)&BIN(T3)
   : GOTO 2230
2215 REM %  case-next screen, get it if possible, or display error
   : IF P9=4 THEN 2222
   : REM /Validate
   : GOSUB '72
   : IF V=0 THEN 2222
   : IF E9$<>" " THEN 2224
   : GOSUB '66(P9)
   : P9=P9+1
   : GOSUB '65(P9)
   : P9$=HEX(F218000140F904)
   : GOTO 2230
2222 E9$="No next screen"
2224 P9$=HEX(F218000140F410F6F9)&BIN(T3)
2230 REM %UNTIL (EXIT = TRUE)
   : PRINT AT(23,0,80);
   : IF E9$<>" " THEN GOSUB '128(E9$,E9,0,20)
   : E9$=" "
   : IF C=0 THEN 2010
3015 REM % Create exit
3025 PRINT AT(23,00,80);
   : GOSUB '128("Loading VS Services Menu",24,0,20)
3030 LOAD T"@VSMENU"
3800 REM SE.SUBS, RELEASE 7.00, (08/23/82) SCREEN SUBROUTINES
3801 DIM T1(8),T2(2),S1$,S2$124,S3$1,S4$80,T1$1,T2$80,T3$1,T4$3,T$(10)1
3802 DEFFN'126(T1(1),T1(2),T1(3),T1(4),T1(5),T1(6),T1(7),T1(8),T1$(),S0$,S2$,T
     2,T9,T$(),S9)
   : S3$=S2$
   : I=20
   : GOSUB 3864
   : T2,T5=MIN(MAX(1,T2),T1(6))
   : $TRAN(T$(),HEX(202E))R
   : T$(5)="5"
   : R1=1
   : IF S9>1THEN 3806
   : IF T9<0THEN 3803
   : T$(5)="5"
   : T3$=S2$
   : GOSUB 3831
   : S2$=T3$
   : IF T9=0THEN 3805
   : T2=T5
3803 GOSUB 3835
   : GOSUB '130(T0,T1,T1(3),S3$,T1$(T2),S0$," ",T$(),T0$)
   : T1$(T2)=S4$
   : IF T$(10)=" "THEN 3804
   : GOSUB '125
   : IF R1=-2THEN 3803
3804 IF R1<5OR R1=11OR R1=14THEN 3805
   : IF R1=5THEN T2=T2+1
   : IF R1=6THEN T2=T2-1
   : IF T2>=1AND T2<=T1(6)THEN 3803
3805 RETURN
3806 S8$=S0$
   : SELECT PRINT 205(80)
   : PRINT HEX(0202020F);
   : $TRAN(S2$,HEX(8520))R
   : T2=T2-1
3808 T2=MAX(1,MOD(T2+1,T1(6)))
   : IF STR(T1$(T2),,1)=HEX(00)THEN 3808
3810 IF T9<0THEN 3814
   : T5=T2
   : FOR T2=1TO T1(6)
   : IF S9=2THEN 3811
   : T4$=STR(S2$,T2,1)&HEX(0F09)
   : GOTO 3812
3811 IF T2=T5THEN T4$=HEX(8B0E09)
   : ELSE T4$=HEX(900F09)
3812 GOSUB 3835
   : GOSUB 3824
   : NEXT T2
   : T2=T5
   : IF T9=0THEN 3825
3814 IF S9=3THEN S8$=S8$&"DI"
   : GOSUB 3835
   : PRINT HEX(06);AT(T0-1,T1-1);
   : T8=1
   : GOSUB 3839
   : IF S9=2AND R1>08AND R1<15THEN 3825
   : IF R1<7THEN 3825
   : IF S9=2THEN 3818
   : IF POS(HEX(8B85)=STR(S2$,T2,1))=0THEN 3819
   : ON R1-8GOTO 3815,3816
   : GOTO 3819
3815 STR(S2$,T2,1)=HEX(85)
   : GOTO 3817
3816 STR(S2$,T2,1)=HEX(8B)
3817 T4$=STR(S2$,T2,1)&HEX(0F09)
   : GOSUB 3824
   : I=1
   : GOTO 3822
3818 T4$=HEX(900F09)
   : GOSUB 3824
3819 ON POS(HEX(2008)=T1$)GOTO 3820,3821
   : GOSUB 3826
   : GOTO 3823
3820 I=1
   : GOTO 3822
3821 I=-1
3822 T2=T2+I
   : T2=MOD(T2,T1(6))
   : IF T2=0THEN T2=T1(6)
   : IF T1$(T2)=" "OR STR(T1$(T2),,1)=HEX(00)THEN 3822
3823 IF S9=3THEN T4$=STR(S2$,T2,1)&HEX(0F09)
   : ELSE T4$=HEX(8B0E09)
   : GOSUB 3835
   : GOSUB 3824
   : GOTO 3814
3824 PRINT HEX(06);AT(T0-1,T1-1);
   : IF T1$(T2)>" "THEN PRINT HEX(0E);T4$;STR(T1$(T2));
   : ELSE IF STR(T1$(T2),,1)>HEX(00)THEN PRINT TAB(T1-1+2);STR(T1$(T2));
   : RETURN
3825 $TRAN(S2$,HEX(2085))R
   : T0=T2
   : PRINT HEX(0F0202000F);
   : IF S2=2THEN RETURN
   : MAT REDIM T1$(T1(6))1
   : T1$()=S2$
   : SELECT PRINT 005(80)
   : RETURN
3826 T1$=OR HEX(20)
   : S=-1
   : IF T2=T1(6)THEN 3827
   : FOR I=T2+1TO T1(6)
   : T3$=STR(T1$(I),1,1)OR HEX(20)
   : IF T3$<>T1$THEN NEXT I
   : ELSE S=I
3827 IF T2=1OR S>0THEN 3828
   : FOR I=1TO T2-1
   : T3$=STR(T1$(I),1,1)OR HEX(20)
   : IF T3$<>T1$THEN NEXT I
   : ELSE S=I
3828 IF S>-1THEN T2=S
   : RETURN
3830 DEFFN'127(T1(1),T1(2),T1(3),T1(4),T1(5),T1(6),T1(7),T1(8),T1$(),T$())
   : $TRAN(T$(),HEX(202E))R
3831 SELECT PRINT 405(80)
   : IF T$(7)=" "THEN PRINT HEX(020402000E06);
   : ELSE PRINT HEX(0F06)
   : FOR T2=1TO T1(6)
   : GOSUB 3835
   : S2$=T1$(T2)
   : IF T$(3)=" "OR S2$=" "THEN 3832
   : STR(S2$,,LEN(S2$))=ALL(8B)
3832 IF T$(5)>" "THEN $TRAN(S2$,HEX(8520))R
   : PRINT AT(T0-1,T1-1);
   : IF STR(S2$,,1)>HEX(00)THEN PRINT STR(S2$,,T1(3));
   : NEXT T2
   : SELECT PRINT 005(80)
   : RETURN
3835 IF T$(4)>" "THEN T0=INT((T2-1)/T1(8))*T1(7)+T1(1)
   : ELSE T0=MOD((T2-1),T1(4))*T1(7)+T1(1)
   : IF T$(4)>" "THEN T1=MOD((T2-1),T1(8))*T1(5)+T1(2)
   : ELSE T1=INT((T2-1)/T1(4))*T1(5)+T1(2)
   : T0=T0+T2(1)
   : T1=T1+T2(2)
   : RETURN
3836 IF T0$<>" "THEN GOSUB 3860
   : IF T>0THEN GOSUB 3862
   : RETURN
3838 T=1
   : PRINT HEX(06070E);AT(23,0,40);" Invalid key ignored";AT(T0-1,T1-2+T8);
3839 R1=99
   : IF T$(9)=" "THEN PRINT HEX(02050F);
   : KEYIN T1$,,3845
   : GOSUB 3836
   : IF T1$>HEX(82)THEN 3838
   : IF T$(9)=" "THEN 3841
   : IF POS(HEX(8182)=T1$)=0OR POS(S8$=T1$)=0THEN 3838
3841 IF T1$>HEX(82)THEN 3838
   : ON POS(HEX(81820D)=T1$)GOTO 3847,3843,3849
   : RETURN
3843 R1=1
   : RETURN
3845 GOSUB 3836
   : IF T1$>HEX(1F)THEN 3846
   : IF POS(S8$=T1$)=0THEN 3846
   : R1=4
   : S0=VAL(T1$)
   : RETURN
3846 ON POS(HEX(F01F50)=T1$)GOTO 3847,3847,3848
   : IF T$(9)=" "THEN ON POS(HEX(7E7F)=T1$)GOTO 3849,3850
   : GOTO 3851
3847 R1=0
   : RETURN
3848 R1=-1
   : RETURN
3849 R1=5
   : RETURN
3850 R1=6
   : RETURN
3851 T1$=AND HEX(0F)
   : IF POS(HEX(0203050608090A0C0D)=T1$)>0THEN 3852
   : GOTO 3838
3852 $TRAN(T1$,HEX(0B060E05))R
   : R1=VAL(T1$)
   : T2$="*PN****EDIuewd**"
   : IF POS(S8$=STR(T2$,R1,1))>0THEN RETURN
   : GOTO 3838
3853 ON POS(HEX(2008)=T1$)GOTO 3854,3855
   : GOTO 3856
3854 IF T$(4)>" "THEN R1=12
   : ELSE R1=14
   : GOTO 3856
3855 IF T$(4)>" "THEN R1=13
   : ELSE R1=11
3856 I=T1(6)
   : IF T$(4)=" "THEN 3857
   : IF R1=14THEN T2=MOD(T2+T1(8),I)
   : IF R1=11THEN T2=MOD(T2-T1(8),I)
   : GOTO 3858
3857 IF R1=14THEN T2=MOD(T2+1,I)
   : IF R1=11THEN T2=MOD(T2-1,I)
3858 IF T2=0THEN T2=T1(6)
   : IF T2>T1(6)THEN 3853
   : RETURN
3860 FOR I=1TO VAL(STR(T0$,3))
   : PRINT HEX(06);AT(VAL(STR(T0$,1))-2+I+T2(1),VAL(STR(T0$,2))+T2(2),VAL(STR(
     T0$,4)));
   : NEXT I
   : T0$=" "
   : GOSUB 3898
   : RETURN
3862 PRINT HEX(06);AT(23,0,40);
   : T=0
   : GOSUB 3898
   : RETURN
3864 S1$=HEX(0204)&BIN(I/10)&BIN(MOD(I,10))&HEX(0E)
   : PRINT STR(S1$,,5);
   : RETURN
3866 DEFFN'128(S2$,T0,T1,I)
   : SELECT PRINT 005(80)
   : IF T0=99THEN PRINT HEX(07);
   : IF T1=99THEN T1=40-(LEN(S2$)/2)
   : T0=MIN(24,T0)
   : T1=MAX(1,T1)
   : GOSUB 3864
   : I=1
   : STR(S2$,LEN(S2$)+1,1)=HEX(AF)
   : S=POS(S2$=HEX(AF))
3867 PRINT HEX(06);AT(T0-1,T1-1);STR(S2$,I,S-1);
   : I=I+S
   : S=POS(STR(S2$,I)=HEX(AF))
   : T0=T0+1
   : IF S>0THEN 3867
   : PRINT HEX(020402000F06);
   : RETURN
3869 DEFFN'129
   : SELECT PRINT 205(80)
3870 READ T0,T1,I,S4$
   : ERRORR1=-2
   : RETURN
3871 IF T0=0THEN RETURN
   : T0=T0+T2(1)
   : T1=T1+T2(2)
   : IF I=99THEN 3872
   : IF I=0THEN PRINT HEX(0F);
   : ELSE GOSUB 3864
   : PRINT HEX(06);AT(T0-1,T1-1);STR(S4$,,LEN(S4$));
   : GOTO 3870
3872 PRINT HEX(06);AT(T0-1,T1-1);BOX(VAL(S4$),VAL(STR(S4$,2)))
   : GOTO 3870
3874 DEFFN'130(T0,T1,T5,S2$,S4$,S8$,T2$,T$(),T0$)
   : SELECT PRINT 405(80)
   : PRINT HEX(0202000F020402000E);
   : $TRAN(T$(),HEX(202E))R
   : IF T2$>" "THEN PRINT HEX(060F);AT(T0-1,T1-2-LEN(T2$));T2$;HEX(0E);
   : S2$=ALL(S2$)
   : T6=POS("H#X"=S2$)
   : PRINT HEX(0202020F);
   : T8=1
   : IF T$(9)>" "THEN 3876
   : GOSUB 3897
   : IF S8$<>" "THEN S8$=S8$&"IDEew"
   : ELSE S8$="IDEew"
3876 GOSUB 3839
   : IF T$(9)>" "THEN 3905
   : IF R1<7THEN 3899
   : IF R1=11OR R1=14THEN 3899
   : ON R1-7GOTO 3880,3884,3882,3876,3886,3890,3876
   : IF T1$=HEX(08)THEN 3890
   : IF T8<=T5THEN 3878
   : PRINT HEX(07);
   : GOTO 3876
3878 STR(S4$,T8,1)=T1$
   : $TRAN(T1$,HEX(8020))R
   : IF T$(3)=" "THEN PRINT HEX(0E);T1$;
   : ELSE PRINT HEX(0E8B);
   : GOTO 3887
3880 IF T5<T8THEN 3876
   : STR(S4$,T8)=" "
   : GOSUB 3897
   : GOTO 3876
3882 IF T5<T8THEN 3876
   : MAT COPY -S4$<T8,T5-T8>TO -S4$<T8+1,T5-T8>
   : STR(S4$,T8,1)=" "
   : GOSUB 3897
   : GOTO 3876
3884 IF T5<T8THEN 3876
   : MAT COPY S4$<T8+1,T5-T8>TO S4$<T8,T5-T8>
   : STR(S4$,T5,1)=" "
   : GOSUB 3897
   : GOTO 3876
3886 IF T8<T5+1THEN PRINT HEX(09);
3887 IF T8<>T5THEN 3888
   : IF T$(1)=" "THEN 3888
   : R1=5
   : GOTO 3899
3888 T8=MIN(T5+1,T8+1)
   : GOTO 3876
3890 IF T8>1THEN 3891
   : IF T$(2)=" "THEN 3876
   : R1=6
   : GOTO 3899
3891 PRINT HEX(08);
   : T8=T8-1
   : IF T1$<>HEX(08)THEN 3876
   : STR(S4$,T8,1)=" "
   : PRINT HEX(8508);
   : GOTO 3876
3892 PRINT HEX(06070E);AT(23,0,50);T2$;
   : T=1
   : GOSUB 3898
   : GOTO 3876
3893 T2$=" Invalid key ignored"
   : GOTO 3892
3894 T2$=" Information required, please enter"
   : GOTO 3892
3895 T2$=" Invalid characters in field"
   : GOTO 3892
3897 PRINT HEX(06);AT(T0-1,T1-1);
   : T2$=S4$
   : IF T$(3)>" "AND T2$>" "THEN STR(T2$,,LEN(T2$))=ALL(8B)
   : $TRAN(T2$,HEX(8520))R
   : PRINT STR(T2$,,T5);
3898 PRINT HEX(06);AT(T0-1,T1-2+T8);
   : RETURN
3899 IF T$(7)=" "OR T$(3)>" "THEN 3900
   : PRINT HEX(0F);
   : GOSUB 3897
3900 $TRAN(S4$,HEX(20802085))R
   : IF R1<1THEN 3902
   : IF S4$=" "AND T$(6)>" "THEN 3894
3902 ON T6GOTO 3904,3903,3905
   : GOTO 3904
3903 IF NUM(S4$)<T5THEN 3895
   : GOTO 3905
3904 IF S4$>" "AND VER(STR(S4$,,T5),S2$)<T5THEN GOTO 3895
3905 SELECT PRINT 005(80)
   : PRINT HEX(0F0202000F);
   : RETURN
3906 %  S$="SE.SUBS ": SCRATCH TS$: SAVE <S>T()S$3800,3999: PRINT HEX(0E);S$;H
     EX(0F);" updated"
4010 REM / Disk error messages
4020 DATA "D80  File not open"
4022 DATA "D81  File full"
4024 DATA "D82  File not in catalog or not a data file"
4026 DATA "D83  File already cataloged"
4028 DATA "D84  File not scratched"
4030 DATA "D85  Index full"
4032 DATA "D86  Catalog end error"
4034 DATA "D87  No end-of-file"
4036 DATA "D88  Wrong record type"
4038 DATA "D89  Sector address beyond end-of-file"
4040 DATA "I90  Disk hardware error"
4042 DATA "I91  Disk hardware error"
4044 DATA "I92  Timeout error"
4046 DATA "I93  Format error"
4048 DATA "I94  Format key engaged"
4050 DATA "I95  Device error"
4052 DATA "I96  Data error"
4054 DATA "I97  Longitudinal redundancy check error"
4056 DATA "I98  Illegal sector address or platter not mounted"
4058 DATA "I99  Read-after-write error"
8000 REM %  case-'24, delete entry
   : GOSUB '128("Deleting entry",24,0,20)
   : IF T3<4 THEN 2124
   : GOSUB '66(P9)
   : E8=(FIX((T3-4)/5)+1)+((P9-1)*8)
   : FOR I=E8 TO 32-E8
   : T=I+1
   : E2$(I)=E2$(T)
   : E3$(I)=E3$(T)
   : E4$(I)=E4$(T)
   : E5$(I)=E5$(T)
   : E7(I)=E7(T)
   : E8$(I)=E8$(T)
   : NEXT I
9996 DEFFN '18  "LIST S 440, "
9997 DEFFN '19  "LIST SD 1013, "
9999 DEFFN '31  "SCRATCH T";HEX(22);"VEDIT";HEX(22);": SAVE T()";HEX(22);"VEDI
     T";HEX(22)