annotate level1/cmds/ngu.asm @ 820:2de53dfabcc8

Added for future development
author boisy
date Mon, 13 Jan 2003 21:26:27 +0000
parents
children b0b1886efbd0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
820
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
1 ********************************************************************
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
2 * NGU - The "Next Great Utility"
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
3 *
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
4 * $Id$
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
5 *
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
6 * NGU is a template for writing utilities under OS-9/6809. It has
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
7 * robust option handling and is littered with comments to help you
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
8 * write your own utilities.
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
9 *
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
10 * NGU uses a two-pass method for parsing the command line. On the
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
11 * first pass, dash options are processed and internal flags are set
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
12 * accordingly. As the options are processed, they are cleared to
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
13 * spaces so that they won't be present on the second pass.
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
14 *
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
15 * For the second pass, NGU parses options that don't begin with -.
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
16 * Presumably these are filenames or other names that are to be
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
17 * processed.
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
18 *
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
19 * Features:
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
20 * - Both options and files can be specified anywhere
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
21 * on the command line
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
22 * (i.e ngu -a test1 -b test2 -c=foo)
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
23 *
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
24 * - Options can be combined behind one dash:
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
25 * (i.e ngu -ab test1 -c=foo test2 test3)
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
26 *
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
27 * - Several useful assembly routines are provided for
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
28 * copying strings and determining string length.
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
29 *
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
30 * Limitations:
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
31 * - Only single character options can be processed.
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
32 * Multi-character options (i.e. -delete) are not allowed.
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
33 *
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
34 * - The current file counter is one byte, allowing a maximum
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
35 * of 255 files.
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
36 *
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
37 * Ed. Comments Who YY/MM/DD
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
38 * ------------------------------------------------------------------
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
39 * 1 Put your development info here BGP 03/01/11
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
40
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
41 nam NGU
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
42 ttl The "Next Great Utility"
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
43
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
44 ifp1
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
45 use defsfile
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
46 use rbfdefs
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
47 endc
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
48
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
49 * Here are some tweakable options
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
50 DOHELP set 1 1 = include help info
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
51 STCKSIZE set 64 our stack size in bytes
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
52 COPTSIZ set 64 max size of C option's parameter
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
53
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
54 * Module header definitions
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
55 tylg set Prgrm+Objct
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
56 atrv set ReEnt+rev
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
57 rev set $01
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
58 edition set 1
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
59
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
60 mod eom,name,tylg,atrv,start,size
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
61
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
62
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
63 * Your utility's static storage vars go here
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
64 org 0
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
65 parmptr rmb 2 pointer to our command line params
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
66 bufptr rmb 2 pointer to user expandable buffer
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
67 bufsiz rmb 2 size of user expandable buffer
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
68 * What follows are utility specific options
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
69 gota rmb 1
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
70 gotb rmb 1
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
71 filecnt rmb 1
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
72 coptflg rmb 1 1 = this option has been processed once already
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
73 clrmark equ . everything before here gets cleared at start
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
74 copt rmb COPTSIZ buffer for what follows after -c=
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
75 * Next is a user adjustable buffer with # modifier on command line.
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
76 * Some utilities won't need this, some will.
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
77 * Currently set up to be larger for Level 2 than Level 1
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
78 * Note: this buffer must come just before the stack
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
79 IFGT Level-1
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
80 bigbuff rmb 8*1024 8K default buffer for Level 2
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
81 ELSE
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
82 bigbuff rmb 512 512 byte default buffer for Level 1
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
83 ENDC
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
84 * Finally the stack for any PSHS/PULS/BSR/LBSRs that we might do
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
85 stack rmb STCKSIZE
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
86 size equ .
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
87
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
88 * The utility name and edition goes here
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
89 name fcs /NGE/
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
90 fcb edition
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
91
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
92 * Place constant strings here
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
93 IFNE DOHELP
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
94 HlpMsg fcb C$LF
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
95 fcc /Use: NGU [<opts>] <path> [<path>] [<opts>]/
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
96 fcb C$LF
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
97 fcc / -a option 1/
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
98 fcb C$LF
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
99 fcc / -b option 2/
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
100 fcb C$LF
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
101 fcb C$CR
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
102 HlpMsgL equ *-HlpMsg
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
103 ENDC
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
104
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
105 * Here's how registers are set when this process is forked:
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
106 *
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
107 * +-----------------+ <-- Y (highest address)
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
108 * ! Parameter !
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
109 * ! Area !
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
110 * +-----------------+ <-- X, SP
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
111 * ! Data Area !
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
112 * +-----------------+
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
113 * ! Direct Page !
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
114 * +-----------------+ <-- U, DP (lowest address)
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
115 *
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
116 * D = parameter area size
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
117 * PC = module entry point abs. address
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
118 * CC = F=0, I=0, others undefined
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
119
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
120 * The start of the program is here
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
121 * Before any command line processing is done, we clear out
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
122 * our static memory from U to clrmark, then determine the
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
123 * size of our data area (minus stack)
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
124 start pshs u,x save registers for later
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
125 leax <clrmark,u point to end of area to zero out
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
126 IFNE H6309
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
127 subr u,x
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
128 tfr x,w
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
129 clr ,-s
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
130 tfm s,u+
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
131 leas 1,s
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
132 ELSE
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
133 pshs x save end pointer on stack
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
134 clrnxt clr ,u+ clear out
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
135 cmpu ,s done?
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
136 bne clrnxt branch if not
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
137 leas 2,s else clear stack
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
138 ENDC
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
139 puls x,u and restore our earlier saved registers
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
140 leay bigbuff,u point Y to copy buffer offset in U
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
141 stx <parmptr save parameter pointer
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
142 sty <bufptr save pointer to buffer
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
143 tfr s,d place top of stack in D
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
144 IFNE H6309
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
145 subr y,d
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
146 ELSE
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
147 pshs y save Y on stack
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
148 subd ,s++ get size of space between copybuf and X
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
149 ENDC
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
150 subd #STCKSIZE subtract out our stack
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
151 std <bufsiz size of our buffer
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
152
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
153 * At this point we have determined our buffer space and saved pointers
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
154 * for later use. Now we will parse the command line
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
155 lbsr SkipSpcs move past any spaces on command line
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
156 cmpa #C$CR CR?
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
157 lbeq ShowHelp if so, no parameters... show help and exit
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
158 GetChar lda ,x+ get next character on cmd line
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
159 cmpa #C$CR CR?
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
160 lbeq DoNGU if so, do whatever this utility does
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
161 cmpa #'- is it an option?
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
162 beq GetDash if so, process it
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
163 inc <filecnt else must be a non-option argument (file)
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
164 lbsr SkipNSpc move past the argument
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
165 ChkDash lbsr SkipSpcs and any following spaces
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
166 bra GetChar start processing again
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
167 GetDash lda #C$SPAC get a space char
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
168 sta -1,x and wipe out the dash from the cmd line
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
169 GetDash2 ldd ,x+ load option char and char following
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
170 anda #$5F make uppercase
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
171 IsItA cmpa #'A is it this option?
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
172 bne IsItB branch if not
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
173 inc <gota
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
174 lbra FixCmdLn
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
175 IsItB cmpa #'B is it this option?
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
176 bne IsItC branch if not
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
177 inc <gotb
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
178 bra FixCmdLn
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
179 IsItC cmpa #'C is it this option?
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
180 bne BadOpt branch if not
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
181 tst <coptflg was this option already specified?
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
182 bne BadOpt show help if so
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
183 cmpb #'= 2nd char =?
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
184 bne BadOpt show help if not
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
185 inc <coptflg else tag this option as parsed
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
186 ldb #C$SPAC get space
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
187 stb -$01,x write over c
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
188 stb ,x+ and = sign, inc X to dest dir
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
189 * check for valid char after -c=
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
190 lda ,x
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
191 cmpa #C$SPAC
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
192 lbeq ShowHelp
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
193 cmpa #C$COMA
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
194 lbeq ShowHelp
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
195 cmpa #C$CR
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
196 lbeq ShowHelp
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
197 leay <copt,u point Y to parameber buffer
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
198 tfr y,d transfer Y to D
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
199 addd #COPTSIZ
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
200 pshs b,a save updated ptr value
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
201 ldb #C$SPAC get space
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
202 L0339 lda ,x get byte at X
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
203 stb ,x+ store space at X and inc
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
204 sta ,y+ save loaded byte at Y and inc
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
205 cmpy ,s are we at end?
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
206 beq L035D branch if so (buffer too small)
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
207 cmpa #C$SPAC else is char in A a space?
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
208 beq L0350 branch if so
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
209 cmpa #C$COMA coma?
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
210 beq L0350 branch if so
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
211 cmpa #C$CR cr?
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
212 bne L0339 get next byte if not
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
213 L0350 leax -1,x
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
214 sta ,x restore previous A
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
215 leas $02,s kill stack
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
216 lbra ChkDash
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
217 L035D leas $02,s
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
218 ldb #$BF else buffer size too small
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
219 orcc #Carry
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
220 lbra Exit
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
221 FixCmdLn lda #C$SPAC get space
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
222 sta -$01,x and wipe out option character
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
223 cmpb #'0
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
224 lblt ChkDash start dash option processing again
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
225 lbra GetDash possibly another option following?
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
226
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
227 * We branch here if we encounter an unknown option character
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
228 BadOpt lbra ShowHelp
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
229
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
230
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
231 * At this point options are processed.
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
232 * We load X with our parameter pointer and go down the command line
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
233 * looking at each file to process (options have been wiped out with
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
234 * spaces)
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
235 DoNGU tst <filecnt we should have at least one file on cmdline
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
236 lbeq ShowHelp if not, exit with error
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
237 ldx <parmptr get our parameter pointer off stack
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
238 lbsr SkipSpcs skip any leading spaces
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
239 bra ExitOk
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
240
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
241 ShowHelp equ *
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
242 IFNE DOHELP
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
243 leax >HlpMsg,pcr point to help message
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
244 ldy #HlpMsgL get length
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
245 lda #$02 std error
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
246 os9 I$WritLn write it
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
247 ENDC
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
248 ExitOk clrb clear carry
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
249 Exit os9 F$Exit and exit
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
250
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
251 * This routine counts the number of non-whitespace characters
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
252 * starting at X
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
253 *
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
254 * Entry:
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
255 * X = ptr to string (space, comma or CR terminated)
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
256 * Exit:
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
257 * D = length of string
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
258 * X = ptr to byte after string
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
259 StrLen pshs u
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
260 ldu #$0000
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
261 StrLenLp lda ,x+
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
262 cmpa #C$SPAC
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
263 beq StrLenEx
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
264 cmpa #C$COMA
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
265 beq StrLenEx
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
266 cmpa #C$CR
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
267 beq StrLenEx
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
268 leau 1,u
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
269 bra StrLenLp
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
270 StrLenEx tfr u,d
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
271 puls u,pc
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
272
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
273 * This routine copies a string of text from X to Y until
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
274 * a whitespace character or CR is encountered
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
275 *
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
276 * Entry:
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
277 * X = ptr to src string
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
278 * Y = ptr to dest string
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
279 * Exit:
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
280 * D = number of bytes copied
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
281 * X = ptr to byte after original string
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
282 * Y = ptr to byte after copied string
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
283 StrCpy pshs u
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
284 ldu #$0000
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
285 CopyFnLp lda ,x+
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
286 cmpa #C$SPAC
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
287 beq CopyFnEx
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
288 cmpa #C$COMA
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
289 beq CopyFnEx
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
290 cmpa #C$CR
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
291 beq CopyFnEx
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
292 sta ,y+
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
293 leau 1,u
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
294 bra CopyFnLp
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
295 CopyFnEx tfr u,d
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
296 puls u,pc
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
297
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
298 * This routine skip over spaces and commas
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
299 *
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
300 * Entry:
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
301 * X = ptr to data to parse
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
302 * Exit:
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
303 * X = ptr to first non-whitespace char
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
304 * A = non-whitespace char
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
305 SkipSpcs lda ,x+
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
306 cmpa #C$SPAC
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
307 beq SkipSpcs
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
308 cmpa #C$COMA
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
309 beq SkipSpcs
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
310 leax -1,x
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
311 rts
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
312
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
313 * This routine skips over non-spaces and non-commas
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
314 *
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
315 * Entry:
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
316 * X = ptr to data to parse
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
317 * Exit:
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
318 * X = ptr to first whitespace char
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
319 * A = whitespace char
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
320 SkipNSpc lda ,x+
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
321 cmpa #C$SPAC
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
322 beq EatOut
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
323 cmpa #C$COMA
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
324 beq EatOut
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
325 cmpa #C$CR
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
326 bne SkipNSpc
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
327 EatOut leax -1,x
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
328 rts
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
329
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
330 emod
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
331 eom equ *
2de53dfabcc8 Added for future development
boisy
parents:
diff changeset
332 end