.global call
; Test call $Ri
+ mvi_h_gr 0xdeadbeef,r9
mvi_h_gr #func1,r0
set_cc 0x0f ; condition codes shouldn't change
call1:
call @r0
- fail
+ test_h_gr 0xbeefdead,r9
+ pass
+
func1:
test_cc 1 1 1 1
mvi_h_gr #call1,r7
inci_h_gr 2,r7
testr_h_dr r7,rp
+ save_rp
mvi_h_gr #func2,r0
set_cc 0x0f ; condition codes shouldn't change
call2:
call:d @r0
ldi:8 1,r0 ; Must assume this works
- fail
+ restore_rp
+ ret
func2:
test_cc 1 1 1 1
mvi_h_gr #call2,r7
inci_h_gr 4,r7
testr_h_dr r7,rp
testr_h_gr 1,r0
+ save_rp
- pass
+ set_cc 0x0f ; condition codes shouldn't change
+call3:
+ call func3
+ restore_rp
+ ret
+func3:
+ test_cc 1 1 1 1
+ mvi_h_gr #call3,r7
+ inci_h_gr 2,r7
+ testr_h_dr r7,rp
+ save_rp
+
+ set_cc 0x0f ; condition codes shouldn't change
+call4:
+ call:d func4
+ ldi:8 1,r0 ; Must assume this works
+ restore_rp
+ ret
+func4:
+ test_cc 1 1 1 1
+ mvi_h_gr #call4,r7
+ inci_h_gr 4,r7
+ testr_h_dr r7,rp
+ testr_h_gr 1,r0
+ mvi_h_gr 0xbeefdead,r9
+ ret
+
+ fail