OSDN Git Service

a5e1a0968b75cd03c9ae34fe3288806890cdb1ca
[fast-forth/master.git] / inc / ThingsInFirst.inc
1 ; ThingsInFirst.inc
2
3     .cpu MSP430X    ; define CPU
4
5 BIT0        .equ 1
6 BIT1        .equ 2
7 BIT2        .equ 4
8 BIT3        .equ 8
9 BIT4        .equ 16
10 BIT5        .equ 32
11 BIT6        .equ 64
12 BIT7        .equ 128
13 BIT8        .equ 256
14 BIT9        .equ 512
15 BIT10       .equ 1024
16 BIT11       .equ 2048
17 BIT12       .equ 4096
18 BIT13       .equ 8192
19 BIT14       .equ 16384
20 BIT15       .equ 32768
21
22 ; ----------------------------------------------
23 ; MACROS FOR assembly instructions
24 ; ----------------------------------------------
25 NOP         .macro      ; 1 word, 1 cycle    
26             .word 4303h ; mov #0, r3         
27             .endm
28
29 NOP2        .macro      ; 1 Word, 2 cycles
30             .word 3C00h ; jmp $+2
31             .endm
32
33 NOP3        .macro      ; 1 Word, 3 cycles
34             .word 4000h ; MOV PC,PC
35             .endm
36
37 ; SR(11:0) bits are saved by interrupts and restored by the instruction RETI
38 C           .equ 0001h
39 Z           .equ 0002h
40 N           .equ 0004h
41 GIE         .equ 0008h
42 CPUOFF      .equ 0010h ; CPU Off.                  1=turn_off_CPU
43 OSCOFF      .equ 0020h ; Oscillator Off.           1=turn_off_LFXT1CLK
44 SCG0        .equ 0040h ; System Clock Generator 0. 1=turn_off_DCO
45 SCG1        .equ 0080h ; System Clock Generator 1. 1=turn_off_SMCLK
46 V           .equ 0100h
47 UF9         .equ 0200h ; = SR(9) User Flag 9
48 UF10        .equ 0400h ; = SR(10) User Flag 10
49 UF11        .equ 0800h ; = SR(11) User Flag 11  
50 ;----------------------------------------------------------------------------
51 LPM0        .equ CPUOFF
52 LPM1        .equ SCG0 + CPUOFF  ; for devices with FLL: LPM1 = LPM0 + FLL disabled
53 LPM2        .equ SCG1 + CPUOFF
54 LPM3        .equ SCG1 + SCG0 + CPUOFF
55 LPM4        .equ SCG1 + SCG0 + OSCOFF + CPUOFF
56
57 ;-------------------------------------------------------------------------------
58 ; DEFINING FORTH REGISTERS - DTC model
59 ;-------------------------------------------------------------------------------
60 RSP         .reg    R1      ; RSP = Return Stack Pointer (return stack)
61 ;                   R2      ; not to be used
62 ;                   R3      ; not to be used
63 ; DOxxx registers           ; must be saved before use and restored after use
64 rDOCOL      .reg    R4
65 rDODOES     .reg    r5      ; to restore: MOV #XDODOES,rDODOES
66 rDOCON      .reg    r6      ; to restore: MOV #XDOCON,rDOCON
67 rDOVAR      .reg    r7      ; to restore: MOV #R>,rDOVAR
68 ; rDOxxx alias
69 R           .reg    r4      ; rDOCOL alias
70 Q           .reg    r5      ; rDODOES alias
71 P           .reg    r6      ; rDOCON alias
72 M           .reg    R7      ; rDOVAR alias
73 ; Scratch registers
74 Y           .reg    R8
75 X           .reg    R9
76 W           .reg    R10
77 T           .reg    R11
78 S           .reg    R12
79 ; Forth virtual machine
80 IP          .reg    R13     ; interpretative pointer
81 TOS         .reg    R14     ; first PSP cell
82 PSP         .reg    R15     ; PSP = Parameters Stack Pointer (stack data)
83
84 ; ----------------------------------------------
85 ; EXECUTIVE WORDS FOR Direct-Threaded Code (DTC)
86 ; ----------------------------------------------
87 ;-------------------------------------------------------------------------------
88 ; very nice FAST FORTH feature:
89 ; as IP is always computed from the PC value, we can place low to high level
90 ; "ASMtoFORTH" or "mDOCOL" switches anywhere in a word, i.e. not only at its
91 ; beginning as ITC competitors.
92 ;-------------------------------------------------------------------------------
93     .SWITCH DTC
94
95     .CASE 1 ; DOCOL = CALL rDOCOL, [rDOCOL] = XDOCOL
96 ASMtoFORTH  .MACRO                  ; compiled by LO2HI
97             CALL #EXIT              ; 10 cycles
98             .ENDM                   ; 2 words, 10 cycles
99                                     ; LO2HI + HI2LO = 3 words, 10 cycles.
100
101 mDOCOL      .MACRO                  ; compiled by : and by colon
102             CALL rDOCOL             ; 10 [rDOCOL] = XDOCOL
103             .ENDM                   ; 1 word, 14 cycles (CALL included) (ITC+4)
104                                     ; COLON + SEMI = 2 words, 20 cycles (ITC+2)
105     .CASE 2 ; DOCOL = PUSH IP + CALL rDOCOL, [rDOCOL] = EXIT
106 ASMtoFORTH  .MACRO                  ; compiled by LO2HI
107             CALL rDOCOL             ; 10 [rDOCOL] = EXIT
108             .ENDM                   ; 1 word, 10 cycles. 
109                                     ; LO2HI + HI2LO = 2 words, 10 cycles.
110
111 mDOCOL      .MACRO                  ; compiled by : and by COLON
112             PUSH IP                 ; 3
113             CALL rDOCOL             ; 10 [rDOCOL] = EXIT
114             .ENDM                   ; 2 words, 13 cycles (ITC+3)
115                                     ; COLON + SEMI = 3 words, 19 cycles (ITC+1)
116     .CASE 3 ; inlined DOCOL
117 ASMtoFORTH  .MACRO                  ; compiled by LO2HI
118             MOV PC,IP               ; 1
119             ADD #4,IP               ; 1
120             MOV @IP+,PC             ; 4 NEXT
121             .ENDM                   ; 6 cycles, 3 words
122                                     ; LO2HI + HI2LO = 4 words, 6 cycles.
123
124 mDOCOL      .MACRO                  ; compiled by : and by COLON
125             PUSH IP                 ; 3
126             MOV PC,IP               ; 1
127             ADD #4,IP               ; 1
128             MOV @IP+,PC             ; 4 NEXT
129             .ENDM                   ; 4 words, 9 cycles (ITC-1)
130                                     ; COLON + SEMI = 5 words, 15 cycles (ITC-3)
131     .ENDCASE ; DTC
132
133     .save
134     .listing off
135 ; ----------------------------------------------
136 ; INIT VOCABULARY POINTERS and MACROS FOR HEADER
137 ; ----------------------------------------------
138 voclink     .set 0  ; init vocabulary links
139 forthlink   .set 0
140 asmlink     .set 0
141
142     .IF THREADS = 1
143
144 FORTHWORD   .MACRO  name
145             .word   forthlink
146 forthlink   .set    $
147             .byte   STRLEN(name),name
148 ;            .align  2
149             .ENDM
150
151 FORTHWORDIMM .MACRO  name
152             .word   forthlink
153 forthlink   .set    $
154             .byte   STRLEN(name)+128,name
155 ;            .align  2
156             .ENDM
157
158 asmword     .MACRO  name
159             .word   asmlink
160 asmlink     .set    $
161             .byte   STRLEN(name),name
162 ;            .align  2
163             .ENDM
164
165     .ELSE
166 forthlink1  .set 0
167 forthlink2  .set 0
168 forthlink3  .set 0
169 forthlink4  .set 0
170 forthlink5  .set 0
171 forthlink6  .set 0
172 forthlink7  .set 0
173 forthlink8  .set 0
174 forthlink9  .set 0
175 forthlink10 .set 0
176 forthlink11 .set 0
177 forthlink12 .set 0
178 forthlink13 .set 0
179 forthlink14 .set 0
180 forthlink15 .set 0
181 forthlink16 .set 0
182 forthlink17 .set 0
183 forthlink18 .set 0
184 forthlink19 .set 0
185 forthlink20 .set 0
186 forthlink21 .set 0
187 forthlink22 .set 0
188 forthlink23 .set 0
189 forthlink24 .set 0
190 forthlink25 .set 0
191 forthlink26 .set 0
192 forthlink27 .set 0
193 forthlink28 .set 0
194 forthlink29 .set 0
195 forthlink30 .set 0
196 forthlink31 .set 0
197
198 asmlink1    .set 0
199 asmlink2    .set 0
200 asmlink3    .set 0
201 asmlink4    .set 0
202 asmlink5    .set 0
203 asmlink6    .set 0
204 asmlink7    .set 0
205 asmlink8    .set 0
206 asmlink9    .set 0
207 asmlink10   .set 0
208 asmlink11   .set 0
209 asmlink12   .set 0
210 asmlink13   .set 0
211 asmlink14   .set 0
212 asmlink15   .set 0
213 asmlink16   .set 0
214 asmlink17   .set 0
215 asmlink18   .set 0
216 asmlink19   .set 0
217 asmlink20   .set 0
218 asmlink21   .set 0
219 asmlink22   .set 0
220 asmlink23   .set 0
221 asmlink24   .set 0
222 asmlink25   .set 0
223 asmlink26   .set 0
224 asmlink27   .set 0
225 asmlink28   .set 0
226 asmlink29   .set 0
227 asmlink30   .set 0
228 asmlink31   .set 0
229
230 ;-------------------------------------------
231 ; (THREADS-1)*2 = AND mask to define CURRENT offset in vocabulary
232 ;-------------------------------------------
233 FORTHWORD   .MACRO  name
234 CONTEXTofst .set    charfromstr(name,0) & ((THREADS-1)*2)
235     .SWITCH CONTEXTofst
236     .case 0
237             .word   forthlink
238 forthlink   .set    $
239     .case 2
240             .word   forthlink1
241 forthlink1  .set    $
242     .case 4
243             .word   forthlink2
244 forthlink2  .set    $
245     .case 6
246             .word   forthlink3
247 forthlink3  .set    $
248     .case 8
249             .word   forthlink4
250 forthlink4  .set    $
251     .case 10
252             .word   forthlink5
253 forthlink5  .set    $
254     .case 12
255             .word   forthlink6
256 forthlink6  .set    $
257     .case 14
258             .word   forthlink7
259 forthlink7  .set    $
260     .case 16
261             .word   forthlink8
262 forthlink8  .set    $
263     .case 18
264             .word   forthlink9
265 forthlink9  .set    $
266     .case 20
267             .word   forthlink10
268 forthlink10 .set    $
269     .case 22
270             .word   forthlink11
271 forthlink11 .set    $
272     .case 24
273             .word   forthlink12
274 forthlink12 .set    $
275     .case 26
276             .word   forthlink13
277 forthlink13 .set    $
278     .case 28
279             .word   forthlink14
280 forthlink14 .set    $
281     .case 30
282             .word   forthlink15
283 forthlink15 .set    $
284     .case 32
285             .word   forthlink16
286 forthlink16 .set    $
287     .case 34
288             .word   forthlink17
289 forthlink17 .set    $
290     .case 36
291             .word   forthlink18
292 forthlink18 .set    $
293     .case 38
294             .word   forthlink19
295 forthlink19 .set    $
296     .case 40
297             .word   forthlink20
298 forthlink20 .set    $
299     .case 42
300             .word   forthlink21
301 forthlink21 .set    $
302     .case 44
303             .word   forthlink22
304 forthlink22 .set    $
305     .case 46
306             .word   forthlink23
307 forthlink23 .set    $
308     .case 48
309             .word   forthlink24
310 forthlink24 .set    $
311     .case 50
312             .word   forthlink25
313 forthlink25 .set    $
314     .case 52
315             .word   forthlink26
316 forthlink26 .set    $
317     .case 54
318             .word   forthlink27
319 forthlink27 .set    $
320     .case 56
321             .word   forthlink28
322 forthlink28 .set    $
323     .case 58
324             .word   forthlink29
325 forthlink29 .set    $
326     .case 60
327             .word   forthlink30
328 forthlink30 .set    $
329     .case 62
330             .word   forthlink31
331 forthlink31 .set    $
332     .endcase
333             .byte   STRLEN(name),name
334             .ENDM
335
336 ;-------------------------------------------
337 ; (THREADS-1)*2 = AND mask to define CURRENT offset in vocabulary
338 ;-------------------------------------------
339 FORTHWORDIMM .MACRO  name
340 CONTEXTofst .set    charfromstr(name,0) &  ((THREADS-1)*2)
341     .SWITCH CONTEXTofst
342     .case 0
343             .word   forthlink
344 forthlink   .set    $
345     .case 2
346             .word   forthlink1
347 forthlink1  .set    $
348     .case 4
349             .word   forthlink2
350 forthlink2  .set    $
351     .case 6
352             .word   forthlink3
353 forthlink3  .set    $
354     .case 8
355             .word   forthlink4
356 forthlink4  .set    $
357     .case 10
358             .word   forthlink5
359 forthlink5  .set    $
360     .case 12
361             .word   forthlink6
362 forthlink6  .set    $
363     .case 14
364             .word   forthlink7
365 forthlink7  .set    $
366     .case 16
367             .word   forthlink8
368 forthlink8  .set    $
369     .case 18
370             .word   forthlink9
371 forthlink9  .set    $
372     .case 20
373             .word   forthlink10
374 forthlink10 .set    $
375     .case 22
376             .word   forthlink11
377 forthlink11 .set    $
378     .case 24
379             .word   forthlink12
380 forthlink12 .set    $
381     .case 26
382             .word   forthlink13
383 forthlink13 .set    $
384     .case 28
385             .word   forthlink14
386 forthlink14 .set    $
387     .case 30
388             .word   forthlink15
389 forthlink15 .set    $
390     .case 32
391             .word   forthlink16
392 forthlink16 .set    $
393     .case 34
394             .word   forthlink17
395 forthlink17 .set    $
396     .case 36
397             .word   forthlink18
398 forthlink18 .set    $
399     .case 38
400             .word   forthlink19
401 forthlink19 .set    $
402     .case 40
403             .word   forthlink20
404 forthlink20 .set    $
405     .case 42
406             .word   forthlink21
407 forthlink21 .set    $
408     .case 44
409             .word   forthlink22
410 forthlink22 .set    $
411     .case 46
412             .word   forthlink23
413 forthlink23 .set    $
414     .case 48
415             .word   forthlink24
416 forthlink24 .set    $
417     .case 50
418             .word   forthlink25
419 forthlink25 .set    $
420     .case 52
421             .word   forthlink26
422 forthlink26 .set    $
423     .case 54
424             .word   forthlink27
425 forthlink27 .set    $
426     .case 56
427             .word   forthlink28
428 forthlink28 .set    $
429     .case 58
430             .word   forthlink29
431 forthlink29 .set    $
432     .case 60
433             .word   forthlink30
434 forthlink30 .set    $
435     .case 62
436             .word   forthlink31
437 forthlink31 .set    $
438     .endcase
439             .byte   80h+STRLEN(name),name
440             .ENDM
441
442 ;-------------------------------------------
443 ; (THREADS-1)*2 = AND mask to define CURRENT offset in vocabulary
444 ;-------------------------------------------
445 asmword     .MACRO  name
446 CONTEXTofst .set    charfromstr(name,0) &  ((THREADS-1)*2)
447     .SWITCH CONTEXTofst
448     .case 0
449             .word   asmlink
450 asmlink   .set    $
451     .case 2
452             .word   asmlink1
453 asmlink1  .set    $
454     .case 4
455             .word   asmlink2
456 asmlink2  .set    $
457     .case 6
458             .word   asmlink3
459 asmlink3  .set    $
460     .case 8
461             .word   asmlink4
462 asmlink4  .set    $
463     .case 10
464             .word   asmlink5
465 asmlink5  .set    $
466     .case 12
467             .word   asmlink6
468 asmlink6  .set    $
469     .case 14
470             .word   asmlink7
471 asmlink7  .set    $
472     .case 16
473             .word   asmlink8
474 asmlink8  .set    $
475     .case 18
476             .word   asmlink9
477 asmlink9  .set    $
478     .case 20
479             .word   asmlink10
480 asmlink10 .set    $
481     .case 22
482             .word   asmlink11
483 asmlink11 .set    $
484     .case 24
485             .word   asmlink12
486 asmlink12 .set    $
487     .case 26
488             .word   asmlink13
489 asmlink13 .set    $
490     .case 28
491             .word   asmlink14
492 asmlink14 .set    $
493     .case 30
494             .word   asmlink15
495 asmlink15 .set    $
496     .case 32
497             .word   asmlink16
498 asmlink16 .set    $
499     .case 34
500             .word   asmlink17
501 asmlink17 .set    $
502     .case 36
503             .word   asmlink18
504 asmlink18 .set    $
505     .case 38
506             .word   asmlink19
507 asmlink19 .set    $
508     .case 40
509             .word   asmlink20
510 asmlink20 .set    $
511     .case 42
512             .word   asmlink21
513 asmlink21 .set    $
514     .case 44
515             .word   asmlink22
516 asmlink22 .set    $
517     .case 46
518             .word   asmlink23
519 asmlink23 .set    $
520     .case 48
521             .word   asmlink24
522 asmlink24 .set    $
523     .case 50
524             .word   asmlink25
525 asmlink25 .set    $
526     .case 52
527             .word   asmlink26
528 asmlink26 .set    $
529     .case 54
530             .word   asmlink27
531 asmlink27 .set    $
532     .case 56
533             .word   asmlink28
534 asmlink28 .set    $
535     .case 58
536             .word   asmlink29
537 asmlink29 .set    $
538     .case 60
539             .word   asmlink30
540 asmlink30 .set    $
541     .case 62
542             .word   asmlink31
543 asmlink31 .set    $
544     .endcase ; asmlink
545             .byte   STRLEN(name),name
546             .ENDM
547
548     .endif ; thread case
549
550 ; -------------------------------------
551 ; define MAIN max bound
552 ; -------------------------------------
553 FRAM_FULL   .equ SIGNATURES-40h ; set to protect JTAG and BSL signatures against overwrite.
554                                 ; 64 bytes are sufficient considering what can be compiled in one line + WORD use.
555                                 ; take care with ALLOT : don't ALLOT more than 32 words by line!
556     .restore
557 ; --------------------------
558 ; COMPUTE ASSEMBLY SWITCHES
559 ; --------------------------
560     .IFDEF CORE_COMPLEMENT
561         .IFNDEF USE_MOVE
562 USE_MOVE
563         .ENDIF
564     .ENDIF
565     .IFDEF UTILITY
566         .IFNDEF USE_MOVE
567 USE_MOVE
568         .ENDIF
569     .ENDIF
570     .IFDEF SD_CARD_LOADER 
571         .IFNDEF DOUBLE_INPUT
572 DOUBLE_INPUT
573         .ENDIF
574         .IFDEF BOOTLOADER
575             .IFNDEF CONDCOMP
576 CONDCOMP                    ; mandatory for Bootstrap
577             .ENDIF
578             .IFNDEF DEFERRED
579 DEFERRED                    ; mandatory for Bootstrap
580             .ENDIF
581         .ENDIF
582     .ENDIF
583     .IFDEF EXTENDED_ASM
584         .IFNDEF DOUBLE_INPUT
585 DOUBLE_INPUT
586         .ENDIF
587     .ELSE
588         .IFDEF EXTENDED_MEM
589             .IFNDEF MSP430ASSEMBLER
590 MSP430ASSEMBLER
591             .ENDIF
592             .IFNDEF DOUBLE_INPUT
593 DOUBLE_INPUT
594             .ENDIF
595         .ENDIF
596     .ENDIF
597     .IFDEF FIXPOINT
598         .IFNDEF FIXPOINT_INPUT
599 FIXPOINT_INPUT              ; to interpret fixpoint numbers
600         .ENDIF
601     .ENDIF
602     .IFDEF FIXPOINT_INPUT
603         .IFNDEF DOUBLE_NUMBERS
604 DOUBLE_NUMBERS              ; to process double numbers
605         .ENDIF
606     .ENDIF
607     .IFDEF DOUBLE_INPUT
608         .IFNDEF DOUBLE_NUMBERS
609 DOUBLE_NUMBERS              ; to process double numbers
610         .ENDIF
611     .ENDIF
612
613 ; --------------------------
614 ; COMPUTE BAUDRATE registers = fn(FREQUENCY,BAUDS)
615 ; --------------------------
616     .IFNDEF TERMINAL_I2C
617         .include "TERMINALBAUDRATE.inc"
618     .ENDIF
619 ;-----------------------------------------------------------------------
620 ; DEVICE I/O, MEMORY, SFR, vectors and minimum FORTH I/O declarations
621 ;-----------------------------------------------------------------------
622     .IFDEF MSP_EXP430FR5739
623 LF_XTAL
624         .IFDEF TERMINAL_I2C
625 UCB0_TERM
626         .ELSE
627 UCA0_TERM
628         .ENDIF
629 UCA1_SD
630         .include "MSP430FR5739.inc"
631     .ENDIF
632     .IFDEF MSP_EXP430FR5969
633 ;EXTENDED_MEM
634 LF_XTAL
635         .IFDEF TERMINAL_I2C
636 UCB0_TERM
637         .ELSE
638 UCA0_TERM
639         .ENDIF
640 UCA1_SD
641         .include "MSP430FR5969.inc"
642     .ENDIF
643     .IFDEF MSP_EXP430FR5994
644 ;EXTENDED_MEM
645 LF_XTAL
646         .IFDEF TERMINAL_I2C
647 UCB2_TERM
648         .ELSE
649 UCA0_TERM
650         .ENDIF
651 UCB0_SD
652         .include "MSP430FR5994.inc"
653     .ENDIF
654     .IFDEF MSP_EXP430FR6989
655 ;EXTENDED_MEM
656 LF_XTAL
657         .IFDEF TERMINAL_I2C
658 UCB0_TERM
659         .ELSE
660 UCA1_TERM
661         .ENDIF
662 UCA0_SD
663         .INCLUDE "MSP430FR6989.inc"
664     .ENDIF
665     .IFDEF MSP_EXP430FR5972
666 ;EXTENDED_MEM
667 LF_XTAL
668         .IFDEF TERMINAL_I2C
669 UCB0_TERM
670         .ELSE
671 UCA1_TERM
672         .ENDIF
673 UCA0_SD
674         .INCLUDE "MSP430FR5972.inc"
675     .ENDIF
676     .IFDEF MSP_EXP430FR4133
677 FLL
678 LF_XTAL
679         .IFDEF TERMINAL_I2C
680 UCB0_TERM
681         .ELSE
682 UCA0_TERM
683 UCB0_SD
684         .ENDIF
685         .INCLUDE "MSP430FR4133.inc"
686     .ENDIF
687     .IFDEF MSP_EXP430FR2433
688 FLL
689 LF_XTAL
690         .IFDEF TERMINAL_I2C
691 UCB0_TERM
692         .ELSE
693 UCA0_TERM
694         .ENDIF
695 UCA1_SD
696         .include "MSP430FR2433.inc"
697     .ENDIF
698     .IFDEF CHIPSTICK_FR2433
699 FLL
700 ; no LF_XTAL to select ACLK = REFOCLK
701         .IFDEF TERMINAL_I2C
702 UCB0_TERM
703 UCA0_SD
704         .ELSE
705 UCA0_TERM
706 UCB0_SD
707         .ENDIF
708         .include "MSP430FR2433.inc"
709     .ENDIF
710     .IFDEF MSP_EXP430FR2355
711 FLL
712 LF_XTAL
713         .IFDEF TERMINAL_I2C
714 UCB0_TERM
715         .ELSE
716 UCA1_TERM
717         .ENDIF
718 UCB1_SD
719         .include "MSP430FR2355.inc"
720     .ENDIF
721     .IFDEF LP_MSP430FR2476
722 FLL
723 ;EXTENDED_MEM
724 ; LF_XTAL       ; connect resistors R2=0k, R3=0k before uncomment this line
725         .IFDEF TERMINAL_I2C
726 UCB1_TERM
727         .ELSE
728 UCA0_TERM
729         .ENDIF
730 UCA1_SD
731         .include "MSP430FR2476.inc"
732     .ENDIF
733     .IFDEF YOUR_TARGET
734 ; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
735 ; add here your device.inc item:
736 ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
737     .ENDIF
738
739     .restore
740 ; ---------------------------
741 ; compute value of FORTHADDON
742 ; ---------------------------
743 FADDON .set 0
744     .IFDEF LF_XTAL
745 FADDON .SET FADDON | BIT15  ; LFXTAL = 32768 Hz
746     .ENDIF
747     .IFNDEF TERMINAL_I2C ; if TERMINAL UART...
748         .IFDEF TERMINAL5WIRES
749 FADDON .SET FADDON | BIT14  ; UART CTS
750         .ENDIF
751         .IFDEF TERMINAL4WIRES
752 FADDON .SET FADDON | BIT13  ; UART RTS
753         .ENDIF
754         .IFDEF TERMINAL3WIRES
755 FADDON .SET FADDON | BIT12  ; UART XON/XOFF
756         .ENDIF
757         .IFDEF HALFDUPLEX
758 FADDON .SET FADDON | BIT11  ; UART Half Duplex
759         .ENDIF
760     .ENDIF ; TERMINAL UART
761         .IFDEF TERMINAL_I2C
762 FADDON .SET FADDON | BIT10  ;I2C TERMINAL
763         .ENDIF
764     .IFDEF FIXPOINT_INPUT
765 FADDON .SET FADDON | BIT9   ; Q15.16 INPUT
766     .ENDIF
767     .IFDEF DOUBLE_INPUT
768 FADDON .SET FADDON | BIT8   ; DOUBLE INPUT
769     .ENDIF
770     .IFDEF EXTENDED_ASM     ; Assembler 20 bits
771 FADDON .SET FADDON | BIT7
772     .ENDIF
773     .IFDEF MSP430ASSEMBLER
774 FADDON .SET FADDON | BIT6   ; Assembler 16 bits
775     .ENDIF
776     .IFDEF EXTENDED_MEM
777     .IFNDEF EXTENDED_ASM
778 FADDON .SET FADDON | BIT5   ; Assembler 16 bits with Address access beyond $FFFF
779     .ENDIF
780     .ENDIF
781     .IFDEF CONDCOMP
782 FADDON .SET FADDON | BIT0   ; Conditionnal Compilation
783     .ENDIF