]> git.sur5r.net Git - cc65/commitdiff
renamed the functions; adapted them to the new parameters
authorcpg <cpg@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 20 Oct 2000 21:59:05 +0000 (21:59 +0000)
committercpg <cpg@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 20 Oct 2000 21:59:05 +0000 (21:59 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@388 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/atari/dio_cts.s
libsrc/atari/dio_stc.s

index 013a926285fba45d88338f8a0a1dd7eb8b8ae0b0..d8fb3ac7907863c3e5bafd9c8a25262c6f7b4c77 100644 (file)
@@ -1,51 +1,69 @@
 ;
 ; 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(_dhandle_t handle,
-;                                          unsigned int cyl,
-;                                          unsigned int head,
-;                                          unsigned int sector);
+; unsigned char __fastcall__ _dio_phys_to_log(_dhandle_t handle,
+;                                            _dio_phys_pos *physpos,   /* input */
+;                                            _sectnum_t *sectnum);     /* output */
+;
 ; _dhandle_t - 16bit (ptr)
 ; _sectnum_t - 16bit
 ;
 
-       .export         __dio_chs_to_snum
-       .import         addsp4,popax
-       .importzp       ptr1
+       .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
+       sta     ptr1
+       stx     ptr1+1          ; pointer to result
 
        jsr     popax
-       sta     ptr1
-       stx     ptr1+1
+       sta     ptr2
+       stx     ptr2+1          ; pointer to input structure
+
+       jsr     popax
+       sta     ptr3
+       stx     ptr3+1          ; pointer to handle
+
        ldy     #sst_flag
-       lda     (ptr1),y
+       lda     (ptr3),y
        and     #128
        beq     _inv_hand       ; handle not open or invalid
 
-       pla
-       tay
-       pla
-       rts
+; ignore head and track and return the sector value
 
-_inv_hand:
-       pla
-       pla
-       ldx     #255
+       ldy     #diopp_sector
+       lda     (ptr2),y
+       tax
+       iny
+       lda     (ptr2),y
+       ldy     #1
+       sta     (ptr1),y
+       dey
+       txa
+       sta     (ptr1),y
+
+       ldx     #0
        txa
-       rts
+ret:
+       sta     __oserror
+       rts                     ; return success
+
+; invalid handle
+
+_inv_hand:
+       ldx     #0
+       lda     #BADIOC
+       bne     ret
 
 .endproc
 
index d6f51e8992529425b14b59232582800faa32af5b..fbb518f0b478c4250da4d54dde2336deafa6697d 100644 (file)
@@ -1,56 +1,74 @@
 ;
 ; Christian Groessler, October 2000
 ;
-; this file provides the _dio_snum_to_chs function
+; this file provides the _dio_log_to_phys function
+; (previously called _dio_snum_to_chs, so the filename)
 ;
 ; on the Atari this function is a dummy, it returns
 ; cylinder and head 0 and as sector the sectnum it got
 ;
-; void       __fastcall__ _dio_snum_to_chs(_dhandle_t handle,
-;                                          _sectnum_t sect_num,
-;                                          unsigned int *cyl,
-;                                          unsigned int *head,
-;                                          unsigned int *sector);
+; unsigned char __fastcall__ _dio_log_to_phys(_dhandle_t handle,
+;                                            _dio_phys_pos *physpos,   /* output */
+;                                            _sectnum_t *sectnum);     /* input */
+;
 ; _dhandle_t - 16bit (ptr)
 ; _sectnum_t - 16bit
 ;
 
-       .export         __dio_snum_to_chs
+       .export         __dio_log_to_phys
        .include        "atari.inc"
-       .importzp       ptr1,ptr2
-       .import         popax,addsp2
+       .importzp       ptr1,ptr2,ptr3
+       .import         popax,__oserror
 
-.proc  __dio_snum_to_chs
+.proc  __dio_log_to_phys
 
        sta     ptr1
-       stx     ptr1+1          ; save pointer to sector #
-       jsr     popax           ; get pointer to head
+       stx     ptr1+1          ; save pointer to input data
+
+       jsr     popax
        sta     ptr2
-       stx     ptr2+1
+       stx     ptr2+1          ; pointer to output 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
+
        lda     #0
        tay
-       sta     (ptr2),y        ; set head number
+       tax
+       sta     (ptr2),y        ; head
        iny
+       sta     (ptr2),y        ; track (low)
+       iny
+       sta     (ptr2),y        ; track (high)
+       iny
+
+       lda     (ptr1,x)
        sta     (ptr2),y
-       jsr     popax           ; get pointer to cyl
-       sta     ptr2
-       stx     ptr2+1
-       dey
-       tya
-       sta     (ptr2),y        ; set cylinder number
        iny
+       inc     ptr1
+       bne     _l1
+       inc     ptr1+1
+_l1:   lda     (ptr1,x)
        sta     (ptr2),y
-       jsr     popax           ; get sector #
 
-       dey
-       sta     (ptr1),y
-       iny
+       ldx     #0
        txa
-       sta     (ptr1),y
+ret:
+       sta     __oserror
+       rts                     ; return success
 
-       jsr     addsp2
+; invalid handle
 
-       rts
+_inv_hand:
+       ldx     #0
+       lda     #BADIOC
+       bne     ret
 
 .endproc