Régi Z80 lap (Samsung DTIM) felélesztése

Kaptam egy Samsung DTIM nevű kb. 1991-ban gyártott PCB-t. Zilog Z80-as processzor van rajta, eredetileg 32 KiB EPROM-mal és 8 KiB SRAM-mal felszerelve. Az EPROM-ot AM29F040 flash memóriára cseréltem és egy egyszerű assembly programot égettem bele. Az eredmény:

(Mottó: Minden beágyazott CPU/MCU villogó LED vezérlésként kezdi pályafutását.)
Az EPROM/flash a 0..0x7FFF címeken érhető el, az SRAM a 0x8000..0x9FFF tartományban van. A 0xC portot írva pedig egy 74HCT374 IC-be kerül az adat. Ennek az IC-nek a Q0 és Q1 kimenetére kötöttem a két zöld LED-et.
A program forrása (sdasz80 -al fordítható):

    .module test

    .area   _HEADER (ABS)
    ;; Reset vector
    .org    0
    ;; Stack at the top of memory.
    ld  sp,#0x9fff

loop:
    ld  c, #0x0C
    ld  b, #0xAA
    out (c), b
    call delay
    ld  c, #0x0C
    ld  b, #0x55
    out (c), b
    call delay

    jp loop

delay:
    ld bc, #0x10            ;Loads BC with hex 10
delay_outer:
    ld de, #0x1000          ;Loads DE with hex 1000
delay_inner:
    dec de                  ;Decrements DE
    ld a, d                 ;Copies D into A
    or e                    ;Bitwise OR of E with A (now, A = D | E)
    jp nz, delay_inner      ;Jumps back to Inner: label if A is not zero
    dec bc                  ;Decrements BC
    ld a, b                 ;Copies B into A
    or c                    ;Bitwise OR of C with A (now, A = B | C)
    jp nz, delay_outer      ;Jumps back to Outer: label if A is not zero
    ret                     ;Return from call to this subroutine

1$:
    halt
    jr  1$

    ;; Ordering of segments for the linker.
    .area   _HOME
    .area   _CODE
        .area   _GSINIT
        .area   _GSFINAL

    .area   _DATA
    .area   _BSEG
        .area   _BSS
        .area   _HEAP

        .area   _CODE