Mercurial > hg > Members > kono > nitros9-code
diff lib/alib/ftrans.a @ 2474:7d70b7e1cb21
Moved net and alib files into here
author | boisy |
---|---|
date | Tue, 30 Mar 2010 02:44:42 +0000 |
parents | |
children | aaba193af04f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/alib/ftrans.a Tue Mar 30 02:44:42 2010 +0000 @@ -0,0 +1,75 @@ +*************************************** + +* Subroutine to transfer data for one file to another + +* OTHER MODULES NEEDED: none + +* ENTRY: A=source path +* B=destination path +* Y=number of bytes to transfer +* X=buffer for this routine +* U=buffer size + + +* EXIT: CC carry set if error (from I$Read or I$Write) +* B error code if any + + nam File data transfer + ttl Assembler Library Module + + csect + +* this sets up a stack frame used for variable references + +count rmb 2 number of bytes to transfer (2nd Y) +inpath rmb 1 source file (A) +Breg rmb 1 copy of B register +outpath equ Breg dest file +buffer rmb 2 buffer memory (X) + rmb 2 copy of Y +bufsize rmb 2 buffer size (U) + + endsect + + psect FTRANS,0,0,0,0,0 + +FTRANS: + pshs a,b,x,y,u + pshs y + +loop + ldy count,s bytes left to send + beq exit all done? + + lda inpath,s source file + ldx buffer,s buffer area + cmpy bufsize,s is remainder > buffer size + blo get no, get all of remainder + ldy bufsize,s use buffer size + +get + os9 I$Read get data + bcs error + lda outpath,s + os9 I$Write + bcs error + + pshs y number of bytes got/sent + ldd count+2,s adjust count remaining + subd ,s++ + std count,s + bra loop + +exit + clra no error + bra exit2 + +error + coma signal error + stb Breg,s set B + +exit2 + puls y + puls a,b,x,y,u,pc + + endsect