cc65/libsrc/serial/ser_unload.s

38 lines
959 B
ArmAsm

;
; Ullrich von Bassewitz, 2003-04-15
;
; unsigned char ser_unload (void);
; /* Unload the currently loaded driver. */
.include "ser-kernel.inc"
.include "ser-error.inc"
.include "modload.inc"
.import ser_clear_ptr
.import return0, return1
_ser_unload:
lda _ser_drv
pha ; Save pointer to driver
ora _ser_drv+1
beq no_driver ; No driver
lda _ser_drv+1
pha
jsr _ser_uninstall ; Uninstall the driver
pla
tax
pla ; Get pointer to driver
jsr _mod_free ; Free the driver
.assert SER_ERR_OK = 0, error
jmp return0
no_driver:
pla ; Remove pushed junk
.assert SER_ERR_NO_DRIVER = 1, error
jmp return1