3 .cpu MSP430X ; define CPU
5 ; ----------------------------------------------
6 ; MACROS FOR assembly instructions
7 ; ----------------------------------------------
9 NOP .macro ; 1 word, 1 cycle
10 .word 4303h ; mov #0, r3
13 NOP2 .macro ; 1 Word, 2 cycles
17 NOP3 .macro ; 1 Word, 3 cycles
18 .word 4000h ; MOV PC,PC
21 ; SR bits : only SR(11:0) are PUSHed by calls and interrupts
27 CPUOFF .equ 0010h ; CPU Off. 1=turn_off_CPU
28 OSCOFF .equ 0020h ; Oscillator Off. 1=turn_off_LFXT1CLK
29 SCG0 .equ 0040h ; System Clock Generator 0. 1=turn_off_DCO
30 SCG1 .equ 0080h ; System Clock Generator 1. 1=turn_off_SMCLK
31 UF9 .equ 0200h ; = SR(9) User Flag 1
32 UF10 .equ 0400h ; = SR(10) User Flag 2
33 UF11 .equ 0800h ; = SR(11) User Flag 3
35 ;----------------------------------------------------------------------------
37 ; LPM0 .equ SCG0 + CPUOFF ; for devices with FLL, to disable FLL
38 LPM1 .equ SCG0 + CPUOFF
39 LPM2 .equ SCG1 + CPUOFF
40 LPM3 .equ SCG1 + SCG0 + CPUOFF
41 LPM4 .equ SCG1 + SCG0 + OSCOFF + CPUOFF
43 ; ----------------------------------------------
44 ; INIT VOCABULARY POINTERS and MACROS FOR HEADER
45 ; ----------------------------------------------
47 voclink .set 0 ; init vocabulary links
59 .byte STRLEN(name),name
63 FORTHWORDIMM .MACRO name
66 .byte STRLEN(name)+128,name
73 .byte STRLEN(name),name
142 ;-------------------------------------------
143 ; (THREADS-1)*2 = AND mask to define CURRENT offset in vocabulary
144 ;-------------------------------------------
145 FORTHWORD .MACRO name
146 CONTEXTofst .set charfromstr(name,0) & ((THREADS-1)*2)
245 .byte STRLEN(name),name
248 ;-------------------------------------------
249 ; (THREADS-1)*2 = AND mask to define CURRENT offset in vocabulary
250 ;-------------------------------------------
251 FORTHWORDIMM .MACRO name
252 CONTEXTofst .set charfromstr(name,0) & ((THREADS-1)*2)
351 .byte 80h+STRLEN(name),name
354 ;-------------------------------------------
355 ; (THREADS-1)*2 = AND mask to define CURRENT offset in vocabulary
356 ;-------------------------------------------
358 CONTEXTofst .set charfromstr(name,0) & ((THREADS-1)*2)
457 .byte STRLEN(name),name
463 ; --------------------------
464 ; COMPUTE BAUDRATE registers = fn(FREQUENCY,BAUDS)
465 ; --------------------------
467 .include "TERMINALBAUDRATE.inc"
470 ; -------------------------------------
471 ; define MAIN max bound
472 ; -------------------------------------
473 FRAM_FULL .equ SIGNATURES-40h ; set to protect JTAG and BSL signatures against overwrite.
474 ; 64 bytes are sufficient considering what can be compiled in one line + WORD use.
475 ; take care with ALLOT : don't ALLOT more than 32 words by line!
477 ;-----------------------------------------------------------------------
478 ; DEVICE I/O, MEMORY, SFR, vectors and minimum FORTH I/O declarations
479 ;-----------------------------------------------------------------------
480 .IFDEF MSP_EXP430FR5739
488 .include "MSP430FR5739.inc"
491 .IFDEF MSP_EXP430FR5969
499 .include "MSP430FR5969.inc"
502 .IFDEF MSP_EXP430FR5994
510 .include "MSP430FR5994.inc"
513 .IFDEF MSP_EXP430FR6989
521 .INCLUDE "MSP430FR6989.inc"
524 .IFDEF MSP_EXP430FR4133
532 .INCLUDE "MSP430FR4133.inc"
535 .IFDEF MSP_EXP430FR2433
543 .include "MSP430FR2433.inc"
546 .IFDEF CHIPSTICK_FR2433
547 ; no LF_XTAL to select ACLK = REFOCLK
555 .include "MSP430FR2433.inc"
558 .IFDEF MSP_EXP430FR2355
566 .include "MSP430FR2355.inc"
569 .IFDEF LP_MSP430FR2476
570 ; LF_XTAL ; connect resistors R2=0k, R3=0k before uncomment this line
577 .include "MSP430FR2476.inc"
582 ; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
583 ; add here your device.inc item:
584 ; .IFDEF MY_MSP430FR5738_1
585 ; UCA0_UART ; defines uart used by FORTH input terminal
586 ; LF_XTAL ; defines if your module have a 32768 Hz xtal, to enable it.
587 ; UCB0_SD ; defines UC used for SD Card driver if used
588 ; .include "MSP430FR5738.inc" ; include device declarations
590 ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
592 ; --------------------------
594 ; --------------------------
596 .IFDEF CORE_COMPLEMENT
608 .IFDEF FIXPOINT_INPUT
614 ; define if QUIT is DEFERed
615 .IFDEF SD_CARD_LOADER
625 CONDCOMP ; mandatory for Bootstrap
639 .IFNDEF MSP430ASSEMBLER
650 .IFNDEF FIXPOINT_INPUT
651 FIXPOINT_INPUT ; to interpret fixpoint numbers
655 .IFDEF FIXPOINT_INPUT
656 .IFNDEF DOUBLE_NUMBERS
657 DOUBLE_NUMBERS ; to process double numbers
662 .IFNDEF DOUBLE_NUMBERS
663 DOUBLE_NUMBERS ; to process double numbers
667 ; ---------------------------
668 ; compute value of FORTHADDON
669 ; ---------------------------
672 FADDON .SET FADDON | 01h
674 .IFDEF MSP430ASSEMBLER
675 FADDON .SET FADDON | 02h
678 FADDON .SET FADDON | 04h
681 FADDON .SET FADDON | 08h
683 .IFDEF VOCABULARY_SET
684 FADDON .SET FADDON | 10h
687 FADDON .SET FADDON | 20h
689 .IFDEF FIXPOINT_INPUT
690 FADDON .SET FADDON | 40h
692 .IFDEF SD_CARD_LOADER
693 FADDON .SET FADDON | 80h
695 .IFDEF SD_CARD_READ_WRITE
696 FADDON .SET FADDON | 100h
699 FADDON .SET FADDON | 200h
703 FADDON .SET FADDON | 400h
707 FADDON .SET FADDON | 800h
709 .IFDEF TERMINAL3WIRES
710 FADDON .SET FADDON | 1000h
712 .IFDEF TERMINAL4WIRES
713 FADDON .SET FADDON | 2000h
715 .IFDEF TERMINAL5WIRES
716 FADDON .SET FADDON | 4000h
719 FADDON .SET FADDON | 8000h