comparison 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
comparison
equal deleted inserted replaced
2782:aaba193af04f 2783:03f26e88b809
1 ***************************************
2
3 * Subroutine to transfer data for one file to another
4
5 * OTHER MODULES NEEDED: none
6
7 * ENTRY: A=source path
8 * B=destination path
9 * Y=number of bytes to transfer
10 * X=buffer for this routine
11 * U=buffer size
12
13
14 * EXIT: CC carry set if error (from I$Read or I$Write)
15 * B error code if any
16
17 nam File data transfer
18 ttl Assembler Library Module
19
20 section .data
21
22 * this sets up a stack frame used for variable references
23
24 count rmb 2 number of bytes to transfer (2nd Y)
25 inpath rmb 1 source file (A)
26 Breg rmb 1 copy of B register
27 outpath equ Breg dest file
28 buffer rmb 2 buffer memory (X)
29 rmb 2 copy of Y
30 bufsize rmb 2 buffer size (U)
31
32 endsect
33
34 section .text
35
36 FTRANS:
37 pshs a,b,x,y,u
38 pshs y
39
40 loop
41 ldy count,s bytes left to send
42 beq exit all done?
43
44 lda inpath,s source file
45 ldx buffer,s buffer area
46 cmpy bufsize,s is remainder > buffer size
47 blo get no, get all of remainder
48 ldy bufsize,s use buffer size
49
50 get
51 os9 I$Read get data
52 bcs error
53 lda outpath,s
54 os9 I$Write
55 bcs error
56
57 pshs y number of bytes got/sent
58 ldd count+2,s adjust count remaining
59 subd ,s++
60 std count,s
61 bra loop
62
63 exit
64 clra no error
65 bra exit2
66
67 error
68 coma signal error
69 stb Breg,s set B
70
71 exit2
72 puls y
73 puls a,b,x,y,u,pc
74
75 endsect