*** empty log message ***
[h316.git] / lib / iolib / src / o$pa.asm
1 * (O$LA)
2 *
3 *
4 * PROGRAM TITLE: O$LA (O$LA,O$LE,O$LH,O$LC,O$LF)
5 * LINE PRINTER ROUTINES
6 *
7 * REVISIONS:
8 * 1.0 (2005-02.04)
9 *
10 * AUTHOR
11 *
12 * PHILIPP HACHTMANN
13 *
14 *
15 * PURPOSE
16 *
17 * THESE ARE THE LIBRARY ROUTINES FOR HACHTI'S LINE PRINTER INTERFACE
18 *
19 *
20 * RESTRICTIONS
21 *
22 * DEPENDS ON HACHTI'S HARDWARE AND FORTRAN IV COMPILER TAPE
23 *
24 *
25 * STORAGE
26 *
27 * 420 (OCTAL)
28 * 271 (DECIMAL)
29 *
30 *
31 * USE
32 *
33 * CALL O$LA
34 * DAC (BUFFER ADDRESS)
35 * NORMAL
36 *
37 * THIS PRINTS ONE LINE OF LISING TEXT
38 * (60 2-CHAR WORDS MAX) TO THE LINE PRINTER.
39 *
40 *
41 *
42 ********************************************************************************
43 *
44 SUBR O$PA TYPE A COMPLETE LINE WITH CR/LF, HEADING ETC.
45 *
46 ********************************************************************************
47 *
48 REL RELOCATEABLE MODE
49 *
50 O$PA DAC **
51 LDA* O$PA BUFFER ADDRESS
52 STA LBUF STORE
53 JST T1 PUNCH THE RECORD
54 LBUF OCT 0 ADDRESS OF LINE BUFFER
55 JST T20 CARRIAGE RETURN
56 JST T30 LINE FEED
57 IRS O$LA MAKE RETURN ADDRESS
58 JMP* O$LA RETURN
59
60 ************************************************************
61 *
62 * OUTPUT LINE
63 T1 DAC **
64 STX XR SAVE CALLER'S INDEX REGISTER
65 LDA* T1 LOAD BUFFER ADDRESS
66 ADD LNW LINE WIDTH
67 ADD ='40000 SET INDEXING TAG
68 STA T6
69 IRS T1 INCREMENT RETURN ADDRESS
70 LDA LNW LINE WIDTH
71 TCA NEGATE
72 STA 0 PUT INTO INDEX REG
73 T3 LDA* T6
74 CAS ='120240
75 JMP *+2
76 *
77 JMP T8
78 T4 JST T14
79 IRS 0
80 JMP T3
81 LDX XR RESTORE CALLER'S INDEX REGISTER
82 JMP* T1
83 T6 *** **
84 *
85 *
86 T8 LDA 0
87 STA T12
88 T10 IRS 0
89 JMP *+2
90 JMP* T1
91 LDA* T6
92 CAS ='120240
93 JMP *+2
94 JMP T10
95 LDA T12
96 STA 0
97 LDA ='120240
98 JMP T4
99 T12 *** **
100 *
101 *
102 T14 DAC **
103 ICA
104 OTA 0
105 JMP *-1
106 ICA
107 OTA 0
108 JMP *-1
109 JMP* T14
110 ****
111 *
112 * CARRIAGE RETURN
113 T20 DAC **
114 LDA =13 CR CHARACTER
115 OTA 0 OUTPUT
116 JMP *-1
117 JMP* T20 RETURN
118 *
119 * LINE FEED
120 T30 DAC **
121 LDA =10 LF CHARACTER
122 OTA 0 OUTPUT
123 JMP *-1 RETURN
124 JMP* T30
125 *
126 *
127 FIN WRITE OUT LITERALS
128 *
129 * PUH.....
130 *
131 END