    ;; This code snippet will show one method to fill a block
    ;; of memory with a single data byte using Z80 assembly
    ;; language.

    ;;--------------------------------------------------

    ;; HL = start address of block
    ld hl,&4000

    ;; DE = HL + 1
    ld e,l
    ld d,h
    inc de

    ;; initialise first byte of block
    ;; with data byte (&00)
    ld (hl),&00

    ;; BC = length of block in bytes
    ;; HL+BC-1 = end address of block

    ld bc,&4000

    ;; fill memory
    ldir

    ;;--------------------------------------------------

    ;; For each iteration of the LDIR command:
    ;;
    ;; 1. This command will copy the byte from the memory
    ;; address pointed to by HL to the memory address pointed to by DE.
    ;; i.e. (DE) = (HL).
    ;; 2. Then HL and DE will be incremented. BC will be decremented.
    ;;
    ;;
    ;; For the first byte:
    ;;
    ;; HL = start
    ;; DE = start+1
    ;; BC = length
    ;; (HL)=0
    ;;
    ;; For the second byte:
    ;;
    ;; HL = start + 1 (initialised to 0 by the previous iteration)
    ;; DE = start + 2
    ;; BC = length - 1
    ;;
    ;; For the third byte:
    ;;
    ;; HL = start + 2 (initialised to 0 by the previous iteration)
    ;; DE = start + 3
    ;; BC = length - 2
    ;;
    ;; etc....