| 1 | /MANNESMANN TP80 PRINTER HANDLER\r |
| 2 | /\r |
| 3 | LPVERSION="B&77\r |
| 4 | \r |
| 5 | *0\r |
| 6 | \r |
| 7 | -1\r |
| 8 | DEVICE LPSV;DEVICE LPT;1040;LPT&177;ZBLOCK 2\r |
| 9 | \r |
| 10 | /LPT HANDLER FOR EITHER LP08 OR LS8E LINE PRINTER\r |
| 11 | /HANDLES TABS, PASSES EVERYTHING ELSE ON THE HARDWARE.\r |
| 12 | \r |
| 13 | LSF=6661 /SKIP ON FLAG\r |
| 14 | LSR=6663 /SKIP ON ERROR\r |
| 15 | LLS=6666 /LOAD LPT BUFFER\r |
| 16 | \r |
| 17 | *200\r |
| 18 | \r |
| 19 | LPWDTH, -205 /-(WIDTH+1) [USE -121 FOR 80 COLUMNS]\r |
| 20 | LTERMC, 14 /4 FOR LV8\r |
| 21 | LVCCNV, -40 /0 IF PRINTER PRINTS LC\r |
| 22 | LPT, LPVERSION /NORMAL ENTRY POINT\r |
| 23 | CLA STL RAR\r |
| 24 | TAD I LPT / R/W BIT TO LINK\r |
| 25 | AND LP7700\r |
| 26 | CMA /TREAT 0 PG CNT AS 0 WD CNT\r |
| 27 | DCA LPTWC /SAVE -(DBLWD COUNT+1)\r |
| 28 | LPT214, RDF\r |
| 29 | TAD LPTCIF \r |
| 30 | DCA LPTXIT /SAVE CIF CDF RETRN FIELD\r |
| 31 | TAD I LPT\r |
| 32 | AND (70\r |
| 33 | TAD (CDF 0\r |
| 34 | DCA LPTCDF\r |
| 35 | ISZ LPT /PT TO BUFFER\r |
| 36 | TAD I LPT /GET BUFFER ADR\r |
| 37 | DCA LPTCA /SAVE BUFFER PTR\r |
| 38 | ISZ LPT /PT TO BLOCK #\r |
| 39 | TAD I LPT /GET IT\r |
| 40 | ISZ LPT /POINT TO ERROR RETURN\r |
| 41 | LPTCDF, HLT\r |
| 42 | SNL\r |
| 43 | JMP LPTERR /CAN'T READ FROM LPT\r |
| 44 | SNA CLA\r |
| 45 | TAD LPT214 /OUTPUT FORM FEED IF BLOCK 0\r |
| 46 | JMP LPTELP /JUMP INTO END OF LOOP\r |
| 47 | \f/UNPACKING LOOP - USES A SHIFT REGISTER METHOD TO GET THE\r |
| 48 | /THIRD CHARACTER IN EACH DOUBLEWORD.\r |
| 49 | \r |
| 50 | LPTLP, STL /GUARD BIT OF SHIFT REGISTER\r |
| 51 | LPROTL, RTL\r |
| 52 | RTL\r |
| 53 | SPA /DO WE HAVE 8 BITS SHIFTED IN?\r |
| 54 | JMP LPTELP\r |
| 55 | DCA LPTCDF /SAVE SHIFT REGISTER\r |
| 56 | TAD I LPTCA\r |
| 57 | JMS LPTPCH /PRINT A CHAR\r |
| 58 | TAD I LPTCA\r |
| 59 | ISZ LPTCA /BUMP INPUT POINTER\r |
| 60 | LP7400, 7400 /PROTECT ISZ\r |
| 61 | AND LP7400\r |
| 62 | CLL RAL\r |
| 63 | TAD LPTCDF /SHIFT HIGH 4 BITS INTO\r |
| 64 | JMP LPROTL /SHIFT REGISTER\r |
| 65 | \r |
| 66 | LPTELP, JMS LPTPCH /PRINT 3RD CHAR OF DOUBLEWORD\r |
| 67 | ISZ LPTWC\r |
| 68 | JMP LPTLP /GET 3 MORE CHARS\r |
| 69 | SKP\r |
| 70 | LPTCTZ, TAD LTERMC\r |
| 71 | JMS LPTPCH /OUTPUT FORM FEED IF ^Z SEEN (EOT OF LV8)\r |
| 72 | ISZ LPT /BUMP TO NORMAL RETURN\r |
| 73 | LPTXIT, HLT /RESTORE FIELDS\r |
| 74 | JMP I LPT /EXIT\r |
| 75 | \r |
| 76 | LPTERR, STL CLA RAR /PUT 4000 IN AC\r |
| 77 | JMP LPTXIT /AND TAKE ERROR RETURN\r |
| 78 | \r |
| 79 | LPTWC, 0\r |
| 80 | LPTCA, 0\r |
| 81 | \f/CHAR PRINT ROUTINE\r |
| 82 | \r |
| 83 | LPTPCH, 0\r |
| 84 | AND (177\r |
| 85 | TAD (-175\r |
| 86 | SMA\r |
| 87 | JMP LPFLSH /FLUSH CODES 175-177\r |
| 88 | TAD (175-140\r |
| 89 | SMA\r |
| 90 | TAD LVCCNV /CONVERT LC TO UC IF DESIRED\r |
| 91 | TAD (140-33\r |
| 92 | SNA\r |
| 93 | TAD (11 /CHANGE ALTMODE TO $\r |
| 94 | IAC\r |
| 95 | SNA\r |
| 96 | JMP LPTCTZ /^Z - END OF FILE\r |
| 97 | TAD (32-11\r |
| 98 | SNA\r |
| 99 | JMP LPTTAB /TABS MUST BE SIMULATED\r |
| 100 | LPLFHK, TAD (11 /RESTORE CHAR\r |
| 101 | SZA /FLUSH NULLS\r |
| 102 | JMS LPCHAR\r |
| 103 | TAD LPLPTR /IF COL. CTR GET 0\r |
| 104 | SMA /WE HIT A CONTROL CHAR\r |
| 105 | TAD LPWDTH /OR EOL - SET TO FULL\r |
| 106 | DCA LPLPTR /WIDTH (NOT LPLPTR=1 !)\r |
| 107 | LP7700,\r |
| 108 | LPFLSH, SMA CLA /NEVER SKIPS\r |
| 109 | JMP I LPTPCH /RETURN\r |
| 110 | \r |
| 111 | LPCHAR, 0 /LOW LEVEL PRINT ROUTINE\r |
| 112 | LLS /PUT CHAR IN LP BUFFER\r |
| 113 | AND (7770 /KLUDGE - CLEARS COLUMN COUNTER\r |
| 114 | TAD (7770 /ON CR, LF, VT, FF BUT ALSO\r |
| 115 | SNA CLA /ON ^H, ^N AND ^O; BIG DEAL\r |
| 116 | DCA LPLPTR /?SR RICHIE SAID 'LPCRFG'\r |
| 117 | LP7600, 7600 /CLEAR AC\r |
| 118 | LPCTCL, TAD LP7600\r |
| 119 | KRS\r |
| 120 | TAD (-7603 /CHECK FOR ^C FROM CONSOLE\r |
| 121 | SNA CLA\r |
| 122 | KSF /WITH FLAG UP\r |
| 123 | JMP .+3\r |
| 124 | LPTCIF, CDF CIF 0 /YES, RETURN TO OS/8\r |
| 125 | JMP I LP7600\r |
| 126 | LSF /NO\r |
| 127 | JMP LPCTCL /WAIT FOR FLAG\r |
| 128 | ISZ LPLPTR /CHECK LINE OVERFLOW\r |
| 129 | JMP I LPCHAR\r |
| 130 | TAD (15\r |
| 131 | JMS LPCHAR\r |
| 132 | CLA IAC\r |
| 133 | JMP LPLFHK\r |
| 134 | \fLPTTAB, TAD LPBLNK /GET PSEUDO BLANK\r |
| 135 | JMS LPCHAR /PRINT IT\r |
| 136 | TAD LPWDTH\r |
| 137 | CMA\r |
| 138 | TAD LPLPTR /GET # CHARS IN LINE\r |
| 139 | AND (7\r |
| 140 | LPBLNK, SZA CLA /LOOP 'TILL MULTIPLE OF 8\r |
| 141 | JMP LPTTAB\r |
| 142 | JMP I LPTPCH\r |
| 143 | \r |
| 144 | LPLPTR, 0\r |
| 145 | $\r |
| 146 | \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\0\0 |