Simulador / Emulador de CP/M-86

Foro dedicado a la emulación de sistemas clásicos en el PC o en otros sistemas.
dancresp
Amiga 1200
Amiga 1200
Mensajes: 1393
Registrado: 23 Dic 2008, 17:53
Sistema Favorito: MSX
primer_sistema: ZX81
Primera consola: Atari 2600
Gracias dadas: 3 veces
Gracias recibidas: 20 veces

Simulador / Emulador de CP/M-86

Mensajepor dancresp » 11 Feb 2014, 18:03

La verdad es que desde hace años le tengo un aprecio especial al sistema operativo CP/M.

Introducción
Hace un tiempo conseguí un emulador de CP/M-80, el “MYZ80” que funciona bajo MS-DOS, y lo hace muy bien. Permite crear 3 unidades de disco (A, B, C) y un disco RAM (D) e importa y exporta ficheros desde el MS-DOS de una forma sencilla. Hay algún emulador más, pero este es el que más me gusta y sigo usando.

Pero para el CP/M-86 solo he encontrado dos emuladores, que dejan bastante que desear, y que encima obligan a ejecutar los programas CMD de una forma poco elegante: nombre_emulador archivo_cmd [parámetros].


El simulador
En el año 1993/94, aprovechando la época en la que me inicié en la programación en Turbo C de Borland bajo MS-DOS, programé un “simulador” de CP/M-80. Esto es un programa que al ejecutarse te permite trabajar con el MS-DOS como si estuvieras en un entorno CP/M.

Este simulador lleva integrados los comandos: DIR, DIRS, ERASE, RENAME, TYPE, DUMP, CLS, SUBMIT, STAT y PIP. Los dos últimos solo incorporan parte de las funciones originales. También existe el HELP.

Se copia el archivo “CPM.EXE” en un directorio y
se copian los ficheros MS-DOS que se desean usar. Para salir del simulador se pulsa “ESC” y volvemos al prompt del MS-DOS. Así de fácil... y hasta cierto punto, absurdo.

cpm86sim_8.gif
cpm86sim_8.gif (7.04 KiB) Visto 4862 veces


Los emuladores
Para MS-DOS hay, que yo sepa, dos emuladores de CP/M-86: el AME86 y el CPM86.

Los dos sirven para ejecutar programas CMD desde el prompt del MS-DOS, pero la verdad es que los dos fallan bastante. Como el tema de las secuencias de escape para el control de la pantalla no está normalizado en el CP/M, por aquí ya tenemos problemas, y por otro lado ciertas llamadas que se hacen al sistema tampoco están implementadas. Total, que hay programas que no funcionan en ninguno de los dos, otros van bien en los dos, otros van bien en uno pero fallan en el otro y otros cuelgan el MS-DOS. Todo un galimatías que hace que cueste decidirse por uno.

De todas formas, después de probar muchas aplicaciones grandes y pequeñas he visto que funciona mejor el AME86 que el CPM86, y es el que he decidido usar para este proyecto. Además, el CPM86 da errores de falta de memoria en algunas aplicaciones grandes, que son las más interesantes.

Una pega de este emulador es que al inicializar la emulación borra la pantalla, y al finalizar y volver al prompt muestra un texto de copyright en pantalla. Es un tema estético.

He probado de ejecutar los comandos del sistema típicos del CP/M-86 como el PIP, STAT, ED, etc. y no funcionan en ninguno de los dos emuladores. Ignoro el motivo. Esto hace que, por ejemplo, no podamos usar el ensamblador “ASM86.CMD”.

Podéis descargar los emuladores desde los siguientes enlaces:
AME86-Emulator: https://sites.google.com/site/ame86emulator/
CPM86-Emulator: http://www.gaby.de/cpm86.exe

cpm86sim_9.gif
cpm86sim_9.gif (4.59 KiB) Visto 4862 veces


El proyecto
Este proyecto consiste en conseguir que puedas ejecutar aplicaciones CP/M-86 en un entorno CP/M-86 bajo MS-DOS, y para eso he decidido fusionar el simulador con uno de los emuladores.

Así, he cogido el proyecto del simulador y 20 años después he realizado ciertas modificaciones para que, por un lado, te permita ejecutar las aplicaciones CMD sin tener que poner el nombre del emulador delante, y por otro lado puedas usar los principales comandos del CP/M-86 de una forma rápida y sencilla.

En el directorio del simulador/emulador deben haber dos programas: el “CPM86SIM.EXE” que es el simulador de CP/M-86, y uno de los dos emuladores, renombrado como “CPM86RUN.EXE”. A partir de aquí se pueden copiar todos los programas y ficheros CP/M-86 que se deseen.

cpm86sim_1.gif
cpm86sim_1.gif (5.46 KiB) Visto 4862 veces
cpm86sim_2.gif
cpm86sim_2.gif (6.29 KiB) Visto 4862 veces


Al ejecutar el programa “CPM86SIM” entramos en el simulador, se muestra la clásica pantalla de boot del CP/M-86, y a continuación aparece el prompt con la letra de la unidad activa. Cuando se escribe algo y se pulsa RETURN, primero se comprueba si es uno de los comandos residentes, y sino busca si en el directorio existe algún fichero con ese nombre y con la extensión CMD. Si existe, se lanza el emulador y se ejecuta el programa.

Por temas de sencillez, no he incorporado el comando USER y no se permiten cambios de directorio. El simulador solo permite trabajar en su propio directorio o en el directorio activo de las distintas unidades del equipo.

Comandos residentes:
Estos comandos están incorporados en el simulador y están siempre disponibles desde el prompt del simulador.

DIR
Permite ver los ficheros del directorio.

DIRS
Permite ver los ficheros ocultos del directorio.

ERASE
Permite borrar ficheros del directorio. Si se usa el “*” solicita confirmación fichero por fichero.

RENAME
Permite renombrar un fichero.

TYPE

Permite volcar por pantalla el contenido de uno o más ficheros.

No recuerdo que sistema CP/M de 8 bits permitía el uso del “*”, ya que originalmente no lo permite, pero como está programado y puede ser útil, lo he dejado.

DUMP
Permite volcar por pantalla el contenido de un fichero en formato hexadecimal.

En este caso, y también a diferencia del original, al lado del volcado hexadecimal aparece en formato
ASCII. Aunque hay aplicaciones CP/M-86 que ya lo permiten, se ha dejado esta funcionalidad.

SUBMIT
Permite ejecutar ficheros de procesos por lotes, pasando hasta 9 parámetros junto al símbolo $.

CLS
Borra el contenido de la pantalla.

STAT
Este comando muestra información de las unidades disponibles y los ficheros, tales como tamaños, permisos o espacio libre en los dispositivos.

Para usar la funcionalidad del cambio de permisos de escritura o archivo oculto, el programa “ATTRIB” que viene con el MS-DOS debe estar copiado en el directorio del simulador.

PIP
Permite copiar y duplicar archivos, crear archivos de texto, o volcar el contenido de un archivo por la impresora.

Este comando debe ir acompañado de parámetros para funcionar, a diferencia del original, que permite cargarlo en memoria e ir ejecutando sus distintas funciones.

HELP
Es una pantalla de ayuda que nos indica los comandos disponibles.

EXIT
Abandonamos el simulador y volvemos al sistema operativo.

Nota:
En estos comandos está deshabilitado el “Ctrl+C”, que sirve para detenerlos, y se ha sustituido por la tecla “ESC”.

cpm86sim_5.gif
cpm86sim_5.gif (6.96 KiB) Visto 4862 veces
cpm86sim_6.gif
cpm86sim_6.gif (13.35 KiB) Visto 4862 veces
cpm86sim_7.gif
cpm86sim_7.gif (8.14 KiB) Visto 4862 veces


Las aplicaciones
Con la distribución incluyo el simulador “CPM86SIM.EXE”, los dos emuladores y software variado de CP/M-86.

El emulador elegido, el “AME86”, funciona bien con el software incluido, pero he detectado las siguientes incidencias, que en si no afectan mucho a su utilización:

WORDSTAR
Al entrar en el programa con “WS” entra solo en la opción “R – Run a program”. Con pulsar “RETURN” una vez volvemos al menú principal y el programa funciona correctamente.

En este programa no funcionan las teclas de los cursores. Esto es correcto, y en pantalla explica como hacerlo.

cpm86sim_3.gif
cpm86sim_3.gif (10.93 KiB) Visto 4862 veces


TURBO PASCAL
Este programa se ejecuta con “TURBO” y hasta donde lo he podido probar funciona perfectamente.

He podido compilar en memoria y disco sin problema, y todo el teclado funciona correctamente.

cpm86sim_4.gif
cpm86sim_4.gif (7.6 KiB) Visto 4862 veces


MBASIC
Funciona bien, pero he detectado que si hay algún carácter extraño en el listado (ASCII inferior a 32 o superior a 127) puede dejar al programa colgado al listarlo. De todas formas los programas BAS que incorpora no fallan.

com86sim_11.gif
com86sim_11.gif (4.67 KiB) Visto 4862 veces


DBASE II
Este programa se ejecuta con “DBASE” y funciona correctamente excepto el editor de registros, donde aparecen algunos campos incorrectos, pero es operativo.

com86sim_10.gif
com86sim_10.gif (6.62 KiB) Visto 4862 veces


Otros programas
Hay varios programas con utilidades y juegos que también funcionan correctamente.

De todas formas, hay que tener en cuenta que algunos programas hacen buen uso de las teclas de los cursores y demás teclas especiales, pero hay otros que hay que usar los métodos básicos del CP/M. Esto es “CTRL+C” para página abajo, “CTRL+E” para cursor arriba, etc.

com86sim_12.gif
com86sim_12.gif (6.26 KiB) Visto 4862 veces
com86sim_13.gif
com86sim_13.gif (5.9 KiB) Visto 4862 veces


La distribución del “simulador/emulador/software”
Al descomprimir el fichero en un directorio veremos que en la carpeta principal ha dejado los ficheros del simulador, del emulador y software variado de CP/M-86.

También se ha creado una carpeta llamada “SOFTWARE” con distintas carpetas donde se han guardado los ficheros de las distintas aplicaciones, o se han agrupado según tipología en caso de ficheros simples.

En esta carpeta hay una llamada “EMULADOR” que contiene los dos emuladores, por si queréis hacer pruebas con ellos.

El equipo funciona perfectamente en MS-DOS y en cualquier versión de Windows. También lo he hecho funcionar en el DOSBox sin problemas. Sus requisitos de memoria y espacio en disco son mínimos.

Ahora solo queda conseguir nuevo software en CP/M-86 y comprobar si funciona correctamente en el emulador.

Descargar el pack:
CPM86SIM.RAR
(291.74 KiB) Descargado 291 veces


La otra opción es virtualizar el CP/M-86 en el WM-Ware o el Virtual Box de Oracle, pero lo dejamos para otro día.
Avanzo que ya lo he conseguido en el Virtual Box.
Buscando la IP de la W.O.P.R.

Avatar de Usuario
zup
Amiga 2500
Amiga 2500
Mensajes: 3013
Registrado: 04 Sep 2009, 20:07
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo DS/3DS
Primera consola: Nintendo GameBoy
Ubicación: Navarra
Gracias dadas: 86 veces
Gracias recibidas: 359 veces
Contactar:

Re: Simulador / Emulador de CP/M-86

Mensajepor zup » 11 Feb 2014, 23:28

Mejor usa un PCem, es más fácil hacer configuraciones concretas (8086@8Mhz con 512Kb) que en un VirtualBox. Además, se comportan mejor para experimentos con sistemas operativos minoritarios.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Además vendo cosas!


Volver a “Emuladores”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados