diff --git a/libsrc/geos-cbm/disk/dio_cts.s b/libsrc/geos-cbm/disk/dio_cts.s index 8be343641..043e1f8d8 100644 --- a/libsrc/geos-cbm/disk/dio_cts.s +++ b/libsrc/geos-cbm/disk/dio_cts.s @@ -1,6 +1,6 @@ ; -; Maciej 'YTM/Elysium' Witkowiak -; 2.7.2001 +; 2001-07-02, Maciej 'YTM/Elysium' Witkowiak +; 2015-08-26, Greg King ; ; ; unsigned char __fastcall__ dio_phys_to_log (dhandle_t handle, @@ -59,7 +59,7 @@ _dio_phys_to_log: lda (ptr3),y tay lda driveType,y - and #%00000011 ; this is for RamDrive compatibility + and #%00001111 ; remove ramDisk flags cmp #DRV_1541 beq dio_cts1541 cmp #DRV_1571 @@ -67,7 +67,7 @@ _dio_phys_to_log: cmp #DRV_1581 beq dio_cts1581 - lda #DEV_NOT_FOUND ; unknown device + lda #INCOMPATIBLE ; unsupported device ldx #0 beq ret @@ -91,7 +91,7 @@ _inv_data: lda #INV_TRACK .byte $2c _inv_hand: - lda #INCOMPATIBLE + lda #DEV_NOT_FOUND ldx #0 beq ret diff --git a/libsrc/geos-cbm/disk/dio_openclose.s b/libsrc/geos-cbm/disk/dio_openclose.s index ec5aa8795..72e3e32e9 100644 --- a/libsrc/geos-cbm/disk/dio_openclose.s +++ b/libsrc/geos-cbm/disk/dio_openclose.s @@ -1,8 +1,8 @@ ; -; Maciej 'YTM/Elysium' Witkowiak +; 2001-07-02, Maciej 'YTM/Elysium' Witkowiak +; 2015-08-24, Greg King ; ; based on Atari version by Christian Groessler -; 2.7.2001 ; ; dhandle_t __fastcall__ dio_open (unsigned char device); ; unsigned char __fastcall__ dio_close (dhandle_t handle); @@ -27,11 +27,13 @@ sectsizetab: .code _dio_open: - pha + cmp #4 + bcs _inv_drive tax lda driveType,x ; check if there's a device beq _inv_drive txa + pha clc adc #8 ; normalize devnum sta curDevice diff --git a/libsrc/geos-cbm/disk/dio_read.s b/libsrc/geos-cbm/disk/dio_read.s index db46c9b69..ac19f9afa 100644 --- a/libsrc/geos-cbm/disk/dio_read.s +++ b/libsrc/geos-cbm/disk/dio_read.s @@ -1,6 +1,6 @@ ; -; Maciej 'YTM/Elysium' Witkowiak -; 2.7.2001 +; 2001-07-02, Maciej 'YTM/Elysium' Witkowiak +; 2015-08-27, Greg King ; ; this file provides the _dio_read function ; @@ -15,7 +15,9 @@ _dio_read: jsr dio_params + tay + bne err jsr ReadBlock stx __oserror txa - rts +err: rts diff --git a/libsrc/geos-cbm/disk/dio_stc.s b/libsrc/geos-cbm/disk/dio_stc.s index 586e3f3db..7398edb63 100644 --- a/libsrc/geos-cbm/disk/dio_stc.s +++ b/libsrc/geos-cbm/disk/dio_stc.s @@ -1,6 +1,6 @@ ; -; Maciej 'YTM/Elysium' Witkowiak -; 2.7.2001 +; 2001-07-02, Maciej 'YTM/Elysium' Witkowiak +; 2015-08-27, Greg King ; ; unsigned char __fastcall__ dio_log_to_phys (dhandle_t handle, ; unsigned *sectnum, /* input */ @@ -55,7 +55,7 @@ _dio_log_to_phys: lda (ptr3),y tay lda driveType,y - and #%00000011 ; this is for RamDrive compatibility + and #%00001111 ; remove ramDisk flags cmp #DRV_1541 beq dio_stc1541 cmp #DRV_1571 @@ -63,7 +63,7 @@ _dio_log_to_phys: cmp #DRV_1581 beq dio_stc1581 - lda #DEV_NOT_FOUND ; unknown device + lda #INCOMPATIBLE ; unsupported device ldx #0 beq _ret @@ -86,7 +86,7 @@ _inv_data: lda #INV_TRACK .byte $2c _inv_hand: - lda #INCOMPATIBLE + lda #DEV_NOT_FOUND ldx #0 beq _ret @@ -102,8 +102,8 @@ _loop41: bne _nxt lda tmp1 cmp sectab_1541_l+1,x - bcc _found -_nxt: inx +_nxt: bcc _found + inx cpx #35 bne _loop41 beq _inv_data @@ -124,12 +124,11 @@ dio_stc1571: ; - fall down to 1541 lda tmp2 cmp #>683 - bne _cnt71 + bne _if71 lda tmp1 cmp #<683 - bcc dio_stc1541 +_if71: bcc dio_stc1541 -_cnt71: lda tmp1 sec sbc #<683 @@ -138,6 +137,8 @@ _cnt71: sbc #>683 sta tmp2 jsr dio_stc1541 ; will fall through here + tay + bne _ret ; result beyond track 70 ldy #diopp_track lda (ptr1),y @@ -166,7 +167,7 @@ _sub81: lda tmp1 sbc #0 sta tmp2 inx - cpx #81 + cpx #80 bne _loop81 beq _inv_data diff --git a/libsrc/geos-cbm/disk/dio_write.s b/libsrc/geos-cbm/disk/dio_write.s index 14267803a..a5f747519 100644 --- a/libsrc/geos-cbm/disk/dio_write.s +++ b/libsrc/geos-cbm/disk/dio_write.s @@ -1,6 +1,6 @@ ; -; Maciej 'YTM/Elysium' Witkowiak -; 2.7.2001 +; 2001-07-02, Maciej 'YTM/Elysium' Witkowiak +; 2015-08-27, Greg King ; ; this file provides the _dio_write function ; @@ -15,5 +15,9 @@ _dio_write: jsr dio_params + tay + bne err jsr WriteBlock jmp setoserror + +err: rts diff --git a/libsrc/geos-cbm/disk/dio_writev.s b/libsrc/geos-cbm/disk/dio_writev.s index 7cb9b029f..9b36ed096 100644 --- a/libsrc/geos-cbm/disk/dio_writev.s +++ b/libsrc/geos-cbm/disk/dio_writev.s @@ -1,6 +1,6 @@ ; -; Maciej 'YTM/Elysium' Witkowiak -; 2.7.2001 +; 2001-07-02, Maciej 'YTM/Elysium' Witkowiak +; 2015-08-27, Greg King ; ; this file provides the _dio_write function ; @@ -15,7 +15,9 @@ _dio_write_verify: jsr dio_params + tay + bne err jsr VerWriteBlock stx __oserror txa - rts +err: rts