Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
9b88b133
Commit
9b88b133
authored
Mar 21, 2003
by
Alan Cox
Committed by
Linus Torvalds
Mar 21, 2003
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[PATCH] pc9800 CS4232 driver
parent
934899d8
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
900 additions
and
0 deletions
+900
-0
sound/isa/cs423x/pc98.c
sound/isa/cs423x/pc98.c
+466
-0
sound/isa/cs423x/pc9801_118_magic.h
sound/isa/cs423x/pc9801_118_magic.h
+411
-0
sound/isa/cs423x/sound_pc9800.h
sound/isa/cs423x/sound_pc9800.h
+23
-0
No files found.
sound/isa/cs423x/pc98.c
0 → 100644
View file @
9b88b133
/*
* Driver for CS4232 on NEC PC9800 series
* Copyright (c) by Jaroslav Kysela <perex@suse.cz>
* Osamu Tomita <tomita@cinet.co.jp>
* Takashi Iwai <tiwai@suse.de>
*
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
#include <sound/driver.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <sound/core.h>
#include <sound/cs4231.h>
#include <sound/mpu401.h>
#include <sound/opl3.h>
#define SNDRV_GET_ID
#include <sound/initval.h>
#include "sound_pc9800.h"
#define chip_t cs4231_t
MODULE_AUTHOR
(
"Osamu Tomita <tomita@cinet.co.jp>"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_CLASSES
(
"{sound}"
);
MODULE_DESCRIPTION
(
"NEC PC9800 CS4232"
);
MODULE_DEVICES
(
"{{NEC,PC9800}}"
);
#define IDENT "PC98-CS4232"
static
int
index
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_IDX
;
/* Index 0-MAX */
static
char
*
id
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_STR
;
/* ID for this card */
static
int
enable
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_ENABLE_ISAPNP
;
/* Enable this card */
static
long
port
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_PORT
;
/* PnP setup */
#if 0 /* NOT USED */
static long cport[SNDRV_CARDS] = SNDRV_DEFAULT_PORT; /* PnP setup */
#endif
static
long
mpu_port
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_PORT
;
/* PnP setup */
static
long
fm_port
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_PORT
;
/* PnP setup */
static
int
irq
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_IRQ
;
/* 5,7,9,11,12,15 */
static
int
mpu_irq
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_IRQ
;
/* 9,11,12,15 */
static
int
dma1
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_DMA
;
/* 0,1,3,5,6,7 */
static
int
dma2
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_DMA
;
/* 0,1,3,5,6,7 */
static
int
pc98ii
[
SNDRV_CARDS
];
/* PC98II */
MODULE_PARM
(
index
,
"1-"
__MODULE_STRING
(
SNDRV_CARDS
)
"i"
);
MODULE_PARM_DESC
(
index
,
"Index value for "
IDENT
" soundcard."
);
MODULE_PARM_SYNTAX
(
index
,
SNDRV_INDEX_DESC
);
MODULE_PARM
(
id
,
"1-"
__MODULE_STRING
(
SNDRV_CARDS
)
"s"
);
MODULE_PARM_DESC
(
id
,
"ID string for "
IDENT
" soundcard."
);
MODULE_PARM_SYNTAX
(
id
,
SNDRV_ID_DESC
);
MODULE_PARM
(
enable
,
"1-"
__MODULE_STRING
(
SNDRV_CARDS
)
"i"
);
MODULE_PARM_DESC
(
enable
,
"Enable "
IDENT
" soundcard."
);
MODULE_PARM_SYNTAX
(
enable
,
SNDRV_ENABLE_DESC
);
MODULE_PARM
(
port
,
"1-"
__MODULE_STRING
(
SNDRV_CARDS
)
"l"
);
MODULE_PARM_DESC
(
port
,
"Port # for "
IDENT
" driver."
);
MODULE_PARM_SYNTAX
(
port
,
SNDRV_PORT12_DESC
);
#if 0 /* NOT USED */
MODULE_PARM(cport, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
MODULE_PARM_DESC(cport, "Control port # for " IDENT " driver.");
MODULE_PARM_SYNTAX(cport, SNDRV_PORT12_DESC);
#endif
MODULE_PARM
(
mpu_port
,
"1-"
__MODULE_STRING
(
SNDRV_CARDS
)
"l"
);
MODULE_PARM_DESC
(
mpu_port
,
"MPU-401 port # for "
IDENT
" driver."
);
MODULE_PARM_SYNTAX
(
mpu_port
,
SNDRV_PORT12_DESC
);
MODULE_PARM
(
fm_port
,
"1-"
__MODULE_STRING
(
SNDRV_CARDS
)
"l"
);
MODULE_PARM_DESC
(
fm_port
,
"FM port # for "
IDENT
" driver."
);
MODULE_PARM_SYNTAX
(
fm_port
,
SNDRV_PORT12_DESC
);
MODULE_PARM
(
irq
,
"1-"
__MODULE_STRING
(
SNDRV_CARDS
)
"i"
);
MODULE_PARM_DESC
(
irq
,
"IRQ # for "
IDENT
" driver."
);
MODULE_PARM_SYNTAX
(
irq
,
SNDRV_IRQ_DESC
);
MODULE_PARM
(
mpu_irq
,
"1-"
__MODULE_STRING
(
SNDRV_CARDS
)
"i"
);
MODULE_PARM_DESC
(
mpu_irq
,
"MPU-401 IRQ # for "
IDENT
" driver."
);
MODULE_PARM_SYNTAX
(
mpu_irq
,
SNDRV_IRQ_DESC
);
MODULE_PARM
(
dma1
,
"1-"
__MODULE_STRING
(
SNDRV_CARDS
)
"i"
);
MODULE_PARM_DESC
(
dma1
,
"DMA1 # for "
IDENT
" driver."
);
MODULE_PARM_SYNTAX
(
dma1
,
SNDRV_DMA_DESC
);
MODULE_PARM
(
dma2
,
"1-"
__MODULE_STRING
(
SNDRV_CARDS
)
"i"
);
MODULE_PARM_DESC
(
dma2
,
"DMA2 # for "
IDENT
" driver."
);
MODULE_PARM_SYNTAX
(
dma2
,
SNDRV_DMA_DESC
);
MODULE_PARM
(
pc98ii
,
"1-"
__MODULE_STRING
(
SNDRV_CARDS
)
"i"
);
MODULE_PARM_DESC
(
pc98ii
,
"Roland MPU-PC98II support."
);
MODULE_PARM_SYNTAX
(
pc98ii
,
SNDRV_BOOLEAN_FALSE_DESC
);
static
snd_card_t
*
snd_pc98_cards
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_PTR
;
/*
* initialize MPU401-UART
*/
static
int
__init
pc98_mpu401_init
(
int
irq
)
{
#include "pc9801_118_magic.h"
#define outp118(reg,data) outb((reg),0x148e);outb((data),0x148f)
#define WAIT118 outb(0x00,0x5f)
int
mpu_intr
,
count
;
#ifdef OOKUBO_ORIGINAL
int
err
=
0
;
#endif
/* OOKUBO_ORIGINAL */
switch
(
irq
)
{
case
3
:
mpu_intr
=
3
;
break
;
case
5
:
mpu_intr
=
2
;
break
;
case
6
:
mpu_intr
=
1
;
break
;
case
10
:
mpu_intr
=
0
;
break
;
default:
snd_printk
(
KERN_ERR
IDENT
": Bad IRQ %d
\n
"
,
irq
);
return
-
EINVAL
;
}
outp118
(
0x21
,
mpu_intr
);
WAIT118
;
outb
(
0x00
,
0x148e
);
if
(
inb
(
0x148f
)
&
0x08
)
{
snd_printk
(
KERN_INFO
IDENT
": No MIDI daughter board found
\n
"
);
return
0
;
}
outp118
(
0x20
,
0x00
);
outp118
(
0x05
,
0x04
);
for
(
count
=
0
;
count
<
35000
;
count
++
)
WAIT118
;
outb
(
0x05
,
0x148e
);
for
(
count
=
0
;
count
<
65000
;
count
++
)
if
(
inb
(
0x148f
)
==
0x04
)
goto
set_mode_118
;
snd_printk
(
KERN_ERR
IDENT
": MIDI daughter board initialize failed at stage1
\n\n
"
);
return
-
EINVAL
;
set_mode_118:
outp118
(
0x05
,
0x0c
);
outb
(
0xaa
,
0x485
);
outb
(
0x99
,
0x485
);
outb
(
0x2a
,
0x485
);
for
(
count
=
0
;
count
<
sizeof
(
Data0485_99
);
count
++
)
{
outb
(
Data0485_99
[
count
],
0x485
);
WAIT118
;
}
outb
(
0x00
,
0x486
);
outb
(
0xaa
,
0x485
);
outb
(
0x9e
,
0x485
);
outb
(
0x2a
,
0x485
);
for
(
count
=
0
;
count
<
sizeof
(
Data0485_9E
);
count
++
)
if
(
inb
(
0x485
)
!=
Data0485_9E
[
count
])
{
#ifdef OOKUBO_ORIGINAL
err
=
1
;
#endif
/* OOKUBO_ORIGINAL */
break
;
}
outb
(
0x00
,
0x486
);
for
(
count
=
0
;
count
<
2000
;
count
++
)
WAIT118
;
#ifdef OOKUBO_ORIGINAL
if
(
!
err
)
{
outb
(
0xaa
,
0x485
);
outb
(
0x36
,
0x485
);
outb
(
0x28
,
0x485
);
for
(
count
=
0
;
count
<
sizeof
(
Data0485_36
);
count
++
)
outb
(
Data0485_36
[
count
],
0x485
);
outb
(
0x00
,
0x486
);
for
(
count
=
0
;
count
<
1500
;
count
++
)
WAIT118
;
outp118
(
0x05
,
inb
(
0x148f
)
|
0x08
);
outb
(
0xff
,
0x148c
);
outp118
(
0x05
,
inb
(
0x148f
)
&
0xf7
);
for
(
count
=
0
;
count
<
1500
;
count
++
)
WAIT118
;
}
#endif
/* OOKUBO_ORIGINAL */
outb
(
0xaa
,
0x485
);
outb
(
0xa9
,
0x485
);
outb
(
0x21
,
0x485
);
for
(
count
=
0
;
count
<
sizeof
(
Data0485_A9
);
count
++
)
{
outb
(
Data0485_A9
[
count
],
0x485
);
WAIT118
;
}
outb
(
0x00
,
0x486
);
outb
(
0xaa
,
0x485
);
outb
(
0x0c
,
0x485
);
outb
(
0x20
,
0x485
);
for
(
count
=
0
;
count
<
sizeof
(
Data0485_0C
);
count
++
)
{
outb
(
Data0485_0C
[
count
],
0x485
);
WAIT118
;
}
outb
(
0x00
,
0x486
);
outb
(
0xaa
,
0x485
);
outb
(
0x66
,
0x485
);
outb
(
0x20
,
0x485
);
for
(
count
=
0
;
count
<
sizeof
(
Data0485_66
);
count
++
)
{
outb
(
Data0485_66
[
count
],
0x485
);
WAIT118
;
}
outb
(
0x00
,
0x486
);
outb
(
0xaa
,
0x485
);
outb
(
0x60
,
0x485
);
outb
(
0x20
,
0x485
);
for
(
count
=
0
;
count
<
sizeof
(
Data0485_60
);
count
++
)
{
outb
(
Data0485_60
[
count
],
0x485
);
WAIT118
;
}
outb
(
0x00
,
0x486
);
outp118
(
0x05
,
0x04
);
outp118
(
0x05
,
0x00
);
for
(
count
=
0
;
count
<
35000
;
count
++
)
WAIT118
;
outb
(
0x05
,
0x148e
);
for
(
count
=
0
;
count
<
65000
;
count
++
)
if
(
inb
(
0x148f
)
==
0x00
)
goto
end_mode_118
;
snd_printk
(
KERN_ERR
IDENT
": MIDI daughter board initialize failed at stage2
\n
"
);
return
-
EINVAL
;
end_mode_118:
outb
(
0x3f
,
0x148d
);
snd_printk
(
KERN_INFO
IDENT
": MIDI daughter board initialized
\n
"
);
return
0
;
}
static
int
__init
pc98_cs4231_chip_init
(
int
dev
)
{
int
intr_bits
,
intr_bits2
,
dma_bits
;
switch
(
irq
[
dev
])
{
case
3
:
intr_bits
=
0x08
;
intr_bits2
=
0x03
;
break
;
case
5
:
intr_bits
=
0x10
;
intr_bits2
=
0x08
;
break
;
case
10
:
intr_bits
=
0x18
;
intr_bits2
=
0x02
;
break
;
case
12
:
intr_bits
=
0x20
;
intr_bits2
=
0x00
;
break
;
default:
snd_printk
(
KERN_ERR
IDENT
": Bad IRQ %d
\n
"
,
irq
[
dev
]);
return
-
EINVAL
;
}
switch
(
dma1
[
dev
])
{
case
0
:
dma_bits
=
0x01
;
break
;
case
1
:
dma_bits
=
0x02
;
break
;
case
3
:
dma_bits
=
0x03
;
break
;
default:
snd_printk
(
KERN_ERR
IDENT
": Bad DMA %d
\n
"
,
dma1
[
dev
]);
return
-
EINVAL
;
}
if
(
dma2
[
dev
]
>=
2
)
{
snd_printk
(
KERN_ERR
IDENT
": Bad DMA %d
\n
"
,
dma2
[
dev
]);
return
-
EINVAL
;
}
if
(
dma1
[
dev
]
!=
dma2
[
dev
]
&&
dma2
[
dev
]
>=
0
)
intr_bits
|=
0x04
;
if
(
PC9800_SOUND_ID
()
==
PC9800_SOUND_ID_118
)
{
/* Set up CanBe control registers. */
snd_printd
(
KERN_INFO
"Setting up CanBe Sound System
\n
"
);
outb
(
inb
(
PC9800_SOUND_IO_ID
)
|
0x03
,
PC9800_SOUND_IO_ID
);
outb
(
0x01
,
0x0f4a
);
outb
(
intr_bits2
,
0x0f4b
);
}
outb
(
intr_bits
|
dma_bits
,
0xf40
);
return
0
;
}
static
int
__init
snd_card_pc98_probe
(
int
dev
)
{
snd_card_t
*
card
;
snd_pcm_t
*
pcm
=
NULL
;
cs4231_t
*
chip
;
opl3_t
*
opl3
;
int
err
;
if
(
port
[
dev
]
==
SNDRV_AUTO_PORT
)
{
snd_printk
(
KERN_ERR
IDENT
": specify port
\n
"
);
return
-
EINVAL
;
}
card
=
snd_card_new
(
index
[
dev
],
id
[
dev
],
THIS_MODULE
,
0
);
if
(
card
==
NULL
)
return
-
ENOMEM
;
if
(
mpu_port
[
dev
]
<
0
||
mpu_irq
[
dev
]
<
0
)
mpu_port
[
dev
]
=
SNDRV_AUTO_PORT
;
if
(
fm_port
[
dev
]
<
0
)
fm_port
[
dev
]
=
SNDRV_AUTO_PORT
;
if
((
err
=
pc98_cs4231_chip_init
(
dev
))
<
0
)
{
snd_card_free
(
card
);
return
err
;
}
if
((
err
=
snd_cs4231_create
(
card
,
port
[
dev
],
-
1
,
irq
[
dev
],
dma1
[
dev
],
dma2
[
dev
],
CS4231_HW_DETECT
,
0
,
&
chip
))
<
0
)
{
snd_card_free
(
card
);
return
err
;
}
if
((
err
=
snd_cs4231_pcm
(
chip
,
0
,
&
pcm
))
<
0
)
{
snd_card_free
(
card
);
return
err
;
}
if
((
err
=
snd_cs4231_mixer
(
chip
))
<
0
)
{
snd_card_free
(
card
);
return
err
;
}
if
((
err
=
snd_cs4231_timer
(
chip
,
0
,
NULL
))
<
0
)
{
snd_card_free
(
card
);
return
err
;
}
if
(
fm_port
[
dev
]
!=
SNDRV_AUTO_PORT
)
{
/* ??? */
outb
(
0x00
,
fm_port
[
dev
]
+
6
);
inb
(
fm_port
[
dev
]
+
7
);
/* Enable OPL-3 Function */
outb
(
inb
(
PC9800_SOUND_IO_ID
)
|
0x03
,
PC9800_SOUND_IO_ID
);
if
(
snd_opl3_create
(
card
,
fm_port
[
dev
],
fm_port
[
dev
]
+
2
,
OPL3_HW_OPL3_PC98
,
0
,
&
opl3
)
<
0
)
{
printk
(
KERN_ERR
IDENT
": OPL3 not detected
\n
"
);
}
else
{
if
((
err
=
snd_opl3_hwdep_new
(
opl3
,
0
,
1
,
NULL
))
<
0
)
{
snd_card_free
(
card
);
return
err
;
}
}
}
if
(
mpu_port
[
dev
]
!=
SNDRV_AUTO_PORT
)
{
err
=
pc98_mpu401_init
(
mpu_irq
[
dev
]);
if
(
!
err
)
{
err
=
snd_mpu401_uart_new
(
card
,
0
,
pc98ii
[
dev
]
?
MPU401_HW_PC98II
:
MPU401_HW_MPU401
,
mpu_port
[
dev
],
0
,
mpu_irq
[
dev
],
SA_INTERRUPT
,
NULL
);
if
(
err
<
0
)
snd_printk
(
KERN_INFO
IDENT
": MPU401 not detected
\n
"
);
}
}
strcpy
(
card
->
driver
,
pcm
->
name
);
strcpy
(
card
->
shortname
,
pcm
->
name
);
sprintf
(
card
->
longname
,
"%s at 0x%lx, irq %i, dma %i"
,
pcm
->
name
,
chip
->
port
,
irq
[
dev
],
dma1
[
dev
]);
if
(
dma1
[
dev
]
>=
0
)
sprintf
(
card
->
longname
+
strlen
(
card
->
longname
),
"&%d"
,
dma2
[
dev
]);
if
((
err
=
snd_card_register
(
card
))
<
0
)
{
snd_card_free
(
card
);
return
err
;
}
snd_pc98_cards
[
dev
]
=
card
;
return
0
;
}
static
int
__init
alsa_card_pc98_init
(
void
)
{
int
dev
,
cards
=
0
;
for
(
dev
=
0
;
dev
<
SNDRV_CARDS
;
dev
++
)
{
if
(
!
enable
[
dev
])
continue
;
if
(
snd_card_pc98_probe
(
dev
)
>=
0
)
cards
++
;
}
if
(
!
cards
)
{
#ifdef MODULE
printk
(
KERN_ERR
IDENT
" soundcard not found or device busy
\n
"
);
#endif
return
-
ENODEV
;
}
return
0
;
}
static
void
__exit
alsa_card_pc98_exit
(
void
)
{
int
idx
;
for
(
idx
=
0
;
idx
<
SNDRV_CARDS
;
idx
++
)
snd_card_free
(
snd_pc98_cards
[
idx
]);
}
module_init
(
alsa_card_pc98_init
)
module_exit
(
alsa_card_pc98_exit
)
#ifndef MODULE
/* format is: snd-pc98-cs4232=enable,index,id,port,
mpu_port,fm_port,
irq,mpu_irq,dma1,dma2,pc98ii */
static
int
__init
alsa_card_pc98_setup
(
char
*
str
)
{
static
unsigned
__initdata
nr_dev
=
0
;
if
(
nr_dev
>=
SNDRV_CARDS
)
return
0
;
(
void
)(
get_option
(
&
str
,
&
enable
[
nr_dev
])
==
2
&&
get_option
(
&
str
,
&
index
[
nr_dev
])
==
2
&&
get_id
(
&
str
,
&
id
[
nr_dev
])
==
2
&&
get_option
(
&
str
,(
int
*
)
&
port
[
nr_dev
])
==
2
&&
get_option
(
&
str
,(
int
*
)
&
mpu_port
[
nr_dev
])
==
2
&&
get_option
(
&
str
,(
int
*
)
&
fm_port
[
nr_dev
])
==
2
&&
get_option
(
&
str
,
&
irq
[
nr_dev
])
==
2
&&
get_option
(
&
str
,
&
mpu_irq
[
nr_dev
])
==
2
&&
get_option
(
&
str
,
&
dma1
[
nr_dev
])
==
2
&&
get_option
(
&
str
,
&
dma2
[
nr_dev
])
==
2
&&
get_option
(
&
str
,
&
pc98ii
[
nr_dev
])
==
2
);
nr_dev
++
;
return
1
;
}
__setup
(
"snd-pc98-cs4232="
,
alsa_card_pc98_setup
);
#endif
/* ifndef MODULE */
sound/isa/cs423x/pc9801_118_magic.h
0 → 100644
View file @
9b88b133
static
unsigned
char
Data0485_A9
[]
=
{
0x12
,
0x03
,
0x90
,
0xc2
,
0x2a
,
0x75
,
0x1e
,
0x20
,
0xe4
,
0x12
,
0x2b
,
0x9b
,
0x22
,
0xa9
,
0x16
,
0x77
,
0x33
,
0xe9
,
0x04
,
0x54
,
0x03
,
0x44
,
0xa8
,
0xf5
,
0x16
,
0xc2
,
0x2f
,
0x22
,
0xa9
,
0x16
,
0x77
,
0x42
,
0xe9
,
0x04
,
0x54
,
0x03
,
0x44
,
0xa8
,
0xf9
,
0x77
,
0xf8
,
0x04
,
0x54
,
0x03
,
0x44
,
0xa8
,
0xf5
,
0x16
,
0xc2
,
0x2f
,
0x22
,
0x90
,
0x25
,
0x9f
,
0x30
,
0x04
,
0x05
,
0xc2
,
0x04
,
0x12
,
0x1f
,
0x62
,
0x30
,
0x00
,
0x05
,
0xc2
,
0x00
,
0x12
,
0x15
,
0xe6
,
0x30
,
0x01
,
0x05
,
0xc2
,
0x01
,
0x12
,
0x29
,
0xaf
,
0x30
,
0x02
,
0x05
,
0xc2
,
0x02
,
0x12
,
0x29
,
0xaf
,
0x30
,
0x05
,
0x05
,
0xc2
,
0x05
,
0x12
,
0x16
,
0x65
,
0x30
,
0x06
,
0x08
,
0xc2
,
0x06
,
0x12
,
0x16
,
0xb1
,
0x12
,
0x29
,
0xaf
,
0x30
,
0x07
,
0x08
,
0xc2
,
0x07
,
0x12
,
0x16
,
0xe9
,
0x12
,
0x29
,
0xaf
,
0x22
,
0x20
,
0x97
,
0x09
,
0x53
,
0xa8
,
0xfb
,
0x12
,
0x04
,
0x2c
,
0x43
,
0xa8
,
0x04
,
0x22
,
0x71
,
0xb8
,
0x71
,
0xb8
,
0x71
,
0xb8
,
0x22
,
0x20
,
0x4b
,
0x04
,
0x75
,
0x4e
,
0x02
,
0x22
,
0xe5
,
0x35
,
0x24
,
0xff
,
0xf5
,
0x35
,
0xe5
,
0x36
,
0x34
,
0xff
,
0xf5
,
0x36
,
0x75
,
0x4e
,
0x02
,
0x22
,
0x10
,
0x19
,
0x02
,
0x80
,
0x08
,
0x78
,
0x00
,
0xe2
,
0x78
,
0x07
,
0xf2
,
0x61
,
0x9b
,
0x78
,
0x11
,
0xe2
,
0xc0
,
0x01
,
0xc0
,
0xf0
,
0xc0
,
0xd0
,
0xc0
,
0x02
,
0x71
,
0x14
,
0xe5
,
0x30
,
0xb4
,
0x01
,
0x02
,
0x61
,
0x93
,
0x43
,
0x08
,
0x40
,
0x12
,
0x2a
,
0x53
,
0x61
,
0x93
,
0x79
,
0x03
,
0xe3
,
0xa2
,
0xe2
,
0x92
,
0x26
,
0xa2
,
0xe3
,
0x92
,
0x27
,
0x22
,
0xad
,
0x2b
,
0xbd
,
0x04
,
0x07
,
0xf5
,
0x72
,
0x78
,
0x27
,
0x02
,
0x11
,
0x76
,
0x02
,
0x11
,
0x30
,
0x00
,
0x00
,
0x00
,
0x12
,
0x28
,
0xba
,
0x79
,
0x01
,
0xe3
,
0x75
,
0x21
,
0x3f
,
0x75
,
0x49
,
0x11
,
0x75
,
0x4c
,
0x11
,
0x31
,
0xdc
,
0x75
,
0x1a
,
0x80
,
0x51
,
0x72
,
0x75
,
0x81
,
0xe3
,
0x12
,
0x25
,
0xc9
,
0x43
,
0xa8
,
0x01
,
0x00
,
0x53
,
0xa8
,
0xfe
,
0x10
,
0x50
,
0x02
,
0x80
,
0x03
,
0x12
,
0x1a
,
0x8d
,
0xd1
,
0x28
,
0x12
,
0x03
,
0xd9
,
0xd1
,
0xf2
,
0x12
,
0x2d
,
0xf0
,
0xb0
,
0x11
,
0x92
,
0xe0
,
0xa2
,
0x2a
,
0xa0
,
0xb5
,
0x82
,
0xe0
,
0x50
,
0x03
,
0x79
,
0x0f
,
0xe3
,
0x71
,
0xca
,
0x51
,
0x1e
,
0x91
,
0xe4
,
0x53
,
0xa8
,
0xfb
,
0x10
,
0x10
,
0x02
,
0x80
,
0x26
,
0xc2
,
0x8e
,
0xd2
,
0xab
,
0xa2
,
0x1c
,
0x40
,
0x13
,
0xa2
,
0x1d
,
0x50
,
0x0a
,
0x43
,
0x08
,
0x40
,
0x12
,
0x1a
,
0x01
,
0xd1
,
0xd7
,
0x80
,
0x0b
,
0x12
,
0x26
,
0x04
,
0x61
,
0x08
,
0x43
,
0x08
,
0x40
,
0x12
,
0x1a
,
0x01
,
0xd2
,
0x1f
,
0x12
,
0x17
,
0x7f
,
0x43
,
0xa8
,
0x04
,
0x51
,
0x1e
,
0x91
,
0xe4
,
0x12
,
0x13
,
0x34
,
0x80
,
0x98
,
0xa2
,
0x17
,
0x72
,
0x16
,
0x72
,
0x15
,
0x72
,
0x2d
,
0x50
,
0x06
,
0xfa
,
0x12
,
0x13
,
0x66
,
0x80
,
0x25
,
0xc2
,
0x13
,
0x30
,
0x28
,
0x05
,
0x12
,
0x02
,
0xbe
,
0x80
,
0x1b
,
0xb4
,
0x10
,
0x12
,
0x78
,
0x00
,
0xf2
,
0xe5
,
0x30
,
0xb4
,
0x01
,
0x06
,
0x12
,
0x03
,
0x90
,
0xd2
,
0x19
,
0x22
,
0x12
,
0x00
,
0xdd
,
0x22
,
0x75
,
0x30
,
0x00
,
0x12
,
0x00
,
0xa1
,
0x22
,
0x00
,
0x00
,
0x75
,
0x1e
,
0x00
,
0x74
,
0x0c
,
0x12
,
0x2b
,
0x9b
,
0x74
,
0x40
,
0x79
,
0x05
,
0xf3
,
0x74
,
0x49
,
0x12
,
0x2b
,
0x9b
,
0x74
,
0x04
,
0x79
,
0x05
,
0xf3
,
0x75
,
0x15
,
0x04
,
0x74
,
0x10
,
0x12
,
0x2b
,
0x9b
,
0x74
,
0x00
,
0x79
,
0x05
,
0xf3
,
0x74
,
0x17
,
0x12
,
0x2b
,
0x9b
,
0x74
,
0x00
,
0x79
,
0x05
,
0xf3
,
0x74
,
0x1a
,
0x12
,
0x2b
,
0x9b
,
0x74
,
0x00
,
0x79
,
0x05
,
0xf3
,
0x74
,
0x0a
,
0x12
,
0x2b
,
0x9b
,
0x74
,
0x20
,
0x79
,
0x05
,
0xf3
,
0x79
,
0xe0
,
0x77
,
0x20
,
0x22
,
0xd0
,
0x02
,
0xd0
,
0xd0
,
0xd0
,
0xf0
,
0xd0
,
0x01
,
0xe5
,
0x5f
,
0xd0
,
0xa8
,
0x22
,
0x00
,
0x00
,
0x90
,
0x25
,
0x9f
,
0x75
,
0x26
,
0xff
,
0x75
,
0x27
,
0xff
,
0x75
,
0x28
,
0x03
,
0x75
,
0x13
,
0xff
,
0x75
,
0x1f
,
0x00
,
0x75
,
0x14
,
0xff
,
0x22
,
0x79
,
0x06
,
0xe5
,
0x29
,
0x60
,
0x0b
,
0xe3
,
0x30
,
0xe1
,
0xf8
,
0xe5
,
0x4f
,
0x64
,
0x80
,
0x79
,
0x07
,
0xf3
,
0x22
,
0x10
,
0x4c
,
0x01
,
0x22
,
0x30
,
0x4b
,
0x0a
,
0xc2
,
0x4b
,
0xe5
,
0x4d
,
0x64
,
0x80
,
0xf5
,
0x4f
,
0x80
,
0x1d
,
0xe5
,
0x15
,
0xa2
,
0xe0
,
0x82
,
0xe6
,
0x40
,
0x02
,
0x80
,
0x35
,
0x30
,
0x4a
,
0x04
,
0xb1
,
0xe6
,
0x80
,
0x0c
,
0x30
,
0x49
,
0x04
,
0x51
,
0x2b
,
0x80
,
0x05
,
0x30
,
0x48
,
0x24
,
0x91
,
0x7e
,
0x79
,
0x06
,
0xe3
,
0x30
,
0xe0
,
0x1a
,
0x79
,
0x06
,
0xf3
,
0xe5
,
0x4e
,
0x24
,
0xff
,
0x50
,
0x04
,
0xf5
,
0x4e
,
0x80
,
0x0d
,
0x79
,
0x0f
,
0xf3
,
0x20
,
0x2a
,
0x07
,
0x12
,
0x2b
,
0x32
,
0x75
,
0x29
,
0x00
,
0x22
,
0x91
,
0x1b
,
0x22
,
0x79
,
0x0f
,
0xe3
,
0xc0
,
0xa8
,
0x75
,
0xa8
,
0x00
,
0x30
,
0x2b
,
0x03
,
0xd0
,
0xa8
,
0x22
,
0x79
,
0x0e
,
0xf3
,
0xd0
,
0xa8
,
0x22
,
0x8a
,
0xf0
,
0xe5
,
0x50
,
0x10
,
0xf3
,
0x10
,
0x23
,
0x23
,
0x23
,
0x25
,
0xf0
,
0x12
,
0x2c
,
0xb8
,
0xa2
,
0xe7
,
0x92
,
0xe4
,
0xc2
,
0xe7
,
0x80
,
0x08
,
0x23
,
0x23
,
0x23
,
0x25
,
0xf0
,
0x12
,
0x2c
,
0x19
,
0x25
,
0x4f
,
0x20
,
0xd2
,
0x04
,
0xf5
,
0x4f
,
0x80
,
0x0a
,
0x40
,
0x05
,
0x75
,
0x4f
,
0x7f
,
0x80
,
0x03
,
0x75
,
0x4f
,
0xff
,
0xea
,
0x12
,
0x2c
,
0x3c
,
0x25
,
0x50
,
0x20
,
0xe7
,
0x05
,
0xb4
,
0x03
,
0x07
,
0x80
,
0x0c
,
0x75
,
0x50
,
0x00
,
0x80
,
0x09
,
0x40
,
0x05
,
0x75
,
0x50
,
0x03
,
0x80
,
0x02
,
0xf5
,
0x50
,
0x22
,
0xe5
,
0x4d
,
0xc4
,
0x54
,
0x0c
,
0x03
,
0x03
,
0xfa
,
0x91
,
0xa9
,
0x71
,
0xb8
,
0xe5
,
0x4d
,
0xc4
,
0x54
,
0x03
,
0xfa
,
0x91
,
0xa9
,
0x71
,
0xb8
,
0xe5
,
0x4d
,
0x54
,
0x0c
,
0x03
,
0x03
,
0xfa
,
0x91
,
0xa9
,
0x71
,
0xb8
,
0xe5
,
0x4d
,
0x54
,
0x03
,
0xfa
,
0x91
,
0xa9
,
0x71
,
0xb8
,
0x22
,
0x8a
,
0xf0
,
0xe5
,
0x50
,
0x23
,
0x23
,
0x25
,
0xf0
,
0x12
,
0x2b
,
0xf6
,
0x25
,
0x4f
,
0x20
,
0xd2
,
0x04
,
0xf5
,
0x4f
,
0x80
,
0x0a
,
0x40
,
0x05
,
0x75
,
0x4f
,
0x7f
,
0x80
,
0x03
,
0x75
,
0x4f
,
0xff
,
0xea
,
0x12
,
0x2c
,
0x40
,
0x25
,
0x50
,
0x20
,
0xe7
,
0x05
,
0xb4
,
0x05
,
0x07
,
0x80
,
0x0c
,
0x75
,
0x50
,
0x00
,
0x80
,
0x09
,
0x40
,
0x05
,
0x75
,
0x50
,
0x05
,
0x80
,
0x02
,
0xf5
,
0x50
,
0x22
,
0x30
,
0x26
,
0x03
,
0x12
,
0x1e
,
0xf5
,
0x30
,
0x27
,
0x03
,
0x12
,
0x1f
,
0x37
,
0x30
,
0x25
,
0x09
,
0x12
,
0x1f
,
0x4e
,
0x30
,
0x23
,
0x03
,
0x12
,
0x1f
,
0x1e
,
0x10
,
0x22
,
0x02
,
0x80
,
0x0a
,
0xe5
,
0x3b
,
0xb4
,
0xff
,
0x02
,
0xc2
,
0x20
,
0x12
,
0x1e
,
0x79
,
0x22
,
0x78
,
0x11
,
0xe2
,
0x20
,
0xe0
,
0x07
,
0xc0
,
0x01
,
0x12
,
0x28
,
0xba
,
0xd0
,
0x01
,
0x78
,
0x00
,
0xf2
,
0x61
,
0x9b
,
0x12
,
0x2b
,
0x32
,
0x12
,
0x17
,
0x7f
,
0x78
,
0x00
,
0xf2
,
0xaa
,
0x35
,
0xab
,
0x36
,
0xea
,
0x24
,
0xff
,
0xfa
,
0xeb
,
0x34
,
0xff
,
0xfb
,
0x50
,
0x03
,
0xd2
,
0x10
,
0x22
,
0x75
,
0x37
,
0x01
,
0x75
,
0x38
,
0x00
,
0x75
,
0x39
,
0x00
,
0x12
,
0x04
,
0x04
,
0xd2
,
0x8e
,
0x22
,
0xa8
,
0x2b
,
0xb8
,
0x00
,
0x02
,
0x80
,
0x03
,
0x02
,
0x11
,
0xbd
,
0xf5
,
0x74
,
0x78
,
0x2a
,
0x12
,
0x11
,
0xec
,
0xe5
,
0x74
,
0x78
,
0x29
,
0x12
,
0x11
,
0xec
,
0x22
,
0xfa
,
0xe5
,
0x2b
,
0x60
,
0x01
,
0x22
,
0xea
,
0x78
,
0x2b
,
0xf5
,
0x75
,
0x12
,
0x11
,
0xec
,
0x22
,
0x74
,
0x10
,
0x12
,
0x2b
,
0x9b
,
0x74
,
0x20
,
0x78
,
0x05
,
0xf2
,
0x74
,
0x09
,
0x12
,
0x17
,
0x75
,
0xe5
,
0x15
,
0x44
,
0x80
,
0x79
,
0x05
,
0xf3
,
0xf5
,
0x15
,
0x12
,
0x17
,
0x7f
,
0x22
,
0x12
,
0x03
,
0x84
,
0x79
,
0x0f
,
0xe3
,
0x78
,
0x00
,
0xf2
,
0x12
,
0x2b
,
0x28
,
0xe5
,
0x81
,
0x24
,
0xfc
,
0xf5
,
0x81
,
0x61
,
0x93
,
0xd2
,
0x07
,
0x78
,
0x11
,
0xe2
,
0x44
,
0x11
,
0xf5
,
0x4c
,
0xc2
,
0x0f
,
0x12
,
0x29
,
0xa3
,
0x61
,
0x93
,
0x02
,
0x1b
,
0x77
,
0x00
,
0xe1
,
0x81
,
0xe1
,
0x9a
,
0xd2
,
0x2c
,
0xa1
,
0x0c
,
0x20
,
0x20
,
0x02
,
0xd2
,
0x26
,
0x02
,
0x1e
,
0x35
,
0x02
,
0x1e
,
0x61
,
0x02
,
0x1d
,
0x8f
,
0xc2
,
0x8e
,
0x75
,
0xa8
,
0x9e
,
0x22
,
0x41
,
0x49
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0x29
,
0x91
,
0x00
,
0x00
,
0x00
,
0xa1
,
0xbb
,
0xa1
,
0xc3
,
0x02
,
0x1e
,
0x6b
,
0xe5
,
0x4d
,
0xc4
,
0x54
,
0x0f
,
0xfa
,
0x91
,
0x2f
,
0x71
,
0xb8
,
0xe5
,
0x4d
,
0x54
,
0x0f
,
0xfa
,
0x91
,
0x2f
,
0x71
,
0xb8
,
0x22
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xa1
,
0xc6
,
0x02
,
0x1d
,
0x8f
,
0xc2
,
0x8e
,
0xd2
,
0xab
,
0xc2
,
0x10
,
0x79
,
0x0f
,
0xf3
,
0x22
,
0x00
,
0x02
,
0x2a
,
0x84
,
0x00
,
0xe1
,
0xbc
,
0xe1
,
0xc8
,
0x02
,
0x1e
,
0x27
,
0x00
,
0x78
,
0x00
,
0xf2
,
0x78
,
0x0b
,
0xe2
,
0xf4
,
0xf5
,
0x4d
,
0xd2
,
0x4c
,
0x61
,
0x9b
,
0x30
,
0xb5
,
0x02
,
0xc2
,
0x11
,
0x22
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x79
,
0xbd
,
0xf1
,
0x3d
,
0x83
,
0x22
,
0xdd
,
0xbd
,
0xbd
,
0xbd
,
0x61
,
0xbd
,
0x8d
,
0x7a
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0x30
,
0xbd
,
0xbd
,
0xbd
,
0x55
,
0xbd
,
0xbd
,
0xbd
,
0x52
,
0xbd
,
0xb6
,
0xb6
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0x00
,
0xbd
,
0xbd
,
0xbd
,
0xe8
,
0xda
,
0xbd
,
0xbd
,
0xcf
,
0xb9
,
0xbd
,
0xc4
,
0xf1
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0x7b
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0x70
,
0x6a
,
0x57
,
0x47
,
0x34
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0x29
,
0xbd
,
0xbd
,
0xbd
,
0xb6
,
0xb6
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0x2e
,
0x25
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xfe
,
0xf5
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0x19
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0x21
,
0x8f
,
0x09
,
0xbd
,
0xf9
,
0x86
,
0xbd
,
0xbd
,
0xbd
,
0xd7
,
0xbd
,
0xa9
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0x9b
,
0xd1
,
0x9d
,
0xbd
,
0xae
,
0xbd
,
0xbd
,
0xbd
,
0xcb
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xb6
,
0xa5
,
0xbd
,
0xc5
,
0xbd
,
0xbd
,
0xbd
,
0xc3
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0xbd
,
0x74
,
0x10
,
0x12
,
0x2b
,
0x9b
,
0xe4
,
0x78
,
0x05
,
0xf2
,
0x74
,
0x09
,
0x12
,
0x17
,
0x75
,
0xe5
,
0x15
,
0x54
,
0x7f
,
0x79
,
0x05
,
0xf3
,
0xf5
,
0x15
,
0x12
,
0x17
,
0x7f
,
0x22
,
0x30
,
0x51
,
0x01
,
0x22
,
0x53
,
0xa8
,
0xfb
,
0x12
,
0x2d
,
0xf0
,
0x50
,
0x22
,
0x79
,
0x03
,
0xe3
,
0x20
,
0xe4
,
0x1c
,
0xaa
,
0x35
,
0xab
,
0x36
,
0xea
,
0x24
,
0xf0
,
0xfa
,
0xeb
,
0x34
,
0xff
,
0xfb
,
0x50
,
0x0e
,
0x10
,
0x1f
,
0x02
,
0x80
,
0x09
,
0x20
,
0x2a
,
0x03
,
0x12
,
0x2b
,
0x32
,
0x12
,
0x2d
,
0xd6
,
0x43
,
0xa8
,
0x04
,
0x22
,
0xa2
,
0x1c
,
0x72
,
0x1d
,
0x40
,
0x07
,
0x53
,
0x08
,
0xbf
,
0x78
,
0x00
,
0xf2
,
0x22
,
0xb1
,
0x1e
,
0x22
,
0x00
,
0x79
,
0x02
,
0x12
,
0x27
,
0x3d
,
0x02
,
0x2d
,
0x37
,
0x14
,
0x54
,
0xf0
,
0x60
,
0x21
,
0xe5
,
0xf0
,
0x24
,
0xb6
,
0xe5
,
0xf0
,
0x50
,
0x16
,
0x24
,
0x8b
,
0x50
,
0x15
,
0xe5
,
0xf0
,
0x24
,
0x56
,
0xe5
,
0xf0
,
0x50
,
0x08
,
0x24
,
0x2f
,
0x50
,
0x09
,
0xe5
,
0xf0
,
0x24
,
0xd9
,
0x24
,
0xd5
,
0x24
,
0xf0
,
0x22
,
0x15
,
0x81
,
0x15
,
0x81
,
0xe9
,
0x22
,
0x78
,
0x13
,
0x74
,
0x00
,
0xf2
,
0x75
,
0x2e
,
0x01
,
0xd2
,
0x6a
,
0xc2
,
0x69
,
0xc2
,
0x68
,
0xc2
,
0x6c
,
0x90
,
0x25
,
0x9f
,
0x75
,
0xb8
,
0x07
,
0x41
,
0xa4
,
0xc0
,
0x01
,
0xc0
,
0xf0
,
0xc0
,
0xd0
,
0xc0
,
0x02
,
0xe5
,
0x3d
,
0x54
,
0x7d
,
0x03
,
0x10
,
0xe5
,
0x05
,
0x90
,
0x28
,
0x4b
,
0x80
,
0x03
,
0x90
,
0x2b
,
0x7c
,
0x73
,
0xe5
,
0x3d
,
0x30
,
0xe5
,
0x07
,
0x74
,
0xfd
,
0x78
,
0x00
,
0xf2
,
0x61
,
0x9b
,
0x90
,
0x1a
,
0x97
,
0x74
,
0xb6
,
0xc0
,
0xe0
,
0x74
,
0x27
,
0xc0
,
0xe0
,
0xc0
,
0xa8
,
0x02
,
0x1b
,
0xab
,
0x90
,
0x25
,
0x9f
,
0xd0
,
0xa8
,
0x22
,
0x90
,
0x27
,
0xb6
,
0xc0
,
0x82
,
0xc0
,
0x83
,
0xc0
,
0xa8
,
0x02
,
0x1d
,
0xa6
,
0x90
,
0x27
,
0xb6
,
0xc0
,
0x82
,
0xc0
,
0x83
,
0xc0
,
0xa8
,
0x02
,
0x1e
,
0x0a
,
0xea
,
0x24
,
0xf0
,
0xfa
,
0xeb
,
0x34
,
0xff
,
0xfb
,
0x50
,
0x2e
,
0x20
,
0x0b
,
0x05
,
0x85
,
0x44
,
0xe0
,
0x80
,
0x03
,
0x75
,
0xe0
,
0x00
,
0x30
,
0xe1
,
0x20
,
0xe5
,
0x35
,
0x24
,
0xff
,
0xf5
,
0x35
,
0xe5
,
0x36
,
0x34
,
0xff
,
0xf5
,
0x36
,
0xc3
,
0xe5
,
0x36
,
0x13
,
0xf5
,
0x36
,
0xe5
,
0x35
,
0x13
,
0xf5
,
0x35
,
0x75
,
0x3a
,
0x10
,
0x12
,
0x1a
,
0x77
,
0x02
,
0x18
,
0x77
,
0x75
,
0x3a
,
0x00
,
0x12
,
0x1a
,
0x77
,
0x02
,
0x18
,
0x1b
,
0x20
,
0x4b
,
0x04
,
0x75
,
0x4e
,
0x03
,
0x22
,
0xe5
,
0x35
,
0x24
,
0xff
,
0xf5
,
0x35
,
0xe5
,
0x36
,
0x34
,
0xff
,
0xf5
,
0x36
,
0x75
,
0x4e
,
0x03
,
0x22
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x22
,
0x02
,
0x2c
,
0x70
,
0xd2
,
0x00
,
0x78
,
0x11
,
0xe2
,
0x44
,
0x11
,
0xf5
,
0x3f
,
0xc2
,
0x08
,
0x12
,
0x29
,
0xa3
,
0x02
,
0x23
,
0x93
,
0x21
,
0x62
,
0x61
,
0x40
,
0x01
,
0x3a
,
0x01
,
0x73
,
0x21
,
0x76
,
0x61
,
0xa8
,
0x21
,
0x39
,
0x21
,
0x4a
,
0x02
,
0x2a
,
0x7b
,
0x79
,
0x06
,
0xf3
,
0xc0
,
0xd0
,
0x12
,
0x03
,
0xd9
,
0x78
,
0x00
,
0xf2
,
0xd0
,
0xd0
,
0x22
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0x2c
,
0xb4
,
0x78
,
0x11
,
0xe2
,
0x44
,
0x11
,
0x54
,
0x0f
,
0xf8
,
0xc4
,
0x48
,
0xd2
,
0x05
,
0xf5
,
0x48
,
0xc2
,
0x0d
,
0x31
,
0xa3
,
0x02
,
0x23
,
0x93
,
0x20
,
0x4b
,
0x04
,
0x75
,
0x4e
,
0x01
,
0x22
,
0xe5
,
0x35
,
0x24
,
0xff
,
0xf5
,
0x35
,
0xe5
,
0x36
,
0x34
,
0xff
,
0xf5
,
0x36
,
0x75
,
0x4e
,
0x01
,
0x22
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x79
,
0xd0
,
0x77
,
0x1b
,
0x79
,
0xd1
,
0x77
,
0x18
,
0x79
,
0xd2
,
0x77
,
0x77
,
0x79
,
0xd3
,
0x77
,
0x18
,
0x22
,
0x75
,
0x29
,
0x00
,
0x75
,
0x25
,
0x00
,
0x75
,
0x34
,
0x03
,
0x75
,
0x22
,
0x00
,
0x75
,
0x23
,
0x05
,
0x75
,
0x4f
,
0x00
,
0x75
,
0x50
,
0x00
,
0x75
,
0x30
,
0x00
,
0x79
,
0xdc
,
0x77
,
0x03
,
0xc2
,
0x8e
,
0x75
,
0x17
,
0xa8
,
0x75
,
0x16
,
0xa8
,
0x74
,
0xaa
,
0x79
,
0x01
,
0xf3
,
0x79
,
0xd7
,
0x77
,
0x74
,
0x79
,
0xd8
,
0x77
,
0xff
,
0x79
,
0xd9
,
0x77
,
0x07
,
0x79
,
0xda
,
0x77
,
0x00
,
0x12
,
0x25
,
0x6f
,
0x43
,
0x08
,
0x40
,
0x71
,
0x32
,
0x79
,
0x0e
,
0xe3
,
0x10
,
0x51
,
0x1c
,
0x74
,
0x06
,
0x71
,
0x9b
,
0xe5
,
0x11
,
0x44
,
0x80
,
0x79
,
0x05
,
0xf3
,
0xf5
,
0x11
,
0x74
,
0x07
,
0x71
,
0x9b
,
0xe5
,
0x12
,
0x44
,
0x80
,
0x79
,
0x05
,
0xf3
,
0xf5
,
0x12
,
0x80
,
0x18
,
0x53
,
0x27
,
0xa0
,
0x53
,
0x28
,
0x01
,
0x75
,
0x20
,
0xf7
,
0x12
,
0x23
,
0x4c
,
0x75
,
0x11
,
0x80
,
0x75
,
0x12
,
0x80
,
0x12
,
0x1f
,
0xc0
,
0x12
,
0x21
,
0xdc
,
0x79
,
0x06
,
0xf3
,
0x22
,
0xd2
,
0x02
,
0x78
,
0x11
,
0xe2
,
0x44
,
0x11
,
0xf5
,
0x43
,
0xc2
,
0x0a
,
0x12
,
0x29
,
0xa3
,
0x02
,
0x23
,
0x93
,
0x78
,
0x11
,
0xe2
,
0x44
,
0x11
,
0xf5
,
0x44
,
0xc2
,
0x0b
,
0x12
,
0x29
,
0xa3
,
0x02
,
0x23
,
0x93
,
0x78
,
0x00
,
0xe2
,
0x90
,
0x25
,
0x9f
,
0x02
,
0x23
,
0x93
,
0x78
,
0x11
,
0xe2
,
0x75
,
0x20
,
0xf7
,
0x75
,
0x21
,
0x3f
,
0x75
,
0x49
,
0x11
,
0x75
,
0x4c
,
0x11
,
0x31
,
0xa3
,
0x02
,
0x23
,
0x93
,
0x78
,
0x11
,
0xe2
,
0x44
,
0x11
,
0x54
,
0x0f
,
0xf8
,
0xc4
,
0x48
,
0xf8
,
0xe5
,
0x49
,
0x45
,
0x3f
,
0x58
,
0xf5
,
0x49
,
0xd2
,
0x06
,
0xc2
,
0x0e
,
0x31
,
0xa3
,
0x02
,
0x23
,
0x93
,
0xc0
,
0x01
,
0x20
,
0x2a
,
0x04
,
0x71
,
0x32
,
0xc2
,
0x11
,
0x11
,
0x5e
,
0xc2
,
0x1f
,
0xd0
,
0x01
,
0x02
,
0x23
,
0x9b
,
0x12
,
0x21
,
0xdc
,
0x78
,
0x00
,
0xf2
,
0x22
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x79
,
0xda
,
0xe7
,
0x70
,
0x2b
,
0x20
,
0x0a
,
0x05
,
0x85
,
0x43
,
0xe0
,
0x80
,
0x03
,
0x75
,
0xe0
,
0x00
,
0x30
,
0xe1
,
0x1d
,
0x20
,
0xe2
,
0x1f
,
0x74
,
0xe0
,
0xca
,
0x74
,
0x00
,
0x71
,
0x9b
,
0xca
,
0x79
,
0x05
,
0xf3
,
0xf5
,
0x09
,
0xca
,
0x74
,
0x01
,
0x71
,
0x9b
,
0xca
,
0x79
,
0x05
,
0xf3
,
0xf5
,
0x0a
,
0x80
,
0x43
,
0x12
,
0x15
,
0x3e
,
0x80
,
0x3e
,
0xe5
,
0x0b
,
0xb4
,
0x17
,
0x02
,
0x80
,
0x0b
,
0x50
,
0x09
,
0x74
,
0x17
,
0xc3
,
0x95
,
0x0b
,
0x44
,
0x60
,
0x80
,
0x02
,
0x74
,
0x60
,
0xca
,
0x74
,
0x00
,
0x71
,
0x9b
,
0xca
,
0x79
,
0x05
,
0xf3
,
0xf5
,
0x09
,
0xe5
,
0x0c
,
0xb4
,
0x17
,
0x02
,
0x80
,
0x0b
,
0x50
,
0x09
,
0x74
,
0x17
,
0xc3
,
0x95
,
0x0c
,
0x44
,
0x60
,
0x80
,
0x02
,
0x74
,
0x60
,
0xca
,
0x74
,
0x01
,
0x71
,
0x9b
,
0xca
,
0x79
,
0x05
,
0xf3
,
0xf5
,
0x0a
,
0x22
,
0xd2
,
0x04
,
0x78
,
0x11
,
0xe2
,
0x44
,
0x11
,
0xf5
,
0x46
,
0xc2
,
0x0c
,
0x31
,
0xa3
,
0x02
,
0x23
,
0x93
,
0xd2
,
0x05
,
0x78
,
0x11
,
0xe2
,
0x44
,
0x11
,
0xf5
,
0x48
,
0xc2
,
0x0d
,
0x31
,
0xa3
,
0x02
,
0x23
,
0x93
,
0xd2
,
0x06
,
0x78
,
0x11
,
0xe2
,
0x44
,
0x11
,
0xf5
,
0x49
,
0xc2
,
0x0e
,
0x31
,
0xa3
,
0x02
,
0x23
,
0x93
,
0x30
,
0x1c
,
0x21
,
0x20
,
0x4d
,
0x1e
,
0xe5
,
0x29
,
0x60
,
0x1a
,
0xc2
,
0x1c
,
0x12
,
0x19
,
0xec
,
0x12
,
0x13
,
0xcf
,
0xd2
,
0x4d
,
0x12
,
0x17
,
0x7f
,
0x78
,
0x00
,
0xf2
,
0x79
,
0x06
,
0xf3
,
0x43
,
0xa8
,
0x04
,
0x12
,
0x24
,
0x1b
,
0x22
,
0x12
,
0x27
,
0x24
,
0x22
,
0x78
,
0x00
,
0xe2
,
0x90
,
0x25
,
0x9f
,
0x02
,
0x23
,
0x93
,
0x78
,
0x00
,
0xe2
,
0xa2
,
0xe7
,
0x72
,
0xe3
,
0x92
,
0xe7
,
0x02
,
0x1d
,
0x85
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x79
,
0x04
,
0xe3
,
0x54
,
0x80
,
0x70
,
0xf9
,
0x22
,
0xe5
,
0x29
,
0x79
,
0xde
,
0xf7
,
0x75
,
0x29
,
0x00
,
0x70
,
0x12
,
0xe5
,
0x15
,
0x79
,
0xdd
,
0xf7
,
0x12
,
0x2d
,
0xf0
,
0x40
,
0x08
,
0x20
,
0x1c
,
0x07
,
0x20
,
0x1d
,
0x04
,
0x80
,
0x02
,
0x71
,
0x32
,
0x30
,
0xb5
,
0x0c
,
0x79
,
0x06
,
0xf3
,
0x20
,
0x2a
,
0x06
,
0x79
,
0xdd
,
0xe7
,
0x54
,
0xfc
,
0xf7
,
0xd2
,
0x2b
,
0x12
,
0x25
,
0x6f
,
0x22
,
0x00
,
0x00
,
0x00
,
0x00
,
0xe5
,
0x15
,
0xa2
,
0xe0
,
0xb0
,
0xe6
,
0x40
,
0x31
,
0xa2
,
0xe1
,
0xb0
,
0xe7
,
0x40
,
0x38
,
0x10
,
0x2b
,
0x02
,
0x80
,
0x26
,
0x79
,
0xde
,
0xe7
,
0x70
,
0x0b
,
0x79
,
0xdd
,
0xe7
,
0x20
,
0xe0
,
0x12
,
0x20
,
0xe1
,
0x28
,
0x80
,
0x16
,
0xf5
,
0x29
,
0x30
,
0x4d
,
0x11
,
0x20
,
0x4c
,
0x0e
,
0x12
,
0x24
,
0x1b
,
0x80
,
0x09
,
0x43
,
0x08
,
0x40
,
0x12
,
0x13
,
0xcf
,
0x12
,
0x17
,
0x7f
,
0xe5
,
0x13
,
0x20
,
0xe4
,
0x05
,
0x12
,
0x18
,
0x1b
,
0x80
,
0x03
,
0x12
,
0x18
,
0x77
,
0xc2
,
0x2b
,
0x22
,
0x12
,
0x26
,
0xd7
,
0x12
,
0x13
,
0xb7
,
0x22
,
0x78
,
0x04
,
0x79
,
0x00
,
0xd9
,
0xfe
,
0xd8
,
0xfa
,
0x22
,
0x00
,
0x74
,
0x09
,
0x71
,
0x9b
,
0xe5
,
0x15
,
0x54
,
0xfc
,
0x79
,
0x05
,
0xf3
,
0xf5
,
0x15
,
0x22
,
0x78
,
0x11
,
0xe2
,
0x44
,
0x11
,
0x54
,
0x0f
,
0xf8
,
0xc4
,
0x48
,
0xf5
,
0x46
,
0xc2
,
0x0c
,
0xd2
,
0x04
,
0x31
,
0xa3
,
0x02
,
0x23
,
0x93
,
0x12
,
0x26
,
0xd7
,
0x12
,
0x00
,
0xb7
,
0x22
,
0x00
,
0x79
,
0x06
,
0xf3
,
0x74
,
0x0a
,
0x71
,
0x9b
,
0x79
,
0xe0
,
0xe7
,
0x44
,
0x02
,
0xf7
,
0x79
,
0x05
,
0xf3
,
0x22
,
0x74
,
0x0a
,
0x71
,
0x9b
,
0x79
,
0xe0
,
0xe7
,
0x54
,
0xfd
,
0xf7
,
0x79
,
0x05
,
0xf3
,
0x22
,
0x21
,
0x59
,
0x41
,
0x23
,
0x21
,
0x59
,
0x41
,
0x33
,
0x41
,
0x43
,
0x21
,
0x59
,
0x21
,
0x59
,
0x02
,
0x25
,
0x9f
,
0x00
,
0x74
,
0x0d
,
0x71
,
0x9b
,
0x74
,
0x4d
,
0x79
,
0x05
,
0xf3
,
0xd2
,
0x52
,
0x22
,
0x00
,
0x53
,
0x08
,
0x40
,
0x45
,
0x08
,
0x45
,
0x1e
,
0x79
,
0x04
,
0xf3
,
0xf5
,
0x08
,
0x22
,
0xd2
,
0x01
,
0x78
,
0x11
,
0xe2
,
0x44
,
0x11
,
0xf5
,
0x42
,
0xc2
,
0x09
,
0x31
,
0xa3
,
0x02
,
0x23
,
0x93
,
0x00
,
0x00
,
0x00
,
0x00
,
0x71
,
0x6e
,
0x74
,
0x09
,
0x12
,
0x17
,
0x75
,
0xe5
,
0x15
,
0x44
,
0x40
,
0x79
,
0x05
,
0xf3
,
0xf5
,
0x15
,
0x75
,
0x3a
,
0x00
,
0x12
,
0x1a
,
0x77
,
0x02
,
0x18
,
0x1b
,
0xf5
,
0x38
,
0xe5
,
0x37
,
0x24
,
0x01
,
0xf5
,
0x37
,
0xe5
,
0x38
,
0x34
,
0x00
,
0xf5
,
0x38
,
0x40
,
0x05
,
0x75
,
0x39
,
0x00
,
0x80
,
0x03
,
0x75
,
0x39
,
0x01
,
0x12
,
0x04
,
0x04
,
0xd2
,
0x8e
,
0x02
,
0x03
,
0x8d
,
0x00
,
0xb4
,
0x0d
,
0x03
,
0x74
,
0x14
,
0x22
,
0x04
,
0x83
,
0x22
,
0x00
,
0x02
,
0xff
,
0x01
,
0x00
,
0x05
,
0xfe
,
0xff
,
0x00
,
0x0a
,
0xfc
,
0xfe
,
0x00
,
0xc0
,
0xf8
,
0xfc
,
0x00
,
0x28
,
0xf0
,
0xf8
,
0x00
,
0x30
,
0xe0
,
0xd0
,
0x01
,
0x88
,
0x04
,
0x83
,
0x22
,
0x00
,
0xff
,
0xfe
,
0xfd
,
0xfc
,
0xfc
,
0xfb
,
0xfa
,
0xfe
,
0xfd
,
0xfb
,
0xf9
,
0xf7
,
0xf7
,
0xf5
,
0xf3
,
0xfc
,
0xfa
,
0xf6
,
0xf2
,
0xee
,
0xee
,
0xea
,
0xe6
,
0xf8
,
0xf4
,
0xec
,
0xe4
,
0xdc
,
0xd4
,
0xcc
,
0xc4
,
0x24
,
0x21
,
0x83
,
0x22
,
0x04
,
0x83
,
0x22
,
0xff
,
0x01
,
0xff
,
0x01
,
0x00
,
0x00
,
0x00
,
0x02
,
0x22
,
0x32
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xff
,
0x00
,
0x00
,
0x00
,
0x00
,
0x01
,
0x01
,
0x01
,
0xff
,
0x00
,
0x00
,
0x00
,
0x00
,
0x01
,
0x01
,
0x01
,
0x83
,
0x22
,
0x8a
,
0x01
,
0x20
,
0x01
,
0x0b
,
0xea
,
0xf3
,
0xf9
,
0x8b
,
0x7e
,
0x6b
,
0xd5
,
0x01
,
0x00
,
0x01
,
0x00
,
0x01
,
0x00
,
0x01
,
0x00
,
0x01
,
0x00
,
0x01
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x01
,
0x3a
,
0x01
,
0x38
,
0x01
,
0x4b
,
0x01
,
0x49
,
0x01
,
0x5c
,
0x01
,
0x5a
,
0x01
,
0x08
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x01
,
0x15
,
0x24
,
0x48
,
0x83
,
0x22
,
0x04
,
0x83
,
0x22
,
0x00
,
0x01
,
0x02
,
0x03
,
0x04
,
0x06
,
0x07
,
0x08
,
0x00
,
0x03
,
0x05
,
0x07
,
0x09
,
0x0d
,
0x0f
,
0x81
,
0x00
,
0x06
,
0x0a
,
0x0e
,
0x82
,
0x8a
,
0x8e
,
0x22
,
0x00
,
0x0c
,
0x84
,
0x8c
,
0x24
,
0x2c
,
0xa4
,
0xac
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xaa
,
0x35
,
0xab
,
0x36
,
0x02
,
0x27
,
0xd4
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x03
,
0x03
,
0x03
,
0x03
,
0x03
,
0x02
,
0x02
,
0x02
,
0x25
,
0x03
,
0x03
,
0x2b
,
0x03
,
0x00
,
0x03
,
0x00
,
0x03
,
0x00
,
0x03
,
0x00
,
0x03
,
0x00
,
0x03
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x03
,
0x03
,
0x03
,
0x03
,
0x03
,
0x03
,
0x03
,
0x03
,
0x03
,
0x03
,
0x03
,
0x03
,
0x03
,
0x03
,
0x03
,
0x83
,
0x22
,
0x00
,
0x02
,
0x02
,
0x02
,
0x01
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x01
,
0x02
,
0x02
,
0x02
,
0x2b
,
0x02
,
0x02
,
0x02
,
0x01
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x01
,
0x02
,
0x02
,
0x02
,
0x01
,
0x01
,
0x02
,
0x02
,
0x01
,
0x01
,
0x02
,
0x01
,
0x01
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x01
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x01
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x01
,
0x01
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x00
,
0x00
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x01
,
0x02
,
0x02
,
0x01
,
0x01
,
0x02
,
0x02
,
0x02
,
0x00
,
0x02
,
0x21
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x01
,
0x00
,
0x02
,
0x02
,
0x01
,
0x02
,
0x02
,
0x02
,
0x00
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x21
,
0x01
,
0x02
,
0x21
,
0x02
,
0x02
,
0x02
,
0x00
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x02
,
0x20
,
0xb5
,
0x05
,
0x79
,
0x0f
,
0xf3
,
0xc2
,
0x11
,
0x22
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xe5
,
0x15
,
0xa2
,
0xe0
,
0xb0
,
0xe6
,
0x50
,
0x01
,
0x22
,
0xa2
,
0xe1
,
0xb0
,
0xe7
,
0x22
,
0x02
,
0x00
};
static
unsigned
char
Data0485_0C
[]
=
{
0x02
,
0x27
,
0x69
};
static
unsigned
char
Data0485_66
[]
=
{
0x02
,
0x25
,
0x47
,
0x02
,
0x25
,
0x60
};
static
unsigned
char
Data0485_60
[]
=
{
0x02
,
0x22
,
0x7e
};
static
unsigned
char
Data0485_99
[]
=
{
0xc2
,
0x53
,
0x02
,
0x12
,
0x86
};
static
unsigned
char
Data0485_9E
[]
=
{
0x70
,
0xf9
,
0x22
};
#ifdef OOKUBO_ORIGINAL
static
unsigned
char
Data0485_36
[]
=
{
0x78
,
0x00
,
0xf2
,
0xc2
,
0x53
,
0x74
,
0x86
,
0xc0
,
0xe0
,
0x74
,
0x12
,
0xc0
,
0xe0
,
0x32
};
#endif
/* OOKUBO_ORIGINAL */
sound/isa/cs423x/sound_pc9800.h
0 → 100644
View file @
9b88b133
#ifndef _SOUND_PC9800_H_
#define _SOUND_PC9800_H_
#include <asm/io.h>
#define PC9800_SOUND_IO_ID 0xa460
/* Sound Functions ID. */
#define PC9800_SOUND_ID() ((inb(PC9800_SOUND_IO_ID) >> 4) & 0x0f)
#define PC9800_SOUND_ID_DO 0x0
/* PC-98DO+ Internal */
#define PC9800_SOUND_ID_GS 0x1
/* PC-98GS Internal */
#define PC9800_SOUND_ID_73 0x2
/* PC-9801-73 (base 0x18x) */
#define PC9800_SOUND_ID_73A 0x3
/* PC-9801-73/76 (base 0x28x) */
#define PC9800_SOUND_ID_86 0x4
/* PC-9801-86 and compatible (base 0x18x) */
#define PC9800_SOUND_ID_86A 0x5
/* PC-9801-86 (base 0x28x) */
#define PC9800_SOUND_ID_NF 0x6
/* PC-9821Nf/Np Internal */
#define PC9800_SOUND_ID_XMATE 0x7
/* X-Mate Internal and compatible */
#define PC9800_SOUND_ID_118 0x8
/* PC-9801-118 and compatible(CanBe Internal, etc.) */
#define PC9800_SOUND_ID_UNKNOWN 0xf
/* Unknown (No Sound System or PC-9801-26) */
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment