cc65/libsrc/cbm/diskinit.s

54 lines
914 B
ArmAsm

;
; Oliver Schmidt, 2012-10-17
;
.export diskinit
.import opencmdchannel, closecmdchannel
.import writefndiskcmd, readdiskerror
.import isdisk, fnunit, fncmd
;------------------------------------------------------------------------------
; diskinit
.proc diskinit
; Save device
sta fnunit
; Check for disk device
tax
jsr isdisk
bcc open
lda #9 ; "Illegal device"
rts
; Open channel
open: jsr opencmdchannel
bne done
; Write command
lda #'i' ; Init command
sta fncmd
jsr writefndiskcmd
bne close
; Read error
ldx fnunit
jsr readdiskerror
; Close channel
close: pha
ldx fnunit
jsr closecmdchannel
pla
done: rts
.endproc