File: VENUS.PA of Tape: Sources/Multi8/m8-tk-etc-20-10-80
(Source file text)
/COMMUNICATIONS WITH ETH-VENUS /W.V.D.MARK ETH-HPF-B22 /1-OCT-80 /PARAMETERS NEEDED: XR=10 TEMP=20 CHAR=21 INFPTR=22 INEOF=23 OUBUF=0000 /ADDRESS OF OUTPUT BUFFER OUCTL=5400 /OUTPUT BUFFER CONTROL WORD (MUST BE NEGATIVE) INBUF=3000 /ADDRESS OF INPUT BUFFER INCTL=1400 /INPUT BUFFER CONTROL WORD INRECS=6 /[INCTL/256] ABUF=6000 /ASCII BUFFER AND MESSAGES INDEVH=6600 /ADDRESS OF PAGE FOR INPUT HANDLER OUDEVH=7200 /ADDRESS OF PAGE FOR OUTPUT HANDLER ORIGIN=2000 DCB=7760 MOPT=7643 /ASSUMES I/O MONITOR IS RESIDENT IN CORE. /CAN BE CALLED FROM ANY FIELD WITH BUFFERS IN ANY FIELD. DEV= 31^10 KCF2=6000+DEV KSF2=6001+DEV KCC2=6002+DEV KRS2=6004+DEV KIE2=6005+DEV KRB2=6006+DEV TFL2=6010+DEV TSF2=6011+DEV TCF2=6012+DEV TPC2=6014+DEV TSK2=6015+DEV TLS2=6016+DEV INFLD=INCTL&70 /GET FIELD OF INPUT BUFFER OUFLD=OUCTL&70 /DITTO OUTPUT BUFFER FIELD 1 *ORIGIN IN7400, 7400 INPTR, 0 IOPEN, 0 CLA CMA DCA INCHCT /SET INCHCT TO FORCE A READ ISZ INEOF /SET END-OF-FILE FLAG TO FORCE A NEW FILE TAD (7617 DCA INFPTR /RESET FILE POINTER JMS I (VENIOP JMP I IOPEN ICHAR, 0 IN7600, 7600 RDF TAD INCDIF DCA INRTRN /SAVE CALLING FIELDS INCHAR, CDF INFLD ISZ INJMP /BUMP THREE-WAY UNPACK SWITCH ISZ INCHCT INJMPP, JMP INJMP TAD INEOF SNA CLA /DID LAST READ YIELD END-OF-FILE? JMP INGBUF /NO - DO ANOTHER GETNEW, JMS INNEWF /OPEN A NEW INPUT FILE JMP EOFERR /NO FILE TO OPEN INGBUF, TAD INCTR CLL TAD (INRECS SNL DCA INCTR /RESTORE INCTR IF IT HASN'T OVERFLOWED SZL /IS THIS THE LAST READ? ISZ INEOF /YES - SET END-OF-FILE FLAG /NOT END-OF-FILE IF INPUT DEVICE /IS NON-FILE STRUCTURED! CLL CML CMA RTR /CONSTRUCT A CONTROL WORD FOR THE READ RTR /FROM THE AMOUNT OF THE OVERFLOW RTR /(IF ANY) AND THE STANDARD CONTROL WORD TAD (INCTL+1 DCA INCTLW INCDIF, CDF CIF 0 CDF 10 JMS I INHNDL /CALL THE DEVICE HANDLER INCTLW, 0 INBUFP, INBUF INREC, 0 JMP INERRX INBREC, TAD INREC TAD (INRECS DCA INREC /UPDATE THE RECORD NUMBER TAD INCTLW AND IN7600 CLL RAL TAD INCTLW AND IN7600 CMA DCA INCHCT /COMPUTE THE NEW CHARACTER COUNT TAD INJMPP DCA INJMP /RESET THE CHARACTER SWITCH TAD INBUFP DCA INPTR /AND THE WORD POINTER JMP INCHAR /GO BACK AND MAKE BELIEVE THIS NEVER HAPPENED INERRX, ISZ INEOF /EITHER AN END-OF-FILE OR A BADDIE SMA CLA /WHICH TYPE WAS IT? JMP INBREC /END OF FILE - RESUME THY PROCESSING INERR, CLA CLL CML RAR /BADDIE - GIVE ERROR RETURN WITH NEGATIVE AC EOFERR, JMP INRTRN INJMP, HLT /THIS IS THE THREE - WAY CHARACTER SWITCH JMP ICHAR1 JMP ICHAR2 ICHAR3, TAD INJMPP DCA INJMP TAD I INPTR IN200, AND IN7400 CLL RTR RTR /COMBINE THE HIGH-ORDER FOUR BITS OF TAD INCTLW RTR /THE TWO WORD TO FORM THE THIRD CHARACTER RTR ISZ INPTR JMP INCOMN ICHAR2, TAD I INPTR AND IN7400 DCA INCTLW /SAVE THE HIGH-ORDER BITS FOR THE THIRD CHAR ISZ INPTR /BUMP THE WORD POINTER ICHAR1, TAD I INPTR INCOMN, AND (377 TAD (-232 INCTZF, SNA /IS THE CHARACTER A ^Z? JMP GETNEW /YES - GET A NEW FILE TAD (232 /RESTORE THE CHARACTER ISZ ICHAR /BUMP RETURN TO NORMAL RETURN INRTRN, 0 /RESTORE CALLING FIELDS JMP I ICHAR /AND RETURN /IOPEN IS UNNECESSARY. INNEWF, -1 /ROUTINE TO OPEN NEW INPUT FILE INCHCT=INNEWF CDF 10 TAD (INDEVH+1 DCA INHNDL /INITIALIZE HANDLER ADDRESS TAD I INFPTR /GET NEXT CD INPUT FILE ENTRY SNA /ANY MORE? JMP I INNEWF /NO - OUT OF INPUT JMS I IN200 1 /ASSIGN, FETCH HANDLER INHNDL, 0 HLT /HUH? TAD I INFPTR AND (7760 /GET LENGTH PART OF WORD SZA /LENGTH OF 0 MEANS LENGTH >=256 TAD (17 /ADD HIGH-ORDER BITS CLL CML RTR RTR DCA INCTR /STORE LENGTH OF FILE ISZ INFPTR TAD I INFPTR DCA INREC /STORE STARTING RECORD NUMBER OF FILE ISZ INFPTR DCA INEOF /ZERO END-OF-FILE FLAG ISZ INNEWF JMP I INNEWF INCTR=IOPEN PAGE OOPEN, 0 /OPEN OUTPUT FILE OU7600, 7600 RDF TAD OUCDIF DCA OORETN TAD OU7601 DCA OUBLK TAD (OUDEVH+1 DCA OUHNDL CDF 10 TAD I OU7600 /GET DEVICE NUMBER WORD OF OUTPUT FILE ENTRY AND (17 /STRIP OFF ANY LENGTH INFO SNA /IS THERE AN OUTPUT DEVICE? JMP I (VENOOP /NO - INHIBIT OUTPUT JMS I (200 1 /ASSIGN, FETCH HANDLER OUHNDL, 0 /OUTPUT DEVICE HANDLER ENTRY HLT /HUH? OUENTR, TAD I OU7600 JMS I (200 3 /ENTER OUTPUT FILE OUBLK, 7601 /REPLACED WITH STARTING BLOCK OUELEN, 0 /REPLACED WITH LENGTH OF HOLE JMP OEFAIL /FAILED - MAYBE WE ASKED TOO MUCH DCA OUCCNT DCA I (OUTINH /ZERO OUTPUT INHIBIT FLAG JMS I (OUSETP ISZ OOPEN OORETN, CDF CIF 10 /RESTORE CALLING FIELDS JMP I OOPEN OEFAIL, TAD I OU7600 AND (7760 /GET REQUESTED LENGTH SNA CLA /WAS IT AN INDEFINITE REQUEST JMP ONTERR /YES - CANNOT ENTER THE FILE TAD I OU7600 AND (17 /MAKE THE REQUESTED LENGTH ZERO DCA I OU7600 JMP OUENTR /TRY, TRY AGAIN ONTERR, CLA CLL CML RAR JMP OORETN /TAKE THE ERROR RETURN WITH AC<0 ONOFIL, ISZ I (OUTINH JMP OORETN /TAKE THE ERROR RETURN WITH AC=0 OUTDMP, 0 DCA OUCTLW /STORE THE CONTROL WORD CDF 10 TAD I (OUTINH SZA CLA JMP OUNOWR TAD OUCCNT SNA ISZ OUCTLW TAD OUBLK DCA OUREC /COMPUTE THE STARTING BLOCK NUMBER OF THIS TRANSFER TAD OUCTLW CLL RTL RTL RTL AND (17 /COMPUTE THE NUMBER OF RECORDS TAD OUCCNT /UPDATE THE NUMBER OF BLOCKS IN THE FILE DCA OUCCNT TAD OUCCNT CLL CML TAD OUELEN SNL SZA CLA /DOES THE LENGTH EXCEED THE GIVEN LENGTH? JMP I OUTDMP /YES - SIGNAL OUTPUT ERROR OUCDIF, CDF CIF 0 CDF 10 JMS I OUHNDL OUCTLW, 0 OUBUF OUREC, 0 SKP OUNOWR, ISZ OUTDMP /BUMP OUTDMP TO NORMAL RETURN JMP I OUTDMP OCLOSE, 0 CDF 10 TAD I (OUTINH SZA CLA /IS OUTPUT INHIBITED? JMP OCISZ /YES - CLOSE IS A NOP TAD I (VENUSO SZA CLA JMP I (VENCLO TAD (232 /OUTPUT A ^Z JMS I (OCHAR JMP OCRET JMS I (OCHAR JMP OCRET FILLLP, JMS I (OCHAR JMP OCRET TAD (177 /WHOLE RECORD AND I (OUDWCT SZA CLA /UP TO THE BOUNDARY YET? JMP FILLLP /NO - FILL WITH ZEROS TAD I (OUDWCT /GET DOUBLEWORD COUNT LEFT TAD (OUCTL&3700 SNA /A FULL WRITE LEFT? JMP NODUMP /YES - DON'T DO IT - THE ^Z IS ALREADY OUT TAD (4000+OUFLD /PUT IN THE FIELD BITS AND THE WRITE BIT JMS OUTDMP JMP OCRET /AN ERROR OCCURRED WHILE DUMPING THE BUFFER NODUMP, TAD I OU7600 /GET THE DEVICE NUMBER JMS I (200 4 /CLOSE THE OUTPUT FILE OU7601, 7601 /POINTER TO THE OUTPUT FILE NAME OUCCNT, 0 SKP /ERROR WHILE CLOSING THE FILE - BAD! OCISZ, ISZ OCLOSE OCRET, TAD (13 /RELEASE CODE FOR MULTI8 6770 /GIANT IOT CLA CDF CIF 10 /RESTORE CALLING FIELDS JMP I OCLOSE PAGE OUSETP, 0 /ROUTINE TO INITIALIZE CHARACTER POINTERS TAD (OUCTL&3700 /GET SIZE OF BUFFER IN DOUBLEWORDS CIA /PAL10 IS DEFINITELY NOT NICE DCA OUDWCT / TAD (OUBUF IFNZRO OUBUF <ERROR!> /V3 DCA OUPTR /INITIALIZE WORD POINTER TAD OUJMPE DCA OUJMP /INITIALIZE THREE-WAY CHARACTER SWITCH JMP I OUSETP OCHAR, 0 AND (377 DCA OUTEMP RDF TAD (CDF CIF 0 DCA OUCRET TAD OUTINH SZA CLA /IS THERE AN OUTPUT FILE? JMP OUCOMN /NO - EXIT OUCHAR, CDF OUFLD /SET DATA FIELD TO BUFFER'S FIELD ISZ OUJMP /BUMP THE CHARACTER SWITCH OUJMP, HLT /THREE WAY CHARACTER SWITCH JMP OCHAR1 JMP OCHAR2 OCHAR3, TAD OUTEMP CLL RTL RTL AND (7400 TAD I OUPOLD DCA I OUPOLD /UPDATE FIRST WORD OF TWO WITH HIGH /ORDER 4 BITS OF THIRD CHAR TAD OUTEMP CLL RTR RTR RAR AND (7400 TAD I OUPTR DCA I OUPTR /UPDATE SECOND WORD FROM LOW ORDER 4 BITS TAD OUJMPE DCA OUJMP /RESET SWITCH ISZ OUPTR ISZ OUDWCT /BUMP DOUBLEWORD COUNTER EVERY 3 CHARS JMP OUCOMN TAD (OUCTL /LOAD CONTROL WORD FOR A FULL WRITE JMS I (OUTDMP /DUMP THE BUFFER JMP OUCRET /OUTPUT ERROR - GIVE ERROR RETURN JMS OUSETP /RE-INITIALIZE THE POINTERS JMP OUCOMN OCHAR2, TAD OUPTR DCA OUPOLD /SAVE POINTER TO FIRST WORD OF TWO ISZ OUPTR /BUMP WORD POINTER TO SECOND WORD OCHAR1, TAD OUTEMP DCA I OUPTR OUCOMN, ISZ OCHAR OUCRET, HLT /RESTORE CALLING FIELDS JMP I OCHAR OUTEMP, 0 OUPOLD, 0 OUPTR, 0 OUJMPE, JMP OUJMP OUDWCT, 0 OUTINH, 0 OTYPE, 0 RDF TAD (CDF CIF 0 DCA OTRTN CDF 10 TAD I (7600 AND (17 TAD (DCB-1 DCA OUTEMP TAD I OUTEMP OTRTN, HLT JMP I OTYPE OCHARX, 0 DCA OTEM TAD VENUSO SNA CLA JMP PDPOUT TAD OTEM JMS I (VENOUT JMP I OCHARX JMP ORET PDPOUT, TAD OTEM JMS I (OCHAR SKP ORET, ISZ OCHARX JMP I OCHARX OTEM, 0 ICHARX, 0 TAD VENUSI SNA CLA JMP PDPIN JMS I (VENIN JMP I ICHARX JMP IRET PDPIN, JMS I (ICHAR SKP IRET, ISZ ICHARX JMP I ICHARX VENUSO, 0 VENUSI, 0 PAGE /ASCII PROCESSOR LFEED, TAD CHAR JMS I (LINSTR /PUT THE LINE FEED IN THE LINE BUFFER EOL, JMS I (LINSTR /MARK THE END OF USEFUL INFO TAD (ABUF-1 DCA XR /RESET BUFFER POINTER JMS LINGET /CHECK ON .EOR. OR .EOF. TAD (-". SZA CLA JMP NOEORF JMS LINGET TAD (-"E SZA CLA JMP NOEORF JMS LINGET TAD (-"O SZA CLA JMP NOEORF JMS LINGET TAD (-"R SNA JMP VEEOR XX="F TAD ("R-XX SNA CLA JMP VEEOF NOEORF, TAD (ABUF-1 DCA XR /RESET BUFFER POINTER EOLLP, JMS LINGET /GET A CHARACTER FROM THE LINE BUFFER PIPSNA, SNA /ZERO MEANS NO MORE CHARS JMP EOFTST JMS I (OCHARX /OUTPUT THE CHARACTER JMP I (AOUERR JMP EOLLP EOFTST, TAD AEOFFG SNA CLA /END OF INPUT ENCOUNTERED? JMP I (ASCIGO /NO - GET NEXT LINE ACLOSE, JMS I (OCLOSE /YES - CLOSE THE OUTPUT FILE SKP JMP I (VENANN AOUERR, SMA CLA JMP BOUERR PER2, JMS I (PIPERR ERR2 BOUERR, JMS I (PIPERR ERR0 VENCD, KCC TAD ("# JMS I (TTYOUT TSF JMP .-1 JMS I (200 5 2605 /"VE" TFL ASCII, CLA /JMS I (ASCI2 JMS I (OOPEN SMA CLA JMP .+3 JMS I (PIPERR ERR5 JMS I (IOPEN /OPEN THE INPUT FILES DCA AEOFFG /ZERO THE END-OF-FILE FLAG JMP I (ASCIGO /ENTRY ON END OF INPUT ASCEOF, SMA CLA /WAS IT EOF OR AN INPUT ERROR? JMP .+3 PER4, JMS I (PIPERR ERR4 ISZ AEOFFG /SET END-OF-INPUT FLAG JMP EOL /PROCESS LAST LINE (IF ANY) AEOFFG, 0 LINGET, 0 CDF 0 TAD I XR CDF 10 JMP I LINGET VEEOR, TAD (ABUF-1 DCA XR /KILL .EOR. JMP I (FFEED VEEOF, TAD (ABUF-1 DCA XR /KILL .EOF. JMS I (LINSTR /NULL ISZ AEOFFG /SET END OF INPUT FLAG JMP EOL PAGE /ASCII PROCESSOR CONTINUED ASCIGO, TAD (ABUF-1 DCA XR DCA COLCT /ZERO COLUMN COUNTER ACHLP, JMS I (ICHARX /GET A CHARACTER JMP I (ASCEOF /END OF INPUT OR WORSE AND (177 /MASK OUT PARITY BIT SZA /IGNORE BLANK TAPE AND LEADER/TRAILER TAD (-177 SNA JMP ACHLP /DITTO RUBOUTS TAD (377 /FORCE COLUMN 8 ON DCA CHAR TAD CHAR TAD (-216 CLL TAD ASCI5 SNL /IS THE CHARACTER A FORM CONTROL CHARACTER? JMP CINSRT /NO TAD ASCJMP /YES - GO TO APPROPRIATE ROUTINE DCA .+1 HLT ASCJMP, JMP I .+1 TABLP LFEED CARRET /LEAVE IT FOR DIABLO FFEED CARRET CINSRT, 7600 /GRP 2 CLA TAD CHAR ADCAXR, JMS LINSTR /STORE THE CHARACTER IN THE LINE BUFFER ISZ COLCT /ALWAYS BUMP THE COLUMN POINTER TESTXR, TAD XR TAD (-ABUF-300 SPA CLA /HAS THE BUFFER OVERFLOWED? JMP ACHLP /NO - GET NEXT CHARACTER JMS I (PIPERR ERR1 TABLP, TAD I (MOPT /IS IT /A ? SPA CLA JMP CARRET /YES, LEAVE TAB TAD (240 JMS LINSTR /OUTPUT A SPACE ISZ COLCT TAD COLCT AND (7 SZA CLA /IS THE COLUMN COUNTER A MULTIPLE OF 8? JMP TABLP /NOT YET JMP TESTXR /YES - CHECK BUFFER OVERFLOW VTLF, TAD I (MOPT /IS IT /A ? SPA CLA JMP I (LFEED /YES, LEAVE VTAB AND END LINE TAD (-5 /FIVE LINE FEEDS SIMULATE A VERTICAL TAB DCA TEMP TAD (212 JMS LINSTR ISZ TEMP JMP .-3 JMP I (EOL /FORM FEED AND VERTICAL TAB ARE LINE ENDERS FFEED, TAD I (VENUSO SNA CLA JMP FFPDP JMS I (PRWD EOR JMS I (PCRLF JMP I (EOL FFPDP, TAD (214 JMS LINSTR JMP I (EOL CARRET, TAD CHAR JMS LINSTR /STORE CARRIAGE RETURN IN THE BUFFER JMP TESTXR /CARRIAGE RETURN IS NO LINE TERMINATOR COLCT, 0 ASCI5, 5 LINSTR, 0 CDF 0 DCA I XR CDF 10 JMP I LINSTR PAGE PIPERR, 0 SMA SZA DCA ERRSWI SMA CLA JMS CRLF TAD I PIPERR /GET ARG DCA TEMP ERLP, CDF 0 TAD I TEMP BSW JMS ERPCH /PRINT HIGH-ORDER CHARACTER TAD I TEMP JMS ERPCH /PRINT LOW-ORDER CHARACTER ISZ TEMP JMP ERLP ERPCH, 0 AND (77 SNA JMP ERREXI /0 CHARACTER TERMINATES JMS CHPRNT JMP I ERPCH FILENR, TAD ("# JMS TTYOUT TAD INFPTR /GET PTR TO CURRENT INPUT FILE TAD (321 /MAGIC NUMBER CLL RAR JMP FILENR-2 ERREXI, CDF 10 TAD ERRSWI DCA ERPCH DCA ERRSWI TAD ERPCH SNA CLA JMP I (VENERR ISZ PIPERR JMP I PIPERR ERRSWI, 0 CHPRNT, 0 TAD (-37 /IS IT A _? SNA JMP FILENR /YES..PRINT FILE NUMBER SPA TAD (100 TAD (237 JMS TTYOUT JMP I CHPRNT CRLF, 0 CDF 10 TAD (215 JMS TTYOUT TAD (212 JMS TTYOUT JMP I CRLF TTYOUT, 0 TSF JMP .-1 TLS CLA JMP I TTYOUT PCRLF, 0 TAD (215 JMS I (OCHARX JMP I (AOUERR TAD (212 JMS I (OCHARX JMP I (AOUERR JMP I PCRLF PRWD, 0 CDF 10 TAD I PRWD DCA TEMP ISZ PRWD PRWDLP, CDF 0 TAD I TEMP BSW JMS PR6BIT CDF 0 TAD I TEMP JMS PR6BIT ISZ TEMP JMP PRWDLP PR6BIT, 0 CDF 10 AND (77 SNA JMP I PRWD TAD (240 AND (77 TAD (240 JMS I (OCHARX JMP I (AOUERR JMP I PR6BIT PAGE VENCLO, JMS I (PRWD EOF JMS I (PCRLF CLA IAC /WAIT FOR * ONLY JMS SYNC DCA I (VENUSO JMP I (OCISZ VENOOP, ISZ I (VENUSO JMS I (PRWD VRETN JMS I (PCRLF CLA IAC JMS SYNC JMS I (PRWD VPERM JMS I (PCRLF CLA IAC JMS SYNC TAD I (MOPT / /A ? SMA CLA JMP VENO6 /NO, 6-BIT JMS I (PRWD VPUT12 /YES, 12-BIT ASCII JMS I (PCRLF JMS I (VENIN /WAIT FOR SYNC CHAR JMP I (VQUEST /HUH? CLA /THROW IT AWAY JMP I (OORETN-3 VENO6, JMS I (PRWD VPUT JMS I (PCRLF JMP I (OORETN-3 VENIOP, 0 TAD I INFPTR /ANY INPUT ? SZA CLA JMP I VENIOP /YES, MUST BE OS/8 ISZ I (VENUSO /MAKE OUTPUT TO VENUS TAD I (MOPT SMA CLA / /A ? JMP VENI6 /NO, 6-BIT JMS I (PRWD VGET12 /YES, 12-BIT ASCII JMP .+3 VENI6, JMS I (PRWD VGET /WITH MESSAGE COPY,OUT JMS I (PCRLF DCA I (VENUSO /END OF OUTPUT AND NOW ISZ I (VENUSI /MARK VENUS FOR INPUT JMP I VENIOP SYNC, 0 DCA SYNSWI TAD SYNSWI SZA CLA JMP STAR JMS I (VENIN TAD ("?-4000 JMS SYNECH JMP SYNC+2 STAR, JMS I (VENIN TAD ("?-4000 TAD (-"* SNA CLA JMP I SYNC JMP SYNC+2 SYNSWI, 0 SYNECH, 0 TAD (-212 SNA ISZ SYNECH TAD (212 JMS I (TTYOUT JMP I SYNECH PAGE VENOUT, 0 DCA VENOBU KSF JMP VNO2 KRS AND (177 TAD (-33 SNA CLA JMP VQUEST VNO2, KSF2 JMP .+3 JMS VENIN JMP I VENOUT CLA TSF2 JMP .-7 TAD VENOBU TLS2 CLA ISZ VENOUT JMP I VENOUT VENIN, 0 JMS I (INTERM KSF2 JMP .-2 KRB2 SPA JMP VHRDWR AND (177 TAD (200 DCA VENIBU TAD I (VENUSO SNA CLA JMP VENOER TAD VENIBU TAD (-"? SNA CLA JMP VENIER VENOER, TAD VENIBU ISZ VENIN JMP I VENIN VENIER, CLA CLL CML RAR JMP I VENIN VHRDWR, BSW RTR AND (7 DCA VENIBU JMS I (CRLF TAD VENIBU TAD (260 JMS I (TTYOUT CMA JMS I (PIPERR ERR6 VENIBU, 0 VENOBU, 0 VQUEST, KCC TAD ("? JMS I (TTYOUT VENERR, KCC TAD (233 JMS VENOUT NOP JMS I (SYNC VENANN, CDF 10 CLA DCA I (VENUSI DCA I (VENUSO TAD ("# JMS I (TTYOUT VENUSL, DCA I (TERIBU KSF2 JMP NOVENI JMS VENIN JMP VQUEST JMS I (TTYOUT NOVENI, JMS I (INTERM TAD I (TERIBU SNA JMP VENUSL TAD (-204 /^D=DECODE SNA JMP I (VENCD TAD (-377+204 /RUBOUT ? SNA CLA JMP I (VENRUB TAD I (TERIBU JMS I (TTYOUT TAD I (TERIBU JMS VENOUT JMP VQUEST TAD I (TERIBU TAD (-215 SZA CLA JMP VENUSL TAD (212 JMS I (TTYOUT TAD (212 JMS VENOUT JMP VQUEST JMP VENUSL PAGE VENPIP, CAF ISZ TIME JMP .-1 KRB KRB2 CLA CLL CML RTL KIE2 /ENABLE ERR,NOT INT. CLA TAD (230 /CAN TLS2 TLS CLA ISZ I (VENUSO JMS I (PRWD LOGIN JMS I (PCRLF JMS I (SYNC JMS I (PRWD WHOAMI JMS I (PCRLF JMS I (SYNC DCA I (VENUSO JMP I (VENANN TIME, 0 VENEXT, TAD (233 JMS I (VENOUT NOP JMS I (SYNC DCA I (VENUSI ISZ I (VENUSO JMS I (PRWD BYE JMS I (PCRLF JMS I (VENIN TAD ("?-4000 JMS I (SYNECH JMP .-3 DCA I (VENUSO TSF JMP .-1 CIF CDF 0 JMP I (7600 INTERM, 0 KSF JMP I INTERM KRB AND (177 TAD (200 DCA TERIBU TAD TERIBU TAD (-203 /^C SNA JMP VENEXT TAD (-220+203 /^P SNA JMP I (VENANN TAD (-233+220 /ESCAPE SZA CLA JMP I INTERM JMP I (VQUEST VENRUB, TAD (210 JMS I (TTYOUT TAD (240 JMS I (TTYOUT TAD (210 JMS I (TTYOUT TAD (210 JMS I (VENOUT JMP I (VQUEST JMP I (VENUSL TERIBU, 0 TRAPNT, 0 PAGE FIELD 0 *ABUF ZBLOCK 300 EOR, TEXT /.EOR./ EOF, TEXT /.EOF./ VRETN, TEXT /RT,IN/ VPERM, TEXT /PF,IN/ VPUT, TEXT /COPY,,IN/ VPUT12, TEXT /C12,,IN/ VGET, TEXT /COPY,OUT/ VGET12, TEXT /C12,OUT/ LOGIN, TEXT /LOGIN,9621,DHVA ,SIL/ WHOAMI, TEXT /WHOAMI/ BYE, TEXT /LOGOUT/ /ERROR MESSAGE TEXT GOES HERE ERR0, TEXT /NO ROOM FOR OUTPUT FILE/ ERR1, TEXT /LINE TOO LONG IN FILE_/ ERR2, TEXT /OUTPUT ERROR/ ERR3, TEXT /ERROR DELETING FILE/ ERR4, TEXT /INPUT ERROR, FILE_/ ERR5, TEXT /CAN'T OPEN OUTPUT FILE/ ERR6, TEXT / = RECEIVE ERROR;1=OVER;2=FRAME;4=PARITY/ ERR7, TEXT /PREMATURE END OF FILE, FILE_/ ERR8, TEXT /ILLEGAL BINARY INPUT, FILE_/ ERR9, TEXT /XXXXX/ ERR10, TEXT /DIRECTORY ERROR/ IFNZRO INDEVH-.&4000 <FULLERR,__ > FIELD 1 *VENPIP $$