OSDN Git Service

Ver 301
[fast-forth/master.git] / inc / ThingsInFirst.inc
1 ; ThingsInFirst.inc
2
3 ;    .listing OFF
4     .cpu MSP430X
5
6 ; ----------------------------------------------
7 ; MACROS FOR assembly instructions
8 ; ----------------------------------------------
9
10 ;****************************************************************************
11 ;*                                                                          *
12 ;*   AS 1.41 - Datei REGMSP.INC von Alfred Arnold                           *
13 ;*                                                                          *
14 ;*   Sinn : enthält Makro- und Registerdefinitionen fu den MSP430          *
15 ;*                                                                          *
16 ;*   letzte underungen : 2002-01-11                                         *
17 ;*                       2010/2011/2012 erweitert von Matthias Koch         *
18 ;*                                                                          *
19 ;****************************************************************************
20
21                 ifndef  regmspinc      ; verhindert Mehrfacheinbindung
22
23 regmspinc       equ     1
24
25                 if      (MOMCPUNAME<>"MSP430")&&(MOMCPUNAME<>"MSP430X")
26                  fatal  "Falscher Prozessortyp eingestellt: nur MSP430 erlaubt!"
27                 endif
28
29                 if      MOMPASS=1
30                  message "MSP430-Register+Befehlsdefinitionen (C) 1996 Alfred Arnold"
31                 endif
32
33 ; Definitions for Instructions, Macros and Ports.
34
35 ;----------------------------------------------------------------------------
36 ; Arithmetik
37
38 adc             macro   op
39                 addc.attribute #0,op
40                 endm
41
42 dadc            macro   op
43                 dadd.attribute #0,op
44                 endm
45
46 dec             macro   op
47                 sub.attribute #1,op
48                 endm
49
50 decd            macro   op
51                 sub.attribute #2,op
52                 endm
53
54 inc             macro   op
55                 add.attribute #1,op
56                 endm
57
58 incd            macro   op
59                 add.attribute #2,op
60                 endm
61
62 sbc             macro   op
63                 subc.attribute #0,op
64                 endm
65
66 ;----------------------------------------------------------------------------
67 ; Logik
68
69 inv             macro   op
70                 xor.attribute #-1,op
71                 endm
72
73 rla             macro   op
74                 add.attribute op,op
75                 endm
76
77 rlc             macro   op
78                 addc.attribute op,op
79                 endm
80
81 ;----------------------------------------------------------------------------
82 ; Daten bewegen ;-)
83
84 clr             macro   op
85                 mov.attribute #0,op
86                 endm
87
88 clrc            macro
89                 bic     #1,sr
90                 endm
91
92 clrn            macro
93                 bic     #4,sr
94                 endm
95
96 clrz            macro
97                 bic     #2,sr
98                 endm
99
100 pop             macro   op         ; Muss hier noch ein Atribut anbringen ! Kann auch Bytes zurückladen...
101                 mov.attribute     @sp+,op
102                 endm
103
104 setc            macro
105                 bis     #1,sr
106                 endm
107
108 setn            macro
109                 bis     #4,sr
110                 endm
111
112 setz            macro
113                 bis     #2,sr
114                 endm
115
116 tst             macro   op
117                 cmp.attribute #0,op
118                 endm
119
120 ;----------------------------------------------------------------------------
121 ; Sprungbefehle
122
123 br              macro   op
124             mov     op,pc
125                 endm
126
127 dint            macro
128             bic     #8,sr
129                 endm
130
131 eint            macro
132             bis     #8,sr
133                 endm
134
135 nop             macro         
136             .word   04303h         ; mov #0, r3         
137                 endm
138
139 nop2            macro                  ; 1 Word, 2 Takte
140             jmp $+2
141                 endm
142
143 nop3            macro                  ; 1 Word, 3 Takte
144             MOV PC,PC
145                 endm
146
147 ret             macro
148             mov     @sp+,pc
149                 endm
150
151 jlo             macro   label   ; unsigned
152                 jnc     label
153                 endm
154
155 jhs             macro   label   ; unsigned
156                 jc      label
157                 endm
158
159 jeq             macro   label
160                 jz      label
161                 endm
162
163 ; Flags im Statusregister
164 ; SR bits : only SR(11:0) are PUSHed by interrupts
165 C             equ 0001h
166 Z             equ 0002h
167 N             equ 0004h
168 V             equ 0100h
169 GIE           equ 0008h
170 CPUOFF        equ 0010h ; CPU Off.                  1=turn_off_CPU
171 OSCOFF        equ 0020h ; Oscillator Off.           1=turn_off_LFXT1CLK
172 SCG0          equ 0040h ; System Clock Generator 0. 1=turn_off_DCO
173 SCG1          equ 0080h ; System Clock Generator 1. 1=turn_off_SMCLK
174 UF9           equ 0200h ; = SR(9) User Flag 1 used by ?NUMBER --> INTERPRET --> LITERAL to process double numbers, else free for use.  
175 UF10          equ 0400h ; = SR(10) User Flag 2  
176 UF11          equ 0800h ; = SR(11) User Flag 3  
177
178 ;----------------------------------------------------------------------------
179 ; Low-Power-Mode Bitmuster
180
181 LPM0          equ CPUOFF
182 LPM1          equ SCG0 + CPUOFF
183 LPM2          equ SCG1 + CPUOFF
184 LPM3          equ SCG1 + SCG0 + CPUOFF
185 LPM4          equ SCG1 + SCG0 + OSCOFF + CPUOFF
186
187 ;----------------------------------------------------------------------------
188
189                 endif                   ; von IFDEF...
190
191 ; ----------------------------------------------
192 ; INIT VOCABULARY POINTERS and MACROS FOR HEADER
193 ; ----------------------------------------------
194
195 voclink     .set 0                      ; init vocabulary links
196 forthlink   .set 0
197 asmlink     .set 0
198
199
200     .IF THREADS = 1
201
202 FORTHWORD   .MACRO  name
203             .word   forthlink
204 forthlink   .set    $
205             .byte   STRLEN(name),name
206 ;            .align  2
207             .ENDM
208
209 FORTHWORDIMM .MACRO  name
210             .word   forthlink
211 forthlink   .set    $
212             .byte   STRLEN(name)+128,name
213 ;            .align  2
214             .ENDM
215
216 asmword     .MACRO  name
217             .word   asmlink
218 asmlink     .set    $
219             .byte   STRLEN(name),name
220 ;            .align  2
221             .ENDM
222
223     .ELSE
224 forthlink1  .set 0
225 forthlink2  .set 0
226 forthlink3  .set 0
227 forthlink4  .set 0
228 forthlink5  .set 0
229 forthlink6  .set 0
230 forthlink7  .set 0
231 forthlink8  .set 0
232 forthlink9  .set 0
233 forthlink10 .set 0
234 forthlink11 .set 0
235 forthlink12 .set 0
236 forthlink13 .set 0
237 forthlink14 .set 0
238 forthlink15 .set 0
239 forthlink16 .set 0
240 forthlink17 .set 0
241 forthlink18 .set 0
242 forthlink19 .set 0
243 forthlink20 .set 0
244 forthlink21 .set 0
245 forthlink22 .set 0
246 forthlink23 .set 0
247 forthlink24 .set 0
248 forthlink25 .set 0
249 forthlink26 .set 0
250 forthlink27 .set 0
251 forthlink28 .set 0
252 forthlink29 .set 0
253 forthlink30 .set 0
254 forthlink31 .set 0
255
256 asmlink1    .set 0
257 asmlink2    .set 0
258 asmlink3    .set 0
259 asmlink4    .set 0
260 asmlink5    .set 0
261 asmlink6    .set 0
262 asmlink7    .set 0
263 asmlink8    .set 0
264 asmlink9    .set 0
265 asmlink10   .set 0
266 asmlink11   .set 0
267 asmlink12   .set 0
268 asmlink13   .set 0
269 asmlink14   .set 0
270 asmlink15   .set 0
271 asmlink16   .set 0
272 asmlink17   .set 0
273 asmlink18   .set 0
274 asmlink19   .set 0
275 asmlink20   .set 0
276 asmlink21   .set 0
277 asmlink22   .set 0
278 asmlink23   .set 0
279 asmlink24   .set 0
280 asmlink25   .set 0
281 asmlink26   .set 0
282 asmlink27   .set 0
283 asmlink28   .set 0
284 asmlink29   .set 0
285 asmlink30   .set 0
286 asmlink31   .set 0
287
288 ;-------------------------------------------
289 FORTHWORD   .MACRO  name
290 ;-------------------------------------------
291 ; (THREADS-1)*2 = AND mask to define CURRENT offset in vocabulary
292 thread      .set    charfromstr(name,0) &  ((THREADS-1)*2)
293
294     .SWITCH thread
295     .case 0
296             .word   forthlink
297 forthlink   .set    $
298     .case 2
299             .word   forthlink1
300 forthlink1  .set    $
301     .case 4
302             .word   forthlink2
303 forthlink2  .set    $
304     .case 6
305             .word   forthlink3
306 forthlink3  .set    $
307     .case 8
308             .word   forthlink4
309 forthlink4  .set    $
310     .case 10
311             .word   forthlink5
312 forthlink5  .set    $
313     .case 12
314             .word   forthlink6
315 forthlink6  .set    $
316     .case 14
317             .word   forthlink7
318 forthlink7  .set    $
319     .case 16
320             .word   forthlink8
321 forthlink8  .set    $
322     .case 18
323             .word   forthlink9
324 forthlink9  .set    $
325     .case 20
326             .word   forthlink10
327 forthlink10 .set    $
328     .case 22
329             .word   forthlink11
330 forthlink11 .set    $
331     .case 24
332             .word   forthlink12
333 forthlink12 .set    $
334     .case 26
335             .word   forthlink13
336 forthlink13 .set    $
337     .case 28
338             .word   forthlink14
339 forthlink14 .set    $
340     .case 30
341             .word   forthlink15
342 forthlink15 .set    $
343     .case 32
344             .word   forthlink16
345 forthlink16 .set    $
346     .case 34
347             .word   forthlink17
348 forthlink17 .set    $
349     .case 36
350             .word   forthlink18
351 forthlink18 .set    $
352     .case 38
353             .word   forthlink19
354 forthlink19 .set    $
355     .case 40
356             .word   forthlink20
357 forthlink20 .set    $
358     .case 42
359             .word   forthlink21
360 forthlink21 .set    $
361     .case 44
362             .word   forthlink22
363 forthlink22 .set    $
364     .case 46
365             .word   forthlink23
366 forthlink23 .set    $
367     .case 48
368             .word   forthlink24
369 forthlink24 .set    $
370     .case 50
371             .word   forthlink25
372 forthlink25 .set    $
373     .case 52
374             .word   forthlink26
375 forthlink26 .set    $
376     .case 54
377             .word   forthlink27
378 forthlink27 .set    $
379     .case 56
380             .word   forthlink28
381 forthlink28 .set    $
382     .case 58
383             .word   forthlink29
384 forthlink29 .set    $
385     .case 60
386             .word   forthlink30
387 forthlink30 .set    $
388     .case 62
389             .word   forthlink31
390 forthlink31 .set    $
391
392     .endcase
393
394             .byte   STRLEN(name),name
395 ;            .align  2
396             .ENDM
397
398 ;-------------------------------------------
399 FORTHWORDIMM .MACRO  name
400 ;-------------------------------------------
401
402 ; (THREADS-1)*2 = AND mask to define CURRENT offset in vocabulary
403 thread      .set    charfromstr(name,0) &  ((THREADS-1)*2)
404
405
406     .SWITCH thread
407     .case 0
408             .word   forthlink
409 forthlink   .set    $
410     .case 2
411             .word   forthlink1
412 forthlink1  .set    $
413     .case 4
414             .word   forthlink2
415 forthlink2  .set    $
416     .case 6
417             .word   forthlink3
418 forthlink3  .set    $
419     .case 8
420             .word   forthlink4
421 forthlink4  .set    $
422     .case 10
423             .word   forthlink5
424 forthlink5  .set    $
425     .case 12
426             .word   forthlink6
427 forthlink6  .set    $
428     .case 14
429             .word   forthlink7
430 forthlink7  .set    $
431     .case 16
432             .word   forthlink8
433 forthlink8  .set    $
434     .case 18
435             .word   forthlink9
436 forthlink9  .set    $
437     .case 20
438             .word   forthlink10
439 forthlink10 .set    $
440     .case 22
441             .word   forthlink11
442 forthlink11 .set    $
443     .case 24
444             .word   forthlink12
445 forthlink12 .set    $
446     .case 26
447             .word   forthlink13
448 forthlink13 .set    $
449     .case 28
450             .word   forthlink14
451 forthlink14 .set    $
452     .case 30
453             .word   forthlink15
454 forthlink15 .set    $
455     .case 32
456             .word   forthlink16
457 forthlink16 .set    $
458     .case 34
459             .word   forthlink17
460 forthlink17 .set    $
461     .case 36
462             .word   forthlink18
463 forthlink18 .set    $
464     .case 38
465             .word   forthlink19
466 forthlink19 .set    $
467     .case 40
468             .word   forthlink20
469 forthlink20 .set    $
470     .case 42
471             .word   forthlink21
472 forthlink21 .set    $
473     .case 44
474             .word   forthlink22
475 forthlink22 .set    $
476     .case 46
477             .word   forthlink23
478 forthlink23 .set    $
479     .case 48
480             .word   forthlink24
481 forthlink24 .set    $
482     .case 50
483             .word   forthlink25
484 forthlink25 .set    $
485     .case 52
486             .word   forthlink26
487 forthlink26 .set    $
488     .case 54
489             .word   forthlink27
490 forthlink27 .set    $
491     .case 56
492             .word   forthlink28
493 forthlink28 .set    $
494     .case 58
495             .word   forthlink29
496 forthlink29 .set    $
497     .case 60
498             .word   forthlink30
499 forthlink30 .set    $
500     .case 62
501             .word   forthlink31
502 forthlink31 .set    $
503
504     .endcase
505
506             .byte   STRLEN(name)+128,name
507 ;            .align  2
508             .ENDM
509
510 ;-------------------------------------------
511 asmword     .MACRO  name
512 ;-------------------------------------------
513
514 ; (THREADS-1)*2 = AND mask to define CURRENT offset in vocabulary
515 thread      .set    charfromstr(name,0) &  ((THREADS-1)*2)
516
517     .SWITCH thread
518     .case 0
519             .word   asmlink
520 asmlink   .set    $
521     .case 2
522             .word   asmlink1
523 asmlink1  .set    $
524     .case 4
525             .word   asmlink2
526 asmlink2  .set    $
527     .case 6
528             .word   asmlink3
529 asmlink3  .set    $
530     .case 8
531             .word   asmlink4
532 asmlink4  .set    $
533     .case 10
534             .word   asmlink5
535 asmlink5  .set    $
536     .case 12
537             .word   asmlink6
538 asmlink6  .set    $
539     .case 14
540             .word   asmlink7
541 asmlink7  .set    $
542     .case 16
543             .word   asmlink8
544 asmlink8  .set    $
545     .case 18
546             .word   asmlink9
547 asmlink9  .set    $
548     .case 20
549             .word   asmlink10
550 asmlink10 .set    $
551     .case 22
552             .word   asmlink11
553 asmlink11 .set    $
554     .case 24
555             .word   asmlink12
556 asmlink12 .set    $
557     .case 26
558             .word   asmlink13
559 asmlink13 .set    $
560     .case 28
561             .word   asmlink14
562 asmlink14 .set    $
563     .case 30
564             .word   asmlink15
565 asmlink15 .set    $
566     .case 32
567             .word   asmlink16
568 asmlink16 .set    $
569     .case 34
570             .word   asmlink17
571 asmlink17 .set    $
572     .case 36
573             .word   asmlink18
574 asmlink18 .set    $
575     .case 38
576             .word   asmlink19
577 asmlink19 .set    $
578     .case 40
579             .word   asmlink20
580 asmlink20 .set    $
581     .case 42
582             .word   asmlink21
583 asmlink21 .set    $
584     .case 44
585             .word   asmlink22
586 asmlink22 .set    $
587     .case 46
588             .word   asmlink23
589 asmlink23 .set    $
590     .case 48
591             .word   asmlink24
592 asmlink24 .set    $
593     .case 50
594             .word   asmlink25
595 asmlink25 .set    $
596     .case 52
597             .word   asmlink26
598 asmlink26 .set    $
599     .case 54
600             .word   asmlink27
601 asmlink27 .set    $
602     .case 56
603             .word   asmlink28
604 asmlink28 .set    $
605     .case 58
606             .word   asmlink29
607 asmlink29 .set    $
608     .case 60
609             .word   asmlink30
610 asmlink30 .set    $
611     .case 62
612             .word   asmlink31
613 asmlink31 .set    $
614
615     .endcase ; asmlink
616
617             .byte   STRLEN(name),name
618 ;            .align  2
619             .ENDM
620
621     .endif ; thread case
622
623 ; --------------------------
624 ; COMPUTE BAUDRATE registers = fn(FREQUENCY,BAUDS)
625 ; --------------------------
626     .include "TERMINALBAUDRATE.inc"
627
628 ; -----------------------------
629 ; compute value of FORTHVERSION
630 ; -----------------------------
631 VERSIO .equ VAL(SUBSTR(VER,1,0))
632
633 ; -------------------------------------
634 ; define FREQ  used in WARM message (6)
635 ; -------------------------------------
636     .IF     FREQUENCY = 0.25
637 FREQ    .set " .2MHz"
638     .ELSEIF FREQUENCY = 0.5
639 FREQ    .set " .5MHz"
640     .ELSEIF FREQUENCY = 1
641 FREQ    .set "  1MHz"
642     .ELSEIF FREQUENCY = 2
643 FREQ    .set "  2MHz"
644     .ELSEIF FREQUENCY = 4
645 FREQ    .set "  4MHz"
646     .ELSEIF FREQUENCY = 8
647 FREQ    .set "  8MHz"
648     .ELSEIF FREQUENCY = 12
649 FREQ    .set " 12MHz"
650     .ELSEIF FREQUENCY = 16
651 FREQ    .set " 16MHz"
652     .ELSEIF FREQUENCY = 20
653 FREQ    .set " 20MHz"
654     .ELSEIF FREQUENCY = 24
655 FREQ    .set " 24MHz"
656     .ENDIF
657
658 ; -------------------------------------
659 ; define MAIN max bound
660 ; -------------------------------------
661 FRAM_FULL   .equ SIGNATURES-50h ; set to protect JTAG and BSL signatures against overwrite.
662                                 ; 80 bytes are sufficient considering what can be compiled in one line + WORD use.
663                                 ; take care with ALLOT : don't ALLOT more than 32 words by line!
664
665 ;-----------------------------------------------------------------------
666 ; DEVICE I/O, MEMORY, SFR, vectors and minimum FORTH I/O declarations
667 ;-----------------------------------------------------------------------
668     .IFDEF MSP_EXP430FR5739
669 LF_XTAL
670 UCA0_TERM
671 UCB0_SD
672     .include "MSP430FR5739.inc"
673     .ENDIF
674
675     .IFDEF MSP_EXP430FR5969
676 LF_XTAL
677 UCA0_TERM
678 UCA1_SD
679     .include "MSP430FR5969.inc"
680     .ENDIF
681
682     .IFDEF MSP_EXP430FR5994
683 LF_XTAL
684 UCA0_TERM
685 UCB0_SD
686     .include "MSP430FR5994.inc"
687     .ENDIF
688
689     .IFDEF MSP_EXP430FR6989
690 LF_XTAL
691 UCA1_TERM
692 UCA0_SD
693     .INCLUDE "MSP430FR6989.inc"
694     .ENDIF
695
696     .IFDEF MSP_EXP430FR4133
697 LF_XTAL
698 UCA0_TERM
699 UCB0_SD
700     .INCLUDE "MSP430FR4133.inc"
701     .ENDIF
702
703     .IFDEF MSP_EXP430FR2433
704 LF_XTAL
705 UCA0_TERM
706 UCA1_SD
707     .include "MSP430FR2433.inc"
708     .ENDIF
709
710     .IFDEF CHIPSTICK_FR2433
711 ; no LF_XTAL to select ACLK = REFOCLK
712 UCA0_TERM 
713 UCB0_SD
714     .include "MSP430FR2433.inc"
715     .ENDIF
716
717     .IFDEF MSP_EXP430FR2355
718 LF_XTAL
719 UCA1_TERM
720 UCB1_SD
721     .include "MSP430FR2355.inc"
722     .ENDIF
723
724     .IFDEF LP_MSP430FR2476
725 ; LF_XTAL
726 UCA0_TERM
727 UCA1_SD
728     .include "MSP430FR2476.inc"
729     .ENDIF
730
731 ; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
732 ; add here your device.inc item:
733 ;     .IFDEF MY_MSP430FR5738_1
734 ; UCA0_UART   ; defines uart used by FORTH input terminal 
735 ; LF_XTAL     ; defines if your module have a 32768 Hz xtal, to enable it.
736 ; UCB0_SD     ; defines UC used for SD Card driver if used
737 ;     .include "MSP430FR5738.inc"  ; include device declarations
738 ;     .ENDIF
739 ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
740
741     .IFDEF MSP_EXP430FR2433_I2C
742 LF_XTAL
743 UCA1_SD
744 UCB0_TERM
745     .include "MSP430FR2433.inc"
746     .ENDIF
747
748     .IFDEF MY_MSP430FR5738
749 LF_XTAL
750 UCA0_TERM
751 UCB0_SD
752     .include "MSP430FR5738.inc"
753     .ENDIF
754
755     .IFDEF MY_MSP430FR5734
756 LF_XTAL
757 UCA0_TERM
758 UCB0_SD
759     .include "MSP430FR5734.inc"
760     .ENDIF
761
762     .IFDEF MY_MSP430FR5948
763 LF_XTAL
764 UCA0_TERM
765 UCA1_SD
766     .include "MSP430FR5948.inc"
767     .ENDIF
768
769     .IFDEF JMJ_BOX
770 UCA0_TERM
771 ; no LF_XTAL to select ACLK = VLOCLK
772     .include "MSP430FR5738.inc"
773     .ENDIF
774
775     .IFDEF PA_PA_MSP430
776 UCA0_TERM
777 ; no LF_XTAL to select ACLK = VLOCLK
778     .include "MSP430FR5738.inc"
779     .ENDIF
780
781     .IFDEF PA_Core_MSP430
782 LF_XTAL
783 UCA0_TERM
784     .include "MSP430FR5948.inc"
785     .ENDIF
786
787 ; --------------------------
788 ; COMPUTE SWITCHES
789 ; --------------------------
790
791     .IFDEF EXTENDED_MEM
792         .IFNDEF DOUBLE_INPUT
793 DOUBLE_INPUT
794         .ENDIF
795     .ENDIF
796
797 ; define if QUIT is DEFERed
798     .IFDEF SD_CARD_LOADER 
799         .IFNDEF DOUBLE_INPUT
800 DOUBLE_INPUT
801         .ENDIF
802         .IFNDEF DEFER_ACCEPT
803 DEFER_ACCEPT
804         .ENDIF
805         .IFDEF BOOTLOADER
806             .IFNDEF CONDCOMP
807 CONDCOMP                    ; mandatory for Bootstrap
808             .ENDIF
809             .IFNDEF DEFER_QUIT
810 DEFER_QUIT
811             .ENDIF
812         .ENDIF
813     .ENDIF
814
815     .IFDEF EXTENDED_ASM
816 ;        .IFNDEF MSP430ASSEMBLER
817 ;MSP430ASSEMBLER
818 ;        .ENDIF
819         .IFNDEF DOUBLE_INPUT
820 DOUBLE_INPUT
821         .ENDIF
822     .ELSE
823         .IFDEF EXTENDED_MEM
824             .IFNDEF MSP430ASSEMBLER
825 MSP430ASSEMBLER
826             .ENDIF
827             .IFNDEF DOUBLE_INPUT
828 DOUBLE_INPUT ; for indirect extended indexed modes of MOVA ADDA CMPA SUBA instructions
829             .ENDIF
830         .ENDIF
831     .ENDIF
832
833
834     .IFDEF FIXPOINT
835         .IFNDEF FIXPOINT_INPUT
836 FIXPOINT_INPUT              ; to interpret fixpoint numbers
837         .ENDIF
838     .ENDIF
839
840     .IFDEF FIXPOINT_INPUT
841     .IFNDEF DOUBLE_NUMBERS
842 DOUBLE_NUMBERS              ; to process double numbers
843     .ENDIF
844     .ENDIF
845
846     .IFDEF DOUBLE_INPUT
847     .IFNDEF DOUBLE_NUMBERS
848 DOUBLE_NUMBERS              ; to process double numbers
849     .ENDIF
850     .ENDIF
851
852 ; define if Terminal half duplex
853     .IFDEF UARTtoI2C
854         .IFNDEF HALFDUPLEX
855 HALFDUPLEX
856         .ENDIF
857     .ENDIF
858
859 ; ---------------------------
860 ; compute value of FORTHADDON
861 ; ---------------------------
862 FADDON .set 0
863     .IFDEF CONDCOMP
864 FADDON .SET FADDON | 01h
865     .ENDIF
866     .IFDEF MSP430ASSEMBLER
867 FADDON .SET FADDON | 02h
868     .ENDIF
869     .IFDEF EXTENDED_ASM
870 FADDON .SET FADDON | 04h
871     .ENDIF
872     .IFDEF NONAME
873 FADDON .SET FADDON | 08h
874     .ENDIF
875     .IFDEF VOCABULARY_SET
876 FADDON .SET FADDON | 10h
877     .ENDIF
878     .IFDEF DOUBLE_INPUT
879 FADDON .SET FADDON | 20h
880     .ENDIF
881     .IFDEF FIXPOINT_INPUT
882 FADDON .SET FADDON | 40h
883     .ENDIF
884     .IFDEF SD_CARD_LOADER
885 FADDON .SET FADDON | 80h
886     .ENDIF
887     .IFDEF SD_CARD_READ_WRITE
888 FADDON .SET FADDON | 100h
889     .ENDIF
890     .IFDEF BOOTLOADER
891 FADDON .SET FADDON | 200h
892     .ENDIF
893     .IFDEF EXTENDED_MEM
894     .IFNDEF EXTENDED_ASM
895 FADDON .SET FADDON | 400h
896     .ENDIF
897     .ENDIF
898     .IFDEF HALFDUPLEX
899 FADDON .SET FADDON | 800h
900     .ENDIF
901     .IFDEF TERMINAL3WIRES
902 FADDON .SET FADDON | 1000h
903     .ENDIF
904     .IFDEF TERMINAL4WIRES
905 FADDON .SET FADDON | 2000h
906     .ENDIF
907     .IFDEF TERMINAL5WIRES
908 FADDON .SET FADDON | 4000h
909     .ENDIF
910     .IFDEF LF_XTAL
911 FADDON .SET FADDON | 8000h
912     .ENDIF
913
914
915     .listing ON