// target-independent things #if not(ARCH_6502) #warn stdlib_6502 module should be only used on 6502-compatible targets #endif word nmi_routine_addr @$FFFA word reset_routine_addr @$FFFC word irq_routine_addr @$FFFE macro asm void poke(word const addr, byte register(a) value) { ! STA addr } macro asm byte peek(word const addr) { ! LDA addr } macro asm void disable_irq() { SEI } macro asm void enable_irq() { CLI } asm byte hi_nibble_to_hex(byte register(a) value) { LSR LSR LSR LSR ? JMP lo_nibble_to_hex } asm byte lo_nibble_to_hex(byte register(a) value) { ! AND #$F CLC ADC #$30 CMP #$3A BCC _lo_nibble_to_hex_lbl ADC #$6 // carry is set _lo_nibble_to_hex_lbl: ? RTS } macro asm void panic() { ? JSR _panic } const array __constant8 = [8] #if ZPREG_SIZE < 4 const array call = [2] #endif