Viejos montajes - Boot loader Z80
Abriendo un cajón me he encontrado con un viejo montaje que hice en el siglo pasado, sobre 1989. Era la época del Z80, era el micro que llevaba el spectrum, MSX1 y algún otro modelo, fue el rey de los 80. Yo tenía un spectrum donde hacía montajes, controladores PIO, grabadores de EPROM y otros muchos.
Un día me animé hacer una placa donde incorporaba un Z80,un Z80PIO, dos memorias 2114 que en total sumaban 1K, y una EPROM 2716 de 2K. Era una placa para hacer unas practicas de programación del Z80. Mi primera práctica era la mas clásica de todas, hacer parpadear un LED colocado en el PIOZ80.
Los pasos para pasar los programas a la EPROM eran los siguientes:
-Realizaba el programa ensamblador en el spectrum.
-Programaba la EPROM en el spectrum mediante un programador casero que me hice.
-Lo quitabas del programador y lo insertaba en la placa.
-Si con suerte te funcionaba bien.
-Pero si no te funcionaba tenías quitar la EPROM de la placa, borrarla mediante una lampara ultravioleta y volver al primer paso.
Como podéis imaginar se tardaba muchísimo, era todo tedioso.
A la cuarta vez de hacer lo mismo, se te quitaba las ganas de hacer mas prácticas.
Pensando una forma mas fácil de trabajar, llegue a la conclusión, que grabar los programas que querías ejecutar en la EPROM era un atraso. Lo mas fácil era ejecutarlos en la RAM. ¿Pero como poner los programas a ejecutar en la RAM?. Encontré la solución, hacer un programa cargador en la EPROM y que pusiese el programa en la RAM y lo ejecutase. El programa en la EPROM era fijo, no debería volver a tocar la EPROM servía para todos los programas que hiciera.
Retoque un código de un programa que emulaba RS232 y lo adapte al PIOZ80. Era de una revista llamada Micromanía, muchos montajes para el spectrum los saque de allí.
Por aquel entonces tenía un PC con monitor verde. Entre los programas que tenía, había un programa ensamblador cruzado para el Z80. Este lo utilice para crear el fichero binario, y mediante la conexión serie lo mandaba a la placa que lo ejecutaba. Era muy fácil hacer prácticas y los resultados eran casi inmediatos.
Como veréis en el montaje, no existe adaptador RS232 a la entrada PIOZ80, el caso es que en el caso de aquel PC con monitor verde funcionaba sin problemas, cosa que con otros ordenadores no llegó a funcionar.
Imagen del circuito.
Pulsa en el esquema para ampliar.
CODIGO FUENTE DE LA PLACA Z80 CARGA PROGRAMAS DEL RS232-1200BAUDIOS A LA POSICION 8000 Y LO EJECUTA. 0379 3E00 ld a, 0 037B D33F out (3Fh), a 037D D32F out (2Fh), a 037F 3EFF ld a, 0FFh ; <void> 0381 D37F out (7Fh), a 0383 3EFE ld a, 0FEh ; '_' ; <void> 0385 D37F out (7Fh), a 0387 3EFF ld a, 0FFh ; <void> 0389 D36F out (6Fh), a 038B 3E00 ld a, 0 038D D36F out (6Fh), a 038F 210080 ld hl, 8000h 0392 110004 ld de, 400h ; <void> 0395 F3 di 0396 loc_0_396: ; <void> 0396 ; CODE XREF: 03C 0396 0E3F ld c, 3Fh ; '?' ; <void> 0398 0601 ld b, 1 039A ED41 out (c), b 039C loc_0_39C: 039C ; CODE XREF: 03A 039C ED78 in a, (c) 039E FE03 cp 3 03A0 20FA jr nz, loc_0_39C 03A2 3E06 ld a, 6 03A4 loc_0_3A4: 03A4 ; CODE XREF: 03A 03A4 3D dec a 03A5 20FD jr nz, loc_0_3A4 03A7 3E00 ld a, 0 03A9 ED79 out (c), a 03AB 0680 ld b, 80h ; 'Ç' ; <void> 03AD loc_0_3AD: 03AD ; CODE XREF: 03B 03AD 3E16 ld a, 16h 03AF loc_0_3AF: 03AF ; CODE XREF: 03AF 3D dec a 03B0 20FD jr nz, loc_0_3AF 03B2 ED78 in a, (c) 03B4 1F rra 03B5 1F rra 03B6 CB18 rr b 03B8 30F3 jr nc, loc_0_3AD 03BA 3E14 ld a, 14h 03BC loc_0_3BC: 03BC ; CODE XREF: 03BC 3D dec a 03BD 20FD jr nz, loc_0_3BC 03BF 3EFF ld a, 0FFh ; <void> 03C1 90 sub b 03C2 D32F out (2Fh), a 03C4 77 ld (hl), a 03C5 23 inc hl 03C6 1B dec de 03C7 7A ld a, d 03C8 B3 or e 03C9 20CB jr nz, loc_0_396 03CB FB ei 03CC 00 nop 03CD C30080 jp unk_0_7CF+7831h |
Programa Boot loader grabado en la EPROM
Un saludo.SETA43
No hay comentarios:
Publicar un comentario