Mercurial > hg > Members > kono > nitros9-code
annotate lib/alib/ftrans.as @ 3220:9ccec98c9897
Updated IDE Driver makefile so it will have place holders for
dsk, dskclean, and dskcopy so that make does not error out when
chaining into the driver tree to build disk images where applicable.
author | David Ladd <drencor-xeen@users.sourceforge.net> |
---|---|
date | Wed, 20 Dec 2017 16:10:50 -0600 |
parents | 03f26e88b809 |
children |
rev | line source |
---|---|
2474 | 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 | |
2782
aaba193af04f
Updated code to use lwasm/lwlink
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2474
diff
changeset
|
20 section .data |
2474 | 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 | |
2782
aaba193af04f
Updated code to use lwasm/lwlink
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2474
diff
changeset
|
34 section .text |
2474 | 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 |