X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=inc%2FMSP430FR5972.pat;h=79e7d3d03883a7c1ba37e1951205e9820037ec4e;hb=a66f5cf4f547d8e0384632b92f652c120f5a70b5;hp=f3e1a10140fbfabe17d90b11166cc8efd5e8051f;hpb=8561ca8973ea7e51c18be09eddb422b112ef11ff;p=fast-forth%2Fmaster.git diff --git a/inc/MSP430FR5972.pat b/inc/MSP430FR5972.pat index f3e1a10..79e7d3d 100644 --- a/inc/MSP430FR5972.pat +++ b/inc/MSP430FR5972.pat @@ -44,40 +44,65 @@ TERMMCTLW_RST=\$1804! TERMMCTLW_RST I2CSLAVEADR=\$1802! I2C_SLAVE address I2CSLAVEADR1=\$1804! LPM_MODE=\$1806! LPM_MODE value, LPM0+GIE is the default value -RSTIV_MEM=\$1808! SYSRSTIV memory, set to -1 to do Deep RESET -RST_DP=\$180A! RST value for DP -RST_VOC=\$180C! RST value for VOClink -VERSION=\$180E! -THREADS=\$1810! THREADS -KERNEL_ADDON=\$1812! - -WIPE_INI_=\$1814! MOV #WIPE_INI,X -WIPE_COLD=\$1814! WIPE value for PFA_COLD -WIPE_INI_FORTH=\$1816! WIPE value for PFA_INI_FORTH -WIPE_SLEEP=\$1818! WIPE value for PFA_SLEEP -WIPE_WARM=\$181A! WIPE value for PFA_WARM -WIPE_TERM_INT=\$181C! WIPE value for TERMINAL vector -WIPE_DP=\$182E! WIPE value for RST_DP -WIPE_VOC=\$1820! WIPE value for RST_VOC - -INI_FORTH_INI=\$1822! MOV #INI_FORTH_INI,X \ >BODY instruction of INI_FORTH subroutine -INIT_ACCEPT=\$1822! WIPE value for PFAACCEPT -INIT_CR=\$1824! WIPE value for PFACR -INIT_EMIT=\$1826! FORTH value for PFAEMIT -INIT_KEY=\$1828! WIPE value for PFAKEY -INIT_CIB=\$182A! WIPE value for CIB_ADR -HALF_FORTH_INI=\$182C! to preserve the state of DEFERed words, used by user INI_SOFT_APP as: -! ADD #4,0(RSP) \ skip INI_FORTH >BODY instruction "MOV #INI_FORTH_INI,X" -! MOV #HALF_FORTH_INI,X \ replace it by "MOV #HALF_FORTH_INI,X" -! MOV @RSP+,PC \ then RET -INIT_DOCOL=\$182C! FORTH value for rDOCOL (R4) -INIT_DODOES=\$182E! FORTH value for rDODOES (R5) -INIT_DOCON=\$1830! FORTH value for rDOCON (R6) -INIT_DOVAR=\$1832! FORTH value for rDOVAR (R7) -INIT_CAPS=\$1834! FORTH value for CAPS -INIT_BASE=\$1836! FORTH value for BASE -! free EPROM - +USERSTIV=\$1808! user SYS variable, defines software RESET, DEEP_RST, INIT_HARWARE, etc. +VERSION=\$180A! +THREADS=\$180C! THREADS +KERNEL_ADDON=\$180E! BIT15=FLOORED DIVISION +! BIT14=LF_XTAL +! BIT13=UART CTS +! BIT12=UART RTS +! BIT11=UART XON/XOFF +! BIT10=UART half duplex +! BIT9=I2C_TERMINAL +! BIT8=Q15.16 input +! BIT7=DOUBLE input +! BIT6=assembler 20 bits +! BIT5=assembler 16 bits +! BIT4=assembler 16 bits with 20 bits addr +! BIT3=vocabulary set +! BIT2= +! BIT1= +! BIT0= +! +DEEP_ORG=\$1810! MOV #DEEP_ORG,X +DEEP_TERM_VEC=\$1810! to DEEP_INIT TERMINAL vector +DEEP_COLD=\$1812! to DEEP_INIT COLD_APP +DEEP_SOFT=\$1814! to DEEP_INIT SOFT_APP +DEEP_HARD=\$1816! to DEEP_INIT HARD_APP +DEEP_SLEEP=\$1818! to DEEP_INIT SLEEP_APP +DEEP_DP=\$181A! to DEEP_INIT RST_DP +DEEP_LASTVOC=\$181C! to DEEP_INIT RST_LASTVOC +DEEP_CURRENT=\$181E! to DEEP_INIT RST_CURRENT +DEEP_CONTEXT=\$1820! to DEEP_INIT RST_CONTEXT +! +PUC_ABORT_ORG=\$1822! MOV #PUC_ABORT_ORG,X +INIT_ACCEPT=\$1822! to INIT PFA_ACCEPT +INIT_EMIT=\$1824! to INIT PFA_EMIT +INIT_KEY=\$1826! to INIT PFA_KEY +INIT_CIB=\$1828! to INIT CIB_ORG +FORTH_ORG=\$182A! MOV #FORTH_ORG,X \to preserve the state of DEFERed words +INIT_RSP=\$182A! to INIT RSP +INIT_DOCOL=\$182C! to INIT rDOCOL (R4) to restore rDOCOL: MOV &INIT_DOCOL,rDOCOL +INIT_DODOES=\$182E! to INIT rDODOES (R5) +INIT_DOCON=\$1830! to INIT rDOCON (R6) +INIT_DOVAR=\$1832! to INIT rDOVAR (R7) +INIT_CAPS=\$1834! to INIT CAPS +INIT_BASE=\$1836! to INIT BASE +INIT_LEAVE=\$1838! to INIT LEAVEPTR +! +RST_ORG=\$183A! +RST_LEN=\$10! +COLD_APP=\$183A! COLD_APP +SOFT_APP=\$183C! SOFT_APP +HARD_APP=\$183E! HARD_APP +SLEEP_APP=\$1840! SLEEP_APP +RST_DP=\$1842! RST_RET value for (RAM) DDP +RST_LASTVOC=\$1844! RST_RET value for (RAM) LASTVOC +RST_CURRENT=\$1846! RST_RET value for (RAM) CURRENT +RST_CONTEXT=\$1848! RST_RET value for (RAM) CONTEXT (8 CELLS) +! +! $185A = free EPROM +! ! ============================================ ! FRAM TLV ! ============================================ @@ -99,52 +124,47 @@ LSTACK_SIZE=\#16! words PSTACK_SIZE=\#48! words RSTACK_SIZE=\#48! words PAD_LEN=\#84! bytes -TIB_LEN=\#84! bytes +CIB_LEN=\#84! bytes HOLD_SIZE=\#34! bytes ! ---------------------------------------------- ! FastForth RAM memory map (>= 1k): ! ---------------------------------------------- -LEAVEPTR=\$1C00! \ Leave-stack pointer, init by QUIT -LSATCK=\$1C00! \ leave stack, grow up -PSTACK=\$1C80! \ parameter stack, grow down -RSTACK=\$1CE0! \ Return stack, grow down - -PAD_I2CADR=\$1CE0! \ RX I2C address -PAD_I2CCNT=\$1CE2! \ count max -PAD_ORG=\$1CE4! \ user scratch pad buffer, 84 bytes, grow up - -TIB_I2CADR=\$1D38! \ TX I2C address -TIB_I2CCNT=\$1D3A! \ count of bytes -TIB_ORG=\$1D3C! \ Terminal input buffer, 84 bytes, grow up - -HOLDS_ORG=\$1D90! \ base address for HOLDS -HOLD_BASE=\$1DB2! \ BASE HOLD area, grow down - -! ---------------------- -! NOT SAVED VARIABLES -! ---------------------- - +LEAVEPTR=\$1C00! Leave-stack pointer, init by QUIT +LSATCK=\$1C00! leave stack, grow up +PSTACK=\$1C80! parameter stack, grow down +RSTACK=\$1CE0! Return stack, grow down +! +PAD_I2CADR=\$1CE0! RX I2C address +PAD_I2CCNT=\$1CE2! count max +PAD_ORG=\$1CE4! user scratch pad buffer, 84 bytes, grow up +! +TIB_I2CADR=\$1D38! TX I2C address +TIB_I2CCNT=\$1D3A! count of bytes +TIB_ORG=\$1D3C! Terminal input buffer, 84 bytes, grow up +! +HOLDS_ORG=\$1D90! base address for HOLDS +HOLD_BASE=\$1DB2! BASE HOLD area, grow down +! HP=\$1DB2! HOLD ptr -CAPS=\$1DB4! CAPS ON/OFF flag, must be set to -1 before first reset ! -LAST_NFA=\$1DB6! -LAST_THREAD=\$1DB8! -LAST_CFA=\$1DBA! -LAST_PSP=\$1DBC! - -STATEADR=\$1DBE! Interpreter state - -SOURCE_LEN=\$1DC0! len of input stream -SOURCE_ORG=\$1DC2! adr of input stream -TOIN=\$1DC4! >IN -DP=\$1DC6! dictionary ptr - -LASTVOC=\$1DC8! keep VOC-LINK -CONTEXT=\$1DCA! CONTEXT dictionnary space (8 CELLS) -CURRENT=\$1DDA! CURRENT dictionnary ptr - -BASEADR=\$1DDC! numeric base, must be defined before first reset ! -LINE=\$1DDE! line in interpretation, activated with NOECHO, desactivated with ECHO +LAST_NFA=\$1DB4! +LAST_THREAD=\$1DB6! +LAST_CFA=\$1DB8! +LAST_PSP=\$1DBA! +! +STATEADR=\$1DBC! Interpreter state +BASEADR=\$1DBE! base +CAPS=\$1DC0! CAPS ON/OFF +! +SOURCE_LEN=\$1DC2! len of input stream +SOURCE_ORG=\$1DC4! adr of input stream +TOIN=\$1DC6! >IN +DP=\$1DC8! dictionary ptr +! +LASTVOC=\$1DCA! keep VOC-LINK +CURRENT=\$1DCC! CURRENT dictionnary ptr +CONTEXT=\$1DCE! CONTEXT dictionnary space (8 CELLS) +! ! --------------------------------------- !1DE0! 28 RAM bytes free ! --------------------------------------- @@ -267,47 +287,55 @@ MAIN_LEN=\$24000! 127 k FRAM SLEEP=\$4400! CODE_WITHOUT_RETURN, CPU shutdown LIT=\$440A! CODE compiled by LITERAL -XSQUOTE=\$4414! CODE compiled by S" and S_ -HEREXEC=\$4428! CODE HERE and BEGIN execute address -QFBRAN=\$4434! CODE compiled by IF UNTIL -BRAN=\$443A! CODE compiled by ELSE REPEAT AGAIN -NEXT_ADR=\$443C! CODE NEXT instruction (MOV @IP+,PC) -XDO=\$443E! CODE compiled by DO -XPLOOP=\$444E! CODE compiled by +LOOP -XLOOP=\$4460! CODE compiled by LOOP -MUSMOD=\$4466! ASM CODE 32/16 unsigned division, used by ?NUMBER, UM/MOD -MDIV1DIV2=\$4478! ASM CODE input for 48/16 unsigned division with DVDhi=0, see DOUBLE M*/ -MDIV1=\$4480! ASM CODE input for 48/16 unsigned division, see DOUBLE M*/ -RET_ADR=\$44AA! ASM CODE of INI_FORTH_PFA and MARKER+8 definitions, -SETIB=\$44AC! CODE Set Input Buffer with org & len values, reset >IN pointer -REFILL=\$44BC! CODE accept one line from input and leave org len of input buffer -CIB_ADR=\$44CA! [CIB_ADR] = TIB_ORG by default; may be redirected to SDIB_ORG -XDODOES=\$44D4! to restore rDODOES: MOV #XDODOES,rDODOES -XDOCON=\$44E2! to restore rDOCON: MOV #XDOCON,rDOCON -XDOVAR=\$44EE! to restore rDOVAR: MOV #XDOVAR,rDOVAR +XSQUOTE=\$441E! CODE compiled by S" and S_ +HEREXEC=\$4432! CODE HERE and BEGIN execute address +MUSMOD=\$443E! asm CODE 32/16 unsigned division, used by ?NUMBER, UM/MOD +MDIV1DIV2=\$4450! asm CODE input for 48/16 unsigned division with DVDhi=0, see DOUBLE M*/ +MDIV1=\$4458! asm CODE input for 48/16 unsigned division, see DOUBLE M*/ +RET_ADR=\$4482! asm CODE of INIT_SOFT_PFA and MARKER+8 definitions, +SETIB=\$4484! CODE Set Input Buffer with org & len values, reset >IN pointer +REFILL=\$4494! CODE accept one line from input and leave org len of input buffer +CIB_ORG=\$44A0! [CIB_ORG] = TIB_ORG by default; may be redirected to SDIB_ORG +QFBRAN=\$44AC! CODE compiled by IF UNTIL +BRAN=\$44B2! CODE compiled by ELSE REPEAT AGAIN +NEXT_ADR=\$44B4! CODE NEXT instruction (MOV @IP+,PC) +XDODOES=\$44B6! to restore rDODOES: MOV #XDODOES,rDODOES +XDOCON=\$44C4! to restore rDOCON: MOV #XDOCON,rDOCON +! to restore rDOVAR: MOV &INIT_DOVAR,rDOVAR ! to restore rDOCOL: MOV &INIT_DOCOL,rDOCOL -INI_FORTH=\$44F8! asm CODE common part of RST and QABORT, starts FORTH engine -QABORT=\$452A! CODE_WITHOUT_RETURN run-time part of ABORT" -ABORT_TERM=\$4536! CODE_WITHOUT_RETURN, called by QREVEAL and INTERPRET +INIT_FORTH=\$44D0! asm CODE common part of RST and QABORT, starts FORTH engine +QABORT=\$4508! CODE_WITHOUT_RETURN run-time part of ABORT" +ABORT_TERM=\$4512! CODE_WITHOUT_RETURN, called by QREVEAL and INTERPRET !------------------------------------------------------------------------------- -UART_COLD_TERM=\$4594! ASM CODE, content of COLD+2 by default -UART_INIT_TERM=\$459C! ASM CODE, content of WARM+2 by default -UART_RXON=\$45C6! ASM CODE, content of SLEEP+2 by default -UART_RXOFF=\$45C8! ASM CODE, called by ACCEPT before RX char LF. +! UART FASTFORTH !------------------------------------------------------------------------------- -I2C_COLD_TERM=\$45B8! ASM CODE, content of COLD_PFA by default -I2C_INIT_TERM=\$458E! ASM CODE, content of WARM_PFA by default -I2C_RXON=\$45BA! ASM CODE, content of SLEEP_PFA by default -I2C_CTRL_CH=\$45BC! ASM CODE, used as is: MOV.B #CTRL_CHAR,Y +UART_INIT_TERM=\$4554! asm CODE, content of WARM+2 by default (WARM starts with: CALL #UART_INIT_TERM) +UART_COLD_TERM=\$457E! asm CODE, content of COLD+2 by default (COLD starts with: CALL #UART_COLD_TERM) +UART_INIT_SOFT=\$4584! asm CODE, content of INIT_FORTH+2 (by default, INIT_FORTH starts with: CALL #RET_ADR) +UART_RXON=\$4586! asm CODE, content of SLEEP+2 (by default, SLEEP starts with: CALL #UART_RXON) +UART_RXON=KEY\+\$8! asm CODE, content of SLEEP+2 (by default, SLEEP starts with: CALL #UART_RXON) +UART_RXOFF=ACCEPT\+\$2A! asm CODE, called by ACCEPT after 'CR' and before 'LF'. +!------------------------------------------------------------------------------- +! I2C FASTFORTH +!------------------------------------------------------------------------------- +I2C_ACCEPT=\$4544! asm CODE, content of SLEEP+2 by default +I2C_CTRL_CH=\$4546! asm CODE, used as is: MOV.B #CTRL_CHAR,Y ! CALL #I2C_CTRL_CH +I2C_COLD_TERM=\$4556! asm CODE, content of COLD+2, RET address by default +I2C_INIT_SOFT=\$4556! asm CODE, content of INIT_FORTH+2, RET address by default +I2C_INIT_TERM=\$4558! asm CODE, content of WARM+2 by default +I2C_WARM=\$4580! WARM address !------------------------------------------------------------------------------- - +NOPUC=SYS\+\$0A! NOPUC with FORTH: ' SYS 10 + +COLD=SYS\+\$16! COLD address ' SYS 22 + +ABORT=ALLOT\+\$8! CODE_WITHOUT_RETURN ' ALLOT 8 + +QUIT=ALLOT\+\$0E! CODE_WITHOUT_RETURN ' ALLOT 14 + ! ---------------------------------------------- ! Interrupt Vectors and signatures - MSP430FR6989 ! ---------------------------------------------- MAIN_LEN=\$1FC00! 127 k FRAM -FRAM_FULL=\$FF30! 80 bytes are sufficient considering what can be compiled in one line and WORD use. +FRAM_FULL=\$FF40! 64 bytes are sufficient considering what can be compiled in one line and WORD use. SIGNATURES=\$FF80! JTAG/BSL signatures JTAG_SIG1=\$FF80! if 0 (electronic fuse=0) enable JTAG/SBW; must be reset by wipe. JTAG_SIG2=\$FF82! if JTAG_SIG1=\$AAAA, length of password string @ JTAG_PASSWORD