diff lib/alib/ftrans.as @ 2783:03f26e88b809 lwtools-port

Renamed files and setup for lwasm/lwlink work
author Boisy Pitre <boisy.pitre@nuance.com>
date Sat, 26 Jan 2013 17:18:24 -0600
parents lib/alib/ftrans.a@aaba193af04f
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/alib/ftrans.as	Sat Jan 26 17:18:24 2013 -0600
@@ -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
+
+ section .data
+
+* 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
+
+ section .text
+
+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