comparison docs/manual/x261.html @ 489:52af0aa54fe5

Update html and pdf documentation in preparation for release
author William Astle <lost@l-w.ca>
date Fri, 03 May 2019 20:06:17 -0600
parents
children fc072f6cde09
comparison
equal deleted inserted replaced
488:94bbdb2890b7 489:52af0aa54fe5
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="x253.html"><LINK
18 REL="NEXT"
19 TITLE="Macros"
20 HREF="x562.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="x253.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="x562.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="AEN261"
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="AEN264"
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 >byte</CODE
301 >,<CODE
302 CLASS="PARAMETER"
303 >size</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="AEN375"
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 >REORG</DT
350 ><DD
351 ><P
352 >Sets the assembly address to the value it had immediately prior to the
353 previous ORG statement. It is used to continue assembly after some
354 specification that required an additional ORG. This directive is primarily
355 intended for MACRO-80c compatibility. Consider using alternatives in
356 modern code.</P
357 ></DD
358 ><DT
359 ><CODE
360 CLASS="PARAMETER"
361 >sym</CODE
362 > EQU <CODE
363 CLASS="PARAMETER"
364 >expr</CODE
365 >, <CODE
366 CLASS="PARAMETER"
367 >sym</CODE
368 > = <CODE
369 CLASS="PARAMETER"
370 >expr</CODE
371 ></DT
372 ><DD
373 ><P
374 >Define the value of <CODE
375 CLASS="PARAMETER"
376 >sym</CODE
377 > to be <CODE
378 CLASS="PARAMETER"
379 >expr</CODE
380 >.</P
381 ></DD
382 ><DT
383 ><CODE
384 CLASS="PARAMETER"
385 >sym</CODE
386 > SET <CODE
387 CLASS="PARAMETER"
388 >expr</CODE
389 ></DT
390 ><DD
391 ><P
392 >Define the value of <CODE
393 CLASS="PARAMETER"
394 >sym</CODE
395 > to be <CODE
396 CLASS="PARAMETER"
397 >expr</CODE
398 >.
399 Unlike EQU, SET permits symbols to be defined multiple times as long as SET
400 is used for all instances. Use of the symbol before the first SET statement
401 that sets its value is undefined.</P
402 ></DD
403 ><DT
404 >SETDP <CODE
405 CLASS="PARAMETER"
406 >expr</CODE
407 ></DT
408 ><DD
409 ><P
410 >Inform the assembler that it can assume the DP register contains
411 <CODE
412 CLASS="PARAMETER"
413 >expr</CODE
414 >. This directive is only advice to the assembler
415 to determine whether an address is in the direct page and has no effect
416 on the contents of the DP register. The value must be fully resolved during
417 the first assembly pass because it affects the sizes of subsequent instructions.</P
418 ><P
419 >This directive has no effect in the object file target.</P
420 ></DD
421 ><DT
422 >ALIGN <CODE
423 CLASS="PARAMETER"
424 >expr</CODE
425 >[,<CODE
426 CLASS="PARAMETER"
427 >value</CODE
428 >]</DT
429 ><DD
430 ><P
431 >Force the current assembly address to be a multiple of
432 <CODE
433 CLASS="PARAMETER"
434 >expr</CODE
435 >. If <CODE
436 CLASS="PARAMETER"
437 >value</CODE
438 > is not
439 specified, a series of NUL bytes is output to force the alignment, if
440 required. Otherwise, the low order 8 bits of <CODE
441 CLASS="PARAMETER"
442 >value</CODE
443 >
444 will be used as the fill. The alignment value must be fully resolved on the
445 first pass because it affects the addresses of subsquent instructions.
446 However, <CODE
447 CLASS="PARAMETER"
448 >value</CODE
449 > may include forward references; as
450 long as it resolves to a constant for the second pass, the value will be
451 accepted.</P
452 ><P
453 >Unless <CODE
454 CLASS="PARAMETER"
455 >value</CODE
456 > is specified as something like $12,
457 this directive is not suitable for inclusion in the middle of actual code.
458 The default padding value is $00 which is intended to be used within data
459 blocks. </P
460 ></DD
461 ></DL
462 ></DIV
463 ></DIV
464 ><DIV
465 CLASS="SECTION"
466 ><H2
467 CLASS="SECTION"
468 ><A
469 NAME="AEN426"
470 >3.6.3. Conditional Assembly</A
471 ></H2
472 ><P
473 >Portions of the source code can be excluded or included based on conditions
474 known at assembly time. Conditionals can be nested arbitrarily deeply. The
475 directives associated with conditional assembly are described in this section.</P
476 ><P
477 >All conditionals must be fully bracketed. That is, every conditional
478 statement must eventually be followed by an ENDC at the same level of nesting.</P
479 ><P
480 >Conditional expressions are only evaluated on the first assembly pass.
481 It is not possible to game the assembly process by having a conditional
482 change its value between assembly passes. Due to the underlying architecture
483 of LWASM, there is no possible utility to IFP1 and IFP2, nor can they, as of LWASM 3.0, actually
484 be implemented meaningfully. Thus there is not and never will
485 be any equivalent of IFP1 or IFP2 as provided by other assemblers. Use of those opcodes
486 will throw a warning and be ignored.</P
487 ><P
488 >It is important to note that if a conditional does not resolve to a constant
489 during the first parsing pass, an error will be thrown. This is unavoidable because the assembler
490 must make a decision about which source to include and which source to exclude at this stage.
491 Thus, expressions that work normally elsewhere will not work for conditions.</P
492 ><P
493 ></P
494 ><DIV
495 CLASS="VARIABLELIST"
496 ><DL
497 ><DT
498 >IFEQ <CODE
499 CLASS="PARAMETER"
500 >expr</CODE
501 ></DT
502 ><DD
503 ><P
504 >If <CODE
505 CLASS="PARAMETER"
506 >expr</CODE
507 > evaluates to zero, the conditional
508 will be considered true.</P
509 ></DD
510 ><DT
511 >IFNE <CODE
512 CLASS="PARAMETER"
513 >expr</CODE
514 >, IF <CODE
515 CLASS="PARAMETER"
516 >expr</CODE
517 ></DT
518 ><DD
519 ><P
520 >If <CODE
521 CLASS="PARAMETER"
522 >expr</CODE
523 > evaluates to a non-zero value, the conditional
524 will be considered true.</P
525 ></DD
526 ><DT
527 >IFGT <CODE
528 CLASS="PARAMETER"
529 >expr</CODE
530 ></DT
531 ><DD
532 ><P
533 >If <CODE
534 CLASS="PARAMETER"
535 >expr</CODE
536 > evaluates to a value greater than zero, the conditional
537 will be considered true.</P
538 ></DD
539 ><DT
540 >IFGE <CODE
541 CLASS="PARAMETER"
542 >expr</CODE
543 ></DT
544 ><DD
545 ><P
546 >If <CODE
547 CLASS="PARAMETER"
548 >expr</CODE
549 > evaluates to a value greater than or equal to zero, the conditional
550 will be considered true.</P
551 ></DD
552 ><DT
553 >IFLT <CODE
554 CLASS="PARAMETER"
555 >expr</CODE
556 ></DT
557 ><DD
558 ><P
559 >If <CODE
560 CLASS="PARAMETER"
561 >expr</CODE
562 > evaluates to a value less than zero, the conditional
563 will be considered true.</P
564 ></DD
565 ><DT
566 >IFLE <CODE
567 CLASS="PARAMETER"
568 >expr</CODE
569 ></DT
570 ><DD
571 ><P
572 >If <CODE
573 CLASS="PARAMETER"
574 >expr</CODE
575 > evaluates to a value less than or equal to zero , the conditional
576 will be considered true.</P
577 ></DD
578 ><DT
579 >IFDEF <CODE
580 CLASS="PARAMETER"
581 >sym</CODE
582 ></DT
583 ><DD
584 ><P
585 >If <CODE
586 CLASS="PARAMETER"
587 >sym</CODE
588 > is defined at this point in the assembly
589 process, the conditional
590 will be considered true.</P
591 ></DD
592 ><DT
593 >IFPRAGMA <CODE
594 CLASS="PARAMETER"
595 >pragma</CODE
596 ></DT
597 ><DD
598 ><P
599 >If <CODE
600 CLASS="PARAMETER"
601 >pragma</CODE
602 > is in effect, the condition will be considered true.</P
603 ></DD
604 ><DT
605 >IFNDEF <CODE
606 CLASS="PARAMETER"
607 >sym</CODE
608 ></DT
609 ><DD
610 ><P
611 >If <CODE
612 CLASS="PARAMETER"
613 >sym</CODE
614 > is not defined at this point in the assembly
615 process, the conditional
616 will be considered true.</P
617 ></DD
618 ><DT
619 >ELSE</DT
620 ><DD
621 ><P
622 >If the preceding conditional at the same level of nesting was false, the
623 statements following will be assembled. If the preceding conditional at
624 the same level was true, the statements following will not be assembled.
625 Note that the preceding conditional might have been another ELSE statement
626 although this behaviour is not guaranteed to be supported in future versions
627 of LWASM.</P
628 ></DD
629 ><DT
630 >ENDC</DT
631 ><DD
632 ><P
633 >This directive marks the end of a conditional construct. Every conditional
634 construct must end with an ENDC directive.</P
635 ></DD
636 ></DL
637 ></DIV
638 ></DIV
639 ><DIV
640 CLASS="SECTION"
641 ><H2
642 CLASS="SECTION"
643 ><A
644 NAME="AEN497"
645 >3.6.4. OS9 Target Directives</A
646 ></H2
647 ><P
648 >This section includes directives that apply solely to the OS9
649 target.</P
650 ><P
651 ></P
652 ><DIV
653 CLASS="VARIABLELIST"
654 ><DL
655 ><DT
656 >OS9 <CODE
657 CLASS="PARAMETER"
658 >syscall</CODE
659 ></DT
660 ><DD
661 ><P
662 >&#13;This directive generates a call to the specified system call. <CODE
663 CLASS="PARAMETER"
664 >syscall</CODE
665 > may be an arbitrary expression.&#13;</P
666 ></DD
667 ><DT
668 >MOD <CODE
669 CLASS="PARAMETER"
670 >size</CODE
671 >,<CODE
672 CLASS="PARAMETER"
673 >name</CODE
674 >,<CODE
675 CLASS="PARAMETER"
676 >type</CODE
677 >,<CODE
678 CLASS="PARAMETER"
679 >flags</CODE
680 >,<CODE
681 CLASS="PARAMETER"
682 >execoff</CODE
683 >,<CODE
684 CLASS="PARAMETER"
685 >datasize</CODE
686 ></DT
687 ><DD
688 ><P
689 >&#13;This tells LWASM that the beginning of the actual module is here. It will
690 generate a module header based on the parameters specified. It will also
691 begin calcuating the module CRC.&#13;</P
692 ><P
693 >&#13;The precise meaning of the various parameters is beyond the scope of this
694 document since it is not a tutorial on OS9 module programming.&#13;</P
695 ></DD
696 ><DT
697 >EMOD</DT
698 ><DD
699 ><P
700 >&#13;This marks the end of a module and causes LWASM to emit the calculated CRC
701 for the module.&#13;</P
702 ></DD
703 ></DL
704 ></DIV
705 ></DIV
706 ><DIV
707 CLASS="SECTION"
708 ><H2
709 CLASS="SECTION"
710 ><A
711 NAME="AEN522"
712 >3.6.5. Miscelaneous Directives</A
713 ></H2
714 ><P
715 >This section includes directives that do not fit into the other
716 categories.</P
717 ><P
718 ></P
719 ><DIV
720 CLASS="VARIABLELIST"
721 ><DL
722 ><DT
723 >INCLUDE <CODE
724 CLASS="PARAMETER"
725 >filename</CODE
726 >, USE <CODE
727 CLASS="PARAMETER"
728 >filename</CODE
729 ></DT
730 ><DD
731 ><P
732 > Include the contents of <CODE
733 CLASS="PARAMETER"
734 >filename</CODE
735 > at
736 this point in the assembly as though it were a part of the file currently
737 being processed. Note that if whitespace appears in the name of the file,
738 you must enclose <CODE
739 CLASS="PARAMETER"
740 >filename</CODE
741 > in quotes.</P
742 ><P
743 >Note that the USE variation is provided only for compatibility with other
744 assemblers. It is recommended to use the INCLUDE variation.</P
745 ><P
746 >If <CODE
747 CLASS="PARAMETER"
748 >filename</CODE
749 > begins with a &quot;/&quot;, it is
750 interpreted as an absolute path. If it does not, the search path will be used
751 to find the file. First, the directory containing the file that contains this
752 directive. (Includes within an included file are relative to the included file,
753 not the file that included it.) If the file is not found there, the include path
754 is searched. If it is still not found, an error will be thrown. Note that the
755 current directory as understood by your shell or operating system is not searched.</P
756 ></DD
757 ><DT
758 >END <CODE
759 CLASS="PARAMETER"
760 >[expr]</CODE
761 ></DT
762 ><DD
763 ><P
764 >This directive causes the assembler to stop assembling immediately as though
765 it ran out of input. For the DECB target only, <CODE
766 CLASS="PARAMETER"
767 >expr</CODE
768 >
769 can be used to set the execution address of the resulting binary. For all
770 other targets, specifying <CODE
771 CLASS="PARAMETER"
772 >expr</CODE
773 > will cause an error.</P
774 ></DD
775 ><DT
776 >ERROR <CODE
777 CLASS="PARAMETER"
778 >string</CODE
779 ></DT
780 ><DD
781 ><P
782 >Causes a custom error message to be printed at this line. This will cause
783 assembly to fail. This directive is most useful inside conditional constructs
784 to cause assembly to fail if some condition that is known bad happens. Everything
785 from the directive to the end of the line is considered the error message.</P
786 ></DD
787 ><DT
788 >WARNING <CODE
789 CLASS="PARAMETER"
790 >string</CODE
791 ></DT
792 ><DD
793 ><P
794 >Causes a custom warning message to be printed at this line. This will not cause
795 assembly to fail. This directive is most useful inside conditional constructs
796 or include files to alert the programmer to a deprecated feature being used
797 or some other condition that may cause trouble later, but which may, in fact,
798 not cause any trouble.</P
799 ></DD
800 ><DT
801 >.MODULE <CODE
802 CLASS="PARAMETER"
803 >string</CODE
804 ></DT
805 ><DD
806 ><P
807 >This directive is ignored for most output targets. If the output target
808 supports encoding a module name into it, <CODE
809 CLASS="PARAMETER"
810 >string</CODE
811 >
812 will be used as the module name.</P
813 ><P
814 >As of version 3.0, no supported output targets support this directive.</P
815 ></DD
816 ></DL
817 ></DIV
818 ></DIV
819 ></DIV
820 ><DIV
821 CLASS="NAVFOOTER"
822 ><HR
823 ALIGN="LEFT"
824 WIDTH="100%"><TABLE
825 SUMMARY="Footer navigation table"
826 WIDTH="100%"
827 BORDER="0"
828 CELLPADDING="0"
829 CELLSPACING="0"
830 ><TR
831 ><TD
832 WIDTH="33%"
833 ALIGN="left"
834 VALIGN="top"
835 ><A
836 HREF="x253.html"
837 ACCESSKEY="P"
838 >Prev</A
839 ></TD
840 ><TD
841 WIDTH="34%"
842 ALIGN="center"
843 VALIGN="top"
844 ><A
845 HREF="index.html"
846 ACCESSKEY="H"
847 >Home</A
848 ></TD
849 ><TD
850 WIDTH="33%"
851 ALIGN="right"
852 VALIGN="top"
853 ><A
854 HREF="x562.html"
855 ACCESSKEY="N"
856 >Next</A
857 ></TD
858 ></TR
859 ><TR
860 ><TD
861 WIDTH="33%"
862 ALIGN="left"
863 VALIGN="top"
864 >Numbers and Expressions</TD
865 ><TD
866 WIDTH="34%"
867 ALIGN="center"
868 VALIGN="top"
869 ><A
870 HREF="c62.html"
871 ACCESSKEY="U"
872 >Up</A
873 ></TD
874 ><TD
875 WIDTH="33%"
876 ALIGN="right"
877 VALIGN="top"
878 >Macros</TD
879 ></TR
880 ></TABLE
881 ></DIV
882 ></BODY
883 ></HTML
884 >