TITLE COPY FILE PROGRAM P=17 Q=16 A=1 B=2 C=3 D=4 E=5 F=6 G=7 IN==1 OUT==2 TI==3 TO==4 ERRI==5 BUFL==1000 INOP: SIXBIT / &DSK/ 0 0 FRMSNM: 0 OUTP:7,,0 0 0 TOSSNM: 0 TTIPN: SIXBIT / TTY/(30) 0 0 TTOPN: 1,,(SIXBIT/TTY/) 0 0 NMSWT: 0; FILE NAME SWITCH FRMTSW: 0; FROM-TO SWITCH QDL: "! BLOCK 100. PDL: BLOCK 40 START: .OPEN TI,TTIPN .VALUE .OPEN TO,TTOPN .VALUE TTINR: SETZM OUTP+1 SETZM OUTP+2 SETZB A,TOSSNM HRRM A,OUTP .IOT TO,[15] .IOT TO,[12] .IOT TO,[52] SETZM NMSWT SETZM FRMTSW MOVE Q,[-100,,QDL] MOVE P,[-40,,PDL] AGAST: .IOT TI,A ;ASSEMBLE ONE LINE OF INPUT CAIN A,30 JRST CNTRLX CAIN A,77 ;QUESTION HELP JRST HELPME CAIE A,177 ;RUBOUT JRST NOOUT POP Q,A CAIN A,"! JRST KILLIT .IOT TO,A CAMGE Q,[-100,,QDL] MOVE Q,[-100,,QDL] JRST AGAST NOOUT: PUSH Q,A SKIPL Q JRST KILLIT CAIE A,15 ;RETURN CARRIAGE JRST AGAST .IOT TO,[15] .IOT TO,[12] HRRZ Q,Q CAMN Q,QDL+1 JRST TTINR ;HE DID RET CAR ONLY MOVEI Q,QDL+1 AGAIN: SETZM B RLOP: MOVE A,(Q); GET A CHARACTER AOS Q CAIN A,40; TEST IT JRST SPACE CAIN A,72 ;COLON JRST COLON CAIN A,137 JRST ARROW CAIN A,15 JRST RETCR CAIN A,73 JRST SMCLN SUBI A,40 LSH B,F IOR B,A JRST RLOP; NOTHING SPECIAL, GET NEXT LFTJST: SKIPN B ;LEFT ADJUST ROUTINE POPJ P, TLNE B,770000 POPJ P, LSH B,F JRST LFTJST SPACE: PUSHJ P,SPCOUT JRST AGAIN SPCOUT: PUSHJ P,LFTJST SKIPN B POPJ P, SKIPE NMSWT; SKIP IF FIRST FILE NAME JRST NM2 SKIPE FRMTSW; SKIP IF 'TO' FILE NAME JRST TOOWRD MOVEM B,OUTP+1 JRST AGAINS TOOWRD: MOVEM B,INOP+1 JRST AGAINS NM2: SKIPE FRMTSW JRST TOWORD MOVEM B,OUTP+2 JRST AGAINS TOWORD: MOVEM B,INOP+2 JRST AGAINS AGAINS: SETOM NMSWT; SWITCH TO SECOND N POPJ P, COLON: PUSHJ P,LFTJST SKIPE FRMTSW JRST TODVC HLRM B,OUTP JRST AGAIN TODVC: HLRM B,INOP JRST AGAIN ARROW: PUSHJ P,SPCOUT SETOM FRMTSW SETZM NMSWT JRST AGAIN SMCLN: PUSHJ P,LFTJST SKIPE FRMTSW JRST TOSNM MOVEM B,TOSSNM JRST AGAIN TOSNM: MOVEM B,FRMSNM JRST AGAIN KILLIT: .IOT TO,[77] JRST TTINR RETCR: PUSHJ P,SPCOUT SKIPN OUTP+1 PUSHJ P,COPYF HRLZI F,7 CAMN F,OUTP PUSHJ P,COPYD SKIPN TOSSNM PUSHJ P,COPAR ALLOV: .SUSET [.SSNAM,,FRMSNM] .OPEN IN,INOP JRST OPINFL .SUSET [.SSNAM,,TOSSNM] .OPEN OUT,OUTP JRST OPOUFL LOOP: MOVE A,[-BUFL,,BUF] .IOT IN,A MOVNI A,-BUF(A) JUMPE A,FINSH HRLZS A HRRI A,BUF .IOT OUT,A JRST LOOP FINSH: .CLOSE IN, MOVE [14300,,301406] .CLOSE OUT, JRST TTINR TYPIT: .IOT TO,[15] .IOT TO,[12] MOVE F,TEMP MOVEM F,BYTPNT MORTP: ILDB A,BYTPNT CAIN A,1 POPJ P, ADDI A,40 .IOT TO,1 JRST MORTP OPINFL: MOVEI G,[SIXBIT /OPEN OF INPUT FAILED!/] JRST TTINN OPOUFL: MOVEI G,[SIXBIT /OPEN OF OUTPUT FAILED!/] .CLOSE IN, TTINN: PUSHJ P,TYPIT .OPEN ERRI,ERRO .VALUE TTINN1: .IOT ERRI,A CAIN A,14 JRST TTINR .IOT TO,A JRST TTINN1 ERRO: (SIXBIT /ERR/) 1 0 COPYF: MOVE F,INOP+1 MOVEM F,OUTP+1 MOVE F,INOP+2 MOVEM F,OUTP+2 POPJ P, COPYD: HRRZ F,INOP HRRM F,OUTP POPJ P, COPAR: MOVE F,FRMSNM MOVEM F,TOSSNM POPJ P, BYTPNT: 0 TEMP: 440600+G,,0 STATUS: 0 CNTRLX: .VALUE KILLCD KILLCD: ASCIZ /:KILL / HELPME: MOVEI D,EXPTBL TYPMRE: MOVE G,(D) AOS D SKIPN G JRST TTINR PUSHJ P,TYPIT JRST TYPMRE EXPTBL: [SIXBIT/THIS PROGRAM WILL COPY TECO AND BINARY FILES.!/] [SIXBIT/WHEN LOADED, IT WILL PROMPT ONE WITH AN *!/] [SIXBIT/TYPE TWO FILE SPECIFICATIONS IN MIDAS STYLE:!/] [SIXBIT/TFIL1 TFIL2 DEVT:SNAMET;_FROM1 FROM2 DEVF:SNAMEF; RET CAR!/] [SIXBIT/IF SNAMEF; IS OMITTED, THE CURRENT SNAME WILL BE USED.!/] [SIXBIT/IF SNAMET; IS OMITTED, SNAMEF; WILL BE USED.!/] [SIXBIT/IF DEVF: IS OMITTED, DSK: WILL BE ASSUMED.!/] [SIXBIT/IF DEVT: IS OMITTED, DEVF: WILL BE USED.!/] [SIXBIT/IF TFIL1 TFIL2 IS OMITTED, FROM1 FROM2 WILL BE USED.!/] [SIXBIT/RUBOUT ECHOES THE RUBBED OUT CHARACTERS.!/] [SIXBIT/COMPLETION OF THE COPY OPERATION IS SIGNALLED BY ANOTHER *!/] [SIXBIT/_X WILL CAUSE THE PROGRAM TO COMMIT SUICIDE.!/] [SIXBIT/IF A FILE COULD NOT BE OPENED, THE PROGRAM WILL EXPLAIN WHY AND AWAIT !/] [SIXBIT/MORE INPUT. IN A FURTHER FILE COPY OPERATION, OMITTED FROM-FILE !/] [SIXBIT/SPECIFICATIONS ARE COPIED IN FROM THE PREVIOUS ONE.!/] 0 BUF: BLOCK BUFL END START  öÈ$õ` + :IN: THERE ARE ONLY 18 BREAK TABLESHINõ‡€ gô€ ;ô?ÿýô€ 9õ‡€«8 ýüð( 1õ‡€ Éõ` mô¿ÿý7$‡ïð+ /4Dî"`QaXö†- îòý +õpaXõX€ Óöèô¤ ,~õ‡€ g P ‡ïô€ )õ‡€«8 ýüð( !ûˆ¿ÿÿõ‡€ Ïõ` m6DHõ` éöñ$ ,~,^xø$ DH EHõ` mõ‡€ gô€¡ô?ÿýô€ õ‡€«@AH8 hüð( õ‡€ åõ‡€ ÉöФ Cõ` mõ‡€ gô€Ÿô€ ô?ÿÿõ‡€«@AH8 hü î\"hÀ@õ‡€ åõ‡€ Ïõ` mWORDIN: CHANNEL OPEN IN IMPROPER MODE HWORDINARRYIN: CHANNEL OPEN IN IMPROPER MODEARRYINWORDOUT: CHANNEL OPEN IN IMPROPER M