OSDN Git Service

8abe6b26c42c9336dc650f246b35b3686d37055d
[fast-forth/master.git] / MSP430-FORTH / CHNGBAUD.f
1 \ -*- coding: utf-8 -*-
2
3 ; ------------
4 ; CHNGBAUD.f
5 ; ------------
6 \
7 \ to see kernel options, download FastForthSpecs.f
8 \ FastForth kernel options: nothing
9 \
10 \ TARGET SELECTION
11 \ MSP_EXP430FR5739  MSP_EXP430FR5969    MSP_EXP430FR5994    MSP_EXP430FR6989
12 \ MSP_EXP430FR4133  MSP_EXP430FR2433    MSP_EXP430FR2355    CHIPSTICK_FR2433
13 \
14
15 PWR_STATE
16
17 : MCLK.
18 0 1000 UM/MOD .
19 ;
20
21 : ESC #27 EMIT ;
22
23 : BAD_MHz
24     1 ABORT"  only for 1,4,8,16,24 MHz MCLK!"
25 ;
26
27 : BAD_SPEED
28 SPACE ESC ." [7m"   \ set reverse video
29 ." with MCLK = " MCLK. 1 ABORT" MHz? don't dream!"
30 ;
31
32 : <> = 0= ;
33
34 : CHNGBAUD                  \ only for 8, 16, 24 MHz
35 PWR_STATE                   \ to remove this created word (garbage collector)
36
37 42              \ number of terminal lines   
38 0 DO CR LOOP    \ don't erase any line of source
39
40 ESC ." [1J"     \ erase up (42 empty lines)
41 ESC ." [H"      \ cursor home
42
43 FREQ_KHZ @ >R               \ r-- target MCLCK frequency in MHz
44 ." target MCLK = " R@ MCLK. ." MHz" CR
45 ." choose your baudrate:" CR
46 ." 0 --> 6 MBds" CR
47 ." 1 --> 5 MBds" CR
48 ." 2 --> 4 MBds" CR      \ linux driver max speed
49 ." 3 --> 2457600 Bds" CR
50 ." 4 --> 921600 Bds" CR
51 ." 5 --> 460800 Bds" CR
52 ." 6 --> 230400 Bds" CR
53 ." 7 --> 115200 Bds" CR
54 ." other --> abort" CR
55 ." your choice: "
56 KEY
57
58 #48 - ?DUP 0=               \ select 6MBds ?
59 IF  ." 6 MBds"              \ add this to the current line
60     R@ #24000 <              \ < 24MHz ?
61     IF  R@ BAD_SPEED
62     THEN
63     R@ #24000 <>             \ 24 MHz ?
64     IF  BAD_MHz             \ no: --> abort
65     THEN                
66     $4                      \ TERM_BRW
67     $0                      \ TERM_MCTLW
68 ELSE 1 - ?DUP 0=            \ select 5MBds ?
69     IF  ." 5 MBds"
70         R@ #16000 <         \ < 16MHz ?
71         IF  R@ BAD_SPEED    \ abort
72         THEN
73         R@ #16000 =
74         IF  $3              \ TERM_BRW
75             $2100           \ TERM_MCTLW
76         ELSE R@ #24000 <>
77             IF  BAD_MHz
78             THEN
79             $4              \ TERM_BRW
80             $EE00           \ TERM_MCTLW
81         THEN
82     ELSE 1 - ?DUP 0=            \ select 4MBds ?
83         IF  ." 4 MBds"
84             R@ #16000 <
85             IF  R@ BAD_SPEED    \ abort
86             THEN
87             R@ #16000 =
88                 IF  $4          \ TERM_BRW
89                     $0          \ TERM_MCTLW
90                 ELSE R@ #24000 <>
91                     IF  BAD_MHz
92                     THEN
93                     $6          \ TERM_BRW
94                     $0          \ TERM_MCTLW
95                 THEN
96         ELSE 1 - ?DUP 0=            \ select 2457600 ?
97             IF  ." 2457600 Bds"
98                 R@ #8000 <           \ < 8MHz ?
99                 IF  R@ BAD_SPEED    \ abort
100                 THEN
101                 R@ #8000 =
102                 IF  $3              \ TERM_BRW
103                     $4400           \ TERM_MCTLW
104                 ELSE R@ #16000 =
105                     IF  $6          \ TERM_BRW
106                         $AA00       \ TERM_MCTLW
107                     ELSE R@ #24000 <>
108                         IF  BAD_MHz
109                         THEN
110                         $9          \ TERM_BRW
111                         $DD00       \ TERM_MCTLW
112                     THEN
113                 THEN
114             ELSE 1 - ?DUP 0=                \ select 921600 ?
115                 IF  ." 921600 Bds"
116                     R@ #4000 <
117                     IF  R@ BAD_SPEED        \ abort 
118                     THEN
119                     R@ #4000 =              \ 4MHz ?
120                     IF  4                   \ TERM_BRW
121                         $4900               \ TERM_MCTLW
122                     ELSE
123                         R@ #8000 =
124                         IF  8               \ TERM_BRW
125                             $D600           \ TERM_MCTLW
126                         ELSE R@ #16000 =
127                             IF  $11         \ TERM_BRW
128                                 $4A00       \ TERM_MCTLW
129                             ELSE R@ #24000 <>
130                                 IF  BAD_MHz
131                                 THEN
132                                 $1          \ TERM_BRW
133                                 $00A1       \ TERM_MCTLW
134                             THEN
135                         THEN
136                     THEN
137                 ELSE 1 - ?DUP 0=                \ select 230400 ?
138                     IF  ." 460800 Bds"
139                         R@ #4000 <
140                         IF  R@ BAD_SPEED        \ abort 
141                         THEN
142                         R@ #4000  =
143                         IF  8                  \ TERM_BRW
144                             $D600               \ TERM_MCTLW
145                         ELSE
146                             R@ #8000  =
147                             IF  17               \ TERM_BRW
148                                 $4A00           \ TERM_MCTLW
149                             ELSE R@ #16000 =
150                                 IF  2           \ TERM_BRW
151                                     $BB21       \ TERM_MCTLW
152                                 ELSE R@ #24000 <>
153                                     IF  BAD_MHz
154                                     THEN
155                                     6           \ TERM_BRW
156                                     $0001       \ TERM_MCTLW
157                                 THEN
158                             THEN
159                         THEN
160                     ELSE 1 - ?DUP 0=                \ select 230400 ?
161                         IF  ." 230400 Bds"
162                             R@ #1000 <
163                             IF  R@ BAD_SPEED        \ abort 
164                             THEN
165                             R@ #1000 =
166                             IF  4
167                                 $4900
168                             ELSE
169                                 R@ #4000  =
170                                 IF  17                  \ TERM_BRW
171                                     $4A00               \ TERM_MCTLW
172                                 ELSE
173                                     R@ #8000  =
174                                     IF  2               \ TERM_BRW
175                                         $BB21           \ TERM_MCTLW
176                                     ELSE R@ #16000 =
177                                         IF  4           \ TERM_BRW
178                                             $5551       \ TERM_MCTLW
179                                         ELSE R@ #24000 <>
180                                             IF  BAD_MHz
181                                             THEN
182                                             3           \ TERM_BRW
183                                             $0241       \ TERM_MCTLW
184                                         THEN
185                                     THEN
186                                 THEN
187                             THEN
188                         ELSE 1 - ?DUP 0=                \ select 115200 ?
189                             IF  ." 115200 Bds"
190                                 R@ #1000  =
191                                 IF  8
192                                     $D600
193                                 ELSE
194                                     R@ #4000  =
195                                     IF  2                   \ TERM_BRW
196                                         $BB21               \ TERM_MCTLW
197                                     ELSE
198                                         R@ #8000  =
199                                         IF  4               \ TERM_BRW
200                                             $5551           \ TERM_MCTLW
201                                         ELSE R@ #16000 =
202                                             IF  8           \ TERM_BRW
203                                                 $F7A1       \ TERM_MCTLW
204                                             ELSE R@ #24000 <>
205                                                 IF  BAD_MHz
206                                                 THEN
207                                                 $0D         \ TERM_BRW
208                                                 $4901       \ TERM_MCTLW
209                                             THEN
210                                         THEN
211                                     THEN
212                                 THEN
213                             ELSE                    \ other selected 
214                                 ." abort" CR ABORT
215                             THEN
216                         THEN
217                     THEN
218                 THEN
219             THEN
220         THEN
221     THEN
222 THEN
223 TERMMCTLW_RST !             \ set UCAxMCTLW value in FRAM
224 TERMBRW_RST !               \ set UCAxBRW value in FRAM
225 R> DROP                     \ clear stacks
226 CR ESC ." [7m"              \ escape sequence to set reverse video
227 ." Change baudrate in Teraterm, save its setup then reset target."
228 ;
229
230 ECHO CHNGBAUD