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 versión 1.
  • El RSC versión 2.
  • 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 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 versión 1 salió tanto en Disco como en Cinta.
  • el RSC versión 2 salió tanto en Disco como en Cinta.
  • el RSC-II 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 versión 1 y del RSC versión 2 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. 😉

Anuncios
Publicado en Sin categoría | Deja un comentario

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 | Deja un comentario