Fix some init glitches.
This commit is contained in:
@@ -20,6 +20,8 @@ along with this program; if not, write to the Free Software
|
|||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
typedef unsigned char bool8;
|
typedef unsigned char bool8;
|
||||||
typedef unsigned char uint8;
|
typedef unsigned char uint8;
|
||||||
typedef unsigned short uint16;
|
typedef unsigned short uint16;
|
||||||
@@ -30,19 +32,6 @@ typedef long int32;
|
|||||||
#define FALSE 0
|
#define FALSE 0
|
||||||
#define TRUE 1
|
#define TRUE 1
|
||||||
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
bool8 waiting4command;
|
|
||||||
bool8 half_command;
|
|
||||||
uint16 command;
|
|
||||||
uint32 in_count;
|
|
||||||
uint32 in_index;
|
|
||||||
uint32 out_count;
|
|
||||||
uint32 out_index;
|
|
||||||
uint8 parameters[512];
|
|
||||||
uint8 output[512];
|
|
||||||
} DSP4;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Due recognition and credit are given on Overload's DSP website.
|
Due recognition and credit are given on Overload's DSP website.
|
||||||
Thank those contributors for their hard work on this chip.
|
Thank those contributors for their hard work on this chip.
|
||||||
@@ -61,6 +50,19 @@ Fixed-point math reminder:
|
|||||||
#define WRITE_WORD(s, d) (*(uint16 *) (s)) = (d)
|
#define WRITE_WORD(s, d) (*(uint16 *) (s)) = (d)
|
||||||
#define WRITE_DWORD(s, d) (*(uint32 *) (s)) = (d)
|
#define WRITE_DWORD(s, d) (*(uint32 *) (s)) = (d)
|
||||||
|
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
bool8 waiting4command;
|
||||||
|
bool8 half_command;
|
||||||
|
uint16 command;
|
||||||
|
uint32 in_count;
|
||||||
|
uint32 in_index;
|
||||||
|
uint32 out_count;
|
||||||
|
uint32 out_index;
|
||||||
|
uint8 parameters[512];
|
||||||
|
uint8 output[512];
|
||||||
|
} DSP4;
|
||||||
|
|
||||||
// op control
|
// op control
|
||||||
int8 DSP4_Logic; // controls op flow
|
int8 DSP4_Logic; // controls op flow
|
||||||
|
|
||||||
@@ -2043,14 +2045,12 @@ void DSP4_OP11(int16 A, int16 B, int16 C, int16 D, int16 *M)
|
|||||||
//Processing Code
|
//Processing Code
|
||||||
/////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
uint8 dsp4_byte;
|
uint8 dsp4_byte;
|
||||||
uint16 dsp4_address;
|
uint16 dsp4_address;
|
||||||
|
|
||||||
void InitDSP4()
|
void InitDSP4()
|
||||||
{
|
{
|
||||||
|
memset(&DSP4, 0, sizeof(DSP4));
|
||||||
DSP4.waiting4command = TRUE;
|
DSP4.waiting4command = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ NEWSYM DSP4Read16b
|
|||||||
popad
|
popad
|
||||||
mov ah,byte[dsp4_byte]
|
mov ah,byte[dsp4_byte]
|
||||||
ret
|
ret
|
||||||
;
|
|
||||||
NEWSYM DSP4Write16b
|
NEWSYM DSP4Write16b
|
||||||
mov word[dsp4_address],cx
|
mov word[dsp4_address],cx
|
||||||
mov byte[dsp4_byte],al
|
mov byte[dsp4_byte],al
|
||||||
|
|||||||
@@ -3085,6 +3085,7 @@ NEWSYM CheckROMType
|
|||||||
cmp byte[DSP3Enable],1
|
cmp byte[DSP3Enable],1
|
||||||
je .initdsp
|
je .initdsp
|
||||||
cmp byte[DSP4Enable],1
|
cmp byte[DSP4Enable],1
|
||||||
|
jne .notDSP1Hi
|
||||||
pushad
|
pushad
|
||||||
call InitDSP4
|
call InitDSP4
|
||||||
popad
|
popad
|
||||||
|
|||||||
Reference in New Issue
Block a user