File: LPSS.LS of Disk: V50/Init/Build-Init
(Source file text)
/LPSS SET LPT HANDLER V50 PAL8-V50X 31-MAY-87 PAGE 1 /LPSS SET LPT HANDLER V50 / / / / / / / / / /COPYRIGHT (C) 1980 BY DATAPLAN GMBH, LAUDA, BRD / AND 2015 W. VAN DER MARK / / / / / / / / / / /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DATAPLAN GMBH. /DATAPLAN GMBH ASSUMES NO RESPONSIBILITY FOR ANY ERRORS THAT MAY APPEAR /IN THIS DOCUMENT. / /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED /(WITH INCLUSION OF DATAPLAN'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DATAPLAN. / /DATAPLAN GMBH ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY /OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DATAPLAN. / / / / / / / / / / /W.V.D.MARK, DP CONSULTING, ZUERICH, SWITZERLAND /1-JAN-80 /LPSS SET LPT HANDLER V50 PAL8-V50X 31-MAY-87 PAGE 2 0030 LPVERSION="X&77 0000 *0 000000 7777 -1 000001 1420 DEVICE LPSS;DEVICE LPT;1040;LPT&177+4000;ZBLOCK 2 000002 2323 000003 1420 000004 2400 000005 1040 000006 4175 000007 0000 /THIS HANDLER IS MEANT TO BE USED FOR ANY KIND OF /LINEPRINTER ONE MAY ENCOUNTER. FOR THE MOMENT IT IS /IMPLEMENTED FOR LP08,LS8E,LA180 OR LX180 (LOGABAX). /LIKE THE KL8E HANDLER IT IS RECOMMENDED THAT THE CODE /SHOULD BE WRITTEN IN SUCH A WAY, THAT THE CHANGES /CAN BE MADE WITH A MODIFIED 'SET' PROGRAM, I.E. /THIS HANDLER SHOULD NOT BE REASSEMBLED TOO OFTEN. / ASSEMBLING PARAMETERS: 0000 LX180=0 /1 /FOR LOGABAX PRINTER SET LPT LX180 /0 /FOR OTHER PRINTERS ------------- 0001 LA180=1 /1 /FOR LA180 PRINTER SET LPT LA78 /0 /FOR LP08,LS8E PRINTER SET LPT LA8A / DEVC=66 /31 /OR SLU2 PORT VT78 SET LPT SLU2 /33 /OR SLU3 PORT VT78 SET LPT SLU3 /XX /OR SLUX SET LPT CODE XX 0205 W=205 /LINE-WIDTH OF PAPER SET LPT WIDTH X 0014 F=14 /14 /ASCII FORMFEED SET LPT PAGE /4 /LV8E EOT FORMFEED SET LPT LV8E /0 /NO FORMFEEDS SET LPT NO PAGE /OR SET LPT NO LV8E 0000 C=0 /-40 /CONVERT LOWER-CASE SET LPT NO LC /0 /PRINT LOWER-CASE SET LPT LC 0110 P=110 /HEIGHT OF PAPER SET LPT HEIGHT X /FOR FF SIMULATION 0010 T=10 /TAB LENGTH .GE.1 SET LPT TAB X 0000 S=0 /0 /USE HRDWR FFS SET LPT NO PAUSE /OR SET LPT NO FILL /4001 /HRDWR FFS + DELAY SET LPT PAUSE /12 /SIMULATE FFS SET LPT FILL 7777 A=-1 /136 /ARROW CONTROL CHARS SET LPT ARROW /-1 /DON'T ARROW THEM SET LPT NO ARROW 0000 E=0 /0 /PRINT ESC AS ^[(ARROW) SET LPT ESC /11 /PRINT ESC AS $ SET LPT NO ESC 0000 UNIT=0 /0,1 /FOR SECOND LPT SET LPT UNIT [0,1] /LPSS SET LPT HANDLER V50 PAL8-V50X 31-MAY-87 PAGE 3 /SET UNIT=1 FOR THE SECOND LINE-PRINTER IN YOUR SYSTEM /LP08 0660 DCLP08=660 IFDEF DEVC < DCLP08=DEVC^10> 6661 LSF= 6001+DCLP08 /SKIP ON FLAG 6663 LSR= 6003+DCLP08 /SKIP ON ERROR 6666 LLS= 6006+DCLP08 /LOAD LPT BUFFER IFNDEF DEVC < 6667 LIC= 6667> IFDEF DEVC < LIC= 6005+DCLP08-10> /LA180 6570 DBST= 6570 /SKIP IF DEMAND SET AND CLEAR IT 6574 DBTD= 6574 /LOAD COMPLEMENT OF AC0-11 TO TRANSMIT BUFFER 6575 DBSE= 6575 /SET INTERRUPT ENABLE 6576 DBCE= 6576 /CLEAR INTERRUPT ENABLE 6577 DBSS= 6577 /SEND STROBE PULSE /LOGABAX 6576 LPSC= 6576 /SEND CHARACTER 6575 LPCB= 6575 /CLEAR BUFFER 6572 LPSF= 6572 /SKIP ON FLAG 7757 MREAD= 7757 /BLEEP MONITOR LOC IN FLD 0 IFZERO UNIT < 7760 LLINE= MREAD+1 7761 LPAGE= MREAD+2> IFNZRO UNIT < LLINE= MREAD-1 LPAGE= MREAD+3> /LPSS SET LPT HANDLER V50 PAL8-V50X 31-MAY-87 PAGE 4 0200 *200 000200 7573 LPWDTH, -W /**SET /-WIDTH-1 [USE -121 FOR 80 COLUMNS] 000201 0014 LTERMC, F /**SET+ /4 FOR LV8 * 000202 0000 LVCCNV, C /**SET /0 IF PRINTER PRINTS LC * 000203 7760 LPTLCT, LLINE /**SET /MODIFIED BY LPT UNIT * 000204 0000 LPTWC, 0 / * 000205 0000 LPTCA, 0 / * 000206 0000 PLPLNK, 0 /GETS ADRESS OF PAGE 2 * 000207 1775 TAD I LPT / R/W BIT TO LINK * L 000210 0323 AND LP7700 / * I 000211 7040 CMA /TREAT 0 PG CNT AS 0 WD CNT N 000212 3204 DCA LPTWC /SAVE -(DBLWD COUNT+1) * K 000213 0070 LP70, 70 / * 000214 3367 DCA LPTEOF /INITIALIZE EOF * 000215 0177 LPT177, 177 / * 000216 0106 LPT106, 106 / * 000217 6214 LPT214, RDF /DON'T MOVE THIS CODE *** 000220 1340 TAD LPTCIF / M 000221 3261 DCA LPTXIT /SAVE CIF CDF RETRN FIELD U 000222 1775 TAD I LPT / S 000223 0213 LPT213, AND LP70 / T 000224 1347 TAD LPCDF / 000225 3312 DCA LPTCDF / N 000226 2375 ISZ LPT /PT TO BUFFER O 000227 1775 TAD I LPT /GET BUFFER ADDRESS T 000230 3205 DCA LPTCA /SAVE BUFFER PTR 000231 7201 CLA IAC /MAKE -WIDTH 000232 1200 TAD LPWDTH 000233 3306 DCA LPARG /PASS WIDTH AS ARGUMENT 000234 2375 ISZ LPT /PT TO BLOCK # C 000235 1775 TAD I LPT /GET IT H 000236 2375 ISZ LPT /POINT TO ERROR RETURN G 000237 7420 SNL 000240 5302 JMP LPTERR /CAN'T READ FROM LPT 000241 7640 LPM140, SZA CLA /**SET SENTINEL 000242 5347 JMP LPSTRT IFNZRO LX180 < NOP > /?INTERRUPT DISABLE IFZERO LX180 < 000243 6576 IFNZRO LA180 < DBCE> /INT DIS LA180 IFZERO LA180 < LIC >> /INT DIS LP08 /LPSS SET LPT HANDLER V50 PAL8-V50X 31-MAY-87 PAGE 5 000244 1223 TAD LPT213 000245 4304 JMS LPTPCD /RESET ALL 000246 1314 TAD LPT215 000247 4304 JMS LPTPCD /CR ONLY 000250 1201 TAD LTERMC /OUTPUT FORM FEED IF BLOCK 0 000251 4304 LPTELP, JMS LPTPCD /PRINT 3RD CHAR OF DOUBLEWORD 000252 2204 ISZ LPTWC 000253 5263 JMP LPTLP /GET 3 MORE CHARS 000254 1367 TAD LPTEOF /WAS THIS A CLOSE OPERATION? 000255 7610 SKP CLA /SNA CLA/NO GOOD FOR FOTP PREDELETE! 000256 1201 LPTCTZ, TAD LTERMC /YES, TREAT LIKE CTZ 000257 4304 JMS LPTPCD /OUTPUT FORM FEED IF EOF SEEN (EOT OF LV8) 000260 2375 ISZ LPT /BUMP TO NORMAL RETURN 000261 7402 LPTXIT, HLT /RESTORE FIELDS 000262 5775 JMP I LPT /EXIT /UNPACKING LOOP - USES A SHIFT REGISTER METHOD TO GET THE /THIRD CHARACTER IN EACH DOUBLEWORD. 000263 7120 LPTLP, STL /GUARD BIT OF SHIFT REGISTER 000264 7006 LPROTL, RTL 000265 7006 RTL 000266 7510 SPA /DO WE HAVE 8 BITS SHIFTED IN? 000267 5251 JMP LPTELP 000270 3367 DCA LPTEOF /SAVE SHIFT REGISTER 000271 1605 TAD I LPTCA 000272 4304 JMS LPTPCD /PRINT A CHAR 000273 1605 TAD I LPTCA 000274 2205 ISZ LPTCA /BUMP INPUT POINTER 000275 7400 LP7400, 7400 /PROTECT ISZ 000276 0275 AND LP7400 000277 7104 CLL RAL 000300 1367 TAD LPTEOF /SHIFT HIGH 4 BITS INTO 000301 5264 JMP LPROTL /SHIFT REGISTER 000302 7330 LPTERR, STL CLA RAR /PUT 4000 IN AC 000303 5261 JMP LPTXIT /AND TAKE ERROR RETURN 000304 0000 LPTPCD, 0 /INTER-PAGE JUNK 000305 4606 JMS I PLPLNK 000306 0000 LPARG, 0 000307 0000 LPP1, 0 000310 7440 SZA /ZERO PRINT MEANS END 000311 5314 JMP LPCHAR 000312 7402 LPTCDF, HLT 000313 5704 JMP I LPTPCD /LPSS SET LPT HANDLER V50 PAL8-V50X 31-MAY-87 PAGE 6 /CHAR PRINT ROUTINE LPCHAR, /LOW LEVEL PRINT ROUTINE 000314 0215 LPT215, AND LPT177 000315 1241 TAD LPM140 /IS IT LOWER CASE? 000316 7500 SMA 000317 1202 TAD LVCCNV /YES, CONVERT (MAYBE) 000320 1216 TAD LPT106 /IS IT AN EOF? (32) 000321 7440 SZA 000322 5325 JMP .+3 000323 7700 LP7700, 7700 /**SET SENTINEL 000324 5256 JMP LPTCTZ /YES, GET OUT 000325 1366 TAD LP7632 /RESTORE IFZERO LX180 < IFZERO LA180 < NOP /NOP'S NEEDED FOR SET LLS /PUT CHAR IN LPT BUFFER NOP > IFNZRO LA180 < 000326 7040 CMA 000327 6574 DBTD /PUT CHAR IN LP BUFFER 000330 6577 DBSS /SEND STROBE FOR PRINTRONIX >> IFNZRO LX180 < NOP /FOR SET LPCB /CLEAR FIRST LPSC /SEND TO LX180 > 000331 7600 LP7600, 7600 /CLEAR AC 000332 1331 LPCTCL, TAD LP7600 000333 6034 KRS 000334 1345 TAD LP175 /CHECK FOR ^C FROM CONSOLE 000335 7650 SNA CLA 000336 6031 KSF /WITH FLAG UP 000337 5342 JMP .+3 000340 6203 LPTCIF, CDF CIF 0 /**SET SENTINEL 000341 5731 JMP I LP7600 /YES, RETURN TO OS/8 IFZERO LX180 < IFZERO LA180 <LSF> /NO FOR SET 000342 6570 IFNZRO LA180 <DBST>> /NO MUST BE HERE IFNZRO LX180 <LPSF> /FOR LX180 000343 5332 JMP LPCTCL /WAIT FOR FLAG 000344 2603 ISZ I LPTLCT /COUNT ALL 000345 0175 LP175, 175 /PROTECT SKIP 000346 5707 JMP I LPP1 /BACK IN LINE TO P 2 /LPSS SET LPT HANDLER V50 PAL8-V50X 31-MAY-87 PAGE 7 LPCDF, /** SET SENTINEL 000347 6201 LPSTRT, CDF 0 /HERE ON NON-ZERO BLOCK# IFNZRO LX180 < SKP CLA /GO TO PAGE INIT FOR LX > IFZERO LX180 < 000350 7200 CLA /START FOR OTHERS > 000351 5251 JMP LPTELP 000352 1603 TAD I LPTLCT /-WIDTH+CNT 000353 7041 CIA /WIDTH-CNT 000354 1200 TAD LPWDTH /-WIDTH-1=-CNT-1 000355 3370 DCA LPHOLD /TEMPORARY 000356 1314 TAD LPT215 /CR ONLY 000357 4304 JMS LPTPCD 000360 2370 LPSPFL, ISZ LPHOLD 000361 7410 SKP 000362 5251 JMP LPTELP 000363 1241 TAD LPM140 000364 4304 JMS LPTPCD 000365 5360 JMP LPSPFL 000366 7632 LP7632, 7632 000367 0000 LPTEOF, 0 000370 0000 LPHOLD, 0 000371 0000 ZBLOCK 375-. 000375 0030 LPT, LPVERSION /NORMAL ENTRY POINT 000376 7330 CLA STL RAR 000377 4206 JMS PLPLNK 0400 PAGE /LPSS SET LPT HANDLER V50 PAL8-V50X 31-MAY-87 PAGE 8 4600 SEND= JMS I LPTOUT 000400 0000 LPTOUT, 0 000401 5211 JMP LPARGS /JUMP OVER SET ARGS 000402 7670 LPPAGL, -P /**SET /PAGE LENGTH 000403 0010 LPTABL, T /**SET /TAB SIZE 000404 0000 LPSIMU, S /**SET /4001 HW FF, 12 SW FF 000405 7777 LPCTRL, A /**SET /CTRLS: 136=^X, -1=NO PRINT 000406 0000 LPTESC, E /**SET /11: ESC=$, 0: ESC=^[ 000407 7760 LPLINE, LLINE /**SET /MODIFIED BY LPT UNIT 000410 7761 LPPAGE, LPAGE /**SET / " " 000411 0377 LPARGS, AND (177 000412 1376 TAD (-33 /IS IT ESCAPE? 000413 7450 SNA 000414 1206 TAD LPTESC /CONVERT TO PETRO-DOLLAR (MAYBE) 000415 1375 TAD (33 000416 3350 DCA LPTEMP 000417 6201 CDF 0 000420 1600 TAD I LPTOUT 000421 2200 ISZ LPTOUT 000422 3347 DCA LWIDTH /PASS WIDTH ARGUMENT 000423 1350 TAD LPTEMP 000424 7450 SNA 000425 4600 SEND /IGNORE REAL NULLS 000426 1374 TAD (-177 000427 7450 SNA 000430 4600 SEND /IGNORE RUBOUTS 000431 1373 TAD (145 000432 7450 SNA 000433 5254 JMP LPTNRM /CTRLZ IS NEVER PRINTED! 000434 1372 TAD (14 000435 7100 CLL 000436 1371 TAD (7 000437 7630 SZL CLA /FORMAT CHAR? 000440 5276 JMP LPTCTL /YES 000441 1350 TAD LPTEMP 000442 0251 AND LPTNMV /CONTROL CHAR? 000443 7640 SZA CLA 000444 5254 JMP LPTNRM /NO;OUT NORMAL 000445 1205 TAD LPCTRL /CONVERT TO ^X? 000446 7500 SMA /-1=NO CONVERSION AND NO MOVE 000447 5344 JMP LPTCON /136=CONVERSION AND ALSO=^ 000450 7001 LPTMMV, IAC /WITH NEXT MAKES -2 FOR BCKSPC 000451 7140 LPTNMV, CMA CLL /-1 FOR NO MOVE, ALSO MASK 140 000452 1607 TAD I LPLINE 000453 3607 DCA I LPLINE /MODIFIED CHAR. COUNT 000454 1350 LPTNRM, TAD LPTEMP /SEND NORMAL 000455 4600 SEND /LPSS SET LPT HANDLER V50 PAL8-V50X 31-MAY-87 PAGE 9 000456 1607 LPTCHK, TAD I LPLINE /CHECK IF LINE OVERFLOW 000457 7710 SPA CLA 000460 4600 SEND /NO;GET OUT WITH 0 AC 000461 1370 TAD (15 /YES, RESET LINE 000462 4600 SEND 000463 1367 TAD (12 000464 3350 DCA LPTEMP 000465 1347 TAD LWIDTH 000466 3607 DCA I LPLINE /RESET LINE 000467 2610 LPTLFD, ISZ I LPPAGE 000470 5251 JMP LPTNMV /NOT AT END OF PAGE 000471 1367 TAD (12 000472 4600 SEND 000473 1202 LPTPRE, TAD LPPAGL /AT END ***** 000474 3610 DCA I LPPAGE /RESET PAGE 000475 5312 JMP LPTLRE /RESET LINE 000476 1350 LPTCTL, TAD LPTEMP 000477 1306 TAD LPTJMP 000500 3301 DCA .+1 000501 7402 HLT /MUST BE 6 AFTER LPTPRE ***** 000502 5251 JMP LPTNMV /" 7":BELL; UNCHANGED; NO MOVE 000503 5250 JMP LPTMMV /"10":BSPC; UNCHANGED; - MOVE 000504 5331 JMP LPTTAB /"11":TAB; CONVERT; X MOVE 000505 5267 JMP LPTLFD /"12";LF; UNCHANGED; NO MOVE, INC PAGE 000506 5273 LPTJMP, JMP LPTPRE /"13":VTAB; NOTHING; RESET ALL 000507 5315 JMP LPTFF /"14":FFED; SIMU!DELAY; RESET ALL 000510 1370 TAD (15 /"15":CR; UNCHANGED; RESET LINE 000511 4600 SEND 000512 1347 LPTLRE, TAD LWIDTH /RESET LINE COUNTER 000513 3607 DCA I LPLINE 000514 4600 SEND /GET OUT /LPSS SET LPT HANDLER V50 PAL8-V50X 31-MAY-87 PAGE 10 000515 1204 LPTFF, TAD LPSIMU /IF NEGATIVE USE HARDWARE 000516 7740 SMA SZA CLA 000517 5322 JMP LPFFL /POSITIVE: SIMULATE WITH LFS 000520 1350 TAD LPTEMP /IT IS 14 FOR FF 000521 4600 SEND 000522 1204 LPFFL, TAD LPSIMU /IF HARDWARE DELAY WITH 4001 000523 7450 SNA 000524 5273 JMP LPTPRE /OR NO DELAY WITH 0000 000525 4600 SEND /IF SOFTWARE SIMULATE WITH 12 000526 2610 ISZ I LPPAGE /PAGE FINISHED? 000527 5322 JMP LPFFL 000530 5273 JMP LPTPRE /RESET ALL AND RETURN 000531 1366 LPTTAB, TAD (40 000532 4600 SEND /ALWAYS ONE SPACE 000533 1607 TAD I LPLINE /-WIDTH+CNT 000534 7041 CIA /WIDTH-CNT 000535 1347 TAD LWIDTH /-CNT 000536 1203 TAD LPTABL 000537 7510 SPA 000540 5336 JMP .-2 /-CNT+X*TABL (POSITIVE) 000541 7640 SZA CLA /AT TAB STOP? 000542 5331 JMP LPTTAB 000543 5256 JMP LPTCHK /END TABS IF LINE FULL 000544 4600 LPTCON, SEND /SEND ^ 000545 1365 TAD (100 /AND ALPHA FOR CTRL 000546 5254 JMP LPTNRM 000547 7660 LWIDTH, -120 000550 0000 LPTEMP, 0 000565 0100 000566 0040 000567 0012 000570 0015 000571 0007 000572 0014 000573 0145 000574 7601 000575 0033 000576 7745 000577 0177 $$$ /LPSS SET LPT HANDLER V50 PAL8-V50X 31-MAY-87 PAGE 11 A 7777 LPTMMV 0450 C 0000 LPTNMV 0451 DBCE 6576 LPTNRM 0454 DBSE 6575 LPTOUT 0400 DBSS 6577 LPTPCD 0304 DBST 6570 LPTPRE 0473 DBTD 6574 LPTTAB 0531 DCLP08 0660 LPTWC 0204 E 0000 LPTXIT 0261 F 0014 LPT106 0216 LA180 0001 LPT177 0215 LIC 6667 LPT213 0223 LLINE 7760 LPT214 0217 LLS 6666 LPT215 0314 LPAGE 7761 LPVERS 0030 LPARG 0306 LPWDTH 0200 LPARGS 0411 LP175 0345 LPCB 6575 LP70 0213 LPCDF 0347 LP7400 0275 LPCHAR 0314 LP7600 0331 LPCTCL 0332 LP7632 0366 LPCTRL 0405 LP7700 0323 LPFFL 0522 LSF 6661 LPHOLD 0370 LSR 6663 LPLINE 0407 LTERMC 0201 LPM140 0241 LVCCNV 0202 LPPAGE 0410 LWIDTH 0547 LPPAGL 0402 LX180 0000 LPP1 0307 MREAD 7757 LPROTL 0264 P 0110 LPSC 6576 PLPLNK 0206 LPSF 6572 S 0000 LPSIMU 0404 SEND 4600 LPSPFL 0360 T 0010 LPSTRT 0347 UNIT 0000 LPT 0375 W 0205 LPTABL 0403 LPTCA 0205 LPTCDF 0312 LPTCHK 0456 LPTCIF 0340 LPTCON 0544 LPTCTL 0476 LPTCTZ 0256 LPTELP 0251 LPTEMP 0550 LPTEOF 0367 LPTERR 0302 LPTESC 0406 LPTFF 0515 LPTJMP 0506 LPTLCT 0203 LPTLFD 0467 LPTLP 0263 LPTLRE 0512 ERRORS DETECTED: 0 LINKS GENERATED: 0