Tutorial de CP/M

Gracias al usuario ~anthk encontraras una maquina virtual prearmada con CP/M libre.

Introduccion

Sigue este tutorial para aprender algunos rudimentos de este sistema operativo clasico para microcomputadoras.

Instala CP/M

En tu sistema Linux/BSD o en nuestro entorno compartido texto-plano descarga la maquina virtual Altair 8800 con microprocesador Zilog Z80 del usuario ~anthk, y descomprimela:

cd ~
wget https://caja.texto-plano.xyz/anthk/emu/altair.tgz
tar xvzf altair.tgz

Inicia ahora CP/M 2.2 mediante:

cd ~/altair/
sh cpm

Tras unos instantes se iniciara una microcomputadora Altair 8800 con microprocesador Zilog Z80 (virtualizada). Te presentara una devolucion en tu terminal y un prompt que indica la letra de unidad de diskette en la que te encuentras: A>

Altair 8800 (Z80) simulator V4.0-0 Current        git commit id: $Format:
/home/fulana/altair/src/cpm22/cpm2-8> set cpu 2k
Non-existent parameter

64K CP/M Version 2.2 (SIMH ALTAIR 8800, BIOS V1.27, 2 HD, 02-May-2009)

A>

Ya estas list@ para operar CP/M desde la unidad de diskette A:.

Salir de CP/M

Es muy importante detener correctamente la Altair 8800 emulada. Deten esta maquina virtual con el comando A:HALT, o bien presionando Ctrl+AltGr+**. Aparecera el prompt sim> donde debes introducir el comando exit**.

Si no detienes correctamente la maquina virtual, podria quedar consumiendo recursos innecesariamente en el sistema compartido. ¡Por favor se responsable y deten su uso si no la utilizas!

CP/M inicial

Inicia nuevamente CP/M y lista el contenido de la unidad de diskette A: actual, con el comando DIR. Tambien puedes utilizar el listador avanzado LS.

Entre los ficheros listados encontraras algunos con la extension .COM: estos son ejecutables de CP/M.

Presenta en tu terminal el contenido de un fichero de la unidad A: con el comando TYPE. Por ejemplo, el fichero CCPZ.TXT:

A> type a:ccpz.txt

La Unidad de diskette B: contiene programas adicionales. La unidad de diskette I: contiene un diskette libre para que puedas crear tu propio contenido, en tanto que la unidad de diskette J: contiene algunos interpretes y utilidades adicionales.

Pasa a la unidad B: y juega al Colossal Cave Adventure para CP/M.

A> b:
B> adv

Podras abandonar esta aventura de texto introduciendo el comando exit. Cuando te indique si deseas abandonar la aventura, introduce y para volver al microsistema CP/M.

Programando BASIC en CP/M

Utiliza el interprete de MBASIC-80 en CP/M.

Ejecuta el interprete:

a:mbasic

BASIC-80 Rev. 5.21
[CP/M Version]
Copyright 1977-1981 (C) by Microsoft
Created: 28-Jul-81
32824 Bytes free
Ok

Carga un programa ELIZA.BAS:

LOAD "ELIZA.BAS"

...o bien introduce algun programa escrito en BASIC. Listalo con LIST o ejecutalo con RUN.

Puedes utilizar Ctrl+c para interrumpir un programa BASIC.

Sal del interprete MBASIC y vuelve al microsistema CP/M con el comando SYSTEM.

Su material de referencia es el Manual de MBASIC-80 (en ingles).

Programando en Ensablador Z80 en CP/M

El Ensamblador Z80 es el lenguaje de programacion de alto nivel; para operar con el debemos escribir el codigo con el editor ed utilizando nemonicos de Zilog Z80, ensamblarlo con asm, y compilarlo con load.

¡Programa!

Ejecuta el editor ed indicando un fichero de codigo fuente de extension .asm. Por ejemplo, para crear un programa llamado sl.asm en la unidad de diskette I:, inbtroduce:

A> ed i:sl.asm

El editor ed te indicara que estas en un fichero nuevo:

NEW FILE

Pasa a modo insercion con *i...

: *i

...e introduce estas 9 lineas de codigo fuente de Ensamblador Z80. Puedes pegarlas o bien utilizar la tecla tab para hacer las columnas. Utiliza la tecla Intro para confirmar cada nuevas lineas (Ed indicara un numero de linea en las medida que las vayas agregando):

        ORG     0100H
BDOS    EQU     0005H
START:  MVI     C,9
        LXI     D,MSG$
        CALL    BDOS
        RET

        MSG$    DB      'COMPARTE TU SOFTWARE!$'
        END     START

Presiona Ctrl+z para detener el modo insercion, y luego guarda el cambio en el diskette y sal del editor ed con el comando *e:

: *e

Tras haber editado tu codigo fuente, pasa a la unidad de diskette I:...

A> i:

¡Ensambla!

Ensambla el codigo:

a> asm i:sl
CP/M ASSEMBLER - VER 2.0
011F
000H USE FACTOR
END OF ASSEMBLY

El ensamblador creara una serie de ficheros nuevos en la unidad de disquete virtual.

Observa desensamblado para el microprocesador Z80 del codigo fuente con.

TYPE I:SL.PRN

Observa el volcado hexadecimal del mismo:

I> TYPE I:SL.HEX

¡Compila!

Compila el fichero:

I> load i:sl

El compilador automatico creara un ejecutable SL.COM. Vuelca en pantalla el codigo objeto del programa binario SL.COM.

I> dump sl.com

¡Corre!

Y finalmente, ¡cargalo en memoria y correlo!

I> i:sl
COMPARTE TU SOFTWARE!

Conclusion

¡Enhorabuena! Has aprendido a utilizar CP/M en tu propia sesion en el entorno compartido. Compartelo en gab para que todos lo sepan:

gab -m "¡He terminado el tutorial de CP/M, y he compartido mi software!"