annotate 3rdparty/utils/boisy/bawk.asm @ 2109:6f39160e9096

Fixed errors in source
author boisy
date Thu, 19 Apr 2007 03:07:40 +0000
parents b9a87d97494d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1 *************************************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
2 * BAWK Edition 3 - (Boisy's Awk) - Line processing utility
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
3 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
4 * (C) 1992 Boisy G. Pitre
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
5 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
6 * BAWK is a line processing utility "similar", but not exactly
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
7 * the same as the UNIX counterpart. For one, this version of BAWK is
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
8 * NOT a processing language. Its a line processing program. Don't
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
9 * get BAWK confused with AWK. They are two totally different programs.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
10 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
11 * BAWK takes advantages of "fields" in lines of text. A field
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
12 * is a word or symbol, separated by whitespace. Each field is numbered
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
13 * sequentially from left to right. An example of how BAWK see's fields
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
14 * in lines of text:
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
15 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
16 * 1 2 3 4
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
17 * my name is boisy
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
18 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
19 * The numbers above the words in the line represent the field
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
20 * numbers. BAWK can extract any or all of these fields by their field
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
21 * number in any order, for a wide variety of useful formats. These formats
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
22 * can then be piped to another program or to a file for processing.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
23 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
24 * Usage: BAWK [-a# -i -d? -l -f -F] "format field" [file] [...]
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
25 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
26 * NOTICE: Options are CASE SENSITIVE! Be aware of this when using BAWK.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
27 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
28 * Opts:
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
29 * -d? = the optional delimiter you wish to use.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
30 * Ex. to use a colon as a delimiter in addition to
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
31 * the already used space, use -d:
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
32 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
33 * -a# = Anchor start field to #th column.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
34 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
35 * -i = prints lines even if the field doesn't exist.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
36 * This option tells BAWK to print the format string even
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
37 * if the specified field is not found on the line.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
38 * Default is OFF.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
39 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
40 * -l = Prints the name of the file currently being scanned.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
41 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
42 * -f = Forks a shell with the expanded line as a parameter. The
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
43 * expanded line buffer is NOT printed.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
44 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
45 * -F = Forks a shell with the expanded line as a parameter, and
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
46 * prints the expanded line to StdOut.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
47 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
48 * The format field can contain any characters you wish. The special
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
49 * character '$' is used to denote field positions. (Fields are from 1 to
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
50 * 255). If you wanted to extract the 5th field in a line, you would include
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
51 * $5 in the format string. BAWK would interpret this to be the fifth
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
52 * field, and would then expand it appropriately. Looking at the previous
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
53 * example:
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
54 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
55 * 1 2 3 4
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
56 * my name is boisy
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
57 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
58 * NOTE: there is a special field, $0, which denotes the ENTIRE
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
59 * input line.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
60 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
61 * To tell BAWK to print the 3rd field in that line, the following
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
62 * command line would work:
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
63 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
64 * echo my name is boisy | bawk "$3"
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
65 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
66 * Note that the format string is ALWAYS contained in '"' quotes.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
67 * You may also include non-specific info as part of the field. I use the
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
68 * following line in my /DD/SYS/CRONTAB file to stop my BBS at 7:00 each
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
69 * morning:
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
70 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
71 * procs | fgrep -i "tsmon" | bawk -f "kill $1"
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
72 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
73 * This line uses PROCS' output, and pipes it into FGREP. FGREP then
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
74 * throws away any lines that don't contain the word tsmon. The remaining
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
75 * lines that do contain the keyword are then piped to BAWK. BAWK takes the
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
76 * first field of that line (the Process ID number of tsmon), and combines
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
77 * it in a format whose output looks like: kill 3 (assuming 3 is the ID
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
78 * of the tsmon process). Finally, that line is used as a parameter for
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
79 * shell execution.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
80 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
81 * You may also specify a filename or a list of them AFTER the format
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
82 * string. When using filenames, you can tell BAWK to print the name of the
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
83 * file it is currently scanning (to StdOut) using the -f option.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
84 * To use '$' as a regular character in a format string, use $$.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
85 * BAWK does not interpret this as the '$' field specifier.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
86 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
87 * You can mix and match any number of fields for interesting
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
88 * combinations. If you prefer military time instead of DATE's regular
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
89 * output, try this:
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
90 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
91 * date | bawk -d, "$2 $1 $3"
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
92 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
93 * This example also introduced the -d option. This option allows
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
94 * you to specify another delimiter in addition to the already used space
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
95 * character. A good example of this would be finding the 5th field in
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
96 * the /DD/SYS/PASSWORD file, whose delimiter is a comma, NOT a space.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
97 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
98 * Another useful option is -i. This allows the inclusion of printing
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
99 * the format string even though that field is not found on the line.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
100 * Take the previous example again:
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
101 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
102 * 1 2 3 4
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
103 * my name is boisy
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
104 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
105 * The following command line would print nothing:
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
106 * echo my name is boisy | bawk "Name $5"
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
107 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
108 * BUT this line will output 'Name ':
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
109 * echo my name is boisy | bawk -i "Name $5"
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
110 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
111 * Keep in mind that if the -i option is not used, NO lines will
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
112 * be printed unless ALL fields are qualified.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
113 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
114 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
115 * One other option worth noting is the -a option. This option sets
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
116 * an "anchor" to the #th column. Using our infamous example:
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
117 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
118 * 1 2 3 4
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
119 * my name is boisy
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
120 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
121 * The following command line would print 'name' because the anchor
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
122 * is set to the 3rd column (which is a space, ignored by BAWK):
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
123 * echo my name is boisy | bawk -a3 "$1"
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
124 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
125 * To print the names of all the modules in block $3F using MDIR:
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
126 * mdir e | grep "3F" | bawk "Module: $8"
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
127 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
128 * BAWK has very useful applications, making it a worthy addition to
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
129 * your OS-9 toolbox. In addition to these features, BAWK works GREAT with
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
130 * Shell+'s wildcards!
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
131 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
132 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
133 * By: Boisy G. Pitre
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
134 * Southern Station, Box 8455
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
135 * Hattiesburg, MS 39406-8455
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
136 * Internet: bgpitre@seabass.st.usm.edu
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
137 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
138 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
139
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
140 nam BAWK
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
141 ttl Line processing utility
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
142
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
143 ifp1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
144 use defsfile
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
145 endc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
146
1260
0e08f0830fd8 Changes pointed out by Rodney H.
boisy
parents: 0
diff changeset
147 mod Size,Name,Prgrm+Objct,ReEnt+1,Start,Finish
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
148
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
149 Name fcs /bawk/
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
150 Ed fcb 3 Edition #3
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
151
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
152 Anchor rmb 1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
153 Path rmb 1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
154 IncFlag rmb 1 Inclusion Flag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
155 FileFlag rmb 1 Show File Flag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
156 ForkFlag rmb 1 Fork Shell Flag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
157 FEFlag rmb 1 Fork Shell and Echo Flag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
158 Delim rmb 1 Delimiter storage
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
159 FileBuff rmb 60 Filename buffer
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
160 Format rmb 250 Format buffer
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
161 Line rmb 250 Line buffer
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
162 ExpLine rmb 4096 Expanded line buffer
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
163 Stack rmb 200
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
164 Params rmb 200
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
165 Finish equ .
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
166
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
167
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
168 HelpMess fcc /Usage: BAWK [-d? -i -l -a# -f -F] "format_string" [file] [...]/
1564
b9a87d97494d Multiple changes for next release
boisy
parents: 1260
diff changeset
169 fcb C$CR
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
170
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
171 Shell fcc "Shell"
1564
b9a87d97494d Multiple changes for next release
boisy
parents: 1260
diff changeset
172 fcb C$CR
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
173
1564
b9a87d97494d Multiple changes for next release
boisy
parents: 1260
diff changeset
174 FileHead fdb C$LF,C$CR
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
175 fcc "*** File: "
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
176 FileHLen equ *-FileHead
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
177
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
178 ****************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
179 * Subroutines
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
180
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
181 ****************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
182 * Str2Byte - Converts an ASCII string to a single byte
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
183 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
184 * Entry: X - Address of first char in string
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
185 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
186 * Exit: B - Converted byte
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
187 * X - Last number in string + 1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
188 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
189
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
190 Str2Byte clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
191 cnvloop lda ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
192 cmpa #'9
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
193 bhi cnvdone
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
194 suba #'0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
195 blo cnvdone
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
196 pshs a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
197 lda #10
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
198 mul
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
199 addb ,s+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
200 bra cnvloop
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
201 cnvdone leax -1,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
202 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
203
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
204 ****************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
205 * Saves filename in buffer and print it
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
206 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
207 * Entry: X - Address where filename is
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
208 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
209 * Exit: None. File is stored in FileBuff
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
210 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
211
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
212 SaveFile pshs x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
213 leay FileBuff,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
214 SaveF2 lda ,x+
1564
b9a87d97494d Multiple changes for next release
boisy
parents: 1260
diff changeset
215 cmpa #C$SPAC
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
216 bne SaveF3
1564
b9a87d97494d Multiple changes for next release
boisy
parents: 1260
diff changeset
217 lda #C$CR
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
218 SaveF3 sta ,y+
1564
b9a87d97494d Multiple changes for next release
boisy
parents: 1260
diff changeset
219 cmpa #C$CR
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
220 bne SaveF2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
221 puls x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
222 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
223
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
224 ****************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
225 * Sets the anchor
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
226 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
227 * Entry: X - Address of line
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
228 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
229 * Exit: X - Points to the EOLN char at the
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
230 * end of the line
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
231 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
232
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
233 AncLine pshs b save counter
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
234 tst Anchor Anchor to a column other than 1 or 0?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
235 beq Return Nope, process at first column
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
236 AncLoop ldb Anchor else move X to anchor point
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
237 Anc2 lda ,x+
1564
b9a87d97494d Multiple changes for next release
boisy
parents: 1260
diff changeset
238 cmpa #C$CR
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
239 beq BackUp
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
240 decb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
241 bne Anc2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
242 BackUp leax -1,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
243 Return puls b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
244 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
245
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
246 ****************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
247 * Prints filename to StdOut
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
248 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
249 * Entry: None
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
250 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
251 * Exit: None
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
252 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
253 * Prints a file header to StdOut along with
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
254 * the filename.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
255 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
256
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
257 PrnFile pshs x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
258 leax FileHead,pcr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
259 lda #1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
260 ldy #FileHLen
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
261 os9 I$Write
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
262 lbcs Error
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
263 leax FileBuff,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
264 lda #1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
265 ldy #60
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
266 os9 I$WritLn
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
267 lbcs Error
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
268 puls x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
269 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
270
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
271 ****************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
272 * Strips leading spaces
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
273 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
274 * Entry: X - Address of line
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
275 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
276 * Exit: X - Points to first non-space character
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
277
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
278 EatSpace pshs a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
279 Eat2 lda ,x+
1564
b9a87d97494d Multiple changes for next release
boisy
parents: 1260
diff changeset
280 cmpa #C$SPAC
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
281 beq Eat2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
282 leax -1,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
283 puls a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
284 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
285
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
286 ****************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
287 * Entry of program
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
288
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
289 Start decb any params?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
290 lbeq Help nope, exit w/ error
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
291
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
292 clr Path assume stdin upon entry
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
293 clr IncFlag Clear (OFF) inclusion flag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
294 clr FileFlag Clear printing of filenames
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
295 clr Anchor Anchor to first column
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
296 clr FEFlag Clear Fork/Echo flag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
297 clr ForkFlag Clear Fork flag
1564
b9a87d97494d Multiple changes for next release
boisy
parents: 1260
diff changeset
298 lda #C$SPAC put space as extra delimiter
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
299 sta Delim
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
300
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
301 ****************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
302 * Command line parsing is done here
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
303
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
304 Parse bsr EatSpace
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
305 lda ,x+
1564
b9a87d97494d Multiple changes for next release
boisy
parents: 1260
diff changeset
306 cmpa #C$CR
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
307 beq Help
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
308 cmpa #'-
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
309 bne IsItQ
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
310 * Dash options parsed here
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
311 lda ,x+ load A with char
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
312 cmpa #'a is it the anchor option?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
313 bne IsItF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
314 lbsr Str2Byte
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
315 stb Anchor
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
316 bra Parse
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
317 IsItF cmpa #'f
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
318 bne IsItUpF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
319 lda #$ff
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
320 sta ForkFlag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
321 bra Parse
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
322 IsItUpF cmpa #'F
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
323 bne IsItL
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
324 lda #$ff
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
325 sta FEFlag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
326 bra Parse
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
327 IsItL cmpa #'l
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
328 bne IsItI
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
329 lda #$FF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
330 sta FileFlag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
331 bra Parse
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
332 IsItI cmpa #'i is it the inclusion option?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
333 bne IsItD
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
334 lda #$ff set Inclusion Flag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
335 sta IncFlag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
336 bra Parse
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
337 IsItD cmpa #'d delimiter?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
338 bne Help bad option -- error out
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
339 lda ,x+ else load character after the 'D'
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
340 sta Delim save it...
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
341 bra Parse then go back to parsing the line
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
342 * Format String detected here
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
343 IsItQ cmpa #'" Is it a '"' format string?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
344 bne Help nope, must be an error
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
345
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
346 * Save the format string
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
347 SaveFmat leay Format,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
348 SaveFmt2 lda ,x+ Point to char after first '"'
1564
b9a87d97494d Multiple changes for next release
boisy
parents: 1260
diff changeset
349 cmpa #C$CR
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
350 beq Help
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
351 cmpa #'" is it the second '"'?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
352 bne SaveFmt3 no, save char
1564
b9a87d97494d Multiple changes for next release
boisy
parents: 1260
diff changeset
353 lda #C$CR
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
354 sta ,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
355 bra ChkFile
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
356 SaveFmt3 sta ,y+ else save char
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
357 bra SaveFmt2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
358 ChkFile lbsr EatSpace Check after last '"' for a filename
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
359 lda ,x
1564
b9a87d97494d Multiple changes for next release
boisy
parents: 1260
diff changeset
360 cmpa #C$CR if no filename, execute from StdIn
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
361 beq MainLine
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
362 bra OpenFile
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
363
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
364 ****************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
365 * Help Routine
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
366 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
367
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
368 Help leax HelpMess,pcr Show Help message
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
369 lda #2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
370 os9 I$WritLn
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
371 bra Done
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
372
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
373 ****************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
374 * Check for EOF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
375 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
376
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
377 EOF cmpb #E$EOF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
378 bne Error
1260
0e08f0830fd8 Changes pointed out by Rodney H.
boisy
parents: 0
diff changeset
379 lda Path
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
380 os9 I$Close Close path
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
381 puls x and restore the cmd line pointer
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
382 tst Path
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
383 beq Done
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
384 bra FilePrs
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
385
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
386 ****************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
387 * Exit Here
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
388 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
389
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
390 Done clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
391 Error os9 F$Exit
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
392
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
393
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
394 ****************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
395 * BAWK goes here if files are on the cmd line
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
396 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
397
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
398 FilePrs lbsr EatSpace eat spaces
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
399 lda ,x check char
1564
b9a87d97494d Multiple changes for next release
boisy
parents: 1260
diff changeset
400 cmpa #C$CR if CR,
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
401 beq Done
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
402
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
403 OpenFile lbsr SaveFile
1260
0e08f0830fd8 Changes pointed out by Rodney H.
boisy
parents: 0
diff changeset
404 lda #READ. else assume a file name
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
405 os9 I$Open and try to open it
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
406 bcs Error
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
407 sta Path
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
408 tst FileFlag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
409 beq MainLine
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
410 lbsr PrnFile
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
411
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
412 ****************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
413 * The following lines are the "heart" of BAWK's processing
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
414 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
415
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
416 MainLine pshs x save pointer to cmd line
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
417
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
418 ****************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
419 * The line of input is read from here.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
420 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
421
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
422 ReadLine lda Path get path
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
423 ldy #250 max chars per line
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
424 leax Line,u point to line buffer
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
425 os9 I$ReadLn and read the line
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
426 bcs EOF check EOF if error
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
427
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
428 ****************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
429 * The Process of Expansion starts here.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
430 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
431
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
432 ProcLine leax Format,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
433 leay ExpLine,u Position Y to expansion line
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
434
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
435 ParseFmt lda ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
436 cmpa #'$ Is it the '$' field character?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
437 beq FieldPar Check Field Parameter
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
438 PFmt2 sta ,y+
1564
b9a87d97494d Multiple changes for next release
boisy
parents: 1260
diff changeset
439 cmpa #C$CR
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
440 bne ParseFmt
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
441 tst ForkFlag
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
442 bne PFmt3
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
443 bsr Print
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
444 tst FEFlag see if the fork/echo flag is set
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
445 beq ReadLine
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
446 PFmt3 lbsr Fork
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
447 bra ReadLine
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
448 FieldPar lda ,x+ get char after '$'
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
449 cmpa #'$ Is it another?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
450 beq PFmt2 yep, store it
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
451 leax -1,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
452 FieldP2 lbsr Str2Byte convert the number
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
453 tstb check the number to see if it's 0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
454 bne Field1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
455
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
456 ****************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
457 * The entire line is copied at the direction of $0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
458 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
459
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
460 pshs x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
461 leax Line,u at this point we copy the entire...
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
462 lbsr AncLine Anchor the line
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
463 CopyAll lda ,x+ and transfer the rest of the line
1564
b9a87d97494d Multiple changes for next release
boisy
parents: 1260
diff changeset
464 cmpa #C$CR line since we've encountered a $0
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
465 beq Field3 and continue parsing
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
466 sta ,y+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
467 bra CopyAll
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
468
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
469 Field1 pshs x save position in format string
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
470 bsr SetField Position to the proper field
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
471 tstb was there an error?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
472 beq Field2 no, continue with expansion
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
473 tst IncFlag is the inclusion flag set?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
474 bne Field2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
475 puls x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
476 bra ReadLine
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
477 Field2 bsr Expand
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
478 Field3 puls x get position in format string
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
479 bra ParseFmt and continue expanding...
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
480
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
481
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
482 ****************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
483 * SETFIELD - This routine positions the X pointer to the correct field
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
484 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
485 * Entry: B - Number of the field
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
486 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
487 * Exit: B - clear if field was found, set if it wasn't found
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
488 * X - Address of Bth field (Points to EOLN if B is set)
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
489 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
490
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
491 SetField leax Line,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
492 lbsr AncLine Anchor the line
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
493 Skip lda ,x+
1564
b9a87d97494d Multiple changes for next release
boisy
parents: 1260
diff changeset
494 cmpa #C$SPAC
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
495 beq Skip
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
496 cmpa Delim
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
497 beq Skip
1564
b9a87d97494d Multiple changes for next release
boisy
parents: 1260
diff changeset
498 cmpa #C$CR
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
499 beq Leave2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
500 decb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
501 beq Leave
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
502 EatField lda ,x+
1564
b9a87d97494d Multiple changes for next release
boisy
parents: 1260
diff changeset
503 cmpa #C$SPAC
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
504 beq Skip
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
505 cmpa Delim
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
506 beq Skip
1564
b9a87d97494d Multiple changes for next release
boisy
parents: 1260
diff changeset
507 cmpa #C$CR
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
508 beq Leave2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
509 bra EatField
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
510 Leave clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
511 Leave2 leax -1,x
1564
b9a87d97494d Multiple changes for next release
boisy
parents: 1260
diff changeset
512 ExExit rts
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
513
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
514
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
515 ****************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
516 * EXPAND - This routine "expands" the field into the expansion buffer
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
517 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
518
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
519 Expand lda ,x+
1564
b9a87d97494d Multiple changes for next release
boisy
parents: 1260
diff changeset
520 cmpa #C$SPAC
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
521 beq ExExit
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
522 cmpa Delim
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
523 beq ExExit
1564
b9a87d97494d Multiple changes for next release
boisy
parents: 1260
diff changeset
524 cmpa #C$CR
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
525 beq ExExit
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
526 sta ,y+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
527 bra Expand
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
528
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
529
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
530 ****************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
531 * The expanded line is printed to StdOut here
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
532 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
533
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
534 Print leax ExpLine,u Point X to the expanded line buffer
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
535 ldy #500 max chars 500
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
536 lda #1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
537 os9 I$WritLn write to stdout
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
538 lbcs Error
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
539 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
540
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
541 ****************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
542 * The expanded line is used as a paramter to a shell
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
543 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
544
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
545 Fork pshs x,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
546 lda #Prgrm+Objct
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
547 ldb #16 Use 16 pages (4K) of data
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
548 leax Shell,pcr Point to name of Shell
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
549 ldy #4096
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
550 leau ExpLine,u Point X to the expanded line buffer
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
551 os9 F$Fork Fork it!
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
552 lbcs Error
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
553 os9 F$Wait
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
554 puls x,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
555 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
556
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
557 emod
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
558 Size equ *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
559 end
1260
0e08f0830fd8 Changes pointed out by Rodney H.
boisy
parents: 0
diff changeset
560