APPLICATIONSPROGRAMMATION ★ MONA-3 en CP/M|Amstrad Personal) ★

MONA-3 (Amstrad Personal)Applications Programmation
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

Hasta ahora los ensambladores de CP/M eran algo exotérico, difícil de utilizar y al alcance de unos pocos privilegiados. Los aficionados al Código Máquina disponen, bien seguro, de esa gran herramienta que es el desensamblador MONA.

En esta ocasión, nos hemos permitido el lujo de un «pequeño» truco de magia y lo hemos convertido en un auténtico desensamblador CP/M.

Para conocer cómo funciona internamente el CP/M os presentamos este programa-cu-riosidad, que permite poder utilizar un desensamblador que muchos conocéis como es el Mona, de Hisoft, nada menos que en CP/M 2.2, realizando una serie de modificaciones en la cabecera del programa directamente en el disco.

Lo primero que vamos a hacer es coger un disco vacío, o bien uno que podamos borrar todo su contenido, y formatearlo.

Este programa permite utilizar el Mona en CP/M 2.2,
realizando unas cuantas modificaciones en
la cabecera del propio Mona

Teclear ICPM y cuando nos conteste con el mensaje “A> ” tecleamos Disckit2, a continuación elegiremos la opción Format. El programa ofrecerá un nuevo menú del cual hemos de elegir el System format. Cuando nos pida introducir un disco de sistema debemos poner en la unidad el que contiene el CP/M 2.2 y seguir las instrucciones del programa. Una vez tengamos el disco formateado, salimos del programa Disckit2. Ahora tras el mensaje “A> ” tecleamos:

Filecopy Mona31.bin y cuando el programa nos pida el fichero Fuente o Source introducimos el disco que contiene el Mona31.bin y pulsamos una tecla, cuando el programa nos pida el fichero Destino o Destination debemos introducir el disco que acabamos de formatear.

Una vez realizados estos pasos, volvemos al Basic y mediante un catálogo comprobamos que el fichero Mona31.bin está en el disco que habíamos formateado.

Ahora se cambia el nombre del fichero copiado mediante la orden: |REN, “MON.COM”, “MONA31 .BIN”

A continuación se copia el listado del Programa I y después de haber corregido todos los errores de tecleo, salvarlo en el disco donde habíamos grabado la copia de Mona.

Es muy importante seguir este orden, primero sacar la copia en un disco vacío y después salvar en el mismo disco el programa Basic, antes de ejecutarlo.

Hay un Stop en la línea 150 que sirve para probar que no hay ningún error de tecleo.

Ahora viene lo más importante, y es quitar de la mesa de trabajo todos los discos excepto en el que se encuentre el Mon.com y el programa Basic, para evitar posibles equivocaciones.

A continuación ejecutar el programa Basic, habiendo quitado el Stop de la línea 150 y seguir sus instrucciones. Cuando haya concluido su ejecución podemos comprobar que la modificación ha tenido éxito, haciendo ICPM y cuando nos conteste con el Prompt“A> ” teclear:

MON 20000 [ENTER] ahora se tiene que cargar el programa y empezar su ejecución. En caso de que haya algún error revisar el listado Basic, sobre todo las líneas de Data y empezar el proceso de nuevo, ya que la modificación que se produce en el programa se realiza directamente en el disco.

El listado 1 permite relocalizar el Mon cuando se carga en memoria, especificando una dirección en decimal después del nombre del fichero, por ejemplo:

MON 10000

El número especificado debe estar entre 777 y 31487, en el caso de que no se encuentre entre estos valores no se cargará el fichero.

Una vez en el Mon, se pueden utilizar todos sus comandos, con la única diferencia que las opciones “R” y “W” del Mon, para leer o escribir ficheros, se realizan con la cinta y no con el disco.

Si se quiere leer o escribir un fichero ASCII de tipo Com del disco es necesario introducir en el Mon un pequeño programa en Código Máquina que aparece en el Programa II.

Esta rutina se puede escribir mediante un ensamblador cualquiera, o bien copiando el Listado II mediante el “Cargador Universal” y después, salvándolo en forma binaria en una cinta, con el nombre de Lector, para que después, cuando estemos ejecutando el Mon en CP/M poderlo recuperar de la cinta mediante la opción “R” y colocarlo en la posición &9600.

Cómo leer un fichero COM

Si por ejemplo queremos ejecutar paso a paso el fichero DUMP.COM tendremos que seguir los siguientes pasos:

  • Cargar el CP/M 2.2 mediante |CPM.
  • Cargar el Mon en una dirección que deje espacio al DUMP, por ejemplo la 2000, mediante la orden:

MON 2000

  • Leer desde el Mon mediante la opción “R”, el fichero binario Lector desde la cinta y colocarlo en la dirección &9600.
  • Poner el nombre del fichero en mayúsculas a partir de la dirección &5D, introduciendo espacios en blanco, si el nombre tiene menos de ocho caracteres, a continuación se pone la extensión del fichero sin poner el punto, por ejemplo:
    • &5D “D”
    • &5E “U”
    • &5F “M”
    • &60 “P”
    • &61 “ ”
    • &62 “ ”
    • &63 “ ”
    • &64 “ ”
    • &65 “C”
    • &66 “O”
    • &67 “M”
  • Para los que tengan dos unidades de disco pueden, además, añadir en la dirección &5C un cero para la unidad “A” o un uno para la unidad “B”.
  • Colocar un breakpoint mediante Shift + ! en la dirección &9638 y ejecutar el programa mediante una instrucción:

    J :&9600

Cuando haya terminado de leer el fichero retornará al Mon y el fichero leído, en este caso el DUMP.COM, estará a partir de la dirección &100. Además en la dirección &9672 tendremos la dirección del final del fichero leído.

Los ficheros Com siempre hay que cargarlos en la dirección &0100, ya que es la dirección donde los carga el CP/M y donde se empiezan a ejecutar.

Cómo crear un fichero “COM”

Una vez hayamos leído un fichero, como el DUMP.COM, podemos obtener una copia de éste con las modificaciones que hayamos realizado, por ejemplo de los mensajes de ayuda, mediante el programa Lector que habíamos utilizado para leerlo.

Para salvarlo tenemos que colocar el nombre del fichero en la dirección &5C, de la misma forma que para la lectura, además, en este caso no se puede repetir un nombre de fichero que ya exista en el disco.

A continuación, se coloca en la posición de memoria &9674, la dirección donde termina el fichero a salvar, que en la mayoría de los casos será igual a la que se obtenía en la dirección &9672.

Después colocamos un breakpoint en &9638, y ejecutamos el programa mediante:

J :&963C

Si todo ha ido bien el fichero estará salvado en el disco.

En el programa se utilizan cinco llamadas del bdos, la primera sirve para abrir el fichero cargando “DE” con la dirección &5C y en “C” el valor &F y después llamar a la dirección &0005, la segunda necesita la misma dirección en “DE” y en “C” el valor &10 y sirve para cerrar el fichero, la encargada de leer cada bloque del fichero necesita en “DE” lo mismo que las anteriores y en “C” el valor &14, para crear un nuevo fichero se necesita en “DE” lo mismo que antes y en “C” el valor &16 y la última llamada es la que escribe un bloque en el disco y que necesita en “DE” lo de siempre y en “C” el valor &15.

Los bloques siempre se refieren a las posiciones de memoria entre la &80 y la &100.

Amstrad Personal

★ PUBLISHER: Amstrad Personal
★ YEARS: 1987 , 1988
★ CONFIG: 64K + CP/M
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: AMSTRAD PERSONAL 1987
★ AUTHOR: Juan Carlos Plaza
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» MONA-3    (Amstrad  Personal)    LISTING    SPANISHDATE: 2022-09-21
DL: 87
TYPE: PDF
SiZE: 240Ko
NOTE: 2 pages/PDFlib v1.6

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Micropro - Wordstar (Amstrad Action)
» Applications » Taspoke: Tasword 464 mit DIN-Tastatur
» Applications » Word Processor (Popular Computing Weekly)
» Applications » New-Word
» Applications » RSX Keywords
» Applications » Word-Pro (Amstrad Action)
Je participe au site:
» Pour ce titre nous ne disposons de fichier executable sur CPC (Dump, Saisie du listing) , alors si vous avez ça dans vos cartons ou vous désirez usé vos petit doigts boudinés sur votre clavier faites le nous savoir.
» Vous avez des infos personnel ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 497 millisecondes et consultée 423 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.