HP41xx Emulation Time (phineas) module.

HP41xx Emulation Time (phineas) module.

Postby notwendig » Tue Nov 18, 2014 1:16 am

Hi

I'm new on this group, found it by scanning the netz for useful information for my HP41 emulation project.
See https://sourceforge.net/projects/hp41cx for more information about this.
Now I got a problem during implementation of the Time-Modul. I forked the phineas modul and wrote me own implementations to fit on the design.
And after I tiped in XEQ 'CLOCK' ENTER the calculator runs in an undocumented?? opcode on the Timer-Module-Code.

What does this Opcode do?
address hex spitted
0x5a68 0x18 ; 0000_0110_00 ... ...._...._.. : ???

As you can see on the log the programm writes the SCRegister and after LDI 192 it runs on 0x18 opcode which is not described anywhere.

Any idea?

Another problem is.
If I ignore such undocumented opcodes (NOP), the calculator tries access to the periphery and ram in parallel. (Valid RAM and periphery (clock) selected)
Is there any way to figure out which device (periphery or ram) shall be used?
Any hint will be graceful.

cio. notwendig

Code: Select all
0x5fc8 0x398 ; 1110_0110_00 ... ...._...._.. : C = ST
0x5fc9 0x128 ; 0100_1010_00 ... ...._...._.. : REG[4] =C
set ( 0x00000000000008) WSCR = addr=0x00fb, size=1
cd 0 0
wu 0 0
tm 0x546a9802
cl 0 0
al 0x9184e729c18 0x4c4cef
st 0x480
ac 0
it 0 0x1
ts 0x8
sl 0
END

0x5fca 0x3c4 ; 1111_0001_00 ... ...._...._.. : CLRST
0x5fcb 0x288 ; 1010_0010_00 ... ...._...._.. : S[7] = 1
0x5fcc 0x2c4 ; 1011_0001_00 ... ...._...._.. : S[13] = 0
0x5fcd 0xfd ; 0011_1111_01 0x17e ; 0101_1111_10 : GOLNC 5f3f
0x5f3f 0x185 ; 0110_0001_01 0x168 ; 0101_1010_00 : GSUBNC 5a61
0x5a61 0x4e ; 0001_0011_10 ... ...._...._.. : C<X> =  0
0x5a62 0x3f0 ; 1111_1100_00 ... ...._...._.. : PFAD = C
0x5a63 0xe0 ; 0011_1000_00 ... ...._...._.. : SELQ
0x5a64 0x2dc ; 1011_0111_00 ... ...._...._.. : PT = 13
0x5a65 0xa0 ; 0010_1000_00 ... ...._...._.. : SELP
0x5a66 0x130 ; 0100_1100_00 0xc0 ; 0011_0000_00 : LDI 192
0x5a68 0x18 ; 0000_0110_00 ... ...._...._.. : ???
notwendig
.
.
 
Posts: 3
Joined: Tue Nov 18, 2014 12:39 am

Re: HP41xx Emulation Time (phineas) module.

Postby notwendig » Wed Nov 19, 2014 5:43 pm

Oh sorry, problems are solved I have gotten an corrupted TIME-1C.ROM file.

Instead of

5A68 18h

there must be

5A68 108h

:(

A new file works now.

cio j.
notwendig
.
.
 
Posts: 3
Joined: Tue Nov 18, 2014 12:39 am

Re: HP41xx Emulation Time (phineas) module.

Postby notwendig » Thu Nov 20, 2014 1:20 am

OK, the wrong (undefined) opcode fetch has been gone using a non-corrupted source file. But the other problem still exist.

On the document "NEWT Microprocessor Technical Manual" [Copyright © 2013, 2014, Systemyde International Corporation.] I can read
As discussed in the Memory Organization chapter, there are unimplemented areas in the
register map in 41C mode. Accessing an unimplemented register causes the data_bus to
remain floating, allowing an external device to drive the data_bus.


But who is the winner on this C=REGn statement. On my code it depends on the order of statement 1. and 2.

Unbenannt.png


On the real hardware it must exist a mechanism which makes this behavior deterministics.
But I don't know about. Maybe the device deselecting itself after specific activities? Maybe one of the opcode deselecting a previously selection of an devices or memory selection? Whatever I don't know. :oops:
So any hint or information would be great to catch. :D

j.
notwendig
.
.
 
Posts: 3
Joined: Tue Nov 18, 2014 12:39 am

Re: HP41xx Emulation Time (phineas) module.

Postby hthse » Thu Jun 09, 2016 5:32 am

When Phineas sees that you select a RAM address with DADD=C, it deselects itself.
hthse
..
..
 
Posts: 6
Joined: Mon Jul 13, 2009 2:28 pm


Return to HP-41 Documentation

Who is online

Users browsing this forum: No registered users and 1 guest

cron