Programas del Libro "MSX - Lenguaje Máquina" de Data Becker

By manolito74

Paragon (1190)

manolito74's picture

10-11-2020, 18:56

Hola:

Estos días he estado hojeando/ojeando el Libro de "Lenguaje Máquina - MSX" de Data Becker. He sentido curiosidad por algunos de los Programas que vienen en ese Libro y me he puesto "manos a la obra" con ellos...

Cogí las Páginas del Libro que contienen esos Listados, los "OCRreé" y por supuesto el resultado fue desastroso no, ¡lo siguiente...! Para minimizar errores y "basura" varia elegí como Salida del OCR un Fichero ".txt" directamente en vez de un Fichero de Word. Luego tocó la parte más dura... repasar y repasar y volver a repasar los Ficheros TXT que obtuve ya que eran caóticos... La tipografía utilizada en el Libro no ayuda. Los ceros apenas se distinguen de las oes, los unos de las eles minúsculas, las ies mayúculas de las eles minúsculas, etc, etc, etc.

Para ayudarme visualmente con la tarea, después de muchas pruebas y correcciones opté por usar una Tipografía/Fuente que ayudara visualmente a distinguir todo ese batiburrillo de caractéres con los que tienes dudas y es más fácil confundir. En su día estuve investigando y hay una fuente que es muy buena para estas tareas. Se llama "HERMIT" y hace que todas estas dudas entre carácteres sean mucho más fáciles de resolver/ver a la hora de corregir los Listados.

Bien, voy a explicar los Programas que he copiado:

- ENSAMBLADOR: Es un Programa "sencillo" pero con una gran extensión en cuanto a líneas de Código... Su funcionamiento es bastante curioso. Nuestro listado Ensamblador tenemos teclearlo entre las líneas 1 y 10.000 del Programa, poniendo el carácter ese que en el PC está en la Tecla del Interrogante de cierre (es como una especie de coma, acento....) (es el cáracter que en el MSX Basic equivale al REM) Después de ese carácter creo que es obligatorio dejar un espacio y entre los operandos de una misma instrucción no puede haber espacios, por ejemplo LD A,5 (entre la A, la coma y el 5 no puede haber espacios). Si usamos etiquetas se ponen tal cual y a continuación se deja un espacio (no hay que poner dos puntos ni nada por el estilo...)

No es ninguna maravilla de Ensamblador, pero resulta curioso al menos. Y quizás analizándo el Listado de este Ensamblador pueda mejorarse ampliarse...

En el Listado que incluyo ya lleva un pequeño Programa Ensamblador, así que basta cargar y ejecutar el Programa tal cual y nos muestra las instrucciones Ensambladas, sus Códigos Hexadecimales, errores, etc.

- DESENSAMBLADOR: Es un Listado menos largo que el anterior y quizás también pueda mejorarse y ampliarse. Para probarlo podéis cargarlo y ejecutarlo directamente y usar como dirección de inIcio &H146A y como dirección final &H146F.

- SIMULADOR: Este Programa lo cargamos y lo ejecutamos directamente, mostrando el contenido de los Registros y demás en Pantalla y si vamos pulsando Intro nos va mostrando más información de las siguientes posiciones. En este Programa hay una cosa que o no entiendo no no he logrado hacer funcionar... Teóricamente en el Libro mencionan que si está activada la Tecla "CAP" nos permite editar y modificar la info de los Registros. Entiendo que esa Tecla a la que hacen referencia es la de Bloqueo de Mayúsculas.. (o sino que alguien me corrija). No obstante yo eso de poder editar y modificar la info de los Registro no he logrado que me funcione... (no sé si se debe a algún problema con las Teclas del Emulador o vaya usted a saber...) Si alguien consigue hacerlo funcionar, que me lo comente por favor y me diga cómo lo ha hecho, en qué Emulador, etc.

- MONITOR: Es un sencillo Programa BASIC que nos vuelca en Pantalla el contenido de las direcciones que le indiquemos. Para probarlo, cargamos y ejecutamos el Programa y ponemos por ejemplo como dirección inicial &H8000 y como dirección final &H8030 (sólo ponemos los números, los carácteres &H no hace falta ponerlos...) Con esto, veremos que causalmente... los carácteres que nos muestra en Pantalla son justo los que he puesto en nuestra primera línea REM del Código BASIC. ;-)

Pues nada, AQUÍ comparto todos esos Listados. Incluyo una imagen DSK que contiene todos los Listados y diferentes imágenes CAS (una por cada Programa), así como los PDF con los Listados originales y los ficheros TXT con cada uno de los Listados... ;-)

Ah, se me olvidaba comentar que a la hora de introducir el Código de esos Listados en el Emulador, usé la genial opción que incluye-ofrece el MSX para pegar el Texto en el Apartado "Input Text", luego pulsas en "Type" y para no esperar toda la tarde... pulsas F9 para que lo haga "cagando leches"... XD

Como digo he revisado cada Listado concienzudamente varias veces... no obstante si véis alguna errata o cualquier cosa que queráis comentar lo podéis hacer por aquí o en mi Dirección de GMAIL --> josemanuel74

En el Libro viene comentado cada Programa, lo que hace cada grupo de Líneas del Código, las variables usadas, etc. Por cierto, las variables que usa aparecen reflejadas de forma un poco caótica... parece que vienen por orden alfabético pero no es así y hay veces que cuesta diferenciar-descifrar los nombres de las variables... :-(

El Libro es relativamente fácil de conseguir. No obstante, si alguien quiere el Libro completo me lo puede pedir a mi Correo.

¡Gracias & Saludetes! ;-)

Login or register to post comments

By manolito74

Paragon (1190)

manolito74's picture

10-11-2020, 20:36

Pd. Se me olvidaba comentarlo... Todos estos Programas funcionan bien en el Open MSX usando un SONY-HB 20P. Me suena que en algún otro Emu o usando MSX-2 o alguna variación de Emu/Sistema daba problemas. Si cargáis un Sistema con Unidad de Disco podéis probar a pulsar CTRL para desactivar la Segunda Disquetera o SHIFT directamente para anular el Disco. ;-)

By mohai

Paladin (930)

mohai's picture

18-11-2020, 20:22

Hola Manolito74,
Se agradece el curro que te has pegado. Le echaré un vistazo.

Te daré un apunte por si te vale para el futuro: Yo, cuando quiero cargar en el emulador (uso el blueMSX), un fichero de texto BASIC o cualquier otro formato compatible, lo dejo en una carpeta y luego la "monto" como una unidad de disco.
Para cargar texto en BASIC, lo puedes grabar con cualquier editor de texto y luego lo cargas desde el MSX con el comando LOAD de siempre (ten cuidado con el numerado de líneas y la sintáxis).
Para mí es más práctico editar el texto simplemente con el Notepad de Windows, por la facilidad de copiar/pegar y moverme por el listado.

By manolito74

Paragon (1190)

manolito74's picture

20-11-2020, 17:55

¡Hola @Mohai!:

Jajaja. Eso mismo, eso mismito que me cuentas tú... lo acabo de descubrir hace 2 días, jajaja. Y por si a alguien le sirve yo también lo comenté en otro Hilo del Foro.

He recuperado también estos días otro par de Programas:

- Un Desensamblador aparecido en la MSX-CLUB números 16-17

- Otro Desensamblador aparecido en la MSX-MAGAZINE número 20.

Si eso ya los colgaré por aquí por el Foro. ;-)

La verdad es que es un trabajo de chinos... El OCR algo hace pero entre la tipografía, la baja calidad de los escaneos y demás añade muchos muchos errores... Aún así, después de depurar hay que revisar el Listado un montón de veces ya que cualquier error, por nimio que parezca, hace que los Programas funcionen "erráticamente"... :-(

Gracias & Saludetes. ;-)

By mohai

Paladin (930)

mohai's picture

05-12-2020, 12:07

Hola.

He estado probando los programas.
La verdad es que me esperaba algo más cutre, pero veo que están bastante currados para ser Basic y de aquella época.
Personalmente, yo habría programado algunas cosas de diferente manera, como agrupar algún bucle, o usar el modo de 40 columnas, pero eso ya es una cuestión de estilo.
Algunos provocan cuelgues no por sí mismos, si no porque es muy fácil que en algún momento, el código máquina machaque alguna zona de trabajo del sistema o deje al ordenador colgado por otras razones. Es el dolor de cabeza de todo el que empieza con el ensamblador y el código máquina y no controla dónde está cada cosa en memoria. Big smile

A los programas se les podría dar un repasillo y mejorar la compatiblidad con el disco, por ejemplo, pero como comienzo para saber cómo funciona el lenguaje ensamblador y empezar a hacer cosillas, valen.
Parece que todos los programas usan la zona de trabajo disco.

Como curiosidad, comentar que el simulador tiene 2 modos de funcionamiento: la simulación del código máquina y la simulación con ejecución REAL del código. Como comienza en la dirección &H0000, en este modo, tarde o temprano acaba colgando el ordenador.

Como base para un proyecto más grande, se me ocurre que podrían valer para hacer un paquete completo de utilidades en algún lenguaje moderno, como Visual Basic o algún Basic compilado.
Tengo por ahí un proyecto a medio hacer de un desensamblador-depurador-simulador medio inteligente, que igual retomo algún día, y la base es otro desensamblador sacado del libro "MSX Programas y utilidades".

By manolito74

Paragon (1190)

manolito74's picture

07-12-2020, 17:27

Hola, Mohai:

¡Gracias por tu aportación y por tus comentarios! ;-)

Pues nada, cualquier Proyecto que se te ocurra, mejora o lo que sea, ¡adelante, ánimo y por supuesto... compártelo por aquí...! xD

¿Tienes el Listado del Desensamblador del Libro "MSX Programas y Utilidades"?

Gracias & Saludetes. ;-)

By mohai

Paladin (930)

mohai's picture

04-02-2021, 13:54

Hola,

te dejo el listado con algunas correcciones que he hecho:
https://www.dropbox.com/s/dzv2ex7ldcuy307/DISasm_0.asc?dl=0

He dejado el listado en texto puro y duro. Lo podrás cargar desde el MSX/emulador con un simple LOAD.
Si no puedes descargarlo de Dropbox, dame tu email y te lo mando.

El programa original estaba en Alemán y el valor de algunas variables se comprobaba en Alemán (la típica pregunta Si/No). Esto está corregido.
He hecho otros ajustes, como poder desensamblar desde cualquier dirección y ajustar la salida del listado por pantalla o impresora.

By manolito74

Paragon (1190)

manolito74's picture

04-02-2021, 16:00

¡Hola @Mohai!:

Muchas gracias. En cuanto pueda lo descargo e intento echarle un vistazo. (Ja, Nein....) jajaja XD

(En algún Listado también aparece el "von"... preposición Alemana, que vendría a ser un "de, desde")

Gracias & Saludetes. ;-)