Montagem Z80, código de máquina de 37 bytes
Suponha um dispositivo de E / S mapeado para memória:
; NÃO introduza um espaço, pois ele entrará em espaços de impressão com loop infinito e novas linhas!
3A xx xx ld a, (entrada); obter caractere de entrada
11 0A 20 ld, 200ah; espaço e nova linha
21 yy yy ld hl, output; obter endereço de saída
4F ld c, a; colocar caractere em c
ciclo:
72 ld (hl), d; espaço de saída * 2 | caractere de saída * 2
72 ld (hl), d
77 ld (hl), a; caractere de saída | caractere de saída
71 ld (hl), c; caractere de saída * 2 | espaço de saída * 2
71 ld (hl), c
77 ld (hl), a; caractere de saída | caractere de saída
73 ld (hl), e; nova linha de saída | nova linha de saída
72 ld (hl), d; espaço de saída | caractere de saída
71 ld (hl), c; caractere de saída | espaço de saída
72 ld (hl), d; espaço de saída | caractere de saída
71 ld (hl), c; caractere de saída | espaço de saída
72 ld (hl), d; espaço de saída | caractere de saída
B9 cp c; definir zero sinalizador primeira vez | limpar a segunda vez
20 06 jr nz, fim; pule para o fim
77 ld (hl), a; caractere de saída
73 ld (hl), e; nova linha de saída
4A ld c, d; colocar espaço em c
57 dd, a; colocar caractere em d
28 FB jr z, laço; loop para a segunda vez
fim:
73 ld (hl), e; nova linha de saída
77 ld (hl), a; caractere de saída * 4
77 ld (hl), um
77 ld (hl), um
77 ld (hl), um
76 paradas; ou C9 ret