I'm trying to add the ability to simulate the nut processor to my simulator so I've been examining operation of the HP11C (and HP15C) microcode using the 0.78 release of Nonpariel and there is something going on that I find a bit odd.
After a cold start the calculator displays 'Pr Error' when you turn it on but the last thing it does when going back to sleep is to load the C register with zero, select the RAM bank and write -1 to register 8.
At least that is what I think the following is doing:
Code:
cycle 808 P=3 q=3 carry=0 stat=...........b..
a=00000000000000 b=ffdafeaacaffff c=00000000000000
1-3f3 04e c=0 w
cycle 809 P=3 q=3 carry=0 stat=...........b..
a=00000000000000 b=ffdafeaacaffff c=00000000000000
1-3f4 270 sel ram
cycle 810 P=3 q=3 carry=0 stat=...........b..
a=00000000000000 b=ffdafeaacaffff c=00000000000000
1-3f5 260 set hex
cycle 811 P=3 q=3 carry=0 stat=...........b..
a=00000000000000 b=ffdafeaacaffff c=00000000000000
1-3f6 26e c=c-1 w
cycle 812 P=3 q=3 carry=1 stat=...........b..
a=00000000000000 b=ffdafeaacaffff c=ffffffffffffff
1-3f7 228 wrreg 8
cycle 813 P=3 q=3 carry=0 stat=...........b..
a=00000000000000 b=ffdafeaacaffff c=ffffffffffffff
1-3f8 1f8 rdreg 7
cycle 814 P=3 q=3 carry=0 stat=...........b..
a=00000000000000 b=ffdafeaacaffff c=00000000000000
1-3f9 130 ldi 0521
cycle 815 P=3 q=3 carry=0 stat=...........b..
a=00000000000000 b=ffdafeaacaffff c=00000000000000
(immediate)
cycle 816 P=3 q=3 carry=0 stat=...........b..
a=00000000000000 b=ffdafeaacaffff c=00000000000151
1-3fb 2a6 c=-c-1 x
cycle 817 P=3 q=3 carry=1 stat=...........b..
a=00000000000000 b=ffdafeaacaffff c=00000000000eae
1-3fc 1e8 wrreg 7
cycle 818 P=3 q=3 carry=0 stat=...........b..
a=00000000000000 b=ffdafeaacaffff c=00000000000eae
1-3fd 060 powoff
When powered on again it loads the C register with zero again, selects the RAM bank as before, and reads the contents of register 8. Which now appears to be 0. Leaving me - confused...
Code:
cycle 819 P=3 q=3 carry=0 stat=...........b..
a=00000000000000 b=ffdafeaacaffff c=00000000000eae
0-000 1cf ?c goto 00071
cycle 820 P=3 q=3 carry=0 stat=...........b..
a=00000000000000 b=ffdafeaacaffff c=00000000000eae
0-001 04e c=0 w
cycle 821 P=3 q=3 carry=0 stat=...........b..
a=00000000000000 b=ffdafeaacaffff c=00000000000000
0-002 270 sel ram
cycle 822 P=3 q=3 carry=0 stat=...........b..
a=00000000000000 b=ffdafeaacaffff c=00000000000000
0-003 238 rdreg 8
cycle 823 P=3 q=3 carry=0 stat=...........b..
a=00000000000000 b=ffdafeaacaffff c=00000000000000 ** ??? - What happened ?
0-004 2ee ? c<>0 w
cycle 824 P=3 q=3 carry=0 stat=...........b..
a=00000000000000 b=ffdafeaacaffff c=00000000000000
0-005 0ff ?c goto 00044
cycle 825 P=3 q=3 carry=0 stat=...........b..
a=00000000000000 b=ffdafeaacaffff c=00000000000000
0-006 371 ?nc call 01734
cycle 826 P=3 q=3 carry=0 stat=...........b..
a=00000000000000 b=ffdafeaacaffff c=00000000000000
(long branch)
cycle 827 P=3 q=3 carry=0 stat=...........b..
a=00000000000000 b=ffdafeaacaffff c=00000000000000
0-3dc 260 set hex
cycle 828 P=3 q=3 carry=0 stat=...........b..
a=00000000000000 b=ffdafeaacaffff c=00000000000000
0-3dd 0a0 sel p
Any clarification would be very welcome!
Thanks