NotFound Senior Member
Mensajes: 131
|
Emulador de CP/M para Linux. (domingo, 11 de enero 2004, 11:49) |
|
Hola.
Aprovechando que tenía unos días libres he empezado un nuevo proyecto retro: un emulador de CP/M.
No es un emulador de una máquina en la que corra CP/M, no, emula solamente el microprocesador para ejecutar los programas de usuario y todas las llamada a CP/M son capturadas y ejecutadas nativamente. O sea, que no hay imágenes de disco ni cosas por el estilo, abre ficheros directamente de disco.
Por ahora es solamente para Linux, quizá más adelante lo adapte a Windows.
Se llama Alia/DOS y podeis descargar una versión muy preliminar (pero que ya es capaz de ejecutar, por ejemplo, el Basic del Amstrad PCW) de:
www.arrakis.es/~ninsesabe/aliados/
Suponiendo que me de tiempo a escribir la página, claro, si no probar dentro de uno o dos días.
Salu2 |
Estado: desconectado |
|
Orden de las respuestas: última respuesta primero :: primera respuesta primero |
colossus Moderador
Mensajes: 315
|
RE: Emulador de CP/M para Linux. (domingo, 11 de enero 2004, 12:20) |
|
Buenas, NotFound:
Sencillamente impresionante: una semana de ausencia y vuelves con un compilador y un emulador de CP/M... Aunque dados mis escasos conocimientos de CP/M no me voy a enterar de mucho estoy deseando echarles un ojo cuando los hayas colgado en tu página.
A parte de para felicitarte escribo para decirte (por si tú no dispones de uno) que si quieres que haga algún tipo de prueba en el PCW8256 que tengo funcionando no tienes más que decirlo.
Un saludo: Colossus
PD: ¿Has mandado las Z80Util al W.O.S.?
|
Estado: desconectado |
|
NotFound Senior Member
Mensajes: 131
|
RE: Emulador de CP/M para Linux. (domingo, 11 de enero 2004, 13:34) |
|
Citar:
Sencillamente impresionante: una semana de ausencia y vuelves con un compilador y un emulador de CP/M... Aunque dados mis escasos conocimientos de CP/M no me voy a enterar de mucho estoy deseando echarles un ojo cuando los hayas colgado en tu página. |
Ya están colgados los dos. Miasma lleva algunos asm de ejemplo, las pruebas que se pueden hacer de Alia/DOS es ejecutar cosas con él... y ver como la mayoría dicen "Función no soportada".
El principal secreto de poder hacerlo tan rápido es que la emulación de la CPU Z80 no me la he currado yo, he usado la de Joyce y/o la libz80, que son las dos GPL.
El ensamblador, en cambio, es mio hasta el último byte.
Citar:
A parte de para felicitarte escribo para decirte (por si tú no dispones de uno) que si quieres que haga algún tipo de prueba en el PCW8256 que tengo funcionando no tienes más que decirlo. |
Pues gracias, pero las pruebas que he necesitado las he hecho con Joyce. Bueno, saber que alguien lo ha probado en "la cosa real" no está de más, claro. Pues simplemente compilar los .asm de ejemplo que son para CP/M y probarlos en el PCW.
Citar:
PD: ¿Has mandado las Z80Util al W.O.S.? |
Si mal no recuerdo les había mandado un e-mail pero no me contestaron.
Salu2 |
Estado: desconectado |
|
colossus Moderador
Mensajes: 315
|
RE: Emulador de CP/M para Linux. (martes, 13 de enero 2004, 06:49) |
|
Buenas, NotFound:
Por fin he encontrado un ratiilo para ojear el alia/DOS.
Con los pocos programas para PCW que me he podido bajar de la red parece ir bastante bien. Por lo menos crea correctamente en mi disco duro los ficheros extraidos de los autodescomprimibles, aunque normalmente la cosa acaba con un "Not Supported" o algo por el estilo. El Mallard BASIC efectivamente funciona, y ejecuta programillas que no hagan cosas demasiado raras.
Un detalle: para compilarlo con "make" utilizando sólamente la biblioteca ImcZ80, además de comentar una línea en cpm.cpp como dices en el README, he tenido que eliminar el parámetro "-lZ80" de la línea 33 del Makefile.
Creo que eso es todo por ahora. En resumen me parece muy interesante. ¿Piensas añadirle algo más?
Un saludo: Colossus
PD: también he probado muy por encima el miasma, pero ya te ha hablado de él en ecss gente mucho más cualificada que yo
PD2: Citar:
El principal secreto de poder hacerlo tan rápido es que la emulación de la CPU Z80 no me la he currado yo... | Hombre, eso ya lo suponía
|
Estado: desconectado |
|
NotFound Senior Member
Mensajes: 131
|
RE: Emulador de CP/M para Linux. (martes, 13 de enero 2004, 07:25) |
|
Citar:
Con los pocos programas para PCW que me he podido bajar de la red parece ir bastante bien. Por lo menos crea correctamente en mi disco duro los ficheros extraidos de los autodescomprimibles, aunque normalmente la cosa acaba con un "Not Supported" o algo por el estilo. |
Dime un par de programas y de donde bajarlos, que hay tantas cosas que hacer que no se por cuales empezar, y un buen criterio es hacer que funcioen programas concretos.
Citar:
El Mallard BASIC efectivamente funciona, y ejecuta programillas que no hagan cosas demasiado raras. |
Pues lo mismo, dime un par de ellos que no funcionen.
Citar:
Un detalle: para compilarlo con "make" utilizando sólamente la biblioteca ImcZ80, además de comentar una línea en cpm.cpp como dices en el README, he tenido que eliminar el parámetro "-lZ80" de la línea 33 del Makefile.
|
Ah, sí, se me olvidó ese detalle, a ver si esta tarde lo arreglo.
Citar:
Creo que eso es todo por ahora. En resumen me parece muy interesante. ¿Piensas añadirle algo más? |
Claro, la idea es (con tiempo) emular CP/M Plus al completo, BIOS y BDOS... bueno, quizá las cosas de conmutación de bancos de memoria no, pero como hay versiones no bancadas eso no le quitaría generalidad. Lo que está hecho son simplemente las funciones que he ido necesitando implementar para que funcionen algunos programas y tener algo utilizable, pero esto es sólo el comienzo.
Salu2 |
Estado: desconectado |
|
colossus Moderador
Mensajes: 315
|
RE: Emulador de CP/M para Linux. (martes, 13 de enero 2004, 08:04) |
|
Hola:
Citar:
Dime un par de programas y de donde bajarlos, que hay tantas cosas que hacer que no se por cuales empezar, y un buen criterio es hacer que funcioen programas concretos. |
Pues el caso es que lo que probé era para PCW, y tampoco sé decirte si era un problema del CP/M en general o de la arquitectura PCW en particular.
De donde bajé cosas principalmente fue de: www.seasip.demon.co.uk/Cpm/software/amstrad.html y www.euronet.nl/users/fvempel/basic.html
Si tengo tiempo iré probando cosillas poco a poco y te iré comentando por MP los resultados, pero tú ya tienes por dónde empezar
Un saludo: Colossus
|
Estado: desconectado |
|
NotFound Senior Member
Mensajes: 131
|
RE: Emulador de CP/M para Linux. (martes, 13 de enero 2004, 10:22) |
|
Hola.
He echado un vistazo a los sitios que me comentas y las cosas parecen ser o específicas para PCW o utilidades que manejan los discos a bajo nivel. De las específicas me puede interesar más adelante alguno que usa gráficos a través de GSX, pero el soporte de GSX no está entre las cosas más prioritarias.
Lo que busco es software genérico de CP/M. Un wordstar, por ejemplo, estaría bien. Y de programas Basic, que no usen gráficos.
Salu2 |
Estado: desconectado |
|
colossus Moderador
Mensajes: 315
|
RE: Emulador de CP/M para Linux. (martes, 13 de enero 2004, 14:12) |
|
Citar:
Lo que busco es software genérico de CP/M. Un wordstar, por ejemplo, estaría bien. Y de programas Basic, que no usen gráficos |
Sí, eso pensaba yo... Para empezar he probado una par de programas BASIC a pelo, MASTER y MAU, y parecen ir bien siempre y cuando los ejecutes en un xterm de 90x32 caracteres (si no también van bien, pero no se entiende nada ). En los que se menciona "partialy in machine code" (por ejemplo el Blitz) cascan con un "BIOS CALL 45 unimplemented.".
Seguiré probando...
Un saludo: Colossus
|
Estado: desconectado |
|
NotFound Senior Member
Mensajes: 131
|
RE: Emulador de CP/M para Linux. (martes, 13 de enero 2004, 15:02) |
|
Citar:
Para empezar he probado una par de programas BASIC a pelo, MASTER y MAU, y parecen ir bien siempre y cuando los ejecutes en un xterm de 90x32 caracteres (si no también van bien, pero no se entiende nada ).
|
Sí, olvidé mencionar ese detalle. Claro, si el programa espera un terminal del poco usual tamaño del pcw hay que dárselo.
Por cierto, prueba a ejecutar el RPED.BAS, si mal no recuerdo del disco 1, en un terminal de más de 90 columnas y verás un curioso error del programa.
Citar:
En los que se menciona "partialy in machine code" (por ejemplo el Blitz) cascan con un "BIOS CALL 45 unimplemented.".
|
¿45? Las llamadas BIOS no llegan tal alto, ¿No será BDOS? Si es BDOS, tampoco existe una llamada documentada con ese número, imagino que será algo específico del PCW. Bueno, si el programa es gráfico puede ser del GSX, no tengo documentación del GSX a mano para mirarlo ni recuerdo que números usa.
A ver que dice google...
BDOS function 45 - Set action on hardware error Supported by: Personal CP/M, MP/M II and later, CP/Net redirector.
Pues no se que versión es Personal CP/M, pero en la referencia de CP/M Plus esa función no viene y el PCW que yo sepa usa CP/M Plus... bueno, la referencia que tengo es de CP/M 3 a secas y la del PCW es 3.1, o al menos eso dice una llamada Return Version Number en el joyce con los discos maestros que conseguí por ahí, que en el arranque dice que es CP/M Plus v1.2
Por cierto, muy interesante el sitio donde he encontrado eso: www.seasip.demon.co.uk/Cpm/index.html
Pues nada, implementaré la función esa (probablemente no haciendo nada) y veremos el siguiente sitio en que peta.
Salu2 |
Estado: desconectado |
|
NotFound Senior Member
Mensajes: 131
|
RE: Emulador de CP/M para Linux. (martes, 13 de enero 2004, 15:37) |
|
Hola.
Pues no, había mirado la 45 decimal y los mensajes de Alia/DOS de función no soportada son en hex, o sea que es la 69. Pues es más raro todavía, esa es de CP/M Net. Bueno, la llamaré en Joyce y le echaré un vistazo a lo que devuelve, permanezcan atentos a sus pantallas.
Salu2 |
Estado: desconectado |
|
NotFound Senior Member
Mensajes: 131
|
RE: Emulador de CP/M para Linux. (martes, 13 de enero 2004, 16:12) |
|
Hola.
Pues al final he hecho lo que debería haber hecho al principio, que es probar yo el juego, y efectivamente es la BIOS 45, hice mal en creer que te equivocabas, mis disculpas.
Pues tras corregir unos errores que había en la localización de las llamadas a BIOS resulta que es la llamada 30 decimal, que según la documentación es "Reserved for System Implementor", o sea que efectivamente es algo específico del PCW y por ahí no sacamos nada para CP/M. Bueno, al menos el lío me ha servido para corregir unos fallos
Salu2 |
Estado: desconectado |
|
|
|
PBLang 4.59 © 2002-2003 by Martin Senftleben
|
|