\documentclass[letterpaper]{article}
\nonstopmode
\akai
\usepackage{linuxdoc-sgml}
\usepackage{qwertz}
\usepackage{url}
\usepackage[latin1]{inputenc}
\usepackage{t1enc}
\usepackage[english]{babel}
\usepackage{epsfig}
\usepackage{null}
\def\addbibtoc{
\addcontentsline{toc}{section}{\numberline{\mbox{}}\relax\bibname}
}%end-preamble
\setcounter{page}{1}
\title{Sound Blaster AWE 32/64 ÒôÐ§¿¨ HOWTO}
\author{×÷Õß:
Marcus Brinkmann {\ttfamily $<$\onlynameurl{Marcus.Brinkmann@ruhr-uni-bochum.de}$>$}\\ 
ÒëÕß:
Ð»À¥ÖÐ HSIEH Kun-Chung, Ì¨Íå ÖÐ»ªÃñ¹ú Taiwan, Republic of China (NOT People's Republic of China)
{\ttfamily (\onlynameurl{linuxer.bbs@cis.nctu.edu.tw} )}\\ }
\date{v1.2°æ, 1998Äê 1ÔÂ11ÈÕ}
\abstract{±¾ÎÄ¼þÔÚÐðÊöÈçºÎ°²×°¼°½¨¹¹ Sound Blaster 32 (SB AWE 32, SB AWE 64) ÒôÐ§¿¨ÒÔ¼°Ê¹ÓÃÓÉ Takashi Iwai ËùÐ´µÄ AWE Sound Driver ExtensionµÄ Creative LabsÒôÐ§¿¨¡£Ëü»¹°üº¬Ò»Ð©¸ø SB AWE ÏµÍ³ËùÓÃÌØÊâµÄ¹¤¾ßÒÔ¼°²¦·ÅÆ÷¡£ÎÒÊ¹ÓÃµÄÊÇDebian GNU/Linux ÏµÍ³£¬µ«ÊÇÆäËûµÄÈÎºÎÒ»ÖÖ Linux ¹©Ó¦ÉÌ°æ±¾½Ô¿ÉÒÔÔË×÷¡£}


\begin{document}
\maketitle
\tableofcontents

\section{¼ò½é}



ÕâÊÇ Sound Blaster AWE HOWTO£¬Ëü¸øÄãÓÐ¹Øì¶ÈçºÎ·¢»ÓÄãµÄ Sound Blaster 32µÄÏêÏ¸×ÊÑ¶
£¬°üº¬ Wave Table synthesis¡£Õâ·ÝÎÄ¼þº¬¸ÇËùÓÐµÄ SB ¿¨£¬°üº¬ SB 32¡£

ÔÚ DOS »ò Windows µÄÊÀ½ç¡õ£¬ Sound Blaster ÏµÍ³ÒÑÊÇ¸ö¼ÒÓ÷»§ÏþµÄÃû³Æ£¬
¶øÇÒÓÐºÜ¶àµÄ Linux Ê¹ÓÃÕßÒ²ÏëÒªÔÚ Linux ÏÂÊ¹ÓÃËûÃÇ¡£²»ÐÒµÄÊÇ£¬ Creative Labs Ö»Ìá¹©
ÔÚ Windows ÒÔ¼° DOS ÏÂµÄÒôÐ§Çý¶¯³ÌÊ½£¬ËùÒÔÔÚ Linux ÏÂ°²×° SB ¿¨±ä³É²»ÊÇ¼þÐ¡ÊÂÁË¡£
Õâ·ÝÎÄ¼þÊÔÖøÀ´ÐðÊöÎÒÃÇÈçºÎÔÚ Linux µÄ»·¾³ÏÂÊ¹ÓÃ SB AWE ÏµÁÐ¡£




\subsection{¸ÐÐ»}



Õâ·ÝÎÄ¼þÖÐÎÒËù¡õ¼¯µÄ×ÊÑ¶À´×Ôì¶ AWE Driver FAQ ÒÔ¼° ISA PnP FAQ¡£
Çë¿´ \ref{sources} {(Sources)} ÕâÐ©ÎÄ¼þµÄ×÷ÕßÒÔ¼°Î»ÖÃ¡£Ð»Ð»ËùÓÐµÄ×÷Õß£¬²ÅÄÜ
ÓÐ½ñÌì SB AWE µÄÖ§Ô®¡£

ÓÐºÜ¶à»ù±¾¹¤×÷ÒÑÓÉ \nameurl{http://www.4front-tech.com/usslite}{Hannu Savolainen}×öºÃÁË£¬Ëû¿ª·¢ÁËÓë Linux ºËÐÄ³ÌÊ½ÏàËæµÄÒôÐ§Çý¶¯³ÌÊ½¡£Ð»Ð»Äú¡£

ÎÒÏëÐ»Ð» \nameurl{mailto:n.bern@mail.protos.it}{Nicola Bernardelli}
Ëû²âÊÔÁË AWE64 µÄÏà¹Ø¹¦ÄÜ¡£Ã»ÓÐËû£¬ÓÐºÜ¶àµÄ´íÎó¿ÉÄÜ»¹´æÁô¶øÎ´±»·¢ÏÖ¡£

Ð»Ð» \nameurl{ftp://sunsite.unc.edu/pub/Linux/utils/text/sgml-tools-0.99.0.tar.gz}{SGML Tools} Õâ·ÝÌ×¼þ£¬Õâ·Ý HOWTO ÎÄ¼þ¿ÉÒÔÓÐºÜ¶àÖÖÎÄ¼þ¸ñÊ½£¬¶øÇÒÖ»ÐèÊ¹ÓÃÒ»ÖÖ¸ñÊ½¾Í¿É
ÒÔÀ´×ö×ª»»¡£




\subsection{¸Ä°æÀúÊ·}



\begin{description}


\item[°æ±¾ 1.0] \mbox{}

Ê×°æ

\item[°æ±¾ 1.1] \mbox{}

ÐÞ¸ÄÆ´×Öáá(Ð»Ð» Curt!)£¬Ôö¶©¸ø {\ttfamily isapnp}µÄÐèÇó£¬ÏÖÔÚ¿ÉÒÔ¾­ÓÉ
sunsite ÒÔ¼°ËüµÄÓ³ÉäÕ¾È¡µÃ

\item[°æ±¾ 1.2] \mbox{}

·¨ÎÄ°æÒÑ¾­³öÂ¯ÁË!£¬Ö»×öÉÙÐíµÄÐÞÕý£¬ÐÞ¶©ÁËºÜ¶àÆ´×Ö (¸ÐÐ» ispell)



\end{description}







\subsection{±¾ÎÄ¼þµÄÐÂ°æ±¾}



×îÐÂµÄ°æ±¾¿ÉÒÔÔÚÎÒµÄÊ×Ò³¡õÕÒµ½ \nameurl{http://homepage.ruhr-uni-bochum.de/Marcus.Brinkmann/soundblaster.html}{Sound Blaster AWE HOWTO}¡£

Õâ·ÝÎÄ¼þµÄÐÂ°æ±¾»á±»ÉÏÔØµ½Ðí¶à FTP Õ¾ÉÏ£¬°üº¬
\nameurl{ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini}{}¡£

Õâ·ÝÎÄ¼þµÄ³¬±¾ÎÄ°æÒÔ¼°ÆäËûµÄ Linux HOWTO ÎÄ¼þ¶¼¿ÉÔÚÐí¶àµÄ WWW Õ¾¡õÕÒµ½£¬Ïñ
\nameurl{http://sunsite.unc.edu/LDP/}{}¡£Ðí¶àµÄ Linux CD-ROM ¹©Ó¦ÉÌ°æ¡õÒ²¶¼
»áÓÐ HOWTO ÎÄ¼þ£¬Í¨³£ÊÇ·ÅÔÚ {\ttfamily /usr/doc} Ä¿Â¼ÏÂ¡£

¸ÐÐ» Arnaud Launay \onlynameurl{zoro@lsol.tm.fr}£¬Õâ·ÝÎÄ¼þµÄ·¨ÎÄ°æ²ÅÄÜµ®Éú!
×îÐÂµÄ°æ±¾¿ÉÒÔÓÉ \nameurl{http://www.freenix.fr/linux/HOWTO}{http}
»ò \nameurl{ftp://ftp.lip6.fr/pub/linux/french/docs/HOWTO}{anonymous ftp}È¡µÃ¡£

Èç¹ûÄãÒª·­ÒëÕâ·ÝÎÄ¼þµ½ÄãµÄÓïÑÔ£¬ÇëÈÃÎÒÖªµÀ£¬ÎÒ»á¼ÓÈëÒ»·ÝËüµÄ²Î¿¼Á¬½á¡£

Òë×¢£ºÕâ·ÝÎÄ¼þµÄÖÐÎÄ°æ¿ÉÔÚ\nameurl{http://www.linux.org.tw/LCDP/}{}ÏÂÈ¡µÃ¡£




\subsection{»ØÓ¦}



ÎÒÑöÀµÄã£¬¸÷Î»¶ÁÕß£¬À´ÈÃÕâ·Ý HOWTO ±äµÃÓÐÓÃ¡£Èç¹ûÄãÓÐÈÎºÎµÄ½¨Òé£¬¸üÕý»òÖ¸½Ì
ÇëÈÃÎÒÖªµÀ \onlynameurl{Marcus.Brinkmann@ruhr-uni-bochum.de}£¬ÎÒ»á½«ËüÕûºÏµ½ÏÂÒ»°æ±¾¡õ¡£

ÎÒÌØ±ð»¶Ó­¹Øì¶ÆäËûÓÐÍâµÄ Linux ¹©Ó¦°æ±¾µÄÆô¶¯³ÌÐò (Æô¶¯ÃüÁîÊÖ¸å..µÈ)ÀýÈç
Red Hat »ò SuSE Linux¡£

Èç¹ûÄã½«Õâ·ÝÎÄ¼þ³ö°æµ½ CD-ROM »òÆäËûÐÎÊ½£¬Èç¹û¿ÉÒÔ¸øÎÒÒ»·ÝÃâ·ÑÑùÆ·ÎÒ»áºÜ¸Ð¼¤Äã¡£
ÇëÄã½«Ëû¼Äµ½ÎÒµÄÓÊÕþµØÖ·¡£»¹ÓÐ£¬Äú¿É¿¼ÂÇ¾èÇ®¸ø Linux ÎÄ¼þ¼Æ»­À´Ð­ÖúÎÒÃÇÎª Linux
×öÃâ·ÑµÄÎÄ¼þ¡£ÇëÄúÁ¬Âç Linux HOWTO Á¬ÂçÈË Tim Bynum \onlynameurl{linux-howto@sunsite.unc.edu}¡£




\subsection{É¢²¼Õþ²ß}



°æ±¾ 1997 Marcus Brinkmann

Õâ¸ö HOWTO ÊÇ·ÝÃâ·ÑÎÄ¼þ£»Äã¿ÉÒÔÔÚÃâ·ÑÈíÌå»ù±¾»á (Free Software Foundation)
µÄ GNU Ò»°ã¹«ÓÃÖ´ÕÕµÄÌõ¼þ(µÚ¶þ°æ»ò¸üÐÂµÄ°æ±¾)ÏÂÀ´Ìá¹©»òÐÞ¸ÄËü¡£

Õâ·ÝÎÄ¼þµÄÉ¢²¼ÊÇÏ£ÍûËüÄÜÄÜÓÐÓÃ´¦£¬µ« {\bfseries ²»×öÈÎºÎ±£Ö¤}( ÉõÖÁÈÎºÎ°µÊ¾µÄ±£Ö¤)
{\bfseries ¿ÉÏúÊÛµÄ} »ò {\bfseries ÊÊºÏÌØ±ðÄ¿µØµÄ}¡£ÏêÇéÇë¿´ GNU Ò»°ã¹«ÓÃÖ´ÕÕ¡£

Äã¿ÉÒÔÐ´ÐÅµ½ \nameurl{http://www.fsf.org}{Free Software Foundation},
À´È¡µÃÒ»·Ý GNU Ò»°ã¹«ÓÃÖ´ÕÕ¡£ µØÖ· Inc., 675 Mass Ave, Cambridge, MA 02139
USA¡£






\section{ÔÚÄã¿ªÊ¼Ö®Ç°}






\subsection{¼ò½é}



Õâ·ÝÎÄ¼þÊÔÖø°ïÖúÄãÔÚ Linux ÏµÍ³ÉÏ°²×°ÒÔ¼°Ê¹ÓÃ Creative Labs µÄ Sound Blaster AWE 32 »ò Sound Blaster AWE 64
¡£ÎÒËùÓÃµÄÏµÍ³ÊÇ \nameurl{http://www.debian.org}{Debian GNU/Linux}
ÏµÍ³£¬ÔÚÒ»Ì¨Intel i586 µçÄÔÆ½Ì¨ÉÏ£¬ËüÓ¦¸Ã¿ÉÔÚÆäËûµÄ Linux ¹©Ó¦ÉÌ°æÒÔ¼°ÆäËûÖ§Ô® Linux ÒôÐ§Çý¶¯³ÌÊ½µÄÆ½Ì¨ÉÏ£¬
(Èç¹ûÓÐ²»Í¬´¦£¬ÎÒ»á°ÑËüÃÇÌá³öÀ´)¡£

¼ÇµÃÒª×ÐÏ¸ÔÄ¶Á Linux Sound HOWTO (Çë¿´ \ref{moreinfo} {(Additional Information)}ÕÂ½Ú)¡£ÎÒÖ»ÊÇ²¹³ä Sount HOWTO ²»×ãµÄµØ·½¶øÒÑ£¬
ÓÐÐ©×ÊÑ¶ÎÒ»áÇëÄãÔÙÈ¥ÔÄ¶Á Sound HOWTO£¬Õâ¶ù²»ÔÙ×¸Êö¡£






\subsection{¹Øì¶ SB AWE ¿¨µÄÒ»°ã³£Ê¶}



SB AWE 32 ÒôÐ§¿¨Ìá¹©ÁËÑô´ºµÄÒôÐ§Éè±¸¡¢±ê×¼ OPL-2/OPL-3 ºÏ³ÉÆ÷¡¢ MPU-401 MIDI
²ºÒÔ¼°ÓÐ 32 voices µÄ EMU 8000 Wave Table ºÏ³ÉÆ÷¡£ (Ïë½øÒ»²½ÁË½âÕâÐ©ÊõÓïµÄ
ÒâË¼Çë¿´Linux Sound HOWTO)¡£Õâ·ÝÎÄ¼þµÄÄ¿±êÊÇÒªÐ­ÖúÄãÊ¹ÓÃ¼°·¢»ÓÕâÐ©¹¦ÄÜ¡£

SB AWE 64 ³ýÁËÏàÈÝì¶ SB AWE 32 Ö®Íâ£¬»¹Ôö¼ÓÁËÒ»¸öÁ¬Creative Labs ¹«Ë¾¶¼ÌØ±ð
¸Ðµ½½¾°ÁµÄ Wave Guide ºÏ³ÉÆ÷¡£ Linux Ê¹ÓÃÕßËùÃæÁÙµÄÒ»¸öÎÊÌâÊÇ£¬ ÐÂÔö¼ÓµÄ 32
Ä£ÄâÉùÒôÊÇÓÉÈíÌåËù²úÉúÔÙ¾­ÓÉÑô´ºµÄÉù²¨Éè±¸À´Êä³öµÄ¡£ÒòÎª Creative Labs ÒÔÎª
ÔÚ Linux µÄÇý¶¯³ÌÊ½ÉÏ²¢Ã»ÓÐÊÐ³¡¿ÉÑÔ£¬ËùÒÔ²ÅÖ»Ìá¹© Windows 3.1 ¼° Windows 95
µÄÇý¶¯³ÌÊ½¶øÒÑ¡£

ÕâÒâÎ¶Öø£¬´Ó  Linux Ê¹ÓÃÕßµÄ¹Ûµã¿´À´£¬SB AWE 32 ºÍ SB AWE 64 ´ó¼Ò¶¼ÏþµÃ£¬
ÏÂÃæ¿ªÊ¼³ý·ÇÁ½ÕßÓÐ²»Í¬´¦µÄ±È½ÏÍâ£¬ÎÒ½«ÒÔ SB AWE À´´ú±íÁ½Õß¡£




\subsection{¹Øì¶ Plug \& Play ¿¨¿¨µÄÒ»°ã³£Ê¶ }



×î½üÅäºÏ Intel Æ½Ì¨µÄ½éÃæ¿¨¶¼ÊÇ ISA PnP ¿¨£¬¼ò³ÆÎª ``Plug and Play''¡£
Ò²¾ÍÊÇËµ£¬ÕâÐ©¿¨±ØÐëÓÉ×÷ÒµÏµÍ³À´½¨¹¹£¬ÕâÐèÒªÔÚÆô¶¯ÏµÍ³Ê±×öÒ»¸ö³õÊ¼»¯µÄ³ÌÐò¡£
Ò»°ãÀ´Ëµ£¬ÖÁÉÙÓÐÈýÖÖ²»Í¬µÄ·½·¨¿ÉÒÔ´ï³ÉÕâ¸ö£º

\begin{enumerate}
\item ÄãÓÐ PnP Bios£¬ÒâÖ¸ÄãµÄ BIOS »á×Ô¶¯²ì¾õ PnP ¿¨²¢ÇÒ½¨¹¹ËüÃÇ¡£Èç¹ûÄãÒÔÎªÄãÓÐ
PnP BIOS ËùÒÔÄã¿ÉÒÔ·¢»ÓÄãµÄ SB AWE PnP µÄ³¤²ÅµÄ»°£¬ºÜ²»ÐÒµÄ£¬ÃÅ¶¼Ã»ÓÐ¡£
¾ÍËã BIOS ÓÐÖ§Ô® PnP ¿¨£¬ËüÒ²Ö»ÄÜ³õÊ¼»¯Ê±½«ÄãµÄÒôÐ§¿¨ËùÊ¹ÓÃ²º¼°Î»Ö·×ö¸öÐ¡Éè¶¨¶øÒÑ¡£
Ò²ÐíÄã¿ÉÒÔ²¦·ÅÒ»Ð©»ù±¾µÄÒô²¨×ÊÁÏ£¬µ«ÎÞ·¨²¦·Å MIDI ÒôÐ§£¬ÕâÊÇ¸öÀý×Ó¡£Òò´Ë£¬
ÓÐÎÞ PnP Bios ¶¼ÎÞËùÎ½£¬ÓÉÄã×Ô¼º¾ö¶¨¡£
\item ÄãÓÐ¸öÖ§Ô® PnP ¿¨µÄ×÷ÒµÏµÍ³¡£Ä¿Ç°ÎÈ¶¨µÄ Linux ºËÐÄ³ÌÊ½ (2.0.x) »¹²»Õâ¸öÑù×Ó£¬
Òò´Ë£¬ÎÒÃÇµÃµÈÎ´À´µÄÐÂ°æ±¾£¬ËüÃÇ½«Ö§Ô® PnP Éè±¸¡£
\item ÄãÓÐ¸öÌØ±ðµÄ³ÌÊ½»áÔÚÆô¶¯ÏµÍ³Ê±Ö´ÐÐ£¬Ëü»á³õÊ¼»¯ÄãµÄ PnP ¿¨¡£ÎÒÃÇ¾ÍÊÇÕâ÷á°ìµ½µÄ¡£
\end{enumerate}


ÔÚ Linux ¡õ×î³£±»Ê¹ÓÃÀ´³õÊ¼»¯ PnP ¿¨µÄ³ÌÊ½ÊÇ ``isapnptools'' (Çë¿´ \ref{sources} {(Sources)} ÒÔ¼°
\ref{isapnp} {(Getting Started)})¡£ËüÃÇÌá¹©ÁË¿ÉÔ¤²âµÄ·½Ê½À´½¨¹¹ÄãµÄ»úÆ÷¡õµÄËùÓÐ
ISA PnP ¿¨£¬²¢²»½öÖ»ÒôÐ§¿¨¶øÒÑÅ¶¡£






\subsection{¹Øì¶¿ÉÔØÈëÊ½ºËÐÄ³ÌÊ½Ä£×éµÄÒ»°ã³£Ê¶ }



ÓÐÐ©Éè±¸Çý¶¯³ÌÊ½¿ÉÒÔ±»×ö³ÉÄ£×é£¬¶ø²»±Ø½«ËüÃÇ±àÒëµ½ºËÐÄ³ÌÊ½¡õÍ·¡£ Äã¿ÉÒÔ
ÔÚ Kernel HOWTO ¼° Module HOWTO ¡õÕÒµ½¹Øì¶Ä£×éµÄ×ÊÑ¶¡£(Çë¿´ \ref{moreinfo} {(Additional Information)}).

Èç¹ûÄãÓÐ PnP ¿¨£¬Äã {\itshape ±ØÐë\/} ½«ÒôÐ§¿¨Ö§Ô®³ÉÒ»¸ö¿ÉÔØÈëÊ½ºËÐÄÇý¶¯³ÌÊ½Ä£×é¡£
Ò²¾ÍÊÇËµ£¬Äã²»ÄÜ½«ÒôÐ§Çý¶¯³ÌÊ½½¨Á¢ÔÚºËÐÄ³ÌÊ½¡õÍ·£¬¶ø½«Ëü×ö×÷Ò»¸öÄ£×é£¬ÕâÑù
¾ÍÄÜÔÚºËÐÄ³ÌÊ½Ö´ÐÐÊ±±»ÔØÈë¡£ÕâÊÇÒòÎªºËÐÄ³ÌÊ½»áÔÚÄãµÄ ISA PnP ¿¨±»½¨¹¹Ç°¾Í
±»°²×°ÁË£¬¶øÄãµÄÒôÐ§Çý¶¯³ÌÊ½±ØÐëÔÚ ISA PnP ½¨¹¹áá²Å»á±»ÔØÈë¡£

ÒôÐ§ºËÐÄ³ÌÊ½Ä£×é¿ÉÒÔÊ¹ÓÃ {\ttfamily insmod sound} »ò
{\ttfamily modprobe -a sound} »òÔÚÄãµÄ Linux ÏµÍ³¡õµÄÏà¶ÔµÄÆô¶¯ÃüÁîÊÖ¸åµÄ·½Ê½À´Æô¶¯¡£
(ÔÚ Debian£¬Ôö¼ÓÒ»ÐÐ°üº¬ {\ttfamily sound} µ½ {\ttfamily /etc/modules}µÄÃüÁî¾Í¹»ÁË)¡£
½ÓÏÂÀ´£¬Ö´ÐÐ {\ttfamily kerneld}£¬ËüÊÇÒ»¸ö¿ÉÒÔ°²×°»òÒÆ³ýºËÐÄ³ÌÊ½Ä£×éµÄ¾«Áé¡£

¼ÇµÃ {\ttfamily kerneld} ²¢²»ÊÇÔÚ AWE ÒôÐ§Çý¶¯³ÌÊ½Ä£×éÉÏ×îºÃµÄ½â¾ö·½°¸£¬ÒòÎªºËÐÄ³ÌÊ½ÔØÈëÕâ¸ö
Ä£×éÒ²Òª»¨Ê±¼ä£¬ÌØ±ðÊÇÈç¹ûÄãÒªÊ¹ÓÃ Wave Table Ãü³ÉÆ÷À´ÔØÈë´óµÄ Sound Font bank Ê±£¬
Äã¾Í±ØÐëÔÚÃ¿Ò»´Î²åÈëÄ£×éÊ±ÔÙÔØÈëÒ»´Î¡£ ÒòÎª {\ttfamily ºËÐÄ³ÌÊ½} »áÔÚÉè¶¨ÄÚ¶¨ÖµááÔ¼Ò»·ÖÖÓ½«²»ÐèÒªµÄ
Ä£×é¸øÒÆ³ý£¬ËùÒÔÒÔÊÖ¶¯·½Ê½»òÔÚÆô¶¯Ê±½«ÒôÐ§Ä£×é²åÈë¿ÉÄÜ»á½ÏºÃÐ©¡£
»¹ÓÐ£¬Õâ÷á×ö»¹¿ÉÒÔÔ¤·À {\ttfamily ºËÐÄ³ÌÊ½} ÔÚ½øÈë¿Õ¡õÏÂÀ´Ê±ÒÆ³ýËü¡£Äã¿ÉÒÔ
ÔÚÍ¬Ê±¼ä¡õ²åÈëÒôÐ§Ä£×é²¢ÇÒÊ¹ÓÃ {\ttfamily ºËÐÄ³ÌÊ½} ¡£Á½ÖÖ·½·¨²»»á»¥ÏàÅÅ³â£¬µ«ÊÇ {\ttfamily Ä£ÐÄ³ÌÊ½}
¾Í²»ÔÙ¹ÜÒôÐ§Ä£×éÁË¡£

ÌØ±ðÊÇÄãµÄ»ìÒôÆ÷ÈôÊÇÔÚÒÆ³ý»òÖØ°²×°Ä£×éÊ±»áÊÜµ½¸ÉÈÅµÄ»°ÌØ±ðÓÐÐ§¡£
Õâ²¿·ÝµÄ½â¾ö·½°¸¿ÉÔÚ \ref{mixing} {(Mixing)}ÕÂ½Ú¡õÕÒµ½¡£
(ËüÔÚÐðÊöÈçºÎÔÚÒôÐ§Ä£×é±»²åÈëÊ±×Ô¶¯Æô¶¯ÄãµÄ»ìÒôÆ÷¡£)¡£È»¶ø£¬ËüÒª
{\ttfamily ºËÐÄ³ÌÊ½} »¨Ê±¼äÀ´ÔØÈëÄ£×é£¬À´ÔØÈë sound font bank ²¢Æô¶¯ÄãµÄ»ìÒôÆ÷£¬
ÒòÎªÕâÑùÒÔ¼°ÆäËûµÄÀíÓÉ£¬×îºÃÔÚÆô¶¯ÏµÍ³Ê±¼´°²×°ÒôÐ§Ä£×é£¬²»ÒªÈÃ
{\ttfamily ºËÐÄ³ÌÊ½} ÒÆ³ýËü¡£






\subsection{¹Øì¶ºËÐÄ³ÌÊ½ÒôÐ§Çý¶¯³ÌÊ½µÄÒ»°ã³£Ê¶ }



Äã¿ÉÒÔÔÚºËÐÄ³ÌÊ½ÖÐ°²×°ÒôÐ§Ö§Ô®³ÉÄÚ½¨µÄ»òÊÇ¸ö¿ÉÔØÈëÊ½Ä£×é¡£Èç¹ûÊÇ PnP ¿¨£¬Äã±ØÐë
½«ÒôÐ§Ö§Ô®°²×°³ÉÄ£×é£¬ÒòÎª PnP ¿¨ÐèÒªÔÚÄ£×é±»°²×°Ç°Ê¹ÓÃ isapnptooÀ´³õÊ¼Ëü¡£

ÈçÄãËùÏë£¬Äã±ØÐëÖØ±àÒëºËÐÄ³ÌÊ½¡£ÏÂÃæÎÒ»á¸øÄã¼¸¸öÌáÊ¾¡£ÏÖÔÚ£¬ÎÒÃÇÀ´Ì¸Ì¸ºËÐÄÔ­Ê¼³ÌÊ½
¡õ¶ÔÒôÐ§µÄÖ§Ô®¡£ ÔÚºËÐÄ³ÌÊ½¡õÓÐ¸öÃâ·Ñ (¾«¼ò°æ) µÄ OSS (USS) ÒôÐ§Çý¶¯³ÌÊ½°æ±¾£¬
×îÐÂµÄ (3.5.4) °æ²¢²»Íê³ÉÖ§Ô® SB AWE £¬µ«ÊÇÖ§Ô®²¿·Ý SB 16 ¡£ËùÒÔ£¬Äã¿ÉÒÔÊ¹ÓÃËü
Äã¾Í¿ÉÊ¹ÓÃµ¥´¿µÄÉùÒôÉè±¸ÒÔ¼° OPL-2/OPL-3 ºÏ³ÉÆ÷¡£µ«ÄãÈ´ÎÞ·¨Ê¹ÓÃ Wave TableºÏ³ÉÆ÷À´
²¦·Å midi µµ¡£

Èç¹ûÄãÒªÊ¹ÓÃ Wave Table Éè±¸£¬Äã¿ÉÒÔ´Ó
\nameurl{http://www.4front-tech.com}{4Front Technologies}
Âò¸öÉÌÒµ°æµÄÒôÐ§Çý¶¯³ÌÊ½ (Èç¹ûÓÐÈË¿ÉÒÔ¸úÎÒÈ·ÈÏËüÕæµÄ¿ÉÒÔµÄ»° )£¬»òÊÇÓÃ Takashi IwaiµÄ
AWE 32 Sound Driver Extension À´ÐÞ²¹ÄãµÄºËÐÄ³ÌÊ½¡£Ç°ÃæÄÇ²¿·Ý²¢²»ÔÚ±¾ÎÄ¼þËùÌ¸µÄ¡õÎ§£¬
ÎÒ¼ÙÉèÄãÏëÊ¹ÓÃááÕß¡£

Õâ¸ö AWE32 Sound Driver Extension (Çë¿´\ref{sources} {(Sources)}ÕâÕÂ½Ú) ÔÚ GNU °æÈ¨ÏÂÌá¹©ÈÃ SB AWE ¿¨µÄ EMU 8000 wave ºÏ³ÉÆ÷±ä³É¿ÉÓÃµÄ¹¤¾ß¡£

¶ø {\ttfamily awedrv} ÈíÌåÒÑ¾­±»°üº¬µ½ÐÂµÄºËÐÄÔ­Ê¼³ÌÊ½Ê÷¡õ (´ÓÒ»Ð© 2.1.x ºËÐÄ³ÌÊ½¿ªÊ¼£¬Ò²ÐíÄãÏëÉý¼¶Äã
ËùÊ¹ÓÃµÄ¾ÉµÄÄ£ÐÄ³ÌÊ½Ê÷)¡£






\section{ÈçºÎ°²×° SB AWE ÒôÐ§Ö§Ô®}






\subsection{ÄãÐèÒªµÄ¶«¶«}



ÔÚ Linux ÏÂÊ¹ÓÃ SB AWE ÐèÒªÏÂÁÐ¶«¶«Å¶£º

\begin{itemize}
\item Ò»¸ö¿ÉÊ¹ÓÃµÄ Linux ÏµÍ³ (ÀýÈç Debian GNU/Linux °æ)£¬
\item Ò»¸ö SB AWE 32 »òÏàÈÝ¿¨ (Èç SB32, SB32 PnP, SB AWE64, ...)£¬
\item Linux ºËÐÄ³ÌÊ½µÄÔ­Ê¼³ÌÊ½£¬°üº¬ÒôÐ§Çý¶¯³ÌÊ½ OSS/Free
(Õý³£¶¼»á¸½£¬Çë²é¿´ {\ttfamily /usr/src/Linux/drivers/sound/Readme}),
\item »¹ÓÐ AWE 32 sound driver extensions.
\end{itemize}


Èç¹ûÄãÓÐ¸ö PnP ¿¨£¬Äã»¹ÐèÒª£º

\begin{itemize}
\item isapnptools ÈíÌåÌ×¼þ¡£
\end{itemize}


Çë¿´ÓÐ¹Øì¶ÈçºÎÈ¡µÃÕâÐ©³ÌÊ½µÄÕÂ½Ú\ref{sources} {(Sources)}¡£

Èç¹ûÄãÓÐ Debian GNU/Linux ÏµÍ³£¬ÄÇÄãÐèÒª {\ttfamily kernel-source-$<$version$>$}, {\ttfamily awe-drv}
Ì×¼þ£¬Ò²Ðí»¹ÐèÒª {\ttfamily isapnptools}Õâ¸ö£¬ËäÈ»²¢²»ÐèÒªµ«Äã¿ÉÄÜÏëÒªÒ»Ð©  {\ttfamily awe-*} Ì×¼þ£¬ÎÒ
Ç¿ÁÒ½¨ÒéÄã²ÉÓÃ {\ttfamily kernel-package} »á¸üÈÝÒ×±àÒë¼°°²×°ºËÐÄ³ÌÊ½¡£






\subsection{¿ªÊ¼°É !\label{isapnp}}



¼ÙÉèÄãÒÑ¾­ÕýÈ·µØ°²×°ºÃÒôÐ§¿¨µ½ÄãµÄµçÄÔµÄÖ÷»ú°åÉÏ¶øÇÒÒ²ÔÚ DOS ÒÔ¼° Windows»·¾³ÉÏÊÔ¹ýÁË¡£

È»áá£¬Èç¹ûËüÊÇÒ»ÕÅ PnP ¿¨µÄ»°ÎÒÃÇ±ØÐëÔÚ¿ª»úÆô¶¯Ê±³õÊ¼»¯Ò»ÏÂ¡£Çë°´ÕÕ
Ô­Ê¼µµÌ×¼þµÄÎÄ¼þËùËµµØÈ¥±àÒëÒÔ¼°°²×°  {\ttfamily isapnptools} (»òÖ»ÐèÊ¹ÓÃ Debian µÄ¶þ½øÎ»ÂëÌ×¼þ)£¬È»ááÒÔ
root µÄÉí·ÝÖ´ÐÐ

\begin{tscreen}
\begin{verbatim}
# pnpdump > /etc/isapnp.conf
\end{verbatim}
\end{tscreen}




ÕâÑù»á²úÉúÒ»¸öÎªÄãµÄ PnP ¿¨Á¿Éí¶©×öµÄ½¨¹¹£¬µ«Ëü»á°ÑËùÓÐµÄÉè±¸¶¼×¢½âÆðÀ´¡£ÇëÔÙ
Ð¡ÐÄµØÐÞ¸ÄÕâ¸öµµ°¸£¬Èç¹û¿ÉÄÜµÄ»°²¢±È½Ï DMAÆµµÀ¡¢IO¡¢²å¶ÏµÈµÈµÄÉè¶¨ÊÇ·ñÓëËüÔÚ DOS »ò WINDOW
»·¾³ÏÂ²»Ò»Ñù (ÔÚ Win95 ¡õ£¬Òª¿´±»½éÃæ¿¨ËùÊ¹ÓÃµÄ×ÊÔ´¿ÉÔÚ {\ttfamily Éè±¸¹ÜÀíÔ±}ÏÂµÄ {\ttfamily ×ÊÔ´} ¿´)¡£
Èç¹ûÄãÓöµ½ÎÊÌâ£¬ÇëÐ¡ÐÄµØ¶ÁÒ»ÏÂºÍ{\ttfamily isapnptools} ·ÅÒ»ÆðµÄÎÄ¼þ¡£

{\itshape Çë×¢Òâ:\/} {\ttfamily isapnptools} ³£ÎÞ·¨Õì²â SB AWE Wave Table Éè±¸µÄÈý¸ö I/O ²º¡£
Çë²éÃ÷ÄãµÄ {\ttfamily isapnp.conf} ÄÚµÄ {\ttfamily WaveTable} ÏîÄ¿ against the example at the end of this HOWTO.
Èç¹ûÐèÒªµÄ»°µ÷ÕûÒ»ÏÂ I/O base Î»Ö·¡£



{\itshape ×¢Òâ:\/} ¸ù¾Ýe {\ttfamily isapnp-faq}£¬ÓÐÊ±ºò {\ttfamily isapnp} »áÎÞ·¨µÃÖªÂß¼­Éè±¸µÄÊýÄ¿¡£Èç¹ûÄãÔâÓö
µ½ÏñÏÂÃæµÄ´íÎóÑ¶Ï¢£º

\begin{tscreen}
\begin{verbatim}
Error occurred executing request 'LD 2' on or around line...
\end{verbatim}
\end{tscreen}


ÄÇÊÔ¿´¿´¼ÓÈë {\ttfamily (VERIFYLD N)} µ½ {\ttfamily isapnp.conf}µÄÉÏÍ·¡£Äã±ØÐëÊ¹ÓÃÖÁÉÙÊÇ 1.10 °æµÄ²ÅÄÜÕâ÷á×ö¡£
Èç¹ûÄãÎÞ·¨Ê¹ÓÃ 1.10 »òÊÇ¸üÐÂµÄ°æ±¾¡£ÄãÒ²¿ÉÒÔ×ÔÒÑÖ±½ÓÊÖ¶¯¸ÄÂß¼­Éè±¸µÄÊýÁ¿¡£
ÇëÇéÇë²Î¿¼ {\ttfamily isapnp-faq} ¡£Èç¹û»¹ÊÇÎÞ·¨¿Ë·þ£¬ÇëºÍÎÒÁ¬Âç (Ó¦¸ÃÓÐÈËÒ²»á¶Ô {\ttfamily isapnp} ÓÐÐËÈ¤°É
£¬ÎÒÏë)¡£

{\itshape Ð¡ÐÄ:\/} ÇëÈ·ÈÏ×îááÄÇÐÐÊÇ {\ttfamily (WAITFORKEY)}£¬ÓÐÊ±ºò½Ï¾ÉµÄ {\ttfamily pnpdump}
°æ±¾»áÉ¾³ýËü¡£

ÔÚÎÄ¼þµÄááÃæÓÐÒ»¸ö{\ttfamily isapnp.conf} ¸øµ¥¸ö PnP ÒôÐ§¿¨ÓÃµÄÑù±¾¡£ (Çë¿´ÕÂ½Ú \ref{isapnpconf} {(Sample {$<$}tt{$>$}isapnp.conf{$<$}/tt{$>$})})¡£

Èç¹ûÄãÊÇÓÃ Debian ÏµÍ³¾Í²»ÓÃÔÙ×öÈÎºÎµÄÆäËûµ÷Õû¡£  {\ttfamily /etc/init.d/boot} ¼ÓÉÏÏÂÃæµÄ
ÃüÁîÊÖ¸åÏÂ£¬Äã¾Í¿ÉÒÔÔÚ¿ª»úÊ±Æô¶¯{\ttfamily isapnp}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
# Configure the isa plug and play boards before loading
# modules. Need to do this before loading modules to get
# a chance of configuring and starting PnP boards before
# the drivers mess all this up.
#
if [ -x /etc/init.d/isapnp ]
then
  /etc/init.d/isapnp start
fi
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}

where {\ttfamily /etc/init.d/isapnp} is
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
#! /bin/sh
# /etc/init.d/isapnp: configure Plug and Play boards
test -x /sbin/isapnp || exit 0
/sbin/isapnp /etc/isapnp.conf
exit 0
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


Èç¹ûÄãÓÐÆäËûµÄ Linux ¹©Ó¦ÉÌ°æ±¾£¬Äã¾ÍÒª×ÔÒÑÀ´ÁË¡£ÎÒÒ²²»ÖªµÀÔõ÷á×ö
(ÓÐË­Ô¸ÒâÌá¹©¸ü¶àµÄ×ÊÑ¶Âð?)¡£Ö»Òª¼ÇµÃ isapnp ±ØÐëÔÚËùÓÐÄ£×é±»ÔØÈë {\itshape Ö®Ç°\/} ¾Í±»ÔØÈëÁË (Çë¿´ÏÂÃæ)¡£






\subsection{±àÒëºËÐÄ³ÌÊ½}



ÔÚ±àÒëºËÐÄ³ÌÊ½Ö®Ç°£¬Äã±ØÐëÓÐ AWE Driver Extension Ì×¼þÀ´¸øÒôÐ§Çý¶¯³ÌÊ½Ê¹ÓÃ¡£¾ÍËãÄã
µÄºËÐÄÔ­Ê¼³ÌÊ½Ä¿Â¼¡õÒÑ¾­ÓÐ {\ttfamily awedrv} ÑÓÉìÌ×¼þÁË (Çë¼ì²é {\ttfamily /drivers/sound/lowlevel/} ¿´¿´)£¬
Äã¿ÉÄÜÏëÒªÉý¼¶ {\ttfamily awedrv} ÈíÌå¡£ÒÀÕÕ°²×°ÔÚ {\ttfamily awedrv} Ô­Ê¼Ä¿Â¼¡õµÄÖ¸Ê¾¡£¼òµ¥µØËµ£¬Äã±ØÐëÖ´ÐÐ
Ò»¸öÐÞ²¹ºËÐÄÔ­Ê¼³ÌÊ½µÄ°²×°ÃüÁîÊÖ¸å¡£

ÇëÐ¡ÐÄÄãÒÑ¾­ÔÚÖ´ÐÐÍê°²×°ÃüÁîÊÖ¸åááÒÑ¾­Éý¼¶ÁËºËÐÄÔ­Ê¼³ÌÊ½ÁË¡£Õâ¸öÃüÁîÊÖ¸å
Ö»ÊÇÔÚ¼ì²é¿´¿´Ò»Ð©ÌØ¶¨µµ°¸ÊÇ·ñÒÑ¾­ÓÐÁË£¬Èç¹ûÓÐÁË£¬Ëü²»»áÓÐÈÎºÎÐèÒªµÄÐÞ²¹¶¯×÷¡£
ÄãÉý¼¶ºËÐÄÔ­Ê¼³ÌÊ½ááÔÚÖ´ÐÐÃüÁîÊÖ¸åÇ°»á±»½¨Òé½« {\ttfamily drivers/sound/lowlevel/awe\_wav.c}
µµ°¸ÒÆ³ý¡£

½ÓÏÂÀ´Äã±ØÐë½¨¹¹ºËÐÄ³ÌÊ½À´Ö§Ô®ÒôÐ§¡£ÎÒÏ£ÍûÄãÖªµÀÔõ÷áÀ´±àÒëºËÐÄ³ÌÊ½£»ÏêÇéÇë²Î¿¼
Sound HOWTO ÒÔ¼° Kernel HOWTO¡£µ½ºËÐÄÔ­Ê¼³ÌÊ½µÄÄ¿Â¼¡õ£¬ ({\ttfamily ÀýÈç /usr/src/linux})
È»ááÖ´ÐÐ

\begin{tscreen}
\begin{verbatim}
# make config
\end{verbatim}
\end{tscreen}


»òÊÇ {\ttfamily make menuconfig} »ò {\ttfamily make xconfig}¡£È»ááÓÃ±ê×¼µÄ·½Ê½À´
½¨¹¹ÄãµÄºËÐÄ³ÌÊ½¡£ ÀûÓÃÕâ¸ö»ú»áÀ´×ö¸öÌå»ýÓÖÐ¡ÓÖÇ¿¶øÓÐÁ¦µÄºËÐÄ³ÌÊ½£¬ÌØ±ðÊÇ
ÎªÄãµÄÏµÍ³Á¿Éí¶©×öµÄ¡£¼ÇµÃÔÚ»Ø´ð {\ttfamily Enable loadable module support} ÊÇÑ¡ {\ttfamily Y}£¬
Èç¹ûÄãÏë°ÑÒôÐ§Çý¶¯³ÌÊ½°²×°³É¿ÉÔØÈëÊ½Ä£×éµÄ»° (Èç¹ûÄãÓÃµÄÊÇ PnP ¿¨µÄ»°¾Í {\itshape ±ØÐë\/}Õâ÷á×ö)
£¬µ«ÎÒÖªµÀÄãÒ²»áÕâ÷á×ö°É£¡

Äã»áÔÚÓÐ¸öµØ·½±»ÎÊµ½ÊÇ·ñÐèÒªÒôÐ§¿¨Ö§Ô®¡£Èç¹ûÄã{\itshape Ã»ÓÐ\/}  PnP¿¨µÄ»°
Äã¿ÉÒÔ×ÔÓÉ»Ø´ð {\ttfamily Y} »ò {\ttfamily M} £¬Èç¹ûÄãÒª×ö³ÉÄ£×éµÄ»°¶øÇÒÊÇ PnP¿¨£¬{\itshape ±ØÐë\/} »Ø´ð {\ttfamily M}¡£
Äã±ØÐë½« PnP ÒôÐ§¿¨µÄÖ§Ô®±àÒë³ÉÒ»¸öÄ£×é£¬ÒòÎªÔÚÄ£×é±»ÔØÈëÇ° PnP ¿¨±ØÐëÏÈ³õÊ¼»¯¡£

ÏÂÁÐµÄÎÊÌâÄãÓ¦¸Ã»Ø´ð {\ttfamily Y}£¬ÆäâÅ»Ø´ð {\ttfamily N}£º

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
Sound Blaster (SB, SBPro, SB16, clones) support (CONFIG_SB) [Y/n/?]
Generic OPL2/OPL3 FM synthesizer support (CONFIG_ADLIB) [Y/n/?]
/dev/dsp and /dev/audio support (CONFIG_AUDIO) [Y/n/?]
MIDI interface support (CONFIG_MIDI) [Y/n/?]
FM synthesizer (YM3812/OPL-3) support (CONFIG_YM3812) [Y/n/?]
lowlevel sound driver support [Y/n/?]
AWE32 support (CONFIG_AWE32_SYNTH) [Y/n/?]
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


Ö»ÓÐááÃæµÄÊÇ¸ø Wave Table ºÏ³ÉÆ÷ÓÃµÄ¡£ÆäâÅÊÇ OSS/Free ÒôÐ§Çý¶¯³ÌÊ½¸ø SB 16 µÄÑ¡Ïî¡£

³ý´ËÖ®Íâ£¬Äã±ØÐë½¨¹¹ÒôÐ§¿¨ I/O ²º¡£¿É²Î¿¼ {\ttfamily isapnp.conf} µµ»á¸øÄãÒ»Ð©ÌáÊ¾£¬
Èç¹ûÄãÓÐÕâ¸öµµµÄ»°¡£¶ÔÎÒÀ´Ëµ£¬ÏÂÃæµÄÄÚ¶¨Öµ¾Í¹»ÁË¡£Çë×¢Òâ£ººËÐÄ³ÌÊ½½¨¹¹ÃüÁîÊÖ¸åµÄÄÚ¶¨Öµ
Ò²ÓÐ¿ÉÄÜÊÇ´íµÄ  (ÌØ±ðÊÇ {\ttfamily SBC\_IRQ} ºÍ {\ttfamily SB\_MPU\_BASE} µÄÖµ¶Ô´ó²¿·ÝµÄ¿¨À´ËµºÃÏñ¶¼´íÁË)¡£

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
I/O base for SB Check from manual of the card (SBC_BASE) [220]
Sound Blaster IRQ Check from manual of the card (SBC_IRQ) [5]
Sound Blaster DMA 0, 1 or 3 (SBC_DMA) [1]
Sound Blaster 16 bit DMA (_REQUIRED_for SB16, Jazz16, SMW) 5, 6 or 7
(use 1 for 8 bit cards) (SB_DMA2) [5]
MPU401 I/O base of SB16, Jazz16 and ES1688 Check from manual of the card
(SB_MPU_BASE) [330]
SB MPU401 IRQ (Jazz16, SM Wave and ES1688) Use -1 with SB16 (SB_MPU_IRQ) [-1]
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


ºÃÁË£¬ÏÖÔÚÖØÐÂ±àÒëºËÐÄ³ÌÊ½£¬Debian µÄÊ¹ÓÃÕßÒªÓÃ {\ttfamily kernel-package}Ö¸Áî¡£
Õâ¸öÌ×¼þÈÃÎÒÃÇ±àÒëºËÐÄ³ÌÊ½¾ÍÏñ°²×° debian µÄÌ×¼þÒ»ÑùÈÝÒ×Å¶¡£Çë¿´
{\ttfamily /usr/doc/kernel-package/}¡õµÄÎÄ¼þ¡£Õâ¡õÓÐ¸öÌáÊ¾£º

\begin{tscreen}
\begin{verbatim}
# make-kpkg clean
# make-kpkg -revision custom.1.0 kernel_image
\end{verbatim}
\end{tscreen}


È»áá {\ttfamily dpkg -i /usr/src/kernel-image-2.0.29\_custom.1.0\_i386.deb}.

Èç¹ûÄãµÄÊÇÆäËûµÄ Linux ¹©Ó¦ÉÌ°æ±¾£¬ÇëÒÀÕÕ±ê×¼µÄ·½Ê½À´±àÒëÐÂµÄºËÐÄ³ÌÊ½¡£²»ÒªÍüÁË
{\ttfamily make modules} ÒÔ¼° {\ttfamily make modules\_install}¡£ÏêÇéÇë¿´ Sound HOWTO »ò Kernel HOWTO¡£






\subsection{ÖØ¿ª»ú}



°²×°ÍêÐÂºËÐÄ³ÌÊ½áá£¬ÄãÓ¦¸ÃÖØÐÂ¿ª»ú (Çë¼ÇµÃÄãÒªÓÐ¸ö¿ÉÓÃµÄ¿ª»ú´ÅÆ¬ÔÚÊÖÉÏ)¡£½»²æÖøÄãµÄÊÖÖ¸Í·µÈÒ»ÏÂ¡£

Èç¹ûÄãÓÐ¸ö PnP ¿¨£¬ÇëÈ·ÈÏÔÚ¿ª»úÆô¶¯ÃüÁîÊÖ¸å¡õ»òÊÇÊÖ¶¯µØÖ´ÐÐ isapnp (ÏñÉÏÃæËùÌáµÄÒ»Ñù)£º

\begin{tscreen}
\begin{verbatim}
# /sbin/isapnp /etc/isapnp.conf
Board 1 has Identity 74 00 00 e3 10 48 00 8c 0e:  CTL0048 Serial No 58128
[checksum 74]
\end{verbatim}
\end{tscreen}


ÏÖÔÚÄã¿ÉÒÔ°²×°ÒôÐ§Çý¶¯³ÌÊ½ÁË£¬Èç¹ûÄãÒÑ°ÑËü±àÒë³ÉÒ»¸öÄ£×é£º

\begin{tscreen}
\begin{verbatim}
# modprobe -a sound
AWE32 Sound Driver v0.3.3e (DRAM 2048k)
\end{verbatim}
\end{tscreen}


Èç¹ûÄãÈÏÎª¼ÇÒäÌåÕì²âÓÐÎó (ÓÐ¸öÈË¸æËßÎÒËµËûÓÐÕÅ AWE64 ¿¨ÓÐ 4096k£¬È»¶ø ``Õì²âµ½'' 28672k !)£¬ÇëÉý¼¶
{\ttfamily awedrv} ÈíÌå»òÊÇÔÚ {\ttfamily /usr/src/linux/drivers/sound/lowlevel/awe\_config.h}µµ°¸¡õÖ¸¶¨¼ÇÒäÌå£¬
Èç£º

\begin{tscreen}
\begin{verbatim}
#define AWE_DEFAULT_MEM_SIZE  4096   /* kbytes */
\end{verbatim}
\end{tscreen}


±§Ç«£¬Äã±ØÐëÔÙÖØÐÂ±àÒëºËÐÄ³ÌÊ½ (Ò²Ðí±àÒëÕâÐ©Ä£×é¾Í¹»ÁË£¬µ«ÎÒ²»È·¶¨)¡£

Èç¹ûËü³É¹¦¶¯×÷ÁË£¬Äã¿ÉÄÜÏ£ÍûÒôÐ§Ä£×éÄÜ×Ô¶¯ÔØÈë¡£Äã¿ÉÒÔÊ¹ÓÃ {\ttfamily kerneld} (
ÔÚ 1.4ÕÂ½Ú¡õÓÐËµÃ÷ÎªºÎÕâÊÇ¸ö»µµã×Ó) »òÊÇÔÚÄãµÄ{\ttfamily /etc/modules} (DebianÏµÍ³) ¡õÍ·
¼ÓÉÏÒ»ÐÐ°üº¬ {\ttfamily sound} »òÊÇ¼ÓÉÏ {\ttfamily /sbin/modprobe -a sound} µ½ÄãµÄÆô¶¯ÃüÁîÊÖ¸å¡õ¡£




\section{²âÊÔ°²Ð§Çý¶¯³ÌÊ½}






\subsection{{\ttfamily /proc/devices, /dev/sndstat}}



Èç¹ûÄãÓÐÄÚ½¨µÄÒôÐ§Ö§Ô®£¬Äã»áÔÚ¿ª»úÊ±ÊÕµ½Ò»Ð©ÓÐÓÃµÄ×ÊÑ¶¡£Èç¹ûÄãµÄÒôÐ§Ö§Ô®ÊÇ°²×°³É¿ÉÔØÈëÊ½Ä£×éµÄ£¬
ÄãÒ²¿ÉÒÔÓÃÏÂÁÐ·½Ê½µÃµ½Ò»Ð©×ÊÑ¶ (»òÐíÒªÏÈÓÃ {\ttfamily modprobe -r sound} ½«ÒôÐ§ÒÆ³ý)¡£

\begin{tscreen}
\begin{verbatim}
# modprobe -a sound trace_init=1
Sound initialization started

<Sound Blaster 16 (4.13)> at 0x220 irq 5 dma 1,5
<Sound Blaster 16> at 0x330 irq 5 dma 0
<Yamaha OPL3 FM> at 0x388
Sound initialization complete
AWE32 Sound Driver v0.3.3e (DRAM 2048k)
\end{verbatim}
\end{tscreen}


Èç¹ûÄãÓÐ {\ttfamily /proc} ÐéÄâµµ°¸ÏµÍ³£¬Äã¿ÉÒÔÓÃÏÂÁÐ·½·¨¿´µ½µÚ¶þ¸öÉè±¸

\begin{tscreen}
\begin{verbatim}
# cat /proc/devices
Character devices:
[...]
14 sound
[...]
\end{verbatim}
\end{tscreen}


½ÓÏÂÀ´ÇëÈÏÈÏÄãÔÚ {\ttfamily /dev/} ÏÂÓÐ¸öÒÑÕýÈ·°²×°µÄÉè±¸¡£ÏêÇéÇë¿´ Sound HOWTO ¡£
È»ááÖ´ÐÐ {\ttfamily /dev/sndstat} ¿É²éÑ¯ÒôÐ§Ä£×éµÄ×´Ì¬¡£

\begin{tscreen}
\begin{verbatim}
# cat /dev/sndstat
Sound Driver:3.5.4-960630 (Sat Oct 11 19:35:14 CEST 1997 root,
Linux flora 2.0.29 #1 Sat Oct 11 19:12:56 CEST 1997 i586 unknown)
Kernel: Linux flora 2.0.29 #1 Sat Oct 11 19:36:23 CEST 1997 i586
Config options: 0

Installed drivers:
Type 1: OPL-2/OPL-3 FM
Type 2: Sound Blaster
Type 7: SB MPU-401

Card config:
Sound Blaster at 0x220 irq 5 drq 1,5
SB MPU-401 at 0x330 irq 5 drq 0
OPL-2/OPL-3 FM at 0x388 drq 0

Audio devices:
0: Sound Blaster 16 (4.13)

Synth devices:
0: Yamaha OPL-3
1: AWE32 Driver v0.3.3e (DRAM 2048k)

Midi devices:
0: Sound Blaster 16

Timers:
0: System clock

Mixers:
0: Sound Blaster
1: AWE32 Equalizer
\end{verbatim}
\end{tscreen}


Èç¹ûÄãÃ»ÓÐÏñÕâÑùµÄÊä³ö£¬Ò²ÐíÔÚÄãµÄ½¨¹¹¡õÓÐÎÊÌâ£¬¼ÌÐøÕÒ¿´¿´ÄÄ¶ù²»ÄÜ¶¯£¬ÔÙ»ØÀ´
\ref{isapnp} {(Getting Started)}£¬¼ì²éÃ¿Ò»Ïî¡£






\subsection{Êä³ö£­ Raw Audio Device}



È¥È¡µÃÒ»¸ö {\ttfamily .au} µµ (Sun workstation) »òÑù±¾µµ°¸£¬È»ááÕâÑù×ö£º

\begin{tscreen}
\begin{verbatim}
# cat bell.au > /dev/audio
\end{verbatim}
\end{tscreen}


resp.

\begin{tscreen}
\begin{verbatim}
# cat sample > /dev/dsp
\end{verbatim}
\end{tscreen}


Äã»áÓ¦¸Ã¿ÉÒÔÓÉ {\ttfamily Audio Device 0: Sound Blaster 16 (4.3)}Ìýµ½Õâ¸öµµ°¸µÄÄÚÈÝ¡£






\subsection{Êä³ö - OPL-2/OPL-3 Synthesis}



Èç¹ûÄãÒªÊ¹ÓÃ OPL-2/OPL-3 FM ºÏ³ÉÆ÷ÔÚÄãµÄÒôÐ§¿¨ÉÏ²¦·Å MIDIµµ°¸£¬ÇëÊÔ¿´¿´
{\ttfamily playmidi} Õâ¸ö³ÌÊ½(Çë¿´¸½Â¼ B)¡£Ê¹ÓÃ·½·¨ÈçÏÂ

\begin{tscreen}
\begin{verbatim}
# playmidi -f dance.mid
\end{verbatim}
\end{tscreen}




»òÊÇ



\begin{tscreen}
\begin{verbatim}
# playmidi -4 dance.mid
\end{verbatim}
\end{tscreen}


Ç°³¡»á¸øÄã OPL-2£¬áá³¡»á¸øÄã OPL-3 MIDI ÒôÀÖ¡£ Èç¹ûÄã¾õµÃÕâÐ©ÉùÒôÌýÀ´ºÜÑ·£¬
²»Òª¹Ö playmidi£¬ÄÇÊÇÒòÎª FM ºÏ³ÉÆ÷ÌýÆðÀ´ºÜ²îÀ²¡£

Äú¿ÉÒÔÏëÏñÒ»ÏÂÄãÖ»ÓÐÒ»¸ö OSS/Free ÒôÐ§Çý¶¯³ÌÊ½£ºÄÇ¾ÍÊÇÄãËùÄÜµÃµ½µÄ MIDIÒôÀÖµÄÆ·ÖÊÁË¡£
(ÓëÈíÌåºÏ³É²»Í¬)¡£ÐÒÔËµÄÊÇ£¬ÄãÓÐ SB AWE£¬Äã»¹¿ÉÒÔÊ¹ÓÃ Wave Table ÒÔ¼° AWE Sound Driver ExtensionÁË¡£






\subsection{Êä³ö - Wave Table Synthesis}



ÔÚ AWE Driver Extension ¡õÓÐ¸öºÜÌØ±ðµÄ¹¤¾ß³ÌÊ½ ({\ttfamily awesfx}) ¿ÉÓÃÀ´Ê¹ÓÃ EMU 8000 Wave Table ºÏ³ÉÆ÷¡£
Ê×ÏÈ£¬Äã±ØÐë´ÓÄãµÄÒôÐ§¿¨¡õÔØÈë Sound Font Bank £­¾ÍËãÄãÏëÊ¹ÓÃ ROM µÄÈ¡Ñù ! Äã¿ÉÒÔ´ÓÄãµÄ Windows µÄ
°²×°ÖÐÈ¡µÃÕâ¸öµµ £­Ñ°ÕÒ¸½¼ÓµµÃûÎª {\ttfamily *.sfb} »ò {\ttfamily *.sf2}µÄµµ°¸¡£

ROM È¡Ñù¿ÉÒÔÊ¹ÓÃ {\ttfamily SYNTHGM.SBK}À´ÔØÈë£¬ ÕæÊµµÄÈ¡Ñù·ÅÔÚ {\ttfamily SYNTHGS.SBK} ¼° {\ttfamily SYNTHMT.SBK}
ÒÔ¼° {\ttfamily SAMPLE.SBK}¡õ¡£ÄãÒ²¿ÉÒÔ´Ó ftp»ò www À´È¡µÃÆäËûµÄ Sound Font Banksvia £¬¿ÉÒÔÊÔÊÔ
Creative Labs µÄ EMU µÄÍøÒ³£¬ ÓÐ¸ö Chaos È¡Ñù£¬ËûÃÇÕæµÄºÜ°ô (Çë¼ì²é AWE Çý¶¯³ÌÊ½ÍøÕ¾)¡£

ÊÔ¿´¿´ÔØÈë±ê×¼µÄ GM (ROM) set £¬Ê¹ÓÃ

\begin{tscreen}
\begin{verbatim}
# sfxload -i synthgm.sbk
\end{verbatim}
\end{tscreen}


È»áá²¦·Å¸ö°éËæÖøÄãµÄ SB AWE µÄ midi µµ°¸£º

\begin{tscreen}
\begin{verbatim}
# drvmidi dance.mid
\end{verbatim}
\end{tscreen}







\subsection{»ìÒô\label{mixing}}



È¡µÃÄã×îÏ²»¶µÄ»ìÒôÆ÷³ÌÊ½²¢Ö´ÐÐËü¡£ÔÚÍ¬Ò»Ê±¼ä²¦·ÅÒ»¸öÒôÐ§È¡ÑùÒÔ¼°Á½¸ö MIDI µµÑù±¾£¬
È»ááÊÔÊÔ»ìÒôÆ÷µÄÉè¶¨¡£ ²¦Ò»»á¶ù£¬ºÜÈÝÒ×µÄ¡£ÒÔÏÂÓÐËûÃÇ±»³ÆºôµÄÉè±¸ÁÐ±í£º

\begin{description}
\item[Yamaha OPL-3] \mbox{}

Synth »ò FM

\item[AWE32 Driver] \mbox{}

Synth »ò FM (ÓÐÈËÖªµÀ»ìÒôÆ÷ÊÇ a mixer were the last
two are separated from each other?)

\item[Sound Blaster 16 (4.13)] \mbox{}

PCM »ò DSP

\item[PC Speaker (still alive)] \mbox{}

Spkr

\end{description}


»¹ÓÐÒ»Ð©Óë CD ROM Ïà¹ØµÄ»ìÒôÆ÷£¬¿ÉÄÜÁ¬½ÓÖøÒôÐ§¿¨µÄÓÐ Master Volume, Bass, Treble ºÍ²»Í¬
ÊäÈë¹ìµÀµÄÂ¼Òô¸ßµÍ¡£ Äã¿ÉÒÔÖ¸¶¨ÄÄÐ©¹ìµÀÓ¦¸Ã±»Â¼ÒôÏÂÀ´¡£




\subsection{ÊäÈë£­Ê¹ÓÃRaw Audio DeviceÀ´È¡Ñù}



Äã¿ÉÒÔÂ¼ÏÂ²»Í¬µÄÒôÔ´£ºÏàÁ¬µÄ CD ROM¡¢Óë {\ttfamily mic} ÏàÁ¬µÄÂó¿Ë·ç£¬ÒÔ¼°Óë {\ttfamily line in}
ÏàÁ¬½ÓµÄÈÎºÎÒôÔ´¡£½«»ìÒôÆ÷Éè¶¨ÔÚÊÊµ±µÄÎ»ÖÃ¡£²¦·ÅÒ»¸öÉùÒô²¢½«ËüÂ¼Òô³ÉÒ»¸öµµ°¸£¬ÔÙÓÉ
Raw Audio DeviceÀ´¶ÁÈ¡£¬ÀýÈç£º

\begin{tscreen}
\begin{verbatim}
# cdplay
# dd bs=8k count=5 </dev/dsp >music.au
5+0 records in
5+0 records out
# cat music.au >/dev/dsp
\end{verbatim}
\end{tscreen}


´ÓÊäÈëÉè±¸À´Â¼ÒôÒÔ¼°²¦·Å 5 ÃëµÄÉùÒô¡£




\subsection{MIDI ²º}



±§Ç«£¬Ä¿Ç°»¹Ã»ÓÐ¹Øì¶ MIDI ²ºµÄ×ÊÑ¶!




\section{AWE Çý¶¯³ÌÊ½ÈíÌå}






\subsection{{\ttfamily sfxload}}



Äã¿ÉÒÔÊ¹ÓÃ  {\ttfamily sfxload} ¹¤¾ßÀ´ÔØÈëÒôÐ§¿¨ÉÏµÄ DRAM È¡Ñùµ½¡£¼ÇµÃÄãÖ»ÄÜÔÚÃ¿¸ö bank ¡õÔØÈëÒ»¸öÈ¡Ñù£¬
ÄÚ¶¨Îª bank 0¡£Òò´Ë£¬ÔÚ {\ttfamily sfxload synthgs.sbk} Ö®áá£¬ÔÚÄãµÄÒôÐ§¿¨ÉÏÎ¨Ò»µÄÈ¡Ñù¾ÍÊÇ GS È¡Ñù¡£
Èç¹ûÄãÒªÔØÈëÆäËûµÄ Sound Font Bank£¬ÇëÊ¹ÓÃ {\ttfamily -b} Ñ¡Ïî£¬ÀýÈç£º

\begin{tscreen}
\begin{verbatim}
# sfxload synthgs.sbk
# sfxload -b1 sample.sbk
# drvmidi sfx.mid
\end{verbatim}
\end{tscreen}


Ò²¿ÉÒÔ°²×°Ä£×éÀ´×Ô¶¯ÔØÈëÄÚ¶¨µÄ Sound Font Bank¡£Ö»Ðè¼ÓÉÏÕâÒ»ÐÐ

\begin{tscreen}
\begin{verbatim}
post-install sound /usr/bin/sfxload synthgm.sbk
\end{verbatim}
\end{tscreen}


µ½ÄãµÄ {\ttfamily /etc/conf.modules} µµ°¸¡õ

ÏêÇéÇë¿´¹Øì¶ {\ttfamily sfxload} µÄÎÄ¼þ




\subsection{{\ttfamily drvmidi}}



Ê¹ÓÃ {\ttfamily drvmidi} ³ÌÊ½£¬Äã¿ÉÒÔÊ¹ÓÃÄãµÄ AWE Çý¶¯³ÌÊ½À´ÑÝ×à MIDI µµ°¸¡£
Ö»ÒªÔÚÃüÁîááÃæ¼ÓÉÏÄãµÄ midi µµÃû¼´¿É£º

\begin{tscreen}
\begin{verbatim}
# drvmidi waltz.mid
\end{verbatim}
\end{tscreen}


ÏêÇéÇë¿´¹Øì¶ {\ttfamily drvmidi} µÄÎÄ¼þ




\section{¸½Â¼}






\subsection{¸½¼Ó×ÊÑ¶\label{moreinfo}}



\begin{description}
\item[Linux Sound HOWTO] \mbox{}

×÷Õß: Jeff Tranter, {\ttfamily $<$\onlynameurl{jeff\_tranter@pobox.com}$>$}

×îÐÂ°æ: v1.17, 1997Äê 8ÔÂ 4ÈÕ

ÇëºÃºÃÔÄ¶ÁÒ»ÏÂ Sound HOWTO (¿É´Ó sunsite.unc.edu ÒÔ¼°ÆäËûÕ¾È¡µÃ)¡£
ËüÓÐºÜºÃµÄ×ÊÑ¶¹Øì¶±àÒëºËÐÄ³ÌÊ½À´Ö§Ô®ÒôÐ§£¬²¢½âÊÍºÜ¶àÒôÐ§Éè±¸ÒÔ¼°Ó¦ÓÃ³ÌÊ½µÈµÈ¡£

I understand this HOWTO as an addition to the Sound HOWTO.



\item[Linux Sound Playing HOWTO] \mbox{}

×÷Õß: Yoo C. Chung, {\ttfamily $<$\onlynameurl{wacko@laplace.snu.ac.kr}$>$}

×îÐÂ°æ: v1.4,  1997 Äê 5ÔÂ 13ÈÕ

ÄãÓ¦¸ÃÒ²ÔÄ¶Á Sound Playing HOWTO¡£Ëü»á¸æËßÄãºÜ¶à¸÷ÖÖÉùÒô¸ñÊ½ÒÔ¼°ÑÝ×àËûÃÇµÄÓ¦ÓÃ³ÌÊ½¡£



\item[AWE Çý¶¯³ÌÊ½ FAQ] \mbox{}

×÷Õß: Takashi Iwai {\ttfamily $<$\onlynameurl{iwai@dragon.mm.t.u-tokyo.ac.jp}$>$}

À´Ô´: \nameurl{http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/awedrv/awedrv-faq.html}{}

Èç¹ûÄãÔÚ°²×° AWE Çý¶¯³ÌÊ½Ê±¡¢»òÊÇÊ¹ÓÃÄãµÄ Sound Blaster ¿¨µÄ Wave Table ºÏ³ÉÆ÷£¬ÄÇ¾Í¿´Õâ¶ùÁË¡£



\item[ISA PnP FAQ ³£ÎÊ¼¯] \mbox{}

×÷Õß: Peter Fox {\ttfamily $<$\onlynameurl{fox@roestock.demon.co.uk}$>$}

À´Ô´: \nameurl{http://www.roestock.demon.co.uk/isapnptools/isapnpfaq.html}{}

Èç¹ûÄãÒª°²×° ISA PnP ¿¨£¬ÄÇ¾ÍÒª¿´Äã×Ô¼ºÁË¡£



\end{description}





\subsection{À´Ô´\label{sources}}



\begin{description}


\item[{\ttfamily isapnptools}] \mbox{}

×÷Õß: Peter Fox {\ttfamily $<$\onlynameurl{fox@roestock.demon.co.uk}$>$}

×î½ü°æ±¾: 1.11

À´Ô´: \nameurl{http://www.roestock.demon.co.uk/isapnptools/index.html}{}

Èç¹ûÄãÒª±¨¸æÐÞ²¹¡¢³ô³æ»òÊÇÒéÑÔ£¬ÇëÔÚÖ÷ÌâÀ¸¡õÃæ¼ÓÉÏ 'isapnp' £¬²¢ÓÊ¼Äµ½ isapnp@roestock.demon.co.uk



\item[{\ttfamily awedrv}] \mbox{}

×÷Õß: Takashi Iwai {\ttfamily $<$\onlynameurl{iwai@dragon.mm.t.u-tokyo.ac.jp}$>$}

×îÐÂ°æ±¾: 0.4.2c

À´Ô´: \nameurl{http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/awedrv/}{}



\item[Linux kernel] \mbox{}

×÷Õß: Linus Torvald and many other

×îÐÂ°æ±¾: ÔÚ´Ë¿Ì£¬Äã¿ÉÒÔÓÃ 2.0.29

À´Ô´: µ½´¦¶¼¿ÉÒÔÈ¡µÃ Linux {\ttfamily :)}



\item[OSS/Free] \mbox{}

×÷Õß: Hannu Savolainen (Please check \nameurl{http://www.4front-tech.com/usslite before mailing me}{}).

×îÐÂ°æ±¾: ÎÒÓÐ 3.5.5-beta1 °æ

À´Ô´: ºÍ Linux ºËÐÄÔ­Ê¼³ÌÊ½Ì×¼þÒ»Æð

×ÊÑ¶:  \nameurl{http://www.4front-tech.com/usslite}{} or \nameurl{http://personal.eunet.fi/pp/voxware}{European mirror}.



\end{description}





\subsection{¡õ±¾ {\ttfamily isapnp.conf}\label{isapnpconf}}



ÓÉ pnpdump Ëù½¨Á¢µÄ ISA PnP ½¨¹¹µµ£¬ÄãµÄ PnP ¿¨Î¨Ò»³öÏÖµÄÏîÄ¿Êä³öÈçÏÂ£¬
ÓÐÒ»ÕÅ¿¨±»Õì²â³ö (ÒôÐ§¿¨)£¬²¢ÓÐËÄ¸öÂß¼­Éè±¸£º

\begin{itemize}
\item {\ttfamily LD 0}: Audio Device
\item {\ttfamily LD 1}: IDE Device
\item {\ttfamily LD 2}: WaveTable Device
\item {\ttfamily LD 3}: Gameport Device
\end{itemize}


ÎÒ½â³ý {\ttfamily LD 1} µÄ½¨¹¹£¬ÒòÎªÎÒÃ»ÓÐÔÚÒôÐ§¿¨µÄ IDE ²ºÉÏ½ÓÖø CD ROM¡£Èç¹ûÄãµÄ SB Ã»ÓÐ IDE ²º
£¬ÄÇ÷á {\ttfamily LD 1} ¾ÍÊÇ Gameport Éè±¸£¬¶ø {\ttfamily LD 3} ¾Í²»»á³öÏÖÁË¡£

Çë²Î¿¼ \ref{isapnp} {(Getting started)} Õâ¸öÕÂ½Ú¡õÓÐ¸ü¶àµÄ×ÊÑ¶ (ºÜÖØÒª!)¡£

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
# $Id: pnpdump.c,v 1.9 1997/06/10 21:37:32 fox Exp $
# This is free software, see the sources for details.
# This software has NO WARRANTY, use at your OWN RISK
#
# For details of this file format, see isapnp.conf(5)
#
# For latest information on isapnp and pnpdump see:
# http://www.roestock.demon.co.uk/isapnptools/
#
# Compiler flags: -DREALTIME -DNEEDSETSCHEDULER

(READPORT 0x0203)
(ISOLATE)
(IDENTIFY *)

# Try the following if you get error messages like
# Error occurred executing request 'LD 2' on or around line...

#(VERIFYLD N)

# ANSI string -->Creative SB32 PnP<--

(CONFIGURE CTL0048/58128 (LD 0
#     ANSI string -->Audio<--

  (INT 0 (IRQ 5 (MODE +E)))
  (DMA 0 (CHANNEL 1))
  (DMA 1 (CHANNEL 5))
  (IO 0 (BASE 0x0220))
  (IO 1 (BASE 0x0330))
  (IO 2 (BASE 0x0388))

  (ACT Y)
))

(CONFIGURE CTL0048/58128 (LD 1
#     ANSI string -->IDE<--

# (INT 0 (IRQ 10 (MODE +E)))
# (IO 0 (BASE 0x0168))
# (IO 1 (BASE 0x036e))

# (ACT Y)
))

(CONFIGURE CTL0048/58128 (LD 2
#     ANSI string -->WaveTable<--

  (IO 0 (BASE 0x0620))
  (IO 1 (BASE 0x0A20))
  (IO 2 (BASE 0x0E20))

  (ACT Y)
))

(CONFIGURE CTL0048/58128 (LD 3
#     ANSI string -->Game<--

  (IO 0 (BASE 0x0200))
  (ACT Y)
))

# Returns all cards to the "Wait for Key" state
(WAITFORKEY)
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}




ÒëÕß°´: ÈôÄú·¢ÏÖ±¾ÎÄ¼þÄÚÈÝÓÐ·­Òë²»Ë³³©»ò´íÎóµÄµØ·½£¬ÇëÄúÀ´ÐÅ¸æËßÎÒ£¬ÒÔ×ö¸üÕý£¬Ð»Ð»¡£
{\ttfamily \onlynameurl{linuxer.bbs@cis.nctu.edu.tw}}¡£
Òë×¢£ºÕâ·ÝÎÄ¼þµÄÖÐÎÄ°æ¿ÉÔÚ\nameurl{http://www.linux.org.tw/LCDP/}{}ÏÂÈ¡µÃ¡£

\end{document}
