]> git.sur5r.net Git - cc65/commitdiff
get transfer size from sectsizetab
authorcpg <cpg@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Mon, 16 Oct 2000 23:23:22 +0000 (23:23 +0000)
committercpg <cpg@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Mon, 16 Oct 2000 23:23:22 +0000 (23:23 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@373 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/atari/siocall.s

index db71e44ec9483ef0d4f088bfb0bff703c052d509..0a8f9acddd6ab3485b40ed83216ac4e0efdbf034 100644 (file)
@@ -1,10 +1,10 @@
 ;
 ; Christian Groessler, October 2000
 ;
-; this file provides the __sio_call function
-; the function does a SIO call, it's not completely
+; This file provides the __sio_call function
+; The function does a SIO call, it's not completely
 ; generic (e.g. transfer size is fixed), it's used
-; to save space with _dio_read and _dio_write functions
+; to save space with _dio_read and _dio_write functions.
 ;
 ; unsigned char __fastcall__ _sio_call(_driveid_t drive_id,
 ;                                     _sectnum_t sect_num,
 ;                                     unsigned int sio_val);
 ; _driveid_t - 8bit
 ; _sectnum_t - 16bit
-; sio_cal is (sio_command | sio_direction << 8)
+; sio_val is (sio_command | sio_direction << 8)
 ;
 
        .export         __sio_call
        .include        "atari.inc"
        .import         popa,popax
+       .import         sectsizetab
 
 .proc  __sio_call
 
        sta     DAUX1           ; set sector #
        stx     DAUX2
        jsr     popa
-       cmp     #16
+       cmp     #NUMDRVS
        bcs     _inv_dev        ; invalid device #
        adc     #1
        sta     DUNIT           ; unit number (d1,d2,d3,...)
+       sbc     #0
+       asl     a
+       tax
+       lda     sectsizetab,x
+       sta     DBYTLO          ; low byte of bytes to transfer
+       lda     sectsizetab+1,x
+       sta     DBYTHI          ; high byte of bytes to transfer
        lda     #$31            ; D1 (drive_id == 0) has id $31
        sta     DDEVIC
-       lda     #0
-       sta     DBYTHI          ; high byte of bytes to transfer
        lda     #15
        sta     DTIMLO          ; value got from DOS source
-       lda     #128
-       sta     DBYTLO          ; low byte of bytes to transfer 
 
        jsr     SIOV            ; execute