*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 JMS KTRNS /TRANSLATE TO LINC CODE 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 / / /TYPE THE CHAR 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 / /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 / /CONVERT ASCII TO LINC CODE / KTRNS, 0 DCA CASE /CLEAR CASE TAD I CFLG /GET CHAR TAD (-333 SMA /IS IT GREATER THAN 333 JMP KBDC /YES, DECODE AS SPECIAL TAD (333-240 SPA /IS IT LESS THAN 240 JMP KBDC /YES, DECODE AS SPECIAL TAD (-301+240 SMA /IS IT LESS THAN 301 JMP KBDX1 /NO, IT IS LETTER / /IT IS TRANSLATABLE CODE / TAD (301-240 KBDCON, JMS KBDA1 KBDL, DCA LNCODE TAD (-215 TAD I CFLG SZA CLA JMP I KTRNS /NO TAD (212 /PUT 212 IN LINE FEED DCA LF JMP I KTRNS /AND EXIT / /SPECIALS TEST / KBDC, CLA TAD (KTBL-1 DCA 10 /SET 10 UP TO SCAN TABLE TAD (-6 DCA TEMP /ENTRIES IN TABLE TAD I CFLG /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 / /CHECK FOR CONTROLS / CLA TAD (KTBLB-1 DCA 10 /SET UP 10 TO SCAN TAD (-7 DCA TEMP TAD I CFLG /GET CHARACTER TAD I 10 /SUBTRACT TABLE ITEMS SNA /THAT THE ONE JMP KCONT /YES ISZ TEMP /DONE JMP .-4 /NO CLA /YES, NO LUCK JMP KBDL /CONTINUE / /TABLE LOOKUP SUBROUTINE / KBDA1, 0 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 / /IT WAS LETTER / KBDX1, TAD (24 JMP KBDL / /SPECIAL WAS FOUND / KBDA, CLA TAD TEMP TAD (STAB-TTAB+6 JMP KBDCON / /CONTROL WAS FOUND / KCONT, CLA TAD TEMP TAD (CTAB-TTAB+7 JMS KBDA1 DCA CASE TAD (23 JMP KBDL / /CONVERSION TABLE / TTAB, 1463 7022 6557 72 7475 1620 6317 6421 1 203 405 607 1011 7615 7261 7360 STAB, 5612 6623 2313 CTAB, 4452 3001 203 1000 KTBL, -212 /LF 212-215 /RETURN 215-333 /[ 333-375 /ALTMODE ON 33 375-376 /ALTMODE ON 35 376-377 /RUBOUT KTBLB, -201 /_PAGE 201-204 /_LINE 204-205 /_CHAR 205-211 /+PAGE 211-221 /+LINE 221-223 /+CHAR 223-227 /ERASE LINE / /END OF TTY HANDLER MODULE /