Habi Hablóg
Declaro:
XML válidoXHTML válido800x600 +
RSS válidoCSS válidoNavegador digno
  Blog   Archivo   Contacto   Administración  

Acerca de

Matemático, informático, aficionado a la electrónica, friki... y otras cosas que no vienen a cuento ni pasan los filtros de palabras.

¿Queríais un blog? Ahí va.

Red antisocial

¡Me van a volver loca! 2.0
La Fragata Portuguesa

Z
¡Me van a volver loca!

Últimos posts

El expediente X que nadie pidió
eNigma
La cuadratura del píxel
Portando desde Spectrum
Inexorable

Últimos comentarios

Habi
NoSupoResolverLaFuncion
Edu
Habi
EnriqueGG

Calendario

No hay fechas.

Categorías

Chorradas
Paranoias
Posts lúcidos
Tecnoesoterismo
Yuyus

Cenas de Abj

Abj debe 7 cenas.

Frase célebre

Habi dice: ya aprovecharé para tocarle otras cosas

PDS-ando (y II)

Habi - 28/05/2015 0:58:03 - Tecnoesoterismo

No es ningún secreto: hace tiempo decidí convertir mi emulador de PCW en uno de CPC, para utilizar en mis desarrollos internos; y he de reconocer que me ha resultado muy útil para portar y probar bastantes cosas.
 
Entre ellas, como cabría de esperar por el título del artículo, la emulación del PDS. Ha sido prácticamente un corta-pega de la versión de Spectrum, sólo cambian los puertos del Z80PIO. El caso es que ahora ya puedo probar a pasar las versiones de desarrollo del software de CPC que venía en dicho CD.
 
 
En el cual, por cierto, también he podido localizar y probar una versión más reciente (PDS/2) del software de desarrollo. Tiene entre muchas otras mejoras la posibilidad de utilizar ficheros con listas de comandos similares a makefiles. Según he podido ver se ha utilizado para desarrollar software para Master System y Game Gear.
 
 
 
 
 
Pero no sólo eso: en el pack que de las interfaces para CPC, PC y el CD también venía un disco de 3” con cositas muy jugosas. Por ejemplo, he encontrado ROMs de desarrollo (para transferir sin tener que cargar nada ni ocupar RAM) para Spectrum, CPC y C64; y en el caso del CPC y C64 además otras de un tal Kevin con utilidades interesantes.
 
Vamos a acabar cerrando el post con algunas de las imágenes que he podido encontrar, y que me parecen interesantes (ejercicio: intentar encontrar la razón).
 
      
 
 
 
 
 
 
 

3


PDS-ando (I)

Habi - 23/05/2015 12:29:47 - Tecnoesoterismo

En los tiempos de los ordenadores de 8 bits existió un sistema de desarrollo muy interesante para las compañías de software, llamado PDS (Programmers Development System). Mucho se ha dicho del tema en otros sitios así que no me extenderé aquí; simplemente decir que constaba de una interfaz de hardware para PC, otra para cada tipo de ordenador para el que se quisiera desarrollar y finalmente de software de desarrollo y de control remoto.
 
Para más información del tema hay un artículo muy bueno aquí: http://www.cpcwiki.eu/index.php/PDS_development_system, y en el caso que vamos a tratar un fichero TAP ya creado aquí: http://www.worldofspectrum.org/infoseekid.cgi?id=1000532. Toda esta información está disponible gracias a la gente del GUA y a José Leandro.
 
En cualquier caso: hace poco ha llegado a mis manos el contenido del CD que venía con la interfaz original que se ve en el artículo de la CPCWiki. CD que contiene además un montón de herramientas de desarrollo. Y CD que contiene, además, el código fuente de un montón de juegos / conversiones de la época. Por los títulos y algún que otro mensaje supongo que estos ficheros debieron pertenecer a Paul Griffiths y / o Andrew Severn. Por ejemplo, hay una versión final (además de la demo) del Dominion, pero también está el Blob the cop. También hay un montón de material no usado, rutinas hechas, etc. Muy jugoso todo ello.
 
Y aquí es donde empieza mi post: quiero jugar con todo ese material, así que... vamos a emular el PDS wink. Todas las imágenes de este post son además vínculos a versiones más grandes de las mismas, por si se quiere mirar algo con detalle.
 
Primero cogemos mi viejo emulador de Spectrum y le añadimos el código del PDS; como bien puede verse en su esquema correspondiente es un Z80PIO, pero se simplifica mucho ya que:
  1. No usa interrupciones.
  2. Trabaja siempre en modo control, no usa READY o STROBE alguno.
  3. Es un bus paralelo de 8 bits en el puerto A, con dos "relojes" en el puerto B.
Para la implementación del IPC escojo usar mailslots (https://msdn.microsoft.com/en-us/library/windows/desktop/aa365576%28v=vs.85%29.aspx), ya que me permiten multidifusión, pueden funcionar sin estar asociados y funcionan en red. Es decir, puedo emular el que estén desconectadas las cosas, tener los emuladores en máquinas distintas, etc.
 
 
 
Por otro lado, me dio el punto y decidí usar DosBox para la emulación de PC (me es cómodo que acceda directamente al sistema de ficheros de Windows). Basta adaptarlo al Visual Studio y añadirle la emulación del PDS. En el caso del PC es un 8255 que de nuevo se simplifica mucho:
  1. El puerto A es siempre el bus en lectura.
  2. El puerto B es siempre el bus en escritura.
  3. El puerto C es de control: dos relojes por cada interfaz y otros cuatro bits que, aparentemente, no se usan (¿versión de 4 interfaces? ¿Control extra (uno de ellos va hacia el Z80PIO, pero no se usa)?).
Finalmente, la emulación la hago asíncrona, para prevenir timeouts en la parte del pc (uno de sus varios bugs: no puede ser usada en ordenadores rápidos).
 
 
Como ejemplo, un caso sencillito: la carpeta llamada "Plurps" (¿qué será, será?). Lanzamos ambos emuladores, cargamos la cinta en el de Spectrum en 64000 y el PDSZ80 en el PC. Pulsamos F9 para el menú de disco y escogemos la carpeta, seleccionamos el formato XMSDOS, la extensión PJG y cargamos todo. A continuación cambiamos la línea "SEND COMPUTER 2" por "SEND COMPUTER 1" (importante, pues sólo emulo la primera interfaz de momento), le damos a F1 y vemos como se ensambla todo y nos pregunta si lo sube al ordenador. Le decimos que sí (Y) y sólo nos queda ejecutar en 65533, ya sea modificando el registro PC en el emulador o usando el propio control remoto (F4).
 
 
Una cosa que me gusta es que si se usan varias directivas ORG sube el código por trozos a su sitio, en el mismo orden. El menú del control remoto nos permite un montón de cosas extras; os dejo una captura del mismo, así como otra del editor de gráficos integrados que tiene el sistema de desarrollo.
 
 
 
Seguiremos informando...

8


Eterno retorno

Habi - 25/03/2015 18:40:36 - Posts lúcidos

Hace bastante tiempo decidí cambiar la infraestructura del blog: migrar el código de ASP a PHP y la BBDD de Access a MySQL. Por si acaso tuviese que migrar a otro servidor, ya que la mayoría de servidores gratuitos son LAMP.

La BBDD se migró de forma directa e hice una conversión del código casi línea por línea. El blog quedó exactamente igual por fuera, y con el mismo motor por dentro, aunque migrado.

Pero al final dejé todo como estaba, pues el servidor (Windows server, por si no había quedado claro) iba a mantenerse durante mucho tiempo y era casi dedicado.


Hace poco tiempo me encontré con que este servidor iba a perder su IP fija (y dejar de servir web y correo para el resto de cosas alojadas; sin embargo va a seguir en activo indefinidamente por otros motivos), así que me decidí de nuevo a mover el blog fuera, pero convirtiéndolo en algo más moderno, y sobre todo estándar: Wordpress.

No fue demasiado difícil: convertir la BBDD de Access a MySQL: un pequeño programa en PHP que la recorría y llamaba a las funciones pertinentes de Wordpress para postear un artículo o comentario (usando la misma BBDD), borrar las tablas primeras, y listo.

Pero al final lo dejé todo como estaba; le he puesto a este servidor un servicio de DDNS y arreglado. Supongo que el tener un servidor dedicado a coste nulo es algo interesante, o más bien que más vale malo conocido.     

3


Altavoces asesinos

Habi - 20/09/2014 18:19:29 - Tecnoesoterismo

Esta historia comienza cuando en mi trabajo se decidieron a pedir, entre otras cosas, altavoces para algunos ordenadores. Eran unos Trust Mila.

Al igual que otras cosas de este pedido, así como del posterior que hicimos a dicha distribuidora, iba "con bicho". Teniendo en cuenta la gravedad de los hechos (como una placa de vídeo sin montar (suelta por dentro del ordenador), un ordenador con un RAID en el que no reconocía un disco duro, creo que os hacéis una idea del control de calidad de dicha empresa).

Y así fue que al enchufar los altavoces el pobre E. (debo decir que con mala suerte reconocida desde que le conozco) resulta que su ordenador se apagó, para nunca más volver encenderse. Cada intento resultó en tufo a quemado con humillo ocasional. Y es que la fuente dejó pasar el pico provocado por un corto en el USB, cepillándose el control de potencia integrado.

Si alguno se pregunta qué pasó con la placa, diré que nada. Trust lamentaba lo sucedido, pero nos remitía a gestionar tanto el cambio de los altavoces como una posible compensación a través de la distribuidora que lo compramos, como es lógico. Y los de MCR (huy, al final lo dije) se desentendieron del tema, ofreciendo únicamente el cambio por los altavoces.

Viendo por otro lado como gestionaron los otros problemas (desconocimiento de lo que es un corto, sujeción con cola caliente de los conectores de alimentación de los discos duros "para que no se muevan", montaje de nuevo de la gráfica en el ordenador sobre plástico de burbujas (¿alguien sabe lo que es la estática?) "para que no se raye", sin al menos una pulserita antiestática tomada a tierra, ...) no sé si salimos perdiendo o ganando.

Pero me estoy desviando; los altavoces: ¿qué les pasaba? Aparentemente provocaron el corto sin estar siquiera encendidos, así que como al final no se iba a hacer nada con ellos en el trabajo me los traje a casa para echarles un ojo.

Internamente no son gran cosa, algo que era más que de esperar por el precio de los mismos.  De hecho, salvo detalles como la soldadura (que dejaba bastante que desear en algunos puntos), no localicé nada con mala pinta como otros dispositivos que he tenido el ¿placer? de destripar.

Afortunadamente, el cable USB se puede separar de la placa gracias a un conector molex, así como el cable de audio. Pude comprobar que no había corto entre +5V y masa tanto en el cable como en la placa. Así que me decidí a alimentar la placa de forma externa.

¡Funciona! Luego el problema está en el cable; pero si no tiene corto entre los dos pines de alimentación, ¿qué puede ser? Vamos a destripar el conector USB.

¿Veis ese pegote de estaño? Como veis encaja perfectamente en forma con el trozo de goma derretido que se quedó en el lado derecho de la foto del conector.

Pues resulta que estaba tocando mecánicamente (salió solo, no estaba soldado) la línea de +5V (cable rojo)… ¡y el apantallamiento metálico externo! El cual va conectado a masa en el interior del ordenador (aunque no de algunas fuentes de alimentación autónomas para móviles, etc.; quizás por eso escapó este hecho al control de calidad de Trust). Ahí tenemos el corto, y los altavoces funcionan perfectamente al tener quitado el pegotón.

¿Hubo final feliz? Algo así; le puse un conector nuevo, y ahora dichos altavoces son los que uso para reproducir la música AY / digitalizaciones DAC del clon de DK’tronics en mi PCW.

Ya que estaba le añadí un par de condensadores (en la entrada de la fuente y sobre el integrado) para filtrar un poco el ruido de la fuente. Tengo pendiente filtrar además la entrada del audio, y mejorar el aislamiento en salida del amplificador. En cualquier caso suenan mejor y tienen mucha mejor presencia que los que usaba antes, un detalle a tener en cuenta para exposiciones.

2


Águila, unicornio

Habi - 04/08/2014 0:33:09 - Tecnoesoterismo

El Orel BK-08 es un clon ruso de Spectrum relativamente compatible y con algunas mejoras. Entre ellas una interfaz de joystick dual Sinclair / Kempston integrada, una memoria sombra bajo la ROM y una segunda ROM, con la posibilidad de conmutar todo esto por software (puerto 127). Tampoco tiene memoria contendida o el bug ULA - refresco Z80. Personalmente os recomiendo pinchar una ROM estándar en el segundo banco; de esta forma tendremos una mayor compatibilidad y un teclado que funciona normalmente.

Lo bueno es que hace tiempo conseguí uno de estos cacharros relativamente raros, con la caja original todavía precintada. Lo malo es que venía con bicho.

La segunda foto es una medida de la velocidad a la que está funcionando el Z80, tirando por lo bajo (superaba los 9 a veces). Se debía a un integrado estropeado y, desgraciadamente, esa sobre frecuencia hizo sufrir al resto de la circuitería.

Pero poco a poco fui apañándole, sacando imagen sin el papel del centro y luego con cosas hasta que logré el ansiado mensaje de bienvenida.

     

     

Ya terminaré lo que le queda cuando tenga un rato; el caso y motivo del post es que, ya que había entendido como funcionaba, tenía que emularlo:

El software específico funciona; que yo sepa son el programa de diagnósticos (Tst) y el desensamblador (MZ80, se aloja en la memoria sombra y se invoca mediante NMI) que acompañan a este ordenador y también un juego llamado Sea Fight. Curiosamente se adjunta además una demo en la cinta suministrada, pero ésta no hace uso de ninguna característica especial del ordenador.

Y ya que hay tan poco para este ordenador, decidí portarme el Shadow of the Unicorn aprovechando esa memoria sombra. Se podría aprovechar también para cargar los cartuchos de la interfaz II, emular ZX80 / ZX81 / Jupiter ACE, ponerle un CP/M, etc.

             

             

En cualquier caso, aquí os lo adjunto en formato tzx para vuestro uso y disfrute (?).

2


Domingo de saqueo

Habi - 03/08/2014 23:45:10 - Yuyus

¡Muchas gracias, Jaime!

1


Poniéndose al día (II)

Habi - 03/08/2014 23:29:04 - Posts lúcidos

Es curioso, últimamente considero que lo que hago no es importante y por eso lo cuelgo en G+ o directamente paso. Así que ahí va otro post recopilatorio.
 
Cosas de PCW:
 
 
 
 
Probando un EverDrive piratuelo:
 
 
 
Trasteando como los modos de un Timex:
 
 
Dibujando dragones en un Dragón:
 
Estos integrados realmente suenan distintos:
 
Probando un juego de Atari 2600 NTSC en consola PAL...
 
...Y sintonizando una NTSC en PAL-DK (¡con sus colores correctos!):
 
Emulando y preservando en Spectrum; unidad Tritón, y la versión original de La Diosa de Cozumel:
 
 
 
Y por supuesto, polladas; empecemos por la propia Diosa:
 
 
¿A dónde iré por esa salida en el Bubble Ghost?
 
 

0


Dispositivos olvidados

Habi - 06/02/2014 15:19:06 - Paranoias

El otro día discutía con un amigo el papel de los emuladores en el tema de la preservación, y más concretamente en el de la divulgación de una plataforma. Y es que yo creo que los emuladores aumentan el contraste del conocimiento, haciendo lo popular aún más popular pero a costa de marginar más si cabe lo ya no tan conocido.

Por supuesto, también influye la naturaleza y uso de la propia máquina emulada, no es lo mismo en ese aspecto un emulador de Spectrum que un emulador de PDP-11. En el primer caso la orientación primaria es más bien lúdica (por mucho que le duela a Clive Sinclair) y por tanto se pueden sacrificar aspectos más profesionales, o bien con menos catálogo (pues es extensísimo). Mientras tanto, el segundo caso es justamente lo opuesto.

Ya que hemos hablado del Spectrum, usémoslo para fijar ideas (un mundillo más conocido que el del PDP-11). Veamos el tema almacenamiento... ¿Cuántos emuladores emulan la cinta? Prácticamente todos. ¿Soporte para la disquetera del +3? Muchos. ¿Y la Interface I? Ya no tantos. ¿Disciple? Hmmm... ¿Existe alguno que emule el disco Triton? Ninguno que yo sepa, y no estoy hablando de algo tan bizarro como el InvesDisk-200. De hecho, existió además para Commodore 64, MSX, Aquarius y Dragón.

Y aún digo más: si los rusos no hubiesen clonado la Beta 128 (aparte de hacer auténticas maravillas y en gran cantidad, por supuesto), hoy en día tampoco sería emulada y por lo tanto desconocida para la gran mayoría.

La prueba: incluso habiendo catálogos decentes de warez brasileño, sólo conozco un emulador (aparte de mis desarrollos internos) que emule sus sistemas de disco, clonados a partir de la Beta original. Y doy fe que cuesta muy poco emular la beta clásica a partir de la 128 (y viceversa).

Es una pena, pero hay más emuladores de LensLok (por ejemplo) a pesar de ser un simple accesorio y no haber sido usado más que en una docena de títulos; lo cual nos lleva de nuevo a lo dicho sobre la orientación lúdica de esta plataforma. Siguiendo el tema brasileño, tenemos el cartucho de demostración del TK-90x: no se puede emular como una ROM simple (Interface II) porque tiene un sistema de paginado, así que nadie se ha molestado en hacerlo funcionar en su forma original bajo un emulador.

Por otro lado, están los dispositivos olvidados por ser redundantes para un emulador. Por ejemplo, ¿alguien se acuerda de las interfaces de Joysticks programables? Algunas estaban realmente bien hechas, con su programación en caliente en la propia máquina y su propia ROM.

En su día hubo bastantes interfaces de estas de Investrónica (Inaxel) aquí en España, ¿dónde están ahora? Otra cosa que nadie emula, pero seguro que a alguien este pantallazo le traerá recuerdos.

Finalmente, otras herramientas para la difusión (como puedan ser las wikis) no muestran el funcionamiento de estas cosas. Todo esto se pierde y, como dije antes, es una pena.

4


Los niños frikis de Anaya

Habi - 10/09/2013 15:18:56 - Paranoias

Mirando los libros "técnicos" para niños que tengo de cuando era pequeño, me he dado cuenta de que un gran número de éstos son de Anaya. Teoría conspiratoria paranoica de hoy: Anaya es responsable de la creación de una generación de frikis con sus libros ochenteros para niños relacionados con los ordenadores.

Vayamos con las evidencias. Dejando aparte los manuales que vienen con los ordenadores, estos fueron los dos primeros libros que tuve de temática informática:

 

Sólo con ver los títulos, supongo que no debiera extrañarle a nadie que con el tiempo acabase siendo matemático e informático. ¿Casualidad o causalidad?

Ambos libros están llenos de ilustraciones graciosas para niños. En el caso de “El libro del BASIC” de Rodnay Zaks (quien por cierto tiene además un libro decente sobre el Z80) tenemos a una especie de dinosaurio de protagonista junto con otros personajes memorables, como una especie de enano cabrón encapuchado que te mete fallos en el programa. Una delicia, no orientada hacia ningún dialecto en concreto.

En el caso de “Descubre las matemáticas con tu MICRO”, de David Johnson, nos encontramos con una introducción informal al BASIC y las propiedades básicas de la aritmética y teoría de números; por ejemplo, aquí fue donde leí por vez primera sobre los números perfectos. El libro es para Spectrum o Zx81, pero como bien dicen en la introducción y observando sus indicaciones vale para VIC-20, ORIC, Apple, Commodore 64 y Dragón entre otros.

 

Ah, estos son de mis preferidos de todos los tiempos. ¿A quién no le seduce el título “Cómo hacer robots controlador por ordenador”? Explicados para niños pero con instrucciones completas incluyendo mecánica y electrónica (mis otras aficiones).

El otro libro “Cómo hacer coches y trenes controlador por ordenador” tampoco se queda corto, con varios programas para controlar falsos arranques, posición, penalizaciones, paradas,... Ambos libros son de Tony Potter y Chris Oxlade y como bien dice el título para Commodore 64, VIC 20 (ambos tienen un puerto I/O accesible) y Spectrum (junto con una interfaz I/O adicional).

La serie sólo incluye estos dos libros que son, en resumen, imprescindibles. Un ejemplo de su contenido (ojito a la sección del relé):

Por otro lado, Anaya sacó varias series de juegos con listados para teclear. Quizás la más conocida de ellas (y la mejor) sea “Aventuras con mi ordenador”:

 

Como era de esperar, encontramos sendos programas enormes a teclear, con algún que otro error (derivados de la traducción, principalmente); pero una vez todo funciona bien merece la pena. Los juegos son aventuras conversacionales, y el libro incluye ilustraciones con los mapas y algunas de las ubicaciones y personajes. De nuevo, sólo existen dos ejemplares en la serie.

En la “Isla de los secretos”, de Jenny Tyler y Les Howarth, tenemos como misión el restaurar la tierra tras una guerra de seres superiores, y derrotar al anterior (e inmortal) encargado de dicha tarea que decidió traicionar su misión.

Por otro lado, en “El misterio de la montaña de plata”, de Chris Oxlade y Judy Tatchell, tendremos que liberar un pueblo invadido, derrocar un tirano, acabar con un brujo maloso y todas esas cosas que hacen los héroes clásicos.

Ambas tienen una dificultad no muy elevada, son entretenidas y están bien construidas. Para Spectrum, Commodore 64, Apple y Vic 20 (ampliado por lo menos con 16KB extra). Veamos por ejemplo el mapa de la segunda:

Para terminar, la serie “Juegos de ordenador”:

 

Además de estos dos (“Espías” y “Terror”) existen “Misterio” (también con fondo negro), “Espacio” y “Batallas” (fondo blanco).

Los tres de fondo negro son para Commodore 64, VIC 20, Apple, Spectrum, Dragón y MSX y están hechos por Jenny Tyler y Chris Oxlade. Los de fondo blanco son para Spectrum, Zx81, Apple II, VIC 20, Commodore 64 y MSX, e ignoro sus autores.

Básicamente se trata de una serie de mini programas relacionados con el tema. Por ejemplo, tenemos un laberinto con fantasmas en el de terror o en el de los espías programas para decodificar mensajes, etc.

Tras tamaña exposición de pruebas, que nadie lo dude: nuestro frikismo es inducido desde tierna edad. Aunque no sólo Anaya tiene la culpa; escojo este otro par como muestra:

 

Hablando de cifrar mensajes (y aunque en su mayoría ni mencione la informática), tenemos un libro muy interesante para niños (y mayores) llamado “Signos, símbolos, códigos secretos” de Piero Marcolini publicado por Montena (Mondadori). Bien presentado e ilustrado, de lectura amena, muy recomendable.

He querido incluir también por último “Ordeno y aprendo con Amstrad para EGB”, un libro para aprender BASIC con un CPC 464 que era usado como material didáctico en la cadena academias INED (quienes enseñaban en el APA de mi colegio). Siempre me gustaron las ilustraciones de la tortuga de ese libro, las cuales están hechas con un CPC en modo 2.

El año que cambiaron los CPC por PCW se deshicieron también de los libros y yo me hice con uno, de recuerdo. En cualquier caso, ahora está en mejores manos.

Y con esto y un bizcocho... otro truño post bien pasado Agosto.

4


Aclarando cosas

Habi - 22/08/2013 23:07:39 - Tecnoesoterismo

Si alguien se pone a intentar emular un Z80 lo más fielmente posible, al final se encontrará emulando el registro interno MemPTR (también llamado WZ).

Es uno de esos registros internos de los procesadores para efectuar sus operaciones intermedias; el problema es que con cierta instrucción pueden leerse dos bits del mismo en dos flags indocumentados, de ahí que sea "necesaria" su implementación.

Se recomienda una lectura del tema en: [link].

Y este es mi punto de partida, ese documento y su ambigüedad en ciertas cosas. Por ejemplo:

1) En la lista aparecen Ret y RetI, pero no aparece RetN. ¿Acaso su microcodificación es tan diferente (la asignación del Iff correspondiente bien puede hacerse en paralelo, el resto es idéntico)? Resulta extraño creer que RetN no modifique MemPTR.

2) Aunque el documento habla de interrupciones no aclara si es sólo para las mascarables. Internamente las NMIs son bastante bizarras, pues hay un ciclo pseudo fetch (con lectura incorporada) antes de su tratamiento. Sin embargo un salto es un salto, e internamente sólo se pueden saltar a registros, luego debiera estar incluída. Otra cosa a verificar.

3) El documento menciona las instrucciones In A, (C) y Out (C), A. Pero hay un bloque entero de instrucciones In r, (C) y Out (C), r para r en [A, B, C, D, E, H, L, x]. El valor que he marcado con x no está documentado y correspondería como es lógico a (HL), pero dada la estructura del procesador no se puede acceder a memoria. El resultado es que en lectura no se asigna a ningún registro lo leído, y en escritura se pone en el bus externo el contenido del bus interno del procesador ($00 en NMOS, $FF en CMOS para un Z80 estándar).

Desgraciadamente, ningún programa de test mira otras instrucciones que no sean las que aparecen en esa lista (y el caso de la NMI es un tanto rebuscado, lo admito).

La lógica nos dice que debiera haber modificación de MemPTR en los 3 casos aunque las instrucciones no aparezcan en la lista. Y como veremos, es lo correcto.

Hoy que he tenido un rato he decidido despejar todas las dudas; me basta con construir un contraejemplo en cada caso, así que vayamos por partes:

 

Caso 1

Consideremos el siguiente programa rápido (para Spectrum):

	Org	$8000
	Di
	Ld	Hl, Siguiente
	Push	Hl		;Retorno para RetN
	Ld	A, ($FFFE)	;MemPtr=$FFFF
	RetN			;MemPTR = $80xx; bits 13 y 11 a 0
				;HIPÓTESIS
	Siguiente:
	Bit	0, (Hl)	;MemPtr a flags
	Push	Af
	Pop	Bc		;En C
	Ei
	Ld	A, %00101000
	And	C
	Ld	C, A
	Ld	B, 0
	Ret

Haciendo PRINT USR 32768 debiera escribirnos un valor: 40 si MemPTR no se modifica o 0 si lo hace. Como era de esperar, el resultado es 0, luego la lista tiene una errata en ese punto (debieran haber añadido RetN junto a Ret y RetI).

 

Caso 2

Comprobar la NMI es un tema peliagudo: tenemos que tener nuestro código en $66 (ROM por defecto en la mayoría de los ordenadores basados en Z80) y ser capaces de generar una NMI cuando queramos; a ser posible sin hardware externo.

Afortunadamente, hay un ordenador en el que eso es posible: ¡el PCW!

El controlador de disco NEC 765 genera interrupciones; normalmente no se tienen en cuenta en la arquitectura (p.ej. Spectrum +3, Amstrad CPC) pero sí en el caso del PCW. Y aún es más: pueden ser dirigidas a ningún lado (deshabilitadas), a la interrupción enmascarable y a la no enmascarable.

El programa aquí es un tanto más complicado, pues rápidamente deshabilita interrupciones, relocaliza un trozo en la dirección $66 para atender a la NMI, reprograma el Gate Array, y apaga el motor del disco (no lo hará la BIOS pues tenemos deshabilitadas las interrupciones). Al deshabilitarse la rotación del motor un momento después (y por variación de la línea /READY) tenemos nuestra bonita NMI. Simplemente la esperamos con un Halt (y las interrupciones deshabilitadas).

Al no poder imprimir fácilmente números, también hay que incorporar esas rutinas de soporte, restaurar las cosas como estaban, etc. Por todo lo anterior el programa es bastante más largo, así que por razones de longitud no lo listaré aquí.

La conclusión: se modifica MemPTR también. No lo considero una errata, si bien hubiese estado bien añadir una aclaración.

 

Caso 3

De nuevo un programa rapidito en Spectrum:

	Org	$8000
	Di
	Ld	Bc, $FFFE	;No pasa nada por escribir a ULA
	Ld	A, (0)		;MemPtr=1
	Out	(C), C		;MemPtr = $FFFF HIPÓTESIS
	Bit	0, (Hl)	;MemPtr a flags
	Push	Af
	Pop	Bc		;En C
	Ei
	Ld	A, %00101000
	And	C
	Ld	C, A
	Ld	B, 0
	Ret

En este caso haciendo de nuevo PRINT USR 32768 obtenemos un resultado, si bien aquí es al revés: 0 indica que MemPTR no se modifica y 40 que sí lo hizo. Y así sucede, y de nuevo una errata: se debiera cambiar en esas instrucciones la "A" por "r", donde r es un registro de 8 bits. Se cumple para todos los casos (los cambios en el programa son triviales).

 

Moraleja: verificar siempre antes las cosas uno mismo; me toca hacer un par de cambios por haberme fiado. sad

2


Reglas del 10:
10 últimos   10 después   10 antes   10 primeros