]> git.sur5r.net Git - cc65/commitdiff
now sets up SIO command and transfer direction; __sio_call now does the
authorcpg <cpg@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 12 Oct 2000 21:00:19 +0000 (21:00 +0000)
committercpg <cpg@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 12 Oct 2000 21:00:19 +0000 (21:00 +0000)
real work

git-svn-id: svn://svn.cc65.org/cc65/trunk@361 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/atari/dioread.s
libsrc/atari/diowrite.s

index 06ea0d484817e9aebd2b5cc4e57514daea3d963c..1b56e42947dd13b181c05164ce6c5b06f6566d23 100644 (file)
@@ -8,48 +8,16 @@
 ; _sectnum_t - 16bit
 ;
 
-
+       .import         __sio_call,pushax
        .export         __dio_read
-       .import         popa,popax
        .include        "atari.inc"
 
 .proc  __dio_read
 
-       sta     DBUFLO          ; set buffer address into DCB
-       stx     DBUFHI
-       jsr     popax
-       sta     DAUX1           ; set sector #
-       stx     DAUX2
-       jsr     popa
-       cmp     #16
-       bcs     _inv_dev        ; invalid device #
-       adc     #1
-       sta     DUNIT           ; unit number (d1,d2,d3,...)
-       lda     #$31            ; D1 (drive_id == 0) has id $31
-       sta     DDEVIC
-       lda     #0
-       sta     DBYTHI          ; high byte of bytes to transfer
-       lda     #%01000000      ; indicate i/o direction (read)
-       sta     DSTATS
-       lda     #15
-       sta     DTIMLO          ; value got from DOS source
-       lda     #128
-       sta     DBYTLO          ; low byte of bytes to transfer 
-       lda     #SIO_READ       ; read sector
-       sta     DCOMND
-
-       jsr     SIOV            ; execute
-
-       ldx     #0
-       lda     DSTATS
-       bmi     _req_err        ; error occurred
-       txa                     ; no error occurred
-_req_err:
-       rts
-
-_inv_dev:
-       ldx     #0
-       lda     #NONDEV         ; non-existent device error
-       rts
+       jsr     pushax          ; push buffer address
+       ldx     #%01000000      ; direction value
+       lda     #SIO_READ       ; read sector command
+       jmp     __sio_call      ; do the call and return to the user
 
 .endproc
+
index 6c037f379e73d15e3d371657e82003ba63baec0b..315d9b5ac6394e73ea854abb6a3d00fcac34dd81 100644 (file)
@@ -8,48 +8,16 @@
 ; _sectnum_t - 16bit
 ;
 
-
+       .import         __sio_call,pushax
        .export         __dio_write
-       .import         popa,popax
        .include        "atari.inc"
 
 .proc  __dio_write
 
-       sta     DBUFLO          ; set buffer address into DCB
-       stx     DBUFHI
-       jsr     popax
-       sta     DAUX1           ; set sector #
-       stx     DAUX2
-       jsr     popa
-       cmp     #16
-       bcs     _inv_dev        ; invalid device #
-       adc     #1
-       sta     DUNIT           ; unit number (d1,d2,d3,...)
-       lda     #$31            ; D1 (drive_id == 0) has id $31
-       sta     DDEVIC
-       lda     #0
-       sta     DBYTHI          ; high byte of bytes to transfer
-       lda     #%10000000      ; indicate i/o direction (write)
-       sta     DSTATS
-       lda     #15
-       sta     DTIMLO          ; value got from DOS source
-       lda     #128
-       sta     DBYTLO          ; low byte of bytes to transfer 
-       lda     #SIO_WRITE      ; write sector
-       sta     DCOMND
-
-       jsr     SIOV            ; execute
-
-       ldx     #0
-       lda     DSTATS
-       bmi     _req_err        ; error occurred
-       txa                     ; no error occurred
-_req_err:
-       rts
-
-_inv_dev:
-       ldx     #0
-       lda     #NONDEV         ; non-existent device error
-       rts
+       jsr     pushax          ; push buffer address
+       ldx     #%10000000      ; indicate i/o direction (write)
+       lda     #SIO_WRITE      ; write sector command
+       jmp     __sio_call      ; do the call and return to the user
 
 .endproc
+