From 979700f2fef6de7394886d3cf0d5cf4ae4d0fe3f Mon Sep 17 00:00:00 2001 From: cpg Date: Wed, 18 Oct 2000 23:54:27 +0000 Subject: [PATCH] adapted to new calling parameters (_dhandle_t) git-svn-id: svn://svn.cc65.org/cc65/trunk@384 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/atari/siocall.s | 46 +++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/libsrc/atari/siocall.s b/libsrc/atari/siocall.s index 0a8f9acdd..7737d3c5c 100644 --- a/libsrc/atari/siocall.s +++ b/libsrc/atari/siocall.s @@ -6,11 +6,11 @@ ; generic (e.g. transfer size is fixed), it's used ; to save space with _dio_read and _dio_write functions. ; -; unsigned char __fastcall__ _sio_call(_driveid_t drive_id, +; unsigned char __fastcall__ _sio_call(_dhandle_t handle, ; _sectnum_t sect_num, ; void *buffer, ; unsigned int sio_val); -; _driveid_t - 8bit +; _dhandle_t - 16bit (ptr) ; _sectnum_t - 16bit ; sio_val is (sio_command | sio_direction << 8) ; @@ -18,7 +18,8 @@ .export __sio_call .include "atari.inc" .import popa,popax - .import sectsizetab + .import sectsizetab,__oserror + .importzp ptr1 .proc __sio_call @@ -30,18 +31,30 @@ jsr popax sta DAUX1 ; set sector # stx DAUX2 - jsr popa - cmp #NUMDRVS - bcs _inv_dev ; invalid device # + + jsr popax + sta ptr1 + stx ptr1+1 + + ldy #sst_flag + lda (ptr1),y + and #128 + beq _inv_hand ; handle not open or invalid + + ldy #sst_driveno + lda (ptr1),y + + clc 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 + + ldy #sst_sectsize + lda (ptr1),y + sta DBYTLO + iny + lda (ptr1),y + sta DBYTHI + lda #$31 ; D1 (drive_id == 0) has id $31 sta DDEVIC lda #15 @@ -54,11 +67,12 @@ bmi _req_err ; error occurred txa ; no error occurred _req_err: + sta __oserror rts -_inv_dev: +_inv_hand: ldx #0 - lda #NONDEV ; non-existent device error - rts + lda #BADIOC + bne _req_err .endproc -- 2.39.5