

Instructions memory is betweem 0x600 and 0xe00

Format is now:


        31    30       24 22     12 10       0
   0   |                 |    X    |    Y    |
   1   |     |  opcode   |    R    |    A    |
   
Operands can now be twice in size up to 0x7ff.
There's still only 16 opcodes, presumed to be the same.

Power on default is 0x000cf0c0   0x0f0c00c0   SKIP  0x0c0, 0x0c0, 0x0cf, 0x0c0


DBG register (0x52) returns 0xffffffff, 0x53 is used instead but format is 
different.



INTERNAL FX Registers (these are not accessible from host)
---------------------


Inputs
------

0x00      /dev/dsp    Left
0x01	  /dev/dsp    Right  

0x40	  AC97 IN - left
0x41	  AC97 IN - right
	  
0x42	  CD-Digital - Left
0x43	  CD-Digital - Right

0x48	  Audigy Drive Line2/Mic2 - L 
0x49	  Audigy Drive Line2/Mic2 - R

0x4c	  Audigy Drive - Aux2
0x4d	  Audigy Drive - Aux2


Outputs
-------

0x60     Digital Front Left
0x61     Digital Front Right

0x62     Digital Center
0x63     Digital Sub

0x64	 Audigy Drive Headphone - L
0x65	 Audigy Drive Headphone - R

0x66     Digital Rear Left
0x67     Digital Rear Right

0x68     Front - Left
0x69     Front - Right


0x6a	 Center
0x6b	 Subwoofer

0x6e	 Rear - Left
0x6f	 Rear - Right


0x70	 AC97 - Left   (also to front but with pcm volume control)
0x71     AC97 - Right  

0x72	 Recording ('ADC') - Left
0x73	 Recording ('ADC') - Right

0x7c     Possibly Audigy Drive Spdif out Left
0x7d     Possibly Audigy Drive Spdif out Right   

Hardware constants
------------------

0xc0  0x00000000
0xc1  0x00000001
0xc2  0x00000002
0xc3  0x00000003
0xc4  0x00000004
0xc5  0x00000008
0xc6  0x00000010
0xc7  0x00000020
0xc8  0x00000100
0xc9  0x00010000
0xca  0x00000800
0xcb  0x10000000
0xcc  0x20000000
0xcd  0x40000000
0xce  0x80000000
0xcf  0x7fffffff
0xd0  0xffffffff
0xd1  0xfffffffe
0xd2  0xc0000000
0xd3  0x4f1bbcdc
0xd4  0x5a7ef9db
0xd5  0x00100000

0xd6  0x7fffffff  (?) ACCUM?
0xd7  0x0000000   CCR 

0xd8 noise1
0xd9 noise2

0xda  0x02 (?) ? IRQ?
0xdb  ??? noise? counter?

0xdc  0x01 ?


0xde  Tram counter (?)



-The following registers are accessible from both host and internal FX 
core:


0x100 - 0x200 HOST - Unknown, only 6 bits wide
              Internal - seems to behave as a temp GPR
	
0x200 - 0x300 presumably still tram data access buffers
0x300 - 0x400 presumably still tram data address buffers

0x400 - 0x5FF General Purpose Registers (GPR)

0x600 - 0x7FF Instruction memory Space (two locations per instruction)


IOCFG Register (fn0 - 0x18)
--------------

The upper 8 bits are inputs, lower 8 are outputs.

Inputs
------


The following are used to detect if something is plugged into the
card (use 'dbgemu -d f' to see this register (0x18)):

0x2000   - center-sub/digital-out Jack
0x4000	 - Front Jack
0x8000	 - Rear Jack
0x0100	 - Audigy Drive's Headphone Jack


Output
------

0x0040   -   Disable front + rear + center/sub analog output
0x0004	 -   Enable digital out
