*** 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
72O$PB PZE ** PTP PUNCH ENTRY
73 STX XR SAVE INDEX REGISTER FROM CALLING PROGRAMM
74 OCP 2 ACTIVATE PAPER TAPE PUNCH
75*
76 LDA* O$PB WORD COUNT ADDRESS
77BIN5 STA TMP
78 LDA* TMP
79 TCA TWOS COMPLEMENT BINARY WORD COUNT
80 STA 0
81 LDA* O$PB BINARY DATA ADDRESS
82 ADD* TMP DATA ADDRESS+WORD COUNT
83 ADD ='40001
84 STA DATA DATA ADDRESS + WORD COUNT, 1
85 JST STP
86 LDA ='201 BEGINNING OF MESSAGE
87 JST BCD8
88BIN6 LDA* DATA BINARY WORD TO BE PUNCHED
89 LRL 16 B-REG: BINARY WORD TO BE PUNCHED
90 JST PNCH GO PUNCH BINARY WORD
91 IRS 0
92 JMP BIN6 CONTINUE PUNCHING BINARY CHARACTERS
93 JMP RETN LEAVE ROUTINE
94PNCH PZE ** CONVERT AND PUNCH BINARY CHARACTERS
95 LLL 4
96 JST CHAR PUNCH BINARY WORD (1-4)
97 JST CHAR PUNCH BINARY WORD (5-10)
98 JST CHAR PUNCH BINARY WORD (11-16)
99 JMP* PNCH RETURN FOR ADDITIONAL WORDS
100CHAR PZE **
101 LGL 11
102 CAS WRU
103 JMP *+2
104 LDA WRUX
105 CAS LF
106 JMP *+2
107 LDA LFX
108 CAS XON
109 JMP *+2
110 LDA XONX
111 CAS XOFF
112 JMP *+2
113 LDA XOFX
114 SRC
115 ERA FOUR
116 ALR 5
117OUT JST BCD8
118 LLL 6
119 JMP* CHAR
120WRU OCT 024000
121WRUX OCT 160003
122LF OCT 050000
123LFX OCT 164003
124XON OCT 104000
125XONX OCT 170003
126XOFF OCT 114000
127XOFX OCT 174003
128FOUR OCT 000004
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