; --------------------------------------------------------------------------------------------------
; TIBURON v 0.37H - PERE SERRAT - 2017-11-15
; --------------------------------------------------------------------------------------------------
			org	$2400+$200					; to make it compatible with CoCo
			opt	6809							; forzar codigo para MC6809
			opt 	cd								; habilita conteo de ciclos reloj
			opt	ct								; habilita totalizador
;  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
leeChar			equ	$00a6					; rutina que toma un caracter del buffer (pagina 0)
bufTeclado		equ	$02dc					; buffer entrada teclado
cerrarFich		equ	$c010					; apunta a rutina cierre ficheros
;  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
txtFila2			equ	$0420					; inicio segunda fila pantalla texto
inicioPant		equ	$0c00+$200			; inicio pantalla grafica
anteTexto		equ	$1f80+$200			; zona pantalla inicio reserva para texto
grfTextL1		equ	$2000+$200			; 1a linea pantalla reservada para texto
finPantalla		equ	$2400+$200			; final pantalla grafica
;  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
altSprite		equ	56						; altura del sprite en lineas
p01Sprt5			equ	$1294+$200			; posicion inicial para el sprite 5	(cerca de margen derecha abajo)
;  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
initPgm	
	if DRG
			lbsr	dosOK							; verifica que el DOS instalado sea uno de los soportados
	endif
			ldb	#$f0							; valor para PMode4, SCREEN1,0
			stb	modeG							; lo guarda en variable
			clra	
			sta	musPerm						; deshabilita musica
			sta	ctrlLla+1					; establece NO llaves
			inca
			sta	trucoP+1						; establece paso 1
;  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
			jmp	presTib						; salta a presentacion - creditos (al final del fuente)
											; prepara SOLO IRQ de FS para usar SYNC			
											; punto de re-entrada si se salta la presentacion
noPres	lda	$ff01							; recupera config HS
			anda	#$fc							; resetea bits 0-1 (no IRQ hacia CPU)
			sta	$ff01							; actualiza config HS 
			lda	$ff03							; recupera config FS
			anda	#$fd							; reseta bit 1 (detecta fin de pantalla)
			ora	#1								; habilita IRQ hacia CPU
			sta	$ff03							; actualiza config FS
			andcc	#$af							; habilita interrupciones
											; HABILITA SONIDO PARA PASOS
			lbsr	pasosI						; configura DAC para reproducir efetos (PASOS)			
											; CONFIGURA PMODE4 SEGUN PALETA ELEGIDA POR USUARIO
			ldx	#inicioPant					; apunta a inicio pantalla grafica
			lbsr	clPM4x						; limpia pantalla PM4
			lbsr	setPM4						; conmuta al modo grafico PM4 seleccionado
;  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
											; MUESTRA UBICACION 1 (CASA)
ubic01	clra									; inicializa a cero
			clrb									; dos bytes
			std	CP03A							; no realizada conversacion paso 03A y 03B
			std	CP04							; no realizada conversacion paso 04 y 06 (05 eliminado)
			std	CP07							; no realizada conversacion paso 07 y 09 (08 eliminado)
 			std	CP10a							; no realizada conversacion paso 10a y 10b
			std	CP10c							; no realizada conversacion paso 10c y 11a
			sta	CP11b							; no realizada conversacion paso 11b (12 eliminado)
			sta	borTexto						; marca NO texto a borrar
			sta	extraLim						; solo 1 tabla de limites
			sta	ultMov						; empezar direccion derecha
			sta	numCebo						; no lanzado cebo
			sta	musPerm						; deshabilita musica
trucoP	lda	#01							; establece el Paso inicial
			sta	numPaso						; paso del juego
ctrlLla	lda	#00							; establece si tiene llaves o no
			sta	llaves						; marca que NO tiene las llaves del coche
			ldx	#locPan						; apunta a cadena para cargar
			ldd	#$3031						; para cargar pantalla "CASA.BIN" = "L01-"
			std	2,x							; pone nombre
			lda	#'-'							; terminacion std
			sta	4,x							; la pone
			lbsr	loadFile						; carga pantalla
;  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
											; AÑADE SPRITE 5 (JEFE BRODY)
			ldx	#p01Sprt5					; valor inicial
			stx	actX							; para SPRITE 5
			bsr	guarda						; guarda fondo a ser sobreescrito
			ldu	#sprit5D						; origen del sprite
			bsr	pinta4B						; pinta sprite
											; ACTIVA LIMITES Y EVENTOS UBICACION 1 (CASA)
			ldx	#limit01						; pone tabla limites de ubicacion 01
			stx	ptrLimit						; en puntero
			ldx	#event01						; pone direccion rutina eventos para ubicacion 01
			stx	ptrEvent						; en puntero
			clr	ultMov						; establecer direccion por defecto derecha
;  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
											; BUCLE DE PROCESO DE ORDENES USUARIO
espT		;lbsr	verDir						; muestra posicion sprite en hexadecimal (Abajo derecha)
			lbsr	tecla							; espera y ejecuta orden de movimiento
			jsr	[ptrEvent]					; procesa eventos (colisiones)
			bra	espT							; bucle
; --------------------------------------------------------------------------------------------------
; Guarda en el buffer los 4 bytes del sprite + anterior y posterior = 6 por linea (56 lineas)
; La entrada guar8 se utiliza para guardar los SEIS bytes alineados con el sprite 8 (de 6 bytes)
; durante la presentacion
; guar0 permite variar la altura del sprite a guardar (numero de lineas)
; --------------------------------------------------------------------------------------------------
guarda	ldu	actX							; apunta a origen (pantalla) ACTUAL
			leau	-1,u							; apunta al byte anterior
guar8		ldx	#buffer						; apunta a destino (buffer)
guar0		ldy	#$0000						; lineas del sprite
p10		ldd	,u								; toma 6 bytes del fondo de pantalla
			std	,x								; los
			ldd	2,u							; pone
			std	2,x							; en
			ldd	4,u							; el
			std	4,x							; buffer
			leax	6,x							; apunta a siguiente linea de buffer
			leau	32,u							; apunta a siguiente linea de pantalla
			leay	-1,y							; decrementa contador lineas 
			bne	p10							; si no finalizado, seguir
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Pone en pantalla un sprite de CUATRO bytes de anchura (alineado a byte)
; entrada pinta4C sirve apara poner 'solamente' los pies (estático)
; parametros: regU = inicio sprite
; --------------------------------------------------------------------------------------------------
hastaPie	equ	52								; para dibujar 'solamente' las cuatro últimas filas de datos
;  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
pinta4C	ldy	#buffer+hastaPie*6+1		; para usar solamente las filas de los pies
			ldx	actX							; toma posicion sprite	
			ldd	#4								; number of lines
			std	CX201L+2						; update copier
			leax	hastaPie*32,x				; apunta a inicio de los pies
			bra	p4BC							; saltar siguiente
pinta4B	ldy	#buffer+1					; apunta a segundo byte del buffer
			ldx	actX							; apunta a destino (pantalla)
p4BC		stx	CopyBuX2+1					; save destination for copy subroutine
			ldx	#buffer2						; point to buffer2
			lda	ultMov						; mueve a la derecha?
			bne	pinta4I						; no, ir a mover izquierda (espejo)
p4B0		ldd	,y								; toma dos bytes del fondo salvado
			anda	,u								; les aplica máscara
			andb	1,u							; para eliminar fondo a sobreescribir
			addd	4,u							; añade dos bytes del sprite
			std	,x								; pone el resultado en pantalla
			ldd	2,y							; toma dos bytes mas del fondo salvado
			anda	2,u							; les aplica máscara
			andb	3,u							; para eliminar fondo a sobreescribir
			addd	6,u							; añade dos bytes del sprite
			std	2,x							; pone el resultado en pantalla
			leax	4,x							; apunta a siguiente linea del buffer2
			leau	8,u							; apunta a siguiente linea de mascara/sprite
			leay	6,y							; apunta a siguiente linea de fondo guardado
modOrca1	cmpy	#fBuffer						; final del sprite?
			blo	p4B0							; no finalizado, seguir
			bsr	CopyBuX2						; copy to screen
			lbsr	verifObj						; repone Objeto primer plano si hace falta
			sta	$ffd8							; vuelve a velocidad normal
			lbsr	retMedi2						; llama retardo para movimiento horizontal a la derecha
			rts									; retorna
;  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
pinta4I	ldd	2,u							; toma dos ultimos bytes mascara (invertidos)
			stb	mskI3+2						; guarda byte bajo para A
			sta	mskI2+2						; guarda byte alto para B	
			ldd	6,u							; toma dos ultimos bytes OrSprite
			stb	orSI7+2						; guarda byte bajo para A
			sta	orSI6+2						; guarda byte alto para B
			ldd	,y								; toma dos bytes del fondo salvado
mskI3		anda	tabInv						; les aplica máscara
mskI2		andb	tabInv						; para eliminar fondo a sobreescribir
orSI7		ora	tabInv						; añade dos bytes 
orSI6		orb	tabInv						; del sprite
			std	,x								; pone el resultado en pantalla
			ldd	,u								; toma dos primeros bytes mascara (invertidos)
			stb	mskI1+2						; guarda byte bajo para A
			sta	mskI0+2						; guarda byte alto para B	
			ldd	4,u							; toma dos primeros bytes OrSprite
			stb	orSI5+2						; guarda byte bajo para A
			sta	orSI4+2						; guarda byte alto para B
			ldd	2,y							; toma dos bytes mas del fondo salvado
mskI1		anda	tabInv						; les aplica máscara
mskI0		andb	tabInv						; para eliminar fondo a sobreescribir
orSI5		ora	tabInv						; añade dos bytes 
orSI4		orb	tabInv						; del sprite
			std	2,x							; pone el resultado en pantalla
			leax	4,x							; apunta a siguiente linea de buffer2
			leau	8,u							; apunta a siguiente linea de mascara/sprite
			leay	6,y							; apunta a siguiente linea de fondo guardado
modOrcI1	cmpy	#fBuffer						; final del sprite?
			blo	pinta4I						; no finalizado, seguir
			bsr	CopyBuX2						; copy to screen
			lbsr	verifObj						; repone Objeto primer plano si hace falta
			sta	$ffd8							; vuelve a velocidad normal
			lbsr	retMedi3						; llama retardo para movimiento horizontal a la izquierda
			rts									; retorna
; --------------------------------------------------------------------------------------------------
												; Copia resultado de Buffer2 a pantalla (bloques de 4 BYTES)
CopyBuX2	ldx	#$0000						; point to screen
			ldu	#buffer2						; apunta a buffer2
			sync									; espera llegada FS (final de pantalla)
			opt	cc	
			sta	$ffd9							; pasa a doble velocidad
CX201L	ldy	#56							; numero de lineas a copiar
CX201		ldd	,u								; copia dos bytes del buffer
			std	,x								; a pantalla
			ldd	2,u							; y
			std	2,x							; dos mas
			ldd	4,u							; copia dos bytes del buffer
			std	32,x							; a pantalla
			ldd	6,u							; y
			std	34,x							; dos mas
			leax	64,x							; apunta a siguiente fila de pantalla
			leau	8,u							; apunta a datos siguiente fila del buffer2
			leay	-2,y							; decrementa contador
			bne	CX201							; no acabado? sigue
			ldb	numLocal						; ver Localizacion
			cmpb	#64							; esta dentro de la Orca?
			beq	eCBuX							; si, salta correccion
CBuX		ldd	#56							; restore std value
			std	CX201L+2						; in rows counter
eCBuX		rts									; retorna
; --------------------------------------------------------------------------------------------------
; SECUENCIADOR. Lee un par de notas de la partitura y actualiza codigo (datos)
; del 'player' para reproducirlas de forma continua
; Si la primera nota es 255 ($ff) indica fin de partitura
; --------------------------------------------------------------------------------------------------
secNotas	lda	$ff03							; Ha llegado una señal de fin de cuadro (FS)?
			bpl	outFS							; no, retorna
			lda	$ff02							; borra indicador de señal
			dec	vcount						; decrementa contador. Final de la espera?
			bne	outFS							; no, retorna
seqInt	ldx	#partitura					; apunta a un par de notas de la partitura
			ldd	,x++							; toma 2 bytes de la partitura (una para cada canal)
			cmpa	#$ff							; recibido indicador fin de partitura?
			beq	paraMus						; si, deshabilita IRQs (musica)
			ldy	#freqtab						; apunta a tabla de valores para generar frecuencias
			ldu	a,y							; recupera valor para la nota del canal 1
			stu	freq+1						; la pone en el 'player'
			ldu	b,y							; recupera valor para la nota del canal 2
			stu	freq2+1						; la pone en el 'player'
			lda	,x+							; recupera duracion nota
			sta	vcount						; pone duracion nota
			stx	seqInt+1						; guarda puntero a proximo par de notas
outFS		rts									; retorna
paraMus	orcc	#$50							; deshabilita interrupciones
			lda	cop23							; toma valor guardado config sonido
			sta	$ff23							; lo actualiza
			ldd	#$0000						; pone a cero
			std	sum+1							; valor anterior canal 1
			std	freq+1						; valor a acumular en canal 1
			std	sum2+1						; valor anterior canal 2
			std	freq2+1						; valor a acumular en canal 2
			andcc	#$af							; habilita interrupciones
			rts									; retorna al programa que llamo al control de FS
; --------------------------------------------------------------------------------------------------
; rutina personalizada de rastreo de teclado para detectar 'algunas teclas' solamente
; además durante el rastreo deshabilita la musica
; si no hay tecla pulsada, da un tiempo al secuenciador
; --------------------------------------------------------------------------------------------------
scanTec	orcc	#$40							; bloquea IRQ pero deja nota sonando!
			clr	$ff02							; mascara para leer cualquier tecla
			lda	$ff00							; lee teclado
			coma									; convierte ceros en unos (0 indica alguna tecla pulsada)
			asla									; descarta bit 7 (joystick)
			bne	siTecla						; si ahora no es cero, indica que se pulso alguna tecla
			ldx	#$0100						; tiempo de espera
			bsr	actMus						; activa musica (secuenciador)
			clra									; devuelve "NINGUNA" tecla pulsada
			rts									; retorna
siTecla	ldx	#tabTecla					; apunta a tabla valores teclado
otraTec	lda	,x+							; lee una mascara
			sta	$ff02							; la envia al teclado
			lda	$ff00							; recoge salida del teclado
			anda	,x+							; coincide con tecla esperada?
			beq	teclaOK						; si, salir
			leax	1,x							; salta valor tecla anterior no encontrada
			cmpx	#finTab						; ha llegado al final de la tabla?
			blo	otraTec						; no, envia siguiente mascara
			lda	#$ff							; codigo para indicar otras teclas NO 'Controladas'
			fcb	$8c							; para evitar la siguiente convirtiendola en cmpx #$nnnn
teclaOK	lda	,x								; toma codigo correspondiente a la tecla detectada
			ldx	#$0002						; retardar la autorepeticion
			bsr	actMus						; activa musica (secuenciador)
			tsta									; actualiza flags
			rts									; retorna
;  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
actMus	pshs	a								; salva tecla
			andcc	#$bf							; activa de nuevo IRQs
aM00		pshs	x								; salva contador retardo
			lbsr	secNotas						; llama al secuenciador
			puls	x								; restaura contador
			leax	-1,x							; lo decrementa 
			bne	aM00							; no finalizado? Sigue
			puls	a,pc							; restaura tecla y retorna
; --------------------------------------------------------------------------------------------------
; Lee teclado y acepta flechas cursor y Break solamente
; --------------------------------------------------------------------------------------------------
tecla		clr	inactiv						; a cero control inactividad
tec01		bsr	scanTec						; lee teclado
			bne	tec02							; si tecla, decodifica
			lda	inactiv						; recupera contador inactividad
			inca									; lo incrementa
			sta	inactiv						; y lo actualiza
			cmpa	#$32							; ha llegado al tope establecido?
			blo	tec01							; no, leer teclado
			lbsr	estatico						; mostrar imagen estática adecuada
			bra	tecla							; ir a leer tecado
tec02		clr	movVert						; a cero indicador de movimiento vertical
			cmpa	#9								; flecha derecha?
			beq	dch							; si, procesala
			cmpa	#8								; flecha izquierda?
			beq	izq							; si , procesala
			cmpa	#94							; flecha arriba?
			lbeq	arriba						; si , procesala
			cmpa	#10							; flecha abajo
			lbeq	abajo							; si , procesala
			cmpa	#3								; es Break?
			bne	tecla							; no, vuelve a esperar tecla
fueraYa	leas	2,s							; elimina direccion de retorno del stack
	if DRG
			jmp	$849f							; sale volviendo al Interprete de Basic
	else
			jmp	$ad9e							; sale volviendo al Interprete de Basic
	endif
; --------------------------------------------------------------------------------------------------
; Consulta tabla de limites de la pantalla actual. Determina si se puede realizar el movimiento
; parametro en registro D es el desplazamiento que se quiere realizar
; si no se puede mover, asegura que el personaje apunte en la direccion solicitada
; y a continuación retorna la bucle para procesar eventos (facilita cambios de pantalla rápidos)
; --------------------------------------------------------------------------------------------------
permiso	pshs	a								; guarda registro trabajo
			lda	numPaso						; toma numero de paso
			cmpa	#18							; esta dentro de la Orca en el mar?
			bhi	noPerm1						; si, no permitidos movimientos
			puls	a								; recupera regA
			addd	actX							; suma posicion actual a desplazamiento
			tfr	d,x							; lo salva en regX para comparaciones
			andb	#$1f							; detecta columna a ocupar
			aslb									; dobla valor (entradas de 4 bytes)
			ldu	ptrLimit						; recupera puntero a tabla limites
			leau	b,u							; apunta a registro calculado
			cmpx	,u								; estaria mas arriba de lo permitido?
			blo	perm2							; si, ver si hay otro nivel
			cmpx	2,u							; estaria por debajo de lo permitido?
			bhi	perm2							; si, ver si hay otro nivel
			rts									; movimiento autorizado
perm2		tst	extraLim						; hay otra tabla de limites?
			beq	noPerm						; no, salir
			leau	64,u							; apunta a la linea de la otra tabla		
			cmpx	,u								; estaria mas arriba de lo permitido?
			blo	noPerm						; si, volver
			cmpx	2,u							; estaria por debajo de lo permitido?
			bhi	noPerm						; si, volver
			rts									; movimiento autorizado
noPerm1	clr	ultMov						; fija movimiento a derecha
			leas	1,s							; quita regA del stack
noPerm	leas	2,s							; limpia direccion de retorno
; --------------------------------------------------------------------------------------------------
; muestra el sprite en funcion del ultimo movimiento horizontal efectuado
; --------------------------------------------------------------------------------------------------
orientSP	ldu	#sprit5D						; apunta a inicio sprite 5D
			lbsr	pinta4B						; muestra el personaje en la direccion deseada
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Controla si se puede llevar a cabo el movimiento hacia la derecha
; --------------------------------------------------------------------------------------------------
dch		tst	borTexto						; Hay que borrar area de texto?				
			beq	dch1							; no, salta siguiente
			lbsr	cleanPM4						; limpia texto
dch1		clr	ultMov						; pone derecha como ultimo movimiento realizado
			ldd	#2								; salto 'total' que hara el sprite (2 bytes a la derecha)
			bsr	permiso						; verificar si se puede hacer
			ldd	actX							; toma posición actual
			std	antX							; la guarda como anterior
			lbsr	mueveD						; efectua el movimiento
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Controla si se puede llevar a cabo el movimiento hacia la izquierda
; --------------------------------------------------------------------------------------------------
izq		tst	borTexto						; Hay que borrar area de texto?				
			beq	izq1							; no, salta siguiente
			lbsr	cleanPM4						; limpia texto
izq1		ldd	#-2							; salto 'total' que hara el sprite (2 bytes a la izquierda)
			stb	ultMov						; pone izquierda como ultimo movimiento realizado
			bsr	permiso						; verificar si se puede hacer
			ldd	actX							; toma posición actual
			std	antX							; la guarda como anterior
			lbsr	mueveI						; efectua el movimiento
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Controla la secuencia de imagenes para el movimiento hacia arriba (4 saltos: 4-5-6-5)
; --------------------------------------------------------------------------------------------------
arriba	inc	movVert						; marcar movimiento vertical arriba
			tst	borTexto						; Hay que borrar area de texto?	
			beq	arr1							; no, salta siguiente
			lbsr	cleanPM4						; limpia texto
arr1		ldd	#-128							; salto 'total' que hara el sprite (4 filas hacia arriba x 32 bytes)
			lbsr	permiso						; verificar si se puede hacer
arrDcha	ldx	#usprit4VD					; apunta a ultima fila mascara/sprite 4VD
			bsr	mueveA						; mueve hacia arriba 1 byte - SPRITE 4VD
			ldx	#usprit5D					; apunta a ultima fila mascara/sprite 5D
			bsr	mueveA						; mueve hacia arriba 1 byte - SPRITE 5D
			ldx	#usprit6VD					; apunta a ultima fila mascara/sprite 6VD
			bsr	mueveA						; mueve hacia arriba 1 byte - SPRITE 6VD
			ldx	#usprit5D					; apunta a ultima fila mascara/sprite 5D
			bsr	mueveA						; mueve hacia arriba 1 byte - SPRITE 5D/I
			lbsr	emite1						; suena un paso
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Mueve SPRITE hacia arriba 
; Devuelve la ultima fila del buffer a pantalla, lo desplaza abajo y llena la primera desde pantalla
; parametros: regX = final sprite
; --------------------------------------------------------------------------------------------------
mueveA	stx	finArr+1						; guarda fin
			ldd	actX							; recupera posicion actual
			std	antX							; la guarda como anterior
			subd	#32							; apunta una fila mas arriba
			std	actX							; actualiza posicion actual
												; restaura la ultima fila del buffer a pantalla
			ldx	antX							; apunta a byte anterior primera linea de pantalla
			leax	32*(altSprite-1)-1,x		; a byte anterior a inicio de la ultima fila en pantalla
			ldu	#ultFila						; apunta a ultima fila del buffer
			ldd	,u								; copia 6 bytes del buffer
			std	,x								; a ultima
			ldd	2,u							; fila
			std	2,x							; sobreescrita
			ldd	4,u							; de
			std	4,x							; pantalla
												; mueve buffer abajo (55 filas)
													; U apunta a ultima linea del buffer
cpyA01	ldd	-6,u							; copia 6 bytes
			std	,u								; de una 
			ldd	-4,u							; linea 
			std	2,u							; a la 
			ldd	-2,u							; linea de
			std	4,u							; debajo
			leau	-6,u							; pasa a inicio linea anterior buffer			
			cmpu	#buffer						; llego a primera linea de mascara/sprite?
			bhi	cpyA01						; no, seguir
												; llena primera fila del buffer con datos pantalla (6 bytes)
			ldy	actX							; apunta a inicio de sprite en pantalla
			ldd	-1,y							; guardamos byte izda + sprite(4) + byte dcha
			std	,u								; guarda bytes -1 y 1
			ldd	1,y							; toma dos mas
			std	2,u							; guarda bytes 2-3
			ldd	3,y							; toma dos bytes mas
			std	4,u							; guarda bytes 4-5
												; actualiza pantalla
			leax	-31,x							; X apunta a inicio de la ultima fila en pantalla tras moverlo arriba
finArr	ldu	#$0000						; apunta a ultima linea de mascara/sprite
			ldy	#ultFila						; apunta a ultima linea del buffer, byte 1
			stx	CopyBuY2+1
			ldx	#buffer2+55*4				; apunta a última fila (de 4) del buffer2
			lda	ultMov						; ultimo movimiento horiz fue derecha?
			bne	oriAIzda						; no, ir a tratamiento izquierda
;  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
mA00		ldb	1,y							; toma un byte del buffer (2)
			andb	,u								; aplica mascara al byte 2
			addb	4,u							; añade byte del sprite
			stb	,x								; actualiza pantalla
			ldd	2,y							; toma dos bytes mas del buffer (3-4)
			anda	1,u							; aplica mascara
			andb	2,u							; a los bytes 3-4
			addd	5,u							; añade 2 bytes del sprite
			std	1,x							; actualiza pantalla
			lda	4,y							; copia 1 bytes mas del buffer (5)
			anda	3,u							; aplica mascara al byte 5
			adda	7,u							; añade byte del sprite
			sta	3,x							; actualiza pantalla
			leax	-4,x							; apunta a inicio linea anterior en pantalla
			leau	-8,u							; apunta a inicio linea anterior mascara/sprite
			leay	-6,y							; apunta a inicio linea anterior buffer			
			cmpy	#buffer						; llego a primera linea de mascara/sprite?
			bhs	mA00							; no, sigue
			bsr	CopyBuY2						; copy result to screen
			lbsr	verifObj						; repon Objeto primer plano si hace falta
			sta	$ffd8							; vuelve a velocidad normal
 			lbsr	retMed3V						; llama retardo para movimiento vertical orientado a derecha
			rts									; retorna
;  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
oriAIzda	ldb	3,u							; toma ultimo byte de mascara
			stb	mskA03+2						; lo guarda en punto uso
			ldb	7,u							; toma ultimo byte OrSprite
			stb	orSA07+2						; lo guarda en punto uso
			ldb	1,y							; toma primer byte del buffer (2)
mskA03	andb	tabInv						; aplica mascara invertida al byte 2
orSA07	addb	tabInv						; añade byte invertido del OrSprite
			stb	,x								; actualiza byte izda pantalla
			ldd	1,u							; toma dos bytes mascara			
			stb	mskA01+2						; lo guarda en punto uso
			sta	mskA02+2						; lo guarda en punto uso
			ldd	5,u							; toma dos bytes orSprite
			stb	orSA05+2						; lo guarda en punto uso
			sta	orSA06+2						; lo guarda en punto uso
			ldd	2,y							; toma dos bytes mas del buffer (3-4)
mskA01	anda	tabInv						; aplica mascara
mskA02	andb	tabInv						; a los bytes 3-4
orSA05	ora	tabInv						; añade 2 bytes
orSA06	orb	tabInv						; del OrSprite
			std	1,x							; actualiza pantalla
			ldb	,u								; toma primer byte mascara
			stb	mskA00+2						; lo guarda en punto uso
			ldb	4,u							; toma primer byte OrSprite
			stb	orSA04+2						; lo guarda en punto uso
			lda	4,y							; copia 1 bytes mas del buffer (5)
mskA00	anda	tabInv						; aplica mascara al byte 5
orSA04	adda	tabInv						; añade byte del OrSprite
			sta	3,x							; actualiza pantalla
			leax	-4,x							; apunta a inicio linea anterior en buffer2
			leau	-8,u							; apunta a inicio linea anterior mascara/sprite
			leay	-6,y							; apunta a inicio linea anterior buffer			
			cmpy	#buffer						; supero la primera linea de mascara/sprite?
			bhs	oriAIzda						; no, sigue
			bsr	CopyBuY2						; copy result to screen
			lbsr	verifObj						; repon Objeto primer plano si hace falta
			sta	$ffd8							; vuelve a velocidad normal
 			lbsr	retMed3I						; llama retardo para movimiento vertical orientado a izquierda
			rts									; retorna
; --------------------------------------------------------------------------------------------------
												; Copia resultado de Buffer2 a pantalla (bloques de 4 BYTES)
CopyBuY2	ldx	#$0000						; point to screen
			leax	-55*32,x						; up 55 files
			fcb	$10							; skip next one
CopyBuZ2	ldx	#$0000						; point to screen
			ldu	#buffer2						; apunta a buffer2
			sync									; espera llegada FS (final de pantalla)
			opt	cc	
			sta	$ffd9							; pasa a doble velocidad
			ldy	#56							; numero de lineas a copiar
CZ201		ldd	,u								; copia dos bytes del buffer
			std	,x								; a pantalla
			ldd	2,u							; y
			std	2,x							; dos mas
			leax	32,x							; apunta a siguiente fila de pantalla
			leau	4,u							; apunta a datos siguiente fila del buffer2
			leay	-1,y							; decrementa contador
			bne	CZ201							; no acabado?, sigue
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Controla la secuencia de imagenes para el movimiento hacia abajo (4 saltos: 4-5-6-5)
; --------------------------------------------------------------------------------------------------
abajo		tst	borTexto						; Hay que borrar area de texto?				
			beq	aba1							; no, salta siguiente
			lbsr	cleanPM4						; limpia texto
aba1		dec	movVert						; indica movimiento vertical abajo
			ldd	#128							; salto 'total' que hara el sprite (4 filas hacia abajo x 32 bytes)
			lbsr	permiso						; verificar si se puede hacer
abaDcha	ldx	#sprit4VD					; apunta a inicio mascara/sprite 4VD
			bsr	mueveB						; mueve hacia abajo 1 byte - SPRITE 4VD
			ldx	#sprit5D						; apunta a inicio mascara/sprite 5D
			bsr	mueveB						; mueve hacia abajo 1 byte - SPRITE 5D
			ldx	#sprit6VD					; apunta a inicio mascara/sprite 6VD
			bsr	mueveB						; mueve hacia abajo 1 byte - SPRITE 6VD
			ldx	#sprit5D						; apunta a inicio mascara/sprite 5D
			bsr	mueveB						; mueve hacia abajo 1 byte - SPRITE 5D/I
			lbsr	emite1						; suena un paso
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Mueve SPRITE hacia abajo 
; Devuelve la primera fila del buffer a pantalla, lo desplaza arriba y llena la ultima desde pantalla
; parametros: regX = inicio sprite
; --------------------------------------------------------------------------------------------------
mueveB	stx	iniAba+1						; guarda inicio
			ldd	actX							; recupera posicion actual
			std	antX							; la guarda como anterior
			addd	#32							; apunta una fila mas arriba
			std	actX							; actualiza posicion actual
												; restaura la primera fila del buffer a pantalla
			ldx	antX							; apunta a inicio primera linea en pantalla del sprite
			ldu	#buffer						; apunta al inicio del buffer
			ldd	,u								; copia 6 bytes del buffer
			std	-1,x							; a primera fila de imagen en pantalla 
			ldd	2,u							; fila de 
			std	1,x							; imagen
			ldd	4,u							; en
			std	3,x							; pantalla
 												; mueve buffer arriba (55 filas)
													; U apunta a inicio del buffer
cpyB01	ldd	6,u							; copia 6 bytes
			std	,u								; de una 
			ldd	8,u							; linea 
			std	2,u							; a la 
			ldd	10,u							; linea de
			std	4,u							; mas arriba
			leau	6,u							; pasa a inicio linea siguiente buffer			
			cmpu	#ultFila						; llego a ultima fila del buffer?
			blo	cpyB01						; no, seguir
												; llena ultima fila del buffer con datos pantalla (6 bytes)
			leax	32*altSprite-1,x			; apunta a byte anterior en linea final de sprite en pantalla
			ldd	,x								; guardamos byte izda + sprite(4) + byte dcha
			std	,u								; guarda bytes -1 y 1
			ldd	2,x							; toma dos mas
			std	2,u							; guarda bytes 2-3
			ldd	4,x							; toma dos bytes mas
			std	4,u							; guarda bytes 4-5
												; actualiza pantalla
			ldx	actX							; apunta a nueva primera fila del sprite en pantalla
iniAba	ldu	#$0000						; apunta a inicio mascara/sprite
			ldy	#buffer+1					; apunta a segundo byte buffer
			stx	CopyBuZ2+1					; save value for copy routine
			ldx	#buffer2						; point to buffer2
			lda	ultMov						; ultimo movimiento horiz fue derecha?
			bne	oriBIzda						; no, ir a tratamiento izquierda
;  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
mB00		ldb	,y								; toma 1 byte
			andb	,u								; aplica mascara al byte 2
			addb	4,u							; añade byte del sprite
			stb	,x								; actualiza pantalla
			ldd	1,y							; toma 2 bytes (3-4)
			anda	1,u							; aplica mascara
			andb	2,u							; a los bytes 3-4
			addd	5,u							; añade 2 bytes del sprite
			std	1,x							; actualiza pantalla
			lda	3,y							; toma 1 byte (5)
			anda	3,u							; aplica mascara al byte 5
			adda	7,u							; añade byte del sprite
			sta	3,x							; actualiza pantalla
			leax	4,x							; apunta a inicio linea siguiente en buffer2
			leau	8,u							; apunta a inicio linea siguiente mascara/sprite
			leay	6,y							; apunta a inicio linea siguiente buffer			
			cmpy	#fBuffer+1					; llego a final de mascara/sprite menos una fila?
			blo	mB00							; no, sigue
			jsr	CopyBuZ2						; copy to screen
			lbsr	verifObj						; repon Objeto primer plano si hace falta
			sta	$ffd8							; vuelve a velocidad normal
			lbsr	retMed3V						; llama retardo para movimiento vertical orientado a derecha
			rts									; retorna
;  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
oriBIzda	ldb	3,u							; toma ultimo byte de mascara
			stb	mskB03+2						; lo guarda en punto uso
			ldb	7,u							; toma ultimo byte OrSprite
			stb	orSB07+2						; lo guarda en punto uso
			ldb	,y								; toma primer byte del buffer (2)
mskB03	andb	tabInv						; aplica mascara al byte 2
orSB07	addb	tabInv						; añade byte del sprite
			stb	,x								; actualiza pantalla
			ldd	1,u							; toma dos bytes mascara			
			stb	mskB01+2						; lo guarda en punto uso
			sta	mskB02+2						; lo guarda en punto uso
			ldd	5,u							; toma dos bytes orSprite
			stb	orSB05+2						; lo guarda en punto uso
			sta	orSB06+2						; lo guarda en punto uso
			ldd	1,y							; toma 2 bytes (3-4)
mskB01	anda	tabInv						; aplica mascara
mskB02	andb	tabInv						; a los bytes 3-4
orSB05	ora	tabInv						; añade 2 bytes
orSB06	orb	tabInv						; del OrSprite
			std	1,x							; actualiza pantalla
			ldb	,u								; toma primer byte mascara
			stb	mskB00+2						; lo guarda en punto uso
			ldb	4,u							; toma primer byte OrSprite
			stb	orSB04+2						; lo guarda en punto uso
			lda	3,y							; toma 1 byte (5)
mskB00	anda	tabInv						; aplica mascara al byte 5
orSB04	adda	tabInv						; añade byte del OrSprite
			sta	3,x							; actualiza pantalla
			leax	4,x							; apunta a inicio linea siguiente en buffer2
			leau	8,u							; apunta a inicio linea siguiente mascara/sprite
			leay	6,y							; apunta a inicio linea siguiente buffer			
			cmpy	#fBuffer+1					; llego a final de mascara/sprite
			blo	oriBIzda						; no, sigue
			jsr	CopyBuZ2						; copy to screen
			lbsr	verifObj						; repon Objeto primer plano si hace falta
			sta	$ffd8							; vuelve a velocidad normal
			lbsr	retMed3I						; llama retardo para movimiento vertical orientado a izquierda
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Mueve SPRITE hacia la derecha. Utiliza 4 pasos: 4-5-6-5 (numero de sprite)
; --------------------------------------------------------------------------------------------------
mueveD	clr	ultMov						; pone ultimo mov. derecha
			ldu	#sprit4D						; inicio sprite 4D (4 pixels desplazado - 5 bytes por fila)
			bsr	muMovD						; muestra sprite en movimiento
			ldu	#sprit5D						; inicio sprite 5D (alineado en siguiente byte - 4 bytes por fila)
			lbsr	pinta4B						; muestra el sprite 5D (4 bytes)
			ldu	#sprit6D						; inicio sprite 6D (4 pixels desplazado - 5 bytes por fila)
			bsr	muMovD						; muestra sprite en movimiento
			lbsr	emite1						; emite el sonido de un paso
			ldu	#sprit5D						; inicio sprite 5D (alineado en siguiente byte - 4 bytes por fila)
			lbsr	pinta4B						; muestra el sprite 5D (4 bytes)
			rts									; retorna
muMovD	bsr	muestraD						; muestra el sprite 4D/6D (5 bytes)
			ldd	actX							; toma posicion actual
			std	antX							; la guarda como anterior
			addd	#1								; desplaza 1 byte a la derecha
			std	actX							; actualiza posicion
											; Actualiza el buffer para sprites de 4 bytes con datos 1 byte hacia la derecha
											; mover buffer 1 byte a la derecha, añadir 1 dcha, devolver izda a pantalla 
			ldu	#buffer						; apunta a inicio buffer
			ldy	#altSprite					; numero de lineas
			ldx	antX							; apunta pantalla byte izquierda arriba
mR00		lda	1,u							; toma segundo byte buffer
			sta	,x								; restaura columna izquierda pantalla 
			ldd	1,u							; toma bytes 2-3 del buffer
			std	,u								; los guarda en bytes 1-2
			ldd	3,u							; toma bytes 4-5 del buffer
			std	2,u							; los guarda en 3-4
			lda	5,u							; toma byte 6 del buffer
			sta	4,u							; lo guarda en byte 5 y apunta a byte 6
			lda	5,x							; toma nuevo byte de pantalla			
			sta	5,u							; lo guarda en 6 byte del buffer y apunta siguiente fila
			leau	6,u							; apunta a siguiente fila buffer
			leax	32,x							; apunta a siguiente fila pantalla
			leay	-1,y							; decrementa contador
			bne	mR00							; no finalizado, sigue
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Muestra un sprite de cinco bytes de anchura alineado a medio byte, moviendose hacia la derecha
; La tabla contiene 5 bytes de mascara (offset: 0,1,2,3,4) y 5 bytes de sprite (offset: 5,6,7,8,9)
; parametros: regU = inicio sprite
; --------------------------------------------------------------------------------------------------
muestraD	ldy	#buffer+1					; apunta a segundo byte del buffer
			ldx	#buffer2						; apunta a buffer resultado
iniDch	ldd	,y								; toma dos bytes del fondo salvado
			anda	,u								; les aplica máscara bytes 1-2 (offset 0-1)
			andb	1,u							; para eliminar fondo a sobreescribir
			addd	5,u							; añade los bytes 1-2 del sprite (offset 5-6)
			std	,x								; pone el resultado en pantalla (bytes 1-2)
			ldd	2,y							; toma dos bytes mas del fondo salvado
			anda	2,u							; les aplica máscara bytes 3-4 (offset 2-3)
			andb	3,u							; para eliminar fondo a sobreescribir
			addd	7,u							; añade los bytes 3-4 del sprite (offset 7-8)
			std	2,x							; pone el resultado en pantalla (bytes 3-4)
			lda	4,y							; lee el quinto byte del fondo salvado
			anda	4,u							; le aplica mascara byte 5 (offset 4)
			adda	9,u							; añade byte 5 del sprite (offset 9)
			sta	4,x							; pone resultado en pantalla (byte 5)
			leax	5,x							; apunta a siguiente linea de pantalla
			leau	10,u							; apunta a siguiente linea de mascara/sprite
			leay	6,y							; apunta a siguiente linea de fondo guardado
modOrca2	cmpy	#fBuffer						; final del sprite?
			blo	iniDch						; no finalizado, sigue
			jsr	CopyBuD2						; copy to screen
			lbsr	verifObj						; repon Objeto primer plano si hace falta
			sta	$ffd8							; vuelve a velocidd normal
			lbsr	retMedi2						; llama retardo para movimiento horizontal a derecha
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Mueve SPRITE hacia la izquierda. Utiliza 4 pasos: 4-5-6-5 (numero de sprite)
; --------------------------------------------------------------------------------------------------
mueveI	lda	#1								; pone izquierda
			sta	ultMov						; como ultimo movimiento
			ldu	#sprit4D						; inicio sprite 4I (4 pixels desplazado - 5 bytes por fila)
			bsr	muMovI						; muestra sprite en movimiento
			ldu	#sprit5D						; inicio sprite 5I (alineado en siguiente byte - 4 bytes por fila)
			lbsr	pinta4B						; muestra el sprite 5I (4 bytes)
			ldu	#sprit6D						; inicio sprite 6I (4 pixels desplazado - 5 bytes por fila)
			bsr	muMovI						; muestra sprite en movimiento
			lbsr	emite1						; emite sonido 1 paso
			ldu	#sprit5D						; inicio sprite 5I (alineado en siguiente byte - 4 bytes por fila)
			lbsr	pinta4B						; muestra el sprite 5I (4 bytes)
			rts									; retorna
muMovI	ldd	actX							; toma posicion actual
			std	antX							; la guarda como anterior
			subd	#1								; desplaza 1 byte a la izquierda
			std	actX							; actualiza posicion
			jsr	muestraI						; muestra el sprite 4I/6I (5 bytes)
											; Actualiza el buffer para sprites de 4 bytes con datos 1 byte hacia la izquierda
											; mover buffer 1 byte a la izquierda, añadir 1 izda, devuelve dcha a pantalla 
			ldy	#altSprite					; numero de lineas
			ldu	#buffer						; apunta a byte 1 primera linea buffer
			ldx	antX							; apunta pantalla byte izquierda arriba
mL00		lda	4,u							; toma byte 5 del buffer
			sta	3,x							; restaura cuarta columna sprite pantalla 
			ldd	3,u							; toma bytes 4-5 del buffer
			std	4,u							; los guarda en bytes 5-6
			ldd	1,u							; toma bytes 2-3 del buffer
			std	2,u							; los guarda en 3-4
			lda	,u								; toma byte 1 del buffer
			sta	1,u							; lo guarda en byte 2
			lda	-2,x							; toma byte siguiente por la izquierda de pantalla			
			sta	,u								; lo guarda en byte 1 del buffer
			leax	32,x							; apunta a siguiente byte debajo
			leau	6,u							; apunta a siguiente fila del buffer
			leay	-1,y							; decrementa contador
			bne	mL00							; no finalizado, sigue
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Muestra la imagen estática del sprite 5 segun dirección anterior de movimiento
; en realidad solo sobreescribe los pies de Brody
; --------------------------------------------------------------------------------------------------
estatico	lda	numLocal						; mira numero de localizacion
			cmpa	#64							; esta en la Orca?
			beq	estat03						; si, salir
			lda	ultMov						; ultimo movimiento horiz fue derecha?
			bne	estat01						; si, ir a tratamiento izquierda
			ldu	#sprit3DC					; apunta a inicio mascara/sprite 6VD parte baja (ultimas filas)
			bra	estat02						; salta dos
estat01	ldu	#sprit3IC					; apunta a inicio mascara/sprite 6VI parte baja (ultimas filas)
estat02	lbsr	pinta4C						; pinta filas bajas del sprite
estat03	rts									; retorna
; --------------------------------------------------------------------------------------------------
; subrutina de multiples entradas para verificar si Brody activa eventos
; parametro X debe apuntar al valor a controlar (los demas son 4 'pasos' mas abajo) 
; se miran: X, X+128, X+256, X+384 ordenadamente segun punto de entrada
; --------------------------------------------------------------------------------------------------
verif4	cmpx	actX							; esta a esta altura?
			beq	eVerif						; si, salir
			leax	128,x							; apunta posicion inmediatamente abajo
verif3	cmpx	actX							; esta a esta altura?
			beq	eVerif						; si, salir
			leax	128,x							; apunta posicion inmediatamente abajo
verif2	cmpx	actX							; esta a esta altura?
			beq	eVerif						; si, salir
			leax	128,x							; apunta posicion inmediatamente abajo
verif1	cmpx	actX							; esta a esta altura?
eVerif	rts									; retorna
; --------------------------------------------------------------------------------------------------
; Muestra un sprite de cinco bytes de anchura alineado a medio byte, moviendose hacia la izquierda
; La tabla contiene 5 bytes de mascara (offset: 0,1,2,3,4) y 5 bytes de sprite (offset: 5,6,7,8,9)
; parametros: regU = inicio sprite
; --------------------------------------------------------------------------------------------------
muestraI	ldx	#buffer2						; apunta a buffer resultado
			ldy	#buffer						; apunta a buffer
iniIzq	ldd	3,u							; toma dos bytes finales de mascara
			stb	mskD4+2						; guarda byte bajo para A
			sta	mskD3+2						; guarda byte alto para B
			ldd	8,u							; toma dos bytes finales OrSprite
			stb	orSD9+2						; guarda byte bajo para A
			sta	orSD8+2						; guarda byte alto para B
			ldd	,y								; toma dos bytes del fondo salvado
mskD4		anda	tabInv						; les aplica máscara
mskD3		andb	tabInv						; para eliminar fondo a sobreescribir
orSD9		ora	tabInv						; añade los bytes
orSD8		orb	tabInv						; del sprite
			std	,x								; pone el resultado en pantalla (bytes 1-2)
			ldd	1,u							; toma dos bytes siguientes de mascara
			stb	mskD2+2						; guarda byte bajo para A
			sta	mskD1+2						; guarda byte alto para B
			ldd	6,u							; toma dos bytes finales OrSprite
			stb	orSD7+2						; guarda byte bajo para A
			sta	orSD6+2						; guarda byte alto para B
			ldd	2,y							; toma dos bytes mas del fondo salvado
mskD2		anda	tabInv						; les aplica máscara
mskD1		andb	tabInv						; para eliminar fondo a sobreescribir
orSD7		ora	tabInv						; añade los bytes
orSD6		orb	tabInv						; del sprite
			std	2,x							; pone el resultado en pantalla (bytes 3-4)
			ldb	,u								; primer byte de la mascara
			stb	mskD0+2						; lo guarda para A
			ldb	5,u							; toma primer byte OrSprite
			stb	orSD5+2						; lo guarda para A
			lda	4,y							; lee el quinto byte del fondo salvado
mskD0		anda	tabInv						; le aplica mascara byte 5 (offset 4)
orSD5		adda	tabInv						; añade byte 5 del sprite (offset 9)
			sta	4,x							; pone resultado en pantalla (byte 5)
			leax	5,x							; apunta a siguiente linea del buffer2
			leau	10,u							; apunta a siguiente linea de mascara/sprite
			leay	6,y							; apunta a siguiente linea de fondo guardado
modOrcI2	cmpy	#fBuffer						; final del sprite?
			blo	iniIzq						; no finalizado, sigue
			bsr	CopyBuf2						; copy to screen
			sta	$ffd8							; vuelve a velocidad normal
			lbsr	verifObj						; repon Objeto primer plano si hace falta
			lbsr	retMedi3						; llama retardo para movimiento horizontal a izquierda
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Copia resultado de Buffer2 a pantalla (bloques de 5 BYTES)
; --------------------------------------------------------------------------------------------------
CopyBuf2	ldx	antX							; apunta a inicio del sprite en PANTALLA
			leax	-1,x							; a byte anterior (mas a la izquierda)
			fcb	$10							; skip next
CopyBuD2	ldx	actX							; tom aposicion actual
			ldu	#buffer2						; apunta a buffer2
			sync									; espera llegada FS (final de pantalla)
			opt	cc	
			sta	$ffd9							; pasa a doble velocidad
CB201L	ldy	#56							; numero de lineas a copiar
CB201		ldd	,u								; copia dos bytes del buffer
			std	,x								; a pantalla
			ldd	2,u							; dos mas
			std	2,x							; y
			lda	4,u							; el 
			sta	4,x							; quinto
			leax	32,x							; apunta a siguiente fila de pantalla
			leau	5,u							; apunta a datos siguiente fila del buffer2
			leay	-1,y							; decrementa contador
			bne	CB201							; no acabado?, sigue
			ldb	numLocal						; ver Localizacion
			cmpb	#64							; esta en la Orca?
			beq	CB203							; si, retorna
CB202		ldd	#56							; valor por defecto
			std	CB201L+2						; en parametro
CB203		rts									; retorna
; --------------------------------------------------------------------------------------------------
; Rutina de tratamiento de eventos / colisiones para la Ubicacion 01 (CASA)
; --------------------------------------------------------------------------------------------------
p01Key	equ	$1298+$200					; posicion para hablar o pedir llaves a Ellen
p01AP02	equ	$1880+$200					; punto de cambio de P01 a P02
p02Ent01	equ	$189c+$200					; punto de entrada a P02 desde P01
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
event01	ldx	#p01Key						; posicion sprite 1?
			lbsr	verif4						; verifica 4 posiciones compatibles
			bne	ev01sc1						; no, siguiente control
			lda	numPaso						; toma numero de paso
			cmpa	#16							; es el 16?
			bne	ev01Lla						; no, siguiente control
			ldy	#fra014						; apunta a frase 4
			lbra	outEv11						; salir haciendo fuciones pendientes
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
ev01Lla	tst	llaves						; tiene las llaves?
			bne	e01Det						; si, salir
			tst	movVert						; fue ultimo movimiento vertical?
			bne	e01Det						; si, salir
			lda	ultMov						; fue ultimo movimiento derecha?
			bne	e01Det						; no, salir
			ldy	#fra011						; apunta a frase1			
			lbsr	show42N						; la muestra
leeTecla lbsr	scanTec						; lee teclado
			beq	leeTecla						; no tecla, espera
			cmpa	#'A'							; recibida tecla A?
			beq	respA							; si, procesa respuesta
			cmpa	#'B'							; recibida tecla B?
			bne	leeTecla						; no, espera tecla
respB		ldy	#fra013						; apunta a frase3			
			bra	respCom						; pasa a parte comun
respA		ldy	#fra012						; apunta a frase2			
			lda	#1								; marca
			sta	llaves						; que SI lleva las llaves del coche
			inc	numPaso						; pone Paso02
respCom	inc	borTexto						; marca texto a ser borrado
			lbsr	show42N						; muestra la frase
e01Det	rts									; retorna
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
ev01sc1	ldx	#p01AP02-384				; esta en el limite inferior izquierdo?
			lbsr	verif4						; verifica 4 posiciones compatibles
			bne	e01Det						; no, salir
			tst	movVert						; ultimo movimiento fue vertical?
			bne	e01Det						; si, salir
			ldb	#8								; indica nueva localizacion
			ldx	#p02Ent01					; valor inicial entrada sprite
			lbsr	camPant						; cambia a pantalla 2 sprite como llegue en ultMov
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Rutina de tratamiento de eventos / colisiones para la Ubicacion 02 (CARTEL-COCHE)
; --------------------------------------------------------------------------------------------------
p02AP01	equ	$189c+$200					; punto de cambio de P02 a P01
p01Ent02	equ	$1880+$200					; punto entrada a P01 desde P02
p02car	equ	$1584+$200					; punto 2 entrada al coche (con llaves)
p05Ent02	equ	$1580+$200					; punto de aparición en CALLE3
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
event02	ldx	#p02AP01-384				; esta abajo, tope derecha?
			lbsr	verif4						; verifica 4 posiciones compatibles
			bne	ev02sc1						; no, siguiente control
			tst	movVert						; fue ultimo movimiento vertical?
			bne	ev02sc1						; no, siguiente control
			lda	ultMov						; fue ultimo movimiento derecha?
			bne	ev02sc1						; no, siguiente control
			clrb									; regresa a localizacion 1
			ldx	#p01Ent02					; valor inicial
			lbsr	camPant						; cambia a pantalla 2 sprite como llegue en ultMov
e02Det	rts									; retorna
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
ev02sc1	ldx	#p02car						; esta en el punto de entrada al coche?
			lbsr	verif1						; verifica posicion exacta
			bne	e02Det						; no, salir
e02Lla	tst	llaves						; tiene las llaves del coche?
			beq	noLlaves						; no, mostrar frase1
			ldy	#fra022						; apunta a frase2			
			lbsr	show42N						; la muestra
			ldx	#doorWav						; apunta a literal fichero a cargar
			lbsr	loadFile						; cargar fichero 'puerta'
			lbsr	repWav						; reproduce sonido puerta
			ldx	#carWav						; apunta a literal fichero a cargar
			lbsr	loadFile						; cargar fichero 'motor coche'
			lbsr	repWav						; reproduce sonido motor coche
			ldb	#32							; indica nueva localizacion
			clr	ultMov						; establecer direccion por defecto derecha
			ldx	#p05Ent02					; valor inicial entrada sprite
			lda	numPaso						; toma numero de paso
			cmpa	#2								; es el paso 2?
			bne	e02noP						; no, no incrementar numero de Paso
			inc	numPaso						; pone Paso03 
e02noP	lbsr	camPant						; cambia a pantalla 3 sprite Izquierda
			rts									; retorna
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
noLlaves	ldy	#fra021						; apunta a frase1
			inc	borTexto						; marca texto a borrar
			lbsr	show42N						; la muestra
			lbsr	retMax						; permite verlo un rato
eNoLLa	rts									; retorna
; --------------------------------------------------------------------------------------------------
; Rutina de tratamiento de eventos / colisiones para la Ubicacion 03 (CALLE2)
; --------------------------------------------------------------------------------------------------
p03AP04	equ	$1180+$200					; punto de paso de P03 a P04
p04Ent03	equ	$131c+$200					; punto de entrada a P04 
p03AP06	equ	$0f9c+$200					; punto de paso de P03 a P06
p06Ent03	equ	$1880+$200					; punto de entrada a P06
p03AP08	equ	$149c+$200					; punto de paso de P03 a P08
p08Ent03	equ	$1500+$200					; punto de entrada a P08	
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
event03	tst	movVert						; fue ultimo movimiento vertical?
			bne	fEvent03						; si, salir
			tst	ultMov						; fue hacia la derecha?
			beq	ev03sc2						; si, siguiente control (a derecha)
ev03sc1	ldx	#p03AP04-256				; esta en el punto de paso a la pantalla P04? IZQUIERDA
			lbsr	verif4						; verifica 4 posiciones compatibles
			bne	fEvent03						; no, siguiente control
			ldb	#24							; indica nueva localizacion
			ldx	#p04Ent03					; valor inicial entrada sprite
			lbsr	camPant						; cambia a pantalla 4 sprite como llegue en ultMov
			rts									; retorna
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
ev03sc2	ldx	#p03AP06-128				; esta en el punto de paso a la pantalla P06? DERECHA
			lbsr	verif4						; verifica 4 posiciones compatibles
			bne	ev03sc3						; no, siguiente control
			ldb	#40							; indica nueva localizacion
			ldx	#p06Ent03					; valor inicial entrada sprite
			lbsr	camPant						; cambia a pantalla 6 sprite como llegue en ultMov
			rts									; retorna
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
ev03sc3	ldx	#p03AP08-256				; esta en el punto de paso a la pantalla P08? DERECHA
			lbsr	verif4						; verifica 4 posiciones compatibles
			bne	fEvent03						; no, salir
			clr	ultMov						; establecer direccion por defecto derecha
			ldb	#56							; indica nueva localizacion
			ldx	#p08Ent03					; valor inicial entrada sprite
			lbsr	camPant						; cambia a pantalla 8 sprite Derecha
fEvent03	rts									; retorna
; --------------------------------------------------------------------------------------------------
; Rutina de tratamiento de eventos / colisiones para la Ubicacion 04 (CALLE1)
; --------------------------------------------------------------------------------------------------
p04AP03	equ	$131c+$200					; punto de paso de P04 a P03
p03Ent04	equ	$1180+$200					; punto de entrada a P03 
p04Alc	equ	$1290+$200					; frente al alcalde
p04AP05	equ	$1300+$200					; punto de paso de P04 a P05
p05Ent04	equ	$159c+$200					; punto de entrada a P05
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
event04	tst	movVert						; fue ultimo movimiento vertical?
			bne	fEvent04						; si, salir
			tst	ultMov						; fue hacia la izquierda?
			bne	ev04sc1						; si, siguiente control
			ldx	#p04AP03-128				; esta en el punto de paso a la pantalla P03? DERECHA
			lbsr	verif4						; verifica 4 posiciones compatibles						
			bne	fEvent04						; no, salir
			ldb	#16							; indica nueva localizacion
			ldx	#p03Ent04					; valor inicial entrada sprite
			lbsr	camPant						; cambia a pantalla 3 sprite como llegue en ultMov
			rts									; retorna
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
ev04sc1	ldx	#p04AP05-128				; esta en el punto de paso a la pantalla P05? IZQUIERDA
			lbsr	verif4						; verifica 4 posiciones compatibles						
			bne	oEv04a						; no, siguiente control
			ldb	#32							; indica nueva localizacion
			ldx	#p05Ent04					; valor inicial entrada sprite
			lbsr	camPant						; cambia a pantalla 5 sprite como llegue en ultMov
			rts									; retorna
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
oEv04a	lda	numPaso						; toma numero de paso
			cmpa	#14							; es el 14?
			bne	ev04sc2						; no, siguiente control
			ldx	#p04Alc						; esta frente al alcalde?
			lbsr	verif4						; verifica 4 posiciones compatibles						
			bne	fEvent04						; no, salir
oEv04aY	ldy	#fra043						; apunta a frase
			lbra	outEv11						; salir haciendo fuciones pendientes
ev04sc2	cmpa	#5								; esta en el paso5?
			bne	fEvent04						; si, salir
			ldx	#p04Alc						; esta cerca del Alcalde?
			lbsr	verif4						; verifica 4 posiciones compatibles						
			bne	fEvent04						; no, salir			
			ldy	#fra041						; apunta a frase1			
			lbsr	show42N						; la muestra
leeTec04 lbsr	scanTec						; lee teclado
			beq	leeTec04						; no tecla, espera
			cmpa	#'B'							; recibida tecla B?
			beq	ev04com						; si, salir
			cmpa	#'A'							; recibida tecla A?
			bne	leeTec04						; no, espera tecla
			ldy	#fra042						; apunta a frase3			
			inc	numPaso						; pone Paso06
			lbsr	show42N						; muestra la frase
ev04com	inc	borTexto						; marca texto a ser borrado
fEvent04	rts									; retorna
; --------------------------------------------------------------------------------------------------
; Rutina de tratamiento de eventos / colisiones para la Ubicacion 05 (CALLE3)
; --------------------------------------------------------------------------------------------------
p05AP04	equ	$159c+$200					; punto de paso de P05 a P04
p04Ent05	equ	$1300+$200					; punto de entrada a P05 
p05AP11	equ	$1186+$200					; punto de paso de P05 a P11
p05Sprt	equ	$1412+$200					; posicion sprite interlocutor
p11Ent05	equ	$1880+$200					; punto de entrada a P11 
p05AP02	equ	$1580+$200					; punto de paso de P05 a P02
p02Ent05	equ	$1584+$200					; punto de entrada a P02 
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
event05	tst	movVert						; fue ultimo movimiento vertical?
			bne	ev05sc1						; si, siguiente control
			tst	ultMov						; fue hacia la izquierda?
			bne	ev05sc2						; si, siguiente control
			ldx	#p05AP04-128				; esta en el punto de paso a la pantalla P04? DERECHA
			lbsr	verif4						; verifica 4 posiciones compatibles						
			bne	oEvent05						; no, ver otro evento a derecha
			ldb	#24							; indica nueva localizacion
			ldx	#p04Ent05					; valor inicial entrada sprite
			bsr	camPant						; cambia a pantalla 4 sprite como llegue en ultMov
			rts									; retorna
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
ev05sc1	bmi	fEvent05						; si es 'abajo', salir
			ldx	#p05AP11						; esta en el punto de paso a la pantalla P11? ARRIBA
			lbsr	verif1						; verifica 1 posicion compatible
			bne	fEvent05						; no, salir
			clr	ultMov						; establecer direccion por defecto derecha
			ldb	#80							; indica nueva localizacion
			ldx	#p11Ent05					; valor inicial entrada sprite
			bsr	camPant						; cambia a pantalla 11 sprite Derecha
			rts									; retorna
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
ev05sc2	ldx	#p05AP02-128				; esta en el punto de paso a la pantalla P02? IZQUIERDA
			lbsr	verif4						; verifica 4 posiciones compatibles						
			bne	fEvent05						; no, salir
			clr	ultMov						; establecer direccion por defecto derecha
			ldb	#08							; indica nueva localizacion
			ldx	#p02Ent05					; valor inicial entrada sprite
			bsr	camPant						; cambia a pantalla 02 sprite Derecha
			rts									; retorna
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
oEvent05	tst 	CP03A							; ya se realizó OK la conversacion?
			bne	fEvent05						; si, salir
			ldx	#p05Sprt					; para detectar al sprite
			lbsr	verif4						; verifica 4 posiciones compatibles						
			bne	fEvent05						; no, salir			
			ldy	#fra051						; apunta a frase1			
			lbsr	show42N						; la muestra
leeTec05 lbsr	scanTec						; lee teclado
			beq	leeTec05						; no tecla, espera
			cmpa	#'B'							; recibida tecla B?
			beq	resp05B						; si, procesa respuesta
			cmpa	#'A'							; recibida tecla A?
			bne	leeTec05						; no, espera tecla
			ldy	#fra053						; apunta a frase3			
			inc	CP03A							; que SI se hizo conversacion OK
			bra	re05Com						; pasa a parte comun
resp05B	ldy	#fra052						; apunta a frase2			
re05Com	inc	borTexto						; marca texto a ser borrado
			lbsr	show42N						; muestra la frase
fEvent05	rts									; retorna
; --------------------------------------------------------------------------------------------------
; rutina para efectuar los cambios de pantalla
; parametros:  registroB = numero de localizacion destino
;					registroX = posicion entrada en nueva pantalla
; 					ultMov DEBE estar informado con el sentido en que se quiere mostrar al sprite
; Estas DOS variables *deben estar consecutivas* para poderlas leer de golpe
; numPaso y numLocal
; --------------------------------------------------------------------------------------------------
camPant	stb	numLocal						; guarda numero de ubicacion
			stx	actX							; guarda posicion donde pintar el sprite
			ldu	#tabCamb						; apunta a tabla constantes cambio pantalla
			leau	b,u							; apunta a inicio bloque datos para nueva pantalla
			ldx	2,u							; pone tabla limites de ubicacion
			stx	ptrLimit						; en puntero
			ldx	4,u							; pone direccion rutina eventos para ubicacion
			stx	ptrEvent						; en puntero
			lda	7,u							; toma indicador mas limites
			sta	extraLim						; actualiza variable
			lbsr	cleanPM4
			ldu	,u								; toma dos cifras para nombre de fichero para cargar 
			ldd	numPaso						; lee paso actual y numero de local (8*(n-1))
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
			cmpb	#$20							; es Calle3 (4x8=32d -> $20)?
			bne	cCont01						; no, siguiente control
			tst	CP03A							; se ha hablado con el sprite (cualquier paso)?
			bne	cPant01						; si, no mostrarlo
			bra	cPxx20
cCont01	cmpd	#$0430						; estamos en el paso 4 en Playa2 (6x8=48d -> $30)?
			beq	cP0430
			cmpd	#$0518						; estamos en el paso 5 en Calle1 (3x8=24d -> $18)?
			beq	cP0518
			cmpd	#$0638						; estamos en el paso 6 en Muelle2 (7x8=56d -> $38)?
			beq	cP0638
			cmpd	#$0928						; estamos en el paso 9 en Playa1 (5x8=40d -> $28)?
			beq	cP0928
			cmpd	#$0a30						; estamos en el paso 10 en Playa2 (6x8=48d -> $30)?
			beq	cP0a30
			cmpd	#$0b38						; estamos en el paso 11 en Muelle2 (7x8=56d -> $38)?
			beq	cP0b38
			cmpd	#$0c50						; estamos en el paso 12 en Comisaria (10x8=80d -> $50)?
			beq	cP0c50
			cmpd	#$0d38						; estamos en el paso 13 en Muelle2 (7x8=56d -> $38)?
			beq	cP0d38
			cmpd	#$0e18						; estamos en el paso 14 en Calle1 (3x8=24d -> $18)?
			beq	cP0e18
			cmpd	#$0f50						; estamos en el paso 15 en Comisaria (10x8=80d -> $50)?
			beq	cP0f50
			cmpd	#$1148						; estamos en el paso 17 en Taller1 (9x8=72d -> $48)?
			beq	cP1148
			cmpb	#$40							; esta en la Orca1 (8x8=64d -> $40)?
			bne	cPant01						; no, mostrar pantalla sin sprites
			cmpa	#18							; estamos en el paso 18 o posterior y en la Orca?
			bhs	cPxx40
			bra	cPant01						; no, mostrar pantalla sin sprites
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
cP0518											; fichero a cargar pantalla 4 (Calle1)  + ALCA
cP0e18											; fichero a cargar pantalla 4 (Calle1)  + ALCA
cPxx20											; fichero a cargar pantalla 5 (Calle3)  + GORRO
cP0928											; fichero a cargar pantalla 6 (Playa1)  + GAFA
cP0a30											; fichero a cargar pantalla 7 (Playa2)  + AYTE + ALCA + ELLEN
cP0638											; fichero a cargar pantalla 8 (Muelle2) + PIPA
cPxx40											; fichero a cargar pantalla 9 (Orca1)   + BIGO + SPRITE1
cP1148											; fichero a cargar pantalla 10 (Taller1)+ SPRITE1
cP0c50											; fichero a cargar pantalla 11 (Comi)   + BIGO + ALCA
			ldb	#'X'							; toma terminacion 'X'
			fcb	$8c							; para convertir siguiente en CMPX #nnnn
cP0430											; fichero a cargar pantalla 7 (Playa2)  + AYTE
cP0b38											; fichero a cargar pantalla 8 (Muelle2) + BIGO + DINA + SPRITE2
cP0f50											; fichero a cargar pantalla 11 (Comi)   + BIGO
			ldb	#'Y'							; toma terminacion 'Y'
			fcb	$8c							; para convertir siguiente en LDY
cP0d38											; fichero a cargar pantalla 8 (Muelle2) + SPRITE1
			ldb	#'Z'							; toma terminacion 'Z'
			fcb	$8c							; para convertir siguiente en LDY
cPant01											; para pantallas 'normales' sin sprites añadidos	
			ldb	#'-'							; toma terminacion 'Z'
			ldx	#locPan						; apunta a nombre formado
			stu	2,x							; pone numero de ubicacion
			stb	4,x							; pone variante
			lbsr	loadFile						; carga pantalla
			lbsr	guarda						; guarda fondo a ser 'sobreescrito' (6x56)
			lbsr	orientSP						; muestra sprite Brody bien orientado
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Rutina de tratamiento de eventos / colisiones para la Ubicacion 06 (PLAYA1)
; --------------------------------------------------------------------------------------------------
p06AP03	equ	$1880+$200					; punto de paso de P06 a P03
p03Ent06	equ	$0f9c+$200					; punto de entrada a P03 
p06AP07	equ	$0c9a+$200					; punto de paso de P06 a P07
p06Sprt	equ	$1708+$200					; posicion sprite interlocutor
p07Ent06	equ	$1880+$200					; punto de entrada a P07
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
event06	lda	numPaso						; toma numero de paso
			cmpa	#9								; es el 9?
			bne	oEve06						; no, otros controles
			tst	CP09							; ya se ha efectuado la conversacion?
			bne	oEve06						; si, otros controles
			ldx	#p06Sprt						; esta frente a sprite?
			lbsr	verif4						; verifica 4 posiciones compatibles						
			bne	oEve06						; no, otros controles
			ldy	#fra061						; apunta a frase1
			lbsr	show42N						; la muestra
			inc	borTexto						; marca texto a ser borrado
			inc	CP09							; marca conversacion como realizada
			inc	numPaso						; pone Paso10
			lbsr	retMax						; esperar un rato
			rts									; return
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
oEve06	tst	movVert						; fue ultimo movimiento vertical?
			bne	fEvent06						; si, salir
			tst	ultMov						; fue hacia la derecha?
			beq	ev06sc1						; si, siguiente control
			ldx	#p06AP03-384				; esta en el punto de paso a la pantalla P03? IZQUIERDA
			lbsr	verif4						; verifica 4 posiciones compatibles						
			bne	fEvent06						; no, siguiente control
			ldb	#16							; indica nueva localizacion
			stb	ultMov						; establecer direccion por defecto izquierda
			ldx	#p03Ent06					; valor inicial entrada sprite
			lbsr	camPant						; cambia a pantalla 3 sprite Izquierda
			rts									; retorna
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
ev06sc1	ldx	#p06AP07						; esta en el punto de paso a la pantalla P07? DERECHA
			lbsr	verif1						; verifica 1 posicion compatible						
			bne	fEvent06						; no, salir
			clr	ultMov						; forzar movimiento derecha
			ldb	#48							; indica nueva localizacion
			ldx	#p07Ent06					; valor inicial entrada sprite
			lbsr	camPant						; cambia a pantalla 7 sprite Derecha
fEvent06	rts									; retorna
; --------------------------------------------------------------------------------------------------
; Rutina de tratamiento de eventos / colisiones para la Ubicacion 07 (PLAYA2)
; --------------------------------------------------------------------------------------------------
p07AP06	equ	$1880+$200					; punto de paso de P07 a P06
p06Ent07	equ	$0c9a+$200					; punto de entrada a P06
p07Ellen	equ	$1186+$200					; posicion Ellen
p07Alc	equ	$138a+$200					; posicion alcalde
p07Ayte	equ	$170e+$200					; posicion ayudante
p07Sprt	equ	$178e+$200					; posicion sprite interlocutor
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
event07	tst	movVert						; fue ultimo movimiento vertical?
			bne	fEvent07						; si, salir
			tst	ultMov						; fue hacia la derecha?
			beq	ev07sc1						; si, ir a evento conversacion
			ldx	#p07AP06-384				; esta en el punto de paso a la pantalla P06? IZQUIERDA
			lbsr	verif4						; verifica 4 posiciones compatibles						
			bne	fEvent07						; no, salir
			ldb	#40							; indica nueva localizacion
			ldx	#p06Ent07					; valor inicial entrada sprite
			lbsr	camPant						; cambia a pantalla 6 sprite como llegue en ultMov
			rts									; retorna
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
ev07sc1	tst	CP04							; ya se hizo la conversacion del paso 4?
			bne	oEv07a						; si, salir
			lda	numPaso						; recupera numero de paso
			cmpa	#4								; esta en el cuarto paso?
			bne	oEv07a						; no, salir
			ldx	#p07Ayte						; esta frente al ayudante?
			lbsr	verif4						; verifica 4 posiciones compatibles						
			bne	fEvent07						; no, salir
			ldy	#fra071						; apunta a frase1			
			lbsr	show42N						; la muestra
leeTec07 lbsr	scanTec						; lee teclado
			beq	leeTec07						; no tecla, espera
			cmpa	#'B'							; es la tecla B?
			beq	fTec07						; si, salir
			cmpa	#'A'							; es la tecla A?
			bne	leeTec07						; no, sigue esperando
			inc	CP04							; que SI se hizo conversacion OK
			inc	numPaso						; pone Paso05
			ldy	#fra072						; apunta a frase2			
			lbsr	show42N						; muestra la frase
fTec07	inc	borTexto						; marca texto a ser borrado
fEvent07	rts									; retorna
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
oEv07a	lda	numPaso						; toma numero de paso
			cmpa	#10							; es el 10?
			bne	fEvent07						; no, salir
			tst	CP10a							; hecha conversacion con ayudante?
			bne	oEv07b						; si, ir a siguiente conversacion
			ldx	#p07Sprt						; esta frente al sprite?
			lbsr	verif3						; verifica 3 posiciones compatibles						
			bne	fEvent07						; no, salir
			ldy	#fra073						; apunta a frase3			
			lbsr	show42N						; la muestra
			inc	CP10a							; da conversacion como hecha
fTecCom	lbsr	retMax						; esperar un rato
			bra	fTec07						; marca borrar texto y sale				
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
oEv07b	tst	CP10b							; hecha conversacion con alcalde?
			bne	oEv07c						; si, ir a siguiente conversacion
			ldx	#p07Alc						; esta frente al alcalde?
			lbsr	verif4						; verifica 4 posiciones compatibles						
			bne	fEvent07						; no, salir
			ldy	#fra074						; apunta a frase4			
			lbsr	show42N						; la muestra
			inc	CP10b							; da conversacion como hecha
			bra	fTecCom						; marca borrar texto y sale				
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
oEv07c	tst	CP10c							; hecha conversacion con Ellen?
			bne	fEvent07						; si, salir
			ldx	#p07Ellen					; esta frente a Ellen?
			lbsr	verif3						; verifica 3 posiciones compatibles						
			bne	fEvent07						; no, salir
			ldy	#fra075						; apunta a frase5
			lbsr	show42N						; la muestra
			inc	CP10c							; da conversacion como hecha
			inc	numPaso						; pone Paso11
			bra	fTecCom						; marca borrar texto y sale				
; --------------------------------------------------------------------------------------------------
; Rutina de tratamiento de eventos / colisiones para la Ubicacion 08 (MUELLE2)
; --------------------------------------------------------------------------------------------------
p08AP03	equ	$1500+$200					; punto de paso de P08 a P03
p03Ent08	equ	$149c+$200					; punto de entrada a P03 
p08AP09	equ	$159c+$200					; punto de paso de P08 a P09
p09Ent08	equ	$1304+$200					; punto de entrada a P09
p08AP10	equ	$0d92+$200					; punto de paso de P08 a P10
p10Ent08	equ	$189c+$200					; punto de entrada a P10	
p08Goro	equ	$140e+$200					; posicion Gorro
p08Dina	equ	$1410+$200					; posiicon dinamita
p08Sprt1	equ	$1416+$200					; posicion sprite1
p08Exp	equ	$100c+$200					; posicion experto
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
event08	tst	movVert						; fue ultimo movimiento vertical?
			lbne	ev08sc2						; si, siguiente control
			tst	ultMov						; fue hacia la derecha?
			beq	ev08sc1						; si, siguiente control
			ldx	#p08AP03-256				; esta en el punto de paso a la pantalla P03? IZQUIERDA
			lbsr	verif4						; verifica 4 posiciones compatibles						
			lbne	fEvent08						; no, salir
			ldb	#16							; indica nueva localizacion
			ldx	#p03Ent08					; valor inicial entrada sprite
			lbsr	camPant						; cambia a pantalla 3 sprite como llegue en ultMov
			rts									; retorna
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
ev08sc1	ldx	#p08AP09-128				; esta en el punto de paso a la pantalla P09? DERECHA
			lbsr	verif2						; verifica 2 posiciones compatibles						
			bne	oEv08a						; no, ir a otros eventos
			ldd	#56-16						; menos 16 filas
			std	CX201L+2
			std	CB201L+2
			ldd	#fBuffer						; toma valor final de buffer
			subd	#96							; le resta 16 filas de 6 bytes del buffer
			std	modOrca1+2					; actualiza los dos
			std	modOrcI1+2					; actualiza los dos
			std	modOrca2+2					; controles de fin de sprite horizontal
			std	modOrcI2+2					; controles de fin de sprite horizontal
			ldb	#64							; indica nueva localizacion
			ldx	#p09Ent08					; valor inicial entrada sprite
			lbsr	camPant						; cambia a pantalla 9 sprite como llegue en ultMov
			rts									; retorna
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
oEv08a	tst	CP06							; ya se hizo la conversacion del paso 6?
			bne	oEv08d						; si, otros controles
			lda	numPaso						; recupera numero de paso
			cmpa	#6								; esta en el sexto paso?
			bne	oEv08d						; no, otros controles
			ldx	#p08Goro						; esta cerca de GORO1I
			lbsr	verif3						; verifica 3 posiciones compatibles						
			lbne	fEvent08						; no, salir			
			ldy	#fra081						; apunta a frase1			
			lbsr	show42N						; la muestra
leeTec08 lbsr	scanTec						; lee teclado
			beq	leeTec08						; no tecla, espera
			cmpa	#'B'							; es la tecla B?
			beq	fTec08						; si, salir
			cmpa	#'A'							; es la tecla A?
			bne	leeTec08						; no, sigue esperando
			inc	CP06							; que SI se hizo conversacion OK
			inc	numPaso						; pone Paso07
			ldy	#fra082						; apunta a frase2			
			lbsr	show42N						; muestra la frase
fTec08	inc	borTexto						; marca texto a ser borrado
			rts									; retorna
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
oEv08d	lda	numPaso						; toma numero de paso
			cmpa	#13							; es el 13?
			bne	oEv08b						; no, otros pasos
			ldx	#p08Sprt1					; esta frente al sprite1?
			lbsr	verif2						; verifica 2 posiciones compatibles						
			bne	fEvent08						; no, salir
			ldy	#fra085						; apunta a frase 5
			bra	outEv08						; salir haciendo procesos
oEv08b	cmpa	#11							; es el 11?
			bne	fEvent08						; no, salir
			tst	CP11a							; hecha conversacion con experto?
			bne	oEv08c						; si, ir a siguiente conversacion
			ldx	#p08Exp						; esta frente al experto?
			lbsr	verif2						; verifica 2 posiciones compatibles						
			bne	fEvent08						; no, salir
			inc	CP11a							; da conversacion como hecha 
			ldy	#fra083						; apunta a frase3			
			lbsr	show42N						; la muestra
fTe8Com	lbsr	retMax						; esperar un rato
			bra	fTec08						; marca texto a borrar y retorna
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
oEv08c	tst	CP11b							; hecha conversacion con dinamita?
			bne	fEvent08						; si, salir
			ldx	#p08Dina						; esta frente a dinamita?
			lbsr	verif3						; verifica 2 posiciones compatibles						
			bne	fEvent08						; no, salir
			ldy	#fra084						; apunta a frase4			
			inc	CP11b							; da conversacion como hecha
outEv08	lbsr	show42N						; la muestra
			inc	numPaso						; pone Paso12
			bra	fTe8Com						; marca borrar texto y sale				
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
ev08sc2	bmi	fEvent08						; si es abajo, salir
			ldx	#p08AP10						; esta en el punto de paso a la pantalla P10? ARRIBA
			lbsr	verif1						; verifica 1 posicion compatible						
			bne	fEvent08						; no, salir
			ldb	#72							; indica nueva localizacion
			stb	ultMov						; establecer direccion por defecto izquierda
			ldx	#p10Ent08					; valor inicial entrada sprite
			lbsr	camPant						; cambia a pantalla 10 sprite Izquierda
fEvent08	rts									; retorna
; --------------------------------------------------------------------------------------------------
; Rutina de tratamiento de eventos / colisiones para la Ubicacion 09 (ORCA1)
; --------------------------------------------------------------------------------------------------
p09AP08	equ	$1304+$200					; punto de paso de P09 a P08
p08Ent09	equ	$159c+$200					; punto de entrada a P08
p09Sprt1	equ	$1306+$200					; posicion sprite1
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
event09	tst	movVert						; fue ultimo movimiento vertical?
			lbne	fEvent09						; si, salir
			lda	numPaso						; toma numero de paso
			cmpa	#18							; es el 18?
			bne	oEv09a						; no, siguiente control
			ldx	#p09Sprt1					; esta frente a sprite1?
			lbsr	verif1						; verifica 1 posicion compatible						
			bne	oEv09a						; no, siguiente control
			clr	numCebo						; a cero contador de cebo lanzado
			ldy	#fra091						; apunta a frase
			lbra	outEv11						; salir haciendo operaciones pendientes
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
oEv09a	cmpa	#19							; es el 19?			
			lbne	oEv09b						; no, siguiente control
			ldy	#fra092						; apunta a frase2
			lbsr	show42N						; la muestra
leeT09a  lbsr	scanTec						; lee teclado
			beq	leeT09a						; no tecla, espera
			cmpa	#'B'							; es la tecla B?
			beq	fTec09a						; si, salir
			cmpa	#'A'							; es la tecla A?
			bne	leeT09a						; no, sigue esperando
			inc	numCebo						; incrementa contador cebo lanzado
			ldy	#fra093						; apunta a frase3
			lbsr	show42N						; muestra la frase
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
fTec09a	inc	borTexto						; marca texto a ser borrado
			lda	numCebo						; mira contador veces cebo
			cmpa	#3								; van 3 veces?
			lbne	fEvent09						; no, salir
			lbsr	verTibuP						; cargar el sprite tiburon pequeño por pasos
			ldy	#fra094						; apunta a frase4
			lbsr	show42N						; muestra la frase
			lbsr	retExt6						; añade un retardo
			ldy	#fra095						; mostrar frase5
			lbsr	show42N						; muestra la frase
												; cargar la pantalla ORCA sin Quint y con tiburon grande
			ldx	#locPan						; apunta a cadena para cargar
			ldd	#$3039						; para cargar pantalla "L09Y"
			std	2,x							; pone nombre
			lda	#'Y'							; terminacion std
			sta	4,x							; la pone
			lbsr	loadFile						; carga pantalla
			lbsr	retExt6						; añade un retardo
			ldy	#fra096						; apunta a frase6
			lbsr	show42N						; la muestra
leeT09b  lbsr	scanTec						; lee teclado
			beq	leeT09b						; no tecla, espera
			cmpa	#'A'							; es la tecla A?
			beq	finMal						; si, pantalla has perdido
			cmpa	#'C'							; es la tecla C?
			beq	finMal						; si, pantalla has perdido
			cmpa	#'B'							; es la tecla B?
			bne	leeT09b						; no, sigue esperando
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
			lbsr	retTibu						; para evitar re-usar tecla anterior y separar textos en el tiempo
			ldy	#fra097						; apunta a frase7
			lbsr	show42N						; muestra la frase
leeT09c  lbsr	scanTec						; lee teclado
			beq	leeT09c						; no tecla, espera
			cmpa	#'A'							; es la tecla A?
			beq	finMal						; si, pantalla has perdido
			cmpa	#'B'							; es la tecla B?
			beq	finMal						; si, pantalla has perdido
			cmpa	#'C'							; es la tecla C?
			bne	leeT09c						; no, sigue esperando
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
			clr	musPerm						; prohibe musica
			lda	#1								; pone valor 1 para
			sta	permSal						; que no se lea teclado entre caracteres (evitar pulsaciones largas)
			ldy	#fra098						; apunta a frase8
			lbsr	limSG4						; limpia pantalla texto			
			lbsr	setSG4						; pasa a modo texto (SG4)
			ldu	#txtFila4					; apunta a inicio cuarta fila pantalla
			lbsr	textPNew						; la muestra
			lbsr	retExt6						; añade un retardo
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
			ldy	#fra09a						; apunta a frase10
			lbsr	limSG4						; limpia pantalla texto			
			ldu	#txtFila4					; apunta a inicio cuarta fila pantalla
			lbsr	textPNew						; la muestra
leeT09d  lbsr	scanTec						; lee teclado
			beq	leeT09d						; no tecla, espera
			cmpa	#'A'							; es la tecla A?
			beq	primerP						; si, iniciar nueva partida desde paso1
			cmpa	#'B'							; es la tecla B?
			lbne	leeT09d						; no, sigue esperando
			jmp	fueraYa						; sale del juego		
primerP	ldd	#56							; restore std value
			std	CX201L+2						; in rows counter
			lda	#1								; pone paso 1
			sta	trucoP+1						; en cdigo que lo carga
			clr	ctrlLla+1					; poner NO llaves
			bra	reInicio						; reinicia partida desde Paso 1
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
finMal	ldd	#56							; restore std value
			std	CX201L+2						; in rows counter
			lda	#1								; pone valor 1
			sta	permSal						; para evitar leer teclado (y cambiar de nivel)
			lbsr	limSG4						; limpia pantalla texto			
			lbsr	setSG4						; pasa a modo texto (SG4)
			ldu	#txtFila4					; apunta a inicio cuarta fila pantalla
			ldy	#fra099						; apunta a frase9
			lbsr	textPNew						; la muestra
			lbsr	retExt6						; retardo superLargo
reInicio	ldx	#buffer						; apunta a buffer
			clra									; prepara cero
			clrb									; de 16 bits
fMclean	std	,x++							; limpia un word
			cmpx	#fBuffer						; llego al final?
			blo	fMclean						; no, continua
			ldd	#fBuffer						; toma valor final de buffer
			std	modOrca1+2					; actualiza
			std	modOrcI1+2					; los dos
			std	modOrca2+2					; controles de 
			std	modOrcI2+2					; fin de sprite horizontal
			jmp	noPres						; reinicia partida (mismo Paso inicial si ha perdido)
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
oEv09b	tst	ultMov						; fue hacia la derecha?
			beq	fEvent09						; si, salir
												; a partir del paso 19 YA no se puede salir del barco!
			lda	numPaso						; mira numero de Paso
			cmpa	#18							; es mayor que 18?
			bhs	fEvent09						; si, no se puede salir del barco
			ldx	#p09AP08						; esta en el punto de paso a la pantalla P08? IZQUIERDA
			lbsr	verif1						; verifica 1 posicion compatible						
			bne	fEvent09						; no, salir
			ldd	#fBuffer						; toma valor final de buffer
			std	modOrca1+2					; actualiza
			std	modOrcI1+2					; los dos
			std	modOrca2+2					; controles de 
			std	modOrcI2+2					; fin de sprite horizontal
			ldb	#56							; indica nueva localizacion
			stb	ultMov						; establecer direccion por defecto izquierda
			clra									; crea valor de 16 bits
			std	CX201L+2						; in rows counter
			std	CB201L+2						; in rows counter
			ldx	#p08Ent09					; valor inicial entrada sprite
			lbsr	camPant						; cambia a pantalla 8 sprite Izquierda
fEvent09	rts									; retorna
; --------------------------------------------------------------------------------------------------
; Rutina de tratamiento de eventos / colisiones para la Ubicacion 10 (TALLER1)
; --------------------------------------------------------------------------------------------------
p10AP08	equ	$189c+$200					; punto de paso de P10 a P08
p08Ent10	equ	$0d92+$200					; punto de entrada a P08	
p10CazaT	equ	$168e+$200					; posicion cazatiburones
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
event10	tst	movVert						; fue ultimo movimiento vertical?
			bne	fEvent10						; si, salir
			tst	ultMov						; fue hacia la derecha?
			beq	oEv10a						; si, ver movimiento derecha
			lda	numPaso						; toma numero de paso
			cmpa	#17							; es el 17?
			bne	fEvent10						; no, salir
			ldx	#p10CazaT					; esta frente al cazatiburones?
			lbsr	verif4						; verifica 4 posiciones compatibles						
			bne	fEvent10						; no, salir
			ldy	#fra101						; apunta a frase 1
			lbra	outEv11						; hacer funciones pendientes			
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
oEv10a	ldx	#p10AP08-384				; esta en el punto de paso a la pantalla P08? DERECHA
			lbsr	verif4						; verifica 4 posiciones compatibles						
			bne	fEvent10						; no, salir
			ldb	#56							; indica nueva localizacion
			stb	ultMov						; establecer direccion por defecto izquierda
			ldx	#p08Ent10					; valor inicial entrada sprite
			lbsr	camPant						; cambia a pantalla 8 sprite Izquierda
fEvent10	rts									; retorna
; --------------------------------------------------------------------------------------------------
; Rutina de tratamiento de eventos / colisiones para la Ubicacion 11 (COMISARIA)
; --------------------------------------------------------------------------------------------------
p11AP05	equ	$1880+$200					; punto de paso de P11 a P05
p05Ent11	equ	$1186+$200					; punto de entrada a P05	
p11mesaT	equ	$0f12+$200					; posicion mesa-telefono
p11Secre	equ	$1882+$200					; psicion conversacion con secretaria
p11Sprt	equ	$170e+$200					; posicion frente a sprite
p11Alca	equ	$1704+$200					; posicion alcalde
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
event11	lda	numPaso						; toma numPaso
			cmpa	#8								; es el paso 8?
			bne	oEve11a						; ver otros eventos
			ldx	#p11mesaT					; detectar mesa-telefono
			lbsr	verif4						; verifica 4 posiciones compatibles						
			lbne	fEvent11						; no, salir
			ldy	#fra115						; apunta a frase5			
outEv11	inc	borTexto						; marca texto a ser borrado
			inc	numPaso						; pone Paso09 o paso13
			lbsr	show42N						; muestra la frase
			lbsr	retMax						; esperar 
			rts									; retorna
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
oEve11a	cmpa	#7								; es el paso 7?
			bne	oEve11d						; siguiente paso
			tst	CP07							; ya se hizo la conversacion del paso 7?	
			lbne	movEv11						; si, tratar movimientos
			ldx	#p11Secre					; se ha movido a derecha tras entrar?
			lbsr	verif1						; verifica 1 posicion compatible
			lbne	movEv11						; no, ver otros movimientos
			ldy	#fra113						; apunta a frase3			
			lbsr	show42N						; la muestra
leeTec13 lbsr	scanTec						; lee teclado
			beq	leeTec13						; no tecla, espera
			cmpa	#'B'							; es la tecla B?
			lbeq	oTec11						; ver otros movimientos
			cmpa	#'A'							; es la tecla A?
			bne	leeTec13						; no, sigue esperando
			inc	CP07							; que SI se hizo conversacion OK
			inc	numPaso						; pone Paso08
												; mostrar informe en pantalla NARANJA-NEGRO
			lbsr	limSG4						; limpia pantalla texto			
			lbsr	setSG4A						; pasa a modo texto (SG4 alternativo)
			ldu	#txtFila2					; apunta a inicio primera fila pantalla
			ldy	#fra114						; apunta a frase4
			inc	musPerm						; asegurar que funcionará el retardo de letras
			clr	retSeqM+1					; reducir retardo al minimo
			lbsr	textPNew						; la muestra
			dec	musPerm						; cancelar cambio de parametro
			ldb	#3								; reponer valor 3
			stb	retSeqM+1					; en valor retardo
leeTec14	lbsr	scanTec						; lee teclado
			beq	leeTec14						; no tecla, espera
			cmpa	#'S'							; es la letra S?
			bne	leeTec14						; no tecla, espera
			lbsr	cleanPM4						; limpia texto en modo grafico
			lbsr	setPM4						; regresa a modo grafico
			rts									; retorna
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
oEve11d	cmpa	#15							; esta en el paso 15?
			bne	oEve11c						; no, ver otros eventos
			ldx	#p11Sprt						; esta frente al sprite?
			lbsr	verif4						; verifica 4 posiciones compatibles						
			bne	oEve11b						; no, ver otros eventos
			ldy	#fra117						; apunta a frase3			
			bra	outEv11						; mostrar, pasar a paso13 y retornar
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
oEve11c	cmpa	#12							; esta en el paso 12?
			bne	oEve11b						; no, ver otros eventos
			ldx	#p11Alca						; esta frente al alcalde?
			lbsr	verif4						; verifica 4 posiciones compatibles						
			bne	oEve11b						; no, ver otros eventos
			ldy	#fra116						; apunta a frase3			
			lbra	outEv11						; mostrar, pasar a paso13 y retornar
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
oEve11b	cmpa	#3								; esta en el paso 3?
			bne	movEv11						; no, ver otros eventos
			tst	CP03B							; ya se hizo la conversacion del paso 3B?
			bne	movEv11						; si, ver otros eventos
			ldx	#p11Secre					; se ha movido a derecha tras entrar?
			lbsr	verif1						; verifica 1 posicion compatible
			bne	movEv11						; no, ver otros movimientos
			ldy	#fra111						; apunta a frase1			
			lbsr	show42N						; la muestra
leeTec11 lbsr	scanTec						; lee teclado
			beq	leeTec11						; no tecla, espera
			cmpa	#'B'							; es la tecla B?
			beq	oTec11						; ver otros movimientos
			cmpa	#'A'							; es la tecla A?
			bne	leeTec11						; no, sigue esperando
			inc	CP03B							; que SI se hizo conversacion OK
			ldy	#fra112						; apunta a frase2			
			inc	borTexto						; marca texto a ser borrado
			inc	numPaso						; pone Paso04
			lbsr	show42N						; muestra la frase
			rts									; retorna
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
oTec11	inc	borTexto						; marca texto a ser borrado
movEv11	tst	movVert						; fue ultimo movimiento vertical?
			bne	fEvent11						; si, salir
			tst	ultMov						; fue hacia la derecha?
			beq	fEvent11						; si, salir
			ldx	#p11AP05-384				; esta en el punto de paso a la pantalla P05? IZQUIERDA
			lbsr	verif4						; verifica 4 posiciones compatibles						
			bne	fEvent11						; no, salir
			clr	ultMov						; establecer direccion por defecto derecha
			ldb	#32							; indica nueva localizacion
			ldx	#p05Ent11					; valor inicial entrada sprite
			lbsr	camPant						; cambia a pantalla 5 sprite Derecha
fEvent11	rts									; retorna
; --------------------------------------------------------------------------------------------------
; bucles de retardo. Parametro en registro X
; --------------------------------------------------------------------------------------------------
retardoMaximo	equ	$0000					; valor maximo para 16 bits
retardoTiburon	equ	$8000					; retardo para tiburon
retardoLetras	equ	$2800					; retardo entre letras en SG4
retardoMedio2	equ	$0c00					; valor para movimiento horizontal a derecha
retardoMedio3	equ	$0b00					; valor para movimiento horizontal a izquierda
retardoMedio3V	equ	$0700					; valor para movimiento vertical a derecha
retardoMedio3I	equ	$0600					; valor para movimiento vertical a izquierda
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
retMax	ldx	#retardoMaximo				; retardo maximo de 16 bits
			fcb	$10							; convierte la siguiente en un ldy #$xxxx para evitarla
retTibu	ldx	#retardoTiburon			; retardo x tibuton
			fcb	$10							; convierte la siguiente en un ldy #$xxxx para evitarla
retMedi2	ldx	#retardoMedio2				; retardo Horiz a Dcha
			fcb	$10							; convierte la siguiente en un ldy #$xxxx para evitarla
retMedi3	ldx	#retardoMedio3				; retardo Horiz a Izqda
			fcb	$10							; convierte la siguiente en un ldy #$xxxx para evitarla
retMed3V	ldx	#retardoMedio3V			; retardo Vertical orientado derecha
			fcb	$10							; convierte la siguiente en un ldy #$xxxx para evitarla
retMed3I	ldx	#retardoMedio3I			; retardo Vertical orientado izquierda
			fcb	$10							; convierte la siguiente en un ldy #$xxxx para evitarla
retLet	ldx	#retardoLetras				; es el unico que debe preservar regY. Para texto SG4
retVar	leax	-1,x							; decrementa contador
			bne	retVar						; no finalizado, sigue
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; retardo LARGO a doble registro. Registro B determina veces a repetir bucle maximo ($10000)
; --------------------------------------------------------------------------------------------------
retExt6	ldb	#6								; 6 veces
retV01	bsr	retMax						; llama rutina retardo Maximo
			decb									; decrementa contador
			bne	retV01						; no finalizado, sigue
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; retardos breves para texto, tambien llaman al secuenciador
; --------------------------------------------------------------------------------------------------
retSeqM	ldx	#$0301						; valor minimo entre letras
			fcb	$10							; evita siguiente convirtiendola en ldy #$nnnn
retSeqG	ldx	#$0170						; valor corto de retardo
			fcb	$10							; evita siguiente convirtiendola en ldy #$nnnn
retSeqT  ldx	#$4000						; valor grande de retardo
			fcb	$10							; evita siguiente convirtiendola en ldy #$nnnn
retSeqC  ldx	#$5000						; valor grande de retardo para creditos
sN00T		pshs	x,y,u							; salva registros usados en rutinas que le llaman
			lbsr	secNotas						; llama al secuenciador
			puls	x,y,u							; restaura registros salvados
			leax	-1,x							; decrementa contador bucle
			bne	sN00T							; no es cero, sigue
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Descompresor que envia char a char a pantalla
; regY = puntero a texto comprimido
; --------------------------------------------------------------------------------------------------
decomNew	lda	,y+							; lee un caracter del paquete comprimido
			beq	endTNew						; cero igual a fin de frase
			bpl	impChN						; si no es negativo, imprimelo
			bsr	esTokNew						; procesa el token
			bra	decomNew						; siguiente caracter del paquete
impChN	jsr	[muestra1]					; muestra char por pantalla
			bra	decomNew						; siguiente caracter del paquete
endTNew	rts									; retorna
; --------------------------------------------------------------------------------------------------
; Cada token tiene dos componentes que pueden ser caracter u otro token (cualquier combinacion)
; la tabla grammar *DEBE* estar alineada a $100 para permitir acceso con un solo byte
; --------------------------------------------------------------------------------------------------
esTokNew	clr	,-s							; pone un cero en el stack para marcar fin de datos
esTNew	anda	#$7f							; pone a cero bit7
			lsla									; dobla valor. Cada token tiene 2 bytes
			sta	tokenw+2						; informa byte bajo direccion tabla
tokenw	ldd	Grammar						; recupera los dos componentes del token	
			pshs	d								; guarda los dos componentes del token en el stack
partN1	lda	,s+							; toma un byte del stack
			bmi	esTNew						; si es token, vuelve sobre si mismo recursivamente (token en regA)
			bne	noTNew						; no es token, imprime char
			rts									; retorna
noTNew	jsr	[muestra1]					; muestra char por pantalla
			bra	partN1						; tratar siguiente byte del stack
; --------------------------------------------------------------------------------------------------
; Permite mostrar caracteres en PMODE4 (hasta 42 chars en 24 filas) 
; La entrada ShowDNew requiere regX apuntando al byte de pantalla donde empezar a escribir
; 									 	 regY debe apuntar a la cadena de texto a mostrar
; --------------------------------------------------------------------------------------------------
show42N	lbsr	cleanPM4						; borra area texto
			ldx	#grfTextL1					; apunta a primera linea reservada para textos
showDNew	stx	posPant						; salva posicion pantalla
			clr	>mixer						; limpia bytes mezclados
			clr	contLet						; a cero el contador de letras por linea
			ldd	#show1						; toma direccion rutina impresion PM4
			std	muestra1						; la pone en el puntero
			bsr	decomNew						; descomprime texto y lo va enviando a pantalla (no buffer)
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Muestra un unico char añadiéndolo al último mostrado (mezcla pixels)
; requiere parámetros: regX debe apuntar a pantalla (mantenido por la rutina)
; 							  regA es el caracter a imprimir 
; --------------------------------------------------------------------------------------------------
show1		cmpa	#$0D							; es un Intro?
			bne	notEnt						; no, saltar proceso para Enter
			bsr	enter							; procesa enter
			rts									; retorna
notEnt	suba	#32							; convierte ASC a indice para la tabla de letras
			ldb	#7								; numero de bytes por letra
			mul									; calcula offset en la tabla de letras
			ldu	#iLetras						; apunta al inicio de la tabla de letras
			leau	d,u							; apunta a los datos de la letra en proceso
			ldb	#7								; contador de filas
			ldx	posPant						; recupera puntero a pantalla
nextB		bsr	putbyt						; dibuja en pantalla un byte de la letra recibida
			leax	32,x							; apunta a la siguiente fila de pantalla
			decb									; decrementa contador de filas
			bne	nextB							; no cero, toma y muestra siguiente byte
			ldx	posPant						; recupera posicion en la linea actual en pantalla
			leax	1,x							; añade uno
			stx	posPant						; actualiza posicion
			lda	contLet						; toma contador de letras
			inca									; lo incrementa
			sta	contLet						; lo actualiza
			cmpa	#42							; llegamos al final de la linea?
			blo	oShow							; no, retorna
			bsr	enter							; añade Enter para cambiar a siguiente linea
oShow		rts									; retorna
; --------------------------------------------------------------------------------------------------
; Subrutina para procesar el caracter Enter (retorno de carro)
; --------------------------------------------------------------------------------------------------
enter		ldd	posPant						; toma byte posicion pantalla
			clrb									; columna a cero
			inca									; incrementa 8 filas ($100 = 256 = 8*32)
			std	posPant						; actualiza posicion pantalla
			tfr	d,x							; actualiza regX como puntero a pantalla
			clr	>mixer						; a cero bytes mezclados
			clr	contLet						; contador de letras a cero
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Subrutina que 'mezcla' CUATRO caracteres en TRES bytes de pantalla
; DEBE preservar regB recibido a la entrada
; --------------------------------------------------------------------------------------------------
putbyt	pshs	b								; guarda registro de trabajo
			ldb	>mixer						; recupera variable control mezcla
			beq	first							; si es cero, poner primera letra
			cmpb	#1								; si es uno	
			beq	second						; poner segunda letra
			cmpb	#2								; si es dos
			beq	third							; poner tercer letra
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
fourth	lda	,u+							; lee byte
			orcc	#1								; carry a uno
			rora									; move todo
			rora									; dos bits a la derecha entrando unos por la izquierda
			anda	-1,x							; mezcla valor con la parte de letra a su izquierda
			sta	-1,x							; muestra valor mezclado
			bra	eput							; salir
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
third		lda	#$ff							; llena A con unos
			ldb	,u+							; lee byte
			orcc	#$01							; carry a uno (para introducirlo por la derecha a regB)
			rolb									; envia bit7 al carry, el viejo entra en bit0
			rola									; carry entra en regA bit0, su bit7 va al carry
			rolb									; envia antiguo bit6 al carry, bit0 recibe carry anterior
			rola									; carry entra en regA bit0, antiguo bit6 va al carry
move2		rolb									; envia antiguo bit5 al carry, bit0 recibe carry anterior
			rola									; carry entra en regA bit0, antiguo bit5 va al carry
			rolb									; envia antiguo bit4 al carry, bit0 recibe carry anterior
			rola									; carry entra en regA bit0, antiguo bit4 va al carry
			anda	-1,x							; mezcla valor con parte del caracter a su izquierda
			std	-1,x							; muestra valor mezclado
			bra	eput							; salir
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
second	lda	#$FF							; llena A con unos
			ldb	,u+							; lee byte
			orcc	#$01							; carry a uno (para introducirlo por la derecha a regB)
			bra	move2							; ir a mover 2 bits, mezclar y mostrar
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
first		lda	,u+							; lee byte
			sta	,x								; lo pone en pantalla
eput		lda	,s								; toma regB del stack (contador bytes mostrados)
			cmpa	#1								; se han mostrado los siete?
			bne	oput							; no, retorna
			lda	>mixer						; recupera variable mezcla
			inca									; la incrementa
			cmpa	#4								; ya se han mostrado 4 seguidos?
			blo	noclr							; no, no resetear contador
			ldx	posPant						; recupera posicion pantalla
			leax	-1,x							; la cuarta letra va en el tercer byte, ajustar regX
			stx	posPant						; actualizar valor
			clra									; resetear contador mezcla
noclr		sta	>mixer						; actualizarlo
oput		puls	b,pc							; restaura regB y retorna
; --------------------------------------------------------------------------------------------------
; pasa a PMODE4 paleta elegida (defecto B/N)
; b7...b1 = %0000110 = 6d (6x$200=$c00) para Dragon
; b7...b1 = %0000111 = 7d (7x$200=$e00) para CoCo
; --------------------------------------------------------------------------------------------------
setPM4	sync									; para cambiar de modo 'fuera' de pantalla
			lda	modeG							; recupera modo grafico solicitado
			sta	$ffc7							; offset b1=1
			sta	$ffc9							; offset b2=1
			sta	$ffcb							; offset b3=1
			sta	$ffcc							; offset b4=0
			sta	$ffce							; offset b5=0
			sta	$ffd0							; offset b6=0
			sta	$ffd2							; offset b7=0  
			sta	$ffc0							; SAM V0=0
			sta	$ffc3							; SAM V1=1
			sta	$ffc5							; SAM V2=1  -- PMODE3
			sta	$ff22							; PIA=$e0   -- 6144 bytes, palette 0/1
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Borra la parte de pantalla reservada para texto
; La entrada clPM4x exige que regX apunte al primer byte que debe ser borrado
; --------------------------------------------------------------------------------------------------
cleanPM4	ldx	#anteTexto					; apunta primera fila de texto
clPM4x	pshs	a								; salva registro A
			ldd	#$ffff						; toma valor para pintar de blanco
bg01		std	,x++							; blanquea dos bytes
			cmpx	#finPantalla				; llegado a final?
			blo	bg01							; no, sigue
			puls	a,pc							; restaura registro y retorna
; --------------------------------------------------------------------------------------------------
; Control de DOS no soportado
; --------------------------------------------------------------------------------------------------	
dosOK		ldx	$D4A7							; lee dos bytes concretos
			cmpx	#$5FF7						; son los del DOS11C/12A/13A?
			beq	esOK							; si, sale
			cmpx	#$17df						; son los bytes del DPlus?
			beq	esOK							; si, sale
			cmpx	#$8E06						; son los del DOS4.0, 4.1 ó Lafumat?	
			beq	esOK							; si, sale
			ldx	$dfda							; lee dos bytes mas
			cmpx	#$2045						; son " E" (marca SuperDOS)? 
			beq	esOK							; si, sale
noSop2	ldx	#descDOS						; apunta a mensaje
			leas	2,s							; elimina direccion de retorno del stack
			jmp	$90e5							; rutina error de Dragon
esOK		rts									; retorna
; --------------------------------------------------------------------------------------------------
; Carga un fichero de disco a pantalla
; parametro registro X debe apuntar al texto del nombre del fichero a cargar
; --------------------------------------------------------------------------------------------------	
	if DRG
loadFile	pshs	cc,d,y,u  					; guarda registros
			stx	>leeChar						; lo pone en la rutina GetChar
			clra									; resultado para DOS11C/12A/13A
			ldx	$D4A7							; lee dos bytes concretos
			cmpx	#$5FF7						; son los del DOS11C/12A/13A?
			beq	eDet2							; si, sale
			inca									; resultado para DOS4.1
			cmpx	#$8E06						; son los del DOS4.1?	
			beq	eDet2							; si, sale
			lda	#$ff							; resultado para DosPlus (-1)
eDet2		tsta									; actualiza flag Z	
			bmi	DPlusV						; si es el DosPlus 5.0 salta a DPlusV
			beq	DOS1xV						; si es el DOS11C/12A/13A salta a DOS1xV
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DOS41V	lbsr	$d4ce							; llama rutina LOAD del DOS4.1
			bra   CloFL							; cerrar ficheros y salir
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DPlusV	lbsr	$d50d							; llama LOAD del DPlus5.0
			bra	CloFL							; cerrar ficheros y salir
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DOS1xV   lbsr  $d4a7							; llama rutina LOAD del DOS11C/12A/13A
CloFL		jsr 	[cerrarFich]				; cierra ficheros abiertos
			clr	$ff48							; stop spinning motor
			ldx	#bufTeclado					; apunta al buffer de entrada de teclado	
			stx	>leeChar						; lo pasa a rutina CharGet		
			clra									; prepara 0				
			clrb									; de 16 bits				
			std	,x								; lo pone al inicio del buffer teclado	
			puls	cc,d,y,u,pc					; recupera registros y retorna
	else
loadFile	pshs	cc,d,y,u  					; guarda registros
			leax	-1,x							; points one char before
			stx	<$A6							; lo pone en la rutina GetChar
			jsr	$cfc1							; llama LOAD de CoCo
			clr	$ff40							; stop motor CoCo
			puls	cc,d,y,u,pc					; recupera registros y retorna
	endif	
; -------------------------------------------------------------------------------------------------
; FSTEP v0.7 - Para simular pasos ... Pere Serrat - 2017-01-26
; -------------------------------------------------------------------------------------------------
pasosI	lda	$ff01							; toma valor config PIA0
			anda	#$f7							; pasa a cero bit 3 (CA2)
			sta	$ff01							; actualiza config
			lda	$ff03							; toma valor config PIA0
			anda	#$f7							; pasa a cero bit 3 (CB2) selecciona canal del DAC
			sta	$ff03							; actualiza config
			rts									; retorna
; -------------------------------------------------------------------------------------------------
			opt	cc
emite1	ldb   $ff23							; toma config del DAC
			orb   #$08							; lo habilita
			stb   $ff23							; actualiza config
			ldx   #$9000						; apunta dentro de la ROM de Basic (numeros aleatorios)
			lda   #$1f							; valor 31 (%00011111) máximo para el sonido. DAC (0-63) define VOLUMEN
			sta   maxVol						; lo guarda en variable control
bucle1	ldb   #$08							; retardo entre ciclos (define la frecuencia del ruido blanco)
			lda   ,x+							; toma un byte de la ROM y mueve puntero
			anda  maxVol						; para que NO exceda del valor maximo deseado
			asla									; lo desplaza
			asla									; dos bits a la izquierda (bits bajos a cero)
			pshs  a								; guarda byte 'adaptado'
			lda   $ff20							; toma valor de la PIA
			anda  #$03							; deja solo los 2 bits bajos (no son del DAC)
			ora   ,s+							; le añade el byte adaptado
			sta   $ff20							; envia resultado al DAC
ret01		decb									; decrementa contador retardo entre ciclos
			bne   ret01							; si no es cero, espera
			tfr   x,d							; pasa registro X al D
			andb  #$03							; mira los dos bits bajos (lo son cada cuatro bucles1)
			bne   bucle1						; si no son cero, repite bucle1 (ráfagas de cuatro bytes enviados)
			ldb	maxVol						; toma volumen maximo
			subd	#4								; reduce el nivel del volumen (desde maximo a cero)
			stb	maxVol						; actualiza variable
			bpl   bucle1						; si todavia es positivo, otro bucle1 (ráfaga de 4 bytes)
			lda   $ff23							; selecciona config del sonido
			anda  #$f7							; deshabilita el DAC
			sta   $ff23							; actualiza config
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Musica controlada por IRQ para Dragon32 - Codigo Original: SIMON JONASSEN
; Adaptado para Partitura-Tiburon: PERE SERRAT - V0.6 - 2017/01/21
; --------------------------------------------------------------------------------------------------
											; Configura el sonido e instala la rutina de servicio del IRQ de linea (HS)
musicP	orcc	#$50							; deshabilita interrupciones	
			lda	$ff23							; recupera configuracion de sonido
			sta	cop23							; guarda una copia
			ora	#8								; habilita el DAC (6 bits)
			sta	$ff23							; actualiza configuracion
			lda 	$ff01							; recupera valor actual configuracion
			ldb	$ff03							; recupera valor actual configuracion
			std	cop0103						; guarda una copia de ambos
			andb	#$f6							; %1111 0110 - fuerza bit3 a cero y
													; bit0=0 deshabilita envio de IRQ a la CPU
			stb	$ff03							; bit SEL2 a cero. Selecciona salida del DAC
			anda	#$f7							; fuerza bit3 a cero
			ora	#3								; bit0=1 y bit1=1 habilita IRQ hacia CPU al inicio de linea 
			sta	$ff01							; bit SEL1 a cero
			lda	$ff00							; borra flag de IRQ recibido (en espera)
			lda	$ff02							; borra flag de IRQ recibido (en espera)
			ldx	$10d							; recupera rutina servicio IRQ por defecto
			stx	oldIRQ						; la guarda
			lda	#$7e							; opcode para JMP
			sta	$10c							; lo pone como primer byte del hook para IRQ
			ldx	#player						; toma direccion nueva rutina IRQ
			stx	$10d							; la pone en el hook
													; pone valores iniciales para el player
			ldx	#partitura					; direccion inicio partitura
			stx	seqInt+1						; para resetear el personalizado tambien
			lda	#1								; valor que
			sta	musPerm						; autoriza musica
												; añadido para no tener que controlar el bit 1 al enviar datos musica
			lda	$ff21							; lee configuracion actual
			pshs	a								; la guarda en el stack
			anda	#%00110011 					; fuerza bit2 bajo
			sta	$ff21 						; ahora $FF20 es  "data direction register"
			lda	#%11111100					; salida para el DAC, entrada para RS-232 & CDI
			sta	$ff20							; cambiar direcciones I/O 
			puls	a								; recupera configuracion guardada
			sta	$ff21							; la repone
												; final añadido para musica
			andcc	#$af							; habilita interrupciones
			rts									; retorna al sistema
; --------------------------------------------------------------------------------------------------
; Rutina llamada cada interrupcion de linea via su IRQ = PLAYER
; Esta rutina debe mantenerse ligeramente por encima de 57 ciclos (lo menos posible)
; la idea es evitar el 'segundo' IRQ, de esta forma actuará cada DOS interrupciones reales
; los 57 ciclos se calculan con los que implica el IRQ(15) y su RTI(15)
; --------------------------------------------------------------------------------------------------
player	opt 	cc
sum		ldd 	#$0000 						; toma valor anterior Canal 1
freq		addd 	#$0000 						; añade valor de tabla (segun frecuencia nota) para Canal 1
			std 	sum+1							; (*) actualiza valor anterior Canal 1 para proxima iteracion
sum2		ldd 	#$0000 						; toma valor anterior Canal 2
freq2		addd 	#$0000 						; añade valor de tabla (segun frecuencia nota) para Canal 2
			std 	sum2+1						; (*) actualiza valor anterior Canal 2 para proxima iteracion
			adda	sum+1							; (*) añade valor del Canal 1
			rora									; divide por 2 (a 9 bits: Carry+regA) para evitar superar valor 255
			sta 	$ff20							; lo envia al DAC
			lda	$ff00							; borra indicador de interrupcion recibida
			rti									; retorna de la interrupcion al programa que se estuviera ejecutando
; --------------------------------------------------------------------------------------------------
; WP v0.7 - reproducir WAVs ... Pere Serrat - 2017-02-06
; el programa exige que el WAV este a partir de wavArea
; ademas el fichero debe llevar al principio dos bytes con la longitud del fichero
; -------------------------------------------------------------------------------------------------
wavArea	equ	$6776							; OJO! Al cargar los WAV se le pone este valor de inicio
													; Es el limite para no afectar el stack en $7f36
													; $7f36-6000d=$67c6 - Uso $6776
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
repWav	lda	$ff01							; toma valor config PIA0
			ldb	$ff03							; toma valor config PIA0
			std	cow0103						; guarda configuraciones recibidas
			anda	#$f7							; pasa a cero bit 3 (CA2)
			sta	$ff01							; actualiza config
			ldb	$ff03							; toma valor config PIA0
			andb	#$f7							; pasa a cero bit 3 (CB2) seleccionan canal del DAC
			stb	$ff03							; actualiza config
			ldb   $ff23							; toma config del DAC
			stb	cow23							; guarda configuracion recibida
			orb   #$08							; habilita el DAC
			stb   $ff23							; actualiza config
			ldx   #wavArea						; apunta a datos de fichero wave formato BIN
			ldd	,x								; lee longitud del fichero
			leau	d,x							; calcula el final del fichero
			stu	finWav+1						; lo guarda para control
			leax	2,x							; apunta al primer byte del WAV
       	lda   ,x+							; toma el primer byte de la muestra, apunta a siguiente
			anda	#$fc							; borra 2 bits bajos
			sta	muImpar+1					; guarda resultado para uso como PRIMER byte impar
			opt	cc
otroByte	ldy	#$000A						; retardo para igualar frecuencia de muestreo-reproduccion
buc01		leay	-1,y							; finalizado?
			bne	buc01							; no, sigue
			ldb	<$00							; mas ajustes
			tfr	x,x							; para retardo
			lda   $ff20							; toma valor del DAC
			anda  #$03							; deja solo los 2 bits bajos (no son del DAC)
muImpar	ora   #$00							; les añade el byte adaptado (para calculo)
			sta   $ff20							; envia resultado al DAC (muestra 1)
			opt	cc								; proceso siguiente byte
			lsra									; convierte byte impar (anterior) a 6 bits 
			lsra									; en los bits 0-5
			sta	acum1+1						; lo guarda para hacer calculos
			lda	,x+							; lee un byte del WAV (otra muestra impar, todas lo *SON*)
			anda	#$fc							; borra 2 bits bajos
			sta	muImpar+1					; guarda resultado para uso como byte impar
			lsra									; lo convierte a formato 6 bits 
			lsra									; en los bits 0-5
acum1		adda	#$00							; le suma el anterior valor enviado al DAC
			asra									; divide por dos para calcular punto medio (interpolar)
			lsla									; sube el resultado
			lsla									; a los bits 2-7
			sta	valPar+1						; guarda byte interpolado (muestra par *NO* leida)
			ldy	#$0005						; retardo para igualar frecuencia de muestreo
buc02		leay	-1,y							; finalizado?
			bne	buc02							; no, sigue
			orb	>$0000						; pierde tiempo
			tfr	x,x							; mas ajustes
			tfr	x,x							; para retardo
			lda   $ff20							; toma valor del DAC
			anda  #$03							; deja solo los 2 bits bajos (no son del DAC)
valPar	ora   #$00							; le añade el byte 'par' calculado
			sta   $ff20							; envia resultado al DAC
			opt	cc
finWav	cmpx	#$0000						; llegado a final de wav? 
			blo	otroByte						; no, seguir
			orcc	#$50							; deshabilita interrupciones
			lda	cow23							; recupera config sonido recibida
			sta	$ff23							; la restaura
			ldd	cow0103						; recupera configuraciones recibidas
			sta	$ff01							; las
			stb	$ff03							; restaura
			andcc	#$af							; habilita interrupciones
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; para detectar localizaciones con objetos en primer plano
; --------------------------------------------------------------------------------------------------
verifObj	lda	numLocal						; recupera ubicacion
			cmpa	#80							; es la 11?
			beq	verifO1						; repon Mostrador si hace falta
			cmpa	#32							; es la 5?
			beq	verifO2						; repon Escalera si hace falta
			cmpa	#16							; es la 3?
			lbeq	verifO3						; repon Poste si hace falta
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Rutina para 'tapar' parte del Sprite de Brody con el Mostrador que requiere primer término
; --------------------------------------------------------------------------------------------------
inicioO1	equ	$10							; columna donde empieza el objeto (16)
finalO1	equ	$1f							; columna donde acaba el objeto (31)
altSP		equ	$700							; diferencia entre linea inferior y superior del sprite (32*55)
anchoMO	equ	16								; bytes de anchura del mostrador
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
			opt	cc
verifO1	ldd	actX							; recupera posicion sprite
			andb	#$1e							; selecciona columna PAR de pantalla
			stb	repCon1+1					; lo guarda en punto control
			clr	tapaBro						; indica que Brody no 'tapa' el mostrador 
			cmpb	#finalO1						; esta mas alla de la ultima columna?
			bhi	noSolap1						; si, salir
			subb	#inicioO1					; esta antes de la primera columna?
			bmi	noSolap1						; si, salir
			ldx	#tabMost						; apunta a tabla Objeto "mostrador" (cada entrada 8 bytes)
			aslb									; multiplica por 4 (ya que se mueve de dos en dos)
			aslb									; para obtener offset a tabla
			abx									; apunta a primer valor dentro del registro en la tabla
			ldu	actX							; recupera posicion actual sprite
			cmpu	,x								; esta por encima de la franja superior a 'ocultar'?
			blo	noSolap1						; si, salir
			cmpu	2,x							; esta debajo de la franja inferior a 'ocultar'?
			bhi	noSolap1						; si, salir
			inc	tapaBro						; marca que SI lo esta tapando
			ldd	actX							; recupera posicion sprite
			andb	#$fe							; evita columna impar
			addd	#altSP						; añade altura del sprite
			subd	4,x							; le resta inicio a reponer
			aslb									; multiplica
			rola									; por ocho
			aslb									; para dejar
			rola									; en A
			aslb									; el numero exacto
			rola									; de lineas a reponer
			sta	nFiRep						; lo guarda en variable control lineas a reponer
			ldu	6,x							; apunta a primer byte del mostrador (mascara)
			ldx	4,x							; apunta a inicio arriba izquierda de pantalla a reponer
			opt	cc
repO101	ldd	,x								; toma dos bytes de pantalla
			anda	,u								; les aplica
			andb	1,u							; la mascara
			addd	anchoMO,u					; les suma el mostrador
			std	,x								; actualiza pantalla
			ldd	2,x							; toma dos bytes mas de pantalla
			anda	2,u							; les aplica
			andb	3,u							; la mascara
			addd	anchoMO+2,u					; les suma el mostrador
			std	2,x							; los repone
repCon1	lda	#$00							; columna en la que esta Brody	
			cmpa	#$1c							; es la ultima columna de la derecha?
			beq	repO102						; si, saltar seccion
												; requiere que se repongan SEIS bytes
			ldd	4,x							; toma dos bytes mas de pantalla 
			anda	4,u							; les aplica
			andb	5,u							; la mascara
			addd	anchoMO+4,u					; les suma el mostrador
			std	4,x							; los repone
repO102	leax	32,x							; apunta a siguiente fila de pantalla
			leau	2*anchoMO,u					; apunta a siguiente fila del Objeto (salta mascara y objeto)
			dec	nFiRep						; decrementa contador lineas
			bne	repO101						; no cero, seguir
noSolap1	rts									; retorna
; --------------------------------------------------------------------------------------------------
; Rutina para 'tapar' parte del Sprite de Brody con la Escalera que requiere primer término
; --------------------------------------------------------------------------------------------------
inicioO2	equ	$00							; columna donde empieza el objeto (0)
finalO2	equ	$10							; columna donde acaba el objeto (16)
anchoES	equ	18								; bytes de anchura de la escalera
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
			opt	cc
verifO2	ldd	actX							; recupera posicion sprite
			andb	#$1e							; selecciona columna PAR de pantalla
			stb	repCon2+1					; lo guarda en punto control
			clr	tapaBro						; indica que Brody no 'tapa' la escalera 
			cmpb	#finalO2						; esta mas alla de la ultima columna?
			bhi	noSolap2						; si, salir
			subb	#inicioO2					; esta antes de la primera columna?
			bmi	noSolap2						; si, salir
			ldx	#tabEsca						; apunta a tabla Objeto "escalera" (cada entrada 8 bytes)
			aslb									; multiplica por 4 (ya que se mueve de dos en dos)
			aslb									; para obtener offset a tabla
			abx									; apunta a primer valor dentro del registro en la tabla
			ldu	actX							; recupera posicion actual sprite
			cmpu	,x								; esta por encima de la franja superior a 'ocultar'?
			blo	noSolap2						; si, salir
			cmpu	2,x							; esta debajo de la franja inferior a 'ocultar'?
			bhi	noSolap2						; si, salir
			inc	tapaBro						; marca que SI lo esta tapando
			lda	#16							; valor exacto para rellano
			cmpb	#12							; esta antes de la columna 12?
			blo	noDobla						; si, no cambiar valor
			adda	#8								; añadir altura un peldaño mas suelo
			cmpb	#14							; esta antes de la columna 14?
			blo	noDobla						; si, no cambiar valor
			adda	#12							; le añade altura dos peldaños
noDobla	sta	nFiRep						; lo guarda en variable control  lineas a reponer
			ldu	6,x							; apunta a primer byte de la escalera (mascara)
			ldx	4,x							; apunta a inicio arriba izquierda de pantalla a reponer
			opt	cc
repO201	ldd	,x								; toma dos bytes de pantalla
			anda	,u								; les aplica
			andb	1,u							; la mascara
			addd	anchoES,u					; les suma la escalera
			std	,x								; actualiza pantalla
			ldd	2,x							; toma dos bytes mas de pantalla
			anda	2,u							; les aplica
			andb	3,u							; la mascara
			addd	anchoES+2,u					; les suma la escalera
			std	2,x							; los repone
repCon2	lda	#$00							; columna en la que esta Brody	
			cmpa	#$0e							; es la ultima columna de la derecha?
			beq	repO202						; si, saltar seccion
												; solo requiere que se repongan CINCO bytes
			lda	4,x							; toma un byte mas de pantalla 
			anda	4,u							; le aplica mascara
			adda	anchoES+4,u					; le suma la escalera
			sta	4,x							; lo repone
repO202	leax	32,x							; apunta a siguiente fila de pantalla
			leau	2*anchoES,u					; apunta a siguiente fila del Objeto (salta mascara y objeto)
			dec	nFiRep						; decrementa contador lineas
			bne	repO201						; no cero, seguir
noSolap2	rts									; retorna
; --------------------------------------------------------------------------------------------------
; Rutina para 'tapar' parte del Sprite de Brody con el Poste que requiere primer término
; --------------------------------------------------------------------------------------------------
inicioO3	equ	$18							; columna donde empieza el objeto (24)
finalO3	equ	$1c							; columna donde acaba el objeto (28)
anchoPO	equ	2								; bytes de anchura del poste
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
			opt	cc
verifO3	ldd	actX							; recupera posicion sprite
			andb	#$1f							; selecciona columna de pantalla
			clr	tapaBro						; indica que Brody no 'tapa' el poste 
			cmpb	#finalO3						; esta mas alla de la ultima columna?
			bhi	noSolap3						; si, salir
			subb	#inicioO3					; esta antes de la primera columna?
			bmi	noSolap3						; si, salir
			ldx	#tabPost						; apunta a tabla Objeto "poste" (cada entrada 8 bytes)
			aslb									; multiplica por 4 (ya que se mueve de dos en dos)
			aslb									; ahora por 8
			aslb									; para obtener offset a tabla
			abx									; apunta a primer valor dentro del registro en la tabla
			ldu	actX							; recupera posicion actual sprite
			cmpu	,x								; esta por encima de la franja superior a 'ocultar'?
			blo	noSolap3						; si, salir
			cmpu	2,x							; esta debajo de la franja inferior a 'ocultar'?
			bhi	noSolap3						; si, salir
			inc	tapaBro						; marca que SI lo esta tapando
			lda	#56							; tantas filas como alto es Brody
			sta	nFiRep						; lo guarda en variable control lineas a reponer
			ldy	6,x							; apunta a primer byte del poste (mascara)
													; U ya apunta a inicio arriba izquierda de pantalla a reponer
											; Hay que calcular INICIO real a reponer (regY)
calcIni	cmpu	,x								; esta mas abajo que la primera fila de deteccion colision?
			bls	finInc						; no, salir del bucle
			leay	4,y							; apunta una fila mas abajo del sprite Poste
			leau	-32,u							; apunta una fila mas arriba de pantalla
			bra	calcIni						; repite
finInc	leau	,y								; apunta a inicio de sprite a utilizar
			ldb	5,x							; toma desplazamiento a aplicar
			ldx	actX							; toma punto pantalla desde donde hay que reponer
			leax	b,x							; apunta a pantalla a actualizar
			opt	cc
repO301	ldd	,x								; toma dos bytes de pantalla
			anda	,u								; les aplica
			andb	1,u							; la mascara
			addd	anchoPO,u					; les suma el poste
			std	,x								; actualiza pantalla
repO302	leax	32,x							; apunta a siguiente fila de pantalla
			leau	2*anchoPO,u					; apunta a siguiente fila del Objeto (salta mascara y objeto)
			dec	nFiRep						; decrementa contador lineas
			bne	repO301						; no cero, seguir
			sta	$ffd8							; pasa a velocidad normal para que el retardo no se lleve a cabo a 'doble velocidad'
			lbsr	retMedi3						; añade un pequeño retardo (para evitar parpadeo)
noSolap3	rts									; retorna
; --------------------------------------------------------------------------------------------------
; PASA A MODO TEXTO
; --------------------------------------------------------------------------------------------------
setSG4	sync									; para cambiar de modo 'fuera' de pantalla
			clra									; para paleta verde
			fcb	$8c							; para evitar la siguente, se convierte en cmpx #$8608
setSG4A	lda	#8								; selecciona paleta texto alternativa
			sta	$ffc6							; offset b1=0
			sta	$ffca							; offset b3=0
			sta	$ffc2							; SAM V1=0
			sta	$ffc4							; SAM V2=0  -- Modo TEXTO
			sta	$ff22							; usar 512 bytes
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; LIMPIA PANTALLA de TEXTO = COLOR NEGRO
; --------------------------------------------------------------------------------------------------
limSG4	ldx	#txtFila1					; inicio texto
			ldd	#$8080						; dos bloques color negro
cls0		std	,x++							; en dos bytes pantalla
			cmpx	#txtFinal					; fin de pantalla?
			blo	cls0							; no, seguir
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; muestra texto en pantalla fondo negro
; registro Y llega apuntando a la cadena comprimida a imprimir
; registro U apunta a lugar pantalla para inicio frase
; --------------------------------------------------------------------------------------------------
textPNew	ldd	#txt1Char					; toma direccion rutina imprimir SG4
			std	muestra1						; la pone en el puntero
			lbsr	decomNew						; descomprime y envia a pantalla char a char
			rts									; retorna
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
txt1Char	cmpa	#13							; es intro?
			bne	noIntro						; no, salta seccion
			tfr	u,d							; toma puntero pantalla para calculos
			andb	#%11100000					; numero de columna a cero (0-31)
			addd	#$0020						; apunta a siguiente linea
			tfr	d,u							; actualiza puntero pantalla
			bra	txtCont						; salta seccion para espacio
noIntro	cmpa	#32							; es espacio en blanco?
			bne	retChar						; no, retocar caracter
			lda	#$80							; pone bloque negro
retChar	anda	#%10111111					; resetea bit 6 para obtener caracter invertido
			sta	,u+							; lo muestra en pantalla
txtCont	tst	musPerm						; hay musica?
			beq	txtSigue						; no, salta seccion
			pshs	x,y,u							; salva registros
			lbsr	retSeqM						; llama retardo Letras Texto con musica
			puls	x,y,u							; recupera registros
			bra	textPan1						; siguiente caracter
txtSigue	lbsr	retLet						; llama retardo Letras Texto
			tst	permSal						; se autoriza saltarse la presentacion?
			bne	textPan1						; siguiente caracter
			pshs	y,u							; salva punteros trabajo
			lbsr	scanTec						; leer teclado
			puls	y,u							; recupera punteros
			tsta									; alguna tecla recibida?
			beq	textPan1						; no, siguiente caracter
			cmpa	#'S'							; se ha pulsado S?
			beq	selPasS						; seleccionar nivel, color Blanco (Std)
			cmpa	#'T'							; se ha pulsado T?
			beq	selPasT						; seleccionar nivel, color Verde (alT)
			cmpa	#'B'							; es 'B'? (para blanco - negro)
			bne	eTxtPan						; si, salta las 2 siguientes
			ldb	#$f8							; valor para PMode4, SCREEN1,1
			stb	modeG							; lo guarda en variable
eTxtPan	leas	2,s							; quita direccion de retorno del stack
			ldx	#altSprite					; poner altura para sprite 5
			stx	guar0+2						; en guarda fondo
			jmp	noPres						; salta la presentacion
textPan1	rts									; retorna		
selPasS	lda	#$f8							; valor para configurar paleta Blanco-Negro
			fcb	$8c							; oculta siguiente convirtiendola en cmpx #$nnnn
selPasT	lda	#$f0							; valor para paeta Verde-Negro
			sta	modeG							; actualizar variable modo grafico
selPaso	jsr	$8006							; acepta 1-9 y A-J como pasos 1-19
			beq	selPaso						; si no tecla, espera
			cmpa	#'1'							; es menor que 1? (49)
			blo	selPaso						; si, espera otra tecla
			cmpa	#'9'							; es menor que 9? (57)
			bls	esCifra						; lo trata como cifra 
			cmpa	#'A'							; es menor que A? (65)
			blo	selPaso						; si, espera otra tecla
			cmpa	#'J'							; es mayor que J? (74)
			bhi	selPaso						; si, espera otra tecla
esLetra	suba	#7								; para que A=9 (65-7-48=10 = el nivel deseado)
esCifra	suba	#48							; para que 1=0 (49-48=1 = el nivel deseado)
todoBien	sta	trucoP+1						; modificar paso inicial
			cmpa	#1								; solicitado Paso 1?
			beq	llaveNo						; si, saltar siguiente
			sta	ctrlLla+1					; modificar valor inicial
llaveNo	bra	eTxtPan						; reiniciar partida
; --------------------------------------------------------------------------------------------------
; guarda en el buffer la pantalla que va a ocupar el tiburon al final
; --------------------------------------------------------------------------------------------------
posFijT	equ	$1975+$200					; posicion fija para el tiburon
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
guarda11	ldx	#posFijT						; apunta pantalla. Posicion FIJA
			ldu	#bufTib						; apunta a buffer tiburon
guar11a	ldb	#11							; bytes por linea
guar11b	lda	,x+							; toma byte de pantalla
			sta	,u+							; lo guarda en buffer
			decb									; decrementa contador
			bne	guar11b						; no finalizada, seguir
			leax	21,x							; apuntar a siguiente linea de pantalla
			cmpu	#eBufTib						; llegado al final?
			blo	guar11a						; no, seguir
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Pone en pantalla un sprite de onze bytes de anchura (alineado a byte) - tiburon
; mostrar tibuPeq en saltos de 4 filas (12 saltos x 4 = 48 Entero)
; --------------------------------------------------------------------------------------------------
priPasT	equ	$1ef5+$200					; primer paso tiburon pequeño
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
verTibuP	bsr	guarda11						; llena buffer
			ldx	#priPasT						; apunta a destino pantalla para 1er paso. FIJO
			ldy	#bufTib+44*11				; apunta a primer byte del buffer para 1er paso (fila 44)
vTib01	pshs	x,y							; guarda punteros
			ldu	#tibuPeq						; apunta a origen mascara-sprite para todos los pasos
			bsr	p11B0							; mostrar hasta el final previsto
			puls	x,y							; recupera punteros
			leax	-128,x						; apunta 4 lineas de pantalla mas arriba(4x32)
			leay	-44,y							; apunta 4 fila mas arriba del buffer (4x11)
			cmpy	#bufTib						; hechos todos los pasos?
			bhs	vTib01						; no seguir
			rts									; retorna
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
p11B0		clr	,-s							; hace un hueco en el stack
p11B1		lda	#11							; numero de bytes por linea
			sta	,s								; inicia contador en el stack
p11B2		lda	,y+							; toma un byte del fondo salvado (buffer)
			anda	,u+							; les aplica máscara
			adda	10,u							; añade un byte del ORsprite
			sta	,x+							; pone el resultado en pantalla
			dec	,s								; hechos los 11 bytes de la linea?
			bne	p11B2							; no, seguir
			leax	21,x							; apunta a siguiente linea de pantalla
			leau	11,u							; apunta a siguiente linea de mascara/sprite
			cmpy	#eBufTib						; final de pantalla?
			blo	p11B1							; no finalizado, seguir
			lbsr	retTibu						; retardo para ver las fases de movimieto del tiburon
			puls	a,pc							; retorna
; -------------------------------------------------------------------------------------------------
; Tabla con constantes para cambiar de pantalla
; estructura:
; offset 0: 2 bytes numero de pantalla. Fichero a cargar= "LnnX"
; offset 2: 2 bytes tabla de limites para la localizacion
; offset 4: 2 bytes rutina de eventos para la localizacion
; offset 6: 1 byte a cero
; offset 7: 1 byte indicador de mas de una serie de limites si no es cero
; -------------------------------------------------------------------------------------------------
tabCamb	fdb	$3031,limit01,event01,$0000
			fdb	$3032,limit02,event02,$0000
			fdb	$3033,limit03,event03,$0001
			fdb	$3034,limit04,event04,$0000
			fdb	$3035,limit05,event05,$0001
			fdb	$3036,limit06,event06,$0000
			fdb	$3037,limit07,event07,$0000
			fdb	$3038,limit08,event08,$0001
			fdb	$3039,limit09,event09,$0000
			fdb	$3130,limit10,event10,$0000
			fdb	$3131,limit11,event11,$0001
; --------------------------------------------------------------------------------------------------
; Estos son sonidos WAV (tamaño maximo 6k)
; --------------------------------------------------------------------------------------------------
	if DRG
doorWav	fcn	/"DOORD32.BIN:1",26486/	; &H6776 sonido puerta
carWav	fcn	/"CARD32.BIN:1",26486/	; &H6776 sonido motor coche
	else
doorWav	fcn	/"DOORD32.BIN:0",1910/	; $6000 + $776 sonido puerta
carWav	fcn	/"CARD32.BIN:0",1910/	; $6000 + $776 sonido motor coche
	endif
; -------------------------------------------------------------------------------------------------
			align $100
; -------------------------------------------------------------------------------------------------
; Tabla que devuelve el valor 'simetrico' del recibido (para movimiento a izquierda)
; -------------------------------------------------------------------------------------------------
tabInv	fcb	%00000000,%10000000,%01000000,%11000000,%00100000,%10100000,%01100000,%11100000	; 00-07	
			fcb	%00010000,%10010000,%01010000,%11010000,%00110000,%10110000,%01110000,%11110000	; 08-0f	
			fcb	%00001000,%10001000,%01001000,%11001000,%00101000,%10101000,%01101000,%11101000	; 10-17		
			fcb	%00011000,%10011000,%01011000,%11011000,%00111000,%10111000,%01111000,%11111000	; 18-1f		
			fcb	%00000100,%10000100,%01000100,%11000100,%00100100,%10100100,%01100100,%11100100	; 20-27		
			fcb	%00010100,%10010100,%01010100,%11010100,%00110100,%10110100,%01110100,%11110100	; 28-2f		
			fcb	%00001100,%10001100,%01001100,%11001100,%00101100,%10101100,%01101100,%11101100	; 30-37		
			fcb	%00011100,%10011100,%01011100,%11011100,%00111100,%10111100,%01111100,%11111100	; 38-3f		
			fcb	%00000010,%10000010,%01000010,%11000010,%00100010,%10100010,%01100010,%11100010	; 40-47		
			fcb	%00010010,%10010010,%01010010,%11010010,%00110010,%10110010,%01110010,%11110010	; 48-4f		
			fcb	%00001010,%10001010,%01001010,%11001010,%00101010,%10101010,%01101010,%11101010	; 50-57		
			fcb	%00011010,%10011010,%01011010,%11011010,%00111010,%10111010,%01111010,%11111010	; 58-5f		
			fcb	%00000110,%10000110,%01000110,%11000110,%00100110,%10100110,%01100110,%11100110	; 60-67		
			fcb	%00010110,%10010110,%01010110,%11010110,%00110110,%10110110,%01110110,%11110110	; 68-6f		
			fcb	%00001110,%10001110,%01001110,%11001110,%00101110,%10101110,%01101110,%11101110	; 70-77		
			fcb	%00011110,%10011110,%01011110,%11011110,%00111110,%10111110,%01111110,%11111110	; 78-7f		
			fcb	%00000001,%10000001,%01000001,%11000001,%00100001,%10100001,%01100001,%11100001	; 80-87		
			fcb	%00010001,%10010001,%01010001,%11010001,%00110001,%10110001,%01110001,%11110001	; 88-8f		
			fcb	%00001001,%10001001,%01001001,%11001001,%00101001,%10101001,%01101001,%11101001	; 90-97		
			fcb	%00011001,%10011001,%01011001,%11011001,%00111001,%10111001,%01111001,%11111001	; 98-9f		
			fcb	%00000101,%10000101,%01000101,%11000101,%00100101,%10100101,%01100101,%11100101	; a0-a7		
			fcb	%00010101,%10010101,%01010101,%11010101,%00110101,%10110101,%01110101,%11110101	; a8-af		
			fcb	%00001101,%10001101,%01001101,%11001101,%00101101,%10101101,%01101101,%11101101	; b0-b7		
			fcb	%00011101,%10011101,%01011101,%11011101,%00111101,%10111101,%01111101,%11111101	; b8-bf		
			fcb	%00000011,%10000011,%01000011,%11000011,%00100011,%10100011,%01100011,%11100011	; c0-c7		
			fcb	%00010011,%10010011,%01010011,%11010011,%00110011,%10110011,%01110011,%11110011	; c8-cf		
			fcb	%00001011,%10001011,%01001011,%11001011,%00101011,%10101011,%01101011,%11101011	; d0-d7		
			fcb	%00011011,%10011011,%01011011,%11011011,%00111011,%10111011,%01111011,%11111011	; d8-df		
			fcb	%00000111,%10000111,%01000111,%11000111,%00100111,%10100111,%01100111,%11100111	; e0-e7		
			fcb	%00010111,%10010111,%01010111,%11010111,%00110111,%10110111,%01110111,%11110111	; e8-ef		
			fcb	%00001111,%10001111,%01001111,%11001111,%00101111,%10101111,%01101111,%11101111	; f0-f7		
			fcb	%00011111,%10011111,%01011111,%11011111,%00111111,%10111111,%01111111,%11111111	; f8-ff		
; -------------------------------------------------------------------------------------------------
; definicion de los tokens comprimidos para decodificar las frases (2x128 = 256 bytes)
; la tabla grammar *DEBE* estar alineada a $100 para permitir acceso con un solo byte
; -------------------------------------------------------------------------------------------------
Grammar	
	if ESP
			fcb 97,32
			fcb 101,32
			fcb 97,114
			fcb 115,32
			fcb 111,32
			fcb 110,32
			fcb 101,114
			fcb 45,32
			fcb 101,115
			fcb 108,32
			fcb 101,110
			fcb 44,32
			fcb 99,111
			fcb 111,131
			fcb 113,117
			fcb 108,128
			fcb 41,32
			fcb 97,99
			fcb 117,114
			fcb 100,129
			fcb 111,114
			fcb 116,105
			fcb 121,32
			fcb 42,32
			fcb 97,100
			fcb 97,115
			fcb 101,137
			fcb 108,97
			fcb 98,146
			fcb 101,131
			fcb 149,156
			fcb 69,32
			fcb 136,116
			fcb 158,93
			fcb 101,133
			fcb 105,110
			fcb 130,32
			fcb 65,32
			fcb 97,108
			fcb 111,110
			fcb 134,32
			fcb 142,129
			fcb 78,132
			fcb 97,110
			fcb 105,115
			fcb 112,148
			fcb 114,101
			fcb 46,32
			fcb 65,144
			fcb 66,144
			fcb 99,97
			fcb 112,130
			fcb 116,129
			fcb 117,133
			fcb 173,32
			fcb 97,131
			fcb 99,104
			fcb 99,117
			fcb 104,145
			fcb 111,150
			fcb 114,111
			fcb 115,129
			fcb 117,110
			fcb 65,82
			fcb 79,32
			fcb 85,78
			fcb 100,101
			fcb 100,132
			fcb 101,99
			fcb 108,111
			fcb 161,110
			fcb 62,32
			fcb 68,69
			fcb 83,32
			fcb 97,137
			fcb 105,116
			fcb 109,141
			fcb 111,139
			fcb 140,133
			fcb 152,132
			fcb 69,137
			fcb 82,69
			fcb 91,97
			fcb 99,105
			fcb 99,153
			fcb 105,32
			fcb 108,132
			fcb 108,141
			fcb 111,115
			fcb 112,134
			fcb 116,111
			fcb 140,109
			fcb 143,98
			fcb 161,133
			fcb 81,85
			fcb 81,117
			fcb 83,129
			fcb 91,32
			fcb 97,133
			fcb 97,142
			fcb 100,163
			fcb 103,114
			fcb 105,64
			fcb 112,101
			fcb 112,117
			fcb 112,155
			fcb 128,162
			fcb 128,178
			fcb 130,60
			fcb 130,199
			fcb 135,177
			fcb 141,118
			fcb 143,233
			fcb 145,105
			fcb 155,131
			fcb 170,186
			fcb 187,128
			fcb 190,128
			fcb 227,225
			fcb 240,121
			fcb 48,48
			fcb 65,68
			fcb 67,79
			fcb 69,82
			fcb 72,111
			fcb 78,32
			fcb 79,82
			fcb 79,201
	else
			fcb 101,32
			fcb 32,116
			fcb 129,104
			fcb 97,114
			fcb 116,32
			fcb 105,110
			fcb 111,117
			fcb 130,128
			fcb 45,32
			fcb 32,97
			fcb 115,32
			fcb 111,32
			fcb 101,110
			fcb 101,114
			fcb 111,114
			fcb 104,131
			fcb 32,98
			fcb 108,108
			fcb 41,32
			fcb 44,32
			fcb 100,32
			fcb 42,32
			fcb 133,103
			fcb 104,97
			fcb 143,107
			fcb 115,152
			fcb 97,116
			fcb 105,116
			fcb 114,101
			fcb 105,145
			fcb 121,134
			fcb 32,119
			fcb 104,128
			fcb 110,111
			fcb 111,110
			fcb 46,32
			fcb 105,138
			fcb 97,99
			fcb 97,110
			fcb 114,111
			fcb 115,101
			fcb 128,116
			fcb 161,132
			fcb 65,146
			fcb 66,146
			fcb 84,32
			fcb 84,160
			fcb 32,103
			fcb 97,121
			fcb 105,132
			fcb 108,101
			fcb 111,102
			fcb 111,135
			fcb 69,32
			fcb 84,72
			fcb 97,132
			fcb 98,101
			fcb 101,100
			fcb 102,142
			fcb 104,117
			fcb 104,141
			fcb 105,99
			fcb 116,116
			fcb 139,170
			fcb 144,111
			fcb 32,151
			fcb 32,153
			fcb 73,137
			fcb 82,69
			fcb 104,105
			fcb 109,32
			fcb 110,116
			fcb 111,108
			fcb 128,99
			fcb 129,139
			fcb 129,180
			fcb 32,65
			fcb 32,99
			fcb 68,191
			fcb 72,65
			fcb 97,133
			fcb 101,115
			fcb 101,131
			fcb 105,115
			fcb 109,101
			fcb 118,128
			fcb 121,147
			fcb 130,183
			fcb 159,157
			fcb 165,104
			fcb 167,119
			fcb 187,199
			fcb 32,131
			fcb 73,78
			fcb 79,85
			fcb 84,79
			fcb 98,134
			fcb 98,142
			fcb 105,103
			fcb 105,114
			fcb 105,162
			fcb 110,148
			fcb 116,135
			fcb 129,97
			fcb 136,172
			fcb 141,32
			fcb 149,72
			fcb 154,228
			fcb 176,32
			fcb 182,181
			fcb 184,217
			fcb 189,128
			fcb 32,66
			fcb 32,67
			fcb 32,87
			fcb 32,207
			fcb 32,223
			fcb 48,48
			fcb 65,110
			fcb 69,82
			fcb 73,216
			fcb 80,200
			fcb 83,116
			fcb 89,134
			fcb 89,222
			fcb 97,109
			fcb 97,115
			fcb 97,145
	endif
; --------------------------------------------------------------------------------------------------
; VARIABLES, LITERALES Y AREAS DE DATOS 
; --------------------------------------------------------------------------------------------------
ultMov	fcb	$00							; ultimo movimiento horizontal (Dcha=0; Izda=1)
antX		fdb	$0000							; byte arriba izquierdo posicion ANTERIOR del sprite en pantalla
actX		fdb	$0000							; byte arriba izquierdo posicion ACTUAL del sprite en pantalla
dirPant	fcc	/$/							; signo dolar direccion hexadecimal
hexaDig	fcn	/    /						; espacio para cuatro digitos hexa
inactiv	fcb	$00							; control inactividad
mixer		equ   $0076         				; variable para controlar mezla de caracteres en pantalla, pag 0
posPant	fdb	$0000							; puntero byte en pantalla
contLet	fcb	$00							; contador letras
modeG		fcb	$00							; modo grafico
llaves	fcb	$00							; indicador de posesión de las llaves del coche
ptrLimit	fdb	$0000							; puntero a tabla de limites para una ubicacion
ptrEvent	fdb	$0000							; puntero a funcion controladora eventos para una ubicacion
vcount	fcb	$02							; numero de interrupciones de cuadro a esperar para una Semifusa
oldIRQ	fdb	$0000							; rutina anterior para IRQ
cop0103	fdb	$0000							; valor anterior configuracion $ff01
cop23		fcb	$00							; valor anterior configuracion sonido
musPerm	fcb	$00							; musica permitida
maxVol	fcb   $ff							; volumen sonido
cow0103	fdb	$0000							; configuraciones PIA0
cow23		fcb	$00							; configuracion sonido
borTexto	fcb	$00							; indicador de que hay que borrar area de texto
extraLim	fcb	$00							; indicador de segunda tabla de limites
movVert	fcb	$00							; indicador de ultimo movimiento hecho en vertical
permSal	fcb	$00							; 0 permite saltarse la presentacion
nFiRep	fcb	$00							; numero de filas que hay que reponer en pantalla
tapaBro	fcb	$00							; indicador de si Brody tapa el objeto en primer plano
numPaso	fcb	$00							; paso en que se encuentra el juego
numLocal	fcb	$00							; numero de localizacion (de 8 en 8 empezando en cero: 0-8-16-24-32 ...)
CP03A		fcb	$00							; indicador hecha OK conversacion Paso 03A
CP03B		fcb	$00							; indicador hecha OK conversacion Paso 03B
CP04		fcb	$00							; indicador hecha OK conversacion Paso 04
CP06		fcb	$00							; indicador hecha OK conversacion Paso 06
CP07		fcb	$00							; indicador hecha OK conversacion Paso 07
CP09		fcb	$00							; indicador hecha OK conversacion Paso 09
CP10a		fcb	$00							; indicador hecha OK conversacion Paso 10a
CP10b		fcb	$00							; indicador hecha OK conversacion Paso 10b
CP10c		fcb	$00							; indicador hecha OK conversacion Paso 10c
CP11a		fcb	$00							; indicador hecha OK conversacion Paso 11a
CP11b		fcb	$00							; indicador hecha OK conversacion Paso 11b
muestra1	fdb	$0000							; rutina a usar para imprimir
numCebo	fcb	$00							; veces cebo lanzado
; -------------------------------------------------------------------------------------------------
;					 $FF02	  $FF00	  Code
; DRAGON        76543210  76543210			; Tecla
; -------------------------------------------------------------------------------------------------
	if DRG
tabTecla fcb	%11110111,%00100000,$5E		; flecha arriba
			fcb	%11101111,%00100000,$0A		; flecha abajo
			fcb	%11011111,%00100000,$08		; flecha izquierda
			fcb	%10111111,%00100000,$09		; flecha derecha
			fcb	%11111101,%00000100,$41		; letra A
			fcb	%11111011,%00000100,$42		; letra B
			fcb	%11110111,%00000100,$43		; letra C
			fcb	%11110111,%00010000,$53		; letra S
			fcb	%11101111,%00010000,$54		; letra T
			fcb	%11111011,%01000000,$03		; Break
finTab	fcb	$ff								; fin de tabla
	else
; -------------------------------------------------------------------------------------------------
;					 $FF02	  $FF00	  Code
; COCO          76543210  76543210			; Tecla
; -------------------------------------------------------------------------------------------------
tabTecla fcb	%11110111,%00001000,$5E		; flecha arriba - sameCol, Row 2->right
			fcb	%11101111,%00001000,$0A		; flecha abajo - sameCol, Row 2->right
			fcb	%11011111,%00001000,$08		; flecha izquierda - sameCol, Row 2->right
			fcb	%10111111,%00001000,$09		; flecha derecha - sameCol, Row 2->right
			fcb	%11111101,%00000001,$41		; letra A - sameCol, Row 2->right
			fcb	%11111011,%00000001,$42		; letra B - sameCol, Row 2->right
			fcb	%11110111,%00000001,$43		; letra C - sameCol, Row 2->right
			fcb	%11110111,%00000100,$53		; letra S - sameCol, Row 2->right
			fcb	%11101111,%00000100,$54		; letra T - sameCol, Row 2->right
			fcb	%11111011,%01000000,$03		; Break - sameCol - sameRow
finTab	fcb	$ff								; fin de tabla
	endif
; --------------------------------------------------------------------------------------------------
; Frases para las conversaciones por pantalla
; --------------------------------------------------------------------------------------------------
	if ESP
fra011	fcc	"‡BuŠ�d[™"										; "- Buenos d[as"										
			fcb	13													; 13															
			fcc	"°#H·v¬t„òl›v�“mÕŒ¸e?"						; "A) #Has visto las llaves de mi coche?"		
			fcb	13													; 13															
			fcc	"±ü�c‚æÍma@«€tŠg„lib®"						; "B) Hola cari@o, ma@ana tengo libre"			
			fcb	13													; 13															
			fcc	"   podrÒÌir €÷a"								; "   podr[amos ir a la playa"						
			fcb	0													; 0															
fra012	fcc	"‡C‚æÍ´òh·ÂjÏolvid˜™"						; "- Cari@o, te las has dejado olvidadas"		
			fcb	13													; 13															
			fcc	"öò•Šˆ"											; "aqu[ las tienes"										
			fcb	0													; 0															
fra013	fcc	"‡Cl‚„©si‹i®ÌÎ×næØ"							; "- Claro que si, iremos con los ni@os"			
			fcb	0													; 0															
fra014	fcc	"—ü�EllŠ‹nïaÌëz¤ÊÆ"							; "* Hola Ellen, nos vamos a cazar al tibur]n"
			fcb	13													; 13															
			fcc	"‡Id Îmu¸„¹id˜Í�çlig¼so!"					; "- Id con mucho cuidado, es peligroso!"		
			fcb	0													; 0															
fra021	fcc	"—ªèeÃ‚r«c¤šŒ¸�si…l›vˆ"						; "* No puedo arrancar el coche sin llaves"		
			fcb	0													; 0															
fra022	fcc	"—M�vô�Û¬‚Ò"									; "* Me voy a la comisar[a"			
			fcb	0													; 0															
fra041	fcc	"‡EsÙaÌõåâtem­˜a‹½llŠì"						; "- Esperamos una gran temporada, se llenar<"	
			fcc	"ÚdÍ÷€ ì ab‚¼t˜a."							; "todo, la playa estar< abarrotada."				
			fcb	13													; 13															
			fcc	"°Rˆp§d¨îó¨Ôo"									; "A) Responder - B) No hacer caso"				
			fcb	0													; 0															
fra042	fcc	"—àhâŠŒntrÏr �“õ¸i²" 						; "* Se han encontrado restos de una chica" 	
			fcb	13													; 13															
			fcc	"at‘˜€¶µÆ"										; "atacada por un tibur]n"							
			fcb	13													; 13															
			fcc	"‡ª´p®o¹p�Âb�s¨µ‘ÓdŠ´Â"						; "- No te preocupes debe ser un accidente de"	
			fcc	"›n¸€mot”a¯P®g¾têšè†Ú"						; "lancha motora. Pregunta en el puerto"			
			fcb	0													; 0															
fra043	fcc	"—Lëz€nï€€Œst¤5.ø0 E’Ø"						; "* La caza nos va a costar 5.000 Euros"		
			fcb	13													; 13															
			fcc	"‡EsÙa‹Úm€šä†„³€pag‚le"						; "- Espera, toma el dinero para pagarle"		
			fcb	0													; 0															
fra051	fcc	"‡MÕvÄ£„m�mol €Îsu b‚baŒa"					; "- Mi vecino me molesta con su barbacoa"		
			fcb	13													; 13															
			fcc	"°ª½p®o¹ç‹m�Šc‚gí“elÅ"						; "A) No se preocupe, me encargar> de ello"		
			fcb	13													; 13															
			fcc	"±TŠg„pr¬a‹n„m�mol e"						; "B) Tengo prisa, no me moleste"					
			fcb	0													; 0															
fra052	fcc	"‡àÖ®Œrdíšpr]xim„dÒ"							; "- Se lo recordar> el pr]ximo d[a"				
			fcb	0													; 0															
fra053	fcc	"‡Mu¸·åñ™‹jef�B¼dy"							; "- Muchas gracias, jefe Brody"					
			fcb	0													; 0															
fra061	fcc	"‡P‚Ä�©ha–µÝ¶�z§a"							; "- Parece que hay un tibur]n por la zona"		
			fcb	13													; 13															
			fcc	"—ª½p®o¹ç‹vôÛp¼b‚Å"							; "* No se preocupe, voy a comprobarlo"			
			fcb	0													; 0															
fra071	fcc	"‡P‚Ä¢×r �“µ¹†po¯Ay¨se"						; "- Parecen los restos de un cuerpo. Ayer se"	
			fcc	"dŠ¾Ó] �dˆa³iÓ]…“õ¸i²"						; "denunci] la desaparici]n de una chica"		
			fcb	13													; 13															
			fcc	"°Rˆp§d¨îó¨Ôo"									; "A) Responder - B) No hacer caso"				
			fcb	0													; 0															
fra072	fcc	"—Y tu‹#ßÇop£·ÊrˆpÄÚ?"						; "* Y tu, #Qu> opinas al respecto?"				
			fcb	13													; 13															
			fcc	"‡ªs>‹³Ä�šata©“µÆ."							; "- No s>, parece el ataque de un tibur]n."	
			fcb	13													; 13															
			fcc	"—L›m€Êf”Šse‹Ži†„habl¤Î>l" 				; "* Llama al forense, quiero hablar con >l" 	
			fcb	13													; 13															
			fcc	"¢Û¬‚Ò¯Vôv¨Ê¦c¦Â"								; "en comisar[a. Voy a ver al alcalde"		
			fcb	0													; 0															
fra073	fcc	"‡ÐÝh€matÏ€µnæo"								; "- El tibur]n ha matado a un ni@o"				
			fcb	13													; 13															
			fcc	"àh€ŒrriÃ�voz –ha–gŠ´‚m˜a" 				; "Se ha corrido la voz y hay gente armada" 	
			fcb	13													; 13															
			fcc	"Îrifl�–äamËêçŽe@™"							; "con rifles y dinamita en peque@as"				
			fcb	13													; 13															
			fcc	"emb‚cñ§�³ëpt’¤ÊÆ"							; "embarcaciones para capturar al tibur]n"		
			fcb	0													; 0															
fra074	fcc	"‡àdì õ®ÛpŠs€¶�²pt’a"						; "- Se dar< una recompensa por la captura"		
			fcb	13													; 13															
			fcc	"“ �Æ"											; "de este tibur]n"										
			fcb	0													; 0															
fra075	fcc	"—S†< mej” ©p™�šdiêÔa"						; "* Ser< mejor que pases el dia en casa"		
			fcb	13													; 13															
			fcc	"–n„´‘†Ž�¶÷a"									; "y no te acerques por la playa"					
			fcb	0													; 0															
fra081	fcc	"°P®g¾t¤îP™¤dšm‚£†o"							; "A) Preguntar - B) Pasar del marinero"			
			fcb	0													; 0															
fra082	fcc	"—#Sab�¦g„“µ‘ÓdŠ´“›n¸a?"					; "* #Sabes algo de un accidente de lancha?"	
			fcb	13													; 13															
			fcc	"‡NÍsiempr� »¶ö–�v†d˜"						; "- No, siempre estoy por aqu[ y la verdad"	
			fcb	13													; 13															
			fcc	"n„h�v¬t„nÕoiÃn˜€“>sÚ"						; "no he visto ni oido nada de >sto"				
			fcb	13													; 13															
			fcc	"—Grñ™‹®åˆ„€�Û¬‚Ò"							; "* Gracias, regreso a la comisar[a"				
			fcb	0													; 0															
fra083	fcc	"‡H� Ï«¦iz«Ã�sËuñ]…–Å"						; "- He estado analizando la situaci]n y lo"	
			fcb	13													; 13															
			fcc	"©tŠeÌö�µåâˆ¹¦o"								; "que tenemos aqu[ es un gran escualo"			
			fcb	13													; 13															
			fcc	"Evi´©�gŠ´s¦g€Êm‚"							; "Evite que la gente salga al mar"				
			fcb	13													; 13															
			fcc	"—Vôº†Å¯NïeÌ¢Û¬‚Ò"							; "* Voy a hacerlo. Nos vemos en comisar[a"		
			fcb	0													; 0															
fra084	fcc	"—NÕ½l�oc’r€z‚³¯AÂm<ƒŽeda"					; "* Ni se les ocurra zarpar. Adem<s queda"		
			fcb	13													; 13															
			fcc	"Œnf¬c˜€ €äamËa"								; "confiscada esta dinamita"							
			fcb	0													; 0															
fra085	fcc	"‡SÕŽ†>iƒ©c‘� �Æ"								; "- Si quer>is que cace este tibur]n"			
			fcb	13													; 13															
			fcc	"ï€€Œst¤¾�5.ø0 E’Ø"							; "os va a costar unos 5.000 Euros"				
			fcb	13													; 13															
			fcc	"—D�‘u†dÍllevìƒd�Ùs§™"						; "* De acuerdo, llevar<s dos personas"			
			fcb	13													; 13															
			fcc	"‡D€igu¦‹tu paga! Ð²pË<…s»yo"				; "- Da igual, tu paga! El capit<n soy yo"		
			fcb	0													; 0															
fra091	fcc	"‡Busc€š¹b„“ceb„–Öv·•r«do"					; "- Busca el cubo de cebo y lo vas tirando"	
			fcb	13													; 13															
			fcc	"¶Ü”d€h™t€©a³ezc€šÆ"							; "por la borda hasta que aparezca el tibur]n"	
			fcb	0													; 0															
fra092	fcc	"°Tir·ceb„‡ ±ó�n˜a"							; "A) Tiras cebo -  B) No haces nada"
			fcb	0													; 0
fra093	fcc	"V·•r«Ãceb„¶Ü”da"								; "Vas tirando cebo por la borda"
			fcb	0													; 0
fra094	fcc	"A³Ä�šÝ–av¬·€ß£t"								; "Aparece el tibur]n y avisas a Quint"
			fcb	0													; 0
fra095	fcc	"ß£t ½ap¼xim€€Ü”d€–ˆ"						; "Quint se aproxima a la borda y es"
			fcb	13													; 13
			fcc	"Âv”Ï¶šˆ¹¦o"									; "devorado por el escualo"
			fcb	0													; 0
fra096	fcc	"ÐÝ½‘†c€“nuevo"								; "El tibur]n se acerca de nuevo"
			fcb	13													; 13
			fcc	"°GrË¤–•r‚´“×çÅs"								; "A) Gritar y tirarte de los pelos"
			fcb	13													; 13
			fcc	"±L«z‚l�Üomb§€“ox[gŠo"						; "B) Lanzarle la bombona de ox[geno"
			fcb	13													; 13
			fcc	"C�Ir €¶šÝÎµ¹¸ilÅ"							; "C) Ir a por el tibur]n con un cuchillo"
			fcb	0													; 0
fra097	fcc	"ÐÝmu†“Üomb§a"									; "El tibur]n muerde la bombona"
			fcb	13													; 13
			fcc	"°S¦t¤Êagua"									; "A) Saltar al agua"
			fcb	13													; 13
			fcc	"±AgË¤×brazØ"									; "B) Agitar los brazos"
			fcb	13													; 13
			fcc	"C�D¬³¤€Üomb§€“ox[gŠo"						; "C) Disparar a la bombona de ox[geno"
			fcb	0													; 0
fra098	fcc	"HAÉSOBÑVIVIDÀAÁÞŸEL B¿CÀ"					; "HAS SOBREVIVIDO AUNQUE EL BARCO "
			fcb	13													; 13
			fcc	"SŸH¥HÁDIDO¯TŸAG¿RAÉ¥ÁOS"					; "SE HA HUNDIDO. TE AGARRAS A UNOS"
			fcb	13													; 13
			fcc   "ÑSTÿY NùAÉRUMBÀ¥L¥þILLA"					;  "RESTOS Y NADAS RUMBO A LA ORILLA"
			fcb	13													; 13
			fcc	"JÁTÀúýHOOPû"									; "JUNTO CON HOOPER"
			fcb	0													; 0
fra099	fcc	"MAL¥ÈCISION!"									; "MALA DECISION!"
			fcb	13,13												; 13,13
			fcc	"EL TIBUROýSŸTŸúMIO"							; "EL TIBURON SE TE COMIO"
			fcb	0													; 0
fra09a	fcc	"¥= JUG¿ DŸNUEVÀ ‡ B = SALIR"				; "A = JUGAR DE NUEVO  -  B = SALIR"
			fcb	0													; 0
fra101	fcc	"‡ü�B¼dy‹#m�tra�šä†o?"						; "- Hola Brody, #me traes el dinero?"			
			fcb	13													; 13															
			fcc	"—Si‹öÖ•Šˆ¯VaÌëz‚Å!"							; "* Si, aqu[ lo tienes. Vamos a cazarlo!"		
			fcb	0													; 0															
fra111	fcc	"‡LïÄ£�½Žejâ“©×næØ"							; "- Los vecinos se quejan de que los ni@os"	
			fcb	13													; 13															
			fcc   "©º¢k<ra´½ŠtrŠâ¼mpiŠdo"						;  "que hacen k<rate se entrenan rompiendo"		
			fcb	13													; 13															
			fcc	"òv¦ò“suƒj‚äˆ"									; "las vallas de sus jardines"						
			fcb	13													; 13															
			fcc	"°Rˆp§d¨îó¨Ôo"									; "A) Responder - B) No hacer caso"				
			fcb	0													; 0															
fra112	fcc	"—HablíÎ×p˜rˆ¯P¼c’€ir"						; "* Hablar> con los padres. Procura ir"
			fcb	13													; 13															
			fcc  "liŽid«Ãtem·pŠdiŠtˆ."							; "liquidando temas pendientes."	
			fcb	13													; 13															
			fcc	"‡àh€ŠŒntrÏÖ©³Ä¢r Ø"							; "- Se ha encontrado lo que parecen restos"	
			fcb	13													; 13															
			fcc	"“õba@¬tê÷a"									; "de una ba@ista en la playa"						
			fcb	0													; 0															
fra113	fcc	"‡Ðf”Š½h€ÂjÏösu £f”me"						; "- El forense ha dejado aqu[ su informe"		
			fcb	13													; 13															
			fcc	"°Le†Öîó¨Ôo"									; "A) Leerlo - B) No hacer caso"					
			fcb	0													; 0															
fra114	fcc	"MUJû CAUCASICA‹EDù‹Áÿ20"					; "MUJER CAUCASICA, EDAD, UNOS 20"					
			fcb	13													; 13															
			fcc	"L¥MAYþ P¿TŸÈL CUûPÀHA"						; "LA MAYOR PARTE DEL CUERPO HA"					
			fcb	13													; 13															
			fcc	"ÈSAP¿ECIDO"									; "DESAPARECIDO"											
			fcb	13,13												; 13,13														
			fcc	"Pþ LÿÑSTÿÞŸHAýÞEDùO"						; "POR LOS RESTOS QUE HAN QUEDADO"					
			fcb	13													; 13															
			fcc	"PODRI¥ÈSPÑNÈRSŸÞŸSUFRIO"					; "PODRIA DESPRENDERSE QUE SUFRIO"					
			fcb	13													; 13															
			fcc	"Á ACCIÈNTŸDŸLANCH¥ÀEL"						; "UN ACCIDENTE DE LANCHA O EL"						
			fcb	13													; 13															
			fcc	"ATAÞŸDŸÁ GRAýÈPÑDùþ"						; "ATAQUE DE UN GRAN DEPREDADOR"					
			fcb	13,13												; 13,13														
			fcc	"ÑúMIENDÀLLAM¿ ¥Á EXPûTO"					; "RECOMIENDO LLAMAR A UN EXPERTO"					
			fcb	13,13,13											; 13,13,13													
			fcc	/PULS¥"S" P¿¥úNTINU¿/						; /PULSA "S" PARA CONTINUAR/							
			fcb	0													; 0															
fra115	fcc	"—ü›‹s»šjef�B¼d–“AmËy"						; "* Hola, soy el jefe Brody de Amity"			
			fcb	13													; 13															
			fcc	"#EƒšIns•tut„Oce«oå<fiŒ?"					; "#Es el Instituto Oceanogr<fico?"				
			fcb	13													; 13															
			fcc	"Env[¢µexÙt„ €t‚Â¯Grñ™."					; "Env[en un experto esta tarde. Gracias."		
			fcb	13													; 13															
			fcc	"‡L›m] su muj†‹l�ˆÙê÷a"						; "- Llam] su mujer, le espera en la playa"		
			fcb	0													; 0															
fra116	fcc	"‡ÐèebÖ�ah”€Óud˜ Tiœ]n"						; "- El pueblo es ahora ciudad Tibur]n"			
			fcb	13													; 13															
			fcc	"TiŠ�©º¨¦g„³€soluÓ§‚Å"						; "Tienes que hacer algo para solucionarlo"		
			fcb	13													; 13															
			fcc	"—#ßÇèeÃº†? ªs»²zaž§ˆ!"						; "* #Qu> puedo hacer? No soy cazatiburones!"	
			fcb	13													; 13															
			fcc	"‡Busc€€ß£t ¢šè†Ú¯T�ayudì" 				; "- Busca a Quint en el puerto. Te ayudar<" 	
			fcb	0													; 0															
fra117	fcc	"—V<m§�ëz¤€ �Æ"								; "* V<monos a cazar a este tibur]n"				
			fcb	13													; 13															
			fcc	"‡D�‘u†dÍvô®Œg¨mÕeŽipo."					; "- De acuerdo, voy a recoger mi equipo."		
			fcb	13													; 13															
			fcc	"L� íˆÙ«Ã¢šmuelle"							; "Le estar> esperando en el muelle"				
			fcb	13													; 13															
			fcc	"—BiŠ‹p™í¶Ô€«t�“ir ¦l["						; "* Bien, pasar> por casa antes de ir all["	
			fcb	0													; 0															
	else
fra011	fcc	"ˆGoo”mŽn–"										; "- Good morning"										
			fcb	13													; 13															
			fcc	"«HaÕž ¨Œ‡cƒ keys?"							; "A) Have you seen the car keys?"					
			fcb	13													; 13															
			fcc	"¬Hi dƒl–“IÁv© dì³f�omŽÚ" 					; "B) Hi darling, I have the day off tomorrow" 
			fcc	"  òÉ†l”goËî"									; "   We could go to the beach"						
			fcb	0													; 0															
fra012	fcc	"ˆH¢eÖžÁ”ºgo¾Œ‚eÆ¼e."						; "- Honey, you had forgotten them here."		
			fcb	13													; 13															
			fcc	"H�€žÜe"											; "Here you are"											
			fcb	0													; 0															
fra013	fcc	"ˆOfÍ†r¨“wÉ†l”g‹w›h‡cÅldrŒ"				; "- Of course, we could go with the children"	
			fcb	0													; 0															
fra014	fcc	"êi“w€ƒ€go–ÊÛ‡™"								; "* Hi, we are going to hunt the shark"	
			fcb	13													; 13															
			fcc	"ˆBÉƒefu‘! ±¤v�y d¦g�†s"					; "- Be carefull! it is very dangerous"
			fcb	0													; 0															
fra021	fcc	"•IÍ¦ªstƒæcƒŸ›h†ækeys"						; "* I cannot start the car without the keys"	
			fcb	0													; 0															
fra022	fcc	"•Ãm¯o–Ëùïúë"									; "* I am going to the Police Station"			
			fcb	0													; 0															
fra041	fcc	"ˆA¯œ·¨þ¢ ¤expect¹£Ev�yth–"				; "- A great season is expected. Everything"	
			fcb	13													; 13															
			fcc	"w��€fu‘£®îØ�ÉÚd¹."							; "will be full. The beach will be crowded."	
			fcb	13													; 13															
			fcc	"«öswéèIgnŽ€Åm"								; "A) Answer - B) Ignore him"						
			fcb	0													; 0															
fra042	fcc	"êaÕ¸Œ f†nd‡œmÐŠ³‰¯ãl"						; "* Have been found the remains of a girl"		
			fcb	13													; 13															
			fcc	"wh‹wþ‰¾¥k¹�y‰Â."								; "who was attacked by a shark."					
			fcb	13													; 13															
			fcc	"ˆÎwŽrÖ±mus„b€a motŽboš"					; "- Do not worry, it must be a motorboat"		
			fcb	13													; 13															
			fcc	"¥cidŒt£InvÑtâš€š‡�á"						; "accident. Investigate at the harbor"			
			fcb	0													; 0															
fra043	fcc	"•Qu…„þkŠº $5,õ0Ê»n„›"						; "* Quint asks for $5,000 to hunt it"			
			fcb	13													; 13															
			fcc	"ˆWa›,çk© m¢eyÊpìÅm"							; "- Wait, take the money to pay him"				
			fcb	0													; 0															
fra051	fcc	"ˆ®bƒ¸cu€³ my neâháÀt¼ŠÔ" 					; "- The barbecue of my neighbor bothers me" 	
			fcb	13													; 13															
			fcc	"«ÎwŽrÖøçkÉƒ€³‚š"								; "A) Do not worry, I will take care of that"	
			fcb	13													; 13															
			fcc	"¬ÃÆ…‰ »rrÖd¿�þŠÔ"							; "B) I am in a hurry, do not harass me"			
			fcb	0													; 0															
fra052	fcc	"ˆW� œÔmbéž×nex„d°"							; "- Will remember you that next day"				
			fcb	0													; 0															
fra053	fcc	"ˆT—nks“žÜ€v�y k…d"							; "- Thanks, you are very kind"						
			fcb	0													; 0															
fra061	fcc	"ˆI„¨ems×aÂ ¤ƒ†å¼e"							; "- It seems that a shark is around here"		
			fcb	13													; 13															
			fcc	"•ÎwŽrÖøÍheck‚š"								; "* Do not worry, I will check that"				
			fcb	0													; 0															
fra071	fcc	"ˆLookŠlik© œmÐŠ³‰Àdy."						; "- Looks like the remains of a body."			
			fcb	13													; 13															
			fcc	"®dÓappÒ¦c€³‰¯ãlŸaŠdŒ†nc¹"					; "The disappearance of a girl was denounced"	
			fcb	13													; 13															
			fcc	"«öswéèÎlÓtŒ"									; "A) Answer - B) Do not listen"					
			fcb	0													; 0															
fra072	fcc	"•W—„d‹ž‚…k‰àt‚š?"							; "* What do you think about that?"				
			fcb	13													; 13															
			fcc	"ˆNo„suœ,�u„±¨ems‰Â‰¾¥k."					; "- Not sure, but it seems a shark attack."	
			fcb	13													; 13															
			fcc	"•Cÿ‡ºŒs½£IŸ¦naçlkÊÅm" 						; "* Call the forensic. I wanna talk to him" 	
			fcb	13													; 13															
			fcc	"…‡ùïúë£I¯oËM°Ž"								; "in the Police Station. I go to the Mayor"	
			fcb	0													; 0															
fra073	fcc	"ˆ®™ÁŠk�¹‰Ày"									; "- The shark has killed a boy"					
			fcb	13													; 13															
			fcc	"®voï—Šspœad‰nd‚�€ƒ€soÔ"					; "The voice has spread and there are some"		
			fcb	13													; 13															
			fcc   "peopl€w›h rif²s‰ådyný›€…"					;  "people with rifles and dynamite in"		
			fcb	13													; 13															
			fcc	"smÿÀšŠœadyÊÛ‡™"								; "small boats ready to hunt the shark"			
			fcb	0													; 0															
fra074	fcc	"ˆA œwƒ”w��€givŒ º‡captuœ"					; "- A reward will be given for the capture"	
			fcb	13													; 13															
			fcc	"³‚¤k��Â"										; "of this killer shark"								
			fcb	0													; 0															
fra075	fcc	"•û sh†ld�e¾éspŒd‡d°‰„hoÔ"					; "* You should better spend the day at home"	
			fcb	13													; 13															
			fcc	"¦”d¿stìnÒ‡î"									; "and do not stay near the beach"					
			fcb	0													; 0															
fra081	fcc	"«Ask ÅÆèFŽge„aà„Åm"							; "A) Ask him - B) Forget about him"				
			fcb	0													; 0															
fra082	fcc	"êaÕž hÒd‰à„aÀ·¥cidŒt?"						; "* Have you heard about a boat accident?"		
			fcb	13													; 13															
			fcc	"ˆNo“Ãm‰lw°Š¼€¦”—ÕªhÒ”"						; "- No, I am always here and have not heard "	
			fcc	"nŽ ¨Œ‰nyth–‰àt‚š"							; "nor seen anything about that"					
			fcb	13													; 13															
			fcc	"•T—nks“I¯oËùïúë"								; "* Thanks, I go to the Police Station"			
			fcb	0													; 0															
fra083	fcc	"ˆöalyz–‡s›uë“±¤c²ƒ"							; "- Analyzing the situation, it is clear"		
			fcb	13													; 13															
			fcc   "t—„w€—Õa lƒg€™Ü†å¼e"						;  "that we have a large shark around here"		
			fcb	13													; 13															
			fcc	"P²a¨“pœvŒ„¦y¢€f§Æsail–"					; "Please, prevent anyone from sailing"			
			fcb	13													; 13															
			fcc	"•W� do£Se€ž‰æùïúë"							; "* Will do. See you at the Police Station"	
			fcb	0													; 0															
fra084	fcc	"•ÎevŒ‚…k‰à„¨¾– sail."						; "* Do not even think about setting sail."		
			fcb	13													; 13															
			fcc	"ThÑ€dyný›€¤c¢fÓcš¹"							; "These dynamite is confiscated"					
			fcb	0													; 0															
fra085	fcc	"ˆIf žŸ¦„m©‹Û×™"								; "- If you want me to hunt that shark"			
			fcb	13													; 13															
			fcc	"žØÁv©‹pìm€$5,õ0"								; "you will have to pay me $5,000"					
			fcb	13													; 13															
			fcc	"•OK,‚�€w��©w‹peopl€aboƒd"					; "* OK, there will be two people aboard"		
			fcb	13													; 13															
			fcc	"ˆN‹p§b²m£PìÔ“ÃÆ¢Í�ge"						; "- No problem. Pay me, I am on charge"			
			fcb	0													; 0															
fra091	fcc	"ˆF…d‡ba±bucke„¦”keep‚Ú–"					; "- Find the bait bucket and keep throwing"	
			fcb	13													; 13															
			fcc	"±ov�boƒ”uÇil×dýnÂ‰ppÒs"					; "it overboard until that damn shark appears"	
			fcb	0													; 0															
fra092	fcc	"«ThÚ�a±ˆ ¬D‹¡th–"							; "A) Throw bait -  B) Do nothing"
			fcb	0													; 0
fra093	fcc	"ûÜ©hÚ–�a›Ë¨a"									; "You are throwing bait to the sea"
			fcb	0													; 0
fra094	fcc	"®™‰ppÒs“žÍÿ Qu…t"							; "The shark appears, you call Quint"
			fcb	0													; 0
fra095	fcc	"H€app§ÙÑË¹g€¦”¤dev†œd"						; "He approaches to the edge and is devoured"
			fcb	13													; 13
			fcc	"by‡bâÂ"											; "by the big shark"
			fcb	0													; 0
fra096	fcc	"®™ ¤com–�¥k‰gÐ"								; "The shark is coming back again"
			fcb	13													; 13
			fcc	"«Scœý‰åpu‘ žrÁã"								; "A) Scream and pull your hair"
			fcb	13													; 13
			fcc	"¬ThÚ‡oxygŒÀ¾l©´™"							; "B) Throw the oxygen bottle to the shark"
			fcb	13													; 13
			fcc	"C’G‹º‡™Ÿ›h‰ knife"							; "C) Go for the shark with a knife"
			fcb	0													; 0
fra097	fcc	"®™�›Ñ‡oxygŒÀ¾²"								; "The shark bites the oxygen bottle"
			fcb	13													; 13
			fcc	"«Jump …t´wš�"									; "A) Jump into the water"
			fcb	13													; 13
			fcc	"¬S—k€žrÜms"									; "B) Shake your arms"
			fcb	13													; 13
			fcc	"C’ShooæoxygŒÀ¾²"								; "C) Shoot the oxygen bottle"
			fcb	0													; 0
fra098	fcc	"üóVµSURVIVED£íSHIPóS"						; "YOU HAVE SURVIVED. THE SHIP HAS"
			fcb	13,13												; 13,13
			fcc	"SUNKðU­üóVµGRABBEDô"						; "SUNK BUT YOU HAVE GRABBED TO"
			fcb	13,13												; 13,13
			fcc   "BOA­ÄMAÝSÌND SWAMôWARDS"					;  "BOAT REMAINS AND SWAM TOWARDS"
			fcb	13,13												; 13,13
			fcc	"íBEACHòI¶ HOOP÷"								; "THE BEACH WITH HOOPER"
			fcb	0													; 0
fra099	fcc	"WRONGñHOICE!"									; "WRONG CHOICE!"
			fcb	13,13												; 13,13
			fcc	"íSÏRK EATS ü"									; "THE SHARK EATS YOU"
			fcb	0													; 0
fra09a	fcc	"A = PLAYÌGAÝ  ˆð = QUIT"					; "A = PLAY AGAIN  -  B = QUIT"
			fcb	0													; 0
fra101	fcc	"ˆAr€ž�r––‡m¢ey?"								; "- Are you bringing the money?"					
			fcb	13													; 13															
			fcc	"•YÑ,çk€›£LetŠg‹Û– ›!"						; "* Yes, take it. Lets go hunting it!"			
			fcb	0													; 0															
fra111	fcc	"ˆNeâháŠcomplÐ×cÅldrŒŸh‹do"				; "- Neighbors complain that children who do"	
			fcb	13													; 13															
			fcc	"kƒš€ƒ©rÐ–�y�œak–‚e"							; "karate are training by breaking the"			
			fcb	13													; 13															
			fcc	"fŒceŠ³‚eã¯ƒdŒs"								; "fences of their gardens"							
			fcb	13													; 13															
			fcc	"«öswéèÎlÓtŒ"									; "A) Answer - B) Do not listen"					
			fcb	0													; 0															
fra112	fcc	"•øçlkËpƒŒts£TryÊ"							; "* I will talk to the parents. Try to "
			fcb	13													; 13															
			fcc	"sÈÕÈ”opŒe”ÓsuÑ."								; "solve old opened issues."	
			fcb	13													; 13															
			fcc	"ˆI„—Š¸Œ f†åw—„œ¨mb²ŠœmÐs"					; "- It has been found what resembles remains"	
			fcc	"³‰�š¼ ¢‡î"										; "of a bather on the beach"							
			fcb	0													; 0															
fra113	fcc	"ˆ®ºŒs½ÁŠ²f„h¤œpŽ„¼e"						; "- The forensic has left his report here"		
			fcb	13													; 13															
			fcc	"«Rea”±èIgnŽ€›"								; "A) Read it - B) Ignore it"						
			fcb	0													; 0															
fra114	fcc	"CAUCASIANòOMAN“AGE“ABÞ­20"				; "CAUCASIAN WOMAN, AGE, ABOUT 20"					
			fcb	13													; 13															
			fcc	"MOS­PAR­OF íBODYóS"							; "MOST PART OF THE BODY HAS"						
			fcb	13													; 13															
			fcc 	"DISAPPEAÄD"									; "DISAPPEARED"											
			fcb	13,13												; 13,13														
			fcc	"FOR íÄMAÝS LEF­OV÷“ü"						; "FOR THE REMAINS LEFT OVER, YOU"					
			fcb	13													; 13															
			fcc	"MIGH­¶ÝK ¶A­SHµÏDÌðOAT"					; "MIGHT THINK THAT SHE HAD A BOAT"				
			fcb	13													; 13															
			fcc	"ACCIDEN­ORòASÌTTACKEDðYÌ"					; "ACCIDENT OR WAS ATTACKED BY A"					
			fcb	13													; 13															
			fcc	"V÷Y GÄA­PÄDAßR"								; "VERY GREAT PREDATOR"								
			fcb	13,13												; 13,13														
			fcc	"I ÄCOMMENDôñALLÌN EXP÷T"					; "I RECOMMEND TO CALL AN EXPERT"					
			fcb	13,13,13											; 13,13,13													
			fcc	/PÄSS "S"ôñONTÝUE/							; /PRESS "S" TO CONTINUE/								
			fcb	0													; 0															
fra115	fcc	"êe‘‹ÃÆB§dÖAm›y'Šs¼iff"						; "* Hello I am Brody, Amity's sheriff"		
			fcb	13													; 13															
			fcc	"Is‚Ó‡Ocea¡graf½ Inst›ute?"				; "Is this the Oceanografic Institute?"			
			fcb	13													; 13															
			fcc	"SŒd‰n exp�t‚¤evŒ–£T—nks."					; "Send an expert this evening. Thanks."			
			fcb	13													; 13															
			fcc	"ˆûrŸifÉÿ¹£S ¤¢‡î"							; "- Your wife called. She is on the beach"		
			fcb	0													; 0															
fra116	fcc	"ˆ®v�ag€¤¡w S˜ñ›y"							; "- The village is now Shark City"				
			fcb	13													; 13															
			fcc	"ûÁv©‹sÈv©—„awkwƒ”p§b²m"					; "You have to solve that awkward problem"		
			fcb	13													; 13															
			fcc	"êowÍ†l”I? ÃÆªaÂÛ�!"							; "* How could I? I am not a sharkhunter!"		
			fcb	13													; 13															
			fcc	"ˆTalkÊQu…„…‡�á£HÉ¦ help"					; "- Talk to Quint in the harbor. He can help"	
			fcb	0													; 0															
fra117	fcc	"•LetŠg‹Û×™"									; "* Lets go hunt that shark"						
			fcb	13													; 13															
			fcc	"ˆOK“Ãm¯o– º my equipmŒt."					; "- OK, I am going for my equipment."			
			fcb	13													; 13															
			fcc	"W�Ÿa±º ž‰æ�á"									; "Will wait for you at the harbor"				
			fcb	13													; 13															
			fcc	"•Alrâht“fãs„ø¯‹by‡h†¨"						; "* Alright, first I will go by the house"		
			fcb	0													; 0															
	endif
; --------------------------------------------------------------------------------------------------
; Etiqueta de la tabla centrada para permitir a los usuarios utilizar mayor rango de notas
; Valores recalculados segun formula VT = 65536 /(7875 / Freq) = 8,322 * Freq
; --------------------------------------------------------------------------------------------------
			fdb							10973,11625,12316,13049,13825,14647,15518,16440			; octava 6 - 128 - 142
			fdb	17418,18454,19551,20714,21945,23250,24633,26098,27649,29294,31035,32881	; octava 7 - 144 - 166
			fdb	34836,36908,39102,41427,43891,46501,49266,52195,55299,58587,62071,65762	; octava 8 - 168 - 190
			fdb	0,0,0,0,0,0,0,0,0,0,0,0																	; octava 9 - 192 - 214
			fdb	0,0,0,0,0,0,0,0,0,0,0,0																	; octava 10- 216 - 238
			fdb	0,0,0,0,0,0,0,0																			; octava 11- 240 - 254
freqtab	fdb	0,288,306,324,343,363,385,408,432,458,485,514									; octava 1 -  00 -  22
			fdb	544,577,611,647,686,727,770,816,864,915,970,1028								; octava 2 -  24 -  46
			fdb	1089,1153,1222,1295,1372,1453,1540,1631,1728,1831,1940,2055					; octava 3 -  48 -  70
			fdb	2177,2307,2444,2589,2743,2906,3079,3262,3456,3662,3879,4110					; octava 4 -  72 -  94
			fdb	4355,4613,4888,5178,5486,5813,6158,6524,6912,7323,7759,8220					; octava 5 -  96 - 118
			fdb	8709,9227,9776,10357																		; octava 6 - 120 - 126
; --------------------------------------------------------------------------------------------------
limit01	fdb	$1500+$200,$1880+$200					; limites para columna 0 en pantalla 01 = CASA
			fdb	$1502+$200,$1882+$200					; limites para columna 2
			fdb	$1504+$200,$1884+$200					; limites para columna 4
			fdb	$1486+$200,$1886+$200					; limites para columna 6
			fdb	$1488+$200,$1888+$200					; limites para columna 8
			fdb	$140a+$200,$188a+$200					; limites para columna A
			fdb	$140c+$200,$188c+$200					; limites para columna C
			fdb	$138e+$200,$188e+$200					; limites para columna E
			fdb	$1390+$200,$1890+$200					; limites para columna 10
			fdb	$1312+$200,$1892+$200					; limites para columna 12
			fdb	$1294+$200,$1894+$200					; limites para columna 14
			fdb	$1296+$200,$1896+$200					; limites para columna 16
			fdb	$1298+$200,$1898+$200					; limites para columna 18
			fdb	$139a+$200,$189a+$200					; limites para columna 1A
			fdb	$139c+$200,$189c+$200					; limites para columna 1C
			fdb	$2400+$200,$0c00+$200					; limites para columna 1E (prohibido!)
; -------------------------------------------------------------------------------------------------			
limit02	fdb	$1680+$200,$1880+$200					; limites para columna 0 en pantalla 02 = CARTEL
			fdb	$1582+$200,$1882+$200					; limites para columna 2
			fdb	$1584+$200,$1884+$200					; limites para columna 4
			fdb	$1706+$200,$1886+$200					; limites para columna 6
			fdb	$1708+$200,$1888+$200					; limites para columna 8
			fdb	$170a+$200,$188a+$200					; limites para columna A
			fdb	$170c+$200,$188c+$200					; limites para columna C
			fdb	$170e+$200,$188e+$200					; limites para columna E
			fdb	$1710+$200,$1890+$200					; limites para columna 10
			fdb	$1412+$200,$1892+$200					; limites para columna 12
			fdb	$1414+$200,$1894+$200					; limites para columna 14
			fdb	$1416+$200,$1896+$200					; limites para columna 16
			fdb	$1418+$200,$1898+$200					; limites para columna 18
			fdb	$141a+$200,$189a+$200					; limites para columna 1A
			fdb	$141c+$200,$189c+$200					; limites para columna 1C
			fdb	$2400+$200,$0c00+$200					; limites para columna 1E (prohibido!)
; -------------------------------------------------------------------------------------------------			
limit03	fdb	$1080+$200,$1880+$200					; limites para columna 0 en pantalla 03 = CALLE2
			fdb	$1082+$200,$1882+$200					; limites para columna 2
			fdb	$1004+$200,$1884+$200					; limites para columna 4
			fdb	$0f06+$200,$1886+$200					; limites para columna 6
			fdb	$0f08+$200,$1888+$200					; limites para columna 8
			fdb	$0f0a+$200,$188a+$200 				; limites para columna A
			fdb	$0f0c+$200,$188c+$200					; limites para columna C
			fdb	$0f0e+$200,$188e+$200					; limites para columna E
			fdb	$0f10+$200,$1890+$200					; limites para columna 10
			fdb	$0f12+$200,$1892+$200					; limites para columna 12
			fdb	$0f14+$200,$1894+$200 				; limites para columna 14
			fdb	$0f16+$200,$1896+$200					; limites para columna 16
			fdb	$0f18+$200,$1898+$200					; limites para columna 18
			fdb	$139a+$200,$189a+$200					; limites para columna 1A
			fdb	$139c+$200,$189c+$200					; limites para columna 1C
			fdb	$2400+$200,$0c00+$200					; limites para columna 1E (prohibido!)
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
											; segundo nivel de control	(limit03 + 64)		
			fdb	$1080+$200,$1880+$200					; limites para columna 0 en pantalla 03 = CALLE2
			fdb	$1082+$200,$1882+$200					; limites para columna 2
			fdb	$1004+$200,$1884+$200					; limites para columna 4
			fdb	$0f06+$200,$1886+$200					; limites para columna 6
			fdb	$0f08+$200,$1888+$200					; limites para columna 8
			fdb	$0f0a+$200,$188a+$200 				; limites para columna A
			fdb	$0f0c+$200,$188c+$200					; limites para columna C
			fdb	$0f0e+$200,$188e+$200					; limites para columna E
			fdb	$0f10+$200,$1890+$200					; limites para columna 10
			fdb	$0f12+$200,$1892+$200					; limites para columna 12
			fdb	$0f14+$200,$1894+$200 				; limites para columna 14
			fdb	$0f16+$200,$1896+$200					; limites para columna 16
			fdb	$0f18+$200,$1898+$200					; limites para columna 18
			fdb	$0f1a+$200,$109a+$200					; limites para columna 1A
			fdb	$0f1c+$200,$109c+$200					; limites para columna 1C
			fdb	$2400+$200,$0c00+$200					; limites para columna 1E (prohibido!)
; --------------------------------------------------------------------------------------------------
limit04	fdb	$1280+$200,$1880+$200					; limites para columna 0 en pantalla 04 = CALLE1
			fdb	$1282+$200,$1882+$200					; limites para columna 2
			fdb	$1284+$200,$1884+$200					; limites para columna 4
			fdb	$1286+$200,$1886+$200					; limites para columna 6
			fdb	$1288+$200,$1888+$200					; limites para columna 8
			fdb	$128a+$200,$188a+$200 				; limites para columna A
			fdb	$128c+$200,$188c+$200					; limites para columna C
			fdb	$128e+$200,$188e+$200					; limites para columna E
			fdb	$1290+$200,$1890+$200					; limites para columna 10
			fdb	$1292+$200,$1892+$200					; limites para columna 12
			fdb	$1294+$200,$1894+$200 				; limites para columna 14
			fdb	$1296+$200,$1896+$200					; limites para columna 16
			fdb	$1298+$200,$1898+$200					; limites para columna 18
			fdb	$129a+$200,$189a+$200					; limites para columna 1A
			fdb	$129c+$200,$189c+$200					; limites para columna 1C
			fdb	$2400+$200,$0c00+$200					; limites para columna 1E (prohibido!)
; --------------------------------------------------------------------------------------------------
limit05	fdb	$1180+$200,$1180+$200					; limites para columna 0 en pantalla 05 = CALLE3
			fdb	$1182+$200,$1182+$200					; limites para columna 2
			fdb	$1184+$200,$1184+$200					; limites para columna 4
			fdb	$1186+$200,$1186+$200					; limites para columna 6
			fdb	$1188+$200,$1188+$200					; limites para columna 8
			fdb	$118a+$200,$118a+$200 				; limites para columna A
			fdb	$118c+$200,$128c+$200					; limites para columna C
			fdb	$128e+$200,$140e+$200					; limites para columna E
			fdb	$1410+$200,$1890+$200					; limites para columna 10
			fdb	$1412+$200,$1892+$200					; limites para columna 12
			fdb	$1414+$200,$1894+$200 				; limites para columna 14
			fdb	$1416+$200,$1896+$200					; limites para columna 16
			fdb	$1418+$200,$1898+$200					; limites para columna 18
			fdb	$141a+$200,$189a+$200					; limites para columna 1A
			fdb	$141c+$200,$189c+$200					; limites para columna 1C
			fdb	$2400+$200,$0c00+$200					; limites para columna 1E (prohibido!)
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
											; segundo nivel de control	(limit05 + 64)		
			fdb	$1500+$200,$1880+$200					; limites para columna 0 en pantalla 05 = CALLE3
			fdb	$1502+$200,$1882+$200					; limites para columna 2
			fdb	$1504+$200,$1884+$200					; limites para columna 4
			fdb	$1506+$200,$1886+$200					; limites para columna 6
			fdb	$1508+$200,$1888+$200					; limites para columna 8
			fdb	$150a+$200,$188a+$200 				; limites para columna A
			fdb	$150c+$200,$188c+$200					; limites para columna C
			fdb	$150e+$200,$188e+$200					; limites para columna E
			fdb	$1410+$200,$1890+$200					; limites para columna 10
			fdb	$1412+$200,$1892+$200					; limites para columna 12
			fdb	$1414+$200,$1894+$200 				; limites para columna 14
			fdb	$1416+$200,$1896+$200					; limites para columna 16
			fdb	$1418+$200,$1898+$200					; limites para columna 18
			fdb	$141a+$200,$189a+$200					; limites para columna 1A
			fdb	$141c+$200,$189c+$200					; limites para columna 1C
			fdb	$2400+$200,$0c00+$200					; limites para columna 1E (prohibido!)
; --------------------------------------------------------------------------------------------------
limit06	fdb	$1180+$200,$1880+$200					; limites para columna 0 en pantalla 06 = PLAYA1
			fdb	$1002+$200,$1882+$200					; limites para columna 2
			fdb	$1004+$200,$1884+$200					; limites para columna 4
			fdb	$1006+$200,$1886+$200					; limites para columna 6
			fdb	$0f08+$200,$1888+$200					; limites para columna 8
			fdb	$0f0a+$200,$188a+$200 				; limites para columna A
			fdb	$0f0c+$200,$188c+$200					; limites para columna C
			fdb	$0f0e+$200,$170e+$200					; limites para columna E
			fdb	$0f10+$200,$1690+$200					; limites para columna 10
			fdb	$0c12+$200,$1512+$200					; limites para columna 12
			fdb	$0c14+$200,$1314+$200 				; limites para columna 14
			fdb	$0c16+$200,$1016+$200					; limites para columna 16
			fdb	$0c98+$200,$0d98+$200					; limites para columna 18
			fdb	$0c9a+$200,$0c9a+$200					; limites para columna 1A
			fdb	$2400+$200,$0c00+$200					; limites para columna 1C
			fdb	$2400+$200,$0c00+$200					; limites para columna 1E (prohibido!)
; --------------------------------------------------------------------------------------------------
limit07	fdb	$1300+$200,$1880+$200					; limites para columna 0 en pantalla 07 = PLAYA2
			fdb	$1282+$200,$1882+$200					; limites para columna 2
			fdb	$1184+$200,$1884+$200					; limites para columna 4
			fdb	$0f86+$200,$1886+$200					; limites para columna 6
			fdb	$0f08+$200,$1888+$200					; limites para columna 8
			fdb	$0f0a+$200,$188a+$200 				; limites para columna A
			fdb	$0f0c+$200,$188c+$200					; limites para columna C
			fdb	$0f0e+$200,$188e+$200					; limites para columna E
			fdb	$0f10+$200,$1890+$200					; limites para columna 10
			fdb	$0f12+$200,$1892+$200					; limites para columna 12
			fdb	$0f14+$200,$1894+$200 				; limites para columna 14
			fdb	$1116+$200,$1896+$200					; limites para columna 16
			fdb	$1618+$200,$1898+$200					; limites para columna 18
			fdb	$2400+$200,$0c00+$200					; limites para columna 1A
			fdb	$2400+$200,$0c00+$200					; limites para columna 1C
			fdb	$2400+$200,$0c00+$200					; limites para columna 1E (prohibido!)
; --------------------------------------------------------------------------------------------------
limit08	fdb	$1400+$200,$1500+$200					; limites para columna 0 en pantalla 08 = MUELLE2
			fdb	$1402+$200,$1502+$200					; limites para columna 2
			fdb	$1404+$200,$1504+$200					; limites para columna 4
			fdb	$1406+$200,$1506+$200					; limites para columna 6
			fdb	$1008+$200,$1508+$200					; limites para columna 8
			fdb	$100a+$200,$150a+$200 				; limites para columna A
			fdb	$100c+$200,$150c+$200					; limites para columna C
			fdb	$140e+$200,$150e+$200					; limites para columna E
			fdb	$1410+$200,$1510+$200					; limites para columna 10
			fdb	$1412+$200,$1512+$200					; limites para columna 12
			fdb	$1414+$200,$1494+$200 				; limites para columna 14
			fdb	$1416+$200,$1496+$200					; limites para columna 16
			fdb	$1418+$200,$1498+$200					; limites para columna 18
			fdb	$141a+$200,$159a+$200					; limites para columna 1A
			fdb	$141c+$200,$159c+$200					; limites para columna 1C
			fdb	$2400+$200,$0c00+$200					; limites para columna 1E (prohibido!)
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
											; segundo nivel de control	(limit08 + 64)		
			fdb	$1000+$200,$1080+$200					; limites para columna 0 en pantalla 08 = MUELLE2
			fdb	$1002+$200,$1082+$200					; limites para columna 2
			fdb	$1004+$200,$1084+$200					; limites para columna 4
			fdb	$1006+$200,$1086+$200					; limites para columna 6
			fdb	$1008+$200,$1088+$200					; limites para columna 8
			fdb	$100a+$200,$108a+$200 				; limites para columna A
			fdb	$100c+$200,$108c+$200					; limites para columna C
			fdb	$100e+$200,$108e+$200					; limites para columna E
			fdb	$0e10+$200,$1090+$200					; limites para columna 10
			fdb	$0d92+$200,$1092+$200					; limites para columna 12
			fdb	$1014+$200,$1094+$200 				; limites para columna 14
			fdb	$1016+$200,$1096+$200					; limites para columna 16
			fdb	$1018+$200,$1098+$200					; limites para columna 18
			fdb	$101a+$200,$109a+$200					; limites para columna 1A
			fdb	$101c+$200,$109c+$200					; limites para columna 1C
			fdb	$2400+$200,$0c00+$200					; limites para columna 1E (prohibido!)
; --------------------------------------------------------------------------------------------------
limit09	fdb	$2400+$200,$0c00+$200					; limites para columna 0 en pantalla 09 = ORCA1 
			fdb	$2400+$200,$0c00+$200					; limites para columna 2
			fdb	$1304+$200,$1304+$200					; limites para columna 4
			fdb	$1306+$200,$1306+$200					; limites para columna 6
			fdb	$1308+$200,$1308+$200					; limites para columna 8
			fdb	$130a+$200,$130a+$200 				; limites para columna A
			fdb	$130c+$200,$130c+$200					; limites para columna C
			fdb	$130e+$200,$130e+$200					; limites para columna E
			fdb	$2400+$200,$0c00+$200					; limites para columna 10
			fdb	$2400+$200,$0c00+$200					; limites para columna 12
			fdb	$2400+$200,$0c00+$200 				; limites para columna 14
			fdb	$2400+$200,$0c00+$200					; limites para columna 16
			fdb	$2400+$200,$0c00+$200					; limites para columna 18
			fdb	$2400+$200,$0c00+$200					; limites para columna 1A
			fdb	$2400+$200,$0c00+$200					; limites para columna 1C
			fdb	$2400+$200,$0c00+$200					; limites para columna 1E (prohibido!)
; --------------------------------------------------------------------------------------------------
limit10	fdb	$1700+$200,$1880+$200					; limites para columna 0 en pantalla 10 = TALLER1
			fdb	$1702+$200,$1882+$200					; limites para columna 2
			fdb	$1704+$200,$1884+$200					; limites para columna 4
			fdb	$1706+$200,$1886+$200					; limites para columna 6
			fdb	$1688+$200,$1888+$200					; limites para columna 8
			fdb	$168a+$200,$188a+$200 				; limites para columna A
			fdb	$168c+$200,$188c+$200					; limites para columna C
			fdb	$168e+$200,$188e+$200					; limites para columna E
			fdb	$1690+$200,$1890+$200					; limites para columna 10
			fdb	$1692+$200,$1892+$200					; limites para columna 12
			fdb	$1694+$200,$1894+$200 				; limites para columna 14
			fdb	$0c16+$200,$1896+$200					; limites para columna 16
			fdb	$1698+$200,$1898+$200					; limites para columna 18
			fdb	$169a+$200,$189a+$200					; limites para columna 1A
			fdb	$169c+$200,$189c+$200					; limites para columna 1C
			fdb	$2400+$200,$0c00+$200					; limites para columna 1E (prohibido!)
; --------------------------------------------------------------------------------------------------
limit11	fdb	$1400+$200,$1880+$200					; limites para columna 0 en pantalla 11 = COMISARIA
			fdb	$1402+$200,$1882+$200					; limites para columna 2
			fdb	$1404+$200,$1884+$200					; limites para columna 4
			fdb	$1406+$200,$1886+$200					; limites para columna 6
			fdb	$1108+$200,$1888+$200					; limites para columna 8
			fdb	$0f0a+$200,$188a+$200 				; limites para columna A
			fdb	$0f0c+$200,$118c+$200					; limites para columna C
			fdb	$0f0e+$200,$118e+$200					; limites para columna E
			fdb	$0f10+$200,$1590+$200					; limites para columna 10
			fdb	$0f12+$200,$1592+$200					; limites para columna 12
			fdb	$1094+$200,$1594+$200 				; limites para columna 14
			fdb	$1096+$200,$1596+$200					; limites para columna 16
			fdb	$1098+$200,$1598+$200					; limites para columna 18
			fdb	$109a+$200,$159a+$200					; limites para columna 1A
			fdb	$121c+$200,$159c+$200					; limites para columna 1C
			fdb	$2400+$200,$0c00+$200					; limites para columna 1E (prohibido!)
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
											; segundo nivel de control	(limit11 + 64)		
			fdb	$1400+$200,$1880+$200					; limites para columna 0 en pantalla 11 = COMISARIA
			fdb	$1402+$200,$1882+$200					; limites para columna 2
			fdb	$1404+$200,$1884+$200					; limites para columna 4
			fdb	$1406+$200,$1886+$200					; limites para columna 6
			fdb	$1108+$200,$1888+$200					; limites para columna 8
			fdb	$0f0a+$200,$188a+$200 				; limites para columna A
			fdb	$170c+$200,$188c+$200					; limites para columna C
			fdb	$170e+$200,$188e+$200					; limites para columna E
			fdb	$1710+$200,$1890+$200					; limites para columna 10
			fdb	$1712+$200,$1892+$200					; limites para columna 12
			fdb	$1714+$200,$1894+$200 				; limites para columna 14
			fdb	$1716+$200,$1896+$200					; limites para columna 16
			fdb	$1718+$200,$1898+$200					; limites para columna 18
			fdb	$171a+$200,$189a+$200					; limites para columna 1A
			fdb	$171c+$200,$189c+$200					; limites para columna 1C
			fdb	$2400+$200,$0c00+$200					; limites para columna 1E (prohibido!)									
; --------------------------------------------------------------------------------------------------
; Nombre de los ficheros a cargar
; --------------------------------------------------------------------------------------------------
	if DRG
locPan	fcn	/"L   .BIN:1"/								; pantalla a cargar: LnnX.BIN
	else
locPan	fcn	/"L   .BIN:0"/								; pantalla a cargar: LnnX.BIN
	endif
; --------------------------------------------------------------------------------------------------
descDOS	
	if ESP
			fcn	/ VERSION DE DOS NO SOPORTADA/
	else
			fcn	/ UNSUPPORTED DOS VERSION/
	endif
; --------------------------------------------------------------------------------------------------	
; Sprites utilizados para mover al jefe Brody
; --------------------------------------------------------------------------------------------------
sprit3DC	fcb	$F8,$01,$00,$7F,$00,$00,$00,$00				;	SPRIT3W (ESTATICO - RECORTADO!)
			fcb	$F0,$01,$00,$3F,$07,$80,$07,$80
			fcb	$F0,$01,$00,$3F,$00,$00,$00,$00
			fcb	$F0,$07,$C0,$3F,$00,$00,$00,$00
fsprit3D
; --------------------------------------------------------------------------------------------------
sprit3IC	fcb	$FE,$00,$80,$1F,$00,$00,$00,$00				;	SPRIT3XW (ESTATICO - RECORTADO!)
			fcb	$FC,$00,$80,$0F,$01,$E0,$01,$E0
			fcb	$FC,$00,$80,$0F,$00,$00,$00,$00
			fcb	$FC,$03,$E0,$0F,$00,$00,$00,$00
fsprit3I
; --------------------------------------------------------------------------------------------------
sprit4D	fcb	$FF,$FF,$FF,$FF,$FF,$00,$00,$00,$00,$00	;	SPRIT4W
			fcb	$FF,$FF,$FF,$FF,$FF,$00,$00,$00,$00,$00
			fcb	$FF,$FC,$00,$FF,$FF,$00,$00,$00,$00,$00
			fcb	$FF,$C0,$00,$1F,$FF,$00,$00,$16,$00,$00
			fcb	$FF,$80,$00,$03,$FF,$00,$02,$28,$00,$00
			fcb	$FF,$00,$00,$01,$FF,$00,$04,$00,$A4,$00
			fcb	$FF,$00,$00,$03,$FF,$00,$08,$00,$00,$00
			fcb	$FF,$00,$00,$01,$FF,$00,$11,$FE,$64,$00
			fcb	$FE,$00,$00,$03,$FF,$00,$2B,$FF,$F0,$00
			fcb	$FE,$00,$00,$03,$FF,$00,$13,$FF,$F0,$00
			fcb	$FC,$00,$00,$01,$FF,$00,$23,$FF,$F8,$00
			fcb	$FC,$00,$00,$03,$FF,$00,$47,$FF,$F8,$00
			fcb	$FC,$00,$00,$01,$FF,$00,$23,$FF,$FC,$00
			fcb	$FC,$00,$00,$01,$FF,$00,$41,$FF,$FC,$00
			fcb	$FC,$00,$00,$01,$FF,$00,$83,$FF,$FC,$00
			fcb	$FC,$00,$00,$00,$FF,$00,$07,$C0,$00,$00
			fcb	$FC,$00,$00,$00,$FF,$00,$60,$9C,$EC,$00
			fcb	$FC,$00,$00,$00,$7F,$00,$F0,$62,$C1,$00
			fcb	$FC,$00,$00,$00,$7F,$00,$E3,$54,$14,$00
			fcb	$FC,$00,$00,$00,$7F,$00,$D3,$7C,$E5,$00
			fcb	$FC,$00,$00,$00,$7F,$00,$D3,$BD,$ED,$00
			fcb	$FC,$00,$00,$00,$FF,$00,$FF,$C3,$F0,$00
			fcb	$FC,$00,$00,$01,$FF,$00,$7F,$FF,$FC,$00
			fcb	$FE,$00,$00,$01,$FF,$00,$37,$FF,$FC,$00
			fcb	$FE,$00,$00,$01,$FF,$00,$0F,$FE,$78,$00
			fcb	$FF,$00,$00,$03,$FF,$00,$17,$FE,$18,$00
			fcb	$FF,$80,$00,$03,$FF,$00,$17,$FD,$38,$00
			fcb	$FF,$C0,$00,$03,$FF,$00,$1B,$F0,$88,$00
			fcb	$FF,$E0,$00,$07,$FF,$00,$0D,$EF,$F0,$00
			fcb	$FF,$C0,$00,$07,$FF,$00,$06,$FE,$30,$00
			fcb	$FF,$80,$00,$07,$FF,$00,$01,$7F,$F0,$00
			fcb	$FF,$00,$00,$0F,$FF,$00,$00,$DF,$E0,$00
			fcb	$FF,$00,$00,$0F,$FF,$00,$00,$37,$E0,$00
			fcb	$FE,$00,$00,$1F,$FF,$00,$00,$08,$00,$00
			fcb	$FE,$00,$00,$1F,$FF,$00,$00,$00,$00,$00
			fcb	$FE,$00,$00,$3F,$FF,$00,$08,$00,$00,$00
			fcb	$FE,$00,$00,$3F,$FF,$00,$04,$00,$00,$00
			fcb	$FE,$00,$00,$3F,$FF,$00,$02,$00,$00,$00
			fcb	$FE,$00,$00,$3F,$FF,$00,$01,$00,$00,$00
			fcb	$FF,$00,$00,$7F,$FF,$00,$02,$00,$00,$00
			fcb	$FF,$80,$00,$7F,$FF,$00,$07,$C0,$00,$00
			fcb	$FF,$80,$00,$7F,$FF,$00,$0B,$E0,$00,$00
			fcb	$FF,$C0,$00,$7F,$FF,$00,$01,$E0,$00,$00
			fcb	$FF,$C0,$00,$7F,$FF,$00,$00,$C0,$00,$00
			fcb	$FF,$C0,$00,$7F,$FF,$00,$00,$06,$00,$00
			fcb	$FF,$C0,$00,$7F,$FF,$00,$00,$00,$00,$00
			fcb	$FF,$C0,$00,$7F,$FF,$00,$00,$00,$00,$00
			fcb	$FF,$C0,$00,$3F,$FF,$00,$00,$00,$00,$00
			fcb	$FF,$80,$00,$1F,$FF,$00,$00,$00,$00,$00
			fcb	$FF,$80,$00,$0F,$FF,$00,$00,$00,$00,$00
			fcb	$FF,$00,$00,$00,$FF,$00,$00,$00,$00,$00
			fcb	$FE,$00,$60,$00,$7F,$00,$00,$00,$3F,$00
			fcb	$FE,$00,$F8,$00,$FF,$00,$00,$00,$00,$00
			fcb	$FE,$00,$78,$03,$FF,$00,$07,$00,$00,$00
			fcb	$FF,$00,$38,$1F,$FF,$00,$00,$00,$00,$00
			fcb	$FF,$E0,$3C,$7F,$FF,$00,$00,$00,$00,$00
fsprit4D
; --------------------------------------------------------------------------------------------------
sprit4VD	fcb	$FF,$FF,$FF,$FF,$00,$00,$00,$00				;	SPRIT4V
			fcb	$FF,$FF,$FF,$FF,$00,$00,$00,$00
			fcb	$FF,$C0,$0F,$FF,$00,$00,$00,$00
			fcb	$FC,$00,$01,$FF,$00,$01,$60,$00
			fcb	$F8,$00,$00,$3F,$00,$22,$80,$00
			fcb	$F0,$00,$00,$1F,$00,$40,$0A,$40
			fcb	$F0,$00,$00,$3F,$00,$80,$00,$00
			fcb	$F0,$00,$00,$1F,$01,$1F,$E6,$40
			fcb	$E0,$00,$00,$3F,$02,$BF,$FF,$00
			fcb	$E0,$00,$00,$3F,$01,$3F,$FF,$00
			fcb	$C0,$00,$00,$1F,$02,$3F,$FF,$80
			fcb	$C0,$00,$00,$3F,$04,$7F,$FF,$80
			fcb	$C0,$00,$00,$1F,$02,$3F,$FF,$C0
			fcb	$C0,$00,$00,$1F,$04,$1F,$FF,$C0
			fcb	$C0,$00,$00,$1F,$08,$3F,$FF,$C0
			fcb	$C0,$00,$00,$0F,$00,$7C,$00,$00
			fcb	$C0,$00,$00,$0F,$06,$09,$CE,$C0
			fcb	$C0,$00,$00,$07,$0F,$06,$2C,$10
			fcb	$C0,$00,$00,$07,$0E,$35,$41,$40
			fcb	$C0,$00,$00,$07,$0D,$37,$CE,$50
			fcb	$C0,$00,$00,$07,$0D,$3B,$DE,$D0
			fcb	$C0,$00,$00,$0F,$0F,$FC,$3F,$00
			fcb	$C0,$00,$00,$1F,$07,$FF,$FF,$C0
			fcb	$E0,$00,$00,$1F,$03,$7F,$FF,$C0
			fcb	$E0,$00,$00,$1F,$00,$FF,$E7,$80
			fcb	$F0,$00,$00,$3F,$01,$7F,$E1,$80
			fcb	$F8,$00,$00,$3F,$01,$7F,$D3,$80
			fcb	$FC,$00,$00,$3F,$01,$BF,$08,$80
			fcb	$FE,$00,$00,$7F,$00,$DE,$FF,$00
			fcb	$FC,$00,$00,$7F,$00,$6F,$E3,$00
			fcb	$F8,$00,$00,$7F,$00,$17,$FF,$00
			fcb	$F0,$00,$00,$FF,$00,$0D,$FE,$00
			fcb	$F0,$00,$00,$FF,$00,$03,$7E,$00
			fcb	$E0,$00,$01,$FF,$00,$00,$80,$00
			fcb	$E0,$00,$01,$FF,$00,$00,$00,$00
			fcb	$E0,$00,$03,$FF,$00,$80,$00,$00
			fcb	$E0,$00,$03,$FF,$00,$40,$00,$00
			fcb	$E0,$00,$03,$FF,$00,$20,$00,$00
			fcb	$E0,$00,$03,$FF,$00,$10,$00,$00
			fcb	$F0,$00,$07,$FF,$00,$20,$00,$00
			fcb	$F8,$00,$07,$FF,$00,$7C,$00,$00
			fcb	$F8,$00,$07,$FF,$00,$BE,$00,$00
			fcb	$FC,$00,$07,$FF,$00,$1E,$00,$00
			fcb	$FC,$00,$07,$FF,$00,$0C,$00,$00
			fcb	$FC,$00,$07,$FF,$00,$00,$60,$00
			fcb	$FC,$00,$07,$FF,$00,$00,$00,$00
			fcb	$FC,$00,$07,$FF,$00,$00,$00,$00
			fcb	$FC,$00,$03,$FF,$00,$00,$00,$00
			fcb	$F8,$00,$01,$FF,$00,$00,$00,$00
			fcb	$F8,$00,$00,$FF,$00,$00,$00,$00
			fcb	$F0,$00,$00,$0F,$00,$00,$00,$00
			fcb	$E0,$06,$00,$07,$00,$00,$03,$F0
			fcb	$E0,$0F,$80,$0F,$00,$00,$00,$00
			fcb	$E0,$07,$80,$3F,$00,$70,$00,$00
			fcb	$F0,$03,$81,$FF,$00,$00,$00,$00
usprit4VD
			fcb	$FE,$03,$C7,$FF,$00,$00,$00,$00
fsprit4VD
; --------------------------------------------------------------------------------------------------
sprit5D	fcb	$FF,$FF,$FF,$FF,$00,$00,$00,$00				;	SPRIT5W
			fcb	$FF,$FF,$FF,$FF,$00,$00,$00,$00
				fcb	$FF,$E0,$07,$FF,$00,$00,$00,$00
			fcb	$FE,$00,$00,$FF,$00,$00,$B0,$00
			fcb	$FC,$00,$00,$1F,$00,$11,$40,$00
			fcb	$F8,$00,$00,$0F,$00,$20,$05,$20
			fcb	$F8,$00,$00,$1F,$00,$40,$00,$00
			fcb	$F8,$00,$00,$0F,$00,$8F,$F3,$20
			fcb	$F0,$00,$00,$1F,$01,$5F,$FF,$80
			fcb	$F0,$00,$00,$1F,$00,$9F,$FF,$80
			fcb	$E0,$00,$00,$0F,$01,$1F,$FF,$C0
			fcb	$E0,$00,$00,$1F,$02,$3F,$FF,$C0
			fcb	$E0,$00,$00,$0F,$01,$1F,$FF,$E0
			fcb	$E0,$00,$00,$0F,$02,$0F,$FF,$E0
			fcb	$E0,$00,$00,$0F,$04,$1F,$FF,$E0
			fcb	$E0,$00,$00,$07,$00,$3E,$00,$00
			fcb	$E0,$00,$00,$07,$03,$04,$E7,$60
			fcb	$E0,$00,$00,$03,$07,$83,$16,$08
			fcb	$E0,$00,$00,$03,$07,$1A,$A0,$A0
			fcb	$E0,$00,$00,$03,$06,$9B,$E7,$28
			fcb	$E0,$00,$00,$03,$06,$9D,$EF,$68
			fcb	$E0,$00,$00,$07,$07,$FE,$1F,$80
			fcb	$E0,$00,$00,$0F,$03,$FF,$FF,$E0
			fcb	$F0,$00,$00,$0F,$01,$BF,$FF,$E0
			fcb	$F0,$00,$00,$0F,$00,$7F,$F3,$C0
			fcb	$F8,$00,$00,$1F,$00,$BF,$F0,$C0
			fcb	$FC,$00,$00,$1F,$00,$BF,$E9,$C0
			fcb	$FE,$00,$00,$1F,$00,$DF,$84,$40
			fcb	$FF,$00,$00,$3F,$00,$6F,$7F,$80
			fcb	$FF,$00,$00,$3F,$00,$37,$F1,$80
			fcb	$FE,$00,$00,$3F,$00,$0B,$FF,$80
			fcb	$FC,$00,$00,$7F,$00,$06,$FF,$00
			fcb	$F8,$00,$00,$7F,$00,$01,$BF,$00
			fcb	$F0,$00,$00,$FF,$00,$00,$40,$00
			fcb	$F0,$00,$00,$FF,$00,$00,$00,$00
			fcb	$F0,$00,$00,$7F,$00,$80,$00,$00
			fcb	$E0,$00,$00,$7F,$01,$00,$00,$00
			fcb	$E0,$00,$00,$7F,$00,$00,$01,$00
			fcb	$C0,$00,$00,$7F,$01,$00,$00,$00
			fcb	$C0,$00,$00,$3F,$00,$00,$01,$00
			fcb	$C0,$00,$00,$3F,$01,$00,$00,$00
			fcb	$E0,$00,$00,$7F,$0E,$00,$01,$00
			fcb	$E0,$00,$00,$7F,$0E,$00,$01,$00
			fcb	$C0,$00,$00,$3F,$1F,$00,$01,$80
			fcb	$C0,$00,$00,$3F,$1D,$00,$01,$80
			fcb	$C0,$00,$00,$3F,$1C,$11,$88,$80
			fcb	$C0,$00,$00,$3F,$1F,$00,$01,$80
			fcb	$E0,$00,$00,$7F,$00,$00,$00,$00
			fcb	$FE,$00,$00,$FF,$00,$00,$00,$00
			fcb	$FE,$00,$01,$FF,$00,$00,$00,$00
			fcb	$FE,$00,$01,$FF,$00,$00,$00,$00
			fcb	$FE,$00,$00,$FF,$00,$00,$00,$00
			fcb	$FE,$00,$00,$7F,$00,$00,$00,$00
			fcb	$FE,$00,$00,$3F,$00,$0F,$47,$80
			fcb	$FE,$00,$00,$3F,$00,$00,$20,$00
usprit5D
			fcb	$FE,$00,$00,$3F,$00,$00,$00,$00
fsprit5D
; --------------------------------------------------------------------------------------------------
sprit6D	fcb	$FF,$FF,$FF,$FF,$FF,$00,$00,$00,$00,$00	;	SPRIT6W
			fcb	$FF,$FF,$FF,$FF,$FF,$00,$00,$00,$00,$00
			fcb	$FF,$FF,$80,$1F,$FF,$00,$00,$00,$00,$00
			fcb	$FF,$F8,$00,$03,$FF,$00,$00,$02,$C0,$00
			fcb	$FF,$F0,$00,$00,$7F,$00,$00,$45,$00,$00
			fcb	$FF,$E0,$00,$00,$3F,$00,$00,$80,$14,$80
			fcb	$FF,$E0,$00,$00,$7F,$00,$01,$00,$00,$00
			fcb	$FF,$E0,$00,$00,$3F,$00,$02,$3F,$CC,$80
			fcb	$FF,$C0,$00,$00,$7F,$00,$05,$7F,$FE,$00
			fcb	$FF,$C0,$00,$00,$7F,$00,$02,$7F,$FE,$00
			fcb	$FF,$80,$00,$00,$3F,$00,$04,$7F,$FF,$00
			fcb	$FF,$80,$00,$00,$7F,$00,$08,$FF,$FF,$00
			fcb	$FF,$80,$00,$00,$3F,$00,$04,$7F,$FF,$80
			fcb	$FF,$80,$00,$00,$3F,$00,$08,$3F,$FF,$80
			fcb	$FF,$80,$00,$00,$3F,$00,$10,$7F,$FF,$80
			fcb	$FF,$80,$00,$00,$1F,$00,$00,$F8,$00,$00
			fcb	$FF,$80,$00,$00,$1F,$00,$0C,$13,$9D,$80
			fcb	$FF,$80,$00,$00,$0F,$00,$1E,$0C,$58,$20
			fcb	$FF,$80,$00,$00,$0F,$00,$1C,$6A,$82,$80
			fcb	$FF,$80,$00,$00,$0F,$00,$1A,$6F,$9C,$A0
			fcb	$FF,$80,$00,$00,$0F,$00,$1A,$77,$BD,$A0
			fcb	$FF,$80,$00,$00,$1F,$00,$1F,$F8,$7E,$00
			fcb	$FF,$80,$00,$00,$3F,$00,$0F,$FF,$FF,$80
			fcb	$FF,$C0,$00,$00,$3F,$00,$06,$FF,$FF,$80
			fcb	$FF,$C0,$00,$00,$3F,$00,$01,$FF,$CF,$00
			fcb	$FF,$E0,$00,$00,$7F,$00,$02,$FF,$C3,$00
			fcb	$FF,$F0,$00,$00,$7F,$00,$02,$FF,$A7,$00
			fcb	$FF,$F8,$00,$00,$7F,$00,$03,$7E,$11,$00
			fcb	$FF,$FC,$00,$00,$FF,$00,$01,$BD,$FE,$00
			fcb	$FF,$FC,$00,$00,$FF,$00,$00,$DF,$C6,$00
			fcb	$FF,$F8,$00,$00,$FF,$00,$00,$2F,$FE,$00
			fcb	$FF,$E0,$00,$01,$FF,$00,$00,$1B,$FC,$00
			fcb	$FF,$C0,$00,$01,$FF,$00,$00,$06,$F8,$00
			fcb	$FF,$80,$00,$00,$FF,$00,$00,$01,$00,$00
			fcb	$FF,$00,$00,$00,$3F,$00,$00,$00,$00,$00
			fcb	$FC,$00,$00,$00,$1F,$00,$00,$00,$01,$C0
			fcb	$F8,$00,$00,$00,$1F,$00,$00,$00,$02,$C0
			fcb	$F0,$00,$00,$00,$1F,$00,$00,$00,$02,$C0
			fcb	$F0,$00,$00,$00,$1F,$00,$00,$00,$03,$C0
			fcb	$F0,$08,$00,$00,$3F,$06,$00,$00,$04,$00
			fcb	$F0,$38,$00,$0F,$FF,$07,$00,$00,$00,$00
			fcb	$F0,$78,$00,$0F,$FF,$03,$00,$00,$00,$00
			fcb	$F0,$78,$00,$0F,$FF,$06,$00,$00,$00,$00
			fcb	$F0,$F8,$00,$0F,$FF,$00,$00,$00,$00,$00
			fcb	$FF,$F8,$00,$0F,$FF,$00,$00,$00,$00,$00
			fcb	$FF,$FC,$00,$0F,$FF,$00,$00,$00,$00,$00
			fcb	$FF,$FC,$00,$0F,$FF,$00,$00,$09,$80,$00
			fcb	$FF,$FC,$00,$1F,$FF,$00,$00,$00,$00,$00
			fcb	$FF,$FC,$00,$1F,$FF,$00,$00,$00,$00,$00
			fcb	$FF,$FC,$00,$0F,$FF,$00,$00,$00,$00,$00
			fcb	$FF,$F8,$00,$07,$FF,$00,$00,$00,$00,$00
			fcb	$FF,$F8,$00,$00,$7F,$00,$00,$00,$00,$00
			fcb	$FF,$F8,$00,$00,$3F,$00,$00,$00,$04,$00
			fcb	$FF,$F8,$00,$00,$7F,$00,$00,$02,$00,$00
			fcb	$FF,$F8,$00,$01,$FF,$00,$00,$1D,$00,$00
			fcb	$FF,$FF,$80,$0F,$FF,$00,$00,$00,$80,$00
fsprit6D
; --------------------------------------------------------------------------------------------------
sprit6VD	fcb	$FF,$FF,$FF,$FF,$00,$00,$00,$00				;	SPRIT6V
			fcb	$FF,$FF,$FF,$FF,$00,$00,$00,$00
			fcb	$FF,$F8,$01,$FF,$00,$00,$00,$00
			fcb	$FF,$80,$00,$3F,$00,$00,$2C,$00
			fcb	$FF,$00,$00,$07,$00,$04,$50,$00
			fcb	$FE,$00,$00,$03,$00,$08,$01,$48
			fcb	$FE,$00,$00,$07,$00,$10,$00,$00
			fcb	$FE,$00,$00,$03,$00,$23,$FC,$C8
			fcb	$FC,$00,$00,$07,$00,$57,$FF,$E0
			fcb	$FC,$00,$00,$07,$00,$27,$FF,$E0
			fcb	$F8,$00,$00,$03,$00,$47,$FF,$F0
			fcb	$F8,$00,$00,$07,$00,$8F,$FF,$F0
			fcb	$F8,$00,$00,$03,$00,$47,$FF,$F8
			fcb	$F8,$00,$00,$03,$00,$83,$FF,$F8
			fcb	$F8,$00,$00,$03,$01,$07,$FF,$F8
			fcb	$F8,$00,$00,$01,$00,$0F,$80,$00
			fcb	$F8,$00,$00,$01,$00,$C1,$39,$D8
			fcb	$F8,$00,$00,$00,$01,$E0,$C5,$82
			fcb	$F8,$00,$00,$00,$01,$C6,$A8,$28
			fcb	$F8,$00,$00,$00,$01,$A6,$F9,$CA
			fcb	$F8,$00,$00,$00,$01,$A7,$7B,$DA
			fcb	$F8,$00,$00,$01,$01,$FF,$87,$E0
			fcb	$F8,$00,$00,$03,$00,$FF,$FF,$F8
			fcb	$FC,$00,$00,$03,$00,$6F,$FF,$F8
			fcb	$FC,$00,$00,$03,$00,$1F,$FC,$F0
			fcb	$FE,$00,$00,$07,$00,$2F,$FC,$30
			fcb	$FF,$00,$00,$07,$00,$2F,$FA,$70
			fcb	$FF,$80,$00,$07,$00,$37,$E1,$10
			fcb	$FF,$C0,$00,$0F,$00,$1B,$DF,$E0
			fcb	$FF,$C0,$00,$0F,$00,$0D,$FC,$60
			fcb	$FF,$80,$00,$0F,$00,$02,$FF,$E0
			fcb	$FE,$00,$00,$1F,$00,$01,$BF,$C0
			fcb	$FC,$00,$00,$1F,$00,$00,$6F,$80
			fcb	$F8,$00,$00,$0F,$00,$00,$10,$00
			fcb	$F0,$00,$00,$03,$00,$00,$00,$00
			fcb	$C0,$00,$00,$01,$00,$00,$00,$1C
			fcb	$80,$00,$00,$01,$00,$00,$00,$2C
			fcb	$00,$00,$00,$01,$00,$00,$00,$2C
			fcb	$00,$00,$00,$01,$00,$00,$00,$3C
			fcb	$00,$80,$00,$03,$60,$00,$00,$40
			fcb	$03,$80,$00,$FF,$70,$00,$00,$00
			fcb	$07,$80,$00,$FF,$30,$00,$00,$00
			fcb	$07,$80,$00,$FF,$60,$00,$00,$00
			fcb	$0F,$80,$00,$FF,$00,$00,$00,$00
			fcb	$FF,$80,$00,$FF,$00,$00,$00,$00
			fcb	$FF,$C0,$00,$FF,$00,$00,$00,$00
			fcb	$FF,$C0,$00,$FF,$00,$00,$98,$00
			fcb	$FF,$C0,$01,$FF,$00,$00,$00,$00
			fcb	$FF,$C0,$01,$FF,$00,$00,$00,$00
			fcb	$FF,$C0,$00,$FF,$00,$00,$00,$00
			fcb	$FF,$80,$00,$7F,$00,$00,$00,$00
			fcb	$FF,$80,$00,$07,$00,$00,$00,$00
			fcb	$FF,$80,$00,$03,$00,$00,$00,$40
			fcb	$FF,$80,$00,$07,$00,$00,$20,$00
			fcb	$FF,$80,$00,$1F,$00,$01,$D0,$00
usprit6VD
			fcb	$FF,$F8,$00,$FF,$00,$00,$08,$00
fsprit6VD
* --------------------------------------------------------------------------------------------------
buffer	zmb	330							; 55 filas de 6 bytes
ultFila	fdb	$0000,$0000,$0000			; ultima fila
fBuffer											; final buffer
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
buffer2	zmb	275							; 55 filas de 5 bytes (resultado a poner en pantalla)
ultFila2	fcb	$00,$00,$00,$00,$00		; ultima fila
fBuffer2											; final buffer
; --------------------------------------------------------------------------------------------------
																; Indice	 ASCII	Character
iLetras	fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF		;	00			32		espacio
			fcb	$DF,$DF,$DF,$DF,$FF,$DF,$FF		;	01			33		!
			fcb	$AF,$AF,$FF,$FF,$FF,$FF,$FF		;	02			34		"
			fcb	$DF,$FF,$DF,$BF,$77,$8F,$FF		;	03			35		# -> ¿
			fcb	$DF,$87,$5F,$8F,$D7,$0F,$DF		;	04			36		$
			fcb	$FF,$37,$2F,$DF,$A7,$67,$FF		;	05			37		%
			fcb	$DF,$AF,$9F,$57,$6F,$97,$FF		;	06			38		&
			fcb	$DF,$DF,$FF,$FF,$FF,$FF,$FF		;	07			39		'
			fcb	$CF,$BF,$7F,$7F,$BF,$CF,$FF		;	08			40		(
			fcb	$9F,$EF,$F7,$F7,$EF,$9F,$FF		;	09			41		)
			fcb	$FF,$DF,$57,$8F,$57,$DF,$FF		;	10			42		*
			fcb	$FF,$DF,$DF,$07,$DF,$DF,$FF		;	11			43		+
			fcb	$FF,$FF,$FF,$FF,$EF,$EF,$DF		;	12			44		,
			fcb	$FF,$FF,$FF,$07,$FF,$FF,$FF		;	13			45		-
			fcb	$FF,$FF,$FF,$FF,$CF,$CF,$FF		;	14			46		.
			fcb	$FF,$F7,$EF,$DF,$BF,$7F,$FF		;	15			47		/
			fcb	$8F,$77,$67,$57,$37,$8F,$FF		;	16			48		0
			fcb	$DF,$9F,$5F,$DF,$DF,$8F,$FF		;	17			49		1
			fcb	$8F,$77,$EF,$9F,$7F,$07,$FF		;	18			50		2
			fcb	$07,$F7,$CF,$F7,$77,$8F,$FF		;	19			51		3
			fcb	$EF,$CF,$AF,$6F,$07,$EF,$FF		;	20			52		4
			fcb	$07,$7F,$0F,$F7,$77,$8F,$FF		;	21			53		5
			fcb	$87,$7F,$0F,$77,$77,$8F,$FF		;	22			54		6
			fcb	$07,$F7,$EF,$DF,$BF,$BF,$FF		;	23			55		7
			fcb	$8F,$77,$8F,$77,$77,$8F,$FF		;	24			56		8
			fcb	$8F,$77,$77,$87,$F7,$0F,$FF		;	25			57		9
			fcb	$FF,$CF,$CF,$FF,$CF,$CF,$FF		;	26			58		:
			fcb	$FF,$FF,$EF,$FF,$EF,$EF,$DF		;	27			59		;
			fcb	$DF,$9F,$6F,$6F,$6F,$87,$FF		;	28			60		< -> á
			fcb	$FF,$FF,$0F,$FF,$0F,$FF,$FF		;	29			61		=
			fcb	$DF,$8F,$77,$0F,$7F,$8F,$FF		;	30			62		> -> é
			fcb	$8F,$77,$EF,$DF,$FF,$DF,$FF		;	31			63		?
			fcb	$8F,$FF,$0F,$77,$77,$77,$FF		;	32			64		@ -> ñ
			fcb	$8F,$77,$77,$07,$77,$77,$FF		;	33			65		A
			fcb	$0F,$77,$0F,$77,$77,$0F,$FF		;	34			66		B
			fcb	$8F,$77,$7F,$7F,$77,$8F,$FF		;	35			67		C
			fcb	$1F,$6F,$77,$77,$6F,$1F,$FF		;	36			68		D
			fcb	$07,$7F,$1F,$7F,$7F,$07,$FF		;	37			69		E
			fcb	$07,$7F,$0F,$7F,$7F,$7F,$FF		;	38			70		F
			fcb	$8F,$77,$7F,$67,$77,$8F,$FF		;	39			71		G
			fcb	$77,$77,$07,$77,$77,$77,$FF		;	40			72		H
			fcb	$8F,$DF,$DF,$DF,$DF,$8F,$FF		;	41			73		I
			fcb	$C7,$EF,$EF,$EF,$6F,$9F,$FF		;	42			74		J
			fcb	$6F,$5F,$3F,$5F,$6F,$77,$FF		;	43			75		K
			fcb	$7F,$7F,$7F,$7F,$7F,$07,$FF		;	44			76		L
			fcb	$77,$27,$57,$57,$77,$77,$FF		;	45			77		M
			fcb	$77,$37,$57,$67,$77,$77,$FF		;	46			78		N
			fcb	$8F,$77,$77,$77,$77,$8F,$FF		;	47			79		O
			fcb	$0F,$77,$0F,$7F,$7F,$7F,$FF		;	48			80		P
			fcb	$8F,$77,$77,$57,$6F,$97,$FF		;	49			81		Q
			fcb	$0F,$77,$0F,$5F,$6F,$77,$FF		;	50			82		R
			fcb	$87,$7F,$8F,$F7,$F7,$0F,$FF		;	51			83		S
			fcb	$07,$DF,$DF,$DF,$DF,$DF,$FF		;	52			84		T
			fcb	$77,$77,$77,$77,$77,$8F,$FF		;	53			85		U
			fcb	$77,$77,$77,$77,$AF,$DF,$FF		;	54			86		V
			fcb	$77,$77,$57,$57,$27,$77,$FF		;	55			87		W
			fcb	$77,$AF,$DF,$AF,$77,$77,$FF		;	56			88		X
			fcb	$77,$77,$AF,$DF,$DF,$DF,$FF		;	57			89		Y
			fcb	$07,$EF,$DF,$BF,$7F,$07,$FF		;	58			90		Z
			fcb	$EF,$DF,$9F,$DF,$DF,$8F,$FF		;	59			91		[ -> í
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF		;	60			92		
			fcb	$EF,$DF,$8F,$77,$77,$8F,$FF		;	61			93		] -> ó
			fcb	$DF,$8F,$57,$DF,$DF,$DF,$FF		;	62			94		^
			fcb	$EF,$DF,$77,$77,$77,$87,$FF		;	63			95		_ -> ú
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF		;	64			96		
			fcb	$FF,$97,$67,$77,$67,$97,$FF		;	65			97		a
			fcb	$7F,$7F,$1F,$6F,$6F,$1F,$FF		;	66			98		b
			fcb	$FF,$87,$7F,$7F,$7F,$87,$FF		;	67			99		c
			fcb	$F7,$F7,$87,$77,$77,$87,$FF		;	68			100	d
			fcb	$FF,$8F,$77,$0F,$7F,$8F,$FF		;	69			101	e
			fcb	$CF,$B7,$BF,$1F,$BF,$BF,$FF		;	70			102	f
			fcb	$FF,$87,$77,$77,$87,$F7,$0F		;	71			103	g
			fcb	$7F,$7F,$0F,$77,$77,$77,$FF		;	72			104	h
			fcb	$DF,$FF,$9F,$DF,$DF,$8F,$FF		;	73			105	i
			fcb	$EF,$FF,$CF,$EF,$EF,$EF,$9F		;	74			106	j
			fcb	$7F,$6F,$5F,$3F,$5F,$6F,$FF		;	75			107	k
			fcb	$9F,$DF,$DF,$DF,$DF,$8F,$FF		;	76			108	l
			fcb	$FF,$2F,$57,$57,$57,$57,$FF		;	77			109	m
			fcb	$FF,$0F,$77,$77,$77,$77,$FF		;	78			110	n
			fcb	$FF,$8F,$77,$77,$77,$8F,$FF		;	79			111	o
			fcb	$FF,$0F,$77,$77,$0F,$7F,$7F		;	80			112	p
			fcb	$FF,$87,$77,$77,$87,$F7,$F7		;	81			113	q
			fcb	$FF,$4F,$3F,$7F,$7F,$7F,$FF		;	82			114	r
			fcb	$FF,$87,$7F,$8F,$F7,$0F,$FF		;	83			115	s
			fcb	$BF,$1F,$BF,$BF,$BF,$CF,$FF		;	84			116	t
			fcb	$FF,$77,$77,$77,$77,$87,$FF		;	85			117	u
			fcb	$FF,$77,$77,$AF,$AF,$DF,$FF		;	86			118	v
			fcb	$FF,$77,$77,$57,$27,$AF,$FF		;	87			119	w
			fcb	$FF,$77,$AF,$DF,$AF,$77,$FF		;	88			120	x
			fcb	$FF,$77,$77,$77,$87,$F7,$0F		;	89			121	y
			fcb	$FF,$07,$EF,$DF,$BF,$07,$FF		;	90			122	z
; --------------------------------------------------------------------------------------------------
; Datos para tratamiento Objeto MOSTRADOR que exige primer plano
; --------------------------------------------------------------------------------------------------
; Composicion de cada registro de la tabla:
; offset 0: 2 bytes - primer byte donde Brody 'pisa' al Objeto (izquierda arriba)
; offset 2: 2 bytes - ultimo byte donde Brody 'pisa' al Objeto (abajo izquierda) 
; offset 4: 2 bytes - Primer byte de pantalla donde hay que reponer al Objeto
; offset 6: 2 bytes - Primer byte del Objeto a copiar a pantalla 
; --------------------------------------------------------------------------------------------------
tabMost	fdb	$1410+$200,$1591+$200,$1390+$200+altSP,o1ColA		; para 1a columna desde la izquierda
			fdb	$1412+$200,$1593+$200,$1392+$200+altSP,o1ColB		; siguiente columna hacia la derecha
			fdb	$1414+$200,$1595+$200,$1394+$200+altSP,o1ColC		; siguiente columna hacia la derecha
			fdb	$1296+$200,$1597+$200,$1216+$200+altSP,o1ColD		; siguiente columna hacia la derecha
			fdb	$1298+$200,$1599+$200,$1218+$200+altSP,o1ColE		; siguiente columna hacia la derecha
			fdb	$141A+$200,$159b+$200,$139A+$200+altSP,o1ColF		; siguiente columna hacia la derecha
			fdb	$141C+$200,$159d+$200,$139C+$200+altSP,o1ColG		; ultima columna por la derecha
; --------------------------------------------------------------------------------------------------
; Bytes que conforman al Mostrador que debe permanecer en primer término
; --------------------------------------------------------------------------------------------------
;					                        1296    1298                					; aqui empieza a pisar la lámpara
;					1410	  1412	 1414		1416	  1418	 141a		141c					; aqui empieza a pisar mostrador
; ------------------------------------------------------------------------------------------------
																															; 00	1210 --> linea encima de la lampara del mostrador
; ------------------------------------------------------------------------------------------------
			fcb	$FF,$FF,$FF,$FF,$FF,$FF
o1ColD	fcb								   $FF,$F8
o1ColE	fcb											  $00,$00,$FF,$FF,$FF,$FF,$FF,$FF					; 01	1230 --> PRIMERA FILA a REPONER si pisa la LAMPARA
			fcb	$00,$00,$00,$00,$00,$00
			fcb								   $00,$00
			fcb											  $00,$00,$00,$00,$00,$00,$00,$00	; fila -12
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$F0,$00,$00,$7F,$FF,$FF,$FF,$FF,$FF					; 02	1250
			fcb	$00,$00,$00,$00,$00,$00,$00,$02,$AA,$AA,$00,$00,$00,$00,$00,$00	; fila -11
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$F0,$00,$00,$7F,$FF,$FF,$FF,$FF,$FF					; 03	1270
			fcb	$00,$00,$00,$00,$00,$00,$00,$05,$55,$55,$00,$00,$00,$00,$00,$00	; fila -10
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$F0,$00,$00,$7F,$FF,$FF,$FF,$FF,$FF					; 04	1290 --> Aquí llega al 'pisar' lámpara (1a vez)
			fcb	$00,$00,$00,$00,$00,$00,$00,$07,$FF,$FF,$00,$00,$00,$00,$00,$00	; fila -09
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$F0,$00,$00,$7F,$FF,$FF,$FF,$FF,$FF					; 05	12b0
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00	; fila -08
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FD,$F8,$FF,$FF,$FF,$FF,$FF,$FF,$FF					; 06	12d0
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$02,$00,$00,$00,$00,$00,$00,$00	; fila -07
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FD,$F8,$FF,$FF,$FF,$FF,$FF,$FF,$FF					; 07	12f0
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$02,$00,$00,$00,$00,$00,$00,$00	; fila -06
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FD,$F8,$FF,$FF,$FF,$FF,$FF,$FF,$FF					; 08	1310 --> segundo nivel de pisada
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$02,$00,$00,$00,$00,$00,$00,$00	; fila -05
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FD,$F8,$FF,$FF,$FF,$FF,$FF,$FF,$FF					; 09	1330
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$02,$00,$00,$00,$00,$00,$00,$00	; fila -04
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FD,$F0,$7F,$FF,$FF,$FF,$FF,$FF,$FF					; 10	1350
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$07,$00,$00,$00,$00,$00,$00,$00	; fila -03
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$F8,$FF,$FF,$FF,$C0,$07,$FF,$FF					; 11	1370
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$02,$00,$00,$00,$00,$00,$00,$00	; fila -02
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00					; 12	1390 --> tercer nivel de pisada
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$02,$00,$00,$00,$1B,$30,$00,$00	; fila -01				  --> linea debajo de la cual va el mostrador ancho 
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
o1ColA	fcb	$00,$00
o1ColB	fcb			  $00,$00
o1ColC	fcb						 $00,$00,$00,$00,$00,$00
o1ColF	fcb														 $00,$00
o1ColG	fcb																	$00,$00,$00,$00					; 13	13b0 --> PRIMERA FILA a REPONER si pisa el MOSTRADOR
			fcb	$FF,$FF
			fcb			  $FF,$FD
			fcb						 $FD,$FF,$7D,$FF,$87,$0F
			fcb														 $FF,$FF
			fcb																	$B4,$D3,$FF,$FF	; fila 01
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00					; 14	13d0
			fcb	$FF,$FF,$FF,$FE,$FE,$C2,$FB,$87,$7F,$F7,$FF,$FF,$00,$05,$FF,$FF	; fila 02
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00					; 15	13f0
			fcb	$FF,$FF,$FF,$FF,$00,$7C,$07,$FF,$80,$0F,$FF,$FF,$FF,$FF,$FF,$FF	; fila 03
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00					; 16	1410 --> Aquí llega al 'pisar' mostrador (1a vez)
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF	; fila 04
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00					; 17	1430
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00	; fila 05
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00					; 18	1450
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF	; fila 06
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00					; 19	1470
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00	; fila 07
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00					; 20	1490 --> segundo nivel pisada
			fcb	$8A,$28,$A2,$8A,$28,$A2,$8A,$28,$A2,$8A,$28,$A2,$8A,$28,$A2,$8A	; fila 08
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00					; 21	14b0
			fcb	$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB	; fila 09
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00					; 22	14d0
			fcb	$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB	; fila 10
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00					; 23	14f0
			fcb	$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB	; fila 11
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00					; 24	1510 --> tercer nivel pisada
			fcb	$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB	; fila 12
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00					; 25	1530
			fcb	$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB	; fila 13
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00					; 26	1550
			fcb	$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB	; fila 14
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00					; 27	1570
			fcb	$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB	; fila 15
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00					; 28	1590 --> cuarto nivel pisada
			fcb	$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB	; fila 16
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00					; 29	15b0
			fcb	$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB	; fila 17
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00					; 30	15d0
			fcb	$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB	; fila 18
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00					; 31	15f0
			fcb	$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB	; fila 19
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00					; 32	1610 --> quinto nivel pisada
			fcb	$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB	; fila 20
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00					; 33	1630
			fcb	$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB	; fila 21
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00					; 34	1650				
			fcb	$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB,$6D,$B6,$DB	; fila 22
; --------------------------------------------------------------------------------------------------
; Datos para tratamiento Objeto ESCALERA que exige primer plano
; ------------------------------------------------------------------------------------------------
; Composicion de cada registro de la tabla:
; offset 0: 2 bytes - primer byte donde Brody 'pisa' al Objeto (izquierda arriba)
; offset 2: 2 bytes - ultimo byte donde Brody 'pisa' al Objeto (abajo izquierda) 
; offset 4: 2 bytes - Primer byte de pantalla donde hay que reponer al Objeto
; offset 6: 2 bytes - Primer byte del Objeto a copiar a pantalla 
; --------------------------------------------------------------------------------------------------
tabEsca	fdb	$1180+$200,$1181+$200,$0f80+$200+altSP,o2ColA		; para 1a columna desde la izquierda
			fdb	$1182+$200,$1183+$200,$0f82+$200+altSP,o2ColB		; siguiente columna hacia la derecha
			fdb	$1184+$200,$1185+$200,$0f84+$200+altSP,o2ColC		; siguiente columna hacia la derecha
			fdb	$1186+$200,$1187+$200,$0f86+$200+altSP,o2ColD		; siguiente columna hacia la derecha
			fdb	$1188+$200,$1189+$200,$0f88+$200+altSP,o2ColE		; siguiente columna hacia la derecha
			fdb	$118a+$200,$118b+$200,$0f8a+$200+altSP,o2ColF		; siguiente columna hacia la derecha
			fdb	$118c+$200,$128d+$200,$0f8c+$200+altSP,o2ColG		; siguiente columna hacia la derecha
			fdb	$128e+$200,$140e+$200,$0f8e+$200+altSP,o2ColH		; ultima columna por la derecha
; --------------------------------------------------------------------------------------------------
; Bytes que conforman la Escalera que debe permanecer en primer término	(zonas transparentes)
; --------------------------------------------------------------------------------------------------
;					1200	  1202	 1204		1206	  1208	 120a		120c	  120e			; aqui pisa escalera
; ------------------------------------------------------------------------------------------------
o2ColA	fcb	$00,$00
o2ColB	fcb			  $00,$00
o2ColC	fcb						 $00,$00
o2ColD	fcb									$00,$00
o2ColE	fcb											  $00,$00
o2ColF	fcb														 $00,$00
o2ColG	fcb																	$01,$FF
o2ColH	fcb																			  $FF,$FF,$FF,$FF					; $0fa0 fila inicio barandilla superior
			fcb	$00,$00
			fcb			  $00,$00
			fcb						 $00,$00
			fcb									$00,$00
			fcb											  $00,$00
			fcb														 $00,$00
			fcb																	$00,$00
			fcb																			  $00,$00,$00,$00		; fila 01
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7F,$FF,$FF,$FF,$FF					; $0fc0
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FE,$00,$00,$00,$00,$00		; fila 02
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3F,$FF,$FF,$FF,$FF					; $0fe0
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$80,$00,$00,$00,$00		; fila 03
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1F,$FF,$FF,$FF,$FF					; $1000 nivel -3
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$C0,$00,$00,$00,$00		; fila 04
			fcb	$38,$38,$38,$38,$38,$38,$38,$38,$38,$38,$38,$38,$20,$07,$FF,$FF,$FF,$FF					; $1020
			fcb	$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$8E,$20,$00,$00,$00,$00		; fila 05
			fcb	$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$61,$83,$FF,$FF,$FF,$FF					; $1040
			fcb	$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$0E,$18,$00,$00,$00,$00		; fila 06
			fcb	$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$61,$E1,$FF,$FF,$FF,$FF					; $1060
			fcb	$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$0E,$0C,$00,$00,$00,$00		; fila 07
			fcb	$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$61,$E0,$7F,$FF,$FF,$FF					; $1080 nivel -2
			fcb	$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$0E,$06,$00,$00,$00,$00		; fila 08
			fcb	$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$61,$E0,$3F,$FF,$FF,$FF					; $10a0
			fcb	$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$0E,$0B,$80,$00,$00,$00		; fila 09
			fcb	$38,$38,$38,$38,$38,$38,$38,$38,$38,$38,$38,$38,$21,$E0,$1F,$FF,$FF,$FF					; $10c0
			fcb	$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$8E,$0C,$C0,$00,$00,$00		; fila 10
			fcb	$38,$38,$38,$38,$38,$38,$38,$38,$38,$38,$38,$38,$21,$F1,$07,$FF,$FF,$FF					; $10e0
			fcb	$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$8E,$04,$60,$00,$00,$00		; fila 11
			fcb	$38,$38,$38,$38,$38,$38,$38,$38,$38,$38,$38,$38,$21,$F1,$83,$FF,$FF,$FF					; $1100 nivel -1
			fcb	$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$0E,$04,$38,$00,$00,$00		; fila 12
			fcb	$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$61,$F1,$C1,$FF,$FF,$FF					; $1120
			fcb	$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$0E,$04,$1C,$00,$00,$00		; fila 13
			fcb	$38,$38,$38,$38,$38,$38,$38,$38,$38,$38,$38,$38,$21,$F1,$E0,$7F,$FF,$FF					; $1140
			fcb	$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$8E,$04,$06,$00,$00,$00		; fila 14
			fcb	$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$61,$E0,$E0,$3F,$FF,$FF					; $1160
			fcb	$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$0E,$0E,$0B,$80,$00,$00		; fila 15
			fcb	$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$61,$E0,$E0,$1F,$FF,$FF					; $1180	nivel donde pisa el rellano
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0E,$0C,$C0,$00,$00		; fila 16
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$E0,$F1,$07,$FF,$FF					; $11a0
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FE,$04,$04,$60,$00,$00		; fila 17
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$F1,$F1,$83,$FF,$FF					; $11c0
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FE,$04,$04,$38,$00,$00		; fila 18
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$20,$F1,$C1,$FF,$FF					; $11e0
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0E,$04,$1C,$00,$00		; fila 19
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$31,$F1,$E0,$7F,$FF					; $1200	segundo nivel (teorico)
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$84,$04,$0E,$00,$00		; fila 20
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$31,$E0,$E0,$3F,$FF					; $1220
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$84,$0E,$03,$00,$00		; fila 21
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$20,$E0,$E0,$3F,$FF					; $1240
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$8E,$0E,$0C,$80,$00		; fila 22
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$20,$E0,$3F,$FF					; $1260
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$80,$04,$0E,$80,$00		; fila 23
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$31,$E0,$3F,$FF					; $1280	tercer nivel (teorico) - 3er escalon
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$BF,$84,$0E,$80,$00		; fila 24
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$20,$E0,$FF,$FF					; $12a0
			fcb	$DA,$56,$ED,$B4,$B6,$DA,$17,$69,$24,$DA,$5B,$B6,$D2,$80,$0E,$0E,$00,$00		; fila 25
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$31,$E0,$FF,$FF					; $12c0
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$84,$0E,$00,$00		; fila 26
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$31,$E0,$FF,$FF					; $12e0
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$84,$0E,$00,$00		; fila 27
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$20,$E0,$FF,$FF					; $1300	cuarto nivel (teorico) - 2o escalon
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$8E,$0E,$00,$00		; fila 28
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$20,$FF,$FF					; $1320
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$80,$0E,$00,$00		; fila 29
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$20,$FF,$FF					; $1340
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$BF,$8E,$00,$00		; fila 30
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$20,$FF,$FF					; $1360
			fcb	$49,$26,$D0,$BB,$6D,$2F,$DB,$B6,$D2,$DB,$B6,$D2,$B6,$D2,$80,$0E,$00,$00		; fila 31
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$20,$FF,$FF					; $1380	quinto nivel (teorico) a medio escalon
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$8E,$00,$00		; fila 32
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$20,$FF,$FF					; $13a0
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$8E,$00,$00		; fila 33
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$20,$FF,$FF					; $13c0
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$8E,$00,$00		; fila 34
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3F,$FF					; $13e0
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$80,$00,$00		; fila 35
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3F,$FF					; $1400	sexto nivel (teorico) - 1er escalon
			fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$BF,$80,$00		; fila 36
; --------------------------------------------------------------------------------------------------
; Datos para tratamiento Objeto POSTE que exige primer plano
; ------------------------------------------------------------------------------------------------
; Composicion de cada registro de la tabla:
; offset 0: 2 bytes - primer byte donde Brody 'pisa' al Objeto (izquierda arriba)
; offset 2: 2 bytes - ultimo byte donde Brody 'pisa' al Objeto (abajo izquierda) 
; offset 4: 1 byte  - cero
; offset 5: 1 byte  - bytes a añadir a actX para apuntar al lugar correcto 
; offset 6: 2 bytes - Primer byte del Objeto a copiar a pantalla 
; --------------------------------------------------------------------------------------------------
tabPost	fdb	$0f18+$200,$1098+$200,$0003,o3ColA		; para 1a columna desde la izquierda
			fdb	$0f19+$200,$1099+$200,$0002,o3ColA		; siguiente columna hacia la derecha
			fdb	$0f1a+$200,$109a+$200,$0001,o3ColA		; siguiente columna hacia la derecha
			fdb	$0f1b+$200,$109b+$200,$0000,o3ColA		; siguiente columna hacia la derecha
			fdb	$0f1c+$200,$109c+$200,$00ff,o3ColA		; ultima columna por la derecha
; --------------------------------------------------------------------------------------------------
; Bytes que conforman el Poste que debe permanecer en primer término	(zonas transparentes)
; --------------------------------------------------------------------------------------------------
o3ColA	fcb	$F0,$03,$05,$50					; $0f18 - aqui empieza el poste (63 filas)
			fcb	$F0,$03,$03,$E8					; $0f38
			fcb	$F0,$03,$05,$50					; $0f58
			fcb	$F0,$03,$03,$E8					; $0f78
			fcb	$F0,$03,$05,$50					; $0f98
			fcb	$F0,$03,$03,$E8					; $0fb8
			fcb	$F0,$03,$05,$50					; $0fd8
			fcb	$F0,$03,$03,$E8					; $0ff8
			fcb	$F0,$03,$05,$50					; $1018
			fcb	$F0,$03,$03,$E8					; $1038
			fcb	$F0,$03,$00,$00					; $1058
			fcb	$F0,$03,$03,$E8					; $1078
			fcb	$F0,$03,$05,$50					; $1098
			fcb	$F0,$03,$03,$E8					; $10b8
			fcb	$F0,$03,$05,$50					; $10d8
			fcb	$F0,$03,$03,$E8					; $10f8
			fcb	$F0,$03,$05,$50					; $1118
			fcb	$F0,$03,$03,$E8					; $1138
			fcb	$F0,$03,$05,$50					; $1158
			fcb	$F0,$03,$03,$E8					; $1178
			fcb	$F0,$03,$05,$50					; $1198
			fcb	$F0,$03,$03,$E8					; $11b8
			fcb	$F0,$03,$05,$50					; $11d8
			fcb	$F0,$03,$03,$E8					; $11f8
			fcb	$F0,$03,$05,$50					; $1218
			fcb	$F0,$03,$03,$E8					; $1238
			fcb	$F0,$03,$05,$50					; $1258
			fcb	$F0,$03,$03,$E8					; $1278
			fcb	$F0,$03,$05,$50					; $1298
			fcb	$F0,$03,$03,$E8					; $12b8
			fcb	$F0,$03,$05,$50					; $12d8
			fcb	$F0,$03,$03,$E8					; $12f8
			fcb	$F0,$03,$05,$50					; $1318
			fcb	$F0,$03,$03,$E8					; $1338
			fcb	$F0,$03,$05,$50					; $1358
			fcb	$F0,$03,$03,$E8					; $1378
			fcb	$F0,$03,$05,$50					; $1398
			fcb	$F0,$03,$03,$E8					; $13b8
			fcb	$F0,$03,$05,$50					; $13d8
			fcb	$F0,$03,$03,$E8					; $13f8
			fcb	$F0,$03,$05,$50					; $1418
			fcb	$F0,$03,$03,$E8					; $1438
			fcb	$F0,$03,$05,$50					; $1458
			fcb	$F0,$03,$03,$E8					; $1478
			fcb	$F0,$03,$05,$50					; $1498
			fcb	$F0,$03,$03,$E8					; $14b8
			fcb	$F0,$03,$05,$50					; $14d8
			fcb	$F0,$03,$03,$E8					; $14f8
			fcb	$F0,$03,$05,$50					; $1518
			fcb	$F0,$03,$03,$E8					; $1538
			fcb	$F0,$03,$05,$50					; $1558
			fcb	$F0,$03,$03,$E8					; $1578
			fcb	$F0,$03,$05,$50					; $1598
			fcb	$F0,$03,$03,$E8					; $15b8
			fcb	$F0,$03,$05,$50					; $15d8
			fcb	$F0,$03,$03,$E8					; $15f8 - primer punto donde tapa el poste (linea num 56)
			fcb	$F0,$03,$05,$50					; $1618
			fcb	$F0,$03,$03,$E8					; $1638
			fcb	$F0,$03,$05,$50					; $1658
			fcb	$F0,$03,$03,$E8					; $1678 - segundo nivel de posicion vertical
			fcb	$F0,$03,$05,$50					; $1698
			fcb	$F0,$03,$03,$E8					; $16b8
			fcb	$F0,$03,$05,$50					; $16d8
			fcb	$F0,$03,$03,$E8					; $16f8 - tercer nivel de posicion vertical
			fcb	$F0,$03,$05,$50					; $1718
			fcb	$F0,$03,$03,$E8					; $1738
			fcb	$F0,$03,$05,$50					; $1758
			fcb	$F0,$03,$03,$E8					; $1778 - cuarto nivel de posicion vertical
; --------------------------------------------------------------------------------------------------
tibuPeq	fcb	$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
			fcb	$FC,$7F,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
			fcb	$F8,$0F,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$02,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
			fcb	$F8,$01,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$01,$40,$00,$00,$00,$00,$00,$00,$00,$00,$00
			fcb	$F8,$00,$7F,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$00,$A8,$00,$00,$00,$00,$00,$00,$00,$00,$00
			fcb	$F8,$00,$0F,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$00,$15,$00,$00,$00,$00,$00,$00,$00,$00,$00
			fcb	$F8,$00,$03,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$00,$02,$A0,$00,$00,$00,$00,$00,$00,$00,$00
			fcb	$F8,$00,$00,$7F,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$00,$00,$54,$00,$00,$00,$00,$00,$00,$00,$00
			fcb	$F8,$00,$00,$0F,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$00,$00,$0A,$00,$00,$00,$00,$00,$00,$00,$00
			fcb	$F8,$00,$00,$03,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$00,$00,$05,$50,$00,$00,$00,$00,$00,$00,$00
			fcb	$F8,$00,$00,$00,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$00,$00,$00,$A8,$00,$00,$00,$00,$00,$00,$00
			fcb	$F8,$00,$00,$00,$3F,$FF,$FF,$FF,$FF,$FF,$FF,$00,$00,$00,$14,$00,$00,$00,$00,$00,$00,$00
			fcb	$FC,$00,$00,$00,$0F,$FF,$FF,$FF,$FF,$FF,$FF,$00,$00,$00,$02,$80,$00,$00,$00,$00,$00,$00
			fcb	$FC,$00,$00,$00,$07,$FF,$FF,$FF,$FF,$FF,$FF,$00,$00,$00,$01,$40,$00,$00,$00,$00,$00,$00
			fcb	$FC,$00,$00,$00,$01,$FF,$FF,$FF,$FF,$FF,$FF,$00,$00,$00,$00,$A0,$00,$00,$00,$00,$00,$00
			fcb	$FC,$00,$00,$00,$00,$7F,$FF,$FF,$FF,$FF,$FF,$00,$00,$00,$00,$54,$00,$00,$00,$00,$00,$00
			fcb	$FC,$00,$00,$00,$00,$3F,$FF,$FF,$FF,$FF,$FF,$00,$00,$00,$00,$0A,$00,$00,$00,$00,$00,$00
			fcb	$FC,$00,$00,$00,$00,$0F,$FF,$FF,$FF,$FF,$FF,$00,$00,$3C,$00,$05,$00,$00,$00,$00,$00,$00
			fcb	$FE,$00,$00,$00,$00,$07,$FF,$FF,$FF,$FF,$FF,$00,$00,$02,$00,$00,$A0,$00,$00,$00,$00,$00
			fcb	$FE,$00,$00,$00,$00,$01,$FF,$FF,$FF,$FF,$FF,$00,$00,$01,$14,$00,$50,$00,$00,$00,$00,$00
			fcb	$FE,$00,$00,$00,$00,$00,$7F,$FF,$FF,$FF,$FF,$00,$00,$28,$00,$00,$28,$00,$00,$00,$00,$00
			fcb	$FE,$00,$00,$00,$00,$00,$3F,$FF,$FF,$FF,$FF,$00,$00,$44,$05,$40,$15,$00,$00,$00,$00,$00
			fcb	$FE,$00,$00,$00,$00,$00,$0F,$FF,$FF,$FF,$FF,$00,$00,$20,$00,$00,$02,$80,$00,$00,$00,$00
			fcb	$FE,$00,$00,$00,$00,$00,$03,$FF,$FF,$FF,$FF,$00,$00,$14,$00,$50,$01,$40,$00,$00,$00,$00
			fcb	$FE,$00,$00,$00,$00,$00,$01,$FF,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$A8,$00,$00,$00,$00
			fcb	$FC,$00,$00,$00,$00,$00,$00,$7F,$FF,$FF,$FF,$01,$00,$00,$00,$00,$00,$14,$00,$00,$00,$00
			fcb	$F8,$00,$00,$00,$00,$00,$00,$3F,$FF,$FF,$FF,$02,$00,$00,$00,$00,$00,$0A,$00,$00,$00,$00
			fcb	$C0,$00,$00,$00,$00,$00,$00,$1F,$FF,$FF,$FF,$05,$00,$00,$00,$00,$00,$05,$00,$00,$00,$00
			fcb	$00,$00,$00,$00,$00,$00,$00,$07,$FF,$FF,$FF,$30,$00,$00,$00,$00,$00,$00,$80,$00,$00,$00
			fcb	$00,$00,$00,$00,$00,$00,$00,$03,$FF,$FF,$FF,$0B,$00,$00,$00,$00,$00,$00,$50,$00,$00,$00
			fcb	$00,$00,$00,$00,$00,$00,$00,$01,$FF,$FF,$FF,$74,$80,$00,$00,$00,$00,$00,$28,$00,$00,$00
			fcb	$00,$00,$00,$00,$00,$00,$00,$00,$7F,$FF,$FF,$6A,$90,$00,$00,$00,$00,$00,$04,$00,$00,$00
			fcb	$80,$00,$00,$00,$00,$00,$00,$00,$3F,$FF,$FF,$05,$00,$00,$00,$00,$00,$00,$02,$00,$00,$00
			fcb	$80,$00,$00,$00,$00,$00,$00,$00,$1F,$FF,$FF,$2A,$94,$00,$00,$00,$00,$00,$01,$40,$00,$00
			fcb	$80,$00,$00,$00,$00,$00,$00,$00,$07,$FF,$FF,$05,$10,$00,$00,$00,$00,$00,$00,$A0,$00,$00
			fcb	$C0,$00,$00,$00,$00,$00,$00,$00,$03,$FF,$FF,$12,$15,$00,$00,$00,$00,$00,$00,$50,$00,$00
			fcb	$C0,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$FF,$14,$88,$00,$00,$00,$00,$00,$00,$08,$00,$00
			fcb	$E0,$00,$00,$00,$00,$00,$00,$00,$00,$7F,$FF,$00,$15,$00,$00,$00,$00,$00,$00,$05,$00,$00
			fcb	$E0,$00,$00,$00,$00,$00,$00,$00,$00,$3F,$FF,$0A,$88,$00,$00,$00,$00,$00,$00,$02,$80,$00
			fcb	$E0,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$FF,$03,$55,$40,$00,$00,$00,$00,$00,$01,$40,$00
			fcb	$F0,$00,$00,$00,$00,$00,$00,$00,$00,$07,$FF,$00,$8A,$00,$00,$00,$00,$00,$00,$00,$A0,$00
			fcb	$F0,$00,$00,$00,$00,$00,$00,$00,$00,$03,$FF,$06,$55,$50,$00,$00,$00,$00,$00,$00,$50,$00
			fcb	$F8,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$03,$8A,$80,$00,$00,$00,$00,$00,$00,$08,$00
			fcb	$FC,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7F,$01,$DD,$54,$00,$00,$00,$00,$00,$00,$05,$00
			fcb	$FC,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3F,$01,$8A,$A0,$00,$00,$00,$00,$00,$00,$02,$80
			fcb	$FE,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1F,$00,$FF,$52,$80,$00,$00,$00,$00,$00,$01,$40
			fcb	$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$00,$7A,$A8,$00,$00,$00,$00,$00,$00,$00,$A0
			fcb	$FF,$80,$00,$00,$00,$00,$00,$00,$00,$00,$07,$00,$3F,$D4,$A0,$00,$00,$00,$00,$00,$00,$50
fTibuPeq
; --------------------------------------------------------------------------------------------------
altSprt8			equ	33								; altura del sprite 8 (bañista)
p00Sprt8			equ	$1a05+$200					; posicion inicial para el sprite 8 en pantalla BOYA
p00Sprt8Lim		equ	p00Sprt8+22					; posicion limite derecho de pantalla
p00Fin8			equ	p00Sprt8+32*altSprt8		; final del sprite bañista
txtFila1			equ	$0400							; inicio pantalla texto
txtFila4			equ	$0460							; inicio fila cuarta pantalla de texto
txtFinal			equ	$0600							; primer byte 'post' pantalla de texto
inicioRWiKi		equ	$0c06+$200					; inicio linea RETROWIKI
grfTextL2		equ	$2100+$200					; 2a linea pantalla reservada para texto
grfTextL3		equ	$2200+$200					; 3a linea pantalla reservada para texto
grfTextL4		equ	$2300+$200					; 4a linea pantalla reservada para texto
; --------------------------------------------------------------------------------------------------
bufTib	zmb	528			; 48 filas de 11 bytes  --- ESTA PARTE PUEDE SER 'PISADA' por sonido!
eBufTib
; --------------------------------------------------------------------------------------------------


; De aquí hacia abajo SOLO debe ser usado para la presentación!!


; --------------------------------------------------------------------------------------------------
; Codigo y datos utilizados solamente para la presentacion del juego --- LINEA 4188 --- 2017/04/03
; --------------------------------------------------------------------------------------------------
											; MUESTRA TEXTO INTRO EN PANTALLA NEGRA
											; Pulsando una tecla se SALTA la presentacion
presTib	lbsr	limSG4						; limpia pantalla texto			
			lbsr	setSG4A						; pasa a modo texto (SG4) paleta alternativa
			ldu	#txtFila4					; apunta a inicio cuarta fila pantalla
			ldy	#intro01						; apunta a frase1
			clr	permSal						; habilita saltarse la presentacion
			lbsr	textPNew						; la muestra
			inc	permSal						; deshabilita saltarse la presentacion
			lbsr	retExt6						; espera
; --------------------------------------------------------------------------------------------------
											; MUESTRA PANTALLA BOYA
			ldx	#inicioPant					; apunta a inicio pantalla grafica
			lbsr	clPM4x						; limpia pantalla PM4
			lbsr	setPM4						; conmuta a PMode4
			ldx	#loc00						; para cargar pantalla "BOYA.BIN"
			lbsr	loadFile						; lo carga
			lbsr	musicP						; instala el player habilitando IRQ para HS (lineas)
											; AÑADE SPRITE 8 (BAÑISTA)
			ldu	#p00Sprt8					; valor inicial para SPRITE 8
			stu	actX							; guarda valor
			ldx	#altSprt8					; numero de filas del sprite 8 (ESPECIAL)
			stx	guar0+2						; en guarda fondo (guar8)
			lbsr	guar8							; guarda fondo a ser sobreescrito
			ldu	#sprit8						; origen del sprite 8
			ldx	#fsprit8						; final del sprite 8
			stu	ini6+1						; guarda en inicio
			stx	fin6+2						; guarda en fin
			lbsr	pinta6						; pinta sprite 8 (contiene retardo que llama a secuenciador)
			lbsr	retSeq2						; retardo largo que llama al secuenciador
											; BUCLE MOVIMIENTO HACIA LA DERECHA
loopd8	ldx	actX							; toma posicion actual
			stx	antX							; la guarda como anterior
			leax	1,x							; incrementa un byte
			cmpx	#p00Sprt8Lim				; llegó al limite derecho de pantalla?
			beq	loopI8						; si, sale del bucle
			stx	actX							; guarda nueva posicion
			lbsr	actBufD8						; mueve buffer a la derecha reponiendo byte izda
			lbsr	pinta6						; pinta sprite 8 (contiene retardo que llama a secuenciador)
			bra	loopd8						; siguiente paso
											; BUCLE MOVIMIENTO HACIA LA IZQUIERDA
loopI8	ldx	actX							; toma posicion actual
			stx	antX							; la guarda como anterior
			leax	-1,x							; incrementa un byte
			cmpx	#p00Sprt8					; llegó al limite?
			beq	hundir						; si, sale del bucle
			stx	actX							; guarda nueva posicion
			lbsr	actBufI8						; mueve buffer a la izquierda reponiendo byte dcha
			lbsr	pinta6						; pinta sprite 8 (contiene retardo que llama a secuenciador)
			bra	loopI8						; siguiente paso
											; BUCLE 'HUNDIMIENTO' BAÑISTA
hundir	ldx	actX							; toma posicion actual
			stx	antX							; la guarda como anterior
			leax	32,x							; apunta a linea mas abajo
			cmpx	#p00Fin8						; llegado a final del sprite?
			bhs	continua						; si, salir del bucle
			stx	actX							; actualiza posicion actual
			lbsr	moveBuf6						; mueve bufer una linea hacia arriba
			ldu	fin6+2						; recupera posicion control fin sprite 8
			leau	-12,u							; le quita una linea
			stu	fin6+2						; actualiza control final
			lbsr	pinta6						; pinta la parte de sprite correspondiente (contiene retardo que llama a secuenciador)
			bra	hundir						; siguiente paso
											; RESTAURA PANTALLA Y VARIABLES
continua	ldx	#altSprite					; poner altura para sprite 5
			stx	guar0+2						; en guarda fondo
			lbsr	retSeqT						; esperar un poco antes de cambiar de pantalla
; --------------------------------------------------------------------------------------------------
											; CARGA PANTALLA PRESENTACION
			ldx	#inicioPant					; apunta a inicio pantalla grafica
			lbsr	clPM4x						; limpia pantalla PM4
			lbsr	bloqMus						; bloquea la Musica antes de cargar fichero
			ldx	#creditos					; apunta a literal pantalla texto presentacion "PRESENT.BIN"
			lbsr	loadFile						; la carga
			lbsr	sigueMus						; habilita musica de nuevo
			lbsr	retSeqT						; retardo que llama al secuenciador
											; MUESTRA CREDITOS Y PIDE SELECCION COLOR
			ldx	#inicioRWiKi				; apunta a primera fila para texto
			ldy	#pre01						; apunta a frase Retrowiki
			bsr	muCred						; muestra linea de Creditos
			ldx	#grfTextL1					; apunta a primera fila para texto
			ldy	#pre02						; apunta a segunda frase de créditos
			bsr	muCred						; muestra linea de Creditos
			ldx	#grfTextL2					; apunta a segunda fila para texto
			ldy	#pre03						; apunta a tercera frase de créditos
			bsr	muCred						; muestra linea de Creditos
			ldx	#grfTextL3					; apunta a tercera fila para texto
			ldy	#pre04						; apunta a cuarta frase de créditos
			bsr	muCred						; muestra linea de Creditos
			ldx	#grfTextL4					; apunta a cuarta fila para texto
			ldy	#pre05						; apunta a quinta frase de créditos
			lbsr	showDNew						; la muestra
											; USUARIO ELIGE PALETA COLORES
iniWK		lbsr	scanTec						; leer teclado
			beq	iniWK							; no tecla, esperar
			cmpa	#'B'							; es 'B'? (para blanco - negro)
			bne	expIni						; si, salta las 2 siguientes
			ldb	#$f8							; valor para PMode4, SCREEN1,1
			stb	modeG							; lo guarda en variable
											; MOSTRAR PANTALLA NEGRA CON EXPLICACION DE INICIO DEL JUEGO
expIni	lbsr	limSG4						; limpia pantalla texto			
			lbsr	setSG4						; pasa a modo texto (SG4)
			ldu	#txtFila4					; apunta a inicio cuarta fila pantalla
			ldy	#expli01						; apunta a frase1
			lbsr	textPNew						; la muestra
			bsr	retSeq1						; retardo que llama al secuenciador
											; DESHABILITA EL SONIDO Y LAS IRQs
			orcc	#$50							; deshabilita interrupciones
			ldx	oldIRQ						; toma valor anterior rutina servicio IRQ
			stx	$10d							; la activa de nuevo
			ldd	cop0103						; toma valores anteriores de configuracion para $ff01 y $ff03
			sta	$ff01							; restaura 
			stb	$ff03							; ambos valores
			lda	cop23							; toma valor guardado config sonido
			sta	$ff23							; lo actualiza
			clr	musPerm						; deshabilita musica
			jmp	noPres						; retorna
; --------------------------------------------------------------------------------------------------
muCred	lbsr	showDNew						; la muestra
			lbsr	retSeqC						; retardo que llama al secuenciador
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; retardos largos que llaman al secuenciador
; --------------------------------------------------------------------------------------------------
retSeq1	ldb	#$08							; ocho veces el bucle interior
			fcb	$8c							; oculta siguiente convirtiendola en cmpx #$nnnn
retSeq2	ldb	#$10							; dieciseis veces el bucle interior
sN00A		ldx	#$2000						; valor de retardo del bucle interior
sN00B		pshs	b,x							; salva variables de control
			lbsr	secNotas						; llama al secuenciador
			puls	b,x							; restaura variables de control
			leax	-1,x							; decrementa contador bucle interno
			bne	sN00B							; no es cero, sigue bucle interno
			decb									; decrementa contador bucle externo
			bne	sN00A							; no es cero, sigue bucle externo
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; para la musica / reanuda la musica
; --------------------------------------------------------------------------------------------------
bloqMus	orcc	#$40							; deshabilita IRQ (musica OFF)
			lda	cop23							; toma valor guardado al entrar de configuracion sonido
			sta	$ff23							; la restaura
			rts									; retorna
; --------------------------------------------------------------------------------------------------
sigueMus	andcc	#$bf							; habilita IRQ (musica ON)
			lda	$ff23							; toma valor actual configuracion sonido
			ora	#8								; habilita canal DAC
			sta	$ff23							; actualiza configuracion
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Repone linea superior del buffer a pantalla - Para el sprite 8 (6 bytes x linea)
; Mueve las demas 1 fila hacia arriba y pone unos en la ultima (color blanco)
; --------------------------------------------------------------------------------------------------
moveBuf6	ldu	#buffer						; apunta a inicio del buffer
			ldx	antX							; apunta a posicion anterior sprite en pantalla
			ldd	,u								; toma 6 bytes del buffer
			std	,x								; y los
			ldd	2,u							; pone
			std	2,x							; en
			ldd	4,u							; la
			std	4,x							; pantalla
			ldy	#altSprt8-1					; lineas del sprite a mover (su altura menos una)
d10		ldd	6,u							; toma 6 bytes del buffer (a partir de la segunda linea)
			std	,u								; los
			ldd	8,u							; sube
			std	2,u							; una
			ldd	10,u							; linea
			std	4,u							; arriba
			leau	6,u							; apunta a la siguiente linea del buffer
			leay	-1,y							; decrementa contador lineas 
			bne	d10							; no finalizado, seguir
			ldd	#$ffff						; 16 pixels color blanco
			std	,u								; llena la
			std	2,u							; ultima linea del buffer
			std	4,u							; (la *no* movida)
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Pone en pantalla un sprite de seis bytes de anchura (alineado a byte) - sprite 8
; --------------------------------------------------------------------------------------------------
pinta6	ldx	actX							; apunta a destino (pantalla)
ini6		ldu	#$0000						; apunta a origen (sprite)
			ldy	#buffer						; apunta a primer byte del buffer
p6B0		ldd	,y								; toma dos bytes del fondo salvado
			anda	,u								; les aplica máscara
			andb	1,u							; para eliminar fondo a sobreescribir
			addd	6,u							; añade dos bytes del sprite
			std	,x								; pone el resultado en pantalla
			ldd	2,y							; toma dos bytes mas del fondo salvado
			anda	2,u							; les aplica máscara
			andb	3,u							; para eliminar fondo a sobreescribir
			addd	8,u							; añade dos bytes del sprite
			std	2,x							; pone el resultado en pantalla
			ldd	4,y							; toma dos bytes mas del fondo salvado
			anda	4,u							; les aplica máscara
			andb	5,u							; para eliminar fondo a sobreescribir
			addd	10,u							; añade dos bytes del sprite
			std	4,x							; pone el resultado en pantalla
			leax	32,x							; apunta a siguiente linea de pantalla
			leau	12,u							; apunta a siguiente linea de mascara/sprite
			leay	6,y							; apunta a siguiente linea de fondo guardado
fin6		cmpu	#$0000						; final del sprite?
			blo	p6B0							; no finalizado, seguir
			lbsr	retSeqG						; retardo que llama al secuenciador
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Actualiza el buffer para el sprite 8 (6 bytes alineados) con datos 1 byte hacia la derecha
; --------------------------------------------------------------------------------------------------
actBufD8											; mover buffer 1 byte a la derecha, añadir 1 dcha, enviar izda a pantalla 
			ldu	#buffer						; apunta a inicio buffer
			ldy	#altSprt8					; numero de lineas
			ldx	antX							; apunta pantalla byte izquierda arriba
mRD80		lda	,u								; toma primer byte buffer
			sta	,x								; restaura columna izquierda pantalla 
			ldd	1,u							; toma bytes 2-3 del buffer
			std	,u								; los guarda en bytes 1-2
			ldd	3,u							; toma bytes 4-5 del buffer
			std	2,u							; los guarda en 3-4
			lda	5,u							; toma byte 6 del buffer
			sta	4,u							; lo guarda en byte 5
			lda	6,x							; toma nuevo byte de pantalla			
			sta	5,u							; lo guarda en 6 byte del buffer
			leau	6,u							; apunta a siguiente fila buffer
			leax	32,x							; apunta a siguiente fila pantalla
			leay	-1,y							; decrementa contador
			bne	mRD80							; no finalizado, sigue
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Actualiza el buffer para el sprite 8 (6 bytes alineados) con datos 1 byte hacia la izquierda
; --------------------------------------------------------------------------------------------------
actBufI8											; mover buffer 1 byte a la derecha, añadir 1 dcha, enviar izda a pantalla 
			ldu	#buffer						; apunta a inicio del buffer
			ldy	#altSprt8					; numero de lineas
			ldx	antX							; apunta pantalla byte izquierda arriba
mRI80		lda	5,u							; toma ultimo byte buffer
			sta	5,x							; restaura columna derecha pantalla 
			ldd	3,u							; toma bytes 3-4 del buffer
			std	4,u							; los guarda en bytes 4-5
			ldd	1,u							; toma bytes 1-2 del buffer
			std	2,u							; los guarda en 2-3
			lda	,u								; toma byte 1 del buffer
			sta	1,u							; lo guarda en byte 2
			lda	-1,x							; toma nuevo byte de pantalla	por la izquierda
			sta	,u								; lo guarda en 1 byte del buffer
			leau	6,u							; apunta a siguiente fila buffer
			leax	32,x							; apunta a siguiente fila pantalla
			leay	-1,y							; decrementa contador
			bne	mRI80							; no finalizado, sigue
			rts									; retorna
; --------------------------------------------------------------------------------------------------
; Sprite Bañista, solo para la presentacion
; --------------------------------------------------------------------------------------------------
sprit8	fcb	$FF,$FF,$C0,$07,$FF,$FF,$00,$00,$01,$00,$00,$00			;	SPRIT8Z (BAÑISTA)
			fcb	$FF,$FF,$80,$03,$FF,$FF,$00,$00,$38,$28,$00,$00
			fcb	$FF,$FE,$00,$01,$FF,$FF,$00,$00,$46,$18,$00,$00
			fcb	$FF,$FC,$00,$00,$FF,$FF,$00,$01,$B0,$A4,$00,$00
			fcb	$FF,$FC,$00,$00,$7F,$FF,$00,$01,$4E,$01,$00,$00
			fcb	$FF,$F8,$00,$00,$7F,$FF,$00,$02,$B8,$A4,$00,$00
			fcb	$FF,$F8,$00,$00,$3F,$FF,$00,$02,$A6,$39,$00,$00
			fcb	$FF,$F8,$00,$00,$3F,$FF,$00,$01,$5E,$8E,$00,$00
			fcb	$FF,$F0,$00,$00,$1F,$FF,$00,$04,$B9,$81,$00,$00
			fcb	$FF,$F0,$00,$00,$1F,$FF,$00,$04,$67,$FA,$80,$00
			fcb	$FF,$F0,$00,$00,$1F,$FF,$00,$02,$9F,$FC,$00,$00
			fcb	$FF,$E0,$00,$00,$1F,$FF,$00,$0A,$7F,$FE,$00,$00
			fcb	$FF,$E0,$00,$00,$1F,$FF,$00,$09,$7F,$FF,$00,$00
			fcb	$FF,$E0,$00,$00,$0F,$FF,$00,$09,$7F,$FF,$20,$00
			fcb	$FF,$E0,$00,$00,$0F,$FF,$00,$04,$C1,$C1,$20,$00
			fcb	$FF,$E0,$00,$00,$0F,$FF,$00,$04,$B9,$CE,$20,$00
			fcb	$FF,$E0,$00,$00,$0F,$FF,$00,$0C,$E3,$E3,$20,$00
			fcb	$FF,$E0,$00,$00,$0F,$FF,$00,$0C,$D5,$D5,$20,$00
			fcb	$FF,$E0,$00,$00,$0F,$FF,$00,$02,$FF,$FF,$40,$00
			fcb	$FF,$F0,$00,$00,$0F,$FF,$00,$00,$FF,$FF,$40,$00
			fcb	$FF,$F0,$00,$00,$0F,$FF,$00,$00,$FD,$DF,$00,$00
			fcb	$FF,$F0,$00,$00,$0F,$FF,$00,$00,$7C,$BF,$00,$00
			fcb	$FF,$E0,$00,$00,$0F,$FF,$00,$04,$7F,$FE,$80,$00
			fcb	$FF,$E0,$00,$00,$0F,$FF,$00,$04,$B9,$1E,$40,$00
			fcb	$FF,$E0,$00,$00,$0F,$FF,$00,$05,$3C,$3D,$40,$00
			fcb	$F1,$C0,$00,$00,$0E,$3F,$00,$02,$1F,$FA,$40,$00
			fcb	$E0,$00,$00,$00,$00,$1F,$0E,$0A,$07,$E1,$41,$C0
			fcb	$C0,$00,$00,$00,$00,$0F,$1F,$C1,$D8,$0E,$0F,$E0
			fcb	$80,$00,$00,$00,$00,$07,$3F,$FF,$DF,$EF,$FF,$F0
			fcb	$80,$00,$00,$00,$00,$07,$33,$7F,$9F,$C7,$FB,$30
			fcb	$80,$00,$00,$00,$00,$07,$06,$00,$07,$80,$01,$80
			fcb	$F1,$FF,$00,$03,$FE,$3F,$04,$00,$03,$00,$00,$80
			fcb	$FB,$FF,$00,$03,$FF,$7F,$00,$00,$00,$00,$00,$00
fsprit8
; --------------------------------------------------------------------------------------------------
; ficheros a cargar a lo largo de la presentacion
; --------------------------------------------------------------------------------------------------
	if DRG
creditos	fcn	/"PRESENT.BIN:1"/						; pantalla de creditos
loc00		fcn	/"BOYA.BIN:1"/							; pantalla 00
	else
creditos	fcn	/"PRESENT.BIN:0"/						; pantalla de creditos
loc00		fcn	/"BOYA.BIN:0"/							; pantalla 00
	endif
; --------------------------------------------------------------------------------------------------
; Frases que se muestran en las pantallas de presentacion
; --------------------------------------------------------------------------------------------------
;					/....+....1....+....2....+....3../
	if ESP
intro01	fcc	/UNA PAREJA PASEA POR LA PLAYA/					; 29
			fcb	13															;  1 
			fcc	/ELLA SE PONE A NADAR EN EL MAR/					; 30
			fcb	13															;  1 
			fcn	/SIN SOSPECHAR QUE ALGO LA ACECHA/				; 32  --->  93 signos
	else
intro01 	fcc	/A COUPLE WALKS BY THE BEACH  /					; 29
			fcb	13															;  1 
		 	fcc	/SHE STARTS SWIMMING IN THE SEA /				; 31
			fcb	13															;  1 
			fcn	/BUT SOMETHING IS STALKING HER  /				; 31  --->  93 signos
	endif
; --------------------------------------------------------------------------------------------------
;					/....+....1....+....2....+....3....+....4../
pre01		fcn	/ R E T R O W I K I (2017) /
	if ESP
pre02		fcn	/ Gr<ficos,Script: Jos> A Gonz<lez jojo073/	; 41
pre03		fcn	/Programa,Efectos: Pere Serrat     pser1/		; 39
pre04		fcn	/    Motor m_sica: Simon Jonassen invisible/	; 42
pre05		fcn	/'B' para color BLANCO. Otras teclas VERDE/	; 41  ---> 163 signos
	else
pre02		fcn	/Graphics,Script: Jos> A Gonz<lez jojo073/	; 40
pre03		fcn	/Program,Effects: Pere Serrat     pser1  / 	; 40
pre04		fcn	/    Music Motor: Simon Jonassen  invisible/	; 42
pre05		fcn	/'B' for BUFF colorset. Other keys GREEN  /	; 41  ---> 163 signos
	endif
; --------------------------------------------------------------------------------------------------
;					/....+....1....+....2....+....3../
	if ESP
expli01	fcc	/AMANECE EN LA ISLA /								; 19 
			fcb	13															;  1 
			fcc	/EL JEFE BRODY SE DIRIGE /							; 24
			fcb	13															;  1 
			fcn	/HACIA LA COMISARIA DEL PUEBLO/					; 29  --->  74 signos
	else
expli01	fcc	/IT DAWNS ON THE ISLAND/							; 22
			fcb	13															;  1 
			fcc	/BOSS BRODY HEADS TOWARDS/							; 24
			fcb	13															;  1 
			fcn	/THE VILLAGE POLICE STATION/						; 26  --->  74 signos
	endif
; --------------------------------------------------------------------------------------------------
; Aqui se declaran los offsets a la tabla de valores para cada posible nota
; Se pueden usar estas etiquetas en la partitura
; ------------------------------------------------------------------------------------------------
freqOffset	
C_1		equ	0
Cs1		equ	2
Db1		equ	2
D_1		equ	4
Ds1		equ	6
Eb1		equ	6
E_1		equ	8
F_1		equ	10
Fs1		equ	12
Gb1		equ	12
G_1		equ	14
Gs1		equ	16
Ab1		equ	16
A_1		equ	18
As1		equ	20
Bb1		equ	20
B_1		equ	22
C_2		equ	24
Cs2		equ	26
Db2		equ	26
D_2		equ	28
Ds2		equ	30
Eb2		equ	30
E_2		equ	32
F_2		equ	34
Fs2		equ	36
Gb2		equ	36
G_2		equ	38
Gs2		equ	40
Ab2		equ	40
A_2		equ	42
As2		equ	44
Bb2		equ	44
B_2		equ	46
C_3		equ	48
Cs3		equ	50
Db3		equ	50
D_3		equ	52
Ds3		equ	54
Eb3		equ	54
E_3		equ	56
F_3		equ	58
Fs3		equ	60
Gb3		equ	60
G_3		equ	62
Gs3		equ	64
A_3		equ	66
As3		equ	68
Bb3		equ	68
B_3		equ	70
Cb4		equ	70
C_4		equ	72
Cs4		equ	74
Db4		equ	74
D_4		equ	76
Ds4		equ	78
Eb4		equ	78
E_4		equ	80
F_4		equ	82
Fs4		equ	84
Gb4		equ	84
G_4		equ	86
Gs4		equ	88
Ab4		equ	88
A_4		equ	90
As4		equ	92
Bb4		equ	92
B_4		equ	94
Cb5		equ	94
C_5		equ	96
Cs5		equ	98
Db5		equ	98
D_5		equ	100
Ds5		equ	102
Eb5		equ	102
E_5		equ	104
F_5		equ	106
Fs5		equ	108
Gb5		equ	108
G_5		equ	110
Gs5		equ	112
Ab5		equ	112
A_5		equ	114
As5		equ	116
Bb5		equ	116
B_5		equ	118
C_6		equ	120
Cs6		equ	122
Db6		equ	122
D_6		equ	124
Ds6		equ	126
Eb6		equ	126
E_6		equ	128
F_6		equ	130
Fs6		equ	132
Gb6		equ	132
G_6		equ	134
Gs6		equ	136
Ab6		equ	136
A_6		equ	138
As6		equ	140
Bb6		equ	140
B_6		equ	142
C_7		equ	144
Cs7		equ	146
Db7		equ	146
D_7		equ	148
Ds7		equ	150
Eb7		equ	150
E_7		equ	152
F_7		equ	154
Fs7		equ	156
Gb7		equ	156
G_7		equ	158
Gs7		equ	160
Ab7		equ	160
A_7		equ	162
As7		equ	164
Bb7		equ	164
B_7		equ	166
C_8		equ	168
Cs8		equ	170
Db8		equ	170
D_8		equ	172
Ds8		equ	174
Eb8		equ	174
E_8		equ	176
F_8		equ	178
Fs8		equ	180
Gb8		equ	180
G_8		equ	182
Gs8		equ	184
Ab8		equ	184
A_8		equ	186
As8		equ	188
Bb8		equ	188
B_8		equ	190
sepNot	equ	1								; equivale al tiempo de una GARRAPATEA (1/128)
; --------------------------------------------------------------------------
; Cada compás durará 128 cuadros (FS), así que la duración que debemos
; indicar (como tercer valor) para cada linea de notas será: 
; REDONDA     (1/1)  = 128
; BLANCA      (1/2)  =  64
; NEGRA       (1/4)  =  32
; CORCHEA     (1/8)  =  16
; SEMICORCHEA (1/16) =   8
; FUSA        (1/32) =   4
; SEMIFUSA    (1/64) =   2
; --------------------------------------------------------------------------
; Para las notas con punto simplemente aumentamos en un 50% el
; valor del tiempo, por ejemplo para una CORCHEA con punto
; usariamos el valor 16+8 => 24
; --------------------------------------------------------------------------
; Los bloques de tres notas (tresillos) obligaran a hacer 'ajustes'
; por ejemplo un 'tresillo' de corcheas que equivale a DOS corcheas
; requiere repartir 16+16 entre 3 => 11+11+10 (lo mejor posible)
; --------------------------------------------------------------------------
; Estas cifras hacen que una nota suene tras la anterior como si se
; interpretaran 'legato'. Si queremos 'separar' una nota de la siguiente
; de forma que se oigan 'empezar' ambas, tenemos que *REDUCIR* el 
; tiempo de la anterior en 2 unidades y añadir una nota de silencio de
; valor 2 (equivale a una 'semifusa'), por ejemplo dos corcheas seguidas:
; 0,C_3,14		el primer cero es de silencio para el solista 
; 0,0,2			este es el separador de notas
; --------------------------------------------------------------------------
; Una última observación: 
; Como en una fila hay una nota de cada canal, la duración afecta a las dos
; por lo que si son de diferente longitud, deberemos hacer dos lineas
; --------------------------------------------------------------------------
; Partitura de JAWS adaptacion de Josiah Lee
; --------------------------------------------------------------------------
partitura
; ------------------------------------------------------ Compas 1
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	  0,E_2,48			;    , E_2
			fcb	  0,0,64				;    ,
; ------------------------------------------------------ Compas 2
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,0,80				;    ,
; ------------------------------------------------------ Compas 3
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,32			;    , F_2
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,0,48				;    , 
; ------------------------------------------------------ Compas 4
			fcb	  0,0,128			;    ,			 
; ------------------------------------------------------ Compas 5
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,0,16				;    ,
			fcb	  0,E_2,32			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,0,16				;    ,
; ------------------------------------------------------ Compas 6
			fcb	  0,E_2,32			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,0,16				;    ,
			fcb	  0,E_2,32			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,0,16				;    ,
; ------------------------------------------------------ Compas 7
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
; ------------------------------------------------------ Compas 8
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
			fcb	D_3,D_2,16			; D_3, D_2
			fcb	E_3,E_2,16-sepNot	; E_3, E_2
			fcb	  0,0,sepNot		;    ,
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
			fcb	D_3,D_2,16			; D_3, D_2
			fcb	E_3,E_2,16-sepNot	; E_3, E_2
			fcb	  0,0,sepNot		;    ,
; ------------------------------------------------------ Compas 9
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
; ------------------------------------------------------ Compas 10
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
			fcb	D_3,D_2,16			; D_3, D_2
			fcb	E_3,E_2,16-sepNot	; E_3, E_2
			fcb	  0,0,sepNot		;    ,
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
			fcb	D_3,D_2,16			; D_3, D_2
			fcb	E_3,E_2,16-sepNot	; E_3, E_2
			fcb	  0,0,sepNot		;    ,
; ------------------------------------------------------ Compas 11
			fcb	Eb3,E_2,8			; Eb3, E_2
			fcb	G_3,E_2,8			; G_3, E_2
			fcb	Db4,F_2,16			; Db4, F_2
			fcb	Db4,E_2,16			; Db4, E_2
			fcb	Db4,F_2,16			; Db4, F_2
			fcb	Db3,E_2,16			; Db4, E_2
			fcb	Db4,F_2,16			; Db4, F_2
			fcb	Db4,E_2,16			; Db4, E_2
			fcb	Db4,F_2,16			; Db4, F_2
; ------------------------------------------------------ Compas 12
			fcb	  0,E_2,16			;    , E_2
			fcb	Eb3,D_2,16			; Eb3, D_2
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	Eb3,D_2,16			; Eb3, D_2
			fcb	  0,F_2,16			;    , F_2
; ------------------------------------------------------ Compas 13
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,D_2,16			;    , D_2
			fcb	  0,E_2,16-sepNot	;    , E_2
			fcb	  0,0,sepNot		;    ,
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,D_2,16			;    , D_2
			fcb	  0,E_2,16-sepNot	;    , E_2
			fcb	  0,0,sepNot		;    ,
; ------------------------------------------------------ Compas 14
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	Eb3,E_2,8			; Eb3, E_2
			fcb	G_3,E_2,8			; G_3, E_2
			fcb	Db4,F_2,16			; Db4, F_2
			fcb	F_3,E_2,8			; F_3, E_2
			fcb	A_3,E_2,8			; A_3, E_2
			fcb	Eb4,F_2,16			; Eb4, F_2
			fcb	Eb4,E_2,16			; Eb4, E_2
			fcb	E_3,F_2,8 			; E_3, F_2
			fcb	G_3,F_2,8 			; G_3, F_2
; ------------------------------------------------------ Compas 15
			fcb	Db4,E_2,16			; Db4, E_2
			fcb	Db4,F_2,16			; Db4, F_2
			fcb	Db4,E_2,16			; Db4, E_2
			fcb	Eb4,F_2,8 			; Eb3, F_2
			fcb	Bb3,F_2,8 			; Bb3, F_2
			fcb	Eb3,E_2,8 			; Eb3, E_2
			fcb	Db3,E_2,8 			; Db3, E_2
			fcb	Db3,F_2,16			; Db3, F_2
			fcb	Db3,E_2,16			; Db3, E_2
			fcb	Db3,F_2,16			; Db3, F_2
; ------------------------------------------------------ Compas 16
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	Db3,D_2,16			; Db3, D_2
			fcb	Db3,F_2,16			; Db3, F_2
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,E_2,16			;    , E_2
			fcb	Db3,D_2,16			; Db3, D_2
; ------------------------------------------------------ Compas 17
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,D_2,16			;    , D_2
			fcb	  0,E_2,16-sepNot	;    , E_2
			fcb	  0,0,sepNot		;    ,
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	Db3,D_2,16			; Db3, D_2
			fcb	Eb3,E_2,16			; Eb3, E_2
; ------------------------------------------------------ Compas 18
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	Eb3,E_2,8 			; Eb3, E_2
			fcb	G_3,E_2,8 			; G_3, E_2
			fcb	Db3,F_2,16			; Db3, F_2
			fcb	Db3,E_2,16			; Db3, E_2
			fcb	Db3,F_2,16			; Db3, F_2
			fcb	Db3,E_2,16			; Db3, E_2
			fcb	Db3,F_2,16			; Db3, F_2
; ------------------------------------------------------ Compas 19
			fcb	Db3,E_2,16			; Db3, E_2
			fcb	Db3,F_2,16			; Db3, F_2
			fcb	Db3,E_2,16			; Db3, E_2
			fcb	Db3,F_2,16			; Db3, F_2
			fcb	Eb3,E_2,16			; Eb3, E_2
			fcb	G_3,F_2,16			; G_3, F_2
			fcb	Db3,E_2,16			; Db3, E_2
			fcb	Eb3,F_2,16			; Eb3, F_2
; ------------------------------------------------------ Compas 20
			fcb	Db4,E_2,16			; Db4, E_2
			fcb	Eb3,F_2,16			; Eb3, F_2
			fcb	Db3,E_2,16			; Db3, E_2
			fcb	Db3,F_2,16			; Db3, F_2
			fcb	Db3,E_2,16			; Db3, E_2
			fcb	Db3,F_2,16			; Db3, F_2
			fcb	Db3,E_2,16			; Db3, E_2
			fcb	Db3,F_2,16			; Db3, F_2
; ------------------------------------------------------ Compas 21
			fcb	Db3,E_2,16			; Db3, E_2
			fcb	Db3,F_2,16			; Db3, F_2
			fcb	Db3,E_2,16			; Db3, E_2
			fcb	Db3,F_2,16			; Db3, F_2
			fcb	Db3,E_2,16			; Db3, E_2
			fcb	Db3,F_2,16			; Db3, F_2
			fcb	Db3,E_2,16			; Db3, E_2
			fcb	Db3,F_2,16			; Db3, F_2
; ------------------------------------------------------ Compas 22
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
; ------------------------------------------------------ Compas 23
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
			fcb	Bb3,E_2,16			; Bb3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	Bb3,F_2,16			; Bb3, F_2
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	Bb3,F_2,16			; Bb3, F_2
; ------------------------------------------------------ Compas 24
			fcb	Eb4,G_2,12			; Eb4, G_2
			fcb	G_4,G_2,12			; G_4, G_2
			fcb	Bb4,G_2,8			; Bb4, G_2
			fcb	E_4,A_2,12			; E_4, A_2
			fcb	A_4,A_2,12			; A_4, A_2
			fcb	Cs5,A_2,8 			; Cs5, A_2
			fcb	Eb4,G_2,12			; Eb4, G_2
			fcb	G_4,G_2,12			; G_4, G_2
			fcb	Bb4,G_2,8 			; Bb4, G_2
			fcb	E_4,E_2,12			; E_4, E_2
			fcb	A_4,E_2,12			; A_4, E_2
			fcb	Cs5,E_2,8 			; Cs5, E_2
; ------------------------------------------------------ Compas 25
			fcb	Eb4,Cs2,12			; Eb4, Cs2
			fcb	G_4,Cs2,12			; G_4, Cs2
			fcb	Bb4,Cs2,8			; Bb4, Cs2
			fcb	E_4,A_2,12			; E_4, A_2
			fcb	A_4,A_2,12			; A_4, A_2
			fcb	Cs5,A_2,8 			; Cs5, A_2
			fcb	  0,G_2,16			;    , G_2
			fcb	  0,G_2,16			;    , G_2
			fcb	Eb4,Eb2,16			; Eb4, Eb2
			fcb	G_4,Eb2,16-sepNot	; G_4, Eb2
			fcb	G_4,0,sepNot		; G_4,    
; ------------------------------------------------------ Compas 26
			fcb	A_4,Eb2,32			; A_4, Eb2
			fcb	A_4,E_2,32			; A_4, E_2
			fcb	A_4,Eb2,32			; A_4, Eb2
			fcb	G_4,E_2,32			; G_4, E_2
; ------------------------------------------------------ Compas 27
			fcb	Bb3,Eb2,32			; Bb3, Eb2
			fcb	Cs4,E_2,32			; Cs4, E_2
			fcb	Eb4,G_2,32			; Eb4, G_2
			fcb	E_4,A_2,32-sepNot	; E_4, A_2
			fcb	  0,0,sepNot		;    ,    
; ------------------------------------------------------ Compas 28
			fcb	E_4,A_2,32			; E_4, A_2
			fcb	E_4,A_2,32			; E_4, A_2
			fcb	Eb4,G_2,32-sepNot	; Eb4, G_2
			fcb	  0,G_2,sepNot		;    , G_2
			fcb	Eb4,G_2,16			; Eb4, G_2
			fcb	G_4,G_2,16			; G_4, G_2
; ------------------------------------------------------ Compas 29
			fcb	A_4,Eb2,16			; A_4, Eb2
			fcb	C_5,Eb2,16			; C_5, Eb2
			fcb	C_5,E_2,16			; C_5, E_2
			fcb	Bb4,E_2,16			; Bb4, E_2
			fcb	A_4,Eb2,32			; A_4, Eb2
			fcb	A_4,E_2,32			; A_4, E_2
; ------------------------------------------------------ Compas 30
			fcb	A_4,G_2,32			; A_4, G_2
			fcb	A_4,A_2,32			; A_4, A_2
			fcb	G_4,G_2,32			; G_4, G_2
			fcb	G_4,A_2,32-sepNot	; G_4, A_2
			fcb	G_4,0,sepNot		; G_4,    
; ------------------------------------------------------ Compas 31
			fcb	G_4,A_2,64			; G_4, Cs3
			fcb	Eb4,G_2,32			; Eb4, Bb2
			fcb	G_4,G_2,32			; G_4, Bb2
; ------------------------------------------------------ Compas 32
			fcb	A_4,D_2,16			; A_4, D_2
			fcb	A_4,Eb2,16			; A_4, Eb2
			fcb	A_4,D_2,16			; A_4, D_2
			fcb	A_4,Eb2,16			; A_4, Eb2
			fcb	G_4,D_2,16			; G_4, D_2
			fcb	G_4,Eb2,16			; G_4, Eb2
			fcb	G_4,D_2,16			; G_4, D_2
			fcb	G_4,Eb2,16			; G_4, Eb2
; ------------------------------------------------------ Compas 33
			fcb	D_4,D_2,16			; D_4, D_2
			fcb	D_4,Eb2,16			; D_4, Eb2
			fcb	D_4,D_2,16			; D_4, D_2
			fcb	Cs4,Eb2,16			; Cs4, Eb2
			fcb	D_4,D_2,16			; D_4, D_2
			fcb	D_4,Eb2,16			; D_4, Eb2
			fcb	E_4,D_2,8 			; E_4, D_2
			fcb	F_4,D_2,8 			; F_4, D_2
			fcb	G_4,Eb2,8 			; G_4, Eb2
			fcb	A_4,Eb2,8 			; A_4, Eb2
; ------------------------------------------------------ Compas 34
			fcb	D_4,D_2,16			; D_4, D_2
			fcb	D_4,Eb2,16			; D_4, Eb2
			fcb	D_4,C_2,16			; D_4, D_2
			fcb	D_4,D_2,16-sepNot	; D_4, Eb2
			fcb	D_4,0,sepNot		; D_4,    
			fcb	D_4,D_2,16			; D_4, D_2
			fcb	D_4,Eb2,16-sepNot	; D_4, Eb2
			fcb	  0,Eb2,sepNot		;    , Eb2
			fcb	D_4,C_2,16			; D_4, C_2
			fcb	D_4,D_2,16-sepNot	; D_4, D_2
			fcb	D_4,0,sepNot		; D_4,    
; ------------------------------------------------------ Compas 35
			fcb	E_4,D_2,16			; E_4, D_2
			fcb	E_4,Eb2,16			; E_4, Eb2
			fcb	B_3,D_2,16			; B_3, D_2
			fcb	B_3,Eb2,16			; B_3, Eb2
			fcb	Fs4,D_2,16			; Fs4, D_2
			fcb	Fs4,Eb2,16			; Fs4, Eb2
			fcb	B_3,D_2,16			; B_3, D_2
			fcb	B_3,Eb2,16			; B_3, Eb2
; ------------------------------------------------------ Compas 36
			fcb	Gs4,D_2,16			; Gs4, D_2
			fcb	A_4,Eb2,16			; A_4, Eb2
			fcb	B_4,C_2,16			; B_4, C_2
			fcb	Gs4,D_2,16-sepNot	; Gs4, D_2
			fcb	Gs4,0,sepNot		; Gs4,    
			fcb	Fs4,D_2,16			; Fs4, D_2
			fcb	Fs4,Eb2,16			; Fs4, Eb2
			fcb	B_3,C_2,16			; B_3, C_2
			fcb	B_3,D_2,16-sepNot	; B_3, D_2
			fcb	B_3,0,sepNot		; B_3,    
; ------------------------------------------------------ Compas 37
			fcb	E_4,D_2,16			; E_4, D_2
			fcb	E_4,Eb2,16			; E_4, Eb2
			fcb	B_3,D_2,16			; B_3, D_2
			fcb	B_3,Eb2,16			; B_3, Eb2
			fcb	Fs4,D_2,16			; Fs4, D_2
			fcb	A_4,Eb2,16			; A_4, Eb2
			fcb	Gs4,D_2,16			; Gs4, D_2
			fcb	Fs4,Eb2,16			; Fs4, Eb2
; ------------------------------------------------------ Compas 38
			fcb	Cs5,D_2,16			; Cs5, D_2
			fcb	B_4,Eb2,16			; B_4, Eb2
			fcb	B_4,C_2,16			; B_4, C_2
			fcb	B_4,D_2,16-sepNot	; B_4, D_2
			fcb	B_4,0,sepNot		; B_4,    
			fcb	B_4,D_2,16			; B_4, D_2
			fcb	B_4,Eb2,16			; B_4, Eb2
			fcb	  0,C_2,16			;    , C_2
			fcb	  0,D_2,16-sepNot	;    , D_2
			fcb	  0,0,sepNot		;    ,    
; ------------------------------------------------------ Compas 39
			fcb	A_4,D_2,16			; A_4, D_2
			fcb	A_4,Eb2,16			; A_4, Eb2
			fcb	Ab4,D_2,16			; Ab4, D_2
			fcb	Ab4,Eb2,16			; Ab4, Eb2
			fcb	Ab4,D_2,16			; Ab4, D_2
			fcb	Gb4,Eb2,16			; Gb4, Eb2
			fcb	E_4,D_2,16			; E_4, D_2
			fcb	  0,Eb2,16			;    , Eb2
; ------------------------------------------------------ Compas 40
			fcb	A_4,D_2,16			; A_4, D_2
			fcb	A_4,Eb2,16			; A_4, Eb2
			fcb	Ab4,C_2,16			; Ab4, C_2
			fcb	Ab4,D_2,16-sepNot	; Ab4, D_2
			fcb	Ab4,0,sepNot		; Ab4,    
			fcb	Ab4,D_2,16			; Ab4, D_2
			fcb	Gb4,Eb2,16			; Gb4, Eb2
			fcb	E_4,C_2,16			; E_4, C_2
			fcb	E_4,D_2,16-sepNot	; E_4, D_2
			fcb	E_4,0,sepNot		; E_4,    
; ------------------------------------------------------ Compas 41
			fcb	E_4,D_2,16			; E_4, D_2
			fcb	E_4,Eb2,16-sepNot	; E_4, Eb2
			fcb	  0,Eb2,sepNot		;    , Eb2
			fcb	E_5,D_2,16			; E_4, D_2
			fcb	E_4,Eb2,16			; E_4, Eb2
			fcb	B_3,D_2,16			; B_3, D_2
			fcb	Db4,Eb2,16			; Db4, Eb2
			fcb	D_4,D_2,16			; D_4, D_2
			fcb	D_4,Eb2,16			; D_4, Eb2
; ------------------------------------------------------ Compas 42
			fcb	E_4,D_2,16			; E_4, D_2
			fcb	E_4,Eb2,16			; E_4, Eb2
			fcb	Db4,C_2,16			; Db4, C_2
			fcb	Db4,D_2,16-sepNot	; Db4, D_2
			fcb	Db4,0,sepNot		; Db4,    
			fcb	A_3,D_2,16			; A_3, D_2
			fcb	A_3,Eb2,16			; A_3, Eb2
			fcb	A_3,C_2,16			; A_3, C_2
			fcb	A_3,D_2,16-sepNot	; A_3, D_2
			fcb	A_3,0,sepNot		; A_3,    
; ------------------------------------------------------ Compas 43
			fcb	D_3,D_2,16			; D_3, D_2
			fcb	Eb3,Eb2,16			; Eb3, Eb2
			fcb	D_3,D_2,16			; D_3, D_2
			fcb	Eb3,Eb2,16			; Eb3, Eb2
			fcb	D_3,D_2,16			; D_3, D_2
			fcb	Eb3,Eb2,16			; Eb3, Eb2
			fcb	D_3,D_2,16			; D_3, D_2
			fcb	Eb3,Eb2,16			; Eb3, Eb2
; ------------------------------------------------------ Compas 44
			fcb	Eb3,D_2,8 			; Eb3, D_2
			fcb	G_3,D_2,8 			; G_3, D_2
			fcb	Db4,Eb2,16			; Db4, Eb2
			fcb	Db4,D_2,16			; Db4, D_2
			fcb	Db4,Eb2,16			; Db4, Eb2
			fcb	Db4,D_2,16			; Db4, D_2
			fcb	Db4,Eb2,16			; Db4, Eb2
			fcb	Db4,D_2,16			; Db4, D_2
			fcb	Db4,Eb2,16			; Db4, Eb2
; ------------------------------------------------------ Compas 45
			fcb	Eb3,E_2,8 			; Eb3, E_2
			fcb	G_3,E_2,8 			; G_3, E_2
			fcb	Bb3,F_2,8 			; Bb3, F_2
			fcb	Eb4,F_2,8 			; Eb4, F_2
			fcb	Bb3,E_2,8 			; Bb3, E_2
			fcb	G_3,E_2,8 			; G_3, E_2
			fcb	Eb3,F_2,16			; Eb3, F_2
			fcb	Eb3,E_2,16			; Eb3, E_2
			fcb	Eb3,F_2,16			; Eb3, F_2
			fcb	Eb3,E_2,16			; Eb3, E_2
			fcb	  0,F_2,16			;    , F_2
; ------------------------------------------------------ Compas 46
			fcb	  0,E_2,16			;    , E_2
			fcb	Cb4,F_2,16			; Cb4, F_2
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	Cb4,E_2,16			; Cb4, E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	Cb5,E_2,16			; Cb4, E_2
			fcb	Cb4,F_2,16			; Cb4, F_2
; ------------------------------------------------------ Compas 47
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
; ------------------------------------------------------ Compas 48
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
			fcb	E_3,E_2,16			; E_3, E_2
			fcb	F_3,F_2,16			; F_3, F_2
; ------------------------------------------------------ Compas 49
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
; ------------------------------------------------------ Compas 50
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
; ------------------------------------------------------ Compas 51
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
; ------------------------------------------------------ Compas 52
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
; ------------------------------------------------------ Compas 53
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
			fcb	  0,E_2,16			;    , E_2
			fcb	  0,F_2,16			;    , F_2
; ------------------------------------------------------ Compas 54
			fcb	  0,E_2,128			;    , E_2
; ------------------------------------------------------------------------------------
finPart	fcb	$ff,$00						; valor indicativo de final de partitura
; ------------------------------------------------------------------------------------
			end 	initPgm
; ------------------------------------------------------------------------------------
