1  COM A[25],V[2,10]
2  COM A$[255],A1$[255],B0$[5],D0$[255],F0$[1],F1$[11],S0$[6]
3  COM H0$[94],H1$[94],J0$[3],J1$[3],K1$[15],P0$[184],P1$[4]
4  COM N0$[1],U0$[11],U1$[11],V0$[10],V1$[10],W$[102],W0$[8],W1$[255],Z$[255]
5  COM C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,D0
6  COM D,D1,D2,F9,G,G0,G8,L,S0,V0,V1,V2,V3,V5,V7
7  COM W0,W1,W3,W5,W8,W9
10  COM L[5],M[64,2],N[64,2],P[2]
11  COM B$[94],L$[94],M$[94],N$[94],O$[94],P$[94]
12  COM L1,L2,L3,L4,L7,M1,M2,M3,M4,M5,M7,M8,M9,N1,N2,N3,N4
15  REM (C) COPYRIGHT  HEWLETT-PACKARD CO. 1976
16  REM ALL RIGHTS RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,
17  REM REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT THE
18  REM PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD CO.
50  FILES *,*
99  CHAIN "$EDITOR"
100  REM *ENTRY*
110  IF  ERROR  THEN 9998
140  U0=V6=C0
145  D1=D
150  U1=C2
160  GOSUB 1000
165  W1=C0
170  A1$="EDIT00"
175  A1$[C7]=B0$
180  CHAIN J,A1$,100
190  GOTO 9998
1000  REMP >>EXPLAIN<<
1005  GOTO 1200
1010  PRINT "'"A1$"' is not a recognized command name."
1015  GOTO 1090
1020  PRINT "The EXPLAIN file is not accessible."
1025  GOTO 1090
1030  PRINT "Someone has destroyed part of the EXPLAIN file."
1090  GOSUB 9700
1095  RETURN 
1200  REM2 *SYNTAX*
1205  IF  NOT LEN(A$) THEN 1500
1210  A1$=A$
1215  RESTORE 1220
1220  DATA 36,1,"LIST",2,"MODIFY",1,"ADD",2,"CHANGE",3,"REPLACE"
1225  DATA 3,"DELETE",3,"FIND",1,"INSERT",1,"PRINT",2,"SET",2,"SHOW"
1230  DATA 3,"RENUMBER",1,"TEXT",1,"KEEP",1,"USE",3,"FILL",1,"EXPLAIN"
1235  DATA 1,"JUSTIFY",3,"COPY",2,"MERGE",3,"MOVE",2,"CENTER"
1240  DATA 3,"DEFINE",3,"COMPRESS"
1245  DATA 3,"//ASK",4,"//CREATE",3,"//FILE",4,"//LENGTHEN",3,"//PURGE"
1250  DATA 4,"//CATALOG",3,"//GROUP",4,"//LIBRARY",3,"//BREAK"
1255  DATA 4,"//STOP",4,"//SHORTEN",3,"//HELP"
1260  GOSUB 9300
1265  IF  NOT K2 THEN 1010
1270  A1$="ED0000"
1275  A1$[C7]=B0$
1280  ASSIGN A1$,C2,J
1285  IF J>C3 THEN 1020
1290  E=C0
1295  RESTORE 1300
1300  DATA 86,23,1,32,8
1305  DATA 41,107,15,140,153,165
1310  DATA 47,124,117,134,76,105
1315  DATA 71,58,129,51,63
1320  DATA 166,67
1325  DATA 142,144,146,147,150
1330  DATA 102,103,104,171
1335  DATA 151,149,172
1340  FOR I=C1 TO K2
1345  READ B1
1350  NEXT I
1355  W6=C0
1360  READ #C2,B1
1365  I=TYP(C2)
1370  IF I=C2 THEN 1380
1375  GOTO 1030
1380  READ #C2;P0$
1385  IF P0$#".START" THEN 1365
1390  PRINT 
1395  I=TYP(C2)
1400  IF I=C2 THEN 1415
1405  GOTO 1030
1410  READ #C2;P0$
1415  IF SYS(C3) THEN 1465
1420  READ #C2;P0$
1425  IF P0$=".END" THEN 1465
1430  IF P0$#".PAUSE" THEN 1450
1435  GOSUB 2500
1440  IF E THEN 1460
1445  GOTO 1395
1450  GOSUB 6400
1455  IF  NOT E THEN 1395
1460  RETURN 
1465  PRINT 
1470  RETURN 
1500  REM2 *LIST*
1505  PRINT "You may ask to have any one of the following commands explained."
1510  PRINT 
1515  PRINT "ADD        DEFINE      INSERT      MODIFY      SET"
1520  IF SYS(C3) THEN 1610
1525  PRINT "CENTER     DELETE      JUSTIFY     MOVE        SHOW"
1530  IF SYS(C3) THEN 1610
1535  PRINT "CHANGE     EXPLAIN     KEEP        PRINT       TEXT"
1540  IF SYS(C3) THEN 1610
1545  PRINT "COMPRESS   FILL        LIST        RENUMBER    USE"
1550  IF SYS(C3) THEN 1610
1555  PRINT "COPY       FIND        MERGE       REPLACE"
1560  IF SYS(C3) THEN 1610
1565  PRINT 
1570  IF SYS(C3) THEN 1610
1575  PRINT "//ASK      //CREATE    //LENGTHEN  //SHORTEN"
1580  IF SYS(C3) THEN 1610
1585  PRINT "//BREAK    //FILE      //LIBRARY   //STOP"
1590  IF SYS(C3) THEN 1610
1595  PRINT "//CATALOG  //GROUP     //PURGE"
1600  IF SYS(C3) THEN 1610
1605  PRINT 
1610  RETURN 
2500  REMP <PAUSE>
2505  E=C0
2510  PRINT 
2515  P0$="Continue? "
2520  GOSUB 3300
2525  IF  NOT V3 THEN 2540
2530  PRINT '27"A"'27"J"'13;
2535  GOTO 2545
2540  PRINT 
2545  IF K2=C1 THEN 2555
2550  E=C1
2555  RETURN 
3300  REM <YES/NO>
3305  J=SYS(C3)
3310  PRINT P0$;
3315  LINPUT A$
3320  IF SYS(C3) THEN 3370
3322  IF  NOT LEN(A$) THEN 3380
3325  IF LEN(A$)<C4 THEN 3340
3330  PRINT "Response limited to YES (or return) or NO (or break)."
3335  GOTO 3310
3340  A1$=UOS$(A$)
3345  RESTORE 3350
3350  DATA 2,1,"YES",1,"NO"
3355  GOSUB 9300
3360  IF  NOT K2 THEN 3330
3365  RETURN 
3370  K2=C2
3375  RETURN 
3380  K2=C1
3385  RETURN 
6400  REM <PRT P0$>
6410  I=C1
6420  J=A[C9] MIN LEN(P0$)
6430  PRINT P0$[I,J]
6440  I=J+C1
6450  IF  NOT LEN(P0$[I]) THEN 6490
6460  J=(I+A[C9]-W6-C1) MIN LEN(P0$)
6470  PRINT TAB(W6);P0$[I,J]
6480  GOTO 6440
6490  RETURN 
9300  REM <KEY>
9310  READ J
9320  FOR K2=C1 TO J
9330  READ J1,K1$
9340  IF LEN(A1$)<J1 THEN 9360
9350  IF A1$=K1$[C1,LEN(A1$)] THEN 9380
9360  NEXT K2
9370  K2=C0
9380  RETURN 
9700  REM <ERROR>
9710  E=C1
9720  Z$=""
9730  IF V2#C2 OR W1 THEN 9760
9740  PRINT "USE file abandoned."
9750  V0=V2=W3=C1
9760  RETURN 
9990  REM <ERR>
9991  M4=SYS(C0)
9992  N4=SYS(C1)
9993  A1$="EDIT31"
9994  A1$[C7]=B0$
9995  CHAIN J,A1$,100
9996  PRINT A1$" is missing.  ERROR"
9997  STOP 
9998  GOTO 9991
9999  END 
