mirror of
https://github.com/irmen/prog8.git
synced 2024-09-05 20:29:08 +00:00
77 lines
1.0 KiB
Lua
77 lines
1.0 KiB
Lua
; Prog8 internal library routines - always included by the compiler
|
|
;
|
|
; Written by Irmen de Jong (irmen@razorvine.net) - license: GNU GPL 3.0
|
|
;
|
|
; indent format: TABS, size=8
|
|
|
|
|
|
~ prog8_lib {
|
|
; note: the following ZP scratch registers must be the same as in c64lib
|
|
memory ubyte SCRATCH_ZP1 = $02 ; scratch register #1 in ZP
|
|
memory ubyte SCRATCH_ZP2 = $03 ; scratch register #2 in ZP
|
|
memory uword SCRATCH_ZPWORD1 = $fb ; scratch word in ZP ($fb/$fc)
|
|
memory uword SCRATCH_ZPWORD2 = $fd ; scratch word in ZP ($fd/$fe)
|
|
|
|
|
|
%asm {{
|
|
|
|
; 16-bit rotate right (as opposed to the 6502's usual 17-bit rotate with carry)
|
|
; the word is placed in SCRATCH_ZPWORD1
|
|
ror2_word
|
|
lsr SCRATCH_ZPWORD1+1
|
|
ror SCRATCH_ZPWORD1
|
|
bcc +
|
|
lda SCRATCH_ZPWORD1+1
|
|
ora #$80
|
|
sta SCRATCH_ZPWORD1+1
|
|
+ rts
|
|
|
|
|
|
|
|
; @todo: stubs for now
|
|
|
|
ub2float
|
|
rts
|
|
|
|
uw2float
|
|
rts
|
|
|
|
push_float
|
|
rts
|
|
|
|
pop_var_float
|
|
rts
|
|
|
|
copy_float
|
|
rts
|
|
|
|
inc_var_f
|
|
rts
|
|
|
|
dec_var_f
|
|
rts
|
|
|
|
div_f
|
|
rts
|
|
|
|
add_f
|
|
rts
|
|
|
|
sub_f
|
|
rts
|
|
|
|
mul_f
|
|
rts
|
|
|
|
sub_uw
|
|
rts
|
|
|
|
less_ub
|
|
rts
|
|
|
|
less_f
|
|
rts
|
|
|
|
}}
|
|
}
|