Add README.md
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape3 / IOPEN.SB
1 /IOPEN SUBROUTINE OS8 FORTRAN II LIBRARY
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /COPYRIGHT (C) 1974,1977 BY DIGITAL EQUIPMENT CORPORATION
12 /
13 /
14 /
15 /
16 /
17 /
18 /
19 /
20 /
21 /
22 /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
23 /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
24 /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
25 /FOR ANY ERRORS THAT MAY APPEAR IN THIS MANUAL.
26 /
27 /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
28 /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
29 /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
30 /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
31 /
32 /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
33 /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
34 /DIGITAL.
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 \f/ VERSION 21A
46 / VERSION NUMBER IS AVAILABLE AT ENTRY POINTS
47 / SUBROUTINES TO MANIPULATE OS/8 FILES
48 /
49
50 ENTRY IOPEN /OPEN AN INPUT FILE
51 ENTRY OOPEN /OPEN AN OUTPUT FILE
52 ENTRY OCLOS /CLOSE AN OUTPUT FILE
53 ENTRY CHAIN /CHAIN TO A PROGRAM
54
55 OPDEF TADI 1400
56 OPDEF ISZI 2400
57 OPDEF DCAI 3400
58 OPDEF JMPI 5400
59
60 LAP /LEAVE AUTOMATIC PAGING - WE NEED THE 2 LOCATIONS
61
62 IOER, 1117;0522 /"IOER" ERROR MESSAGE
63 IOPEN, BLOCK 1
64 21
65 TAD ASDVM1
66 JMS SETUP /PUT 2 WORDS OF FIRST ARGUMENT INTO "ASDEV"
67 TADI INHNDL /DATA FIELD IS 0 HERE - GET INPUT HANDLER PAGE
68 SNA
69 JMP IOERR /NO /I GIVEN - ERROR
70 DCAI 10 /STORE IN "ASPAGE"
71 JMS GFILNM /MOVE FILE NAME INTO LOCS 00000-00003
72 TAD FLUKUP /LOAD POINTER TO "FLUKUP" IN RUN-TIME ROUTINES
73 CALASN, 6202 /CIF 0
74 JMS I FASIGN /SET DF=CURRENT AND GO LOOKUP FILE
75 RETRN IOPEN /** FASIGN SKIPS BUT SECOND WORD IS SMALL **
76 IOERR, CALL 1,ERROR /I-O ERROR - GIVE MESSAGE AND QUIT
77 ARG IOER
78
79 OOPEN, BLOCK 1
80 21
81 JMS OOCOMN
82 TAD FENTER
83 JMP CALASN /SEE "IOPEN" FOR COMMENTS
84
85 OOCOMN, 0 /COMMON SUBR BETWEEN "OOPEN" AND "OCLOS"
86 TAD OOPEN
87 DCA IOPEN
88 TAD OOPEN#
89 DCA IOPEN# /MOVE CALLING ADDRESS TO IOPEN
90 TAD ASDVM1
91 JMS SETUP /SET UP DEVICE NAME IN FIELD 0
92 TADI OUHNDL
93 SNA
94 JMP IOERR /NO /O GIVEN - ERROR
95 DCAI 10 /STORE IN "ASPAGE"
96 JMS GFILNM /PUT FILE NAME INTO 00000-3
97 JMPI OOCOMN
98
99 OCLOS, BLOCK 1
100 21
101 JMS OOCOMN /SET UP DEVICE AND FILE NAME
102 TAD OCLOS
103 DCA IOPEN
104 TAD OCLOS#
105 DCA IOPEN# /SET UP IOPEN FOR RETURN
106 TAD CHAIN /=7177
107 DCA OOCOMN
108 OCLOOP, TAD CHAIN# /=1632 =^Z ON DEVICE 4 OUTPUT
109 CALL 0,GENIO
110 ISZ OOCOMN
111 JMP OCLOOP /FORCE OUT THE LAST BUFFER
112 TAD FCLOSE
113 JMP CALASN /DO WORK AND LEAVE
114
115 SETUP, 0
116 DCA 10
117 TAD IOPEN
118 DCA SETDF
119 SETDF, 0 /SET CALLING DATA FIELD
120 TADI IOPEN#
121 DCA GETWD# /SAVE FIELD OF ARGUMENT
122 INC IOPEN#
123 TADI IOPEN#
124 DCA SETDF /SAVE ADDRESS OF ARGUMENT
125 INC IOPEN#
126 JMS GETWD /TRANSFER TWO WORDS FROM THE
127 JMS GETWD /ARGUMENT LIST TO WHERE XR 10 POINTS
128 JMPI SETUP /RETURN WITH DATA FIELD =0
129
130 GETWD, 0
131 NOP /SET ARGUMENT FIELD
132 TADI SETDF
133 INC SETDF
134 6201 /CDF 00
135 DCAI 10
136 JMPI GETWD /DO NOT RESTORE DATA FIELD
137
138 GFILNM, 0
139 CLA CMA
140 JMS SETUP /MOVE TWO WORDS TO 00000 AND 00001
141 JMS GETWD /MOVE THE THIRD WORD
142 TAD DA
143 DCAI 10 /SUPPLY AN EXTENSION
144 JMPI GFILNM
145
146 DA, 0401 /.DA EXTENSION
147 INHNDL, 74
148 OUHNDL, 75
149 FASIGN, 541 /*****************
150 ASDVM1, 552 / CAUTION!
151 FLUKUP, 567 /ALL THESE LOCATIONS ARE VERY VOLATILE!!
152 FENTER, 741 /WATCH OUT IF YOU REASSEMBLE THE LOADER!
153 FCLOSE, 757 /*****************
154
155 CHAIN, 7177 /USE "CHAIN" TO STORE CONSTANTS
156 1632 /SINCE IT IS ONLY CALLED TERMINALLY
157 TAD CHAIN
158 DCA IOPEN
159 CALL 0,CKIO /WAIT FOR DEVICE
160 TAD CHAIN#
161 DCA IOPEN#
162 JMS GFILNM /GET FILE NAME INTO 00000-00003
163 ISZI INHNDL /FORCE INHNDL NONZERO SO IOPEN WONT FAIL
164 TAD SV /CHANGE ASSUMED EXTENSION
165 DCA DA /FROM .DA TO .SV
166 TAD (0310
167 DCA IOER /IF IOPEN FAILS GIVE "CHER" MESSAGE
168 CALOPN, CALL 1,IOPEN
169 ARG SYS /CHAIN WORKS FROM THE SYSTEMS DEVICE ONLY
170 6201
171 0 /"ARG 0" POINTING TO 00000!
172 TAD (6
173 6201 /SET DF TO 0
174 DCAI K2 /MODIFY "LOOKUP" INTO "CHAIN"
175 DCAI ZRONAM /ALSO KILL LOC WHICH ZEROS FILE NAME PTR
176 JMP CALOPN /GO BACK - THIS TIME IOPEN WILL CHAIN.
177
178 SYS, 2303 /***** 2303+2326 =4631 = "SYS"! WATCH IT!
179 SV, 2326
180 K2, 571 /**** SUPER VOLATILE LOCATION ****
181 ZRONAM, 557 /**** DITTO ****
182
183 END
184 \f