File TTYLPT.12

Directory of image this file is from
This file as a plain text file

/ LPT HANDLER FOR TTY
/ IN FORM COMPATIBLE TO OS/8 BUILD PROGRAM

/ CLYDE G. ROBY, JR.
/ DEPARTMENT OF MEDICINE
/ WEST VIRGINIA UNIVERSITY
/ MORGANTOWN, WEST VIRGINIA
/ JUNE, 1972

	VERSION="A-300

*0

	-1		/JUST ONE HANDLER HERE
	DEVICE	LP33	/DEVICE GROUP NAME
	DEVICE	LPT	/DEVICE NAME
	1040		/WRITE-ONLY 'LINE PRINTER' ON TTY
	4000		/2-PAGES; OFFSET = 0
	ZBLOCK 2	/2 ZEROES

*200 LPT, VERSION P7600, 7600 /ALSO A 'CLA' LPTRDF, JMP LPTSET /BECOMES 'RDF' TAD CDFCIF DCA LPTRET /SAVE RETURN FIELD LPTBEG, TAD I LPT /GET ARG1 SMA JMP LPTERR /ATTEMPT TO READ FROM LPT CLL RAL AND P7600 /NO. OF WORD PAIRS CLL RAR CIA DCA LPTCTR TAD I LPT /ARG1 AGAIN AND LP0070 /EXTRACT FIELD WHERE BUFFER IS TAD LPTCDF DCA LPTFLD /MAKE DATA FIELD INSTR ISZ LPT TAD I LPT /GET BUFFER ADDRESS DCA LPTPTR ISZ LPT TAD I LPT /BLOCK NUMBER ISZ LPT SZA CLA JMP LPTGO /NONZERO BN, GO PRINT TAD LPT214 JMS I LPTOUT /GO OUTPUT FIRST FORM FEED LPTGO, LPTFLD, HLT /USER BUFFER DATA FIELD TAD I LPTPTR /GET FIRST AND 3RD DCA LPTC1 ISZ LPTPTR LPT214, 0214 /ALSO A 'NOP' TAD I LPTPTR /GET SECOND AND 3RD DCA LPTC2 ISZ LPTPTR LP7400, 7400 /IS A 'NOP' LPTCDF, CDF 00 /BACK TO OUR FIELD TAD LPTC1 JMS LPTPRT /GO PRINT CHAR 1 TAD LPTC1 AND LP7400 DCA LPTC1 /GET GOOD PART OD CHAR 3 TAD LPTC2 JMS LPTPRT /GO PRINT CHAR 2 TAD LPTC2 AND LP7400 /GET PART OF CHAR 3 CLL RTR RTR TAD LPTC1 /ADD IN OTHER PART OF CHAR 3 RTR RTR JMS LPTPRT /GO PRINT CHAR 3 ISZ LPTCTR /IS BUFFER DONE? JMP LPTGO /CONTINUE WITH BUFFER LPTRTN, ISZ LPT /SKIP OVER ERROR RETURN LPTRET, HLT /BECOMES 'CDF CIF N0' JMP I LPT /RETURN TO CALLER LPTPRT, 0 AND LP0377 TAD LPM232 /END OF FILE? SNA JMP LPTEOF /YES, GO RETURN TAD LPT232 /NO, REGENERATE CHAR JMS I LPTOUT /CHECK THIS CHAR JMP I LPTPRT /RETURN FOR MORE LPTEOF, TAD LPT214 /AT END OF FILE, JMS I LPTOUT /GO TO TOP OF NEW PAGE JMP LPTRTN /RETURN TO CALLER / PRINT A CHARACTER ON THE TELETYPE LPTTTY, 0 TLS /PRINT THE CHAR CLA CLL LPRT1, TSF /IS IT DONE? JMP LPRT2 /NO, MAYBE KEYBOARD INTERACTION JMP I LPTTTY /YES, RETURN LPRT2, KSF /OPERATOR CALLING? JMP LPRT1 /NO, CHECK TTY KRS TAD LPM203 /ABORT? SZA JMP LPRT3 /TRY CHECK ON CTRL/O TCF /CLEAR TELETYPE FLAG CDFCIF, CDF CIF 00 /CTRL/C, RETURN TO OS/8 JMP I P7600 LPRT3, TAD LPM217 /CHECK FOR CTRL/O SZA CLA JMP LPRT1 /NO, CHECK TTY FLAG KCC /CLEAR KEYBOARD FLAG JMP LPTRTN /YES, IGNORE REST OF BUFFER / INITIALIZE SOME PTRS, ETC. / THE FIRST TIME THE HANDLER IS CALLED LPTSET, RDF TAD LPTCDF DCA CHGCDF /FOR CHANGING BACK TO USER FIELD TAD LPTSET DCA LPTRDF /MAKE THE 'JMP' AN 'RDF' CDF 00 /HANDLER IN FIELD 0 LPTLOC, JMS . /BECOMES LOC IN CORE WHERE WE ARE LPTLUP, TAD LPTLST TAD LPTLOC /MAKE TRUE ADDRESSES LPT2, DCA LPTLST ISZ LPTLUP /INCREMENT TO NEXT LOC ISZ LPT2 ISZ LPTCT JMP LPTLUP /CONTINUE THE RELOCATION TAD LPTTTT DCA I LPRTTT /FOR CROSS-PAGE REFERENCE CHGCDF, HLT /BECOMES 'CDF N0' JMP LPTRDF /GO DO LPT LPTLST, LPTOUT, LPRINT-LPTLOC-1 LPRTTT, LPRTIT-LPTLOC-1 LPTTTT, LPTTTY-LPTLOC-1 LPTCT, LPTLST-. LPTERR, CLA TAD LPT003 TAD LPT DCA LPT /POINTS TO ERROR RETURN STL CLA RAR /HARD ERROR JMP LPTRET /GO RETURN LPTCTR, 0 LPTPTR, 0 LPTC1, 0 LPTC2, 0 LPM203, -203 LPM217, 203-217 LPT003, 3 LP0377, 377 LPT232, 232 LPM232, -232 LP0070, 70 PAGE
/ THE SUBROUTINE TO CHECK FOR VARIOUS CHARACTERS / AND THEN TO SIMULATE THERE FUNCTION ON THE TELETYPE / 211 TAB SPACE TO EVERY 8 COLUMN / 212 LINEFEED PRINT LINE, GO DOWN 1 LINE / 213 VERTTAB SIMULATE WITH 5 LINE FEEDS / 214 FORMFEED GO TO TOP OF NEW PAGE / 215 RETURN BACK TO COLUMN 1 LPRINT, 0 AND LPT177 /7 BIT CODE SZA TAD LPM177 /CHECK FOR RUBOUT SNA JMP I LPRINT /IGNORE RUBOUTS AND ZEROES TAD LPT377 /REGENERATE CHAR (8 BIT) DCA LPCHAR TAD LPCHAR TAD LPM211 /CHECK FOR 5 SPECIAL CHARS SPA JMP LPRET /BELOW 211, IGNORE TAD LPM4 SMA SZA JMP LPGOOD /IS GOOD CHAR, GO PRINT IT TAD JMPINS /GENERATE TABLE ADDR DCA .+1 HLT /GO SIMULATE THE CHAR JMPINS, JMP .+5 JMP LPTAB /TAB (211) JMP LPLF /LINE FEED (212) JMP LPVT /VERTICAL TAB (213) JMP LPFF /FORM FEED (214) JMP LPCR /CARRIAGE RETURN (215) / A GOOD NON-SPECIAL CHAR CAME IN LPGOOD, CLA TAD LPCHAR TAD LPM240 /IS CHAR < 240? SPA JMP LPRET /YES, IGNORE IT SZA CLA JMP LPRTGO /NO, GO PRINT THE CHAR ISZ NSPACE /SPACE, INCREMENT NO. OF SPACES JMP LPRITC /IS A CHAR ON LINE, GO COUNT IT LPRTGO, TAD NSPACE /ANY SPACES BEFORE CHAR? SNA JMP LPRIT /NO, GO PRINT THE CHAR CIA /YES, MAKE IS A CTR DCA NSPACE LPRTLP, TAD LPT240 /GET A SPACE JMS I LPRTIT /AND PRINT IT OUT TAD NSPACE /HAS IT BEEN RESET TO 0? SMA CLA JMP LPRIT /YES, LINE OVERFLOW ISZ NSPACE JMP LPRTLP LPRIT, TAD LPCHAR /THEN PRINT THE GOOD CHAR JMS I LPRTIT LPRITC, ISZ CHARCT /INCREMENT CHARS ON LINE TAD CHARCT TAD LPM72 /NO. OF CHARS ON LINE SPA CLA JMP I LPRINT /O.K., JUST RETURN LPLF, STA /MUST PRINT THE LINE FEED JMS PRTLF /IF OVERFLOW OR REGULAR LF LPRET, CLA CLL JMP I LPRINT LPTAB, ISZ NSPACE /TAB IS SIMULATED BY COUNTING ISZ CHARCT /SPACES OVER TO 8TH TAB POS. TAD CHARCT AND LPT007 SZA CLA JMP LPTAB /NOT THERE YET JMP LPRET /THERE, RETURN LPVT, TAD LPM5 /SIMULATE VERTICAL TAB JMS PRTLF /BY PRINTING 5 LINE FEEDS JMP LPRET LPFF, TAD LINECT /SIMULATE FORM FEED BY JMS PRTLF /GOING TO TOP OF NEW PAGE JMP LPRET LPCR, DCA NSPACE /NO SPACES ON LINE DCA CHARCT /NO CHARS ON LINE JMP LPRET /IGNORE THE CARRIAGE RETURN / PRINT NO. OF LINE FEEDS IN THE AC PRTLF, 0 DCA PRTLFC /SAVE NO. OF LFS TO PRINT TAD LPT215 /FIRST PRINT CARRIAGE RETURN JMS I LPRTIT DCA NSPACE /NO SPACES ON LINE DCA CHARCT /NO CHARS ON LINE PRTLF1, TAD LPT212 JMS I LPRTIT /NOW PRINT OUT THE LINE FEED ISZ LINECT /PAGE OVERFLOW? NOP TAD LINECT SPA CLA JMP PRTLF3 /NO, GO COUNT THIS LF JMS PCRLF /OUTPUT CR/LF COMBO TAD LPTM6 /YES, OUTPUT PAGE BREAK DCA LINECT PRTLF2, TAD LPT255 /A ROW OF 6 '-' JMS I LPRTIT ISZ LINECT JMP PRTLF2 JMS PCRLF /FOLLOWED BY CR/LF TAD LPT212 JMS I LPRTIT TAD LPLCT /REINITIALIZE THE PAGE CTR DCA LINECT PRTLF3, ISZ PRTLFC /ALL LINE FEEDS OUT? JMP PRTLF1 /NO, CONTINUE TO OUTPUT THEM JMP I PRTLF /YES, RETURN PCRLF, 0 TAD LPT215 JMS I LPRTIT TAD LPT212 JMS I LPRTIT JMP I PCRLF LPRTIT, LPTTTY /BECOMES TRUE ADDRESS LPT177, 177 LPM177, -177 LPT377, 377 LPM211, -211 LPM4, -4 LPM240, -240 LPT240, 240 LPT007, 7 LPM5, -5 PRTLFC, 0 LPT215, 215 LPT212, 212 LPTM6, -6 LPT255, 255 LPLCT, -77 LPM72, -110 NSPACE, 0 CHARCT, 0 LINECT, -1 LPCHAR, 0 PAGE $-$-$
F 0 TAD LPT215 JMS I LPRTIT TAD LPT212 JMS I LPRTIT JMP I PCRLF LPRTIT, LPTTTY /



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search