Newbie
04-29-04, 06:58 AM
I am trying to save my program to IsoPod, but everytime I cut off power and reapply, the program starts ok, but the values being output are wrong. Any idea what could be wrong? Missing an EEWORD? The program works fine if I just send it to the IsoPod and start it, but as soon as turn it off and back on, it gets messed up again.
HEX
: DSP8@ ( -- d )
00 FC2 !
PA1 ON
PA2 ON
FC1 @
PA2 OFF
; EEWORD
: DSP8! ( d -- )
FF FC2 !
PA1 OFF
FC1 !
PA2 ON
PA2 OFF
; EEWORD
: CMD> ( -- d ) PA0 OFF DSP8@ ; EEWORD
: LCD> ( -- d ) PA0 ON DSP8@ ; EEWORD
: WNB ( -- ) BEGIN CMD> 80 AND 0= ?TERMINAL OR UNTIL ; EEWORD
: >CMD ( d -- ) PA0 OFF DSP8! WNB ; EEWORD
: >LCD ( d -- ) PA0 ON DSP8! WNB ; EEWORD
: DSP-INIT ( -- )
3F FB1 !
7F FB2 !
0 FB3 !
FF FC1 !
FF FC2 !
0 FC3 !
38 >CMD
38 >CMD
6 >CMD
F >CMD
C >CMD
1 >CMD
80 >CMD
; EEWORD
: CLEAR WNB 1 >CMD ; EEWORD
: HOME WNB 2 >CMD ; EEWORD
: CRLF WNB C0 >CMD ; EEWORD
: MOVE-CURSOR WNB 80 OR >CMD ; EEWORD
: RIGHT-UPPER-CORNER 27 MOVE-CURSOR ; EEWORD
: CURSOR? WNB CMD> 7F AND ; EEWORD
: DSP>L WNB 10 >CMD CURSOR? 27 > IF RIGHT-UPPER-CORNER THEN ; EEWORD
: DSP>R WNB 14 >CMD CURSOR? 27 > IF HOME THEN ; EEWORD
: DSP-EMIT WNB >LCD ; EEWORD
: DSP-SPACE BL DSP-EMIT ; EEWORD
: DSP-SPACES 0 MAX BEGIN ?DUP WHILE 1- DSP-SPACE REPEAT ; EEWORD
: DSP-TYPE
BEGIN
DUP 0= NOT
WHILE
1- SWAP DUP C@ DSP-EMIT 1+ SWAP
REPEAT
2DROP
; EEWORD
DECIMAL
: .DSP ( n -- ) DUP ABS 0 <# #S SIGN #> DSP-TYPE ; EEWORD
: 2.DSP ( n -- ) DUP ABS 0 <# # # 46 HOLD #S SIGN #> DSP-TYPE ; EEWORD
PHERE
0 P,
0 P,
0 P,
0 P,
0 P,
0 P,
0 P,
0 P,
31500 P,
27000 P,
22500 P,
18000 P,
13500 P,
9000 P,
4500 P,
000 P,
CONSTANT CONV-TBL-GRAY2DEC EEWORD
VARIABLE DEG
-1 ALLOT
5 ALLOT
DEG 5 ERASE
CR DEG 5 EXPECT
DEG:
EEWORD
VARIABLE FSECS
-1 ALLOT
7 ALLOT
FSECS 7 ERASE
CR FSECS 7 EXPECT
FSECS:
EEWORD
VARIABLE SAFE
-1 ALLOT
8 ALLOT
SAFE 8 ERASE
CR SAFE 8 EXPECT
SAFE
EEWORD
VARIABLE NTE
-1 ALLOT
7 ALLOT
NTE 7 ERASE
CR NTE 7 EXPECT
NTE
EEWORD
VARIABLE VER
-1 ALLOT
11 ALLOT
VER 11 ERASE
CR VER 11 EXPECT
VERSION 1.0
EEWORD
VARIABLE NUM1 EEWORD
VARIABLE NUM2 EEWORD
VARIABLE VOLTAGE EEWORD
: GETDATA
PORTA GETBYTE
2/ 2/ 2/ 2/
CONV-TBL-GRAY2DEC + P@
; EEWORD
: BOOTSCREEN
REDLED OFF GRNLED OFF YELLED OFF
DSP-INIT
NTE 7 DSP-TYPE
CRLF
VER 11 DSP-TYPE
; EEWORD
: BATTLOW
DECIMAL
ADC0 ANALOGIN
VOLTAGE !
DROP
VOLTAGE @ 20000 <
IF
PWMA1 ON
ELSE
PWMA1 OFF
THEN
; EEWORD
: DEGREES
GETDATA
NUM1 !
DROP
; EEWORD
: COMPARE
BATTLOW
NUM2 @ NUM1 !
GETDATA
NUM2 !
NUM2 @ 560 <
NUM2 @ NUM1 @ = NOT
AND
IF
DSP-INIT
SAFE 8 DSP-TYPE
DEGREES
THEN
NUM2 @ NUM1 @ = NOT
IF
DSP-INIT
DEG 5 DSP-TYPE
NUM2 @ 2.DSP
CRLF
FSECS 7 DSP-TYPE
NUM2 @ 7 / 2.DSP
DEGREES
THEN
; EEWORD
LOOPINDEX 2SEC/100
1 2SEC/100 START
200 2SEC/100 END
EEWORD
MACHINE 2SEC EEWORD
ON-MACHINE 2SEC
APPEND-STATE WAIT2S EEWORD
APPEND-STATE DO-COMPARE EEWORD
IN-STATE
WAIT2S
CONDITION
2SEC/100 COUNT
CAUSES
( NOTHING, REALLY
THEN-STATE
DO-COMPARE
TO-HAPPEN IN-EE
IN-STATE
DO-COMPARE
CONDITION
TRUE
CAUSES
COMPARE
THEN-STATE
DO-COMPARE
TO-HAPPEN IN-EE
: STARTUP
DECIMAL
PWMA0 ON
BOOTSCREEN
2SEC/100 RESET
50000 PERIOD
ISOMAX-START
WAIT2S SET-STATE
INSTALL 2SEC
; EEWORD
SAVE-RAM
HEX
: DSP8@ ( -- d )
00 FC2 !
PA1 ON
PA2 ON
FC1 @
PA2 OFF
; EEWORD
: DSP8! ( d -- )
FF FC2 !
PA1 OFF
FC1 !
PA2 ON
PA2 OFF
; EEWORD
: CMD> ( -- d ) PA0 OFF DSP8@ ; EEWORD
: LCD> ( -- d ) PA0 ON DSP8@ ; EEWORD
: WNB ( -- ) BEGIN CMD> 80 AND 0= ?TERMINAL OR UNTIL ; EEWORD
: >CMD ( d -- ) PA0 OFF DSP8! WNB ; EEWORD
: >LCD ( d -- ) PA0 ON DSP8! WNB ; EEWORD
: DSP-INIT ( -- )
3F FB1 !
7F FB2 !
0 FB3 !
FF FC1 !
FF FC2 !
0 FC3 !
38 >CMD
38 >CMD
6 >CMD
F >CMD
C >CMD
1 >CMD
80 >CMD
; EEWORD
: CLEAR WNB 1 >CMD ; EEWORD
: HOME WNB 2 >CMD ; EEWORD
: CRLF WNB C0 >CMD ; EEWORD
: MOVE-CURSOR WNB 80 OR >CMD ; EEWORD
: RIGHT-UPPER-CORNER 27 MOVE-CURSOR ; EEWORD
: CURSOR? WNB CMD> 7F AND ; EEWORD
: DSP>L WNB 10 >CMD CURSOR? 27 > IF RIGHT-UPPER-CORNER THEN ; EEWORD
: DSP>R WNB 14 >CMD CURSOR? 27 > IF HOME THEN ; EEWORD
: DSP-EMIT WNB >LCD ; EEWORD
: DSP-SPACE BL DSP-EMIT ; EEWORD
: DSP-SPACES 0 MAX BEGIN ?DUP WHILE 1- DSP-SPACE REPEAT ; EEWORD
: DSP-TYPE
BEGIN
DUP 0= NOT
WHILE
1- SWAP DUP C@ DSP-EMIT 1+ SWAP
REPEAT
2DROP
; EEWORD
DECIMAL
: .DSP ( n -- ) DUP ABS 0 <# #S SIGN #> DSP-TYPE ; EEWORD
: 2.DSP ( n -- ) DUP ABS 0 <# # # 46 HOLD #S SIGN #> DSP-TYPE ; EEWORD
PHERE
0 P,
0 P,
0 P,
0 P,
0 P,
0 P,
0 P,
0 P,
31500 P,
27000 P,
22500 P,
18000 P,
13500 P,
9000 P,
4500 P,
000 P,
CONSTANT CONV-TBL-GRAY2DEC EEWORD
VARIABLE DEG
-1 ALLOT
5 ALLOT
DEG 5 ERASE
CR DEG 5 EXPECT
DEG:
EEWORD
VARIABLE FSECS
-1 ALLOT
7 ALLOT
FSECS 7 ERASE
CR FSECS 7 EXPECT
FSECS:
EEWORD
VARIABLE SAFE
-1 ALLOT
8 ALLOT
SAFE 8 ERASE
CR SAFE 8 EXPECT
SAFE
EEWORD
VARIABLE NTE
-1 ALLOT
7 ALLOT
NTE 7 ERASE
CR NTE 7 EXPECT
NTE
EEWORD
VARIABLE VER
-1 ALLOT
11 ALLOT
VER 11 ERASE
CR VER 11 EXPECT
VERSION 1.0
EEWORD
VARIABLE NUM1 EEWORD
VARIABLE NUM2 EEWORD
VARIABLE VOLTAGE EEWORD
: GETDATA
PORTA GETBYTE
2/ 2/ 2/ 2/
CONV-TBL-GRAY2DEC + P@
; EEWORD
: BOOTSCREEN
REDLED OFF GRNLED OFF YELLED OFF
DSP-INIT
NTE 7 DSP-TYPE
CRLF
VER 11 DSP-TYPE
; EEWORD
: BATTLOW
DECIMAL
ADC0 ANALOGIN
VOLTAGE !
DROP
VOLTAGE @ 20000 <
IF
PWMA1 ON
ELSE
PWMA1 OFF
THEN
; EEWORD
: DEGREES
GETDATA
NUM1 !
DROP
; EEWORD
: COMPARE
BATTLOW
NUM2 @ NUM1 !
GETDATA
NUM2 !
NUM2 @ 560 <
NUM2 @ NUM1 @ = NOT
AND
IF
DSP-INIT
SAFE 8 DSP-TYPE
DEGREES
THEN
NUM2 @ NUM1 @ = NOT
IF
DSP-INIT
DEG 5 DSP-TYPE
NUM2 @ 2.DSP
CRLF
FSECS 7 DSP-TYPE
NUM2 @ 7 / 2.DSP
DEGREES
THEN
; EEWORD
LOOPINDEX 2SEC/100
1 2SEC/100 START
200 2SEC/100 END
EEWORD
MACHINE 2SEC EEWORD
ON-MACHINE 2SEC
APPEND-STATE WAIT2S EEWORD
APPEND-STATE DO-COMPARE EEWORD
IN-STATE
WAIT2S
CONDITION
2SEC/100 COUNT
CAUSES
( NOTHING, REALLY
THEN-STATE
DO-COMPARE
TO-HAPPEN IN-EE
IN-STATE
DO-COMPARE
CONDITION
TRUE
CAUSES
COMPARE
THEN-STATE
DO-COMPARE
TO-HAPPEN IN-EE
: STARTUP
DECIMAL
PWMA0 ON
BOOTSCREEN
2SEC/100 RESET
50000 PERIOD
ISOMAX-START
WAIT2S SET-STATE
INSTALL 2SEC
; EEWORD
SAVE-RAM