Emulación de IBM System/23 en MAME
- WhatIsAMan
- Mensajes: 1293
- Registrado: 10 Dic 2017 17:06
- Ubicación: El castillo invertido
- Has thanked: 409 times
- Been thanked: 506 times
- Contactar:
Emulación de IBM System/23 en MAME
Buenos dias,
Separo este hilo del otro que tenemos sobre el Datamaster para usarlo de los avances que vaya haciendo progresivamente con esta tarea.
Ayer obtuve por primera vez el sistema en el menú, pero el driver no parece hacer gran cosa. Sin embargo es un gran avance desde mi perspectiva dado que mis conocimientos sobre C++ y MAME son casi nulos.
La idea es ir añadiendo cosas en el orden especificado por los diagnósticos de la ROM.
Os iré contando
Separo este hilo del otro que tenemos sobre el Datamaster para usarlo de los avances que vaya haciendo progresivamente con esta tarea.
Ayer obtuve por primera vez el sistema en el menú, pero el driver no parece hacer gran cosa. Sin embargo es un gran avance desde mi perspectiva dado que mis conocimientos sobre C++ y MAME son casi nulos.
La idea es ir añadiendo cosas en el orden especificado por los diagnósticos de la ROM.
Os iré contando
- WhatIsAMan
- Mensajes: 1293
- Registrado: 10 Dic 2017 17:06
- Ubicación: El castillo invertido
- Has thanked: 409 times
- Been thanked: 506 times
- Contactar:
Re: Emulación de IBM System/23 en MAME
El driver tenía muchos errores que he ido subsanando. Luego, descubrí como ejecutar MAME en modo de depuración y juntamente con el debugger pude ver lo que pasaba tras la escena...
Faltaba un 8255 (y luego lo añadí mal). Este error me permitió descubrir que antes de escribir en el display de LEDs el ordenador ya hace un test, con lo que hay una comprobación no documentada en el listado del manual de servicio. Básicamente, comprueba que el 8255 que gestiona la comunicación con el teclado esté conectado y que el valor que escribe en su puerto A, tras ser leído, sea correcto. Si no es correcto entonces el ordenador se cuelga voluntariamente, en caso contrario escribe un "uno" en el display y empieza el chequeo del procesador.
Ahora se me cuelga en el test de CPU, pero iré solucionando los problemas y estudiando los diagnósticos. Eso me proporcionará muchísima información sobre el sistema. La verdad es que es genial poder contar con un emulador, aunque éste esté incompleto porque ayuda mucho a comprender el ordenador estudiado.
Faltaba un 8255 (y luego lo añadí mal). Este error me permitió descubrir que antes de escribir en el display de LEDs el ordenador ya hace un test, con lo que hay una comprobación no documentada en el listado del manual de servicio. Básicamente, comprueba que el 8255 que gestiona la comunicación con el teclado esté conectado y que el valor que escribe en su puerto A, tras ser leído, sea correcto. Si no es correcto entonces el ordenador se cuelga voluntariamente, en caso contrario escribe un "uno" en el display y empieza el chequeo del procesador.
Ahora se me cuelga en el test de CPU, pero iré solucionando los problemas y estudiando los diagnósticos. Eso me proporcionará muchísima información sobre el sistema. La verdad es que es genial poder contar con un emulador, aunque éste esté incompleto porque ayuda mucho a comprender el ordenador estudiado.
- ackerman
- Mensajes: 537
- Registrado: 05 Feb 2019 21:32
- Ubicación: Asturias
- Has thanked: 231 times
- Been thanked: 597 times
- Contactar:
Re: Emulación de IBM System/23 en MAME
Enhorabuena @WhatIsAMan, ánimo y mucha suerte.
Del IBM System/23 no tengo ni idea, pero fijo que con calma y cariño, vas a conseguir llegar a buen puerto.
El MAME, hay diferencias, entre los orígenes de Nicola Salmoria con DJGPP y los actuales, que tiran de complementos con LUA, python y demás.
Como se tiene histórico de cada versión, lo ideal es tirar de los entornos exactos que necesita, que en ocasiones, puede requerir máquina virtual, mientras no se tenga algo estable, dado que hay muchas diferencias entre sintaxis de C++ entre versiones.
Todo se compone de drivers, que al final son plantillas, para CPU, video y sonido. A su vez, cada uno, tiene su custom, con llamadas a su vez al driver genérico de CPU, video y audio.
Y luego estaría la plantilla de mapeo de memoria, que a su vez, está también la genérica, así con métodos custom para las partes mágicas.
Aunque está pensado para encajar cajas (LEGO), siempre en la parte custom, se hace la magia. Esta parte es donde entraría el conocimiento de la máquina original, de forma, que cuanto más se conozca, mejores resultados.
Vas a necesitar C++, no por el nivel, sino más bien, por la técnica, es decir, desarrollo ágil.
La ventaja, que hay mucha documentación de muchos temas, aunque de otros, es casi nula.
Lo interesante de todo esto, que cuando tengas dominado todo, te darás cuenta, que puedes hacerte un custom emulator, saltándote el MAME.
Desde el punto de vista ingenieril, el MAME es una obra de arte, sobre todo por la forma de resolver los problemas de manera custom, extendiendo la mantenibilidad, como se ha visto con el paso del tiempo.
Del IBM System/23 no tengo ni idea, pero fijo que con calma y cariño, vas a conseguir llegar a buen puerto.
El MAME, hay diferencias, entre los orígenes de Nicola Salmoria con DJGPP y los actuales, que tiran de complementos con LUA, python y demás.
Como se tiene histórico de cada versión, lo ideal es tirar de los entornos exactos que necesita, que en ocasiones, puede requerir máquina virtual, mientras no se tenga algo estable, dado que hay muchas diferencias entre sintaxis de C++ entre versiones.
Todo se compone de drivers, que al final son plantillas, para CPU, video y sonido. A su vez, cada uno, tiene su custom, con llamadas a su vez al driver genérico de CPU, video y audio.
Y luego estaría la plantilla de mapeo de memoria, que a su vez, está también la genérica, así con métodos custom para las partes mágicas.
Aunque está pensado para encajar cajas (LEGO), siempre en la parte custom, se hace la magia. Esta parte es donde entraría el conocimiento de la máquina original, de forma, que cuanto más se conozca, mejores resultados.
Vas a necesitar C++, no por el nivel, sino más bien, por la técnica, es decir, desarrollo ágil.
La ventaja, que hay mucha documentación de muchos temas, aunque de otros, es casi nula.
Lo interesante de todo esto, que cuando tengas dominado todo, te darás cuenta, que puedes hacerte un custom emulator, saltándote el MAME.
Desde el punto de vista ingenieril, el MAME es una obra de arte, sobre todo por la forma de resolver los problemas de manera custom, extendiendo la mantenibilidad, como se ha visto con el paso del tiempo.
- jltursan
- Mensajes: 6118
- Registrado: 20 Sep 2011 13:59
- Ubicación: Madrid
- Has thanked: 1029 times
- Been thanked: 2116 times
- Contactar:
Re: Emulación de IBM System/23 en MAME
Es todo un reto, vas a tener que ser perseverante y dedicarle esfuerzo. ¡Ánimo!
- WhatIsAMan
- Mensajes: 1293
- Registrado: 10 Dic 2017 17:06
- Ubicación: El castillo invertido
- Has thanked: 409 times
- Been thanked: 506 times
- Contactar:
Re: Emulación de IBM System/23 en MAME
Gracias por vuestro apoyo.
Tengo una duda sobre displays de siete segmentos. Me imagino que en algún lugar de la Mancha de cuyo nombre no quiero acordarme, había un código de conversión hexadecimal a siete segmentos. Alguien sabe por casualidad dónde?
Gracias y saludos
Tengo una duda sobre displays de siete segmentos. Me imagino que en algún lugar de la Mancha de cuyo nombre no quiero acordarme, había un código de conversión hexadecimal a siete segmentos. Alguien sabe por casualidad dónde?
Gracias y saludos
- cacharreo
- Mensajes: 2213
- Registrado: 03 Jun 2023 09:37
- Ubicación: /home/cacharreo/
- Has thanked: 413 times
- Been thanked: 786 times
Re: Emulación de IBM System/23 en MAME
Tal vez te sirva esto. Suerte.
Siendo A, B, C y D los 4 bits de entrada, las salidas expresadas como suma de productos serán:
a=A'BD+A'C+AD'+BC+B'D'
b=A'C'D'+AC'D+A'CD+B'D'+D'C'
c=AB'+A'B+A'D+B'C'+C'D
d=A'B'D'+AC'+B'CD+BC'D+BCD'
e=AB+AC+B'D'+CD'
f=AB'+A'B+AC+BD'+C'D'
g=AB'+A'BC'+AD+B'C'+CD'
como tabla:
Si tienes el controlador para el MC14495P1 te debería bastar.
Siendo A, B, C y D los 4 bits de entrada, las salidas expresadas como suma de productos serán:
a=A'BD+A'C+AD'+BC+B'D'
b=A'C'D'+AC'D+A'CD+B'D'+D'C'
c=AB'+A'B+A'D+B'C'+C'D
d=A'B'D'+AC'+B'CD+BC'D+BCD'
e=AB+AC+B'D'+CD'
f=AB'+A'B+AC+BD'+C'D'
g=AB'+A'BC'+AD+B'C'+CD'
como tabla:
Si tienes el controlador para el MC14495P1 te debería bastar.
© cacharreo
- WhatIsAMan
- Mensajes: 1293
- Registrado: 10 Dic 2017 17:06
- Ubicación: El castillo invertido
- Has thanked: 409 times
- Been thanked: 506 times
- Contactar:
- retrolab
- Mensajes: 1109
- Registrado: 10 May 2014 18:06
- Ubicación: Andorra
- Has thanked: 84 times
- Been thanked: 184 times
- Contactar:
Re: Emulación de IBM System/23 en MAME
Eres un máquina Cacharreo!
Mi colección (provisional): https://bitspassats.com
- WhatIsAMan
- Mensajes: 1293
- Registrado: 10 Dic 2017 17:06
- Ubicación: El castillo invertido
- Has thanked: 409 times
- Been thanked: 506 times
- Contactar:
Re: Emulación de IBM System/23 en MAME
Sé que no es mucho, sin embargo os muestro el estado actual de la emulación.
Espero desencallarme pronto y poder seguir con los otros tests.
Espero desencallarme pronto y poder seguir con los otros tests.
- cacharreo
- Mensajes: 2213
- Registrado: 03 Jun 2023 09:37
- Ubicación: /home/cacharreo/
- Has thanked: 413 times
- Been thanked: 786 times
Re: Emulación de IBM System/23 en MAME
Muchas gracias.
De a poco. Habrá que echarle más horas que un reloj pero es un primer paso.WhatIsAMan escribió: ↑29 Dic 2024 14:12Sé que no es mucho, sin embargo os muestro el estado actual de la emulación.
...
Espero desencallarme pronto y poder seguir con los otros tests.
© cacharreo
- WhatIsAMan
- Mensajes: 1293
- Registrado: 10 Dic 2017 17:06
- Ubicación: El castillo invertido
- Has thanked: 409 times
- Been thanked: 506 times
- Contactar:
Re: Emulación de IBM System/23 en MAME
He forzado un valor alto en SID y he logrado alcanzar el test nº4 (memoria RAM). Ahora se va a complicar bastante la cosa, dado que hay cuatro valores de RAM obtenibles de entre cinco combinaciones distintas.
- cacharreo
- Mensajes: 2213
- Registrado: 03 Jun 2023 09:37
- Ubicación: /home/cacharreo/
- Has thanked: 413 times
- Been thanked: 786 times
Re: Emulación de IBM System/23 en MAME
Por intentar comprender el problema, ¿son cuatro slots diferentes? ¿la dirección de acceso es la misma o cambia según esté la RAM físicamente instalada?
© cacharreo
- WhatIsAMan
- Mensajes: 1293
- Registrado: 10 Dic 2017 17:06
- Ubicación: El castillo invertido
- Has thanked: 409 times
- Been thanked: 506 times
- Contactar:
Re: Emulación de IBM System/23 en MAME
Te enseño el manual: https://bitsavers.org/pdf/ibm/system23/ ... _Dec80.pdf
En la página 36 hay una figura con la tabla. En la 38 hay los pinouts de los slots de RAM.
El System/23 cuenta con dos slots de memoria dinámica, cuya página depende directamente de los señales /RAS y /CAS que se seleccionen. En principio las tarjetas de 32KB no tienen jumpers por lo que están configuradas a tomar ciertos valores sin hacer nada. Mientras, las de 64KB tienen jumpers de configuración. Dicha configuración debe ser cambiada en cualquiera de los casos en que exista una placa de 64KB, tanto si está sola como si está acompañada, si está en el slot principal o en el secundario. Es un buen marrón...
EDITO: Tengo los esquemas de las tarjetas de 64KB, pero no los de las tarjetas de 32KB dado que no las he podido estudiar.
Saludos
- cacharreo
- Mensajes: 2213
- Registrado: 03 Jun 2023 09:37
- Ubicación: /home/cacharreo/
- Has thanked: 413 times
- Been thanked: 786 times
Re: Emulación de IBM System/23 en MAME
Gracias por el manual de servicio. En las páginas 73 y 74 está bien descrito este asunto.
Entiendo que cada uno de los dos slots condiciona la dirección física del primer bloque de 32kB (2 páginas de 16kB) de la tarjeta insertada y que en el caso de las tarjetas de 64kB hay un segundo bloque de 32kB con otras dos páginas de 16kB a las que se asigna una u otra dirección según la configuración de los jumpers. En principio creo que lo lógico sería esperar que el direccionamiento de cada página de 16kB esté determinado por, en primer lugar, el esquema de la placa madre y, en segundo, por la configuración de jumpers en el caso de las tarjetas de almacenamiento R/W de 64kB. ¿Sería correcto así?
Entiendo que cada uno de los dos slots condiciona la dirección física del primer bloque de 32kB (2 páginas de 16kB) de la tarjeta insertada y que en el caso de las tarjetas de 64kB hay un segundo bloque de 32kB con otras dos páginas de 16kB a las que se asigna una u otra dirección según la configuración de los jumpers. En principio creo que lo lógico sería esperar que el direccionamiento de cada página de 16kB esté determinado por, en primer lugar, el esquema de la placa madre y, en segundo, por la configuración de jumpers en el caso de las tarjetas de almacenamiento R/W de 64kB. ¿Sería correcto así?
© cacharreo
- WhatIsAMan
- Mensajes: 1293
- Registrado: 10 Dic 2017 17:06
- Ubicación: El castillo invertido
- Has thanked: 409 times
- Been thanked: 506 times
- Contactar:
Re: Emulación de IBM System/23 en MAME
Correcto. Sin embargo sólo contamos con el esquema de la placa de memoria, el de la placa base es aún WIP...