prog8/prog8lib/prog8lib.p8

155 lines
1.7 KiB
Plaintext
Raw Normal View History

2018-09-15 16:21:05 +02:00
; Prog8 internal library routines - always included by the compiler
2017-12-30 13:34:52 +01:00
;
2018-01-08 03:31:23 +01:00
; Written by Irmen de Jong (irmen@razorvine.net) - license: GNU GPL 3.0
2018-01-13 14:17:18 +01:00
;
2017-12-30 13:34:52 +01:00
; indent format: TABS, size=8
2018-09-15 16:21:05 +02:00
~ prog8_lib {
2017-12-30 20:03:19 +01:00
; 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)
2017-12-30 13:34:52 +01:00
2018-08-13 01:30:33 +02:00
%asm {{
2017-12-30 13:34:52 +01:00
; 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
2018-02-03 01:44:14 +01:00
bcc +
lda SCRATCH_ZPWORD1+1
ora #$80
sta SCRATCH_ZPWORD1+1
2018-02-04 22:00:08 +01:00
+ rts
2018-10-24 01:39:52 +02:00
; @todo: stubs for now
2018-10-25 23:17:10 +02:00
; @todo: move float operations to their own library (only included when floats are enabled)
2018-10-24 01:39:52 +02:00
ub2float
rts
2018-10-27 00:34:42 +02:00
b2float
rts
2018-10-24 01:39:52 +02:00
uw2float
rts
2018-10-27 00:34:42 +02:00
w2float
rts
2018-10-24 01:39:52 +02:00
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
2018-10-25 23:17:10 +02:00
neg_f
rts
2018-10-24 01:39:52 +02:00
sub_uw
rts
less_ub
rts
less_f
rts
2018-10-25 23:17:10 +02:00
func_sin
rts
func_cos
rts
func_abs
rts
func_acos
rts
func_asin
rts
func_tan
rts
func_atan
rts
func_ln
rts
func_log2
rts
func_log10
rts
func_sqrt
rts
func_rad
rts
func_deg
rts
func_round
rts
func_floor
rts
func_ceil
rts
func_max
rts
func_min
rts
func_avg
rts
func_sum
rts
func_len
rts
func_any
rts
func_all
rts
func_rnd
rts
func_rndw
rts
func_rndf
rts
func_wrd
rts
func_uwrd
rts
func_str2byte
rts
func_str2ubyte
rts
func_str2word
rts
func_str2uword
rts
func_str2float
rts
2018-08-13 01:30:33 +02:00
}}
2017-12-30 13:34:52 +01:00
}