gnupic@linuxhacker.org
gnupic@linuxhacker.org
Hi,
I'm running gpsim 0.20.15 (direct from cvs) and simulating a 16C73.
I noticed that my "computed goto" was not doing the right thing; at
first I was trying to jump across a page boundary (my mistake) but
when I fixed that I noticed gpsim doing something that looks wrong.
I must be confused - I'm new to the pic...
It looks like the pc is ignoring bits 8,9 & 10 on a computed goto. I have
code which looks like this
org 0x140
...
movlw 0x00
call table
...
org 0x600
table
addwf pcl,f
dt 1,2,3,4,0
When I simulate the jump to 0x600 works fine, and w=00 but then the "addwf pcl"
is executed the code jumps to location 0x01. The trace buffer looks like
this:
0x0000000000003C83 p16c73 0x01C0 0x00E9 movwf 0x69
read: 0x00 from W
wrote: 0x00 to 0x69
read: 0x3c from TMR1H
0x0000000000003C84 p16c73 0x01C1 0x01E9 clrf 0x69
wrote: 0x00 to 0x69
wrote: 0x1c to status
read: 0x3c from TMR1H
0x0000000000003C85 p16c73 0x01C2 0x0869 movf 0x69,w
read: 0x00 from 0x69
wrote: 0x00 to W
wrote: 0x1c to status
read: 0x3c from TMR1H
0x0000000000003C86 p16c73 0x01C3 0x2600 call 0x0600
read: 0x3c from TMR1H
0x0000000000003C88 p16c73 0x0600 0x0782 addwf pcl,f
wrote: 0x01 to pcl
wrote: 0x18 to status
read: 0x3c from TMR1H
read: 0x3c from TMR1H
Also, I can't explain the reads the TMR1H (looks like a gpsim bug?).
Has anyone else seen this? Am I confused? :-)
-brad
gnupic@linuxhacker.org