From: cpg Date: Wed, 18 Oct 2000 23:51:29 +0000 (+0000) Subject: now returns a pointer to the entry in sectsizetab X-Git-Tag: V2.12.0~3143 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=2690dfc17254910db033bcac349f81640cf1772f;p=cc65 now returns a pointer to the entry in sectsizetab git-svn-id: svn://svn.cc65.org/cc65/trunk@383 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- diff --git a/libsrc/atari/diopncls.s b/libsrc/atari/diopncls.s index 50899bfe7..504994a72 100644 --- a/libsrc/atari/diopncls.s +++ b/libsrc/atari/diopncls.s @@ -3,44 +3,79 @@ ; ; This file provides the __dio_open and __dio_close functions ; Since on the Atari no real open and close is necessary, they -; do not much. The __dio_open queries the sector size of the +; do not much. The __dio_open sets the sector size of the ; drive which is later used by the _dio_read and _dio_write ; functions. ; -; unsigned char __fastcall__ _dio_open (_driveid_t drive_id); -; unsigned char __fastcall__ _dio_close (_driveid_t drive_id); +; _dhandle_t __fastcall__ _dio_open (_driveid_t drive_id); +; unsigned char __fastcall__ _dio_close (_dhandle_t handle); ; .export __dio_open,__dio_close .export sectsizetab + .import __oserror + .importzp ptr1,tmp1 .include "atari.inc" + .bss sectsizetab: - .res NUMDRVS * 2 + .res NUMDRVS * sst_size .code .proc __dio_open - asl a ; make index from drive id + cmp #NUMDRVS ; valid drive id? + bcs _inv_drive + tay ; drive # + asl a ; make index from drive id + asl a tax - lda #128 ; currently hardcoded (until I get an 815 :-) - sta sectsizetab,x + lda #128 ; currently hardcoded (until I get an 815 :-) + sta sectsizetab+sst_sectsize,x + sta sectsizetab+sst_flag,x ; set flag that drive is "open" lda #0 - sta sectsizetab+1,x + sta sectsizetab+sst_sectsize+1,x + sta __oserror ; success + tya + sta sectsizetab+sst_driveno,x +; lda #SSTIDVAL +; sta sectsizetab+sst_id+1,x + stx tmp1 + lda #sectsizetab + adc #0 + tax + lda tmp1 + rts - ; fall thru to __dio_close +_inv_drive: + lda #NONDEV ; non-existent device + sta __oserror + lda #0 + tax + rts ; return NULL .endproc .proc __dio_close + sta ptr1 + stx ptr1+1 lda #0 + ldy #sst_flag + sta (ptr1),y +; ldy #sst_id +; sta (ptr1),y + sta __oserror ; success tax - rts ; return no error + rts ; return no error .endproc