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)