6 ; ----------------------------------------------
7 ; MACROS FOR assembly instructions
8 ; ----------------------------------------------
10 ;****************************************************************************
12 ;* AS 1.41 - Datei REGMSP.INC von Alfred Arnold *
14 ;* Sinn : enthält Makro- und Registerdefinitionen fu den MSP430 *
16 ;* letzte underungen : 2002-01-11 *
17 ;* 2010/2011/2012 erweitert von Matthias Koch *
19 ;****************************************************************************
21 ifndef regmspinc ; verhindert Mehrfacheinbindung
25 if (MOMCPUNAME<>"MSP430")&&(MOMCPUNAME<>"MSP430X")
26 fatal "Falscher Prozessortyp eingestellt: nur MSP430 erlaubt!"
30 message "MSP430-Register+Befehlsdefinitionen (C) 1996 Alfred Arnold"
33 ; Definitions for Instructions, Macros and Ports.
35 ;----------------------------------------------------------------------------
66 ;----------------------------------------------------------------------------
81 ;----------------------------------------------------------------------------
100 pop macro op ; Muss hier noch ein Atribut anbringen ! Kann auch Bytes zurückladen...
101 mov.attribute @sp+,op
120 ;----------------------------------------------------------------------------
136 .word 04303h ; mov #0, r3
139 nop2 macro ; 1 Word, 2 Takte
143 nop3 macro ; 1 Word, 3 Takte
151 jlo macro label ; unsigned
155 jhs macro label ; unsigned
163 ; Flags im Statusregister
164 ; SR bits : only SR(11:0) are PUSHed by interrupts
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
178 ;----------------------------------------------------------------------------
179 ; Low-Power-Mode Bitmuster
182 LPM1 equ SCG0 + CPUOFF
183 LPM2 equ SCG1 + CPUOFF
184 LPM3 equ SCG1 + SCG0 + CPUOFF
185 LPM4 equ SCG1 + SCG0 + OSCOFF + CPUOFF
187 ;----------------------------------------------------------------------------
191 ; ----------------------------------------------
192 ; INIT VOCABULARY POINTERS and MACROS FOR HEADER
193 ; ----------------------------------------------
195 voclink .set 0 ; init vocabulary links
202 FORTHWORD .MACRO name
205 .byte STRLEN(name),name
209 FORTHWORDIMM .MACRO name
212 .byte STRLEN(name)+128,name
219 .byte STRLEN(name),name
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)
394 .byte STRLEN(name),name
398 ;-------------------------------------------
399 FORTHWORDIMM .MACRO name
400 ;-------------------------------------------
402 ; (THREADS-1)*2 = AND mask to define CURRENT offset in vocabulary
403 thread .set charfromstr(name,0) & ((THREADS-1)*2)
506 .byte STRLEN(name)+128,name
510 ;-------------------------------------------
512 ;-------------------------------------------
514 ; (THREADS-1)*2 = AND mask to define CURRENT offset in vocabulary
515 thread .set charfromstr(name,0) & ((THREADS-1)*2)
617 .byte STRLEN(name),name
623 ; --------------------------
624 ; COMPUTE BAUDRATE registers = fn(FREQUENCY,BAUDS)
625 ; --------------------------
626 .include "TERMINALBAUDRATE.inc"
628 ; -----------------------------
629 ; compute value of FORTHVERSION
630 ; -----------------------------
631 VERSIO .equ VAL(SUBSTR(VER,1,0))
633 ; -------------------------------------
634 ; define FREQ used in WARM message (6)
635 ; -------------------------------------
638 .ELSEIF FREQUENCY = 0.5
640 .ELSEIF FREQUENCY = 1
642 .ELSEIF FREQUENCY = 2
644 .ELSEIF FREQUENCY = 4
646 .ELSEIF FREQUENCY = 8
648 .ELSEIF FREQUENCY = 12
650 .ELSEIF FREQUENCY = 16
652 .ELSEIF FREQUENCY = 20
654 .ELSEIF FREQUENCY = 24
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!
665 ;-----------------------------------------------------------------------
666 ; DEVICE I/O, MEMORY, SFR, vectors and minimum FORTH I/O declarations
667 ;-----------------------------------------------------------------------
668 .IFDEF MSP_EXP430FR5739
672 .include "MSP430FR5739.inc"
675 .IFDEF MSP_EXP430FR5969
679 .include "MSP430FR5969.inc"
682 .IFDEF MSP_EXP430FR5994
686 .include "MSP430FR5994.inc"
689 .IFDEF MSP_EXP430FR6989
693 .INCLUDE "MSP430FR6989.inc"
696 .IFDEF MSP_EXP430FR4133
700 .INCLUDE "MSP430FR4133.inc"
703 .IFDEF MSP_EXP430FR2433
707 .include "MSP430FR2433.inc"
710 .IFDEF CHIPSTICK_FR2433
711 ; no LF_XTAL to select ACLK = REFOCLK
714 .include "MSP430FR2433.inc"
717 .IFDEF MSP_EXP430FR2355
721 .include "MSP430FR2355.inc"
724 .IFDEF LP_MSP430FR2476
728 .include "MSP430FR2476.inc"
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
739 ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
741 .IFDEF MSP_EXP430FR2433_I2C
745 .include "MSP430FR2433.inc"
748 .IFDEF MY_MSP430FR5738
752 .include "MSP430FR5738.inc"
755 .IFDEF MY_MSP430FR5734
759 .include "MSP430FR5734.inc"
762 .IFDEF MY_MSP430FR5948
766 .include "MSP430FR5948.inc"
771 ; no LF_XTAL to select ACLK = VLOCLK
772 .include "MSP430FR5738.inc"
777 ; no LF_XTAL to select ACLK = VLOCLK
778 .include "MSP430FR5738.inc"
781 .IFDEF PA_Core_MSP430
784 .include "MSP430FR5948.inc"
787 ; --------------------------
789 ; --------------------------
797 ; define if QUIT is DEFERed
798 .IFDEF SD_CARD_LOADER
807 CONDCOMP ; mandatory for Bootstrap
816 ; .IFNDEF MSP430ASSEMBLER
824 .IFNDEF MSP430ASSEMBLER
828 DOUBLE_INPUT ; for indirect extended indexed modes of MOVA ADDA CMPA SUBA instructions
835 .IFNDEF FIXPOINT_INPUT
836 FIXPOINT_INPUT ; to interpret fixpoint numbers
840 .IFDEF FIXPOINT_INPUT
841 .IFNDEF DOUBLE_NUMBERS
842 DOUBLE_NUMBERS ; to process double numbers
847 .IFNDEF DOUBLE_NUMBERS
848 DOUBLE_NUMBERS ; to process double numbers
852 ; define if Terminal half duplex
859 ; ---------------------------
860 ; compute value of FORTHADDON
861 ; ---------------------------
864 FADDON .SET FADDON | 01h
866 .IFDEF MSP430ASSEMBLER
867 FADDON .SET FADDON | 02h
870 FADDON .SET FADDON | 04h
873 FADDON .SET FADDON | 08h
875 .IFDEF VOCABULARY_SET
876 FADDON .SET FADDON | 10h
879 FADDON .SET FADDON | 20h
881 .IFDEF FIXPOINT_INPUT
882 FADDON .SET FADDON | 40h
884 .IFDEF SD_CARD_LOADER
885 FADDON .SET FADDON | 80h
887 .IFDEF SD_CARD_READ_WRITE
888 FADDON .SET FADDON | 100h
891 FADDON .SET FADDON | 200h
895 FADDON .SET FADDON | 400h
899 FADDON .SET FADDON | 800h
901 .IFDEF TERMINAL3WIRES
902 FADDON .SET FADDON | 1000h
904 .IFDEF TERMINAL4WIRES
905 FADDON .SET FADDON | 2000h
907 .IFDEF TERMINAL5WIRES
908 FADDON .SET FADDON | 4000h
911 FADDON .SET FADDON | 8000h