Desensamblador GHIDRA – Instalación y Ejemplo de Desensamblado

GHIDRA

(cómo instalarlo y Desensamblar nuestro primer Programa…)

Bueno, yo os voy a mostrar como instalar la versión de Windows (que es el S.O. que yo uso…)

1. Nos descargamos GHIDRA desde aquí:

https://github.com/NationalSecurityAgency/ghidra/releases

2. Lo descomprimimos en la Unidad/Carpeta que queramos, ¡dónde más rabia os dé!

3. Tenemos que descargar el JDK:

https://www.oracle.com/java/technologies/javase/jdk18-archive-downloads.html

(A mí me pidió crear un Usuario/Contraseña previamente, es decir REGISTRARSE, así que si os lo pide… ya sabéis…¡toca regisgrarse…!)

4. Instaláis el JDK y luego al final os dice algo de crear la Variable PATH, le decís que sí, marcáis esa opción.

5. Os vais a la Carpeta de GHIDRA y ejecutáis este Fichero:

(os Recomiendo enviarlo al Escritorio como Acceso Directo, ya que este es el Fichero para ejecutar el Programa)

6. Al ejecutarlo veréis esto:

7. En este caso vamos a probar a desensamblar nuestro primer Programa en formato BIN y para nuestro ejemplo he elegido el Programa VECOPE.BIN

Os lo dejo AQUÍ y os indico sus Direcciones:

  • Inicio: D212

  • Final: D835

  • Ejecución: D801

8. Vamos a FILE –> New Project –> Non Shared Project –> Next

9. Damos nombre a nuestro Proyecto, por ejemplo PRUEBA_VECOPE  y  pulsamos –> FINISH.

10. Marcamos nuestro Proyecto arriba (que quede en azul) y hacemos “IMPORT FILE” y seleccionamos el Fichero a importar (en nuestro caso: BIN) pulsamos FINISH y luego “Select File to Import”.

11. La siguiente Pantalla, en “Language” cogemos “z80 default” de forma que nos quede así:

12. Pulsamos en Options y ponemos estos datos y pulsamos Ok:

¡Ojo!: en la dirección RAM ponemos D20B (recordemos que los 7  primeros bit corresponden a la Cabecera del MSX y el Desensamblador no los interpretaría correcctamente…)

13. Pulsamos Ok de nuevo y nos aparece esta Pantalla Resumen:

Pulsamos Ok para cerrar esa Pantalla.

14. Hacemos doble click en “VECOPE.BIN

y se nos abre esta Ventana:

15. Nos ponemos en la primera dirección RAM D20B pulsamos botón derecho y nos aparece un menú Contextual, en el que pulsamos en: DISASEMBLE D

16. ¡Et voilá, se obra la magia y nos aparece nuestro Programa DESENSAMBLADO….! 😉

El resto, ya os toca jugar a vosotros con el GHIDRA e ir probando y descubriendo cosas… 😉

© by Manolito74, 13/07/2022

Publicado en Sin categoría | Deja un comentario

Ensamblador/Desensamblador RSC y sus múltiples Versiones

Hola:

Dentro de mi poca Experiencia en el mundo del Ensamblador/Desensamblador principalmente podemos decir que he usado el RSC y más concretamente el RSC-II (que ha sido la última versión). Me parece un Programa muy potente, fácil y cómodo de usar y encima «Made in Spain». ¿Qué más se puede pedir?.

Ahora voy hacer algunos comentarios sobre las diferentes versiones que de él han existido y de algunas de mis «teorías» y curiosidades que he detectado.

Pues bien, vamos allá…

Según mi Teoría y a tenor de lo que yo he visto se habrían publicado 3 versiones del RSC:

  • El RSC (primera versión).

  • El RSC 2.0 (segunda versión)

  • El RSC-II (que sería la última versión que se publicó).

La versión que yo siempre tuve fue el RSC-II que en su día me habían pasado en Disquete. A través de la Web de Martos, http://msxcas.webcindario.com , en su día había descargado las imágenes «.Cas» que allí están y que se corresponderían a las versiones:

  • RSC (versión 1)
  • RSC 2.0 (versión 2)

Pues bien, en su momento cogí las 2 versiones de Martos en Cinta y las copié a un Disquete funcionando ambas versiones sin problemas. Así que cogí y junté esas 2 versiones más el RSC-II y tengo en un mismo Disquete todas las versiones juntas. He hecho un Menú que al cargarse nos pregunta qué versión del RSC queremos ejecutar y también nos deja elegir si queremos ejecutarlo en Modo 40/80 Columnas (para ejecutarlo en Modo 80 Columnas evidentemente deberemos poseer un MSX-2). Por cierto, si antes de ejecutar cualquier versión del RSC cambiamos el Color de la Pantalla podremos ejecutar el RSC con los Colores elegidos.

Pues bien, ya tenemos las 3 versiones en Disco pero sólo tenemos 2 en Cinta… Así que, ¿por qué no hacer el paso contrario para conseguir la versión en Cinta que nos falta (el RSC-II)?. Pues ni corto ni perezoso cogí el RSC II y lo cargué  desde Disco. Comprobé cúales eran sus Direcciones de Inicio, Fin y Ejecución y lo grabé creando una Imagen «.CAS», et voila…! Aparentemente funciona con normalidad.

A bote pronto entiendo-supongo-infiero que:

  • el RSC (primera versión) salió tanto en Disco como en Cinta.
  • el RSC 2.0  (segunda versión) salió tanto en Disco como en Cinta.
  • el RSC-II (tercera y última versión) salió en formato Disco, pero…¿saldría real y oficialmente en Formato Cinta?

Al principio tenía mis dudas sobre si el RSC versión 1 había salido en Disco, pero gracias al Usuario PANZER poseedor de la versión Original del RSC me ha enviado una foto del Disquete y de su ejecución en MSX, con lo cual queda claro que existe la versión del RSC versión 1 en Disquete. Aquí os pongo la imagen:

RSC I (Manhattan Transfer - 1989)(org)

Por tanto entiendo que el Ensamblador/Desensamblador RSC como Programa es siempre el mismo (varía de una versión a otra obviamente) y lo único que cambia de la versión Cinta respecto a la de Disco es el Formato sobre el que están grabados. 😉

Una diferencia en cuanto al uso es que en el RSC-II desde una misma Pantalla-Editor podías Ensamblar y Desensamblar y en las versiones anteriores tenías que:

  • ejecutar el Comando EN para pasar a la Pantalla-Editor para manejar el Ensamblador
  • ejecutar el Comando DE para pasar a la Pantalla-Editor para manejar el Desensamblador.

Otra curiosidad que he notado en el RSC II:

El RSC-II (en versión Disco) incluye (entre otros muchos comandos) estos:

  • Para manejar BLOQUES/FICHEROS CÓDIGO MÁQUINA tenemos las siguientes Instrucciones:
GB para Grabar un Bloque de Memoria a Disco.
GBC para Grabar un Bloque de Memoria a CINTA.
CB para Cargar un Bloque Binario desde el Disco a Memoria.

CBC para Cargar un Bloque Binario desde CINTA a Memoria.

  • Para manejar los BLOQUES/FICHEROS CÓDIGO FUENTE (los Listados que hayamos tecleado) tenemos estos Comandos:
GT para Grabar el Código Fuente que tenemos en Memoria a Disco.

CT para Cargar un Fichero de Código Fuente desde el Disco a la Memoria.

Incompresiblemente no entiendo por qué no se incluyeron las respectivos comandos GTC y CTC para poder Grabar y Cargar Código Fuente a/des CINTA…

¿Alguien sabe si en anteriores versiones existen los Comandos GTC y CTC?. ¿Sería factible que alguien que controle del Tema modifique el Programa para incluir dichas Instrucciones?

No obstante me suena haber leído, creo que aplicado al RSC versión 2, que el Programa detectaba sobre qué entorno se ejecutaba y adaptaba las Instrucciones de Carga a Grabación (es decir que si tenías Disco las adaptaba y usaba el Disco y si tenías Cinta las adaptaba y usaba la Cinta) (ignoro si en el caso de que tuvieras Disco te dejaría elegir de alguna forma usar la Carga y Grabación en Cinta….)

Estaría bien poder acceder y preservar algún Manual de los Programas RSC (primera versión) del RSC 2.0 (segunda versón) para ver que Instrucciones incluían, cómo han evolucionado, etc, etc, etc.

Otra curiosidad es que el RSC II reza en su Manual que incluye una especie de Protección. Cuando coges el Disco y lo insertas en tu Ordenador la primera vez en «teoría» el RSC II todavía no existe en Disco. Tienes que ejecutar un Programa que se llama «INSTALAR» y entonces se crea el RSC II en tu Disquete de tal forma que se «adapta» a tu Ordenador y si cambiaras de Modelo de MSX no podrías ejecutarlo en tu nuevo Ordenador. De hecho en el propio Manual como digo se comenta esto, pero eso sí: te ofrecen «que si algún día usted cambia de Ordenador si nos envía su Copia del RSC II le daremos una nueva Copia sin coste para usted…». Siempre dudé si esto era real o no, si era una leyenda urbana o si era un «farol» por su parte para «acojonar» al Usuario y reducir la Piratería, pero al parecer es cierto. El Usuario PANZER me ha confirmado que su Copia del RSC II sólo funciona en el Ordenador en que fue instalado, un Philips 8245, pero que no funciona en un MSX distinto… 😦

De todas formas se me ocurre que este Sistema de Protección podría evitarse teniendo la precaución de antes de ejecutar el Disquete la primera vez hacer una Copia en otro Disco , guardar el Disco Original a buen recaudo en un Cajón y usar siempre la Copia que hemos hecho (ignoro si el Original también incluía algún tipo de Protección que impidiera su Copia…)

No obstante por lo que veo la versión que circula por ahí del RSC II debe estar digamos que «Desprotegida» porque aparentemente se ejecuta sin problemas en cualquier Ordenador (entiendo que si hubiera algún problema en cuanto a la protección-adaptación mencionada directamente no se ejecutaría en Modelos de MSX distintos, ¿no?)

Lo dicho, sería muy interesante conseguir los Manuales de las 2 primeras versiones del RSC y que alguien nos confirme si efectivamente existían versiones de Cinta y Disca para las 3 versiones y si ya de paso me puede mandar fotos mejor. 😉

Para contactar conmigo lo podéis hacer en mi cuenta de GMAIL –> josemanuel74

Como «regalito» (que diría un buen amigo), sus dejo un LOTE que contiene lo siguiente:

  • Imagen «.DSK» que contiene las 3 versiones del RSC. Debéis ejecutar el Disquete con LOAD»MENU.BAS» y os aparecerá un Menú que primero os pedirá qué versión del RSC queréis Cargar y luego os pedirá si queréis ejecutarlo en Modo 40 Columnas o en Modo 80 Columnas (si tienes un MSX-2) (Recordad que si queréis ejecutar el Programa con unos Colores determinados, tenéis que cambiar los Colores de Pantalla antes de cargar el RSC).
  • Sus dejo también 3 imágenes «.CAS» que contienen las diferentes versiones del RSC.
  • Sus incluyo también diferentes Listados de MNEMÓNICOS:

-unos extraidos del Especial CM de la Revista MSX-EXTRA.

-otros extraídos del Libro «Más allá del BASIC» de la Editorial RAMA.

En ambos casos tenéis 2 versiones diferentes:

– una que incluye los MNEMÓNICOS Ordenados por el NOMBRE de la Instrucción.

– otra versión que incluye los MNEMÓNICOS ordenados por su DIRECCIÓN.

Os he incluido también para todos los casos lo siguiente:

– versión Pdf de los Originales de la Revista/Libro.
– versiones en Formato JPG.
– los Ficheros Word que yo usé para crear mis Pdf.
– los PDF que yo creé.

Para crear las diferentes Tablas de MNEMÓNICOS tuve que compararlos con diferentes Fuentes (Libros y Revistas) ya que increíblemente casi todo el Material que consulté tenía alguna errata.

Los que os recomiendo usar son los Pdf que yo he creado (en los que aparece al final del Nombre del Fichero «manolito74» (los Word, JPG y Originales os los incluí a modo de curiosidad, por si a alguien le resultan de Utilidad).

  • Sus incluyo también el Manual del RSC II que yo he creado a partir del Original. De hecho he respetado exactamente el mismo Formato, la misma Paginación, el mismo Ancho de Columna, etc. Eso sí lo he hecho visualmente más «atractivo».

Del Manual os incluyo el PDF que yo he creado y os incluyo también el Documento Word que yo he creado (por si alguien quiere hacer sus propias modificaciones en cuanto a Paginación, Fuentes, Formatos, etc, etc, etc.

También os incluyo un PDF del Manual en el que en el nombre pone entre paréntesis (Revista). Este PDF (creado con el Programa «Booklet Creator») está hecho y preparado para Imprimir como si fuera una Revista. Es decir, se imprimen 2 Páginas por hoja y por las 2 caras. Se va doblando por la mitad cada hoja que se imprime y lo mismo con las siguientes. Las vas metiendo unas dentro de otras y al final les pones un par de Grapas en el Centro y os queda un Manual tipo Libro-Revista muy chulo-práctico-cómodo para consultar (yo lo tengo hecho así y os aseguro que es muy cómodo).

Ese PDF que os comento para Imprimir como Revista ya lleva la Paginación correcta. Tan sólo tenéis que imprimirlo según va y a doble cara (eso sí: vigilad que al imprimir la segunda cara os la imprima en el mismo sentido-orientación que la primera ya que sino tendríais que girar cada Página por la parte «ancha» (en vez de por la estrecha) y no os serviría para imprimir como Revista (y encima habríais derrochado un montón de papel…).

Para poner las Grapas os dejo una idea que es una tontería pero que es tremendamente útil (y que a mí en su día no se me ocurrió). Os la cuenta este señor:

Os podéis descargar el LOTE con todas las versiones del RSC y la Documentación que sus comento desde AQUÍ.

Y lo dicho, si tenéis los Originales de las 2 primeras versiones del RSC y podéis compartir Fotos de las Cintas, Discos y sobre todo los Manuales os agradecería que me contactarais en mi dirección de GMAIL —> josemanuel74

Gracias & Saludetes. 😉




[Actualización 02/01/2022]

Investigando en las Revistas MSX-CLUB he llegado a las siguientes conclusiones:

  • El RSC aparece por primera vez en la Revista MSX-CLUB número 51.

https://archive.org/details/MSXClub/MSX%20Club%2051/mode/2up

-Aquí, en la Página 31 de dicho número nos anuncian el lanzamiento del RSC:

-También vemos que en ese mismo número, en la Página 44, el Autor del Ensamblador RSC (Ramón Sala), comienza un nuevo Curso de Ensamblador aprovechando el lanzamiento del RSC:

MSX-CLUB-51-PAGINA 44-ENSAMBLADOR CURSO

-En la Revista MSX-CLUB número 53 a la hora de publicar los Listados en Ensamblador usan el RSC, tal y como podemos ver por ejemplo en la Página 13 de dicho número de la Revista:

https://archive.org/details/MSXClub/MSX%20Club%2053/page/n11/mode/2up?view=theater

  • En el número 58 de la MSX-CLUB, página 23, se puede ver que en los Listados que publican aparece claramente RSC 2.0 y es la primera Revista que veo que en la última hoja, donde aparecen las Cintas que venden, aparece el RSC (que supongo que será ya la versión RSC 2.0 la que tienen ya a la venta)

https://archive.org/details/MSXClub/MSX%20Club%2058/page/n53/mode/2up?view=theater

-Listado hecho con el Ensamblador RSC 2.0 de ese mismo número, en la página 54:

-Página 59 de esa misma Revista donde podemos ver que tienen a la venta el RSC (supongo que será el RSC 2.0)

  • La versión RSC-II (última versión del Ensamblador/Desensamblador RSC) aparece anunciada «a bombo y platillo» en el número 63 de la MSX-CLUB.

https://archive.org/details/MSXClub/MSX%20Club%2063/page/n1/mode/2up?view=theater

(Que por cierto….¡costaba 5.000 pts de la época…! Vale que el Programa era muy bueno pero el precio totalmente prohibitivo para el común de los mortales de clase media…)

-En la Revista MSX-CLUB número 66 podemos ver, en la página  41, un Artículo sobre el RSC II de su autor: Ramón Sala

https://archive.org/details/MSXClub/MSX%20Club%2066/page/n39/mode/2up?view=theater

-En la Revista MSX-CLUB número 67, en la página 43, podemos ver por primera vez un Listado Ensamblador en el que vemos que usan claramente el RSC-II

https://archive.org/details/MSXClub/MSX%20Club%2067/page/n41/mode/2up?view=theater

Publicado en Sin categoría | 2 comentarios

Manual Ensamblador ZEN-80

Hola:

Desde hace tiempo tenía por mi Disco Duro el Ensamblador ZEN 80, así como su Manual.

De dicho Ensamblador, hay disponibles 3 versiones del Manual:

  • La versión del Manual Original escaneada por Hans Ottens.
  • Una versión cn Inglés, creada por el Usuario Aitor L. A.
  • Otra versión,  traducida al Español, creada también por Aitor L.A.

La «pega» que le veo a las versiones creadas por Aitor es que ocupan muchísimas hojas… porque pone cada instrucción en una Página distinta y de cara a imprimirlo no merece la pena por el «desperdicio» de Papel.

En cuanto a la versión de Hans Ottens la gran ventaja es que está obtenida del Original pero tanto el tamaño de la Tipografía, calidad de la misma así como la calidad del Escaneado hace que no resulte demasiado legible-cómoda para leer-consultar.

Pese a que yo personalmente nunca he usado, y tampoco lo conocía, el Ensamblador ZEN-80 no sé porqué me ha dado por crear una versión más «legible».  Para ello lo que he hecho ha sido lo siguiente:

  • He cogido las versiones creadas por Aitor y les he hecho OCR para poder editarlas-manipularlas-maquetarlas.
  • De paso, he aprovechado para revisar las versiones de Aitor cotejándolas con la versión del Original de Hans Ottens. He aprovechado para corregir algunas pequeñas erratas así como para incluir alguna cosilla que faltaba…

Como resultado, podemos decir que la versión del Manual en Inglés es correcta al 99,99%. El problema es que como digo debido a que la calidad del Original es bastante ilegible hay alguna palabra que me ha costado distinguir-reconocer, pero sobre todo los mayores problemas han sido con algunas direcciones de memoria que se citan en los ejemplos: aparecen muy muy oscuras y con caracteres prácticamente ILEGIBLES, por lo que algún pequeño fallo puede haber.

Estaría bien que si alguien tuviera el Manual Original me contactara para ver si con un poco de suerte tiene un pelín más de calidad y poder así contrastar esas dudas que tengo sobre algunas palabras-direcciones.

En cuanto a la versión del Manual en Español he usado también la versión de Aitor como base y he añadido-modificado algunas cosas. No obstante el tema de las Traducciones, en general, es algo muy muy muy complejo… (y en este caso al tratarse de un Documento Técnico es mucho más complejo todavía). Traducir cualquier Documento no es fácil y no siempre la Traducción más literal es la mejor. Hay que jugar con intentar respetar el sentido del original pero a la par intentar que suene natural en Español, ya que hay estructuras-giros-expresiones que en Inglés suenan normales pero en Español resultan artificiales y jamás usaríamos. Aparte de esas dudas hay alguna cosa concreta que no sé como traducirla…

Por ejemplo, ¿cómo carajo traduciríais vosotros esto?:

«Note that ZEN is a completely «soft» program, any changes you make will be reflected in the new version»

Ese «soft» me descoloca…. XD

Comparto aquí con vosotros el Ensamblador ZEN-80 así como los siguientes Manuales:

  • El Pdf que contiene el escaneado del Manual Original de Hans Ottens.
  • El Fichero que yo he creado con la versión en Inglés.
  • El Fichero que yo he creado con la versión en Español.

-Como digo en la versión en Inglés puede haber alguna pequeña errata (aparte de que me pueda haber «bailado» alguna letra) sobre todo en alguna Dirección de Memoria mencionada.

-Y por supuesto la versión en Español es MEJORABLE (tampoco soy ningún experto traductor ni tengo un super nivel de Inglés…) XD

Así que si alguien se anima a revisar-corregir dichos Manuales pues el resto de la Comunidad MSX-era y yo se lo agradeceremos. 😉

Si veis alguna errata, queréis comentar cualquier cosa y demás me podéis contactar en mi dire de GMAIL –> josemanuel74

Y el Lote de Manuales + ZEN 80 lo podéis descargar AQUÍ.

Gracias & Saludetes. 😉

Pd. Si os fijáis al descargar el Fichero veréis que pongo versiones de Pdf para imprimir en Formato «Revista». Es decir, la idea es que el Fichero está maquetado en Formato 2 Páginas por Hoja y listo para ser impreso a doble cara. Una vez impreso todo, doblais las hojas a la mitad, las vais insertando unas dentro de otras y luego con una Grapa en el medio queda como un Folleto-Revista, lo cual resulta muy cómodo de cara a tenerlo como Manual de Consulta. 😉

Y para facilitaros la tarea de cara a poner la susodicha Grapa con ese Formato de Hojas dobladas a la mitad aquí os comentan un truquillo (que es una «chorrada» pero que es muy útil y a mí nunca se me hubiera ocurrido…) XD

 

 

Publicado en Sin categoría | Deja un comentario

Programa para Copiar: CINTA–>DISCO, DISCO–>CINTA, DISCO–>DISCO

Hola:

Comparto con vosotros un Programilla que tenía por ahí en una Cinta. Dicho Programa sirve para pasar Programas (valga la rebuznancia):

  • de Cinta a Disco
  • de Disco a Cinta
  • de Disco a Disco

En realidad para simplificar el Programa, se ha dividido en 4 Partes:

  • una parte que nos muestra el MENÚ PRINCIPAL (COPYCD.BAS)
  • otra parte que se encarga de pasar de Cinta a Disco (CD-OP)
  • otra parte que se encarga de pasar de Disco a Cinta (D-C.OP)
  • otra parte que se encarga de pasar de Disco a Disco (D-D.OP)

 

Os dejo los Listado de cada parte:

COPYCD.BAS

10 ‘ Phoenix Compact-Copy (Disc)
20 STOP ON:ON STOP GOSUB 190
30  CLS:KEY OFF
40 CLS:COLOR 15,6,4
50 BEEP:LOCATE10,1:PRINT» MENU PRINCIPAL»
60 BEEP:LOCATE10,5:PRINT» DISCO A DISCO=1″
70 BEEP:LOCATE10,8:PRINT» CINTA A DISCO=2″
80 BEEP:LOCATE10,11:PRINT» DISCO A CINTA=3″
90 BEEP:LOCATE10,50:INPUT»SELECCIONE»;A$
100 IF A$=»1″ THEN GOTO 130
110 IF A$=»2″ THEN GOTO 150
120 IF A$=»3″ THEN GOTO 170
130 CLS:LOCATE 10,10:PRINT»DISCO A DISCO»
140 LOAD»A:D-D.op»,R
150 BEEP:CLS:LOCATE10,10:PRINT»CINTA A DISCO»
160 LOAD»A:C-D.op»,R
170 BEEP:CLS:LOCATE10,10:PRINT»DISCO A CINTA»
180 LOAD»A:D-C.op»,R
190 BEEP:BEEP:BEEP:CLS:END

 

C-D.OP

10 KEY OFF:SCREEN 0:COLOR 15,4,4
20 U=&HF610:DEFUSR=U
30 FORI=UTOU+62
40 READK:POKEI,K
50 NEXT
60 CLS
70 PRINT:PRINT»******* Copión de CINTA a DISCO*******»:PRINT:PRINT:PRINT
80 PRINT»Prepare el Casete para cargar»
81 PRINT:PRINT:INPUT»Pulsa return cuando esté preparado»;A$
82 IF A$=»» THEN GOTO 83
83 PRINT:BEEP:PRINT:BEEP:PRINT:BEEP:PRINT:BEEP:PRINT:BEEP:PRINT:BEEP:PRINT
84 PRINT:BEEP:PRINT:BEEP:PRINT:BEEP:PRINT:BEEP:PRINT:BEEP:PRINT:BEEP:
PRINT
85 PRINT:BEEP:PRINT:BEEP:PRINT:BEEP:PRINT:BEEP:PRINT:BEEP:PRINT:BEEP:
PRINT:BEEP:PRINT:BEEP:PRINT
86 BEEP:LOCATE 0,0:PRINT»*******Copión de CINTA a DISCO*******»
90 A=USR(0)
100 F$=»»
110 B=&HF600
120 T=PEEK(B)
130 IF(T<>&HD0)AND(T<>&HD3)AND(T<>&HEA)THENGOTO 460
140 FORI=B+1TOB+6
150 F$=F$+CHR$(PEEK(I))
160 NEXT
170 BEEP:PRINT:PRINT:PRINT»Nombre:»,F$
180 BEEP:PRINT»Programa:»;
190 IFT=&HD0THENGOTO 260
200 IFT=&HD3THENGOTO 240
210 BEEP:PRINT»DATA FILE/»
220 BEEP:PRINTTAB(13);»*** Basic y Ascii ***»
230 GOTO 340
240 BEEP:PRINT»**** Programa Basic ****»
250 GOTO 340
260 BEEP:PRINT»**** Código Máquina ****»
270 S=PEEK(B+7)+PEEK(B+8)*256
280 E=PEEK(B+9)+PEEK(B+10)*256
290 X=PEEK(B+11)+PEEK(B+12)*256
300 PRINT
310 PRINT»1.DIREC. Inicio=&H»;HEX$(S)
320 PRINT»2.DIREC. Final=&H»;HEX$(E)
330 PRINT»3.DIREC. Ejecución=&H»;HEX$(X)
340 BEEP:PRINT:PRINT»Rebobine la Cinta al principio del»
341 BEEP:PRINT»Bloque que haya cargado»
342 BEEP:PRINT:PRINT»Para cargar el Programa ponga…»:PRINT
350 D$=CHR$(34)
360 IFT=&HD0THENC$=»BLOAD»ELSEC$=»LOAD»
370 PRINTC$;D$;»CAS:»;D$
390 BEEP:PRINT:PRINT»Grábelo en el Disquete con…»:PRINT
400 IFT=&HD0 THENGOTO 430
410 BEEP:PRINT»SAVE(«D$;F$;D$;»)»
420 GOTO 440
430 BEEP:PRINT»BSAVE»;D$;F$;D$;»,&H»;HEX$(S);»,&H»;HEX$(E);»,&H»;HEX$(X)
440 BEEP:PRINT:PRINT»     (C)Phoenix Software «
450 END
460 PRINT»Fichero no reconocido»:END
470 DATA &H21,&H00,&HF6,&HE5
480 DATA &HCD,&HE1,&H00,&H38
490 DATA &H24,&HCD,&H47,&HF6
500 DATA &H4F,&H06,&H09,&HCD
510 DATA &H47,&HF6,&HB9,&H20
520 DATA &HEF,&H10,&HF8,&HE1
530 DATA &H71,&HCD,&H31,&HF6
540 DATA &HE5,&HCD,&HE1,&H00
550 DATA &HE1,&H06,&H06,&HCD
560 DATA &H47,&HF6,&H23,&H77
570 DATA &H10,&HF9,&HC3,&HE7
580 DATA &H00,&HCD,&HE7,&H00
590 DATA &HDD,&H21,&HB2,&H73
600 DATA &HC3,&H59,&H01,&HD9
610 DATA &HCD,&HE4,&H00,&H38
620 DATA &HF0,&HD9,&HC9

 

D-C.OP

10 CLS:BEEP:SCREEN 0:PRINT» Inserte el DISCO que usted vaya a «
20 BEEP:PRINT»=============  GRABAR  ==============»
30 BEEP:PRINT:PRINT:INPUT»Pulse RETURN cuando esté preparado»;A$
40 IF A$=»» THEN GOTO 50
50 ON ERROR GOTO 960
60 CLS
70 BEEP:PRINT »       (C)Phoenix Software  1991″
80 BEEP:PRINT »      *********************************»:PRINT
90 KEY OFF:WIDTH 40:COLOR 15,1
100 BEEP:PRINT»        Copión de DISCO a CINTA»
110 BEEP:PRINT»     ========================»
120 PRINT
130 BEEP:FILES:PRINT:PRINT:
140 BEEP:INPUT «Escriba Programa a copiar»;A$
150 OPEN A$ FOR INPUT AS#1
160 PRINT:PRINT
170 FOR I= 1 TO 7
180 D$(I)=HEX$(ASC(INPUT$(1,#1)))
190 NEXT I
200 CLOSE
210 IF D$(2)=»0″ THEN D$(2)=»00″
220 IF D$(2)=»1″ THEN D$(2)=»01″
230 IF D$(2)=»2″ THEN D$(2)=»02″
240 IF D$(2)=»3″ THEN D$(2)=»03″
250 IF D$(2)=»4″ THEN D$(2)=»04″
260 IF D$(2)=»5″ THEN D$(2)=»05″
270 IF D$(2)=»6″ THEN D$(2)=»06″
280 IF D$(2)=»7″ THEN D$(2)=»07″
290 IF D$(2)=»8″ THEN D$(2)=»08″
300 IF D$(2)=»9″ THEN D$(2)=»09″
310 IF D$(2)=»A» THEN D$(2)=»0A»
320 IF D$(2)=»B» THEN D$(2)=»0B»
330 IF D$(2)=»C» THEN D$(2)=»0C»
340 IF D$(2)=»D» THEN D$(2)=»0D»
350 IF D$(2)=»E» THEN D$(2)=»0E»
360 IF D$(2)=»F» THEN D$(2)=»0F»
370 ‘ tabla 4
380 IF D$(4)=»0″ THEN D$(4)=»00″
390 IF D$(4)=»1″ THEN D$(4)=»01″
400 IF D$(4)=»2″ THEN D$(4)=»02″
410 IF D$(4)=»3″ THEN D$(4)=»03″
420 IF D$(4)=»4″ THEN D$(4)=»04″
430 IF D$(4)=»5″ THEN D$(4)=»05″
440 IF D$(4)=»6″ THEN D$(4)=»06″
450 IF D$(4)=»7″ THEN D$(4)=»07″
460 IF D$(4)=»8″ THEN D$(4)=»08″
470 IF D$(4)=»9″ THEN D$(4)=»09″
480 IF D$(4)=»A» THEN D$(4)=»0A»
490 IF D$(4)=»B» THEN D$(4)=»0B»
500 IF D$(4)=»C» THEN D$(4)=»0C»
510 IF D$(4)=»D» THEN D$(4)=»0D»
520 IF D$(4)=»E» THEN D$(4)=»0E»
530 IF D$(4)=»F» THEN D$(4)=»0F»
540 ‘ tabla 6
550 IF D$(6)=»0″ THEN D$(6)=»00″
560 IF D$(6)=»1″ THEN D$(6)=»01″
570 IF D$(6)=»2″ THEN D$(6)=»02″
580 IF D$(6)=»3″ THEN D$(6)=»03″
590 IF D$(6)=»4″ THEN D$(6)=»04″
600 IF D$(6)=»5″ THEN D$(6)=»05″
610 IF D$(6)=»6″ THEN D$(6)=»06″
620 IF D$(6)=»7″ THEN D$(6)=»07″
630 IF D$(6)=»8″ THEN D$(6)=»08″
640 IF D$(6)=»9″ THEN D$(6)=»09″
650 IF D$(6)=»A» THEN D$(6)=»0A»
660 IF D$(6)=»B» THEN D$(6)=»0B»
670 IF D$(6)=»C» THEN D$(6)=»0C»
680 IF D$(6)=»D» THEN D$(6)=»0D»
690 IF D$(6)=»E» THEN D$(6)=»0E»
700 IF D$(6)=»F» THEN D$(6)=»0F»
710 CLS:
720 D1$=D$(3)+D$(2):D2$=D$(5)+D$(4):D3$=D$(7)+D$(6)
730 BEEP:PRINT » Nombre   :»;A$
740 BEEP:PRINT » Inicio   :»;D1$
750 BEEP:PRINT » Final    :»;D2$
760 BEEP:PRINT » Ejecución:»;D3$
770 BEEP:PRINT
780 BEEP:INPUT»Desea grabarlo en CINTA o en DISCO (C/D)»;E$
790 Z$=CHR$(34)
800 IF E$=»C» OR E$=»c»  THENGOTO890
810 IF E$=»D» OR E$=»d»  THENGOTO830
820 IF E$<>»C» OR E$<>»c» THEN GOTO 710:IF E$<>»D» OR E$<>»d» THEN GOTO 710
830 BEEP:INPUT»Dime Nombre para grabar el Programa en el DISQUETE»;CA$
840 PRINT:PRINT
850 BEEP:PRINT:PRINT:PRINT»BLOAD»+Z$+A$+Z$
860 PRINT:PRINT
870 BEEP:PRINT»BSAVE»+Z$+»»+CA$+Z$+»,&H»D1$+»,&H»+D2$+»,&H»+D3$
880 END
890 Z$=CHR$(34)
900 BEEP:INPUT»Dime Nombre para grabar el Programa en el CASETE»;CA$
910 PRINT:PRINT
920 BEEP:PRINT:PRINT:PRINT»BLOAD»+Z$+A$+Z$
930 PRINT:PRINT
940 BEEP:PRINT»BSAVE»+Z$+»CAS:»+CA$+Z$+»,&H»D1$+»,&H»+D2$+»,&H»+D3$
950 END
960 BEEP:CLS:IF ERR=56 THEN LOCATE 10,10:PRINT»Fichero no encontrado»:FOR A=1 TO
2000:NEXT:RUN
970 BEEP:CLS:IF ERR=70 THEN LOCATE 10,10:PRINT»Pon el Disquete, por favor»:FOR A=1 TO 3000:NEXT:RUN
980 BEEP:CLS:IF ERR=53 THEN LOCATE 10,10:PRINT»Fichero no depositado»:FOR A=1 TO 1000:NEXT:RUN

 

D-D.OP

10 CLS:BEEP:SCREEN 0:PRINT» Inserte el Disco que usted vaya a «
20 BEEP:PRINT»=============  GRABAR  ==============»
30 BEEP:PRINT:PRINT:INPUT»Pulse RETURN cuando esté preparado»;A$
40 IF A$=»» THEN GOTO 50
50 ON ERROR GOTO 900
60 CLS
70 KEY OFF:WIDTH 40:COLOR 15,1
80 BEEP:PRINT»        Copión de Disco a Disco»
90 BEEP:PRINT»        =======================»
100 PRINT
110 BEEP:FILES:PRINT:PRINT:
120 BEEP:INPUT «Escriba Programa a COPIAR»;A$
130 OPEN A$ FOR INPUT AS#1
140 PRINT:PRINT
150 FOR I= 1 TO 7
160 D$(I)=HEX$(ASC(INPUT$(1,#1)))
170 NEXT I
180 CLOSE
190 IF D$(2)=»0″ THEN D$(2)=»00″
200 IF D$(2)=»1″ THEN D$(2)=»01″
210 IF D$(2)=»2″ THEN D$(2)=»02″
220 IF D$(2)=»3″ THEN D$(2)=»03″
230 IF D$(2)=»4″ THEN D$(2)=»04″
240 IF D$(2)=»5″ THEN D$(2)=»05″
250 IF D$(2)=»6″ THEN D$(2)=»06″
260 IF D$(2)=»7″ THEN D$(2)=»07″
270 IF D$(2)=»8″ THEN D$(2)=»08″
280 IF D$(2)=»9″ THEN D$(2)=»09″
290 IF D$(2)=»A» THEN D$(2)=»0A»
300 IF D$(2)=»B» THEN D$(2)=»0B»
310 IF D$(2)=»C» THEN D$(2)=»0C»
320 IF D$(2)=»D» THEN D$(2)=»0D»
330 IF D$(2)=»E» THEN D$(2)=»0E»
340 IF D$(2)=»F» THEN D$(2)=»0F»
350 ‘ tabla 4
360 IF D$(4)=»0″ THEN D$(4)=»00″
370 IF D$(4)=»1″ THEN D$(4)=»01″
380 IF D$(4)=»2″ THEN D$(4)=»02″
390 IF D$(4)=»3″ THEN D$(4)=»03″
400 IF D$(4)=»4″ THEN D$(4)=»04″
410 IF D$(4)=»5″ THEN D$(4)=»05″
420 IF D$(4)=»6″ THEN D$(4)=»06″
430 IF D$(4)=»7″ THEN D$(4)=»07″
440 IF D$(4)=»8″ THEN D$(4)=»08″
450 IF D$(4)=»9″ THEN D$(4)=»09″
460 IF D$(4)=»A» THEN D$(4)=»0A»
470 IF D$(4)=»B» THEN D$(4)=»0B»
480 IF D$(4)=»C» THEN D$(4)=»0C»
490 IF D$(4)=»D» THEN D$(4)=»0D»
500 IF D$(4)=»E» THEN D$(4)=»0E»
510 IF D$(4)=»F» THEN D$(4)=»0F»
520 ‘ tabla 6
530 IF D$(6)=»0″ THEN D$(6)=»00″
540 IF D$(6)=»1″ THEN D$(6)=»01″
550 IF D$(6)=»2″ THEN D$(6)=»02″
560 IF D$(6)=»3″ THEN D$(6)=»03″
570 IF D$(6)=»4″ THEN D$(6)=»04″
580 IF D$(6)=»5″ THEN D$(6)=»05″
590 IF D$(6)=»6″ THEN D$(6)=»06″
600 IF D$(6)=»7″ THEN D$(6)=»07″
610 IF D$(6)=»8″ THEN D$(6)=»08″
620 IF D$(6)=»9″ THEN D$(6)=»09″
630 IF D$(6)=»A» THEN D$(6)=»0A»
640 IF D$(6)=»B» THEN D$(6)=»0B»
650 IF D$(6)=»C» THEN D$(6)=»0C»
660 IF D$(6)=»D» THEN D$(6)=»0D»
670 IF D$(6)=»E» THEN D$(6)=»0E»
680 IF D$(6)=»F» THEN D$(6)=»0F»
690 CLS:
700 D1$=D$(3)+D$(2):D2$=D$(5)+D$(4):D3$=D$(7)+D$(6)
710 BEEP:PRINT » Nombre   :»;A$
720 BEEP:PRINT » Inicio   :»;D1$
730 BEEP:PRINT » Final    :»;D2$
740 BEEP:PRINT » Ejecución:»;D3$
750 BEEP:PRINT
760 Z$=CHR$(34)
770 BEEP:INPUT»Dime nombre para grabar el Programa en Disquete»;CA$
780 PRINT:PRINT
790 BEEP:PRINT:PRINT:PRINT»BLOAD»+Z$+A$+Z$
800 PRINT:PRINT
810 BEEP:PRINT»BSAVE»+Z$+»»+CA$+Z$+»,&H»D1$+»,&H»+D2$+»,&H»+D3$
820 END
830 Z$=CHR$(34)
840 BEEP:INPUT»Dime nombre para grabar el Programa en Casete»;CA$
850 PRINT:PRINT
860 BEEP:PRINT:PRINT:PRINT»BLOAD»+Z$+A$+Z$
870 PRINT:PRINT
880 BEEP:PRINT»BSAVE»+Z$+»CAS:»+CA$+Z$+»,&H»D1$+»,&H»+D2$+»,&H»+D3$
890 END
900 BEEP:CLS:IF ERR=56 THEN LOCATE 10,10:PRINT»Fichero no encontrado»:FOR A=1 TO 2000:NEXT:RUN
910 BEEP:CLS:IF ERR=70 THEN LOCATE 10,10:PRINT»Pon el Disquete, por favor»:FOR A=1 TO 3000:NEXT:RUN
920 BEEP:CLS:IF ERR=53 THEN LOCATE 10,10:PRINT»Fichero no depositado»:FOR A=1 TO 1000:NEXT:RUN

 

El Programa puede tener su utilidad aunque evidentemente no es perfecto. Se limita, obviamente, a su funcionamiento con Bloques ESTÁNDAR (¡olvidaos por ejemplo de pasar Bloques Turbo de Cinta a Disco….!)

Un «fallo» que le veo es por ejemplo a la hora de Cargar un Programa desde Cinta y luego pasarlo a Disco. El «problema» es que primero lee el Bloque de Cinta, te informa del tipo de Bloque y de las direcciones de inicio, fin y ejecución (cuando se trata de un Programa en CM) pero antes de grabarlo en Disco te pide que….rebobines la Cinta… 😦

En todo caso creo que el Programa puede tener su utilidad. 😉

Por supuesto si se te ocurre alguna mejora y la quieres compartir con nosotros, ¡házmelo saber! en mi dire de GMAIL —> josemanuel74

Para mayor comodidad sus dejo AQUÍ una imagen «.Dsk» que contiene los 4 Programas mencionados-listados. 😉

Gracias & Saludetes. 😉

Publicado en Sin categoría | Deja un comentario

Emular desactivación de Disquetera (CTRL) por Software

Hola:

Como todos sabemos si mantenemos pulsada la Tecla <CTRL> mientras nuestro querido MSX arranca conseguimos desactivar la Segunda Disquetera y así ganar memoria disponible para el BASIC.

Hace tiempo me surgió la duda sobre si esto mismo podría hacerse mediante algún Programa (ya que hay veces que en los Emuladores y con algún Hardware MSX no siempre funciona esto). Pues bien, investigando investigando se mencionaba un Programa llamado «CONTROL.BAS» que hacía esto y que aparecía publicado en la Revista Brasileira CPU MSX número 20, que podéis consultar AQUÍ  y más concretamente en la Página 38.

No obstante, el Programa original tiene 2 pequeñas erratas. En concreto, habría que cambiar estas 2 Líneas:

................................
420 POKE &HF356,&HF1
................................
470 CLEAR 200,HI: CLOSE
................................

Os dejo aquí el Listado COMPLETO (y ya corregido):

100 ‘ CONTROL.BAS
110 ‘
120 ‘ Simula pulsaci¢n de la Tecla CTRL
130 ‘ para eliminar todas las Unidades
140 ‘ menos la primera (A:)
150 ‘
160 ‘ por Francis N. Ouinn  (Revista: CPU MSX – Num 20)
170 ‘
180 IF PEEK(&HFD9F)=&HC9 THEN END
190 IF PEEK(&HF347)=1 THEN END
200 FOR I=1 TO 1000: NEXT I
210 DP=256*PEEK(&HF356)+PEEK(&HF355)
220 IF PEEK(DP+16)=3 THEN FS=512
230 HI=&HE68D-FS
240 FC=&HE7A9-FS
250 E7=&HE7-(FS/256): E6=E7-1
260 BL=256*PEEK(&HF379)+PEEK(&HF378)
270 BS=PEEK(&HF348)
280 POKE &HFD9F,&HC9
290 FOR I=0 TO 24
300 POKE HI+I,PEEK(BL+I)
310 NEXT I
320 POKE &HF1AA,0
330 POKE &HF1BD,&HAA: POKE &HF1BE,E7
340 POKE &HF1C5,0: POKE &HF1C8,1
350 POKE FC,&HFF: POKE &HFB21,1
360 POKE &HF247,0: POKE &HF347,1
370 POKE &HF349,&HA9: POKE &HF34A,E7
380 POKE &HF34D,&HAA: POKE &HF34E,&HEF
390 POKE &HF34F,&HAA: POKE &HF350,&HED
400 POKE &HF351,&HAA: POKE &HF352,&HEB
410 POKE &HF353,&HA6: POKE &HF354,E6
420 POKE &HF356,&HF1
430 IF PEEK(&HFB2C)<>BS THEN 470
440 FOR I=0 TO 2
450 POKE &HFDA0+I, PEEK(&HFB2C+I)
460 NEXT I
470 CLEAR 200,HI: CLOSE
480 POKE &HFD9F,&HF7
490 ‘
500 POKE &HFD09,&HF7
510 POKE &HFD0A,PEEK(&HF348)
520 POKE &HFD0B,&H22: POKE &HFD0C,&H40
530 DEFUSR=&HFD09: X=USR(0)

Por cierto: gracias a mi amigo PANZER por facilitarme esa solución e indicarme que había que corregir esas líneas. 😉

Otra solución posible, sería usar un Programa que se llama «ONEDRIVE.COM»  que aquí se comenta:

https://www.msx.org/news/software/en/onedrive-10

Lamentablemente dicho enlace de Descarga ya no funciona. 😦 pero el Usuario ~MK~ me ha facilitado una copia de dicho Fichero. 😉

Os comparto aquí una imagen «.DSK» con el Programa Basic «Control.BAS» y el «ONEDRIVE.COM«.

Gracias & Saludetes. 😉

Publicado en Sin categoría | Deja un comentario

MSX-BIOS I/O Listing

MSX  BIOS   Symbol  Table

MSX-BASIC-SCREEN

042C ABORT | 10F9 CKCNTC | 0A88 DELLN0
F847 ARG | FBD9 CLIKFL | FD99 DEVICE
F7B5 ARYTA2 | F3DB CLIKSW | F662 DIMFLG
F6C4 ARYTAB | F935 CLINEF | 0577 DISSCR
F40B ASCPCT1 | F3B2 CLMLST | F665 DONUM
F40D ASCPCT2 | F92A CLOC | F6B5 DOT
F931 ASPECT | F38C CLPRIM | 0A61 DOWN
F928 ATRBAS | 06A8 CLRSPR | 172A DOWNC
F3F2 ATRBYT | 0848 CLS | FCBD DRWANG
F6AA AUTFLG | F92C CMASK | FCBB DRWFLG
F6AD AUTINC | F936 CNPNTS | FCBC DRWSCL
F6AB AUTLIN | F3DE CNSDFG | F699 DSCPTR
F3EA BAKCLR | 08B0 CNVCH1 | F698 DSCTMP
FBB1 BASROM | 08B2 CNVCH2 | 0B2B DSPFNK
F3EB BDRCLR | 08B4 CNVCH3 | 1B63 DUTDLP
1113 BEEP | 089D CNVCHR | 0570 ENASCR
FC48 BOTTOM | FBCC CODSAV | 025E ENASLT
FCB2 BRDATR | F66A CONLO | 267F ENDBIOS
046F BREAKX | F668 CONSAV | F660 ENDBUF
3FDC BRKTXT | F666 CONTXT | F6A1 ENDFOR
F55E BUF | F669 CONTYP | F40F ENDPRG
FC18 BUFEND | F939 CPCNT | FFCA ENDWRK
F55D BUFMIN | F93B CPCNT8 | 026B ENESLT
06F9 CALATR | F938 CPLOTF | FBB0 ENSTOP
01FF CALBAS | F93D CRCSUM | 0989 ENTESC
022E CALESL | F3B1 CRTCNT | 0B15 ERAFNK
0205 CALLF | F3FC CS120 | F414 ERRFLG
06E4 CALPAT | F942 CSAVEA | F6B3 ERRLIN
0217 CALSLT | F944 CSAVEM | F6B7 ERRTXT
FCAB CAPST | F941 CSCLXY | FCC1 EXPTBL
FCB1 CASPRV | FCA9 CSRSW | F7F8 FACLO
F933 CENCNT | F3DD CSRX | F7C5 FBUFFR
F924 CGPBAS | F3DC CSRY | 1639 FETCHC
F91F CGPNT | F93F CSTCNT | F871 FILNM2
1BBF CGTABL | FCAA CSTYLE | F860 FILTAB
0F3D CHGCAP | F41C CURLIN | 0815 FILVRM
07F7 CHGCLR | F945 CXOFF | 13A9 FKTABL
10CB CHGET | F947 CYOFF | FCAE FLBMEM
084F CHGMOD | F7F6 DAC | F6A6 FLGINP
0F7A CHGSND | F6A3 DATLIN | FBCE FNKFLG
0D62 CHKBUF | F6C8 DATPTR | 0B26 FNKSB
02D7 CHKRAM | 146A DCOMPR | F87F FNKSTR
0B9F CHKSCR | F7F4 DECCNT | FBCD FNKSWI
08BC CHPUT | 268C DECSUB | F3E9 FORCLR
08DF CHPUT1 | F7F2 DECTM2 | 148E FORMAT
2686 CHRGTR | F7F0 DECTMP | F3F5 FRCNEW
0D6A CHSNS | F6CA DEFTBL | F69B FRETOP
FBCA FSTPOS | FEEE H.DSKC | FE67 H.MERG
F7BA FUNACT | FE12 H.DSKF | FE3A H.MKD
F3FA GETPNT | FE17 H.DSKI | FE30 H.MKI
1474 GETVC2 | FDEF H.DSKO | FE35 H.MKS
1470 GETVCP | FDA9 H.DSPC | FDF9 H.NAME
2689 GETYPR | FDB3 H.DSPF | FF3E H.NEWS
04BD GICINI | FEA3 H.EOF | FDD6 H.NMI
FCB7 GRPACX | FDAE H.ERAC | FEB7 H.NODE
FCB9 GRPACY | FDB8 H.ERAF | FE58 H.NOFO
F3CD GRPATR | FF02 H.ERRF | FF34 H.NOTR
F3CB GRPCGP | FFB1 H.ERRO | FE62 H.NTFL
F3C9 GRPCOL | FEFD H.ERRP | FF2F H.NTFN
FCA6 GRPHED | FF70 H.EVAL | FF6B H.NTPL
F3C7 GRPNAM | FE2B H.FIEL | FE5D H.NULO
F3CF GRPPAT | FE7B H.FILE | FF75 H.OKNO
1510 GRPPRT | FE85 H.FILO | FDEA H.ONGO
0704 GSPSIZ | FF1B H.FINE | FEE4 H.OUTD
18C7 GTASPC | FF7A H.FING | FEB2 H.PARD
12AC GTPAD | FF16 H.FINI | FFA7 H.PHYD
1273 GTPDL | FF5C H.FINP | FDDB H.PINL
11EE GTSTCK | FEA8 H.FOPS | FFC5 H.PLAY
1253 GTTRIG | FFAC H.FORM | FEBC H.POSD
FCB3 GXPOS | FF9D H.FRET | FEF8 H.PRGE
FCB5 GYPOS | FF66 H.FRME | FF52 H.PRTF
F40A HEADER | FF93 H.FRQI | FFA2 H.PTRG
FE1C H.ATTR | FEC6 H.GEND | FDE0 H.QINL
FEAD H.BAKU | FE4E H.GETP | FF07 H.READ
FE76 H.BINL | FF43 H.GONE | FF4D H.RETU
FE71 H.BINS | FE8A H.INDS | FE26 H.RSET
FF8E H.BUFL | FDC7 H.INIP | FE8F H.RSLF
FDC2 H.CHGE | FDE5 H.INLI | FECB H.RUNC
FDA4 H.CHPU | FE03 H.IPL | FE94 H.SAVD
FF48 H.CHRG | FEDF H.ISFL | FE6C H.SAVE
FED0 H.CLEA | FF7F H.ISMI | FF98 H.SCNE
FE0D H.CMD | FF2A H.ISRE | FFC0 H.SCRE
FF57 H.COMP | FDCC H.KEYC | FE53 H.SETF
FE08 H.COPY | FD9A H.KEYI | FDF4 H.SETS
FEE9 H.CRDO | FDFE H.KILL | FF39 H.SNGF
FF20 H.CRUN | FDD1 H.KYEA | FEDA H.STKE
FF25 H.CRUS | FF89 H.LIST | FD9F H.TIMI
FE49 H.CVD | FE99 H.LOC | FDBD H.TOTE
FE3F H.CVI | FE9E H.LOF | FF61 H.TRMN
FE44 H.CVS | FED5 H.LOPD | FF84 H.WIDT
FEF3 H.DDGR | FFB6 H.LPTO | F408 HIGH
FEC1 H.DEVN | FFBB H.LPTS | FC4A HIMEM
FE80 H.DGET | FE21 H.LSET | F83E HOLD
FF11 H.DIRD | FF0C H.MAIN | F836 HOLD2
F806 HOLD8 | 15DF MAPXYC | 18CF PNTINI
098F INESC | F92F MAXDEL | 088E POSIT
139D INIFNK | F85F MAXFIL | F7B4 PRMFLG
05D2 INIGRP | F3EC MAXUPD | F6E6 PRMLEN
061F INIMLT | F958 MCLFLG | F74E PRMLN2
2680 INIT | FB3B MCLLEN | F74C PRMPRV
0538 INIT32 | FB3C MCLPTR | F6E4 PRMSTK
049D INITIO | F956 MCLTAB | FD89 PROCNM
050E INITXT | F672 MEMSIZ | FB35 PRSCNT
23D5 INLIN | F92D MINDEL | F416 PRTFLG
FCA8 INSFLG | F3EF MINUPD | F864 PTRFIL
FCA2 INTCNT | F3D7 MLTATR | F6A9 PTRFLG
FC9B INTFLG | F3D5 MLTCGP | 0F55 PUTCHR
FCA0 INTVAL | F3D3 MLTCOL | F3F8 PUTPNT
03FB ISCNTC | F3D1 MLTNAM | 1492 PUTQ
145F ISFLIO | F3D9 MLTPAT | 23CC QINLIN
FC9E JIFFY | F951 MOVCNT | F971 QUEBAK
FCAD KANAMD | FB3F MUSICF | F959 QUETAB
FCAC KANAST | F922 NAMBAS | FB3E QUEUEN
F41F KBUF | FBE5 NEWKEY | F3F3 QUEUES
0D89 KEYANY | 4601 NEWSTT | F418 RAWPRT
FBF0 KEYBUF | F87C NLONLY | F380 RDPRIM
0E3B KEYCOD | 1398 NMI | 110E RDPSG
0C3C KEYINT | F7B7 NOFUNS | 01B6 RDSLT
0468 KILBUF | 1809 NSETCX | 7E1A RDSLTW
0F10 KYEASY | F417 NTMSXP | 1449 RDVDP
107D KYGRAP | F862 NULBUF | 07D7 RDVRM
0F36 KYLOCK | FBDA OLDKEY | 1647 READC
0F46 KYSTOP | F6BE OLDLIN | F3F7 REPCNT
070F LDIRMV | FCB0 OLDSCR | FC6A REQSTP
0744 LDIRVM | F6C0 OLDTXT | F3DF RG0SAV
16EE LEFTC | F6BB ONEFLG | F3E0 RG1SAV
F954 LFPROG | F6B9 ONELIN | F3E1 RG2SAV
14EB LFTQ | FBD8 ONGSBF | F3E2 RG3SAV
F3AF LINL32 | F664 OPRTYP | F3E3 RG4SAV
F3AE LINL40 | 1B45 OUTDO | F3E4 RG5SAV
F3B0 LINLEN | FC9D PADX | F3E5 RG6SAV
FBB2 LINTTB | FC9C PADY | F3E6 RG7SAV
F94B LOHADR | F6E8 PARM1 | 16C5 RIGHTC
F94D LOHCNT | F750 PARM2 | F857 RNDX
F94A LOHDIR | F926 PATBAS | FAF5 RS2IQ
F949 LOHMSK | FC40 PATWRK | 144C RSLREG
F406 LOW | 08DB PBDHRT | F955 RTPROG
FCA4 LOWLIM | F953 PDIREC | FC9A RTYCNT
085D LPTOUT | 148A PHYDIO | FCBE RUNBNF
F415 LPTPOS | 23BF PINLIN | F866 RUNFLG
0884 LPTSTT | FB40 PLYCNT | F87D SAVEND
FCBF SAVENT | 1A63 TAPION
FB36 SAVSP | 19DD TAPOFF
F6B1 SAVSTK | 19F1 TAPOON
F6AF SAVTXT | 1A19 TAPOUT
FB39 SAVVOL | 170A TDOWNC
1599 SCALXY | F6A7 TEMP
197A SCANL | F6BC TEMP2
18E4 SCANR | F69D TEMP3
2439 SCITBL | F69F TEMP8
F3F6 SCNCNT | F7B8 TEMP9
FCAF SCRMOD | F678 TEMPPT
02A3 SELEXP | F67A TEMPST
027E SELPRM | 083B TOTEXT
1676 SETATR | F7C4 TRCFLG
167E SETC | F3E8 TRGFLG
0602 SETGRP | FC4C TRPTBL
0659 SETMLT | F661 TTYPOS
07EC SETRD | 173C TUPC
05B4 SETT32 | F3B9 TXTATR
0C2B SETTRM | F3B7 TXTCGP
0594 SETTXT | F3B5 TXTCOL
07DF SETWRT | F3B3 TXTNAM
FBEB SFTKEY | F3BB TXTPAT
F94F SKPCNT | F676 TXTTAB
120C SLSTCK | 175D UPC
FCC9 SLTATR | F39A USRTAB
FCC5 SLTTBL | F663 VALTYP
FD09 SLTWRK | F6C2 VARTAB
1452 SNSMAT | FB41 VCBA
F3E7 STATFL | FB66 VCBB
F674 STKTOP | FB8B VCBC
1384 STMOTR | F419 VLZADR
0A69 STOCSR | F41B VLZDAT
1640 STOREC | F975 VOICAQ
F6C6 STREND | F9F5 VOICBQ
6678 STROUT | FA75 VOICCQ
11C4 STRTMS | FB38 VOICEN
F6A5 SUBFLG | FCA5 WINWID
F7BC SWPTMP | F385 WRPRIM
2683 SYNCHR | 01D1 WRSLT
F3C3 T32ATR | 1102 WRTPSG
F3C1 T32CGP | 057F WRTVDP
F3BF T32COL | 07CD WRTVRM
F3BD T32NAM | 144F WSLREG
F3C5 T32PAT |
1ABC TAPIN |
19E9 TAPIOF |
Publicado en Sin categoría | Deja un comentario

RAM del Sistema y Tabla de VECTORES

La RAM del SISTEMA

Si usted es un poco curioso, habrá observado que en ocasiones encontramos efectos inesperados «pokeando» en determinadas direcciones valores determinados. Esto se debe a que los programadores que crearon el Sistema Operativo del MSX, pensaron en la posibilidad de modificar el Sistema Operativo según las necesidades del Usuario. Para ello reservaron una zona de memoria modificable (RAM) desde la cual manejar el flujo de las principales Rutinas (ROM) del Sistema que, por supuesto, no son directamente modificables. A esta zona se le suele llamar región de comunicación y podemos dividirla en dos grandes zonas:

  • La Ram del Sistema
  • La Tabla de Vectores

La RAM del SISTEMA

Es una zona en la que se guardan los principales Parámetros y Variables Internas. Contiene principalmente elementos de un octeto (variables internas y semáforos) y elementos de dos octetos (variables internas y direcciones). Comienza en &hF380 y termina en &hFD99.

A contuniación pasamos a exponer los principales Parámetros indicando para su comodidad el Nombre, la Dirección, la Longitud y la Función de las principales variables.

NOMBRE DIR. LONG. FUNCIÓN
ARG F847 016 Acumulador Secundario
ARYTAB F6C4 002 Dirección de la Tabla de variables de matriz
ASPECT F931 002 Zona de trabajo CIRCLE
ATRBYT F3F2 001 Octeto Atributo
AUTFLG F6AA 001 Indicador de AUTO si = 0
AUTINC F6AD 002 Incremento entre líneas para AUTO
AUTLIN F6AB 002 Número actual de línea utilizado por AUTO
BAKCOL F3EA 001 Color de Fondo
BASETB F91F 010 Valores Tablas del VDP
BASLOD FCAE 001 Indicador carga BASIC
BASROM FBB1 001 Si BASIC está en ROM = 0
NOMBRE DIR. LONG. FUNCIÓN
BDRCOL F3EB 001 Color de borde
BOTTOM FC48 002 Dir. comienzo de la RAM
BRDATR FCB2 001 Color de borde en PAINT
BUF F55E 258 Zona Buffer del Teclado
CAPST FCAB 001 Indicador de Caps Lock
CASATR F3FC 020 Gestión del Cassette
CLIKSW F3DB 001 Indicador click. Si = 0
CLMLST F3B2 001 Núm. caracteres para TAB
CLPRIM F38C 014 Rutina de salto al interior del Slot en Banco 0
CNSDFG F3DE 001 Flag Teclas de Función 0 = no visibles
CODSAV FBCC 001 Código del Cursor
CONSAV F668 001 Archivo temporal del Código de Instruc­ción
CONTXT F666 002 Dir. carácter actual txt
CRTCNT F3B1 001 Núm. líneas por Pantalla
CSRSW FCA9 001 Cursor On / Cursor Off
CSRX F3DD 001 Posición horizontal actual del cursor
CSRY F3DC 001 Posición vertical actual del cursor
CSTYLE FCAA 001 Carácter del cursor
CURLIN FA1C 002 Núm. actual de la línea en curso de eje­cución
DAC F776 016 Acumulador Matemático
DATLIN F6A3 002 Indicador de la última línea DATA leída
DATPTR F6C8 002 Puntero octeto siguiente a último carácter en modo de ejecución
DEFTBL F6CA 026 Tabla de declaración de Variables
DIMFLG F662 001 Indicador para DIM
DORES F664 001 Tipo de Operador
DOT F6B5 002 Núm. actual de linea
DRWANG FCBD 001 Angulo para DRAW
DRWFLG FCBB 001 Indicador para DRAW
DRWSCL FCBC 001 Escala para DRAW
DSCTMF F698 002 Dirección siguiente octeto disponible en la Tabla de cadenas
ENDBUF F660 001 Fin de Buffer
ENDFOR F6A1 002 Puntero Instrucción FOR
ENDPRG F40F 005 Puntero para RESUMENEXT
ENSTOP FBB0 001 Posible recalentamiento si es igual a cero
ERRFLG F414 001 Núm. del último error
ERRLIN F6B3 002 Núm. línea con error
ERRTXT F6B7 002 Puntero para RESUME
ESCCNT FCA7 001 Contador Sentencia SCAPE
NOMBRE DIR. LONG. FUNCIÓN
EXPTBL FCC1 004 Comienzo zona de trabajo en conmuta­ción Cartucho
FBUFFR F7C5 43 Zona de trabajo BCD
FLBMEM FCAE 001 Indicador de carga para Programa BASIC
FLGINP F6A6 001 Flag para INPUTREAD
FNKFLG FBCE 010 Flag para ON KEY GOSUB
FNKSTR F87F 160 Contenido Teclas Función
FORCLR F3E9 001 Color texto (utilizado por sentencia COLOR)
FRCNEW F3F5 001 Contiene &hFF
FRETOP F69B 002 Dirección máxima del espacio de cadenas
FSTPOS FBCA 002 Primera posición de carácter en INLIN
FUNACT F7BA 002 Uso temporal para recogida de basura.
GETPUT F3FA 002 Dir. octeto actual a leer en buffer de Te­clado
GRPACX FCB7 002 Acumulador gráfico X
GRPACY FCB9 002 Acumulador gráfico Y
GRPATR F3CD 002 Dir. Tabla de atributos de Sprites
GRPCGP F3CB 002 Dir. Tabla del generador de patrones en Screen 2
GRPCOL F3C9 002 Dir. Tabla de colores en Screen 2
GRPHED FCA6 001 Encabezamiento de carácter gráfico
GRPNAM F3C7 002 Tabla del nombre de patrones en Screen 2
GRPPAT F3CF 002 Tabla del generador de Sprites en Screen 2
GXPOS FCB3 002 Posición horizontal del cursor en gráficos
GYPOS FCB5 002 Posición vertical del cursor en gráficos
HIMEM FC4A 002 Dir. final memoria RAM
INSFLG FCA8 001 Indicador modo inserción
INTCNT FCA2 002 Contador de Intervalo
INTFLG FC9B 001 Indicador de Interrupción
INTVAL FCA0 002 Valor de intervalo en ON INTERVAL GOSUB
JIFFY FC9E 002 Jiffy
KBUF F41F 318 Buffer para la codificación de una línea BASIC
KEYBUF FBF0 040 Buffer codificación de Tecla
LINL32 F3AF 001 Long. línea en Screen 1
LINL40 F3AE 001 Long. línea en Screen 0
LINLEN F3B0 001 Long. línea actual
LINTTB FBB2 024 Tabla de terminadores de línea
LINWRK FC18 040 Operaciones de proceso de Pantalla
LOHMSK F949 001 Zona trabajo para PAINT
NOMBRE DIR. LONG. FUNCIÓN
LOWLIM FCA4 001 Lectura de Cassette
LPTPOS F415 001 Posición cabeza Impresora
MAXFIL F85F Comienzo zona de parámetros para la ma­nipulación de Ficheros
MCLTAB F956 002 Zona de trabajo para PLAY
MEMSIZ F672 002 Valor superior de la memoria utilizable por el BASIC (modificable con CLEAR)
MLTATR F3D7 002 Dir. Tabla de atributos de Sprites en Screen 3
MLTCGP F3D5 002 Dir. Tabla del generador de patrones en Screen 3
MLTCOL FSD3 002 Dir. Tabla de colores en Screen 3
MLTNAM F3D1 002 Dir. Tabla del nombre de patrones en Screen 3
MLTPAT F3D9 002 Dir Tabla del generador de Sprites en Screen 3
NTMSXP F417 001 Tipo de impresora.  MSX = 0
OLDKEY FBDA 011 Antiguo estado de Tecla
OLDLIN F6BE 002 Núm. de línea establecido por STOP y END
OLDSCR FCB0 001 Antiguo modo de Pantalla
OLDTXT F6C0 002 Dir. del último octeto ejecutado
ONEFLG F6BB 001 Vale &hFF durante tratamiento ON ERROR
ONELIN F6B9 002 Núm. línea de tratamiento de error
ONGSBF FBD8 001 Flag de condición para ONGOSUB
PADX FC9D 001 Valor de X para el Pad
PADY FC9C 001 Valor de Y para el Pad
PARM1 FSE8 100 Tabla de parámetros para funciones def. por Usuario
PARM2 F750 100 Direcciones de parámetros
PRTFLG F416 001 Flag de Impresora: 1=Impresora, 0=Pantalla
PTRFLG F6A9 001 Indicador de modo Programa o modo Directo
PUTPNT F3F8 002 Buffer teclado (put)
QUEUES F3F3 002 Dir. Tabla de espera
RDPRIM F380 011 Lectura Slots Banco 0
RG0SAV F3DF 008 Contenido de los ocho registros del VDP (0-7)
RTYCNT FC9A 001 Control de interrupción
RUNBNF FCBE 001 Flag Entrada/Salida bin
NOMBRE DIR. LONG. FUNCIÓN
SAVENT FCBF 002 Comienzo de BSAVE
SAVSTK F6B1 002 Guarda la dirección del SP para manipular error
SAVTXT F6AF 002 Puntero para RESUME
SCNCNT F3F6 001 Sincronización de exploración de Tecla
SCRMOD FCAF 001 Modo actual de Pantalla
STKTOP F674 002 Dirección superior del Puntero de Pila (SP)
STREND FSC6 002 Dir. comienzo de espacio disponible de memoria
SUBFLG F6A5 001 Indicador para FOR y USR
SWPTMP F7BC 008 Almacenamiento temporal para SWAP
T32ATR F3C3 002 Dir. Tabla de atributos de Sprites en Screen 1
T32CGP F3C1 002 Dir. Tabla del generador de patrones en Screen 1
T32COL F3BF 002 Tabla de colores Screen 1
T32NAM F3BD 002 Dir. Tabla del nombre de patrones en Screen 1
T32PAT F3C5 002 Dir. Tabla del generador de Sprites en Screen 1
TRCFLG F7C4 001 TROFF=0, TRON=1
TXTATR F3B9 002 Dir. Tabla de atributos de Sprites Screen 0
TXTCGP F3B7 002 Dir. Tabla del generador de patrones Screen 0
TXTCOL F3B5 002 Dir. Tabla de colores en Screen 0
TXTNAM F3B3 002 Dir. Tabla del nombre de patrones en Screen 0
TXTPAT F3BB 002 Dir. Tabla del generador de Sprites Screen 0
TXTTAB F676 002 Dir. comienzo de texto en Programa  BASIC
USRTAB F39A 020 Tabla de las direcciones definidas por la Instrucción DEFUSR n=
VALTYP F663 001 Tipo de variable presente en DAC
VARTAB F6C2 002 Dirección de la Tabla de variables simples
VLZADR F419 002 Utilizada por VAL
VOICAQ F975 128 Comienzo de las tres direcciones de las listas de espera musicales
WRPRIM F385 007 Rutina de escritura de los Slots del Banco 0

La TABLA de VECTORES

La otra parte del área de parcheo, o región de comunicación, es la llamada TABLA de VECTORES (Hook). Comienza en la &hFD9A y termina en &hFFC9.

En esta zona podemos, como luego veremos, interceptar las grandes rutinas de la ROM del Sistema. Esto es posible porque cada llamada a una rutina BASIC pa­sa por uno de los vectores situados en esta zona por medio de una instrucción CALL.

Cada vector está compuesto de cinco octetos cargados inicialmente con el código de retorno RET (&h09) y por lo tanto, a no ser que esté interferido por las direcciones utilizadas por el Disc Basic, volverá directamente a la ROM sin hacer nada.

Para interceptar una rutina deberemos escribir en el grupo correspondiente una instrucción de salto incondicional JP (&hC3) y la dirección a la cual transferir la rutina teniendo en cuenta la parte alta y baja de la dirección convenida.

A continuación pasamos a detallar una lista con las direcciones, el nombre y la función de dichos vectores.

NOMBRE DIR. FUNCIÓN
ATTR FE1C Al inicio de la rutina de atributos
BAKU FEAD En la rutina de vuelta atrás
BINL FE76 Al final de la instrucción SAVE
BINS FE71 En la rutina de instrucción SAVE
BUFLIN FF8E En la rutina de la instrucción LIST al convertir el código en clave (Buffer Línea)
CHGET FDC2 Al inicio de lectura de un carácter
CHPUT FD44 Al inicio de escritura en pantalla del carácter conte­nido en A en modo de Texto
CHRGET FF48 Al inicio de la recogida de un carácter
CLEARC FED0 En la rutina de inicialización de la Tabla de variables
CMD FE0D Al inicio de la instrucción CMD
COMPRT FF57 En el tratamiento de la instrucción PRINT
COPY FE08 Al inicio de instrucción COPY
CRDO FEE9 En la rutina da impresión de un carácter seguido de retorno de carro
CRUNCH FF20 En la rutina de conversión de una línea Basic en código
CRUSH FF25 Al inicio de búsqueda de una instrucción en la Tabla
CVD FE49 Al inicio de instrucción CVD (conversión a doble precisión)
CVI FE3F Al inicio de instrucción CVI (conversión a entero)
CVS FE44 Al inicio de instrucción CVS (conversión simple precisión)
NOMBRE DIR. FUNCIÓN
DEVN FEC1 En la rutina nombre de Unidad
DGET FE80 En la rutina lectura del Disco. En la rutina de ejecu­ción en modo directo..
DOGRPH FEF3 Al inicio funciones gráficas
DSKC FEEE En la rutina de lectura de un carácter de Disco
DSKF FE12 Al inicio de Instrucción DSKF (espacio libre en Disco)
DSKI FE17 Al inicio instrucción de escritura en Disco
DSKO FDEF Al inicio instrucción de lectura de Disco
DSPC FDA9 Al inicio rutina de actualización del cursor
DSPFNK FDB3 Al inicio de la rutina de visualización contenido de las Teclas de Función
EOF FEA3 Al inicio de la función EOF
ERAC FDAE Al inicio rutina de borrado del Cursor
ERAFNK FDB8 Al inicio de la rutina borrado del contenido Teclas Función
ERRF FF02 Al final impresión del mensaje de error
ERRO FFB1 Al inicio de tratamiento error
ERRP FEFD Al inicio impresión del mensaje de error
EVAL FF70 Al inicio de evaluación de una expresión
FIEL FE2B Al inicio instrucción FIELD
FILES FE7B Al inicio Instrucción FILES
FILOUT FE85 Al inicio de salida a Fichero
FINEND FF1B Al final de la interpretación
FING FF7A Al final evaluación funciones
FINI FF16 Al final de la interpretación de una instrucción
FINP FF5C Al final tratamiento de la Instrucción PRINT
FORM FFAC Utilizado por el Call Bios en &h0148 en rutina formateadora del Disco
FPOS FEA8 Al inicio función FPOS
FREEUP FF9D Antes de la búsqueda de un espacio libre para una cadena de caracteres
FRMEVL FF66 Al inicio de evaluación de una fórmula
FRQL FF93 Al inicio instrucción POKE
GENDSP FEC6 En la rutina general de reparto de Unidades
GETPTR FE4E Al inicio de lectura del puntero de Fichero
GONE FF43 Al inicio instrucciones de flujo de Programa
INDS FE8A Al inicio comprobación rutinas
INIP FDC7 A la inicialización del VDP
INLIN FDE5 Al inicio de INPUT (lectura de línea)
NOMBRE DIR. FUNCIÓN
IPL FEA3 Al inicio de la instrucción IPL (carga inicial del Programa)
ISFL FEDF Al inicio de comprobación existencia de Fichero E/S
ISMI FF7F Al inicio instrucción MID$
ISREW FF2A Al inicio descubrimiento de palabra reservada en fase CRUNCH
KEYCOD FDCC Al inicio lectura de Teclado
KEYI FD9A Llamada en &h004B. Tratamiento de interrupciones VDP
KILL FDFE Al inicio instrucción KILL
KEYEAS FDD1 Llamada en &h0F10 Antes de convertir carácter enviado por Teclado según Tabla situada en &h1003
LIST FF89 En la rutina de (L)LIST
LOC FE99 Al Inicio de la función LOC
LOF FE9E En la función LOF (long. Fichero)
LPTO FFB6 En la rutina de escritura por Impresora
LPTS FFBB En la rutina de Test de estado de la Impresora (CHKPTR)
LSET FE21 En la instrucción LSET
MAIN FF0C Llamada entrada del Intérprete
MERGE FE67 En la instrucción MERGE
MKD$ FE3A En la función MKG$. Creación de doble precisión.
MKI$ FE30 En la función MKI$. Creación de entero.
MKS$ FE35 Al inicio de instrucción MKS$. Creación de simple precisión.
NAME FDF9 En el comienzo de cambio nombre
NMI FDD6 Tratamiento de interrupción no enmascarable
NODEV FEB7 Si falta nombre de Unidad
NOFOR FE58 Falta FOR en la instrucción OPEN
NTFL FE62 En la instrucción CLOSE
NTFN FF2F Cuando la palabra reservada va seguida de número de línea
NULOPE FE5D En la rutina de apertura de Fichero nulo
ONGO FDEA En la instrucción ON GOTO y ON GOSUB
OUTDO FEE4 En la salida da carácter por Pantalla o Impresora
PARDEV FEB2 Al comienzo de análisis de nombre de Unidad
PINLIN FDDB En la rutina línea de Programa
PLAY FFC5 En la instrucción PLAY
PRGET FEF8 Al final ejecución de Programa
QINLIN FDE0 En la rutina de impresión de ? en la instrucción INPUT
NOMBRE DIR. FUNCIÓN
READY FF07 En impresión OK
RETURN FF4D En la instrucción RETURN
RSET FE26 En instrucción RSET
RSLF FE8F En instrucción INPUT$
RUNC FECB En la instrucción NEW o RUN
SAVD FE94 Para grabar en la Unidad actual
SAVED FE6C Al comienzo de SAVE
SCNEX FF98 En la conversión de número de línea en puntero y a la inversa
SCREEN FFC0 Al principio instrucción SCREEN
SETFIL FE53 En la rutina de inicialización de puntero sobre un Fichero
SET FDF4 En la instrucción SET
STKERR FEDA En rutina de error de la Pila
TIMI FD9F Llamada en &h0C53. En la rutina de lectura del registro de estado del VDP. Tratamiento de interrupción.
TOTE FDBD En rutina de retorno a modo de Texto desde un modo Gráfico.
TRMNOK FF61 En el tratamiento de un DATA o INPUT incorrectos
WIDTH FF84 En la instrucción WIDTH

Nota: Info extraída del Libro: «MSX – Más allá del BASIC» (Editorial RAMA) – Páginas 43-51

Publicado en Sin categoría | Deja un comentario

Listado de MNEMÓNICOS del Z80 – Ordenados por DIRECCIÓN

 

 

 

 

 

Como curiosidad comentar que estas Tablas las he sacado del Especial CM de la Revista MSX-EXTRA y siguen el mismo Formato.

En la versión que está ordenada por el NOMBRE-INSTRUCCIÓN me he permitido la «licencia» de poner primero la columna donde aparece el Código Fuente y luego en la que aparece el Código Objeto (creo que tiene mucho más sentido y así resulta mucho más legible y práctica a nivel visual).

Las he insertado en la Entrada como veis en Formato «.JPG» porque es imposible pegar el contenido desde el Word en el Blog y que se respete el Formato original de las Tablas que creé (Fuentes, Tamaños, Columnas, Colores….). Copiar y pegar texto manteniendo el Formato es tarea IMPOSIBLE en los Blog de WORDPRESS.COM (ya que no se puede tampoco insertar ningún Plugin que facilite esta Tarea) y lo de los saltos de línea es una LOCURA… (A menudo lo que ves mientras creas la Entrada y luego la publicas difiere bastante…)

Estas Tablas las creé haciendo OCR a los originales de la MSX-EXTRA pero tuve que corregir algún error que aparecía en el original. Para depurar las Tablas y corregir errores recurrí a comparar Listados de diferentes Libros. Increíblemente todos todos todos los Libros que consulté tenían algún error: se cambiaba algún caracter (a veces se cambiaban «0» por «O» o viceversa, otras «I» por «1» o viceversa, otras «8» por «B» o viceversa y algunos errores más). Como curiosidad os comento que de hecho los de la Revista MSX-Extra sacaron estas Tablas del Libro «MSX – Más allá del Basic (Editorial RAMA)» y copiaron hasta los errores del original…(¡vamos, que no se molestaron en revisarlas-compararlas con otras «fuentes»…!)

Nota: como véis la tipografía de este Blog tampoco es muy allá… Los «ceros» parecen letras «o» minúsculas… 😦

Entiendo que en la mayoría de los casos cada Libro-Revista hizo lo mismo que yo: hizo OCR de otro Listado para adaptarlo-maquetarlo a las necesidades y longitud-extensión del Libro o Revista en cuestión. Si tenemos en cuenta que en muchos casos las Fuentes y Tipografías utilizadas no eran las más idóneas para distinguir esos caracteres y que la calidad de impresión no siempre era lo buena que debiera como resultado aparece ese «baile de caracteres» (os aseguro que según la Fuente que se utilice los caracteres mencionados se distinguen mucho mejor o peor, según el caso).

En fin…, que la depuración de estas Tablas ha sido una Tarea de «Chinos» y la he tenido que imprimir y rehacer varias veces para ir eliminando los errores encontrados. 😉

Para los que quieran trabajar en Ensamblador y usar un Desensamblador en un MSX real os dejo este LOTE «ENSAMBLADORIL” que podéis descargar AQUÍ y que incluye lo siguiente:

  • Imagen “.DSK” del Ensamblador/Desensamblador RSC con todas sus versiones(RSC 1, RSC 1 versión 2 y RSC II).

Nota: una vez cargado el «.DSK» para ejecutarlo os recomiendo hacer LOAD»RSC.BAS«,R  (de esta forma veréis que se ejecuta un Menú que os va a pedir qué versión del RSC queréis usar y también si queréis usar el modo de visualización de 40 ú 80 columnas) (el modo de 80 columnas sólo es válido para Ordenadores MSX-2)

  • Manual del RSC-II.  El RSC-II es un Ensamblador-Desensamblador bastante decente y que en su día fue publicado por la Revista MSX-CLUB. Incluyo el Manual en PDF (con Formato de 2 Páginas por Hoja) y un Documento aparte con una Portada  (fichero de Word) que yo creé.  Incluyo también el Manual original en Formato Word a partir del cual creé el PDF. Lo ideal es imprimirlo con el Formato de «2 páginas por hoja» y si queréis añadirle la Portada y así queda bastante cómodo y manejable.Yo lo tengo impreso en Formato «Revista» (con 2 Páginas por Hoja), con dos grapas en medio e incluyendo la Portada y queda muy chulo. 😉
  • Tabla de Mnemónicos del Ensamblador Z80. Os dejo los siguientes Ficheros-Formatos: 

– Versión en PDF original del Especial CM de la Revista MSX-EXTRA ordenada por NOMBRE.

– Versión en PDF original del Especial CM de la Revista MSX-EXTRA ordenada por NÚMERO.

– Versión en PDF de la versión realizada por mí partiendo del original del Especial CM de la Revista MSX-EXTRA ordenada por NOMBRE (se distingue porque al final del nombre del fichero pone «by Manolito74») (también he incluido los respectivos Ficheros «.JPG» que aparecen en el Blog).

– Versión en PDF de la versión realizada por mí partiendo del original del Especial CM de la Revista MSX-EXTRA ordenada por NÚMERO (se distingue porque al final del nombre del fichero pone «by Manolito74») (también he incluido los respectivos Ficheros «.JPG» que aparecen en el Blog).

– Versión en Fichero de WORD de la Tabla ordenada por NOMBRE (son 3 Ficheros «.doc»)

– Versión en Fichero de WORD de la Tabla ordenada por NÚMERO (son 3 Ficheros «.doc»)

Nota: he decidido incluir los originales en Word por si alguien quiere formatearlos a su gusto, cambiar las fuentes, el tamaño, la distribución, los colores o corregir alguna hipotética errata (que espero que no haya ninguna porque os aseguro que están revisados a conciencia…). No obstante por favor si alguien ve una errata que me lo notifique a mi dirección de GMAIL –> josemanuel74

Por supuesto me podéis contactar para cualquier comentario-crítica-sugerencia, etc, etc, etc.

Gracias & Saludetes. 😉

Publicado en Sin categoría | 2 comentarios

Listado de MNEMÓNICOS del Z80 – Ordenados por NOMBRE

 

 

 

 

Como curiosidad comentar que estas Tablas las he sacado del Especial CM de la Revista MSX-EXTRA y siguen el mismo Formato.

En la versión que está ordenada por el NOMBRE-INSTRUCCIÓN me he permitido la «licencia» de poner primero la columna donde aparece el Código Fuente y luego en la que aparece el Código Objeto (creo que tiene mucho más sentido y así resulta mucho más legible y práctica a nivel visual).

Las he insertado en la Entrada como veis en Formato «.JPG» porque es imposible pegar el contenido desde el Word en el Blog y que se respete el Formato original de las Tablas que creé (Fuentes, Tamaños, Columnas, Colores….). Copiar y pegar texto manteniendo el Formato es tarea IMPOSIBLE en los Blog de WORDPRESS.COM (ya que no se puede tampoco insertar ningún Plugin que facilite esta Tarea) y lo de los saltos de línea es una LOCURA… (A menudo lo que ves mientras creas la Entrada y luego la publicas difiere bastante…)

Estas Tablas las creé haciendo OCR a los originales de la MSX-EXTRA pero tuve que corregir algún error que aparecía en el original. Para depurar las Tablas y corregir errores recurrí a comparar Listados de diferentes Libros. Increíblemente todos todos todos los Libros que consulté tenían algún error: se cambiaba algún caracter (a veces se cambiaban «0» por «O» o viceversa, otras «I» por «1» o viceversa, otras «8» por «B» o viceversa y algunos errores más).  Como curiosidad os comento que de hecho los de la Revista MSX-Extra sacaron estas Tablas del Libro «MSX – Más allá del Basic (Editorial RAMA)» y copiaron hasta los errores del original…(¡vamos, que no se molestaron en revisarlas-compararlas con otras «fuentes»…!)

Nota: como véis la tipografía de este Blog tampoco es muy allá… Los «ceros» parecen letras «o» minúsculas… 😦

Entiendo que en la mayoría de los casos cada Libro-Revista hizo lo mismo que yo: hizo OCR de otro Listado para adaptarlo-maquetarlo a las necesidades y longitud-extensión del Libro o Revista en cuestión. Si tenemos en cuenta que en muchos casos las Fuentes y Tipografías utilizadas no eran las más idóneas para distinguir esos caracteres y que la calidad de impresión no siempre era lo buena que debiera como resultado aparece ese «baile de caracteres» (os aseguro que según la Fuente que se utilice los caracteres mencionados se distinguen mucho mejor o peor, según el caso).

En fin…, que la depuración de estas Tablas ha sido una Tarea de «Chinos» y la he tenido que imprimir y rehacer varias veces para ir eliminando los errores encontrados. 😉

 

Para los que quieran trabajar en Ensamblador y usar un Desensamblador en un MSX real os dejo este LOTE «ENSAMBLADORIL que podéis descargar AQUÍ y que incluye lo siguiente:

 

  • Imagen “.DSK” del Ensamblador/Desensamblador RSC con todas sus versiones(RSC 1, RSC 1 versión 2 y RSC II).

Nota: una vez cargado el «.DSK» para ejecutarlo os recomiendo hacer LOAD»RSC.BAS», R (de esta forma veréis que se ejecuta un Menú que os va a pedir qué versión del RSC queréis usar y también si queréis usar el modo de visualización de 40 ú 80 columnas) (el modo de 80 columnas sólo es válido para Ordenadores MSX-2)

  • Manual del RSC-II.  El RSC-II es un Ensamblador-Desensamblador bastante decente y que en su día fue publicado por la Revista MSX-CLUB. Incluyo el Manual en PDF (con Formato de 2 Páginas por Hoja) y un Documento aparte con una Portada  (fichero de Word) que yo creé.  Incluyo también el Manual original en Formato Word a partir del cual creé el PDF. Lo ideal es imprimirlo con el Formato de «2 páginas por hoja» y si queréis añadirle la Portada y así queda bastante cómodo y manejable.Yo lo tengo impreso en Formato «Revista» (con 2 Páginas por Hoja), con dos grapas en medio e incluyendo la Portada y queda muy chulo. 😉

 

  • Tabla de Mnemónicos del Ensamblador Z80. Os dejo los siguientes Ficheros-Formatos: 

– Versión en PDF original del Especial CM de la Revista MSX-EXTRA ordenada por NOMBRE.

– Versión en PDF original del Especial CM de la Revista MSX-EXTRA ordenada por NÚMERO.

– Versión en PDF de la versión realizada por mí partiendo del original del Especial CM de la Revista MSX-EXTRA ordenada por NOMBRE (se distingue porque al final del nombre del fichero pone «by Manolito74») (también he incluido los respectivos Ficheros «.JPG» que aparecen en el Blog).

– Versión en PDF de la versión realizada por mí partiendo del original del Especial CM de la Revista MSX-EXTRA ordenada por NÚMERO (se distingue porque al final del nombre del fichero pone «by Manolito74») (también he incluido los respectivos Ficheros «.JPG» que aparecen en el Blog).

– Versión en Fichero de WORD de la Tabla ordenada por NOMBRE (son 3 Ficheros «.doc»)

– Versión en Fichero de WORD de la Tabla ordenada por NÚMERO (son 3 Ficheros «.doc»)

Nota: he decidido incluir los originales en Word por si alguien quiere formatearlos a su gusto, cambiar las fuentes, el tamaño, la distribución, los colores o corregir alguna hipotética errata (que espero que no haya ninguna porque os aseguro que están revisados a conciencia…). No obstante por favor si alguien ve una errata que me lo notifique a mi dirección de GMAIL –> josemanuel74

 

Por supuesto me podéis contactar para cualquier comentario-crítica-sugerencia, etc, etc, etc.

Gracias & Saludetes. 😉

Publicado en Sin categoría | Deja un comentario

Entrevista a Ramón Sala, autor del Ensamblador/Desensamblador RSC / RSC II

Hola a todos:

Pues bien pese a que este material ya lo tengo desde hace tiempo por unas cosas y por otras lo he ido procrastinando, procrastinando y procrastinando y no ha sido hasta hoy que me he decidido a publicarlo. 😉

Si como yo lleváis ya tiempo en la escena MSX-era, eráis lectores de la MSX-Club y además os gustaba el tema de la Programación seguro que habéis oído hablar del Ensamblador/Desensamblador RSC / RSC II. Para quien no lo conozca decir que era un Ensamblador / Desensamblador de la época, en mi opinión MUY BUENO (yo era el que usaba y sigo usando) y encima «Made in Spain». Desde luego para la época fue todo un lujo contar con Software como ese. Además recuerdo que incluso luego se llegó a incluir en la MSX-CLUB una Sección/Curso sobre el Ensamblador al hilo de la publicación del RSC.

Viendo Entrevistas publicadas en otras Web, como por ejemplo alguna de Konamito, a Carlos Mesa y otras que han aparecido de Jesús Manuel Montané y demás, siempre me ha «picado el gusanillo» de saber qué fue de otras de las personas que aparecían en la MSX-CLUB. Por ejemplo siento curiosidad de saber qué ha sido de Willy Miragall, Ronald Van Ginkel y que alguien les haga una Entrevista en «profundidad» y que nos cuente cosas de la época, entresijos de la MSX-Club, etc, etc, etc.

Pues bien, en esta ocasión, cosas de la vida y del «azahar» (que diría Millán, el de Martes y 13) di por causalidad con el autor del RSC y casi casi como que le «asalté» para hacerle un amago de «Entrevista». Lamentablemente no le pillé en un buen momento porque no disponía de mucho tiempo pero tuvo la AMABILIDAD de responder e intentar saciar mi curiosidad.

Así que sin más dilación, vamos allá con el amago de «Entrevista»:

 




 ¡Hola Ramón!:

En primer lugar mil gracias por contestar.

No sé si sigues o no de alguna forma el mundo de la Emulación y en concreto el del MSX. El caso es que ayer charlando sobre temas de Ensamblador y demás en un Grupo de Desarrollo de MSX en Facebook salió el tema del RSC II.

Alguien me preguntaba que porqué no usaba otros Ensambladores/Desensambladores y yo respondí que bueno, que el RSC me gustaba, que me parecía un Ensamblador / Desensamblador bastante cómodo y potente y encima estaba hecho en España y en español. Luego además estuve releyendo varias Entrevistas que se han publicado sobre algunos miembros de la extinta MSX-CLUB:

http://www.msxblog.es/carlos-mesa-redactor-y-director-de-msx-club/

http://www.msxblog.es/entrevista-a-jesus-manuel-montane-msx-club/

Siempre sentí curiosidad por conocer algo sobre el autor del RSC ya que apenas se sabe nada y googleando un poco parece ser que he tenido la suerte de dar con él. En principio iba tan sólo a hacerte algunas preguntas a nivel particular pero ya que estamos y tras leer las Entrevistas hechas a Carlos Mesa y Jesús Manuel Montané pues creí que sería mejor hacerlo en modo de «Entrevista» y si te parece bien pues compartirlo. Así que vamos allá:

Nota: perdona que te «asalte» así pero es que me ha podido la emoción, así que espero que perdones este ímpetu mío y te agradecería respondieras a mis preguntas y cuentes todo lo que quieras, ¡qué bienvenido será…! Probablemente luego colgaré la Entrevista, si te parece bien, en mi Blog:   https://yotambientuveunmsx.wordpress.com/
(si logro ésto sería más feliz que una perdiz…) XD

Nota 2: te he reeenviado el Correo porque no sé si el otro se te traspapeló, o quizás tan sólo sea que no hayas tenido tiempo a contestarme o quizás que te hayas asustado y salido corriendo al leerlo…. (que espero que no sea el caso) XD

 

1. ¿Podrías contarnos algo sobre el pimer MSX que tuviste? (qué modelo/s tuviste, cuándo te lo regalaron, para qué lo usabas,  ….)

En estos momentos no le puedo dedicar tiempo al ordenador, así que voy a intentar comentarte brevemente todo lo que recuerdo (vagamente) de MSX.  Llegué a la informática tarde, a los 25 años, comparado con otras personas de mi generación, pero enseguida me sentí atraído por la programación de ordenadores.

Me compré yo mismo un MSX y, aunque no recuerdo el modelo, me parece que era el que tenía más prestaciones.

2. Yo al menos tan solo te «conocía» por ser el autor del RSC pero ayer me enteré que habías publicado algún Listado Basic en la MSX-CLUB. ¿Podrías comentarnos cuáles han sido tus colaboraciones en la MSX-CLUB, qué Listados y/o Artículos publicaste, etc?.

No estaba muy interesado en los juegos, aunque admito jugué con más de uno,  pero me interesó más la programación.

3. ¿Qué te llevó a hacer el Ensamblador/Desensamblador RSC?, ¿fue idea tuya?, ¿surgió de la necesidad que tuviste para poder programar más cómodamente sobre el MSX teniendo una Herramienta más potente?

Para hacer programas era necesario un ensamblador, así que me puse a programar el RSC.

4. ¿Qué versiones sacaste del RSC? Hasta donde yo sé creo que habría 3 versiones: el RSC, el RSC 2.0 y el RSC II. ¿es correcto?, ¿cuáles son las mejoras que incluían cada versión?

Creo recordar que, efectivamente, hubo tres versiones: RSC, el RSC 2.0 y el RSC II, pero lamento decir que no recuerdo las mejoras de cada una de ellas. Enseguida me compré un PC y el MSX quedó totalmente olvidado.

5. ¿Conservas alguna copia de esas versiones del RSC, Manuales, Código Fuente Original, etc?

Accidentalmente perdí los códigos fuente de todos los RSC, cosa que lamento porque me gustaría tenerlos.

6. ¿Tuviste contacto directo con alguno de los Colaboradores de la Revista (Willy MIragall, Carlos Mesa, Jesús Manuel Montané, Ronie Van Ginkel…)  y/o visitaste la Redacción de la MSX-Club?

Efectivamente, tuve contacto con casi todos los colaboradores de la revista y visité en muchas ocasiones la redacción de la MSX-Club. De hecho, ellos se pusieron en contacto conmigo para publicar el programa en su revista.

7. ¿Cuál era tu opinión sobre la Revista MSX-Club?, ¿y sobre los Redactores?.

Mi opinión era que la revista MSX-Club era la mejor que se podía encontrar y sus redactores eran gente seria.

8. ¿Alguna anécdota que nos puedas contar sobre tu relación con la MSX-CLUB o en general algo que nos quieras contar de aquella época dorada del MSX?

Hombre, anécdota en particular ninguna, simplemente tuve una buena relación con ellos.

9. No sé si después de la muerte comercial del MSX has seguido de alguna forma ligado al Sistema a través de Emuladores, de Foros, Web sobre el Sistema, etc. ¿Sigues en la actualidad el tema del MSX?, ¿usas algún Emulador o MSX Real?,  ¿estás al tanto de los Proyectos que han salido y van a salir? Por si no estás al tanto te dejo alguna información:

Cartucho MFR de Manuel Pazos para poder cargar imágenes DSK y juegos en formato «.dsk» en cualquier MSX, MSX-2, MSX-2+ o Turbo-R: 

https://www.msx.org/es/news/hardware/es/megaflashrom-scc-sd

Rookie Drive (es un proyecto que saldrá dentro de poco (de hecho acaba de salir ya) y que permite además conectar al MSX memorias USB para cargar Programas):

http://rookiedrive.com/es/inicio/

– Un nuevo modelo de MSX que vendría a ser un MSX «supervitaminado» y con muchísimas mejoras y ampliaciones: el MSX VroBit:

https://vrobit.com/en/blog/project-presentation-n2

Como te comentaba antes, poco después de un año me compré un PC y abandoné completamente el MSX. Desde entonces me he dedicado a la programación de los PC y actualmente hay un ensamblador para Windows (llamado Easy Code) que goza de muy buena prensa. Es gratuito y se puede bajar en  http://www.easycode.cat

10. ¿Sigues alguna Web o Foro relacionado con el MSX?

No.

11. ¿Cúales eran tus Juegos o Programas favoritos del MSX?

Lo cierto es que no lo recuerdo, pero es que más bien me dedicaba a programar utilidades.

12. ¿Qué opinabas sobre que la mayoría de los Juegos que nos llegaban fueran meras Conversiones de Spectrum?

Pues que me imagino que había pocos programadores de juegos que se dedicaran a MSX.

13. ¿Qué Programas llegaste a desarrollar para el MSX?, ¿Qué lenguajes usabas?, ¿llegaste a realizar algún Juego?

Desarrollé el Ensamblador RSC y un Programa de Utilidades (del tipo PC Tools) que permitía recuperar archivos borrados, etc.

14. Sobre el RSC, ¿cómo surgió comercializarlo a través de la MSX-Club?, ¿se lo pediste tú a la Revista presentándoles el Programa para que valoraran su comercialización?, ¿fue la Revista quién te lo pidió a ti?, ¿podrías darnos una aproximación sobre el número de copias que crees que se llegaron a vender de las diferentes versiones de tu RSC?

Envié el listado del código fuente de RSC a MSX-Club y Willy Miragall se puso en contacto conmigo. A partir de ese momento empezó mi relación con ellos.

15. ¿Qué supuso el MSX en tu vida?, ¿marcó el desarrollo de tu carrera profesional actual?

Efectivamente, supuso el inicio de mi carrera profesional. Actualmente, y desde hace muchos años, trabajo como programador de  aplicaciones para Windows.

16. Aparte del MSX, ¿fuiste Usuario de algún otro Sistema de 8 Bits o de 16 Bits?

Sí, como te comentaba antes, compré el primer modelo de IBM PC (un clon, para ser exacto) y desde entonces me he ido actualizando en este sistema. Actualmente tengo un ordenador con procesador Intel Core i7 6700 @ 3.40GHz.

17. Entiendo que el hecho de haber programado el RSC se debía a que te gustaba ese Lenguaje. ¿Cuál era la parte o funcionalidad de la que te sentiste más orgulloso al crear el RSC y qué era lo que menos te gustaba?, ¿Usas o usaste algún Ensamblador «cruzado» sobre PC para programar en MSX alguna vez?

En general me sentí y me siento orgulloso de RSC porque fue un programa importante en su momento, y así lo entendieron también en MSC-Club.

No, nunca  usé un Ensamblador «cruzado» sobre PC para programar en MSX.

18. Como Programador, ¿qué opinión te merecía el MSX?, ¿piensas que era realmente superior al resto de 8 Bits?, ¿piensas que el hecho de que hubiera tantos Modelos de MSX distintos con distintas con figuraciones de Memoria y pequeñas diferencias a nivel de Hardware eran una ventaja o un inconveniente?

En su momento creo que MSX fue el mejor ordenador personal que se podía tener. Lo que ocurrió es que enseguida apareció el IMB PC y aunque era muy superior también era muy caro, pero muy pronto aparecieron los “clones” a precios muy asequibles y eso marcó el fin del MSX.

19. ¿Llegaste a tener usar MSX-2, MSX-2+, MSX-Turbo R?

Llegué a tener un MSX-2

20. ¿Piensas que cualquier tiempo pasado fue mejor?, ¿qué ventajas e inconvenientes, o qué es lo que más te gusta y lo que menos te gusta de la Informática de los 8 Bits y de la Informática actual?, ¿A qué te dedicas en la actualidad?

Para mí la informática de 8 y 16 bits está totalmente obsoleta y hace más de una década que no trabajo con ella, incluso los 32 bits están empezando a pasar a la historia con la llegada de los 64 bits. Actualmente formo parte de un equipo de desarrollo de aplicaciones de una importante empresa catalana.

21. ¿Conservas en la actualidad algún vínculo-contacto con algún miembro de la MSX-CLUB?, ¿sabes algo de ellos?

No mantengo ningún contacto con nadie de MSX-Club ni sé nada de ninguno de ellos.

22. ¿Qué has pensado-sentido-…. cuándo has visto mi Correo y esta pseudo-«Entrevista»?, ¿te han venido recuerdos gratos que te ha apetecido «desenterrar» o te han dado ganas de echar a correr y no responder…?

Pues sí que me han venido buenos y gratos recuerdos, siempre los tendré, pero no me ha entusiasmado especialmente tener que responder a tantas preguntas porque no dispongo de mucho tiempo. Aun así, y por cortesía, lo estoy haciendo.

23. ¿Algo que quieras añadir  y que no esté reflejado en las anteriores preguntas?

Nada especial que no se haya dicho ya. El MSX fue un buen sistema que introdujo a mucha gente en el mundo informático.

Pues esto ha sido todo. Agradecerte Ramón que hayas respondido a mi Correo y que nos hayas dedicado esta parte de tu tiempo para responder a estas preguntas y a mi «malsana» curiosidad… 😉 




 

Pues lo dicho, desde aquí agradecer públicamente a Ramón el haberme dedicado parte de su tiempo y haber respondido a mi «batería» de preguntas… XD

Gracias & Saludetes. 😉

Publicado en Sin categoría | 3 comentarios