*** empty log message ***
[h316.git] / lib / iolib / src / o$pb.asm
CommitLineData
c08e22bb 1* (O$PB) - COPY OF O$AB
2*
3*
4* COMPUTER: H316
5*
6* PROGRAM CATEGORY: I/O LIBRARY
7*
8* PROGRAM TITLE: O$PB (O$PS,O$PLDR)
9* TO PUNCH BINARY TAPE ON THE HIGH SPEED PUNCH
10*
11* REVISIONS:
12* 1.0 (2005-02.04)
13*
14* AUTHOR
15*
16* PHILIPP HACHTMANN
17*
18*
19*
20* STORAGE
21*
22* 150 (OCTAL)
23* 104 (DECIMAL)
24*
25*
26* USE
27*
28* CALL O$PB PTP BINARY PUNCH ROUTINE
29* DAC DATA DATA ADDRESS
30* NORMAL RETURN
31*
32* CALL O$PS END OF MESSAGE ROUTINE
33*
34* CALL O$PLDR PUNCH BLANK LEADER
35*
36*
37* CALL O$AB -
38*
39* THIS ROUTINE IS USED TO PUNCH BINARY PAPER TAPE, THE ADDRESS
40* OF THE BINARY WORD COUNT APPEARS IN THE VARIABLE FIELD (DATA)
41* FOLLOWING THE CALL PSEUDO-OP. THE BINARY INFORMATION TO BE
42* PUNCHED MUST START AT DATA+1.
43* THE NORMAL RETURN IS TAKEN WHEN THE NUMBER OF WORDS SPECIFIED
44* BY THE WORD COUNT HAS BEEN PUNCHED.
45*
46* CALL O$AS -
47*
48* EOM (203 OCT), X-OFF (223 OCT), AND RUBOUT (377 OCT) CHARACTERS
49* ARE PUNCHED WHEN THIS ROUTINE IS USED.
50* RETURN IS TO THE CALLING PROGRAMM
51*
52* CALL O$PLDR -
53*
54* PUNCH BLANK LEADER. NORMAL RETURN.
55*
56*
57* METHOD
58*
59* BINARY INFORMATION IS PUNCHED AS IST APPEARS IN THE BUFFER (DATA+1).
60* EACH RECORD ON PAPER TAP EWILL HAVE THE FOLLOWING FORMAT:
61* START OF MESSAGE, BINARY INFORMATION, X-OFF, TWO LEADER CHARS.
62*
63*
64*
65********************************************************************************
66*
67*
68 SUBR O$PB
69 SUBR O$PS
70 SUBR O$PLDR,PLDR
71 REL
9ae5cfca 72WRU OCT 024000
73WRUX OCT 160003
74LF OCT 050000
75LFX OCT 164003
76XON OCT 104000
77XONX OCT 170003
78XOFF OCT 114000
79XOFX OCT 174003
80FOUR OCT 000004
c08e22bb 81O$PB PZE ** PTP PUNCH ENTRY
82 STX XR SAVE INDEX REGISTER FROM CALLING PROGRAMM
83 OCP 2 ACTIVATE PAPER TAPE PUNCH
84*
85 LDA* O$PB WORD COUNT ADDRESS
86BIN5 STA TMP
87 LDA* TMP
88 TCA TWOS COMPLEMENT BINARY WORD COUNT
89 STA 0
90 LDA* O$PB BINARY DATA ADDRESS
91 ADD* TMP DATA ADDRESS+WORD COUNT
92 ADD ='40001
93 STA DATA DATA ADDRESS + WORD COUNT, 1
94 JST STP
95 LDA ='201 BEGINNING OF MESSAGE
96 JST BCD8
97BIN6 LDA* DATA BINARY WORD TO BE PUNCHED
98 LRL 16 B-REG: BINARY WORD TO BE PUNCHED
99 JST PNCH GO PUNCH BINARY WORD
100 IRS 0
101 JMP BIN6 CONTINUE PUNCHING BINARY CHARACTERS
102 JMP RETN LEAVE ROUTINE
103PNCH PZE ** CONVERT AND PUNCH BINARY CHARACTERS
104 LLL 4
105 JST CHAR PUNCH BINARY WORD (1-4)
106 JST CHAR PUNCH BINARY WORD (5-10)
107 JST CHAR PUNCH BINARY WORD (11-16)
108 JMP* PNCH RETURN FOR ADDITIONAL WORDS
109CHAR PZE **
110 LGL 11
111 CAS WRU
112 JMP *+2
113 LDA WRUX
114 CAS LF
115 JMP *+2
116 LDA LFX
117 CAS XON
118 JMP *+2
119 LDA XONX
120 CAS XOFF
121 JMP *+2
122 LDA XOFX
123 SRC
124 ERA FOUR
125 ALR 5
126OUT JST BCD8
127 LLL 6
128 JMP* CHAR
c08e22bb 129BCD8 PZE ** ASCII PUNCH ROUTINE
130 OTA 2
131 JMP *-1
132 JMP* BCD8
133RETN LDA ='223 X-OFF
134 JST BCD8
135 LDA ='377 RUBOUT CHARACTER
136 JST BCD8 LEADER CHAR.
137 IRS O$PB INCREMENT FOR NORMAL RETURN
138 LDA XR RESTORE INDEX FOR CALLING PROGRAMM
139 STA 0
140 JMP* O$PB
141*
142O$PS PZE ** PUNCH END OF MESSAGE ENTRY
143 JST STP
144 LDA ='203 PUNCH END OF MESSAGE
145 JST BCD8
146 LDA ='223 PUNCH X-OFF
147 JST BCD8
148 LDA ='377 RUBOUT CHARACTER
149 JST BCD8 LEADER CHAR.
150 JMP* O$PS RETURN TO CALLING PROGRAMM
151*
152STP DAC **
153 LDA ='222
154 JST BCD8
155 LDA ='377
156 JST BCD8
157 JMP* STP
158DATA PZE 0
159XR PZE 0
160TMP PZE 0
161 FIN
162*
163LDRC DEC 150 LENGTH OF LEADER
164PLDR DAC ** PUNCH LEADER ENTRY
165 STX XR SAVE X REGISTER
166 LDA LDRC LENGTH OF LEADER
167 TCA TWOS COMPLEMENT OF LEADER
168 STA 0
169 OCP 2
170 CRA
171LD1 OTA 2 PUNCH!
172 JMP *-1
173 IRS 0
174 JMP LD1
175 LDX XR RESTORE X REGISTER
176 JMP* PLDR RETURN
177*
178 END O$PB