164tass(1) 64tass 1.56 64tass(1)
2
3
4
6 64tass - A multi pass optimizing macro assembler for the 65xx series of
7 processors
8
10 64tass [OPTION]... [SOURCES]...
11
13 64tass is cross assembler targeting the 65xx series of micro proces‐
14 sors. This manual is only describing the command line options. The many
15 features are described in the HTML manual.
16
18 Output options
19 -o filename, --output filename
20 Place output into filename. The default output filename is
21 "a.out", this option changes it. May be used multiple times. The
22 format is remembered but section reverts to global after each
23 file.
24
25 --output-append filename
26 Append to output file instead of overwriting it.
27
28 --no-output
29 Same as output but no file will be written.
30
31 --output-section sectionname
32 Output this section instead of everything
33
34 -X, --long-address
35 Use 3 byte address/length for CBM and nonlinear output instead of
36 2 bytes. Also increases the size of raw output to 16 MiB.
37
38 --cbm-prg
39 Generate CBM format binaries (default). The first 2 bytes are the
40 little endian address of the first valid byte (start address).
41 Overlapping blocks are flattened and uninitialized memory is
42 filled up with zeros. Uninitialized memory before the first and
43 after the last valid bytes are not saved. Up to 64 KiB or 16 MiB
44 with long address.
45
46 -b, --nostart
47 Output raw data only without start address. Overlapping blocks
48 are flattened and uninitialized memory is filled up with zeros.
49 Uninitialized memory before the first and after the last valid
50 bytes are not saved. Up to 64 KiB or 16 MiB with long address.
51
52 -f, --flat
53 Flat address space output mode. Overlapping blocks are flattened
54 and uninitialized memory is filled up with zeros. Uninitialized
55 memory after the last valid byte is not saved. Up to 4 GiB.
56
57 -n, --nonlinear
58 Generate nonlinear output file. Overlapping blocks are flattened.
59 Blocks are saved in sorted order and uninitialized memory is
60 skipped. Up to 64 KiB or 16 MiB with long address.
61
62 --atari-xex
63 Generate a Atari XEX output file. Overlapping blocks are kept,
64 continuing blocks are concatenated. Saving happens in the defini‐
65 tion order without sorting, and uninitialized memory is skipped in
66 the output. Up to 64 KiB.
67
68 --apple2
69 Generate a Apple II output file (DOS 3.3). Overlapping blocks are
70 flattened and uninitialized memory is filled up with zeros. Unini‐
71 tialized memory before the first and after the last valid bytes
72 are not saved. Up to 64 KiB.
73
74 --intel-hex
75 Use Intel HEX output file format. Overlapping blocks are kept,
76 data is stored in the definition order, and uninitialized areas
77 are skipped. I8HEX up to 64 KiB, I32HEX up to 4 GiB.
78
79 --s-record
80 Use Motorola S-record output file format. Overlapping blocks are
81 kept, data is stored in the definition order, and uninitialized
82 memory areas are skipped. S19 up to 64 KiB, S28 up to 16 MiB and
83 S37 up to 4 GiB.
84
85 Operation options
86 -a, --ascii
87 Use ASCII/Unicode text encoding instead of raw 8-bit. Normally no
88 conversion takes place, this is for backwards compatibility with a
89 DOS based Turbo Assembler editor, which could create PETSCII files
90 for 6502tass. (including control characters of course) Using this
91 option will change the default "none" and "screen" encodings to
92 map ´a´-´z´ and ´A´-´Z´ into the correct PETSCII range of $41-$5A
93 and $C1-$DA, which is more suitable for an ASCII editor. It also
94 adds predefined petcat style PETSCII literals to the default en‐
95 codings, and enables Unicode letters in symbol names. For writing
96 sources in UTF-8/UTF-16 encodings this option is required!
97
98 -B, --long-branch
99 Automatic BXX *+5 JMP xxx. Branch too long messages can be annoy‐
100 ing sometimes, usually they'll need to be rewritten to BXX *+5 JMP
101 xxx. 64tass can do this automatically if this option is used. But
102 BRA is not converted.
103
104 -C, --case-sensitive
105 Make all symbols (variables, opcodes, directives, operators, etc.)
106 case sensitive. Otherwise everything is case insensitive by de‐
107 fault.
108
109 -D label=value
110 Defines a label to a value. Same syntax is allowed as in source
111 files. Be careful with string quoting, the shell might eat some of
112 the characters.
113
114 -q, --quiet
115 Suppress messages. Disables header and summary messages.
116
117 -T, --tasm-compatible
118 Enable TASM compatible operators and precedence Switches the ex‐
119 pression evaluator into compatibility mode. This enables ".", ":"
120 and "!" operators and disables 64tass specific extensions, dis‐
121 ables precedence handling and forces 16 bit unsigned evaluation
122 (see "differences to original Turbo Assembler" below)
123
124 -I path
125 Specify include search path. If an included source or binary file
126 can't be found in the directory of the source file then this path
127 is tried. More than one directories can be specified by repeating
128 this option. If multiple matches exist the first one is used.
129
130 -M file, --dependencies file
131 Specify make rule output file. Writes a dependency rule suitable
132 for 'make' from the list of files used during compilation.
133
134 --make-phony
135 Enable phony target generation for dependencies.
136
137 Diagnostic options
138 -E file, --error file
139 Specify error output file. Normally compilation errors a written
140 to the standard error output. It's possible to redirect them to a
141 file or to the standard output by using '-' as the file name.
142
143 --error-append file
144 Append to error file instead of overwriting it.
145
146 --no-error
147 Do not output any errors, just count them.
148
149 -w, --no-warn
150 Suppress warnings. Disables warnings during compile. Finer grained
151 warning control is available by using the -W options.
152
153 --no-caret-diag
154 Suppress displaying of faulty source line and fault position after
155 fault messages.
156
157 --macro-caret-diag
158 Restrict source line and fault position display to macro expan‐
159 sions only.
160
161 -Wall
162 Enable most diagnostic warnings, except those individually dis‐
163 abled. Or with the 'no-' prefix disable all except those enabled.
164
165 -Werror
166 Make all diagnostic warnings to an error, except those individu‐
167 ally set to a warning.
168
169 -Werror=<name>
170 Change a diagnostic warning to an error. For example "-Werror=im‐
171 plied-reg" makes this check an error. The "-Wno-error=" variant is
172 useful with "-Werror" to set some to warnings.
173
174 -Walias
175 Warns about alias opcodes.
176
177 -Waltmode
178 Warn about alternative address modes. Sometimes alternative ad‐
179 dressing modes are used as the fitting one is not available. For
180 example there's no lda direct page y so instead data bank y is
181 used with a warning.
182
183 -Wbranch-page
184 Warns if a branch is crossing a page. Page crossing branches exe‐
185 cute with a penalty cycle. This option helps to locate them.
186
187 -Wcase-symbol
188 Warn if symbol letter case is used inconsistently.
189
190 -Wimmediate
191 Warns for cases where immediate addressing is more likely. -Wim‐
192 plied-reg Warns if implied addressing is used instead of register.
193 Some instructions have implied aliases like 'asl' for 'asl a' for
194 compatibility reasons, but this shorthand not the preferred form.
195
196 -Wleading-zeros
197 Warns if about leading zeros. A leading zero could be a prefix
198 for an octal number but as octals are not supported so the result
199 will be decimal.
200
201 -Wlong-branch
202 Warns when a long branch is used. This option gives a warning for
203 instructions which were modified by the long branch function.
204 Less intrusive than disabling long branches and see where it
205 fails.
206
207 -Wmacro-prefix
208 Warn about macro call without prefix. Such macro calls can easily
209 be mistaken to be labels if invoked without parameters. Also it's
210 hard to notice that an unchanged call turned into label after the
211 definition got renamed. This warning helps to find such calls so
212 that prefixes can be added.
213
214 -Wno-deprecated
215 Don't warn about deprecated features. Unfortunately there were
216 some features added previously which shouldn't have been included.
217 This option disables warnings about their uses.
218
219 -Wno-float-compare
220 Don't warn if floating point comparisons are only approximate.
221 Floating point numbers have a finite precision and comparing them
222 might give unexpected results.
223
224 -Wno-float-round
225 Don't warn when floating point numbers are implicitly rounded. A
226 lot of parameters are expecting integers but floating point num‐
227 bers are accepted as well. The style of rounding used may or may
228 not be what you wanted.
229
230 -Wno-ignored
231 Don't warn about ignored directives.
232
233 -Wno-jmp-bug
234 Don't warn about the jmp ($xxff) bug. It's fine that the high
235 byte is read from the 'wrong' address on 6502, NMOS 6502 and
236 65DTV02.
237
238 -Wno-label-left
239 Don't warn about certain labels not being on left side. You may
240 disable this if you use labels which look like mistyped versions
241 of implied addressing mode instructions and you don't want to put
242 them in the first column.
243
244 -Wno-page
245 Don't do an error for page crossing.
246
247 -Wno-pitfalls
248 Don't note on common pitfalls. Experts don't need notes about how
249 to fix things ;)
250
251 -Wno-portable
252 Don't warn about source portability problems.
253
254 -Wno-size-larger
255 Don't warn if size is larger due to negative offset Negative off‐
256 sets add space in front of memory area that's out of bound. Some‐
257 times this may be fine.
258
259 -Wno-star-assign
260 Don't warn about ignored compound multiply.
261
262 -Wno-wrap-addr
263 Don't warn about address space calculation wrap around. If a mem‐
264 ory location ends up outside of the processors address space then
265 just wrap it around.
266
267 -Wno-wrap-bank0
268 Don't warn for bank 0 address calculation wrap around.
269
270 -Wno-wrap-dpage
271 Don't warn for direct page address calculation wrap around.
272
273 -Wno-wrap-mem
274 Don't warn for compile offset wrap around. Continue from the be‐
275 ginning of image file once it's end was reached.
276
277 -Wno-wrap-pbank
278 Don't warn for program bank address calculation wrap around.
279
280 -Wno-wrap-pc
281 Don't warn for program counter bank crossing. If it's data only
282 and the programmer deals with it then this might be ok.
283
284 -Wold-equal
285 Warn about old equal operator. The single '=' operator is only
286 there for compatibility reasons and should be written as '==' nor‐
287 mally.
288
289 -Woptimize
290 Warn about optimizable code. Warns on things that could be opti‐
291 mized, at least according to the limited analysis done.
292
293 -Wshadow
294 Warn about symbol shadowing. Checks if local variables 'shadow'
295 other variables of same name in upper scopes in ambiguous ways.
296
297 -Wstrict-bool
298 Warn about implicit boolean conversions. Boolean values can be
299 interpreted as numeric 0/1 and other types as booleans. This is
300 convenient but may cause mistakes.
301
302 -Wunused
303 Warn about unused constant symbols, any type.
304
305 -Wunused-const
306 Warn about unused constants.
307
308 -Wunused-label
309 Warn about unused labels.
310
311 -Wunused-macro
312 Warn about unused macros.
313
314 -Wunused-variable
315 Warn about unused variables.
316
317 Target selection options
318 --m65xx
319 Standard 65xx (default). For writing compatible code, no extra
320 codes. This is the default.
321
322 -c, --m65c02
323 CMOS 65C02. Enables extra opcodes and addressing modes specific to
324 this CPU.
325
326 --m65ce02
327 CSG 65CE02. Enables extra opcodes and addressing modes specific to
328 this CPU.
329
330 -i, --m6502
331 NMOS 65xx. Enables extra illegal opcodes. Useful for demo coding
332 for C64, disk drive code, etc.
333
334 -t, --m65dtv02
335 65DTV02. Enables extra opcodes specific to DTV.
336
337 -x, --m65816
338 W65C816. Enables extra opcodes. Useful for SuperCPU projects.
339
340 -e, --m65el02
341 65EL02. Enables extra opcodes, useful RedPower CPU projects. Prob‐
342 ably you'll need "--nostart" as well.
343
344 --mr65c02
345 R65C02. Enables extra opcodes and addressing modes specific to
346 this CPU.
347
348 --mw65c02
349 W65C02. Enables extra opcodes and addressing modes specific to
350 this CPU.
351
352 --m4510
353 CSG 4510. Enables extra opcodes and addressing modes specific to
354 this CPU. Useful for C65 projects.
355
356 Symbol listing options
357 -l file, --labels=file
358 List labels into file. May be used multiple times. The format is
359 remembered but root reverts to global after each file.
360
361 --labels-append=file
362 Append labels to file instead of overwriting it.
363
364 --labels-root=<path>
365 Specify the scope to list labels from.
366
367 --normal-labels
368 Lists labels in a 64tass readable format. (default)
369
370 --export-labels
371 List labels for include in a 64tass readable format. This will al‐
372 ways compile exported .proc/.pend blocks assuming they're needed
373 externally.
374
375 --vice-labels
376 List labels in a VICE readable format.
377
378 --vice-labels-numeric
379 List labels in a VICE readable format, including numeric con‐
380 stants.
381
382 --dump-labels
383 List labels for debugging.
384
385 Assembly listing options
386 -L file, --list=file
387 List into file. Dumps source code and compiled code into file.
388 Useful for debugging, it's much easier to identify the code in
389 memory within the source files.
390
391 -m, --no-monitor
392 Don't put monitor code into listing. There won't be any monitor
393 listing in the list file.
394
395 -s, --no-source
396 Don't put source code into listing. There won't be any source
397 listing in the list file.
398
399 --line-numbers
400 This option creates a new column for showing line numbers for eas‐
401 ier identification of source origin.
402
403 --tab-size=number
404 By default the listing file is using a tab size of 8 to align the
405 disassembly. This can be changed to other more favorable values
406 like 4. Only spaces are used if 1 is selected. Please note that
407 this has no effect on the source code on the right hand side.
408
409 --verbose-list
410 Normally the assembler tries to minimize listing output by omit‐
411 ting "unimportant" lines. But sometimes it's better to just list
412 everything including comments and empty lines.
413
414 Other options
415 -?, --help
416 Give this help list. Prints help about command line options.
417
418 --usage
419 Give a short usage message. Prints short help about command line
420 options.
421
422 -V, --version
423 Print program version.
424
426 Normally the exit status is 0 if no error occured.
427
429 Written by Zsolt Kajtar.
430
432 Online bug tracker: <https://sourceforge.net/p/tass64/bugs/>
433
435 Copyright © 2020 Zsolt Kajtar. License GPLv2+: GNU GPL version 2 or
436 later <http://gnu.org/licenses/gpl.html>.
437 This is free software: you are free to change and redistribute it.
438 There is NO WARRANTY, to the extent permitted by law.
439
441 Full documentation at: <http://tass64.sourceforge.net/>
442
443
444
44564tass 1.56 Apr 25 2021 64tass(1)