| |
| | Altair, Destroyer (Cidelsa), Ayuda entre todos | |
| |  | |  |
 | a_polo2 | | Viciado
Grupo: MemberMensajes: 64 Status:  | |
| empandropo, solucionado el problema del correo. Ya te la he enviado. |
|  |
 | - Bubu - | |  ¿Andandará la meta?
 Grupo: Moderadores generalesMensajes: 1136 Location: En los 80 Status:  | |
| 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 | | Viciado
Grupo: MemberMensajes: 64 Status:  | |
| 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 - | |  ¿Andandará la meta?
 Grupo: Moderadores generalesMensajes: 1136 Location: En los 80 Status:  | |
| OK, muchas gracias, espero emocionado la respuesta. |
|  |
 | a_polo2 | | Viciado
Grupo: MemberMensajes: 64 Status:  | |
| 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 - | |  ¿Andandará la meta?
 Grupo: Moderadores generalesMensajes: 1136 Location: En los 80 Status:  | |
| ¡¡ 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 | |  R Tape loading error, 0:1
Grupo: MemberMensajes: 656 Status:  | |
| 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 | |  R Tape loading error, 0:1
Grupo: MemberMensajes: 656 Status:  | |
| Acabo de escribir a Mike para preguntarle un par de cosillas sobre los gráficos. Cualquier cosa, os digo después. |
|  |
 | a_polo2 | | Viciado
Grupo: MemberMensajes: 64 Status:  | |
| udinel, c@brero, bubu, staryon y todos los demas. Jamas pense que esto podia llegar tan lejos. Gracias. |
|  |
 | Staryon | |  R Tape loading error, 0:1
Grupo: MemberMensajes: 656 Status:  | |
| 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 | |  Primo del Kratos
 Grupo: Moderadores de subforosMensajes: 2901 Status:  | |
| Joder que curro tios!!
sois Supermarcianos ! un saludo y animo |
|  |
 | - Bubu - | |  ¿Andandará la meta?
 Grupo: Moderadores generalesMensajes: 1136 Location: En los 80 Status:  | |
| 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 | |  R Tape loading error, 0:1
Grupo: MemberMensajes: 656 Status:  | |
| 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 - | |  ¿Andandará la meta?
 Grupo: Moderadores generalesMensajes: 1136 Location: En los 80 Status:  | |
| ¿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 | |  R Tape loading error, 0:1
Grupo: MemberMensajes: 656 Status:  | |
| 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 memoryModificado por Staryon - 5/10/2006, 20:02 |
|  |
| 269 respuesta(s) desde el 6/2/2006, 13:36 |
| | | | |
|