software: Added more and more
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape3 / LPSV.PA
diff --git a/sw/os8/v3d/sources/system/dectapes/dectape3/LPSV.PA b/sw/os8/v3d/sources/system/dectapes/dectape3/LPSV.PA
new file mode 100644 (file)
index 0000000..395c4bd
--- /dev/null
@@ -0,0 +1,208 @@
+/5 LP08/LS8E/LA180/LV8E HANDLER
+/
+/
+/
+/
+/
+/
+/
+/
+/
+/COPYRIGHT  (C)  1974,1975,1977 BY DIGITAL EQUIPMENT CORPORATION
+/
+/
+/
+/
+/
+/
+/
+/
+/
+/
+/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
+/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
+/CORPORATION.  DIGITAL EQUIPMENT CORPORATION 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 DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
+/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
+/
+/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
+/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
+/DIGITAL.
+/
+/
+/
+/
+/
+/
+/
+/
+/
+/
+\f      LPVERSION="C&77
+
+       *0
+
+       -1
+       DEVICE LPSV;DEVICE LPT;1040;LPT&177;ZBLOCK 2
+
+/LPT HANDLER FOR EITHER LP08 OR LS8E LINE PRINTER.
+/HANDLES TABS, PASSES EVERYTHING ELSE ON TO THE HARDWARE.
+
+       LSF=6661        /SKIP ON FLAG
+       LSR=6663        /SKIP ON ERROR
+       LLS=6666        /LOAD LPT BUFFER
+
+       DBST=   6570    /SKIP IF DEMAND SET AND CLEAR IT
+       DBTD=   6574    /LOAD COMPLEMENT OF AC0-11 TO TRANSMIT BUFFER
+       DBSE=   6575    /SET INTERRUPT ENABLE
+       DBCE=   6575    /CLEAR INTERRUPT ENABLE
+
+       LA180=0         /SET TO 1 TO USE LA180
+
+/V3D CHANGES:
+
+/ADDED IN LA180 SUPPORT
+\f      *200
+
+LPWDTH,        -205            /-(WIDTH+1)    [USE -121 FOR 80 COLUMNS]
+LTERMC,        14              /4 FOR LV8
+LVCCNV,        -40             /0 IF PRINTER PRINTS LC
+LP7770,        7770
+LP0007,        0007
+LPT,   LPVERSION       /NORMAL ENTRY POINT
+       CLA STL RAR
+       TAD I   LPT     / R/W BIT TO LINK               L
+       AND     LP7700  /                               I
+       CMA             /TREAT 0 PG CNT AS 0 WD CNT     N
+       DCA     LPTWC   /SAVE -(DBLWD COUNT+1)          K
+LPT214,        RDF             /
+       TAD     LPTCIF  /                               M
+       DCA     LPTXIT  /SAVE CIF CDF RETRN FIELD       U
+       TAD I   LPT     /                               S
+       AND     (70     /                               T
+       TAD     (CDF 0  /
+       DCA     LPTCDF  /                               N
+       ISZ     LPT     /PT TO BUFFER                   O
+       TAD I   LPT     /GET BUFFER ADDRESS             T
+       DCA     LPTCA   /SAVE BUFFER PTR
+       ISZ     LPT     /PT TO BLOCK #                  C
+       TAD I   LPT     /GET IT                         H
+       ISZ     LPT     /POINT TO ERROR RETURN          G
+LPTCDF,        HLT             /                               !
+       SNL
+       JMP     LPTERR  /CAN'T READ FROM LPT
+       SNA CLA
+       TAD     LPT214  /OUTPUT FORM FEED IF BLOCK 0
+LPTELP,        JMS     LPTPCH  /PRINT 3RD CHAR OF DOUBLEWORD
+       ISZ     LPTWC
+       JMP     LPTLP   /GET 3 MORE CHARS
+       SKP
+LPTCTZ,        TAD     LTERMC
+       JMS     LPTPCH  /OUTPUT FORM FEED IF ^Z SEEN (EOT OF LV8)
+       ISZ     LPT     /BUMP TO NORMAL RETURN
+LPTXIT,        HLT             /RESTORE FIELDS
+       JMP I   LPT     /EXIT
+\f/UNPACKING LOOP - USES A SHIFT REGISTER METHOD TO GET THE
+/THIRD CHARACTER IN EACH DOUBLEWORD.
+
+LPTLP, STL             /GUARD BIT OF SHIFT REGISTER
+LPROTL,        RTL
+       RTL
+       SPA             /DO WE HAVE 8 BITS SHIFTED IN?
+       JMP     LPTELP
+       DCA     LPTCDF  /SAVE SHIFT REGISTER
+       TAD I   LPTCA
+       JMS     LPTPCH  /PRINT A CHAR
+       TAD I   LPTCA
+       ISZ     LPTCA   /BUMP INPUT POINTER
+LP7400,        7400            /PROTECT ISZ
+       AND     LP7400
+       CLL RAL
+       TAD     LPTCDF  /SHIFT HIGH 4 BITS INTO
+       JMP     LPROTL  /SHIFT REGISTER
+
+LPTERR,        STL CLA RAR     /PUT 4000 IN AC
+       JMP     LPTXIT  /AND TAKE ERROR RETURN
+
+LPTWC, 0
+LPTCA, 0
+\f/CHAR PRINT ROUTINE
+
+LPTPCH,        0
+       AND     (177
+       TAD     (-175
+       SMA
+       JMP     LPFLSH  /FLUSH CODES 175-177
+       TAD     (175-140
+       SMA
+       TAD     LVCCNV  /CONVERT LC TO UC IF DESIRED
+       TAD     (140-33
+       SNA
+       TAD     (11     /CHANGE ALTMODE TO $
+       IAC
+       SNA
+       JMP     LPTCTZ  /^Z - END OF FILE
+       TAD     (32-11
+       SNA
+       JMP     LPTTAB  /TABS MUST BE SIMULATED
+LPLFHK,        TAD     (11     /RESTORE CHAR
+       SZA             /FLUSH NULLS
+       JMS     LPCHAR  /
+       TAD     LPLPTR  /IF COL. CTR GT 0
+       SMA             /WE HIT A CONTROL CHAR
+       TAD     LPWDTH  /OR EOL- SET TO FULL
+       DCA     LPLPTR  /WIDTH (NOTE LPLPTR=1 !)
+LP7700,
+LPFLSH,        SMA CLA         /NEVER SKIPS
+       JMP I   LPTPCH  /RETURN
+
+LPCHAR,        0               /LOW LEVEL PRINT ROUTINE
+       IFZERO LA180 <
+       NOP             /NOP'S NEEDED FOR SET
+       LLS             /PUT CHAR IN LPT BUFFER
+       NOP
+       >
+       IFNZRO LA180 <
+       CMA
+       DBTD            /PUT CHAR IN LP BUFFER
+       CMA
+       >
+       AND     LP7770  /KLUDGE - CLEARS COLUMN CTR
+       TAD     LP7770  /ON CR, LF, VT, FF BUT ALSO
+       SNA CLA         /ON ^H,^N, AND ^O.  BIG DEAL
+       DCA     LPLPTR  /?SR RICHIE SAID 'LPCRFG'
+LP7600,        7600            /CLEAR AC
+LPCTCL,        TAD     LP7600
+       KRS
+       TAD     (-7603  /CHECK FOR ^C FROM CONSOLE
+       SNA CLA
+       KSF             /WITH FLAG UP
+       JMP     .+3
+LPTCIF,        CDF CIF 0       /YES, RETURN TO OS/8
+       JMP I   LP7600
+       IFNZRO  LA180   <DBST>  /NO     MUST BE HERE
+       IFZERO  LA180   <LSF>   /NO     FOR SET
+       JMP     LPCTCL  /WAIT FOR FLAG
+       ISZ     LPLPTR  /CHECK LINE OVERFLOW
+       JMP I   LPCHAR
+       TAD     (15
+       JMS     LPCHAR
+       CLA IAC
+       JMP     LPLFHK
+\fLPTTAB,       TAD     LPBLNK  /GET PSEUDO BLANK
+       JMS     LPCHAR  /PRINT IT
+       TAD     LPWDTH
+       CMA
+       TAD     LPLPTR  /GET # CHARS IN LINE
+       AND     LP0007
+LPBLNK,        SZA CLA         /LOOP 'TILL MULTIPLE OF 8
+       JMP     LPTTAB
+       JMP I   LPTPCH
+
+LPLPTR,        0
+       $
+\f