Emulación del hardware de audio del Commodore Amiga. Digitalizador y reproductor estéreo de sonido digitalizado

Emulación del hardware de audio del Commodore Amiga. Digitalizador y reproductor estéreo de sonido digitalizado. Análisis e implementación del emulado

0 downloads 34 Views 2MB Size

Recommend Stories


Sonido. Origen del sonido
C A P Í T U L O 2 0 Sonido Chris Chiaverina, ex presidente de la Asociación Estadounidense de Profesores de Física, y el físico en acústica Tom Ros

cualidades del sonido. 5. Los distintos formatos de audio. 1. El sonido
EL SONIDO DIGITAL 1. El sonido. 1.1. ¿Qué es el sonido? 1.2. Magnitudes físicas del sonido. 1.3. Relación entre las magnitudes físicas de la onda son

FÍSICA DEL SONIDO Sonido Física del sonido Psicoacústica
FÍSICA DEL SONIDO Sonido El sonido es la sensación producida en el oído por la vibración de un objeto transmitida a través de un medio elástico. El m

Funcionamiento del reproductor de MP3
Funcionamiento del reproductor de MP3 Funcionamiento del reproductor de MP3 Por razones de seguridad, algunas funciones del dispositivo se deshabilit

Story Transcript

Emulación del hardware de audio del Commodore Amiga. Digitalizador y reproductor estéreo de sonido digitalizado. Análisis e implementación del emulador. Miguel Angel Rodríguez Jódar

Departamento de álgebra, computación, geometría y topología Facultad de Informática y Estadística

Universidad de Sevilla, 1995

Emulación del hardware de audio del Commodore Amiga. Digitalizador y reproductor estéreo de sonido digitalizado. Análisis e implementación del emulador. Miguel Angel Rodríguez Jódar

Director de proyecto: Prof. Gabriel Jiménez Moreno

INDICE GENERAL 1.- Introducción al registro digital. 1.1.- Registro analógico y registro digital. Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1 1.2.- Descripción del proceso de digitalización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6 1.2.1.- El proceso de discretización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6 1.2.2.- El proceso de cuantización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.10 1.3.- Tecnología de la digitalización del sonido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.13 1.4.- Manipulación de señales digitalizadas: efectos de sonido . . . . . . . . . . . . . . . . . . . . . . . . . 1.16 1.5.- Compresión del sonido digitalizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.21 1.6.- Almacenamiento del sonido digitalizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.23

2.- Introducción al hardware de audio del Commodore Amiga. 2.1.- El circuito integrado 8364 o PAULA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 2.2.- Descripción del funcionamiento del sistema de audio en el Amiga . . . . . . . . . . . . . . . . . . . 2.3

3.- Introducción al secuenciamiento musical. 3.1.- El secuenciamiento como instrumento de composición musical . . . . . . . . . . . . . . . . . . . . . 3.1 3.2.- El lenguaje de composición musical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 3.3.- Los secuenciadores en el Amiga. El formato MOD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7

4.- Estudio de la viabilidad de la emulación en un PC AT 386. 4.1.- El temporizador programable 8254 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 4.2.- El controlador programable de interrupciones 8259A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 4.3.- El puerto paralelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6 4.4.- Ejecución en background. Degradación del rendimiento del sistema . . . . . . . . . . . . . . . . . 4.9 4.5.- Prueba de emulación de un canal digital por el puerto paralelo . . . . . . . . . . . . . . . . . . . . . 4.11 4.6.- Reproducción de varios canales digitales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.14

5.- El modo 32-bit flat pointer en modo real o REALMEM. 5.1.- El modo real y protegido en un i80386 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1 5.2.- El modo REALMEM 32 bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4 5.3.- El gestor de memoria extendida XMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.6

6.- Descripción del hardware de audio a implantar en el PC. 6.1.- Esquema funcional y eléctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1 6.2.- Programación de la tarjeta de sonido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.14

7.- La rutina de ejecución del intérprete MOD. 7.1.- Descripción del funcionamiento del intérprete MOD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1 7.2.- Listado fuente de la biblioteca de rutinas para cargar y ejecutar MOD’s . . . . . . . . . . . . . . 7.22

A.- Anexos 1.- Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.1 2.- Agradecimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.3 3.- El altavoz interno. Reproducción de música digital usando la modulación PWM . . . . . . . . A.4

MULTIMDIA en PC. Emulación del hardware de audio del Commodore Amiga. Digitalizador y reproductor estéreo de sonido digitalizado.

Pag. 1.1

1. INTRODUCCION AL REGISTRO DIGITAL.

1.1.- Registro analógico y registro digital. Historia. A principios de siglo con el fonógrafo de Edison se establecieron las bases de lo que debía ser el registro analógico del sonido. Este consiste a grandes rasgos en convertir las variaciones de presión del aire producida por los instrumentos musicales, que llamamos sonido, a otro tipo de variaciones susceptibles de poder ser almacenadas en un medio, y de volver a ser convertidas de nuevo en sonido. En los primeros tiempos del registro analógico se hacía incidir las variaciones de presión del aire sobre una membrana adosada a un estilete grabador. Este estilete se movía sobre un cilindro recubierto de cera o parafina. El cilindro giraba sobre su eje mientras avanzaba lentamente, con lo que el estilete nunca pasaba dos veces por el mismo sitio en cada vuelta sino que dibujaba una espiral a todo lo largo de la superficie lateral del cilindro. El sonido al incidir sobre el mecanismo membrana-estilete hacía que vibrase éste con la misma intensidad y frecuencia que lo hacía el aire de su alrededor, y esa vibración se reflejaba en la cera formando surcos que dibujaban el aspecto de la onda sonora captada. Una vez seca la cera, se volvía a pasar el estilete por los surcos de la misma manera y a la misma velocidad con lo que el estilete se movía siguiendo el dibujo antes creado. El movimiento se amplificaba mecánicamente mediante una bocina para que fuese audible. Este mecanismo que en esencia se sigue usando en los giradiscos de los equipos HIFI usa el método más simple de codificación del sonido, a base de grabar las vibraciones mecánicas que produce. Realmente no hay una transducción, es decir, una conversión de una variación de energía en una variación de otro tipo de energía ya que sólo se usa las ondas mecánicas que transmiten las vibraciones a través de medios elásticos como el aire o el metal del mecanismo del fonógrafo. Obsérvese que no era posible una posterior manipulación del sonido, salvo modificar la velocidad de reproducción o reproducir la grabación hacia atrás.

MULTIMDIA en PC. Emulación del hardware de audio del Commodore Amiga. Digitalizador y reproductor estéreo de sonido digitalizado.

Pag. 1.2

Con el auge de la electricidad surgieron los primeros transductores eléctricos: el micrófono en su concepción primitiva consistía en dos electrodos separados por una capa de carbón granulado que hacía variar su resistencia al variar la presión sonora que incidía sobre él. Una corriente continua que atravesase dicho micrófono experimentaría variaciones de intensidad proporcionales a aquéllas. Dichas variaciones podían ser amplificadas mediante válvulas electrónicas y dirigidas hacia un altavoz. Este es el transductor opuesto al micrófono y convierte las variaciones de tensión e intensidad eléctricas en variaciones de la presión sonora. La tecnología de los altavoces ha variado poco desde su concepción. Este dispositivo consta de una bobina eléctrica móvil adjunta a un cono de cartón al que hace vibrar. La bobina se mueve dentro del campo magnético creado por un imán permanente. La señal amplificada se hace pasar por esta bobina que crea un campo magnético que repele en mayor o menor medida al campo magnético del imán permanente moviéndose, junto con la membrana. La utilización de señales eléctricas para conducir el sonido trajo muchas ventajas en el diseño de aparatos reproductores de discos que empezaron a formar parte del mobiliario doméstico. A su vez, la circuitería de estos dispositivos iba complicándose añadiendo mandos de volumen, tono, ecualizadores, etc... Paralela a la evolución de la grabación en disco mediante aguja grabadora, surgió y evolucionó la grabación magnética. En ésta, el sonido una vez convertido a electricidad modula el campo magnético de una bobina por la que pasa una cinta de plástico recubierta en su superficie de un material con alta remanencia magnética a una velocidad constante. Las variaciones del flujo magnético magnetizan de forma variable la sección de cinta magnética situada en el entrehierro de la bobina. En la reproducción se hace pasar la cinta magnetizada por la bobina. Las variaciones del flujo magnético inducen una pequeña corriente en la bobina que, una vez amplificada, puede ser escuchada por el altavoz. En todos los sistemas de grabación de sonido vistos hasta ahora hay algo en común: existe un medio susceptible de ser impresionado por una energía que varía de la misma forma que lo hace el sonido que se quiere almacenar. Esta impresión se realiza de manera continua, a lo largo de dicho medio, almacenando desde sutiles cambios de volumen, hasta sonidos muy altos, existiendo una gama infinita de volúmenes intermedios, gama limitada sólo, en principio, por las imperfecciones que pueda tener el medio usado para la grabación y a la precisión de los transductores usados en el proceso. Esta forma de grabar sonido se denomina registro analógico.

MULTIMDIA en PC. Emulación del hardware de audio del Commodore Amiga. Digitalizador y reproductor estéreo de sonido digitalizado.

Pag. 1.3

Cuando se ha explicado el proceso de grabación en disco o cinta no se ha tenido en cuenta un factor importante: el ruido. En efecto, todo proceso que conlleve la utilización de electricidad debe contar con que los componentes electrónicos generan ruido en mayor o menor medida. Además, la precisión de los transductores no es ilimitada, por lo que el sonido escuchado no será el mismo en una reproducción que en la siguiente. De hecho, la interacción transductor-medio degrada este último, de modo que cada vez el sonido grabado se escucha un poco peor. Para paliar en alguna medida este efecto se han diseñado algunos sistemas tanto de reducción de ruido como para evitar producirlo. Entre los primeros se encuentra el sistema Dolby, que en su versión B (la más extendida en el ámbito doméstico) se usa en la grabación y reproducción de cintas magnéticas. El problema que intenta paliar este sistema es el llamado ruido de modulación que se produce durante la grabación de la cinta. Este ruido existe durante todo el pasaje musical aunque normalmente se ve ahogado por la diferencia de volumen del sonido grabado respecto a él; pero en pasajes musicales más sosegados sí que se nota como un siseo o ruido blanco. Realmente no es un ruido blanco ya que su espectro de frecuencias se sitúa en la parte alta del rango auditivo, a partir de los 7 Khz. La manera en que funciona es la siguiente: se sabe experimentalmente cuál es el nivel sonoro de este ruido respecto a la señal grabada, y el rango de frecuencias en las que actúa, así que en grabación, se hace pasar el sonido a grabar por un filtro activo de bajo ruido que sube el nivel sonoro tantos dB como los que se sabe que posee el ruido de modulación pero sólo para frecuencias por encima de los 7 Khz. La señal así obtenida se graba en la cinta, junto con el ruido de modulación. En la reproducción la señal captada por la cabeza lectora lleva tanto la señal sonora como el ruido de modulación. Esta se hace pasar por otro filtro que actúa de manera contraria al usado en la grabación, esto es, atenúa en un cierto nivel todas las frecuencias superiores a 7 Khz. Con esta atenuación el ruido de modulación desaparece y la señal de sonido que antes se grabó con dichas frecuencias amplificadas recupera su nivel original. En el terreno de la reproducción de discos el problema al que había que enfrentarse fue la diferencia de nivel de señal entregada por la aguja del giradiscos es menor cuanto más alta era la frecuencia a reproducir. Esto es debido a que el vástago porta-aguja es relativamente largo lo que hace que su frecuencia de resonancia sea menor, y por tanto, presente una inercia mecánica mayor en frecuencias altas.

MULTIMDIA en PC. Emulación del hardware de audio del Commodore Amiga. Digitalizador y reproductor estéreo de sonido digitalizado.

Pag. 1.4

La solución adoptada se conoce como norma de ecualización RIAA. El sonido grabado en un disco tiene atenuadas las bajas frecuencias y realzadas las altas frecuencias de manera que la aguja siempre ofrece una inercia mecánica constante en todo el espectro de frecuencias audibles. La señal entregada al amplificador pasa antes por el corrector RIAA que linealiza la señal de audio a la vez que la amplifica para poder manejarla con el menor ruido posible. Además del problema del ruido, existe otro muy importante, debido a la mecánica encargada de mover el medio de almacenamiento ante el transductor. Este movimiento que debería ser constante no lo es por razones de precisión, y esto origina fluctuaciones en la frecuencia de la señal captada. A principios de la década de los 80 los laboratorios de Philips crearon el disco compacto (compact disc o CD). Este medio ofrecía características revolucionarias respecto a sus predecesores, y todo ello basándose en el registro digital. Se ha indicado anteriormente que la información guardada mediante el registro analógico podía tomar cualquier valor entre unos límites, que por la imprecisión de los transductores, dicha información se recuperaba de forma más o menos ambigua, y que en el proceso de reproducción era degenerativo, o sea, que en cada reproducción empeoraba la calidad del sonido. Todo ello es debido a que el registro analógico traduce las variaciones de presión sonora en variaciones de algún tipo de energía susceptible de ser almacenada, pero no nos ofrece ninguna garantía de que estas variaciones almacenadas reflejen fielmente el sonido que las causó. Simplemente se limitan a estar ahí. En el registro digital se intercala una operación más con la señal antes de ser grabada: la digitalización. Esta operación, a groso modo, asigna una serie de números a una señal sonora, y son éstos los que se graban en el medio. Las ventajas de codificar señales mediante números son múltiples: en principio, y dado que son números, se puede operar con ellos normalmente, y según la operación se modificará de una forma u otra la señal a la que van asociados. Esto se denomina procesamiento digital. Además de esto, su grabación es más sencilla y fiable. Ya no hay que tratar con variaciones sutiles de la información porque un número se puede almacenar en formato binario con lo que sólo necesitamos discernir entre dos niveles de información, que se pueden escoger de manera que el error producido al confundir uno con otro sea muy pequeño. Si a esto añadimos que se pueden aprovechar todos los mecanismos de detección y corrección de errores, compresión de datos, etc... podemos asegurar que el registro digital es mucho más fiable que el analógico, aunque no está exento del todo del problema del ruido.

MULTIMDIA en PC. Emulación del hardware de audio del Commodore Amiga. Digitalizador y reproductor estéreo de sonido digitalizado.

Pag. 1.5

El primer soporte digital fue, como ya se apuntó, el CD. Este emplea para almacenar la información binaria tiras de agujeros y no-agujeros formando una espiral desde el borde del disco hasta su centro. Cada pequeño agujero llamado depresión representa un 0, mientras que la no existencia de agujero en una zona representa un 1. El CD se lee mediante un rayo láser haciéndolo incidir en dichos agujeros, y reflejándose hacia una parte u otra según lo haya o no. De esta manera se recuperan los datos numéricos grabados en el disco y se tratan por el sistema reproductor digital. Con la llegada de los ordenadores electrónicos, que funcionan bajo el mismo principio de unos y ceros, el registro digital se ligó de manera permanente a ellos, aprovechándose de su potencia de cálculo. De esta manera, la información musical no solo se guarda en discos CD sino también en la memoria de un ordenador, o en un simple fichero en el disco duro. Sólo varía el mecanismo para leer dichos datos numéricos.

MULTIMDIA en PC. Emulación del hardware de audio del Commodore Amiga. Digitalizador y reproductor estéreo de sonido digitalizado.

Pag. 1.6

1.2.- Descripción del proceso de digitalización La digitalización de un sonido es el proceso por el cual se representa una señal sonora mediante una serie de dígitos que merced a un proceso contrario devuelve la señal original. Se ha comentado el hecho de que los sistemas de registro analógico tienen una precisión teórica infinita. Esto es, pueden almacenar cualquier nivel de señal que esté dentro de los límites aceptados por el sistema de registro. Esto no se cumple en el registro digital, en el cual se graban "instantes" de la señal sonora. Se demostrará intuitivamente que, para el caso del sonido, estos instantes grabados nos permiten reconstruir la señal entera sin pérdidas. Antes de pasar a la sección siguiente, conviene recordar que estamos manejando señales con frecuencias comprendidas entre 20 y 20.000 Hz que corresponde al rango de percepción del oído humano. Este tipo de señal, por tener un mínimo y un máximo de frecuencia se denomina señal limitada en banda. Esta limitación será la que permita al sistema de registro digital poder trabajar perfectamente. Las etapas de la digitalización del sonido son dos: discretización y cuantización.

1.2.1.- El proceso de discretización. Se ha introducido la cuestión de que para digitalizar un sonido hay que tomar muestras del volumen del mismo. Ahora bien, ¿cuántas muestras hay que tomar para poder decir que se ha guardado toda la información que contiene esa señal?. Para dar respuesta a esta pregunta es necesario analizar el tipo de información que contiene una señal de audio. [GRE89] A partir de ahora la consideraremos como una función en el tiempo que toma un valor determinado de volumen V comprendido ente un máximo y un mínimo, en cada instante de tiempo t. Esta función es continua en el tiempo, como lo son prácticamente todas las funciones que reflejan sucesos de la Naturaleza, y además el estar limitada en banda, el volumen no puede variar muy rápidamente en un intervalo de tiempo muy pequeño. Teniendo en cuenta estas premisas vamos a estudiar la señal de audio desde el punto de vista de la frecuencia.

MULTIMDIA en PC. Emulación del hardware de audio del Commodore Amiga. Digitalizador y reproductor estéreo de sonido digitalizado.

Pag. 1.7

Sea S(t) definida en [t1,t2] una función que representa a una señal de audio limitada en banda como ya se ha descrito, en un intervalo de tiempo (Fig. 1.2.1.1). Entonces dicha función se puede escribir de la forma siguiente: S(t)=E ancos(nT)+bnsen(nT) Lo cual nos dice que cualquier señal de audio puede ser generada a partir se señales sinusoidales de frecuencias 1/T, 1/2T, 1/3T, etc...

Figura 1.2.1.1: Señal analógica de audio.

Estas señales son los armónicos de la señal original. Al estar la señal limitada en banda la suma de armónicos anterior será finita, siendo el último término de la suma el correspondiente al armónico de frecuencia igual a la frecuencia máxima que genera la señal que son 20.000 Hz. Los an y bn son los coeficientes de Fourier de la señal y expresan el volumen que la señal posee para cada frecuencia en particular. La idea entonces consiste en averiguar cuánta información hace falta para poder reproducir sin problemas el armónico de frecuencia más alta. Si nos fijamos en la componente de 20.000 Hz, vemos que consiste en una señal sinusoidal que parte del cero, alcanza un valor máximo, vuelve a pasar por cero, alcanza un valor mínimo, y vuelve otra vez a 0. Por ser una señal sinusoidal sabemos cómo generarla. También sabemos cuál es su frecuencia; lo único que nos deben dar son los valores máximo y mínimo que toma, lo que nos da: f(t)=MAXIMO*sen(2*B*20000t) si 0#tMAXIMO temp:=MAXIMO sino si temp Error cargando módulo. Formato erróneo. 3 ----> Formato de módulo erróneo (sample>64K). 4 ----> No hay memoria suficiente para cargar el módulo

*/ { char tiempo;

/* tiempo leído del fichero */

char long_lista;

/* longitud de la lista de patrones */

char num_pat;

/* nº de patrones que hay almacenados */

char i; unsigned j; char *ppatron,*pfuente,*pdestino; unsigned nota; char flag31; unsigned long posic_fichero; struct hd_ins hd_instru;

memset(tab_ins,0,sizeof(tab_ins)); memset(tab_patt,0,sizeof(tab_patt));

posic_fichero=ftell(modulo); fseek(modulo,1080,SEEK_CUR); fread(nombremod,1,4,modulo); nombremod[4]=NULL; fseek(modulo,posic_fichero,SEEK_SET); if (!strcmp(nombremod,"M.K.") || !strcmp(nombremod,"FLT4")) flag31=16; else flag31=0;

if (fread(nombremod,1,20,modulo) puntero al patron a tocar mov dx,[bx]

;dx=offset del nuevo patron

mov linea_act,dx mov dx,[bx+2]

;dx=segmento del nuevo patron

mov patr_act,dx jmp actualiz

fintocar:

mov fin_canc,1 ret

actualiza

endp

actual_canal proc near act_canal 1 act_canal 2 act_canal 3 act_canal 4 ret actual_canal endp

calc_efecto

proc near efectos 1 efectos 2 efectos 3 efectos 4 dec cont_tpd jnz no_llam_act mov al,velocidad mov cont_tpd,al jmp actualiza

no_llam_act: ret calc_efecto

endp

Miguel Angel Rodríguez Jódar. Departamento de álgebra y computación. Facultad de Informática y Estadística. Sevilla, 1995

MULTIMEDIA en PC. Emulación del hardware de audio del Commodore Amiga. Digitalizador y reproductor estéreo de sonido digitalizado.

ponvolumen

Pag. 7.74

proc C mov al,byte ptr tab_muest1.volumen mul volumen1 shr ax,6 mov tab_muest1.vol_play,ax shl ax,8 add ax,offset tabla_g_vol mov tab_muest1.vol_tabla,ax

mov al,byte ptr tab_muest2.volumen mul volumen2 shr ax,6 mov tab_muest2.vol_play,ax shl ax,8 add ax,offset tabla_g_vol mov tab_muest2.vol_tabla,ax

mov al,byte ptr tab_muest3.volumen mul volumen3 shr ax,6 mov tab_muest3.vol_play,ax shl ax,8 add ax,offset tabla_g_vol mov tab_muest3.vol_tabla,ax

mov al,byte ptr tab_muest4.volumen mul volumen4 shr ax,6 mov tab_muest4.vol_play,ax shl ax,8 add ax,offset tabla_g_vol mov tab_muest4.vol_tabla,ax

ret ponvolumen

endp

reset_dsp

proc far push dx add dx,6 mov al,1 out dx,al

Miguel Angel Rodríguez Jódar. Departamento de álgebra y computación. Facultad de Informática y Estadística. Sevilla, 1995

MULTIMEDIA en PC. Emulación del hardware de audio del Commodore Amiga. Digitalizador y reproductor estéreo de sonido digitalizado.

Pag. 7.75

mov cx,1000 simul_hlt:

nop loop simul_hlt xor al,al out dx,al add dx,4 mov cx,800

buc_pool:

in al,dx cmp al,0aah je hay_dsp loop buc_pool pop dx mov ax,1 ret

hay_dsp:

pop dx add dx,0ch mov sb_puerto,dx mov al,0d1h out dx,al

;

sub dx,8

;

mov al,4

;

out dx,al

;

inc dx

;

mov al,0ffh

;

out dx,al

;

dec dx

;

mov al,22h

;

out dx,al

;

inc dx

;

mov al,0ffh

;

out dx,al

mov ax,0 ret reset_dsp

endp

detecta_SB

proc C mov dx,210h call reset_dsp

Miguel Angel Rodríguez Jódar. Departamento de álgebra y computación. Facultad de Informática y Estadística. Sevilla, 1995

MULTIMEDIA en PC. Emulación del hardware de audio del Commodore Amiga. Digitalizador y reproductor estéreo de sonido digitalizado.

Pag. 7.76

jne sigue_1 mov al,'3' jmp fin_sb

sigue_1:

mov dx,220h call reset_dsp jne sigue_2 mov al,'5' jmp fin_sb

sigue_2:

mov dx,230h call reset_dsp jne sigue_3 mov al,'3' jmp fin_sb

sigue_3:

mov dx,240h call reset_dsp jne sigue_4 mov al,'5' jmp fin_sb

sigue_4:

mov dx,250h call reset_dsp jne sigue_5 mov al,'3' jmp fin_sb

sigue_5:

mov dx,260h call reset_dsp jne sigue_6 mov al,'3' jmp fin_sb

sigue_6:

mov al,'2'

fin_sb:

mov ah,0 ret

detecta_SB

endp

detecta_LPT

proc C num_lpt:word

Miguel Angel Rodríguez Jódar. Departamento de álgebra y computación. Facultad de Informática y Estadística. Sevilla, 1995

MULTIMEDIA en PC. Emulación del hardware de audio del Commodore Amiga. Digitalizador y reproductor estéreo de sonido digitalizado.

Pag. 7.77

push es push si mov ax,40h mov es,ax mov si,num_lpt add si,si add si,8 mov ax,es:[si] mov lptdata,ax inc ax mov lptstd,ax inc ax mov lptctrl,ax pop si pop es dec ax dec ax ret detecta_LPT

endp

e8253

proc C a1:byte, a0:byte, valor:byte mov dx,lptdata mov al,valor out dx,al

mov dx,lptctrl in al,dx mov cl,al mov al,a0 sal al,2 mov bl,a1 xor bl,1 sal bl,1 or al,bl or al,19h out dx,al jmp $+2 and al,0feh out dx,al jmp $+2 mov al,cl

Miguel Angel Rodríguez Jódar. Departamento de álgebra y computación. Facultad de Informática y Estadística. Sevilla, 1995

MULTIMEDIA en PC. Emulación del hardware de audio del Commodore Amiga. Digitalizador y reproductor estéreo de sonido digitalizado.

Pag. 7.78

out dx,al ret e8253

endp

swap_bloque

proc near mov eax,bloque_dma xchg eax,bloque_lle mov bloque_dma,eax ret

swap_bloque

endp

setup_dma

proc near

;SETUP del DMA

mov al,sb_dma or al,100b out 0ah,al

; Poner máscara a DMA

out 0ch,al

; borrar flip-flop con cualquier dato

mov al,48h or al,sb_dma out 0bh,al

; Hacer DMA -> DAC

mov ax,word ptr bloque_dma+2 mov bx,16 mul bx

; DX:AX=SEG(bloque_dma)

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.