Removed (pretty inconsistently used) tab chars from source code base.
This commit is contained in:
@@ -5,11 +5,11 @@
|
||||
|
||||
; char ChangeDiskDevice (char newDriveNumber);
|
||||
|
||||
.export _ChangeDiskDevice
|
||||
.import setoserror
|
||||
.export _ChangeDiskDevice
|
||||
.import setoserror
|
||||
|
||||
.include "jumptab.inc"
|
||||
|
||||
.include "jumptab.inc"
|
||||
|
||||
_ChangeDiskDevice:
|
||||
jsr ChangeDiskDevice
|
||||
jmp setoserror
|
||||
jsr ChangeDiskDevice
|
||||
jmp setoserror
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
|
||||
; char ChkDkGEOS (void);
|
||||
|
||||
.export _ChkDkGEOS
|
||||
.import setoserror
|
||||
.export _ChkDkGEOS
|
||||
.import setoserror
|
||||
|
||||
.include "jumptab.inc"
|
||||
.include "geossym.inc"
|
||||
|
||||
.include "jumptab.inc"
|
||||
.include "geossym.inc"
|
||||
|
||||
_ChkDkGEOS:
|
||||
jsr ChkDkGEOS
|
||||
jsr setoserror
|
||||
lda isGEOS
|
||||
rts
|
||||
jsr ChkDkGEOS
|
||||
jsr setoserror
|
||||
lda isGEOS
|
||||
rts
|
||||
|
||||
@@ -4,184 +4,184 @@
|
||||
;
|
||||
;
|
||||
; unsigned char __fastcall__ dio_phys_to_log (dhandle_t handle,
|
||||
; dio_phys_pos *physpos, /* input */
|
||||
; unsigned *sectnum); /* output */
|
||||
; dio_phys_pos *physpos, /* input */
|
||||
; unsigned *sectnum); /* output */
|
||||
;
|
||||
|
||||
.export _dio_phys_to_log
|
||||
.export sectab_1541_l, sectab_1541_h ; for log_to_phys
|
||||
.import popax,__oserror
|
||||
.importzp ptr1,ptr2,ptr3,tmp1,tmp2,tmp3,tmp4
|
||||
.export _dio_phys_to_log
|
||||
.export sectab_1541_l, sectab_1541_h ; for log_to_phys
|
||||
.import popax,__oserror
|
||||
.importzp ptr1,ptr2,ptr3,tmp1,tmp2,tmp3,tmp4
|
||||
|
||||
.include "dio.inc"
|
||||
.include "geossym.inc"
|
||||
.include "const.inc"
|
||||
.include "dio.inc"
|
||||
.include "geossym.inc"
|
||||
.include "const.inc"
|
||||
|
||||
_dio_phys_to_log:
|
||||
sta ptr1
|
||||
stx ptr1+1 ; pointer to result
|
||||
|
||||
jsr popax
|
||||
sta ptr2
|
||||
stx ptr2+1 ; pointer to input 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
|
||||
|
||||
|
||||
ldy #diopp_head
|
||||
lda (ptr2),y
|
||||
bne _inv_data ; there is only head 0
|
||||
ldy #diopp_track
|
||||
lda (ptr2),y
|
||||
beq _inv_data ; there is no track 0
|
||||
sta tmp1
|
||||
iny
|
||||
lda (ptr2),y
|
||||
bne _inv_data ; there are no more than 256 tracks
|
||||
dec tmp1 ; normalize track to start from 0
|
||||
ldy #diopp_sector
|
||||
lda (ptr2),y
|
||||
sta tmp2
|
||||
iny
|
||||
lda (ptr2),y
|
||||
bne _inv_data ; there are no more than 256 sectors
|
||||
sta ptr1
|
||||
stx ptr1+1 ; pointer to result
|
||||
|
||||
jsr popax
|
||||
sta ptr2
|
||||
stx ptr2+1 ; pointer to input 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
|
||||
|
||||
|
||||
ldy #diopp_head
|
||||
lda (ptr2),y
|
||||
bne _inv_data ; there is only head 0
|
||||
ldy #diopp_track
|
||||
lda (ptr2),y
|
||||
beq _inv_data ; there is no track 0
|
||||
sta tmp1
|
||||
iny
|
||||
lda (ptr2),y
|
||||
bne _inv_data ; there are no more than 256 tracks
|
||||
dec tmp1 ; normalize track to start from 0
|
||||
ldy #diopp_sector
|
||||
lda (ptr2),y
|
||||
sta tmp2
|
||||
iny
|
||||
lda (ptr2),y
|
||||
bne _inv_data ; there are no more than 256 sectors
|
||||
|
||||
; tmp1 (int) holds track+sector, translate it using device info
|
||||
|
||||
ldy #sst_driveno
|
||||
lda (ptr3),y
|
||||
tay
|
||||
lda driveType,y
|
||||
and #%00000011 ; this is for RamDrive compatibility
|
||||
cmp #DRV_1541
|
||||
beq dio_cts1541
|
||||
cmp #DRV_1571
|
||||
beq dio_cts1571
|
||||
cmp #DRV_1581
|
||||
beq dio_cts1581
|
||||
|
||||
lda #DEV_NOT_FOUND ; unknown device
|
||||
ldx #0
|
||||
beq ret
|
||||
ldy #sst_driveno
|
||||
lda (ptr3),y
|
||||
tay
|
||||
lda driveType,y
|
||||
and #%00000011 ; this is for RamDrive compatibility
|
||||
cmp #DRV_1541
|
||||
beq dio_cts1541
|
||||
cmp #DRV_1571
|
||||
beq dio_cts1571
|
||||
cmp #DRV_1581
|
||||
beq dio_cts1581
|
||||
|
||||
lda #DEV_NOT_FOUND ; unknown device
|
||||
ldx #0
|
||||
beq ret
|
||||
|
||||
dio_ctsend:
|
||||
ldy #1
|
||||
lda tmp2
|
||||
sta (ptr1),y
|
||||
dey
|
||||
lda tmp1
|
||||
sta (ptr1),y
|
||||
|
||||
ldx #0
|
||||
txa
|
||||
ret:
|
||||
sta __oserror
|
||||
rts ; return success
|
||||
ldy #1
|
||||
lda tmp2
|
||||
sta (ptr1),y
|
||||
dey
|
||||
lda tmp1
|
||||
sta (ptr1),y
|
||||
|
||||
ldx #0
|
||||
txa
|
||||
ret:
|
||||
sta __oserror
|
||||
rts ; return success
|
||||
|
||||
; errors
|
||||
|
||||
_inv_data:
|
||||
lda #INV_TRACK
|
||||
.byte $2c
|
||||
lda #INV_TRACK
|
||||
.byte $2c
|
||||
_inv_hand:
|
||||
lda #INCOMPATIBLE
|
||||
ldx #0
|
||||
beq ret
|
||||
lda #INCOMPATIBLE
|
||||
ldx #0
|
||||
beq ret
|
||||
|
||||
; device-depended stuff, tmp1=track-1, tmp2=sector
|
||||
|
||||
dio_cts1541:
|
||||
ldy tmp1
|
||||
cpy #35
|
||||
bcs _inv_data
|
||||
lda sectab_1541_l,y
|
||||
clc
|
||||
adc tmp2
|
||||
sta tmp1
|
||||
lda sectab_1541_h,y
|
||||
adc #0
|
||||
sta tmp2
|
||||
jmp dio_ctsend
|
||||
ldy tmp1
|
||||
cpy #35
|
||||
bcs _inv_data
|
||||
lda sectab_1541_l,y
|
||||
clc
|
||||
adc tmp2
|
||||
sta tmp1
|
||||
lda sectab_1541_h,y
|
||||
adc #0
|
||||
sta tmp2
|
||||
jmp dio_ctsend
|
||||
|
||||
dio_cts1571:
|
||||
lda tmp1
|
||||
cmp #70
|
||||
bcs _inv_data
|
||||
cmp #35 ; last track of one side
|
||||
bcs _sub35
|
||||
jmp dio_cts1541 ; track <=35 - same as 1541
|
||||
lda tmp1
|
||||
cmp #70
|
||||
bcs _inv_data
|
||||
cmp #35 ; last track of one side
|
||||
bcs _sub35
|
||||
jmp dio_cts1541 ; track <=35 - same as 1541
|
||||
|
||||
_sub35:
|
||||
sec
|
||||
sbc #35
|
||||
sta tmp1
|
||||
jsr dio_cts1541 ; get offset on second side of disk
|
||||
lda tmp1 ; add second side base
|
||||
clc
|
||||
adc #<683
|
||||
sta tmp1
|
||||
lda tmp2
|
||||
adc #>683
|
||||
sta tmp2
|
||||
jmp dio_ctsend
|
||||
sec
|
||||
sbc #35
|
||||
sta tmp1
|
||||
jsr dio_cts1541 ; get offset on second side of disk
|
||||
lda tmp1 ; add second side base
|
||||
clc
|
||||
adc #<683
|
||||
sta tmp1
|
||||
lda tmp2
|
||||
adc #>683
|
||||
sta tmp2
|
||||
jmp dio_ctsend
|
||||
|
||||
dio_cts1581:
|
||||
; 1581 has 80 tracks, 40 sectors each secnum=track*40+sector
|
||||
ldx #0
|
||||
stx tmp3
|
||||
stx tmp4
|
||||
lda tmp1
|
||||
beq _nomult
|
||||
cmp #80
|
||||
bcs _inv_data
|
||||
ldx #0
|
||||
stx tmp3
|
||||
stx tmp4
|
||||
lda tmp1
|
||||
beq _nomult
|
||||
cmp #80
|
||||
bcs _inv_data
|
||||
|
||||
; mul40 by Christian Groessler
|
||||
sta tmp4
|
||||
asl a
|
||||
rol tmp3
|
||||
asl a
|
||||
rol tmp3 ; val * 4
|
||||
adc tmp4
|
||||
bcc L1
|
||||
inc tmp3 ; val * 5
|
||||
L1: asl a
|
||||
rol tmp3 ; val * 10
|
||||
asl a
|
||||
rol tmp3
|
||||
asl a
|
||||
rol tmp3 ; val * 40 = AX
|
||||
ldx tmp3
|
||||
sta tmp3
|
||||
stx tmp4
|
||||
sta tmp4
|
||||
asl a
|
||||
rol tmp3
|
||||
asl a
|
||||
rol tmp3 ; val * 4
|
||||
adc tmp4
|
||||
bcc L1
|
||||
inc tmp3 ; val * 5
|
||||
L1: asl a
|
||||
rol tmp3 ; val * 10
|
||||
asl a
|
||||
rol tmp3
|
||||
asl a
|
||||
rol tmp3 ; val * 40 = AX
|
||||
ldx tmp3
|
||||
sta tmp3
|
||||
stx tmp4
|
||||
|
||||
_nomult:
|
||||
lda tmp2
|
||||
clc
|
||||
adc tmp3
|
||||
sta tmp1
|
||||
lda tmp4
|
||||
adc #0
|
||||
sta tmp2
|
||||
jmp dio_ctsend
|
||||
lda tmp2
|
||||
clc
|
||||
adc tmp3
|
||||
sta tmp1
|
||||
lda tmp4
|
||||
adc #0
|
||||
sta tmp2
|
||||
jmp dio_ctsend
|
||||
|
||||
.rodata
|
||||
|
||||
sectab_1541_l:
|
||||
.byte $00, $15, $2a, $3f, $54, $69, $7e, $93
|
||||
.byte $a8, $bd, $d2, $e7, $fc, $11, $26, $3b
|
||||
.byte $50, $65, $78, $8b, $9e, $b1, $c4, $d7
|
||||
.byte $ea, $fc, $0e, $20, $32, $44, $56, $67
|
||||
.byte $78, $89, $9a, $ab
|
||||
.byte $00, $15, $2a, $3f, $54, $69, $7e, $93
|
||||
.byte $a8, $bd, $d2, $e7, $fc, $11, $26, $3b
|
||||
.byte $50, $65, $78, $8b, $9e, $b1, $c4, $d7
|
||||
.byte $ea, $fc, $0e, $20, $32, $44, $56, $67
|
||||
.byte $78, $89, $9a, $ab
|
||||
sectab_1541_h:
|
||||
.byte $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byte $00, $00, $00, $00, $00, $01, $01, $01
|
||||
.byte $01, $01, $01, $01, $01, $01, $01, $01
|
||||
.byte $01, $01, $02, $02, $02, $02, $02, $02
|
||||
.byte $02, $02, $02, $02
|
||||
.byte $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byte $00, $00, $00, $00, $00, $01, $01, $01
|
||||
.byte $01, $01, $01, $01, $01, $01, $01, $01
|
||||
.byte $01, $01, $02, $02, $02, $02, $02, $02
|
||||
.byte $02, $02, $02, $02
|
||||
|
||||
@@ -10,74 +10,74 @@
|
||||
; dio_open sets given device as current and initializes disk
|
||||
; dio_close does nothing special
|
||||
|
||||
.export _dio_open, _dio_close
|
||||
.import __oserror, _OpenDisk
|
||||
.importzp ptr1, tmp1
|
||||
.export _dio_open, _dio_close
|
||||
.import __oserror, _OpenDisk
|
||||
.importzp ptr1, tmp1
|
||||
|
||||
.include "dio.inc"
|
||||
.include "dio.inc"
|
||||
.include "jumptab.inc"
|
||||
.include "geossym.inc"
|
||||
.include "const.inc"
|
||||
.include "const.inc"
|
||||
|
||||
.bss
|
||||
|
||||
sectsizetab:
|
||||
.res 4 * sst_size ; this is hardcoded
|
||||
.res 4 * sst_size ; this is hardcoded
|
||||
|
||||
.code
|
||||
|
||||
_dio_open:
|
||||
pha
|
||||
tax
|
||||
lda driveType,x ; check if there's a device
|
||||
beq _inv_drive
|
||||
txa
|
||||
clc
|
||||
adc #8 ; normalize devnum
|
||||
sta curDevice
|
||||
jsr SetDevice
|
||||
jsr _OpenDisk ; take care for errors there
|
||||
pha
|
||||
tax
|
||||
lda driveType,x ; check if there's a device
|
||||
beq _inv_drive
|
||||
txa
|
||||
clc
|
||||
adc #8 ; normalize devnum
|
||||
sta curDevice
|
||||
jsr SetDevice
|
||||
jsr _OpenDisk ; take care for errors there
|
||||
|
||||
pla
|
||||
tay ; drive #
|
||||
asl a ; make index from drive id
|
||||
asl a
|
||||
tax
|
||||
|
||||
lda #0
|
||||
sta sectsizetab+sst_sectsize,x
|
||||
lda #128
|
||||
sta sectsizetab+sst_flag,x ; set flag that drive is "open"
|
||||
lda #1
|
||||
sta sectsizetab+sst_sectsize+1,x
|
||||
tya
|
||||
sta sectsizetab+sst_driveno,x
|
||||
|
||||
stx tmp1
|
||||
lda #<sectsizetab
|
||||
clc
|
||||
adc tmp1
|
||||
sta tmp1
|
||||
lda #>sectsizetab
|
||||
adc #0
|
||||
tax
|
||||
lda tmp1
|
||||
pla
|
||||
tay ; drive #
|
||||
asl a ; make index from drive id
|
||||
asl a
|
||||
tax
|
||||
|
||||
lda #0
|
||||
sta sectsizetab+sst_sectsize,x
|
||||
lda #128
|
||||
sta sectsizetab+sst_flag,x ; set flag that drive is "open"
|
||||
lda #1
|
||||
sta sectsizetab+sst_sectsize+1,x
|
||||
tya
|
||||
sta sectsizetab+sst_driveno,x
|
||||
|
||||
stx tmp1
|
||||
lda #<sectsizetab
|
||||
clc
|
||||
adc tmp1
|
||||
sta tmp1
|
||||
lda #>sectsizetab
|
||||
adc #0
|
||||
tax
|
||||
lda tmp1
|
||||
|
||||
rts
|
||||
rts
|
||||
|
||||
_inv_drive:
|
||||
lda #DEV_NOT_FOUND
|
||||
sta __oserror
|
||||
lda #0
|
||||
tax
|
||||
rts
|
||||
lda #DEV_NOT_FOUND
|
||||
sta __oserror
|
||||
lda #0
|
||||
tax
|
||||
rts
|
||||
|
||||
_dio_close:
|
||||
sta ptr1
|
||||
stx ptr1+1
|
||||
lda #0
|
||||
ldy #sst_flag
|
||||
sta (ptr1),y
|
||||
sta __oserror ; success
|
||||
tax
|
||||
rts ; return no error
|
||||
sta ptr1
|
||||
stx ptr1+1
|
||||
lda #0
|
||||
ldy #sst_flag
|
||||
sta (ptr1),y
|
||||
sta __oserror ; success
|
||||
tax
|
||||
rts ; return no error
|
||||
|
||||
@@ -5,48 +5,48 @@
|
||||
; this function is used by dio_read and dio_write to fix parameters (secnum)
|
||||
; this function calls SetDevice so that more than one drive can be used at once
|
||||
|
||||
.export dio_params,dio_secnum
|
||||
.import popax,pushax,_dio_log_to_phys
|
||||
.importzp ptr1
|
||||
.export dio_params,dio_secnum
|
||||
.import popax,pushax,_dio_log_to_phys
|
||||
.importzp ptr1
|
||||
|
||||
.include "geossym.inc"
|
||||
.include "jumptab.inc"
|
||||
.include "dio.inc"
|
||||
.include "geossym.inc"
|
||||
.include "jumptab.inc"
|
||||
.include "dio.inc"
|
||||
|
||||
.bss
|
||||
|
||||
dio_secnum:
|
||||
.res 2
|
||||
.res 2
|
||||
|
||||
.code
|
||||
|
||||
dio_params:
|
||||
sta r4L
|
||||
stx r4H
|
||||
sta r4L
|
||||
stx r4H
|
||||
|
||||
jsr popax
|
||||
sta dio_secnum
|
||||
stx dio_secnum+1
|
||||
jsr popax
|
||||
sta dio_secnum
|
||||
stx dio_secnum+1
|
||||
|
||||
jsr popax ; get 3rd parameter
|
||||
pha ; save it
|
||||
txa
|
||||
pha
|
||||
jsr pushax ; put it back
|
||||
pla ; restore it
|
||||
sta ptr1+1
|
||||
pla
|
||||
sta ptr1
|
||||
ldy #sst_driveno
|
||||
lda (ptr1),y
|
||||
clc
|
||||
adc #8
|
||||
jsr SetDevice ; setup device, load driver
|
||||
jsr popax ; get 3rd parameter
|
||||
pha ; save it
|
||||
txa
|
||||
pha
|
||||
jsr pushax ; put it back
|
||||
pla ; restore it
|
||||
sta ptr1+1
|
||||
pla
|
||||
sta ptr1
|
||||
ldy #sst_driveno
|
||||
lda (ptr1),y
|
||||
clc
|
||||
adc #8
|
||||
jsr SetDevice ; setup device, load driver
|
||||
|
||||
lda #<dio_secnum
|
||||
ldx #>dio_secnum
|
||||
jsr pushax
|
||||
lda #<dio_secnum
|
||||
ldx #>dio_secnum
|
||||
jsr pushax
|
||||
|
||||
lda #<r1L
|
||||
ldx #>r1H
|
||||
jmp _dio_log_to_phys
|
||||
lda #<r1L
|
||||
ldx #>r1H
|
||||
jmp _dio_log_to_phys
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
; unsigned __fastcall__ dio_query_sectcount (dhandle_t handle);
|
||||
;
|
||||
|
||||
.export _dio_query_sectcount
|
||||
.import __oserror
|
||||
.export _dio_query_sectcount
|
||||
.import __oserror
|
||||
|
||||
_dio_query_sectcount:
|
||||
lda #0
|
||||
sta __oserror
|
||||
lda #<683
|
||||
ldx #>683
|
||||
rts
|
||||
lda #0
|
||||
sta __oserror
|
||||
lda #<683
|
||||
ldx #>683
|
||||
rts
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
; unsigned __fastcall__ dio_query_sectsize (dhandle_t handle);
|
||||
;
|
||||
|
||||
.export _dio_query_sectsize
|
||||
.import __oserror
|
||||
.export _dio_query_sectsize
|
||||
.import __oserror
|
||||
|
||||
_dio_query_sectsize:
|
||||
lda #<256
|
||||
ldx #>256
|
||||
sta __oserror
|
||||
rts
|
||||
lda #<256
|
||||
ldx #>256
|
||||
sta __oserror
|
||||
rts
|
||||
|
||||
@@ -7,15 +7,15 @@
|
||||
; unsigned char __fastcall__ dio_read (dhandle_t handle, unsigned sect_num, void *buffer);
|
||||
;
|
||||
|
||||
.export _dio_read
|
||||
.import dio_params, __oserror
|
||||
.export _dio_read
|
||||
.import dio_params, __oserror
|
||||
|
||||
.include "geossym.inc"
|
||||
.include "jumptab.inc"
|
||||
.include "geossym.inc"
|
||||
.include "jumptab.inc"
|
||||
|
||||
_dio_read:
|
||||
jsr dio_params
|
||||
jsr ReadBlock
|
||||
stx __oserror
|
||||
txa
|
||||
rts
|
||||
jsr dio_params
|
||||
jsr ReadBlock
|
||||
stx __oserror
|
||||
txa
|
||||
rts
|
||||
|
||||
@@ -3,175 +3,175 @@
|
||||
; 2.7.2001
|
||||
;
|
||||
; unsigned char __fastcall__ dio_log_to_phys (dhandle_t handle,
|
||||
; unsigned *sectnum, /* input */
|
||||
; dio_phys_pos *physpos); /* output */
|
||||
; unsigned *sectnum, /* input */
|
||||
; dio_phys_pos *physpos); /* output */
|
||||
;
|
||||
|
||||
.export _dio_log_to_phys
|
||||
.importzp ptr1,ptr2,ptr3,tmp1,tmp2
|
||||
.import popax,__oserror
|
||||
.import sectab_1541_l, sectab_1541_h
|
||||
.export _dio_log_to_phys
|
||||
.importzp ptr1,ptr2,ptr3,tmp1,tmp2
|
||||
.import popax,__oserror
|
||||
.import sectab_1541_l, sectab_1541_h
|
||||
|
||||
.include "dio.inc"
|
||||
.include "geossym.inc"
|
||||
.include "const.inc"
|
||||
.include "dio.inc"
|
||||
.include "geossym.inc"
|
||||
.include "const.inc"
|
||||
|
||||
_dio_log_to_phys:
|
||||
; check device type
|
||||
sta ptr1
|
||||
stx ptr1+1 ; pointer to result (struct dio_phys_pos)
|
||||
|
||||
jsr popax
|
||||
sta ptr2
|
||||
stx ptr2+1 ; pointer to input structure (pointer to int)
|
||||
|
||||
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
|
||||
sta ptr1
|
||||
stx ptr1+1 ; pointer to result (struct dio_phys_pos)
|
||||
|
||||
jsr popax
|
||||
sta ptr2
|
||||
stx ptr2+1 ; pointer to input structure (pointer to int)
|
||||
|
||||
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
|
||||
|
||||
; fill in all we have
|
||||
ldy #diopp_head
|
||||
lda #0 ; head 0
|
||||
sta (ptr1),y
|
||||
ldy #diopp_track+1
|
||||
sta (ptr1),y ; track <256
|
||||
ldy #diopp_sector+1
|
||||
sta (ptr1),y ; sector <256
|
||||
|
||||
ldy #0
|
||||
lda (ptr2),y
|
||||
sta tmp1
|
||||
iny
|
||||
lda (ptr2),y
|
||||
sta tmp2
|
||||
ldy #diopp_head
|
||||
lda #0 ; head 0
|
||||
sta (ptr1),y
|
||||
ldy #diopp_track+1
|
||||
sta (ptr1),y ; track <256
|
||||
ldy #diopp_sector+1
|
||||
sta (ptr1),y ; sector <256
|
||||
|
||||
ldy #0
|
||||
lda (ptr2),y
|
||||
sta tmp1
|
||||
iny
|
||||
lda (ptr2),y
|
||||
sta tmp2
|
||||
|
||||
; get drive info
|
||||
ldy #sst_driveno
|
||||
lda (ptr3),y
|
||||
tay
|
||||
lda driveType,y
|
||||
and #%00000011 ; this is for RamDrive compatibility
|
||||
cmp #DRV_1541
|
||||
beq dio_stc1541
|
||||
cmp #DRV_1571
|
||||
beq dio_stc1571
|
||||
cmp #DRV_1581
|
||||
beq dio_stc1581
|
||||
|
||||
lda #DEV_NOT_FOUND ; unknown device
|
||||
ldx #0
|
||||
beq _ret
|
||||
ldy #sst_driveno
|
||||
lda (ptr3),y
|
||||
tay
|
||||
lda driveType,y
|
||||
and #%00000011 ; this is for RamDrive compatibility
|
||||
cmp #DRV_1541
|
||||
beq dio_stc1541
|
||||
cmp #DRV_1571
|
||||
beq dio_stc1571
|
||||
cmp #DRV_1581
|
||||
beq dio_stc1581
|
||||
|
||||
lda #DEV_NOT_FOUND ; unknown device
|
||||
ldx #0
|
||||
beq _ret
|
||||
|
||||
dio_stcend:
|
||||
ldy #diopp_track
|
||||
lda tmp1
|
||||
sta (ptr1),y
|
||||
ldy #diopp_sector
|
||||
lda tmp2
|
||||
sta (ptr1),y
|
||||
|
||||
ldx #0
|
||||
txa
|
||||
_ret:
|
||||
sta __oserror
|
||||
rts ; return success
|
||||
ldy #diopp_track
|
||||
lda tmp1
|
||||
sta (ptr1),y
|
||||
ldy #diopp_sector
|
||||
lda tmp2
|
||||
sta (ptr1),y
|
||||
|
||||
ldx #0
|
||||
txa
|
||||
_ret:
|
||||
sta __oserror
|
||||
rts ; return success
|
||||
|
||||
; errors
|
||||
_inv_data:
|
||||
lda #INV_TRACK
|
||||
.byte $2c
|
||||
lda #INV_TRACK
|
||||
.byte $2c
|
||||
_inv_hand:
|
||||
lda #INCOMPATIBLE
|
||||
ldx #0
|
||||
beq _ret
|
||||
lda #INCOMPATIBLE
|
||||
ldx #0
|
||||
beq _ret
|
||||
|
||||
dio_stc1541:
|
||||
; if 1541:
|
||||
; - compare with table to find track
|
||||
; - subtract and find sector
|
||||
|
||||
ldx #0 ; index=(track-1)
|
||||
ldx #0 ; index=(track-1)
|
||||
_loop41:
|
||||
lda tmp2
|
||||
cmp sectab_1541_h+1,x
|
||||
bne _nxt
|
||||
lda tmp1
|
||||
cmp sectab_1541_l+1,x
|
||||
bcc _found
|
||||
_nxt: inx
|
||||
cpx #35
|
||||
bne _loop41
|
||||
beq _inv_data
|
||||
|
||||
_found:
|
||||
lda tmp1
|
||||
sec
|
||||
sbc sectab_1541_l,x
|
||||
sta tmp2
|
||||
lda tmp2
|
||||
cmp sectab_1541_h+1,x
|
||||
bne _nxt
|
||||
lda tmp1
|
||||
cmp sectab_1541_l+1,x
|
||||
bcc _found
|
||||
_nxt: inx
|
||||
cpx #35
|
||||
bne _loop41
|
||||
beq _inv_data
|
||||
|
||||
_found:
|
||||
lda tmp1
|
||||
sec
|
||||
sbc sectab_1541_l,x
|
||||
sta tmp2
|
||||
_fndend:
|
||||
inx
|
||||
stx tmp1
|
||||
jmp dio_stcend
|
||||
inx
|
||||
stx tmp1
|
||||
jmp dio_stcend
|
||||
|
||||
dio_stc1571:
|
||||
; if 1571:
|
||||
; - check size, if too big - subtract and add 35 to track
|
||||
; - fall down to 1541
|
||||
lda tmp2
|
||||
cmp #>683
|
||||
bne _cnt71
|
||||
lda tmp1
|
||||
cmp #<683
|
||||
bcc dio_stc1541
|
||||
|
||||
_cnt71:
|
||||
lda tmp1
|
||||
sec
|
||||
sbc #<683
|
||||
sta tmp1
|
||||
lda tmp2
|
||||
sbc #>683
|
||||
sta tmp2
|
||||
jsr dio_stc1541 ; will fall through here
|
||||
|
||||
ldy #diopp_track
|
||||
lda (ptr1),y
|
||||
clc
|
||||
adc #35
|
||||
sta (ptr1),y
|
||||
lda #0
|
||||
beq _ret
|
||||
lda tmp2
|
||||
cmp #>683
|
||||
bne _cnt71
|
||||
lda tmp1
|
||||
cmp #<683
|
||||
bcc dio_stc1541
|
||||
|
||||
_cnt71:
|
||||
lda tmp1
|
||||
sec
|
||||
sbc #<683
|
||||
sta tmp1
|
||||
lda tmp2
|
||||
sbc #>683
|
||||
sta tmp2
|
||||
jsr dio_stc1541 ; will fall through here
|
||||
|
||||
ldy #diopp_track
|
||||
lda (ptr1),y
|
||||
clc
|
||||
adc #35
|
||||
sta (ptr1),y
|
||||
lda #0
|
||||
beq _ret
|
||||
|
||||
; if 1581:
|
||||
; - subtract 40 in loop (at most 80 times) to find track
|
||||
; - the remainder is sector
|
||||
dio_stc1581:
|
||||
ldx #0 ; index=(track-1)
|
||||
ldx #0 ; index=(track-1)
|
||||
_loop81:
|
||||
lda tmp2
|
||||
bne _sub81
|
||||
lda tmp1
|
||||
cmp #40
|
||||
bcc _got81
|
||||
_sub81: lda tmp1
|
||||
sec
|
||||
sbc #40
|
||||
sta tmp1
|
||||
lda tmp2
|
||||
sbc #0
|
||||
sta tmp2
|
||||
inx
|
||||
cpx #81
|
||||
bne _loop81
|
||||
beq _inv_data
|
||||
|
||||
_got81: lda tmp1
|
||||
sta tmp2
|
||||
inx
|
||||
stx tmp1
|
||||
jmp dio_stcend
|
||||
lda tmp2
|
||||
bne _sub81
|
||||
lda tmp1
|
||||
cmp #40
|
||||
bcc _got81
|
||||
_sub81: lda tmp1
|
||||
sec
|
||||
sbc #40
|
||||
sta tmp1
|
||||
lda tmp2
|
||||
sbc #0
|
||||
sta tmp2
|
||||
inx
|
||||
cpx #81
|
||||
bne _loop81
|
||||
beq _inv_data
|
||||
|
||||
_got81: lda tmp1
|
||||
sta tmp2
|
||||
inx
|
||||
stx tmp1
|
||||
jmp dio_stcend
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
; unsigned char __fastcall__ dio_write (dhandle_t handle, unsigned sect_num, const void *buffer);
|
||||
;
|
||||
|
||||
.export _dio_write
|
||||
.import dio_params, setoserror
|
||||
.export _dio_write
|
||||
.import dio_params, setoserror
|
||||
|
||||
.include "geossym.inc"
|
||||
.include "jumptab.inc"
|
||||
.include "geossym.inc"
|
||||
.include "jumptab.inc"
|
||||
|
||||
_dio_write:
|
||||
jsr dio_params
|
||||
jsr WriteBlock
|
||||
jmp setoserror
|
||||
jsr dio_params
|
||||
jsr WriteBlock
|
||||
jmp setoserror
|
||||
|
||||
@@ -7,15 +7,15 @@
|
||||
; unsigned char __fastcall__ dio_write_verify (dhandle_t handle, unsigned sect_num, const void *buffer);
|
||||
;
|
||||
|
||||
.export _dio_write_verify
|
||||
.import dio_params, __oserror
|
||||
.export _dio_write_verify
|
||||
.import dio_params, __oserror
|
||||
|
||||
.include "geossym.inc"
|
||||
.include "jumptab.inc"
|
||||
.include "geossym.inc"
|
||||
.include "jumptab.inc"
|
||||
|
||||
_dio_write_verify:
|
||||
jsr dio_params
|
||||
jsr VerWriteBlock
|
||||
stx __oserror
|
||||
txa
|
||||
rts
|
||||
jsr dio_params
|
||||
jsr VerWriteBlock
|
||||
stx __oserror
|
||||
txa
|
||||
rts
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
|
||||
; void EnterTurbo (void);
|
||||
|
||||
.export _EnterTurbo
|
||||
.export _EnterTurbo
|
||||
|
||||
.include "jumptab.inc"
|
||||
|
||||
_EnterTurbo = EnterTurbo
|
||||
.include "jumptab.inc"
|
||||
|
||||
_EnterTurbo = EnterTurbo
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
|
||||
; void ExitTurbo (void);
|
||||
|
||||
.export _ExitTurbo
|
||||
.export _ExitTurbo
|
||||
|
||||
.include "jumptab.inc"
|
||||
|
||||
_ExitTurbo = ExitTurbo
|
||||
.include "jumptab.inc"
|
||||
|
||||
_ExitTurbo = ExitTurbo
|
||||
|
||||
@@ -6,18 +6,18 @@
|
||||
; char FindBAMBit (struct tr_se *TS);
|
||||
; (might be called inUSE (if (!inUSE(block))))
|
||||
|
||||
.export _FindBAMBit
|
||||
.import gettrse
|
||||
.import return0, return1
|
||||
.export _FindBAMBit
|
||||
.import gettrse
|
||||
.import return0, return1
|
||||
|
||||
.include "jumptab.inc"
|
||||
.include "geossym.inc"
|
||||
|
||||
.include "jumptab.inc"
|
||||
.include "geossym.inc"
|
||||
|
||||
_FindBAMBit:
|
||||
jsr gettrse
|
||||
sta r6L
|
||||
stx r6H
|
||||
jsr FindBAMBit
|
||||
bne inUse
|
||||
jmp return0
|
||||
inUse: jmp return1
|
||||
jsr gettrse
|
||||
sta r6L
|
||||
stx r6H
|
||||
jsr FindBAMBit
|
||||
bne inUse
|
||||
jmp return0
|
||||
inUse: jmp return1
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
|
||||
; char NewDisk (void);
|
||||
|
||||
.export _NewDisk
|
||||
.import setoserror
|
||||
.export _NewDisk
|
||||
.import setoserror
|
||||
|
||||
.include "jumptab.inc"
|
||||
|
||||
.include "jumptab.inc"
|
||||
|
||||
_NewDisk:
|
||||
jsr NewDisk
|
||||
jmp setoserror
|
||||
jsr NewDisk
|
||||
jmp setoserror
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
|
||||
; void PurgeTurbo (void);
|
||||
|
||||
.export _PurgeTurbo
|
||||
.export _PurgeTurbo
|
||||
|
||||
.include "jumptab.inc"
|
||||
|
||||
_PurgeTurbo = PurgeTurbo
|
||||
.include "jumptab.inc"
|
||||
|
||||
_PurgeTurbo = PurgeTurbo
|
||||
|
||||
@@ -5,19 +5,19 @@
|
||||
|
||||
; char ReadBlock (struct tr_se myTS, char *buffer);
|
||||
|
||||
.export _ReadBlock
|
||||
.import popax, setoserror
|
||||
.import gettrse
|
||||
.export _ReadBlock
|
||||
.import popax, setoserror
|
||||
.import gettrse
|
||||
|
||||
.include "jumptab.inc"
|
||||
.include "geossym.inc"
|
||||
|
||||
.include "jumptab.inc"
|
||||
.include "geossym.inc"
|
||||
|
||||
_ReadBlock:
|
||||
sta r4L
|
||||
stx r4H
|
||||
jsr popax
|
||||
jsr gettrse
|
||||
sta r1L
|
||||
stx r1H
|
||||
jsr ReadBlock
|
||||
jmp setoserror
|
||||
sta r4L
|
||||
stx r4H
|
||||
jsr popax
|
||||
jsr gettrse
|
||||
sta r1L
|
||||
stx r1H
|
||||
jsr ReadBlock
|
||||
jmp setoserror
|
||||
|
||||
@@ -5,16 +5,16 @@
|
||||
|
||||
; char ReadBuff (struct tr_se);
|
||||
|
||||
.export _ReadBuff
|
||||
.import setoserror
|
||||
.import gettrse
|
||||
.export _ReadBuff
|
||||
.import setoserror
|
||||
.import gettrse
|
||||
|
||||
.include "diskdrv.inc"
|
||||
.include "geossym.inc"
|
||||
|
||||
.include "diskdrv.inc"
|
||||
.include "geossym.inc"
|
||||
|
||||
_ReadBuff:
|
||||
jsr gettrse
|
||||
sta r1L
|
||||
stx r1H
|
||||
jsr ReadBuff
|
||||
jmp setoserror
|
||||
jsr gettrse
|
||||
sta r1L
|
||||
stx r1H
|
||||
jsr ReadBuff
|
||||
jmp setoserror
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
|
||||
; char SetGEOSDisk (void);
|
||||
|
||||
.export _SetGEOSDisk
|
||||
.import setoserror
|
||||
.export _SetGEOSDisk
|
||||
.import setoserror
|
||||
|
||||
.include "jumptab.inc"
|
||||
.include "jumptab.inc"
|
||||
|
||||
_SetGEOSDisk:
|
||||
jsr SetGEOSDisk
|
||||
jmp setoserror
|
||||
jsr SetGEOSDisk
|
||||
jmp setoserror
|
||||
|
||||
@@ -5,19 +5,19 @@
|
||||
|
||||
; char VerWriteBlock (struct tr_se *myTS, char *buffer);
|
||||
|
||||
.export _VerWriteBlock
|
||||
.import popax, setoserror
|
||||
.import gettrse
|
||||
.export _VerWriteBlock
|
||||
.import popax, setoserror
|
||||
.import gettrse
|
||||
|
||||
.include "jumptab.inc"
|
||||
.include "geossym.inc"
|
||||
|
||||
.include "jumptab.inc"
|
||||
.include "geossym.inc"
|
||||
|
||||
_VerWriteBlock:
|
||||
sta r4L
|
||||
stx r4H
|
||||
jsr popax
|
||||
jsr gettrse
|
||||
sta r1L
|
||||
stx r1H
|
||||
jsr VerWriteBlock
|
||||
jmp setoserror
|
||||
sta r4L
|
||||
stx r4H
|
||||
jsr popax
|
||||
jsr gettrse
|
||||
sta r1L
|
||||
stx r1H
|
||||
jsr VerWriteBlock
|
||||
jmp setoserror
|
||||
|
||||
@@ -5,19 +5,19 @@
|
||||
|
||||
; char WriteBlock (struct tr_se *myTS, char *buffer);
|
||||
|
||||
.export _WriteBlock
|
||||
.import popax, setoserror
|
||||
.import gettrse
|
||||
.export _WriteBlock
|
||||
.import popax, setoserror
|
||||
.import gettrse
|
||||
|
||||
.include "jumptab.inc"
|
||||
.include "geossym.inc"
|
||||
|
||||
.include "jumptab.inc"
|
||||
.include "geossym.inc"
|
||||
|
||||
_WriteBlock:
|
||||
sta r4L
|
||||
stx r4H
|
||||
jsr popax
|
||||
jsr gettrse
|
||||
sta r1L
|
||||
stx r1H
|
||||
jsr WriteBlock
|
||||
jmp setoserror
|
||||
sta r4L
|
||||
stx r4H
|
||||
jsr popax
|
||||
jsr gettrse
|
||||
sta r1L
|
||||
stx r1H
|
||||
jsr WriteBlock
|
||||
jmp setoserror
|
||||
|
||||
@@ -5,16 +5,16 @@
|
||||
|
||||
; char WriteBuff (struct tr_se*);
|
||||
|
||||
.export _WriteBuff
|
||||
.import setoserror
|
||||
.import gettrse
|
||||
.export _WriteBuff
|
||||
.import setoserror
|
||||
.import gettrse
|
||||
|
||||
.include "diskdrv.inc"
|
||||
.include "geossym.inc"
|
||||
|
||||
.include "diskdrv.inc"
|
||||
.include "geossym.inc"
|
||||
|
||||
_WriteBuff:
|
||||
jsr gettrse
|
||||
sta r1L
|
||||
stx r1H
|
||||
jsr WriteBuff
|
||||
jmp setoserror
|
||||
jsr gettrse
|
||||
sta r1L
|
||||
stx r1H
|
||||
jsr WriteBuff
|
||||
jmp setoserror
|
||||
|
||||
Reference in New Issue
Block a user