Altair, Destroyer (Cidelsa), Ayuda entre todos
a_polo2
view post Escrito el 4/10/2006, 13:18

Viciado

Grupo: Member
Mensajes: 64


Status: Offline: ultima azione eseguita il 21/12/2006, 18:20


empandropo, solucionado el problema del correo. Ya te la he enviado.
- Bubu -
view post Escrito el 4/10/2006, 22:29
Avatar

¿Andandará la meta?

Grupo: Moderadores generales
Mensajes: 1136
Location: En los 80


Status: Offline: ultima azione eseguita il 15/1/2007, 01:00


Quillos, necesito ayudita: alguien que le dedique un rato (ya que yo entre semana no puidor), y se empape la parte del manual del micro y me explique qué significan y para que sirven los comandos OUT, pues parece que así es como se dibuja en pantalla.

Lo agradeceré avanzando en la emulación, jiji.
a_polo2
view post Escrito el 5/10/2006, 00:08

Viciado

Grupo: Member
Mensajes: 64


Status: Offline: ultima azione eseguita il 21/12/2006, 18:20


Bubu, acabo de mandar un mail a Mike Ridley por si nos puede ayudar con el asunto del 'OUT' , espero q me conteste pronto. En cuanto tenga la informacion la posteo.

Un saludo. Dani.
- Bubu -
view post Escrito el 5/10/2006, 00:25
Avatar

¿Andandará la meta?

Grupo: Moderadores generales
Mensajes: 1136
Location: En los 80


Status: Offline: ultima azione eseguita il 15/1/2007, 01:00


OK, muchas gracias, espero emocionado la respuesta.
a_polo2
view post Escrito el 5/10/2006, 00:54

Viciado

Grupo: Member
Mensajes: 64


Status: Offline: ultima azione eseguita il 21/12/2006, 18:20


bubu, las respuesta de Mike:
' Hello Dani,
OUT refers to the CDP1802 OUT instruction. The cpu can communicate with
up to 7 devices. When the 1802 executes an OUT instruction the n-lines of
the 1802 are set to the device number and then a value from memory is
transferred to the device. All the CDP1800 series devices communicate with
the cpu using OUT instructions. For example, the CDP1869 (video controller
chip) expectes certain OUT instructions from the CDP1802 (cpu) in order to
set screen mode, setup character maps as well as placing characters onto the
screen.
I am willing to help you with your project, I have extensive 1802
programming knowledge as well as 1800 series hardware knowledge. Just let
me know what exactly you are trying to do and supply me with any pertinant
information and I will see what I can do to help you out.
Mike'
- Bubu -
view post Escrito el 5/10/2006, 01:12
Avatar

¿Andandará la meta?

Grupo: Moderadores generales
Mensajes: 1136
Location: En los 80


Status: Offline: ultima azione eseguita il 15/1/2007, 01:00


¡¡ Cojones, qué rapidez !! ¡¡ y yo que pensaba esperar un par de semanas o así !! Maravillooooooosooo....

Si le pides que te ponga un ejemplo simple de establecer un modo gráfico e imprimir un carácter en la posición (10, 15), el empujón que le puede dar a esto va a ser brutal.

Ojalá haya suerte...

Gracias !!
Staryon
view post Escrito el 5/10/2006, 05:12
Avatar

R Tape loading error, 0:1

Grupo: Member
Mensajes: 656


Status: Offline: ultima azione eseguita il 24/11/2006, 00:43


Bubu:

Mira la instrucción SEX. He visto que estás haciendo RX <- R2 para el byte E2.
Creo que no es correcto, porque esa instrucción no asigna un registro, sino una constante.
Cuando dice EN, N es el valor de la constante, no del registro R(N). Por lo tanto lo correcto sería RX <- 2

A lo mejor me equivoco, pero creo que es así.


Un par de preguntillas más.

Cuando dices que la RAM empieza en la dirección 30000, ¿no querrías decir 3000h? El último byte de la ROM acaba en el byte 2FFF y por eso me extrañó.

Una cosa que no entiendo. He visto que has llegado a almacenar algunas direcciones de memoria en registros. Aquí por ejemplo:

CODE
R2 = 30FF
RC = 3000
RD = 3000
R9 = 0144
R3 = 002A
R4 = 0094
R5 = 00A6
R8 = 00DC


¿Cómo has obtenido esos valores de memoria? Es que la primera instrucción que veo en la ROM que accede a la memoria es LDI (byte F8) y me pareció que no estabas ejecutando esa instrucción.

Bueno, sigo mirando el tema de comunicación con el chip gráfico. Lo suyo es que tu desensamblador se ejecute hasta que llegue a la instrucción OUT.
Si te fijas esa instrucción lo que hace es poner M(R(X)) en el bus. Si consigues ver qué hay en ese byte M(R(X)), podremos ver
exactamente qué se pone en el bus. Una vez que tengamos ese dato la cosa sería analizar ese byte y ver cómo está distribuida la información del gráfico ahí.

Modificado por Staryon - 5/10/2006, 00:53
Staryon
view post Escrito el 5/10/2006, 15:15
Avatar

R Tape loading error, 0:1

Grupo: Member
Mensajes: 656


Status: Offline: ultima azione eseguita il 24/11/2006, 00:43


Acabo de escribir a Mike para preguntarle un par de cosillas sobre los gráficos. Cualquier cosa, os digo después.
a_polo2
view post Escrito el 5/10/2006, 15:40

Viciado

Grupo: Member
Mensajes: 64


Status: Offline: ultima azione eseguita il 21/12/2006, 18:20


udinel, c@brero, bubu, staryon y todos los demas. Jamas pense que esto podia llegar tan lejos. Gracias.
Staryon
view post Escrito el 5/10/2006, 17:42
Avatar

R Tape loading error, 0:1

Grupo: Member
Mensajes: 656


Status: Offline: ultima azione eseguita il 24/11/2006, 00:43


Me ha contestado Mike. Dice que tiene algo de código para el CDP1869/70, pero que nos preparemos, porque es bastante complicado de programar, ya que no tiene mapas de caracteres y nos lo tenemos que generar nosotros mismos, antes de poner algo en pantalla. Me ha dicho que me lo mandará luego. Cuando lo tenga, lo cuelgo.

DJMETROLICO
view post Escrito el 5/10/2006, 17:48
Avatar

Primo del Kratos

Grupo: Moderadores de subforos
Mensajes: 2901


Status: Offline: ultima azione eseguita il 16/1/2007, 00:44


Joder que curro tios!!

sois Supermarcianos !
un saludo y animo
- Bubu -
view post Escrito el 5/10/2006, 23:27
Avatar

¿Andandará la meta?

Grupo: Moderadores generales
Mensajes: 1136
Location: En los 80


Status: Offline: ultima azione eseguita il 15/1/2007, 01:00


Staryon, te respondo:

(1) Respecto al SEX (qué bonita palabra...) que viene de SET X, no es lo que tú dices, ya que si fuera RX=2, ¿Qué sería, igualar el registro RX al valor 2? ¿Pa qué? Yo lo he traducido a RX <- R2, lo que significa que el registro R2 va a tomar el papel de registro RX. Todo lo que le pase a R2, es como si le pasase a RX.

(2) Efectivamente, quise decir que la RAM empieza en 0x3000, no en 0x30000. Esto es el efecto del sueño total de no dormir en toa la semana casi ná por lo del Altair, jiji.

(3) Ese listado que adjuntas lo hice manualmente. Como sabes, en esta CPU los registros son de 16 bits pero se cargan sólo 8 bits, con lo que hay que hacerlo en 2 veces. En la rom original estaba p.ej. R2.h=10, R2.l=23, pues yo que soy mu flojo escribí R2=1023.
Fue sólo por resumir el texto y que se viera más claro, pero eso sí, en el desensamblador que he hecho ya sale como debe ser, en 2 partes.

(4) El emualtair ya desensambla, y ejecuta el código máquina, pero con el poblema (de momento) de que no le he implementado saltos, por lo que de momento me es imposible saber cuánto valen los registros justo antes de un OUT, pero todo se andará, jiji.


Bueno, gracias por tu interés. Espero pasarte el emualtair cuando esté medio decente, al menos que ejecute el código máquina y calcule registros y sea capaz de saltar y grabar en RAM. EL listado desensamblado ya te lo puedo pasar si quieres.

Por cierto, Altair sí tiene mapa de caracteres, lo que a lo mejor Mike quiso decir es que en el ejemplo que te va a pasar no van los juegos de caracteres...

Staryon
view post Escrito el 6/10/2006, 00:07
Avatar

R Tape loading error, 0:1

Grupo: Member
Mensajes: 656


Status: Offline: ultima azione eseguita il 24/11/2006, 00:43


QUOTE (- Bubu - @ 5/10/2006, 18:27)
Staryon, te respondo:

(1) Respecto al SEX (qué bonita palabra...) que viene de SET X, no es lo que tú dices, ya que si fuera RX=2, ¿Qué sería, igualar el registro RX al valor 2? ¿Pa qué? Yo lo he traducido a RX <- R2, lo que significa que el registro R2 va a tomar el papel de registro RX. Todo lo que le pase a R2, es como si le pasase a RX.

Es que en ese caso la documentación está mal, porque entonces debería decir R(N)->X en vez de N->X
Ten en cuenta que en toda la documentación siempre se hace referencia a los registros R de esa forma, mediante R(N)

QUOTE (- Bubu - @ 5/10/2006, 18:27)
> ¿Qué sería, igualar el registro RX al valor 2? ¿Pa qué?

Tiene mucho sentido, ya que si miras la descripción de X dice "Specifies which R register is data pointer" Por lo tanto tiene sentido que X=2
- Bubu -
view post Escrito el 6/10/2006, 00:20
Avatar

¿Andandará la meta?

Grupo: Moderadores generales
Mensajes: 1136
Location: En los 80


Status: Offline: ultima azione eseguita il 15/1/2007, 01:00


¿Y no es lo mismo especificar que el registro X va a ser el 2, que decir RX <- R2? Es que si en el doc dijera que iguala RX a RN, estaría significando que RX se carga con el valor de RN. Y eso no es. Lo que quiere decir es que el registro RX apunta al RN
Staryon
view post Escrito el 6/10/2006, 00:31
Avatar

R Tape loading error, 0:1

Grupo: Member
Mensajes: 656


Status: Offline: ultima azione eseguita il 24/11/2006, 00:43


Yo creo que estamos diciendo lo mismo. La diferencia es que yo opino que físicamente el registro X va a contener exactamente 0010, y tú no piensas así. Pero bueno, da igual, ya iremos depurando el código.

Pasando a otra cosa...

He hecho un poco de limpieza en los emails que me ha mandado Mike y lo he puesto todo en un documento.
Lo podéis bajar de aquí:

How the 1869/70 uses display memory

Modificado por Staryon - 5/10/2006, 20:02
269 respuesta(s) desde el 6/2/2006, 13:36