You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
788 B
ArmAsm

;
; Ullrich von Bassewitz, 06.08.1998
;
; CC65 runtime: function epilogue
;
; exit a function. pop stack and rts. The function comes in different
; flavours that provide default values for the return val, or drop a local
; stack frame with size in y.
.export leave00, leave0, leavey00, leavey0, leavey
.export leave
.import addysp
.importzp sp
leave00:
lda #0
leave0: ldx #0
beq leave
leavey00:
lda #0 ; "return 0"
leavey0:
ldx #0 ; return < 256
leavey:
jsr addysp ; drop stack frame
leave: pha ; save A a sec
ldy #0
lda (sp),y ; that's the pushed arg size
sec ; Count the byte, the count's stored in
adc sp
sta sp
bcc L1
inc sp+1
L1: pla ; Get return value back
rts