| 1 | /PLOTTER HANDLER FOR HP 7475A\r |
| 2 | / HANDLER CONVERTS \ (=0134) INTO ESC (=033)\r |
| 3 | / | (=0174) INTO ETX (=03)\r |
| 4 | / SUB (=032, CNTRL Z) IS TREATED AS END OF FILE\r |
| 5 | / ALL OTHER CHARACTERS SEND TO THE HANDLER ARE DIRECTED TO THE PLOTTER.\r |
| 6 | / HANDLER SUPPORTS DC3 (XOFF) - DC1 (XON) HANDSHAKE PROCEDURE WITH HP 7475A.\r |
| 7 | / SYSTEM TTY INPUT ETX (^C) CAUSES RETURN FROM THE HANDLER TO THE MONITOR.\r |
| 8 | / JOHANN J. ANDRES FOR UNIVERSITY GOETTINGEN\r |
| 9 | /\r |
| 10 | / H.A. 3-MAY-85 REV 0.0\r |
| 11 | / H.A. 12-AUG-85 REV 0.1\r |
| 12 | /\r |
| 13 | HPVER="A&77 /VERSION 0\r |
| 14 | TTYDVC=03 / TTY\r |
| 15 | INDVC=33 / INPUT FROM PLOTTER\r |
| 16 | OUTDVC=34 / OUTPUT TO PLOTTER\r |
| 17 | XON=021 / BUFFER EMPTY MESSAGE\r |
| 18 | XOFF=23 / BUFFER FULL MESSAGE\r |
| 19 | /\r |
| 20 | LSF=10^OUTDVC+6001 / SKIP ON LPT FLAG\r |
| 21 | LLS=10^OUTDVC+6006 / CLEAR FLAG & PRINT CHARACTER\r |
| 22 | LISF=10^INDVC+6001 / SKIP ON LPT FLAG\r |
| 23 | LIRB=10^INDVC+6006 / CLEAR FLAG & READ STATUS \r |
| 24 | KSF=10^TTYDVC+6001 / SKIP ON TTY FLAG\r |
| 25 | KRS=10^TTYDVC+6004 / OR TTY KBD CHARACTER INTO AC\r |
| 26 | /\r |
| 27 | /\r |
| 28 | *0 / 8 WORD HANDLER BLOCK\r |
| 29 | -1 / ONE UNIT\r |
| 30 | DEVICE HP74\r |
| 31 | DEVICE PLT\r |
| 32 | 1040\r |
| 33 | PLT&177 / STARTING ADR.\r |
| 34 | 0;0\r |
| 35 | /\r |
| 36 | /\r |
| 37 | *200 / START OF HANDLER\r |
| 38 | PLT, HPVER / ENTRY FOR PLOTTER HANDLER\r |
| 39 | DCA SAC\r |
| 40 | START,/\r |
| 41 | TAD SAC / RESTORE AC\r |
| 42 | CLL CML CLA RAR\r |
| 43 | TAD I PLT /LINK GOES ON HERE. IF NOT READ WAS REQUESTED\r |
| 44 | AND LP7700\r |
| 45 | CMA\r |
| 46 | DCA LPTWC\r |
| 47 | RDF\r |
| 48 | TAD LPTCIF\r |
| 49 | DCA LPTXIT /SAVE CALLING FIELD IN RETURN SEQUENCE\r |
| 50 | TAD I PLT\r |
| 51 | AND LPT70\r |
| 52 | TAD LPCDF0\r |
| 53 | DCA LPTCDF /GET BUFFER FIELD\r |
| 54 | ISZ PLT\r |
| 55 | TAD I PLT\r |
| 56 | DCA LPTCA /LPTCA GETS BUFFER ADDRESS\r |
| 57 | ISZ PLT\r |
| 58 | TAD I PLT\r |
| 59 | LPTCDF, HLT\r |
| 60 | ISZ PLT\r |
| 61 | SNL /IF LINK NOT SET,GIVE ERROR\r |
| 62 | JMP LPTERR\r |
| 63 | SZA CLA / INSERT FF IN FRONT OF THE FIRST DATA BLOCK TO PRINT\r |
| 64 | JMP LPT177\r |
| 65 | TAD ("O / COME HERE IF BLOCK# EQL 0\r |
| 66 | JMS LPTPCH\r |
| 67 | TAD ("E \r |
| 68 | JMS LPTPCH\r |
| 69 | TAD ("; \r |
| 70 | JMS LPTPCH\r |
| 71 | TAD (15 / CR SINCE FORTRAN OUTPUT STARTS WITH LF SOMETIMES\r |
| 72 | JMS LPTPCH\r |
| 73 | JMP LPT177\r |
| 74 | \r |
| 75 | \f/NOW PICK UP THE CHARACTERS, UNPACK THEM AND PRINT.\r |
| 76 | /\r |
| 77 | / LOOP TO PICK UP THE CHARACTERS\r |
| 78 | /\r |
| 79 | LPTLP, CLA\r |
| 80 | TAD I LPTCA\r |
| 81 | JMS LPTPCH\r |
| 82 | TAD I LPTCA\r |
| 83 | AND LP7400\r |
| 84 | DCA LPTCDF\r |
| 85 | ISZ LPTCA\r |
| 86 | LP7400, 7400\r |
| 87 | TAD I LPTCA\r |
| 88 | JMS LPTPCH\r |
| 89 | TAD I LPTCA\r |
| 90 | AND LP7400\r |
| 91 | CLL RTR\r |
| 92 | LPTLF, RTR\r |
| 93 | TAD LPTCDF\r |
| 94 | RTR\r |
| 95 | RTR\r |
| 96 | ISZ LPTCA\r |
| 97 | NOP /PROTECT ISZ\r |
| 98 | LPTKLG, JMS LPTPCH\r |
| 99 | LPT177, 177\r |
| 100 | ISZ LPTWC\r |
| 101 | JMP LPTLP\r |
| 102 | LPRTRN, ISZ PLT\r |
| 103 | LPTXIT, HLT\r |
| 104 | JMP I PLT\r |
| 105 | LPTWC, 0\r |
| 106 | LPTCA, 0\r |
| 107 | /\r |
| 108 | LPTERR, CLA CLL CML RAR / FATAL ERROR RETURN\r |
| 109 | JMP LPTXIT / HOME TO MAM\r |
| 110 | /\r |
| 111 | /\r |
| 112 | / HERE WE PRINT THE CHARACTERS\r |
| 113 | /\r |
| 114 | LPTPCH, 0\r |
| 115 | /\r |
| 116 | AND LPT177 / WE TRUNCATE TO SEVEN BITS CHARACTER\r |
| 117 | TAD (-134)\r |
| 118 | SNA / (0134) '\' --> ESC (033)\r |
| 119 | TAD (33-134)\r |
| 120 | TAD (134-174)\r |
| 121 | SNA / (0174) '|' --> ETX (03)\r |
| 122 | TAD (03-174)\r |
| 123 | TAD (174-32)\r |
| 124 | SNA / ^Z (SUB) TREAT AS END OF FILE\r |
| 125 | JMP LPRTRN\r |
| 126 | TAD (32)\r |
| 127 | L4,/\r |
| 128 | LLS / CLEAR FLAG LOAD CHARACTER & PRINT\r |
| 129 | LSF / IF PRINTER DONE FLAG SET, THEN WE CONTINUE\r |
| 130 | JMP .-1 / ELSE WE WAIT FOR DONE FLAG\r |
| 131 | LP7600, 7600 / CLA\r |
| 132 | TAD LP7600 / THIS IS TO GET A NEGATIVE NUMBER\r |
| 133 | \r |
| 134 | KRS / OR TTY KBD INTO AC\r |
| 135 | TAD LPT175 / TEST FOR ETX (^C)\r |
| 136 | SNA CLA / IF NO ETX THEN GO AND WAIT FOR LP FLAG\r |
| 137 | KSF / ETX ENTERED, TTY KBD ACTIVE THEN JMP INTO MONITOR\r |
| 138 | JMP LPISF / TEST INPUT FROM PRINTER\r |
| 139 | LPTCIF, CDF CIF 0\r |
| 140 | JMP I LP7600\r |
| 141 | LPISF,\r |
| 142 | LIRB / READ ACTUAL LPT STATUS WORD\r |
| 143 | AND LPT177 / MASK OUT 7 BITS\r |
| 144 | TAD LPM23 / TEST FOR XOFF CHARACTER\r |
| 145 | SZA / ZERO IF XOFF CHARACTER ENCOUNTERED\r |
| 146 | JMP .+3\r |
| 147 | DCA LPOLD / XOFF CLEARS LPOLD FLAG: 0--> LPOLD\r |
| 148 | JMP LP7600 / WAIT FOR XON CHARACTER\r |
| 149 | CLL / CLEAR LINK FOR TAD INSTR. INSTEAD OF OR INSTRUCTION\r |
| 150 | TAD LPOFON / TEST FOR XON CHARACTER\r |
| 151 | TAD LPOLD / OR WITH LEADING XOFF CHARACTER\r |
| 152 | SZA SZL CLA / ZERO ONLY: XON FOLLOWS XOFF CHARACTER\r |
| 153 | JMP .+3\r |
| 154 | ISZ LPOLD / WE CLEAR THE XOFF FLAG 1 --> LPOLD\r |
| 155 | JMP I LPTPCH / AND CONTINUE PRINTING\r |
| 156 | JMP I LPTPCH / MEANINGLESS INPUT, CONTINUE PRINTING\r |
| 157 | /\r |
| 158 | /\r |
| 159 | SAC, 0 / ON ENTRY WE SAVE THE AC HERE\r |
| 160 | /\r |
| 161 | LP7700, 7700\r |
| 162 | LPT70, 70\r |
| 163 | LP21, XON\r |
| 164 | LP23, XOFF\r |
| 165 | LPOLD, XON\r |
| 166 | LPM23, -XOFF\r |
| 167 | LPOFON, XOFF-XON\r |
| 168 | LPT175, 175\r |
| 169 | LPCDF0, CDF 0\r |
| 170 | /\r |
| 171 | $$\r |
| 172 | \1a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 |