comparison docs/manual/x229.html @ 333:507f442dc71e

Add support for 6800 compatibility instructions. The occasional program uses the 6800 compatibility instructions since they are actually specified by Motorola in at least some documentation. They advertised the 6809 as source compatible with the 6800. This mode is not enabled by default, however. It is my belief that receiving an error when using a non-6809 instruction is more useful since it is unlikely that much 6800 source code is being assembled for the 6809 these days. Nevertheless, the --6809compat option is present for just those purposes so one does not have to resort to using macros (which would work equally well in most cases).
author William Astle <lost@l-w.ca>
date Tue, 15 Apr 2014 10:57:34 -0600
parents
children
comparison
equal deleted inserted replaced
332:26bfe8d557e2 333:507f442dc71e
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
2 <HTML
3 ><HEAD
4 ><TITLE
5 >Assembler Directives</TITLE
6 ><META
7 NAME="GENERATOR"
8 CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
9 REL="HOME"
10 TITLE="LW Tool Chain"
11 HREF="index.html"><LINK
12 REL="UP"
13 TITLE="LWASM"
14 HREF="c62.html"><LINK
15 REL="PREVIOUS"
16 TITLE="Numbers and Expressions"
17 HREF="x221.html"><LINK
18 REL="NEXT"
19 TITLE="Macros"
20 HREF="x520.html"></HEAD
21 ><BODY
22 CLASS="SECTION"
23 BGCOLOR="#FFFFFF"
24 TEXT="#000000"
25 LINK="#0000FF"
26 VLINK="#840084"
27 ALINK="#0000FF"
28 ><DIV
29 CLASS="NAVHEADER"
30 ><TABLE
31 SUMMARY="Header navigation table"
32 WIDTH="100%"
33 BORDER="0"
34 CELLPADDING="0"
35 CELLSPACING="0"
36 ><TR
37 ><TH
38 COLSPAN="3"
39 ALIGN="center"
40 >LW Tool Chain</TH
41 ></TR
42 ><TR
43 ><TD
44 WIDTH="10%"
45 ALIGN="left"
46 VALIGN="bottom"
47 ><A
48 HREF="x221.html"
49 ACCESSKEY="P"
50 >Prev</A
51 ></TD
52 ><TD
53 WIDTH="80%"
54 ALIGN="center"
55 VALIGN="bottom"
56 >Chapter 3. LWASM</TD
57 ><TD
58 WIDTH="10%"
59 ALIGN="right"
60 VALIGN="bottom"
61 ><A
62 HREF="x520.html"
63 ACCESSKEY="N"
64 >Next</A
65 ></TD
66 ></TR
67 ></TABLE
68 ><HR
69 ALIGN="LEFT"
70 WIDTH="100%"></DIV
71 ><DIV
72 CLASS="SECTION"
73 ><H1
74 CLASS="SECTION"
75 ><A
76 NAME="AEN229"
77 >3.6. Assembler Directives</A
78 ></H1
79 ><P
80 >Various directives can be used to control the behaviour of the
81 assembler or to include non-code/data in the resulting output. Those directives
82 that are not described in detail in other sections of this document are
83 described below.</P
84 ><DIV
85 CLASS="SECTION"
86 ><H2
87 CLASS="SECTION"
88 ><A
89 NAME="AEN232"
90 >3.6.1. Data Directives</A
91 ></H2
92 ><P
93 ></P
94 ><DIV
95 CLASS="VARIABLELIST"
96 ><DL
97 ><DT
98 >FCB <CODE
99 CLASS="PARAMETER"
100 >expr[,...]</CODE
101 >, .DB <CODE
102 CLASS="PARAMETER"
103 >expr[,...]</CODE
104 >, .BYTE <CODE
105 CLASS="PARAMETER"
106 >expr[,...]</CODE
107 ></DT
108 ><DD
109 ><P
110 >Include one or more constant bytes (separated by commas) in the output.</P
111 ></DD
112 ><DT
113 >FDB <CODE
114 CLASS="PARAMETER"
115 >expr[,...]</CODE
116 >, .DW <CODE
117 CLASS="PARAMETER"
118 >expr[,...]</CODE
119 >, .WORD <CODE
120 CLASS="PARAMETER"
121 >expr[,...]</CODE
122 ></DT
123 ><DD
124 ><P
125 >Include one or more words (separated by commas) in the output.</P
126 ></DD
127 ><DT
128 >FQB <CODE
129 CLASS="PARAMETER"
130 >expr[,...]</CODE
131 >, .QUAD <CODE
132 CLASS="PARAMETER"
133 >expr[,...]</CODE
134 >, .4BYTE <CODE
135 CLASS="PARAMETER"
136 >expr[,...]</CODE
137 ></DT
138 ><DD
139 ><P
140 >Include one or more double words (separated by commas) in the output.</P
141 ></DD
142 ><DT
143 >FCC <CODE
144 CLASS="PARAMETER"
145 >string</CODE
146 >, .ASCII <CODE
147 CLASS="PARAMETER"
148 >string</CODE
149 >, .STR <CODE
150 CLASS="PARAMETER"
151 >string</CODE
152 ></DT
153 ><DD
154 ><P
155 >Include a string of text in the output. The first character of the operand
156 is the delimiter which must appear as the last character and cannot appear
157 within the string. The string is included with no modifications&#62;</P
158 ></DD
159 ><DT
160 >FCN <CODE
161 CLASS="PARAMETER"
162 >string</CODE
163 >, .ASCIZ <CODE
164 CLASS="PARAMETER"
165 >string</CODE
166 >, .STRZ <CODE
167 CLASS="PARAMETER"
168 >string</CODE
169 ></DT
170 ><DD
171 ><P
172 >Include a NUL terminated string of text in the output. The first character of
173 the operand is the delimiter which must appear as the last character and
174 cannot appear within the string. A NUL byte is automatically appended to
175 the string.</P
176 ></DD
177 ><DT
178 >FCS <CODE
179 CLASS="PARAMETER"
180 >string</CODE
181 >, .ASCIS <CODE
182 CLASS="PARAMETER"
183 >string</CODE
184 >, .STRS <CODE
185 CLASS="PARAMETER"
186 >string</CODE
187 ></DT
188 ><DD
189 ><P
190 >Include a string of text in the output with bit 7 of the final byte set. The
191 first character of the operand is the delimiter which must appear as the last
192 character and cannot appear within the string.</P
193 ></DD
194 ><DT
195 >ZMB <CODE
196 CLASS="PARAMETER"
197 >expr</CODE
198 ></DT
199 ><DD
200 ><P
201 >Include a number of NUL bytes in the output. The number must be fully resolvable
202 during pass 1 of assembly so no forward or external references are permitted.</P
203 ></DD
204 ><DT
205 >ZMD <CODE
206 CLASS="PARAMETER"
207 >expr</CODE
208 ></DT
209 ><DD
210 ><P
211 >Include a number of zero words in the output. The number must be fully
212 resolvable during pass 1 of assembly so no forward or external references are
213 permitted.</P
214 ></DD
215 ><DT
216 >ZMQ <CODE
217 CLASS="PARAMETER"
218 >expr<CODE
219 CLASS="PARAMETER"
220 ></CODE
221 ></CODE
222 ></DT
223 ><DD
224 ><P
225 >Include a number of zero double-words in the output. The number must be fully
226 resolvable during pass 1 of assembly so no forward or external references are
227 permitted.</P
228 ></DD
229 ><DT
230 >RMB <CODE
231 CLASS="PARAMETER"
232 >expr</CODE
233 >, .BLKB <CODE
234 CLASS="PARAMETER"
235 >expr</CODE
236 >, .DS <CODE
237 CLASS="PARAMETER"
238 >expr</CODE
239 >, .RS <CODE
240 CLASS="PARAMETER"
241 >expr</CODE
242 ></DT
243 ><DD
244 ><P
245 >Reserve a number of bytes in the output. The number must be fully resolvable
246 during pass 1 of assembly so no forward or external references are permitted.
247 The value of the bytes is undefined.</P
248 ></DD
249 ><DT
250 >RMD <CODE
251 CLASS="PARAMETER"
252 >expr</CODE
253 ></DT
254 ><DD
255 ><P
256 >Reserve a number of words in the output. The number must be fully
257 resolvable during pass 1 of assembly so no forward or external references are
258 permitted. The value of the words is undefined.</P
259 ></DD
260 ><DT
261 >RMQ <CODE
262 CLASS="PARAMETER"
263 >expr</CODE
264 ></DT
265 ><DD
266 ><P
267 >Reserve a number of double-words in the output. The number must be fully
268 resolvable during pass 1 of assembly so no forward or external references are
269 permitted. The value of the double-words is undefined.</P
270 ></DD
271 ><DT
272 >INCLUDEBIN <CODE
273 CLASS="PARAMETER"
274 >filename</CODE
275 ></DT
276 ><DD
277 ><P
278 >Treat the contents of <CODE
279 CLASS="PARAMETER"
280 >filename</CODE
281 > as a string of bytes to
282 be included literally at the current assembly point. This has the same effect
283 as converting the file contents to a series of FCB statements and including
284 those at the current assembly point.</P
285 ><P
286 > If <CODE
287 CLASS="PARAMETER"
288 >filename</CODE
289 > beings with a /, the file name
290 will be taken as absolute. Otherwise, the current directory will be
291 searched followed by the search path in the order specified.</P
292 ><P
293 > Please note that absolute path detection including drive letters will
294 not function correctly on Windows platforms. Non-absolute inclusion will
295 work, however.</P
296 ></DD
297 ><DT
298 >FILL <CODE
299 CLASS="PARAMETER"
300 >size</CODE
301 >,<CODE
302 CLASS="PARAMETER"
303 >byte</CODE
304 ></DT
305 ><DD
306 ><P
307 >Insert <CODE
308 CLASS="PARAMETER"
309 >size</CODE
310 > bytes of <CODE
311 CLASS="PARAMETER"
312 >byte</CODE
313 >.</P
314 ></DD
315 ></DL
316 ></DIV
317 ></DIV
318 ><DIV
319 CLASS="SECTION"
320 ><H2
321 CLASS="SECTION"
322 ><A
323 NAME="AEN343"
324 >3.6.2. Address Definition</A
325 ></H2
326 ><P
327 >The directives in this section all control the addresses of symbols
328 or the assembly process itself.</P
329 ><P
330 ></P
331 ><DIV
332 CLASS="VARIABLELIST"
333 ><DL
334 ><DT
335 >ORG <CODE
336 CLASS="PARAMETER"
337 >expr</CODE
338 ></DT
339 ><DD
340 ><P
341 >Set the assembly address. The address must be fully resolvable on the
342 first pass so no external or forward references are permitted. ORG is not
343 permitted within sections when outputting to object files. For target formats
344 that include address information (decb, hex, srec, and ihex), an ORG
345 directive will re-start the address sequence within the output. When using
346 the raw target format, ORG is used only to determine the addresses of symbols.</P
347 ></DD
348 ><DT
349 ><CODE
350 CLASS="PARAMETER"
351 >sym</CODE
352 > EQU <CODE
353 CLASS="PARAMETER"
354 >expr</CODE
355 >, <CODE
356 CLASS="PARAMETER"
357 >sym</CODE
358 > = <CODE
359 CLASS="PARAMETER"
360 >expr</CODE
361 ></DT
362 ><DD
363 ><P
364 >Define the value of <CODE
365 CLASS="PARAMETER"
366 >sym</CODE
367 > to be <CODE
368 CLASS="PARAMETER"
369 >expr</CODE
370 >.</P
371 ></DD
372 ><DT
373 ><CODE
374 CLASS="PARAMETER"
375 >sym</CODE
376 > SET <CODE
377 CLASS="PARAMETER"
378 >expr</CODE
379 ></DT
380 ><DD
381 ><P
382 >Define the value of <CODE
383 CLASS="PARAMETER"
384 >sym</CODE
385 > to be <CODE
386 CLASS="PARAMETER"
387 >expr</CODE
388 >.
389 Unlike EQU, SET permits symbols to be defined multiple times as long as SET
390 is used for all instances. Use of the symbol before the first SET statement
391 that sets its value is undefined.</P
392 ></DD
393 ><DT
394 >SETDP <CODE
395 CLASS="PARAMETER"
396 >expr</CODE
397 ></DT
398 ><DD
399 ><P
400 >Inform the assembler that it can assume the DP register contains
401 <CODE
402 CLASS="PARAMETER"
403 >expr</CODE
404 >. This directive is only advice to the assembler
405 to determine whether an address is in the direct page and has no effect
406 on the contents of the DP register. The value must be fully resolved during
407 the first assembly pass because it affects the sizes of subsequent instructions.</P
408 ><P
409 >This directive has no effect in the object file target.</P
410 ></DD
411 ><DT
412 >ALIGN <CODE
413 CLASS="PARAMETER"
414 >expr</CODE
415 >[,<CODE
416 CLASS="PARAMETER"
417 >value</CODE
418 >]</DT
419 ><DD
420 ><P
421 >Force the current assembly address to be a multiple of
422 <CODE
423 CLASS="PARAMETER"
424 >expr</CODE
425 >. If <CODE
426 CLASS="PARAMETER"
427 >value</CODE
428 > is not
429 specified, a series of NUL bytes is output to force the alignment, if
430 required. Otherwise, the low order 8 bits of <CODE
431 CLASS="PARAMETER"
432 >value</CODE
433 >
434 will be used as the fill. The alignment value must be fully resolved on the
435 first pass because it affects the addresses of subsquent instructions.
436 However, <CODE
437 CLASS="PARAMETER"
438 >value</CODE
439 > may include forward references; as
440 long as it resolves to a constant for the second pass, the value will be
441 accepted.</P
442 ><P
443 >Unless <CODE
444 CLASS="PARAMETER"
445 >value</CODE
446 > is specified as something like $12,
447 this directive is not suitable for inclusion in the middle of actual code.
448 The default padding value is $00 which is intended to be used within data
449 blocks. </P
450 ></DD
451 ></DL
452 ></DIV
453 ></DIV
454 ><DIV
455 CLASS="SECTION"
456 ><H2
457 CLASS="SECTION"
458 ><A
459 NAME="AEN390"
460 >3.6.3. Conditional Assembly</A
461 ></H2
462 ><P
463 >Portions of the source code can be excluded or included based on conditions
464 known at assembly time. Conditionals can be nested arbitrarily deeply. The
465 directives associated with conditional assembly are described in this section.</P
466 ><P
467 >All conditionals must be fully bracketed. That is, every conditional
468 statement must eventually be followed by an ENDC at the same level of nesting.</P
469 ><P
470 >Conditional expressions are only evaluated on the first assembly pass.
471 It is not possible to game the assembly process by having a conditional
472 change its value between assembly passes. Due to the underlying architecture
473 of LWASM, there is no possible utility to IFP1 and IFP2, nor can they, as of LWASM 3.0, actually
474 be implemented meaningfully. Thus there is not and never will
475 be any equivalent of IFP1 or IFP2 as provided by other assemblers. Use of those opcodes
476 will throw a warning and be ignored.</P
477 ><P
478 >It is important to note that if a conditional does not resolve to a constant
479 during the first parsing pass, an error will be thrown. This is unavoidable because the assembler
480 must make a decision about which source to include and which source to exclude at this stage.
481 Thus, expressions that work normally elsewhere will not work for conditions.</P
482 ><P
483 ></P
484 ><DIV
485 CLASS="VARIABLELIST"
486 ><DL
487 ><DT
488 >IFEQ <CODE
489 CLASS="PARAMETER"
490 >expr</CODE
491 ></DT
492 ><DD
493 ><P
494 >If <CODE
495 CLASS="PARAMETER"
496 >expr</CODE
497 > evaluates to zero, the conditional
498 will be considered true.</P
499 ></DD
500 ><DT
501 >IFNE <CODE
502 CLASS="PARAMETER"
503 >expr</CODE
504 >, IF <CODE
505 CLASS="PARAMETER"
506 >expr</CODE
507 ></DT
508 ><DD
509 ><P
510 >If <CODE
511 CLASS="PARAMETER"
512 >expr</CODE
513 > evaluates to a non-zero value, the conditional
514 will be considered true.</P
515 ></DD
516 ><DT
517 >IFGT <CODE
518 CLASS="PARAMETER"
519 >expr</CODE
520 ></DT
521 ><DD
522 ><P
523 >If <CODE
524 CLASS="PARAMETER"
525 >expr</CODE
526 > evaluates to a value greater than zero, the conditional
527 will be considered true.</P
528 ></DD
529 ><DT
530 >IFGE <CODE
531 CLASS="PARAMETER"
532 >expr</CODE
533 ></DT
534 ><DD
535 ><P
536 >If <CODE
537 CLASS="PARAMETER"
538 >expr</CODE
539 > evaluates to a value greater than or equal to zero, the conditional
540 will be considered true.</P
541 ></DD
542 ><DT
543 >IFLT <CODE
544 CLASS="PARAMETER"
545 >expr</CODE
546 ></DT
547 ><DD
548 ><P
549 >If <CODE
550 CLASS="PARAMETER"
551 >expr</CODE
552 > evaluates to a value less than zero, the conditional
553 will be considered true.</P
554 ></DD
555 ><DT
556 >IFLE <CODE
557 CLASS="PARAMETER"
558 >expr</CODE
559 ></DT
560 ><DD
561 ><P
562 >If <CODE
563 CLASS="PARAMETER"
564 >expr</CODE
565 > evaluates to a value less than or equal to zero , the conditional
566 will be considered true.</P
567 ></DD
568 ><DT
569 >IFDEF <CODE
570 CLASS="PARAMETER"
571 >sym</CODE
572 ></DT
573 ><DD
574 ><P
575 >If <CODE
576 CLASS="PARAMETER"
577 >sym</CODE
578 > is defined at this point in the assembly
579 process, the conditional
580 will be considered true.</P
581 ></DD
582 ><DT
583 >IFNDEF <CODE
584 CLASS="PARAMETER"
585 >sym</CODE
586 ></DT
587 ><DD
588 ><P
589 >If <CODE
590 CLASS="PARAMETER"
591 >sym</CODE
592 > is not defined at this point in the assembly
593 process, the conditional
594 will be considered true.</P
595 ></DD
596 ><DT
597 >ELSE</DT
598 ><DD
599 ><P
600 >If the preceding conditional at the same level of nesting was false, the
601 statements following will be assembled. If the preceding conditional at
602 the same level was true, the statements following will not be assembled.
603 Note that the preceding conditional might have been another ELSE statement
604 although this behaviour is not guaranteed to be supported in future versions
605 of LWASM.</P
606 ></DD
607 ><DT
608 >ENDC</DT
609 ><DD
610 ><P
611 >This directive marks the end of a conditional construct. Every conditional
612 construct must end with an ENDC directive.</P
613 ></DD
614 ></DL
615 ></DIV
616 ></DIV
617 ><DIV
618 CLASS="SECTION"
619 ><H2
620 CLASS="SECTION"
621 ><A
622 NAME="AEN455"
623 >3.6.4. OS9 Target Directives</A
624 ></H2
625 ><P
626 >This section includes directives that apply solely to the OS9
627 target.</P
628 ><P
629 ></P
630 ><DIV
631 CLASS="VARIABLELIST"
632 ><DL
633 ><DT
634 >OS9 <CODE
635 CLASS="PARAMETER"
636 >syscall</CODE
637 ></DT
638 ><DD
639 ><P
640 >&#13;This directive generates a call to the specified system call. <CODE
641 CLASS="PARAMETER"
642 >syscall</CODE
643 > may be an arbitrary expression.&#13;</P
644 ></DD
645 ><DT
646 >MOD <CODE
647 CLASS="PARAMETER"
648 >size</CODE
649 >,<CODE
650 CLASS="PARAMETER"
651 >name</CODE
652 >,<CODE
653 CLASS="PARAMETER"
654 >type</CODE
655 >,<CODE
656 CLASS="PARAMETER"
657 >flags</CODE
658 >,<CODE
659 CLASS="PARAMETER"
660 >execoff</CODE
661 >,<CODE
662 CLASS="PARAMETER"
663 >datasize</CODE
664 ></DT
665 ><DD
666 ><P
667 >&#13;This tells LWASM that the beginning of the actual module is here. It will
668 generate a module header based on the parameters specified. It will also
669 begin calcuating the module CRC.&#13;</P
670 ><P
671 >&#13;The precise meaning of the various parameters is beyond the scope of this
672 document since it is not a tutorial on OS9 module programming.&#13;</P
673 ></DD
674 ><DT
675 >EMOD</DT
676 ><DD
677 ><P
678 >&#13;This marks the end of a module and causes LWASM to emit the calculated CRC
679 for the module.&#13;</P
680 ></DD
681 ></DL
682 ></DIV
683 ></DIV
684 ><DIV
685 CLASS="SECTION"
686 ><H2
687 CLASS="SECTION"
688 ><A
689 NAME="AEN480"
690 >3.6.5. Miscelaneous Directives</A
691 ></H2
692 ><P
693 >This section includes directives that do not fit into the other
694 categories.</P
695 ><P
696 ></P
697 ><DIV
698 CLASS="VARIABLELIST"
699 ><DL
700 ><DT
701 >INCLUDE <CODE
702 CLASS="PARAMETER"
703 >filename</CODE
704 >, USE <CODE
705 CLASS="PARAMETER"
706 >filename</CODE
707 ></DT
708 ><DD
709 ><P
710 > Include the contents of <CODE
711 CLASS="PARAMETER"
712 >filename</CODE
713 > at
714 this point in the assembly as though it were a part of the file currently
715 being processed. Note that if whitespace appears in the name of the file,
716 you must enclose <CODE
717 CLASS="PARAMETER"
718 >filename</CODE
719 > in quotes.</P
720 ><P
721 >Note that the USE variation is provided only for compatibility with other
722 assemblers. It is recommended to use the INCLUDE variation.</P
723 ><P
724 >If <CODE
725 CLASS="PARAMETER"
726 >filename</CODE
727 > begins with a &quot;/&quot;, it is
728 interpreted as an absolute path. If it does not, the search path will be used
729 to find the file. First, the directory containing the file that contains this
730 directive. (Includes within an included file are relative to the included file,
731 not the file that included it.) If the file is not found there, the include path
732 is searched. If it is still not found, an error will be thrown. Note that the
733 current directory as understood by your shell or operating system is not searched.</P
734 ></DD
735 ><DT
736 >END <CODE
737 CLASS="PARAMETER"
738 >[expr]</CODE
739 ></DT
740 ><DD
741 ><P
742 >This directive causes the assembler to stop assembling immediately as though
743 it ran out of input. For the DECB target only, <CODE
744 CLASS="PARAMETER"
745 >expr</CODE
746 >
747 can be used to set the execution address of the resulting binary. For all
748 other targets, specifying <CODE
749 CLASS="PARAMETER"
750 >expr</CODE
751 > will cause an error.</P
752 ></DD
753 ><DT
754 >ERROR <CODE
755 CLASS="PARAMETER"
756 >string</CODE
757 ></DT
758 ><DD
759 ><P
760 >Causes a custom error message to be printed at this line. This will cause
761 assembly to fail. This directive is most useful inside conditional constructs
762 to cause assembly to fail if some condition that is known bad happens. Everything
763 from the directive to the end of the line is considered the error message.</P
764 ></DD
765 ><DT
766 >WARNING <CODE
767 CLASS="PARAMETER"
768 >string</CODE
769 ></DT
770 ><DD
771 ><P
772 >Causes a custom warning message to be printed at this line. This will not cause
773 assembly to fail. This directive is most useful inside conditional constructs
774 or include files to alert the programmer to a deprecated feature being used
775 or some other condition that may cause trouble later, but which may, in fact,
776 not cause any trouble.</P
777 ></DD
778 ><DT
779 >.MODULE <CODE
780 CLASS="PARAMETER"
781 >string</CODE
782 ></DT
783 ><DD
784 ><P
785 >This directive is ignored for most output targets. If the output target
786 supports encoding a module name into it, <CODE
787 CLASS="PARAMETER"
788 >string</CODE
789 >
790 will be used as the module name.</P
791 ><P
792 >As of version 3.0, no supported output targets support this directive.</P
793 ></DD
794 ></DL
795 ></DIV
796 ></DIV
797 ></DIV
798 ><DIV
799 CLASS="NAVFOOTER"
800 ><HR
801 ALIGN="LEFT"
802 WIDTH="100%"><TABLE
803 SUMMARY="Footer navigation table"
804 WIDTH="100%"
805 BORDER="0"
806 CELLPADDING="0"
807 CELLSPACING="0"
808 ><TR
809 ><TD
810 WIDTH="33%"
811 ALIGN="left"
812 VALIGN="top"
813 ><A
814 HREF="x221.html"
815 ACCESSKEY="P"
816 >Prev</A
817 ></TD
818 ><TD
819 WIDTH="34%"
820 ALIGN="center"
821 VALIGN="top"
822 ><A
823 HREF="index.html"
824 ACCESSKEY="H"
825 >Home</A
826 ></TD
827 ><TD
828 WIDTH="33%"
829 ALIGN="right"
830 VALIGN="top"
831 ><A
832 HREF="x520.html"
833 ACCESSKEY="N"
834 >Next</A
835 ></TD
836 ></TR
837 ><TR
838 ><TD
839 WIDTH="33%"
840 ALIGN="left"
841 VALIGN="top"
842 >Numbers and Expressions</TD
843 ><TD
844 WIDTH="34%"
845 ALIGN="center"
846 VALIGN="top"
847 ><A
848 HREF="c62.html"
849 ACCESSKEY="U"
850 >Up</A
851 ></TD
852 ><TD
853 WIDTH="33%"
854 ALIGN="right"
855 VALIGN="top"
856 >Macros</TD
857 ></TR
858 ></TABLE
859 ></DIV
860 ></BODY
861 ></HTML
862 >