mirror of
https://github.com/KarolS/millfork.git
synced 2024-08-16 20:28:54 +00:00
* non-asm macros can now take `const` and `call` parameters * register parameters to asm functions and macros can be given names if annotated explicitly
61 lines
905 B
Plaintext
61 lines
905 B
Plaintext
// target-independent things
|
|
|
|
#if not(ARCH_I80)
|
|
#warn stdlib_i80 module should be only used on Intel 8080-like targets
|
|
#endif
|
|
|
|
#pragma zilog_syntax
|
|
|
|
import i80_math
|
|
|
|
macro asm void poke(word const addr, byte register(a) value) {
|
|
! LD (addr), A
|
|
}
|
|
|
|
macro asm byte peek(word const addr) {
|
|
! LD A, (addr)
|
|
}
|
|
|
|
macro asm void disable_irq() {
|
|
DI
|
|
}
|
|
|
|
macro asm void enable_irq() {
|
|
EI
|
|
}
|
|
|
|
asm byte hi_nibble_to_hex(byte register(a) value) {
|
|
#if CPUFEATURE_GAMEBOY
|
|
SWAP A
|
|
#else
|
|
RRA
|
|
RRA
|
|
RRA
|
|
RRA
|
|
#endif
|
|
? JP lo_nibble_to_hex
|
|
}
|
|
|
|
asm byte lo_nibble_to_hex(byte register(a) value) {
|
|
AND $F
|
|
ADD A,$30
|
|
CP $3A
|
|
#if CPUFEATURE_GAMEBOY | CPUFEATURE_Z80
|
|
JR C,_lo_nibble_to_hex_lbl
|
|
#else
|
|
JP C,_lo_nibble_to_hex_lbl
|
|
#endif
|
|
ADD A,$7
|
|
_lo_nibble_to_hex_lbl:
|
|
RET
|
|
}
|
|
|
|
macro asm void panic() {
|
|
? CALL _panic
|
|
}
|
|
|
|
noinline asm word call(word de) {
|
|
PUSH DE
|
|
RET
|
|
}
|