/ LLL UTILITY ROUTINES / LLL VERSION FOR CENTRONICS 306 / WRITTEN BY / PHILLIP SIEMENS / LAWRENCE LIVERMORE LABORATORY / SEPTEMBER 9, 1975 / INCLUDES EOF SUBROUTINE / CALL EOF(RETURN LOCATION) / / UPON FINDING AN EOF, UTILTX WILL RETURN TO / THE SPECIFIED LOCATION / / DEVICE 5 IS USED FOR DECODE / CALL RESET(ARG) IS USED AS A REWIND AND ARG IS / START OF BUFFER WHICH MUST BE 120 WORDS LONG ENTRY EOF ENTRY OPEN /INITIALIZING AND FLAG SETTING ROUTINE ENTRY GENIO ENTRY EXIT /EXIT TO DISK MONITOR SYSTEM ENTRY ERROR ENTRY RESET OPDEF KRS 6034 OPDEF KCC 6032 OPDEF TADI 1400 OPDEF DCAI 3400 OPDEF JMSI 4400 OPDEF JMPI 5400 /LINE PRINTER IOT'S OPDEF LLB 6667 OPDEF LSF 6661 OPDEF LCF 6662 ////////// LAP U17, 17 /*** MUST BE FIRST LOC IN PAGE *** IOER, 1117 0522 /"IOER" ERROR GENIO, 6140 /GENERAL INPUT/OUTPUT ROUTINE 0002 DCA 7 /SAVE ENTRY AC GENLP, TAD 7 RTL RTL RAL U200, AND U17 /MUST BE AT LOC. 212!!!!! TAD JMPITB DCA DSPACH /INDEX JUMP TABLE BY DEVICE NUMBER TAD U200 KRS TAD UM203 SNA CLA KSF /CHECK FOR ^C ON TELETYPE DSPACH, NOP /NO ^C - DISPATCH TO I/O ROUTINE JMP EXITX /EXIT TO MONITOR JMPITB, JMPI DEVTAB DEVTAB, TTYOUT /UNIT 1 WRITE = CONSOLE PRINTER HSPOUT /UNIT 2 WRITE = PAPER TAPE PUNCH LPTOUT /UNIT 3 WRITE = LINE PRINTER GENOUT /UNIT 4 WRITE = DEV. INDEPENDENT PUT /WRITE PART OF DECODE TTYIN /UNIT 1 READ = CONSOLE KEYBOARD HSRIN /UNIT 2 READ = PAPER TAPE READER IOERR /UNIT 3 READ = NOTHING GENIN /UNIT 4 READ = DEV. INDEPENDENT GET /READ PART OF DECODE TTYFUJ /FUDGE - SEE TELETYPE INPUT ROUTINE IOERR IOERR IOERR IOERR IOERR ////////// HSPOUT, PSF JMP GENLP TAD 7 PLS GENRTN, CLA GRTN2, RETRN GENIO TTYIN, KSF JMP GENLP TAD (2400 /****DEPENDS ON NUMBER OF DEVICES **** JMP GENLP /TEST FOR ^C ONE LAST TIME HSRIN, ISZ T1 JMP HSRSF TAD U336 /TIME OUT-PRINT '^' TLS HLP, KSF JMP HLP AND U200 /GET 200 INTO AC KRS /READ THE CHAR. TAD UM203 SZA CLA /IS IT CONTROL C? KCC /NO-CLEAR FLAG RFC /USER TYPED-TICKLE RDR-FALL THRU RFC HSRSF, RSF JMP GENLP DCA T1 RRB RFC JMP GRTN2 EOF, 6140 0002 TAD EOF /GET FIELD OF ARG DCA EOF1 EOF1, HLT /AND PUT THE CDF HERE CLL CML RTL /GET A 2 TADI EOF# /GET THE FIELD TO RETURN TO DCA EOFEX INC EOF# TADI EOF# /GET ADDRESS TO RETURN TO DCA EOFEX1 INC EOF# RETRN EOF EOFEX1, IOERR ////////// GENIN, 6201 TADI IHNDLR SNA CLA /OPEN INPUT FILE? JMP IOERR /NO 6202 JMS I FICHAR /GET A CHAR JMP IOERR /INPUT ERROR U336, AND U377 /MUST BE 336!!!!! TAD (-232 /CHECK FOR ^Z SNA JMP EOFEX /TAKE EOF EXIT TAD (232 /RESTORE CHARACTER JMP GRTN2 U377, 377 UM203, -203 T1, 0 EOFEX, NOP /RETURN TO SPECIFIED STATEMENT JMPI EOFEX1 GENOUT, 6201 TADI OHNDLR SNA CLA /OPEN OUTPUT FILE? JMP IOERR /NO 6202 TAD 7 /GET CHAR TO BE OUTPUT AND U377 JMS I FOCHAR /PUT A CHARACTER JMP IOERR /OUTPUT ERROR JMP GRTN2 IHNDLR, 122 /***ALL THESE LOCATIONS ARE VERY VOLATILE!! *** FICHAR, 606 /******* OHNDLR, 121 /******* FOCHAR, 651 /******* IOERR, CALL 1, ERROR ARG IOER OPEN2, RFC 6201 DCAI IHNDLR DCAI OHNDLR /ZERO DEVICE-INDEPENDENT IO FLAGS RETRN OPEN PAGE ////////// K377, 377 /MUST BE FIRST IN PAGE / LLL CENTRONICS LINE PRINTER HANDLER / FORMAT CONTROL CHARS. / 0 DOUBLE SPACE / 1 TOP OF FORM / + FAT CHARACTERS LPTOUT, TAD 7 /GET CHAR ISZ PFSTCH /FIRST CHAR? JMP NOFST /NO TAD (-1261 SNA /IS IT 1 FOR FORM FEED? JMP FRMFED /YES IAC SNA /IS IT 0 FOR DOUBLE SPACE? JMP LPR /YES TAD (5 SZA /IS IT + FOR FAT CHARS? JMP NOFST1 TAD J200 /YES DCA FATC JMP GRTN2 FATC, 0 NOFST1, TAD (1253 NOFST, TAD (-1212 SNA /IS IT LINE FEED? JMP LLF /YES -- RESET SWITCHES LPR, TAD (12 TAD FATC LLB LPW, LSF JMP LPW LCF JMP GRTN2 LLF, CLA CMA DCA PFSTCH DCA FATC JMP LPR FRMFED, CLA CLL CML RTL JMP LPR PFSTCH, -1 ///////////// GET, ISZ ICNT /ANY MORE CHARACTERS? SKP /YES JMP EMPTY /NO MORE GETX, HLT /CHANGE DF TO BUFFER FIELD TADI IPNT INC IPNT /BUMP POINTER J200, GET2, AND K377 JMP GRTN2 EMPTY, TAD (215 JMP GRTN2 PUT, ISZ OCNT /BUFFER FULL? SKP JMP FULL /YES PUTX, HLT /CHANGE DF TO BUFFER FIELD TAD 7 /GET CHAR AND K377 /MASK TO 6 BIT DCAI OPNT INC OPNT JMP GRTN2 FULL, CLA CMA DCA OCNT JMP GRTN2 RESET, 6140 0001 TAD RESET DCA RESET1 ICNT, RESET1, HLT /SET DF TO FROM FIELD TADI RESET# DCA PUTX TAD PUTX DCA GETX INC RESET# TADI RESET# DCA OPNT TAD OPNT DCA IPNT INC RESET# TAD (-171 DCA OCNT TAD (-171 DCA ICNT RETRN RESET OCNT, 0 ////////////// / INITIALIZING ROUTINE / CLEAR FAC, SET I/O FLAGS OPNT, OPEN, 6140 IPNT, 0003 7447 /SET EAE TO MODE A TAD (12 TLS /LINE FEED TO TTY KCC PLS DCA ACH /CLEAR FAC DCA ACL DCA ACM JMP OPEN2 PAGE ////////// N3777, 3777 /MUST BE FIRST IN PAGE TTYFUJ, TAD K200 KRS DCA 7 /SAVE KEYBOARD CHAR KCC /CLEAR FLAG TAD 7 TAD (-212 SZA CLA JMS TYPE TAD 7 TAD (-215 SZA CLA JMP TYRTN CLA CLL CMA RTL JMS TYPE TYRTN, TAD 7 JMP GRTN2 /RETURN WITH CHAR IN AC //////////// TYPE, 0 TAD 7 TYPELP, TSF JMP TYPELP TLS CLA JMPI TYPE TTYOUT, JMS TYPE JMP GRTN2 PMESG, MESG MESG, 7777 7777 4005 2222 1722 4001 2440 1417 0340 LIT7, 0007 ERROR, BLOCK 2 /ERROR PROCESSOR U7600, 7600 TAD ERROR DCA TEM1 TEM1, NOP /SET DATA FIELD OF "CALL ERROR" TADI ERROR# DCA TEM3 INC ERROR# E60, CLA CMA CML /CML IS WINDOW DRESSING TADI ERROR# DCA 10 INC ERROR# TEM3, NOP /DATA FIELD OF MESSAGE&ENTRY POINT TADI 10 DCA CKIO /SAVE FATAL BIT TAD CKIO K200, AND N3777 /STRIP FATAL BIT FROM 1ST CHAR DCA MESG TADI 10 /SECOND WORD OF MESSAGE DCA MESG# TADI 10 DCA TEM1 TADI 10 DCA TEM3 /CALLING ADDRESS TAD PMESG DCA TEM2 ERLP, TAD I TEM2 CLL RTR RTR RTR JMS PR6BIT TAD I TEM2 JMS PR6BIT INC TEM2 JMP ERLP ////////// PRLOC, TAD TEM1 RTR RTR AND LIT7 /GET CALLING FIELD TAD E60 JMS PR6BIT /PRINT IT TAD (-4 DCA TEM2 NUMLP, TAD TEM3 RTL RAL DCA TEM3 TAD TEM3 RAL AND LIT7 TAD E60 JMS PR6BIT ISZ TEM2 JMP NUMLP TAD (215 DCA 7 JMS TYPE CLA CLL CMA RTL JMS TYPE TAD CKIO /GET THE FATAL ERROR FLAG SMA CLA /WHADDOWEDO?? JMP EXITX RETRN ERROR /HE SAYS ITS NON-FATAL - LET HIM HANDLE IT PR6BIT, 0 /6BIT TO 8BIT CONVERTOR AND (77 SNA JMP PRLOC /MESSAGE OVER TAD (240 AND (77 TAD (240 CALL 0,GENIO /LOOK FOR ^C WHILE TYPING JMPI PR6BIT ////////// /EXIT TO DISK MONITOR SYSTEM / TEM2, EXIT, 6140 CKIO, 0002 EXITX, 6041 JMP EXITX 6203 JMPI U7600 /RETURN TO MONITOR END