THE UNIVERSITY OF MICHIGAN Memorandum 14 DEXEDITOR K. Burkhalter CONCOMP: Research in Conversational Use of Computers F.H H Weste~rvelt, Director ORA.. Po e ct.. 4 4 9 ~i......:.,..?:.(.... ".. 4''' -'..' i' sup MctQyd by, DEPARPTM ENT OF: DEF E N S E ADVANCED':RES EA RCH:'PRC RJECTS AGENCY WA'SH:INGTNO T D. C. CONTRACT NO. DA-49-083 OSA-3050 ARPA ORDER NO. 716 administered through: OFFICE OF RESEARCH ADMINISTRATION ANN ARBOR February 1968

ct LLo 00 VIO L:

TABLE OF CONTENTS Page I. INTRODUCTION 1 II. USAGE 1 III. COMMAND LANGUAGE INTERPRETER: DESCRIPTION 2 IV. INPUT FORMAT DESCRIPTION 5 V. PROGRAM LISTING 7

DEXEDITOR K. Burkhalter I. INTRODUCTION DEXEDIT is the object module of a program that converts free-form DEXEMBLER* statements to fixed-format form, thereby permitting the user to write PDP assembly language statements in free form. Although the DEXEMBLER compiler will accept free-form input, the DEXEDIT formatting routines will make the source listings more readable. Several additional DEXEDIT features allow more convenient comments to be inserted into the source listings. The DEXEDITOR has a built-in command language interpreter which recognizes $ commands imbedded in the input stream. These commands allow listings to be turned on and off, the tab columns to be set, special comment functions to be accomplished, and a PAL (DEC assembler) converter of a very simple nature to be turned on and off. II. USAGE The program is invoked by the appropriate RUN command specifying *DEXEDIT as the file where the object cards are to be found. * Powers, Michael, PDP-8 Assembler, Concomp Project Technical Memorandum 12, University of Michigan, Ann Arbor, November 1967, 13 pp. -1

-2Logical I/O Units Referenced: SCARDS: Free-form input lines to be converted. At the current time (16 January 1968) this I/O unit must be given as "5" rather than SCARDS, however, it will soon be defaulted by FORTRAN to the value assigned to SCARDS, and SCARDS may thus be given rather than 5. SPRINT: Error comments, plus listing (in formatted form) if $LIST was specified. All trailing blanks but one are stripped off outbound lines. SPUNCH: Fixed-format output lines for processing by DEXEMBLER compiler. Alltrailing blanks but one are stripped off outbound lines of text. Examples: $RUN *DEXEDIT; 5=*SOURCE* SPUNCH=-PROG $RUN *DEXEDIT; 5=INFILE SPRINT=*SINK* SPUNCH=OUTFILE III. COMMAND LANGUAGE INTERPRETER: DESCRIPTION The DEXEDITOR contains a command language interpreter which decodes the text on all cards, within the input stream, which have a "$" in column one. Currently six (6) commands are recognized and are described below. Only the first and last letters of each command are decoded, thus LIST may be abbreviated to "LT." The default cases for the commands are: UNLIST, PALOFF, and the TABS set to columns 8, 16, and 35.

-3LIST Causes the same output that appears at the SPUNCH device to also be directed to the SPRINT file/device, with the following exceptions: the pseudo ops EJECT and SKIP n are executed rather than being just printed. Thus the listing is nearer to the final assembly. Also fatal and nonfatal errors are flagged on the SPRINT listing. UNLIST Turns off the listing facility described. Listings may be turned on and off as often as desired. PALON Turns, on a simple translator which will convert a great deal of a PAL source into a DEXEMBLER-compatible source. It handles such things as the indirect flag (I to *) and the translation of periods into asterisks. Non-memory reference instructions separated by spaces will have a "+" inserted into the space position for the DEXEMBLER. In addition, a line of the form "*300" will be converted to the appropriate DEXEMBLER pseudo op " ORG 300." A line of expressions terminated by semicolons (;) will be broken up into individual lines of text. Thus "TAD ONE; RTR; SMA" becomes TAD ONE RTR SMA

-4The converter is not able to handle such things as literals and defined constants, due to the symbol table requirements and the different allowable structures between the two assemblers. These lines will have to be found and corrected by hand, or they may be left to be flagged by the DEXEMBLER. PALOFF Turns off the PAL conversion routines. Conversion, as in listing, may be turned on and off as desired. TABS The tabs which determine the fixed-form output are preset to columns 1, 8, 16, and 35. Of these, the latter three may be reset to any desired value by a $TABS command. Any combination of those three values may be left out. Trailing commas resulting from the omission of items may be left off; leading and internal commas are required. After reading a TABS command the system responds with a comment designating the new values. BOX Used for titling pages or routines, this command draws a box of asterisks around the text remaining between the BOX command and column 72 of the source line. The line of text so determined is tabbed to the second tab field (column 16 for default tabs), Any text which would extend beyond column 69 of the output line is truncated. If the BOX command is followed by another BOX command that next line is placed

-5under the first. The bottom of the box is closed only when no more contiguous BOX commands are found. Commands may be concatenated on a single card separated by blanks or commas, with the exception of the BOX command which, if so done, must be the last command on the card, otherwise the following commands will be BOXED rather than executed. Example: $TABS,, 28 LIST PALON IV. INPUT FORMAT DESCRIPTION To allow easy use from those terminals with facilities for both upper- and lower-case letters, all alphabetic input is automatically converted to capital letters as it is read from the SCARDS device. If PAL is on, the normal rules of PAL hold. These can be reviewed in DEC publication 8-3-S. With PAL off, the following conventions hold. Comment Lines: A line is a comment when the character in column 1 of the source line is an asterisk (*)o This type of line is transmitted directly to the output device. If the character in column 1 should be a semicolon (;) then a special comment state is entered and the remaining text is tabbed to the second tab field with an asterisk inserted in column 1. This is handy for subroutine and other labeling. Text Lines: If an alphabetic character is found in column 1, it is presumed to be the first character of a

-6 — statement label. The first blank terminates the statement label and starts a hunt for the operator field.. If the first character of the input line (column 1) is a blank or comma then it is assumed there is not a statement label and a search for the operator field is begun, The operator field is delimited by the first nonspecial character* at the left and the first blank or semicolon on the right. The semicolon serves as a comment delimiter. All text following it is tabbed to the third tab field (default column 35) and the remainder of the card is outputted directly. If the operator field is not terminated directly with a semicolon, then a search for the expression field is begun. If a semicolon is found first then, as before, the remaining text is tabbed to the comment field. Otherwise the scan continues until the first nonspecial character is found. The expression field is terminated by a blank or semicolon. Any text remaining, if any, is taken as a comment. If the source cards contain sequenced ID it is copied to the sink line images. If there is no ID, then the output lines are trimmed of trailing blanks before being transmitted to the SINK device. * Special characters being those used by the editor, such as asterisk, comma, or dollar sign.

I MPL ICIT Ih TF,FR2 (A-Z) *8********* **:* STATE TABLES *************** ***". Q)FEX-DIT STATE TABLE, *** **,r 0C LU N!S= S TAJT F S ( 0-7 ) C **c**- RVWS=I, NPIJTS (B *,; BLANK TEFXT) I NT EGEAR *? S TAT F 6) /1 1, 1 0, 101,1O',-Oi 7,07' 1 08 10100,03,05,05, 07,07, 2 f 2,02,10,10,10,10,07,07, 3 09,10, 10,06,06,06,06,07, 4 0, 2 r, 2tn4,040,06,0"' 7, 6 01,.1, -,.3, 05,S,07,07/ C ***** PAL STATF TA!LF ***** COL UMNS=STATES(0-7) C t***** R.S=: INPt..S — ( *,; / = ) INTEGFR*2 PST/iTE(, c) /.5), rCQ,0 9, 02,022,2, 04, 1 i!,7,C7, 07,09,09,'09,04,? 09,.,09, 06, n6, )06, 06,04, 3 083,099, q03,03,03,03, 04, 4 (9, 1C, 1, 10,09, 09,09,04/ DIMENSI ON LI riE"BFT'3)-. —- ). (A a 3 ),C Co. L ( 4) DIMENSIION M:lDS (F) DIMENSION rDS(R.O) DIMENSION FJFCT (5), SPACE(S 5),nG( 3), EU( ) DATA BRRFAK/','/,SC LDnN/':'/,COMMA/', / DATA PERIOD/'.' /, S LASH/'/' /,Y F/'I' DATA BVLANK/''/,ASTER/'*'/,DOLLA/R/''/ DATA MIN.IS/'-' /.PL JS/'+',E:OUAL/'=' DATA EJFCT/'E I,'J I,'F','C','T I/ DATA SPAC F/'S,'P','A','C', E' / DATA ORG/ I rt, R','G/ DATA FOU/'','0,..'U'I DATA HFO4O/ZFr'47/, HP1 40/Z P1l C/,HA940/7ZA940/,H40'0/Z400n/ DATA HF94/ ZF94:'/,HC140/7ZC140/,HE940/ZF940/,H040U0040/ DATA HF FO'/ 7FF.O/ DATA TAR/8,16,35/ C ~Q~8s***** C O iMANDS: L I ST, (JNLISTTABS PALON, PALOFF,BOX DATA CMMDS/ LT','UT','TS',' PN,','RX / DATA nPS/6,3, A',, N',tr)',3,'T'tA',D', 1 3,'1,'S','Z',t,'D','C I,'A', 2 3,' J','M', S,3, J' M',' P / LOGICAL PSW, LIST,PAL, BOX LOGICAL PSFtIJDr, INIT,MnRPALMFREF LOG ICAL LEtOU ~C t3***** PROGPR AM IN T I AL IZAT ION LCNT=O. E RR OR=) F I E LD =0 L I ST= F At SF. LEQU=.FAL S. PSW=.FALSE. PAL=.FALSE. R X =. A L S -A:E. I N I T=.T RU'E. 20 READ (5,1001,END=100) C DO 201 I=1,80 201 IF (C(I).GE.(H8140.AND.C(I).tE.HA940) C(I)=C(I)+H4000 LCNT=LCNT+1 I=1 ***** NOW BLANK OUTPUT tTLINE IMAGE -7

21 Dn 211 l.,t' 211 IN E( L)= BLANK S=O ICOL=( LASTL=1 MEMREF=.F AL SF. MORPAL=. F A LSE. PSEUDn=.F.ALSE. L=l 220- IF (C(I).NV.DOLLAR) GO TO 222JUMP= ST AT F ('S+, ) GO" -T -T 3'1 3 2, 3,3 4,; 35, 36, 37 —,'-3- -- 9-,40,4,41- ), JUM P?22 IF (.NOT.BOX) GO TO 223 PUNCH 1009 IF (LIST) PRIF'T 1009 BOX=. FALSE. 223 IF (INI T-.ANF).LI ST) PR INT 1'11 I NI T=.F AL SE. IF (C(T).NF.ASTFR) Gn Tn 23 IF (.N\OT. PAL) G, n TO 2231 JUMP=PSTATE ( S+1,1 ) GO TO (32,?35,6, 37 65, 66 67;t68- 4(' 70), JUMP 2 231 JUMP=STATE (S+I, 2) GO TO ( 31, 32, i,3, 3,36, 37, 3R39,4n), JUMP 23 1 F(C( I).NE. E COMM) GO Tn 24 IF (.NOT.PAL/) G Tn 231 JUMP=PSTATE( S + 1, 2 ) GO TO t32,35,36,3 7,,65,6A,67,68,40,7OC), JUMP 2 31 JUMP= STATE( S+1, 3 ) GO Tn 1 3 1,3, 3 43',3 5,36,37,8,39,40), JUMP 24 IF(C(I).NE.SCOLnnJ) Gn TO 29 IF (.NOT.PtL.) G, TC 2/L1 JUMP=PSTP.TF (S+!, 3 ) -GO TOn 3 2'35 -, 7, 6 q - 6, 7 t - r6 4 7O R,40, J MP 241 JUMP=STATF(S+1 4) GO TO (31,7 3',33t 2,4,35, — 36,-37,3P,1 39,40), JUMP 2 5 IF(C(I).NE.RtLANK) GO TO 26 JUMP=ST AT E ( S+ 1, ) GO TO { 31, 32,3, 4, 35,36, 37,38,39,40), N JUMP 2 6 I-F C.I )-.N E oEiAt.L. iP,-,NOT.PAL-') GOnO..T 261 JUMP=PSTA TE (S+1 t ) _.......................... —-.........................6 6.7.,., 4 0, 7 0 ) _ _JUMP GO TO (32,A,5,36,37,6,66,67,8,4O,7O) JUMP 261 IF (C(I).NE.SLASH..nR..NOT.PAL) GO TO 27 JUMP=PSTATF ( S+1 4 ) GO TO (32,35,3 6,37,65,66,67,68,40,?70), JUMP C **r** IF IN PAL STATE,ASSUME TEXT RELONGS TO. -,_'*** COPER FIFLD UNTI t.. A COMMA IS FOUND. 27 IF (PAL ANO *SFQo.) S=2 JUMP=ST ATE( S+1, 6) GO TO (31,32,33,t34,3536,37t,38,39940), JUMP C fC$$***** STATEMETT TLABLE STATE 31 S=1 IF (Lt.L E.8). TO 45 IF (PSW) GO TO 46 PSW=. TRUE. ICO L= IC OL+1 COL( ICOL)=L GO TO 46 ***** LOOK FOR OPE.ATOR FIEL D STATE 32 S=2

." 9.-'. GO TnO 4 C,***** PFPR^TOR FI FLD STAT E 33 Ii (S.EQ.3) GOP TO 45 C ***:** IF P.AL, I S THIS'A "EMOlRY"' REF INSTRUCTiON IF (.'NT.PAL) GO TO 3300 FINOPS=OPS(1 ) OPEND=1. 00DO 3306 CN —!-,-FI, o PS K =O P END + 1 OPEND=3PS (K)+K K=K+I KS=K 00 3305 K=KS, OPFND IF (, I CI+K-KS).NE.PSK ) ) GO TO 3336 3305 CONT INUE M EMRE F=.T RU(J F. GO TO 3304 3306 CONTIN.JE 3300 DO 3301. K=1. 5 IF (C ( I - 1 +K ).NE.EJFCT(K) ) Gn TO 3302 3301 CONT I NJE GO TO 334 3302 DO 3303 K=,5 IF (C(I-1+K).N!E.SPACE(K)) GO TO 3304 3 303 CONTINUE GO TO 335 3304 IF (L.GE.TAB ( ) ) Gn Tn 331 3 36 L=TAB ( I ) GO TO 332 331 IF (PSW) GO TO 333 ICOL=ICOL + COL ( ICOL)=L-1 PSW=. TRUE. 33 - L=L+1 3 32 S=3 GO TO 45 334 PRINT 1011 PSEUDO=.TRU FE GO TO 336 3'35 NU M=O K=I+6 DO 3351 K=K,72 - t**** IF C( K) IS A NUMBER, GO Tn 3352 IF (C(K).LE.HF94.AND.C(K ).GE.HF040) GO TOt 3352 IF (NUM.NE.0) GO TO 3353 3 351 CC.T INU E tC:*;*-4:; DEFAULT I SPACE NtJM =1 GO TO 3 353 3 352 NUM (NM*1 e)+ ( C K )-HF040 )/2**8 -- GO TO 3351 335300 334. J- -,NU3 4 3354 PRINT 1012 P S EUDO=.T RUF. GO_ TO 336 C *'- **** LOOK FOR EXPRESSION FIELD STATE 34 5=4 GO TO 46 C cc***** EXPRESSION FIELLD STA.TE 35 IF ( S.EQ.) 5) GO TO 45

-1 0 - IF (.N1T.PAt ) 17r T3O 56 IF (4FREF),Gr T ( 3 5i L INE(L) =PLIJ L = L + 1 - S=5 GO TO 45 355 IF (C( I ).EFC.PFRIO) C(I)=ASTFR IF (C(I ).FQ.FYE.,P-h.C(i+1).EQ.PLANK) GO TO 354 356 IF (L.GF.TAB(2 )') GO TO 351 L=T M P(?) GO TO 3 52 3 51 ICOL = ICOL. + COL-( ICOL)=L-1. PSW=.TRFJF. 357 L=L+l 352 S=5 GO TO 45 3 54 L I NE ( L ) = A S T F R S =4 LAS TL=L GO TO 451 - *"**** LOCK F'-F CTMfi'FNJT FIELD STATE 36 IF ((PAL.A ).C(I ).FO.SLAS4).OR.(.NOT.PAL)) GO Tn 361 S=4 GO TO 46 361 S=6 GO TO 46 C ***** C,4';ME',!T FIFLfr' STATE 37 IF (S.EO.7) GP, TO 44 IF (L.GE.TtPR(. ) GO TO 371 L=T AB (3 ) C70 TO 372 3 71 ICOL=IC OL +1 COL -(I nL )=L-i P SW=. TRUIJE. 373 3 =L+1 PSW=. TRULJF. 372 S=7 4 5 LINE(L)=C(I ) I F (CG I ).NE.Rt A.NK) LASTL-L 451 L=L+l IF (L.GE.7 3) Gn TO, 461 46 I=I+1 IF (I.LF.72) CO TO 220 461 IF I.EQ.72) GO TO 464 I=1+1 DO 462 I=I,72 IF (C(I).NF.LANK) GO TO 463 462 CONTINUE GO TO 464 463 PSW=.TRUE. ICOL=ICOL+! CL ( ICOL )=t -1 - ***** TEXT FINISHFD.COPY ID FIELD 4 64 L=73 DO 47 1=73,80 IF (C(I).EO.BLANK) GO TO 47 LINE(L)=C( I ) LASTL =L L=L +1

-1t147 CONTINUE'C.***** TACK ONE'TRAI'LING' BLA'NK fT LINE 48', IF (LASTL.EQ.l*AND.LINE(l)'. EQ.BLANK):GO TO 481 LASTL=LAS T L+l 481 PUNCH 1001,(LNE(L),L=1sLASTL). IF (LIST. AND...NOTPSEUDO) PRINT 1.001,(LNE(L)tL=1,LASTLI IF (*NOT. PSW.AND..oNOT.MORPAL) GO TO' 2-0 IF (. NOT. PSW AND.'MORPAL) GO TO 21 PRINT 1003,'LCNT, (COL(K),K'1, ICOL) F'iELD=F IE LD+1 PSW=. FALSE:IF (MORPAL) GO TO 2 1 GO TO 20' C **** PAL SPECIAL SECTIONS C ***** CHANGE INITI AL * TO "ORG" 65 L=TA(1 )' DO 651 J=1,3 651 LINE( L-1+J )=ORG(J) C ***** FAKE IT,FOR NO "+" 6 5 2 M iEM RE =.T RU E. S=4 LASTL=L GO TO 451. ***** STRIP MULTIPLE LINES WITHIN ONE. 6 LASTL=L-1 MOR-P-AL=-.T RUE. I=1+1 GO1 TO 48 * ****COMMA OR = FOUND AFT;ER FIRST TEXT.FIELD GC ***** THUS MOVE OPER RACKT.O LABEL FIELD. 67 START=TAB(1), DO, 671i...J=-STA'RT', LA S TL 671' LINE{J-TAB( 1)+1 =LINE{J ) TEMP=LASTL LASTL=L ASTL-START+l ***** NOW BLANK OUT PREVIOUS OPER FIELD START=LASTL+l -D-O 67i2 J-=START,'TEMP. 672 LINE(J)=BLANK L-L ASTCL1 IF (LEQU) GO TO 673 GO TO 32 673 L=TAB(1 ) DO 674 J=1,3 674. LINE (L-1+J)=EQU (J) - LEQU=F.ALSE. GO TO'652 C ***** PAL COMMENT CARD 68 C ( 1)= ASTER GO TO 38 C t***** CHANGE = TO-'"1EQU" 70 LEQU=.TRUE. GO.TO 67 C C *****' COMMAND LANGUAGE DLCGODEF 41' I=1l 411 I=I+1 DO 412 =I1,72

-12 — ***** IF C( ) IS A LETTER, GO TO 413 IF (C(I ).GE.*HC140.AND.C(I ).LE*HE940) GO TO 413 412 CONT INU E' GO TO 20 413 CLIS=I DO 41-4 I1-I,72 IF (C(I )EQ.BLANK.OR.C(I).EQ.COMMA)_ GO TO 415 414- CONTINJUE'C ~ ~t***** HAVE COMMAND, NOW FIND ENTRY POINT 415 CLI E=I-1 CMMD=(C (CL I S )-HO 040 )+(C(CL I E) /2**8-HFFQ0- 1) -'DO 416 J=1,6 IF (CMMID.E.CMMDS(J) ) GO Tn 417 416 CONTINUE C ***** INVALTn COMMAND IF (C LIE-C-L I S ~, T'-. 4.') 1 — CL-IE-C-['I —S40PRINT 1010, (C( I), I=CLIS,CLIE) GO TO 411 417 GO TO (421,422, 42,424,425,426),J C ***** COMMAND...L IST 421 LIST=.TRUE. GO TO 411 C ***** CCt'4AND,...UNL IST 422 LIST=.FALSE. GO TO 411 b ***** COMMAND...TARS C ***** TAB SETUIP 4 23 NUM='O T=1 DO 4235,I,'72 C ***** IF C ( I ) ALPHABETIC, Gr TO 4236 I F (C ( I ). GF.HC 140.Nn.C ( I ).LE.HE940! GO TO 4236" C ***** IF C(I).NOT. A NUMBER, Gn TO 4231 IF (C (i ).GT.-HF940.R.C( 1i)L T.HF040) GO TO 4?31 NUM=( NJM* 10 ) +( ( C ( I )-H FO40) /2**8) GO TO 423 5 4231 IF (C(I ).NE.COMMA) GO TO 4232 IF (NtUlMEO..) GO TO 4234 GO TO 4233 4232 IF (C(I ).EQ. BL ANK'.ANO. NUiO.FqEO) GO- TO 4235 4233' TAB(T)=NUM NUM=O 4234 T=T+1 IF (T.EQ.4) GO TO 4236 4235 CON TINUE 4236 PRINT 1007, TAR GO TO 411 C ***** CCMMAND...PALON +24 PAL=. TRUE. GO TO 411 C 8c***** COMMAND... PALOFF 425 PAL=. FALSE. GO TO 411 C **t** C OHM AND;.. BO X 426 IF (BOX) GO TO 4261 IF f (INIT.AND.LIST) PRINT 1011 I T=.*FALSE. PUNCH 1008 IF (L IST) PRINT 1008 - BOX=. TR U E.

-13-' 4261 I-I+1' START=TAB( 2) DO 4262 L=STAPT,69 LINE(L)=C(I) I=I+1 IF (I.G'T.T7'2)'GO TO 4263 4 262 CONTINU E 4263 LINE( 1 ) =ASTFR L INE( 71 )= ASTER PUNCH 1000,(LINF(L), L= 1,71) IF (LIST) PRINT 10000,(LINE(L),L=1,71) G O T 2............................................. C ***** TERMINATION MESSAGE 100 IF (BOX) PUNCH 1009 IF ( BOXoAND.LIST) PRINT 1009 PRINT 10 0n6, FRROR FI ELD, LCNT STOP ***** PRINT C.MMENT CARD 38 PUNCH IC01t C IF (LIST) PRINT IC'l1,C GO TO 20 C ***** INDENTEIT (SPECIAL) CnMMENT 39 LINE( 1)=AST ER L=TAB(2) DO 391 I=2, PC, LINE(L)=C ( I ) - IF (C (I ).NE.I ANK) LASTL=L 391 L=L+1 GO TO 48 C ***** ERROR MESSAGE 40 IF. (LIST) PRINT 1C'1], C PRINT 1002, EPPOR, I ERROR=F RPROR+1 PUNCH 10..49,ERROR,ERROR IF (FRROP.LE.1.?) GO TO 20 PRINT 1005 STOP C ***** F OR MATS -'. —-----....FOR A T( 7 i A I ) 1 000 FORMAT( 71A1 ) 1001 FORMAT( )__Al_ 1002 FnRMAT('E', I3,T7'**** ILLEGAL SYMBOL IN COLUMN',13) 1003 FORMAT('*,,*** FIELD OVERFLOW',4X,'LINE' 1 I 15, 4X,'COLl MN( S ),1 I 3, 3 (',' I 3 )) 1004 FORMAT('EEROR',3 I3, 1X,62(I 1H* ) T73,t'ERROR'tI3) 1005 FORMAT(/52H**'-,** TH IS ISN'T ASSEMBLY LANGUAGEt IT'S M4ADNESS ****) 1006 FORMAT( H1/ ALL INPUT HAS BEEN PROCESSED / 1'FLAGS ( FRROR'I4,4X t FIELD', 4 1H) 1OX, 2'LINES PROCESSED', I5/) 1007 - FORMAT'TAB S SET TO', I3,1H,tI3,SH, AND, I3) 1008 FORMAT( 71 ( 1 H* ) / 1H:a*,T7 1,1H* ) 1 009 FORMAT ( 1H*, T7 1H*/71 ( 1H* ) ) 1010 FORMAT('***** INVALID COMMAND....',40A1) 1 01 1 FORMAT( H1 ) 1012 FORMAT(I 1) END

UNIVERSITY OF MICHIGAN II 11119011111111 11111 111 11 7711 818 3 9015 02082 7708