; ; Oliver Schmidt, 2012-09-10 ; ; char* __fastcall__ getdevicedir (unsigned char device, char* buf, size_t size); ; .export _getdevicedir .import opencmdchannel, closecmdchannel .import writefndiskcmd, readdiskerror .import isdisk, fnunit, fncmd, devicestr .import popa, popax .importzp ptr2, ptr3 .include "errno.inc" ;------------------------------------------------------------------------------ ; _getdevicedir .proc _getdevicedir ; Save size sta ptr3 stx ptr3+1 ; Save buf jsr popax sta ptr2 stx ptr2+1 ; Save device jsr popa sta fnunit ; Check for disk device tax jsr isdisk bcs erange ; Open channel jsr opencmdchannel bne oserr ; 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 bne oserr ; Check for sufficient buf size lda ptr3+1 bne okay ; Buf >= 256 lda ptr3 cmp #3 bcs okay ; Buf >= 3 erange: lda #