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