home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_disks
/
500-599
/
ff510.lzh
/
ATCopy
/
Trans.asm
< prev
Wrap
Assembly Source File
|
1991-06-29
|
3KB
|
222 lines
xref _timeout
xref _Chk_Abort
xref _fh
xref _getc
xref _Konvert
xref _fread
xref _Flag
xref _feof
xref _tabelle
;int transfer(UBYTE * data, char Option)
;{
xdef _transfer
_transfer:
link a5,#.31
movem.l a2-a3,-(a7)
lea.l _tabelle,a2
sub.l #128,a2
; static anf = 0;
dseg
ds 0
.32
dc.l $0000
cseg
; register int i,c;
; int flag;
;
; timeout();
; anf .32 "l"
; i -4 "l"
; c -8 "l"
; flag -12 "l"
; data 8 "*C"
; Option 12 "c"
move.l d3,-4(a5)
jsr _timeout
; Chk_Abort();
jsr _Chk_Abort
; *data++ = 0;
move.l 8(a5),a3
clr.b (a3)+
; if (Option != 'B')
; {
cmp.b #66,12(a5)
beq .10029
; if (anf == 1)
; {
cmp.l #1,.32
bne .10030
; *data++ = 10;
move.b #10,(a3)+
; }
; for(i = anf; i < 128; i++)
.10030
move.l .32,d3
bra .10032
.10031
addq.l #1,d3
.10032
cmp.l #128,d3
bge .10033
; {
; c = getc(fh);
move.l _fh,-(sp)
jsr _getc
add.w #4,sp
move.l d0,-8(a5)
; if (c == EOF)
; {
cmp.l #-1,-8(a5)
bne .10034
; break;
bra .10033
; }
; *data++ = Konvert(c,Option,(int *) &flag);
.10034
pea -12(a5)
move.b 12(a5),-(sp)
move.l -8(a5),-(sp)
jsr _Konvert
lea 10(sp),sp
move.b d0,(a3)+
; if (flag)
; {
tst.l -12(a5)
beq .10035
; *data++ = 10;
move.b #10,(a3)+
; i++;
addq.l #1,d3
; }
; }
.10035
bra .10031
.10033
; }
; else
bra .10036
.10029
; {
; i = fread((void *) data,sizeof(char),128,fh);
move.l _fh,-(sp)
pea 128
pea 1
move.l a3,-(sp)
jsr _fread
lea 16(sp),sp
move.l d0,d3
; data += i;
add.l d3,a3
; }
.10036
; data -= i;
sub.l d3,a3
; data--;
subq.l #1,a3
; *data = (i < 129) ? i : 128;
cmp.l #129,d3
bge .33
move.l d3,d0
bra .34
.33
move.l #128,d0
.34
move.b d0,(a3)
move.l _Flag,a3
; if (i < 128)
; {
cmp.l #128,d3
bge .10037
; *Flag = LASTDATA;
move.b #48,(a3)
; if (*Flag != LASTDATA && *Flag != 0)
; {
cmp.b #48,(a3)
beq .10038
tst.b (a3)
beq .10038
; *Flag = EMERGENCY;
move.b #80,(a3)
; }
; return(FALSE);
.10038
move.l #0,d0
.35
move.l -4(a5),d3
movem.l (a7)+,a2-a3
unlk a5
rts
; }
; else if (i == 129)
.10037
; {
cmp.l #129,d3
bne .10039
; *Flag = NEWDATA;
move.b #32,(a3)
; if (*Flag != NEWDATA && *Flag != 0)
; {
cmp.b #32,(a3)
beq .10040
tst.b (a3)
beq .10040
; *Flag = EMERGENCY;
move.b #80,(a3)
; }
; anf = 1;
.10040
move.l #1,.32
; return(TRUE);
move.l #1,d0
bra .35
; }
; else
.10039
; {
; anf = 0;
clr.l .32
; if (feof(fh))
; {
move.l _fh,-(sp)
jsr _feof
addq.w #4,sp
tst.l d0
beq .10041
; *Flag = LASTDATA;
move.b #48,(a3)
; if (*Flag != LASTDATA && *Flag != 0)
; *Flag = EMERGENCY;
cmp.b #48,(a3)
beq .10042
tst.b (a3)
beq .10042
move.b #80,(a3)
; return(FALSE);
.10042
moveq #0,d0
bra .35
; }
; *Flag = NEWDATA;
.10041
move.b #32,(a3)
; if (*Flag != NEWDATA && *Flag != 0)
; *Flag = EMERGENCY;
cmp.b #32,(a3)
beq .10043
tst.b (a3)
beq .10043
move.b #80,(a3)
; return(TRUE);
.10043
moveq #1,d0
bra .35
; }
; return(FALSE);
moveq #0,d0
bra .35
;}
.30
.31 equ -12
;