; int atexit (void (*f) (void));
;
- .export _atexit
- .destructor doatexit, 17
- .import callax
+ .export _atexit
+ .destructor doatexit, 17
+ .import callax
- .include "errno.inc"
+ .include "errno.inc"
.macpack cpu
; ---------------------------------------------------------------------------
-.proc _atexit
+.proc _atexit
- ldy exitfunc_index
- cpy #exitfunc_max ; Slot available?
- beq @Error ; Jump if no
+ ldy exitfunc_index
+ cpy #exitfunc_max ; Slot available?
+ beq @Error ; Jump if no
; Enter the function into the table
- sta exitfunc_table,y
- iny
- txa
- sta exitfunc_table,y
- iny
- sty exitfunc_index
+ sta exitfunc_table,y
+ iny
+ txa
+ sta exitfunc_table,y
+ iny
+ sty exitfunc_index
; Done, return zero
- lda #0
- tax
- rts
+ lda #0
+ tax
+ rts
; Error, no space left
-@Error: lda #ENOSPC ; No space left
+@Error: lda #ENOSPC ; No space left
jsr __seterrno
- ldx #$FF ; Return -1
- txa
- rts
+ ldx #$FF ; Return -1
+ txa
+ rts
.endproc
.code
-.proc doatexit
-
- ldy exitfunc_index ; Get index
- beq @L9 ; Jump if done
- dey
- lda exitfunc_table,y
- tax
- dey
- lda exitfunc_table,y
- sty exitfunc_index
- jsr callax ; Call the function
+.proc doatexit
+
+ ldy exitfunc_index ; Get index
+ beq @L9 ; Jump if done
+ dey
+ lda exitfunc_table,y
+ tax
+ dey
+ lda exitfunc_table,y
+ sty exitfunc_index
+ jsr callax ; Call the function
.if (.cpu .bitand ::CPU_ISET_65SC02)
- bra doatexit
+ bra doatexit
.else
- jmp doatexit ; Next one
+ jmp doatexit ; Next one
.endif
-@L9: rts
+@L9: rts
.endproc
; ---------------------------------------------------------------------------
.bss
-exitfunc_index: .res 1 ; Index into table, inc'ed by 2
-exitfunc_table: .res 10 ; 5 exit functions
-exitfunc_max = <(* - exitfunc_table)
+exitfunc_index: .res 1 ; Index into table, inc'ed by 2
+exitfunc_table: .res 10 ; 5 exit functions
+exitfunc_max = <(* - exitfunc_table)