home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d5xx / d510 / atcopy.lha / ATCopy / Trans.asm < prev   
Assembly Source File  |  1991-06-29  |  3KB  |  222 lines

  1.     xref    _timeout
  2.     xref    _Chk_Abort
  3.     xref    _fh
  4.     xref    _getc
  5.     xref    _Konvert
  6.     xref    _fread
  7.     xref    _Flag
  8.     xref    _feof
  9.     xref    _tabelle
  10.  
  11. ;int transfer(UBYTE * data, char Option)
  12. ;{
  13.     xdef    _transfer
  14. _transfer:
  15.     link    a5,#.31
  16.     movem.l    a2-a3,-(a7)
  17.     lea.l    _tabelle,a2
  18.     sub.l    #128,a2
  19. ;    static       anf = 0;
  20.     dseg
  21.     ds    0
  22. .32
  23.     dc.l    $0000
  24.     cseg
  25. ;    register int i,c;
  26. ;    int          flag;
  27. ;
  28. ;    timeout();
  29. ;   anf .32 "l"
  30. ;   i -4 "l"
  31. ;   c -8 "l"
  32. ;   flag -12 "l"
  33. ;   data 8 "*C"
  34. ;   Option 12 "c"
  35.     move.l    d3,-4(a5)
  36.     jsr    _timeout
  37. ;    Chk_Abort();
  38.     jsr    _Chk_Abort
  39. ;    *data++ = 0;
  40.     move.l    8(a5),a3
  41.     clr.b    (a3)+
  42. ;    if (Option != 'B')
  43. ;    {
  44.     cmp.b    #66,12(a5)
  45.     beq    .10029
  46. ;        if (anf == 1)
  47. ;        {
  48.     cmp.l    #1,.32
  49.     bne    .10030
  50. ;            *data++ = 10;
  51.     move.b    #10,(a3)+
  52. ;        }
  53. ;        for(i = anf; i < 128; i++)
  54. .10030
  55.     move.l    .32,d3
  56.     bra    .10032
  57. .10031
  58.     addq.l    #1,d3
  59. .10032
  60.     cmp.l    #128,d3
  61.     bge    .10033
  62. ;        {
  63. ;            c = getc(fh);
  64.     move.l    _fh,-(sp)
  65.     jsr    _getc
  66.     add.w    #4,sp
  67.     move.l    d0,-8(a5)
  68. ;            if (c == EOF)
  69. ;            {
  70.     cmp.l    #-1,-8(a5)
  71.     bne    .10034
  72. ;                break;
  73.     bra    .10033
  74. ;            }
  75. ;            *data++ = Konvert(c,Option,(int *) &flag);
  76. .10034
  77.     pea    -12(a5)
  78.     move.b    12(a5),-(sp)
  79.     move.l    -8(a5),-(sp)
  80.     jsr    _Konvert
  81.     lea    10(sp),sp
  82.     move.b    d0,(a3)+
  83. ;            if (flag)
  84. ;            {
  85.     tst.l    -12(a5)
  86.     beq    .10035
  87. ;                *data++ = 10;
  88.     move.b    #10,(a3)+
  89. ;                i++;
  90.     addq.l    #1,d3
  91. ;            }
  92. ;        }
  93. .10035
  94.     bra    .10031
  95. .10033
  96. ;    }
  97. ;    else
  98.     bra    .10036
  99. .10029
  100. ;    {
  101. ;        i = fread((void *) data,sizeof(char),128,fh);
  102.     move.l    _fh,-(sp)
  103.     pea    128
  104.     pea    1
  105.     move.l    a3,-(sp)
  106.     jsr    _fread
  107.     lea    16(sp),sp
  108.     move.l    d0,d3
  109. ;        data += i;
  110.     add.l    d3,a3
  111. ;    }
  112. .10036
  113. ;    data -= i;
  114.     sub.l    d3,a3
  115. ;    data--;
  116.     subq.l    #1,a3
  117. ;    *data = (i < 129) ? i : 128;
  118.     cmp.l    #129,d3
  119.     bge    .33
  120.     move.l    d3,d0
  121.     bra    .34
  122. .33
  123.     move.l    #128,d0
  124. .34
  125.     move.b    d0,(a3)
  126.     move.l    _Flag,a3
  127. ;    if (i < 128)
  128. ;    {
  129.     cmp.l    #128,d3
  130.     bge    .10037
  131. ;        *Flag = LASTDATA;
  132.     move.b    #48,(a3)
  133. ;        if (*Flag != LASTDATA && *Flag != 0)
  134. ;        {
  135.     cmp.b    #48,(a3)
  136.     beq    .10038
  137.     tst.b    (a3)
  138.     beq    .10038
  139. ;            *Flag = EMERGENCY;
  140.     move.b    #80,(a3)
  141. ;        }
  142. ;        return(FALSE);
  143. .10038
  144.     move.l    #0,d0
  145. .35
  146.     move.l    -4(a5),d3
  147.     movem.l    (a7)+,a2-a3
  148.     unlk    a5
  149.     rts
  150. ;    }
  151. ;    else if (i == 129)
  152. .10037
  153. ;    {
  154.     cmp.l    #129,d3
  155.     bne    .10039
  156. ;        *Flag = NEWDATA;
  157.     move.b    #32,(a3)
  158. ;        if (*Flag != NEWDATA && *Flag != 0)
  159. ;        {
  160.     cmp.b    #32,(a3)
  161.     beq    .10040
  162.     tst.b    (a3)
  163.     beq    .10040
  164. ;            *Flag = EMERGENCY;
  165.     move.b    #80,(a3)
  166. ;        }
  167. ;        anf = 1;
  168. .10040
  169.     move.l    #1,.32
  170. ;        return(TRUE);
  171.     move.l    #1,d0
  172.     bra    .35
  173. ;    }
  174. ;    else
  175. .10039
  176. ;    {
  177. ;        anf = 0;
  178.     clr.l    .32
  179. ;        if (feof(fh))
  180. ;        {
  181.     move.l    _fh,-(sp)
  182.     jsr    _feof
  183.     addq.w    #4,sp
  184.     tst.l    d0
  185.     beq    .10041
  186. ;            *Flag = LASTDATA;
  187.     move.b    #48,(a3)
  188. ;            if (*Flag != LASTDATA && *Flag != 0)
  189. ;                *Flag = EMERGENCY;
  190.     cmp.b    #48,(a3)
  191.     beq    .10042
  192.     tst.b    (a3)
  193.     beq    .10042
  194.     move.b    #80,(a3)
  195. ;            return(FALSE);
  196. .10042
  197.     moveq    #0,d0
  198.     bra    .35
  199. ;        }
  200. ;        *Flag = NEWDATA;
  201. .10041
  202.     move.b    #32,(a3)
  203. ;        if (*Flag != NEWDATA && *Flag != 0)
  204. ;            *Flag = EMERGENCY;
  205.     cmp.b    #32,(a3)
  206.     beq    .10043
  207.     tst.b    (a3)
  208.     beq    .10043
  209.     move.b    #80,(a3)
  210. ;        return(TRUE);
  211. .10043
  212.     moveq    #1,d0
  213.     bra    .35
  214. ;    }
  215. ;    return(FALSE);
  216.     moveq    #0,d0
  217.     bra    .35
  218. ;}
  219. .30
  220. .31    equ    -12
  221. ;
  222.