*1400 / /NON-RESIDENT TELETYPE HANDLER MODULE. HANDLES TTY /INPUT AND OUTPUT, CONVERSION OF ASCII TO LINC CODE ON INPUT /IF DESIRED, AND LINE PRINTER OUTPUT. / -TIOM /INDICATOR THAT THIS IS TTY MOD SZA CLA /IS ACCUMULATOR ZERO JMP TYP /YES - THIS IS TYPE / /A KBD OPERATE WAS GIVEN / KBD, TAD FFIM /BIT 7 SET IF KST AND C20 SZA CLA /SKIP IF NOT KST JMP KBD2 /MUST HAVE BEEN TAD LINS /GET BACK INSTRUCTIONS AND C20 /CLEAR ALL BUT I BIT SNA CLA /WAS IT SET JMP DOGOA /NO JMS IOWAIT /WAIT FOR KBD TO BE STRUCK KW KBD2, TAD CASE SZA JMP KBD4 TAD I CFLG /GET CHARACTER JMS KTRNS /TRANSLATE TO LINC CODE JMS ECHO /NOP TO FLUSH ECHO ISZ CFLG /INCREMENT POINTER TAD CFLG /GET OUTPUT POINTER CMA IAC /MAKE 2S COMPLEMENT TAD ICHR /ADD INPUT POINTER SZA CLA /THEY THE SAME JMP KBR2 /NO TAD (BUFFER /YES, RESET POINTERS DCA CFLG TAD (BUFFER DCA ICHR TAD CASE /DO WE HAVE A CASE CHAR SZA CLA JMP KBR2 /YES, DO NOT CLEAR KST KBR1, TAD FFIM /GET FLIP-FLOP IMAGE AND (7757 IACF /CLEAR KST FLOP DCA FFIM /AND RESTORE IMAGE KBR2, TAD LNCODE /GET CHARACTER JMP DOGOA /PUT IT IN AC AND GO KBD4, DCA LNCODE DCA CASE JMP KBR1 / /A TYPE OPERATE WAS GIVEN / TYP, TAD LNCA /GET CHARACTER JMS TYPE /TYPE IT JMP DOGO /EXIT / /LINE PRINTER SUBROUTINE / LTYPE, AND (377 TAD (-215 SNA JMP DOGO ISZ LFLG JMP LT3 TAD (3 SNA JMP LT1 IAC SNA CLA JMP LT2 ISZ LCNT JMP .+5 SM1 TAD LNCP DCA LNCP JMP LT1 TAD TEMP LLB LSD JMP .-1 LCF CLC DCA LFLG TYPEX, CLA JMP I TYPE / /HANDLE SPACING ON LINE PRINTER / LT2, TAD C7 /FORM FEED LT1, TAD C10 /SINGLE SPACE LPR TAD (-204 DCA LCNT JMP TYPEX LT3, JMS IOWAIT LW / /GENERAL TYPE DISPATCHER / TYPE, 0 DCA TEMP TAD ODEV TAD (JMP I TYPJ+3 TYPJ, DCA .+2 TAD TEMP 0 TYPEX TYPE1 TYPE2 TYPEX TYPEX TYPEX LTYPE / /ECHO INPUT CHAR ON INPUT DEVICE, NOT OUTPUT DEVICE / ECHO, 0 TAD I CFLG /GET INPUT CHARACTER DCA TEMP TAD ECHO DCA TYPE TAD IDEV JMP TYPJ-1 / /WAIT FOR AN I-O COMPLETION OF THE TYPE SPECIFIED. /ACCOMPLISHED BY BACKING UP THE LINC P, AND /REEXECUTING THE INSTRUCTION UPON OCCURANCE OF /THE I-O EVENT. / IOWAIT, 0 CLA TAD I .-2 /GET JOB INDICATOR DCA JOBS /PUT IN PLACE SM1 TAD LNCP /BACK UP LINC P BY ONE DCA LNCP TAD (GO JMP WAITL /WAIT FOR RIGHT INTERRUPT / /END OF PAGE SIX OF NON-RESIDENT TTY MODULE / *1600 / /TYPE THE CHARACTER IN THE AC / TYPE1, ISZ TFLG JMP TYP1W TLS JMP TYPEX TYP1W, JMS IOWAIT TW TYPE2, ISZ T2FLG JMP TYP2W T2LS JMP TYPEX TYP2W, JMS IOWAIT T2W / /CONVERT ASCII TO LINC CODE / KTRNS, 0 DCA KCHR /SAVE ASCII CHAR DCA CASE /CLEAR CASE TAD KCHR /GET CHAR AGAIN TAD (-333 SMA /IS IT GREATER THAN 333 JMP KBDC /YES, DECODE AS SPECIAL TAD (333-301 SMA /IS IT A LETTER JMP KBDD /YES, ADD 24 TO MAKE LINC CODE TAD (6 SZA CLA /IS IT SEMICOLON JMP KBDC /NO - DECODE AS SPECIAL TAD (15 /YES, PUT IN LINCODE JMP KBDL /AND CONTINUE / /SPECIALS TEST / KBDC, CLA TAD (KTBL-1 DCA 10 /SET 10 UP TO SCAN TABLE TAD (-7 DCA TEMP /ENTRIES IN TABLE TAD KCHR /GET ORIGINAL CHAR TAD I 10 /SUBTRACT TABLE ENTRY SNA /THAT DO IT JMP KBDA /YES, WE FOUND IT ISZ TEMP /NO, COUNT ENTRY JMP .-4 /AND TRY AGAIN / /EXHAUSTED SPECIALS TABLE / TAD (377-272 SMA JMP KBRET TAD (272-243 SPA JMP KBRET KBDA1, CLL RAR /SHIFT 1 RT & CLEAR LINK TAD (TTAB /ADD START ADDR OF TABLE DCA TEMP /PUT IN TEMP TAD I TEMP /GET CONT OF ADDR OF TBL SZL /RT OR LEFT HALF NEEDED? JMP .+4 /RIGHT HALF RTR /GET RTR / LEFT RTR / HALF AND (77 /CLEAR OTHER HALF SNA /ANYTHING THERE? JMP KBRET /NO!!! TAD (-12-24 /A HELL OF A WAY TO SUBTRACT 36!! KBDD, TAD (24 /NOW ADD BACK 24 SMA /IS AC NEG? JMP KBDL /NOPE TAD (23 DCA CASE TAD (23 KBDL, DCA LNCODE /SAVE LINC CODE CHARACTER TAD (-215 /WAS IT RETURN? TAD KCHR SZA CLA JMP I KTRNS /NOPE TAD (212 /PUT 212 IN LF DCA LF JMP I KTRNS /EXIT KBDA, TAD 10 TAD (-KTBL+27 JMP KBDA1 KBRET, SM1 TAD LNCP /BACK UP THE LINC P REG. DCA LNCP JMP KBR1 /CONTINUE / /TRANSLATION TABLE. HOLDS CHARACTERS FOR ASCII CODES /243-271 PLUS CHARACTERS FROM SPECIALS TABLE. THE LATTER /ARE CODED BY ADDING 27 TO POSITION OF SPECIAL IN KTBL. FOR /NORMALS, POSITION IS TTAB + (C-243)/2. / TTAB, 3410 0527 3000 0 3206 3107 3312 1314 1516 1720 2122 2301 2426 0411 3525 / /SPECIALS TABLE / KTBL, -212 /LINE FEED 212-215 /RETURN 215-240 /SPACE 240-275 /= 275-333 /[ 333-376 /ALTMODE 376-377 /RUBOUT KCHR, 0 / /END OF NON-RESIDENT TTY HANDLER MODULE. /