Re: Use of NXC function bcd2dec
Posted: 28 Feb 2011, 23:06
I am not sure how to see the generated NBC code, other than uploading the rxe from the NXT and opening it with BCC. Anyhow, here is the NXC program.
I tried many variations such as changing the input number, using int instead of byte, global variable instead of local... It always displays 0. If I use this line instead, byte dec = bcd2dec(101)+7; it displays 7, so it seems obvious that it is the bcd2dec function that has an issue.
Here is the generated NBC code, uploaded from the NXT.Hopefully that will help you.
Code: Select all
task main()
{
byte dec = bcd2dec(101);
NumOut(0, LCD_LINE1,dec);
while(true);
}
Here is the generated NBC code, uploaded from the NXT.
Code: Select all
/*
testing bcd2dec.rxe
Header
----------------
FormatString = MindstormsNXT
Version = 6
DSCount = 24 (0x18)
DSSize = 72 (0x48)
DSStaticSize = 52 (0x34)
DSDefaultsSize = 26 (0x1A)
DynDSDefaultsOffset = 6 (0x6)
DynDSDefaultsSize = 20 (0x14)
MemMgrHead = 0 (0x0)
MemMgrTail = 1 (0x1)
DVArrayOffset = 52 (0x34)
ClumpCount = 2 (0x2)
CodespaceCount = 64 (0x40)
----------------
DataSpace
----------------
DSTOC
sl0000: 06 01 0000
sl0001: 06 01 0004
ul0002: 05 01 0008
sl0003: 06 01 000C
ul0004: 05 01 0010
sl0005: 06 01 0014
ub0006: 01 01 0018
sb0007: 02 00 0019
ub0008: 01 01 001A
ub0009: 01 01 001B
ub000A: 01 01 001C
ub000B: 01 01 001D
sb000C: 02 00 001E
ub000D: 01 01 001F
sb000E: 02 00 0020
sb000F: 02 00 0021
c0010: 08 00 0004
sb0011: 02 01 0024
c0012: 08 00 0002
sw0013: 04 01 0028
sw0014: 04 01 002A
a0015: 07 00 002C
ub0016: 01 00 0000
ul0017: 05 01 0030
Static DS Defaults
65 0A 10 07 01 00
Dynamic DS Defaults
Dope Vectors (offset, elem size, count, back ptr, link)
00 34 00 0A 00 02 FF FF 00 01
FF FF 00 01 00 00 00 2C FF FF
----------------
ClumpRecords
----------------
2 record(s) (Fire Cnt, Dependent Cnt, Code Start)
t000: 00 00 0000
t001: 01 00 003E
----------------
*/
; -------------- variable declarations --------------
dseg segment
;------- definitions -------
c0012_def struct
sw0013 sword
sw0014 sword
c0012_def ends
c0010_def struct
sb0011 sbyte
c0012 c0012_def
a0015 byte[]
ul0017 dword
c0010_def ends
;------- declarations -------
sl0000 sdword
sl0001 sdword
ul0002 dword
sl0003 sdword
ul0004 dword
sl0005 sdword
ub0006 byte
sb0007 sbyte 101
ub0008 byte
ub0009 byte
ub000A byte
ub000B byte
sb000C sbyte 10
ub000D byte
sb000E sbyte 16
sb000F sbyte 7
c0010 c0010_def
dseg ends
; -------------- program code --------------
thread t000
subcall t001, ub0008
set ub0006, 0x65
div ub000B, sb0007, sb000E
mod ub000A, ub0006, sb000E
mul sl0003, ub000B, sb000C
add sl0003, sl0003, ub000A
add ub0009, ul0004, sb000F
set sl0001, 0x0
set sl0005, 0x38
mov ul0002, ub0009
mov c0010.c0012.sw0013, sl0001
mov c0010.c0012.sw0014, sl0005
set c0010.ul0017, 0x0
numtostr c0010.a0015, ul0002
syscall DrawText, c0010
mov sl0000, c0010.sb0011
lbl0030: set sl0000, 0x1
tst NEQ, ub000D, sl0000
brtst EQ, lbl003B, ub000D
jmp lbl0030
lbl003B: exit -1, -1
endt
;-----------------------------------
thread t001
subret ub0008
endt