PH.2 CLA MEMRY EQU TLK3 ET EQU TLK4 STA LFLG STA L1ST STA PNT1 COUNTS NEW LINE NOS. STA FL15 END OF TAPE INDICATOR STA C.WD0 STA C.WD1 MAG TAPE CONTROL WORDS TLK5 JSB .TALK,I INITIAL DIALOG: PHASE 2 CLA,INA STA FL14 PHASE 2 INDICATOR * LDB CBUF LDA B,I CPA ENDFI JMP *+4 AND MDTK7 CPA MDTK7 JMP CHCK1 GON5 CLA GON1 STA FL6 PUNCH! * CLA,INA CPA C.WD0 IF TO MAG TAPE JMP .POS. POSITION MAG TAPE JSB FF LEADER B... JSB EX CLA,INA CPA R JMP EX1 ISZ PNTR EX6 JSB LTSRH READ LINE AND FIND LITERALS JSB EX EXECUTE * CLA,INA CPA R REPLACES OR DELETES? JMP EX1 CPA CHR CHARACTER EDITS? JMP EX2 CPA TGI INSERTS? JMP EX3 LDA SAVE3 LDB RBUF JSB PUNCH JMP RET1 GET NEXT LINE! * EX1 LDB RAD LDA B,I INB JSB PNCH1 PUNCH REPLACES! EX4 CLA CPA TGI INSERTS? JMP RET1 NO EX5 LDB TGIAD LDA B,I INB JSB PNCH1 PUNCH INSERTS! JMP RET1 * EX2 LDB SBUF LDA LGH JSB PUNCH JMP EX4 ANY INSERTS? * EX3 LDA SAVE3 LDB RBUF JSB PUNCH PUNCH RECORD! JMP EX5 * RET1 ISZ PNTR JMP EX6 * CHCK1 INB LDA B,I AND MDTK SZA JMP CHCK2 JMP CHCK1 FIND NEXT TAG * CHCK2 LDA B,I CPA ENDFI JMP CHCK9 AND MDTK7 CPA MDTK7 JMP CHCK1 A /L KEEP CHECKING! JMP GON5 PUNCH! CHCK9 CLA,INA JMP GON1 DON'T PUNCH! * * PUNCH FROM ADDRESS IN B * NO. OF CHARS IN A * LIST IFNECCESSARY * * .POS. LDA O2 CLB JSB 107B,I POSITION PAST 2 FILES OCT 4 JMP MERR JMP MERR JMP B... MTAPE LDB ADD JSB 107B,I OCT 1 JMP MERR JMP MERR JMP P3 PUNCH NOP STB ADD STA NUMB SZA,RSS JMP PUNCH,I ISZ PNT1 CLA,INA CPA FL6 PUNCH? JMP P3 NO! LDA NUMB CLB,INB CPB C.WD0 TO MAG TAPE? JMP MTAPE YES! LDB ADD JSB 103B,I P3 CLA CPA L1ST JMP FL.LT INA STA LFLG LDA PNT1 JSB ASC1 LDA NUMB INA ARS LDB SBUF STB WRK12 SET SBUF CMA,INA STA C4 SET COUNT LDB ADD * LW1 LDA B,I INB STA WRK12,I ISZ WRK12 PUT WORD IN SBUF * ISZ C4 ARE WE DONE? JMP LW1 NO! * LDA NUMB ADA O6 LDB T72 CMB,INB ADB A SSB,RSS JMP ALT SK4 LDB ABUF JSB 102B,I JMP PUNCH,I FL.LT CPA LFLG JMP PUNCH,I CLA STA LFLG JSB 102B,I JMP PUNCH,I * * USED WHEN PUNCHING FROM EDIT FILE * NO. OF WORDS IN A REG * PNCH1 NOP P1 ALS JSB PUNCH LDB ADD LDA NUMB ARS ADB A LDA B,I MORE TO PUNCH? AND MDTK SZA JMP PNCH1,I LDA B,I YES! NO. OF WORDS IN A INB JMP P1 PUNCH! * ALT LDA T72 JMP SK4 * * ASC1 NOP STA N NUMBER IN N LDA ABU STA WRK11 SET ASCI BUFFR LDA TH STA P * AS8 LDA O9 STA C4 C4=9 * AS5 LDA C4 C4 IN A LDB P CPB TH P=1000? JMP AS1 CPB H100 JMP AS2 CPB T10 P=10? JMP AS3 * AS10 CMA,INA -P*C4 ADA N N-K SSA,RSS N-K<0? JMP AS4 NO! N-K>=0 * CCA ADA C4 STA C4 JMP AS5 C4=C4-1 * AS4 LDB C4 ADB T60B 60+C4 BIN. STB WRK11,I ISZ WRK11 STA N N=N-K CLA,INA CPA P JMP AST1 JSB MPY CPA P JMP AS6 JSB MPY CPA P JMP AS7 AS9 STA P JMP AS8 * AS7 LDA T10 JMP AS9 BACK TO LOOP AS6 CLA,INA JMP AS9 AS1 JSB MPY AS2 JSB MPY AS3 JSB MPY JMP AS10 AST1 LDB ABUF STB WRK11 LDB ABU LDA B,I INB ALF,ALF IOR B,I INB STA WRK11,I ISZ WRK11 LDA B,I INB ALF,ALF IOR B,I STA WRK11,I JMP ASC1,I CNVRT NOP LDA PNTR ADA NO.3 STA LAB LDB NO.FS SSB JMP CNVRT,I A NEW LABEL CMB,INB SECOND . FIRST? ADB A SZB,RSS JMP CNVRT,I SSB,RSS JMP CNVRT,I JMP ER3 GET NOP SLA JMP ODD WANT ODD CHAR. ARS NO. OF CHAR /2 CCB ADB RBUF ADB A SET UP WORD LDA B,I BRING IT IN JN AND MASK JMP GET,I * * ODD ARS LDB RBUF ADB A LDA B,I BRING IN WORD ALF,ALF JMP JN * * ABOVE ROUTINE FINDS CHAR SPECIFIED IN A * * FOLLOWING ROUTINE COMPARES CHAR. SPECIFIED IN A TO CHAR. IN B * CPRE NOP STB SAVE5 JSB GET GET CHAR CPA SAVE5 DOES IT MATCH? ISZ CPRE YES! INC.RETURN JMP CPRE,I * * READ A RECORD * FIND LITERALS,SEQUENCE ERRORS, INSERT IN CONTROL FILE * MTAPR CPB FL15 JMP R.REC * STB FL15 LDA O2 CLB JSB 107B,I OCT 4 JMP MERR JMP MERR * R.REC LDA T72 LDB RBUF JSB 107B,I OCT 0 JMP E.FI JMP MERR STA SAVE3 JMP C.N.U TLK6 JSB .TALK,I I/O ERROR: RESTART PHASE 1 JMP BGN LTSRH NOP CCA STA NO.FS FOR CPLAB * RAG1 LDA T72 CLB,INB CPB C.WD1 FROM MAG TAPE JMP MTAPR YES! LDB RBUF JSB 101B,I READ A LINE SZA,RSS JMP ET1 END OF TAPE! STA SAVE3 TRANSMISSION LOG IN CHARS. CLA,INA STA FL15 TO RECOGNIZE END OF TAPE * C.N.U LDA LBUF STA WRK7 SET LITERAL BUFFER * V1 LDA WRK7,I CPA ENDFI JMP LTSRH,I NO MORE LITERALS IN LBUF JSB CPLAB JMP LTSRH,I RECORD HAS NO LABELS! JMP V16 JSB CNVRT LABEL TO LINE NO. JSB FND FIND A PLACE JMP V1 TRY NEXT LITERAL! V16 CCA STA NO.FS JMP V1 * * * ET1 CLA CPA FL15 JMP RAG1 IGNORE FEED FRAMES! TLK7 JSB .TALK,I END OF TAPE ACTION: PHASE 2 * E.FI LDA CBUF STA WRK1 SET CONTROL BUFFER LOP38 LDA WRK1,I ISZ WRK1 CPA ENDFI JMP O.K. STA TAG CAG1 LDA WRK1,I AND MDTK SZA JMP LOP38 STILL COULD BE GOOD * JSB ERR * LOP29 LDA WRK1,I AND MDTK SZA JMP V2 FOUND NEXT TAG IN CBUF ISZ WRK1 JMP LOP29 * V2 LDA WRK1,I CPA ENDFI JMP NGD BAD RUN * STA TAG JSB ERR PRINT SEQUENCE ERROR! ISZ WRK1 JMP LOP29 * O.K. JSB FF CLA CPA C.WD1 RSS JMP .RWD. TLK8 JSB .TALK,I GOOD EDIT ACTION JMP BGN .RWD. JSB 107B,I OCT 3 JMP ...D * OT4 CLA STA FL15 JMP RAG1 * PER1 JSB 107B,I OCT 2 JMP MERR JMP MERR JSB 107B,I OCT 3 JMP FF,I FF NOP CLA,INA CPA FL6 PUNCH? JMP FF,I CLA,INA CPA C.WD0 TO MG TAPE? JMP PER1 YES LDB T20 CMB,INB STB C4 CLB STB RBUF,I COUNT SET AND A 0 IN RBUF * LOP3 CCA LDB RBUF JSB 103B,I ISZ C4 JMP LOP3 JMP FF,I PUNCH 150 FEED FRAMES FND NOP LDA CBUF STA WRK1 SET CONTROL BUFFER LDA NO.FS SSA JMP NW1 A NEW LABEL * LOP10 JSB CMN5 THROUGH LABEL FIND TAG LDB NO.FS JSB CMN6 DOES NO.FS MATCH JMP LOP10 NO! LDB BIAS JSB CMN7 A SECOND LABEL? JMP LOP10 NO! LDA LAB STA WRK1,I JSB RTRN STORE LABEL & CHECK FOR SEQUENCE ERRORS CCA STA NO.FS SET NO.FS JMP FND,I RETURN * NW1 JSB CMN5 FIND TAG LDB BIAS JSB CMN6 JMP NW1 TRY AGAIN FOR A BIAS AFTER TAG ISZ NO.FS ARE WE DONE? JMP NW1 NO! LDA WRK1,I AND MDTK ONE LABEL? SZA JMP NW2 YES * LDB WRK1,I STB NO.2 CPB BIAS JMP NW3 SECOND LABEL NOT KNOWN! CCA STA NO.FS SECOND LABEL KNOWN! NW4 ISZ WRK1 LDA WRK1 LDB O3 JSB SHIFT SHIFT OUT UNNEEDED I NFORMATION LDA RADR STA LOOK WHERE TO RETURN JMP BCK14 RDR CLA,INA STA NUMB ISZ WRK1 JSB ROTAT LDA NO.2 STORE SECOND LABEL STA WRK1,I RDR2 JSB RTRN JMP FND,I RDR1 CCA STA NO.FS JMP RDR2 * NW3 LDA LAB STA NO.FS SET NO.FS =FIRST LABEL JMP NW4 * NW2 LDB O2 LDA WRK1 JSB SHIFT SHIFT OUT UNNECESSARY INF. LDA RADR1 STA LOOK * BCK14 LDA CBUF STA WRK1 SET CONTROL FILE JMP BCK USE LOOK! * CMN5 NOP TAGN2 LDA WRK1,I ISZ WRK1 LDB TAG CPA B JMP CMN5,I JMP TAGN2 FINDS TAG * CMN6 NOP LDA WRK1,I ISZ WRK1 CPA B ISZ CMN6 JMP CMN6,I COMPARES ELEMENT TO B * CMN7 NOP LDA WRK1,I CPA B ISZ CMN7 JMP CMN7,I * * WRK7 IS INITIALLY SET AT BEGINNING OF LIT. BUFFER * CPLAB NOP LDA WRK7,I CPA BLOT JMP BLTOT LDA WRK7 STA WRK4 LDA WRK7,I AND OTMSK 010000B STA TAG * LDA WRK7,I AND TMSK SZA JMP TRW1 NXT3 ISZ WRK7 POINT AT FST CHAR OF NEW LABEL * LDA N5 LDB N5 ADB SAVE3 SSB LDA SAVE3 STA CNT1 CLA,INA STA SAVE2 LOP4 LDA SAVE2 COMPARE TO SAVE2 TH ELEMENT LDB SPACE TO A SPACE JSB CPRE JMP CPR1 A NON SPACE ISZ SAVE2 ISZ CNT1 JMP LOP4 TRY NEXT CHAR. JMP CPLAB,I NO LABELS NORMAL RETURN! * CPR1 ISZ CPLAB CPA WRK7,I THIS CHAR MATCHES? JMP CPR2 YES! HOW ABOUT THE NEXT ONE LOP5 LDA WRK7,I AND MDTK SZA JMP CPLAB,I AT A TAG RETURN!(INCREMENTED) ISZ WRK7 JMP LOP5 * CPR2 ISZ SAVE2 ISZ WRK7 ISZ CNT1 JMP CPR3 COMPARE NEXT SET OF CHARS. LDA WRK7,I AND MASK DO ENDS MATCH? SZA,RSS JMP MATCH LDA WRK7,I AND MDTK SZA JMP MATCH JMP LOP5 LABELS DON'T MATCH! * CPR3 LDA WRK7,I AND MDTK SZA JMP CPR4 A TAG! DOES LABEL END? LDA WRK7,I AND MASK SZA,RSS JMP CPR4 LDB WRK7,I LDA SAVE2 JSB CPRE JMP LOP5 SET OF CHARS DON'T MATCH! JMP CPR2 DO MATCH! * CPR4 LDB SPACE LDA SAVE2 JSB CPRE DO ENDS MATCH? JMP LOP5 NO! * MATCH LDA LBUF STA WRK3 SET LITERAL BUFFER CCA CPA NO.FS NO.FS=-1? JMP HWMNY NXT1 LDA WRK7,I AND MDTK LDB WRK7,I OVERSTORE BLF,BLF SZA CLB SZA,RSS SKIP IF A TAG ISZ WRK7 STB NO.3 SET NO.3 LDA BLOT STA WRK4,I ISZ CPLAB JMP CPLAB,I DOUBLY INC. RETURN * HWMNY CLA STA NO.FS NXT2 LDA WRK3,I CPA TAG A TAG? ISZ NO.FS INCREMENT OCCURRANCE COUNTER LDA WRK3 ISZ WRK3 CPA WRK4 ARE WE DONE RSS JMP NXT2 LDB NO.FS CMB,INB STB NO.FS - NO. OF OCCURRANCES JMP NXT1 * TRW1 ISZ WRK7 CCA CPA NO.FS SOMETHING TO INSERT? JMP INS1 NO! LDA NO.FS STA WRK7,I JMP NXT3 * BLTOT ISZ WRK7 ISZ CPLAB JMP LOP5 * INS1 LDA WRK7,I STA NO.FS SET NO.FS=1ST LINE NO. JMP NXT3 EX NOP LDA CBUF STA WRK9 STA WRK5 SET CBUF * CLA STA TGI STA R STA CHR STA L1ST * D.1 LDA WRK9,I CPA ENDFI END OF FILE? JMP EX,I YES! STA TAG SET TAG * AND MDTK3 CPA MDTK3 CH.CMD.? JMP D.2 YES! * LDA WRK9,I AND MDTK1 CPA MDTK1 /I? JMP D.3 * ISZ WRK9 /R OR /D LDA WRK9,I CPA PNTR LINE#=PNTR JMP D.4 JMP EX,I NO! * D.4 CLB STB CHR INB STB R JSB TGSRH FIND TAG IN EDIT FILE STA RAD SET RAD * ISZ WRK9 LDA WRK9,I AND MDTK SZA JMP D.7 ONE LABEL! * D.9 LDA WRK9,I CPA PNTR JMP D.8 SEC LABEL =PNTR! * CLA STA TGI ISZ PNTR JSB LTSRH READ LINE IN JMP D.9 UNTIL SEC. LABEL = PNTR * * D.7 LDA WRK9 LDB O2 JSB SHIFT JMP D.10 SHIFTED 2 UNITS! * D.8 ISZ WRK9 LDA WRK9 LDB O3 JSB SHIFT SHIFT 3 UNITS! JMP D.10 * * * D.3 ISZ WRK9 LDA WRK9,I CPA PNTR JMP D.11 EXECUTE JMP EX,I * D.11 CLA,INA STA TGI JSB TGSRH FIND TAG IN EDIT FILE! STA TGIAD * ISZ WRK9 JMP D.7 SHIFT CMD. OUT! * * D.2 LDA WRK9,I AND MDTK7 CPA MDTK7 JMP D.12 * JSB L.NO JMP EX,I CLA,INA STA CHR JSB CH.AN JMP D.10 * D.12 JSB L.NO JMP EX,I CLA,INA STA L1ST * * D.10 LDA WRK5 STA WRK9 JMP D.1 L.NO NOP ISZ WRK9 LDA WRK9,I AND MDTK SZA JMP L.NO1 NO LABELS * LDA PNTR CPA WRK9,I FST=PNTR JMP L.NO2 CMA,INA ADA WRK9,I SSA,RSS JMP L.NO,I FST>PNTR * L.NO2 ISZ WRK9 LDA WRK9,I AND MDTK SZA JMP L.NO3 ONE LABEL! * LDA WRK9,I CMA,INA ADA PNTR SSA,RSS JMP L.NO5 PNTR>=SEC! * * LDA WRK5 ADA O3 STA WRK5 WRK5=WRK5+3 * L.NO4 ISZ L.NO JMP L.NO,I RETURN! * L.NO1 ISZ WRK5 WRK5=WRK5+1 JMP L.NO4 * L.NO3 LDA WRK9 LDB O2 JSB SHIFT JMP L.NO4 * L.NO5 ISZ WRK9 LDA WRK9 LDB O3 JSB SHIFT JMP L.NO4 TGSRH NOP LDA EBUF STA WRK6 SET EDIT BUFFER D.6 LDA WRK6,I ISZ WRK6 CPA TAG FIND TAG IN EDIT FILE! JMP D.5 JMP D.6 D.5 LDA WRK6 JMP TGSRH,I CH.AN NOP LDA SBUF STA WRK4 CLA STA LGH STA MRKR STA SIDE HOUSEKEEP INA STA TO. * CHAN2 JSB SR.ED JMP CHAN1 NO CHARACTER MATCHES! * JSB FM.1 LDB B.ADD,I CPB LGST JMP CHAN3 * LDA LGST CMA,INA CCB ADA B ADA B.ADD,I ELENGTH-(1+LGST) LDB B.ADD ADB LGST ADB O2 JSB FORM. CHAN3 LDA MRKR ADA LGST STA TO. CCB ADA B STA MRKR JMP CHAN2 * CHAN1 ISZ MRKR JSB FM.1 LDA SPACE IOR TEMP STA WRK4,I LDA LGH STA SAVE3 SAVE3=LGH SZA,RSS JMP CH.AN,I CMA ARS STA SAVE8 SAVE8=-LGH+1 SHIFTED RIGHT * LDB RBUF LDA SBUF STA WRK4 SET BUFFERS * LDA WRK4,I STA B,I INB ISZ WRK4 ISZ SAVE8 JMP *-5 JMP CH.AN,I JMP CH.AN,I * * FINDS SET OF CHARS TO BE REPLACED IN RECORD * IF NONE THEN NORMAL RETURN * SR.ED NOP CLA STA LGST STA B.ADD LGST AND B.ADD =0 * S.ED7 JSB TGSRH FIND TAG IN EDIT FILE * LDB MRKR CPB SAVE3 JMP SR.ED,I END OF RECORD * ISZ MRKR * S.ED5 LDB A,I CMB,INB STB ELNG -EDIT LENGTH STA EADD EDIT ADDRESS * STA CELL SET WORKING BUFFER ISZ CELL LDA MRKR STA SMRKR SMRKR=MRKR CLA STA ESIZE ESIZE=0 * S.ED4 LDA SMRKR LDB CELL,I ISZ CELL JSB CPRE JMP S.ED1 NO MATCH! * ISZ ESIZE ISZ ELNG JMP S.ED2 EDIT NOT ENDED! * S.ED3 LDA LGST CMA,INA ADA ESIZE SSA ESIZE-LGST>=0? JMP S.ED1 NO! MORE EDITS? * LDA ESIZE STA LGST RESET LGST LDA EADD STA B.ADD RESET B.ADD JMP S.ED1 * S.ED2 LDA CELL,I CPA BKAR JMP S.ED3 BACKARROW ENCOUNTERED! * LDA SMRKR CPA SAVE3 JMP S.ED1 END OF RECORD * ISZ SMRKR JMP S.ED4 * S.ED1 LDB EADD LDA B,I INB ADB A B HAS ADDRESS AFTER EDIT LDA B,I AND MDTK SZA MORE EDITS? JMP S.ED6 NO! A TAG LDA B JMP S.ED5 * S.ED6 LDA LGST SZA,RSS LGST=0? JMP S.ED7 YES! * ISZ SR.ED JMP SR.ED,I * * LENGTH IN A :S.A. IN B * FORM. NOP SZA,RSS JMP FORM.,I A=0 RETURN CMA,INA STA NUMB NUMB=-A STB WRK S.A. IN WRK * FORM2 LDA T72 CPA LGH JMP FORM.,I LGH =72 * LDA WRK,I LDB SIDE SZB JMP FORM1 SIDE=1 CHAR. IN A REG * ALF,ALF SIDE=0 CHAR. IN A REG STA TEMP CLA,INA STA SIDE SIDE SET TO 1 * FORM3 ISZ WRK ISZ LGH ISZ NUMB JMP FORM2 JMP FORM.,I * FORM1 IOR TEMP STA WRK4,I STORE IN SBUF ISZ WRK4 CLA STA SIDE JMP FORM3 FM.1 NOP FM1. LDA TO. CPA MRKR JMP FM.1,I * JSB GET STA ABUF,I * CLA,INA LDB ABUF JSB FORM. * ISZ TO. JMP FM1. R OCT 0 CHR OCT 0 TGI OCT 0 LGST OCT 0 B.ADD OCT 0 MRKR OCT 0 SMRKR OCT 0 ELNG OCT 0 EADD OCT 0 CELL OCT 0 ESIZE OCT 0 TO. OCT 0 LGH OCT 0 LFLG OCT 0 SIDE OCT 0 C.WD1 NOP C.WD0 NOP WRK9 OCT 0 WRK5 OCT 0 T20 DEC 20 RAD OCT 0 TGIAD OCT 0 ABU1 BSS 4 DIGIT BSS 5 MGE2 ASC 17,SEQUENCE ERROR: CONTROL STATEMENT MGE3 ASC 16, D H SYMBOLIC EDITOR, RE ASC 16,VISED 2/71 BY B. BEADLE (G & L) OCT 6412 CR,LF ABUFR ASC 3, SBUFR BSS 37 RBUFR BSS 73 * * TELETYPE DIALOG ROUTINE * TALK NOP COMMON ENTRY POINT LDA TALK DETERMINE ADDRESS OF LDB ADTBL CALLING STATEMENT+1 CPA 1B,I JMP *+3 INB JMP *-3 LDA ADTBL COMPUTE MESSAGE ADDRESS, CMA,INA SIZE, AND FURTHER ACTION ADB 0B REQUESTED. LDA 1B BLS ADB 0B ADB MGTBL ADDRESS OF FURTHER ACTION LDA 1B,I STA ACT SAVE ADDRESS OF ACTION INB LDA 1B,I SIZE OF MESSAGE BUFFER INB LDB 1B,I ADDRESS OF MESSAGE BUFFER JSB 102B,I OUTPUT THE MESSAGE ON TTY REQST LDA T72 LDB RBUF JSB 104B,I REQUEST FOR RESPONSE CPA O2 WERE THERE 2 CHARACTERS IN THE RESPONSE? RSS JMP REQST NO. TRY AGAIN. JSB ACT,I YES. START FURTHER RESPONSE. JMP REQST UNSUCCESSFUL! TRY AGAIN. LDA O2 LDB .ASTR JSB 102B,I ECHO "*" JMP TALK,I RETURN TO EDIT MAIN * * ADDRESS TABLE * ADTBL DEF *+1 DEF TLK1+1 DEF TLK2+1 DEF TLK3+1 DEF TLK4+1 DEF TLK5+1 DEF TLK6+1 DEF TLK7+1 DEF TLK8+1 DEF TLK9+1 * * MESSAGE TABLE * MGTBL DEF *+1 DEF ACT1 ADDRESS OF RESPONSE ACTION 1 DEC 18 SIZE OF MESSAGE DEF MSG1 ADDRESS OF MESSAGE 1 BUFFER DEF ACT2 DEC 10 DEF MSG2 DEF ACT3 DEC 14 DEF MSG3 DEF ACT4 DEC 12 DEF MSG4 DEF ACT5 DEC 28 DEF MSG5 DEF ACT6 DEC 10 DEF MSG6 DEF ACT7 DEC 12 DEF MSG7 DEF ACT8 DEC 10 DEF MSG8 DEF ACT9 DEC 34 DEF MSG9 * * ACTION ROUTINES * ACT1 NOP INITIAL DIALOG ACTION LDA RBUF,I CHECK FOR VALID RESPONSE CLB CPA SLSHP JMP *+5 CPA SLSHT RSS JMP ACT1,I INVALID COMMAND; TRY AGAIN INB EDIT FILE SOURSE IS TTY. STB TTY SET EDIT FILE SOURCE FLAG ISZ ACT1 BUMP RETURN ADDRESS LDA MTCMD INITIALIZE FOR PHASE 2 DIALOG STA SLSHM JMP ACT1,I VALID RETURN ACT2 NOP BAD EDIT ACTION LDA RBUF,I CHECK FOR VALID RESPONSE CPA SLSHE EXIT TO MTS? JMP EMTS YES CPA SLSHC RESTART EDITOR? RSS YES JMP ACT2,I INVALID RESPONSE. ISZ ACT2 BUMP RETURN ADDRESS JMP ACT2,I VALID RETURN EMTS CLA CLB JMP 77B EXIT TO MTS ACT3 EQU ACT2 ACT4 NOP END OF TAPE ACTION: PHASE 1 LDA RBUF,I CPA SLSHC JMP MPTE1 MORE TAPE; CONTINUE. CPA SLSHE RSS JMP ACT4,I INVALID RESPONSE LDA .SLEN END OF TAPE STA TALK MODIFY RETURN FROM ROUTINE MPTE1 ISZ ACT4 BUMP RETURN ADDRESS JMP ACT4,I ACT5 NOP INITIAL DIALOG: PHASE 2 LDA RBUF,I CPA SLSHP PAPER SOURCE? JMP PSRCE YES CPA SLSHM M T SOURCE? RSS JMP ACT5,I INVALID RESPONSE ISZ .CWD1,I M T SOURCE CLA STA SLSHM INVALIDATE M T DESTINATION PSRCE LDA TALK STA STALK SAVE RETURN FOR REENTRY TO ROUTINE TLK9 JSB .TALK,I CONTINUE DIALOG LDA STALK STA TALK RESTORE RETURN ADDRESS ISZ ACT5 BUMP RETURN ADDRESS JMP ACT5,I ACT9 NOP LDA RBUF,I CPA SLSHP JMP PDEST DESTINATION IS PAPER CPA SLSHM RSS JMP ACT9,I INVALID COMMAND ISZ .CWD0,I M T DESTINATION PDEST ISZ ACT9 BUMP RETURN ADDRESS JMP ACT9,I ACT6 EQU ACT2 I/O ERROR ACT7 NOP END OF TAPE ACTION : PHASE 2 LDA RBUF,I CPA SLSHC MORE TAPE? JMP MTP YES CPA SLSHE FINISHED? RSS JMP ACT7,I INVALID RESPONSE ISZ ACT7 JMP ACT7,I MTP LDA .OT4 STA TALK ALTER RETURN ADDRESS JMP *-4 ACT8 EQU ACT2 GOOD EDIT * * CONSTANTS * .ASTR DEF ASTR ASTR ASC 1,* SLSHM ASC 1,/M ACT NOP STALK NOP .OT4 DEF OT4 SLSHT ASC 1,/T MERR EQU TLK6 ...D EQU TLK8 SLSHP ASC 1,/P SLSHC ASC 1,/C SLSHE ASC 1,/E MTCMD ASC 1,/M .SLEN DEF SLEND .CWD0 DEF C.WD0 .CWD1 DEF C.WD1 * * MESSAGES * MSG1 ASC 9,EDIT FILE DEVICE? MSG2 ASC 5,BAD EDIT! MSG3 ASC 7,OUT OF MEMORY! MSG4 ASC 6,END OF TAPE. MSG5 ASC 14,SYMBOLIC FILE SOURCE DEVICE? MSG6 ASC 5,I/O ERROR! MSG7 EQU MSG4 MSG8 ASC 5,GOOD EDIT! MSG9 ASC 17,SYMBOLIC FILE DESTINATION DEVICE? CBUFR BSS 1 END w