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 ; notice that ALLOT memory space beyond SIGNATURES don't corrupt it,
663 ; thus 80 bytes are sufficient considering what can be compiled in one line + WORD use.
664 ; good practice: one line for each ALLOT command.
666 ;-----------------------------------------------------------------------
667 ; DEVICE I/O, MEMORY, SFR, vectors and minimum FORTH I/O declarations
668 ;-----------------------------------------------------------------------
669 .IFDEF MSP_EXP430FR5739
673 .include "MSP430FR5739.inc"
676 .IFDEF MSP_EXP430FR5969
680 .include "MSP430FR5969.inc"
683 .IFDEF MSP_EXP430FR5994
687 .include "MSP430FR5994.inc"
690 .IFDEF MSP_EXP430FR6989
694 .INCLUDE "MSP430FR6989.inc"
697 .IFDEF MSP_EXP430FR4133
701 .INCLUDE "MSP430FR4133.inc"
704 .IFDEF MSP_EXP430FR2433
708 .include "MSP430FR2433.inc"
711 .IFDEF CHIPSTICK_FR2433
714 .include "MSP430FR2433.inc"
717 .IFDEF MSP_EXP430FR2355
721 .include "MSP430FR2355.inc"
724 ; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
725 ; add here your device.inc item:
726 ; .IFDEF MY_MSP430FR5738_1
727 ; UCA0_UART ; defines uart used by FORTH input terminal
728 ; LF_XTAL ; defines if your module have a 32768 Hz xtal, to enable it.
729 ; UCB0_SD ; defines UC used for SD Card driver if used
730 ; .include "MSP430FR5738.inc" ; include device declarations
732 ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
734 ; ---------------------------
735 ; compute value of FORTHADDON
736 ; ---------------------------
739 FADDON .SET FADDON | 01h
741 .IFDEF MSP430ASSEMBLER
742 FADDON .SET FADDON | 02h
745 FADDON .SET FADDON | 04h
748 FADDON .SET FADDON | 08h
750 .IFDEF VOCABULARY_SET
751 FADDON .SET FADDON | 10h
754 FADDON .SET FADDON | 20h
756 .IFDEF FIXPOINT_INPUT
757 FADDON .SET FADDON | 40h
759 .IFDEF SD_CARD_LOADER
760 FADDON .SET FADDON | 80h
762 .IFDEF SD_CARD_READ_WRITE
763 FADDON .SET FADDON | 100h
766 FADDON .SET FADDON | 200h
769 FADDON .SET FADDON | 400h
772 FADDON .SET FADDON | 800h
774 .IFDEF TERMINAL3WIRES
775 FADDON .SET FADDON | 1000h
777 .IFDEF TERMINAL4WIRES
778 FADDON .SET FADDON | 2000h
780 .IFDEF TERMINAL5WIRES
781 FADDON .SET FADDON | 4000h
784 ; --------------------------
786 ; --------------------------
789 .IFNDEF MSP430ASSEMBLER
794 ; define if QUIT is DEFERed
795 .IFDEF SD_CARD_LOADER
804 CONDCOMP ; mandatory for Bootstrap
813 .IFNDEF DOUBLE_INPUT ; for indirect extended indexed modes of MOVA ADDA CMPA SUBA instructions
816 .IFNDEF DEFER_ACCEPT ; to write EXTD_LOAD"
822 .IFNDEF FIXPOINT_INPUT
823 FIXPOINT_INPUT ; to interpret fixpoint numbers
827 .IFDEF FIXPOINT_INPUT
828 .IFNDEF DOUBLE_NUMBERS
829 DOUBLE_NUMBERS ; to process double numbers
834 .IFNDEF DOUBLE_NUMBERS
835 DOUBLE_NUMBERS ; to process double numbers
839 ; define if Terminal half duplex