From 3f71fcb29333d6492dc0799e06622c6d2cc40a56 Mon Sep 17 00:00:00 2001 From: cpg Date: Thu, 12 Oct 2000 21:00:19 +0000 Subject: [PATCH] now sets up SIO command and transfer direction; __sio_call now does the real work git-svn-id: svn://svn.cc65.org/cc65/trunk@361 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/atari/dioread.s | 44 ++++++----------------------------------- libsrc/atari/diowrite.s | 44 ++++++----------------------------------- 2 files changed, 12 insertions(+), 76 deletions(-) diff --git a/libsrc/atari/dioread.s b/libsrc/atari/dioread.s index 06ea0d484..1b56e4294 100644 --- a/libsrc/atari/dioread.s +++ b/libsrc/atari/dioread.s @@ -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 + diff --git a/libsrc/atari/diowrite.s b/libsrc/atari/diowrite.s index 6c037f379..315d9b5ac 100644 --- a/libsrc/atari/diowrite.s +++ b/libsrc/atari/diowrite.s @@ -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 +