У меня получилось так:
Исходный Оберон:
Код:
MODULE ASCII; (*$MAIN*)
IMPORT Console;
VAR
n: SHORTINT;
BEGIN
FOR n := 32 TO 127 DO Console.WriteCh(CHR(n)) END;
END ASCII.
Скомпилировалось в:
Код:
_main_start::
_main:
push ix
;ASCII.c:20: ASCII_n = 32;
ld hl,#_ASCII_n + 0
ld (hl), #0x20
;ASCII.c:22: ASCII__for__1 = (ASCII__for__1 - ASCII_n) + 1;
ld hl,#_ASCII__for__1 + 0
ld (hl), #0x60
;ASCII.c:23: do {
00101$:
;ASCII.c:24: Console_WriteCh((CHAR)ASCII_n);
ld a,(#_ASCII_n + 0)
push af
inc sp
call _Console_WriteCh_ROM
inc sp
;ASCII.c:25: ASCII_n += 1;
ld hl, #_ASCII_n+0
inc (hl)
;ASCII.c:26: ASCII__for__1 -= 1;
ld hl, #_ASCII__for__1+0
dec (hl)
;ASCII.c:27: } while (!(ASCII__for__1 == 0));
ld a,(#_ASCII__for__1 + 0)
or a, a
jr NZ,00101$
;ASCII.c:28: __FINI;
ld hl,#0x0000
pop ix
ret
_main_end::
Немножечко "догнал" опцией --oldralloc, немножечко можно попробовать реализацией FOR от Saferoll (впрочем, прироста именно в этом случае не даёт). Немножечко отказом от OUTPUT_COMPACT в пользу OUTPUT_ROM. Итоговая TAP'ка весит 198 байт.

Сообщение от
Andrew771
И что за строки типа .area _CODE?
Директива секции кода, встроенная в SDCC-асм.

Сообщение от
Andrew771
ну и смысл всё это использовать?
Сделай лучше. Потихоньку. 

Сообщение от
Kakos_nonos
(или модулу, она мне как-то больше приглянулас)
Чем планируем транслировать Модулу в код Z80?