ack/mach/i80/libem/floadn.h
David Given 79a38ecc08 Instead of using parameterised rsts for stack access, add a huge swathe of
automatically built helper tools. Star Trek goes up from 40243 to 40779 bytes,
but should be a lot faster.
2019-02-13 22:45:22 +01:00

39 lines
675 B
C

.sect .text
.sect .rom
.sect .data
.sect .bss
.sect .text
! Fetches the word at negative stack offset OFFSET into de.
#define PASTE(a, b) a ## b
#define LABEL(prefix, offset) PASTE(prefix, offset)
.define LABEL(.floadn, OFFSET)
LABEL(.floadn, OFFSET):
#if OFFSET == 0
#error "0 shouldn't happen"
#elif OFFSET == 1
mov l, c
mov h, b
mov d, m
dcx h
mov e, m
ret
#elif OFFSET == 2
mov l, c
mov h, b
dcx h
mov d, m
dcx h
mov e, m
ret
#else
lxi h, -OFFSET
dad b
mov e, m
inx h
mov d, m
ret
#endif