Copy Link
Add to Bookmark
Report

HBO Magazine Issue 05

eZine's profile picture
Published in 
HBO Magazine
 · 6 Feb 2021

  


------------------------------------------------------------------------------

H B O M a g a z i n e

------------------------------------------------------------------------------

Hacked by Owls Magazine, Volumen 1 - Numero 5.
X de Febrero de 1995 - X de Abril de 1996


Indice
======

Editorial...............................................0x01050000
CONCURSO: "Hello World".................................0x01050001
Telefonia Publica.......................................0x01050002
1. Conceptos <-------- by all of us
1.5 Se#alizacion <-------- by OPii
2. Tarjetas, fichas, etc <----- by Cut&Paste
3. Dos Modelos a analizar:
3.1 TELECOM <-- Logical Backdoor && Casper
3.1.1 Telefono publico modular de Telecom
3.1.2 Analisis estructural y de componentes
3.1.3 Analisis del codigo del Z80
3.1.4 Analisis del codigo del i8051
3.1.5 Patches, posibilidades...
3.1.6 Conceptos de seguridad fisica
POCSAG <-------- by Pelaca.............................0x01050003
My First Backdoor Toolkit #3............................0x01050004
- NONOSEQUE <------ by [ME]
Conferencias varias ....................................0x01050005
- HOPE 94
- GonzoCon 94
- Summercon 95 <---- by Saltamontes
Nuestra Conferencia 96..................................0x01050006
Readshit................................................0x01050007
- Bull Rocket #1 <---- by Logical backdoor
- Llaneros solitarios...
- Entrevistas
Hacking for Dummies #2 <---- by everybody...............0x01050008
ContactUs...............................................0x01050009
Agradecimientos y fuckyous..............................0x0105000A
Disclaimer..............................................0x0105000B

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


PGP


-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


HBO Staff>
- Janx Spirit
- Logical Backdoor
- OPii
- Saltamontes

Colaboradores del numero 5>
- [ME]
- Casper
- Pelaca


0x01050000 - Editorial
======================

Evidentemente hay una nota fuerte en esta revista, y es la de Telefonia
Publica... esta claro que la mayoria de ustedes se preguntaban muchas de
las cosas que se dicen en esta nota, ahora mi pregunta es: por que no
hicieron algo al respecto? ehh? pero bueno, HBO esta en todo... tirando la
primera punta por lo menos... como veran el codigo no esta analizado
exahustivamente, ni estan solucionados todos los problemas que se plantean
en los patches e ideas... bueno, es sencillamente una tarea muy grande y
somos bastante pocos incluyendo nuestros amigos y colaboradores, asi que a
todos los que laburen en estos u otros temas les proponemos mantenernos en
contacto, y HBOMAG junto con los bbs por los que rondamos son buenas
maneras de hacerlo... este es un tema bastante apasionante y se por oidas
que mucha gente prueba y encuentra boludeces al respecto...

Seguimos con algunas columnas que se estan haciendo habituales, y ya
empezamos a mandar nueva fruta como podran ver...

XXXXXXXXXXXXXXXXXXXXXX CENSORED XXXXXXXXXXXXXXXXXXXXXXXX

Amigos, amigas, hackerwannabees de todo el mundo, seguimos con la secuela de
Hacking for Dummies que se que les gusto mucho... bahh, no es nada... siguen las
anecdotas y demas.

Y como siempre estamos intentando satisfacer a nuestro querido publico,
volvemos con otro nuevo concurso, que no va a ser nada tan "complicado"
como un killme.c, sino algo tan sencillo como un "Hello World".
Interesados? Bueno, no importa, igualmente esta el articulo para que lo
lean y ganen fabulosos premios.

Y mas MFBT parte 3, READSHIT como siempre...
Entrevistamos a Fernando Bosembiante y a Raquel Roberti, los responsables
de la primera infamia en lengua castellana publicada sobre hackers.
Nuestra seccion correo es re-inagurada por el heroe de todos los chicos,
el autentico The Chacal. en fin, pasen y venas.

eructen.
HBO


===============================================================================
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
===============================================================================

0x01050001 - CONCURSO: "Hello World\n"
======================================

Buenas noches, ladies and gentlemans, bon soire - sean bienvenidos a la
segunda entrega del concurso mas sexy, mas alto y mas tonto del mundo...
uhhggg?? ahhhh! apaguen la radio... apaguen al tipo ese con cara de
hippie... arhghghghg

No recibimos tu wav charlando con diego? hmmm too bad, te quedaste con
ganas de la pizza, o de las remeras HBO??
El segundo concurso de HBO, donde podes demostrarle al mundo entero tus
capacidades de fingerwalking... bah.
printf("%s",titulo);
Eso es todo lo que hay que hacer. Por supuesto que esto tiene un
pequenio catch. (obviando que tiene que tener main() y todas esas cosas
para que funcione) El programa sera evaluado segun la cantidad, calidad y
variedad de warnings que produzca.
Las reglas son las siguientes:
1- Lo unico que tiene que hacer el programa es poner "Hello World" (mas
\n, explicacion aparte para que ningun boludo se crea que es una trampa)
Lo que hagan para llegar a eso no imorta, pero con un limite de 15
";" .
2- Sera compilado con gcc y todos los warnings del compilador seran
prendidos. La maquina va a ser un linux 1.3.x (la version
del gcc sera aquella que venga con la correspondiente distribucion)
3- Que funcione.

Bueno, es simple, rapido y puede ser divertido. Habra menciones
especiales a todos aquellos capaces de hacer algo interesante. Los premios?
Bueno:
Primer premio: Entrada a MendozaConch + Noche de trashing por la ciudad
guiada por el maravilloso staff de esta revista tan
increible.
Segundo premio: Entrada a MendozaConch + Remera HBO (modelos en HMAG #4)
Premio Consuelo: Salida a MendozaConch + Remera 'I Suck'

Nota: Siendo el concurso tan interesante se les permite participar a los
miembros del staff y amigos y familiares, siendo los premios en este
caso respectivamente una manteada y un puente chino, y pasando los
premios anteriores a los primeros 3 no HomeFriends Ok?.(No quiero
ensuciarme de vuelta con mis amigos y que para colmo me lo hagan de
favor)

El primer premio se publicara en la HBOMAG #6

Manden los programas a Satanic Brain BBS (383-7480), lean contact-us
o publiquenlos en el diario, por mi es igual...


===============================================================================
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
===============================================================================

0x01050002 - Telefonia Publica
==============================

1. Conceptos
Aja, entre sacar el titulo de conceptos y reacomodar el indice, prefiero
escribir conceptos, ya que para eso no tengo que pensar. me decia a mi mismo.
entonces por lo tanto a implica b y yo les cuento que esto es una nota de
Telefonia publica, y bastante agradable. La verdad, estoy orgulloso de
nosotros mismos por haber logrado esto y etc etc etc.
Supongo que ustedes se toparon alguna vez con un telefono por ahi no?
bueh, y desde bell en adelante naides se pudo hacer el pelotudo pero nosotros
no. bah.
No creo en lo personal, que tenga mucho que agregar aca, solo hacer mas
larga la espera, asi que un lector interesado en la raw meat puede pasar
directamente al punto siguiente.
De paso, no viene al caso pero una vez me cole en una reunion de la asi
llamada 2600 argentina, y algun pelotudo me dijo noseque sobre el prehacking
de aca y el prejaquin de alla, y yo pienso: si se escribe phreaking y
viene de phone y de freak, se pronuncia fric, pero bahh. punto aparte
-- [OP] Interrumpo esta interesantisima disgregacion de nuestro amigo el
psicopata LBD para recordarle que esto es un puto articulo sobre telefonia
y que si quiere psicoanalisis que consulte a algun psicolo de eso que
pululan por bsas.
-- [LBD] nos parece que confundis esquizofrenia con psicopatia. pero bah
nadie nos entiende.
-- [SM] LBD, no queres ir a tomar aire un rato...?
-- [OP] SAltamontes, si queres ser mi amigo aprende a escribir en un
teclado en espanis gilun. Que LBD sea psicopate no quita que pueda ser
esquizofrenico tambien ( ver teoria de como matar esta bien).
-- [LBD1] alguno de mis yos talvez. [LBD2] quien yo?
-- [SM] ...y a proposito de monitores subaquaticos, por que no terminas con tu
disgregacion, y seguis deleitandonos con tus patologias que divertiran en
demasia a tu padre...
-- [LBDi, i=1 to n] esto se empieza a parecer demasiado a mis terapias de
grupo.
En fin, las siguientes son una serie de notas sobre telefonia, en este
numero empezamos con senializacion y con telefonos publicos de TELECOM,
en numero siguientes seguiremos con senializacion y veremos los
mamotretos de Telefonica.
Y algunas cosas mas...

y terminaremos todos en cana.


1.5 Sistemas de senializacion en la Argentina. PARTE I
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
por OPii.
Introduccion
~~~~~~~~~~~~

Bueno, este articulo describe el sistema de senializacion que se usa en
la Argentina. Supongo que saben que es la senializacion telefonica
ya que todos hicieron alguna vez bluebox y espero que lo hayan hecho sabiendo
que carajo estaban haciendo, no como en el libro ese trucho de Bostandante
que aparecen los chabones diciendo "..y manda el tonito ese piru-piru y despues
mandas 1 que es la maxima prioridad del satelite y despues el numero de
telefono... ", etc,etc. *NO* . La idea es entender que mierda pasa, no
apretar teclas como un gil, para eso dedicate a data entry que encima
te pagan.
Aclaracion: El articulo se divide en 2 partes, ya que soy muy pajero
y si esperaramos a que todos terminen sus articulos para publicar cada
numero de la revista no tomaria 3 o 4 anios publicarlo, en lugar de 2
como sucede normalmente. La primera parte es mas que nada introductoria,
la segunda tiene informacion mas interesante...

BAH! Igual en caso de que no sepan de que diablos estoy hablando va una breve
explicacion.

A fin de que la cosa sea clara voy a hacer un esquema de la red telefonica
de HBO, LatexTEL. Esta red tiene muchos abonados, incluso ni ellos
mismos saben que son abonados, pero para el ejemplo basta con dos abonados:

B
_________ ________ _________ _________ /
| | | | | | | | /
| CO | ===========| C1 |********| C2 |=======| CD |/
| | | | | | | |
--------- -------- --------- ---------
/ * *
/ * ---------- *
/ * | | *
A *****| C3 |*******************
| |
----------

"A" es El Chachal, que quiere llamar a su Noviecita Menor de Edad,
cuyo nombre no conozco asi que llamemosla "B" [o NMdE].
"CO" es la Central de Origen, la central a la que A [EC] tiene
tiene "conectado su telefono" [para hacer esto mas corto supongamos
que esto es asi, que no hay ninguna caja en el medio, ni multipares
ni filtros de linea ni multiplexers, etc, etc. EC tiene un cable
de 2 hilos que va de su choza a CO, lo mismo para NMdE, la novia menor
de edad del chacal, que esta conectada a CD].
"CD" es la Central de Destino.
Ci (i = 1..3) son centrales intermedias que pueden o no tener abonados
conectados a ellas, las llamamos centrales de transito, tandem o cualquier
otro termino apropiado que se les ocurra, por ejemplo centrales de
garcha, que me parece bastante apropiado para las Pentaconta.
Las lineas dibujadas con "*" y "=" son troncales entre centrales
, de distintas capaciades, cada troncal puede transportar las
seniales de varias comunicaciones [correspondientes a varias lineas
de abonados] utilizando tecnicas que esta demas describir aca.
[ multiplexion por division de tiempo, de frecuencia, etc, etc].

A quiere llamar a B, para invitarla a salir a dar vueltas en roller
por la autopista. Para eso tiene que descolgar su telefono y marcar
el numero de B, el telefono de B suena y B descuelga y escucha a
A... "Hola mi vida, tesorito, queres salir en roller conmigo?"
"Si, si, vamos a la autopista asi nos pisan...", etc, etc.

AHORA BIEN, COMO SE COMUNICO A CON B? Por arte de magia???
Para que sirven los numeros de telefono?
Que gusto tiene la sal??

El objetivo de la senializacion es permitir que las centrales [switches]
intercambien la informacion necesaria para establecer y "liberar" una
comunicacion, o para supervisar y modificar el funcionamiento general de
la red [ de aca en mas cuando pongo red me refiero al la red publica conmutada,
que es como les gusta decirle a los tipos de telefonica/telecom, o tambien
RPC o PSN iniglish o PSTN o algun otro termino que se me ocurra en el momento
es decir, la red de telefonos/centrales/equipos-asociados ok??? mas claro
tomate un whisky].

Entonces, hm en que ... ahh, las funciones de la senializacion son:

Supervision.
E'cir detectar la modificacion del estado de algun elemento
de la RPC. Por ejemplo, detectar cuando algun abonado descuelga,
o cuando se libera un circuito, etc.

Direccionamiento.
Se refiere al intercambio de la informacion ne'saria para el establecimiento
de una llamada, por ejemplo mandar y/o recibir el numero del abonado
llamado, el numero del abonado llamante, el tipo de abonado, seniales
para retransmitir informacion que no se recibio a tiempo,etc.

Explotacion
Son seniales que permiten la optimizacion del uso de los recursos de la
red [blah, optimizacion las bolas, en fin.. mas adelante veremos],
o realizar tareas de gestion y contabilidad. Por ejemplo las seniales
de tasacion [o "tarificacion" como les gusta decir a los gallegos de
Teleforrisca], etc.

Sistemas de senializacion
~~~~~~~~~~~~~~~~~~~~~~~~~
Existen 2 sistemas de senializacion:

1). Senializacion por canal asociado.
En este caso, todas las seniales se mandan por un canal asociado
a la llamada, puede ser el mismo o no, lo importante es que
cada llamada tiene un canal que se usa para mandar y recibir la
informacion de senializacion de esa llamada.
2). Senializacion por canal comun.
Aca hay un canal por el cual se envia y recibe la informacion
de varias llamadas, informacion sobre el estado de la red y sus
diversos circuitos, switches, etc.
El sistema mas conocido es el CCIS (Common Channel Interoffice
Signalling) desarrollado por AT&T y que dio origen al CCITT #7 o
SS#7 o sistema 7 como prefieran llamarlo.
Estamos hablando de un enlace digital por el cual se mandan
paquetes con la informacion, cada paquete tiene una "etiqueta"
que indica de que tipo es y a que circuito pertenece.

Bueno, en este articulo nos dedicamos exclusivamente a la senializacion
por canal asociado.


Tipos de senializacion
~~~~~~~~~~~~~~~~~~~~~~

Hay dos (2) tipos de senializacion: Senializacion de linea y
senializacion de registro.

SENIALIZACION DE LINEA. La senializacion de linea sirve [obviamente]
para controlar el estado de los circuitos y supervisarlo antes, durante
y despues de la comunicacion [toma de linea (seize), liberacion forzada
hacia adelante (clear fwd), hacia atras, etc.].
Aca viene al caso aclarar que cuando hacen BB los 2 primeros tonos
que mandan corresponden a este tipo de senializacion, estan mandando
un clear fwd para liberar la linea que estan usando seguido de un
seize (toma) para tomar la linea nuevamente...
Pueden usarse distinto metodos de transmision para este tipo de
senializacion:
- Corriente continua (generalmente entre viejas centrales
electromecanicas)
- Dentro de banda ( en la Argentina no se usa, por lo menos no
en los circuitos de la Argentina, llamar a un "pais directo" ya es
otra cosa... )
- Fuera de banda ( e'cir fuera del rango de voz que puede
emitir el abonado )
- MIC

SENIALIZACION DE REGISTRO. Seniales que se transmiten entre registros
de las centrales para identificar el numero al que se llama, numero
del que llama, categoria del abonado, estado de la linea, troncales de
salida, etc.
Puede realizarse por medio de los siguientes metodos:
- Impulsos decadicos (corriente continua o fuera de banda), o sea
el famoso "uhg discar por pulso", mismo que TAMBIEN hace la central
al comunicarse con otra central (once again estamos hablando
de centrales garcha de cuando mi abuelo todavia tenia pelo). Un
ejemplo de esto es verificable si llaman a La Plata, aunque Uds.
tenga discado por tono, discan y van a escuchar, una vez que terminaron
de discar, los pulsos que manda alguna central a la de alla.
[ En realidad no se si sigue siendo asi ya que cambiaron muchas centrales
por la zona sur ultimamente, blah igual es una ejemplo, prueben y vean]
- Multifrecuencia. Le seniales se obtiene combiando varias frecuencias (2)
dentro de banda.

Hay 2 formas de hacer la senializacion:

1. Tramo a tramo.
En este caso las seniales se transmiten desde CO a C1, que
la procesa y la retransmite (toda o parte de ella) a C2 o
C3 que a su vez hacen lo mismo y la transmiten a CD.
CD finalmente establece la comunicacion, con lo cual se crea un
camino virtual de voz entre EC y su NMdE (A y B).

2. Extremo a extremo.
Aca CO transmite a cada central solo la informacion necesaria
para el establecimiento de la conexion con la central siguiente,
el control de la conexion entre CO y CD lo mantiene CO.

La senializacion de linea es tramo a tramo, la de registro puede
ser tramo a tramo [TaT] o extremo a extremo [EaE].

Senializacion Abonado-Central
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Esta completamente demas explicar que es la informacion que se
intercambian el telefono del abonado con la central correspondiente,
EC (A) con CO y NMdE (B) con CD.
Algunas seniales de interes son:
A colgado: El circuito de A esta abierto, imp. >= 100 KOhm
A descolgado: Circuito cerrado, imp. <= 600 Ohm
Discado:
-Por pulso, entre 8 y 16 pulsos por segundo, que cierran y abren el
circuito, con una relacion 1/3 cerrado y 2/3 abierto. Tolerancia
de +/- 10%.
-Por tono, de acuerdo a la recomendacion Q.23 de ITU (CCITT).
El conocido DTMF, en el que hay 16 seniales, 10 para los digitos
y 6 de reserva, cada senial se compone de 2 frecuencias, tomadas
de 2 grupos de 4 frecuencias cada uno.

Hz. 1209 1336 1477 1633
|-----|-----|-----|-----|
| | | | | Cada frecuencia tiene una
697 | 1 | 2 | 3 | A | tolerancia de +- 1,8% de la frecuencia
| | | | | indicada.
|-----|-----|-----|-----|
| | | | |
770 | 4 | 5 | 6 | B | El nivel de ruido debe ser como minimo
| | | | | 20dB menos que el de las frecuencias.
|-----|-----|-----|-----|
| | | | |
852 | 7 | 8 | 9 | C |
| | | | |
|-----|-----|-----|-----|
| | | | |
941 | * | 0 | # | D |
| | | | |
|-----|-----|-----|-----|


-Tono de invitacion a discar. Es el tono que se escucha cuando
uno desculea el telefono. Tono cuntinuado de frecuencia unica de 425Hz.
-Tono de retorno de llamada. Tono que manda CD a A para indicar
que B esta libre y esta dandole aviso de que A llama, el ring,ring
que uno escucha cuando llama a alguien. Aca hay multiples variaciones
y basicamente los distintos tonos de este tipo nos pueden dar una
idea de con que tipo de central/pbx nos estamos comunicando. Las
especificaciones son:
Frecuencia de 425Hz. Se transmite entre 0,67 y 1,5 segundos
seguido de 3 a 5 segundos de silencio. Segun las normas de
Telescum y Teleforrica se establecen los siguientes tiempos
como "estandares", aunque todos sabemos que esto varia de acuerdo
a las condiciones climaticas, la influencia de la actividad solar
en las antenas de transmision satelital, la polinizacion del
aire, la humedad ambiente y cualquier otra cosa que a uno se le
pueda ocurrir, en la realidad el tono es cualquiera y distinto
en cada central o tipo de central.
Decia, los tiempos definidos como estandares son:
Tono: 1 seg. Silencio: 4 seg.
-Tono de ocupado. La envia CO/Ci/CD a EC (A) cuando la linea de NMdE (B)
esta ocupada porque esta hablando con su amante, o cuando las recepcion
de alguna senial para el discado da timeout.
El ciclo de tono-silencio completo debe durar enetre 300 y 1000ms.
La relacion T/S debe estar entre 0,67 y 1,5. La frecuencia es la
misma, 425Hz.
En la practica Telescum y Teleforrisca usan T=300ms y S=200ms.
-Tono de congestion. La envia CO/Ci/CD a EC cuando la llamada a NMdE
no puede completarse o cuando:
Alguna de las centrales del camino recibe una senial A4 o B4 hacia atras
[ mas adelante vemos que son estas seniales].
Hay congestion o falla en alguno de los circuitos de la central.
Frec. 425Hz. T=300ms. S=400ms.
-Tono de indicacion de servicio suplementario activado.
Este tono lo manda CO a EC cuando activa algun servicio [tipo
Plustel] extra, como por ejemplo aprete FLASH y recibe este tono y
despues tono de discar [ EC quiere llamar a F.BostaGrande para hacer
una conferencia con NMdE y el y convencerlo de que use rollers y vaya
a la autopista con ellos].
En realidad jamas escuche este tono, excepto cuando llamo desde un interno
de un PBX, pero nunca desde la RPC. Si alguien escucho este tono
aviseme ...
Frec. = 425Hz. T=1s S=0,25s
-Tono de indicacion de llamada en espera.
Tonito que escucha EC mientras esta hablando con NMdE cuando
FBG lo llama para decirle que no tiene rollers y no puede salir
porque tiene que salir a tomar algo con Fabian Garcia (FG).
Frec.=425Hz. T=0,3s S=10s
-Tono de indicacion de spera/entretenimiento.
Esto es lo que escucha NMdE mientras EC hace flash y disca el
telefono de FG para decirle que no salga mas con FBG porque
el lo engania con otra, err, digo otro.
[ No se que mierda tiene de entretenimiento, en realidad es
completamente aburrido escuchar esta mierda mientras el otro
disca para entrar en conferencia o toma una llamada en espera]
Frec.=425Hz. T=0,4s S1=0,2s S2=4s. La senial se forma asi: T-S1-T-S2-T-S1...
-Tono de indicacion de fin de servicio tripartito [ BULLSHIT!@#$]
Este tono lo envia CO a todos los abonados que estan en conferencia
cuando esta termina. [Jamas lo escuche, si alguien lo hizo aviseme]
Frec.=950/1400/1800Hz. T=3x0,33s
-Tono de aviso.
Se envia a EC y NMdE para indicarles la proxima intervencion de la
operadora, o sea es lo que esuchan antes de que entre la operadora
en la linea y les diga que corten porque a EC lo llama alguien
de Alemania que quiere hablar sobre el mitico Altos.
Frec.=1400Hz. +-50Hz. T=100ms S=1900ms
-Tono de indicacion de procedimiento anormal.
Es el tono que se escucha cuando NMdE corta y EC deja el telefono
descolgado durante mucho tiempo. Se mandan 2 tonos alternados
de la misma o distinta frecuencia, mayor o igual que 900Hz.
a un nivel de potencia mayor que 3dBm0
-Impulso de computo.
Tono que se envia al abonado llamante (si es un TP o tiene medidor
en su extremo) para que compute el costo de la llamada...
Frec.=16Khz y entre 120 y 180 ms. de duracion, algunos TPs reciben
un tono de 50Hz. +/- 10% de 150ms +/- 5%.

Senializacion entre Centrales
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Bueno, esta es la parte mas interesante de la senializacion, para
la senializacion entre centrales hay 2 tipos de seniales,
seniales hacia adelante y hacia atras. La seniales hacia adelante
van desde CO o alguna central de transito hacia CD o alguna central
de transito que le sigue en su camino hacia CD.
Igualmente, las seniales hacia atras van hacia CO o alguna central
de transito anterior a la central que las manda.

Seniales hacia adelante.

1. TOMA (seize). Se manda al principio de la llamada para que el circuito
pase de estado de reposo a 'en uso', en C1 provoca que se conecten
al circuito los equipos correspondientes (registros,etc).
Existen 2 seniales de toma, toma corta (la que hace el abonado) y
toma larga (la hace una operadora), la unica diferencia entre ellas
es la duracion. Si bien esto no esta especificado en las normas
de Telefonica y Telecom, la recomendacion Q.79 del CCITT dice que
la senial corta debe tener una duracion de 150ms +/- 20% y la larga
de 600ms +/- 20%.
2. LIBERACION (EC cuelga [de un arbol]).Se transmite para terminar la llamada
o el intento de establecerla, con esta senial se 'liberan' en las
sucesivas centrales de transito y CD todos los equipos asignados
a la llamada. Ademas de interrumpir la conexion, esta senial
finaliza la tasacion. (El famoso clear-forward, ok?)
3. DISCADO DECADICO. En el caso de que entre las centrales no haya
senializacion de registro R2 se envia esta senial. Consiste en
un determinado numero de impulsos para identificar cada digito y una
pausa entre digito y digito. Para senializacion LOOP ya dijimos que
se usa una cadencia de entre 8 y 16 pulsos por segundo, para senializacion
E y M el tiempo de iduracion de los impulsos es de 50ms +/- 20%.
Para la pausa entre digitos hay un tiempo minicom de 600ms. y maximo
de 15s.

Seniales hacia atras.

1. RESPUESTA ( NMdE descuelga o CONTESTACION). Transmitida por CD para indicar
que NMdE levanto el tubo (uhuh), inicia la tarifacion (se considera como
el primer impulso de computo).
2. COLGAR (NMdE cuelga o LIBERACION FORZADA). Tranmitida por CD para indicar
que NMdE colgo y se fue a ponerse los rollers para salir a la autopista.
Cuando se recibe esta senial se realizan 2 cosas de acuerdo a si el
tramo del circuito por donde se recibe es con computo o sin computo.
Si es con computo se interpreta como una senial de LIBERACION FORZADA
y se manda la senial hacia adelante LIBERACION.
Si es sin computo CO o la Ci (para el i apropiado), hace un ...
digamos un alarm(60) [si no saben C de unix lo lamento] y manda hacia
adelante (despues de los 60s y si EC todavia no colgo) la senial de
LIBERACION, mandando tono de ocupado a EC. Esto es lo que permite que
si A llama a B y despues de hablar, B corta pero A no lo hace, B
puede levantar el tubo y todavia esta A ahi, jerking off. Pero lo
bueno dura poco, y en este caso son solo 60s. Sin embargo, en las
antiguas centrales SxS (pasoapasoqueledicen) uno podia llamar a X y
dejar descolgado, bloqueandole efectivamente el telefono al boludo
de X, que seguramente se lo merecia... bah en fin, continuemos....
3. BLOQUEO. Transmitida por algun circuito libre hacia CO para provocar
que ese circuito se bloquee e impedir que sea tomado, es la responsable
del ritmo-de-samba que se experimenta, antes de establecer la comunicacion,
en algunas centrales cuando uno llama... p.e. la zona de Belgrano (bah, no
se si todavia sigue pasando).
4. REPOSO o CONTROL DE LIBERACION. Transmitida hacia CO en respuesta a una
de LIBERACION (EC cuelga) para indicar que esta ultima senial efectivamente
puso los equipos de conmutacion en estado de reposo en CD (o Ci, para el i
correspondiente). El circuito esta protegido contra cualquier nueva
toma hasta que en CO se realicen las operaciones de desconexion de sus
equipos de conmutacion.
5. SEGURIDAD DE LIBERACION. Esta senial se transmite hacia CO despues de
haberse recibido una senial de liberacion, con el fin de confirmarla,
se sigue una secuencia obligada para este tipo de 'negociacion'. En
definitiva es una especie de ACK que ademas sirve para verificar fallas
en los canales de onda portadora (se usa en senializacion de E Y M) y
bloquearlos si corresponde.
6. COMPUTO. Senial aplicada por el centro de tasacion para hacer que EC
pague por llamar a NMdE. Si considera como primera senial de computo
a le senial de RESPUESTA, a partir de ese momento el centro de tasacion,
alguna de las centrales 'en camino'a CD, manda seniales de COMPUTO a
intervalos regulares (el famoso *pulso* tictic).
7. ACUSE DE RECIBO DE TOMA. Se transmite hacia CO indicando que una canal
a sido tomado (con seize) y esta en estado de 'en uso'. Cuando CO
recibe esta senial se completa la parte de senializacion de linea,
y se puede comenzar la senializacion de registro que es la identificacion
del DN a llamar y del DN llamante.

Ok, existen 2 formas de senializacion de acuerdo a las caracteristicas
del trunk sobre el que se senializa, analogico o digital.
Para ambos casos hablaremos de senializacion con computo.

Version analogica [B.P.O].
~~~~~~~~~~~~~~~~~
Funciona con inversion de la polaridad en los hilos de la linea,
p1,polaridad normal: -48v en hilo a, tierra hilo b.
p2,polaridad inversa: tierra en (a), -48v en (b).
alta resistencia: >= 12 KOhm
baja resistencia: <= 6.6 KOhm

En REPOSO (idle, bah) hay alta resistencia en el trunk, para la
toma CO cierra el circuito y baja la resistencia, Ci/CD reconoce p1.
Para el discado CO cierra y abre el circuito alternativamente, mas o
menos entre 8-16 impulsos por segundo ( discado decadico osea), Ci
debe reconocer p1/p2 en esta parte.
Cuando se libera el canal, se abre el circuito nuevamente.
Es importante poder distinguir una inversion de polaridad (p1 <-> p2) de
una completa falta de tension en la linea, lo ultimo indica BLOQUEO.

Bue, esto no es demasiado interesante ya que teoricamente no quedan
trunks analogicos en el AMBA y el resto de la areas urbanas de Argentina,
y quedan muy pocas centrales analogicas...


Version digital [L.M.E]
~~~~~~~~~~~~~~~

En un canal digital, linea E1 de 64kbs hay 32 canales, multiplexados
por division de tiempo (TDM), de ellos se toman 30 canales para comunicacion
telefonica, sampleando a 8khz y usando PCM de 8 bits.
Existe por lo tanto un intervalo de tiempo (timeslot) que corresponde a
cada canal del E1. Se denomina una *trama* al conjunto de intervalos
de tiempo (timeslots) consecutivos desde el timeslot de un canal al siguiente
timeslot del mismo canal.
Los ts de 1-15 y 17-31 corresponden a los 30 canales telefonicos
En el ts0 se transmite la senial de alineacion de trama, una vez cada
dos tramas, alternada con una senial sin informacion de alineacion. Esto
se usa para que cada extremo pueda mantener la sincronia y no perder
informacion ni mezclar timeslots que corresponden a distintos canales,
esto si seria interesante!@#$.
Ok, la senial de alineacion de trama es algo asi como:

bit #
0 1 2 3 4 5 6 7
---------------
valor x 0 0 1 1 0 1 1

x: Reservado uso internacional, por ahora x=1

El ts0 *SIN* alineacion de trama es:

bit #
0 1 2 3 4 5 6 7
---------------
valor x 1 y z z z z z

x: Reservado uso internacional, por ahora x=1
y: Indicacion de alarma para el extremo distante, en caso de falla
en el multiplexor.
z: Reservado uso nacional, por ahora z=1

El ts16 se usa para senializacion, cuando se emplea senializacion por
canal asociado (caso de argentina) 16 tramas consecutivas forman una
multitrama.

En el ts16 se asignan los bits de cada trama de la siguiente manera:

ts16-trama0: 00001y11
y: Utilizado para perdida de alineacion en multitrama.
ts16-trama1 : abcd abcd
canal1 canal16
ts16-trama2 : abcd abcd
canal2 canal17
ts16-trama15: abcd abcd
canal15 canal30

Bits de senializacion
~~~~~~~~~~~~~~~~~~~~~
Hay 8 bits para la senializacion por cada circuito telefonico, 4 hacia
adelante y 4 hacia atras, los llamaremos Af Bf Cf Df y Ab Bb Cb Db por
f de forward y b de backward.
En la senializacion R2 digital se utilizan solo 2 bits en cada sentido,
Af y Bf y Ab y Bb.
Af indica el estado de CO osea si EC [recordemos, nuestro amiguito
El Chacal] tiene su telefono colgado o descolgado.
Ab indica el estado de Ci o CD , colgado o descolgado.
Bf y Bb indican el estado del circuito desde CO y CD respectivamente,
puede ser en reposo (idle) o en ocupacion (erhmm seized).
Los bits C y D toman valores fijos: Cf == Cb == 0; Df == Db == 1;

Inicialmente un canal esta en idle ( af=1;bf=0;ab=1;bb=0), esto lo
podemos representar, visto desde CO, como:

Tx Rx Tx Rx
----- o si incluimos los bits C y D : ---------
10 10 1001 1001

CO quiere tomar un canal, entonces vemos:

00 10

Ci recibe la toma y manda un seizure acknogledge:

00 11

Aqui CO pasa a senializacion de registro, mandando los digitos del
numero a discar y la identificacion del abonado llamante (si es necesario)
Una vez terminado esto CD hace la conexion y la
noviecitamenordeedaddelchachal levanta el tubo [ del telefono].
Vemos:

00 01

Cuando EC quiere colgar (clear forward) CO pasa el bit Af de 0 a 1.
Cuendo NMdE quiere colgar CD pasa el bit Ab de 0 a 1. En conclusion:

EC le cuelga a NMdE cuando terminan de hablar:

00 01 -> 10 01 -> 10 11 -> 10 10 y el canal esta otra vez en idle.

NMdE le cuelga a EC:

00 01 -> 00 00 -> 10 00 -> 10 10 y el canal esta idle.

La condicion de canal bloqueado se reconoce por el estado 11 hacia
adelante o hacia atras. Por ejemplo, si CD esta bloqueando el canal
CO ve:

Rx Tx
------- [ CO transmite idle pero CD transmite bloqueo ]
10 11

Cuando las dos centrales estan bloqueando el canal tenemos:

Rx Tx
--------
11 11


Bueno, es bastante sencillo creo, fijense que cuando hay un cambio
de estado SOLO se modifica UN bit, con lo cual es facil detectar
fallas y equipo que esta funcionando fuera de la norma.
Como un codigo de hrmm hmm Grey?


En la segunda parte del articulo vemos mas en detalle esto, pasamos a
la etapa de senializacion de registro y pongo algunos ejemplos de
senializacion entre centrales de distinto tipo en Argentina.

Es mas, este articulo deberia ser una sola parte, pero es el momento
de que me dedique a cosas menos productivas.

Ver ContacUs si quieren mandar feedback,comentarios,etc.


2. Tarjetas fichas, etc
by Cut&Paste

Lo siguiente es un cut&paste de otra gente, incluido por un motivo de
completitud. y para que no tengan que aprender a manejar los multiples files
en su editor de cabecera.


===============================================================================
What you need to know about electronics telecards
quien hizo esto? fuck, alguien deberia acordarse...
===============================================================================

Content
---------

I ) The cards from Gemplus, Solaic, Schlumberger, Oberthur:

I-1) Introduction:
I-2) SCHEMATICS of the chip:
I-3) PINOUT of the connector:
I-4) Main features:
I-5) TIME DIAGRAMS:
I-6) Memory MAP of cards from France and Monaco:
I-5) Memory MAP of cards from other countries:

II ) The cards from ODS: (German cards)

II-1) Introduction:
II-2) Pinout:
II-3) Main features:
II-4) Time Diagrams:
II-5) Memory Map:
II-6) Electrical features:


III) Schematics of Readers:

III-1) Reader 1:
III-2) Reader 2:

IV) The program:

-------------------------------------------------------------------------------

I ) The cards from Gemplus, Solaic, Schlumberger, Oberthur: (French cards)
======================================================================

I-1) Introduction:
------------

Since the middle of 80's have appeared a new generation of cards ( the
smart-cards or chip cards ) that have replaced most of the magnetics cards
applications notably for telecom payement and also for credit cards. These
cards are far more secure than the magnetics cards, and there are several kind
of cards following the application. The simplier ones are the Simple Memory
cards like the one used as Telecard for the telecom payement in the public
phone-booths ( Generaly all the memory content is readable, and there is a
maker-area that is unwritable ) , then there are more sofisticated cards:
Memeory Cards with some area read protected by a key, these cards can contain
some private informations in the read-protected area. At the end there are
microprocessor-cards (cards working following the ISO-7816 protocol), that are
the safiest ones since these cards have their own internal Operating System
that prevent I/O if the Pin code has not been entered in the cards before
( These cards are used when confidentiality is needed, like in bank cards,
crypted TV access cards, health cards, etc ... ).


About telecards, even if these cards are the less safe ones, don't think
that you are going to phone freely for that, in fact no. All the data are
readable since there are no confidential data inside, the the cards are well
done enough to be very secure for the payement of telecom communications in
public booth.

So, what is a phonecard exactly ? In fact generaly it's a 256 bits EPROM
( French likde cards ), or a 128 bits EEPROM (German like cards) with a serial
output and some other control pins.

Then why can it not be refilled ? Well, indeed to refill the card you
will have to erase the cards with UV, knowing that the cards is coated in UV
opaqued resin that prevent UV from reaching the silicium chip, and even if you
could to erase the chip you will have to program the manufactuer area that is
write-protected by a lock-out fuse that was fused after the card programming in
factory.

Neithertheless it can be very interesting to study how these cards work,
to see which kind of data are inside and how the data are maped inside or to
see how many units are left inside for exemple. Besides there are a great
number of applications of these cards when there are used (only for personal
use of course) , since you can use them as key to open a door, or you can also
use them as key to secure a program, etc ....

French Telecards have been created in 1984 and at this time constructors
decided to build these cards in NMOS technology but now, they plan to change by
1994 all readers in the public booths and use CMOS technology. Also they plan
to use EEPROM to secure the cards and to add many usefull infornations in, and
you will perhaps use phone cards to buy you bread or any thing else.

These cards are called Second Generation Telecards.


I-2) SCHEMATICS of the chip:
----------------------

.-------------------.
| |
--|> Clk |
| _ |
--| R/W |
| |
--| Reset |
| |
--| Fuse |
| |
--| Vpp |
| |
| |
'-. .-'
| |
.-------------------.
| Out |-- serial output
'-------------------'


I-3) PINOUT of the connector:
-------------------------


AFNOR CHIP ISO CHIP
---------- --------

-------------+------------- -------------+-------------
| 8 | 4 | | 1 | 5 |
| | | | | |
+-------\ | /-------+ +-------\ | /-------+
| 7 +----+----+ 3 | | 2 +----+ + 6 |
| | | | | | | |
+--------| |--------+ +--------| |--------+
| 6 | | 2 | | 3 | | 7 |
| + +----+ | | +----+----+ |
+-------/ | \-------+ +-------/ | \-------+
| 5 | 1 | | 4 | 8 |
| | | | | |
-------------+------------- -------------+-------------

NB: only the position of the chip is ISO
standardized and not the pinout

PINOUT: 1 : Vcc = 5V 5 : Gnd
------ 2 : R/W 6 : Vpp = 21V
3 : Clock 7 : I/O
4 : Reset 8 : Fuse

I-4) Main features:
---------------

- Synchronous protocol.
- N-MOS technology.
- 256x1 bit organisation.
- 96 written protected by a lock-out fuse.
- Low power 85mW in read mode.
- 21 V programming voltage.
- Access time: 500ns
- Operating range: -100C +700C
- Ten year data rentention.


I-5) TIME DIAGRAMS:
---------------

+21V _____________
+5V ____________________________________| |_________________ Vpp
: :
+5V ___________________:_____________:_________________ Reset
0V ________________| : :
: : :
+5V ____ : ____ : ______:______
0V ___| |_______:_____| |________:______| : |__________ Clock
: : : : : : : : :
+5V : : : : : :______:______: : _
0V ___:____:_______:_____:____:________| : |______:__________ R/W
: : : : : : : : :
+5V : : :_____: :________: : : :__________
0V XXXXXXXXXXXXXXXXX_____XXXXXX________XXXXXXXXXXXXXXXXXXXXXX__________ Out
: : : : : :<-----><---->: :
: : : : : :10 to 10 to :
: : : : : :50 ms 50ms :
Reset Bit 1 Bit2 Bit 3
card reading reading Bit2 writing to 1 reading



I-6) MEMORY MAP of cards from France and Monaco:
--------------------------------------------

Bytes Bits Binary Hexa

+-----------+-----+
1 1 --> 8 | | | ---> Builder code.
+-----------+-----+
2 9 --> 16 | 0000 0011 | $03 | ---> a french telecard
+-----------+-----+
3 17 --> 24 | | |
+-----------+-----+
4 25 --> 32 | | |
+-----------+-----+
5 33 --> 40 | | |
+-----------+-----+
6 41 --> 48 | | |
+-----------+-----+
7 49 --> 56 | | |
+-----------+-----+
8 57 --> 64 | | |
+-----------+-----+
9 65 --> 72 | | |
+-----------+-----+
10 73 --> 80 | | |
+-----------+-----+
11 81 --> 88 | | |
+-----------+-----+
12 33 --> 40 | 0001 0011 | $13 | ---> 120 units card
| 0000 0110 | $06 | ---> 50 units card
| 0000 0101 | $05 | ---> 40 units card
+-----------+-----+
13-31 97 --> 248 | | | ---> The units area: each time a unit
| | | is used, then a bit is set to "1";
| | | Generaly the first ten units are
| | | fused in factory as test.
| | |
| | |
| | |
+-----------+-----+
32 249 --> 256 | 1111 1111 | $FF | ---> the card is empty
+-----------+-----+



I-7) MEMORY MAP of the other cards:
-------------------------------

Bytes Bits Binary Hexa

+-----------+-----+
1 1 --> 8 | | |
+-----------+-----+
2 9 --> 16 | 1000 0011 | $83 | ---> a telecard
+-----------+-----+-----------+-----+
3-4 17 --> 32 | 1000 0000 | $80 | 0001 0010 | $12 | ---> 10 units card
| | | 0010 0100 | $24 | ---> 22 units card
| | | 0010 0111 | $27 | ---> 25 units card
| | | 0011 0010 | $32 | ---> 30 units card
| | | 0101 0010 | $52 | ---> 50 units card
| | | 0110 0010 | $62 | ---> 60 units card
| | | 1000 0010 | $82 | ---> 80 units card
| 1000 0001 | $81 | 0000 0010 | $02 | ---> 100 untis card
| | | 0010 0010 | $22 | ---> 120 units card
| | | 0101 0010 | $52 | ---> 150 units card
+-----------+-----+-----------+-----+
5 33 --> 40 | | | ---> $00 for sweden.
+-----------+-----+
6 41 --> 48 | | |
+-----------+-----+
7 49 --> 56 | | |
+-----------+-----+
8 57 --> 64 | | |
+-----------+-----+
9 65 --> 72 | | |
+-----------+-----+
10 73 --> 80 | | |
+-----------+-----+
11 81 --> 88 | | | ---> $11 for sweden
+-----------+-----+
12 89 --> 96 | 0001 1110 | $1E | ---> Sweden
| 0010 0010 | $22 | ---> Spain
| 0011 0000 | $30 | ---> Norway
| 0011 0011 | $33 | ---> Andorra
| 0011 1100 | $3C | ---> Ireland
| 0100 0111 | $47 | ---> Portugal
| 0101 0101 | $55 | ---> Czech Republic
| 0101 1111 | $5F | ---> Gabon
| 0110 0101 | $65 | ---> Finland
+-----------+-----+
13-31 97 --> 248 | | | ---> The units area: each time a unit
| | | is used, then a bit is set to "1";
| | |
| | | Generaly the first two units are
| | | fused in factory as test.
| | |
| | |
+-----------+-----+
32 249 --> 256 | 0000 0000 | $00 |
+-----------+-----+



II ) The cards from ODS, Giesecke & Devrient, ORGA Karten systeme,
=============================================================
Uniqua, Gemplus, Schlumberger and Oldenbourg Kartensysteme:
===========================================================

II-1) Introduction:
------------

These cards are in fact 128 bit memory in NMOS technology, and the
map of these cards are the following:

64 bit EPROM written protected (manufaturer area).
40 bit EEPROM (5x8 bits).
24 bits set to "1".


II-2) Pinout:
--------

ISO 7816-2

-------------+-------------
| 1 | 5 | Pinout:
| | | -------
+-------\ | /-------+
| 2 +----+ + 6 | 1 : Vcc = 5V 5 : Gnd
| | | | 2 : Reset 6 : n.c.
+--------| |--------+ 3 : Clock 7 : I/O
| 3 | | 7 | 4 : n.c. 8 : n.c.
| +----+----+ |
+-------/ | \-------+ n.c. : not connected
| 4 | 8 |
| | |
-------------+-------------


II-3) Main features:
---------------

- ISO 7816- 1/2 compatible.
- use a single 5V power supply.
- low power consuption.
- NMOS technology.

II-4) Time Diagrams:
----------------

Reset:
------
The address counter is reset to 0 when the clock line CLK is raised while
the control line R is high. Note that the address counter can not be reset
when it is in the range 0 to 7.

__________________
_____| |_____________________________________________ Reset
: :
: _____ : _____ _____ _____ _____
_____:_______| |____:_| |_____| |_____| |_____| |_ Clk
: : : : : : : : : : :
_____:_______:__________:_:_____:_____:_____:_____:_____:_____:_____:_
_____:___n___|_____0____:_|_____1_____|_____2_____|_____3_____|___4_:_ (Address)
: : : : : :
_____: :_______:___________:___________:___________:_
_____XXXXXXXXXXXXXXXXXXXX_______|___________|___________|___________|_ Data
Bit n Bit 0 Bit 1 Bit2 Bit3

The address counter is incremented by 1 with each rising edge of the clock
signal Clk, for as long as the control line R remains low. The data held in
each addressed bit is output to I/O contact each time Clk falls. It is not
impossible to decrement the address counter, therefore to address an earlier
bit, the address counter must be reset then incremented to require value.


Write:
------
All unwritten or erased bits in the address 64-104 may be unwritten to.
When a memory cell is unwritten to, it is set to 0. The addressed cell is
unwritten to by the following sequence.

1- R is raised while Clk is low, to disable address counter increment for one
clock pulse.

2- Clk is then raised for a minimum of 10ms to write to the address bit.

When to write operation ends, and Clk falls, the address counter is unlocked,
and the content of the written cell, which is now 0, is output to I/O contact
if the operation is correct.
The next Clk pulse will increment the address by one, then the write sequence
can be repeated to write the next bit.

_____ _____
_____________| |______________________________| |_______________ Reset
: :
___ : _____ ___ : _____
____| |____:__________| |_________| |_____:__________| |____ Clk
: : : : : : : : :
____:________:__________:_____:_________:___:_____:__________:_____:_____
n | n+1 | n+2 | : n+3 | :
(Address)
----'--------:----------'-----:---------'---:-----:----------'-----:-----
: : : : : : :
_________ _: : : ____________: ___: : :
_________XXX_XXXXXXXXXXXXXXXXXXX____________ XX___XXXXXXXXXXXXXXXXXXXXXXX I/O
n n+1 : : n+1 n+2 : :
: : : :
write write


WriteCarry:
-----------

A counter is erased by performing the WRITECARRY sequence on the stage of
the next highest weighing to that to be erased.

The writecarry sequence is as follows:

1 - Set the address counter to an unwritten bit in the next highest counter
stage to that to be erased.

2 - Increment is disabled on the following rising edge of R where Clk remains
low.

3 - Clk is then raised for a minimum of 10ms, while R is low, to write to the
next address bit.

4 - R is the raised again while Clk remains low to disable increment a second
time.

5 - Clk is the raised for a minimum of 1ms, while R is low, to write to the
addressed bit a second time, erasing the counter level immediately below that
the addressed bit.

_____ _____
______| |____________________| |_________________________________ Rst
: :
: _______ : _______ ___
______:___________| |______:_____________| |______| |______ Clk
: : : : : : : :
: : : : : : : :
<------------------------- address n ------------------------>:<--- n+1 ------
: : : : : : :
: : : : : : :
______: : :______: : :__________: _____
______XXXXXXXXXXXXXXXXXXXXX______XXXXXXXXXXXXXXXXXXXXXXX__________XX_____ I/O
: : n : : n n+1
: : : :
Write Erase

II-5) Memory Map:
-------------

Bytes Bits Binary Hexa

+-----------+-----+
1 1 --> 8 | | |
+-----------+-----+
2 9 --> 16 | 0010 1111 | $2F | ---> Germany
| 0011 0111 | $37 | ---> Netherland
| 0011 1011 | $3B | ---> Greece
+-----------+-----+
3 17 --> 24 | | |
4 25 --> 32 | | | ---> Issuer area (written protected)
5 33 --> 40 | | |
6 41 --> 48 | | |
7 49 --> 56 | | |
8 57 --> 64 | | |
+-----------+-----+
9 65 --> 72 | | | ---> c4096 )
10 73 --> 80 | | | ---> c512 )
11 81 --> 88 | | | ---> c64 ) 5 stage octal counter
12 89 --> 96 | | | ---> c8 )
13 97 --> 104 | | | ---> c0 )
+-----------+-----+
14 105 --> 112 | 1111 1111 | $FF |
15 113 --> 120 | 1111 1111 | $FF | ---> area of bits set to "1"
16 120 --> 128 | 1111 1111 | $FF |
+-----------+-----+

The Issuer area:
----------------

This issuer consists of 40 bits. The contents of the issuer area are
specified by the card issuer, and are fixed during the manufacturing process.
The contents of the issuer area will include data such as serial numbers,
dates, and distribution centers.

This area may only be read.

The Counter area:
-----------------

The counter area stores the card's units. Its initial value is specified
by the card issuer and set during manufacturing.

The counter area is divided into a 5 stage abacus. The octal value of each
stage is defined by the number of bits set to '1' and this stage value must
be weighted by the coeficient 8^n ( where n is among [4..0] ).

Exemple: For a card with 15818 units (or money units) left.
--------

Byte9 Byte10 Byte11 Byte12 Byte13
--------------------------------------------------------------
00000111 - 00111111 - 01111111 - 00000001 - 00000011
--------------------------------------------------------------
(3)octal (6)octal (7)octal (1)octal (2)octal
--------------------------------------------------------------
Value = 3*8^4 + 6*8^3 + 7*8^2 + 1*8^1 + 2*8^
--------------------------------------------------------------
TOTAL = 15818 Units



Note that you can only decrease the counter and it is not authorised to write
in the counter a value greater than the old value.


I-6) Electrical features:
--------------------

Maximum ratings:
----------------

+--------+------+------+------+
| Symbol | Min | Max | Unit |
+----------------------+--------+------+------+------+
| Supply voltage | Vcc | -0.3 | 6 | V |
+----------------------+--------+------+------+------+
| Input voltage | Vss | -0.3 | 6 | V |
+----------------------+--------+------+------+------+
| Storage temperature | Tstg | -20 | +55 | 0C |
+----------------------+--------+------+------+------+
| Power dissipassion | Pd | - | 50 | mW |
+----------------------+--------+------+------+------+


DC caracteristics:
------------------
+--------+-----+-----+-----+------+
| Symbol | Min.| Typ.| Max.| Unit |
+---------------------------+--------+-----+-----+-----+------+
| Suplly current | Icc | - | - | 5 | mA |
+---------------------------+--------+-----+-----+-----+------+
| Input Voltage (low) | Vl | 0 | - | 0.8 | V |
+---------------------------+--------+-----+-----+-----+------+
| Input voltage (high) | Vh | 3.5 | - | Vcc | V |
+---------------------------+--------+-----+-----+-----+------+
| Input current R | Ih | - | - | 100 | uA |
+---------------------------+--------+-----+-----+-----+------+
| Input current Clk | Il | - | - | 100 | uA |
+---------------------------+--------+-----+-----+-----+------+
| Output current (Vol=0.5V) | Iol | - | - | 10 | uA |
+---------------------------+--------+-----+-----+-----+------+
| Output current (Voh=5V) | Ioh | - | - | 0.5 | mA |
+---------------------------+--------+-----+-----+-----+------+

AC caracteristics:
------------------ +--------+------+------+------+
| Symbol | Min. | Max. | Unit |
+----------------------+--------+------+------+------+
| Pulse duration | tr | 50 | - | us |
| R address reset | | | | |
+----------------------+--------+------+------+------+
| Pulse duration | ts | 10 | - | us |
| R write | | | | |
+----------------------+--------+------+------+------+
| High level Clk | th | 8 | - | us |
+----------------------+--------+------+------+------+
| Low level Clk | tl | 12 | - | us |
+----------------------+--------+------+------+------+
| Write window | Twrite | 10 | - | ms |
+----------------------+--------+------+------+------+
| Erase window | Terase | 10 | - | ms |
+----------------------+--------+------+------+------+
| | tv1 | 5 | - | us |
+----------------------+--------+------+------+------+
| | tv2 | 3.5 | - | us |
+----------------------+--------+------+------+------+
| | tv3 | 3.5 | - | us |
+----------------------+--------+------+------+------+
| | tv4 | 3.5 | - | us |
+----------------------+--------+------+------+------+
| | tv5 | 3.5 | - | us |
+----------------------+--------+------+------+------+
| | tv6 | 5 | - | us |
+----------------------+--------+------+------+------+
| | tv7 | 5 | - | us |
+----------------------+--------+------+------+------+
| | tv8 | 10 | - | us |
+----------------------+--------+------+------+------+



III) Schematics of Readers:
=======================

III-1) Reader 1:
----------

External 5V (Optional)

5V o------,
| / T2 PNP d13 r7 10
0V o--, | / BC 177 |\ | _____
| | ,-------o/ o--*------. E C .--| >+-[_____]--------,
__+__ | | | \ / |/ | |
\\\\\ | __|__ Batery | \ / |
| - 22.5V | --------- |
....... | | | _____ | _____ |
: | __+__ +--[_____]--*--[_____]--, |
D2 : | \\\\\ r6 150k r5 15k | |
4 o-------|---------------------------*------------------|-------------, |
: | | r3 220k / C | |
Ack : |

  
| _____ |/ T1 - NPN | |
10 o------|--------. '--[_____]-*---| BC107 | |
: | | _____ | |\ | |
: ,-, ,-, +--[_____]-' \ E | |
: | |r2 | |r1 | r4 390k | | |
: | |220 | |22k __+__ __+__ | |
: |_| |_| \\\\\ \\\\\ | |
: | |\ | | | |
: *--| >+--|----------------*----------------------------------|--*
: | |/ | | ,-----|-----------------------------, | |
: | d1 | | | ,----------,----------, | | |
: | | | *---|--* Fuse | Reset *--|---' | |
: | | | | |----------|----------| | |
D0 : | | | ,-|---|--* I/O | Clk *--|---, | |
2 o-------|--------|----------' | | |----------|----------| | | |
: | | | '---|--* Vpp | R/W *--|---|----' |
Busy : | | | |----------|----------| | |
11 o------|--------|--------------' ,---|--* Gnd | 5V * | | |
: | | | '----------'-------|--' | |
D1 : | | __+__ Chip connector | | |
3 o-------|--------|--------, \\\\\ | | |
: | | '------------------------------|------' |
Str : | |\ | | | |
1 o-------*--| >+--*----*----*----*----*-------------------' |
: d2|/ | |d3 |d4 |d5 |d6 |d7 |
: -+- -+- -+- -+- -+- |
: /_\ /_\ /_\ /_\ /_\ |
D3 : | | | | | |\ | d8 |
5 o----------------*----|----|----|----|---| >+-------*-------------------'
: | | | | |/ | |
: | | | | |
D4 : | | | | |\ | d9 |
6 o---------------------*----|----|----|---| >+-------*
: | | | |/ | |
: | | | |
D5 : | | | |\ | d10 |
7 o--------------------------*----|----|---| >+-------*
: | | |/ | |
: | | |
D6 : | | |\ | d11 |
8 o-------------------------------*----|---| >+-------*
: | |/ | |
: | |
D7 : | |\ | d12 |
9 o------------------------------------*---| >+-------'
: |/ |
:
:
25 o------.
: |
.......: | d1 to d13: 1N4148
__+__
\\\\\

Centronic port


III-2) Reader 2:
---------

Zener 3.3V
2x1N4001 ________ 150
|\ | |\ | | | _____ | /| (6)
o----, ,--+ >+--*--+ >+--*---+ 7824 +----*--o o-|_____|-+< +-*----o Vpp
| | |/ | | |/ | | |________| | | \| |
)||( 220F | 220F | | ===== 0.22F _+_
220V )||( 25V | + 40V | + | | / \ 1N4148
)||( ===== ===== __+__ __+__ '-+-'
~ )||( | - | - \\\\\ \\\\\ ,+,
| | ___ | | | | 12
o----' '--o o-* __+__ | |
card | \\\\\ ________ '+' 12
present | |\ | | | | _____
(1)
'--+ >+------+ 7805 +------*-------------------*--|_____|-o
Vcc
|/ | |________| | |
1N4001 | _+_ |
| \ / ---> ,+,
__+__ -+- ---> | |
\\\\\ | | | 4.7k
,+, '+'
| | |
(7)
| | 680 *----------o
I/O
'+' |
| Busy (11) o
|
(4)
__+__ D0 (2) o-----*----o
Raz
\\\\\ |
4.7nF =====
|
__+__
\\\\\
(3)
D1 (3) o----------o
Clk


(2)
D2 (4) o----------o
W


Gnd (25) o
| fuse
(8)
*--~~~~~---o
Fus
__+__
\\\\\


IV) The program:
===========

The following program will enable you to read telecards on you PC if you
build the precedent reader.

--------------- cut here (begin)
(*****************************************************************************)
(* T E L E C A R D . PAS *)
(*****************************************************************************)
(* This program enable you to dumb the memory of electronics phonecards *)
(* from all over the world, so that you will be able to see which country *)
(* the card is from how many units are left and so on .... *)
(*****************************************************************************)

USES crt,dos;

CONST port_address=$378; (* Select Printer PORT 1 *)

TYPE string8=string[8];
string2=string[2];

VAR reg : registers;
i,j : integer;
Data : array[1..32] of byte;
car : char;
byte_number : integer;
displaying : char;

{-----------------------------------------------------------------------------}
{ PROCEDURE Send(b:byte); }
{ }
{ - Send a byte on the selected printer port. }
{-----------------------------------------------------------------------------}

PROCEDURE Send(b:byte);

BEGIN port[port_address]:=b;
END;

{-----------------------------------------------------------------------------}
{ FUNCTION Get:byte; }
{ }
{ - Get a byte from the status register of the selected printer port. }
{-----------------------------------------------------------------------------}

FUNCTION Get:byte;

BEGIN get:=port[port_address+1];
END;

{-----------------------------------------------------------------------------}
{ FUNCTION dec2hexa_one(decimal_value):hexa_character_representation; }
{ }
{ - convert a 4 bit long decimal number to hexadecimal. }
{-----------------------------------------------------------------------------}

FUNCTION dec2hexa(value:byte):char;

BEGIN case value of
0..9 : dec2hexa:=chr(value+$30);
10..15 : dec2hexa:=chr(value+$37);
END;
END;

{-----------------------------------------------------------------------------}
{ FUNCTION d2h(decimal_byte):string2; }
{ }
{ - convert a decimal byte to its hexadecimal representation. }
{-----------------------------------------------------------------------------}

FUNCTION d2h(value:byte):string2;

BEGIN d2h:=dec2hexa(value div $10) + dec2hexa(value and $0F);
END;

{-----------------------------------------------------------------------------}
{ FUNCTION Binary(byte):string8; }
{ }
{ - Convert a byte to its binary representation. }
{-----------------------------------------------------------------------------}

FUNCTION Binary( b : byte):string8;

VAR weigth : byte;
s : string8;

BEGIN weigth:=$80;
s:='';
while (weigth > 0) do
BEGIN if ((b and weigth) = weigth) then s:=s+'1'
else s:=s+'0';
weigth:=weigth div $02;
END;
Binary:=s;
END;

{-----------------------------------------------------------------------------}

FUNCTION Units:byte;

VAR u, i : integer;
s : string8;

BEGIN u:=0;
i:=13;
while (Data[i] = $FF) do
BEGIN u:=u+8;
i:=i+1;
END;
s:=Binary(Data[i]);
while(s[1]='1') do
BEGIN inc(u);
s:=copy(s,2,length(s));
END;
units:=u;
END;

{-----------------------------------------------------------------------------}

FUNCTION Octal_Unit_Count:LongInt;

FUNCTION BitCount( Data : integer ):integer;

VAR i : integer;

BEGIN i:=0;
while ((Data and $01)=$01) do
BEGIN Data:=Data div 2;
inc(i);
END;
BitCount:=i;
END;

BEGIN Octal_Unit_Count:= 4096*BitCount(Data[9])+512*BitCount(Data[10])
+64*BitCount(Data[11])+8*BitCount(Data[12])
+BitCount(Data[13]);
END;

{-----------------------------------------------------------------------------}

PROCEDURE Card_Type;

BEGIN case Data[2] of
$03: BEGIN write('Telecard - France - ');
case Data[12] of
$13: write('120 Units - ',units-130,' Units left');
$06: write('50 Units - ',units-60,' Units left');
$15: write('40 Units - ',units-40,' Units left');
END;
END;
$2F:write('Telecard - Germany - ', Octal_Unit_Count, ' Pfennigs left');
$37:write('Telecard - Neitherland - ',Octal_Unit_Count,' Units left');
$3B:write('Telecard - Greece - ', Octal_Unit_Count, ' Units left');
$83:BEGIN write('Telecard');
case Data[12] of
$1E: write(' - Sweden');
$30: write(' - Norway');
$33: write(' - Andorra');
$3C: write(' - Ireland');
$47: write(' - Portugal');
$55: write(' - Czech Republic');
$5F: write(' - Gabon');
$65: write(' - Finland');
END;
if (Data[12] in [$30,$33,$3C,$47,$55,$65]) then
BEGIN case ((Data[3] and $0F)*$100+Data[4]) of
$012: write (' - 10 Units - ',units-12,' Units left');
$024: write (' - 22 Units - ',units-24,' Units left');
$027: write (' - 25 Units - ',units-27,' Units left');
$032: write (' - 30 Units - ',units-32,' Units left');
$052: write (' - 50 Units - ',units-52,' Units left');
$067: write (' - 65 Units - ',units-62,' Units left');
$070: write (' - 70 Units - ',units-70,' Units left');
$102: write (' - 100 Units - ',units-102,' Units
left');
$152: write (' - 150 Units - ',units-152,' Units
left');
END;
END;
{ write(' - N0 ',Data[5]*$100+Data[6]);}
END;
END;
END;

{-----------------------------------------------------------------------------}

PROCEDURE waiting;

BEGIN send($00);
write('Enter a card in the reader and press a key ...');
repeat until keypressed;
gotoxy(1, wherey);
clreol;
END;

{-----------------------------------------------------------------------------}

PROCEDURE Full_Displaying;

BEGIN writeln('Memory dump:');
for i:=1 to 80 do write('-');
for i:=1 to (byte_number div 6 + 1) do
BEGIN for j:=1 to 6 do
if j+6*(i-1) <= byte_number then
write(binary(Data[j+6*(i-1)]):9)
else write(' ');
write(' ');
for j:=1 to 6 do
if j+6*(i-1) <= byte_number then write(d2h(Data[j+6*(i-1)]),' ');
writeln;
END;
for i:=1 to 80 do write('-');
Card_Type;
writeln;
END;

{-----------------------------------------------------------------------------}

PROCEDURE Short_Displaying;

VAR j : integer;

BEGIN for j:=1 to byte_number do
BEGIN write(d2h(Data[j]),' ');
END;
writeln;
END;

{-----------------------------------------------------------------------------}

PROCEDURE Reading;

VAR i, j : integer;
Value : byte;

BEGIN send($FE);
send($F8);
for i:=1 to 32 do
BEGIN Value:=0;
for j:=1 to 8 do
BEGIN Value:=Value*$02 + ((get and $08) div $08);
send($FB);
delay(1);
send($F8);
END;
Data[i]:=Value;
END;
case displaying of
'F':full_displaying;
'S':short_displaying;
END;
END;

{-----------------------------------------------------------------------------}

PROCEDURE writting;

VAR i,n:integer;
car:char;

BEGIN write('Which bit do you want to set to "1" : ');
readln(n);

waiting;
car:=readkey;

send($FA);
send($F8);
for i:=1 to n do
BEGIN send($F9);
if i=n then
BEGIN send($FD);
delay(20);
send($FF);
delay(20);
END;
send($FB);
END;
reading;
END;

{-----------------------------------------------------------------------------}

PROCEDURE Saving;

VAR filename : string;
f : text;
i : word;

BEGIN write('Enter the filename: ');
readln(filename);
assign(f, filename);
rewrite(f);

writeln(f,'Memory dump:');
for i:=1 to 80 do write(f,'-');
for i:=1 to (byte_number div 6 + 1) do
BEGIN for j:=1 to 6 do
if j+6*(i-1) <= byte_number then
write(f,binary(Data[j+6*(i-1)]):9)
else write(f,' ');
write(f,' ');
for j:=1 to 6 do
if j+6*(i-1) <= byte_number then write(f,d2h(Data[j+6*(i-1)]),'
');
writeln(f);
END;
for i:=1 to 80 do write(f,'-');
close(f);
END;

{-----------------------------------------------------------------------------}

PROCEDURE initialize;

VAR i : integer;

BEGIN byte_number:=32;
displaying:='F';
clrscr;
writeln(' 1 - to dump a 256 bits card');
writeln(' 2 - to dump a 128 bits card');
writeln(' F - to display in full format');
window(41,1,80,25);
writeln(' S - to display in short format');
writeln(' F2 - to save in a file');
writeln(' Q - to exit the program');
window(1,4,80,25);
for i:=1 to 80 do write('=');
window(1,5,80,25);
END;

{=============================================================================}

BEGIN initialize;
repeat waiting;
car:=upcase(readkey);
case car of
'W':writting;
'Q':;
'1':byte_number:=32;
'2':byte_number:=16;
'F','S':displaying:=car;
#00: BEGIN car:=readkey;
if car=#60 then saving;
END;
else reading;
END;
until car='Q';
END.



3. Dos modelos a analizar

3.1 TELECOM - TELESCUM - TELECOME - TELECUM - TELACOME

3.1.1 Telefono publico modular:

Nos estamos refiriendo, y lo haremos durante todo el punto 3.1 al
telefono celeste que no acepta fichas, al mamotreto de alguna aleacion con
hierro que nos guinia el ojo cada vez que pasamos.
[ Lo que sigue es una obra de ficcion. Cualquier semejanza con la realidad
queda en la mente de los lectores. (N.de los A.)]

Que gracioso seria que todos los telefonos publicos modulares de Telecom
(TPMTc) se abrieran con la misma y exacta llave. En ese caso si, por
ejemplo, llegaramos alguna vez a tener una llave podriamos ir al lugar mas
oscuro de la ciudad y, digamos, abrir uno para observarlo.
Supongamos que, hipoteticamente, todo esto sucedio para que no nos
volvamos chinos pensando como articular las frases en tiempo de verbo
condicional, recordemos que hace unos anios abandonamos la primaria.
La primera buena impresion que te llevas(arias, recordemos) al abrirlos es
cuando descubris que son realmente modulares, es decir, podes sacar
cualquier placa, cualquier componente, con el minimo esfuerzo. Desmontar
todo el telefono, en caso de que quieras estudiarlo mejor, no es mucho
mas dificil. Tiene cuatro tornillos montados sobre el soporte, que se
ajustan con cuatro tuercas del lado de adentro. A pesar de que las
tuercas estan muy pegadas a los bordes no seria dificil sacarlas con una
llave tubo 16, o si estan flojas con los dedos. Imaginamos que el paso
siguiente seria usar tu MakeitJew (el pelacables rojito con cabeza negra)
para cortar el cable con la linea, en la parte de abajo a la derecha.
No es muy pesado para cargarlo hasta casa, se te cruza por el cerebro
mientras tiras del mamotreto para atras. Me iria con el hasta New York,
ahhh.
Llegamos a casa, y tratando de que la vieja no se despierte lo
tiramos arriba de la cama. Lo abrimos y lo damos vueltas con cara de
asombro. Lo primero que se nos ocurre es: le afanamos las fichas y las
vendemos. Despues recordamos que el telefono no tiene fichas, y de todas
maneras se supone que somos Hackers, y que lo hacemos para investigar y
descubrir cosas, no para llenarnos de oro (para eso llevemonos el de
telefonica). Lo siguiente que se nos ocurre es conectarlo a la linea y
llamar a nuestros amigos y contarles: - vieja??, a que no sabes de donde
te estoy llamando??. Lo intentamos durante un rato y no lo logramos. La
linea debe tener una masa diferente, o algo asi. Entonces que hacemos???
supongo que solo nos queda tratar de ver como y por que funciona.
Lo abrimos de nuevo.

3.1.2 Analisis estructural y de componentes

Sacamos todas las placas, que bien podrian ser las siguientes:

- Hibrido telefonico y control de linea (URL PF12), nada
worth-mentioning al respecto, excepto que en esta placa se encuentran
los dos sensores magneticos del telefono, el de puerta abierta (abajo a
la derecha) y el de tubo levantado (abajo a la izquierda).

- El MainBoard, una primera y rapida inspeccion nos dice que tiene un
conector libre (el modem? pensamos), que tiene, si senior, un Z80 y
un 80C31 (interesante pensamos), cuatro bancos de memoria, de los
cuales dos estan ocupados con memorias rotuladas 'ARGENTINA' algunas
vergas mas y una dice 'U11' y la otra 'U28' y los otros dos estan
libres (??). Creo que nuestro ojo clinico no dice nada mas por ahora.

- El lector de tarjetas, plastico, y lo unico que tiene un tornillo
para desmontarlo, salen dos cables, y a simple vista se ve una
soldadura medio trucha cruzando dos placas, hmmm vamos a investigar
mejor eso mas adelante.

- El display, facil de sacar. Cute, parecido a otros modelos
comerciales, en fin. Un Display, con infinidad de usos en el hogar.

- El Teclado, robusto. Pesado. Brilloso, con forma de teclado, con
botones de teclado, re-buchon, y tiene una etiqueta ilustrativa que nos
dice 'TELECOM - Teclado' por si no lo sabiamos. Y ademas como la
mayoria de las placas de este bicho tiene el nombre del fabricante,
Schlumberger (algo que no habiamos dicho antes y es util saber).

- Bateria, 6 volts, (5 pilas de 1.2v 600mah) para cuando se corta la
linea, se recargan de la linea suponemos.

Listo, tratemos de imaginar como se veria...

(Puerta Layer #1) (Puerta Layer #2)

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Display 2 x 20 ³ (J4)
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Teclado MainBoard
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ ( ) (1) (2) (3) ³ ³ ÍÍÍÍÍÍÍÍÍ ³
³ ³ ³ (J4) ³
³ ( ) (4) (5) (6) ³ (J2) ³ (J7)º ³
³ ³ ³ ÚÄ¿ º ³
³ Bis (7) (8) (9) ³ ³ ÀÄÙ ÚÄ¿ ³
³ ³ ³ C31 ³Z³ ³
³ ( ) (*) (0) (#) ³ ³ ³8³ º ³
³ (R) ³ ³ ³0³ º ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ ÀÄÙ (J8)º ³
Lector ³ º ³
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ º ³
³ ³ ³ ³ º ³
³ ³ ³ (J3) ³ º (J2) ³
³ ÃÄÄÄÄÄÄÄÄ ³ ³pila (J3) ³
³ ³ ³ ³ [-] ÍÍÍÍÍ ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ



(Base)
Hibrido Telefonico
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ [-] bateria extra ³
³ ÚÄ¿ al ³
³ ÀÄÙ tubo º (J8) ³
³ º ³
³ º puerta³
³ peine extra#o (s)Ú¿ ³ (s) means sensor
³ tubo (s) ÚÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄ¿ ³³ ³
³ ÍÍÍÍÍÍÍ ÀÄÄÄÄÄÄÄÄÙ ³linea³ ÀÙ ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÙ



Donde el Layer #2 va sobre el #1, ambos montados en la puerta, y el
hibrido telefonico va en la base del telefono, los (Jxx) son los
conectores.
Con esto tendriamos para una primera noche, pero al dia siguiente
tendriamos ganas de saber que son TODAS las cosas que tiene. Construiriamos
entonces la

Lista de Chips del MainBoard:

U26 - Z80ACPU (2x20 patas)
U12 - 80C31HB-3 (4x11 patas)
U11,
U28 - Eproms 27256 (2x14 patas), 32k
U9,
U34 - zocalos vacios (iguales a los de las eproms)
U2,
U16,
U23,
U38 - CXK58257AM-10L (32k SRAM) (una al lado cada eprom) (para buffers??)
U35 - TCM5089N (DTMF dialer)
y NANDS y muchos chipos de logica digital, bah...
Un Jumper (J6) para elegir entre DTMF o decadico.
2 botones, uno rojo para Reset y el azul rotulado maint (??)

Y seguiriamos investigando...

Como seguramente estemos pensando en hacer una tarjeta que funcione sin
tener que pagarle al quioskero nos ponemos a analizar el lector de
tarjetas.
Tiene 2x8 contactos, de los cuales en las tarjetas comunes se usan solo
8, pregunta: existira una tarjeta con mas contactos que tenga acceso a
mas funciones?? (algo asi como una tarjeta de Capo) o simplemente es el
standard.?
El lector tiene un microswitch para detectar cuando la tarjeta esta
puesta.
Rodeando los conectores por el lado de afuera (donde entra la tarjeta)
vemos una chapa de cobre que pasa de un lado y de otro de esta manera:

(De frente)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ chapa
tarjeta ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ³
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

(de arriba)

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ tarjeta ³ afuera
³ ³
- - -³- - - ÉÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍ chapa - - - - -
³ º |
³ º | adentro
³ º ÚÄÄÄÄÄÄÄÄÄÄ¿
³ º ³ contactos³
³ º ³ ³
³ º ÀÄÄÄÄÄÄÄÄÄÄÙ
|
chapa

Al intentar poner una tarjeta con pistas hacia afuera para probar cosas
nos dice indefectiblemente 'TARJETA INVALIDA' y suponemos que esto tiene
que ver con la chapa.
La chapa funciona como un 'sensor de permeabilidad magnetica'(tomamate)
es decir, la tarjeta actua como nucleo del inductor y cambia el valor de
inductancia (o algo asi). De todas maneras esta chapa es la que nos
dificulta el trabajo en este sentido. (Ella explica entre otras cosas por
que el modelo de tarjeta homemade que esta dando vueltas por algunos lados
funciona en los telefonos de telefonica y no en los de telecom, (de
telefonica vamos a hablar en la proxima HMAG, por un problema de espacio)).
De todas maneras, un puntito mas para Schlumberger aca.

Y por ahora terminamos con el Hard. Nos aprovisionamos de un buen
Lecto/Grabador de Eproms, de una luz ultravioleta y de un compilador de
Z80 y nos ponemos con el codigo.

Suponemos antes de empezar que el Z80 se encarga del funcionamiento
general y el 80C31 como es un microcontrolador se encargara de las entradas
y salidas (de la tarjeta basicamente y del tarifado suponemos).


3.1.2 Analisis del codigo del Z80

Lo que viene ahora es largo, y puede ser perjudicial para la salud. El
codigo no esta analizado exahustivamente por que es MUY LARGOOOOOOOO.
Pero hicimos nuestro mejor esfuerzo en lo que va del momento en reverse
engineering con este bicho, y ademas dio frutos.
Cualquier comentario al respecto, ampliaciones, y demas vamos a estar
encantados de recibirlas...
Este es el disassembly del codigo de la U28.

-------------------------------> TELE1.Z <------------------------------

Cortar_Key EQU '?'
_*_KEY EQU ':'
_#_KEY EQU ';'
VOL_KEY EQU 'B'
Espanol EQU 0170h
Ingles EQU 0530h
Aleman EQU 08F0h
Italiano EQU 0710h
Portugues EQU 0350h

IRQ: Lo que hacen las IRQs

#1 Dial DTMF
(P68) = Get Buffer #6 // OutPortB(0x068, Get(buffer #6))
(P48) = Get Buffer #4 // OutPortB(0x048, Get(buffer #4))

#2 Timer #1

#3 Put Buffer #5 = (P68)
(P68) = Get Buffer #6
#4 Put Buffer #3 = (P48)
(P48) = Get Buffer #4
#5 In (P20)
#6 In (P20)
#7 Nada
#8 Keyboard
#10 Timer #2 1 Second +/-

Ports:
00 = Matriz del Teclado
al escribir se escribe en las filas
al leer se lee de las columnas
41 bit 0 = -(Tone Inhibit) del DTMF chip
bit 3 = 0 = Colgado
1 = Descolgado
48 = Lo que pone aca lo saca del Buffer #4
60 = bits 7..4 = Filas de la Matriz de entrada al DTMF chip
bits 3..0 = Columnas de la Matriz de entrada al DTMF chip
61 = Multiproposito paralelo mapeado por bits
output
bit 5 = Display Light
68 = Lo que pone aca lo saca del Buffer #6
E0 = Display Control ¨?
E1 = Display Data ASCII

Memory:

3D23-3D2A = Tabla de conversion Hexa -> Display

6000-6013 = Display Buffer de la primer linea
6014-6027 = Display Buffer de la segunda linea

6045... Inicializado decodificando de la ROM

Area 61CD-6679 se llena a 0 cada vez que se Resetea

61CD-61DC Buffer #1 Key Pressed
61DD WORD Pointer to Next Avail Byte in Buffer #1
61DF WORD Pointer to Next Free Slot in Buffer #1
61E1-61F4 Buffer #2 Numero Marcado
61F5 WORD Pointer to Next Avail Byte in Buffer #2
61F7 WORD Pointer to Next Free Slot in Buffer #2
61F9-6238 Buffer #5 Lo que pone en este Buffer lo saca de (P68)
6239 WORD Pointer to Next Avail Byte in Buffer #5
623B WORD Pointer to Next Free Slot in Buffer #5
623D-627C Buffer #6 Lo que saca de este buffer lo pone en (P68)
627D WORD Pointer to Next Avail Byte in Buffer #6
627F WORD Pointer to Next Free Slot in Buffer #6
6281-6300 Buffer #3 Lo que pone en este Buffer lo saca de (P48)
6301 WORD Pointer to Next Avail Byte in Buffer #3
6303 WORD Pointer to Next Free Slot in Buffer #3
6305-6384 Buffer #4 Lo que saca de este buffer lo pone en (P48)
6385 WORD Pointer to Next Avail Byte in Buffer #4
6387 WORD Pointer to Next Free Slot in Buffer #4
6389-63C8 Buffer #7 Internal Commands
63C9 WORD Pointer to Next Avail Byte in Buffer #7
63CB WORD Pointer to Next Free Slot in Buffer #7
63CD-640C Buffer #8 ?Who knows?
640D WORD Pointer to Next Avail Byte in Buffer #8
640F WORD Pointer to Next Free Slot in Buffer #8

6411-6416 Tabla de TIMERS BYTE (6 timers)

6417 BYTE = 3 Despues de Discar un numero apretado.

6419-6420 = Tabla de TIMERS BYTE ( 8 TIMERS )
641A = Si NO esta puesta -> 1 ????
= tarjeta puesta -> <> 1
6421-642A Tabla de TIMERS WORD ( 5 TIMERS )

6429 WORD Timer 5W = Timer de fuera de Servicio.

642B BYTE = Habilita timers 6B,...
642C BYTE = bit 7 Inicializado a 1 if (P64.6)==0
642E BYTE = 00h => ' ( ) FUERA | DE SERVICIO'
02h => Todo OK!
04h => ' ( ) SOLO | EMERGENCIAS'
08h => ' ( ) FUERA | DE SERVICIO'

643C BYTE Fila de la Ultima tecla presionada
643D BYTE Columna de la Ultima tecla presionada
643E BYTE Salida de la Matriz (columnas) de la fila de la ultima tecla presionada
643F-6443 Salida del barrido de la matriz del teclado, un byte por fila

6445 BYTE = 1 Despues de Discar un numero apretado.

6448 BYTE = Inicializado a 1 if (P64.4)==1
6449 BYTE = Inicializado a 1 if (P44.6)==1

644A BYTE = Inicializado a 1 if (P44.5)==0

644B BYTE != 06 => Se anula el Timer 1W

07 Timer ?
6458 BYTE = Fichas Restantes
645B = 0Ah - > Tarjeta invalida

Area 65BA-6653 es llenada con 0

65BA BYTE = Cantidad de Bytes en el Buffer #1
65BB BYTE = Cantidad de Bytes en el Buffer #2
65BC BYTE = Cantidad de Bytes en el Buffer #5
65BD BYTE = Cantidad de Bytes en el Buffer #6
65BE BYTE = Cantidad de Bytes en el Buffer #3
65BF BYTE = Cantidad de Bytes en el Buffer #4
65C0 BYTE = Cantidad de Bytes en el Buffer #8
65C1 BYTE = Cantidad de Bytes en el Buffer #7

65C5 BYTE = 1 Despues de Discar un numero apretado.


65CD = Flag de cancelacion. (Puerta abierta?, Tarjeta sacada?)
(Colgar? )
== 00 Si hay puesta una tarjeta
65D6 WORD == 0 => Anula el Timer 1W

65E3 BYTE = Contador de Idioma. 0..4 = Castellano, Ingles, Aleman, Italiano, Portugues
6606 == 3 => FICHAS
!= 3 PULSOS

661C WORD = Fichas Restantes
661E WORD = Pulsos/Fichas Restantes
6620 WORD = Fichas Restantes

662C WORD = Fichas restantes

662F BYTE = 0C => Credito agotado

6650 WORD = Offset a sumar para cada idioma
6652 BYTE = Codigo de Idioma
6670 = Address de la primer linea a imprimir
6672 = Address de la segunda linea a imprimir
6674 = Bits de Display de Variables
6677 BYTE = Inicializado a (P64)
6678 BYTE = Inicializado a (P44)
667A WORD = Puntero al Proximo caracter del Log Buffer
667D-6E7C = Log Buffer


7BFF = Stack (decrece)
;
ORG 00000H
LD SP,07BFFH ; 0000
XOR A ; 0003
LD (06676H),A ; 0004
LD C,00CH ; 0007
LD B,004H ; 0009
OUT (C),A ; 000B
OUT (C),A ; 000D
OUT (C),A ; 000F
OUT (C),A ; 0011
OUT (C),A ; 0013
DJNZ 0000BH ; 0015
JP 00EC7H ; 0017
RST 38H ; 001A
RST 38H ; 001B
RST 38H ; 001C
RST 38H ; 001D
RST 38H ; 001E
RST 38H ; 001F
RST 38H ; 0020
RST 38H ; 0021
RST 38H ; 0022
RST 38H ; 0023
RST 38H ; 0024
RST 38H ; 0025
RST 38H ; 0026
RST 38H ; 0027
RST 38H ; 0028
RST 38H ; 0029
RST 38H ; 002A
RST 38H ; 002B
RST 38H ; 002C
RST 38H ; 002D
RST 38H ; 002E
RST 38H ; 002F
RST 38H ; 0030
RST 38H ; 0031
RST 38H ; 0032
RST 38H ; 0033
RST 38H ; 0034
RST 38H ; 0035
RST 38H ; 0036
RST 38H ; 0037
RST 38H ; 0038
RST 38H ; 0039
RST 38H ; 003A
RST 38H ; 003B
RST 38H ; 003C
RST 38H ; 003D
RST 38H ; 003E
RST 38H ; 003F
RST 38H ; 0040
RST 38H ; 0041
RST 38H ; 0042
RST 38H ; 0043
RST 38H ; 0044
RST 38H ; 0045
RST 38H ; 0046
RST 38H ; 0047
RST 38H ; 0048
RST 38H ; 0049
RST 38H ; 004A
RST 38H ; 004B
RST 38H ; 004C
RST 38H ; 004D
RST 38H ; 004E
RST 38H ; 004F
RST 38H ; 0050
RST 38H ; 0051
RST 38H ; 0052
RST 38H ; 0053
RST 38H ; 0054
RST 38H ; 0055
RST 38H ; 0056
RST 38H ; 0057
RST 38H ; 0058
RST 38H ; 0059
RST 38H ; 005A
RST 38H ; 005B
RST 38H ; 005C
RST 38H ; 005D
RST 38H ; 005E
RST 38H ; 005F
RST 38H ; 0060
RST 38H ; 0061
RST 38H ; 0062
RST 38H ; 0063
RST 38H ; 0064
RST 38H ; 0065
LD A,(06676H) ; 0066
CP 005H ; 0069
JR C,0006EH ; 006B
HALT ; 006D
LD C,00CH ; 006E
LD B,004H ; 0070
OUT (C),A ; 0072
OUT (C),A ; 0074
OUT (C),A ; 0076
OUT (C),A ; 0078
OUT (C),A ; 007A
DJNZ 00072H ; 007C
JP 00000H ; 007E
RETN ; 0081

RST 38H ; 0083
RST 38H ; 0084
RST 38H ; 0085
RST 38H ; 0086
RST 38H ; 0087
RST 38H ; 0088
RST 38H ; 0089
RST 38H ; 008A
RST 38H ; 008B
SUB E ; 008C
INC (HL) ; 008D
LD D,032H ; 008E
CALL Z,0D534H ; 0090
INC L ; 0093
LD DE,02235H ; 0094
DEC (HL) ; 0097
LD E,(HL) ; 0098
DEC (HL) ; 0099
SBC D ; 009A
DEC (HL) ; 009B
JR 000D3H ; 009C
RRA ; 009E
DEC (HL) ; 009F
RST 38H ; 00A0
RST 38H ; 00A1
RST 38H ; 00A2
RST 38H ; 00A3
RST 38H ; 00A4
RST 38H ; 00A5
RST 38H ; 00A6
RST 38H ; 00A7
RST 38H ; 00A8
RST 38H ; 00A9
RST 38H ; 00AA
RST 38H ; 00AB
RST 38H ; 00AC
RST 38H ; 00AD
RST 38H ; 00AE
RST 38H ; 00AF
RST 38H ; 00B0
RST 38H ; 00B1
RST 38H ; 00B2
RST 38H ; 00B3
RST 38H ; 00B4
RST 38H ; 00B5
RST 38H ; 00B6
RST 38H ; 00B7
RST 38H ; 00B8
RST 38H ; 00B9
RST 38H ; 00BA
RST 38H ; 00BB
RST 38H ; 00BC
RST 38H ; 00BD
RST 38H ; 00BE
RST 38H ; 00BF
RST 38H ; 00C0
RST 38H ; 00C1
RST 38H ; 00C2
RST 38H ; 00C3
RST 38H ; 00C4
RST 38H ; 00C5
RST 38H ; 00C6
RST 38H ; 00C7
RST 38H ; 00C8
RST 38H ; 00C9
RST 38H ; 00CA
RST 38H ; 00CB
RST 38H ; 00CC
RST 38H ; 00CD
RST 38H ; 00CE
RST 38H ; 00CF
RST 38H ; 00D0
RST 38H ; 00D1
RST 38H ; 00D2
RST 38H ; 00D3
RST 38H ; 00D4
RST 38H ; 00D5
RST 38H ; 00D6
RST 38H ; 00D7
RST 38H ; 00D8
RST 38H ; 00D9
RST 38H ; 00DA
RST 38H ; 00DB
RST 38H ; 00DC
RST 38H ; 00DD
RST 38H ; 00DE
RST 38H ; 00DF
RST 38H ; 00E0
RST 38H ; 00E1
RST 38H ; 00E2
RST 38H ; 00E3
RST 38H ; 00E4
RST 38H ; 00E5
RST 38H ; 00E6
RST 38H ; 00E7
RST 38H ; 00E8
RST 38H ; 00E9
RST 38H ; 00EA
RST 38H ; 00EB
RST 38H ; 00EC
RST 38H ; 00ED
RST 38H ; 00EE
RST 38H ; 00EF
RST 38H ; 00F0
RST 38H ; 00F1
RST 38H ; 00F2
RST 38H ; 00F3
RST 38H ; 00F4
RST 38H ; 00F5
RST 38H ; 00F6
RST 38H ; 00F7
RST 38H ; 00F8
RST 38H ; 00F9
RST 38H ; 00FA
RST 38H ; 00FB
RST 38H ; 00FC
RST 38H ; 00FD
RST 38H ; 00FE
RST 38H ; 00FF

0100 04 00 04 02 01 11 0E 00 0A 00 11 11 11 11 0E 00 ................
0110 0A 00 0E 11 1F 11 11 00 0A 00 0E 11 11 11 0E 00 ................
0120 43 49 45 52 52 45 20 4C 41 20 50 55 45 52 54 41 CIERRE LA PUERTA
0130 20 20 20 20 20 50 52 55 45 42 41 20 54 45 43 4C PRUEBA TECL
0140 41 44 4F 20 20 20 20 20 20 50 52 55 45 42 41 20 ADO PRUEBA
0150 45 53 50 49 41 20 3F 20 20 20 20 20 49 4E 49 43 ESPIA ? INIC
0160 49 41 4C 49 5A 41 43 49 4F 4E 20 3F 20 20 20 20 IALIZACION ?
0170 20 20 20 44 45 53 43 55 45 4C 47 55 45 20 20 20 DESCUELGUE
0180 20 20 20 20 28 20 20 29 20 46 55 45 52 41 20 20 ( ) FUERA
0190 20 20 20 20 20 20 20 20 20 20 44 45 20 53 45 52 DE SER
01A0 56 49 43 49 4F 20 20 20 20 20 20 20 28 20 20 29 VICIO ( )
01B0 20 53 4F 4C 4F 20 20 20 20 20 20 20 20 20 20 20 SOLO
01C0 20 20 45 4D 45 52 47 45 4E 43 49 41 53 20 20 20 EMERGENCIAS
01D0 20 20 20 20 49 4E 53 45 52 54 45 20 54 41 52 4A INSERTE TARJ
01E0 45 54 41 20 20 20 20 20 4E 55 4D 45 52 4F 20 4D ETA NUMERO M
01F0 41 52 43 41 44 4F 3A 20 20 20 20 20 20 20 20 20 ARCADO:
0200 43 55 45 4C 47 55 45 20 20 20 20 20 20 20 20 20 CUELGUE
0210 20 20 49 4E 55 54 49 4C 49 5A 41 42 4C 45 20 20 INUTILIZABLE
0220 20 20 20 20 45 53 50 45 52 45 20 50 4F 52 20 46 ESPERE POR F
0230 41 56 4F 52 20 20 20 20 52 45 54 49 52 41 52 20 AVOR RETIRAR
0240 54 41 52 4A 45 54 41 20 20 20 20 20 43 52 45 44 TARJETA CRED
0250 49 54 4F 20 41 47 4F 54 41 44 4F 20 20 20 20 20 ITO AGOTADO
0260 54 41 52 4A 45 54 41 20 49 4E 56 41 4C 49 44 41 TARJETA INVALIDA
0270 20 20 20 20 20 20 20 20 20 20 50 55 4C 53 4F 53 PULSOS
0280 20 20 20 20 20 20 20 20 4D 41 52 51 55 45 20 45 MARQUE E
0290 4C 20 4E 55 4D 45 52 4F 20 20 20 20 20 20 20 20 L NUMERO
02A0 50 52 4F 42 4C 45 4D 41 20 20 20 20 20 20 20 20 PROBLEMA
02B0 20 4F 54 52 41 20 54 41 52 4A 45 54 41 3F 20 20 OTRA TARJETA?
02C0 20 20 20 20 20 4E 55 45 56 41 20 54 41 52 4A 45 NUEVA TARJE
02D0 54 41 20 20 20 20 20 20 43 55 45 4C 47 55 45 20 TA CUELGUE
02E0 44 45 53 50 55 45 53 20 20 20 20 20 20 44 45 20 DESPUES DE
02F0 4C 41 20 4C 4C 41 4D 41 44 41 20 20 20 20 20 20 LA LLAMADA
0300 4C 4C 41 4D 41 44 41 20 45 4E 54 52 41 4E 54 45 LLAMADA ENTRANTE
0310 20 20 20 20 20 4E 4F 20 41 43 43 45 53 49 42 4C NO ACCESIBL
0320 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 E
0330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0340 20 20 46 49 43 48 41 53 20 20 20 20 20 20 20 20 FICHAS
0350 4C 45 56 41 4E 54 45 20 4F 20 4D 49 43 52 4F 20 LEVANTE O MICRO
0360 20 20 20 20 28 20 20 29 20 46 41 4C 48 41 20 20 ( ) FALHA
0370 20 20 20 20 20 20 20 20 20 20 20 54 45 43 4E 49 TECNI
0380 43 41 20 20 20 20 20 20 20 20 20 20 28 20 20 29 CA ( )
0390 20 53 4F 20 20 20 20 20 20 20 20 20 20 20 20 20 SO
03A0 20 4E 55 4D 45 52 4F 20 47 52 41 54 49 53 20 20 NUMERO GRATIS
03B0 20 20 20 20 20 49 4E 53 45 52 49 52 20 43 41 52 INSERIR CAR
03C0 54 41 4F 20 20 20 20 20 4E 55 4D 45 52 4F 20 4D TAO NUMERO M
03D0 41 52 43 41 44 4F 3A 20 20 20 20 20 20 50 4F 55 ARCADO: POU
03E0 53 45 20 4F 20 4D 49 43 52 4F 20 20 20 20 20 20 SE O MICRO
03F0 20 20 49 4E 55 54 49 4C 49 5A 41 56 45 4C 20 20 INUTILIZAVEL
0400 20 20 20 20 45 53 50 45 52 45 20 50 4F 52 20 46 ESPERE POR F
0410 41 56 4F 52 20 20 20 20 52 45 54 49 52 45 20 4F AVOR RETIRE O
0420 20 43 41 52 54 41 4F 20 20 20 20 20 43 41 52 54 CARTAO CART
0430 41 4F 20 45 53 47 4F 54 41 44 4F 20 20 20 20 20 AO ESGOTADO
0440 43 41 52 54 41 4F 20 49 4E 56 41 4C 49 44 4F 20 CARTAO INVALIDO
0450 20 20 20 20 20 20 20 20 20 20 20 55 4E 49 44 41 UNIDA
0460 44 45 53 20 20 20 20 20 4D 41 52 51 55 45 20 50 DES MARQUE P
0470 4F 52 20 46 41 56 4F 52 20 20 20 20 20 46 41 4C OR FAVOR FAL
0480 48 41 20 54 45 43 4E 49 43 41 20 20 20 20 20 20 HA TECNICA
0490 20 4F 55 54 52 4F 20 43 41 52 54 41 4F 20 3F 20 OUTRO CARTAO ?
04A0 20 20 20 20 20 20 4E 4F 56 4F 20 43 41 52 54 41 NOVO CARTA
04B0 4F 20 20 20 20 20 20 20 20 50 4F 55 53 45 20 4F O POUSE O
04C0 20 4D 49 43 52 4F 20 20 20 20 20 20 51 55 41 4E MICRO QUAN
04D0 44 4F 20 54 45 52 4D 49 4E 41 52 20 20 20 20 20 DO TERMINAR
04E0 43 48 41 4D 41 44 41 20 43 48 45 47 41 44 41 20 CHAMADA CHEGADA
04F0 20 20 20 20 20 20 49 4E 44 49 53 50 4F 4E 49 56 INDISPONIV
0500 45 4C 20 20 20 20 20 20 20 20 20 20 20 20 20 20 EL
0510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0520 20 20 46 49 43 48 41 53 20 20 20 20 20 20 20 20 FICHAS
0530 20 4C 49 46 54 20 52 45 43 45 49 56 45 52 20 20 LIFT RECEIVER
0540 20 20 20 20 28 20 20 29 20 4F 55 54 20 20 20 20 ( ) OUT
0550 20 20 20 20 20 20 20 20 20 20 4F 46 20 4F 52 44 OF ORD
0560 45 52 20 20 20 20 20 20 20 20 20 20 28 20 20 29 ER ( )
0570 20 4F 4E 4C 59 20 20 20 20 20 20 20 20 20 20 20 ONLY
0580 20 20 45 4D 45 52 47 45 4E 43 49 45 20 20 20 20 EMERGENCIE
0590 20 20 20 20 20 20 49 4E 53 45 52 54 20 43 41 52 INSERT CAR
05A0 44 20 20 20 20 20 20 20 44 49 41 4C 45 44 20 4E D DIALED N
05B0 55 4D 42 45 52 3A 20 20 20 20 20 20 20 50 4C 45 UMBER: PLE
05C0 41 53 45 20 48 41 4E 47 20 55 50 20 20 20 20 20 ASE HANG UP
05D0 20 20 20 57 52 4F 4E 47 20 43 41 52 44 20 20 20 WRONG CARD
05E0 20 20 20 20 20 20 50 4C 45 41 53 45 20 57 41 49 PLEASE WAI
05F0 54 20 20 20 20 20 20 20 52 45 4D 4F 56 45 20 59 T REMOVE Y
0600 4F 55 52 20 43 41 52 44 20 20 20 20 20 20 43 52 OUR CARD CR
0610 45 44 49 54 3A 5A 45 52 4F 20 20 20 20 20 20 20 EDIT:ZERO
0620 20 43 41 52 44 20 52 45 4A 45 43 54 45 44 20 20 CARD REJECTED
0630 20 20 20 20 20 20 20 20 20 20 50 55 4C 53 45 53 PULSES
0640 20 20 20 20 20 20 20 20 20 20 50 4C 45 41 53 45 PLEASE
0650 20 44 49 41 4C 20 20 20 20 20 20 20 20 20 20 20 DIAL
0660 20 46 41 55 4C 54 20 20 20 20 20 20 20 20 20 20 FAULT
0670 20 43 48 41 4E 47 45 20 43 41 52 44 20 3F 20 20 CHANGE CARD ?
0680 20 20 20 20 20 20 20 20 4E 45 57 20 43 41 52 44 NEW CARD
0690 20 20 20 20 20 20 20 20 20 48 41 4E 47 20 55 50 HANG UP
06A0 20 41 54 20 45 4E 44 20 20 20 20 20 20 20 20 20 AT END
06B0 4F 46 20 43 41 4C 4C 20 20 20 20 20 20 20 20 20 OF CALL
06C0 20 49 4E 43 4F 4D 49 4E 47 20 43 41 4C 4C 20 20 INCOMING CALL
06D0 20 20 20 20 20 4E 4F 54 20 41 43 43 45 53 53 49 NOT ACCESSI
06E0 42 4C 45 20 20 20 20 20 20 20 20 20 20 20 20 20 BLE
06F0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0700 20 20 54 4F 4B 45 4E 53 20 20 20 20 20 20 20 20 TOKENS
0710 20 20 20 53 47 41 4E 43 49 41 52 45 20 20 20 20 SGANCIARE
0720 20 20 20 20 28 20 20 29 20 41 50 50 41 52 45 43 ( ) APPAREC
0730 43 48 49 4F 20 20 20 20 20 46 55 4F 52 49 20 53 CHIO FUORI S
0740 45 52 56 49 5A 49 4F 20 20 20 20 20 28 20 20 29 ERVIZIO ( )
0750 20 53 4F 4C 4F 20 20 20 20 20 20 20 20 20 20 20 SOLO
0760 20 4E 55 4D 45 52 49 20 47 52 41 54 49 53 20 20 NUMERI GRATIS
0770 20 20 20 20 49 4E 54 52 4F 44 55 52 52 45 20 43 INTRODURRE C
0780 41 52 54 41 20 20 20 20 4E 55 4D 45 52 4F 20 43 ARTA NUMERO C
0790 48 49 41 4D 41 54 4F 3A 20 20 20 20 20 20 52 49 HIAMATO: RI
07A0 41 47 47 41 4E 43 49 41 52 45 20 20 20 20 20 20 AGGANCIARE
07B0 43 41 52 54 41 20 4E 4F 20 56 41 4C 49 44 41 20 CARTA NO VALIDA
07C0 20 20 20 20 20 20 20 41 54 54 45 4E 44 45 52 45 ATTENDERE
07D0: 20 20 20 20 20 20 20 20 20 52 49 54 49 52 41 52 RITIRAR

07E0: 45 20 43 41 52 54 41 20 20 20 20 20 20 20 43 52 E CARTA CR
07F0: 45 44 49 54 4F 3A 5A 45 52 4F 20 20 20 20 20 20 EDITO:ZERO
0800: 43 41 52 54 41 20 4E 4F 4E 20 56 41 4C 49 44 41 CARTA NON VALIDA
0810: 20 20 20 20 20 20 20 20 20 20 55 4E 49 54 41 27 UNITA'
0820: 20 20 20 20 20 20 20 20 20 46 41 52 45 20 49 4C FARE IL
0830: 20 4E 55 4D 45 52 4F 20 20 20 20 20 20 20 20 20 NUMERO
0840: 41 4E 4F 4D 41 4C 49 41 20 20 20 20 20 20 20 20 ANOMALIA
0850: 43 41 4D 42 49 4F 20 44 49 20 43 41 52 54 41 3F CAMBIO DI CARTA?
0860: 20 20 20 20 20 20 4E 55 4F 56 41 20 43 41 52 54 NUOVA CART
0870: 41 20 20 20 20 20 20 20 20 52 49 41 54 54 41 43 A RIATTAC
0880: 43 41 54 45 20 41 20 20 20 20 20 20 46 49 4E 45 CATE A FINE
0890: 20 44 45 20 43 48 49 41 4D 41 54 41 20 20 20 20 DE CHIAMATA
08A0: 43 48 49 41 4D 41 54 41 20 41 52 52 49 56 4F 20 CHIAMATA ARRIVO
08B0: 20 20 20 20 20 4E 4F 20 41 43 43 45 53 53 49 42 NO ACCESSIB
08C0: 49 4C 45 20 20 20 20 20 20 20 20 20 20 20 20 20 ILE
08D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
08E0: 20 20 47 45 54 54 4F 4E 45 53 20 20 20 20 20 20 GETTONES
08F0: 20 20 20 44 45 43 52 4F 43 48 45 5A 20 20 20 20 DECROCHEZ
0900: 20 20 20 20 28 20 20 29 20 41 50 50 41 52 45 49 ( ) APPAREI
0910: 4C 20 20 20 20 20 20 20 20 48 4F 52 53 20 53 45 L HORS SE
0920: 52 56 49 43 45 20 20 20 20 20 20 20 28 20 20 29 RVICE ( )
0930: 20 53 45 55 4C 45 4D 45 4E 54 20 20 20 20 20 20 SEULEMENT
0940: 4E 55 4D 45 52 4F 53 20 47 52 41 54 55 49 54 53 NUMEROS GRATUITS
0950: 20 20 20 20 49 4E 54 52 4F 44 55 49 52 45 20 43 INTRODUIRE C
0960: 41 52 54 45 20 20 20 20 20 4E 55 4D 45 52 4F 20 ARTE NUMERO
0970: 41 50 50 45 4C 45 3A 20 20 20 20 20 20 52 41 43 APPELE: RAC
0980: 43 52 4F 43 48 45 5A 20 53 56 50 20 20 20 20 20 CROCHEZ SVP
0990: 20 4E 4F 4E 20 55 54 49 4C 49 53 41 42 4C 45 20 NON UTILISABLE
09A0: 20 20 20 20 20 50 41 54 49 45 4E 54 45 5A 20 53 PATIENTEZ S
09B0: 56 50 20 20 20 20 20 20 52 45 54 49 52 45 5A 20 VP RETIREZ
09C0: 4C 41 20 43 41 52 54 45 20 20 20 20 20 43 52 45 LA CARTE CRE
09D0: 44 49 54 3A 45 50 55 49 53 45 20 20 20 20 20 20 DIT:EPUISE
09E0: 20 43 41 52 54 45 20 52 45 46 55 53 45 45 20 20 CARTE REFUSEE
09F0: 20 20 20 20 20 20 20 20 20 20 55 4E 49 54 45 53 UNITES
0A00: 20 20 20 20 20 20 20 20 20 20 20 4E 55 4D 45 52 NUMER
0A10: 4F 54 45 5A 20 20 20 20 20 20 20 20 20 20 20 20 OTEZ
0A20: 41 4E 4F 4D 41 4C 49 45 20 20 20 20 20 20 20 20 ANOMALIE
0A30: 20 43 48 41 4E 47 45 52 20 43 41 52 54 45 3F 20 CHANGER CARTE?
0A40: 20 20 20 20 20 4E 4F 55 56 45 4C 4C 45 20 43 41 NOUVELLE CA
0A50: 52 54 45 20 20 20 20 20 52 41 43 43 52 4F 43 48 RTE RACCROCH
0A60: 452 5A 20 41 50 52 45 53 20 20 20 20 4C 41 20 43 EZ APRES LA C
0A70: 4F 4D 4D 55 4E 49 43 41 54 49 4F 4E 20 20 20 20 OMMUNICATION
0A80: 20 41 50 50 45 4C 20 41 52 52 49 56 45 45 20 20 APPEL ARRIVEE
0A90: 20 20 20 20 41 50 50 45 4C 20 49 4D 50 4F 53 53 APPEL IMPOSS
0AA0: 49 42 4C 45 20 20 20 20 20 20 20 20 20 20 20 20 IBLE
0AB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0AC0: 20 20 4A 45 54 4F 4E 53 20 20 20 20 20 20 20 20 JETONS

; Delay()

LD A,0FFH ; 0AD0
LD (06028H),A ; 0AD2
LD A,(06028H) ; 0AD5
DEC A ; 0AD8
LD (06028H),A ; 0AD9
JR NZ,00AD5H ; 0ADC
RET ; 0ADE

XOR A ; 0ADF
LD (065E9H),A ; 0AE0
LD BC,00184H ; 0AE3 Write '( ) FUERA '
LD HL,00198H ; 0AE6 ' DE SERVICIO '
XOR A ; 0AE9
SET 0,A ; 0AEA En el lugar del ' ' Pone (65B8)
JP 00D8DH ; 0AEC

XOR A ; 0AEF
LD (065E9H),A ; 0AF0
LD BC,001D4H ; 0AF3 Write 'INSERTE TARJETA '
LD HL,00328H ; 0AF6 ' '
XOR A ; 0AF9
JP 00D8DH ; 0AFA

XOR A ; 0AFD
LD (065E9H),A ; 0AFE
LD BC,001E8H ; 0B01 Write 'NUMERO MARCADO '
LD HL,00328H ; 0B04 ' '
XOR A ; 0B07
SET 5,A ; 0B08 Pone el Numero Marcado en la segunda
JP 00D8DH ; 0B0A linea del buffer

LD BC,(06670H) ; 0B0D Repite la linea de arriba
LD HL,001FCH ; 0B11 ' CUELGUE '
LD A,(06674H) ; 0B14
AND 007H ; 0B17
JP 00D8DH ; 0B19

LD A,001H ; 0B1C Actualiza el Indicador de Pulsos
LD (065E9H),A ; 0B1E
LD A,(06606H) ; 0B21 Carga flag pulsos/fichas
CP 003H ; 0B24
LD BC,00274H ; 0B26 Write ' PULSOS '
JR NZ,00B2EH ; 0B29
LD BC,0033CH ; 0B2B Write ' FICHAS '
LD HL,(06672H) ; 0B2E
LD A,(06674H) ; 0B31
AND 0F8H ; 0B34
SET 2,A ; 0B36 Write Nro de Pulsos restantes
JP 00D8DH ; 0B38

LD A,001H ; 0B3B
LD (065E9H),A ; 0B3D
CALL 03CB4H ; 0B40 Prende el Bit 7 del Port 61 y 641E=2
LD BC,0024CH ; 0B43 Write ' CREDITO AGOTADO '
LD HL,001FCH ; 0B46 ' CUELGUE '
XOR A ; 0B49
JP 00D8DH ; 0B4A

LD A,001H ; 0B4D
LD (065E9H),A ; 0B4F
CALL 03CB4H ; 0B52 Prende el Bit 7 del Port 61 y 641E=2
LD BC,00210H ; 0B55 Write ' INUTILIZABLE '
LD HL,00328H ; 0B58 ' '
XOR A ; 0B5B
JP 00D8DH ; 0B5C

XOR A ; 0B5F
LD (065E9H),A ; 0B60
LD BC,00224H ; 0B63 Write 'ESPERE POR FAVOR '
LD HL,00328H ; 0B66 ' '
XOR A ; 0B69
JP 00D8DH ; 0B6A

LD A,001H ; 0B6D
LD (065E9H),A ; 0B6F
CALL 03CB4H ; 0B72 Prende el Bit 7 del Port 61 y 641E=2
LD BC,00260H ; 0B75 Write 'TARJETA INVALIDA '
LD HL,001FCH ; 0B78 ' CUELGUE '
XOR A ; 0B7B
JP 00D8DH ; 0B7C

LD A,001H ; 0B7F
LD (065E9H),A ; 0B81
CALL 03CB4H ; 0B84 Prende el Bit 7 del Port 61 y 641E=2
LD A,(06606H) ; 0B87 (6606h)=3 => FICHAS =/=> PULSOS
CP 003H ; 0B8A
LD BC,00274H ; 0B8C Write ' PULSOS '
JR NZ,00B94H ; 0B8F
LD BC,0033CH ; 0B91 Write ' FICHAS '
LD HL,002B0H ; 0B94 ' OTRA TARJETA ? '
XOR A ; 0B97
SET 2,A ; 0B98 Write Nro de Pulsos restantes
JP 00D8DH ; 0B9A

LD A,001H ; 0B9D
LD (065E9H),A ; 0B9F
LD A,(06606H) ; 0BA2 (6606h)=3 => FICHAS =/=> PULSOS
CP 003H ; 0BA5
LD BC,00274H ; 0BA7 Write ' PULSOS '
JR NZ,00BAFH ; 0BAA
LD BC,0033CH ; 0BAC Write ' FICHAS '
LD HL,002C4H ; 0BAF ' NUEVA TARJETA '
XOR A ; 0BB2
SET 2,A ; 0BB3 Write Nro de Pulsos restantes
JP 00D8DH ; 0BB5

CALL 03CB4H ; 0BB8 Prende el Bit 7 del Port 61 y 641E=2
LD A,(065E9H) ; 0BBB
OR A ; 0BBE
JR NZ,00BCEH ; 0BBF
LD A,(06674H) ; 0BC1
AND 0F8H ; 0BC4
LD (06674H),A ; 0BC6
LD BC,00328H ; 0BC9 ' '
JR 00BD2H ; 0BCC
LD BC,(06670H) ; 0BCE Mantiene la linea superior
LD HL,00238H ; 0BD2 'RETIRAR TARJETA '
LD A,(06674H) ; 0BD5
AND 007H ; 0BD8
JP 00D8DH ; 0BDA

XOR A ; 0BDD
LD (065E9H),A ; 0BDE
LD BC,002D8H ; 0BE1 Write 'CUELGUE DESPUES '
LD HL,002ECH ; 0BE4 'DE LA LLAMADA '
XOR A ; 0BE7
JP 00D8DH ; 0BE8

LD A,001H ; 0BEB
LD (065E9H),A ; 0BED
LD A,(06606H) ; 0BF0 (6606h)=3 => FICHAS =/=> PULSOS
CP 003H ; 0BF3
LD BC,00274H ; 0BF5 Write ' PULSOS '
JR NZ,00BFDH ; 0BF8 ' MARQUE EL NUMERO '
LD BC,0033CH ; 0BFA Write ' FICHAS '
LD HL,00288H ; 0BFD ' MARQUE EL NUMERO '
XOR A ; 0C00
SET 2,A ; 0C01 Write Nro de Pulsos restantes
JP 00D8DH ; 0C03

CALL 03CB4H ; 0C06 Prende el Bit 7 del Port 61 y 641E=2
LD A,001H ; 0C09
LD (065E9H),A ; 0C0B
LD A,(06606H) ; 0C0E (6606h)=3 => FICHAS =/=> PULSOS
CP 003H ; 0C11
LD BC,00274H ; 0C13 Write ' PULSOS '
JR NZ,00C1BH ; 0C16 'RETIRAR TARJETA '
LD BC,0033CH ; 0C18 Write ' FICHAS '
LD HL,00238H ; 0C1B 'RETIRAR TARJETA '
XOR A ; 0C1E
SET 2,A ; 0C1F Write Nro de Pulsos restantes
JP 00D8DH ; 0C21

CALL 03CB4H ; 0C24 Prende el Bit 7 del Port 61 y 641E=2
LD A,001H ; 0C27 Write ' PROBLEMA '
LD (065E9H),A ; 0C29 ' CUELGUE '
LD BC,0029CH ; 0C2C
LD HL,001FCH ; 0C2F
XOR A ; 0C32
JP 00D8DH ; 0C33

CALL 03CB4H ; 0C36 Prende el Bit 7 del Port 61 y 641E=2
LD A,001H ; 0C39 Repite la linea de arriva y
LD (065E9H),A ; 0C3B ' PROBLEMA '
LD BC,(06670H) ; 0C3E
LD HL,0029CH ; 0C42
LD A,(06674H) ; 0C45
AND 007H ; 0C48
JP 00D8DH ; 0C4A

XOR A ; 0C4D Write 'CIERRE LA PUERTA '
LD (065E9H),A ; 0C4E ' '
LD HL,00000H ; 0C51
LD (06650H),HL ; 0C54
LD BC,00120H ; 0C57
LD HL,00328H ; 0C5A
XOR A ; 0C5D
JP 00D8DH ; 0C5E

XOR A ; 0C61 Write ' PRUEBA TECLADO '
LD (065E9H),A ; 0C62 ' '
LD HL,00000H ; 0C65
LD (06650H),HL ; 0C68
LD BC,00134H ; 0C6B
LD HL,00328H ; 0C6E
XOR A ; 0C71
SET 3,A ; 0C72 Caracter 10 de la linea 2 = (643A)
JP 00D8DH ; 0C74

LD HL,00000H ; 0C77 Write ' PRUEBA ESPIA ?

  
'
LD (06650H),HL ; 0C7A ' '
LD BC,00148H ; 0C7D
LD HL,00328H ; 0C80
LD A,010H ; 0C83
LD (06600H),A ; 0C85
XOR A ; 0C88
SET 5,A ; 0C89 Cambia la linea 2 del Display Buffer
JP 00D8DH ; 0C8B

LD HL,00000H ; 0C8E
LD (06650H),HL ; 0C91
LD BC,0015CH ; 0C94 Write ' INICIALIZACION ? '
LD HL,00328H ; 0C97 ' '
XOR A ; 0C9A
JP 00D8DH ; 0C9B

XOR A ; 0C9E
LD (065E9H),A ; 0C9F
LD BC,00170H ; 0CA2 Write ' DESCUELGUE '
LD HL,00328H ; 0CA5 ' '
XOR A ; 0CA8
JP 00D8DH ; 0CA9

XOR A ; 0CAC
LD (065E9H),A ; 0CAD
LD BC,00170H ; 0CB0 Write ' DESCUELGUE '
LD HL,00300H ; 0CB3 'LLAMADA ENTRANTE '
XOR A ; 0CB6
JP 00D8DH ; 0CB7

CALL 03CB4H ; 0CBA Prende el Bit 7 del Port 61 y 641E=2
LD A,001H ; 0CBD
LD (065E9H),A ; 0CBF
LD BC,00314H ; 0CC2 Write ' NO ACCESIBLE '
LD HL,001FCH ; 0CC5 ' CUELGUE '
XOR A ; 0CC8
JP 00D8DH ; 0CC9

XOR A ; 0CCC
LD (065E9H),A ; 0CCD
LD BC,001ACH ; 0CD0 Write ' ( ) SOLO '
LD HL,001C0H ; 0CD3 ' EMERGENCIAS '
XOR A ; 0CD6
SET 0,A ; 0CD7 En el lugar del ' ' Pone (65B8)
JP 00D8DH ; 0CD9

LD A,001H ; 0CDC
LD (065E9H),A ; 0CDE
CALL 03CB4H ; 0CE1 Prende el Bit 7 del Port 61 y 641E=2
LD A,(06606H) ; 0CE4 (6606h)=3 => FICHAS =/=> PULSOS
CP 003H ; 0CE7
LD BC,00274H ; 0CE9 Write ' PULSOS '
JR NZ,00CF1H ; 0CEC ' MARQUE EL NUMERO '
LD BC,0033CH ; 0CEE Write ' FICHAS '
LD HL,00288H ; 0CF1 ' MARQUE EL NUMERO '
XOR A ; 0CF4
SET 2,A ; 0CF5 Write Nro de Pulsos restantes
JP 00D8DH ; 0CF7

LD A,001H ; 0CFA
LD (065E9H),A ; 0CFC
LD A,(06606H) ; 0CFF (6606h)=3 => FICHAS =/=> PULSOS
CP 003H ; 0D02
LD BC,00274H ; 0D04 Write ' PULSOS '
JR NZ,00D0CH ; 0D07 ' ESPERE POR FAVOR '
LD BC,0033CH ; 0D09 Write ' FICHAS '
LD HL,00224H ; 0D0C ' ESPERE POR FAVOR '
XOR A ; 0D0F
SET 2,A ; 0D10 Write Nro de Pulsos restantes
JP 00D8DH ; 0D12

LD A,001H ; 0D15 Actuaiza los pulsos Arriva y
LD (065E9H),A ; 0D17 Repite la linea de abajo
LD BC,00328H ; 0D1A
LD HL,(06672H) ; 0D1D
LD A,(06674H) ; 0D20
AND 0F8H ; 0D23
JP 00D8DH ; 0D25

LD BC,(06670H) ; 0D28 Borra la linea de abajo
LD HL,00328H ; 0D2C y repite la de arriva
LD A,(06674H) ; 0D2F
AND 007H ; 0D32
JP 00D8DH ; 0D34

LD A,001H ; 0D37 Init Display
OUT (0E0H),A ; 0D39 (E0h)=01
CALL 00AD0H ; 0D3B Delay
LD A,038H ; 0D3E
OUT (0E0H),A ; 0D40 (E0h)=38
CALL 00AD0H ; 0D42 Delay
LD A,00CH ; 0D45
OUT (0E0H),A ; 0D47 (E0h)=0C
CALL 00AD0H ; 0D49 Delay
LD A,006H ; 0D4C
OUT (0E0H),A ; 0D4E (E0h)=06
CALL 00AD0H ; 0D50 Delay
LD HL,06000H ; 0D53
LD A,020H ; 0D56
LD B,028H ; 0D58
LD (HL),A ; 0D5A
INC HL ; 0D5B Fill Display Buffer with Spaces
DJNZ 00D5AH ; 0D5C
LD A,040H ; 0D5E
OUT (0E0H),A ; 0D60 E0=40
CALL 00AD0H ; 0D62 Delay
LD HL,00100H ; 0D65
LD B,008H ; 0D68
CALL 00EACH ; 0D6A 8*(10xIn(E0), Out(E1h,HL++))
LD HL,00108H ; 0D6D
LD B,008H ; 0D70
CALL 00EACH ; 0D72 8*(10xIn(E0), Out(E1h,HL++))
LD HL,00110H ; 0D75
LD B,008H ; 0D78
CALL 00EACH ; 0D7A 8*(10xIn(E0), Out(E1h,HL++))
LD HL,00118H ; 0D7D
LD B,008H ; 0D80
CALL 00EACH ; 0D82 8*(10xIn(E0), Out(E1h,HL++))
LD A,080H ; 0D85
OUT (0E0H),A ; 0D87
CALL 00AD0H ; 0D89 Delay
RET ; 0D8C

LD (06674H),A ; 0D8D
LD (06670H),BC ; 0D90
LD (06672H),HL ; 0D94
CALL 00D9BH ; 0D97 Imprime (6670)&(6672), Vars=(6674)
RET ; 0D9A



CALL 00DFBH ; 0D9B Copy (6670h)->6000 y (6672)->6014 20 byte
con el idioma correspondiente (6650h)
CALL 00E1CH ; 0D9E Pone las variables en el Display Buffer
LD A,002H ; 0DA1
OUT (0E0H),A ; 0DA3 E0=02
CALL 00AD0H ; 0DA5 Delay
LD A,(07C00H) ; 0DA8
BIT 1,A ; 0DAB
JR NZ,00DB9H ; 0DAD
LD HL,06000H ; 0DAF
LD B,014H ; 0DB2
CALL 00EACH ; 0DB4 20d*(10xIn(E0), Out(E1h,HL++))
JR 00DC4H ; 0DB7
CALL 00E78H ; 0DB9 In(E0), Out(E1,20h)
LD HL,06000H ; 0DBC
LD B,014H ; 0DBF
CALL 00EACH ; 0DC1 20d*(10xIn(E0), Out(E1h,HL++))
IN A,(0E0H) ; 0DC4
LD A,0C0H ; 0DC8
OUT (0E0H),A ; 0DCA Out(E0,C0h)
CALL 00AD0H ; 0DCC Delay
LD A,(07C00H) ; 0DCF
BIT 1,A ; 0DD2
JR NZ,00DE0H ; 0DD4
LD HL,06014H ; 0DD6
LD B,014H ; 0DD9
CALL 00EACH ; 0DDB 20d*(10xIn(E0), Out(E1h,HL++))
JR 00DEBH ; 0DDE
CALL 00E78H ; 0DE0 In(E0), Out(E1,20h)
LD HL,06014H ; 0DE3
LD B,012H ; 0DE6
CALL 00EACH ; 0DE8 20d*(10xIn(E0), Out(E1h,HL++))
CALL 00DEFH ; 0DEB Turn Light ON and Set Light Timer = 3s
RET ; 0DEE

LD A,003H ; 0DEF Turn Light ON and Set Light Timer = 3s
LD (0641FH),A ; 0DF1 Timer 7B
IN A,(061H) ; 0DF4
SET 5,A ; 0DF6
OUT (061H),A ; 0DF8
RET ; 0DFA

LD DE,(06670H) ; 0DFB
LD HL,(06650H) ; 0DFF
ADD HL,DE ; 0E02
LD BC,00014H ; 0E03
LD DE,06000H ; 0E06
LDIR ; 0E09
LD DE,(06672H) ; 0E0B
LD HL,(06650H) ; 0E0F
ADD HL,DE ; 0E12
LD BC,00014H ; 0E13
LD DE,06014H ; 0E16
LDIR ; 0E19
RET ; 0E1B

; Formatea las variables para la salida por el Display y las
; pone en el Display Buffer
; Input: A: Bit 0=1 Buffer[1,1..2]=Word(65B8) ['CC','CI','??']
; Bit 2=1 Buffer[1,1..4]=ASCII String de Nro de Pulsos
; Bit 3=1 Buffer[2,10] = Byte (643A)
; Bit 5=1 Buffer[2,0..16] = (65F0++)

LD A,(06674H) ; 0E1C
BIT 5,A ; 0E1F
CALL NZ,00E41H ; 0E21
BIT 0,A ; 0E24
CALL NZ,00E66H ; 0E26 Word (6001) = Word (65B8)
BIT 2,A ; 0E29
CALL NZ,00E34H ; 0E2B Nro de Pulsos -> Display Buffer
BIT 3,A ; 0E2E
CALL NZ,00E6FH ; 0E30 Byte (601E) = Byte (643A)
RET ; 0E33
;---------------------------------------------
PUSH AF ; 0E34
LD IY,06001H ; 0E35
LD DE,0661EH ; 0E39 Carga en DE los pulsos restantes
CALL 04042H ; 0E3C Makes 6001->ASCII String of Word(661E)
POP AF ; 0E3F
RET ; 0E40

PUSH AF ; 0E41 Pone o no (dependiendo del valor de
LD HL,065F0H ; 0E42 (6600) y (6675)) algo en la segunda
LD DE,06014H ; 0E45 linea del Display Buffer
LD A,(06675H) ; 0E48
OR A ; 0E4B
JR NZ,00E5FH ; 0E4C
LD A,(06600H) ; 0E4E
LD B,A ; 0E51
OR A ; 0E52
JR Z,00E64H ; 0E53
LD A,(HL) ; 0E55
OR 030H ; 0E56
LD (DE),A ; 0E58
INC HL ; 0E59
INC DE ; 0E5A
DJNZ 00E55H ; 0E5B
JR 00E64H ; 0E5D
LD BC,00010H ; 0E5F
LDIR ; 0E62
POP AF ; 0E64
RET ; 0E65

PUSH AF ; 0E66 Word (6001) = Word (65B8)
LD HL,(065B8H) ; 0E67
LD (06001H),HL ; 0E6A
POP AF ; 0E6D
RET ; 0E6E

PUSH AF ; 0E6F Byte (601E) = Byte (643A)
LD A,(0643AH) ; 0E70
LD (0601EH),A ; 0E73
POP AF ; 0E76
RET ; 0E77

IN A,(0E0H) ; 0E78 In(E0), Out(E1,20h)
LD A,020H ; 0E7A
OUT (0E1H),A ; 0E7C
;
ORG 00E7FH
IN A,(0E0H) ; 0E7F
IN A,(0E0H) ; 0E81
IN A,(0E0H) ; 0E83
IN A,(0E0H) ; 0E85
IN A,(0E0H) ; 0E87
IN A,(0E0H) ; 0E89
IN A,(0E0H) ; 0E8B
IN A,(0E0H) ; 0E8D
IN A,(0E0H) ; 0E8F
IN A,(0E0H) ; 0E91
LD A,020H ; 0E93
OUT (0E1H),A ; 0E95
IN A,(0E0H) ; 0E97
IN A,(0E0H) ; 0E99
IN A,(0E0H) ; 0E9B
IN A,(0E0H) ; 0E9D
IN A,(0E0H) ; 0E9F
IN A,(0E0H) ; 0EA1
IN A,(0E0H) ; 0EA3
IN A,(0E0H) ; 0EA5
IN A,(0E0H) ; 0EA7
IN A,(0E0H) ; 0EA9
RET ; 0EAB

; Stringout

IN A,(0E0H) ; 0EAC B*(10xIn(E0), Out(E1h,HL++))
IN A,(0E0H) ; 0EAE
IN A,(0E0H) ; 0EB0
IN A,(0E0H) ; 0EB2
IN A,(0E0H) ; 0EB4
IN A,(0E0H) ; 0EB6
IN A,(0E0H) ; 0EB8
IN A,(0E0H) ; 0EBA
IN A,(0E0H) ; 0EBC
IN A,(0E0H) ; 0EBE
LD A,(HL) ; 0EC0
OUT (0E1H),A ; 0EC1
INC HL ; 0EC3
DJNZ 00EACH ; 0EC4
RET ; 0EC6

; main()

DI ; 0EC7
CALL 028C8H ; 0EC8 Inicializa muchos Ports, El Display,
; Llena 61CD-6679 con 0
; Escribe 'ESPERE POR FAVOR' y decodifica
; un area de la ROM que pasa a RAM.
CALL 029D6H ; 0ECB Init Buffers & Idioma
CALL 02978H ; 0ECE Init 6448,6449,644A,6677,6678
; Scan Keyboard
; Fuera de Servicio Timer = 5700d
EI ; 0ED1
CALL 03B2EH ; 0ED2 Changes P02,P46,P41,P61,P40,(6604h)=0
LD A,001H ; 0ED5
CALL 00F16H ; 0ED7 Push #9 (01h,(642Eh),FFh,90+Fichas)
LD A,002H ; 0EDA
LD (06419H),A ; 0EDC
LD A,(06419H) ; 0EDF
OR A ; 0EE2
JR NZ,00EDFH ; 0EE3 Wait 2 Seconds
LD A,00EH ; 0EE5
CALL 03F5BH ; 0EE7 Put Buffer #7 (Internal Commands)
LD A,002H ; 0EEA
LD (0644BH),A ; 0EEC (644Bh)=02h

; Main LOOP

LD A,(0644BH) ; 0EEF
CP 002H ; 0EF2
JR NZ,00EFCH ; 0EF4
CALL 02AB1H ; 0EF6
JP 00EEFH ; 0EF9
CP 005H ; 0EFC
JR NZ,00F06H ; 0EFE
CALL 0171EH ; 0F00
JP 00EEFH ; 0F03
CP 006H ; 0F06
JP NZ,00F11H ; 0F08
CALL 01417H ; 0F0B
JP 00EEFH ; 0F0E
CALL 02758H ; 0F11
JR 00EEFH ; 0F14 Loop Main LOOP

PUSH AF ; 0F16 Push #9 (A,(642Eh),FFh,90+Fichas)
PUSH BC ; 0F17
CALL 03FBCH ; 0F18 Put Log Buffer
LD A,(0642EH) ; 0F1B
CALL 03FBCH ; 0F1E Put Log Buffer
LD A,0FFH ; 0F21
CALL 03FBCH ; 0F23 Put Log Buffer
LD A,(06606H) ; 0F26 (6606h):3 == FICHAS: 1 == PULSOS
LD B,A ; 0F29
LD A,090H ; 0F2A
OR B ; 0F2C
CALL 03FBCH ; 0F2D Put Log Buffer
POP BC ; 0F30
POP AF ; 0F31
RET ; 0F32

LD A,011H ; 0F33
LD (06552H),A ; 0F35
; Inicializacion de tarjeta?
CALL 03C26H ; 0F38 2xIn(61h), Out(66h,13h), Out(67h,E6h)

CALL 03940H ; 0F3B ; Lectura de tarjeta?
LD A,(0642CH) ; 0F3E ; Cambio de tarjeta ...
BIT 3,A ; 0F41
JR NZ,00FAEH ; 0F43
LD A,(06450H) ; 0F45
CP VOL_KEY ; 0F48
JR Z,00F51H ; 0F4A
CALL 0117EH ; 0F4C ; *
JR 00FAEH ; 0F4F
LD A,(06451H) ; 0F51
CP 008H ; 0F54
JR NZ,00F71H ; 0F56
LD A,(0645BH) ; 0F58
CP 00AH ; 0F5B
JR NZ,00F64H ; 0F5D
CALL 011F1H ; 0F5F Write 'TARJETA INVALIDA | CUELGUE'
JR 00FAEH ; 0F62
CALL 00FB9H ; 0F64
CALL 03C42H ; 0F67 (P61.4)=0 (P61.2)=0 (P66)=0 (P67)=0
LD A,001H ; 0F6A
LD (06606H),A ; 0F6C (6606h)=1 => PULSOS
JR 00F87H ; 0F6F
CP 009H ; 0F71
JR NZ,00F82H ; 0F73
CALL 00FFBH ; 0F75
CALL 03C42H ; 0F78 (P61.4)=0 (P61.2)=0 (P66)=0 (P67)=0
LD A,003H ; 0F7B
LD (06606H),A ; 0F7D (6606h)=3 => FICHAS
JR 00F87H ; 0F80
CALL 011ECH ; 0F82 Write 'INUTILIZABLE | '
JR 00FAEH ; 0F85
LD A,(06606H) ; 0F87 (6606h)=3 => FICHAS =/=> PULSOS
CP 001H ; 0F8A
JR Z,00F92H ; 0F8C
CP 003H ; 0F8E
JR NZ,00FAEH ; 0F90
LD B,006H ; 0F92
LD DE,06624H ; 0F94
LD HL,06665H ; 0F97
CALL 04080H ; 0F9A CmpStrings (HL) & (DE). B = Len
JR NZ,00FAEH ; 0F9D
LD A,(0662EH) ; 0F9F
LD C,A ; 0FA2
LD A,(0666FH) ; 0FA3
CP C ; 0FA6
JR NZ,00FAEH ; 0FA7
LD A,001H ; 0FA9
LD (06623H),A ; 0FAB
XOR A ; 0FAE
LD (06610H),A ; 0FAF
LD (06611H),A ; 0FB2
CALL 01A6EH ; 0FB5
RET ; 0FB8

CALL 01062H ; 0FB9 Copy (6452..) -> (6624..) & Decodes
XOR A ; 0FBC
LD B,A ; 0FBD
LD A,(0662FH) ; 0FBE
CP 000H ; 0FC1
JR Z,00FD4H ; 0FC3
CP 001H ; 0FC5
JR Z,00FD4H ; 0FC7
CP 00BH ; 0FC9
JR Z,00FD4H ; 0FCB
CP 00CH ; 0FCD
JR Z,00FF7H ; 0FCF
LD A,001H ; 0FD1
LD B,A ; 0FD3
LD A,(0645CH) ; 0FD4
BIT 6,A ; 0FD7
JR NZ,00FDEH ; 0FD9
XOR A ; 0FDB
JR 00FE0H ; 0FDC
LD A,040H ; 0FDE
OR B ; 0FE0
LD (0662FH),A ; 0FE1
OR A ; 0FE4
JR NZ,00FFAH ; 0FE5 RET
LD HL,(0662CH) ; 0FE7 Fichas Restantes
LD (0661CH),HL ; 0FEA Fichas Restantes
LD (06620H),HL ; 0FED Fichas Restantes
LD (0661EH),HL ; 0FF0 Fichas Restantes
LD A,H ; 0FF3
OR L ; 0FF4
JR NZ,00FFAH ; 0FF5
CALL 011E2H ; 0FF7 Write 'CREDITO AGOTADO | CUELGUE'
RET ; 0FFA
;-----------------------
;
CALL 0102EH ; 0FFB
LD B,000H ; 0FFE
OR A ; 1000
JR Z,0100DH ; 1001
CP 009H ; 1003
JR Z,0100DH ; 1005
CP 008H ; 1007
JR Z,0102AH ; 1009
LD B,001H ; 100B
INC HL ; 100D
LD A,(HL) ; 100E
BIT 6,A ; 100F
LD A,040H ; 1011
JR NZ,01016H ; 1013
XOR A ; 1015 -- Salteado
OR B ; 1016
LD (0662FH),A ; 1017
JR NZ,0102DH ; 101A
LD HL,(0662CH) ; 101C Fichas Restantes
LD (0661CH),HL ; 101F Fichas Restantes
LD (06620H),HL ; 1022 Fichas Restantes
LD (0661EH),HL ; 1025 Fichas Restantes
LD A,H ; 1028
OR L ; 1029
CALL Z,011E2H ; 102A Write 'CREDITO AGOTADO | CUELGUE'
RET ; 102D

LD HL,06452H ; 102E
LD A,(HL) ; 1031 (6452h)
LD (06624H),A ; 1032
INC HL ; 1035
LD A,(HL) ; 1036 (6453h)
LD (06625H),A ; 1037
XOR A ; 103A
LD (06626H),A ; 103B
INC HL ; 103E
LD DE,06627H ; 103F
LD BC,00003H ; 1042
LDIR ; 1045
XOR A ; 1047
LD (0662AH),A ; 1048
LD (0662BH),A ; 104B
LD A,(HL) ; 104E (6454h)
LD (0662CH),A ; 104F Fichas Restantes
INC HL ; 1052
LD A,(HL) ; 1053 (6455h)
LD (0662DH),A ; 1054
LD A,028H ; 1057
LD (0662EH),A ; 1059
INC HL ; 105C
LD A,(HL) ; 105D (6456h)
LD (0662FH),A ; 105E
RET ; 1061

LD HL,06452H ; 1062
LD A,(HL) ; 1065 (6452h)
LD (06624H),A ; 1066
INC HL ; 1069
LD A,(HL) ; 106A (6453h)
RRC A ; 106B
RRC A ; 106D
RRC A ; 106F
RRC A ; 1071
AND 00FH ; 1073
LD (06625H),A ; 1075
LD A,(HL) ; 1078 (6453h)
AND 00FH ; 1079
LD (06626H),A ; 107B
INC HL ; 107E
LD DE,06627H ; 107F
LD BC,00007H ; 1082
LDIR ; 1085
LD A,05CH ; 1087
LD (0662EH),A ; 1089
LD A,(HL) ; 108C (6454h)
LD (0662FH),A ; 108D
RET ; 1090

LD A,001H ; 1091
LD (06607H),A ; 1093
LD A,011H ; 1096
LD (06552H),A ; 1098
CALL 03C26H ; 109B 2xIn(61h), Out(66h,13h), Out(67h,E6h)
CALL 03940H ; 109E ; Lectura de tajeta ?
LD A,(0642CH) ; 10A1
BIT 3,A ; 10A4
JP NZ,01176H ; 10A6
LD A,(06450H) ; 10A9
CP VOL_KEY ; 10AC
JR Z,010B6H ; 10AE
CALL 0117EH ; 10B0
JP 01176H ; 10B3
LD A,(06451H) ; 10B6
CP 008H ; 10B9
JR Z,010F3H ; 10BB
CP 009H ; 10BD
JP NZ,01169H ; 10BF
CALL 0102EH ; 10C2
LD B,000H ; 10C5
OR A ; 10C7
JR Z,010D4H ; 10C8
CP 008H ; 10CA
JR Z,010D4H ; 10CC
CP 009H ; 10CE
JR Z,010D4H ; 10D0
LD B,001H ; 10D2
INC HL ; 10D4
LD A,(HL) ; 10D5
BIT 6,A ; 10D6
LD A,040H ; 10D8
JR NZ,010DDH ; 10DA
XOR A ; 10DC
OR B ; 10DD
LD (0662FH),A ; 10DE
LD A,(06459H) ; 10E1
CP 009H ; 10E4
JP Z,01169H ; 10E6
LD A,(06606H) ; 10E9 (6606h)=3 => FICHAS =/=> PULSOS
CP 003H ; 10EC
JP NZ,01169H ; 10EE
JR 01141H ; 10F1
LD A,(0645BH) ; 10F3
CP 00AH ; 10F6
JR Z,01169H ; 10F8
LD A,(06606H) ; 10FA (6606h)=3 => FICHAS =/=> PULSOS
CP 001H ; 10FD
JR NZ,01169H ; 10FF
LD A,(0645BH) ; 1101
CP 00CH ; 1104
JR NZ,0110FH ; 1106
XOR A ; 1108
LD (06459H),A ; 1109
LD (0645AH),A ; 110C
CALL 01062H ; 110F
XOR A ; 1112
LD B,A ; 1113
LD A,(0662FH) ; 1114
CP 000H ; 1117
JR Z,0112AH ; 1119
CP 001H ; 111B
JR Z,0112AH ; 111D
CP 00BH ; 111F
JR Z,0112AH ; 1121
CP 00CH ; 1123
JR Z,0112AH ; 1125
LD A,001H ; 1127
LD B,A ; 1129
LD A,(0645CH) ; 112A
BIT 6,A ; 112D
JR NZ,01134H ; 112F
XOR A ; 1131
JR 01136H ; 1132
LD A,040H ; 1134
OR B ; 1136
LD (0662FH),A ; 1137
LD A,(0645BH) ; 113A
CP 00BH ; 113D
JR Z,01169H ; 113F
LD A,(0662FH) ; 1141
OR A ; 1144
JR NZ,01169H ; 1145
LD HL,(0662CH) ; 1147 Fichas Restantes
LD A,H ; 114A
OR L ; 114B
JR Z,01169H ; 114C
LD BC,(0662CH) ; 114E Fichas Restantes
LD (0661CH),BC ; 1152 Fichas Restantes
LD HL,(06620H) ; 1156 Fichas Restantes
ADD HL,BC ; 1159
LD (06620H),HL ; 115A Fichas Restantes
XOR A ; 115D
LD (06610H),A ; 115E
LD (06611H),A ; 1161
CALL 01A6EH ; 1164
JR 01176H ; 1167
LD A,001H ; 1169
LD (06608H),A ; 116B
CALL 011DDH ; 116E Write '????| PROBLEMA'
LD A,005H ; 1171
LD (0641BH),A ; 1173 Timer B
XOR A ; 1176
LD (06607H),A ; 1177
CALL 03C42H ; 117A (P61.4)=0 (P61.2)=0 (P66)=0 (P67)=0
RET ; 117D

LD A,(06452H) ; 117E
CALL 011BAH ; 1181
LD A,(06451H) ; 1184
BIT 7,A ; 1187
JR NZ,011ACH ; 1189
LD A,(06451H) ; 118B
OR A ; 118E
JR Z,0119BH ; 118F
LD B,002H ; 1191
CALL 013FBH ; 1193 Log A,B,(644Fh),(6606h)
CALL 011D8H ; 1196 Write 'PROBLEMA | CUELGUE'
JR 011B4H ; 1199
LD A,(06450H) ; 119B
LD B,003H ; 119E
CALL 013FBH ; 11A0 Log A,B,(644Fh),(6606h)
CP 003H ; 11A3
JR Z,011ACH ; 11A5
CALL 011D8H ; 11A7 Write 'PROBLEMA | CUELGUE'
JR 011B4H ; 11AA
CALL 011ECH ; 11AC Write 'INUTILIZABLE | '
JR 011B4H ; 11AF
CALL 011E2H ; 11B1 Write 'CREDITO AGOTADO | CUELGUE'
LD A,005H ; 11B4
LD (0641BH),A ; 11B6 Timer B
RET ; 11B9

OR A ; 11BA
JR Z,011D7H ; 11BB RET
PUSH AF ; 11BD
CALL 011D8H ; 11BE Write 'PROBLEMA | CUELGUE'
POP AF ; 11C1
LD B,001H ; 11C2
CALL 013FBH ; 11C4 Log A,B,(644Fh),(6606h)
BIT 7,A ; 11C7
JR Z,011D7H ; 11C9
LD A,(0642DH) ; 11CB
SET 1,A ; 11CE
LD (0642DH),A ; 11D0
XOR A ; 11D3
LD (06435H),A ; 11D4
RET ; 11D7

CALL 00C24H ; 11D8 Write 'PROBLEMA | CUELGUE'
JR 011F6H ; 11DB
CALL 00C36H ; 11DD Write '????| PROBLEMA'
JR 011F6H ; 11E0
CALL 00B3BH ; 11E2 Write 'CREDITO AGOTADO | CUELGUE'61=80h
JR 011F6H ; 11E5
CALL 00B4DH ; 11E7 Write 'INUTILIZABLE | '
JR 011F6H ; 11EA
CALL 00B4DH ; 11EC Write 'INUTILIZABLE | '
JR 011F6H ; 11EF
CALL 00B6DH ; 11F1 Write 'TARJETA INVALIDA | CUELGUE'
JR 011F6H ; 11F4
LD A,005H ; 11F6
LD (0641BH),A ; 11F8 Timer B
LD A,(06607H) ; 11FB
OR A ; 11FE
JR Z,01208H ; 11FF
LD A,001H ; 1201
LD (06608H),A ; 1203
JR 01210H ; 1206
LD A,001H ; 1208
LD (065EDH),A ; 120A
CALL 03C42H ; 120D (P61.4)=0 (P61.2)=0 (P66)=0 (P67)=0
RET ; 1210

LD A,(06606H) ; 1211 (6606h)=3 => FICHAS =/=> PULSOS
CP 001H ; 1214
JR Z,0121CH ; 1216
CP 003H ; 1218
JR NZ,0122AH ; 121A
CALL 03C26H ; 121C 2xIn(61h), Out(66h,13h), Out(67h,E6h)
CALL 0122EH ; 121F
CALL 03C42H ; 1222 (P61.4)=0 (P61.2)=0 (P66)=0 (P67)=0
CALL 0129DH ; 1225
JR 0122DH ; 1228
CALL 011D8H ; 122A Write 'PROBLEMA | CUELGUE'
RET ; 122D

CALL 0125FH ; 122E
LD A,(0642CH) ; 1231
BIT 3,A ; 1234
JR NZ,0125EH ; 1236
LD HL,06452H ; 1238
LD A,(HL) ; 123B (6452h)
AND 0C4H ; 123C
JR Z,01249H ; 123E
LD A,(HL) ; 1240 (6452h)
LD B,004H ; 1241
CALL 013FBH ; 1243 Log A,B,(644Fh),(6606h)
CALL 011D8H ; 1246 Write 'PROBLEMA | CUELGUE'
LD A,(06452H) ; 1249 (6452h)
AND 0D6H ; 124C
JR Z,01258H ; 124E
LD B,A ; 1250
LD A,(0661BH) ; 1251
OR B ; 1254
LD (0661BH),A ; 1255
LD A,(06453H) ; 1258
LD (06616H),A ; 125B
RET ; 125E

XOR A ; 125F
LD (06616H),A ; 1260
LD HL,06552H ; 1263
LD A,015H ; 1266
LD (HL),A ; 1268
INC HL ; 1269
LD A,(06614H) ; 126A
LD (HL),A ; 126D
CALL 03940H ; 126E Lectura de tarjeta?
LD A,(0642CH) ; 1271
BIT 3,A ; 1274
JR NZ,0129CH ; 1276
LD A,(06450H) ; 1278
CP 052H ; 127B
JR Z,01296H ; 127D
LD B,020H ; 127F
CALL 013FBH ; 1281 Log A,B,(644Fh),(6606h)
CALL 011D8H ; 1284 Write 'PROBLEMA | CUELGUE'
LD A,001H ; 1287
LD (065EDH),A ; 1289
LD A,(0642CH) ; 128C
SET 3,A ; 128F
LD (0642CH),A ; 1291
JR 0129CH ; 1294
LD A,(06456H) ; 1296
CALL 011BAH ; 1299
RET ; 129C

XOR A ; 129D
LD D,A ; 129E
LD A,(06616H) ; 129F
LD E,A ; 12A2
LD HL,(0660CH) ; 12A3
ADD HL,DE ; 12A6
LD (0660CH),HL ; 12A7
LD HL,(0660EH) ; 12AA
ADD HL,DE ; 12AD
LD (0660EH),HL ; 12AE
LD HL,(06610H) ; 12B1
ADD HL,DE ; 12B4
LD (06610H),HL ; 12B5
LD HL,(0661CH) ; 12B8 Fichas Restantes
OR A ; 12BB
SBC HL,DE ; 12BC
LD (0661CH),HL ; 12BE Fichas Restantes
CALL 01A6EH ; 12C1
RET ; 12C4

LD A,001H ; 12C5
LD (06607H),A ; 12C7 (6607h)=01h
LD A,(06614H) ; 12CA
INC A ; 12CD
INC A ; 12CE
LD (06614H),A ; 12CF
CALL 03C26H ; 12D2 2xIn(61h), Out(66h,13h), Out(67h,E6h)
CALL 0125FH ; 12D5
CALL 03C42H ; 12D8 (P61.4)=0 (P61.2)=0 (P66)=0 (P67)=0
LD A,(0642CH) ; 12DB
BIT 3,A ; 12DE
JR NZ,0134AH ; 12E0
LD A,(06452H) ; 12E2
AND 0C4H ; 12E5
JR Z,012F2H ; 12E7
LD A,(HL) ; 12E9
LD B,004H ; 12EA
CALL 013FBH ; 12EC Log A,B,(644Fh),(6606h)
CALL 011DDH ; 12EF Write '????| PROBLEMA'
LD A,(06452H) ; 12F2
AND 0DEH ; 12F5
LD (0661BH),A ; 12F7
LD HL,06453H ; 12FA
LD A,(HL) ; 12FD (6453h)
LD B,A ; 12FE
LD A,(06614H) ; 12FF
SUB B ; 1302
LD B,A ; 1303
CP 000H ; 1304
JR NZ,01314H ; 1306
DEC (HL) ; 1308
DEC (HL) ; 1309
LD A,(06614H) ; 130A
DEC A ; 130D
DEC A ; 130E
LD (06614H),A ; 130F
JR 0133CH ; 1312
CP 001H ; 1314
JR NZ,01323H ; 1316
DEC (HL) ; 1318
LD A,(06614H) ; 1319
DEC A ; 131C
DEC A ; 131D
LD (06614H),A ; 131E
JR 0133CH ; 1321
CP 002H ; 1323
JR NZ,0132DH ; 1325
LD A,(HL) ; 1327
LD (06614H),A ; 1328
JR 0133CH ; 132B
LD A,(HL) ; 132D
LD B,004H ; 132E
CALL 013FBH ; 1330 Log A,B,(644Fh),(6606h)
PUSH HL ; 1333
CALL 011DDH ; 1334 Write '????| PROBLEMA'
POP HL ; 1337
LD A,(HL) ; 1338
LD (06614H),A ; 1339
LD A,(HL) ; 133C
LD (06616H),A ; 133D
LD (0661CH),A ; 1340 Fichas Restantes
XOR A ; 1343
LD (0661DH),A ; 1344
CALL 0129DH ; 1347
XOR A ; 134A
LD (06607H),A ; 134B
RET ; 134E
LD A,012H ; 134F
LD (06552H),A ; 1351
CALL 03C26H ; 1354 2xIn(61h), Out(66h,13h), Out(67h,E6h)
CALL 03940H ; 1357 Lectura de tarjeta?
LD A,(06606H) ; 135A (6606h)=3 => FICHAS =/=> PULSOS
CP 003H ; 135D
JR Z,0137AH ; 135F
LD A,(0642CH) ; 1361
BIT 3,A ; 1364
JR NZ,01377H ; 1366
LD A,(06452H) ; 1368
AND 090H ; 136B
LD B,A ; 136D
LD A,(06454H) ; 136E
AND 0C4H ; 1371
OR B ; 1373
LD (0661BH),A ; 1374
CALL 011BAH ; 1377
RET ; 137A

LD A,014H ; 137B
LD (06552H),A ; 137D
CALL 03C26H ; 1380 2xIn(61h), Out(66h,13h), Out(67h,E6h)
CALL 03940H ; 1383 Lectura de tarjeta?
CALL 03C42H ; 1386 (P61.4)=0 (P61.2)=0 (P66)=0 (P67)=0
RET ; 1389

LD A,018H ; 138A
LD (06552H),A ; 138C
LD B,000H ; 138F
LD A,(06448H) ; 1391
OR A ; 1394
JR NZ,013FAH ; 1395 RET
LD A,(0642CH) ; 1397
RES 3,A ; 139A
LD (0642CH),A ; 139C
LD A,(0642DH) ; 139F
BIT 1,A ; 13A2
JR Z,013ADH ; 13A4
RES 1,A ; 13A6
LD (0642DH),A ; 13A8
LD B,002H ; 13AB
LD A,(0642DH) ; 13AD
BIT 3,A ; 13B0
JR Z,013BDH ; 13B2
RES 3,A ; 13B4
LD (0642DH),A ; 13B6
LD A,001H ; 13B9
OR B ; 13BB
LD B,A ; 13BC
LD A,(0662FH) ; 13BD
AND 040H ; 13C0
LD C,A ; 13C2
LD A,(0661BH) ; 13C3
AND 040H ; 13C6
OR C ; 13C8
JR Z,013CFH ; 13C9
LD A,001H ; 13CB
OR B ; 13CD
LD B,A ; 13CE
LD A,B ; 13CF
LD (06553H),A ; 13D0
CALL 03C26H ; 13D3 2xIn(61h), Out(66h,13h), Out(67h,E6h)
CALL 03940H ; 13D6 Lectura de tarjeta?
CALL 03C42H ; 13D9 (P61.4)=0 (P61.2)=0 (P66)=0 (P67)=0
LD A,(06450H) ; 13DC
AND 080H ; 13DF
JR Z,013EBH ; 13E1
LD A,(0642DH) ; 13E3
SET 1,A ; 13E6
LD (0642DH),A ; 13E8
LD A,(06450H) ; 13EB
AND 040H ; 13EE
JR Z,013FAH ; 13F0 RET
LD A,(0642DH) ; 13F2
SET 3,A ; 13F5
LD (0642DH),A ; 13F7
RET ; 13FA

PUSH AF ; 13FB Log A,B,(644Fh),(6606h)
PUSH BC ; 13FC
CALL 03FBCH ; 13FD Put Log Buffer
LD A,B ; 1400
CALL 03FBCH ; 1401 Put Log Buffer
LD A,(0644FH) ; 1404
CALL 03FBCH ; 1407 Put Log Buffer
LD A,(06606H) ; 140A (6606h)=3 => FICHAS =/=> PULSOS
LD B,A ; 140D
LD A,050H ; 140E
OR B ; 1410
CALL 03FBCH ; 1411 Put Log Buffer
POP BC ; 1414
POP AF ; 1415
RET ; 1416

XOR A ; 1417
LD (065E6H),A ; 1418
CALL 03BAAH ; 141B (P40.6)=0
CALL 03BA1H ; 141E (P41.3) = 1 (Descuelga)
LD HL,(06425H) ; 1421 Timer 3W
LD A,H ; 1424
OR L ; 1425
JP Z,01673H ; 1426
LD A,(065EDH) ; 1429
OR A ; 142C
JP NZ,01673H ; 142D
CALL 00D9BH ; 1430 Refresca el Display
XOR A ; 1433
LD HL,(0660AH) ; 1434
PUSH HL ; 1437
POP DE ; 1438
LD BC,(0660CH) ; 1439
SBC HL,BC ; 143D
JP C,014B6H ; 143F
JP Z,014B6H ; 1442
LD (06614H),HL ; 1445
LD DE,(0661CH) ; 1448 Fichas Restantes
LD A,D ; 144C
OR E ; 144D
JR Z,0145DH ; 144E Write 'CREDITO AGOTADO | CUELGUE'61=80h
XOR A ; 1450
SBC HL,DE ; 1451
JR C,01463H ; 1453
JR Z,01463H ; 1455
CALL 00BB8H ; 1457 Write ' | RETIRAR TARJETA'
JP 01673H ; 145A
CALL 00B3BH ; 145D Write 'CREDITO AGOTADO | CUELGUE'61=80h
JP 01673H ; 1460
CALL 01211H ; 1463
LD A,(0642CH) ; 1466
AND 008H ; 1469
JP NZ,01673H ; 146B
LD HL,(065D8H) ; 146E
LD A,H ; 1471
OR L ; 1472
JR NZ,0147EH ; 1473
LD HL,(0661CH) ; 1475 Fichas Restantes
LD A,H ; 1478
OR L ; 1479
JR Z,014ABH ; 147A
JR 014B0H ; 147C
LD BC,(0661CH) ; 147E Fichas Restantes
LD DE,(065D6H) ; 1482
CALL 040B8H ; 1486 HL = BC Mod DE
PUSH BC ; 1489
LD BC,(065D8H) ; 148A
LD DE,0000AH ; 148E
CALL 040B8H ; 1491 HL = BC Mod 10
LD D,B ; 1494
LD E,C ; 1495
POP HL ; 1496
CALL 04097H ; 1497 IX:IY = HL * DE
PUSH IY ; 149A
POP HL ; 149C
LD A,H ; 149D
OR L ; 149E
JR NZ,014B0H ; 149F
PUSH IX ; 14A1
POP HL ; 14A3
LD DE,(06421H) ; 14A4 Timer 1W
ADD HL,DE ; 14A8
JR 014B3H ; 14A9
LD HL,00168H ; 14AB
JR 014B3H ; 14AE
LD HL,00E10H ; 14B0
LD (06427H),HL ; 14B3 Timer 4W
LD A,(06606H) ; 14B6 (=6606h)=3 => FICHAS =/=> PULSOS
OR A ; 14B9
JR Z,014E7H ; 14BA
XOR A ; 14BC
LD HL,(06620H) ; 14BD Fichas Restantes
LD DE,(0660AH) ; 14C0
SBC HL,DE ; 14C4
JR C,014E7H ; 14C6
LD (0661EH),HL ; 14C8 Fichas Restantes
XOR A ; 14CB
LD HL,(06614H) ; 14CC
LD A,(06616H) ; 14CF
LD D,000H ; 14D2
LD E,A ; 14D4
SBC HL,DE ; 14D5
PUSH HL ; 14D7
POP DE ; 14D8
LD HL,(0661EH) ; 14D9 Fichas Restantes
ADD HL,DE ; 14DC
LD (0661EH),HL ; 14DD Fichas Restantes
LD A,(0641BH) ; 14E0 Timer B
OR A ; 14E3
CALL Z,00B1CH ; 14E4 Actualiza el indicador de Pulsos
LD A,(06608H) ; 14E7
OR A ; 14EA
JP NZ,01599H ; 14EB
LD A,(065E6H) ; 14EE
OR A ; 14F1
JP NZ,0151BH ; 14F2
LD A,(06606H) ; 14F5 (=6606h)=3 => FICHAS =/=> PULSOS
CP 000H ; 14F8
JP Z,0151BH ; 14FA
LD HL,(06427H) ; 14FD Timer 4W
LD A,H ; 1500
OR A ; 1501
JR NZ,0151BH ; 1502
LD A,L ; 1504
CP 01FH ; 1505
JR NC,0151BH ; 1507
LD A,(07C01H) ; 1509
BIT 2,A ; 150C
JR Z,0151BH ; 150E
CALL 00B7FH ; 1510 Write ' ??? PULSOS|OTRA TARJETA?'
LD A,001H ; 1513
LD (065E8H),A ; 1515
LD (065E6H),A ; 1518
LD A,(065EBH) ; 151B
OR A ; 151E
JP Z,01599H ; 151F
LD A,(06448H) ; 1522
OR A ; 1525
JR Z,01573H ; 1526
LD A,(065E7H) ; 1528
OR A ; 152B
JR Z,01599H ; 152C
CALL 01091H ; 152E
XOR A ; 1531
LD HL,(06620H) ; 1532 Fichas Restantes
LD DE,(0660AH) ; 1535
SBC HL,DE ; 1539
JR NC,01540H ; 153B
LD HL,00000H ; 153D
LD (0661EH),HL ; 1540 Fichas Restantes
LD A,(0641BH) ; 1543 Timer B
OR A ; 1546
CALL Z,00B1CH ; 1547 Actualiza el indicador de Pulsos
LD A,000H ; 154A
LD (065E7H),A ; 154C
LD A,(06608H) ; 154F
OR A ; 1552
JR NZ,0157DH ; 1553
LD A,001H ; 1555
CALL 03F5BH ; 1557 Put Buffer #7 (Internal Commands)
XOR A ; 155A
LD (065C4H),A ; 155B
LD A,000H ; 155E
LD (065EBH),A ; 1560
CALL 00D28H ; 1563 Borra la linea de abajo
LD A,000H ; 1566
LD (065E6H),A ; 1568
LD HL,00E10H ; 156B
LD (06427H),HL ; 156E Timer 4W
JR 01599H ; 1571
CALL 00B9DH ; 1573 Write ' ??? PULSOS|NUEVA TARJETA?'
LD A,001H ; 1576
LD (065E7H),A ; 1578
JR 01599H ; 157B
LD A,(0662FH) ; 157D
OR A ; 1580
JR Z,0158CH ; 1581
LD A,001H ; 1583
CALL 03F5BH ; 1585 Put Buffer #7 (Internal Commands)
XOR A ; 1588
LD (065C4H),A ; 1589
CALL 00BB8H ; 158C Write ' | RETIRAR TARJETA'
LD A,005H ; 158F
LD (0641BH),A ; 1591 Timer B
LD A,001H ; 1594
LD (065E6H),A ; 1596
LD A,(065C4H) ; 1599
OR A ; 159C
JR Z,015C6H ; 159D
LD A,(065B4H) ; 159F
OR A ; 15A2
JR Z,015C6H ; 15A3
AND 080H ; 15A5
CALL NZ,0134FH ; 15A7
XOR A ; 15AA
LD (0661CH),A ; 15AB Fichas Restantes
LD (0661DH),A ; 15AE
LD (065B4H),A ; 15B1
LD (065E8H),A ; 15B4
LD BC,(0662CH) ; 15B7 Fichas Restantes
LD HL,(06620H) ; 15BB Fichas Restantes
SBC HL,BC ; 15BE
LD (06620H),HL ; 15C0 Fichas Restantes
JP C,01673H ; 15C3
CALL 03DA3H ; 15C6 Get Key Pressed Carry On Error
JP C,01655H ; 15C9
CP Cortar_Key ; 15CC
JP NZ,01613H ; 15CE
LD A,(07C01H) ; 15D1
BIT 3,A ; 15D4
JP Z,01673H ; 15D6
LD A,(065CDH) ; 15D9
OR A ; 15DC
JP NZ,01673H ; 15DD
LD A,(065C4H) ; 15E0
OR A ; 15E3
JP Z,01660H ; 15E4
LD A,(06606H) ; 15E7 (6606h)=3 => FICHAS =/=> PULSOS
CP 000H ; 15EA
JP Z,01673H ; 15EC
LD A,000H ; 15EF
LD (065E2H),A ; 15F1
LD A,001H ; 15F4
LD (06623H),A ; 15F6
LD A,000H ; 15F9
LD (065DAH),A ; 15FB
CALL 03B8FH ; 15FE (P41.3) = 0 (Cuelga)
LD A,006H ; 1601
CALL 03F5BH ; 1603 Put Buffer #7 (Internal Commands)
LD A,005H ; 1606
LD (0644BH),A ; 1608
LD A,010H ; 160B
LD (065EAH),A ; 160D
JP 0167DH ; 1610
CP '@' ; 1613
JR NZ,0164EH ; 1615
LD A,(065E8H) ; 1617
OR A ; 161A
JP Z,01655H ; 161B
CALL 00CFAH ; 161E Write ' ??? PULSOS | ESPERE POR FAVOR'
LD A,000H ; 1621
LD (065E8H),A ; 1623
LD HL,(0661CH) ; 1626 Fichas Restantes
LD (06614H),HL ; 1629
CALL 012C5H ; 162C
LD A,(06608H) ; 162F
OR A ; 1632
JP NZ,01646H ; 1633
LD A,000H ; 1636
LD (065E7H),A ; 1638
LD A,001H ; 163B
LD (065EBH),A ; 163D
CALL 00C06H ; 1640 Write 'PULSOS | RETIRAR TARJETA'
JP 01655H ; 1643
LD A,001H ; 1646
LD (065E6H),A ; 1648
JP 01655H ; 164B
CP VOL_KEY ; 164E
JR NZ,01655H ; 1650
CALL 00D9BH ; 1652 Refresca el Display
LD A,(065BBH) ; 1655 Buffer #2 Counter (Numero Marcado)
OR A ; 1658
JR NZ,01660H ; 1659
LD A,001H ; 165B
LD (065E2H),A ; 165D
LD A,(0641BH) ; 1660 Timer B
CP 001H ; 1663
JR NZ,0166DH ; 1665
CALL 00D28H ; 1667 Borra la linea de abajo
CALL 00B1CH ; 166A Actualiza el indicador de Pulsos
CALL 03BB3 ; 166D Espera IRQ y vuelve
JP 01421H ; 1670
LD A,008H ; 1673
CALL 03F5BH ; 1675 Put Buffer #7 (Internal Commands)
LD A,007H ; 1678
LD (0644BH),A ; 167A
RET ; 167D

LD A,001H ; 167E
LD (06675H),A ; 1680
LD A,(0642CH) ; 1683
SET 1,A ; 1686
LD (0642CH),A ; 1688
LD A,(0642EH) ; 168B
CP 000H ; 168E
CALL NZ,028B7H ; 1690
LD A,001H ; 1693
LD (065EDH),A ; 1695
LD HL,00000H ; 1698
LD (06650H),HL ; 169B
LD A,020H ; 169E
LD (0643AH),A ; 16A0
CALL 00C61H ; 16A3 Write 'PRUEBA TECLADO'
LD A,014H ; 16A6
LD (06419H),A ; 16A8 Timer B TIMEOUT Para prueba de teclado

CALL 03BB3H ; 16AB Espera IRQ y vuelve
LD A,(065CDH) ; 16AE ; Flag de tecla inic.
OR A ; 16B1
JP NZ,01716H ; 16B2
LD A,(06419H) ; 16B5 Timer B
OR A ; 16B8
JR Z,016D1H ; 16B9
CALL 03DA3H ; 16BB Get Key Pressed Carry On Error
JR C,016ABH ; 16BE
LD (0643AH),A ; 16C0
CP 'A' ; 16C3
JR Z,016D1H ; 16C5
LD A,014H ; 16C7 ; valor para el TIMER de teclado
LD (06419H),A ; 16C9 Timer B
CALL 00C61H ; 16CC Write 'PRUEBA TECLADO'
JR 016ABH ; 16CF
LD B,010H ; 16D1
LD A,020H ; 16D3
LD HL,065F0H ; 16D5
LD (HL),A ; 16D8
INC HL ; 16D9
DJNZ 016D8H ; 16DA (65F0..6600) = ' '
CALL 00C77H ; 16DC Write 'PRUEBA ESPIA ?'
LD HL,(0667AH) ; 16DF Puntero al Proximo char del Log Buffer
CALL 03BB3H ; 16E2 Espera IRQ y vuelve
LD A,(065CDH) ; 16E5
OR A ; 16E8
JP NZ,01716H ; 16E9
CALL 03DA3H ; 16EC Get Key Pressed Carry On Error
JR C,016E2H ; 16EF
CP 'A' ; 16F1
JR Z,016FFH ; 16F3
CALL 03FE4H ; 16F5 Makes 65F2h=4-Hexs String of (HL..HL+3)
PUSH HL ; 16F8
CALL 00C77H ; 16F9 Write 'PRUEBA ESPIA ?'
POP HL ; 16FC
JR 016E2H ; 16FD
CALL 00C8EH ; 16FF Write 'INICIALIZACION ?'
CALL 03BB3H ; 1702 Espera IRQ y vuelve
LD A,(065CDH) ; 1705
OR A ; 1708
JP NZ,01716H ; 1709
CALL 03DA3H ; 170C Get Key Pressed Carry On Error
JR C,01702H ; 170F
CP 'A' ; 1711
CALL Z,02A56H ; 1713

LD A,000H ; 1716
LD (06675H),A ; 1718
RET ; 171B

LD B,E ; 171C
LD C,C ; 171D
;
ORG 0171FH
LD A,(06606H) ; 171F (=6606h)=3 => FICHAS =/=> PULSOS
CP 000H ; 1722
JR Z,01778H ; 1724
LD A,(06419H) ; 1726 Timer B
LD B,A ; 1729
LD A,(065C4H) ; 172A
OR B ; 172D
JR NZ,01755H ; 172E
LD A,001H ; 1730
LD (065EDH),A ;3 1732
LD HL,(0171CH) ; 1735
LD (065B8H),HL ; 1738 (65B8) = 'CI'
LD A,005H ; 173B
LD (06419H) ,A ; 173D Timer B
CALL 00ADFH ; 1740 Write '( ) FUERA | DE SERVICIO'
LD A,(06419H) ; 1743 Timer B
OR A ; 1746
JR Z,01755H ; 1747
LD A,(06449H) ; 1749
OR A ; 174C
JR Z,01755H ; 174D
LD A,(06448H) ; 174F
OR A ; 1752
JR NZ,0174 3H ; 1753
LD A,(065C4H) ; 1755
OR A ; 1758
JR Z,0177DH ; 1759
LD A,(065B4H) ; 175B
OR A ; 175E
JR NZ,01769H ; 175F
LD A,(0662FH) ; 1761
OR A ; 1764
JR Z,01778H ; 1765
JR 0176EH ; 1767
AND 080H ; 1769
CALL NZ,0134FH ; 176B
CALL 00B6DH ; 176E Write 'TARJETA INVALIDA | CUELGUE'
LD A,001H ; 1771
LD (065EDH),A ; 1773
JR 0177DH ; 1776
LD A,001H ; 1778
LD (065DBH),A ; 177A
LD A,(065EAH) ; 177D
CP 010H ; 1780
JR NZ,01789H ; 1782
CALL 017E1H ; 1784
JR 01799H ; 1787
CP 016H ; 1789
JR NZ,01792H ; 178B
CALL 0186FH ; 178D
JR 01799H ; 1790
CP 015H ; 1792
JR NZ,01799H ; 1794
CALL 018C8H ; 1796
LD A,(065CDH) ; 1799
CP 001H ; 179C
JR Z,017BFH ; 179E
LD A,(065C9H) ; 17A0
OR A ; 17A3
JR Z,017ABH ; 17A4
CALL 00CBAH ; 17A6 Write 'NO ACCESIBLE | CUELGUE'
JR 017BFH ; 17A9
LD A,(065EDH) ; 17AB
CP 001H ; 17AE
JR Z,017BFH ; 17B0
LD A,(0644BH) ; 17B2
CP 005H ; 17B5
JP Z,0171FH ; 17B7
CALL 03BC6H ; 17BA No tone on DTMF chip's output
JR 017E0H ; 17BD
CALL 03BC6H ; 17BF No tone on DTMF chip's output
LD A,007H ; 17C2
LD (0644BH),A ; 17C4
LD A,004H ; 17C7
LD (06419H),A ; 17C9 Timer B
LD A,(06419H) ; 17CC Timer B
OR A ; 17CF
JR Z,017DBH ; 17D0
LD A,(06590H) ; 17D2
OR A ; 17D5
JR NZ,017CCH ; 17D6
LD (065BBH),A ; 17D8 Buffer #2 Counter (Numero Marcado)
LD A,008H ; 17DB
CALL 03F5BH ; 17DD Put Buffer #7 (Internal Commands)
RET ; 17E0

XOR A ; 17E1
LD (065C7H),A ; 17E2
LD (065C8H),A ; 17E5
LD (065DEH),A ; 17E8
LD (065DFH),A ; 17EB
CALL 03D14H ; 17EE
CALL 03B98H ; 17F1 (P40.6) = 1
LD A,(06606H) ; 17F4 (=6606h)=3 => FICHAS =/=> PULSOS
CP 000H ; 17F7
JR NZ,0180EH ; 17F9
CALL 03BC6H ; 17FB No tone on DTMF chip's output
LD A,015H ; 17FE
LD (065EAH),A ; 1800
LD A,000H ; 1803
LD (06664H),A ; 1805
CALL 01975H ; 1808
JP 0186EH ; 180B
CALL 03BBFH ; 180E Play 701.3 Hz on DTMF chip
LD A,016H ; 1811
LD (065EAH),A ; 1813
LD A,014H ; 1816
LD (06419H),A ; 1818 Timer B
DI ; 181B
LD HL,061E1H ; 181C
LD (061F7H),HL ; 181F
INC HL ; 1822
LD (061F5H),HL ; 1823
XOR A ; 1826
LD (065BBH),A ; 1827 Buffer #2 Counter (Numero Marcado)
LD (065C5H),A ; 182A
EI ; 182D
LD A,000H ; 182E
LD (06600H),A ; 1830
LD B,00AH ; 1833
XOR A ; 1835
LD HL,06665H ; 1836
LD (HL),A ; 1839
INC HL ; 183A
DJNZ 01839H ; 183B
LD (0666FH),A ; 183D
LD A,(06606H) ; 1840 (=6606h)=3 => FICHAS =/=> PULSOS
CP 002H ; 1843
JR NZ,01852H ; 1845
LD A,(06622H) ; 1847
OR A ; 184A
JR Z,01852H ; 184B
CALL 0199DH ; 184D
JR 0186BH ; 1850
LD A,(06623H) ; 1852
OR A ; 1855
JR Z,01862H ; 1856
LD A,(06423H) ; 1858 Timer 2W
LD B,A ; 185B
LD A,(06424H) ; 185C
OR B ; 185F
JR NZ,0186BH ; 1860
XOR A ; 1862
LD (06664H),A ; 1863
LD A,001H ; 1866
LD (06623H),A ; 1868
CALL 00BEBH ; 186B Write 'PULSOS | MARQUE EL NUMERO'
RET ; 186E

LD A,(065BAH) ; 186F Buffer #1 Counter
OR A ; 1872
JR Z,018B9H ; 1873
CALL 03DA3H ; 1875 Get Key Pressed Carry On Error
LD (0643AH),A ; 1878
CP '>' ; 187B
JR NZ,0188CH ; 187D
LD A,(06606H) ; 187F (6606h)=3 => FICHAS =/=> PULSOS
CP 000H ; 1882
JR Z,018BFH ; 1884
CALL 0199DH ; 1886
JP 018C7H ; 1889
CP 039H ; 188C
JR NC,018B2H ; 188E Key > '9' Compare with another Key
CP 030H ; 1890
JR C,018B2H ; 1892 Key < '0' Compare with another Key
CALL 03BC6H ; 1894 No tone on DTMF chip's output
LD A,015H ; 1897
LD (065EAH),A ; 1899
LD A,(0643AH) ; 189C
AND 00FH ; 189F
LD (065F0H),A ; 18A1
CALL 03E02H ; 18A4 Put Buffer #2 (Numero Marcado)
LD A,001H ; 18A7
LD (06600H),A ; 18A9
CALL 00AFDH ; 18AC Write 'NUMERO MARCADO | el numero'
JP 018C7H ; 18AF
CP 'B' ; 18B2
JR NZ,018B9H ; 18B4
CALL 00BEBH ; 18B6 Write 'PULSOS | MARQUE EL NUMERO'
LD A,(06419H) ; 18B9 Timer B
OR A ; 18BC
JR Z,018C4H ; 18BD
CALL 03BB3H ; 18BF Espera IRQ y vuelve
JR 018C7H ; 18C2
CALL 01A3AH ; 18C4
RET ; 18C7

  
LD HL,(06425H) ; 18C8 Timer 3W
LD A,H ; 18CB
OR L ; 18CC
JP Z,0196AH ; 18CD
LD A,(06606H) ; 18D0 (=6606h)=3 => FICHAS =/=> PULSOS
CP 000H ; 18D3
JR Z,018FDH ; 18D5
CALL 01A16H ; 18D7
LD A,(065C4H) ; 18DA
OR A ; 18DD
JR Z,01909H ; 18DE
LD A,(065B4H) ; 18E0
OR A ; 18E3
JR NZ,018EEH ; 18E4
LD A,(0662FH) ; 18E6
OR A ; 18E9
JR Z,018FDH ; 18EA
JR 018F3H ; 18EC
AND 080H ; 18EE
CALL NZ,0134FH ; 18F0
CALL 00B6DH ; 18F3 Write 'TARJETA INVALIDA | CUELGUE'
LD A,001H ; 18F6
LD (065EDH),A ; 18F8
JR 01909H ; 18FB
LD A,(065C7H) ; 18FD
CP 001H ; 1900
JR NZ,01909H ; 1902
CALL 019C5H ; 1904
JR 01974H ; 1907
LD A,(065BAH) ; 1909 Buffer #1 Counter
OR A ; 190C
JR Z,01971H ; 190D
CALL 03DA3H ; 190F Get Key Pressed Carry On Error
LD (0643AH),A ; 1912
CP 039H ; 1915
JR NC,01929H ; 1917
CP 030H ; 1919
JR C,01929H ; 191B
LD A,(06622H) ; 191D
OR A ; 1920
JR NZ,01971H ; 1921
CALL 01975H ; 1923
JP 01974H ; 1926
CP Cortar_Key ; 1929
JR NZ,01963H ; 192B
LD A,(06606H) ; 192D (6606h)=3 => FICHAS =/=> PULSOS
CP 000H ; 1930
JR Z,0196AH ; 1932
LD A,010H ; 1934
LD (065EAH),A ; 1936
LD A,004H ; 1939
LD (06419H),A ; 193B Timer B
LD A,(06419H) ; 193E Timer B
OR A ; 1941
JR Z,0196AH ; 1942
LD A,(065EDH) ; 1944
OR A ; 1947
JR NZ,0196AH ; 1948
LD A,(06590H) ; 194A
OR A ; 194D
JR NZ,0193EH ; 194E
LD (065BBH),A ; 1950 Buffer #2 Counter (Numero Marcado)
LD A,(065C5H) ; 1953
OR A ; 1956
JR Z,01974H ; 1957
CALL 03B8FH ; 1959 (P41.3) = 0 (Cuelga)
LD A,006H ; 195C
CALL 03F5BH ; 195E Put Buffer #7 (Internal Commands)
JR 01974H ; 1961
CP VOL_KEY ; 1963
CALL Z,00AFDH ; 1965 Write 'NUMERO MARCADO | el numero'
JR 01971H ; 1968
LD A,001H ; 196A
LD (065EDH),A ; 196C
JR 01974H ; 196F
CALL 03BB3H ; 1971 Espera IRQ y vuelve
RET ; 1974

LD A,(06600H) ; 1975
INC A ; 1978
CP 011H ; 1979
JR NC,0199CH ; 197B
LD (06600H),A ; 197D
LD A,(0643AH) ; 1980
AND 00FH ; 1983
LD (0643AH),A ; 1985
CALL 03E02H ; 1988 Put Buffer #2 (Numero Marcado)
LD HL,065EFH ; 198B
LD B,000H ; 198E
LD A,(06600H) ; 1990
LD C,A ; 1993
ADD HL,BC ; 1994
LD A,(0643AH) ; 1995
LD (HL),A ; 1998
CALL 00AFDH ; 1999 Write 'NUMERO MARCADO | el numero'
RET ; 199C

LD A,(06664H) ; 199D
OR A ; 19A0
JR Z,019C4H ; 19A1
LD A,015H ; 19A3
LD (065EAH),A ; 19A5
LD HL,06654H ; 19A8
LD DE,065F0H ; 19AB
LD A,(06664H) ; 19AE
LD (06600H),A ; 19B1
LD B,A ; 19B4
LD A,(HL) ; 19B5
LD (DE),A ; 19B6
CALL 03E02H ; 19B7 Put Buffer #2 (Numero Marcado)
INC HL ; 19BA
INC DE ; 19BB
DJNZ 019B5H ; 19BC
CALL 03BC6H ; 19BE No tone on DTMF chip's output
CALL 00AFDH ; 19C1 Write 'NUMERO MARCADO | el numero'
RET ; 19C4

LD DE,(065D2H) ; 19C5
LD HL,(0661EH) ; 19C9 Fichas Restantes
XOR A ; 19CC
SBC HL,DE ; 19CD
JR NC,019D6H ; 19CF
CALL 01A2FH ; 19D1
JR 01A15H ; 19D4
LD A,(06606H) ; 19D6 (=6606h)=3 => FICHAS =/=> PULSOS
CP 000H ; 19D9
JR Z,01A00H ; 19DB
LD HL,(0660AH) ; 19DD
LD DE,(065D2H) ; 19E0
XOR A ; 19E4
ADD HL,DE ; 19E5
LD (0660AH),HL ; 19E6
LD BC,(065D4H) ; 19E9
LD DE,0000AH ; 19ED
CALL 040B8H ; 19F0 HL = BC Mod DE
LD (06421H),BC ; 19F3 Timer 1W
LD (065DEH),HL ; 19F7
CALL 00B1CH ; 19FA Actualiza el indicador de Pulsos
CALL 00D28H ; 19FD Borra la linea de abajo
LD A,006H ; 1A00
LD (0644BH),A ; 1A02
CALL 01A16H ; 1A05
LD DE,00E11H ; 1A08
LD (06427H),DE ; 1A0B Timer 4W
LD HL,00000H ; 1A0F
LD (0660EH),HL ; 1A12
RET ; 1A15

LD A,(06600H) ; 1A16
LD (06664H),A ; 1A19
LD B,000H ; 1A1C
LD C,A ; 1A1E
LD HL,065F0H ; 1A1F
LD DE,06654H ; 1A22
LDIR ; 1A25
LD DE,00E11H ; 1A27
LD (06423H),DE ; 1A2A Timer 2W
RET ; 1A2E

PUSH AF ; 1A2F
LD A,001H ; 1A30
LD (065EDH),A ; 1A32
CALL 00CBAH ; 1A35 Write 'NO ACCESIBLE | CUELGUE'
POP AF ; 1A38
RET ; 1A39

PUSH AF ; 1A3A
LD A,001H ; 1A3B
LD (065EDH),A ; 1A3D
CALL 00C24H ; 1A40 Write 'PROBLEMA | CUELGUE'
POP AF ; 1A43
RET ; 1A44

LD HL,02614H ; 1A45
LD (06031H),HL ; 1A48
CALL 02200H ; 1A4B Decode Memory ¨¨¨???
LD HL,0604DH ; 1A4E
LD DE,060CDH ; 1A51
LD BC,00080H ; 1A54
LDIR ; 1A57
LD HL,0261CH ; 1A59
LD (06031H),HL ; 1A5C
CALL 02200H ; 31A5F Decode Memory ¨¨¨???
LD HL,0604DH ; 1A62
LD DE,0614DH ; 1A65
LD BC,00080H ; 1A68
LDIR ; 1A6B
RET ; 1A6D

LD DE,06029H ; 1A6E
LD HL,06610H ; 1A71
LD B,(HL) ; 1A74
INC HL ; 1A75
LD A,(HL) ; 1A76
LD (DE),A ; 1A77
INC DE ; 1A78
LD A,B ; 1A79
LD (DE),A ; 1A7A
INC DE ; 1A7B
LD HL,065B5H ; 1A7C
LD BC,00003H ; 1A7F
LDIR ; 1A82
LD HL,065B5H ; 1A84
LD BC,00003H ; 1A87
LDIR ; 1A8A
DEC HL ; 1A8C
LD A,(HL) ; 1A8D
BIT 0,A ; 1A8E
JR NZ,01A97H ; 1A90
LD HL,060CDH ; 1A92
JR 01A9AH ; 1A95
LD HL,0614DH ; 1A97
LD DE,0604DH ; 1A9A
LD BC,00080H ; 1A9D
LDIR ; 1AA0
CALL 01AB4H ; 1AA2
LD A,(06030H) ; 1AA5
LD HL,(06610H) ; 1AA8
DI ; 1AAB
LD (06619H),A ; 1AAC
LD (06612H),HL ; 1AAF
EI ; 1AB2
RET ; 1AB3

CALL 01AE0H ; 1AB4
LD B,010H ; 1AB7
LD HL,0604DH ; 1AB9
LD (06031H),HL ; 1ABC
PUSH BC ; 1ABF
CALL 01D0DH ; 1AC0
LD IX,0603DH ; 1AC3
LD HL,(06031H) ; 1AC7
CALL 01FD5H ; 1ACA
LD (06031H),HL ; 1ACD
CALL 02016H ; 1AD0
CALL 02097H ; 1AD3
CALL 021ACH ; 1AD6
POP BC ; 1AD9
DJNZ 01ABFH ; 1ADA
CALL 01DB2H ; 1ADC
RET ; 1ADF

LD IX,06029H ; 1AE0
LD IY,06035H ; 1AE4
XOR A ; 1AE8
BIT 6,(IX+000H) ; 1AE9
JR Z,01AF1H ; 1AED
OR 001H ; 1AEF
BIT 6,(IX+001H) ; 1AF1
JR Z,01AF9H ; 1AF5
OR 002H ; 1AF7
BIT 6,(IX+002H) ; 1AF9
JR Z,01B01H ; 1AFD
OR 004H ; 1AFF
BIT 6,(IX+003H) ; 1B01
JR Z,01B09H ; 1B05
OR 008H ; 1B07
BIT 6,(IX+004H) ; 1B09
JR Z,01B11H ; 1B0D
OR 010H ; 1B0F
BIT 6,(IX+005H) ; 1B11
JR Z,01B19H ; 1B15
OR 020H ; 1B17
BIT 6,(IX+006H) ; 1B19
JR Z,01B21H ; 1B1D
OR 040H ; 1B1F
BIT 6,(IX+007H) ; 1B21
JR Z,01B29H ; 1B25
OR 080H ; 1B27
LD (IY+000H),A ; 1B29
XOR A ; 1B2C
BIT 4,(IX+000H) ; 1B2D
JR Z,01B35H ; 1B31
OR 001H ; 1B33
BIT 4,(IX+001H) ; 1B35
JR Z,01B3DH ; 1B39
OR 002H ; 1B3B
BIT 4,(IX+002H) ; 1B3D
JR Z,01B45H ; 1B41
OR 004H ; 1B43
BIT 4,(IX+003H) ; 1B45
JR Z,01B4DH ; 1B49
OR 008H ; 1B4B
BIT 4,(IX+004H) ; 1B4D
JR Z,01B55H ; 1B51
OR 010H ; 1B53
BIT 4,(IX+005H) ; 1B55
JR Z,01B5DH ; 1B59
OR 020H ; 1B5B
BIT 4,(IX+006H) ; 1B5D
JR Z,01B65H ; 1B61
OR 040H ; 1B63
BIT 4,(IX+007H) ; 1B65
JR Z,01B6DH ; 1B69
OR 080H ; 1B6B
LD (IY+001H),A ; 1B6D
XOR A ; 1B70
BIT 2,(IX+000H) ; 1B71
JR Z,01B79H ; 1B75
OR 001H ; 1B77
BIT 2,(IX+001H) ; 1B79
JR Z,01B81H ; 1B7D
OR 002H ; 1B7F
BIT 2,(IX+002H) ; 1B81
JR Z,01B89H ; 1B85
OR 004H ; 1B87
BIT 2,(IX+003H) ; 1B89
JR Z,01B91H ; 1B8D
OR 008H ; 1B8F
BIT 2,(IX+004H) ; 1B91
JR Z,01B99H ; 1B95
OR 010H ; 1B97
BIT 2,(IX+005H) ; 1B99
JR Z,01BA1H ; 1B9D
OR 020H ; 1B9F
BIT 2,(IX+006H) ; 1BA1
JR Z,01BA9H ; 1BA5
OR 040H ; 1BA7
BIT 2,(IX+007H) ; 1BA9
JR Z,01BB1H ; 1BAD
OR 080H ; 1BAF
LD (IY+002H),A ; 1BB1
XOR A ; 1BB4
BIT 0,(IX+000H) ; 1BB5
JR Z,01BBDH ; 1BB9
OR 001H ; 1BBB
BIT 0,(IX+001H) ; 1BBD
JR Z,01BC5H ; 1BC1
OR 002H ; 1BC3
BIT 0,(IX+002H) ; 1BC5
JR Z,01BCDH ; 1BC9
OR 004H ; 1BCB
BIT 0,(IX+003H) ; 1BCD
JR Z,01BD5H ; 1BD1
OR 008H ; 1BD3
BIT 0,(IX+004H) ; 1BD5
JR Z,01BDDH ; 1BD9
OR 010H ; 1BDB
BIT 0,(IX+005H) ; 1BDD
JR Z,01BE5H ; 1BE1
OR 020H ; 1BE3
BIT 0,(IX+006H) ; 1BE5
JR Z,01BEDH ; 1BE9
OR 040H ; 1BEB
BIT 0,(IX+007H) ; 1BED
JR Z,01BF5H ; 1BF1
OR 080H ; 1BF3
LD (IY+003H),A ; 1BF5
LD IY,06039H ; 1BF8
XOR A ; 1BFC
BIT 7,(IX+000H) ; 1BFD
JR Z,01C05H ; 1C01
OR 001H ; 1C03
BIT 7,(IX+001H) ; 1C05
JR Z,01C0DH ; 1C09
OR 002H ; 1C0B
BIT 7,(IX+002H) ; 1C0D
JR Z,01C15H ; 1C11
OR 004H ; 1C13
BIT 7,(IX+003H) ; 1C15
JR Z,01C1DH ; 1C19
OR 008H ; 1C1B
BIT 7,(IX+004H) ; 1C1D
JR Z,01C25H ; 1C21
OR 010H ; 1C23
BIT 7,(IX+005H) ; 1C25
JR Z,01C2DH ; 1C29
OR 020H ; 1C2B
BIT 7,(IX+006H) ; 1C2D
JR Z,01C35H ; 1C31
OR 040H ; 1C33
BIT 7,(IX+007H) ; 1C35
JR Z,01C3DH ; 1C39
OR 080H ; 1C3B
LD (IY+000H),A ; 1C3D
XOR A ; 1C40
BIT 5,(IX+000H) ; 1C41
JR Z,01C49H ; 1C45
OR 001H ; 1C47
BIT 5,(IX+001H) ; 1C49
JR Z,01C51H ; 1C4D
OR 002H ; 1C4F
BIT 5,(IX+002H) ; 1C51
JR Z,01C59H ; 1C55
OR 004H ; 1C57
BIT 5,(IX+003H) ; 1C59
JR Z,01C61H ; 1C5D
OR 008H ; 1C5F
BIT 5,(IX+004H) ; 1C61
JR Z,01C69H ; 1C65
OR 010H ; 1C67
BIT 5,(IX+005H) ; 1C69
JR Z,01C71H ; 1C6D
OR 020H ; 1C6F
BIT 5,(IX+006H) ; 1C71
JR Z,01C79H ; 1C75
OR 040H ; 1C77
BIT 5,(IX+007H) ; 1C79
JR Z,01C81H ; 1C7D
OR 080H ; 1C7F
LD (IY+001H),A ; 1C81
XOR A ; 1C84
BIT 3,(IX+000H) ; 1C85
JR Z,01C8DH ; 1C89
OR 001H ; 1C8B
BIT 3,(IX+001H) ; 1C8D
JR Z,01C95H ; 1C91
OR 002H ; 1C93
BIT 3,(IX+002H) ; 1C95
JR Z,01C9DH ; 1C99
OR 004H ; 1C9B
BIT 3,(IX+003H) ; 1C9D
JR Z,01CA5H ; 1CA1
OR 008H ; 1CA3
BIT 3,(IX+004H) ; 1CA5
JR Z,01CADH ; 1CA9
OR 010H ; 1CAB
BIT 3,(IX+005H) ; 1CAD
JR Z,01CB5H ; 1CB1
OR 020H ; 1CB3
BIT 3,(IX+006H) ; 1CB5
JR Z,01CBDH ; 1CB9
OR 040H ; 1CBB
BIT 3,(IX+007H) ; 1CBD
JR Z,01CC5H ; 1CC1
OR 080H ; 1CC3
LD (IY+002H),A ; 1CC5
XOR A ; 1CC8
BIT 1,(IX+000H) ; 1CC9
JR Z,01CD1H ; 1CCD
OR 001H ; 1CCF
BIT 1,(IX+001H) ; 1CD1
JR Z,01CD9H ; 1CD5
OR 002H ; 1CD7
BIT 1,(IX+002H) ; 1CD9
JR Z,01CE1H ; 1CDD
OR 004H ; 1CDF
BIT 1,(IX+003H) ; 1CE1
JR Z,01CE9H ; 1CE5
OR 008H ; 1CE7
BIT 1,(IX+004H) ; 1CE9
JR Z,01CF1H ; 1CED
OR 010H ; 1CEF
BIT 1,(IX+005H) ; 1CF1
JR Z,01CF9H ; 1CF5
OR 020H ; 1CF7
BIT 1,(IX+006H) ; 1CF9
JR Z,01D01H ; 1CFD
OR 040H ; 1CFF
BIT 1,(IX+007H) ; 1D01
JR Z,01D09H ; 1D05
OR 080H ; 1D07
LD (IY+003H),A ; 1D09
RET ; 1D0C

LD IX,06039H ; 1D0D
LD IY,0603DH ; 1D11
LD C,(IX+000H) ; 1D15
LD A,C ; 1D18
AND 01FH ; 1D19
SLA A ; 1D1B
BIT 7,(IX+001H) ; 1D1D
JR Z,01D25H ; 1D21
OR 001H ; 1D23
LD (IY+001H),A ; 1D25
LD A,C ; 1D28
AND 0F8H ; 1D29
SRL A ; 1D2B
SRL A ; 1D2D
SRL A ; 1D2F
BIT 0,(IX+003H) ; 1D31
JR Z,01D39H ; 1D35
OR 020H ; 1D37
LD (IY+000H),A ; 1D39
LD C,(IX+001H) ; 1D3C
LD A,C ; 1D3F
AND 01FH ; 1D40
SLA A ; 1D42
BIT 7,(IX+002H) ; 1D44
JR Z,01D4CH ; 1D48
OR 001H ; 1D4A
LD (IY+003H),A ; 1D4C
LD A,C ; 1D4F
AND 0F8H ; 1D50
SRL A ; 1D52
SRL A ; 1D54
SRL A ; 1D56
BIT 0,(IX+000H) ; 1D58
JR Z,01D60H ; 1D5C
OR 020H ; 1D5E
LD (IY+002H),A ; 1D60
LD C,(IX+002H) ; 1D63
LD A,C ; 1D66
AND 01FH ; 1D67
SLA A ; 1D69
BIT 7,(IX+003H) ; 1D6B
JR Z,01D73H ; 1D6F
OR 001H ; 1D71
LD (IY+005H),A ; 1D73
LD A,C ; 1D76
AND 0F8H ; 1D77
SRL A ; 1D79
SRL A ; 1D7B
SRL A ; 1D7D
BIT 0,(IX+001H) ; 1D7F
JR Z,01D87H ; 1D83
OR 020H ; 1D85
LD (IY+004H),A ; 1D87
LD C,(IX+003H) ; 1D8A
LD A,C ; 1D8D
AND 01FH ; 1D8E
SLA A ; 1D90
BIT 7,(IX+000H) ; 1D92
JR Z,01D9AH ; 1D96
OR 001H ; 1D98
LD (IY+007H),A ; 1D9A
LD A,C ; 1D9D
AND 0F8H ; 1D9E
SRL A ; 1DA0
SRL A ; 1DA2
SRL A ; 1DA4
BIT 0,(IX+002H) ; 1DA6
JR Z,01DAEH ; 1DAA
OR 020H ; 1DAC
LD (IY+006H),A ; 1DAE
RET ; 1DB1

LD HL,06029H ; 1DB2
LD IX,06035H ; 1DB5
LD IY,06039H ; 1DB9
XOR A ; 1DBD
BIT 0,(IY+003H) ; 1DBE
JR Z,01DC6H ; 1DC2
OR 001H ; 1DC4
BIT 0,(IX+003H) ; 1DC6
JR Z,01DCEH ; 1DCA
OR 002H ; 1DCC
BIT 0,(IY+002H) ; 1DCE
JR Z,01DD6H ; 1DD2
OR 004H ; 1DD4
BIT 0,(IX+002H) ; 1DD6
JR Z,01DDEH ; 1DDA
OR 008H ; 1DDC
BIT 0,(IY+001H) ; 1DDE
JR Z,01DE6H ; 1DE2
OR 010H ; 1DE4
BIT 0,(IX+001H) ; 1DE6
JR Z,01DEEH ; 1DEA
OR 020H ; 1DEC
BIT 0,(IY+000H) ; 1DEE
JR Z,01DF6H ; 1DF2
OR 040H ; 1DF4
BIT 0,(IX+000H) ; 1DF6
JR Z,01DFEH ; 1DFA
OR 080H ; 1DFC
LD (HL),A ; 1DFE
INC HL ; 1DFF
XOR A ; 1E00
BIT 1,(IY+003H) ; 1E01
JR Z,01E09H ; 1E05
OR 001H ; 1E07
BIT 1,(IX+003H) ; 1E09
JR Z,01E11H ; 1E0D
OR 002H ; 1E0F
BIT 1,(IY+002H) ; 1E11
JR Z,01E19H ; 1E15
OR 004H ; 1E17
BIT 1,(IX+002H) ; 1E19
JR Z,01E21H ; 1E1D
OR 008H ; 1E1F
BIT 1,(IY+001H) ; 1E21
JR Z,01E29H ; 1E25
OR 010H ; 1E27
BIT 1,(IX+001H) ; 1E29
JR Z,01E31H ; 1E2D
OR 020H ; 1E2F
BIT 1,(IY+000H) ; 1E31
JR Z,01E39H ; 1E35
OR 040H ; 1E37
BIT 1,(IX+000H) ; 1E39
JR Z,01E41H ; 1E3D
OR 080H ; 1E3F
LD (HL),A ; 1E41
INC HL ; 1E42
XOR A ; 1E43
BIT 2,(IY+003H) ; 1E44
JR Z,01E4CH ; 1E48
OR 001H ; 1E4A
BIT 2,(IX+003H) ; 1E4C
JR Z,01E54H ; 1E50
OR 002H ; 1E52
BIT 2,(IY+002H) ; 1E54
JR Z,01E5CH ; 1E58
OR 004H ; 1E5A
BIT 2,(IX+002H) ; 1E5C
JR Z,01E64H ; 1E60
OR 008H ; 1E62
BIT 2,(IY+001H) ; 1E64
JR Z,01E6CH ; 1E68
OR 010H ; 1E6A
BIT 2,(IX+001H) ; 1E6C
JR Z,01E74H ; 1E70
OR 020H ; 1E72
BIT 2,(IY+000H) ; 1E74
JR Z,01E7CH ; 1E78
OR 040H ; 1E7A
BIT 2,(IX+000H) ; 1E7C
JR Z,01E84H ; 1E80
OR 080H ; 1E82
LD (HL),A ; 1E84
INC HL ; 1E85
XOR A ; 1E86
BIT 3,(IY+003H) ; 1E87
JR Z,01E8FH ; 1E8B
OR 001H ; 1E8D
BIT 3,(IX+003H) ; 1E8F
JR Z,01E97H ; 1E93
OR 002H ; 1E95
BIT 3,(IY+002H) ; 1E97
JR Z,01E9FH ; 1E9B
OR 004H ; 1E9D
BIT 3,(IX+002H) ; 1E9F
JR Z,01EA7H ; 1EA3
OR 008H ; 1EA5
BIT 3,(IY+001H) ; 1EA7
JR Z,01EAFH ; 1EAB
OR 010H ; 1EAD
BIT 3,(IX+001H) ; 1EAF
JR Z,01EB7H ; 1EB3
OR 020H ; 1EB5
BIT 3,(IY+000H) ; 1EB7
JR Z,01EBFH ; 1EBB
OR 040H ; 1EBD
BIT 3,(IX+000H) ; 1EBF
JR Z,01EC7H ; 1EC3
OR 080H ; 1EC5
LD (HL),A ; 1EC7
INC HL ; 1EC8
XOR A ; 1EC9
BIT 4,(IY+003H) ; 1ECA
JR Z,01ED2H ; 1ECE
OR 001H ; 1ED0
BIT 4,(IX+003H) ; 1ED2
JR Z,01EDAH ; 1ED6
OR 002H ; 1ED8
BIT 4,(IY+002H) ; 1EDA
JR Z,01EE2H ; 1EDE
OR 004H ; 1EE0
BIT 4,(IX+002H) ; 1EE2
JR Z,01EEAH ; 1EE6
OR 008H ; 1EE8
BIT 4,(IY+001H) ; 1EEA
JR Z,01EF2H ; 1EEE
OR 010H ; 1EF0
BIT 4,(IX+001H) ; 1EF2
JR Z,01EFAH ; 1EF6
OR 020H ; 1EF8
BIT 4,(IY+000H) ; 1EFA
JR Z,01F02H ; 1EFE
OR 040H ; 1F00
BIT 4,(IX+000H) ; 1F02
JR Z,01F0AH ; 1F06
OR 080H ; 1F08
LD (HL),A ; 1F0A
INC HL ; 1F0B
XOR A ; 1F0C
BIT 5,(IY+003H) ; 1F0D
JR Z,01F15H ; 1F11
OR 001H ; 1F13
BIT 5,(IX+003H) ; 1F15
JR Z,01F1DH ; 1F19
OR 002H ; 1F1B
BIT 5,(IY+002H) ; 1F1D
JR Z,01F25H ; 1F21
OR 004H ; 1F23
BIT 5,(IX+002H) ; 1F25
JR Z,01F2DH ; 1F29
OR 008H ; 1F2B
BIT 5,(IY+001H) ; 1F2D
JR Z,01F35H ; 1F31
OR 010H ; 1F33
BIT 5,(IX+001H) ; 1F35
JR Z,01F3DH ; 1F39
OR 020H ; 1F3B
BIT 5,(IY+000H) ; 1F3D
JR Z,01F45H ; 1F41
OR 040H ; 1F43
BIT 5,(IX+000H) ; 1F45
JR Z,01F4DH ; 1F49
OR 080H ; 1F4B
LD (HL),A ; 1F4D
INC HL ; 1F4E
XOR A ; 1F4F
BIT 6,(IY+003H) ; 1F50
JR Z,01F58H ; 1F54
OR 001H ; 1F56
BIT 6,(IX+003H) ; 1F58
JR Z,01F60H ; 1F5C
OR 002H ; 1F5E
BIT 6,(IY+002H) ; 1F60
JR Z,01F68H ; 1F64
OR 004H ; 1F66
BIT 6,(IX+002H) ; 1F68
JR Z,01F70H ; 1F6C
OR 008H ; 1F6E
BIT 6,(IY+001H) ; 1F70
JR Z,01F78H ; 1F74
OR 010H ; 1F76
BIT 6,(IX+001H) ; 1F78
JR Z,01F80H ; 1F7C
OR 020H ; 1F7E
BIT 6,(IY+000H) ; 1F80
JR Z,01F88H ; 1F84
OR 040H ; 1F86
BIT 6,(IX+000H) ; 1F88
JR Z,01F90H ; 1F8C
OR 080H ; 1F8E
LD (HL),A ; 1F90
INC HL ; 1F91
XOR A ; 1F92
BIT 7,(IY+003H) ; 1F93
JR Z,01F9BH ; 1F97
OR 001H ; 1F99
BIT 7,(IX+003H) ; 1F9B
JR Z,01FA3H ; 1F9F
OR 002H ; 1FA1
BIT 7,(IY+002H) ; 1FA3
JR Z,01FABH ; 1FA7
OR 004H ; 1FA9
BIT 7,(IX+002H) ; 1FAB
JR Z,01FB3H ; 1FAF
OR 008H ; 1FB1
BIT 7,(IY+001H) ; 1FB3
JR Z,01FBBH ; 1FB7
OR 010H ; 1FB9
BIT 7,(IX+001H) ; 1FBB
JR Z,01FC3H ; 1FBF
OR 020H ; 1FC1
BIT 7,(IY+000H) ; 1FC3
JR Z,01FCBH ; 1FC7
OR 040H ; 1FC9
BIT 7,(IX+000H) ; 1FCB
JR Z,01FD3H ; 1FCF
OR 080H ; 1FD1
LD (HL),A ; 1FD3
RET ; 1FD4

LD A,(IX+000H) ; 1FD5
XOR (HL) ; 1FD8
LD (IX+000H),A ; 1FD9
INC HL ; 1FDC
LD A,(IX+001H) ; 1FDD
XOR (HL) ; 1FE0
LD (IX+001H),A ; 1FE1
INC HL ; 1FE4
LD A,(IX+002H) ; 1FE5
XOR (HL) ; 1FE8
LD (IX+002H),A ; 1FE9
INC HL ; 1FEC
LD A,(IX+003H) ; 1FED
XOR (HL) ; 1FF0
LD (IX+003H),A ; 1FF1
INC HL ; 1FF4
LD A,(IX+004H) ; 1FF5
XOR (HL) ; 1FF8
LD (IX+004H),A ; 1FF9
INC HL ; 1FFC
LD A,(IX+005H) ; 1FFD
XOR (HL) ; 2000
LD (IX+005H),A ; 2001
INC HL ; 2004
LD A,(IX+006H) ; 2005
XOR (HL) ; 2008
LD (IX+006H),A ; 2009
INC HL ; 200C
LD A,(IX+007H) ; 200D
XOR (HL) ; 2010
LD (IX+007H),A ; 2011
INC HL ; 2014
RET ; 2015

LD IY,0603DH ; 2016
LD BC,02624H ; 201A
LD L,(IY+000H) ; 201D
LD H,000H ; 2020
ADD HL,BC ; 2022
LD A,(HL) ; 2023
AND 0F0H ; 2024
LD B,A ; 2026
PUSH BC ; 2027
LD BC,02624H ; 2028
LD L,(IY+001H) ; 202B
LD H,000H ; 202E
ADD HL,BC ; 2030
LD A,(HL) ; 2031
AND 00FH ; 2032
POP BC ; 2034
OR B ; 2035
LD (IY+000H),A ; 2036
LD BC,02664H ; 2039
LD L,(IY+002H) ; 203C
LD H,000H ; 203F
ADD HL,BC ; 2041
LD A,(HL) ; 2042
AND 0F0H ; 2043
LD B,A ; 2045
PUSH BC ; 2046
LD BC,02664H ; 2047
LD L,(IY+003H) ; 204A
LD H,000H ; 204D
ADD HL,BC ; 204F
LD A,(HL) ; 2050
AND 00FH ; 2051
POP BC ; 2053
OR B ; 2054
LD (IY+001H),A ; 2055
LD BC,026A4H ; 2058
LD L,(IY+004H) ; 205B
LD H,000H ; 205E
ADD HL,BC ; 2060
LD A,(HL) ; 2061
AND 0F0H ; 2062
LD B,A ; 2064
PUSH BC ; 2065
LD BC,026A4H ; 2066
LD L,(IY+005H) ; 2069
LD H,000H ; 206C
ADD HL,BC ; 206E
LD A,(HL) ; 206F
AND 00FH ; 2070
POP BC ; 2072
OR B ; 2073
LD (IY+002H),A ; 2074
LD BC,026E4H ; 2077
LD L,(IY+006H) ; 207A
LD H,000H ; 207D
ADD HL,BC ; 207F
LD A,(HL) ; 2080
AND 0F0H ; 2081
LD B,A ; 2083
PUSH BC ; 2084
LD BC,026E4H ; 2085
LD L,(IY+007H) ; 2088
LD H,000H ; 208B
ADD HL,BC ; 208D
LD A,(HL) ; 208E
AND 00FH ; 208F
POP BC ; 2091
OR B ; 2092
LD (IY+003H),A ; 2093
RET ; 2096

LD IX,0603DH ; 2097
XOR A ; 209B
BIT 7,(IX+002H) ; 209C
JR Z,020A4H ; 20A0
OR 001H ; 20A2
BIT 4,(IX+003H) ; 20A4
JR Z,020ACH ; 20A8
OR 002H ; 20AA
BIT 4,(IX+001H) ; 20AC
JR Z,020B4H ; 20B0
OR 004H ; 20B2
BIT 3,(IX+003H) ; 20B4
JR Z,020BCH ; 20B8
OR 008H ; 20BA
BIT 3,(IX+002H) ; 20BC
JR Z,020C4H ; 20C0
OR 010H ; 20C2
BIT 4,(IX+002H) ; 20C4
JR Z,020CCH ; 20C8
OR 020H ; 20CA
BIT 1,(IX+000H) ; 20CC
JR Z,020D4H ; 20D0
OR 040H ; 20D2
BIT 0,(IX+001H) ; 20D4
JR Z,020DCH ; 20D8
OR 080H ; 20DA
LD (IX+004H),A ; 20DC
XOR A ; 20DF
BIT 6,(IX+001H) ; 20E0
JR Z,020E8H ; 20E4
OR 001H ; 20E6
BIT 1,(IX+003H) ; 20E8
JR Z,020F0H ; 20EC
OR 002H ; 20EE
BIT 6,(IX+002H) ; 20F0
JR Z,020F8H ; 20F4
OR 004H ; 20F6
BIT 3,(IX+000H) ; 20F8
JR Z,02100H ; 20FC
OR 008H ; 20FE
BIT 6,(IX+003H) ; 2100
JR Z,02108H ; 2104
OR 010H ; 2106
BIT 1,(IX+002H) ; 2108
JR Z,02110H ; 210C
OR 020H ; 210E
BIT 1,(IX+001H) ; 2110
JR Z,02118H ; 2114
OR 040H ; 2116
BIT 7,(IX+000H) ; 2118
JR Z,02120H ; 211C
OR 080H ; 211E
LD (IX+005H),A ; 2120
XOR A ; 2123
BIT 7,(IX+001H) ; 2124
JR Z,0212CH ; 2128
OR 001H ; 212A
BIT 5,(IX+000H) ; 212C
JR Z,02134H ; 2130
OR 002H ; 2132
BIT 5,(IX+003H) ; 2134
JR Z,0213CH ; 2138
OR 004H ; 213A
BIT 0,(IX+003H) ; 213C
JR Z,02144H ; 2140
OR 008H ; 2142
BIT 2,(IX+001H) ; 2144
JR Z,0214CH ; 2148
OR 010H ; 214A
BIT 0,(IX+002H) ; 214C
JR Z,02154H ; 2150
OR 020H ; 2152
BIT 0,(IX+000H) ; 2154
JR Z,0215CH ; 2158
OR 040H ; 215A
BIT 6,(IX+000H) ; 215C
JR Z,02164H ; 2160
OR 080H ; 2162
LD (IX+006H),A ; 2164
XOR A ; 2167
BIT 7,(IX+003H) ; 2168
JR Z,02170H ; 216C
OR 001H ; 216E
BIT 4,(IX+000H) ; 2170
JR Z,02178H ; 2174
OR 002H ; 2176
BIT 5,(IX+001H) ; 2178
JR Z,02180H ; 217C
OR 004H ; 217E
BIT 2,(IX+002H) ; 2180
JR Z,02188H ; 2184
OR 008H ; 2186
BIT 2,(IX+000H) ; 2188
JR Z,02190H ; 218C
OR 010H ; 218E
BIT 2,(IX+003H) ; 2190
JR Z,02198H ; 2194
OR 020H ; 2196
BIT 3,(IX+001H) ; 2198
JR Z,021A0H ; 219C
OR 040H ; 219E
BIT 5,(IX+002H) ; 21A0
JR Z,021A8H ; 21A4
OR 080H ; 21A6
LD (IX+007H),A ; 21A8
RET ; 21AB

LD IX,0603DH ; 21AC
LD IY,06035H ; 21B0
LD HL,06039H ; 21B4
LD A,(IX+004H) ; 21B7
XOR (IY+000H) ; 21BA
LD (IX+004H),A ; 21BD
LD A,(IX+005H) ; 21C0
XOR (IY+001H) ; 21C3
LD (IX+005H),A ; 21C6
LD A,(IX+006H) ; 21C9
XOR (IY+002H) ; 21CC
LD (IX+006H),A ; 21CF
LD A,(IX+007H) ; 21D2
XOR (IY+003H) ; 21D5
LD (IX+007H),A ; 21D8
LD A,(HL) ; 21DB
LD (IY+000H),A ; 21DC
LD A,(IX+004H) ; 21DF
LD (HL),A ; 21E2
INC HL ; 21E3
LD A,(HL) ; 21E4
LD (IY+001H),A ; 21E5
LD A,(IX+005H) ; 21E8
LD (HL),A ; 21EB
INC HL ; 21EC
LD A,(HL) ; 21ED
LD (IY+002H),A ; 21EE
LD A,(IX+006H) ; 21F1
LD (HL),A ; 21F4
INC HL ; 21F5
LD A,(HL) ; 21F6
LD (IY+003H),A ; 21F7
LD A,(IX+007H) ; 21FA
LD (HL),A ; 21FD
INC HL ; 21FE
RET ; 21FF

XOR A ; 2200
LD (06033H),A ; 2201
LD (06034H),A ; 2204
CALL 0222BH ; 2207 Decode Memory ¨¨¨???
LD B,010H ; 220A
LD IY,0604DH ; 220C
PUSH BC ; 2210
PUSH IY ; 2211
CALL 02418H ; 2213 Decode Memory ¨¨¨???
CALL 0246FH ; 2216 Decode Memory ¨¨¨???
LD DE,00008H ; 2219
POP IY ; 221C
ADD IY,DE ; 221E
LD A,(06033H) ; 2220
INC A ; 2223
LD (06033H),A ; 2224
POP BC ; 2227
DJNZ 02210H ; 2228
RET ; 222A

LD IX,(06031H) ; 222B
LD IY,06045H ; 222F
XOR A ; 2233
BIT 7,(IX+000H) ; 2234
JR Z,0223CH ; 2238
OR 001H ; 223A
BIT 7,(IX+001H) ; 223C
JR Z,02244H ; 2240
OR 002H ; 2242
BIT 7,(IX+002H) ; 2244
JR Z,0224CH ; 2248
OR 004H ; 224A
BIT 7,(IX+003H) ; 224C
JR Z,02254H ; 2250
OR 008H ; 2252
BIT 7,(IX+004H) ; 2254
JR Z,0225CH ; 2258
OR 010H ; 225A
BIT 7,(IX+005H) ; 225C
JR Z,02264H ; 2260
OR 020H ; 2262
BIT 7,(IX+006H) ; 2264
JR Z,0226CH ; 2268
OR 040H ; 226A
BIT 7,(IX+007H) ; 226C
JR Z,02274H ; 2270
OR 080H ; 2272
LD (IY+000H),A ; 2274
XOR A ; 2277
BIT 6,(IX+000H) ; 2278
JR Z,02280H ; 227C
OR 001H ; 227E
BIT 6,(IX+001H) ; 2280
JR Z,02288H ; 2284
OR 002H ; 2286
BIT 6,(IX+002H) ; 2288
JR Z,02290H ; 228C
OR 004H ; 228E
BIT 6,(IX+003H) ; 2290
JR Z,02298H ; 2294
OR 008H ; 2296
BIT 6,(IX+004H) ; 2298
JR Z,022A0H ; 229C
OR 010H ; 229E
BIT 6,(IX+005H) ; 22A0
JR Z,022A8H ; 22A4
OR 020H ; 22A6
BIT 6,(IX+006H) ; 22A8
JR Z,022B0H ; 22AC
OR 040H ; 22AE
BIT 6,(IX+007H) ; 22B0
JR Z,022B8H ; 22B4
OR 080H ; 22B6
LD (IY+001H),A ; 22B8
XOR A ; 22BB
BIT 5,(IX+000H) ; 22BC
JR Z,022C4H ; 22C0
OR 001H ; 22C2
BIT 5,(IX+001H) ; 22C4
JR Z,022CCH ; 22C8
OR 002H ; 22CA
BIT 5,(IX+002H) ; 22CC
JR Z,022D4H ; 22D0
OR 004H ; 22D2
BIT 5,(IX+003H) ; 22D4
JR Z,022DCH ; 22D8
OR 008H ; 22DA
BIT 5,(IX+004H) ; 22DC
JR Z,022E4H ; 22E0
OR 010H ; 22E2
BIT 5,(IX+005H) ; 22E4
JR Z,022ECH ; 22E8
OR 020H ; 22EA
BIT 5,(IX+006H) ; 22EC
JR Z,022F4H ; 22F0
OR 040H ; 22F2
BIT 5,(IX+007H) ; 22F4
JR Z,022FCH ; 22F8
OR 080H ; 22FA
LD (IY+002H),A ; 22FC
XOR A ; 22FF
BIT 4,(IX+004H) ; 2300
JR Z,02308H ; 2304
OR 010H ; 2306
BIT 4,(IX+005H) ; 2308
JR Z,02310H ; 230C
OR 020H ; 230E
BIT 4,(IX+006H) ; 2310
JR Z,02318H ; 2314
OR 040H ; 2316
BIT 4,(IX+007H) ; 2318
JR Z,02320H ; 231C
OR 080H ; 231E
LD (IY+003H),A ; 2320
LD IY,06049H ; 2323
XOR A ; 2327
BIT 1,(IX+000H) ; 2328
JR Z,02330H ; 232C
OR 001H ; 232E
BIT 1,(IX+001H) ; 2330
JR Z,02338H ; 2334
OR 002H ; 2336
BIT 1,(IX+002H) ; 2338
JR Z,02340H ; 233C
OR 004H ; 233E
BIT 1,(IX+003H) ; 2340
JR Z,02348H ; 2344
OR 008H ; 2346
BIT 1,(IX+004H) ; 2348
JR Z,02350H ; 234C
OR 010H ; 234E
BIT 1,(IX+005H) ; 2350
JR Z,02358H ; 2354
OR 020H ; 2356
BIT 1,(IX+006H) ; 2358
JR Z,02360H ; 235C
OR 040H ; 235E
BIT 1,(IX+007H) ; 2360
JR Z,02368H ; 2364
OR 080H ; 2366
LD (IY+000H),A ; 2368
XOR A ; 236B
BIT 2,(IX+000H) ; 236C
JR Z,02374H ; 2370
OR 001H ; 2372
BIT 2,(IX+001H) ; 2374
JR Z,0237CH ; 2378
OR 002H ; 237A
BIT 2,(IX+002H) ; 237C
JR Z,02384H ; 2380
OR 004H ; 2382
BIT 2,(IX+003H) ; 2384
JR Z,0238CH ; 2388
OR 008H ; 238A
BIT 2,(IX+004H) ; 238C
JR Z,02394H ; 2390
OR 010H ; 2392
BIT 2,(IX+005H) ; 2394
JR Z,0239CH ; 2398
OR 020H ; 239A
BIT 2,(IX+006H) ; 239C
JR Z,023A4H ; 23A0
OR 040H ; 23A2
BIT 2,(IX+007H) ; 23A4
JR Z,023ACH ; 23A8
OR 080H ; 23AA
LD (IY+001H),A ; 23AC
XOR A ; 23AF
BIT 3,(IX+000H) ; 23B0
JR Z,023B8H ; 23B4
OR 001H ; 23B6
BIT 3,(IX+001H) ; 23B8
JR Z,023C0H ; 23BC
OR 002H ; 23BE
BIT 3,(IX+002H) ; 23C0
JR Z,023C8H ; 23C4
OR 004H ; 23C6
BIT 3,(IX+003H) ; 23C8
JR Z,023D0H ; 23CC
OR 008H ; 23CE
BIT 3,(IX+004H) ; 23D0
JR Z,023D8H ; 23D4
OR 010H ; 23D6
BIT 3,(IX+005H) ; 23D8
JR Z,023E0H ; 23DC
OR 020H ; 23DE
BIT 3,(IX+006H) ; 23E0
JR Z,023E8H ; 23E4
OR 040H ; 23E6
BIT 3,(IX+007H) ; 23E8
JR Z,023F0H ; 23EC
OR 080H ; 23EE
LD (IY+002H),A ; 23F0
XOR A ; 23F3
BIT 4,(IX+000H) ; 23F4
JR Z,023FCH ; 23F8
OR 010H ; 23FA
BIT 4,(IX+001H) ; 23FC
JR Z,02404H ; 2400
OR 020H ; 2402
BIT 4,(IX+002H) ; 2404
JR Z,0240CH ; 2408
OR 040H ; 240A
BIT 4,(IX+003H) ; 240C
JR Z,02414H ; 2410
OR 080H ; 2412
LD (IY+003H),A ; 2414
RET ; 2417

LD HL,02724H ; 2418
LD DE,(06033H) ; 241B
ADD HL,DE ; 241F
LD C,(HL) ; 2420
LD IX,06045H ; 2421
CALL 02434H ; 2425
LD IX,06049H ; 2428
CALL 02434H ; 242C
DEC C ; 242F
JP NZ,02421H ; 2430
RET ; 2433

BIT 7,(IX+000H) ; 2434
JR Z,02440H ; 2438
SET 3,(IX+003H) ; 243A
JR 02444H ; 243E
RES 3,(IX+003H) ; 2440
LD B,003H ; 2444
SLA (IX+000H) ; 2446
BIT 7,(IX+001H) ; 244A
JR Z,0245AH ; 244E
SET 0,(IX+000H) ; 2450
INC IX ; 2454
DJNZ 02446H ; 2456
JR 02462H ; 2458
RES 0,(IX+000H) ; 245A
INC IX ; 245E
DJNZ 02446H ; 2460
SLA (IX+000H) ; 2462
LD A,(IX+000H) ; 2466
AND 0F0H ; 2469
LD (IX+000H),A ; 246B
RET ; 246E

LD IX,06045H ; 246F
XOR A ; 2473
BIT 3,(IX+000H) ; 2474
JR Z,0247CH ; 2478
OR 001H ; 247A
BIT 7,(IX+000H) ; 247C
JR Z,02484H ; 2480
OR 002H ; 2482
BIT 0,(IX+002H) ; 2484
JR Z,0248CH ; 2488
OR 004H ; 248A
BIT 5,(IX+001H) ; 248C
JR Z,02494H ; 2490
OR 008H ; 2492
BIT 7,(IX+002H) ; 2494
JR Z,0249CH ; 2498
OR 010H ; 249A
BIT 2,(IX+001H) ; 249C
JR Z,024A4H ; 24A0
OR 020H ; 24A2
LD (IY+000H),A ; 24A4
XOR A ; 24A7
BIT 6,(IX+001H) ; 24A8
JR Z,024B0H ; 24AC
OR 001H ; 24AE
BIT 3,(IX+002H) ; 24B0
JR Z,024B8H ; 24B4
OR 002H ; 24B6
BIT 2,(IX+000H) ; 24B8
JR Z,024C0H ; 24BC
OR 004H ; 24BE
BIT 1,(IX+001H) ; 24C0
JR Z,024C8H ; 24C4
OR 008H ; 24C6
BIT 4,(IX+003H) ; 24C8
JR Z,024D0H ; 24CC
OR 010H ; 24CE
BIT 5,(IX+000H) ; 24D0
JR Z,024D8H ; 24D4
OR 020H ; 24D6
LD (IY+001H),A ; 24D8
XOR A ; 24DB
BIT 0,(IX+000H) ; 24DC
JR Z,024E4H ; 24E0
OR 001H ; 24E2
BIT 6,(IX+003H) ; 24E4
JR Z,024ECH ; 24E8
OR 002H ; 24EA
BIT 4,(IX+000H) ; 24EC
JR Z,024F4H ; 24F0
OR 004H ; 24F2
BIT 4,(IX+001H) ; 24F4
JR Z,024FCH ; 24F8
OR 008H ; 24FA
BIT 5,(IX+002H) ; 24FC
JR Z,02504H ; 2500
OR 010H ; 2502
BIT 1,(IX+002H) ; 2504
JR Z,0250CH ; 2508
OR 020H ; 250A
LD (IY+002H),A ; 250C
XOR A ; 250F
BIT 6,(IX+000H) ; 2510
JR Z,02518H ; 2514
OR 001H ; 2516
BIT 3,(IX+001H) ; 2518
JR Z,02520H ; 251C
OR 002H ; 251E
BIT 4,(IX+002H) ; 2520
JR Z,02528H ; 2524
OR 004H ; 2526
BIT 5,(IX+003H) ; 2528
JR Z,02530H ; 252C
OR 008H ; 252E
BIT 1,(IX+000H) ; 2530
JR Z,02538H ; 2534
OR 010H ; 2536
BIT 0,(IX+001H) ; 2538
JR Z,02540H ; 253C
OR 020H ; 253E
LD (IY+003H),A ; 2540
XOR A ; 2543
BIT 5,(IX+007H) ; 2544
JR Z,0254CH ; 2548
OR 001H ; 254A
BIT 5,(IX+006H) ; 254C
JR Z,02554H ; 2550
OR 002H ; 2552
BIT 7,(IX+005H) ; 2554
JR Z,0255CH ; 2558
OR 004H ; 255A
BIT 5,(IX+004H) ; 255C
JR Z,02564H ; 2560
OR 008H ; 2562
BIT 0,(IX+006H) ; 2564
JR Z,0256CH ; 2568
OR 010H ; 256A
BIT 3,(IX+005H) ; 256C
JR Z,02574H ; 2570
OR 020H ; 2572
LD (IY+004H),A ; 2574
XOR A ; 2577
BIT 4,(IX+006H) ; 2578
JR Z,02580H ; 257C
OR 001H ; 257E
BIT 3,(IX+004H) ; 2580
JR Z,02588H ; 2584
OR 002H ; 2586
BIT 7,(IX+006H) ; 2588
JR Z,02590H ; 258C
OR 004H ; 258E
BIT 1,(IX+006H) ; 2590
JR Z,02598H ; 2594
OR 008H ; 2596
BIT 4,(IX+005H) ; 2598
JR Z,025A0H ; 259C
OR 010H ; 259E
BIT 6,(IX+004H) ; 25A0
JR Z,025A8H ; 25A4
OR 020H ; 25A6
LD (IY+005H),A ; 25A8
XOR A ; 25AB
BIT 7,(IX+007H) ; 25AC
JR Z,025B4H ; 25B0
OR 001H ; 25B2
BIT 2,(IX+004H) ; 25B4
JR Z,025BCH ; 25B8
OR 002H ; 25BA
BIT 4,(IX+007H) ; 25BC
JR Z,025C4H ; 25C0
OR 004H ; 25C2
BIT 5,(IX+005H) ; 25C4
JR Z,025CCH ; 25C8
OR 008H ; 25CA
BIT 3,(IX+006H) ; 25CC
JR Z,025D4H ; 25D0
OR 010H ; 25D2
BIT 0,(IX+005H) ; 25D4
JR Z,025DCH ; 25D8
OR 020H ; 25DA
LD (IY+006H),A ; 25DC
XOR A ; 25DF
BIT 4,(IX+004H) ; 25E0
JR Z,025E8H ; 235E4
OR 001H ; 25E6
BIT 7,(IX+004H) ; 25E8
JR Z,025F0H ; 25EC
OR 002H ; 25EE
BIT 0,(IX+004H) ; 25F0
JR Z,025F8H ; 25F4
OR 004H ; 25F6
BIT 2,(IX+006H) ; 25F8
JR Z,02600H ; 25FC
OR 008H ; 25FE
BIT 2,(IX+005H) ; 2600
JR Z,02608H ; 2604
OR 010H ; 2606
BIT 6,(IX+006H) ; 2608
JR Z,02610H ; 260C
OR 020H ; 260E
LD (IY+007H),A ; 2610
RET ; 2613

251C:2710 DD 23 10 EE-18 08 DD CB 00 86 DD 23 .#.........#
251C:2720 10 E4 DD CB 00 26 DD 7E-00 E6 F0 DD 77 00 C9 DD .....&.~....w...
251C:2730 21 45 60 AF DD CB 00 5E-28 02 F6 01 DD CB 00 7E !E`....^(......~
251C:2740 28 02 F6 02 DD CB 02 46-28 02 F6 04 DD CB 01 6E (......F(......n
251C:2750 28 02 F6 08 DD CB 02 7E-28 02 F6 10 DD CB 01 56 (......~(......V
251C:2760 28 02 F6 20 FD 77 00 AF-DD CB 01 76 28 02 F6 01 (.. .w.....v(...
251C:2770 DD CB 02 5E 28 02 F6 02-DD CB 00 56 28 02 F6 04 ...^(......V(...
251C:2780 DD CB 01 4E 28 02 F6 08-DD CB 03 66 28 02 F6 10 ...N(......f(...
251C:2790 DD CB 00 6E 28 02 F6 20-FD 77 01 AF DD CB 00 46 ...n(.. .w.....F
251C:27A0 28 02 F6 01 DD CB 03 76-28 02 F6 02 DD CB 00 66 (......v(......f
251C:27B0 28 02 F6 04 DD CB 01 66-28 02 F6 08 DD CB 02 6E (......f(......n
251C:27C0 28 02 F6 10 DD CB 02 4E-28 02 F6 20 FD 77 02 AF (......N(.. .w..
251C:27D0 DD CB 00 76 28 02 F6 01-DD CB 01 5E 28 02 F6 02 ...v(......^(...
251C:27E0 DD CB 02 66 28 02 F6 04-DD CB 03 6E 28 02 F6 08 ...f(......n(...
251C:27F0 DD CB 00 4E 28 02 F6 10-DD CB 01 46 28 02 F6 20 ...N(......F(..
251C:2800 FD 77 03 AF DD CB 07 6E-28 02 F6 01 DD CB 06 6E .w.....n(......n
251C:2810 28 02 F6 02 DD CB 05 7E-28 02 F6 04 DD CB 04 6E (......~(......n
251C:2820 28 02 F6 08 DD CB 06 46-28 02 F6 10 DD CB 05 5E (......F(......^
251C:2830 28 02 F6 20 FD 77 04 AF-DD CB 06 66 28 02 F6 01 (.. .w.....f(...
251C:2840 DD CB 04 5E 28 02 F6 02-DD CB 06 7E 28 02 F6 04 ...^(......~(...
251C:2850 DD CB 06 4E 28 02 F6 08-DD ...N(....

CALL 03BE7H ; 2758 Turn Off DTMF Tone & Output
CALL 03B98H ; 275B (P40.6) = 1
CALL 03B8FH ; 275E (P41.3) = 0 (Cuelga)
LD A,(0642EH) ; 2761
CP 000H ; 2764
JP Z,02812H ; 2766
LD A,(065CDH) ; 2769
OR A ; 276C
JP NZ,02812H ; 276D
LD A,(06448H) ; 2770
OR A ; 2773
CALL NZ,00BB8H ; 2774 Write ' | RETIRE TARJETA'
LD A,(0642BH) ; 2777 Timer 6W
CP 020H ; 277A
JR C,0278DH ; 277C
LD A,(065CDH) ; 277E
OR A ; 2781
JP NZ,02812H ; 2782
CALL 00BB8H ; 2785 Write ' | RETIRE TARJETA'
CALL 03BB3H ; 2788 Espera IRQ y vuelve
JR 02777H ; 278B
CALL 0138AH ; 278D
CALL 03C9EH ; 2790
CALL 028B7H ; 2793
LD A,(0644AH) ; 2796
OR A ; 2799
CALL NZ,00C4DH ; 279A Write 'CIERRE LA PUERTA'
CALL 00D28H ; 279D Borra la linea de abajo
LD A,(065CDH) ; 27A0
OR A ; 27A3
JR NZ,02812H ; 27A4
LD A,(0644AH) ; 27A6
OR A ; 27A9
JR Z,027B7H ; 27AA
CALL 03BB3H ; 27AC HALT y Vuelve
CALL 03DA3H ; 27AF Get Key Pressed Carry On Error
CALL NC,00D9BH ; 27B2 Refresca el Display
JR 027A0H ; 27B5
LD A,(0642CH) ; 27B7
RES 6,A ; 27BA
LD (0642CH),A ; 27BC
LD A,(0642CH) ; 27BF
RES 1,A ; 27C2
LD (0642CH),A ; 27C4
CALL 028B7H ; 27C7
CALL 00D15H ; 27CA Actualiza los Pulsos en el Display
LD A,(06449H) ; 27CD
OR A ; 27D0
CALL NZ,00B0DH ; 27D1 Write 'la misma linea| CUELGUE'
LD A,(065CDH) ; 27D4
OR A ; 27D7
JR NZ,02812H ; 27D8
LD A,(0644AH) ; 27DA
OR A ; 27DD
JR Z,027EBH ; 27DE
CALL 028B7H ; 27E0
CALL 00C4DH ; 27E3 Write 'CIERRE LA PUERTA'
CALL 00D28H ; 27E6 Borra la linea de abajo
JR 027A0H ; 27E9
LD A,(06449H) ; 27EB
OR A ; 27EE
JR Z,027FCH ; 27EF
CALL 03BB3H ; 27F1 Espera IRQ y vuelve
CALL 03DA3H ; 27F4 Get Key Pressed Carry On Error
CALL NC,00D9BH ; 27F7 Refresca el Display
JR 027D4H ; 27FA
CALL 00B5FH ; 27FC Write 'ESPERE POR FAVOR'
LD A,(065E4H) ; 27FF
OR A ; 2802
JR Z,0280CH ; 2803
LD BC,04343H ; 2805
LD (065B8H),BC ; 2808 (65B8) = 'CC'
CALL 0284CH ; 280C
CALL 028B7H ; 280F
LD A,(065C1H) ; 2812 Buffer #7 Counter
OR A ; 2815
JR NZ,02812H ; 2816
LD A,(065CDH) ; 2818
PUSH AF ; 281B
LD A,(065D1H) ; 281C
PUSH AF ; 281F
CALL 029D6H ; 2820 Init Buffers & Idioma
DI ; 2823
CALL 029FBH ; 2824 Init Buffer Counters & Head-Tail Ptrs
EI ; 2827
POP AF ; 2828
LD (065D1H),A ; 2829
POP AF ; 282C
LD (065CDH),A ; 282D
CALL 01A6EH ; 2830
LD A,002H ; 2833
LD (0644BH),A ; 2835
RET ; 2838

LD DE,00002H ; 2839
LD B,008H ; 283C
RRA ; 283E
JR C,02844H ; 283F
ADD HL,DE ; 2841
DJNZ 0283EH ; 2842
LD C,(HL) ; 2844
INC HL ; 2845
LD B,(HL) ; 2846
LD (065B8H),BC ; 2847
RET ; 284B


LD A,(0642EH) ; 284C
OR A ; 284F
JR Z,0289EH ; 2850
LD HL,02734H ; 2852
LD A,(0642CH) ; 2855
AND 010H ; 2858
JR NZ,02866H ; 285A
LD HL,02746H ; 285C
LD A,(0642DH) ; 285F
AND 004H ; 2862
JR Z,02870H ; 2864
CALL 02839H ; 2866
LD A,008H ; 2869
LD (0642EH),A ; 286B
JR 02893H ; 286E
LD HL,02734H ; 2870
LD A,(0642CH) ; 2873
AND 0CAH ; 2876
JR NZ,02884H ; 2878
LD HL,02746H ; 287A
LD A,(0642DH) ; 287D
AND 01AH ; 2880
JR Z,0288EH ; 2882
CALL 02839H ; 2884
LD A,004H ; 2887
LD (0642EH),A ; 2889
JR 02893H ; 288C
LD A,002H ; 288E
LD (0642EH),A ; 2890
LD DE,0642FH ; 2893
LD BC,00003H ; 2896
LD HL,0642CH ; 2899
LDIR ; 289C
RET ; 289E

LD A,(065D1H) ; 289F
OR A ; 28A2
JR NZ,028B6H ; 28A3
LD B,003H ; 28A5
LD HL,0642CH

  
; 28A7
LD DE,06432H ; 28AA
LD C,(HL) ; 28AD
LD A,(DE) ; 28AE
XOR C ; 28AF
JR NZ,028B6H ; 28B0
INC HL ; 28B2
INC DE ; 28B3
DJNZ 028ADH ; 28B4
RET ; 28B6

DI ; 28B7
CALL 0289FH ; 28B8
JR Z,028C6H ; 28BB
CALL 0284CH ; 28BD
EI ; 28C0
LD A,001H ; 28C1
LD (065D1H),A ; 28C3
EI ; 28C6
RET ; 28C7

; Subrutina llamada desde la primer linea de maIn()

LD B,0FFH ; 28C8
LD C,0D2H ; 28CA
CALL 02A6EH ; 28CC OUT (0Ah),66 OUT (D2h),FFh
LD C,0D3H ; 28CF
CALL 02A6EH ; 28D1 OUT (0Ah),66 OUT (D3h),FFh
LD B,001H ; 28D4
LD C,0C9H ; 28D6
CALL 02A6EH ; 28D8 OUT (0Ah),66 OUT (C9h),01h
LD B,000H ; 28DB
LD C,0D1H ; 28DD
CALL 02A6EH ; 28DF OUT (0Ah),66 OUT (D1h),00h
IN A,(0D0H) ; 28E2
INC B ; 28E4
LD C,0D6H ; 28E5
CALL 02A6EH ; 28E7 OUT (0Ah),66 OUT (D6h),01h
DEC B ; 28EA
LD C,0C7H ; 28EB
CALL 02A6EH ; 28ED OUT (0Ah),66 OUT (C7h),00h
DEC C ; 28F0
CALL 02A6EH ; 28F1 OUT (0Ah),66 OUT (C6h),00h
DEC C ; 28F4
CALL 02A6EH ; 28F5 OUT (0Ah),66 OUT (C5h),00h
DEC C ; 28F8
CALL 02A6EH ; 28F9 OUT (0Ah),66 OUT (C4h),00h
DEC C ; 28FC
CALL 02A6EH ; 28FD OUT (0Ah),66 OUT (C3h),00h
LD B,0FFH ; 2900
LD C,0D5H ; 2902
CALL 02A6EH ; 2904 OUT (0Ah),66 OUT (D5h),FFh
LD B,020H ; 2907
LD C,0D1H ; 2909
CALL 02A6EH ; 290B OUT (0Ah),66 OUT (D1h),20h
LD A,0FFH ; 290E
OUT (000H),A ; 2910 Port de la matriz del teclado
OUT (060H),A ; 2912 Out (60h),FFh
LD A,0C0H ; 2914
CALL 03CCDH ; 2916 Out (40h),Bit 5 de A=Bit 1 de In(42h)
LD A,036H ; 2919
OUT (065H),A ; 291B Out (65h),36h
LD A,018H ; 291D
OUT (045H),A ; 291F Out (45h),18h
LD A,040H ; 2921
OUT (061H),A ; 2923 Out (61h),40h
XOR A ; 2925
OUT (002H),A ; 2926 Out (02h),0
OUT (062H),A ; 2928 Out (62h),0
OUT (067H),A ; 292A Out (67h),0
OUT (047H),A ; 292C Out (47h),0
OUT (080H),A ; 292E Out (80h),0
LD A,080H ; 2930
OUT (041H),A ; 2932 Out (41h),80h
LD A,0FFH ; 2934
OUT (063H),A ; 2936 Out (63h),FFh
OUT (043H),A ; 2938 Out (43h),FFh
OUT (064H),A ; 293A Out (64h),FFh
OUT (044H),A ; 293C Out (44h),FFh
XOR A ; 293E
OUT (046H),A ; 293F Out (46h),0
IN A,(045H) ; 2941 In (45h)
XOR A ; 2943
OUT (000H),A ; 2944 Port de la Matriz del Teclado
OUT (004H),A ; 2946
OUT (006H),A ; 2948
OUT (008H),A ; 294A
IN A,(020H) ; 294C
IN A,(028H) ; 294E
OUT (00CH),A ; 2950
LD HL,06679H ; 2952
LD BC,061CDH ; 2955
XOR A ; 2958
SBC HL,BC ; 2959
LD DE,00000H ; 295B
XOR A ; 295E
OUT (00CH),A ; 295F
LD (BC),A ; 2961
INC BC ; 2962
DEC HL ; 2963
LD A,H ; 2964
OR L ; 2965
JR NZ,0295EH ; 2966 Llena 61CD-6679 con 0
LD A,000H ; 2968
LD I,A ; 296A
IM 2 ; 296C
CALL 00D37H ; 296E Init Display
CALL 00B5FH ; 2971 Write 'ESPERE POR FAVOR'
CALL 01A45H ; 2974 Decode Memory ¨¨¨??? ROM -> RAM
RET ; 2977

IN A,(002H) ; 2978
SET 5,A ; 297A
SET 6,A ; 297C
OUT (002H),A ; 297E (P02.5)=1 (P02.6)=1
LD B,004H ; 2980
LD C,0D1H ; 2982
CALL 02A6EH ; 2984 (P0A)=6h6 (PD1)=04h
IN A,(0D0H) ; 2987
LD A,084H ; 2989
OUT (063H),A ; 298B (P63)=84h
OUT (064H),A ; 298D (P64)=84h
IN A,(064H) ; 298F
LD (06677H),A ; 2991 (6677h)=(P64)
LD A,01FH ; 2994
OUT (043H),A ; 2996 (P43)=1Fh
OUT (044H),A ; 2998 (P44)=1Fh
IN A,(044H) ; 299A
LD (06678H),A ; 299C (6678h)=(P44)
CALL 03C97H ; 299F ZeroF = !(P44h.6)
JR Z,029A9H ; 29A2
LD A,001H ; 29A4
LD (06449H),A ; 29A6 (6449h)=1 if (P44.6)==1
IN A,(044H) ; 29A9
AND 020H ; 29AB
JR NZ,029B4H ; 29AD
LD A,001H ; 29AF
LD (0644AH),A ; 29B1 (644Ah)=1 if (P44.5)==0
CALL 03C90H ; 29B4 ZeroF = !(P64h.4)
JR NZ,029BEH ; 29B7
LD A,001H ; 29B9
LD (06448H),A ; 29BB (6448h)=1 if (P64.4)==1
IN A,(064H) ; 29BE
AND 040H ; 29C0
JR NZ,029CCH ; 29C2
LD A,(0642CH) ; 29C4
SET 7,A ; 29C7
LD (0642CH),A ; 29C9 (642C.7)=1 if (P64.6)==0
LD HL,01645H ; 29CC
LD (06429H),HL ; 29CF Fuera de servicio Timer = 1645h = 5701d
CALL 03702H ; 29D2 Scan Keyboard, if Pressed Play & Push Key
RET ; 29D5

; Segunda rutina llamada desde Main(), tambien se llama desde un lado +
; Inicializa los Buffer Counter a 0
; Inicializa el Next Avail Byte & Next Free Slot de cada buffer a
; BuffHead y BuffHead+1
; Inicializa el Offset a sumar para el idioma a Castellano
; Inicializa el Codigo de Idioma a Castellano
; Llena con ceros el area 65BAh-6653h

LD HL,06653H ; 29D6
LD BC,065BAH ; 29D9 Buffer #1 Counter
XOR A ; 29DC
SBC HL,BC ; 29DD
LD DE,00000H ; 29DF
XOR A ; 29E2
OUT (00CH),A ; 29E3
LD (BC),A ; 29E5
INC BC ; 29E6
DEC HL ; 29E7 Llena con ceros el area 65BAh-6653h y
LD A,H ; 29E8 manda al port (0Ch) tantos 0 como bytes
OR L ; 29E9 hay en ese area.
JR NZ,029E2H ; 29EA
CALL 029FBH ; 29EC Init Buffer Counters & Head-Tail Ptrs
LD HL,00000H ; 29EF
LD (06650H),HL ; 29F2 Offset Para Cada Idioma = 0 Castellano
LD A,000H ; 29F5
LD (06652H),A ; 29F7 Codigo de Idioma
RET ; 29FA

XOR A ; 29FB
LD HL,065BAH ; 29FC Buffer #1 Counter
LD B,018H ; 29FF
LD (HL),A ; 2A01 Buffer #1 Counter = 0
INC HL ; 2A02
DJNZ 02A01H ; 2A03 Pone todos los Buffer Counters a 0
LD HL,061CDH ; 2A05 Buffer #1 Head
LD (061DFH),HL ; 2A08
INC HL ; 2A0B
LD (061DDH),HL ; 2A0C
LD HL,061E1H ; 2A0F Buffer #2 Head (Numero Marcado)
LD (061F7H),HL ; 2A12
INC HL ; 2A15
LD (061F5H),HL ; 2A16
LD HL,0623DH ; 2A19 Buffer #6 Head
LD (0627FH),HL ; 2A1C
INC HL ; 2A1F
LD (0627DH),HL ; 2A20
LD HL,061F9H ; 2A23 Buffer #5 Head
LD (0623BH),HL ; 2A26
INC HL ; 2A29
LD (06239H),HL ; 2A2A
LD HL,06305H ; 2A2D Buffer #4 Head
LD (06387H),HL ; 2A30
INC HL ; 2A33
LD (06385H),HL ; 2A34
LD HL,06281H ; 2A37 Buffer #3 Head
LD (06303H),HL ; 2A3A
INC HL ; 2A3D
LD (06301H),HL ; 2A3E
LD HL,06389H ; 2A41 Buffer #7 Head
LD (063CBH),HL ; 2A44
INC HL ; 2A47
LD (063C9H),HL ; 2A48
LD HL,063CDH ; 2A4B Buffer #8 Head
LD (0640FH),HL ; 2A4E
INC HL ; 2A51
LD (0640DH),HL ; 2A52
RET ; 2A55

LD HL,06E7CH ; 2A56
LD BC,0667DH ; 2A59
XOR A ; 2A5C
SBC HL,BC ; 2A5D
INC HL ; 2A5F
LD A,066H ; 2A60
OUT (00CH),A ; 2A62
LD A,0FFH ; 2A64
LD (BC),A ; 2A66
INC BC ; 2A67
DEC HL ; 2A68
LD A,H ; 2A69
OR L ; 2A6A
JR NZ,02A60H ; 2A6B
RET ; 2A6D

PUSH AF ; 2A6E (P0A)=66h (P C)=B
LD A,066H ; 2A6F
OUT (00AH),A ; 2A71
OUT (C),B ; 2A73
POP AF ; 2A75
RET ; 2A76

LD B,0FFH ; 2A77 Turn off Hardware Time Out
LD C,0D2H ; 2A79
CALL 02A6EH ; 2A7B OUT (0A),66 OUT (D2),FF
LD C,0D3H ; 2A7E
CALL 02A6EH ; 2A80 OUT (0A),66 OUT (D3),FF
LD C,0D5H ; 2A83
CALL 02A6EH ; 2A85 OUT (0A),66 OUT (D5),FF
LD B,000H ; 2A88
LD C,0C7H ; 2A8A
CALL 02A6EH ; 2A8C OUT (0A),66 OUT (C7),00
LD C,0C6H ; 2A8F
CALL 02A6EH ; 2A91 OUT (0A),66 OUT (C6),00
LD C,0C5H ; 2A94
CALL 02A6EH ; 2A96 OUT (0A),66 OUT (C5),00
LD B,001H ; 2A99
LD C,0CCH ; 2A9B
CALL 02A6EH ; 2A9D OUT (0A),66 OUT (CC),1
LD B,080H ; 2AA0
LD C,0D1H ; 2AA2
CALL 02A6EH ; 2AA4 OUT (0A),66 OUT (D1),80
LD B,001H ; 2AA7
LD C,0D6H ; 2AA9
CALL 02A6EH ; 2AAB OUT (0A),66 OUT (D6),1
IN A,(0D0H) ; 2AAE
RET ; 2AB0

LD A,(065EAH) ; 2AB1
CP 001H ; 2AB4
JR NZ,02B23H ; 2AB6
CALL 00B5FH ; 2AB8 Write 'ESPERE POR FAVOR'
CALL 00F33H ; 2ABB Lectura de tarjeta ...
LD A,(06606H) ; 2ABE (=6606h)=3 => FICHAS =/=> PULSOS
LD (06435H),A ; 2AC1
LD A,(065CDH) ; 2AC4
OR A ; 2AC7
JP NZ,02CA2H ; 2AC8 (65EAh) = 03h RET
LD A,(065EDH) ; 2ACB
CP 001H ; 2ACE
JP Z,02C98H ; 2AD0
LD A,000H ; 2AD3
CALL 03F5BH ; 2AD5 Put Buffer #7 (Internal Commands)
LD A,010H ; 2AD8
LD (06419H),A ; 2ADA Timer 1B=10h
LD A,000H ; 2ADD
LD (065DBH),A ; 2ADF
LD A,(0662FH) ; 2AE2
OR A ; 2AE5
JP NZ,02B1DH ; 2AE6
JP 02C5DH ; 2AE9
CALL 03BB3H ; 2AEC Espera IRQ y vuelve
CALL 03DA3H ; 2AEF Get Key Pressed Carry On Error
CALL NC,00D9BH ; 2AF2 Refresca el Display
LD A,(065CDH) ; 2AF5
OR A ; 2AF8
JP NZ,02CA2H ; 2AF9
LD A,(06419H) ; 2AFC Timer 1B
OR A ; 2AFF
JP Z,02C90H ; 2B00
LD A,(065C4H) ; 2B03
OR A ; 2B06
JR Z,02AECH ; 2B07
LD A,(065B4H) ; 2B09
OR A ; 2B0C
JR NZ,02B18H ; 2B0D
LD A,(0662FH) ; 2B0F
OR A ; 2B12
JP Z,02C5DH ; 2B13
JR 02B1DH ; 2B16
AND 080H ; 2B18
CALL NZ,0134FH ; 2B1A
CALL 00B6DH ; 2B1D Write 'TARJETA INVALIDA | CUELGUE'
JP 02C85H ; 2B20
CP 003H ; 2B23
JP NZ,02B98H ; 2B25
DI ; 2B28
LD HL,06389H ; 2B29
LD (063CBH),HL ; 2B2C
INC HL ; 2B2F
LD (063C9H),HL ; 2B30
LD HL,061E1H ; 2B33
LD (061F7H),HL ; 2B36
INC HL ; 2B39
LD (061F5H),HL ; 2B3A
XOR A ; 2B3D
LD (065C1H),A ; 2B3E Buffer #7 Counter
LD (065BBH),A ; 2B41 Buffer #2 Counter (Numero Marcado)
EI ; 2B44
CALL 03B8FH ; 2B45 (P41.3) = 0 (Cuelga)
CALL 03BC6H ; 2B48 No tone on DTMF chip's output
LD A,(0642EH) ; 2B4B
CP 000H ; 2B4E
JP Z,02C95H ; 2B50
CP 008H ; 2B53
JP Z,02C95H ; 2B55
CALL 00CACH ; 2B58 Write 'DESCUELGUE | LLAMADA ENTRANTE'
LD A,(0641EH) ; 2B5B Timer B
OR A ; 2B5E
CALL Z,03CB4H ; 2B5F Prende el Bit 7 del Port 61 y 641E=2
CALL 03BB3H ; 2B62 Espera IRQ y vuelve
LD A,(065EDH) ; 2B65
OR A ; 2B68
JP NZ,02C90H ; 2B69
CALL 03DA3H ; 2B6C Get Key Pressed Carry On Error
CALL NC,00CACH ; 2B6F Write 'DESCUELGUE | LLAMADA ENTRANTE'
LD A,(06449H) ; 2B72
OR A ; 2B75
JR Z,02B5BH ; 2B76
LD A,001H ; 2B78
LD (065E5H),A ; 2B7A
LD A,00CH ; 2B7D
CALL 03F5BH ; 2B7F Put Buffer #7 (Internal Commands)
CALL 00BDDH ; 2B82 Write 'CUELGUE DESPUES|DE LA LLAMADA'
LD DE,00E11H ; 2B85
LD (06427H),DE ; 2B88 Timer 4W
LD (06425H),DE ; 2B8C Timer 3W
LD A,006H ; 2B90
LD (0644BH),A ; 2B92
JP 02CA7H ; 2B95 RET
XOR A ; 2B98
LD (065E5H),A ; 2B99
CALL 02CA8H ; 2B9C Case (642Eh): 'DESC','EMERG','FUERA'
CALL 03BB3H ; 2B9F Espera IRQ y vuelve
LD A,(0641AH) ; 2BA2 Timer 2B
CP 001H ; 2BA5
JR Z,02BB0H ; 2BA7
LD A,(06652H) ; 2BA9 Codigo de Idioma
CP 000H ; 2BAC
JR Z,02BC5H ; 2BAE
LD A,(0642EH) ; 2BB0
CP 000H ; 2BB3 si (642E)=0 o (6449)=0 va a 2BC2h
JR NZ,02BC2H ; 2BB5
LD A,(06449H) ; 2BB7
OR A ; 2BBA
JR Z,02BC2H ; 2BBB sino ...
CALL 03DA3H ; 2BBD Get Key Pressed Carry On Error
JR C,02BC5H ; 2BC0
CALL 00D9BH ; 2BC2 Refresca el Display
LD HL,01645H ; 2BC5
LD (06429H),HL ; 2BC8 Fuera de servicio Timer = 1645h = 5701d
LD A,(0644AH) ; 2BCB
OR A ; 2BCE
CALL NZ,0167EH ; 2BCF (Puerta Abierta)
LD A,(065CDH) ; 2BD2
OR A ; 2BD5
JP NZ,02CA2H ; 2BD6
LD A,(065EDH) ; 2BD9
OR A ; 2BDC
JP NZ,02C98H ; 2BDD
LD A,(06449H) ; 2BE0
OR A ; 2BE3
JR NZ,02BEEH ; 2BE4
CALL 03DA3H ; 2BE6 Get Key Pressed Carry On Error
CALL NC,02CA8H ; 2BE9 Case (642Eh): 'DESC','EMERG','FUERA'
JR 02B9FH ; 2BEC
LD A,001H ; 2BEE
LD (065E5H),A ; 2BF0
LD A,(0642EH) ; 2BF3
CP 000H ; 2BF6
JP Z,02B9FH ; 2BF8
CP 008H ; 2BFB
JP Z,02C95H ; 2BFD
CALL 03BBFH ; 2C00 Play 701.3 Hz on DTMF chip
LD A,014H ; 2C03 Timer de inserte tarjeta
LD (06419H),A ; 2C05 Timer B
LD A,(0642EH) ; 2C08 Timer
CP 004H ; 2C0B
JR NZ,02C14H ; 2C0D
CALL 00AFDH ; 2C0F Write 'NUMERO MARCADO | el numero'
JR 02C17H ; 2C12
CALL 00AEFH ; 2C14 Write 'INSERTE TARJETA | '
CALL 03BB3H ; 2C17 Espera IRQ y vuelve
LD A,(0641AH) ; 2C1A TIMER 2B
CP 001H ; 2C1D
JR NZ,02C24H ; 2C1F
CALL 00D9BH ; 2C21 Reimprime 'INSERTE..' 641A = 1
LD A,(065CDH) ; 2C24
OR A ; 2C27
JP NZ,02CA2H ; 2C28 ; Cancelar, salir, terminal, finalizar
LD A,(065EDH) ; 2C2B (065EDH)
OR A ; 2C2E
JR NZ,02C98H ; 2C2F

LD A,(06419H) ; 2C31 Timer B
OR A ; 2C34
JR Z,02C98H ; 2C35 ; TimeOut?
LD A,(0642EH) ; 2C37 (0642Eh)
CP 002H ; 2C3A
JR NZ,02C4EH ; 2C3C
LD A,(06448H) ; 2C3E (06448H)
OR A ; 2C41
JR Z,02C4EH ; 2C42
LD A,001H ; 2C44
LD (065EAH),A ; 2C46 (065EAH)
CALL 03BC6H ; 2C49 No tone on DTMF chip's output
JR 02CA7H ; 2C4C
CALL 03DA3H ; 2C4E Get Key Pressed Carry On Error
JR C,02C17H ; 2C51 Buffer Vacio? Trata de leer otra vez
CP _*_KEY ; 2C53
JR NC,02C08H ; 2C55 A >= ':' ? Numero marcado
LD (0643AH),A ; 2C57
CALL 03BC6H ; 2C5A No tone on DTMF chip's output
LD A,(06606H) ; 2C5D (=6606h)=3 => FICHAS =/=> PULSOS
CP 001H ; 2C60
JR Z,02C6FH ; 2C62
CP 003H ; 2C64
JR Z,02C6FH ; 2C66
LD A,000H ; 2C68
CALL 03F5BH ; 2C6A Put Buffer #7 (Internal Commands)
JR 02C72H ; 2C6D
CALL 0137BH ; 2C6F
LD DE,00E11H ; 2C72
LD (06425H),DE ; 2C75 Timer 3W
LD A,005H ; 2C79
LD (0644BH),A ; 2C7B
LD A,010H ; 2C7E
LD (065EAH),A ; 2C80
JR 02CA7H ; 2C83 RET
LD A,008H ; 2C85
CALL 03F5BH ; 2C87 Put Buffer #7 (Internal Commands)
JR 02C98H ; 2C8A
XOR A ; 2C8C
LD (065CDH),A ; 2C8D
LD A,008H ; 2C90
CALL 03F5BH ; 2C92 Put Buffer #7 (Internal Commands)
CALL 00D15H ; 2C95 Actualiza los Pulsos en el Display

CALL 03BC6H ; 2C98 No tone on DTMF chip's output
LD A,007H ; 2C9B
LD (0644BH),A ; 2C9D
JR 02CA7H ; 2CA0 RET
LD A,003H ; 2CA2
LD (065EAH),A ; 2CA4
RET ; 2CA7

LD A,(0642EH) ; 2CA8 Case (642Eh): 'DESC','EMERG','FUERA'
CP 004H ; 2CAB
JR Z,02CBCH ; 2CAD
CP 000H ; 2CAF
JR Z,02CC1H ; 2CB1
CP 008H ; 2CB3
JR Z,02CC1H ; 2CB5
CALL 00C9EH ; 2CB7 Write 'DESCUELGUE'
JR 02CC4H ; 2CBA
CALL 00CCCH ; 2CBC Write ' ( ) SOLO | EMERGENCIAS'
JR 02CC4H ; 2CBF
CALL 00ADFH ; 2CC1 Write '( ) FUERA | DE SERVICIO'
RET ; 2CC4

LD BC,0050CH ; 2CC5
LD (BC),A ; 2CC8
ADD HL,BC ; 2CC9
LD BC,00103H ; 2CCA
INC B ; 2CCD
LD BC,00104H ; 2CCE
LD BC,00706H ; 2CD1
RLCA ; 2CD4

; Interrupt #1

PUSH AF ; 2CD5
PUSH BC ; 2CD6
PUSH DE ; 2CD7
PUSH HL ; 2CD8
PUSH IX ; 2CD9
PUSH IY ; 2CDB
OUT (008H),A ; 2CDD
LD IX,06417H ; 2CDF
LD DE,06418H ; 2CE3
LD A,(IX+000H) ; 2CE6
CP 000H ; 2CE9
JR Z,02CF1H ; 2CEB
DEC A ; 2CED
LD (IX+000H),A ; 2CEE
PUSH IX ; 2CF1
POP HL ; 2CF3
SBC HL,DE ; 2CF4
JR Z,02CFCH ; 2CF6
INC IX ; 2CF8
JR 02CE6H ; 2CFA
CALL 02D8DH ; 2CFC
LD A,(07C00H) ; 2CFF
BIT 0,A ; 2D02
JR Z,02D48H ; 2D04
LD A,(065DBH) ; 2D06
OR A ; 2D09
JR Z,02D48H ; 2D0A
LD A,(06417H) ; 2D0C
OR A ; 2D0F
CALL NZ,0408FH ; 2D10 (6418h)=0Ch
JR NZ,02D48H ; 2D13
LD A,(06445H) ; 2D15
CP 001H ; 2D18
JR Z,02D3BH ; 2D1A
LD A,(065BBH) ; 2D1C Buffer #2 Counter (Numero Marcado)
OR A ; 2D1F
JR Z,02D48H ; 2D20
CALL 03DE8H ; 2D22 Get Buffer #2 (Numero Marcado)
AND 00FH ; 2D25
CALL 03BCDH ; 2D27 Dial Number A in DTMF
LD A,001H ; 2D2A
LD (065C5H),A ; 2D2C
LD A,003H ; 2D2F
LD (06417H),A ; 2D31
LD A,001H ; 2D34
LD (06445H),A ; 2D36
JR 02D48H ; 2D39
LD A,000H ; 2D3B
LD (06445H),A ; 2D3D
CALL 03BE7H ; 2D40 Turn Off DTMF Tone & Output
LD A,003H ; 2D43
LD (06417H),A ; 2D45
LD A,(06602H) ; 2D48 ; Flag externo que indica comienzo de
; lectura . ? .
OR A ; 2D4B
JR NZ,02D5EH ; 2D4C
LD A,(065BDH) ; 2D4E Buffer #6 Counter
OR A ; 2D51
JR Z,02D5EH ; 2D52
CALL 03EFCH ; 2D54 Get Buffer #6 Carry On Error
OUT (068H),A ; 2D57
LD A,001H ; 2D59
LD (06602H),A ; 2D5B
LD A,(06603H) ; 2D5E
OR A ; 2D61
JR NZ,02D7BH ; 2D62
LD A,(06604H) ; 2D64
CP 000H ; 2D67
JR NZ,02D7BH ; 2D69
LD A,(065BFH) ; 2D6B Buffer #4 Counter
OR A ; 2D6E
JR Z,02D7BH ; 2D6F
CALL 03E72H ; 2D71 Get Buffer #4 Carry On Error
OUT (048H),A ; 2D74
LD A,001H ; 2D76
LD (06603H),A ; 2D78
LD A,(06416H) ; 2D7B Timer 6BB
OR A ; 2D7E
CALL NZ,0408FH ; 2D7F (6418h)=0Ch
POP IY ; 2D82
POP IX ; 2D84
POP HL ; 2D86
POP DE ; 2D87
POP BC ; 2D88
POP AF ; 2D89
EI ; 2D8A
RETI ; 2D8B

LD A,(06444H) ; 2D8D
CP 001H ; 2D90
JP Z,02E03H ; 2D92
CP 002H ; 2D95
JP Z,02E52H ; 2D97
LD A,(065C0H) ; 2D9A Buffer #8 Counter
OR A ; 2D9D
JR Z,02DB4H ; 2D9E
CALL 03F89H ; 2DA0 Get Buffer #8 Carry On Error
CP 055H ; 2DA3
JP NZ,02E6AH ; 2DA5 RET
LD A,001H ; 2DA8
LD (06444H),A ; 2DAA
XOR A ; 2DAD
LD (06594H),A ; 2DAE
JP 02E6AH ; 2DB1 RET
LD A,(06416H) ; 2DB4 Timer 6BB
OR A ; 2DB7
JP NZ,02E6AH ; 2DB8 RET
LD A,(065CBH) ; 2DBB
LD B,A ; 2DBE
LD A,(065C1H) ; 2DBF Buffer #7 Counter
OR B ; 2DC2
LD B,A ; 2DC3
LD A,(065D1H) ; 2DC4
OR B ; 2DC7
JR NZ,02DE0H ; 2DC8
LD A,(07C00H) ; 2DCA
BIT 0,A ; 2DCD
JP NZ,02E6AH ; 2DCF RET
LD A,(065BBH) ; 2DD2 Buffer #2 Counter (Numero Marcado)
OR A ; 2DD5
JP Z,02E6AH ; 2DD6 RET
LD A,(065DBH) ; 2DD9
OR A ; 2DDC
JP Z,02E6AH ; 2DDD RET
LD A,(06592H) ; 2DE0
OR A ; 2DE3
JP NZ,02E6AH ; 2DE4 RET
XOR A ; 2DE7
LD (06591H),A ; 2DE8
LD A,001H ; 2DEB
LD (06590H),A ; 2DED
LD A,0AAH ; 2DF0
LD HL,0657CH ; 2DF2
LD (HL),A ; 2DF5 (657Ch)=AAh
LD A,001H ; 2DF6
LD (0657BH),A ; 2DF8
LD A,002H ; 2DFB
LD (06444H),A ; 2DFD
JP 02E6AH ; 2E00 RET
LD A,(065C0H) ; 2E03 Buffer #8 Counter
OR A ; 2E06
JR Z,02E42H ; 2E07
CALL 03F89H ; 2E09 Get Buffer #8 Carry On Error
LD B,A ; 2E0C
LD A,(06594H) ; 2E0D
OR A ; 2E10
JR NZ,02E19H ; 2E11
LD A,B ; 2E13
LD (06595H),A ; 2E14
JR 02E25H ; 2E17
XOR A ; 2E19
LD D,A ; 2E1A
LD HL,06595H ; 2E1B
LD A,(06594H) ; 2E1E
LD E,A ; 2E21
ADD HL,DE ; 2E22
LD A,B ; 2E23
LD (HL),A ; 2E24
LD A,(06595H) ; 2E25
LD B,A ; 2E28
LD A,(06594H) ; 2E29
CP B ; 2E2C
JR Z,02E38H ; 2E2D
LD A,(06594H) ; 2E2F
INC A ; 2E32
LD (06594H),A ; 2E33
JR 02E6AH ; 2E36 RET
CALL 02E6BH ; 2E38
LD A,000H ; 2E3B
LD (06444H),A ; 2E3D
JR 02E6AH ; 2E40 RET
LD A,(06416H) ; 2E42 Timer 6BB
OR A ; 2E45
JR NZ,02E6AH ; 2E46 RET
CALL 031FCH ; 2E48
LD A,000H ; 2E4B
LD (06444H),A ; 2E4D
JR 02E6AH ; 2E50 RET
LD A,(06591H) ; 2E52
OR A ; 2E55
JR NZ,02E61H ; 2E56
LD A,(06416H) ; 2E58 Timer 6BB
OR A ; 2E5B
JR NZ,02E6AH ; 2E5C RET
CALL 03034H ; 2E5E
XOR A ; 2E61
LD (06590H),A ; 2E62
LD A,000H ; 2E65
LD (06444H),A ; 2E67
RET ; 2E6A

LD A,(06595H) ; 2E6B
LD B,A ; 2E6E
XOR A ; 2E6F
LD D,A ; 2E70
LD HL,02CC5H ; 2E71
LD A,(06596H) ; 2E74
LD E,A ; 2E77
ADD HL,DE ; 2E78
LD A,(HL) ; 2E79
CP B ; 2E7A
CALL NZ,031FCH ; 2E7B
JP NZ,02F75H ; 2E7E
LD HL,06596H ; 2E81
LD A,(HL) ; 2E84
INC HL ; 2E85
CP 002H ; 2E86
JR Z,02EA9H ; 2E88
CP 004H ; 2E8A
JR Z,02ECCH ; 2E8C
CP 005H ; 2E8E
JR Z,02EDFH ; 2E90
CP 007H ; 2E92
JR Z,02EF2H ; 2E94
CP 009H ; 2E96
JR Z,02F0FH ; 2E98
CP 00BH ; 2E9A
JR Z,02F16H ; 2E9C
CP 00FH ; 2E9E
JP Z,02F39H ; 2EA0
CALL 031FCH ; 2EA3
JP 02F75H ; 2EA6
LD A,(065C3H) ; 2EA9
LD B,A ; 2EAC
LD A,(065C2H) ; 2EAD
OR B ; 2EB0
JP Z,02F75H ; 2EB1
LD A,(065C4H) ; 2EB4
CP 000H ; 2EB7
JP NZ,02F75H ; 2EB9
LD A,001H ; 2EBC
LD (065C4H),A ; 2EBE
LD DE,065B4H ; 2EC1
LD BC,00004H ; 2EC4
LDIR ; 2EC7
JP 02F75H ; 2EC9
LD A,001H ; 2ECC
LD (065C6H),A ; 2ECE
CALL 02FE0H ; 2ED1
LD A,(0644BH) ; 2ED4
CP 005H ; 2ED7
CALL Z,03BA1H ; 2ED9 (P41.3) = 1 (Descuelga)
JP 02F75H ; 2EDC
LD A,001H ; 2EDF
LD (065C7H),A ; 2EE1
LD A,(065C6H) ; 2EE4 ....
OR A ; 2EE7
JR NZ,02EEFH ; 2EE8 ;
LD A,001H ; 2EEA
LD (065EDH),A ; 2EEC
JP 02F75H ; 2EEF
LD A,001H ; 2EF2
LD (065C9H),A ; 2EF4
LD (065EDH),A ; 2EF7
LD A,000H ; 2EFA
LD (065CDH),A ; 2EFC flag en cero
LD HL,06389H ; 2EFF
LD (063CBH),HL ; 2F02
INC HL ; 2F05
LD (063C9H),HL ; 2F06
XOR A ; 2F09
LD (065C1H),A ; 2F0A Buffer #7 Counter
JR 02F75H ; 2F0D
LD A,001H ; 2F0F
LD (065CBH),A ; 2F11
JR 02F75H ; 2F14
LD A,(07C01H) ; 2F16
BIT 0,A ; 2F19
JP Z,02F75H ; 2F1B
LD A,(0644BH) ; 2F1E
CP 006H ; 2F21
JP Z,02F75H ; 2F23
LD A,(0642EH) ; 2F26
CP 002H ; 2F29
JR Z,02F32H ; 2F2B
CP 004H ; 2F2D
JP NZ,02F75H ; 2F2F
LD A,001H ; 2F32
LD (065CDH),A ; 2F34 ; flag en uno
JR 02F75H ; 2F37
LD DE,0642EH ; 2F39
LD A,(HL) ; 2F3C
LD (DE),A ; 2F3D (HL) -> 642E
LD (06431H),A ; 2F3E
CP 000H ; 2F41
JR NZ,02F4CH ; 2F43
XOR A ; 2F45
LD (065B8H),A ; 2F46
LD (065B9H),A ; 2F49 (65B8) = 0000
INC HL ; 2F4C
LD DE,07C00H ; 2F4D
LD C,00AH ; 2F50
LD B,066H ; 2F52
LD A,002H ; 2F54
PUSH AF ; 2F56
LD A,(HL) ; 2F57
OUT (C),B ; 2F58
LD (DE),A ; 2F5A
INC HL ; 2F5B
INC DE ; 2F5C
POP AF ; 2F5D
DEC A ; 2F5E
JR NZ,02F56H ; 2F5F
LD DE,065B5H ; 2F61
LD BC,00003H ; 2F64
LDIR ; 2F67
LD A,001H ; 2F69
LD (065D1H),A ; 2F6B
LD (065EDH),A ; 2F6E
XOR A ; 2F71
LD (0641CH),A ; 2F72 Timer B
RET ; 2F75

LD HL,(065D2H) ; 2F76
LD A,L ; 2F79
CP 004H ; 2F7A
JR NZ,02FA1H ; 2F7C
LD A,H ; 2F7E
CP 000H ; 2F7F
JR NZ,02FA1H ; 2F81
LD HL,(065D6H) ; 2F83
LD A,L ; 2F86
CP 004H ; 2F87
JR NZ,02FA1H ; 2F89
LD A,H ; 2F8B
CP 000H ; 2F8C
JR NZ,02FA1H ; 2F8E
LD HL,00001H ; 2F90
LD (065D6H),HL ; 2F93
LD (065D2H),HL ; 2F96
LD A,001H ; 2F99
LD (065DAH),A ; 2F9B
JP 02FDFH ; 2F9E
LD HL,(065D8H) ; 2FA1
LD BC,03333H ; 2FA4
LD A,H ; 2FA7
CP B ; 2FA8
JR C,02FB6H ; 2FA9
JR NZ,02FB1H ; 2FAB
LD A,L ; 2FAD
CP C ; 2FAE
JR C,02FB6H ; 2FAF
LD HL,0FFFFH ; 2FB1
JR 02FBCH ; 2FB4
LD D,H ; 2FB6
LD E,L ; 2FB7
ADD HL,DE ; 2FB8
ADD HL,DE ; 2FB9
ADD HL,DE ; 2FBA
ADD HL,DE ; 2F3BB
LD (065D8H),HL ; 2FBC
LD HL,(065D4H) ; 2FBF
LD A,H ; 2FC2
CP B ; 2FC3
JR C,02FD1H ; 2FC4
JR NZ,02FCCH ; 2FC6
LD A,L ; 2FC8
CP C ; 2FC9
JR C,02FD1H ; 2FCA
LD HL,0FFFFH ; 2FCC
JR 02FD7H ; 2FCF
LD D,H ; 2FD1
LD E,L ; 2FD2
ADD HL,DE ; 2FD3
ADD HL,DE ; 2FD4
ADD HL,DE ; 2FD5
ADD HL,DE ; 2FD6
LD (065D4H),HL ; 2FD7
LD A,002H ; 2FDA
LD (065DAH),A ; 2FDC
RET ; 2FDF

LD D,H ; 2FE0
LD E,L ; 2FE1
LD A,(065DAH) ; 2FE2
CP 001H ; 2FE5
JR Z,03008H ; 2FE7
CP 002H ; 2FE9
JR NZ,03021H ; 2FEB
LD A,(HL) ; 2FED
CP 004H ; 2FEE
JR NZ,03021H ; 2FF0
INC HL ; 2FF2
LD A,(HL) ; 2FF3
CP 000H ; 2FF4
JR NZ,03021H ; 2FF6
INC HL ; 2FF8
INC HL ; 2FF9
INC HL ; 2FFA
LD A,(HL) ; 2FFB
CP 004H ; 2FFC
JR NZ,03021H ; 2FFE
INC HL ; 3000
LD A,(HL) ; 3001
CP 000H ; 3002
JR NZ,03021H ; 3004
JR 03033H ; 3006
LD A,(HL) ; 3008
CP 004H ; 3009
JR NZ,03033H ; 300B
INC HL ; 300D
LD A,(HL) ; 300E
CP 000H ; 300F
JR NZ,03033H ; 3011
INC HL ; 3013
INC HL ; 3014
INC HL ; 3015
LD A,(HL) ; 3016
CP 004H ; 3017
JR NZ,03033H ; 3019
INC HL ; 301B
LD A,(HL) ; 301C
CP 000H ; 301D
JR NZ,03033H ; 301F
LD H,D ; 3021
LD L,E ; 3022
LD DE,065D2H ; 3023
LD BC,00008H ; 3026
LDIR ; 3029
LD A,(06606H) ; 302B (=6606h)=3 => FICHAS =/=> PULSOS
CP 003H ; 302E
CALL Z,02F76H ; 3030
RET ; 3033

LD HL,0657CH ; 3034
LD A,(065CBH) ; 3037
OR A ; 303A
JR Z,0305EH ; 303B
LD A,005H ; 303D
LD (0657BH),A ; 303F
DEC A ; 3042
LD (HL),A ; 3043
INC HL ; 3044
LD A,00AH ; 3045
LD (HL),A ; 3047
INC HL ; 3048
LD A,(06612H) ; 3049
LD (HL),A ; 304C
INC HL ; 304D
LD A,(06613H) ; 304E
LD (HL),A ; 3051
INC HL ; 3052
LD A,(06619H) ; 3053
LD (HL),A ; 3056
XOR A ; 3057
LD (065CBH),A ; 3058
JP 031FBH ; 305B RET

LD A,(065D1H) ; 305E
OR A ; 3061
JP NZ,031B9H ; 3062
LD A,(065C1H) ; 3065 Buffer #7 Counter
OR A ; 3068
JR Z,03097H ; 3069
CALL 03F41H ; 306B Get Buffer #7 Carry On Error
LD HL,0657CH ; 306E
CP 000H ; 3071
JP Z,030C9H ; 3073 Command 00 30C9
CP 001H ; 3076
JP Z,030FFH ; 3078 Command 01 30FF
CP 006H ; 307B
JP Z,03124H ; 307D Command 06 3124
CP 008H ; 3080
JP Z,03146H ; 3082 Command 08 3146
CP 00CH ; 3085
JP Z,0317DH ; 3087 Command 0C 317D
CP 00EH ; 308A
JP Z,0318EH ; 308C Command 0E 318E
CP 00DH ; 308F
JP Z,031B9H ; 3091 Command 0D 31B9
JP 031FBH ; 3094 RET

LD A,(07C00H) ; 3097
BIT 0,A ; 309A
JP NZ,031FBH ; 309C RET
LD A,(065DBH) ; 309F
OR A ; 30A2
JP Z,031FBH ; 30A3 RET
LD A,(065BBH) ; 30A6 Buffer #2 Counter (Numero Marcado)
OR A ; 30A9
JP Z,031FBH ; 30AA RET
LD A,003H ; 30AD
LD (0657BH),A ; 30AF
DEC A ; 30B2
LD (HL),A ; 30B3
INC HL ; 30B4
LD A,003H ; 30B5
LD (HL),A ; 30B7
INC HL ; 30B8
CALL 03DE8H ; 30B9 Get Buffer #2 (Numero Marcado)
AND 00FH ; 30BC
OR 0F0H ; 30BE
LD (HL),A ; 30C0
LD A,001H ; 30C1
LD (065C5H),A ; 30C3
JP 031FBH ; 30C6 RET

; Command 00

LD A,001H ; 30C9
LD (065C2H),A ; 30CB
LD A,(06606H) ; 30CE (=6606h)=3 => FICHAS =/=> PULSOS
CP 000H ; 30D1
JR NZ,030E3H ; 30D3
LD A,002H ; 30D5
LD (0657BH),A ; 30D7 (657Bh)=02h
DEC A ; 30DA
LD (HL),A ; 30DB (657Ch)=01h
INC HL ; 30DC
LD A,000H ; 30DD
LD (HL),A ; 30DF (657Dh)=00h
JP 031FBH ; 30E0 RET

LD A,00EH ; 30E3 (6606h)!=0
LD (0657BH),A ; 30E5 (657Bh)=0Eh (14d)
DEC A ; 30E8
LD (HL),A ; 30E9 (657Ch)=0Dh (13d)
INC HL ; 30EA
LD A,000H ; 30EB
LD (HL),A ; 30ED (657Dh)=00h
INC HL ; 30EE
LD DE,06624H ; 30EF
EX DE,HL ; 30F2 DE=657Eh
LD BC,0000BH ; 30F3
LDIR ; 30F6
LD A,(0662FH) ; 30F8
LD (DE),A ; 30FB
JP 031FBH ; 30FC RET

; Command 01

LD A,001H ; 30FF
LD (065C3H),A ; 3101
LD A,00EH ; 3104
LD (0657BH),A ; 3106
DEC A ; 3109
LD (HL),A ; 310A (657Ch)
INC HL ; 310B
LD A,001H ; 310C
LD (HL),A ; 310E (657Dh)
INC HL ; 310F
LD DE,06624H ; 3110
EX DE,HL ; 3113 DE=657Eh
LD BC,0000BH ; 3114
LDIR ; 3117
LD A,(0661BH) ; 3119
LD (DE),A ; 311C
XOR A ; 311D
LD (0661BH),A ; 311E
JP 031FBH ; 3121 RET

; Command 06

LD A,001H ; 3124
LD (065C8H),A ; 3126 (65C8h)=01h
LD A,000H ; 3129
LD (065C6H),A ; 312B (65C6h)=00h
LD A,004H ; 312E
LD (0657BH),A ; 3130 (657Bh)=04h
DEC A ; 3133
LD (HL),A ; 3134 (657Ch)=03h
INC HL ; 3135
LD A,006H ; 3136
LD (HL),A ; 3138 (657Dh)=06h
INC HL ; 3139
LD A,(0660EH) ; 313A
LD (HL),A ; 313D (657Eh)=(660Eh)
INC HL ; 313E
LD A,(0660FH) ; 313F
LD (HL),A ; 3142 (657Fh)=(660Fh)
JP 031FBH ; 3143 RET

; Command 08

LD A,001H ; 3146
LD (065CAH),A ; 3148
LD A,005H ; 314B
LD (0657BH),A ; 314D
DEC A ; 3150
LD (HL),A ; 3151 (657Ch)
INC HL ; 3152
LD A,008H ; 3153
LD (HL),A ; 3155 (657Dh)
INC HL ; 3156
LD A,(0660EH) ; 3157
LD (HL),A ; 315A (657Eh)
INC HL ; 315B
LD A,(0660FH) ; 315C
LD (HL),A ; 315F (657Fh)
INC HL ; 3160
LD A,(0662FH) ; 3161
LD B,A ; 3164
LD A,(0661BH) ; 3165
OR B ; 3168
LD (HL),A ; 3169 (6580h)
LD BC,00006H ; 316A
LD HL,06624H ; 316D
LD DE,06665H ; 3170
LDIR ; 3173
LD A,(0662EH) ; 3175
LD (0666FH),A ; 3178
JR 031FBH ; 317B RET

; Command 0C

XOR A ; 317D
LD (065CDH),A ; 317E
LD A,002H ; 3181
LD (0657BH),A ; 3183
DEC A ; 3186
LD (HL),A ; 3187
INC HL ; 3188
LD A,00CH ; 3189
LD (HL),A ; 318B
JR 031FBH ; 318C RET

; Command 0D

LD A,008H ; 318E
LD (0657BH),A ; 3190
DEC A ; 3193
LD (HL),A ; 3194
INC HL ; 3195
LD A,00EH ; 3196
LD (HL),A ; 3198
INC HL ; 3199
LD A,001H ; 319A
LD (HL),A ; 319C
INC HL ; 319D
LD A,012H ; 319E
LD (HL),A ; 31A0
INC HL ; 31A1
LD A,021H ; 31A2
LD (HL),A ; 31A4
INC HL ; 31A5
LD A,(0642EH) ; 31A6
LD (HL),A ; 31A9
INC HL ; 31AA
LD A,003H ; 31AB
LD (HL),A ; 31AD
INC HL ; 31AE
LD A,00DH ; 31AF
LD (HL),A ; 31B1
LD A,020H ; 31B2
LD (0641CH),A ; 31B4 Timer B
JR 031FBH ; 31B7 RET

; Command 0E

LD A,00AH ; 31B9
LD (0657BH),A ; 31BB
DEC A ; 31BE
LD (HL),A ; 31BF
INC HL ; 31C0
LD A,00DH ; 31C1
LD (HL),A ; 31C3
INC HL ; 31C4
LD DE,0642FH ; 31C5
EX DE,HL ; 31C8
LD BC,00003H ; 31C9
LDIR ; 31CC
EX DE,HL ; 31CE
LD A,(07C00H) ; 31CF
LD (HL),A ; 31D2
INC HL ; 31D3
LD A,(07C01H) ; 31D4
LD (HL),A ; 31D7
INC HL ; 31D8
LD A,001H ; 31D9
LD (HL),A ; 31DB
INC HL ; 31DC
LD A,012H ; 31DD
LD (HL),A ; 31DF
INC HL ; 31E0
LD A,021H ; 31E1
LD (HL),A ; 31E3
XOR A ; 31E4
LD (065D1H),A ; 31E5
LD HL,0642FH ; 31E8
LD DE,06432H ; 31EB
LD BC,00003H ; 31EE
LDIR ; 31F1
LD A,(0642CH) ; 31F3
RES 5,A ; 31F6
LD (0642CH),A ; 31F8
RET ; 31FB

PUSH AF ; 31FC
LD A,(06596H) ; 31FD
CALL 03FBCH ; 3200 Put Log Buffer
LD A,(06595H) ; 3203
CALL 03FBCH ; 3206 Put Log Buffer
LD A,(06594H) ; 3209
CALL 03FBCH ; 320C Put Log Buffer
LD A,021H ; 320F
CALL 03FBCH ; 3211 Put Log Buffer
POP AF ; 3214
RET ; 3215

; Interrupt #2

PUSH AF ; 3216
PUSH BC ; 3217
PUSH DE ; 3218
PUSH HL ; 3219
PUSH IX ; 321A
PUSH IY ; 321C
OUT (004H),A ; 321E
OUT (00CH),A ; 3220
LD C,004H ; 3222
LD IX,06436H ; 3224
CALL 0402AH ; 3228 (IX)=(P4)-(IX+1) , (IX+1) = (P4)
LD IX,06411H ; 322B
LD DE,06416H ; 322F
LD A,(IX+000H) ; 3232
CP 000H ; 3235
JR Z,0323DH ; 3237
DEC A ; 3239
LD (IX+000H),A ; 323A
PUSH IX ; 323D
POP HL ; 323F
SBC HL,DE ; 3240
JR Z,03248H ; 3242
INC IX ; 3244
JR 03232H ; 3246 Decrementa los Timers 1BB..6BB
LD A,(06592H) ; 3248
OR A ; 324B
JR NZ,03255H ; 324C
LD A,(0657BH) ; 324E
OR A ; 3251
JP NZ,03362H ; 3252
XOR A ; 3255
LD HL,(06E80H) ; 3256
LD B,000H ; 3259
LD A,(06436H) ; 325B
LD C,A ; 325E
ADC HL,BC ; 325F
LD (06E80H),HL ; 3261
LD A,(06414H) ; 3264 Timer 4BB
OR A ; 3267
JP NZ,03362H ; 3268

; Timer 4BB == 0
LD A,(06415H) ; 326B Timer 5BB
OR A ; 326E
JP NZ,03362H ; 326F

; Timers 4BB==0, 5BB == 0
LD A,(06592H) ; 3272
CP 001H ; 3275
JR Z,032C7H ; 3277
CP 002H ; 3279
JP Z,032F6H ; 327B
CP 003H ; 327E
JP Z,03344H ; 3280
CP 010H ; 3283
JP Z,0335DH ; 3285
LD A,(06416H) ; 3288 Timer 6BB
CP 028H ; 328B
JR NC,0329FH ; 328D

; Timer BB6 < 40d
LD A,(06436H) ; 328F
CP 016H ; 3292
JP C,03362H ; 3294
CP 052H ; 3297
JR NC,032B0H ; 3299
LD A,002H ; 329B
JR 032B2H ; 329D
LD A,(06436H) ; 329F
CP 04DH ; 32A2
JP C,03362H ; 32A4
CP 052H ; 32A7
JP NC,03362H ; 32A9
LD A,002H ; 32AC
JR 032B2H ; 32AE
LD A,001H ; 32B0
LD (06415H),A ; 32B2 Timer 5BB = 01h
LD A,001H ; 32B5
LD (06592H),A ; 32B7
LD A,(06436H) ; 32BA
LD C,A ; 32BD
LD B,000H ; 32BE
LD (06E80H),BC ; 32C0
JP 03362H ; 32C4
CALL 03473H ; 32C7 (6E80h)<76h? A=1:A=0 Carry=A
JR C,032E9H ; 32CA
LD A,050H ; 32CC
LD (06416H),A ; 32CE Timer 6BB = 50h
LD A,002H ; 32D1
LD (06592H),A ; 32D3
LD A,003H ; 32D6
LD (06415H),A ; 32D8 Timer 5BB = 03h
LD A,008H ; 32DB
LD (06E86H),A ; 32DD
XOR A ; 32E0
LD (06E82H),A ; 32E1
LD (06E84H),A ; 32E4
JR 032EEH ; 32E7
LD A,000H ; 32E9
LD (06592H),A ; 32EB
LD HL,00000H ; 32EE
LD (06E80H),HL ; 32F1
JR 03362H ; 32F4
LD A,(06E86H) ; 32F6
OR A ; 32F9
JR Z,03315H ; 32FA
CALL 03473H ; 32FC (6E80h)<76h? A=1:A=0 Carry=A
LD B,A ; 32FF
LD A,(06E82H) ; 3300
RR A ; 3303
LD (06E82H),A ; 3305
LD A,B ; 3308
OR A ; 3309
JR Z,03313H ; 330A
LD A,(06E84H) ; 330C
INC A ; 330F
LD (06E84H),A ; 3310
JR 03330H ; 3313
CALL 03473H ; 3315 (6E80h)<76h? A=1:A=0 Carry=A
LD B,A ; 3318
LD A,(06E84H) ; 3319
CPL ; 331C
AND 001H ; 331D
CP B ; 331F
JR NZ,03326H ; 3320
LD A,003H ; 3322
JR 0332DH ; 3324
LD A,001H ; 3326
CALL 03481H ; 3328
LD A,010H ; 332B
LD (06592H),A ; 332D
LD HL,00000H ; 3330
LD (06E80H),HL ; 3333
LD A,003H ; 3336
LD (06415H),A ; 3338 Timer BB5
LD A,(06E86H) ; 333B
DEC A ; 333E
LD (06E86H),A ; 333F
JR 03362H ; 3342
CALL 03473H ; 3344 (6E80h)<76h? A=1:A=0 Carry=A
JR NC,03351H ; 3347
LD A,(06E82H) ; 3349
CALL 03FA3H ; 334C Put Buffer #8 Carry On Error
JR 03356H ; 334F
LD A,002H ; 3351
CALL 03481H ; 3353
LD A,000H ; 3356
LD (06592H),A ; 3358
JR 03362H ; 335B
LD A,000H ; 335D
LD (06592H),A ; 335F
LD A,(06592H) ; 3362
OR A ; 3365
JP NZ,033DBH ; 3366
LD A,(06414H) ; 3369 Timer BB4
OR A ; 336C
JR NZ,033C2H ; 336D
LD A,(06E87H) ; 336F
OR A ; 3372
JR NZ,033BDH ; 3373
LD A,(0657BH) ; 3375
OR A ; 3378
JR Z,033DBH ; 3379
CALL 03CF1H ; 337B (P41.7)=1, (P80)=90h
LD A,(0657AH) ; 337E
LD C,A ; 3381
INC A ; 3382
LD (0657AH),A ; 3383
LD B,000H ; 3386
LD HL,0657CH ; 3388
XOR A ; 338B
ADC HL,BC ; 338C
LD A,(HL) ; 338E
LD (06E83H),A ; 338F
LD B,008H ; 3392
LD C,000H ; 3394
SRL A ; 3396
JR C,0339BH ; 3398
INC C ; 339A
DJNZ 03396H ; 339B
LD A,C ; 339D A=Bits en 1 de A
CPL ; 339E
AND 001H ; 339F
LD (06E85H),A ; 33A1
LD A,000H ; 33A4
LD (06593H),A ; 33A6
CALL 03D06H ; 33A9
LD A,00AH ; 33AC
LD (06E87H),A ; 33AE
LD A,003H ; 33B1
LD (06414H),A ; 33B3 Timer BB4
LD A,05EH ; 33B6
LD (06416H),A ; 33B8 Timer BB6
JR 033DBH ; 33BB
CALL 033E6H ; 33BD
JR 033DBH ; 33C0
LD A,(06593H) ; 33C2
CP 001H ; 33C5
JR NZ,033DBH ; 33C7
LD A,(06590H) ; 33C9
OR A ; 33CC
JR Z,033DBH ; 33CD
LD A,(06436H) ; 33CF
CP 02CH ; 33D2
JR C,033DBH ; 33D4
LD A,001H ; 33D6
LD (06591H),A ; 33D8
POP IY ; 33DB
POP IX ; 33DD
POP HL ; 33DF
POP DE ; 33E0
POP BC ; 33E1
POP AF ; 33E2
EI ; 33E3
RETI ; 33E4

LD A,003H ; 33E6
LD (06414H),A ; 33E8 Timer BB4
LD A,(06E87H) ; 33EB
CP 001H ; 33EE
JR Z,0340EH ; 33F0
CP 002H ; 33F2
JR Z,03404H ; 33F4
CP 003H ; 33F6
JR C,03456H ; 33F8
LD HL,06E83H ; 33FA
SRL (HL) ; 33FD
CALL 0345EH ; 33FF
JR 03456H ; 3402
LD A,(06E85H) ; 3404
SRL A ; 3407
CALL 0345EH ; 3409
JR 03456H ; 340C
CALL 03D0DH ; 340E
LD A,(0657BH) ; 3411
DEC A ; 3414
LD (0657BH),A ; 3415
JR NZ,03426H ; 3418
LD (0657AH),A ; 341A
LD A,(06590H) ; 341D
OR A ; 3420
JR NZ,03426H ; 3421
CALL 03CFCH ; 3423
LD A,001H ; 3426
LD (06593H),A ; 3428
LD A,(06590H) ; 342B
OR A ; 342E
JR Z,03456H ; 342F
LD A,(06591H) ; 3431
OR A ; 3434
JR Z,0344EH ; 3435
LD A,00AH ; 3437
LD (06416H),A ; 3439 Timer BB6
XOR A ; 343C
LD (06E87H),A ; 343D
LD (06414H),A ; 3440 Timer BB
LD (0657AH),A ; 3443
LD (0657BH),A ; 3446
CALL 03CFCH ; 3449
JR 03456H ; 344C
LD A,00AH ; 344E
LD (06416H),A ; 3450 Timer BB
LD (06414H),A ; 3453 Timer BB
LD A,(06E87H) ; 3456
DEC A ; 3459
LD (06E87H),A ; 345A
RET ; 345D

JR NC,0346AH ; 345E
LD A,001H ; 3460
LD (06593H),A ; 3462
CALL 03D0DH ; 3465
JR 03472H ; 3468
LD A,000H ; 346A
LD (06593H),A ; 346C
CALL 03D06H ; 346F
RET ; 3472

LD HL,(06E80H) ; 3473 (6E80h)<76h? A=1:A=0 Carry=A
LD BC,00076H ; 3476 118d
XOR A ; 3479
SBC HL,BC ; 347A
JR NC,03480H ; 347C
LD A,001H ; 347E
RET ; 3480

CALL 03FBCH ; 3481 Put Log Buffer
LD A,(06E82H) ; 3484
CALL 03FBCH ; 3487 Put Log Buffer
CALL 03FBCH ; 348A Put Log Buffer
LD A,020H ; 348D
CALL 03FBCH ; 348F Put Log Buffer
RET ; 3492

; Interrupt #3

PUSH AF ; 3493
PUSH DE ; 3494
PUSH BC ; 3495
PUSH HL ; 3496
PUSH IX ; 3497
PUSH IY ; 3499
IN A,(068H) ; 349B
LD C,A ; 349D
IN A,(065H) ; 349E
LD B,A ; 34A0
AND 00EH ; 34A1
JR NZ,034C1H ; 34A3 Exit ISR
LD A,B

  
; 34A5
AND 001H ; 34A6
JR Z,034AEH ; 34A8
LD A,C ; 34AA
CALL 03ED1H ; 34AB Put Buffer #5 Carry On Error
LD A,B ; 34AE
AND 030H ; 34AF
JR Z,034C1H ; 34B1 Exit ISR
CALL 03EFCH ; 34B3 Get Buffer #6 Carry On Error
JR NC,034BFH ; 34B6
LD A,000H ; 34B8
LD (06602H),A ; 34BA
JR 034C1H ; 34BD Exit ISR
OUT (068H),A ; 34BF
POP IY ; 34C1
POP IX ; 34C3
POP HL ; 34C5
POP BC ; 34C6
POP DE ; 34C7
POP AF ; 34C8
EI ; 34C9
RETI ; 34CA

; Interrupt #4

PUSH AF ; 34CC
PUSH DE ; 34CD
PUSH BC ; 34CE
PUSH HL ; 34CF
PUSH IX ; 34D0
PUSH IY ; 34D2
IN A,(048H) ; 34D4
LD C,A ; 34D6
IN A,(045H) ; 34D7
LD B,A ; 34D9
AND 00EH ; 34DA
JR NZ,03506H ; 34DC
LD A,B ; 34DE
AND 001H ; 34DF
JR Z,034E7H ; 34E1
LD A,C ; 34E3
CALL 03E47H ; 34E4 Put Buffer #3 Carry On Error
LD A,B ; 34E7
AND 030H ; 34E8
JR Z,03506H ; 34EA
CALL 03E72H ; 34EC Get Buffer #4 Carry On Error
JR NC,03504H ; 34EF
LD A,000H ; 34F1
LD (06603H),A ; 34F3
LD A,(06604H) ; 34F6
CP 001H ; 34F9
JR NZ,03506H ; 34FB
LD A,001H ; 34FD
LD (06605H),A ; 34FF
JR 03506H ; 3502
OUT (048H),A ; 3504
POP IY ; 3506
POP IX ; 3508
POP HL ; 350A
POP BC ; 350B
POP DE ; 350C
POP AF ; 350D
EI ; 350E
RETI ; 350F

; Interrupt #5

PUSH AF ; 3511
IN A,(020H) ; 3512
POP AF ; 3514
EI ; 3515
RETI ; 3516

; Interrupt #6

PUSH AF ; 3518
IN A,(028H) ; 3519
POP AF ; 351B
EI ; 351C
RETI ; 351D

; Interrupt #7

EI ; 351F
RETI ; 3520

; Interrupt #8

PUSH AF ; 3522
PUSH BC ; 3523
PUSH DE ; 3524
PUSH HL ; 3525
PUSH IX ; 3526
PUSH IY ; 3528
OUT (064H),A ; 352A
IN A,(064H) ; 352C
LD B,A ; 352E
LD HL,06677H ; 352F
XOR (HL) ; 3532
LD (0643BH),A ; 3533
LD A,B ; 3536
LD (HL),A ; 3537
LD A,(0643BH) ; 3538
AND 008H ; 353B
CALL NZ,03702H ; 353D Scan Keyboard, if Pressed Play & Save Key
LD A,(0643BH) ; 3540
AND 010H ; 3543
CALL NZ,0386EH ; 3545
LD A,(0643B2H) ; 3548
AND 040H ; 354B
CALL NZ,038BDH ; 354D
CALL 0408FH ; 3550 (6418h)=0Ch
POP IY ; 3553
POP IX ; 3555
POP HL ; 3557
POP DE ; 3558
POP BC ; 3559
POP AF ; 355A
EI ; 355B
RETI ; 355C

; Interrupt #9

PUSH AF ; 355E
PUSH BC ; 355F
PUSH DE ; 3560
PUSH HL ; 3561
PUSH IX ; 3562
PUSH IY ; 3564
OUT (044H),A ; 3566
CALL 0408FH ; 3568 (6418h)=0Ch
IN A,(044H) ; 356B
LD B,A ; 356D
LD HL,06678H ; 356E
XOR (HL) ; 3571
LD (0643BH),A ; 3572
LD A,B ; 3575
LD (HL),A ; 3576
LD A,(0643BH) ; 3577
AND 040H ; 357A
CALL NZ,0389FH ; 357C
LD A,(0643BH) ; 357F
AND 080H ; 3582
CALL NZ,038D7H ; 3584
LD A,(0643BH) ; 3587
AND 020H ; 358A
CALL NZ,038EAH ; 358C
POP IY ; 358F
POP IX ; 3591
POP HL ; 3593
POP DE ; 3594
POP BC ; 3595
POP AF ; 3596
EI ; 3597
RETI ; 3598

; Interrupt #10

PUSH AF ; 359A
PUSH BC ; 359B
PUSH DE ; 359C
PUSH HL ; 359D
PUSH IX ; 359E
PUSH IY ; 35A0
IN A,(0D0H) ; 35A2
EI ; 35A4
LD IX,06421H ; 35A5 Timer 1W
LD DE,0642BH ; 35A9 Timer 6W

; BUCLE
LD L,(IX+000H) ; 35AC L = 06421 + 0
LD H,(IX+001H) ; 35AF
LD A,L ; 35B2 A = L
OR H ; 35B3 H or L
JR Z,035BDH ; 35B4 Son ambos 0?
DEC HL ; 35B6 Si no son 0 los decrementa
LD (IX+000H),L ; 35B7 Guarda el word decrementado
LD (IX+001H),H ; 35BA
INC IX ; 35BD Proximo IX ( IX=IX + 2 )
INC IX ; 35BF
XOR A ; 35C1
PUSH IX ; 35C2
POP HL ; 35C4
SBC HL,DE ; 35C5 Llega al final?
JR NZ,035ACH ; 35C7 Salto al BUCLE

; 6 TIMERS de tipo BYTE
; BUCLE 2
LD IX,06419H ; 35C9
LD DE,06420H ; 35CD Timer 8B
LD A,(IX+000H) ; 35D0 ; COMIENZO DEL BUCLE
CP 000H ; 35D3
JR Z,035DBH ; 35D5
DEC A ; 35D7
LD (IX+000H),A ; 35D8
PUSH IX ; 35DB
POP HL ; 35DD
SBC HL,DE ; 35DE
JR Z,035E6H ; 35E0 ; Salida del BUCLE
INC IX ; 35E2
JR 035D0H ; 35E4 ; FIN BUCLE 2

; Un CASE buscando los timers en cero
;
LD HL,(06421H) ; 35E6 Timer 1W
LD A,L ; 35E9
OR H ; 35EA
JR NZ,0361AH ; 35EB Termina con el Timer 1W
;
; Timer 1W == 0
;
LD A,(0644BH) ; 35ED
CP 006H ; 35F0
JR NZ,0361AH ; 35F2 Termina con el Timer 1W
LD HL,(065D6H) ; 35F4
LD A,L ; 35F7
OR H ; 35F8
JR Z,0361AH ; 35F9
LD BC,(0660AH) ; 35FB
ADD HL,BC ; 35FF
LD (0660AH),HL ; 3600 (660A)+=(65D6)
LD BC,(065D8H) ; 3603
LD HL,(065DEH) ; 3607
ADD HL,BC ; 360A
PUSH HL ; 360B
POP BC ; 360C BC = (65D8)+(65DE)
LD DE,0000AH ; 360D
CALL 040B8H ; 3610 HL = BC Mod 10d
LD (06421H),BC ; 3613 Timer 1W
LD (065DEH),HL ; 3617
;
; Primer timer WORD (envia comando lectura?)
;
LD A,(06420H) ; 361A Timer 8B
CP 001H ; 361D
JR NZ,0363EH ; 361F

; Timer 8B == 1

DI ; 3621
CALL 03702H ; 3622 Scan Keyboard, if Pressed Play & Push Key
EI ; 3625
LD A,(06420H) ; 3626 Timer 8B
OR A ; 3629
JR Z,0363EH ; 362A

; Timer 8B sigue siendo 1 (no paso 1 tick desde que se innicio esto)

LD A,001H ; 362C
LD (06420H),A ; 362E Timer 8B = 1 de nuevo
LD (065EDH),A ; 3631 ; (65ED) = 1
DI ; 3634
LD A,(0642CH) ; 3635
SET 4,A ; 3638
LD (0642CH),A ; 363A
EI ; 363D
;
LD A,(0642BH) ; 363E Timer 6W
OR A ; 3641
JR Z,0366FH ; 3642
;
LD A,(0644BH) ; 3644
CP 007H ; 3647
JR Z,03655H ; 3649
CP 002H ; 364B
JR NZ,0366FH ; 364D
LD A,(065EAH) ; 364F
OR A ; 3652
JR NZ,0366FH ; 3653
LD A,(0642BH) ; 3655 Timer 6W
CP 001H ; 3658
JR NZ,0366BH ; 365A
DI ; 365C
LD A,(0642DH) ; 365D
SET 4,A ; 3660 ; Setea el bit 4
LD (0642DH),A ; 3662
EI ; 3665
LD A,001H ; 3666
LD (065EDH),A ; 3668
DEC A ; 366B
LD (0642BH),A ; 366C Timer 6W Lo pone en cero, igual , era .
;
; TIMER 6B Solo utilizar si Timer 6W == 0 o (644Bh) == 02
LD A,(0641EH) ; 366F Timer 6B
CP 002H ; 3672
CALL NZ,03CC6H ; 3674
; TIMER 7B
LD A,(0641FH) ; 3677 Timer 7B
OR A ; 367A
JR Z,03687H ; 367B
; <> 0
CP 001H ; 367D
JR NZ,03687H ; 367F
; TIMER 7B = 1
IN A,(061H) ; 3681
RES 5,A ; 3683
OUT (061H),A ; 3685 Apaga la Luz
; TIMER 7B <> 1
LD HL,(06429H) ; 3687 Fuera de servicio Timer
LD A,L ; 368A
OR H ; 368B
JR NZ,03696H ; 368C

; TIMER 5W = 0 RESET!

LD A,000H ; 368E
LD (0642EH),A ; 3690 Fuera de Servicio ?!
JP 00000H ; 3693 (RESET!)
;
; TIMER 4B
;
LD A,(0641CH) ; 3696 Timer B
CP 001H ; 3699
JR NZ,036A2H ; 369B

; timer 4B = 1

LD A,00EH ; 369D
CALL 03F5BH ; 369F Put Buffer #7 (Internal Commands)
;
; SIEMPRE!
;
IN A,(044H) ; 36A2
AND 002H ; 36A4
JR NZ,036AEH ; 36A6
XOR A ; 36A8
LD (06676H),A ; 36A9
JR 036C1H ; 36AC
LD A,(06676H) ; 36AE
INC A ; 36B1
LD (06676H),A ; 36B2
CP 005H ; 36B5
JR C,036C1H ; 36B7
DI ; 36B9
CALL 02A77H ; 36BA Turn off Hardware Time Out
CALL 03919H ; 36BD Push Log Buffer (33h,33h,33h,30h)
HALT ; 36C0

LD A,(0644BH) ; 36C1
CP 002H ; 36C4
JR NZ,036F3H ; 36C6
LD A,(06449H) ; 36C8
OR A ; 36CB
JR NZ,036F3H ; 36CC
LD A,(06652H) ; 36CE Codigo de Idioma
CP 000H ; 36D1
JR Z,036F3H ; 36D3
LD A,(0641AH) ; 36D5 Timer 2B
OR A ; 36D8
JR Z,036ECH ; 36D9
CP 001H ; 36DB
JR NZ,036F7H ; 36DD
; Timer 2B == 1
LD A,000H ; 36DF
LD (06652H),A ; 36E1 Codigo de Idioma
LD HL,00000H ; 36E4
LD (06650H),HL ; 36E7
JR 036F7H ; 36EA
LD A,006H ; 36EC
LD (0641AH),A ; 36EE Timer 2B = 6 segundos
JR 036F7H ; 36F1
XOR A ; 36F3
LD (0641AH),A ; 36F4 Timer 2B = 0
POP IY ; 36F7
POP IX ; 36F9
POP HL ; 36FB
POP DE ; 36FC
POP BC ; 36FD
POP AF ; 36FE
EI ; 36FF
RETI ; 3700
;
; Llamado si timer 8B = 1 (WORD) (comando de lectura??)
; Un tick antes de finalizacion del tiempo
; LECTURA DE TECLADO?

LD A,(06412H) ; 3702 Timer BB
OR A ; 3705
JP NZ,0384AH ; 3706 RET
LD A,003H ; 3709
LD (06412H),A ; 370B Timer BB2=03h
LD A,0FFH ; 370E
LD (0643EH),A ; 3710 (643Eh)=FFh
LD HL,0643FH ; 3713
LD C,0FEH ; 3716
LD B,000H ; 3718
LD A,C ; 371A
OUT (000H),A ; 371B Port de la Matriz del teclado
NOP ; 371F
IN A,(000H) ; 371E Port de la Matriz del teclado
OR 0E0H ; 3720
LD (HL),A ; 3722
INC HL ; 3723
INC B ; 3724
RLC C ; 3725
LD A,005H ; 3727
CP B ; 3729
JR NZ,0371AH ; 372A
XOR A ; 372C
OUT (000H),A ; 372D Port de la Matriz del teclado
LD B,000H ; 372F
LD HL,0643FH ; 3731
LD A,(HL) ; 3734
CP 0FFH ; 3735
JR NZ,0373BH ; 3737 If Key Pressed on this line Go On
JR 0375FH ; 3739 Do Looping
LD A,B ; 373B
LD (0643CH),A ; 373C (643Ch) = Fila de la Tecla Presionada
LD D,000H ; 373F
LD A,(HL) ; 3741
LD E,A ; 3742
BIT 0,E ; 3743
JR NZ,03757H ; 3745
LD A,(0643EH) ; 3747 (643Eh) = Salida de la Matriz
CP 0FFH ; 374A
JP NZ,03825H ; 374C Restart Timer 8B and RET
LD A,(HL) ; 374F
LD (0643EH),A ; 3750 (643Eh) = Salida de la Matriz
LD A,D ; 3753
LD (0643DH),A ; 3754 (643Dh) = Columna de la Tecla Presionada
RR E ; 3757
INC D ; 3759
LD A,005H ; 375A
CP D ; 375C
JR NZ,03743H ; 375D
INC HL ; 375F
INC B ; 3760
LD A,005H ; 3761
CP B ; 3763
JR NZ,03734H ; 3764 Loop
LD A,(0643EH) ; 3766
CP 0FFH ; 3769
JP Z,0382CH ; 376B If no Key Pressed 382Ch
LD DE,00005H ; 376E
LD HL,0384BH ; 3771 Matrix Layout
LD A,(0643CH) ; 3774 Fila de la Tecla Presionada U to D
OR A ; 3777
CP 000H ; 3778
JR Z,03780H ; 377A
ADD HL,DE ; 377C
DEC A ; 377D
JR 03777H ; 377E
LD A,(0643DH) ; 3780 Columna de la Tecla Presionada R to L
OR A ; 3783
CP 000H ; 3784
JR Z,0378CH ; 3786
INC HL ; 3788
DEC A ; 3789
JR 03783H ; 378A
LD A,(HL) ; 378C HL = Puntero a el ASCII de la Tecla Pressionada
CP VOL_KEY ; 378D
JR NZ,037BAH ; 378F
; VOL_KEY Pressed;
LD A,(065E3H) ; 3791 Codigo de Idioma
INC A ; 3794
CP 004H ; 3795
JR C,037AAH ; 3797
XOR A ; 3799 Codigo de Idioma > 4 ? =>
LD (065E3H),A ; 379A Codigo de Idioma = 00
IN A,(041H) ; 379D
SET 4,A ; 379F
OUT (041H),A ; 37A1 Si el Codigo de Idioma == 0
RES 4,A ; 37A3 (P41.4) = 1, (P41.4) = 0
OUT (041H),A ; 37A5
JP 037DEH ; 37A7
LD (065E3H),A ; 37AA Codigo de Idioma++
IN A,(041H) ; 37AD
SET 6,A ; 37AF
OUT (041H),A ; 37B1 Si el Codigo de Idioma == 0
RES 6,A ; 37B3 (P41.6) = 1, (P41.6) = 0
OUT (041H),A ; 37B5
JP 037DEH ; 37B7
LD A,(065E2H) ; 37BA
OR A ; 37BD
JR Z,037DEH ; 37BE
LD A,(HL) ; 37C0
CP 03Fh ; 37C1
JR NC,037CEH ; 37C3 A >= 03F?
LD A,(HL) ; 37C5
AND 00FH ; 37C6
CALL 03BCDH ; 37C8 Dial Number A in DTMF
JP 03825H ; 37CB Restart Timer 8B and RET
CP _*_KEY ; 37CE
JR Z,037D6H ; 37D0
CP _#_KEY ; 37D2
JR NZ,037DEH ; 37D4
AND 00FH ; 37D6
CALL 03BCDH ; 37D8 Dial Number A in DTMF
JP 03825H ; 37DB Restart Timer 8B and RET
LD A,(HL) ; 37DE
CALL 03DBDH ; 37DF Put Key in Buffer #1 Carry On Error
LD A,(HL) ; 37E2
CP VOL_KEY ; 37E3
JR Z,037E9H ; 37E5
JR 03825H ; 37E7 Restart Timer 8B and RET
; VOL_KEY Pressed;
LD A,(06675H) ; 37E9
OR A ; 37EC
JR NZ,03825H ; 37ED Restart Timer 8B and RET
LD A,(0644AH) ; 37EF
OR A ; 37F2
JR NZ,03825H ; 37F3 Restart Timer 8B and RET
LD A,(06652H) ; 37F5 Codigo de Idioma
CP 004H ; 37F8
JR Z,03818H ; 37FA
INC A ; 37FC
LD (06652H),A ; 37FD Codigo de Idioma
SLA A ; 3800
LD HL,03864H ; 3802
LD C,A ; 3805
LD B,000H ; 3806
ADD HL,BC ; 3808
LD E,(HL) ; 3809
INC HL ; 380A
LD D,(HL) ; 380B
EX DE,HL ; 380C
XOR A ; 380D
LD BC,Espanol ; 380E
SBC HL,BC ; 3811
LD (06650H),HL ; 3813
JR 03825H ; 3816 Restart Timer 8B and RET
LD A,000H ; 3818
LD (06652H),A ; 381A Codigo de Idioma
LD HL,00000H ; 381D
LD (06650H),HL ; 3820
JR 03825H ; 3823 Restart Timer 8B and RET
LD A,014H ; 3825
LD (06420H),A ; 3827 Timer 8B = 14h
JR 0384AH ; 382A RET

LD A,(065E2H) ; 382C
OR A ; 382F
JR Z,03835H ; 3830
CALL 03BE7H ; 3832 Turn Off DTMF Tone & Output
XOR A ; 3835
LD (06420H),A ; 3836 Timer 8B =0
LD A,(0642CH) ; 3839
BIT 4,A ; 383C
JR Z,0384AH ; 383E
RES 4,A ; 3840
LD (0642CH),A ; 3842
LD A,001H ; 3845
LD (065EDH),A ; 3847
RET ; 384A
; FIN (EL FINAL) (FINNALE MOLTO GRANDIOSO)

384B db '321', 0ffh, '@'
3850 db '654', 0ffh, 'B'
3855 db '987', 0ffh, '>'
385A db ';0:', 0ffh, 'A'
385F db 0ffh,0ffh,0ffh,0ffh, '?'
3864 dw Espanol,Ingles,Aleman,Italiano,Portugues

LD A,(06677H) ; 386E
AND 010H ; 3871
JR NZ,03894H ; 3873
XOR A ; 3875
LD (06448H),A ; 3876
LD (06435H),A ; 3879
LD (0642BH),A ; 387C Timer 6W
LD A,(0642DH) ; 387F
AND 0EEH ; 3882
LD (0642DH),A ; 3884
LD A,(065EBH) ; 3887
OR A ; 388A
JR NZ,0389EH ; 388B
LD A,001H ; 388D
LD (065EDH),A ; 388F
JR 0389EH ; 3892
LD A,001H ; 3894
LD (06448H),A ; 3896
LD A,02EH ; 3899
LD (0642BH),A ; 389B Timer 6W
RET ; 389E

LD A,(06678H) ; 389F
AND 040H ; 38A2
JR Z,038B7H ; 38A4
XOR A ; 38A6
LD (06449H),A ; 38A7
LD A,(065ECH) ; 38AA
OR A ; 38AD
JR NZ,038BCH ; 38AE
LD A,001H ; 38B0
LD (065EDH),A ; 38B2
JR 038BCH ; 38B5
LD A,001H ; 38B7
LD (06449H),A ; 38B9
RET ; 38BC

LD A,(06677H) ; 38BD
AND 040H ; 38C0
JR Z,038CEH ; 38C2
LD A,(0642CH) ; 38C4
RES 7,A ; 38C7
LD (0642CH),A ; 38C9
JR 038D6H ; 38CC
LD A,(0642CH) ; 38CE
SET 7,A ; 38D1
LD (0642CH),A ; 38D3
RET ; 38D6

LD A,(06678H) ; 38D7
AND 080H ; 38DA
JR Z,038E4H ; 38DC
XOR A ; 38DE
LD (06601H),A ; 38DF
JR 038E9H ; 38E2
LD A,001H ; 38E4
LD (06601H),A ; 38E6
RET ; 38E9

LD A,(06678H) ; 38EA
AND 020H ; 38ED
JR Z,038FCH ; 38EF
XOR A ; 38F1
LD (0644AH),A ; 38F2
LD A,001H ; 38F5
LD (065E5H),A ; 38F7
JR 03918H ; 38FA
LD A,001H ; 38FC
LD (0644AH),A ; 38FE
LD A,(065E5H) ; 3901
OR A ; 3904
JR Z,03918H ; 3905
LD A,(0642CH) ; 3907
SET 6,A ; 390A
LD (0642CH),A ; 390C
LD A,001H ; 390F
LD (065EDH),A ; 3911
XOR A ; 3914
LD (065E5H),A ; 3915
RET ; 3918

LD A,'3' ; 3919 Push Log Buffer (33h,33h,33h,30h)
CALL 03FBCH ; 391B Put Log Buffer
CALL 03FBCH ; 391E Put Log Buffer
CALL 03FBCH ; 3921 Put Log Buffer
LD A,'0' ; 3924
CALL 03FBCH ; 3926 Put Log Buffer
RET ; 3929

3A20 03 03 0F 03 04 06
3A30 10 04 03 04 03 03 03 03-03 03 03 03 06 03 03 03

PUSH AF ; 3940
PUSH BC ; 3941
PUSH DE ; 3942
PUSH HL ; 3943
XOR A ; 3944
LD (06E89H),A ; 3945 (6E89h)=0
LD A,(06E88H) ; 3948
INC A ; 394B
LD (06E88H),A ; 394C (6E88h)++
DI ; 394F Disable Interrupt
XOR A ; 3950
LD (065BDH),A ; 3951
LD HL,0623DH ; 3954
LD (0627FH),HL ; 3957
INC HL ; 395A
LD (0627DH),HL ; 395B Clear Buffer #6
XOR A ; 395E
LD (065BCH),A ; 395F
LD HL,061F9H ; 3962
LD (0623BH),HL ; 3965
INC HL ; 3968
LD (06239H),HL ; 3969 Clear Buffer #5
LD A,000H ; 396C
LD (06602H),A ; 396E 6602 = 0
EI ; 3971 Enable Interrupt
LD A,002H ; 3972
CALL 03F16H ; 3974 Buffered (P68)=02
LD HL,0392AH ; 3977
LD A,(06552H) ; 397A
SUB 011H ; 397D
LD E,A ; 397F
LD D,000H ; 3980
ADD HL,DE ; 3982
LD A,(HL) ; 3983 A=(392Ah+(6552h)-11h)
LD (06550H),A ; 3984
LD B,A ; 3987
CALL 03F16H ; 3988 Buffered (P68)=A
DEC B ; 398B
LD A,(06E88H) ; 398C
CALL 03F16H ; 398F Buffered (P68)=A
DEC B ; 3992
LD HL,06552H ; 3993
XOR A ; 3996
XOR (HL) ; 3997
PUSH AF ; 3998
LD A,(HL) ; 3999
CALL 03F16H ; 399A Buffered (P68)=(++6552)^(6552++)
POP AF ; 399D
INC HL ; 399E
DJNZ 03997H ; 399F
LD B,A ; 39A1
LD A,003H ; 39A2
CALL 03F16H ; 39A4 Buffered (P68)=03
LD A,B ; 39A7
CALL 03F16H ; 39A8 Buffered (P68)=(++6552)^(6552++)
LD A,(06552H) ; 39AB
CP 015H ; 39AE
JR NZ,039BDH ; 39B0
LD A,(06553H) ; 39B2
CP 032H ; 39B5
JR C,039BDH ; 39B7
LD A,02DH ; 39B9
JR 039BFH ; 39BB
LD A,014H ; 39BD
LD (0641DH),A ; 39BF Timer 5B=14h Segs
LD A,002H ; 39C2
LD (06E8CH),A ; 39C4 (6E8Ch)=02
CALL 03EB7H ; 39C7 Buffered A=(P68)
JR NC,039EDH ; 39CA
LD A,(06E8CH) ; 39CC
CP 002H ; 39CF
JR NZ,039DDH ; 39D1
LD A,(0641DH) ; 39D3 Timer 5B
OR A ; 39D6
JR NZ,039C7H ; 39D7
LD A,011H ; 39D9
JR 039E7H ; 39DB
LD A,(06413H) ; 39DD Timer BB
OR A ; 39E0
JR NZ,039C7H ; 39E1
LD A,012H ; 39E3
JR 039E7H ; 39E5
CALL 03AECH ; 39E7 Algo al Log Buffer y 'PROBLEMA | CUELGUE'
JP 03ADFH ; 39EA
LD B,A ; 39ED
LD A,(06E8CH) ; 39EE
CP 002H ; 39F1
JR Z,03A4CH ; 39F3
CP 003H ; 39F5
JP Z,03A7EH ; 39F7
CP 004H ; 39FA
JP Z,03A8EH ; 39FC
CP 005H ; 39FF
JP Z,03AA3H ; 3A01
CP 006H ; 3A04
JP Z,03AC8H ; 3A06
CP 007H ; 3A09
JR Z,03A3DH ; 3A0B
LD A,B ; 3A0D
CALL 03B00H ; 3A0E Algo Al Log Buffer
LD A,B ; 3A11
CP 003H ; 3A12
JR NZ,03A1FH ; 3A14
LD A,(06E88H) ; 3A16
INC A ; 3A19
LD (06E88H),A ; 3A1A
JR 03A27H ; 3A1D
CP 004H ; 3A1F
JR NZ,03A27H ; 3A21
XOR A ; 3A23
LD (06E88H),A ; 3A24
LD A,(06E89H) ; 3A27
INC A ; 3A2A
LD (06E89H),A ; 3A2B
CP 003H ; 3A2E
JR Z,03A35H ; 3A30
JP 0394FH ; 3A32
LD A,013H ; 3A35
CALL 03AECH ; 3A37 Algo al Log Buffer y 'PROBLEMA | CUELGUE'
JP 03ADFH ; 3A3A
LD A,(06E8BH) ; 3A3D
CP B ; 3A40
JP Z,03ADFH ; 3A41
LD A,014H ; 3A44
CALL 03AECH ; 3A46 Algo al Log Buffer y 'PROBLEMA | CUELGUE'
JP 03ADFH ; 3A49
LD A,002H ; 3A4C
CP B ; 3A4E
JR NZ,03A65H ; 3A4F
LD A,003H ; 3A51
LD (06E8CH),A ; 3A53
LD HL,0644DH ; 3A56
XOR A ; 3A59
LD (06E8BH),A ; 3A5A
LD A,00AH ; 3A5D
LD (06413H),A ; 3A5F Timer BB
JP 039C7H ; 3A62
LD A,015H ; 3A65
CP B ; 3A67
JR Z,03A71H ; 3A68
LD A,015H ; 3A6A
CALL 03AECH ; 3A6C Algo al Log Buffer y 'PROBLEMA | CUELGUE'
JR 03ADFH ; 3A6F
LD A,00AH ; 3A71
LD (06413H),A ; 3A73 Timer BB
LD A,008H ; 3A76
LD (06E8CH),A ; 3A78
JP 039C7H ; 3A7B
LD A,B ; 3A7E
LD (HL),A ; 3A7F
INC HL ; 3A80
LD A,004H ; 3A81
LD (06E8CH),A ; 3A83
LD A,00AH ; 3A86
LD (06413H),A ; 3A88 Timer BB
JP 039C7H ; 3A8B
LD A,B ; 3A8E
LD (HL),A ; 3A8F
INC HL ; 3A90
LD A,002H ; 3A91
LD (06E8AH),A ; 3A93
LD A,005H ; 3A96
LD (06E8CH),A ; 3A98
LD A,00AH ; 3A9B
LD (06413H),A ; 3A9D Timer BB
JP 039C7H ; 3AA0
LD A,B ; 3AA3
LD (HL),A ; 3AA4
LD A,(06E8BH) ; 3AA5
XOR (HL) ; 3AA8
INC HL ; 3AA9
LD (06E8BH),A ; 3AAA
LD A,(06E8AH) ; 3AAD
INC A ; 3AB0
LD (06E8AH),A ; 3AB1
LD B,A ; 3AB4
LD A,(0644DH) ; 3AB5
CP B ; 3AB8
JR NZ,03AC0H ; 3AB9
LD A,006H ; 3ABB
LD (06E8CH),A ; 3ABD
LD A,00AH ; 3AC0
LD (06413H),A ; 3AC2 Timer BB
JP 039C7H ; 3AC5
LD A,003H ; 3AC8
CP B ; 3ACA
JR NZ,03ADAH ; 3ACB
LD A,007H ; 3ACD
LD (06E8CH),A ; 3ACF
LD A,00AH ; 3AD2
LD (06413H),A ; 3AD4 Timer BB
JP 039C7H ; 3AD7
LD A,016H ; 3ADA
CALL 03AECH ; 3ADC Algo al Log Buffer y 'PROBLEMA | CUELGUE'
LD A,004H ; 3ADF
CALL 03F16H ; 3AE1 Buffered (P68)=A
CALL 0408FH ; 3AE4 (6418h)=0Ch
POP HL ; 3AE7
POP DE ; 3AE8
POP BC ; 3AE9
POP AF ; 3AEA
RET ; 3AEB

CALL 03B00H ; 3AEC Algo Al Log Buffer
LD A,001H ; 3AEF
LD (065EDH),A ; 3AF1
LD A,(0642CH) ; 3AF4
SET 3,A ; 3AF7
LD (0642CH),A ; 3AF9
CALL 011D8H ; 3AFC Write 'PROBLEMA | CUELGUE'
RET ; 3AFF

PUSH AF ; 3B00
PUSH BC ; 3B01
CALL 03FBCH ; 3B02 Put Log Buffer
LD A,(06E88H) ; 3B05
CALL 03FBCH ; 3B08 Put Log Buffer
LD A,(06552H) ; 3B0B
CALL 03FBCH ; 3B0E Put Log Buffer
LD A,(06606H) ; 3B11 (6606h)=3 => FICHAS =/=> PULSOS
LD B,A ; 3B14
LD A,040H ; 3B15
OR B ; 3B17
CALL 03FBCH ; 3B18 Put Log Buffer
POP BC ; 3B1B
POP AF ; 3B1C
RET ; 3B1D

3B1E _0 db 0D7h ; 1101-0111 1331.7-935.1
3B1F _1 db 0EEh ; 1110-1110 1215.9-701.3
3B20 _2 db 0DEh ; 1101-1110 1331.7-701.3
3B21 _3 db 0BEh ; 1011-1110 1471.9-701.3
3B22 _4 db 0EDh ; 1110-1101 1215.9-771.4
3B23 _5 db 0DDh ; 1101-1101 1331.7-771.4
3B24 _6 db 0BDh ; 1011-1101 1471.9-771.4
3B25 _7 db 0EBh ; 1110-1011 1215.9-857.2
3B26 _8 db 0DBh ; 1101-1011 1331.7-857.2
3B27 _9 db 0BBh ; 1011-1011 1471.9-857.2
3B28 _* db 0E7h ; 1110-0111 1215.9-935.1
3B29 _# db 0B7h ; 1011-0111 1471.9-935.1
3B2A _Tone db 0CEh ; 1100-1110 -701.3


PUSH AF ; 3B2E Changes P02,P46,P41,P61,P40,(6604h)=0
IN A,(002H) ; 3B2F
AND 0F0H ; 3B31
OR 004H ; 3B33
OUT (002H),A ; 3B35 (P02)=(P02) & 1111.0000 | 0000.0100
XOR A ; 3B37
LD (06604H),A ; 3B38 (6604h)=0
IN A,(046H) ; 3B3B
RES 5,A ; 3B3D
OUT (046H),A ; 3B3F (P46.5)=0
IN A,(041H) ; 3B41
AND 002H ; 3B43
OR 090H ; 3B45
OUT (041H),A ; 3B47 (P41)=(P41) & 0000.0010 | 1001.000
AND 002H ; 3B49
OR 0A0H ; 3B4B
OUT (041H),A ; 3B4D (P41)=(P41) & 0000.0010 | 1010.0000
IN A,(061H) ; 3B4F
AND 0B4H ; 3B51
OR 008H ; 3B53
OUT (061H),A ; 3B55 (P61)=(P61) & 1011.0100 | 0000.1000
LD A,0E1H ; 3B57
CALL 03CDFH ; 3B59 A.5=!(P42.1) (P40)=A
CALL 03B7CH ; 3B5C Delay(6)
LD A,0E4H ; 3B5F
CALL 03CDFH ; 3B61 A.5=!(P42.1) (P40)=A
CALL 03B7CH ; 3B64 Delay(6)
LD A,0E0H ; 3B67
CALL 03CDFH ; 3B69 A.5=!(P42.1) (P40)=A
POP AF ; 3B6C
RET ; 3B6D

LD A,098H ; 3B6E Delay(250d)
LD (06411H),A ; 3B70 Timer BB
JR 03B88H ; 3B73

LD A,020H ; 3B75 Delay(32d)
LD (06411H),A ; 3B77 Timer BB
JR 03B88H ; 3B7A

LD A,006H ; 3B7C Delay(6d)
LD (06411H),A ; 3B7E Timer BB
JR 03B88H ; 3B81

LD A,002H ; 3B83 Delay(2d)
LD (06411H),A ; 3B85 Timer BB
LD A,(06411H) ; 3B88 Timer BB
OR A ; 3B8B
JR NZ,03B88H ; 3B8C
RET ; 3B8E

PUSH AF ; 3B8F (P41.3) = 0 (Cuelga)
IN A,(041H) ; 3B90
RES 3,A ; 3B92
OUT (041H),A ; 3B94
POP AF ; 3B96
RET ; 3B97

PUSH AF ; 3B98 (P40.6) = 1
IN A,(040H) ; 3B99
SET 6,A ; 3B9B
OUT (040H),A ; 3B9D
POP AF ; 3B9F
RET ; 3BA0

PUSH AF ; 3BA1 (P41.3) = 1 (Descuelga)
IN A,(041H) ; 3BA2
SET 3,A ; 3BA4
OUT (041H),A ; 3BA6
POP AF ; 3BA8
RET ; 3BA9

PUSH AF ; 3BAA (P40.6)=0
IN A,(040H) ; 3BAB
RES 6,A ; 3BAD
OUT (040H),A ; 3BAF
POP AF ; 3BB1
RET ; 3BB2
;-----
; Lo primero que se hace luego de imprimir 'Inserte tarjeta'
; Esta rutina espera cualquier IRQ
;
LD A,(06418H) ; 3BB3 - Semaforo - Run Condition
OR A ; 3BB6
JR NZ,03BBDH ; 3BB7
OUT (00EH),A ; 3BB9 ; port 0e <-
JR 03BBEH ; 3BBB
HALT ; 3BBD Espera que se se lea la tarjeta
RET ; 3BBE

PUSH AF ; 3BBF
LD A,09EH ; 3BC0
OUT (060H),A ; 3BC2 (P60)=9Eh
POP AF ; 3BC4 Play 701.3 Hz on DTMF chip
RET ; 3BC5

PUSH AF ; 3BC6 (P60) = FFh
LD A,0FFH ; 3BC7
OUT (060H),A ; 3BC9
POP AF ; 3BCB
RET ; 3BCC

PUSH AF ; 3BCD
PUSH BC ; 3BCE
PUSH HL ; 3BCF
CALL 03B8FH ; 3BD0 (P41.3) = 0 (Cuelga)
LD HL,03B1EH ; 3BD3
LD B,000H ; 3BD6
LD C,A ; 3BD8
ADD HL,BC ; 3BD9
LD A,(HL) ; 3BDA
OUT (060H),A ; 3BDB
IN A,(041H) ; 3BDD
SET 0,A ; 3BDF
OUT (041H),A ; 3BE1 (P41.0) = 1
POP HL ; 3BE3
POP BC ; 3BE4
POP AF ; 3BE5
RET ; 3BE6
;-------------------------------------
;
PUSH AF ; 3BE7
LD A,0FFH ; 3BE8
OUT (060H),A ; 3BEA Turn off DTMF dialer chip
IN A,(041H) ; 3BEC
RES 0,A ; 3BEE
OUT (041H),A ; 3BF0 Inhibit DTMF Output
LD A,(0644BH) ; 3BF2
CP 006H ; 3BF5
CALL Z,03BA1H ; 3BF7 (P41.3) = 1 (Descuelga)
POP AF ; 3BFA
RET ; 3BFB

PUSH AF ; 3BFC
LD A,098H ; 3BFD
LD (06411H),A ; 3BFF Timer BB
LD A,(06411H) ; 3C02 Timer BB
OR A ; 3C05
JR Z,03C24H ; 3C06
LD A,(06603H) ; 3C08
OR A ; 3C0B
JR NZ,03C02H ; 3C0C
LD A,(06604H) ; 3C0E
OR A ; 3C11
JR Z,03C24H ; 3C12
LD A,(06411H) ; 3C14 Timer BB
OR A ; 3C17
JR Z,03C24H ; 3C18
LD A,(06605H) ; 3C1A
OR A ; 3C1D
JR Z,03C24H ; 3C1E
CP 003H ; 3C20
JR NZ,03C14H ; 3C22
POP AF ; 3C24
RET ; 3C25
;---------------------------------------------
; Inicilizacion de tarjeta
;-------------------------------------
PUSH AF ; 3C26
IN A,(061H) ; 3C27
SET 4,A ; 3C29
OUT (061H),A ; 3C2B
IN A,(061H) ; 3C2D
SET 2,A ; 3C2F
OUT (061H),A ; 3C31
CALL 03B7CH ; 3C33 Delay(6)
LD A,013H ; 3C36
OUT (066H),A ; 3C38
LD A,0E6H ; 3C3A
OUT (067H),A ; 3C3C
IN A,(065H) ; 3C3E
POP AF ; 3C40
RET ; 3C41

PUSH AF ; 3C42 (P61.4)=0 (P61.2)=0 (P66)=0 (P67)=0
IN A,(061H) ; 3C43
RES 4,A ; 3C45
OUT (061H),A ; 3C47 (P61.4) = 0
CALL 03B7CH ; 3C49 Delay(6)
CALL 03B7CH ; 3C4C Delay(6)
IN A,(061H) ; 3C4F
RES 2,A ; 3C51
OUT (061H),A ; 3C53 (P61.2) = 0
XOR A ; 3C55
OUT (066H),A ; 3C56 (P66) = 0
OUT (067H),A ; 3C58 (P67) = 0
POP AF ; 3C5A
RET ; 3C5B

PUSH AF ; 3C5C
PUSH HL ; 3C5D
LD A,0E6H ; 3C5E
OUT (047H),A ; 3C60
LD A,013H ; 3C62
OUT (046H),A ; 3C64
IN A,(045H) ; 3C66
XOR A ; 3C68
LD (065BFH),A ; 3C69 Buffer #4 Counter
LD HL,06305H ; 3C6C
LD (06387H),HL ; 3C6F
INC HL ; 3C72
LD (06385H),HL ; 3C73
XOR A ; 3C76
LD (065BEH),A ; 3C77 Buffer #3 Counter
LD HL,06281H ; 3C7A
LD (06303H),HL ; 3C7D
INC HL ; 3C80
LD (06301H),HL ; 3C81
POP HL ; 3C84
POP AF ; 3C85
RET ; 3C86

PUSH AF ; 3C87
CALL 03BFCH ; 3C88
XOR A ; 3C8B
OUT (046H),A ; 3C8C
POP AF ; 3C8E
RET ; 3C8F

; ZeroF = !(P64h.4)

IN A,(064H) ; 3C90
AND 010H ; 3C92
CP 010H ; 3C94
RET ; 3C96

; ZeroF = !(P44h.6)

IN A,(044H) ; 3C97
AND 040H ; 3C99
CP 040H ; 3C9B
RET ; 3C9D

IN A,(042H) ; 3C9E
AND 001H ; 3CA0
JR Z,03CABH ; 3CA2
LD A,(0642DH) ; 3CA4
SET 2,A ; 3CA7
JR 03CB0H ; 3CA9
LD A,(0642DH) ; 3CAB
RES 2,A ; 3CAE
LD (0642DH),A ; 3CB0
RET ; 3CB3

LD A,(0641EH) ; 3CB4 Timer 6B 641E==0
OR A ; 3CB7 Prende el Bit 7 del Port 61
JR NZ,03CC5H ; 3CB8 y Hace 641E=02
IN A,(061H) ; 3CBA
OR 080H ; 3CBC
OUT (061H),A ; 3CBE
LD A,002H ; 3CC0
LD (0641EH),A ; 3CC2 Timer 6B
RET ; 3CC5

IN A,(061H) ; 3CC6 Apaga el Bit 7 del Port 61
AND 07FH ; 3CC8
OUT (061H),A ; 3CCA
RET ; 3CCC

; Subrutina

PUSH AF ; 3CCD
IN A,(042H) ; 3CCE
AND 002H ; 3CD0
JR NZ,03CD9H ; 3CD2
POP AF ; 3CD4
RES 5,A ; 3CD5
JR 03CDCH ; 3CD7
POP AF ; 3CD9
SET 5,A ; 3CDA
OUT (040H),A ; 3CDC
RET ; 3CDE

PUSH AF ; 3CDF
IN A,(042H) ; 3CE0
AND 002H ; 3CE2
JR NZ,03CEBH ; 3CE4
POP AF ; 3CE6
SET 5,A ; 3CE7
JR 03CEEH ; 3CE9
POP AF ; 3CEB
RES 5,A ; 3CEC
OUT (040H),A ; 3CEE
RET ; 3CF0

IN A,(041H) ; 3CF1 (P41.7)=1, (P80)=90h
SET 7,A ; 3CF3
OUT (041H),A ; 3CF5
LD A,009H ; 3CF7
OUT (080H),A ; 3CF9
RET ; 3CFB

XOR A ; 3CFC
OUT (080H),A ; 3CFD
IN A,(041H) ; 3CFF
RES 7,A ; 3D01
OUT (041H),A ; 3D03
RET ; 3D05

IN A,(041H) ; 3D06
SET 1,A ; 3D08
OUT (041H),A ; 3D0A
RET ; 3D0C

IN A,(041H) ; 3D0D
RES 1,A ; 3D0F
OUT (041H),A ; 3D11
RET ; 3D13

XOR A ; 3D14
LD (065E3H),A ; 3D15
IN A,(041H) ; 3D18
SET 4,A ; 3D1A
OUT (041H),A ; 3D1C
RES 4,A ; 3D1E
OUT (041H),A ; 3D20
RET ; 3D22

DB 01h,02h,04h,08h,16h,32h,64h,FFh


; HL = Comiezo del Buffer
; IX = Fin del Buffer

PUSH HL ; 3D2B
PUSH IX ; 3D2C
POP HL ; 3D2E
XOR A ; 3D2F
SBC HL,DE ; 3D30
POP HL ; 3D32
JR Z,03D5FH ; 3D33 IX == DE ? 3D5F
DEC IX ; 3D35
PUSH HL ; 3D37
PUSH DE ; 3D38
PUSH IX ; 3D39
POP DE ; 3D3B DE = IX-1
INC IX ; 3D3C
XOR A ; 3D3E
SBC HL,DE ; 3D3F
POP DE ; 3D41
POP HL ; 3D42
JR Z,03D5CH ; 3D43 Si HL == IX-1? Set Carry & Exit
PUSH HL ; 3D45
XOR A ; 3D46
SBC HL,BC ; 3D47 Si HL == BC => HL = DE
POP HL ; 3D49
JR Z,03D4FH ; 3D4A
INC HL ; 3D4C
JR 03D51H ; 3D4D
PUSH DE ; 3D4F
POP HL ; 3D50
LD A,(IY+000H) ; 3D51
DEC A ; 3D54
LD (IY+000H),A ; 3D55
XOR A ; 3D58
LD A,(HL) ; 3D59
JR 03D68H ; 3D5A
SCF ; 3D5C Set Carry Flag & A = 0
JR 03D68H ; 3D5D
PUSH HL ; 3D5F
XOR A ; 3D60
SBC HL,BC ; 3D61
POP HL ; 3D63
JR Z,03D5CH ; 3D64 HL == BC ? Set Carry & Exit
JR 03D4CH ; 3D66
RET ; 3D68

PUSH HL ; 3D69
PUSH DE ; 3D6A
PUSH IX ; 3D6B
POP DE ; 3D6D
OR A ; 3D6E
SBC HL,DE ; 3D6F
POP DE ; 3D71
POP HL ; 3D72
JR Z,03D8FH ; 3D73 IX == HL ? Set Carry & Ret
LD (IX+000H),A ; 3D75
PUSH HL ; 3D78
PUSH IX ; 3D79
POP HL ; 3D7B
XOR A ; 3D7C
SBC HL,BC ; 3D7D
POP HL ; 3D7F
JR Z,03D86H ; 3D80
INC IX ; 3D82
JR 03D89H ; 3D84
PUSH DE ; 3D86
POP IX ; 3D87
INC (IY+000H) ; 3D89
XOR A ; 3D8C
JR 03D90H ; 3D8D
SCF ; 3D8F
RET ; 3D90

LD HL,(061DFH) ; 3D91
LD DE,061CDH ; 3D94
LD BC,061DCH ; 3D97
LD IX,(061DDH) ; 3D9A
LD IY,065BAH ; 3D9E Buffer #1 Counter
RET ; 3DA2

; Get Key Pressed

PUSH BC ; 3DA3
PUSH HL ; 3DA4
PUSH DE ; 3DA5
PUSH IX ; 3DA6
PUSH IY ; 3DA8
CALL 03D91H ; 3DAA Inicializa algunos valores
CALL 03D2BH ; 3DAD
JR C,03DB5H ; 3DB0
LD (061DFH),HL ; 3DB2
POP IY ; 3DB5
POP IX ; 3DB7
POP DE ; 3DB9
POP HL ; 3DBA
POP BC ; 3DBB
RET ; 3DBC

; Put Buffer #1

PUSH BC ; 3DBD
PUSH HL ; 3DBE
PUSH DE ; 3DBF
PUSH IX ; 3DC0
PUSH IY ; 3DC2
CALL 03D91H ; 3DC4
CALL 03D69H ; 3DC7 Buffer Insert
LD (061DDH),IX ; 3DCA
POP IY ; 3DCE
POP IX ; 3DD0
POP DE ; 3DD2
POP HL ; 3DD3
POP BC ; 3DD4
RET ; 3DD5

LD HL,(061F7H) ; 3DD6
LD DE,061E1H ; 3DD9
LD BC,061F4H ; 3DDC
LD IX,(061F5H) ; 3DDF
LD IY,065BBH ; 3DE3 Buffer #2 Counter (Numero Marcado)
RET ; 3DE7

; Get Buffer #2 (Numero Marcado)

PUSH BC ; 3DE8
PUSH HL ; 3DE9
PUSH DE ; 3DEA
PUSH IX ; 3DEB
PUSH IY ; 3DED
CALL 03DD6H ; 3DEF
; HL = (061F7H)
; DE = 61E1h
CALL 03D2BH ; 3DF2
JR C,03DFAH ; 3DF5
LD (061F7H),HL ; 3DF7
POP IY ; 3DFA
POP IX ; 3DFC
POP DE ; 3DFE
POP HL ; 3DFF
POP BC ; 3E00
RET ; 3E01

; Put Buffer #2 (Numero Marcado)

PUSH BC ; 3E02
PUSH HL ; 3E03
PUSH DE ; 3E04
PUSH IX ; 3E05
PUSH IY ; 3E07
CALL 03DD6H ; 3E09
CALL 03D69H ; 3E0C Buffer Insert
LD (061F5H),IX ; 3E0F
POP IY ; 3E13
POP IX ; 3E15
POP DE ; 3E17
POP HL ; 3E18
POP BC ; 3E19
RET ; 3E1A

LD HL,(06303H) ; 3E1B
LD DE,06281H ; 3E1E
LD BC,06300H ; 3E21
LD IX,(06301H) ; 3E24
LD IY,065BEH ; 3E28 Buffer #3 Counter
RET ; 3E2C

; Get Buffer #3

PUSH BC ; 3E2D
PUSH HL ; 3E2E
PUSH DE ; 3E2F
PUSH IX ; 3E30
PUSH IY ; 3E32
CALL 03E1BH ; 3E34
CALL 03D2BH ; 3E37
JR C,03E3FH ; 3E3A
LD (06303H),HL ; 3E3C
POP IY ; 3E3F
POP IX ; 3E41
POP DE ; 3E43
POP HL ; 3E44
POP BC ; 3E45
RET ; 3E46

; Put Buffer #3

PUSH BC ; 3E47
PUSH HL ; 3E48
PUSH DE ; 3E49
PUSH IX ; 3E4A
PUSH IY ; 3E4C
CALL 03E1BH ; 3E4E
CALL 03D69H ; 3E51 Buffer Insert
LD (06301H),IX ; 3E54
POP IY ; 3E58
POP IX ; 3E5A
POP DE ; 3E5C
POP HL ; 3E5D
POP BC ; 3E5E
RET ; 3E5F

LD HL,(06387H) ; 3E60
LD DE,06305H ; 3E63
LD BC,06384H ; 3E66
LD IX,(06385H) ; 3E69
LD IY,065BFH ; 3E6D Buffer #4 Counter
RET ; 3E71

; Get Buffer #4

PUSH BC ; 3E72
PUSH HL ; 3E73
PUSH DE ; 3E74
PUSH IX ; 3E75
PUSH IY ; 3E77
CALL 03E60H ; 3E79
CALL 03D2BH ; 3E7C
JR C,03E84H ; 3E7F
LD (06387H),HL ; 3E81
POP IY ; 3E84
POP IX ; 3E86
POP DE ; 3E88
POP HL ; 3E89
POP BC ; 3E8A
RET ; 3E8B

; Put Buffer #4

PUSH BC ; 3E8C
PUSH HL ; 3E8D
PUSH DE ; 3E8E
PUSH IX ; 3E8F
PUSH IY ; 3E91
CALL 03E60H ; 3E93
CALL 03D69H ; 3E96 Buffer Insert
LD (06385H),IX ; 3E99
POP IY ; 3E9D
POP IX ; 3E9F
POP DE ; 3EA1
POP HL ; 3EA2
POP BC ; 3EA3
RET ; 3EA4

LD HL,(0623BH) ; 3EA5
LD DE,061F9H ; 3EA8
LD BC,06238H ; 3EAB
LD IX,(06239H) ; 3EAE
LD IY,065BCH ; 3EB2 Buffer #5 Counter
RET ; 3EB6

; Get Buffer #5

PUSH BC ; 3EB7
PUSH HL ; 3EB8
PUSH DE ; 3EB9
PUSH IX ; 3EBA
PUSH IY ; 3EBC
CALL 03EA5H ; 3EBE
CALL 03D2BH ; 3EC1
JR C,03EC9H ; 3EC4
LD (0623BH),HL ; 3EC6
POP IY ; 3EC9
POP IX ; 3ECB
POP DE ; 3ECD
POP HL ; 3ECE
POP BC ; 3ECF
RET ; 3ED0

; Put Buffer #5

PUSH BC ; 3ED1
PUSH HL ; 3ED2
PUSH DE ; 3ED3
PUSH IX ; 3ED4
PUSH IY ; 3ED6
CALL 03EA5H ; 3ED8
CALL 03D69H ; 3EDB Buffer Insert
LD (06239H),IX ; 3EDE
POP IY ; 3EE2
POP IX ; 3EE4
POP DE ; 3EE6
POP HL ; 3EE7
POP BC ; 3EE8
RET ; 3EE9

LD HL,(0627FH) ; 3EEA
LD DE,0623DH ; 3EED
LD BC,0627CH ; 3EF0
LD IX,(0627DH) ; 3EF3
LD IY,065BDH ; 3EF7 Buffer #6 Counter
RET ; 3EFB

; Get Buffer #6

PUSH BC ; 3EFC
PUSH HL ; 3EFD
PUSH DE ; 3EFE
PUSH IX ; 3EFF
PUSH IY ; 3F01
CALL 03EEAH ; 3F03
CALL 03D2BH ; 3F06
JR C,03F0EH ; 3F09
LD (0627FH),HL ; 3F0B
POP IY ; 3F0E
POP IX ; 3F10
POP DE ; 3F12
POP HL ; 3F13
POP BC ; 3F14
RET ; 3F15

; Put Buffer #6

PUSH BC ; 3F16
PUSH HL ; 3F17
PUSH DE ; 3F18
PUSH IX ; 3F19
PUSH IY ; 3F1B
CALL 03EEAH ; 3F1D
CALL 03D69H ; 3F20 Buffer Insert
LD (0627DH),IX ; 3F23
POP IY ; 3F27
POP IX ; 3F29
POP DE ; 3F2B
POP HL ; 3F2C
POP BC ; 3F2D
RET ; 3F2E

LD HL,(063CBH) ; 3F2F
LD DE,06389H ; 3F32
LD BC,063C8H ; 3F35
LD IX,(063C9H) ; 3F38
LD IY,065C1H ; 3F3C Buffer #7 Counter
RET ; 3F40

; Get Buffer #7

PUSH BC ; 3F41
PUSH HL ; 3F42
PUSH DE ; 3F43
PUSH IX ; 3F44
PUSH IY ; 3F46
CALL 03F2FH ; 3F48
CALL 03D2BH ; 3F4B
JR C,03F53H ; 3F4E
LD (063CBH),HL ; 3F50
POP IY ; 3F53
POP IX ; 3F55
POP DE ; 3F57
POP HL ; 3F58
POP BC ; 3F59
RET ; 3F5A

; Put Buffer #7

CALL 0408FH ; 3F5B (6418h)=0Ch
PUSH BC ; 3F5E
PUSH HL ; 3F5F
PUSH DE ; 3F60
PUSH IX ; 3F61
PUSH IY ; 3F63
CALL 03F2FH ; 3F65
CALL 03D69H ; 3F68 Buffer Insert
LD (063C9H),IX ; 3F6B
POP IY ; 3F6F
POP IX ; 3F71
POP DE ; 3F73
POP HL ; 3F74
POP BC ; 3F75
RET ; 3F76

LD HL,(0640FH) ; 3F77
LD DE,063CDH ; 3F7A
LD BC,0640CH ; 3F7D
LD IX,(0640DH) ; 3F80
LD IY,065C0H ; 3F84 Buffer #8 Counter
RET ; 3F88

; Get Buffer #8

PUSH BC ; 3F89
PUSH HL ; 3F8A
PUSH DE ; 3F8B
PUSH IX ; 3F8C
PUSH IY ; 3F8E
CALL 03F77H ; 3F90
CALL 03D2BH ; 3F93
JR C,03F9BH ; 3F96
LD (0640FH),HL ; 3F98
POP IY ; 3F9B
POP IX ; 3F9D
POP DE ; 3F9F
POP HL ; 3FA0
POP BC ; 3FA1
RET ; 3FA2

; Put Buffer #8

PUSH BC ; 3FA3
PUSH HL ; 3FA4
PUSH DE

  
; 3FA5
PUSH IX ; 3FA6
PUSH IY ; 3FA8
CALL 03F77H ; 3FAA
CALL 03D69H ; 3FAD Buffer Insert
LD (0640DH),IX ; 3FB0
POP IY ; 3FB4
POP IX ; 3FB6
POP DE ; 3FB8
POP HL ; 3FB9
POP BC ; 3FBA
RET ; 3FBB

; Put Log Buffer

PUSH AF ; 3FBC
PUSH BC ; 3FBD
PUSH DE ; 3FBE
PUSH HL ; 3FBF
PUSH AF ; 3FC0
LD DE,06E7CH ; 3FC1
LD BC,0667DH ; 3FC4
LD HL,(0667AH) ; 3FC7 Puntero al Proximo char del Log Buffer
PUSH HL ; 3FCA
XOR A ; 3FCB
SBC HL,BC ; 3FCC
POP HL ; 3FCE
JR C,03FD8H ; 3FCF (667Ah)<667Dh ? 3FD8
PUSH HL ; 3FD1
XOR A ; 3FD2
SBC HL,DE ; 3FD3
POP HL ; 3FD5
JR C,03FD9H ; 3FD6 (667Ah)<6E7Ch ? 3FD9
EX DE,HL ; 3FD8 HL = 6E7Ch
POP AF ; 3FD9
LD (HL),A ; 3FDA
DEC HL ; 3FDB
LD (0667AH),HL ; 3FDC Puntero al Proximo char del Log Buffer
POP HL ; 3FDF
POP DE ; 3FE0
POP BC ; 3FE1
POP AF ; 3FE2
RET ; 3FE3

; Copy (HL..HL+3) to a String of 4 Hex values like '30 FF FF 10'

PUSH AF ; 3FE4 Makes 65F2h=4-Hexs String of (HL..HL+3)
PUSH BC ; 3FE5
PUSH DE ; 3FE6
LD DE,065F2H ; 3FE7
LD B,004H ; 3FEA
PUSH BC ; 3FEC
LD BC,06E7CH ; 3FED Log Buffer end
XOR A ; 3FF0
PUSH HL ; 3FF1
SBC HL,BC ; 3FF2
POP HL ; 3FF4
JR NC,03FFAH ; 3FF5 HL>6E7C ? HL = Buffer Start
INC HL ; 3FF7 HL++
JR 03FFDH ; 3FF8
LD HL,0667DH ; 3FFA Log Buffer Start
LD A,(HL) ; 3FFD A=Last byte Saved in Log Buffer
AND 0F0H ; 3FFE
RRC A ; 4000
RRC A ; 4002
RRC A ; 4004
RRC A ; 4006
CP 00AH ; 4008
JR C,0400EH ; 400A
ADD A,007H ; 400C
ADD A,'0' ; 400E
LD (DE),A ; 4010 (65F2h) = ASCII de Hi Nibble de A
INC DE ; 4011
LD A,(HL) ; 4012
AND 00FH ; 4013
CP 00AH ; 4015
JR C,0401BH ; 4017
ADD A,007H ; 4019
ADD A,'0' ; 401B
LD (DE),A ; 401D (65F3h) = ASCII de Lo Nibble de A
INC DE ; 401E
LD A,020H ; 401F
LD (DE),A ; 4021 (65F4h) = ' '
INC DE ; 4022
POP BC ; 4023
DJNZ 03FECH ; 4024 4 veces
POP DE ; 4026
POP BC ; 4027
POP AF ; 4028
RET ; 4029

; Espera una cambio en el port (C) o 5 probadas y
; despues almacena la diferencia entre el valor
; de ese desde la ultima llamada y esta en (IX)
; y almacena el valor de esta llamada del Port (C)
; en (IX+1)

LD H,005H ; 402A
IN A,(C) ; 402C
LD B,A ; 402E
IN A,(C) ; 402F
CP B ; 4031
JR Z,04037H ; 4032
DEC H ; 4034
JR NZ,0402EH ; 4035 Espera un cambio en el Port (C)
SUB (IX+001H) ; 4037
LD (IX+000H),A ; 403A (IX) = (P(C))-(IX+1)
LD A,B ; 403D
LD (IX+001H),A ; 403E (IX+1) = (P(C)) anterior
RET ; 4041

; Word to String
; Input: DE -> Word
; IY -> Buffer
; Output: IY -> ASCII String del Word ptr (DE)

PUSH AF ; 4042
PUSH HL ; 4043
PUSH BC ; 4044
PUSH IX ; 4045
PUSH IY ; 4047
PUSH DE ; 4049
POP IX ; 404A
LD H,(IX+001H) ; 404C
LD L,(IX+000H) ; 404F
LD BC,0FC18H ; 4052 BC = -1000d
CALL 04072H ; 4055
CALL 04063H ; 4058
POP IY ; 405B
POP IX ; 405D
POP BC ; 405F
POP HL ; 4060
POP AF ; 4061
RET ; 4062


LD BC,0FF9CH ; 4063 BC = -100d
CALL 04072H ; 4066
LD BC,0FFF6H ; 4069 BC = -10d
CALL 04072H ; 406C
LD BC,0FFFFH ; 406F BC = -1d

; Input: BC,HL,IY
; Output: (IY)=A=HL div -BC

LD A,02FH ; 4072
INC A ; 4074
ADD HL,BC ; 4075
JR C,04074H ; 4076
SBC HL,BC ; 4078
LD (IY+000H),A ; 407A (IY) = HL div -BC
INC IY ; 407D
RET ; 407F

; Busca diferencias en Strings
; Input: (HL) -> String1
; (DE) -> String2
; B = String Max Len
; Output: (HL) & (DE) Unmodified
; B = Input B - Equal Characters

PUSH HL ; 4080
PUSH DE ; 4081
LD A,(HL) ; 4082
LD C,A ; 4083
LD A,(DE) ; 4084
CP C ; 4085
JR NZ,0408CH ; 4086
INC HL ; 4088
INC DE ; 4089
DJNZ 04082H ; 408A
POP DE ; 408C
POP HL ; 408D
RET ; 408E

; (6418h)=0Ch

PUSH AF ; 408F
LD A,00CH ; 4090
LD (06418H),A ; 4092
POP AF ; 4095
RET ; 4096

;--------------------------------
; Input: DE, HL
;Output: IY:IX = HL * DE

LD B,010H ; 4097
LD IX,00000H ; 4099
LD IY,00000H ; 409D
ADD IY,IY ; 40A1
ADD IX,IX ; 40A3
JR NC,040A9H ; 40A5
INC IY ; 40A7
SLA L ; 40A9
RL H ; 40AB
JR NC,040B5H ; 40AD
ADD IX,DE ; 40AF
JR NC,040B5H ; 40B1
INC IY ; 40B3
DJNZ 040A1H ; 40B5
RET ; 40B7

LD A,B ; 40B8 HL = BC Mod DE
LD B,010H ; 40B9
LD HL,00000H ; 40BB
RL C ; 40BE
RLA ; 40C0
ADC HL,HL ; 40C1
SBC HL,DE ; 40C3
JR NC,040C8H ; 40C5
ADD HL,DE ; 40C7
CCF ; 40C8
DJNZ 040BEH ; 40C9
RL C ; 40CB
RLA ; 40CD
LD B,A ; 40CE
RET ; 40CF


0EDD: 19x2E
--------------------------------- TELE1.Z ---------------------------------
Supongamos que en un TPMTc hay un codigo parecido a ese que paso, aunque
es imposible asegurarlo, si es asi, podriamos decir lo siguiente:

Esos fueron 170k de codigo. Tenemos algunas pistas que fuimos sacando del
analisis de el mamotreto este.
No pudimos encontrar el codigo que lee la tarjeta, o bien no es el codigo
de un telefono o la tarjeta la lee el 80C31 (nos inclinamos por la segunda
opcion, por algunas razones que no vamos a publicar)
Hay una serie de Timers de Byte (14 en total) y otra serie de timers
word (5), que se usan para diversos fines, por ahi nombrados y se
actualizan por IRQ. Y hay tambien una serie de 8 buffers circulares, que
estan explicados por ahi tambien. Y esas dos cosas son las dos herramientas
en las que se basan para hacer todo, un concepto bastante sencillo, tipico
de electronicos. Por la manera en que esta el codigo esta claro que fue
programado directamente en assembler, pero seguramente en un
Macro-assembler, y con muchos macros (digno de destacar los procedimientos
para hacer put en buffers que nunca hacen put y asi sucesivamente). So,
leanlo detenidamente, lleva bastante tiempo entender algo, pero VALE LA
PENA.
Si se cuelgan un rato con unas rutinas que hacen algunas cosas de math,
seguramente no van a comprender que se trata de un MUL y un DIV, esta bien,
no lo comprendan. Pero creanselo, eso hacen. Recuerden quel el Z80 no tiene
instrucciones homologas.
Nota: hay un chequeo de hard que se activa cuando el telefono se resetea,
y si no se desactiva al cabo de un tiempo hay que resetear el telefono
(cortocircuitar la pila o abrir y cerrar la puerta).

3.1.2 Analisis del codigo del i80C31
------------------------------> TELE2.Z <---------------------------
IRQ:

#1 ??? IRQ #0
#2 Nada Timer #0
IRQ #1
Timer #1 Siempre inicializado a $F45A (62554)

Ports

P1.4 Tarjeta I/O

P1.6 Tarjeta Puesta?


Bit Memory

01 Pueso a 1 cuando W(23) se pone a 100d
02 Apagado desde la IRQ #0, 0B00 espera que se apague para seguir...

0D Controla una mascara (0111.1111) sobre 0108

Internal Memory:

23 Word Contador Decendiente inicializado a 100 o 1
25 Byte = 30 En Timer #1
26 Byte Card[0] Sacado de la tabla en 1315 segun la tarjeta
27 Byte Mascara para (x0109)
28 Byte Mascara para (x0109)
29 Byte Card[1] Sacado de la tabla en 1315 segun la tarjeta
2A Byte Card[2] Sacado de la tabla en 1315 segun la tarjeta

External Memory:

0003 BYTE bit mapped
0004 BYTE copia del 0107
0005 BYTE copia del 0108 bit mapped lo copia a 18
0006 BYTE Conjetura: Port de la tarjeta:
bit 0 Clock

0008 lo copia a 19
0010 BYTE copia del 0110
0101 BYTE Stack Pointer Auxiliar
0102 WORD Pointer = $
0108
0109 BYTE bit mapped

3132 BYTE Cambiado desde adentro de la IRQ #1 = (2D)+6
3133 BYTE Cambiado desde adentro de la IRQ #1 = #F7 o #CC o #02 o #A2
3134 BYTE Seteado a 90 despues de leer la tarjeta
3135 BYTE Seteado a 10 o 00 despues de leer la tarjeta. (depende de la T)

3139..315C Tarjeta

0000 LJMP 0100 ;
0003 LJMP 0F44 ; IRQ #0
0006 MOV R7,A ;
0007 MOV R7,A ;
0008 MOV R7,A ;
0009 MOV R7,A ;
000A MOV R7,A ;
000B LJMP 026A ; Timer #0
000E MOV R7,A ;
000F MOV R7,A ;
0010 MOV R7,A ;
0011 MOV R7,A ;
0012 MOV R7,A ;
0013 LJMP 030D ; IRQ #1
0016 MOV R7,A ;
0017 MOV R7,A ;
0018 MOV R7,A ;
0019 MOV R7,A ;
001A MOV R7,A ;
001B LJMP 026B ; Timer #1
001E MOV R7,A ;
001F MOV R7,A ;
0020 MOV R7,A ;
0021 MOV R7,A ;
0022 MOV R7,A ;
0023 MOV R7,A ;
0024 MOV R7,A ;
0025 MOV R7,A ;
0026 MOV R7,A ;
0027 MOV R7,A ;
0028 MOV R7,A ;
0029 MOV R7,A ;
002A MOV R7,A ;
002B MOV R7,A ;
002C MOV R7,A ;
002D MOV R7,A ;
002E MOV R7,A ;
002F MOV R7,A ;
0030 MOV R7,A ;
0031 MOV R7,A ;
0032 MOV R7,A ;
0033 MOV R7,A ;
0034 MOV R7,A ;
0035 MOV R7,A ;
0036 MOV R7,A ;
0037 MOV R7,A ;
0038 MOV R7,A ;
0039 MOV R7,A ;
003A MOV R7,A ;
003B MOV R7,A ;
003C MOV R7,A ;
003D MOV R7,A ;
003E MOV R7,A ;
003F MOV R7,A ;
0040 ADD A,R2 ;
0041 ADD A,R2 ;
0042 JNB 31,0075 ;
0045 JNB 2A,3FF2 ;
0048 MOV R2,2A ;
004A CJNE R3,#BB,0077 ;
004D ADD A,R2 ;
004E MOV R7,A ;
004F MOV R7,A ;
0050 MOV R7,A ;
0051 MOV R7,A ;
0052 MOV R7,A ;
0053 MOV R7,A ;
0054 MOV R7,A ;
0055 MOV R7,A ;
0056 MOV R7,A ;
0057 MOV R7,A ;
0058 MOV R7,A ;
0059 MOV R7,A ;
005A MOV R7,A ;
005B MOV R7,A ;
005C MOV R7,A ;
005D MOV R7,A ;
005E MOV R7,A ;
005F MOV R7,A ;
0060 MOV R7,A ;
0061 MOV R7,A ;
0062 MOV R7,A ;
0063 MOV R7,A ;
0064 MOV R7,A ;
0065 MOV R7,A ;
0066 MOV R7,A ;
0067 MOV R7,A ;
0068 MOV R7,A ;
0069 MOV R7,A ;
006A MOV R7,A ;
006B MOV R7,A ;
006C MOV R7,A ;
006D MOV R7,A ;
006E MOV R7,A ;
006F MOV R7,A ;
0070 MOV R7,A ;
0071 MOV R7,A ;
0072 MOV R7,A ;
0073 MOV R7,A ;
0074 MOV R7,A ;
0075 MOV R7,A ;
0076 MOV R7,A ;
0077 MOV R7,A ;
0078 MOV R7,A ;
0079 MOV R7,A ;
007A MOV R7,A ;
007B MOV R7,A ;
007C MOV R7,A ;
007D MOV R7,A ;
007E MOV R7,A ;
007F MOV R7,A ;
0080 LJMP 10C8 ;
0083 LJMP 032D ;
0086 LJMP 0DA2 ;
0089 LJMP 0DFB ;
008C LJMP 1288 ;
008F LJMP 0E41 ;
0092 LJMP 11B4 ;
0095 LJMP 1211 ;
0098 LJMP 1234 ;
009B LJMP 00CB ;
009E LJMP 00CB ;
00A1 LJMP 0E8A ;
00A4 LJMP 0EB4 ;
00A7 LJMP 0ECE ;
00AA LJMP 0F24 ;
00AD LJMP 0F34 ;
00B0 LJMP 00CB ;
00B3 LJMP FFFF ;
00B6 LJMP FFFF ;
00B9 LJMP FFFF ;
00BC LJMP FFFF ;
00BF LJMP FFFF ;
00C2 LJMP FFFF ;
00C5 LJMP FFFF ;
00C8 LCALL 023D ; R2=(R6R7) R3=(R6R7+1) R6R7+=2
00CB RET ;

00CC MOV R7,A ;
00CD MOV R7,A ;
00CE MOV R7,A ;
00CF MOV R7,A ;
00D0 MOV R7,A ;
00D1 MOV R7,A ;
00D2 MOV R7,A ;
00D3 MOV R7,A ;
00D4 MOV R7,A ;
00D5 MOV R7,A ;
00D6 MOV R7,A ;
00D7 MOV R7,A ;
00D8 MOV R7,A ;
00D9 MOV R7,A ;
00DA MOV R7,A ;
00DB MOV R7,A ;
00DC MOV R7,A ;
00DD MOV R7,A ;
00DE MOV R7,A ;
00DF MOV R7,A ;
00E0 MOV R7,A ;
00E1 MOV R7,A ;
00E2 MOV R7,A ;
00E3 MOV R7,A ;
00E4 MOV R7,A ;
00E5 MOV R7,A ;
00E6 MOV R7,A ;
00E7 MOV R7,A ;
00E8 MOV R7,A ;
00E9 MOV R7,A ;
00EA MOV R7,A ;
00EB MOV R7,A ;
00EC MOV R7,A ;
00ED MOV R7,A ;
00EE MOV R7,A ;
00EF MOV R7,A ;
00F0 MOV R7,A ;
00F1 MOV R7,A ;
00F2 MOV R7,A ;
00F3 MOV R7,A ;
00F4 MOV R7,A ;
00F5 MOV R7,A ;
00F6 MOV R7,A ;
00F7 MOV R7,A ;
00F8 MOV R7,A ;
00F9 MOV R7,A ;
00FA MOV R7,A ;
00FB MOV R7,A ;
00FC MOV R7,A ;
00FD MOV R7,A ;
00FE MOV R7,A ;
00FF MOV R7,A ;

; main

0100 ORL P1,#BF ;
0103 ANL P1,#BF ; (P1)=BFh
0106 CLR D3 ;
0108 CLR D4 ; Select Register's Bank 0000
010A MOV SP,#33 ; SP=33h
010D MOV R0,#7F ;
010F CLR A ;
0110 MOV @R0,A ;
0111 DJNZ R0,0110 ; (00..7F)=00
0113 CLR 07 ;
0115 CLR 08 ;
0117 MOV P3,#FF ; (P3)=FFh
011A CLR A ;
011B MOV DPTR,#0107 ;
011E MOVX @DPTR,A ;
011F MOV DPTR,#0108 ;
0122 MOVX @DPTR,A ;
0123 MOV DPTR,#0109 ;
0126 MOVX @DPTR,A ;
0127 MOV DPTR,#010A ;
012A MOVX @DPTR,A ;
012B MOV DPTR,#010B ;
012E MOVX @DPTR,A ;
012F INC DPTR ;
0130 MOVX @DPTR,A ; (0100..010C)=00
0131 MOV DPTR,#0004 ;
0134 MOVX @DPTR,A ; (0004)=00
0135 MOV DPTR,#0006 ;
0138 MOVX @DPTR,A ; (0006)=00
0139 MOV DPTR,#0007 ;
013C MOVX @DPTR,A ; (0007)=00 R2R3 R4R5 R6R7
013D LCALL 0197 ; (0100..010F)=00 (R2..R7) = 1321 1321 010F
0140 MOV R6,#03 ; R6=03
0142 MOV R7,#0F ; R7=0F 030F
0144 LCALL 0302 ; Enable IRQs
0147 LCALL 02EE ; Enable Timer #1
014A LCALL 026B ; Call Timer #1 IRQ
014D MOV DPTR,#4000 ;
0150 MOVX A,@DPTR ;
0151 CJNE A,#AA,015B ;
0154 INC DPTR ;
0155 MOVX A,@DPTR ;
0156 CJNE A,#55,015B ;
0159 SJMP 018E ;
015B MOV R2,#00 ;
015D MOV R3,#FF ;
015F LCALL 0236 ; (R6R7-2)=R2 (R6R7-1)=R3 R6R7-=2
0162 MOV R2,#41 ;
0164 MOV R3,#00 ;
0166 MOV DPTR,#0004 ;
0169 LCALL 0DFB ;
016C MOV R2,#00 ;
016E MOV R3,#AA ;
0170 LCALL 0236 ; (R6R7-2)=R2 (R6R7-1)=R3 R6R7-=2
0173 MOV R2,#40 ;
0175 MOV R3,#00 ;
0177 MOV DPTR,#0004 ;
017A LCALL 0DFB ;
017D MOV R2,#00 ;
017F MOV R3,#55 ;
0181 LCALL 0236 ; (R6R7-2)=R2 (R6R7-1)=R3 R6R7-=2
0184 MOV R2,#40 ;
0186 MOV R3,#01 ;
0188 MOV DPTR,#0004 ;
018B LCALL 0DFB ;
018E MOV DPTR,#0000 ;
0191 LCALL 200C ;
0194 LCALL 0E41 ;

0197 MOV DPTR,#010F ;
019A MOV R2,DPH ;
019C MOV R3,DPL ;
019E MOV DPTR,#0100 ;
01A1 LCALL 01F2 ; (0100..010F)=00
01A4 MOV DPTR,#1321 ;
01A7 MOV R2,DPH ;
01A9 MOV R3,DPL ; R2R3=#1321
01AB MOV DPTR,#1321 ;
01AE LCALL 01FD ; CMP R2R3,DPTR
01B1 JZ 01DF ;
01B3 PUSH 02 ;
01B5 PUSH 03 ;
01B7 PUSH DPL ;
01B9 PUSH DPH ;
01BB MOV R0,#02 ;
01BD MOV R1,#04 ;
01BF CLR A ;
01C0 MOVC A,@A+DPTR ;
01C1 MOV @R0,A ;
01C2 INC DPTR ;
01C3 INC R0 ;
01C4 DJNZ R1,01BF ;
01C6 MOV DPL,R3 ;
01C8 MOV DPH,R2 ;
01CA MOV 02,R4 ;
01CC MOV 03,R5 ;
01CE LCALL 01F2 ; (DPTR..R2R3)=0
01D1 POP DPH ;
01D3 POP DPL ;
01D5 POP 03 ;
01D7 POP 02 ;
01D9 INC DPTR ;
01DA INC DPTR ;
01DB INC DPTR ;
01DC INC DPTR ;
01DD SJMP 01AE ;
01DF LCALL 0206 ;
01E2 13 21 13 21 01 00 ; (R2..R7) = 13 21 13 21 01 0F
01E8 LCALL 0206 ;
01EB 13 21 13 21 01 0F ; (R2..R7) = 13 21 13 21 01 0F
01F1 RET ;

01F2 LCALL 01FD ; CMP R2R3,DPTR
01F5 JNZ 01F8 ;
01F7 RET ;

01F8 CLR A ;
01F9 MOVX @DPTR,A ;
01FA INC DPTR ;
01FB SJMP 01F2 ;

01FD MOV A,R3 ; CMP R2R3,DPTR
01FE XRL A,DPL ;
0200 JNZ 0205 ;
0202 MOV A,R2 ;
0203 XRL A,DPH ;
0205 RET ;

0206 POP DPH ;
0208 POP DPL ; DPTR = Return Address
020A MOV R0,#02 ;
020C MOV R1,#06 ;
020E CLR A ;
020F MOVC A,@A+DPTR ;
0210 MOV @R0,A ;
0211 INC DPTR ;
0212 INC R0 ;
0213 DJNZ R1,020E ; (R2..R7)=ROM (Return Address++)
0215 PUSH DPL ;
0217 PUSH DPH ; DPTR=Return Address+6
0219 MOV DPL,R5 ;
021B MOV DPH,R4 ;
021D LCALL 01FD ; CMP R2R3,DPTR
0220 JZ 0235 ;
0222 CLR A ;
0223 MOVC A,@A+DPTR ;
0224 INC DPTR ;
0225 MOV R5,DPL ;
0227 MOV R4,DPH ;
0229 MOV DPL,R7 ;
022B MOV DPH,R6 ;
022D MOVX @DPTR,A ;
022E INC DPTR ;
022F MOV R7,DPL ;
0231 MOV R6,DPH ;
0233 SJMP 0219 ;
0235 RET ;

0236 MOV R0,#02 ; (R6R7-2)=R2 (R6R7-1)=R3 R6R7-=2
0238 MOV R1,#02 ;
023A LJMP 0244 ;
023D MOV R0,#02 ;
023F MOV R1,#02 ;
0241 LJMP 0257 ;
0244 MOV A,R7 ;
0245 CLR C ;
0246 SUBB A,R0 ;
0247 MOV R7,A ;
0248 MOV A,R6 ;
0249 SUBB A,#00 ;
024B MOV R6,A ; R6R7=R6R7-2
024C MOV DPL,R7 ;
024E MOV DPH,R6 ;
0250 MOV A,@R1 ;
0251 MOVX @DPTR,A ; R6R7=2
0252 INC DPTR ;
0253 INC R1 ;
0254 DJNZ R0,0250 ;
0256 RET ;

0257 PUSH ACC ; R2=(R6R7) R3=(R6R7+1) R6R7+=2
0259 MOV DPL,R7 ;
025B MOV DPH,R6 ;
025D MOVX A,@DPTR ;
025E MOV @R1,A ;
025F INC DPTR ;
0260 INC R1 ;
0261 DJNZ R0,025D ;
0263 MOV R6,DPH ;
0265 MOV R7,DPL ;
0267 POP ACC ;
0269 RET ;

; Timer IRQ #0
;
026A RETI ;

; Timer IRQ #1
;
026B PUSH PSW ;
026D PUSH ACC ;
026F PUSH DPH ;
0271 PUSH DPL ;
0273 PUSH B ;
0275 SETB D4 ;
0277 CLR D3 ; Select Register's Bank 0010
0279 LCALL 02FB ; Timer #1 = $F45A 62554=31277*2
027C JNB 04,02D1 ; Bit 4 = 0 ?  02D1 W(23)-- Exit
027F MOV DPTR,#0109 ;
0282 MOVX A,@DPTR ; A = (x0109)
0283 JB E0,0294 ;
0286 ORL A,#01 ;
0288 MOVX @DPTR,A ;
0289 MOV DPTR,#0006 ;
028C MOVX @DPTR,A ;
028D MOV A,30 ;
028F MOV 25,A ;
0291 LJMP 02D1 ; W(23)-- Exit
0294 PUSH ACC ;
0296 MOV A,25 ;
0298 CLR C ;
0299 SUBB A,#0A ;
029B MOV 25,A ;
029D CJNE A,#00,02C5 ;
02A0 POP ACC ;
02A2 ANL A,#FE ;
02A4 MOVX @DPTR,A ;
02A5 MOV DPTR,#0006 ;
02A8 MOVX @DPTR,A ;
02A9 JNB 06,02BB ;
02AC MOV C,P1.4 ; Card I/O
02AE CPL C ;
02AF CLR A ;
02B0 CJNE A,2E,02B6 ;
02B3 LJMP 02BB ;
02B6 JC 02CA ;
02B8 DJNZ 2E,027F ;
02BB MOV C,P1.4 ; Card I/O
02BD CPL C ;
02BE MOV 00,C ;
02C0 CLR 04 ;
02C2 LJMP 02D1 ; W(23)-- Exit
02C5 POP ACC ;
02C7 LJMP 02D1 ; W(23)-- Exit
02CA MOV 2E,#00 ;
02CD SETB 00 ;
02CF SJMP 027F ;
02D1 MOV A,24 ;
02D3 JZ 02DA ;
02D5 DEC A ;
02D6 MOV 24,A ;
02D8 SJMP 02E3 ;
02DA MOV A,23 ;
02DC JZ 02E3 ;
02DE DEC A ;
02DF MOV 23,A ;
02E1 DEC 24 ;
02E3 POP B ; W(23)-- Exit
02E5 POP DPL ;
02E7 POP DPH ;
02E9 POP ACC ;
02EB POP PSW ;
02ED RETI ;

02EE MOV TMOD,#10 ; Timer Mode
02F1 MOV TH1,#F4 ;
02F4 MOV TL1,#5A ;
02F7 MOV TCON,#40 ; Timer Control = 0100 0000
02FA RET ; Timer 1 ON Type 0 Edge 0

02FB MOV TH1,#F4 ;
02FE MOV TL1,#5A ;
0301 RET ; Timer #1 = $F45A = 62554

0302 CLR IT0 ; IRQ 0 Type
0304 CLR IT1 ; IRQ 1 Type
0306 MOV IP,#05 ; IRQ 0 Priority, IRQ 1 Priority
0309 MOV IE,#81 ; External IRQ Enabled, Global IRQ Enabled
030C RET ;

; IRQ #1
;
030D SETB 08 ; b08 = 1
030F LCALL 1062 ;
0312 JNB 07,032A ; ?  Exit
0315 MOV A,#CC ;
0317 JB 96,031C ; IRQ #1 Input = 1 ?  031C
031A MOV A,#F7 ;
031C LCALL 10AA ; (x3132)=(2D)+6 (2D)=0 (x3133)=F7/CC R2=0 R3=F7
031F LCALL 09C4 ; Disable TIRQ #1 (x0108)&=0000 0111
0322 MOV DPTR,#0101 ;
0325 MOVX A,@DPTR ;
0326 POP PSW ;
0328 MOV SP,A ; SP=(x0101)
032A CLR AA ; Disable IRQ #1
032C RETI ;

032D CLR AA ; Disable IRQ #1
032F PUSH PSW ;
0331 NOP ;
0332 NOP ;
0333 MOV DPTR,#0101 ;
0336 MOV A,SP ;
0338 DEC A ;
0339 MOVX @DPTR,A ; (x0101)=SP-1
033A NOP ;
033B NOP ;
033C SETB 07 ;
033E MOV DPH,R2 ;
0340 MOV DPL,R3 ;
0342 MOV 31,R2 ;
0344 MOV 32,R3 ;
0346 MOV A,#FB ;
0348 JNB P1.6,0384 ; No hay Terjeta Puesta ?  0384
034B SETB D3 ; Select Register's Bank 0011
034D SETB D4 ;
034F CLR A ;
0350 MOV 2D,A ;
0352 MOV A,#01 ;
0354 LCALL 0DD4 ; DPTR++
0357 MOVX A,@DPTR ;
0358 MOV DPTR,#0366 ;
035B LCALL 0DE8 ;
035E MOV B,#03 ;
0361 MUL AB ;
0362 MOV DPTR,#036C ;
0365 JMP @A+DPTR ;
0366 DB 05,00,01,02,03,04
036C LJMP 037E ;
036F LJMP 038A ; Read Card, Validate Telecard, Read Size?
0372 LJMP 03CE ;
0375 LJMP 03B4 ;
0378 LJMP 03AE ;
037B LJMP 03C8 ;

037E MOV A,#84 ;
0380 SJMP 0384 ;
0382 MOV A,#F7 ;
0384 LCALL 10AA ; (3132)=(2D)+6 (2D)=0 (3133h)=84 R2=0 R3=84
0387 LJMP 03DB ; RET

038A MOV DPTR,#0100 ;
038D MOV A,#03 ;
038F MOVX @DPTR,A ;
0390 CLR P1.7 ; P1 = 0xxxxxxx
0392 LCALL 1034 ; P1 & Delays
0395 SETB IE.2 ; Enable IRQ #1
0397 LCALL 03E3 ; Read Card, Validate Telecard, Read Size?
039A MOV A,03 ;
039C CJNE A,#02,03DB ;
039F MOV DPTR,#0100 ;
03A2 MOVX A,@DPTR ;
03A3 DEC A ;
03A4 MOVX @DPTR,A ;
03A5 JNZ 0395 ;
03A7 CLR IE.2 ; Disable IRQ #1
03A9 LCALL 1062 ; P1 & Delays
03AC SJMP 03DB ; RET

03AE LCALL 1062 ;
03B1 CLR A ;
03B2 SJMP 0384 ;
03B4 MOV A,2F ;
03B6 JZ 0382 ;
03B8 LCALL 0FC9 ;
03BB SETB IE.2 ; Enable IRQ #1
03BD MOV A,2F ;
03BF CJNE A,#01,03C8 ;
03C2 LCALL 0B62 ;
03C5 LJMP 03D8 ; RET

03C8 LCALL 060E ;
03CB LJMP 03D8 ; RET

03CE MOV A,2F ;
03D0 JZ 0382 ;
03D2 DEC A ;
03D3 JNZ 03C8 ;
03D5 LCALL 0C7F ;
03D8 LCALL 0FDE ;
03DB CLR 07 ;
03DD CLR IE.3 ; Disable Timer #1 Interrupt
03DF POP PSW ;
03E1 RET ;

03E2 MOV R7,A ;
03E3 MOV 27,#08 ; Read Card, Validate Telecard, Read Size?
03E6 MOV 28,#04 ;
03E9 MOV R0,#02 ;
03EB MOV 2F,R0 ;
03ED MOV R1,#24 ;
03EF MOV R6,#00 ;
03F1 MOV R7,#00 ;
03F3 MOV DPH,31 ;
03F6 MOV DPL,32 ;
03F9 MOV A,#07 ;
03FB LCALL 0DD4 ; DPTR=3139
03FE LCALL 04BA ; Lee Tarjeta R1 Bytes to DPTR[]
0401 JNZ 041F ; Tarjeta no puesta?  041F
0403 MOV DPH,31 ;
0406 MOV DPL,32 ;
0409 MOV A,#08 ;
040B LCALL 0DD4 ; DPTR=313A
040E MOVX A,@DPTR ;
040F XRL A,#FF ;
0411 JZ 0430 ; Tarjeta Quemada???? ?  0430
0413 MOVX A,@DPTR ;
0414 CJNE A,#83,0419 ;
0417 SJMP 0449 ;
0419 MOV A,#04 ; Not a Telecard ?
041B MOV 2F,A ; 2F = 04
041D SJMP 0462 ; hace algo y RET
041F MOV R0,2F ; Tarjeta Quemada????
0421 DJNZ R0,03EB ; trata de volver a leer.
0423 MOV A,27 ;
0425 CJNE A,#08,0430 ;
0428 MOV 27,#04 ; si no pudo leer 3 veces
042B MOV 28,#08 ; Invierte los bits de Read y Write
042E SJMP 03E9 ; y vuelve a tratar 3 veces mas
0430 JNB 0C,0446 ;
0433 PUSH 12 ;
0435 MOV DPTR,#0109 ;
0438 MOVX A,@DPTR ;
0439 MOV R3,A ;
043A MOV DPTR,#03E2 ;
043D MOVX A,@DPTR ;
043E ORL A,R3 ;
043F MOVX @DPTR,A ;
0440 MOV DPTR,#0109 ;
0443 MOVX @DPTR,A ;
0444 POP 12 ;
0446 LJMP 09D2 ;
0449 MOV 2B,A ; Telecard:
044B MOV DPH,31 ;
044E MOV DPL,32 ;
0451 MOV A,#11 ;
0453 LCALL 0DD4 ; DPTR=3143
0456 MOVX A,@DPTR ;
0457 ANL A,#F0 ; A = CardByte[11] & 1111.0000
0459 MOV DPTR,#1310 ;
045C LCALL 0DE8 ; A = 0 if CardByte[11] !in [80,20,10,00]
045F LJMP 0469 ; else A = [04,03,02,01]
0462 LCALL 10AA ; (3132)=(2D)+6 (2D)=0 (3133h)=A R2=0 R3=A
0465 LCALL 1062 ;
0468 RET ;

0469 MOV DPTR,#1315 ;
046C DEC A ;
046D CLR C ;
046E MOV B,A ;
0470 RLC A ;
0471 ADD A,B ;
0473 PUSH ACC ;
0475 MOVC A,@A+DPTR ;
0476 MOV 26,A ; 26 = CardX0[0]
0478 POP ACC ;
047A INC A ;
047B PUSH ACC ;
047D MOVC A,@A+DPTR ;
047E MOV 2A,A ; 2A = CardX0[1]
0480 POP ACC ;
0482 INC A ;
0483 MOVC A,@A+DPTR ;
0484 MOV 29,A ; 29 = CardX0[2]
0486 MOV DPTR,#1304 ;
0489 CLR C ;
048A RLC A ;
048B PUSH ACC ; A = CardX0[2]*2
048D MOVC A,@A+DPTR ;
048E MOV B,A ;
0490 POP ACC ;
0492 INC A ;
0493 MOVC A,@A+DPTR ;
0494 LCALL 108F ; (2D)+=2. (3134)=B (3135)=A
0497 MOV DPH,31 ;
049A MOV DPL,32 ;
049D MOV A,#08 ;
049F LCALL 0DD4 ; DPTR=313A
04A2 MOVX A,@DPTR ;
04A3 SETB 02 ;
04A5 MOV A,#03 ;
04A7 LJMP 04B0 ; RET
04AA MOV DPTR,#04B4 ;
04AD MOV A,2F ;
04AF MOVC A,@A+DPTR ;
04B0 LCALL 10AA ; (3132)=(2D)+6 (2D)=0 (3133h)=A R2=0 R3=A
04B3 RET ;

04B4 LJMP 0501 ;
04B7 INC @R1 ;
04B8 INC R1 ;
04B9 INC A ;

04BA PUSH DPH ;
04BC PUSH DPL ;
04BE MOV DPTR,#0109 ;
04C1 MOV A,#30 ;
04C3 MOVX @DPTR,A ; (x0109)=0011 0000
04C4 MOV DPTR,#0006 ;
04C7 MOVX @DPTR,A ; (x0006)=0011 0000
04C8 POP DPL ;
04CA POP DPH ;
04CC LCALL 05A9 ; Lee Tarjeta R1 Bytes to DPTR[]
04CF RET ;

04D0 CLR IE.7 ; Reset Card Counter
04D2 MOV A,#00 ; A = 0000.0000
04D4 SJMP 04E8 ; A=00

04D6 CLR IE.7 ; Disable Global Interrupt
04D8 MOV A,27 ; A = 0000.1000 o 0000.0100
04DA SJMP 04E8 ;

04DC CLR IE.7 ; Disable Global Interrupt
04DE MOV A,28 ; A = 0000.0100 o 0000.1000
04E0 SJMP 04E8 ;

04E2 CLR IE.7 ; Write & Clock
04E4 MOV A,#0C ; A = 0000.1100
04E6 SJMP 04E8 ;

04E8 MOV B,A ;
04EA MOV DPTR,#0109 ;
04ED MOVX A,@DPTR ;
04EE ORL A,B ;
04F0 MOV DPTR,#0006 ;
04F3 MOVX @DPTR,A ;
04F4 NOP ;
04F5 ORL A,#01 ;
04F7 MOVX @DPTR,A ; A |= 0000.0001
04F8 NOP ;
04F9 NOP ;
04FA NOP ;
04FB NOP ;
04FC NOP ;
04FD NOP ;
04FE ANL A,#FE ; A &= 1111.1110
0500 MOVX @DPTR,A ;
0501 MOV DPTR,#0109 ;
0504 MOVX A,@DPTR ;
0505 MOV DPTR,#0006 ;
0508 MOVX @DPTR,A ;
0509 NOP ;
050A NOP ;
050B NOP ;
050C NOP ;
050D NOP ;
050E NOP ;
050F NOP ;
0510 NOP ;
0511 MOV C,P1.4 ;
0513 CPL C ;
0514 SETB IE.7 ; Enable Global Interrupt
0516 RET ;

0517 CLR 00 ;
0519 PUSH ACC ;
051B MOV DPTR,#0109 ;
051E MOVX A,@DPTR ;
051F ORL A,#0C ;
0521 MOVX @DPTR,A ;
0522 MOV DPTR,#0006 ;
0525 MOVX @DPTR,A ;
0526 POP ACC ;
0528 MOV A,29 ;
052A MOV B,2A ;
052D SETB IE.3 ; Enable Timer #1 Interrupt
052F SETB 06 ;
0531 MOV 30,B ;
0534 MOV 2E,A ;
0536 CJNE A,#01,053B ;
0539 CLR 06 ;
053B SETB 04 ;
053D JB 04,053D ;
0540 PUSH ACC ;
0542 MOV DPTR,#0109 ;
0545 MOVX A,@DPTR ;
0546 ANL A,#30 ;
0548 MOVX @DPTR,A ;
0549 MOV DPTR,#0006 ;
054C MOVX @DPTR,A ;
054D POP ACC ;
054F MOV C,P1.4 ; Card I/O
0551 CPL C ;
0552 CLR AB ; Disable Timer #1 Interrupt
0554 RET ;

0555 PUSH 1F ; Avanza R6R7 veces el Card Conuter
0557 PUSH 1E ;
0559 MOV A,27 ;
055B MOV B,A ;
055D MOV DPTR,#0109 ;
0560 MOVX A,@DPTR ;
0561 ORL A,B ;
0563 MOV DPTR,#0006 ;
0566 MOVX @DPTR,A ;
0567 CJNE R7,#00,0571 ;
056A CJNE R6,#00,0570 ;
056D LJMP 057D ;
0570 DEC R6 ;
0571 DEC R7 ;
0572 ORL A,#01 ;
0574 MOVX @DPTR,A ;
0575 NOP ;
0576 NOP ;
0577 NOP ;
0578 ANL A,#FE ;
057A MOVX @DPTR,A ;
057B SJMP 0567 ;
057D MOV DPTR,#0109 ;
0580 MOVX A,@DPTR ;
0581 MOV DPTR,#0006 ;
0584 MOVX @DPTR,A ;
0585 POP 1E ;
0587 POP 1F ;
0589 MOV C,P1.4 ;
058B CPL C ;
058C RET ;

058D CLR C ; Avanza hastal byte R6R7 el Card Counter
058E MOV A,R7 ;
058F RLC A ;
0590 MOV R7,A ;
0591 MOV A,R6 ;
0592 RLC A ;
0593 MOV R6,A ;
0594 CLR C ;
0595 MOV A,R7 ;
0596 RLC A ;
0597 MOV R7,A ;
0598 MOV A,R6 ;
0599 RLC A ;
059A MOV R6,A ;
059B CLR C ;
059C MOV A,R7 ;
059D RLC A ;
059E MOV R7,A ;
059F MOV A,R6 ;
05A0 RLC A ;
05A1 MOV R6,A ; SHL R7R6,3
05A2 LCALL 04D0 ; Reset Card Counter
05A5 LCALL 0555 ; Avanza R6R7 veces el Card Conuter
05A8 RET ;

05A9 PUSH DPH ; Lee Tarjeta R1 Bytes to DPTR[]
05AB PUSH DPL ;
05AD LCALL 058D ; Avanza hastal byte R6R7 el Card Counter
05B0 POP DPL ;
05B2 POP DPH ;
05B4 JNB P1.6,060D ; P1.6 = 0 ?  RET
05B7 PUSH DPH ;
05B9 PUSH DPL ;
05BB MOV R0,#08 ;
05BD CLR A ;
05BE MOV C,P1.4 ;
05C0 CPL C ; Complement Carry
05C1 RLC A ;
05C2 PUSH ACC ;
05C4 LCALL 04D6 ; Read Card & Clock
05C7 POP ACC ;
05C9 DJNZ R0,05C1 ;
05CB POP DPL ;
05CD POP DPH ;
05CF MOVX @DPTR,A ; (DPTR++) = GetCardByte()
05D0 INC DPTR ;
05D1 MOV A,R1 ;
05D2 CJNE A,#24,060A ;
05D5 PUSH DPH ;
05D7 PUSH DPL ;
05D9 CLR A ;
05DA MOV C,P1.4 ;
05DC CPL C ;
05DD RLC A ; A= (A<<1) + GetCardBit();
05DE PUSH ACC ;
05E0 LCALL 04D6 ; Read Card & Clock
05E3 MOV DPTR,#0109 ;
05E6 MOVX A,@DPTR ;
05E7 ORL A,#0C ; A |= 1100.0000
05E9 MOV DPTR,#0006 ;
05EC MOVX @DPTR,A ;
05ED ORL A,#01 ; A |= 0000.0001
05EF MOVX @DPTR,A ;
05F0 ANL A,#FE ; A &= 1111.1110
05F2 MOVX @DPTR,A ;
05F3 MOV DPTR,#0109 ;
05F6 MOVX A,@DPTR ;
05F7 MOV DPTR,#0006 ;
05FA MOVX @DPTR,A ;
05FB POP ACC ;
05FD POP DPL ;
05FF POP DPH ;
0601 DEC R1 ;
0602 MOV R0,#07 ;
0604 PUSH DPH ;
0606 PUSH DPL ;
0608 SJMP 05BE ;
060A DJNZ R1,05B7 ;
060C CLR A ;
060D RET ;

060E MOV DPH,31 ;
0611 MOV DPL,32 ;
0614 MOV A,#03 ;
0616 LCALL 0DD4 ; DPTR=3135
0619 MOVX A,@DPTR ;
061A MOV DPTR,#0636 ;
061D LCALL 0DE8 ;
0620 MOV B,#03 ;
0623 MUL AB ;
0624 MOV DPTR,#0640 ;
0627 JMP @A+DPTR ;

0628 MOV A,#00 ;
062A MOV B,#6D ;
062D LCALL 108F ; (2D)+=2. (3134)=006D
0630 MOV A,#84 ;
0632 LCALL 10AA ; (3132)=(2D)+6 (2D)=0 (3133h)=A R2=0 R3=A
0635 RET ;

0636 INC R1 ;
0637 POP P3 ;
0639 ORL C,/C0 ;
063B MOVX A,@DPTR ;
063C MOVX @DPTR,A ;
063D MOV R2,A ;
063E MOV R3,A ;
063F MOV R4,A ;
0640 LJMP 0628 ;
0643 LJMP 065E ;
0646 LJMP 071F ;
0649 LJMP 075D ;
064C LJMP 0801 ;
064F LJMP 0763 ;
0652 LJMP 0778 ;
0655 LJMP 083B ;
0658 LJMP 0854 ;
065B LJMP 0860 ;
065E MOV DPH,31 ;
0661 MOV DPL,32 ;
0664 MOV A,#04 ;
0666 LCALL 0DD4 ; DPTR=3136
0669 MOVX A,@DPTR ;
066A MOV R6,A ;
066B INC DPTR ;
066C MOVX A,@DPTR ;
066D MOV R7,A ;
066E JB 02,0694 ;
0671 ANL A,#03 ;
0673 JNZ 067C ;
0675 INC DPTR ;
0676 MOVX A,@DPTR ;
0677 CJNE A,#04,0688 ;
067A SJMP 0694 ;
067C MOV A,#00 ;
067E MOV B,#6B ;
0681 LCALL 108F ; (2D)+=2. (3134)=006B
0684 MOV A,#84 ;
0686 SJMP 0703 ;
0688 MOV A,#00 ;
068A MOV B,#67 ;
068D LCALL 108F ; (2D)+=2. (3134)=0067
0690 MOV A,#84 ;
0692 SJMP 0703 ;
0694 CLR 00 ;
0696 LCALL 058D ; Avanza hastal byte R6R7 el Card Counter
0699 MOV DPH,31 ;
069C MOV DPL,32 ;
069F MOV A,#06 ;
06A1 LCALL 0DD4 ; DPTR=3138
06A4 MOVX A,@DPTR ;
06A5 MOV R1,A ;
06A6 INC DPTR ;
06A7 MOVX A,@DPTR ;
06A8 JB 02,06AD ;
06AB ANL A,#7F ;
06AD PUSH DPH ;
06AF PUSH DPL ;
06B1 MOV R0,#08 ;
06B3 RLC A ;
06B4 PUSH ACC ;
06B6 JC 06BF ;
06B8 LCALL 04D6 ; Read Card & Clock
06BB MOV 17,C ;
06BD SJMP 06DA ;
06BF PUSH DPH ;
06C1 PUSH DPL ;
06C3 PUSH ACC ;
06C5 MOV DPTR,#0010 ;
06C8 MOVX A,@DPTR ;
06C9 JNB E1,0707 ;
06CC POP ACC ;
06CE POP DPL ;
06D0 POP DPH ;
06D2 LCALL 0517 ;
06D5 MOV 17,C ;
06D7 LCALL 04D6 ; Read Card & Clock
06DA POP ACC ;
06DC MOV C,17 ;
06DE DJNZ R0,06B3 ;
06E0 POP DPL ;
06E2 POP DPH ;
06E4 RLC A ;
06E5 MOVX @DPTR,A ;
06E6 INC DPTR ;
06E7 MOVX A,@DPTR ;
06E8 DJNZ R1,06AD ;
06EA JB 00,06F9 ;
06ED MOV A,#00 ;
06EF MOV B,#6F ;
06F2 LCALL 108F ; (2D)+=2. (3134)=006F
06F5 MOV A,#84 ;
06F7 SJMP 0703 ;
06F9 MOV A,#00 ;
06FB MOV B,#90 ;
06FE LCALL 108F ; (2D)+=2. (3134)=0090
0701 MOV A,#00 ;
0703 LCALL 10AA ; (3132)=(2D)+6 (2D)=0 (3133h)=A R2=0 R3=A
0706 RET ;

0707 POP ACC ;
0709 POP DPL ;
070B POP DPH ;
070D POP ACC ;
070F POP DPL ;
0711 POP DPH ;
0713 MOV A,#00 ;
0715 MOV B,#CC ;
0718 LCALL 108F ; (2D)+=2. (3134)=00CC
071B MOV A,#CC ;
071D SJMP 0703 ;
071F MOV DPH,31 ;
0722 MOV DPL,32 ;
0725 MOV A,#06 ;
0727 LCALL 0DD4 ; DPTR=3138
072A MOVX A,@DPTR ;
072B CJNE A,#00,073C ;
072E MOV A,#00 ;
0730 MOV B,#90 ;
0733 LCALL 108F ; (2D)+=2. (3134)=0090
0736 MOV A,#00 ;
0738 LCALL 10AA ; (3132)=(2D)+6 (2D)=0 (3133h)=A R2=0 R3=A
073B RET ;

073C MOV R1,A ;
073D MOV DPH,31 ;
0740 MOV DPL,32 ;
0743 MOV A,#04 ;
0745 LCALL 0DD4 ; DPTR=3136
0748 MOVX A,@DPTR ;
0749 MOV R6,A ;
074A INC DPTR ;
074B MOVX A,@DPTR ;
074C MOV R7,A ; R6R7=W(3136)
074D MOV DPH,31 ;
0750 MOV DPL,32 ;
0753 MOV A,#07 ;
0755 LCALL 0DD4 ; DPTR=3139
0758 LCALL 05A9 ; Lee Tarjeta R1 Bytes to DPTR[]
075B SJMP 072E ;

075D LCALL 080D ; A = GetCardBit(W(3138)), DPRT=3139
0760 LJMP 08BB ;

0763 LCALL 080D ; A = GetCardBit(W(3138)), DPRT=3139
0766 PUSH DPL ;
0768 PUSH DPH ;
076A LCALL 04E2 ; Write & Clock
076D CLR A ;
076E RLC A ;
076F POP DPH ;
0771 POP DPL ;
0773 MOVX @DPTR,A ;
0774 INC DPTR ;
0775 LJMP 08BB ;
0778 LCALL 04D0 ; Reset Card Counter
077B MOV DPH,31 ;
077E MOV DPL,32 ;
0781 MOV A,#06 ;
0783 LCALL 0DD4 ; DPTR = 3138
0786 CLR C ;
0787 MOV A,#08 ;
0789 PUSH ACC ;
078B MOVX A,@DPTR ;
078C MOV R1,#08 ;
078E PUSH DPH ;
0790 PUSH DPL ;
0792 RLC A ;
0793 PUSH ACC ;
0795 JNC 079A ;
0797 LCALL 04E2 ; Write & Clock
079A LCALL 04D6 ; Read Card & Clock
079D POP ACC ;
079F DJNZ R1,0792 ;
07A1 POP DPL ;
07A3 POP DPH ;
07A5 INC DPTR ;
07A6 POP ACC ;
07A8 DEC A ;
07A9 JNZ 0789 ;
07AB MOV R6,#00 ;
07AD MOV R7,#80 ;
07AF LCALL 0555 ; Avanza R6R7 veces el Card Conuter
07B2 MOV DPH,31 ;
07B5 MOV DPL,32 ;
07B8 MOV A,#07 ;
07BA LCALL 0DD4 ; DPTR+=07
07BD MOV R1,#08 ;
07BF PUSH DPH ;
07C1 PUSH DPL ;
07C3 MOV R0,#08 ;
07C5 CLR A ;
07C6 MOV C,P1.4 ; Card I/O
07C8 CPL C ;
07C9 RLC A ;
07CA PUSH ACC ;
07CC LCALL 04D6 ; Read Card & Clock
07CF POP ACC ;
07D1 DJNZ R0,07C9 ;
07D3 POP DPL ;
07D5 POP DPH ;
07D7 MOVX @DPTR,A ;
07D8 INC DPTR ;
07D9 DJNZ R1,07BF ;
07DB CLR A ;
07DC PUSH DPH ;
07DE PUSH DPL ;
07E0 RLC A ;
07E1 PUSH ACC ;
07E3 LCALL 04D6 ; Read Card & Clock
07E6 POP ACC ;
07E8 RLC A ;
07E9 PUSH ACC ;
07EB LCALL 04D6 ; Read Card & Clock
07EE POP ACC ;
07F0 RLC A ;
07F1 PUSH ACC ;
07F3 LCALL 04D6 ; Read Card & Clock
07F6 POP ACC ;
07F8 RLC A ;
07F9 POP DPL ;
07FB POP DPH ;
07FD MOVX @DPTR,A ;
07FE LJMP 08BB ;
0801 LCALL 080D ; A = GetCardBit(W(3138)), DPRT=3139
0804 LCALL 04E2 ; Write & Clock
0807 LCALL 04E2 ; Write & Clock
080A LJMP 08BB ;

080D LCALL 04D0 ; A = GetCardBit(W(3138)), DPRT=3139
0810 MOV DPH,31 ;
0813 MOV DPL,32 ;
0816 MOV A,#06 ;
0818 LCALL 0DD4 ; DPTR=3138
081B MOVX A,@DPTR ;
081C MOV R7,A ;
081D INC DPTR ;
081E MOVX A,@DPTR ;
081F MOV R6,A ; R6R7=W(x3138)
0820 MOV DPH,31 ;
0823 MOV DPL,32 ;
0826 MOV A,#07 ;
0828 LCALL 0DD4 ; DPTR=3139
082B PUSH DPL ;
082D PUSH DPH ;
082F LCALL 0555 ; Avanza R6R7 veces el Card Conuter
0832 CLR A ;
0833 RLC A ;
0834 POP DPH ;
0836 POP DPL ;
0838 MOVX @DPTR,A ;
0839 CLR A ;
083A RET ;

083B LCALL 080D ; A = GetCardBit(W(3138)), DPRT=3139
083E MOV A,#08 ;
0840 PUSH ACC ;
0842 LCALL 04E2 ; Write & Clock
0845 LCALL 04D6 ; Read Card & Clock
0848 LCALL 04D6 ; Read Card & Clock
084B POP ACC ;
084D DEC A ;
084E CJNE A,#00,0840 ;
0851 LJMP 08BB ;
0854 LCALL 080D ; A = GetCardBit(W(3138)), DPRT=3139
0857 LCALL 04E2 ; Write & Clock
085A LCALL 04E2 ; Write & Clock
085D LJMP 08BB ;
0860 MOV DPH,31 ;
0863 MOV DPL,32 ;
0866 MOV A,#06 ;
0868 LCALL 0DD4 ; DPTR+=06
086B MOVX A,@DPTR ;
086C PUSH ACC ;
086E LCALL 080D ; A = GetCardBit(W(3138)), DPRT=3139
0871 POP ACC ;
0873 PUSH ACC ;
0875 PUSH ACC ;
0877 LCALL 04D6 ; Read Card & Clock
087A POP ACC ;
087C INC A ;
087D JNC 0875 ;
087F PUSH ACC ;
0881 LCALL 04E2 ; Write & Clock
0884 LCALL 04E2 ; Write & Clock
0887 POP ACC ;
0889 MOV B,A ;
088B POP ACC ;
088D CJNE A,#60,08AA ;
0890 MOV A,B ;
0892 PUSH ACC ;
0894 LCALL 04D6 ; Read Card & Clock
0897 POP ACC ;
0899 INC A ;
089A CJNE A,#77,0892 ;
089D PUSH ACC ;
089F LCALL 04E2 ; Write & Clock
08A2 LCALL 04E2 ; Write & Clock
08A5 POP ACC ;
08A7 LJMP 08AC ;
08AA MOV A,B ;
08AC PUSH ACC ;
08AE LCALL 04D6 ; Read Card & Clock
08B1 POP ACC ;
08B3 INC A ;
08B4 CJNE A,#7F,08AC ;
08B7 LCALL 04E2 ; Write & Clock
08BA RET ;

08BB MOV A,#00 ;
08BD MOV B,#90 ;
08C0 LCALL 108F ; (2D)+=2. (3134)=0090
08C3 MOV A,#00 ;
08C5 LCALL 10AA ; (3132)=(2D)+6 (2D)=0 (3133h)=A R2=0 R3=A
08C8 RET ;

08C9 db 0C, 03, 2B, 3B
08CD db 13, 83, AB, BB,
08D1 db 93, CB, EB, FB, DB

08C9 INC R4 ;
08CA RR A ;
08CB ADD A,R3 ;
08CC ADDC A,R3 ;
08CD RRC A ;
08CE MOVC A,@A+PC ;
08CF MOV R3,BB ;
08D1 MOVC A,@A+DPTR ;
08D2 XCH A,R3 ;
08D3 MOV A,R3 ;
08D4 MOV R3,A ;
08D5 DJNZ R3,0897 ;

08D6 PUSH DPH ; (x0109)&=0111.0000 |= 0000.0011 Delay?
08D8 PUSH DPL ;
08DA MOV DPTR,#0109 ;
08DD MOVX A,@DPTR ;
08DE ANL A,#70 ;
08E0 ORL A,#03 ;
08E2 MOVX @DPTR,A ;
08E3 MOV DPTR,#0006 ;
08E6 MOVX @DPTR,A ;
08E7 MOV A,#0A ;
08E9 LCALL 0E6A ; Delay?(A)
08EC POP DPL ;
08EE POP DPH ;
08F0 RET ;

08F1 PUSH DPH ; (x0109)|=0000.0100
08F3 PUSH DPL ;
08F5 MOV DPTR,#0109 ;
08F8 MOVX A,@DPTR ;
08F9 ORL A,#04 ;
08FB MOVX @DPTR,A ;
08FC MOV DPTR,#0006 ;
08FF MOVX @DPTR,A ;
0900 POP DPL ;
0902 POP DPH ;
0904 RET ;

0905 PUSH DPL ; W(23) = 100d, b01=1, (x0108)|=10011000[&
0907 PUSH DPH ;
0909 MOV R0,#00 ; R0 = #00
090B MOV DPTR,#0108 ;
090E MOVX A,@DPTR ;
090F ORL A,#98 ; A =

  
(x0108) | 1001 1000
0911 JB 0D,0916 ;
0914 ANL A,#7F ; b0D
0916 MOVX @DPTR,A ; (x0108) = (x0108)| 10011000 [& 01111111]
0917 MOV DPTR,#0005 ;
091A MOVX @DPTR,A ; (x0005) = x0108
091B MOV 23,#00 ;
091E MOV 24,#64 ; W(23) = 100d
0921 SETB 01 ; b01 = 1
0923 POP DPH ;
0925 POP DPL ;
0927 RET ;

0928 PUSH DPL ;
092A PUSH DPH ;
092C MOV R0,#00 ;
092E MOV DPTR,#0108 ;
0931 MOVX A,@DPTR ;
0932 ANL A,#DF ;
0934 ORL A,#98 ;
0936 JB 0D,093B ;
0939 ANL A,#7F ;
093B MOVX @DPTR,A ;
093C MOV DPTR,#0005 ;
093F MOVX @DPTR,A ;
0940 POP DPH ;
0942 POP DPL ;
0944 RET ;

0945 PUSH DPH ;
0947 PUSH DPL ;
0949 MOV DPTR,#0108 ;
094C MOVX A,@DPTR ;
094D ANL A,#6F ;
094F ORL A,#28 ;
0951 MOVX @DPTR,A ;
0952 MOV DPTR,#0005 ;
0955 MOVX @DPTR,A ;
0956 POP DPL ;
0958 POP DPH ;
095A RET ;

095B PUSH DPL ;
095D PUSH DPH ;
095F JNB 09,096C ;
0962 LJMP 098D ;
0965 CLR 09 ;
0967 INC DPTR ;
0968 PUSH DPL ;
096A PUSH DPH ;
096C MOV DPTR,#0108 ;
096F MOV A,R4 ;
0970 RRC A ;
0971 MOVX A,@DPTR ;
0972 MOV E6,C ;
0974 MOVX @DPTR,A ;
0975 MOV DPTR,#0005 ;
0978 MOVX @DPTR,A ;
0979 MOV A,R3 ;
097A MOV DPTR,#0008 ;
097D MOVX @DPTR,A ;
097E MOV DPTR,#010B ;
0981 MOVX @DPTR,A ;
0982 SETB 02 ;
0984 MOV A,R2 ;
0985 DEC A ;
0986 JNZ 098D ;
0988 POP DPH ;
098A POP DPL ;
098C RET ;

098D POP DPH ;
098F POP DPL ;
0991 MOV A,2B ;
0993 MOV B,A ;
0995 MOVX A,@DPTR ;
0996 MOV C,D0 ;
0998 JNB F7,099C ;
099B CPL C ;
099C RLC A ;
099D MOV R4,A ;
099E RRC A ;
099F JB F4,09A3 ;
09A2 CPL A ;
09A3 MOV R3,A ;
09A4 JB F5,09BF ;
09A7 MOV A,R4 ;
09A8 MOV C,E0 ;
09AA CPL C ;
09AB MOV E0,C ;
09AD MOV R4,A ;
09AE MOV A,R3 ;
09AF MOV B,#00 ;
09B2 MOV R0,#08 ;
09B4 RRC A ;
09B5 XCH A,B ;
09B7 RLC A ;
09B8 XCH A,B ;
09BA DJNZ R0,09B4 ;
09BC XCH A,B ;
09BE MOV R3,A ;
09BF JB 09,0965 ;
09C2 SJMP 098C ;

09C4 CLR AB ; Disable TIRQ #1 (x0108)&=0000 0111
09C6 MOV DPTR,#0108 ;
09C9 MOVX A,@DPTR ;
09CA ANL A,#07 ;
09CC MOVX @DPTR,A ; (x0108)&=0000 0111
09CD MOV DPTR,#0005 ;
09D0 MOVX @DPTR,A ; (x0005)=(x0108)
09D1 RET ;

09D2 SETB IE.3 ; Enable Timer #1 Interrupt
09D4 SETB 0D ;
09D6 MOV 2D,#00 ;
09D9 LCALL 08D6 ; (x0109)&=0111.0000 |= 0000.0011 Delay?
09DC MOV DPH,31 ;
09DF MOV DPL,32 ;
09E2 MOV A,#07 ;
09E4 LCALL 0DD4 ; DPTR = 3139
09E7 LCALL 0905 ; W(23) = 100d, b01=1, (x0108)|=10011000[&
09EA SETB 02 ;
09EC LCALL 08F1 ; (x0109)|=0000.0100
09EF MOV 2B,#3B ;
09F2 LCALL 0B00 ; A=(W(23)!=0), R0 = !R0 o bitinv(R0) o R0
09F5 JZ 0A57 ; W(23) = 00 ?  0A57
09F7 MOV A,R1 ;
09F8 ANL A,#01 ;
09FA JZ 0A00 ;
09FC CLR 0D ;
09FE SJMP 09D6 ;
0A00 MOV A,R0 ;
0A01 MOVX @DPTR,A ;
0A02 PUSH DPH ;
0A04 PUSH DPL ;
0A06 MOV DPTR,#08C9 ;
0A09 LCALL 0DE8 ;
0A0C POP DPL ;
0A0E POP DPH ;
0A10 JZ 0A57 ;
0A12 MOV 2B,R0 ;
0A14 MOV A,R0 ;
0A15 MOVX @DPTR,A ;
0A16 INC DPTR ;
0A17 INC 2D ;
0A19 LCALL 0928 ;
0A1C SETB 02 ;
0A1E LCALL 0B00 ; A=(W(23)!=0), R0 = !R0 o bitinv(R0) o R0
0A21 MOV A,R1 ;
0A22 ANL A,#01 ;
0A24 JNZ 0A1C ;
0A26 MOV A,R0 ;
0A27 MOVX @DPTR,A ;
0A28 INC DPTR ;
0A29 INC 2D ;
0A2B ANL A,#0F ;
0A2D MOV R4,A ;
0A2E MOV A,R0 ;
0A2F MOV R2,#00 ;
0A31 MOV R3,#04 ;
0A33 MOV R5,A ;
0A34 RLC A ;
0A35 JNC 0A38 ;
0A37 INC R2 ;
0A38 DJNZ R3,0A34 ;
0A3A MOV A,R2 ;
0A3B JZ 0A5A ;
0A3D LCALL 0928 ;
0A40 SETB 02 ;
0A42 LCALL 0B00 ; A=(W(23)!=0), R0 = !R0 o bitinv(R0) o R0
0A45 MOV A,R1 ;
0A46 ANL A,#01 ;
0A48 JNZ 0A3D ;
0A4A MOV A,R0 ;
0A4B MOVX @DPTR,A ;
0A4C INC DPTR ;
0A4D INC 2D ;
0A4F DJNZ R2,0A3D ;
0A51 MOV A,R5 ;
0A52 JNB E7,0A5A ;
0A55 SJMP 0A2E ;
0A57 LJMP 0B2A ;
0A5A LCALL 0928 ;
0A5D SETB 02 ;
0A5F LCALL 0B00 ; A=(W(23)!=0), R0 = !R0 o bitinv(R0) o R0
0A62 MOV A,R1 ;
0A63 ANL A,#01 ;
0A65 JNZ 0A5A ;
0A67 MOV A,R0 ;
0A68 MOVX @DPTR,A ;
0A69 INC DPTR ;
0A6A INC 2D ;
0A6C DJNZ R4,0A5A ;
0A6E MOV DPH,31 ;
0A71 MOV DPL,32 ;
0A74 MOV A,#07 ;
0A76 LCALL 0DD4 ; DPTR+=A
0A79 MOVX A,@DPTR ;
0A7A MOV B,A ;
0A7C JB F4,0A80 ;
0A7F CPL A ;
0A80 JB F5,0A92 ;
0A83 MOV B,#00 ;
0A86 MOV R0,#08 ;
0A88 RRC A ;
0A89 XCH A,B ;
0A8B RLC A ;
0A8C XCH A,B ;
0A8E DJNZ R0,0A88 ;
0A90 XCH A,B ;
0A92 MOVX @DPTR,A ;
0A93 INC DPTR ;
0A94 MOV 26,#FA ;
0A97 MOV 29,#00 ;
0A9A MOV 2A,#0A ;
0A9D MOVX A,@DPTR ;
0A9E INC DPTR ;
0A9F CLR C ;
0AA0 RRC A ;
0AA1 RRC A ;
0AA2 RRC A ;
0AA3 RRC A ;
0AA4 RRC A ;
0AA5 JNC 0AA8 ;
0AA7 INC DPTR ;
0AA8 RRC A ;
0AA9 JNC 0AB9 ;
0AAB PUSH ACC ;
0AAD MOVX A,@DPTR ;
0AAE ANL A,#1F ;
0AB0 MOV B,#0A ;
0AB3 MUL AB ;
0AB4 MOV 26,A ;
0AB6 POP ACC ;
0AB8 INC DPTR ;
0AB9 RRC A ;
0ABA JNC 0AC4 ;
0ABC PUSH ACC ;
0ABE MOVX A,@DPTR ;
0ABF INC DPTR ;
0AC0 MOV 29,A ;
0AC2 POP ACC ;
0AC4 RRC A ;
0AC5 JNC 0AEB ;
0AC7 MOVX A,@DPTR ;
0AC8 INC DPTR ;
0AC9 CLR C ;
0ACA RRC A ;
0ACB RRC A ;
0ACC RRC A ;
0ACD RRC A ;
0ACE RRC A ;
0ACF JNC 0AD2 ;
0AD1 INC DPTR ;
0AD2 RRC A ;
0AD3 JNC 0ADD ;
0AD5 PUSH ACC ;
0AD7 MOVX A,@DPTR ;
0AD8 MOV 26,A ;
0ADA INC DPTR ;
0ADB POP ACC ;
0ADD RRC A ;
0ADE JNC 0AE8 ;
0AE0 PUSH ACC ;
0AE2 MOVX A,@DPTR ;
0AE3 MOV 2A,A ;
0AE5 INC DPTR ;
0AE6 POP ACC ;
0AE8 RRC A ;
0AE9 JC 0B2A ;
0AEB MOV A,#00 ;
0AED MOV B,#90 ;
0AF0 LCALL 108F ; (2D)+=2. (3134)=0090
0AF3 MOV A,#05 ;
0AF5 LCALL 10AA ; (3132)=(2D)+6 (2D)=0 (3133h)=A R2=0 R3=A
0AF8 MOV A,#01 ;
0AFA MOV 2F,A ;
0AFC LCALL 09C4 ; Disable TIRQ #1 (x0108)&=0000 0111
0AFF RET ;

; Subrutine.
; W(23) == 0? => A = #00
; W(23) != 0 =>
; Wait until (IRQ #0) or W(23) == 0
; W(23) == 0 => A = #00
; (bF5 == 1) & (bF4 == 0) => R0 = !R0, A = #FF
; (bF5 == 0) => R0=bits-inverted(R0), A = #FF
; (bF5 == 1) & (bF4 == 1) => A = #FF


0B00 MOV A,23 ; Si W(23) = 0 Return
0B02 JNZ 0B08 ;
0B04 MOV A,24 ;
0B06 JZ 0B29 ; ?  RET
0B08 JB 02,0B00 ; Espera que se apague el bit 2 (IRQ #0) 
0B0B MOV A,R0 ;
0B0C MOV B,2B ;
0B0F JB F4,0B14 ; Si bF5==1 y bF4==0 => R0=!R0, A=#FF
0B12 CPL A ;
0B13 MOV R0,A ;
0B14 JB F5,0B27 ;
0B17 MOV B,#00 ; Si bF5==0 => R0=bits-inverted(R0), A=FF
0B1A MOV R0,#08 ;
0B1C RRC A ;
0B1D XCH A,B ;
0B1F RLC A ;
0B20 XCH A,B ;
0B22 DJNZ R0,0B1C ;
0B24 XCH A,B ;
0B26 MOV R0,A ;
0B27 MOV A,#FF ; A = FF
0B29 RET ;

0B2A JNB 96,0B36 ; P1.6 == 0 ?  0B36
0B2D MOV A,#02 ;
0B2F LCALL 10AA ; (3132)=(2D)+6 (2D)=0 (3133h)=02 R2=0 R3=02
0B32 LCALL 09C4 ; Disable TIRQ #1 (x0108)&=0000 0111
0B35 RET ;

0B36 MOV 2D,#00 ; (2D) = 00
0B39 MOV A,#F7 ;
0B3B LCALL 10AA ; (3132)=06 (2D)=0 (3133h)=F7 R2=0 R3=F7
0B3E LCALL 09C4 ; Disable TIRQ #1 (x0108)&=0000 0111
0B41 RET ;

0B42 JNB 96,0B36 ; P1.6 = 0 ?  0B36
0B45 MOV A,#02 ;
0B47 MOV B,#90 ;
0B4A LCALL 108F ; (2D)+=2. (3134)=0290
0B4D MOV A,#A2 ;
0B4F LCALL 10AA ; (3132)=(2D)+6 (2D)=0 (3133h)=A2 R2=0 R3=A2
0B52 LCALL 09C4 ; Disable TIRQ #1 (x0108)&=0000 0111
0B55 RET ;

0B56 MOV 2D,#00 ;
0B59 MOV A,#CC ;
0B5B LCALL 10AA ; (3132)=06 (2D)=00 (3133h)=CC R2=0 R3=CC
0B5E LCALL 09C4 ; Disable TIRQ #1 (x0108)&=0000 0111
0B61 RET ;

0B62 SETB IE.3 ; Enable Timer #1 Interrupt
0B64 MOV A,26 ;
0B66 CJNE A,#D2,0B73 ;
0B69 MOV DPTR,#0010 ;
0B6C MOVX A,@DPTR ;
0B6D JB E1,0B73 ;
0B70 LJMP 0B56 ;
0B73 MOV DPH,31 ;
0B76 MOV DPL,32 ;
0B79 MOV A,#02 ;
0B7B LCALL 0DD4 ; DPTR+=A
0B7E MOV 2D,#00 ;
0B81 MOV R2,#05 ;
0B83 MOV R5,#03 ;
0B85 LCALL 0945 ;
0B88 SETB 09 ;
0B8A LCALL 0D89 ;
0B8D LCALL 095B ;
0B90 INC DPTR ;
0B91 JB 02,0B91 ;
0B94 MOV A,R1 ;
0B95 ANL A,#08 ;
0B97 JZ 0BAB ;
0B99 JB 96,0B9F ; IRQ #1 Input = 1 ?  0B9F
0B9C LJMP 0B36 ;
0B9F DJNZ R5,0BA4 ;
0BA1 LJMP 0B42 ;
0BA4 LCALL 0DDF ;
0BA7 LCALL 0DDF ;
0BAA INC R2 ;
0BAB DJNZ R2,0B8A ;
0BAD MOV A,2A ;
0BAF JZ 0BBC ;
0BB1 MOV B,#0A ;
0BB4 MUL AB ;
0BB5 MOV 24,A ;
0BB7 MOV 23,B ;
0BBA SJMP 0BC5 ;
0BBC LCALL 0D89 ;
0BBF MOV 24,#01 ;
0BC2 MOV 23,#00 ;
0BC5 LCALL 0928 ;
0BC8 SETB 02 ;
0BCA LCALL 0B00 ; A=(W(23)!=0), R0 = !R0 o bitinv(R0) o R0
0BCD JNZ 0BD2 ;
0BCF LJMP 0B42 ;
0BD2 MOV A,R1 ;
0BD3 ANL A,#01 ;
0BD5 JNZ 0BC5 ;
0BD7 MOV A,R0 ;
0BD8 ANL A,#F0 ;
0BDA CJNE A,#60,0BE5 ;
0BDD MOV A,R0 ;
0BDE ANL A,#0F ;
0BE0 JZ 0BAD ;
0BE2 LJMP 0D62 ;
0BE5 CJNE A,#90,0BEB ;
0BE8 LJMP 0D62 ;
0BEB MOV DPH,31 ;
0BEE MOV DPL,32 ;
0BF1 MOV A,#03 ;
0BF3 LCALL 0DD4 ; DPTR+=A
0BF6 MOVX A,@DPTR ;
0BF7 XCH A,R0 ;
0BF8 MOV B,A ;
0BFA ANL A,#FE ;
0BFC CJNE A,18,0C0E ;
0BFF MOV A,B ;
0C01 SETB 06 ;
0C03 JB E0,0C1A ;
0C06 CLR AA ; Disable IRQ #1
0C08 LCALL 0FDE ;
0C0B LJMP 0C1A ;
0C0E MOV A,B ;
0C10 CLR 06 ;
0C12 JNB E0,0C1A ;
0C15 CLR AA ; Disable IRQ #1
0C17 LCALL 0FDE ;
0C1A MOV DPH,31 ;
0C1D MOV DPL,32 ;
0C20 MOV A,#06 ;
0C22 LCALL 0DD4 ; DPTR+=A
0C25 MOV R5,#03 ;
0C27 MOVX A,@DPTR ;
0C28 MOV R2,A ;
0C29 CJNE R2,#00,0C2E ;
0C2C SJMP 0BC5 ;
0C2E INC DPTR ;
0C2F SETB 09 ;
0C31 JNB 06,0C62 ;
0C34 LCALL 0945 ;
0C37 LCALL 0D89 ;
0C3A LCALL 095B ;
0C3D INC DPTR ;
0C3E JB 02,0C3E ;
0C41 MOV A,R1 ;
0C42 ANL A,#08 ;
0C44 JZ 0C5A ;
0C46 JB 96,0C4C ; IRQ #1 Input = 1 ?  0C4C
0C49 LJMP 0B36 ;
0C4C DJNZ R5,0C51 ;
0C4E LJMP 0B42 ;
0C51 LCALL 0DDF ;
0C54 LCALL 0DDF ;
0C57 INC R2 ;
0C58 SETB 09 ;
0C5A DJNZ R2,0C37 ;
0C5C LJMP 0BAD ;
0C5F LJMP 0B42 ;
0C62 MOV A,2D ;
0C64 LCALL 0DD4 ; DPTR+=A
0C67 LCALL 0945 ;
0C6A LCALL 0D89 ;
0C6D LCALL 095B ;
0C70 JB 02,0C70 ;
0C73 MOV A,R1 ;
0C74 ANL A,#08 ;
0C76 JZ 0C7A ;
0C78 SJMP 0C62 ;
0C7A INC 2D ;
0C7C LJMP 0BAD ;
0C7F SETB IE.3 ; Enable Timer #1 Interrupt
0C81 MOV DPH,31 ;
0C84 MOV DPL,32 ;
0C87 MOV A,#02 ;
0C89 LCALL 0DD4 ; DPTR+=A
0C8C MOV 2D,#00 ;
0C8F MOV R2,#05 ;
0C91 MOV R5,#03 ;
0C93 LCALL 0945 ;
0C96 SETB 09 ;
0C98 LCALL 0D89 ;
0C9B LCALL 095B ;
0C9E INC DPTR ;
0C9F JB 02,0C9F ;
0CA2 MOV A,R1 ;
0CA3 ANL A,#08 ;
0CA5 JZ 0CBB ;
0CA7 JB 96,0CAD ; IRQ #1 Input = 1 ?  0CAD
0CAA LJMP 0B36 ;
0CAD DJNZ R5,0CB2 ;
0CAF LJMP 0B42 ;
0CB2 LCALL 0DDF ;
0CB5 LCALL 0DDF ;
0CB8 INC R2 ;
0CB9 SETB 09 ;
0CBB DJNZ R2,0C98 ;
0CBD MOV A,2A ;
0CBF JZ 0CCC ;
0CC1 MOV B,#0A ;
0CC4 MUL AB ;
0CC5 MOV 24,A ;
0CC7 MOV 23,B ;
0CCA SJMP 0CD5 ;
0CCC LCALL 0D89 ;
0CCF MOV 24,#01 ;
0CD2 MOV 23,#00 ;
0CD5 LCALL 0928 ;
0CD8 SETB 02 ;
0CDA LCALL 0B00 ; A=(W(23)!=0), R0 = !R0 o bitinv(R0) o R0
0CDD JZ 0C5F ;
0CDF MOV A,R1 ;
0CE0 ANL A,#01 ;
0CE2 JNZ 0CD5 ;
0CE4 MOV A,R0 ;
0CE5 ANL A,#F0 ;
0CE7 CJNE A,#60,0CF2 ;
0CEA MOV A,R0 ;
0CEB ANL A,#0F ;
0CED JZ 0CBD ;
0CEF LJMP 0D62 ;
0CF2 CJNE A,#90,0CF8 ;
0CF5 LJMP 0D62 ;
0CF8 MOV DPH,31 ;
0CFB MOV DPL,32 ;
0CFE MOV A,#03 ;
0D00 LCALL 0DD4 ; DPTR+=A
0D03 MOVX A,@DPTR ;
0D04 XCH A,R0 ;
0D05 ANL A,#FE ;
0D07 JNB E0,0D15 ;
0D0A PUSH ACC ;
0D0C CLR IE.2 ; Disable IRQ #1
0D0E LCALL 0FC9 ;
0D11 SETB IE.2 ; Enable IRQ #1
0D13 POP ACC ;
0D15 CJNE A,18,0D1D ;
0D18 SETB 06 ;
0D1A LJMP 0D1F ;
0D1D CLR 06 ;
0D1F MOV DPH,31 ;
0D22 MOV DPL,32 ;
0D25 MOV A,#06 ;
0D27 LCALL 0DD4 ; DPTR+=A
0D2A MOVX A,@DPTR ;
0D2B MOV R2,A ;
0D2C INC DPTR ;
0D2D JZ 0CD5 ;
0D2F JNB 06,0D4A ;
0D32 SETB 02 ;
0D34 LCALL 0B00 ; A=(W(23)!=0), R0 = !R0 o bitinv(R0) o R0
0D37 JZ 0D47 ;
0D39 MOV A,R1 ;
0D3A ANL A,#01 ;
0D3C JNZ 0D32 ;
0D3E MOV A,R0 ;
0D3F MOVX @DPTR,A ;
0D40 INC DPTR ;
0D41 INC 2D ;
0D43 DJNZ R2,0D32 ;
0D45 SJMP 0CD5 ;
0D47 LJMP 0B42 ;
0D4A MOV A,2D ;
0D4C LCALL 0DD4 ; DPTR+=2D
0D4F SETB 02 ;
0D51 LCALL 0B00 ; A=(W(23)!=0), R0 = !R0 o bitinv(R0) o R0
0D54 JZ 0D47 ;
0D56 MOV A,R1 ;
0D57 ANL A,#01 ;
0D59 JNZ 0D4A ;
0D5B MOV A,R0 ;
0D5C MOVX @DPTR,A ;
0D5D INC 2D ;
0D5F LJMP 0CD5 ;
0D62 PUSH 18 ;
0D64 LCALL 0928 ;
0D67 SETB 02 ;
0D69 LCALL 0B00 ; A=(W(23)!=0), R0 = !R0 o bitinv(R0) o R0
0D6C JNZ 0D75 ;
0D6E POP B ;
0D70 LCALL 09C4 ; Disable TIRQ #1 (x0108)&=0000 0111
0D73 SJMP 0D47 ;
0D75 MOV A,R1 ;
0D76 ANL A,#01 ;
0D78 JNZ 0D64 ;
0D7A MOV A,R0 ;
0D7B POP B ;
0D7D LCALL 108F ; (2D)+=2. (3134)=B (3135)=A
0D80 MOV A,#00 ;
0D82 LCALL 10AA ; (3132)=(2D)+6 (2D)=0 (3133h)=A R2=0 R3=A
0D85 LCALL 09C4 ; Disable TIRQ #1 (x0108)&=0000 0111
0D88 RET ;

0D89 MOV A,#01 ;
0D8B LCALL 0E6A ; Delay(A)
0D8E MOV A,29 ;
0D90 JZ 0DA1 ;
0D92 PUSH B ;
0D94 MOV B,#03 ;
0D97 DIV AB ;
0D98 JNZ 0D9C ;
0D9A MOV A,#01 ;
0D9C LCALL 0E6A ; Delay(A)
0D9F POP B ;
0DA1 RET ;

0DA2 PUSH PSW ;
0DA4 MOV 02,#00 ; R2=0
0DA7 MOV 03,#00 ; R3=0
0DAA MOV C,96 ;
0DAC JNC 0DB1 ;
0DAE MOV 03,#01 ; R3=1
0DB1 POP PSW ;
0DB3 RET ;

0DB4 MOV A,R4 ;
0DB5 MOV B,R6 ;
0DB7 CJNE A,B,0DC1 ;
0DBA MOV A,R5 ;
0DBB MOV B,R7 ;
0DBD CJNE A,B,0DC1 ;
0DC0 CLR C ;
0DC1 RET ;

0DC2 PUSH DPH ;
0DC4 PUSH DPL ;
0DC6 MOV DPH,R6 ;
0DC8 MOV DPL,R7 ;
0DCA INC DPTR ;
0DCB MOV R6,DPH ;
0DCD MOV R7,DPL ;
0DCF POP DPL ;
0DD1 POP DPH ;
0DD3 RET ;

0DD4 ADD A,DPL ; DPTR+=A DPTR+=A
0DD6 MOV DPL,A ;
0DD8 MOV A,DPH ;
0DDA ADDC A,#00 ;
0DDC MOV DPH,A ;
0DDE RET ;

0DDF MOV A,DPL ;
0DE1 DEC DPL ;
0DE3 JNZ 0DE7 ;
0DE5 DEC DPH ;
0DE7 RET ;

0DE8 MOV 18,A ;
0DEA CLR A ;
0DEB MOVC A,@A+DPTR ;
0DEC PUSH ACC ;
0DEE MOVC A,@A+DPTR ;
0DEF CJNE A,18,0DF5 ;
0DF2 POP ACC ;
0DF4 RET ;

0DF5 POP ACC ;
0DF7 DJNZ ACC,0DEC ;
0DFA RET ;

0DFB MOV DPH,R2 ;
0DFD MOV DPL,R3 ;
0DFF PUSH DPH ;
0E01 PUSH DPL ;
0E03 LCALL 023D ; R2=(R6R7) R3=(R6R7+1) R6R7+=2
0E06 POP DPL ;
0E08 POP DPH ;
0E0A MOV A,DPH ;
0E0C MOV C,E7 ;
0E0E MOV A,R3 ;
0E0F LCALL 0E26 ; (x0000)=R3,(xDPTR)=R3,Delay(3A)
0E12 JC 0E18 ;
0E14 MOVX A,@DPTR ;
0E15 LJMP 0E1A ;
0E18 CLR A ;
0E19 MOVC A,@A+DPTR ;
0E1A CJNE A,03,0E21 ;
0E1D MOV R3,#00 ;
0E1F SJMP 0E23 ;
0E21 MOV R3,#01 ;
0E23 MOV R2,#00 ;
0E25 RET ;

0E26 CLR IE.7 ; Disable Timer #1 Interrupt
0E28 PUSH DPH ; (x0000)=A,(xDPTR)=A,Delay(3A)
0E2A PUSH DPL ;
0E2C MOV DPTR,#0000 ;
0E2F MOVX @DPTR,A ;
0E30 POP DPL ;
0E32 POP DPH ;
0E34 MOVX @DPTR,A ;
0E35 PUSH ACC ;
0E37 MOV A,#3A ;
0E39 DEC A ;
0E3A JNZ 0E39 ;
0E3C POP ACC ;
0E3E SETB IE.7 ; Enable Global Interrupt
0E40 RET ;

0E41 LCALL 1062 ;
0E44 ORL PCON,#02 ;
0E47 SJMP 0E44 ;

0E49 PUSH PSW ; Delay (98*(A+100d*B))
0E4B ORL PSW,#18 ;
0E4E PUSH 19 ; R1\
0E50 JZ 0E5C ;
0E52 MOV R1,A ;
0E53 MOV A,#62 ;
0E55 DEC A ;
0E56 CJNE A,#00,0E55 ;
0E59 NOP ;
0E5A DJNZ R1,0E53 ; Delay 62*A
0E5C MOV A,#64 ;
0E5E DEC B ;
0E60 MOV R1,B ;
0E62 CJNE R1,#FF,0E52 ; Delay 62*64*B
0E65 POP 19 ; R1\
0E67 POP PSW ;
0E69 RET ;
; Subrutine
; Input:
; A
; B
; Output:

0E6A SETB D3 ;
0E6C SETB D4 ; Select Register's Bank 0011
0E6E PUSH 19 ; 11.R0
0E70 MOV R1,A ; R1 = A
0E71 PUSH 18 ; 11.R1
0E73 MOV R0,#0A ; R0 = 0A
0E75 PUSH ACC ;
0E77 PUSH B ;
0E79 DIV AB ; A=A div B B=A mod B
0E7A MUL AB ; BA=(A div B)*(A mod B)
0E7B NOP ;
0E7C POP B ;
0E7E POP ACC ;
0E80 DJNZ R0,0E75 ;
0E82 POP 18 ;
0E84 NOP ;
0E85 DJNZ R1,0E71 ;
0E87 POP 19 ;
0E89 RET ;

0E8A PUSH PSW ;
0E8C PUSH ACC ;
0E8E SETB P1.0 ;
0E90 CLR P1.1 ;
0E92 CLR P1.2 ; P1=xxxx x001
0E94 PUSH 19 ;
0E96 MOV R1,#FF ;
0E98 MOV A,#14 ;
0E9A DEC A ;
0E9B CJNE A,#00,0E9A ;
0E9E DJNZ R1,0E98 ; Delay de 20*255 ciclos
0EA0 POP 19 ;
0EA2 MOV DPTR,#010D ;
0EA5 MOVX A,@DPTR ;
0EA6 ORL A,#08 ;
0EA8 MOVX @DPTR,A ; (x010D)|=00001000
0EA9 MOV DPTR,#0010 ;
0EAC MOVX @DPTR,A ; (x0010)=(x010D)
0EAD SETB P1.5 ; P1=xx1x xxxx
0EAF POP ACC ;
0EB1 POP PSW ;
0EB3 RET ;

0EB4 PUSH PSW ;
0EB6 PUSH ACC ;
0EB8 CLR P1.0 ;
0EBA CLR P1.1 ;
0EBC CLR P1.2 ; P1=xxxxx000
0EBE MOV DPTR,#010D ;
0EC1 MOVX A,@DPTR ;
0EC2 ANL A,#F7 ;
0EC4 MOVX @DPTR,A ; (x010D)&=11110111
0EC5 MOV DPTR,#0010 ;
0EC8 MOVX @DPTR,A ; (x0010)=(x010D)
0EC9 POP ACC ;
0ECB POP PSW ;
0ECD RET ;

0ECE PUSH PSW ;
0ED0 PUSH ACC ;
0ED2 MOV A,P1 ;
0ED4 ORL A,P1 ;
0ED6 ANL A,P1 ;
0ED8 PUSH ACC ;
0EDA SETB P1.0 ;
0EDC CLR P1.1 ;
0EDE CLR P1.2 ; P1=xxxxx001
0EE0 MOV DPTR,#010D ;
0EE3 MOVX A,@DPTR ;
0EE4 ORL A,#08 ;
0EE6 MOV DPTR,#0010 ;
0EE9 MOVX @DPTR,A ;
0EEA CLR P1.5 ;
0EEC PUSH 19 ;
0EEE MOV R1,#FF ;
0EF0 MOV A,#14 ;
0EF2 DEC A ;
0EF3 CJNE A,#00,0EF2 ;
0EF6 DJNZ R1,0EF0 ; Delay de 20*255 ciclos
0EF8 POP 19 ;
0EFA MOV DPTR,#0010 ;
0EFD MOVX A,@DPTR ;
0EFE ANL A,#01 ;
0F00 MOV 02,#00 ;
0F03 MOV 03,#00 ;
0F06 JNZ 0F0B ;
0F08 MOV 03,#01 ;
0F0B CLR P1.0 ;
0F0D CLR P1.1 ;
0F0F CLR P1.2 ; P1=xxxxx000
0F11 MOV DPTR,#010D ;
0F14 MOVX A,@DPTR ;
0F15 MOV DPTR,#0010 ;
0F18 MOVX @DPTR,A ;
0F19 POP ACC ;
0F1B ORL P1,A ;
0F1D ANL P1,A ; (P1)=A
0F1F POP ACC ;
0F21 POP PSW ;
0F23 RET ;

0F24 PUSH PSW ;
0F26 MOV DPTR,#010D ;
0F29 MOVX A,@DPTR ;
0F2A ORL A,#02 ;
0F2C MOVX @DPTR,A ;
0F2D MOV DPTR,#0010 ;
0F30 MOVX @DPTR,A ;
0F31 POP PSW ;
0F33 RET ;

0F34 PUSH PSW ;
0F36 MOV DPTR,#010D ;
0F39 MOVX A,@DPTR ;
0F3A ANL A,#FD ;
0F3C MOVX @DPTR,A ;
0F3D MOV DPTR,#0010 ;
0F40 MOVX @DPTR,A ;
0F41 POP PSW ;
0F43 RET ;

; IRQ #0
;
0F44 PUSH PSW ;
0F46 PUSH ACC ;
0F48 PUSH DPH ;
0F4A PUSH DPL ;
0F4C PUSH B ;
0F4E MOV DPTR,#0005 ;
0F51 MOVX A,@DPTR ; A = (x0005)
0F52 MOV B,A ; B = (x0005)
0F54 ANL A,#30 ; A&=0011 0000
0F56 JZ 0F6B ; Si no estaban prendidos 0011 0000  0F6B
0F58 ANL A,#10 ;
0F5A JZ 0F62 ; si solo estaba prendido 0010 0000  0F62
0F5C MOV DPTR,#0008 ; Si (x0005).4 esta prendido =>
0F5F MOVX A,@DPTR ; 18=(x0008)
0F60 MOV 18,A ; Si (x0005).4 no esta prendido =>
0F62 MOV A,B ; 18=(x0005)
0F64 MOV 19,A ; 19=(x0005)
0F66 CLR 02 ; 0.2=0
0F68 LJMP 0FBE ; IRET
0F6B CLR D3 ; Si no estan prendidos ni x5.4 ni x5.5
0F6D SETB D4 ; Select Register's Bank 0010
0F6F PUSH 0B ; R1
0F71 PUSH 0D ; R3
0F73 MOV DPTR,#0003 ;
0F76 MOVX A,@DPTR ; A=(x0003)
0F77 MOV DPTR,#010E ;
0F7A MOVX @DPTR,A ; (x010E)=(x0003)
0F7B MOV B,A ; B=(0x0003)
0F7D MOV DPTR,#0001 ;
0F80 MOVX A,@DPTR ; A=(x0001)
0F81 MOV DPTR,#0106 ;
0F84 MOVX @DPTR,A ; (x0106)=(x0001)
0F85 MOV R3,A ; R3=(x0001)
0F86 JNB F0,0FB8 ;
0F89 MOV A,B ; A=(x0003)
0F8B ANL A,#50 ; A&=0101 0000
0F8D JZ 0F91 ;
0F8F SETB 0A ; Si estan prendidos x3.4 o x3.6 =>b.0A=1
0F91 MOV A,B ;
0F93 ANL A,#0A ;
0F95 JNZ 0FBA ;
0F97 MOV DPTR,#0102 ; Si estan prendidos x4.5 o x3.7
0F9A MOVX A,@DPTR ;
0F9B MOV R1,A ;
0F9C MOV DPTR,#0103 ;
0F9F MOVX A,@DPTR ;
0FA0 MOV DPL,A ;
0FA2 MOV DPH,R1 ; DPTR=W(x0102) $C110
0FA4 CLR F0 ; b.F0 = 0
0FA6 MOV A,B ;
0FA8 MOVX @DPTR,A ; (W(x0102)) = (x0003)
0FA9 INC DPTR ; DPTR=W(x0102)+1
0FAA MOVX A,@DPTR ;
0FAB MOV R1,A ; R1=(W(x0102)+1)
0FAC INC A ;
0FAD MOVX @DPTR,A ; (W(x0102)+1)++
0FAE MOV A,#02 ;
0FB0 ADD A,R1 ;
0FB1 LCALL 0DD4 ; DPTR+=02
0FB4 MOV A,R3 ;
0FB5 MOVX @DPTR,A ;
0FB6 SJMP 0FBA ;
0FB8 SETB 0A ;
0FBA POP 0D ;
0FBC POP 0B ;
0FBE POP B ;
0FC0 POP DPL ;
0FC2 POP DPH ;
0FC4 POP ACC ;
0FC6 POP PSW ;
0FC8 RETI ;

0FC9 CLR P1.3 ; P1 = xxxx0xxx
0FCB JB 0B,0FD1 ;
0FCE LCALL 1004 ; P1 = xxxxx010,Del,xxxxxx01,Del,xxxxxx1x,Del
0FD1 MOV A,26 ;
0FD3 LCALL 0FED ; (x0004),(x0107)=A-Dh,(x0109),(x0006)!=10
0FD6 MOV B,#01 ;
0FD9 CLR A ;
0FDA LCALL 0E49 ; Delay (1s)
0FDD RET ;

0FDE CLR AA ; Disable IRQ #1
0FE0 MOV A,#32 ;
0FE2 LCALL 0FED ; (x0004),(x0107)=A-Dh,(x0109),(x0006)!=10
0FE5 SETB P1.3 ; P1=xxxx1xxx
0FE7 MOV A,#01 ;
0FE9 LCALL 0E6A ; Delay(1)
0FEC RET ;

0FED CLR C ; (x0004),(x0107)=A-Dh,(x0109),(x0006)!=10
0FEE SUBB A,#0D ;
0FF0 MOV DPTR,#0004 ;
0FF3 MOVX @DPTR,A ;
0FF4 MOV DPTR,#0107 ;
0FF7 MOVX @DPTR,A ;
0FF8 MOV DPTR,#0109 ;
0FFB MOVX A,@DPTR ; (x0009) |= 0001.0000
0FFC ORL A,#10 ;
0FFE MOVX @DPTR,A ;
0FFF MOV DPTR,#0006 ; (x0006) |= 0001.0000
1002 MOVX @DPTR,A ;
1003 RET ;

1004 CLR P1.2 ;
1006 SETB P1.1 ;
1008 CLR P1.0 ; P1=xxxxx010
100A MOV B,#00 ;
100D MOV A,#24 ;
100F LCALL 0E49 ; Delay (0.36s)
1012 CLR P1.1 ;
1014 SETB P1.0 ; P1=xxxxxx01
1016 MOV B,#00 ;
1019 MOV A,#3C ;
101B LCALL 0E49 ; Delay (0.60s)
101E SETB P1.1 ; P1=xxxxxx1x
1020 MOV B,#00 ;
1023 MOV A,#2D ;
1025 LCALL 0E49 ; Delay (0.45s)
1028 SETB 0B ;
102A RET ;

102B CLR P1.0 ; (P1.0)=0 (P1.1)=0 (P1.2)=0 (21h.7)=0
102D CLR P1.1 ;
102F CLR P1.2 ;
1031 CLR 21.7 ;
1033 RET ;

1034 LCALL 102B ; P1=xxxxx000 (21h.7)=0
1037 MOV A,#00 ;
1039 MOV DPTR,#0004 ;
103C MOVX @DPTR,A ; (x0104)=0
103D MOV DPTR,#0107 ;
1040 MOVX @DPTR,A ; (x0107)=0
1041 MOV DPTR,#0109 ;
1044 MOVX A,@DPTR ; (x0109)=0
1045 ORL A,#20 ;
1047 MOVX @DPTR,A ; (x0109)=0010.0000
1048 MOV DPTR,#0006 ;
104B MOVX @DPTR,A ; (x0006)=0010.0000
104C MOV A,#01 ;
104E LCALL 0E6A ; Delay(1)
1051 LCALL 0FDE ;
1054 MOV B,#00 ;
1057 MOV A,#02 ;
1059 LCALL 0E49 ; Delay (0.02s)
105C MOV A,#01 ;
105E LCALL 0E6A ; Delay(1)
1061 RET ;

1062 CLR AA ; Disable IRQ #1
1064 MOV DPTR,#0109 ;
1067 MOVX A,@DPTR ;
1068 ANL A,#EF ;
106A MOVX @DPTR,A ; (x0109)&=11101111b
106B MOV DPTR,#0006 ;
106E MOVX @DPTR,A ; (x0006)=(x0109)
106F LCALL 102B ; (P1.0)=0 (P1.1)=0 (P1.2)=0 (21h.7)=0
1072 MOV A,#00 ;
1074 MOV DPTR,#0004 ;
1077 MOVX @DPTR,A ; (x0004)=00
1078 MOV DPTR,#0107 ;
107B MOVX @DPTR,A ; (x0107)=00
107C MOV A,#01 ; A=01
107E LCALL 0E6A ; Delay(1)
1081 CLR A ;
1082 MOV DPTR,#0109 ;
1085 MOVX @DPTR,A ; (x0109)=00
1086 MOV DPTR,#0006 ;
1089 MOVX @DPTR,A ; (x0006)=00
108A CLR P1.3 ; P1.3=0
108C CLR P1.4 ; P1.4=0
108E RET ;

108F MOV DPH,31 ; (2D)+=2. (3134)=B (3135)=A
1092 MOV DPL,32 ;
1095 PUSH ACC ;
1097 MOV A,#02 ;
1099 LCALL 0DD4 ; DPTR+=02
109C MOV A,B ;
109E MOVX @DPTR,A ;
109F INC DPTR ;
10A0 POP ACC ;
10A2 MOVX @DPTR,A ;
10A3 MOV A,2D ;
10A5 INC A ;
10A6 INC A ;
10A7 MOV 2D,A ;
10A9 RET ;

10AA MOV DPH,31 ; (x3132)=(2D)+6 (2D)=0 (x3133)=A R2=0 R3=A
10AD MOV DPL,32 ;
10B0 PUSH ACC ;
10B2 MOV A,2D ;
10B4 ADD A,#06 ;
10B6 MOV 2D,#00 ; (2D)=00
10B9 MOVX @DPTR,A ; (x3132)=(2D)+06
10BA MOV A,#01 ;
10BC LCALL 0DD4 ; DPTR+=01
10BF POP ACC ;
10C1 MOVX @DPTR,A ; (x3133)=A
10C2 MOV 02,#00 ;
10C5 MOV 03,A ;
10C7 RET ;

10C8 PUSH PSW ;
10CA PUSH ACC ;
10CC PUSH DPH ;
10CE PUSH DPL ;
10D0 SETB D3 ; Select Register's Bank 0011
10D2 SETB D4 ;
10D4 CLR A ;
10D5 MOV R0,A ;
10D6 MOV R1,A ;
10D7 MOV R2,A ;
10D8 MOV R3,#10 ;
10DA MOV DPH,A ;
10DC MOV DPL,A ;
10DE LCALL 1196 ;
10E1 CLR A ;
10E2 MOV R2,A ;
10E3 MOV R3,#08 ;
10E5 MOV DPTR,#0030 ;
10E8 LCALL 1196 ;
10EB CLR A ;
10EC XCH A,R3 ;
10ED SUBB A,#4E ;
10EF RRC A ;
10F0 MOV R3,A ;
10F1 MOV R2,#3F ;
10F3 MOV DPTR,#004E ;
10F6 LCALL 1196 ;
10F9 MOV DPTR,#0047 ;
10FC CLR A ;
10FD MOVC A,@A+DPTR ;
10FE XRL A,R0 ;
10FF JNZ 114E ;
1101 INC DPTR ;
1102 CLR A ;
1103 MOVC A,@A+DPTR ;
1104 XRL A,R1 ;
1105 JNZ 114E ;
1107 PUSH 18 ;
1109 PUSH 19 ;
110B MOV R0,A ;
110C MOV R1,A ;
110D MOV R2,#40 ;
110F MOV R3,#00 ;
1111 MOV DPH,#80 ;
1114 MOV DPL,A ;
1116 LCALL 1196 ;
1119 MOV DPTR,#004A ;
111C CLR A ;
111D MOVC A,@A+DPTR ;
111E XRL A,R0 ;
111F JNZ 114E ;
1121 INC DPTR ;
1122 CLR A ;
1123 MOVC A,@A+DPTR ;
1124 XRL A,R1 ;
1125 JNZ 114E ;
1127 POP 1B ;
1129 POP 1A ;
112B MOV A,R2 ;
112C XRL A,R0 ;
112D MOV R0,A ;
112E MOV A,R3 ;
112F XRL A,R1 ;
1130 MOV R1,A ;
1131 CLR A ;
1132 PUSH ACC ;
1134 LCALL 116A ;
1137 MOV A,R0 ;
1138 MOVX @DPTR,A ;
1139 INC DPTR ;
113A MOV A,R1 ;
113B MOVX @DPTR,A ;
113C INC DPTR ;
113D POP ACC ;
113F MOVX @DPTR,A ;
1140 MOV 03,A ;
1142 CLR A ;
1143 MOV 02,A ;
1145 POP DPL ;
1147 POP DPH ;
1149 POP ACC ;
114B POP PSW ;
114D RET ;

114E MOV DPTR,#0047 ;
1151 CLR A ;
1152 MOVC A,@A+DPTR ;
1153 MOV R0,A ;
1154 INC DPTR ;
1155 CLR A ;
1156 MOVC A,@A+DPTR ;
1157 MOV R1,A ;
1158 MOV DPTR,#004A ;
115B CLR A ;
115C MOVC A,@A+DPTR ;
115D XRL A,R0 ;
115E MOV R0,A ;
115F INC DPTR ;
1160 CLR A ;
1161 MOVC A,@A+DPTR ;
1162 XRL A,R1 ;
1163 MOV R1,A ;
1164 MOV A,#01 ;
1166 PUSH ACC ;
1168 SJMP 1134 ;
116A MOV DPTR,#0042 ;
116D MOV R3,#04 ;
116F CLR A ;
1170 MOVC A,@A+DPTR ;
1171 PUSH ACC ;
1173 INC DPTR ;
1174 DJNZ R3,116F ;
1176 MOV A,03 ;
1178 ADD A,#03 ;
117A MOV R5,A ;
117B MOV DPL,A ;
117D MOV A,02 ;
117F ADDC A,#00 ;
1181 MOV R4,A ;
1182 MOV DPH,A ;
1184 MOV R3,#04 ;
1186 POP ACC ;
1188 MOVX @DPTR,A ;
1189 LCALL 0DDF ;
118C DJNZ R3,1186 ;
118E MOV A,R5 ;
118F MOV DPL,A ;
1191 MOV A,R4 ;
1192 MOV DPH,A ;
1194 INC DPTR ;
1195 RET ;

1196 CLR A ;
1197 MOVC A,@A+DPTR ;
1198 XRL A,R0 ;
1199 MOV R0,A ;
119A INC DPTR ;
119B CLR A ;
119C MOVC A,@A+DPTR ;
119D XRL A,R1 ;
119E MOV R1,A ;
119F INC DPTR ;
11A0 LCALL 11A6 ;
11A3 JNZ 1196 ;
11A5 RET ;

11A6 MOV A,R3 ;
11A7 JNZ 11B0 ;
11A9 MOV R3,#FF ;
11AB MOV A,R2 ;
11AC DEC A ;
11AD MOV R2,A ;
11AE ORL A,R3 ;
11AF RET ;

11B0 DEC A ;
11B1 MOV R3,A ;
11B2 ORL A,R2 ;
11B3 RET ;

; Subrutine
; Input:
; R2R3 Puntero = $10C1

11B4 PUSH PSW ;
11B6 CLR IE.0 ; Disable IRQ #0
11B8 MOV DPTR,#0108 ;
11BB MOVX A,@DPTR ;
11BC ORL A,#01 ;
11BE MOVX @DPTR,A ; (x0108)|=0000 0001
11BF MOV DPTR,#0005 ; (x0005)=(x0108)
11C2 MOVX @DPTR,A ;
11C3 MOV DPTR,#0102 ;
11C6 MOV A,R2 ;
11C7 MOVX @DPTR,A ;
11C8 MOV DPTR,#0103 ;
11CB MOV A,R3 ;
11CC MOVX @DPTR,A ; W(x0102)=R2R3
11CD LCALL 023D ; R2=(R6R7) R3=(R6R7+1) R6R7+=2
11D0 MOV A,R2 ;
11D1 ANL A,#07 ;
11D3 MOV DPTR,#0105 ;
11D6 MOVX @DPTR,A ;
11D7 MOV DPTR,#0003 ;
11DA MOVX @DPTR,A ;
11DB MOV A,R2 ;
11DC ANL A,#08 ;
11DE JZ 120A ;
11E0 MOV A,R3 ;
11E1 SETB E7 ;
11E3 MOV DPTR,#0104 ;
11E6 MOVX @DPTR,A ;
11E7 MOV DPTR,#0002 ;
11EA MOVX @DPTR,A ;
11EB MOV DPTR,#0003 ;
11EE MOVX A,@DPTR ;
11EF MOV DPTR,#0102 ;
11F2 MOVX A,@DPTR ;
11F3 MOV B,A ;
11F5 MOV DPTR,#0103 ;
11F8 MOVX A,@DPTR ;
11F9 MOV DPL,A ;
11FB MOV A,B ;
11FD MOV DPH,A ; DPTR = W(x0102)
11FF MOV A,R2 ;
1200 ANL A,#F0 ;
1202 SETB E0 ;
1204 MOVX @DPTR,A ;
1205 CLR A ;
1206 INC DPTR ;
1207 MOVX @DPTR,A ;
1208 INC DPTR ;
1209 MOVX @DPTR,A ;
120A SETB IE.0 ; Enable IRQ #0
120C SETB 0A ;
120E POP PSW ;
1210 RET ;

1211 PUSH PSW ;
1213 PUSH B ;
1215 MOV DPTR,#0003 ;
1218 MOVX A,@DPTR ;
1219 CLR A ;
121A JNB 0A,121A ;
121D CLR 0A ;
121F MOV DPTR,#0001 ;
1222 MOV A,R3 ;
1223 MOVX @DPTR,A ;
1224 MOV DPTR,#0003 ;
1227 MOVX A,@DPTR ;
1228 MOV C,E5 ;
122A CLR A ;
122B MOV E0,C ;
122D MOV 03,A ;
122F POP B ;
1231 POP PSW ;
1233 RET ;

1234 PUSH PSW ;
1236 PUSH B ;
1238 CLR IE.0 ; Disable IRQ #0
123A MOV DPTR,#0102 ;
123D MOVX A,@DPTR ;
123E MOV B,A ;
1240 MOV DPTR,#0103 ;
1243 MOVX A,@DPTR ;
1244 MOV DPL,A ;
1246 MOV A,B ;
1248 MOV DPH,A ; DPTR = W(x0102)
124A SETB D3 ; Select Register's Bank 0011
124C SETB D4 ;
124E MOV R3,#00 ;
1250 MOVX A,@DPTR ;
1251 MOV B,A ;
1253 MOV 02,A ;
1255 JB F0,1281 ;
1258 PUSH DPH ;
125A PUSH DPL ;
125C INC DPTR ;
125D MOVX A,@DPTR ;
125E MOV R1,A ;
125F INC DPTR ;
1260 MOVX A,@DPTR ;
1261 MOV R2,A ;
1262 INC DPTR ;
1263 LCALL 0DD4 ; DPTR+=A
1266 MOVX A,@DPTR ;
1267 MOV 03,A ;
1269 INC R2 ;
126A MOV A,R1 ;
126B CLR C ;
126C SUBB A,R2 ;
126D JNZ 1274 ;
126F SETB F0 ;
1271 CLR A ;
1272 MOV R1,A ;
1273 MOV R2,A ;
1274 POP DPL ;
1276 POP DPH ;
1278 MOV A,B ;
127A MOVX @DPTR,A ;
127B INC DPTR ;
127C MOV A,R1 ;
127D MOVX @DPTR,A ;
127E INC DPTR ;
127F MOV A,R2 ;
1280 MOVX @DPTR,A ;
1281 SETB IE.0 ; Enable IRQ #0
1283 POP B ;
1285 POP PSW ;
1287 RET ;

1288 PUSH PSW ;
128A MOV 1E,R2 ;
128C MOV 1F,R3 ;
128E LCALL 023D ; R2=(R6R7) R3=(R6R7+1) R6R7+=2
1291 MOV A,R2 ;
1292 JNZ 1297 ;
1294 MOV A,R3 ;
1295 JZ 12D4 ;
1297 SETB D3 ; Select Register's Bank 0011
1299 SETB D4 ;
129B MOV R5,#00 ;
129D MOV R2,02 ;
129F MOV R3,03 ;
12A1 MOV A,R5 ;
12A2 RL A ;
12A3 RL A ;
12A4 RL A ;
12A5 MOV R5,A ;
12A6 MOV DPH,R6 ;
12A8 MOV DPL,R7 ;
12AA MOVX A,@DPTR ;
12AB INC DPTR ;
12AC MOV R7,DPL ;
12AE MOV R6,DPH ;
12B0 XRL A,R5 ;
12B1 MOV B,A ;
12B3 ANL A,#0F ;
12B5 MOV DPTR,#12D7 ;
12B8 MOVC A,@A+DPTR ;
12B9 MOV R5,A ;
12BA MOV A,B ;
12BC ANL A,#F0 ;
12BE RR A ;
12BF RR A ;
12C0 RR A ;
12C1 RR A ;
12C2 MOV DPTR,#12E7 ;
12C5 MOVC A,@A+DPTR ;
12C6 XRL A,R5 ;
12C7 MOV R5,A ;
12C8 DJNZ R3,12A1 ;
12CA MOV A,R2 ;
12CB JZ 12CF ;
12CD DJNZ R2,12A1 ;
12CF MOV 02,#00 ;
12D2 MOV 03,R5 ;
12D4 POP PSW ;
12D6 RET ;

12D0 00-05 0A 0F 14 11 1E 1B 0D .........
12E0 08 07 02 19 1C 13 16 00-1A 11 0B 07 1D 16 0C 0E ................
12F0 14 1F 05 09 13 18 02 0C-82 83 84 85 02 03 DC E8 ................
1300 E4 E2 E1 FD

12D7 NOP ;
12D8 INC 0A ;
12DA INC R7 ;
12DB DEC A ;
12DC ACALL 101E ;
12DE DEC R3 ;
12DF INC R5 ;
12E0 INC R0 ;
12E1 INC @R1 ;
12E2 LJMP 191C ;
12E5 RRC A ;
12E6 DEC @R0 ;
12E7 NOP ;
12E8 DEC R2 ;
12E9 ACALL 100B ;
12EB INC @R1 ;
12EC DEC R5 ;
12ED DEC @R0 ;
12EE INC R4 ;
12EF INC R6 ;
12F0 DEC A ;
12F1 DEC R7 ;
12F2 INC 09 ;
12F4 RRC A ;
12F5 DEC R0 ;
12F6 LJMP 0C82 ;
12F9 MOVC A,@A+PC ;
12FA DIV AB ;
12FB MOV 03,02 ;
12FE DJNZ R4,12E8 ;
1300 CLR A ;
1301 MOVX A,@R0 ;
1302 AJMP 17FD ;

1304 DB 90, 00, 90, 10
1308 DB 90, 20, 90, 40
130A DB 90, 80, 90, 00

1310 DB CardCount 04
1311 DB CardSize 00, 10, 20, 80
1315 DB Card80 FA, 32, 01 ;(250,50,1)
1318 DB Card20 D2, 32, 01 ;(210,50,1)
131B DB Card10 D2, 0A, 05 ;(210,10,5)
131E DB Card00 00, 0A, 01 ;(0,10,1)

2000 JB 20,2023 ;
2003 JB 20,2026 ;
2006 NOP ;
2007 NOP ;
2008 JB 0C,2061 ;
200B MOV R4,A ;

200C LJMP 5034 ;
200F PUSH PSW ;
2011 PUSH DPH ;
2013 PUSH DPL ;
2015 CLR D3 ; Select Register's Bank 0000
2017 CLR D4 ;
2019 MOV 04,R2 ;
201B MOV 05,R3 ;
201D LCALL 5667 ;
2020 MOV DPH,R2 ;
2022 MOV DPL,R3 ;
2024 MOV R2,04 ;
2026 MOV R3,05 ;
2028 MOV A,#00 ;
202A MOV R0,A ;
202B MOVX A,@DPTR ;
202C XRL A,R0 ;
202D MOV R0,A ;
202E INC DPTR ;
202F DJNZ R3,202B ;
2031 MOV A,R0 ;
2032 MOV 02,00 ;
2035 MOV 03,A ;
2037 POP DPL ;
2039 POP DPH ;
203B POP PSW ;
203D RET ;

203E PUSH PSW ;
2040 PUSH DPH ;
2042 PUSH DPL ;
2044 CLR D3 ; Select Register's Bank 0000
2046 CLR D4 ;
2048 MOV 04,R2 ;
204A MOV 05,R3 ;
204C LCALL 5667 ;
204F MOV DPH,04 ;
2052 MOV DPL,05 ;
2055 MOV 04,#00 ;
2058 MOVX A,@DPTR ;
2059 MOV R2,#08 ;
205B CLR C ;
205C RLC A ;
205D JC 2060 ;
205F INC R4 ;
2060 DJNZ R2,205C ;
2062 INC DPTR ;
2063 DJNZ R3,2058 ;
2065 MOV 02,#00 ;
2068 MOV 03,04 ;
206B POP DPL ;
206D POP DPH ;
206F POP PSW ;
2071 RET ;

2072 PUSH PSW ;
2074 PUSH DPH ;
2076 PUSH DPL ;
2078 CLR D3 ; Select Register's Bank 0000
207A CLR D4 ;
207C MOV 04,R2 ;
207E MOV 05,R3 ;
2080 LCALL 5667 ;
2083 MOV A,R3 ;
2084 DEC A ;
2085 MOV DPH,04 ;
2088 MOV DPL,05 ;
208B CLR C ;
208C MOVX A,@DPTR ;
208D RRC A ;
208E MOVX @DPTR,A ;
208F INC DPTR ;
2090 DJNZ R3,208C ;
2092 POP DPL ;
2094 POP DPH ;
2096 POP PSW ;
2098 RET ;

2099 PUSH PSW ;
209B PUSH DPH ;
209D PUSH DPL ;
209F CLR D3 ; Select Register's Bank 0000
20A1 CLR D4 ;
20A3 MOV 04,R2 ;
20A5 MOV 05,R3 ;
20A7 LCALL 5667 ;
20AA MOV A,R3 ;
20AB DEC A ;
20AC MOV DPH,04 ;
20AF MOV DPL,05 ;
20B2 LCALL 20E5 ;
20B5 CLR C ;
20B6 MOVX A,@DPTR ;
20B7 RLC A ;
20B8 MOVX @DPTR,A ;
20B9 LCALL 20F0 ;
20BC DJNZ R3,20B6 ;
20BE POP DPL ;
20C0 POP DPH ;
20C2 POP PSW ;
20C4 RET ;

20C5 MOV A,R4 ;
20C6 MOV B,R6 ;
20C8 CJNE A,B,20D2 ;
20CB MOV A,R5 ;
20CC MOV B,R7 ;
20CE CJNE A,B,20D2 ;
20D1 CLR C ;
20D2 RET ;

20D3 PUSH DPH ;
20D5 PUSH DPL ;
20D7 MOV DPH,R6 ;
20D9 MOV DPL,R7 ;
20DB INC DPTR ;
20DC MOV R6,DPH ;
20DE MOV R7,DPL ;
20E0 POP DPL ;
20E2 POP DPH ;
20E4 RET ;

20E5 ADD A,DPL ;
20E7 MOV DPL,A ;
20E9 MOV A,DPH ;
20EB ADDC A,#00 ;
20ED MOV DPH,A ;
20EF RET ;

20F0 MOV A,DPL ;
20F2 JNZ 20FD ;
20F4 MOV DPL,#FF ;
20F7 MOV A,DPH ;
20F9 DEC A ;
20FA MOV DPH,A ;
20FC RET ;

20FD DEC A ;
20FE MOV DPL,A ;
2100 RET ;

2101 MOV 18,A ;
2103 CLR A ;
2104 MOVC A,@A+DPTR ;
2105 PUSH ACC ;
2107 MOVC A,@A+DPTR ;
2108 CJNE A,18,210E ;
210B POP ACC ;
210D RET ;

210E POP ACC ;
2110 DJNZ ACC,2105 ;
2113 RET ;

2114 CLR A ;
2115 MOV R0,#00 ;
2117 MOV R1,#08 ;
2119 LCALL 55DB ;
211C MOV R3,#52 ;
211E MOV DPTR,#1405 ;
2121 MOV A,R3 ;
2122 MOVX @DPTR,A ; (x1405)=52
2123 MOV R3,#04 ;
2125 MOV DPTR,#1406 ;
2128

  
MOV A,R3 ;
2129 MOVX @DPTR,A ; (x1406)=04
212A MOV R3,#80 ;
212C MOV DPTR,#1407 ;
212F MOV A,R3 ;
2130 MOVX @DPTR,A ; (x1407)=80
2131 MOV R3,#02 ;
2133 MOV DPTR,#1408 ;
2136 MOV A,R3 ;
2137 MOVX @DPTR,A ; (x1408)=02
2138 MOV R3,#00 ;
213A MOV DPTR,#140A ;
213D MOV A,R3 ;
213E MOVX @DPTR,A ; (x140A)=00
213F MOV DPTR,#1409 ;
2142 MOV A,R3 ;
2143 MOVX @DPTR,A ; (x1409)=00
2144 MOV R3,#02 ;
2146 MOV DPTR,#11C5 ;
2149 MOV A,R3 ;
214A MOVX @DPTR,A ; (x11C5)=02
214B MOV R3,#00 ;
214D MOV DPTR,#11C6 ;
2150 MOV A,R3 ;
2151 MOVX @DPTR,A ; (x11C6)=00
2152 MOV R3,#C5 ;
2154 MOV R2,#11 ;
2156 MOV DPTR,#0002 ;
2159 LCALL 32FF ;
215C LCALL 53B7 ;
215F INC A ;
2160 NOP ;
2161 LCALL 537E ;
2164 INC A ;
2165 NOP ;
2166 MOV R3,#03 ;
2168 LCALL 5159 ;
216B JNZ 2170 ;
216D LJMP 2305 ;
2170 MOV R3,#00 ;
2172 LCALL 53B7 ;
2175 INC @R0 ;
2176 NOP ;
2177 MOV DPTR,#4102 ;
217A MOVX A,@DPTR ;
217B MOV R3,A ;
217C LCALL 53B7 ;
217F INC 00 ;
2181 MOV R5,#02 ;
2183 MOV A,#05 ;
2185 ADD A,R7 ;
2186 MOV R3,A ;
2187 CLR A ;
2188 ADDC A,R6 ;
2189 MOV R2,A ;
218A MOV DPH,R2 ;
218C MOV DPL,R3 ;
218E MOVX A,@DPTR ;
218F ADD A,R5 ;
2190 MOVX @DPTR,A ;
2191 MOV R3,A ;
2192 MOV A,#05 ;
2194 ADD A,R7 ;
2195 MOV R3,A ;
2196 CLR A ;
2197 ADDC A,R6 ;
2198 MOV R2,A ;
2199 MOV DPTR,#0002 ;
219C LCALL 38D7 ;
219F LCALL 53B7 ;
21A2 INC A ;
21A3 NOP ;
21A4 LCALL 537E ;
21A7 INC A ;
21A8 NOP ;
21A9 MOV R3,#84 ;
21AB LCALL 5159 ;
21AE JZ 21E3 ;
21B0 MOV A,#06 ;
21B2 ADD A,R7 ;
21B3 MOV R3,A ;
21B4 CLR A ;
21B5 ADDC A,R6 ;
21B6 MOV R2,A ;
21B7 LCALL 5234 ;
21BA AJMP 2012 ;
21BC ANL 7E,#06 ;
21BF NOP ;
21C0 MOV R3,#03 ;
21C2 LCALL 5159 ;
21C5 JZ 21D0 ;
21C7 MOV R3,#01 ;
21C9 LCALL 53B7 ;
21CC INC A ;
21CD NOP ;
21CE SJMP 2237 ;
21D0 MOV R5,#FD ;
21D2 MOV A,#05 ;
21D4 ADD A,R7 ;
21D5 MOV R3,A ;
21D6 CLR A ;
21D7 ADDC A,R6 ;
21D8 MOV R2,A ;
21D9 MOV DPH,R2 ;
21DB MOV DPL,R3 ;
21DD MOVX A,@DPTR ;
21DE ADD A,R5 ;
21DF MOVX @DPTR,A ;
21E0 MOV R3,A ;
21E1 SJMP 222D ;
21E3 LCALL 5378 ;
21E6 INC A ;
21E7 NOP ;
21E8 JZ 21F6 ;
21EA LCALL 537E ;
21ED INC A ;
21EE NOP ;
21EF MOV R3,#FF ;
21F1 LCALL 5159 ;
21F4 JZ 222B ;
21F6 MOV R3,#00 ;
21F8 LCALL 53B7 ;
21FB INC @R0 ;
21FC NOP ;
21FD LCALL 537E ;
2200 INC A ;
2201 NOP ;
2202 MOV R3,#40 ;
2204 MOV A,R3 ;
2205 ANL A,R5 ;
2206 MOV R3,A ;
2207 MOV 05,R3 ;
2209 MOV R3,#09 ;
220B MOV R2,#14 ;
220D MOV DPH,R2 ;
220F MOV DPL,R3 ;
2211 MOVX A,@DPTR ;
2212 ORL A,R5 ;
2213 MOVX @DPTR,A ;
2214 MOV R3,A ;
2215 MOV R3,#00 ;
2217 LCALL 53B7 ;
221A INC A ;
221B NOP ;
221C MOV A,#05 ;
221E ADD A,R7 ;
221F MOV R3,A ;
2220 CLR A ;
2221 ADDC A,R6 ;
2222 MOV R2,A ;
2223 MOV DPTR,#0002 ;
2226 LCALL 2680 ;
2229 SJMP 222D ;
222B SJMP 2237 ;
222D LCALL 5378 ;
2230 INC 00 ;
2232 JZ 2237 ;
2234 LJMP 2181 ;
2237 LCALL 5378 ;
223A INC A ;
223B NOP ;
223C JZ 2241 ;
223E LJMP 2305 ;
2241 MOV R3,#00 ;
2243 MOV DPTR,#1408 ;
2246 MOV A,R3 ;
2247 MOVX @DPTR,A ;
2248 MOV R3,#07 ;
224A MOV DPTR,#11C5 ;
224D MOV A,R3 ;
224E MOVX @DPTR,A ;
224F MOV R3,#01 ;
2251 MOV DPTR,#11C6 ;
2254 MOV A,R3 ;
2255 MOVX @DPTR,A ;
2256 MOV R3,#00 ;
2258 MOV DPTR,#11C7 ;
225B MOV A,R3 ;
225C MOVX @DPTR,A ;
225D MOV R3,#B0 ;
225F MOV DPTR,#11C8 ;
2262 MOV A,R3 ;
2263 MOVX @DPTR,A ;
2264 MOV R3,#00 ;
2266 MOV DPTR,#11C9 ;
2269 MOV A,R3 ;
226A MOVX @DPTR,A ;
226B MOV R3,#00 ;
226D MOV DPTR,#11CA ;
2270 MOV A,R3 ;
2271 MOVX @DPTR,A ;
2272 MOV R3,#20 ;
2274 MOV DPTR,#11CB ;
2277 MOV A,R3 ;
2278 MOVX @DPTR,A ;
2279 MOV R3,#C5 ;
227B MOV R2,#11 ;
227D MOV DPTR,#0002 ;
2280 LCALL 32FF ;
2283 LCALL 5378 ;
2286 INC A ;
2287 NOP ;
2288 JZ 2296 ;
228A LCALL 537E ;
228D INC A ;
228E NOP ;
228F MOV R3,#FF ;
2291 LCALL 5159 ;
2294 JZ 2305 ;
2296 LCALL 537E ;
2299 INC A ;
229A NOP ;
229B MOV R3,#40 ;
229D MOV A,R3 ;
229E ANL A,R5 ;
229F MOV R3,A ;
22A0 MOV 05,R3 ;
22A2 MOV R3,#09 ;
22A4 MOV R2,#14 ;
22A6 MOV DPH,R2 ;
22A8 MOV DPL,R3 ;
22AA MOVX A,@DPTR ;
22AB ORL A,R5 ;
22AC MOVX @DPTR,A ;
22AD MOV R3,A ;
22AE MOV R3,#20 ;
22B0 MOV R2,#00 ;
22B2 LCALL 5652 ;
22B5 MOV R3,#04 ;
22B7 MOV R2,#41 ;
22B9 LCALL 5652 ;
22BC MOV R3,#CC ;
22BE MOV R2,#11 ;
22C0 MOV DPTR,#0006 ;
22C3 LCALL 3BA1 ;
22C6 LCALL 53B7 ;
22C9 INC @R1 ;
22CA NOP ;
22CB LCALL 537E ;
22CE INC @R1 ;
22CF NOP ;
22D0 MOV R3,#01 ;
22D2 LCALL 5159 ;
22D5 JZ 22F7 ;
22D7 MOV R3,#04 ;
22D9 MOV DPTR,#1407 ;
22DC MOV A,R3 ;
22DD MOVX @DPTR,A ;
22DE MOV DPTR,#0000 ;
22E1 LCALL 3A42 ;
22E4 MOV A,R3 ;
22E5 JNZ 22F5 ;
22E7 MOV R5,#10 ;
22E9 MOV R3,#07 ;
22EB MOV R2,#14 ;
22ED MOV DPH,R2 ;
22EF MOV DPL,R3 ;
22F1 MOVX A,@DPTR ;
22F2 ORL A,R5 ;
22F3 MOVX @DPTR,A ;
22F4 MOV R3,A ;
22F5 SJMP 2305 ;
22F7 MOV R5,#04 ;
22F9 MOV R3,#09 ;
22FB MOV R2,#14 ;
22FD MOV DPH,R2 ;
22FF MOV DPL,R3 ;
2301 MOVX A,@DPTR ;
2302 ORL A,R5 ;
2303 MOVX @DPTR,A ;
2304 MOV R3,A ;
2305 MOV DPTR,#1408 ;
2308 MOVX A,@DPTR ;
2309 JZ 235D ;
230B LCALL 5378 ;
230E INC A ;
230F NOP ;
2310 LCALL 5516 ;
2313 RL A ;
2314 ADD A,R1 ;
2315 AJMP 2023 ;
2317 ADDC A,R1 ;
2318 DIV AB ;
2319 RL A ;
231A ADDC A,R1 ;
231B MOV C,23 ;
231D ORL TL2,A ;
231F RL A ;
2320 ORL A,R3 ;
2321 MOV @R1,A ;
2322 RL A ;
2323 ORL A,R3 ;
2324 MOV R3,A ;
2325 NOP ;
2326 NOP ;
2327 RL A ;
2328 ANL A,#7D ;
232A SJMP 23A7 ;
232C INC R1 ;
232D MOV R2,#14 ;
232F MOV DPH,R2 ;
2331 MOV DPL,R3 ;
2333 MOVX A,@DPTR ;
2334 ORL A,R5 ;
2335 MOVX @DPTR,A ;
2336 MOV R3,A ;
2337 SJMP 235D ;
2339 MOV R3,#20 ;
233B MOV DPTR,#140A ;
233E MOV A,R3 ;
233F MOVX @DPTR,A ;
2340 SJMP 235D ;
2342 MOV R3,#80 ;
2344 MOV DPTR,#140A ;
2347 MOV A,R3 ;
2348 MOVX @DPTR,A ;
2349 SJMP 235D ;
234B MOV R3,#20 ;
234D MOV DPTR,#1409 ;
2350 MOV A,R3 ;
2351 MOVX @DPTR,A ;
2352 SJMP 235D ;
2354 MOV R3,#04 ;
2356 MOV DPTR,#1409 ;
2359 MOV A,R3 ;
235A MOVX @DPTR,A ;
235B SJMP 235D ;
235D LJMP 561F ;
2360 CLR A ;
2361 MOV R0,#00 ;
2363 MOV R1,#05 ;
2365 LCALL 55DB ;
2368 MOV R3,#00 ;
236A LCALL 53B7 ;
236D INC A ;
236E NOP ;
236F MOV DPTR,#13F5 ;
2372 MOVX A,@DPTR ;
2373 MOV R3,A ;
2374 MOV DPTR,#1404 ;
2377 MOV A,R3 ;
2378 MOVX @DPTR,A ;
2379 MOV DPTR,#13E0 ;
237C MOV A,R3 ;
237D MOVX @DPTR,A ;
237E MOV DPTR,#13E0 ;
2381 MOVX A,@DPTR ;
2382 MOV R3,A ;
2383 LCALL 5516 ;
2386 RL A ;
2387 SUBB A,R4 ;
2388 ACALL 2023 ;
238A CJNE R0,#12,23B0 ;
238D DA A ;
238E DEC A ;
238F RL A ;
2390 MOVX @DPTR,A ;
2391 DEC 24 ;
2393 INC R3 ;
2394 DEC R0 ;
2395 ADD A,#26 ;
2397 DEC R2 ;
2398 NOP ;
2399 NOP ;
239A ADD A,#41 ;
239C MOV DPTR,#14B8 ;
239F MOVX A,@DPTR ;
23A0 MOV R5,A ;
23A1 MOV R3,#01 ;
23A3 LCALL 5159 ;
23A6 JZ 23B5 ;
23A8 MOV R3,#01 ;
23AA LCALL 53B7 ;
23AD INC A ;
23AE NOP ;
23AF MOV DPTR,#0000 ;
23B2 LCALL 27B2 ;
23B5 LJMP 2466 ;
23B8 MOV DPTR,#14B8 ;
23BB MOVX A,@DPTR ;
23BC MOV R5,A ;
23BD MOV R3,#01 ;
23BF LCALL 5159 ;
23C2 JZ 23D1 ;
23C4 MOV R3,#01 ;
23C6 LCALL 53B7 ;
23C9 INC A ;
23CA NOP ;
23CB MOV DPTR,#0000 ;
23CE LCALL 3D23 ;
23D1 LJMP 2466 ;
23D4 MOV DPTR,#14B8 ;
23D7 MOVX A,@DPTR ;
23D8 MOV R5,A ;
23D9 MOV R3,#01 ;
23DB LCALL 5159 ;
23DE JZ 23ED ;
23E0 MOV R3,#01 ;
23E2 LCALL 53B7 ;
23E5 INC A ;
23E6 NOP ;
23E7 MOV DPTR,#0000 ;
23EA LCALL 3D57 ;
23ED LJMP 2466 ;
23F0 MOV DPTR,#14B8 ;
23F3 MOVX A,@DPTR ;
23F4 MOV R5,A ;
23F5 MOV R3,#02 ;
23F7 LCALL 5159 ;
23FA JZ 2409 ;
23FC MOV R3,#01 ;
23FE LCALL 53B7 ;
2401 INC A ;
2402 NOP ;
2403 MOV DPTR,#0000 ;
2406 LCALL 3D9A ;
2409 SJMP 2466 ;
240B MOV DPTR,#14B8 ;
240E MOVX A,@DPTR ;
240F MOV R5,A ;
2410 MOV R3,#02 ;
2412 LCALL 5159 ;
2415 JZ 2424 ;
2417 MOV R3,#01 ;
2419 LCALL 53B7 ;
241C INC A ;
241D NOP ;
241E MOV DPTR,#0000 ;
2421 LCALL 454A ;
2424 SJMP 2466 ;
2426 MOV DPTR,#14B8 ;
2429 MOVX A,@DPTR ;
242A MOV R5,A ;
242B MOV R3,#02 ;
242D LCALL 5159 ;
2430 JZ 243F ;
2432 MOV R3,#01 ;
2434 LCALL 53B7 ;
2437 INC A ;
2438 NOP ;
2439 MOV DPTR,#0000 ;
243C LCALL 4658 ;
243F SJMP 2466 ;
2441 MOV R3,#01 ;
2443 MOV DPTR,#1405 ;
2446 MOV A,R3 ;
2447 MOVX @DPTR,A ;
2448 MOV R3,#00 ;
244A MOV DPTR,#1406 ;
244D MOV A,R3 ;
244E MOVX @DPTR,A ;
244F MOV R3,#01 ;
2451 MOV DPTR,#1407 ;
2454 MOV A,R3 ;
2455 MOVX @DPTR,A ;
2456 MOV R3,#04 ;
2458 MOV DPTR,#14B8 ;
245B MOV A,R3 ;
245C MOVX @DPTR,A ;
245D MOV R3,#01 ;
245F LCALL 53B7 ;
2462 INC A ;
2463 NOP ;
2464 SJMP 2466 ;
2466 LCALL 5378 ;
2469 INC A ;
246A NOP ;
246B JNZ 2489 ;
246D MOV R3,#01 ;
246F MOV DPTR,#1405 ;
2472 MOV A,R3 ;
2473 MOVX @DPTR,A ;
2474 MOV R3,#00 ;
2476 MOV DPTR,#1406 ;
2479 MOV A,R3 ;
247A MOVX @DPTR,A ;
247B MOV R3,#02 ;
247D MOV DPTR,#1407 ;
2480 MOV A,R3 ;
2481 MOVX @DPTR,A ;
2482 MOV R3,#04 ;
2484 MOV DPTR,#14B8 ;
2487 MOV A,R3 ;
2488 MOVX @DPTR,A ;
2489 LJMP 561F ;
248C MOV A,#02 ;
248E MOV R0,#00 ;
2490 MOV R1,#0B ;
2492 LCALL 55DB ;
2495 MOV R3,#00 ;
2497 LCALL 53B7 ;
249A INC 00 ;
249C MOV R3,#00 ;
249E LCALL 53B7 ;
24A1 INC @R0 ;
24A2 NOP ;
24A3 MOV R3,#00 ;
24A5 LCALL 53B7 ;
24A8 INC R2 ;
24A9 NOP ;
24AA MOV R3,#80 ;
24AC LCALL 53B7 ;
24AF INC A ;
24B0 NOP ;
24B1 MOV R3,#00 ;
24B3 LCALL 53B7 ;
24B6 INC @R1 ;
24B7 NOP ;
24B8 LCALL 53B7 ;
24BB INC R0 ;
24BC NOP ;
24BD MOV R5,#00 ;
24BF LCALL 5384 ;
24C2 INC R5 ;
24C3 NOP ;
24C4 LCALL 564B ;
24C7 MOV 05,R3 ;
24C9 MOV 04,R2 ;
24CB MOV R3,#02 ;
24CD MOV R2,#00 ;
24CF LCALL 53EA ;
24D2 LCALL 5660 ;
24D5 LCALL 532D ;
24D8 LCALL 5644 ;
24DB LCALL 5388 ;
24DE INC R6 ;
24DF NOP ;
24E0 MOV R3,#01 ;
24E2 MOV R2,#00 ;
24E4 LCALL 53EA ;
24E7 LCALL 5660 ;
24EA LCALL 532D ;
24ED MOV 05,R3 ;
24EF LCALL 5384 ;
24F2 INC R5 ;
24F3 NOP ;
24F4 LCALL 532D ;
24F7 MOV R3,#00 ;
24F9 LCALL 53B7 ;
24FC INC R1 ;
24FD NOP ;
24FE LCALL 537E ;
2501 INC R1 ;
2502 NOP ;
2503 MOV R3,#A0 ;
2505 LCALL 510C ;
2508 JNZ 250D ;
250A LJMP 267D ;
250D LCALL 5388 ;
2510 INC R3 ;
2511 NOP ;
2512 LCALL 5378 ;
2515 INC 00 ;
2517 MOV R2,#00 ;
2519 LCALL 53EA ;
251C MOV DPH,R2 ;
251E MOV DPL,R3 ;
2520 MOVX A,@DPTR ;
2521 MOV R3,A ;
2522 MOV R2,#00 ;
2524 MOV 05,R3 ;
2526 MOV 04,R2 ;
2528 LCALL 5378 ;
252B INC A ;
252C NOP ;
252D MOV R2,#00 ;
252F LCALL 5325 ;
2532 JZ 2554 ;
2534 LCALL 5388 ;
2537 INC R5 ;
2538 NOP ;
2539 MOV R3,#02 ;
253B MOV R2,#00 ;
253D LCALL 53EA ;
2540 LCALL 5234 ;
2543 AJMP 207B ;
2545 AJMP 2012 ;
2547 ANL B7,#08 ;
254A NOP ;
254B MOV R3,#00 ;
254D LCALL 53B7 ;
2550 INC @R1 ;
2551 NOP ;
2552 SJMP 257D ;
2554 LCALL 537E ;
2557 INC R0 ;
2558 NOP ;
2559 MOV R3,#03 ;
255B LCALL 510C ;
255E JZ 2572 ;
2560 LCALL 5378 ;
2563 INC R0 ;
2564 NOP ;
2565 JZ 2572 ;
2567 MOV A,#08 ;
2569 ADD A,R7 ;
256A MOV R3,A ;
256B CLR A ;
256C ADDC A,R6 ;
256D MOV R2,A ;
256E LCALL 5234 ;
2571 AJMP 2074 ;
2573 INC @R1 ;
2574 ADD A,R7 ;
2575 MOV R3,A ;
2576 CLR A ;
2577 ADDC A,R6 ;
2578 MOV R2,A ;
2579 LCALL 5234 ;
257C AJMP 2012 ;
257E ANL 7E,#08 ;
2581 NOP ;
2582 MOV R3,#03 ;
2584 LCALL 5159 ;
2587 JZ 2599 ;
2589 LCALL 5384 ;
258C INC R5 ;
258D NOP ;
258E LCALL 5234 ;
2591 AJMP 207B ;
2593 NOP ;
2594 LCALL 53B7 ;
2597 INC R0 ;
2598 NOP ;
2599 LCALL 537E ;
259C INC @R1 ;
259D NOP ;
259E MOV R3,#03 ;
25A0 LCALL 5159 ;
25A3 JNZ 25A8 ;
25A5 LJMP 2633 ;
25A8 LCALL 5378 ;
25AB INC R2 ;
25AC NOP ;
25AD JZ 25B2 ;
25AF LJMP 2633 ;
25B2 MOV R3,#01 ;
25B4 LCALL 53B7 ;
25B7 INC R2 ;
25B8 NOP ;
25B9 LCALL 5388 ;
25BC INC R5 ;
25BD NOP ;
25BE MOV R3,#01 ;
25C0 MOV R2,#00 ;
25C2 LCALL 53EA ;
25C5 MOV DPH,R2 ;
25C7 MOV DPL,R3 ;
25C9 MOVX A,@DPTR ;
25CA JNZ 2622 ;
25CC LCALL 537E ;
25CF INC 00 ;
25D1 MOV R3,#03 ;
25D3 MOV R4,#00 ;
25D5 LCALL 530A ;
25D8 MOV 05,R3 ;
25DA LCALL 5378 ;
25DD INC @R0 ;
25DE NOP ;
25DF MOV A,R3 ;
25E0 ADD A,R5 ;
25E1 MOV R3,A ;
25E2 MOV 05,R3 ;
25E4 MOV R3,#FE ;
25E6 MOV A,R3 ;
25E7 ADD A,R5 ;
25E8 MOV R3,A ;
25E9 LCALL 5644 ;
25EC LCALL 5388 ;
25EF INC R6 ;
25F0 NOP ;
25F1 MOV R3,#01 ;
25F3 MOV R2,#00 ;
25F5 LCALL 53EA ;
25F8 LCALL 5660 ;
25FB LCALL 532D ;
25FE LCALL 5388 ;
2601 INC R5 ;
2602 NOP ;
2603 MOV R3,#01 ;
2605 MOV R2,#00 ;
2607 LCALL 53EA ;
260A MOV DPH,R2 ;
260C MOV DPL,R3 ;
260E MOVX A,@DPTR ;
260F JNZ 2622 ;
2611 MOV R3,#01 ;
2613 MOV R2,#00 ;
2615 LCALL 5652 ;
2618 MOV R3,#03 ;
261A MOV R2,#41 ;
261C MOV DPTR,#0004 ;
261F LCALL 0089 ;
2622 MOV R5,#00 ;
2624 LCALL 5384 ;
2627 INC R5 ;
2628 NOP ;
2629 LCALL 532D ;
262C MOV R3,#00 ;
262E LCALL 53B7 ;
2631 INC @R1 ;
2632 NOP ;
2633 MOV R5,#01 ;
2635 MOV A,#04 ;
2637 ADD A,R7 ;
2638 MOV R3,A ;
2639 CLR A ;
263A ADDC A,R6 ;
263B MOV R2,A ;
263C LCALL 5068 ;
263F MOV A,#06 ;
2641 ADD A,R7 ;
2642 MOV R3,A ;
2643 CLR A ;
2644 ADDC A,R6 ;
2645 MOV R2,A ;
2646 LCALL 5234 ;
2649 AJMP 2012 ;
264B ANL 7E,#06 ;
264E NOP ;
264F MOV R3,#08 ;
2651 LCALL 5159 ;
2654 JZ 266F ;
2656 MOV R3,#00 ;
2658 LCALL 53B7 ;
265B INC @R0 ;
265C NOP ;
265D MOV A,#05 ;
265F ADD A,R7 ;
2660 MOV R3,A ;
2661 CLR A ;
2662 ADDC A,R6 ;
2663 MOV R2,A ;
2664 LCALL 5234 ;
2667 AJMP 207B ;
2669 SJMP 267D ;
266B ANL B7,#04 ;
266E NOP ;
266F MOV A,#09 ;
2671 ADD A,R7 ;
2672 MOV R3,A ;
2673 CLR A ;
2674 ADDC A,R6 ;
2675 MOV R2,A ;
2676 LCALL 5234 ;
2679 AJMP 2002 ;
267B ADD A,#FE ;
267D LJMP 561F ;
2680 MOV A,#02 ;
2682 MOV R0,#00 ;
2684 MOV R1,#0B ;
2686 LCALL 55DB ;
2689 MOV R3,#80 ;
268B LCALL 53B7 ;
268E INC @R1 ;
268F NOP ;
2690 MOV R3,#00 ;
2692 LCALL 53B7 ;
2695 INC R0 ;
2696 NOP ;
2697 MOV R3,#10 ;
2699 MOV R2,#41 ;
269B LCALL 53BD ;
269E INC R1 ;
269F NOP ;
26A0 LCALL 5384 ;
26A3 INC R3 ;
26A4 NOP ;
26A5 MOV DPH,R2 ;
26A7 MOV DPL,R3 ;
26A9 MOVX A,@DPTR ;
26AA MOV R3,A ;
26AB MOV 05,R3 ;
26AD MOV R3,#03 ;
26AF MOV R4,#00 ;
26B1 LCALL 52EF ;
26B4 LCALL 53B7 ;
26B7 INC @R0 ;
26B8 NOP ;
26B9 LCALL 5384 ;
26BC INC R3 ;
26BD NOP ;
26BE MOV DPH,R2 ;
26C0 MOV DPL,R3 ;
26C2 MOVX A,@DPTR ;
26C3 MOV R3,A ;
26C4 MOV 05,R3 ;
26C6 MOV R3,#07 ;
26C8 MOV A,R3 ;
26C9 ANL A,R5 ;
26CA MOV R3,A ;
26CB LCALL 53B7 ;
26CE INC 00 ;
26D0 LCALL 537E ;
26D3 INC 00 ;
26D5 MOV A,#07 ;
26D7 ADD A,R7 ;
26D8 MOV R3,A ;
26D9 CLR A ;
26DA ADDC A,R6 ;
26DB MOV R2,A ;
26DC LCALL 5068 ;
26DF LCALL 5384 ;
26E2 INC R3 ;
26E3 NOP ;
26E4 MOV DPH,R2 ;
26E6 MOV DPL,R3 ;
26E8 MOVX A,@DPTR ;
26E9 MOV R3,A ;
26EA LCALL 53B7 ;
26ED INC A ;
26EE NOP ;
26EF MOV R5,#00 ;
26F1 LCALL 5384 ;
26F4 INC R3 ;
26F5 NOP ;
26F6 LCALL 532D ;
26F9 LCALL 537E ;
26FC INC @R0 ;
26FD NOP ;
26FE MOV R3,#14 ;
2700 LCALL 510C ;
2703 JNZ 2708 ;
2705 LJMP 27AF ;
2708 LCALL 5388 ;
270B INC R1 ;
270C NOP ;
270D LCALL 5378 ;
2710 INC @R0 ;
2711 NOP ;
2712 MOV R2,#00 ;
2714 LCALL 53EA ;
2717 MOV DPH,R2 ;
2719 MOV DPL,R3 ;
271B MOVX A,@DPTR ;
271C MOV R3,A ;
271D MOV R2,#00 ;
271F MOV 05,R3 ;
2721 MOV 04,R2 ;
2723 LCALL 5378 ;
2726 INC @R1 ;
2727 NOP ;
2728 MOV R2,#00 ;
272A LCALL 5325 ;
272D JNZ 273C ;
272F MOV A,#08 ;
2731 ADD A,R7 ;
2732 MOV R3,A ;
2733 CLR A ;
2734 ADDC A,R6 ;
2735 MOV R2,A ;
2736 LCALL 5234 ;
2739 AJMP 2080 ;
273B INC @R1 ;
273C MOV R3,#00 ;
273E LCALL 53B7 ;
2741 INC R0 ;
2742 NOP ;
2743 LCALL 537E ;
2746 INC R0 ;
2747 NOP ;
2748 MOV R3,#03 ;
274A LCALL 5159 ;
274D JZ 2765 ;
274F LCALL 537E ;
2752 INC A ;
2753 NOP ;
2754 MOV R3,#FE ;
2756 MOV A,R3 ;
2757 ADD A,R5 ;
2758 MOV R3,A ;
2759 MOV 05,R3 ;
275B LCALL 5384 ;
275E INC R3 ;
275F NOP ;
2760 LCALL 532D ;
2763 SJMP 27AF ;
2765 MOV R5,#01 ;
2767 MOV A,#07 ;
2769 ADD A,R7 ;
276A MOV R3,A ;
276B CLR A ;
276C ADDC A,R6 ;
276D MOV R2,A ;
276E LCALL 5068 ;
2771 MOV A,#05 ;
2773 ADD A,R7 ;
2774 MOV R3,A ;
2775 CLR A ;
2776 ADDC A,R6 ;
2777 MOV R2,A ;
2778 LCALL 5234 ;
277B AJMP 2074 ;
277D INC A ;
277E ADD A,R7 ;
277F MOV R3,A ;
2780 CLR A ;
2781 ADDC A,R6 ;
2782 MOV R2,A ;
2783 LCALL 5234 ;
2786 AJMP 2012 ;
2788 ANL 7E,#05 ;
278B NOP ;
278C MOV R3,#08 ;
278E LCALL 5159 ;
2791 JZ 27AC ;
2793 MOV R3,#80 ;
2795 LCALL 53B7 ;
2798 INC @R1 ;
2799 NOP ;
279A MOV R3,#00 ;
279C LCALL 53B7 ;
279F INC 00 ;
27A1 MOV A,#06 ;
27A3 ADD A,R7 ;
27A4 MOV R3,A ;
27A5 CLR A ;
27A6 ADDC A,R6 ;
27A7 MOV R2,A ;
27A8 LCALL 5234 ;
27AB AJMP 2002 ;
27AD ADD A,@R0 ;
27AE MOV R1,A ;
27AF LJMP 561F ;
27B2 CLR A ;
27B3 MOV R0,#00 ;
27B5 MOV R1,#04 ;
27B7 LCALL 55DB ;
27BA MOV R3,#02 ;
27BC MOV DPTR,#1405 ;
27BF MOV A,R3 ;
27C0 MOVX @DPTR,A ;
27C1 MOV R3,#00 ;
27C3 MOV DPTR,#1406 ;
27C6 MOV A,R3 ;
27C7 MOVX @DPTR,A ;
27C8 MOV R3,#00 ;
27CA MOV DPTR,#1407 ;
27CD MOV A,R3 ;
27CE MOVX @DPTR,A ;
27CF MOV R3,#04 ;
27D1 MOV DPTR,#14B8 ;
27D4 MOV A,R3 ;
27D5 MOVX @DPTR,A ;
27D6 MOV R3,#02 ;
27D8 MOV DPTR,#11C5 ;
27DB MOV A,R3 ;
27DC MOVX @DPTR,A ;
27DD MOV R3,#00 ;
27DF MOV DPTR,#11C6 ;
27E2 MOV A,R3 ;
27E3 MOVX @DPTR,A ;
27E4 MOV R3,#C5 ;
27E6 MOV R2,#11 ;
27E8 MOV DPTR,#0002 ;
27EB LCALL 0083 ;
27EE LCALL 5516 ;
27F1 ADD A,R0 ;
27F2 ADD A,R6 ;
27F3 AJMP 2028 ;
27F5 ADDC A,@R1 ;
27F6 LJMP 2849 ;
27F9 RR A ;
27FA ADD A,R0 ;
27FB ADD A,R6 ;
27FC INC A ;
27FD ADD A,R0 ;
27FE ADD A,R6 ;
27FF INC 28 ;
2801 ADD A,R6 ;
2802 INC @R0 ;
2803 ADD A,R0 ;
2804 ADD A,R6 ;
2805 INC @R1 ;
2806 ADD A,R0 ;
2807 ADD A,R6 ;
2808 INC R1 ;
2809 ADD A,R0 ;
280A ADD A,84 ;
280C ADD A,R0 ;
280D ADD A,A2 ;
280F ADD A,R0 ;
2810 JC 27DE ;
2812 ADD A,R0 ;
2813 DEC R4 ;
2814 MOV @R1,A ;
2815 ADD A,R0 ;
2816 DEC R4 ;
2817 MOV R3,A ;
2818 NOP ;
2819 NOP ;
281A ADD A,R0 ;
281B ACALL 2A7B ;
281D JB 90,2834 ; P1.0 = 1 ?  2834
2820 INC @R0 ;
2821 MOV A,R3 ;
2822 MOVX @DPTR,A ;
2823 SJMP 285A ;
2825 MOV R3,#20 ;
2827 MOV DPTR,#1407 ;
282A MOV A,R3 ;
282B MOVX @DPTR,A ;
282C SJMP 285A ;
282E MOV R3,#03 ;
2830 MOV DPTR,#1405 ;
2833 MOV A,R3 ;
2834 MOVX @DPTR,A ;
2835 SJMP 285A ;
2837 MOV R3,#80 ;
2839 MOV DPTR,#1406 ;
283C MOV A,R3 ;
283D MOVX @DPTR,A ;
283E SJMP 285A ;
2840 MOV R3,#80 ;
2842 MOV DPTR,#1407 ;
2845 MOV A,R3 ;
2846 MOVX @DPTR,A ;
2847 SJMP 285A ;
2849 MOV DPTR,#0000 ;
284C LCALL 285D ;
284F SJMP 285A ;
2851 MOV R3,#0F ;
2853 MOV DPTR,#1405 ;
2856 MOV A,R3 ;
2857 MOVX @DPTR,A ;
2858 SJMP 285A ;
285A LJMP 561F ;
285D CLR A ;
285E MOV R0,#00 ;
2860 MOV R1,#11 ;
2862 LCALL 55DB ;
2865 MOV R3,#00 ;
2867 MOV DPTR,#1410 ;
286A MOV A,R3 ;
286B MOVX @DPTR,A ;
286C MOV DPTR,#140F ;
286F MOV A,R3 ;
2870 MOVX @DPTR,A ;
2871 MOV DPTR,#140E ;
2874 MOV A,R3 ;
2875 MOVX @DPTR,A ;
2876 MOV DPTR,#1412 ;
2879 MOV A,R3 ;
287A MOVX @DPTR,A ;
287B MOV DPTR,#1411 ;
287E MOV A,R3 ;
287F MOVX @DPTR,A ;
2880 MOV R3,#0F ;
2882 MOV DPTR,#14B8 ;
2885 MOV A,R3 ;
2886 MOVX @DPTR,A ;
2887 MOV R3,#01 ;
2889 MOV DPTR,#1410 ;
288C MOV A,R3 ;
288D MOVX @DPTR,A ;
288E MOV R3,#41 ;
2890 MOV DPTR,#1405 ;
2893 MOV A,R3 ;
2894 MOVX @DPTR,A ;
2895 MOV R3,#08 ;
2897 MOV DPTR,#1406 ;
289A MOV A,R3 ;
289B MOVX @DPTR,A ;
289C MOV R3,#41 ;
289E MOV R2,#00 ;
28A0 LCALL 5652 ;
28A3 MOV R3,#01 ;
28A5 MOV R2,#41 ;
28A7 MOV DPTR,#0004 ;
28AA LCALL 0089 ;
28AD MOV R3,#07 ;
28AF MOV DPTR,#11C5 ;
28B2 MOV A,R3 ;
28B3 MOVX @DPTR,A ;
28B4 MOV R3,#01 ;
28B6 MOV DPTR,#11C6 ;
28B9 MOV A,R3 ;
28BA MOVX @DPTR,A ;
28BB MOV R3,#00 ;
28BD MOV DPTR,#11C7 ;
28C0 MOV A,R3 ;
28C1 MOVX @DPTR,A ;
28C2 MOV R3,#B0 ;
28C4 MOV DPTR,#11C8 ;
28C7 MOV A,R3 ;
28C8 MOVX @DPTR,A ;
28C9 MOV R3,#00 ;
28CB MOV DPTR,#11C9 ;
28CE MOV A,R3 ;
28CF MOVX @DPTR,A ;
28D0 MOV R3,#00 ;
28D2 MOV DPTR,#11CA ;
28D5 MOV A,R3 ;
28D6 MOVX @DPTR,A ;
28D7 MOV R3,#20 ;
28D9 MOV DPTR,#11CB ;
28DC MOV A,R3 ;
28DD MOVX @DPTR,A ;
28DE MOV R3,#C5 ;
28E0 MOV R2,#11 ;
28E2 MOV DPTR,#0002 ;
28E5 LCALL 32FF ;
28E8 LCALL 53B7 ;
28EB INC A ;
28EC NOP ;
28ED MOV R3,#02 ;
28EF MOV DPTR,#11C5 ;
28F2 MOV A,R3 ;
28F3 MOVX @DPTR,A ;
28F4 MOV R3,#03 ;
28F6 MOV DPTR,#11C6 ;
28F9 MOV A,R3 ;
28FA MOVX @DPTR,A ;
28FB MOV R3,#C5 ;
28FD MOV R2,#11 ;
28FF MOV DPTR,#0002 ;
2902 LCALL 32FF ;
2905 LCALL 5378 ;
2908 INC A ;
2909 NOP ;
290A LCALL 5516 ;
290D ADD A,R1 ;
290E ADD A,R2 ;
290F DIV AB ;
2910 ADD A,R1 ;
2911 ADD A,R2 ;
2912 MOV C,29 ;
2914 JB F7,2940 ;
2917 JB FB,2943 ;
291A ADDC A,#FF ;
291C NOP ;
291D NOP ;
291E ADD A,R1 ;
291F ADDC A,R3 ;
2920 MOV R3,#20 ;
2922 MOV DPTR,#1411 ;
2925 MOV A,R3 ;
2926 MOVX @DPTR,A ;
2927 LJMP 32B6 ;
292A MOV R3,#20 ;
292C MOV DPTR,#1412 ;
292F MOV A,R3 ;
2930 MOVX @DPTR,A ;
2931 LJMP 32B6 ;
2934 MOV R3,#40 ;
2936 MOV DPTR,#1411 ;
2939 MOV A,R3 ;
293A MOVX @DPTR,A ;
293B MOV DPTR,#11CE ;
293E MOVX A,@DPTR ;
293F MOV R5,A ;
2940 MOV R3,#FF ;
2942 LCALL 5159 ;
2945 JNZ 294A ;
2947 LJMP 2E6C ;
294A MOV DPTR,#11CF ;
294D MOVX A,@DPTR ;
294E MOV R5,A ;
294F MOV R3,#FF ;
2951 LCALL 5159 ;
2954 JNZ 2959 ;
2956 LJMP 2E6C ;
2959 MOV R3,#00 ;
295B MOV DPTR,#1410 ;
295E MOV A,R3 ;
295F MOVX @DPTR,A ;
2960 MOV DPTR,#1411 ;
2963 MOVX A,@DPTR ;
2964 MOV R3,A ;
2965 MOV DPTR,#140F ;
2968 MOV A,R3 ;
2969 MOVX @DPTR,A ;
296A MOV R3,#20 ;
296C MOV R2,#00 ;
296E LCALL 5652 ;
2971 MOV R3,#04 ;
2973 MOV R2,#41 ;
2975 LCALL 5652 ;
2978 MOV R3,#CC ;
297A MOV R2,#11 ;
297C MOV DPTR,#0006 ;
297F LCALL 3C81 ;
2982 MOV DPTR,#11D5 ;
2985 MOVX A,@DPTR ;
2986 MOV R5,A ;
2987 MOV R3,#3F ;
2989 MOV A,R3 ;
298A ANL A,R5 ;
298B MOV R3,A ;
298C MOV 05,R3 ;
298E MOV R3,#0A ;
2990 MOV A,R5 ;
2991 MOV B,R3 ;
2993 MUL AB ;
2994 MOV R3,A ;
2995 LCALL 53B7 ;
2998 INC R0 ;
2999 NOP ;
299A MOV R5,#FF ;
299C LCALL 5378 ;
299F INC R0 ;
29A0 NOP ;
29A1 CLR C ;
29A2 MOV A,R5 ;
29A3 SUBB A,R3 ;
29A4 MOV R3,A ;
29A5 MOV 05,R3 ;
29A7 MOV R3,#01 ;
29A9 MOV A,R3 ;
29AA ADD A,R5 ;
29AB MOV R3,A ;
29AC LCALL 53B7 ;
29AF JBC 00,29C4 ;
29B2 ANL 7E,#10 ;
29B5 NOP ;
29B6 MOV R3,#08 ;
29B8 MOV A,R5 ;
29B9 MOV B,R3 ;
29BB DIV AB ;
29BC MOV R3,A ;
29BD LCALL 53B7 ;
29C0 INC R6 ;
29C1 NOP ;
29C2 MOV R3,#FF ;
29C4 LCALL 53B7 ;
29C7 INC A ;
29C8 NOP ;
29C9 LCALL 537E ;
29CC INC R6 ;
29CD NOP ;
29CE MOV R3,#08 ;
29D0 MOV A,R5 ;
29D1 MOV B,R3 ;
29D3 MUL AB ;
29D4 MOV R3,A ;
29D5 LCALL 53B7 ;
29D8 INC 00 ;
29DA LCALL 537E ;
29DD INC 00 ;
29DF LCALL 5378 ;
29E2 JBC 00,29F7 ;
29E5 ACALL 2A0C ;
29E7 JZ 2A02 ;
29E9 MOV R5,#01 ;
29EB MOV A,#04 ;
29ED ADD A,R7 ;
29EE MOV R3,A ;
29EF CLR A ;
29F0 ADDC A,R6 ;
29F1 MOV R2,A ;
29F2 LCALL 5068 ;
29F5 MOV A,#05 ;
29F7 ADD A,R7 ;
29F8 MOV R3,A ;
29F9 CLR A ;
29FA ADDC A,R6 ;
29FB MOV R2,A ;
29FC LCALL 5234 ;
29FF AJMP 2880 ;
2A01 DJNZ R0,2A15 ;
2A03 ANL 7E,#04 ;
2A06 NOP ;
2A07 MOV R3,#C5 ;
2A09 MOV R2,#11 ;
2A0B LCALL 564B ;
2A0E LCALL 5652 ;
2A11 LCALL 537E ;
2A14 ACALL 2800 ;
2A16 MOV R4,#00 ;
2A18 MOV R3,#07 ;
2A1A MOV R2,#00 ;
2A1C LCALL 53EA ;
2A1F LCALL 566E ;
2A22 LCALL 53EA ;
2A25 LCALL 5660 ;
2A28 MOV DPH,R2 ;
2A2A MOV DPL,R3 ;
2A2C MOVX A,@DPTR ;
2A2D ANL A,R5 ;
2A2E MOVX @DPTR,A ;
2A2F MOV R3,A ;
2A30 MOV R3,#00 ;
2A32 LCALL 53B7 ;
2A35 INC A ;
2A36 NOP ;
2A37 LCALL 53B7 ;
2A3A INC @R0 ;
2A3B NOP ;
2A3C LCALL 537E ;
2A3F INC R6 ;
2A40 NOP ;
2A41 MOV R3,#20 ;
2A43 LCALL 510C ;
2A46 JNZ 2A4B ;
2A48 LJMP 2B2F ;
2A4B LCALL 5378 ;
2A4E INC A ;
2A4F NOP ;
2A50 JZ 2A55 ;
2A52 LJMP 2B2F ;
2A55 MOV R5,#C5 ;
2A57 MOV R4,#11 ;
2A59 LCALL 5378 ;
2A5C INC R6 ;
2A5D NOP ;
2A5E MOV R2,#00 ;
2A60 LCALL 5659 ;
2A63 MOV 05,R3 ;
2A65 MOV 04,R2 ;
2A67 MOV R3,#07 ;
2A69 MOV R2,#00 ;
2A6B LCALL 53EA ;
2A6E LCALL 566E ;
2A71 LCALL 53EA ;
2A74 MOV DPH,R2 ;
2A76 MOV DPL,R3 ;
2A78 MOVX A,@DPTR ;
2A79 JNZ 2A7E ;
2A7B LJMP 2B21 ;
2A7E MOV R5,#C5 ;
2A80 MOV R4,#11 ;
2A82 LCALL 5378 ;
2A85 INC R6 ;
2A86 NOP ;
2A87 MOV R2,#00 ;
2A89 LCALL 5659 ;
2A8C MOV 05,R3 ;
2A8E MOV 04,R2 ;
2A90 MOV R3,#07 ;
2A92 MOV R2,#00 ;
2A94 LCALL 53EA ;
2A97 LCALL 566E ;
2A9A LCALL 53EA ;
2A9D MOV DPH,R2 ;
2A9F MOV DPL,R3 ;
2AA1 MOVX A,@DPTR ;
2AA2 MOV R3,A ;
2AA3 LCALL 53B7 ;
2AA6 INC 00 ;
2AA8 LCALL 5378 ;
2AAB INC 00 ;
2AAD JZ 2AC8 ;
2AAF MOV R5,#01 ;
2AB1 MOV A,#05 ;
2AB3 ADD A,R7 ;
2AB4 MOV R3,A ;
2AB5 CLR A ;
2AB6 ADDC A,R6 ;
2AB7 MOV R2,A ;
2AB8 LCALL 5068 ;
2ABB MOV A,#06 ;
2ABD ADD A,R7 ;
2ABE MOV R3,A ;
2ABF CLR A ;
2AC0 ADDC A,R6 ;
2AC1 MOV R2,A ;
2AC2 LCALL 5234 ;
2AC5 AJMP 2880 ;
2AC7 MOVX A,@DPTR ;
2AC8 MOV R5,#08 ;
2ACA LCALL 5378 ;
2ACD INC @R0 ;
2ACE NOP ;
2ACF CLR C ;
2AD0 MOV A,R5 ;
2AD1 SUBB A,R3 ;
2AD2 MOV R3,A ;
2AD3 LCALL 53B7 ;
2AD6 INC R7 ;
2AD7 NOP ;
2AD8 LCALL 537E ;
2ADB INC R6 ;
2ADC NOP ;
2ADD MOV R3,#08 ;
2ADF MOV A,R5 ;
2AE0 MOV B,R3 ;
2AE2 MUL AB ;
2AE3 MOV R3,A ;
2AE4 MOV 05,R3 ;
2AE6 LCALL 5378 ;
2AE9 INC R7 ;
2AEA NOP ;
2AEB MOV A,R3 ;
2AEC ADD A,R5 ;
2AED MOV R3,A ;
2AEE LCALL 53B7 ;
2AF1 INC R7 ;
2AF2 NOP ;
2AF3 MOV R5,#FF ;
2AF5 LCALL 5378 ;
2AF8 INC R7 ;
2AF9 NOP ;
2AFA CLR C ;
2AFB MOV A,R5 ;
2AFC SUBB A,R3 ;
2AFD MOV R3,A ;
2AFE MOV 05,R3 ;
2B00 MOV R3,#01 ;
2B02 MOV A,R3 ;
2B03 ADD A,R5 ;
2B04 MOV R3,A ;
2B05 MOV A,R3 ;
2B06 CPL A ;
2B07 INC A ;
2B08 MOV R3,A ;
2B09 MOV 05,R3 ;
2B0B LCALL 5378 ;
2B0E INC R0 ;
2B0F NOP ;
2B10 MOV A,R3 ;
2B11 ADD A,R5 ;
2B12 MOV R3,A ;
2B13 LCALL 53B7 ;
2B16 INC R1 ;
2B17 NOP ;
2B18 MOV R3,#FF ;
2B1A LCALL 53B7 ;
2B1D INC A ;
2B1E NOP ;
2B1F SJMP 2B2C ;
2B21 MOV A,#0E ;
2B23 ADD A,R7 ;
2B24 MOV R3,A ;
2B25 CLR A ;
2B26 ADDC A,R6 ;
2B27 MOV R2,A ;
2B28 LCALL 5234 ;
2B2B AJMP 2802 ;
2B2D ADD A,R2 ;
2B2E ADDC A,R4 ;
2B2F LCALL 537E ;
2B32 INC R6 ;
2B33 NOP ;
2B34 MOV R3,#1F ;
2B36 LCALL 50DA ;
2B39 JZ 2B45 ;
2B3B LCALL 5378 ;
2B3E INC R0 ;
2B3F NOP ;
2B40 LCALL 53B7 ;
2B43 INC R1 ;
2B44 NOP ;
2B45 MOV R3,#20 ;
2B47 MOV R2,#00 ;
2B49 LCALL 5652 ;
2B4C MOV R3,#04 ;
2B4E MOV R2,#41 ;
2B50 LCALL 5652 ;
2B53 MOV R3,#CC ;
2B55 MOV R2,#11 ;
2B57 MOV DPTR,#0006 ;
2B5A LCALL 3BEC ;
2B5D MOV R3,#41 ;
2B5F MOV DPTR,#1405 ;
2B62 MOV A,R3 ;
2B63 MOVX @DPTR,A ;
2B64 MOV R3,#09 ;
2B66 MOV DPTR,#1406 ;
2B69 MOV A,R3 ;
2B6A MOVX @DPTR,A ;
2B6B MOV DPTR,#11CD ;
2B6E MOVX A,@DPTR ;
2B6F MOV R3,A ;
2B70 MOV DPTR,#1407 ;
2B73 MOV A,R3 ;
2B74 MOVX @DPTR,A ;
2B75 MOV DPTR,#11D0 ;
2B78 MOVX A,@DPTR ;
2B79 MOV R3,A ;
2B7A MOV DPTR,#1408 ;
2B7D MOV A,R3 ;
2B7E MOVX @DPTR,A ;
2B7F MOV DPTR,#11D1 ;
2B82 MOVX A,@DPTR ;
2B83 MOV R3,A ;
2B84 MOV DPTR,#1409 ;
2B87 MOV A,R3 ;
2B88 MOVX @DPTR,A ;
2B89 MOV DPTR,#11D2 ;
2B8C MOVX A,@DPTR ;
2B8D MOV R3,A ;
2B8E MOV DPTR,#140A ;
2B91 MOV A,R3 ;
2B92 MOVX @DPTR,A ;
2B93 MOV DPTR,#11D3 ;
2B96 MOVX A,@DPTR ;
2B97 MOV R3,A ;
2B98 MOV DPTR,#140B ;
2B9B MOV A,R3 ;
2B9C MOVX @DPTR,A ;
2B9D LCALL 5378 ;
2BA0 INC R1 ;
2BA1 NOP ;
2BA2 MOV DPTR,#140C ;
2BA5 MOV A,R3 ;
2BA6 MOVX @DPTR,A ;
2BA7 MOV R3,#00 ;
2BA9 MOV DPTR,#140D ;
2BAC MOV A,R3 ;
2BAD MOVX @DPTR,A ;
2BAE MOV R3,#54 ;
2BB0 MOV R2,#00 ;
2BB2 LCALL 5652 ;
2BB5 MOV R3,#01 ;
2BB7 MOV R2,#41 ;
2BB9 MOV DPTR,#0004 ;
2BBC LCALL 0089 ;
2BBF MOV R3,#0D ;
2BC1 MOV DPTR,#14B8 ;
2BC4 MOV A,R3 ;
2BC5 MOVX @DPTR,A ;
2BC6 MOV R3,#00 ;
2BC8 LCALL 53B7 ;
2BCB INC @R0 ;
2BCC NOP ;
2BCD MOV R3,#08 ;
2BCF LCALL 53B7 ;
2BD2 INC A ;
2BD3 NOP ;
2BD4 LCALL 537E ;
2BD7 INC A ;
2BD8 NOP ;
2BD9 MOV R3,#13 ;
2BDB LCALL 510C ;
2BDE JNZ 2BE3 ;
2BE0 LJMP 2C5C ;
2BE3 MOV R5,#C5 ;
2BE5 MOV R4,#11 ;
2BE7 LCALL 5378 ;
2BEA INC A ;
2BEB NOP ;
2BEC MOV R2,#00 ;
2BEE LCALL 53EA ;
2BF1 MOV DPH,R2 ;
2BF3 MOV DPL,R3 ;
2BF5 MOVX A,@DPTR ;
2BF6 MOV R3,A ;
2BF7 LCALL 53B7 ;
2BFA INC @R1 ;
2BFB NOP ;
2BFC MOV R3,#00 ;
2BFE LCALL 53B7 ;
2C01 INC 00 ;
2C03 LCALL 537E ;
2C06 INC 00 ;
2C08 MOV R3,#08 ;
2C0A LCALL 510C ;
2C0D JZ 2C4E ;
2C0F LCALL 537E ;
2C12 INC @R1 ;
2C13 NOP ;
2C14 MOV R4,#00 ;
2C16 MOV R3,#01 ;
2C18 MOV R2,#00 ;
2C1A LCALL 5325 ;
2C1D MOV 05,R3 ;
2C1F MOV 04,R2 ;
2C21 MOV R3,#01 ;
2C23 MOV R2,#00 ;
2C25 LCALL 516C ;
2C28 JZ 2C35 ;
2C2A MOV A,#06 ;
2C2C ADD A,R7 ;
2C2D MOV R3,A ;
2C2E CLR A ;
2C2F ADDC A,R6 ;
2C30 MOV R2,A ;
2C31 LCALL 5234 ;
2C34 AJMP 287D ;
2C36 AJMP 2874 ;
2C38 INC @R1 ;
2C39 ADD A,R7 ;
2C3A MOV R3,A ;
2C3B CLR A ;
2C3C ADDC A,R6 ;
2C3D MOV R2,A ;
2C3E LCALL 5068 ;
2C41 MOV A,#05 ;
2C43 ADD A,R7 ;
2C44 MOV R3,A ;
2C45 CLR A ;
2C46 ADDC A,R6 ;
2C47 MOV R2,A ;
2C48 LCALL 5234 ;
2C4B AJMP 2880 ;
2C4D CJNE A,74,2C54 ;
2C50 ADD A,R7 ;
2C51 MOV R3,A ;
2C52 CLR A ;
2C53 ADDC A,R6 ;
2C54 MOV R2,A ;
2C55 LCALL 5234 ;
2C58 AJMP 2802 ;
2C5A ADD A,R3 ;
2C5B DA A ;
2C5C MOV R5,#80 ;
2C5E MOV A,#06 ;
2C60 ADD A,R7 ;
2C61 MOV R3,A ;
2C62 CLR A ;
2C63 ADDC A,R6 ;
2C64 MOV R2,A ;
2C65 MOV DPH,R2 ;
2C67 MOV DPL,R3 ;
2C69 MOVX A,@DPTR ;
2C6A ORL A,R5 ;
2C6B MOVX @DPTR,A ;
2C6C MOV R3,A ;
2C6D LCALL 537E ;
2C70 INC @R0 ;
2C71 NOP ;
2C72 MOV DPTR,#11CC ;
2C75 MOVX A,@DPTR ;
2C76 MOV R3,A ;
2C77 LCALL 5168 ;
2C7A JZ 2C86 ;
2C7C MOV R3,#01 ;
2C7E MOV DPTR,#140E ;
2C81 MOV A,R3 ;
2C82 MOVX @DPTR,A ;
2C83 LJMP 32B6 ;
2C86 MOV DPTR,#11D0 ;
2C89 MOVX A,@DPTR ;
2C8A MOV R5,A ;
2C8B MOV R4,#00 ;
2C8D MOV R3,#01 ;
2C8F MOV R2,#00 ;
2C91 LCALL 5325 ;
2C94 MOV 05,R3 ;
2C96 MOV 04,R2 ;
2C98 MOV R3,#01 ;
2C9A MOV R2,#00 ;
2C9C LCALL 515D ;
2C9F JZ 2CAB ;
2CA1 MOV R3,#02 ;
2CA3 MOV DPTR,#140E ;
2CA6 MOV A,R3 ;
2CA7 MOVX @DPTR,A ;
2CA8 LJMP 32B6

  
;
2CAB MOV DPTR,#11D4 ;
2CAE MOVX A,@DPTR ;
2CAF MOV R5,A ;
2CB0 MOV R4,#00 ;
2CB2 MOV R3,#FC ;
2CB4 MOV R2,#00 ;
2CB6 LCALL 5325 ;
2CB9 MOV 05,R3 ;
2CBB MOV 04,R2 ;
2CBD MOV R3,#02 ;
2CBF LCALL 52CC ;
2CC2 LCALL 5652 ;
2CC5 MOV DPTR,#11D5 ;
2CC8 MOVX A,@DPTR ;
2CC9 MOV R5,A ;
2CCA MOV R4,#00 ;
2CCC MOV R3,#C0 ;
2CCE MOV R2,#00 ;
2CD0 LCALL 5325 ;
2CD3 LCALL 566E ;
2CD6 LCALL 5659 ;
2CD9 MOV 05,R3 ;
2CDB MOV 04,R2 ;
2CDD MOV R3,#06 ;
2CDF LCALL 52CC ;
2CE2 LCALL 566E ;
2CE5 MOV 03,R5 ;
2CE7 MOV 02,R4 ;
2CE9 JNZ 2D20 ;
2CEB LCALL 5652 ;
2CEE MOV DPTR,#11D4 ;
2CF1 MOVX A,@DPTR ;
2CF2 MOV R5,A ;
2CF3 MOV R4,#00 ;
2CF5 MOV R3,#03 ;
2CF7 MOV R2,#00 ;
2CF9 LCALL 5325 ;
2CFC LCALL 566E ;
2CFF LCALL 5659 ;
2D02 MOV 05,R3 ;
2D04 MOV 04,R2 ;
2D06 MOV R3,#02 ;
2D08 LCALL 530A ;
2D0B LCALL 566E ;
2D0E MOV 03,R5 ;
2D10 MOV 02,R4 ;
2D12 JNZ 2D20 ;
2D14 MOV 05,R3 ;
2D16 MOV 04,R2 ;
2D18 MOV R3,#00 ;
2D1A SJMP 2D26 ;
2D1C MOV 03,R5 ;
2D1E MOV 02,R4 ;
2D20 MOV 05,R3 ;
2D22 MOV 04,R2 ;
2D24 MOV R3,#01 ;
2D26 MOV R2,#00 ;
2D28 LCALL 53EA ;
2D2B JZ 2D37 ;
2D2D MOV R3,#03 ;
2D2F MOV DPTR,#140E ;
2D32 MOV A,R3 ;
2D33 MOVX @DPTR,A ;
2D34 LJMP 32B6 ;
2D37 MOV DPTR,#11D5 ;
2D3A MOVX A,@DPTR ;
2D3B MOV R5,A ;
2D3C MOV R4,#00 ;
2D3E MOV R3,#3F ;
2D40 MOV R2,#00 ;
2D42 LCALL 5325 ;
2D45 MOV 05,R3 ;
2D47 MOV 04,R2 ;
2D49 MOV R3,#0F ;
2D4B MOV R2,#00 ;
2D4D LCALL 50BF ;
2D50 JZ 2D5C ;
2D52 MOV R3,#04 ;
2D54 MOV DPTR,#140E ;
2D57 MOV A,R3 ;
2D58 MOVX @DPTR,A ;
2D59 LJMP 32B6 ;
2D5C MOV DPTR,#11D6 ;
2D5F MOVX A,@DPTR ;
2D60 MOV R5,A ;
2D61 MOV R4,#00 ;
2D63 MOV R3,#F0 ;
2D65 MOV R2,#00 ;
2D67 LCALL 5325 ;
2D6A MOV 05,R3 ;
2D6C MOV 04,R2 ;
2D6E MOV R3,#10 ;
2D70 MOV R2,#00 ;
2D72 LCALL 516C ;
2D75 JZ 2D81 ;
2D77 MOV R3,#05 ;
2D79 MOV DPTR,#140E ;
2D7C MOV A,R3 ;
2D7D MOVX @DPTR,A ;
2D7E LJMP 32B6 ;
2D81 MOV DPTR,#11D6 ;
2D84 MOVX A,@DPTR ;
2D85 MOV R5,A ;
2D86 MOV R4,#00 ;
2D88 MOV R3,#0F ;
2D8A MOV R2,#00 ;
2D8C LCALL 5325 ;
2D8F MOV 05,R3 ;
2D91 MOV 04,R2 ;
2D93 MOV R3,#0E ;
2D95 MOV R2,#00 ;
2D97 LCALL 516C ;
2D9A JZ 2DA6 ;
2D9C MOV R3,#06 ;
2D9E MOV DPTR,#140E ;
2DA1 MOV A,R3 ;
2DA2 MOVX @DPTR,A ;
2DA3 LJMP 32B6 ;
2DA6 MOV DPTR,#11D7 ;
2DA9 MOVX A,@DPTR ;
2DAA MOV R5,A ;
2DAB MOV R3,#28 ;
2DAD LCALL 5168 ;
2DB0 JZ 2DBC ;
2DB2 MOV R3,#07 ;
2DB4 MOV DPTR,#140E ;
2DB7 MOV A,R3 ;
2DB8 MOVX @DPTR,A ;
2DB9 LJMP 32B6 ;
2DBC LCALL 5378 ;
2DBF INC R1 ;
2DC0 NOP ;
2DC1 JNZ 2DCD ;
2DC3 MOV R3,#08 ;
2DC5 MOV DPTR,#140E ;
2DC8 MOV A,R3 ;
2DC9 MOVX @DPTR,A ;
2DCA LJMP 32B6 ;
2DCD MOV R3,#00 ;
2DCF LCALL 53B7 ;
2DD2 INC R5 ;
2DD3 NOP ;
2DD4 MOV R3,#00 ;
2DD6 LCALL 53B7 ;
2DD9 INC A ;
2DDA NOP ;
2DDB LCALL 537E ;
2DDE INC A ;
2DDF NOP ;
2DE0 MOV R3,#03 ;
2DE2 LCALL 510C ;
2DE5 JZ 2E38 ;
2DE7 MOV R3,#03 ;
2DE9 MOV R2,#00 ;
2DEB LCALL 5652 ;
2DEE MOV R5,#37 ;
2DF0 MOV R4,#41 ;
2DF2 LCALL 5378 ;
2DF5 INC @R0 ;
2DF6 NOP ;
2DF7 MOV R2,#00 ;
2DF9 LCALL 5659 ;
2DFC MOV 05,R3 ;
2DFE MOV 04,R2 ;
2E00 MOV R3,#03 ;
2E02 MOV R2,#00 ;
2E04 LCALL 53FB ;
2E07 LCALL 566E ;
2E0A LCALL 53EA ;
2E0D LCALL 5652 ;
2E10 MOV R3,#09 ;
2E12 MOV R2,#14 ;
2E14 MOV DPTR,#0006 ;
2E17 LCALL 3BA1 ;
2E1A MOV 05,R3 ;
2E1C MOV A,#0D ;
2E1E ADD A,R7 ;
2E1F MOV R3,A ;
2E20 CLR A ;
2E21 ADDC A,R6 ;
2E22 MOV R2,A ;
2E23 MOV DPH,R2 ;
2E25 MOV DPL,R3 ;
2E27 MOVX A,@DPTR ;
2E28 ORL A,R5 ;
2E29 MOVX @DPTR,A ;
2E2A MOV R3,A ;
2E2B MOV A,#04 ;
2E2D ADD A,R7 ;
2E2E MOV R3,A ;
2E2F CLR A ;
2E30 ADDC A,R6 ;
2E31 MOV R2,A ;
2E32 LCALL 5234 ;
2E35 AJMP 2880 ;
2E37 INC DPTR ;
2E38 LCALL 537E ;
2E3B INC R5 ;
2E3C NOP ;
2E3D MOV R3,#01 ;
2E3F LCALL 5159 ;
2E42 JZ 2E4E ;
2E44 MOV R3,#09 ;
2E46 MOV DPTR,#140E ;
2E49 MOV A,R3 ;
2E4A MOVX @DPTR,A ;
2E4B LJMP 32B6 ;
2E4E MOV DPTR,#140C ;
2E51 MOVX A,@DPTR ;
2E52 MOV R3,A ;
2E53 MOV R2,#00 ;
2E55 LCALL 5652 ;
2E58 MOV R3,#24 ;
2E5A MOV R2,#41 ;
2E5C MOV DPTR,#0004 ;
2E5F LCALL 0089 ;
2E62 MOV R3,#00 ;
2E64 MOV DPTR,#140E ;
2E67 MOV A,R3 ;
2E68 MOVX @DPTR,A ;
2E69 LJMP 32B6 ;
2E6C MOV DPTR,#11CD ;
2E6F MOVX A,@DPTR ;
2E70 MOV R3,A ;
2E71 MOV DPTR,#1407 ;
2E74 MOV A,R3 ;
2E75 MOVX @DPTR,A ;
2E76 MOV DPTR,#11D0 ;
2E79 MOVX A,@DPTR ;
2E7A MOV R3,A ;
2E7B MOV DPTR,#1408 ;
2E7E MOV A,R3 ;
2E7F MOVX @DPTR,A ;
2E80 MOV DPTR,#11D1 ;
2E83 MOVX A,@DPTR ;
2E84 MOV R3,A ;
2E85 MOV DPTR,#1409 ;
2E88 MOV A,R3 ;
2E89 MOVX @DPTR,A ;
2E8A MOV DPTR,#11D2 ;
2E8D MOVX A,@DPTR ;
2E8E MOV R3,A ;
2E8F MOV DPTR,#140A ;
2E92 MOV A,R3 ;
2E93 MOVX @DPTR,A ;
2E94 MOV DPTR,#11D3 ;
2E97 MOVX A,@DPTR ;
2E98 MOV R3,A ;
2E99 MOV DPTR,#140B ;
2E9C MOV A,R3 ;
2E9D MOVX @DPTR,A ;
2E9E MOV DPTR,#11D4 ;
2EA1 MOVX A,@DPTR ;
2EA2 MOV R3,A ;
2EA3 MOV DPTR,#140C ;
2EA6 MOV A,R3 ;
2EA7 MOVX @DPTR,A ;
2EA8 MOV DPTR,#11D5 ;
2EAB MOVX A,@DPTR ;
2EAC MOV R3,A ;
2EAD MOV DPTR,#140D ;
2EB0 MOV A,R3 ;
2EB1 MOVX @DPTR,A ;
2EB2 MOV A,#0A ;
2EB4 ADD A,R7 ;
2EB5 MOV R3,A ;
2EB6 CLR A ;
2EB7 ADDC A,R6 ;
2EB8 MOV R2,A ;
2EB9 LCALL 5652 ;
2EBC MOV R3,#D8 ;
2EBE MOV R2,#11 ;
2EC0 MOV DPTR,#0004 ;
2EC3 LCALL 248C ;
2EC6 MOV DPTR,#11CE ;
2EC9 MOVX A,@DPTR ;
2ECA MOV R5,A ;
2ECB MOV R3,#0F ;
2ECD MOV A,R3 ;
2ECE ANL A,R5 ;
2ECF MOV R3,A ;
2ED0 MOV 05,R3 ;
2ED2 MOV R3,#64 ;
2ED4 MOV A,R5 ;
2ED5 MOV B,R3 ;
2ED7 MUL AB ;
2ED8 MOV R3,A ;
2ED9 LCALL 5644 ;
2EDC MOV DPTR,#11CF ;
2EDF MOVX A,@DPTR ;
2EE0 MOV R5,A ;
2EE1 MOV R4,#00 ;
2EE3 MOV R3,#F0 ;
2EE5 MOV R2,#00 ;
2EE7 LCALL 5325 ;
2EEA LCALL 5660 ;
2EED LCALL 564B ;
2EF0 MOV 05,R3 ;
2EF2 MOV 04,R2 ;
2EF4 MOV R3,#04 ;
2EF6 LCALL 52CC ;
2EF9 LCALL 5660 ;
2EFC LCALL 564B ;
2EFF MOV 05,R3 ;
2F01 MOV R3,#0A ;
2F03 MOV A,R5 ;
2F04 MOV B,R3 ;
2F06 MUL AB ;
2F07 MOV R3,A ;
2F08 LCALL 5660 ;
2F0B MOV A,R3 ;
2F0C ADD A,R5 ;
2F0D MOV R3,A ;
2F0E LCALL 5644 ;
2F11 MOV DPTR,#11CF ;
2F14 MOVX A,@DPTR ;
2F15 MOV R5,A ;
2F16 MOV R3,#0F ;
2F18 MOV A,R3 ;
2F19 ANL A,R5 ;
2F1A MOV R3,A ;
2F1B LCALL 5660 ;
2F1E MOV A,R3 ;
2F1F ADD A,R5 ;
2F20 MOV R3,A ;
2F21 LCALL 53B7 ;
2F24 INC R0 ;
2F25 NOP ;
2F26 LCALL 537E ;
2F29 INC R0 ;
2F2A NOP ;
2F2B LCALL 5378 ;
2F2E INC R4 ;
2F2F NOP ;
2F30 CLR C ;
2F31 MOV A,R5 ;
2F32 SUBB A,R3 ;
2F33 MOV R3,A ;
2F34 LCALL 53B7 ;
2F37 INC R1 ;
2F38 NOP ;
2F39 MOV DPTR,#140E ;
2F3C MOV A,R3 ;
2F3D MOVX @DPTR,A ;
2F3E MOV R3,#00 ;
2F40 MOV DPTR,#140F ;
2F43 MOV A,R3 ;
2F44 MOVX @DPTR,A ;
2F45 MOV R3,#00 ;
2F47 LCALL 53B7 ;
2F4A INC @R0 ;
2F4B NOP ;
2F4C MOV R3,#08 ;
2F4E LCALL 53B7 ;
2F51 INC A ;
2F52 NOP ;
2F53 LCALL 537E ;
2F56 INC A ;
2F57 NOP ;
2F58 MOV R3,#13 ;
2F5A LCALL 510C ;
2F5D JNZ 2F62 ;
2F5F LJMP 2FDB ;
2F62 MOV R5,#C5 ;
2F64 MOV R4,#11 ;
2F66 LCALL 5378 ;
2F69 INC A ;
2F6A NOP ;
2F6B MOV R2,#00 ;
2F6D LCALL 53EA ;
2F70 MOV DPH,R2 ;
2F72 MOV DPL,R3 ;
2F74 MOVX A,@DPTR ;
2F75 MOV R3,A ;
2F76 LCALL 53B7 ;
2F79 INC @R1 ;
2F7A NOP ;
2F7B MOV R3,#00 ;
2F7D LCALL 53B7 ;
2F80 INC 00 ;
2F82 LCALL 537E ;
2F85 INC 00 ;
2F87 MOV R3,#08 ;
2F89 LCALL 510C ;
2F8C JZ 2FCD ;
2F8E LCALL 537E ;
2F91 INC @R1 ;
2F92 NOP ;
2F93 MOV R4,#00 ;
2F95 MOV R3,#01 ;
2F97 MOV R2,#00 ;
2F99 LCALL 5325 ;
2F9C MOV 05,R3 ;
2F9E MOV 04,R2 ;
2FA0 MOV R3,#01 ;
2FA2 MOV R2,#00 ;
2FA4 LCALL 516C ;
2FA7 JZ 2FB4 ;
2FA9 MOV A,#06 ;
2FAB ADD A,R7 ;
2FAC MOV R3,A ;
2FAD CLR A ;
2FAE ADDC A,R6 ;
2FAF MOV R2,A ;
2FB0 LCALL 5234 ;
2FB3 AJMP 287D ;
2FB5 AJMP 2874 ;
2FB7 INC @R1 ;
2FB8 ADD A,R7 ;
2FB9 MOV R3,A ;
2FBA CLR A ;
2FBB ADDC A,R6 ;
2FBC MOV R2,A ;
2FBD LCALL 5068 ;
2FC0 MOV A,#05 ;
2FC2 ADD A,R7 ;
2FC3 MOV R3,A ;
2FC4 CLR A ;
2FC5 ADDC A,R6 ;
2FC6 MOV R2,A ;
2FC7 LCALL 5234 ;
2FCA AJMP 2880 ;
2FCC CJNE A,74,2FD3 ;
2FCF ADD A,R7 ;
2FD0 MOV R3,A ;
2FD1 CLR A ;
2FD2 ADDC A,R6 ;
2FD3 MOV R2,A ;
2FD4 LCALL 5234 ;
2FD7 AJMP 2802 ;
2FD9 ADD A,R7 ;
2FDA ANL 7D,#80 ;
2FDD MOV A,#06 ;
2FDF ADD A,R7 ;
2FE0 MOV R3,A ;
2FE1 CLR A ;
2FE2 ADDC A,R6 ;
2FE3 MOV R2,A ;
2FE4 MOV DPH,R2 ;
2FE6 MOV DPL,R3 ;
2FE8 MOVX A,@DPTR ;
2FE9 ORL A,R5 ;
2FEA MOVX @DPTR,A ;
2FEB MOV R3,A ;
2FEC LCALL 537E ;
2FEF INC @R0 ;
2FF0 NOP ;
2FF1 MOV DPTR,#11CC ;
2FF4 MOVX A,@DPTR ;
2FF5 MOV R3,A ;
2FF6 LCALL 5168 ;
2FF9 JZ 3005 ;
2FFB MOV R3,#02 ;
2FFD MOV DPTR,#1410 ;
3000 MOV A,R3 ;
3001 MOVX @DPTR,A ;
3002 LJMP 32B6 ;
3005 MOV DPTR,#11CD ;
3008 MOVX A,@DPTR ;
3009 MOV R5,A ;
300A MOV R3,#83 ;
300C LCALL 5168 ;
300F JZ 301B ;
3011 MOV R3,#03 ;
3013 MOV DPTR,#1410 ;
3016 MOV A,R3 ;
3017 MOVX @DPTR,A ;
3018 LJMP 32B6 ;
301B MOV DPTR,#11CE ;
301E MOVX A,@DPTR ;
301F MOV R5,A ;
3020 MOV R4,#00 ;
3022 MOV R3,#F0 ;
3024 MOV R2,#00 ;
3026 LCALL 5325 ;
3029 MOV 05,R3 ;
302B MOV 04,R2 ;
302D MOV R3,#10 ;
302F MOV R2,#00 ;
3031 LCALL 516C ;
3034 JZ 3040 ;
3036 MOV R3,#04 ;
3038 MOV DPTR,#1410 ;
303B MOV A,R3 ;
303C MOVX @DPTR,A ;
303D LJMP 32B6 ;
3040 MOV DPTR,#11CE ;
3043 MOVX A,@DPTR ;
3044 MOV R5,A ;
3045 MOV R4,#00 ;
3047 MOV R3,#0F ;
3049 MOV R2,#00 ;
304B LCALL 5325 ;
304E MOV 05,R3 ;
3050 MOV 04,R2 ;
3052 MOV R3,#01 ;
3054 MOV R2,#00 ;
3056 LCALL 50BF ;
3059 JZ 3065 ;
305B MOV R3,#05 ;
305D MOV DPTR,#1410 ;
3060 MOV A,R3 ;
3061 MOVX @DPTR,A ;
3062 LJMP 32B6 ;
3065 MOV DPTR,#11CF ;
3068 MOVX A,@DPTR ;
3069 MOV R5,A ;
306A MOV R4,#00 ;
306C MOV R3,#0F ;
306E MOV R2,#00 ;
3070 LCALL 5325 ;
3073 MOV 05,R3 ;
3075 MOV 04,R2 ;
3077 MOV R3,#09 ;
3079 MOV R2,#00 ;
307B LCALL 50BF ;
307E JZ 308A ;
3080 MOV R3,#05 ;
3082 MOV DPTR,#1410 ;
3085 MOV A,R3 ;
3086 MOVX @DPTR,A ;
3087 LJMP 32B6 ;
308A MOV DPTR,#11CF ;
308D MOVX A,@DPTR ;
308E MOV R5,A ;
308F MOV R4,#00 ;
3091 MOV R3,#F0 ;
3093 MOV R2,#00 ;
3095 LCALL 5325 ;
3098 MOV 05,R3 ;
309A MOV 04,R2 ;
309C MOV R3,#90 ;
309E MOV R2,#00 ;
30A0 LCALL 50BF ;
30A3 JZ 30AF ;
30A5 MOV R3,#05 ;
30A7 MOV DPTR,#1410 ;
30AA MOV A,R3 ;
30AB MOVX @DPTR,A ;
30AC LJMP 32B6 ;
30AF MOV DPTR,#11CE ;
30B2 MOVX A,@DPTR ;
30B3 MOV R5,A ;
30B4 MOV R4,#00 ;
30B6 MOV R3,#0F ;
30B8 MOV R2,#00 ;
30BA LCALL 5325 ;
30BD MOV 05,R3 ;
30BF MOV 04,R2 ;
30C1 MOV R3,#01 ;
30C3 MOV R2,#00 ;
30C5 LCALL 515D ;
30C8 JZ 3124 ;
30CA MOV DPTR,#11CF ;
30CD MOVX A,@DPTR ;
30CE MOV R5,A ;
30CF MOV R4,#00 ;
30D1 MOV R3,#F0 ;
30D3 MOV R2,#00 ;
30D5 LCALL 5325 ;
30D8 MOV 05,R3 ;
30DA MOV 04,R2 ;
30DC MOV R3,#60 ;
30DE MOV R2,#00 ;
30E0 LCALL 50BF ;
30E3 JZ 30EF ;
30E5 MOV R3,#05 ;
30E7 MOV DPTR,#1410 ;
30EA MOV A,R3 ;
30EB MOVX @DPTR,A ;
30EC LJMP 32B6 ;
30EF MOV DPTR,#11CF ;
30F2 MOVX A,@DPTR ;
30F3 MOV R5,A ;
30F4 MOV R4,#00 ;
30F6 MOV R3,#F0 ;
30F8 MOV R2,#00 ;
30FA LCALL 5325 ;
30FD MOV 05,R3 ;
30FF MOV 04,R2 ;
3101 MOV R3,#60 ;
3103 MOV R2,#00 ;
3105 LCALL 515D ;
3108 JZ 3124 ;
310A MOV DPTR,#11CF ;
310D MOVX A,@DPTR ;
310E MOV R5,A ;
310F MOV R4,#00 ;
3111 MOV R3,#0F ;
3113 MOV R2,#00 ;
3115 LCALL 5325 ;
3118 JZ 3124 ;
311A MOV R3,#05 ;
311C MOV DPTR,#1410 ;
311F MOV A,R3 ;
3120 MOVX @DPTR,A ;
3121 LJMP 32B6 ;
3124 MOV DPTR,#11D6 ;
3127 MOVX A,@DPTR ;
3128 MOV R5,A ;
3129 MOV R4,#00 ;
312B MOV R3,#F0 ;
312D MOV R2,#00 ;
312F LCALL 5325 ;
3132 MOV 05,R3 ;
3134 MOV 04,R2 ;
3136 MOV R3,#10 ;
3138 MOV R2,#00 ;
313A LCALL 516C ;
313D JZ 3149 ;
313F MOV R3,#06 ;
3141 MOV DPTR,#1410 ;
3144 MOV A,R3
3145 MOVX @DPTR,A ;
3146 LJMP 32B6 ;
3149 MOV DPTR,#11D6 ;
314C MOVX A,@DPTR ;
314D MOV R5,A ;
314E MOV R4,#00 ;
3150 MOV R3,#0F ;
3152 MOV R2,#00 ;
3154 LCALL 5325 ;
3157 MOV 05,R3 ;
3159 MOV 04,R2 ;
315B MOV R3,#01 ;
315D MOV R2,#00 ;
315F LCALL 516C ;
3162 JZ 316E ;
3164 MOV R3,#07 ;
3166 MOV DPTR,#1410 ;
3169 MOV A,R3 ;
316A MOVX @DPTR,A ;
316B LJMP 32B6 ;
316E MOV DPTR,#11D7 ;
3171 MOVX A,@DPTR ;
3172 MOV R5,A ;
3173 MOV R3,#5C ;
3175 LCALL 5168 ;
3178 JZ 3184 ;
317A MOV R3,#08 ;
317C MOV DPTR,#1410 ;
317F MOV A,R3 ;
3180 MOVX @DPTR,A ;
3181 LJMP 32B6 ;
3184 LCALL 5378 ;
3187 INC R2 ;
3188 NOP ;
3189 JZ 31A2 ;
318B LCALL 5378 ;
318E INC R3 ;
318F NOP ;
3190 JNZ 31A2 ;
3192 MOV DPTR,#4103 ;
3195 MOVX A,@DPTR ;
3196 JNZ 31A2 ;
3198 MOV R3,#0A ;
319A MOV DPTR,#1410 ;
319D MOV A,R3 ;
319E MOVX @DPTR,A ;
319F LJMP 32B6 ;
31A2 LCALL 537E ;
31A5 INC R4 ;
31A6 NOP ;
31A7 LCALL 5378 ;
31AA INC R0 ;
31AB NOP ;
31AC LCALL 513C ;
31AF JNZ 31BE ;
31B1 LCALL 5378 ;
31B4 INC R3 ;
31B5 NOP ;
31B6 JNZ 31C8 ;
31B8 MOV DPTR,#4103 ;
31BB MOVX A,@DPTR ;
31BC JNZ 31C8 ;
31BE MOV R3,#0C ;
31C0 MOV DPTR,#1410 ;
31C3 MOV A,R3 ;
31C4 MOVX @DPTR,A ;
31C5 LJMP 32B6 ;
31C8 LCALL 537E ;
31CB INC R1 ;
31CC NOP ;
31CD MOV R3,#A0 ;
31CF LCALL 50DA ;
31D2 JZ 31DE ;
31D4 MOV R3,#09 ;
31D6 MOV DPTR,#1410 ;
31D9 MOV A,R3 ;
31DA MOVX @DPTR,A ;
31DB LJMP 32B6 ;
31DE MOV R3,#00 ;
31E0 LCALL 53B7 ;
31E3 INC R5 ;
31E4 NOP ;
31E5 MOV R3,#00 ;
31E7 LCALL 53B7 ;
31EA INC A ;
31EB NOP ;
31EC LCALL 537E ;
31EF INC A ;
31F0 NOP ;
31F1 MOV R3,#03 ;
31F3 LCALL 510C ;
31F6 JZ 3249 ;
31F8 MOV R3,#05 ;
31FA MOV R2,#00 ;
31FC LCALL 5652 ;
31FF MOV R5,#25 ;
3201 MOV R4,#41 ;
3203 LCALL 5378 ;
3206 INC @R0 ;
3207 NOP ;
3208 MOV R2,#00 ;
320A LCALL 5659 ;
320D MOV 05,R3 ;
320F MOV 04,R2 ;
3211 MOV R3,#06 ;
3213 MOV R2,#00 ;
3215 LCALL 53FB ;
3218 LCALL 566E ;
321B LCALL 53EA ;
321E LCALL 5652 ;
3221 MOV R3,#07 ;
3223 MOV R2,#14 ;
3225 MOV DPTR,#0006 ;
3228 LCALL 3BA1 ;
322B MOV 05,R3 ;
322D MOV A,#0D ;
322F ADD A,R7 ;
3230 MOV R3,A ;
3231 CLR A ;
3232 ADDC A,R6 ;
3233 MOV R2,A ;
3234 MOV DPH,R2 ;
3236 MOV DPL,R3 ;
3238 MOVX A,@DPTR ;
3239 ORL A,R5 ;
323A MOVX @DPTR,A ;
323B MOV R3,A ;
323C MOV A,#04 ;
323E ADD A,R7 ;
323F MOV R3,A ;
3240 CLR A ;
3241 ADDC A,R6 ;
3242 MOV R2,A ;
3243 LCALL 5234 ;
3246 AJMP 3080 ;
3248 INC DPTR ;
3249 LCALL 537E ;
324C INC R5 ;
324D NOP ;
324E MOV R3,#01 ;
3250 LCALL 5159 ;
3253 JZ 325E ;
3255 MOV R3,#0B ;
3257 MOV DPTR,#1410 ;
325A MOV A,R3 ;
325B MOVX @DPTR,A ;
325C SJMP 32B6 ;
325E MOV R3,#41 ;
3260 MOV R2,#00 ;
3262 LCALL 5652 ;
3265 MOV R3,#01 ;
3267 MOV R2,#41 ;
3269 MOV DPTR,#0004 ;
326C LCALL 0089 ;
326F MOV DPTR,#140E ;
3272 MOVX A,@DPTR ;
3273 MOV R3,A ;
3274 MOV R2,#00 ;
3276 LCALL 5652 ;
3279 MOV R3,#24 ;
327B MOV R2,#41 ;
327D MOV DPTR,#0004 ;
3280 LCALL 0089 ;
3283 LCALL 5378 ;
3286 INC R3 ;
3287 NOP ;
3288 MOV R2,#00 ;
328A LCALL 5652 ;
328D MOV R3,#02 ;
328F MOV R2,#41 ;
3291 MOV DPTR,#0004 ;
3294 LCALL 0089 ;
3297 MOV R3,#20 ;
3299 MOV R2,#00 ;
329B LCALL 5652 ;
329E MOV R3,#04 ;
32A0 MOV R2,#41 ;
32A2 LCALL 5652 ;
32A5 MOV R3,#CC ;
32A7 MOV R2,#11 ;
32A9 MOV DPTR,#0006 ;
32AC LCALL 3C81 ;
32AF MOV R3,#00 ;
32B1 MOV DPTR,#1410 ;
32B4 MOV A,R3 ;
32B5 MOVX @DPTR,A ;
32B6 LJMP 561F ;
32B9 CLR A ;
32BA MOV R0,#00 ;
32BC MOV R1,#04 ;
32BE LCALL 55DB ;
32C1 MOV DPTR,#13F4 ;
32C4 MOVX A,@DPTR ;
32C5 MOV R5,A ;
32C6 MOV R3,#01 ;
32C8 LCALL 5159 ;
32CB JZ 32D3 ;
32CD MOV DPTR,#0000 ;
32D0 LCALL 32D6 ;
32D3 LJMP 561F ;
32D6 CLR A ;
32D7 MOV R0,#00 ;
32D9 MOV R1,#04 ;
32DB LCALL 55DB ;
32DE MOV R3,#02 ;
32E0 MOV DPTR,#11C5 ;
32E3 MOV A,R3 ;
32E4 MOVX @DPTR,A ;
32E5 MOV R3,#03 ;
32E7 MOV DPTR,#11C6 ;
32EA MOV A,R3 ;
32EB MOVX @DPTR,A ;
32EC MOV R3,#C5 ;
32EE MOV R2,#11 ;
32F0 MOV DPTR,#0002 ;
32F3 LCALL 32FF ;
32F6 MOV DPTR,#0000 ;
32F9 LCALL 00AD ;
32FC LJMP 561F ;
32FF MOV A,#02 ;
3301 MOV R0,#00 ;
3303 MOV R1,#05 ;
3305 LCALL 55DB ;
3308 LCALL 5384 ;
330B INC 00 ;
330D MOV DPTR,#0002 ;
3310 LCALL 0083 ;
3313 LCALL 53B7 ;
3316 INC A ;
3317 NOP ;
3318 LCALL 5378 ;
331B INC A ;
331C NOP ;
331D JNZ 3363 ;
331F LCALL 537E ;
3322 INC A ;
3323 NOP ;
3324 MOV R3,#02 ;
3326 LCALL 5168 ;
3329 JZ 3363 ;
332B MOV DPTR,#4101 ;
332E MOVX A,@DPTR ;
332F MOV R5,A ;
3330 MOV R3,#41 ;
3332 LCALL 5159 ;
3335 JZ 3347 ;
3337 MOV DPTR,#0000 ;
333A LCALL 00A7 ;
333D MOV A,R3 ;
333E JNZ 3347 ;
3340 MOV R3,#FF ;
3342 LCALL 53B7 ;
3345 INC A ;
3346 NOP ;
3347 MOV DPTR,#4101 ;
334A MOVX A,@DPTR ;
334B MOV R5,A ;
334C MOV R3,#54 ;
334E LCALL 5159 ;
3351 JZ 3363 ;
3353 MOV DPTR,#0000 ;
3356 LCALL 00A7 ;
3359 MOV A,R3 ;
335A JNZ 3363 ;
335C MOV R3,#FF ;
335E LCALL 53B7 ;
3361 INC A ;
3362 NOP ;
3363 LCALL 5378 ;
3366 INC A ;
3367 NOP ;
3368 LJMP 561F ;
336B MOV A,#02 ;
336D MOV R0,#00 ;
336F MOV R1,#08 ;
3371 LCALL 55DB ;
3374 MOV R3,#00 ;
3376 MOV R2,#00 ;
3378 LCALL 53BD ;
337B INC @R0 ;
337C NOP ;
337D MOV R3,#00 ;
337F MOV R2,#00 ;
3381 LCALL 53BD ;
3384 INC A ;
3385 NOP ;
3386 LCALL 5388 ;
3389 INC A ;
338A NOP ;
338B MOV R3,#05 ;
338D MOV R2,#00 ;
338F LCALL 50F5 ;
3392 JZ 33F1 ;
3394 LCALL 5388 ;
3397 INC R0 ;
3398 NOP ;
3399 LCALL 5384 ;
339C INC A ;
339D NOP ;
339E LCALL 53EA ;
33A1 MOV DPH,R2 ;
33A3 MOV DPL,R3 ;
33A5 MOVX A,@DPTR ;
33A6 JZ 33F1 ;
33A8 MOV R5,#0A ;
33AA MOV R4,#00 ;
33AC MOV A,#06 ;
33AE ADD A,R7 ;
33AF MOV R3,A ;
33B0 CLR A ;
33B1 ADDC A,R6 ;
33B2 MOV R2,A ;
33B3 LCALL 504D ;
33B6 LCALL 5388 ;
33B9 INC R0 ;
33BA NOP ;
33BB LCALL 5384 ;
33BE INC A ;
33BF NOP ;
33C0 LCALL 53EA ;
33C3 MOV DPH,R2 ;
33C5 MOV DPL,R3 ;
33C7 MOVX A,@DPTR ;
33C8 MOV R3,A ;
33C9 MOV R2,#00 ;
33CB MOV 05,R3 ;
33CD MOV 04,R2 ;
33CF MOV R3,#D0 ;
33D1 MOV R2,#FF ;
33D3 LCALL 53EA ;
33D6 MOV 05,R3 ;
33D8 MOV 04,R2 ;
33DA MOV A,#06 ;
33DC ADD A,R7 ;
33DD MOV R3,A ;
33DE CLR A ;
33DF ADDC A,R6 ;
33E0 MOV R2,A ;
33E1 LCALL 5044 ;
33E4 MOV A,#04 ;
33E6 ADD A,R7 ;
33E7 MOV R3,A ;
33E8 CLR A ;
33E9 ADDC A,R6 ;
33EA MOV R2,A ;
33EB LCALL 5234 ;
33EE LJMP 8095 ;
33F1 LCALL 5384 ;
33F4 INC @R0 ;
33F5 NOP ;
33F6 LJMP 561F ;
33F9 MOV A,#02 ;
33FB MOV R0,#00 ;
33FD MOV R1,#04 ;
33FF LCALL 55DB ;
3402 LCALL 5378 ;
3405 INC R1 ;
3406 NOP ;
3407 LCALL 537E ;
340A INC R1 ;
340B NOP ;
340C MOV R3,#00 ;
340E LCALL 50DA ;
3411 JZ 3487 ;
3413 LCALL 5384 ;
3416 INC A ;
3417 NOP ;
3418 MOV DPH,R2 ;
341A MOV DPL,R3 ;
341C MOVX A,@DPTR ;
341D MOV R3,A ;
341E MOV R2,#00 ;
3420 MOV 05,R3 ;
3422 MOV 04,R2 ;
3424 MOV R3,#F0 ;
3426 MOV R2,#00 ;
3428 LCALL 5325 ;
342B MOV 05,R3 ;
342D MOV 04,R2 ;
342F MOV R3,#04 ;
3431 LCALL 52CC ;
3434 MOV 05,R3 ;
3436 MOV R3,#30 ;
3438 MOV A,R3 ;
3439 ADD A,R5 ;
343A MOV R3,A ;
343B MOV 05,R3 ;
343D MOV A,#06 ;
343F ADD A,R7 ;
3440 MOV R3,A ;
3441 CLR A ;
3442 ADDC A,R6 ;
3443 MOV R2,A ;
3444 LCALL 5234 ;
3447 LJMP 1253 ;
344A ADD A,R5 ;
344B MOV A,#04 ;
344D ADD A,R7 ;
344E MOV R3,A ;
344F CLR A ;
3450 ADDC A,R6 ;
3451 MOV R2,A ;
3452 LCALL 5234 ;
3455 LJMP 8A83 ;
3458 MOV DPL,R3 ;
345A MOVX A,@DPTR ;
345B MOV R3,A ;
345C MOV 05,R3 ;
345E MOV R3,#0F ;
3460 MOV A,R3 ;
3461 ANL A,R5 ;
3462 MOV R3,A ;
3463 MOV 05,R3 ;
3465 MOV R3,#30 ;
3467 MOV A,R3 ;
3468 ADD A,R5 ;
3469 MOV R3,A ;
346A MOV 05,R3 ;
346C MOV A,#06 ;
346E ADD A,R7 ;
346F MOV R3,A ;
3470 CLR A ;
3471 ADDC A,R6 ;
3472 MOV R2,A ;
3473 LCALL 5234 ;
3476 LJMP 1253 ;
3479 ADD A,R5 ;
347A MOV A,#09 ;
347C ADD A,R7 ;
347D MOV R3,A ;
347E CLR A ;
347F ADDC A,R6 ;
3480 MOV R2,A ;
3481 LCALL 523A ;
3484 AJMP 3080 ;
3486 SJMP 3505 ;
3488 NOP ;
3489 LCALL 5384 ;
348C INC @R0 ;
348D NOP ;
348E LCALL 532D ;
3491 LJMP 561F ;
3494 MOV A,#02 ;
3496 MOV R0,#00 ;
3498 MOV R1,#06 ;
349A LCALL 55DB ;
349D MOV R3,#00 ;
349F MOV R2,#00 ;
34A1 LCALL 53BD ;
34A4 INC A ;
34A5 NOP ;
34A6 LCALL 5388 ;
34A9 INC A ;
34AA NOP ;
34AB MOV R3,#05 ;
34AD MOV R2,#00 ;
34AF LCALL 50F5 ;
34B2 JZ 34FF ;
34B4 LCALL 5384 ;
34B7 INC @R0 ;
34B8 NOP ;
34B9 JZ 34FF ;
34BB LCALL 5388 ;
34BE INC @R0 ;
34BF NOP ;
34C0 MOV R3,#0A ;
34C2 MOV R2,#00 ;
34C4 LCALL 543F ;
34C7 MOV 05,R3 ;
34C9 MOV R3,#30 ;
34CB MOV A,R3 ;
34CC ADD A,R5 ;
34CD MOV R3,A ;
34CE LCALL 5644 ;
34D1 LCALL 5388 ;
34D4 INC R1 ;
34D5 NOP ;
34D6 LCALL 5384 ;
34D9 INC 00 ;
34DB LCALL 53EA ;
34DE LCALL 5660 ;
34E1 LCALL 532D ;
34E4 MOV R5,#0A ;
34E6 MOV R4,#00 ;
34E8 MOV A,#06 ;
34EA ADD A,R7 ;
34EB MOV R3,A ;
34EC CLR A ;
34ED ADDC A,R6 ;
34EE MOV R2,A ;
34EF LCALL 505F ;
34F2 MOV A,#04 ;
34F4 ADD A,R7 ;
34F5 MOV R3,A ;
34F6 CLR A ;
34F7 ADDC A,R6 ;
34F8 MOV R2,A ;
34F9 LCALL 5234 ;
34FC LJMP 80A7 ;
34FF MOV R5,#00 ;
3501 LCALL 5384 ;
3504 INC R0 ;
3505 NOP ;
3506 LCALL 564B ;
3509 MOV 05,R3 ;
350B MOV 04,R2 ;
350D LCALL 5384 ;
3510 INC 00 ;
3512 LCALL 53EA ;
3515 LCALL 5660 ;
3518 LCALL 532D ;
351B LCALL 5388 ;
351E INC A ;
351F NOP ;
3520 MOV R3,#FF ;
3522 MOV R2,#FF ;
3524 LCALL 53EA ;
3527 LCALL 5652 ;
352A LCALL 5384 ;
352D INC R2 ;
352E NOP ;
352F MOV DPTR,#0004 ;
3532 LCALL 353D ;
3535 LCALL 5384 ;
3538 INC A ;
3539 NOP ;
353A LJMP 561F ;
353D MOV A,#02 ;
353F MOV R0,#00 ;
3541 MOV R1,#09 ;
3543 LCALL 55DB ;
3546 MOV R3,#00 ;
3548 MOV R2,#00 ;
354A LCALL 53BD ;
354D INC A ;
354E NOP ;
354F LCALL 5384 ;
3552 INC R3 ;
3553 NOP ;
3554 LCALL 53BD ;
3557 INC @R0 ;
3558 NOP ;
3559 LCALL 5388 ;
355C INC A ;
355D NOP ;
355E LCALL 5384 ;
3561 INC @R0 ;
3562 NOP ;
3563 LCALL 50F5 ;
3566 JZ 35E1 ;
3568 LCALL 5388 ;
356B INC R1 ;
356C NOP ;
356D LCALL 5384 ;
3570 INC A ;
3571 NOP ;
3572 LCALL 53EA ;
3575 MOV DPH,R2 ;
3577 MOV DPL,R3 ;
3579 MOVX A,@DPTR ;
357A MOV R3,A ;
357B LCALL 53B7 ;
357E INC R0 ;
357F NOP ;
3580 LCALL 5388 ;
3583 INC R1 ;
3584 NOP ;
3585 LCALL 5384 ;
3588 INC @R0 ;
3589 NOP ;
358A LCALL 53EA ;
358D MOV DPH,R2 ;
358F MOV DPL,R3 ;
3591 MOVX A,@DPTR ;
3592 MOV R3,A ;
3593 LCALL 5644 ;
3596 LCALL 5388 ;
3599 INC R2 ;
359A NOP ;
359B LCALL 5384 ;
359E INC 00 ;
35A0 LCALL 53EA ;
35A3 LCALL 5660 ;
35A6 LCALL 532D ;
35A9 LCALL 537E ;
35AC INC R0 ;
35AD NOP ;
35AE LCALL 5384 ;
35B1 INC R1 ;
35B2 NOP ;
35B3 LCALL 564B ;
35B6 MOV 05,R3 ;
35B8 MOV 04,R2 ;
35BA LCALL 5384 ;
35BD INC @R1 ;
35BE NOP ;
35BF LCALL 53EA ;
35C2 LCALL 5660 ;
35C5 LCALL 532D ;
35C8 MOV A,#04 ;
35CA ADD A,R7 ;
35CB MOV R3,A ;
35CC CLR A ;
35CD ADDC A,R6 ;
35CE MOV R2,A ;
35CF LCALL 5234 ;
35D2 LJMP 7406 ;
35D5 ADD A,R7 ;
35D6 MOV R3,A ;
35D7 CLR A ;
35D8 ADDC A,R6 ;
35D9 MOV R2,A ;
35DA LCALL 523A ;
35DD LJMP 0235 ;
35E0 ANL A,R1 ;
35E1 LJMP 561F ;
35E4 MOV A,#02 ;
35E6 MOV R0,#00 ;
35E8 MOV R1,#07 ;
35EA LCALL 55DB ;
35ED LCALL 537E ;
35F0 INC R4 ;
35F1 NOP ;
35F2 MOV R4,#00 ;
35F4 MOV R3,#01 ;
35F6 MOV R2,#00 ;
35F8 LCALL 5325 ;
35FB MOV 05,R3 ;
35FD MOV 04,R2 ;
35FF MOV R3,#01 ;
3601 MOV R2,#00 ;
3603 LCALL 515D ;
3606 JZ 363B ;
3608 MOV A,#07 ;
360A ADD A,R7 ;
360B MOV R3,A ;
360C CLR A ;
360D ADDC A,R6 ;
360E MOV R2,A ;
360F LCALL 5234 ;
3612 LJMP 8A83 ;
3615 MOV DPL,R3 ;
3617 MOVX A,@DPTR ;
3618 MOV R3,A ;
3619 MOV 05,R3 ;
361B MOV R3,#0F ;
361D MOV A,R3 ;
361E ANL A,R5 ;
361F MOV R3,A ;
3620 MOV 05,R3 ;
3622 MOV A,#09 ;
3624 ADD A,R7 ;
3625 MOV R3,A ;
3626 CLR A ;
3627 ADDC A,R6 ;
3628 MOV R2,A ;
3629 LCALL 5234 ;
362C LJMP 1253 ;
362F ADD A,R5 ;
3630 MOV A,#0C ;
3632 ADD A,R7 ;
3633 MOV R3,A ;
3634 CLR A ;
3635 ADDC A,R6 ;
3636 MOV R2,A ;
3637 LCALL 523A ;
363A AJMP 307B ;
363C NOP ;
363D MOV R2,#00 ;
363F LCALL 53BD ;
3642 INC A ;
3643 NOP ;
3644 LCALL 537E ;
3647 INC R4 ;
3648 NOP ;
3649 MOV R3,#02 ;
364B MOV A,R5 ;
364C MOV B,R3 ;
364E DIV AB ;
364F MOV R3,A ;
3650 MOV R2,#00 ;
3652 MOV 05,R3 ;
3654 MOV 04,R2 ;
3656 LCALL 5384 ;
3659 INC A ;
365A NOP ;
365B LCALL 50BF ;
365E JNZ 3663 ;
3660 LJMP 36FC ;
3663 MOV A,#07 ;
3665 ADD A,R7 ;
3666 MOV R3,A ;
3667 CLR A ;
3668 ADDC A,R6 ;
3669 MOV R2,A ;
366A LCALL 5234 ;
366D LJMP 8A83 ;
3670 MOV DPL,R3 ;
3672 MOVX A,@DPTR ;
3673 MOV R3,A ;
3674 LCALL 53B7 ;
3677 INC @R0 ;
3678 NOP ;
3679 LCALL 5378 ;
367C INC @R0 ;
367D NOP ;
367E JNZ 3687 ;
3680 MOV R3,#30 ;
3682 LCALL 53B7 ;
3685 INC @R0 ;
3686 NOP ;
3687 LCALL 537E ;
368A INC @R0 ;
368B NOP ;
368C MOV R3,#D0 ;
368E MOV A,R3 ;
368F ADD A,R5 ;
3690 MOV R3,A ;
3691 MOV 05,R3 ;
3693 MOV R3,#10 ;
3695 MOV A,R5 ;
3696 MOV B,R3 ;
3698 MUL AB ;
3699 MOV R3,A ;
369A MOV 05,R3 ;
369C LCALL 5384 ;
369F INC R1 ;
36A0 NOP ;
36A1 LCALL 532D ;
36A4 MOV A,#07 ;
36A6 ADD A,R7 ;
36A7 MOV R3,A ;
36A8 CLR A ;
36A9 ADDC A,R6 ;
36AA MOV R2,A ;
36AB LCALL 5234 ;
36AE LJMP 8A83 ;
36B1 MOV DPL,R3 ;
36B3 MOVX A,@DPTR ;
36B4 MOV R3,A ;
36B5 LCALL 53B7 ;
36B8 INC @R0 ;
36B9 NOP ;
36BA LCALL 5378 ;
36BD INC @R0 ;
36BE NOP ;
36BF JNZ 36C8 ;
36C1 MOV R3,#30 ;
36C3 LCALL 53B7 ;
36C6 INC @R0 ;
36C7 NOP ;
36C8 LCALL 537E ;
36CB INC @R0 ;
36CC NOP ;
36CD MOV R3,#D0 ;
36CF MOV A,R3 ;
36D0 ADD A,R5 ;
36D1 MOV R3,A ;
36D2 MOV 05,R3 ;
36D4 MOV R3,#0F ;
36D6 MOV A,R3 ;
36D7 ANL A,R5 ;
36D8 MOV R3,A ;
36D9 MOV 05,R3 ;
36DB MOV A,#09 ;
36DD ADD A,R7 ;
36DE MOV R3,A ;
36DF CLR A ;
36E0 ADDC A,R6 ;
36E1 MOV R2,A ;
36E2 LCALL 5234 ;
36E5 LJMP 8A83 ;
36E8 MOV DPL,R3 ;
36EA MOVX A,@DPTR ;
36EB ORL A,R5 ;
36EC MOVX @DPTR,A ;
36ED MOV R3,A ;
36EE MOV A,#04 ;
36F0 ADD A,R7 ;
36F1 MOV R3,A ;
36F2 CLR A ;
36F3 ADDC A,R6 ;
36F4 MOV R2,A ;
36F5 LCALL 5234 ;
36F8 LJMP 0236 ; (R6R7-2)=R2 (R6R7-1)=R3 R6R7-=2
36FB ORL A,#02 ;
36FD ANL A,@R0 ;
36FE DEC R7 ;
36FF MOV A,#02 ;
3701 MOV R0,#00 ;
3703 MOV R1,#07 ;
3705 LCALL 55DB ;
3708 LCALL 537E ;
370B INC R0 ;
370C NOP ;
370D MOV R3,#0F ;
370F MOV A,R3 ;
3710 ANL A,R5 ;
3711 MOV R3,A ;
3712 LCALL 53B7 ;
3715 INC A ;
3716 NOP ;
3717 LCALL 537E ;
371A INC R0 ;
371B NOP ;
371C MOV R3,#04 ;
371E MOV R4,#00 ;
3720 LCALL 52EF ;
3723 LCALL 53B7 ;
3726 INC 00 ;
3728 MOV R5,#0A ;
372A MOV A,#05 ;
372C ADD A,R7 ;
372D MOV R3,A ;
372E CLR A ;
372F ADDC A,R6 ;
3730 MOV R2,A ;
3731 MOV DPH,R2 ;
3733 MOV DPL,R3 ;
3735 MOVX A,@DPTR ;
3736 MOV B,R5 ;
3738 MUL AB ;
3739 MOVX @DPTR,A ;
373A MOV R3,A ;
373B LCALL 537E ;
373E INC 00 ;
3740 LCALL 5378 ;
3743 INC A ;
3744 NOP ;
3745 MOV A,R3 ;
3746 ADD A,R5 ;
3747 MOV R3,A ;
3748 LCALL 53B7 ;
374B INC @R0 ;
374C NOP ;
374D LCALL 5378 ;
3750 INC @R0 ;
3751 NOP ;
3752 LJMP 561F ;
3755 MOV A,#02 ;
3757 MOV R0,#00 ;
3759 MOV R1,#08 ;
375B LCALL 55DB ;
375E MOV R3,#01 ;
3760 MOV R2,#00 ;
3762 LCALL 53BD ;
3765 INC @R0 ;
3766 NOP ;
3767 MOV R5,#00 ;
3769 MOV R4,#00 ;
376B LCALL 5384 ;
376E INC R2 ;
376F NOP ;
3770 LCALL 5335 ;
3773 LCALL 537E ;
3776 INC R5 ;
3777 NOP ;
3778 MOV R3,#FF ;
377A MOV A,R3 ;
377B ADD A,R5 ;
377C MOV R3,A ;
377D LCALL 53B7 ;
3780 INC A ;
3781 NOP ;
3782 LCALL 537E ;
3785 INC A ;
3786 NOP ;
3787 MOV R3,#00 ;
3789 LCALL 5118 ;
378C JZ 37EA ;
378E LCALL 5388 ;
3791 INC R0 ;
3792 NOP ;
3793 LCALL 5378 ;
3796 INC A ;
3797 NOP ;
3798 MOV A,R3 ;
3799 RLC A ;
379A CLR A ;
379B SUBB A,ACC ;
379D MOV R2,A ;
379E LCALL 53EA ;
37A1 MOV DPH,R2 ;
37A3 MOV DPL,R3 ;
37A5 MOVX A,@DPTR ;
37A6 MOV R3,A ;
37A7 MOV R2,#00 ;
37A9 MOV DPTR,#0002 ;
37AC LCALL 36FF ;
37AF LCALL 53B7 ;
37B2 INC 00 ;
37B4 LCALL 537E ;
37B7 INC 00 ;
37B9 MOV R4,#00 ;
37BB LCALL 5384 ;
37BE INC @R0 ;
37BF NOP ;
37C0 LCALL 53FB ;
37C3 MOV 05,R3 ;
37C5 MOV 04,R2 ;
37C7 LCALL 5384 ;
37CA INC R2 ;
37CB NOP ;
37CC LCALL 5044 ;
37CF MOV R5,#64 ;
37D1 MOV R4,#00 ;
37D3 MOV A,#06 ;
37D5 ADD A,R7 ;
37D6 MOV R3,A ;
37D7 CLR A ;
37D8 ADDC A,R6 ;
37D9 MOV R2,A ;
37DA LCALL 5056 ;
37DD MOV A,#04 ;
37DF ADD A,R7 ;
37E0 MOV R3,A ;
37E1 CLR A ;
37E2 ADDC A,R6 ;
37E3 MOV R2,A ;
37E4 LCALL 523A ;
37E7 AJMP 3080 ;
37E9 SUBB A,R0 ;
37EA LJMP 561F ;
37ED MOV A,#02 ;
37EF MOV R0,#00 ;
37F1 MOV R1,#08 ;
37F3 LCALL 55DB ;
37F6 MOV R3,#80 ;
37F8 LCALL 53B7 ;
37FB INC 00 ;
37FD LCALL 537E ;
3800 INC R1 ;
3801 NOP ;
3802 MOV R3,#03 ;
3804 MOV R4,#00 ;
3806 LCALL 52EF ;
3809 LCALL 53B7 ;
380C INC @R0 ;
380D NOP ;
380E LCALL 537E ;
3811 INC R1 ;
3812 NOP ;
3813 MOV R3,#07 ;
3815 MOV A,R3 ;
3816 ANL A,R5 ;
3817 MOV R3,A ;
3818 LCALL 53B7 ;
381B INC @R1 ;
381C NOP ;
381D LCALL 537E ;
3820 INC @R1 ;
3821 NOP ;
3822 MOV A,#05 ;
3824 ADD A,R7 ;
3825 MOV R3,A ;
3826 CLR A ;
3827 ADDC A,R6 ;
3828 MOV R2,A ;
3829 LCALL 5068 ;
382C MOV R3,#08 ;
382E MOV DPTR,#11C5 ;
3831 MOV A,R3 ;
3832 MOVX @DPTR,A ;
3833 MOV R3,#02 ;
3835 MOV DPTR,#11C6 ;
3838 MOV A,R3 ;
3839 MOVX @DPTR,A ;
383A MOV R3,#00 ;
383C MOV DPTR,#11C7 ;
383F MOV A,R3 ;
3840 MOVX @DPTR,A ;
3841 MOV R3,#D0 ;
3843 MOV DPTR,#11C8 ;
3846 MOV A,R3 ;
3847 MOVX @DPTR,A ;
3848 MOV R3,#00 ;
384A MOV DPTR,#11C9 ;
384D MOV A,R3 ;
384E MOVX @DPTR,A ;
384F LCALL 5378 ;
3852 INC @R0 ;
3853 NOP ;
3854 MOV DPTR,#11CA ;
3857 MOV A,R3 ;
3858 MOVX @DPTR,A ;
3859 MOV R3,#01 ;
385B MOV DPTR,#11CB ;
385E MOV A,R3 ;
385F MOVX @DPTR,A ;
3860 LCALL 5378 ;
3863 INC 00 ;
3865 MOV DPTR,#11CC ;
3868 MOV A,R3 ;
3869 MOVX @DPTR,A ;
386A MOV R3,#C5 ;
386C MOV R2,#11 ;
386E MOV DPTR,#0002 ;
3871 LCALL 32FF ;
3874 LCALL 53B7 ;
3877 INC A ;
3878 NOP ;
3879 LCALL 5378 ;
387C INC A ;
387D NOP ;
387E JZ 388C ;
3880 LCALL 537E ;
3883 INC A ;
3884 NOP ;
3885 MOV R3,#FF ;
3887 LCALL 5159 ;
388A JZ 38CF ;
388C MOV R5,#04 ;
388E MOV R4,#41 ;
3890 LCALL 5378 ;
3893 INC @R0 ;
3894 NOP ;
3895 MOV R2,#00 ;
3897 LCALL 53EA ;
389A MOV DPH,R2 ;
389C MOV DPL,R3 ;
389E MOVX A,@DPTR ;
389F MOV R3,A ;
38A0 MOV 05,R3 ;
38A2 MOV A,#05 ;
38A4 ADD A,R7 ;
38A5 MOV R3,A ;
38A6 CLR A ;
38A7 ADDC A,R6

← previous
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT