From 7eae69826413e575bfc720a336052a60c8c07577 Mon Sep 17 00:00:00 2001 From: cpg Date: Fri, 20 Oct 2000 21:59:05 +0000 Subject: [PATCH] renamed the functions; adapted them to the new parameters git-svn-id: svn://svn.cc65.org/cc65/trunk@388 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/atari/dio_cts.s | 70 +++++++++++++++++++++++++--------------- libsrc/atari/dio_stc.s | 72 ++++++++++++++++++++++++++---------------- 2 files changed, 89 insertions(+), 53 deletions(-) diff --git a/libsrc/atari/dio_cts.s b/libsrc/atari/dio_cts.s index 013a92628..d8fb3ac79 100644 --- a/libsrc/atari/dio_cts.s +++ b/libsrc/atari/dio_cts.s @@ -1,51 +1,69 @@ ; ; Christian Groessler, October 2000 ; -; this file provides the _dio_chs_to_snum function +; this file provides the _dio_phys_to_log function +; (previously called _dio_chs_to_snum, so the filename) ; ; on the Atari this function is a dummy, it ignores -; cylinder and head 0 and returns as sector number the +; cylinder and head and returns as sector number the ; sector number it got ; -; _sectnum_t __fastcall__ _dio_chs_to_snum(_dhandle_t handle, -; unsigned int cyl, -; unsigned int head, -; unsigned int sector); +; unsigned char __fastcall__ _dio_phys_to_log(_dhandle_t handle, +; _dio_phys_pos *physpos, /* input */ +; _sectnum_t *sectnum); /* output */ +; ; _dhandle_t - 16bit (ptr) ; _sectnum_t - 16bit ; - .export __dio_chs_to_snum - .import addsp4,popax - .importzp ptr1 + .export __dio_phys_to_log + .import popax,__oserror + .importzp ptr1,ptr2,ptr3 .include "atari.inc" -.proc __dio_chs_to_snum +.proc __dio_phys_to_log - pha ; save sector value - txa - pha - jsr addsp4 ; ignore other parameters + sta ptr1 + stx ptr1+1 ; pointer to result jsr popax - sta ptr1 - stx ptr1+1 + sta ptr2 + stx ptr2+1 ; pointer to input structure + + jsr popax + sta ptr3 + stx ptr3+1 ; pointer to handle + ldy #sst_flag - lda (ptr1),y + lda (ptr3),y and #128 beq _inv_hand ; handle not open or invalid - pla - tay - pla - rts +; ignore head and track and return the sector value -_inv_hand: - pla - pla - ldx #255 + ldy #diopp_sector + lda (ptr2),y + tax + iny + lda (ptr2),y + ldy #1 + sta (ptr1),y + dey + txa + sta (ptr1),y + + ldx #0 txa - rts +ret: + sta __oserror + rts ; return success + +; invalid handle + +_inv_hand: + ldx #0 + lda #BADIOC + bne ret .endproc diff --git a/libsrc/atari/dio_stc.s b/libsrc/atari/dio_stc.s index d6f51e899..fbb518f0b 100644 --- a/libsrc/atari/dio_stc.s +++ b/libsrc/atari/dio_stc.s @@ -1,56 +1,74 @@ ; ; Christian Groessler, October 2000 ; -; this file provides the _dio_snum_to_chs function +; this file provides the _dio_log_to_phys function +; (previously called _dio_snum_to_chs, so the filename) ; ; on the Atari this function is a dummy, it returns ; cylinder and head 0 and as sector the sectnum it got ; -; void __fastcall__ _dio_snum_to_chs(_dhandle_t handle, -; _sectnum_t sect_num, -; unsigned int *cyl, -; unsigned int *head, -; unsigned int *sector); +; unsigned char __fastcall__ _dio_log_to_phys(_dhandle_t handle, +; _dio_phys_pos *physpos, /* output */ +; _sectnum_t *sectnum); /* input */ +; ; _dhandle_t - 16bit (ptr) ; _sectnum_t - 16bit ; - .export __dio_snum_to_chs + .export __dio_log_to_phys .include "atari.inc" - .importzp ptr1,ptr2 - .import popax,addsp2 + .importzp ptr1,ptr2,ptr3 + .import popax,__oserror -.proc __dio_snum_to_chs +.proc __dio_log_to_phys sta ptr1 - stx ptr1+1 ; save pointer to sector # - jsr popax ; get pointer to head + stx ptr1+1 ; save pointer to input data + + jsr popax sta ptr2 - stx ptr2+1 + stx ptr2+1 ; pointer to output structure + + jsr popax + sta ptr3 + stx ptr3+1 ; pointer to handle + + ldy #sst_flag + lda (ptr3),y + and #128 + beq _inv_hand ; handle not open or invalid + lda #0 tay - sta (ptr2),y ; set head number + tax + sta (ptr2),y ; head iny + sta (ptr2),y ; track (low) + iny + sta (ptr2),y ; track (high) + iny + + lda (ptr1,x) sta (ptr2),y - jsr popax ; get pointer to cyl - sta ptr2 - stx ptr2+1 - dey - tya - sta (ptr2),y ; set cylinder number iny + inc ptr1 + bne _l1 + inc ptr1+1 +_l1: lda (ptr1,x) sta (ptr2),y - jsr popax ; get sector # - dey - sta (ptr1),y - iny + ldx #0 txa - sta (ptr1),y +ret: + sta __oserror + rts ; return success - jsr addsp2 +; invalid handle - rts +_inv_hand: + ldx #0 + lda #BADIOC + bne ret .endproc -- 2.39.5