]> git.sur5r.net Git - cc65/blobdiff - libsrc/atari/dio_cts.s
Reduced clutter in root dir.
[cc65] / libsrc / atari / dio_cts.s
index 75a65a6700fd6e44dbe5e80924e4ace01232bb0d..551b9c0f60b497807613ffb5bf9dfeb5d0b19f65 100644 (file)
@@ -1,32 +1,68 @@
 ;
 ; Christian Groessler, October 2000
 ;
-; this file provides the _dio_chs_to_snum function
+; this file provides the _dio_phys_to_log function
+; (previously called _dio_chs_to_snum, so the filename)
 ;
 ; on the Atari this function is a dummy, it ignores
-; cylinder and head and returns as sector number the
+; cylinder and head and returns as sector number the
 ; sector number it got
 ;
-; _sectnum_t __fastcall__ _dio_chs_to_snum(unsigned int cyl, unsigned int head, unsigned int sector);
+; unsigned char __fastcall__ dio_phys_to_log(dhandle_t handle,
+;                                            dio_phys_pos *physpos,     /* input */
+;                                            unsigned *sectnum);        /* output */
 ;
-; _driveid_t - 8bit
-; _sectnum_t - 16bit
+; dhandle_t - 16bit (ptr)
 ;
 
-       .export         __dio_chs_to_snum
-       .import         addsp4
-       .include        "atari.inc"
+        .export         _dio_phys_to_log
+        .import         popax,__oserror
+        .importzp       ptr1,ptr2,ptr3
+        .include        "atari.inc"
 
-.proc  __dio_chs_to_snum
+.proc   _dio_phys_to_log
 
-       pha                     ; save sector value
-       txa
-       pha
-       jsr     addsp4          ; ignore other parameters
-       pla
-       tay
-       pla
-       rts
+        sta     ptr1
+        stx     ptr1+1          ; pointer to result
+
+        jsr     popax
+        sta     ptr2
+        stx     ptr2+1          ; pointer to input structure
+
+        jsr     popax
+        sta     ptr3
+        stx     ptr3+1          ; pointer to handle
+
+        ldy     #sst_flag
+        lda     (ptr3),y
+        and     #128
+        beq     _inv_hand       ; handle not open or invalid
+
+; ignore head and track and return the sector value
+
+        ldy     #diopp_sector
+        lda     (ptr2),y
+        tax
+        iny
+        lda     (ptr2),y
+        ldy     #1
+        sta     (ptr1),y
+        dey
+        txa
+        sta     (ptr1),y
+
+        ldx     #0
+        txa
+ret:
+        sta     __oserror
+        rts                     ; return success
+
+; invalid handle
+
+_inv_hand:
+        ldx     #0
+        lda     #BADIOC
+        bne     ret
 
 .endproc