|
|
1.1 root 1: / $Header: /usr/src/sys/ldrv/RCS/sfmem.s,v 1.1 88/03/24 16:31:08 src Exp $
2: /
3: / The information contained herein is a trade secret of INETCO
4: / Systems, and is confidential information. It is provided under
5: / a license agreement, and may be copied or disclosed only under
6: / the terms of that agreement. Any reproduction or disclosure of
7: / this material without the express written authorization of
8: / INETCO Systems or persuant to the license agreement is unlawful.
9: /
10: / Copyright (c) 1986
11: / An unpublished work by INETCO Systems, Ltd.
12: / All rights reserved.
13: /
14: / $Log: /usr/src/sys/ldrv/RCS/sfmem.s,v $
15: / Revision 1.1 88/03/24 16:31:08 src
16: / Initial revision
17: /
18: /
19: ////////
20:
21: ////////
22: /
23: / void
24: / sfmem( fp, m, n ) -- set far memory
25: / char far * fp;
26: / char * m;
27: / int n;
28: /
29: / Input: fp = far pointer [32 bit selector:offset] to destination
30: / m = source
31: / n = number of bytes to transfer.
32: /
33: / Action: Transfer 'n' bytes from offset 'm' in the current data space
34: / to far address 'fp'.
35: /
36: / Return: None.
37: /
38: ////////
39:
40: .globl sfmem_
41:
42: sfmem_: push si / void
43: push di / sfmem( fp, m, n )
44: push bp /
45: mov bp, sp / register char * fp; /* ES:DI */
46: push es / register char * m; /* SI */
47: les di, 8(bp) / register int n; /* CX */
48: mov si, 12(bp) /
49: mov cx, 14(bp) / {
50: /
51: cld /
52: clc / for ( ; n != 0; --n )
53: rcr cx, $1 /
54: rep / *fp++ = *m++;
55: movsw /
56: rcl cx, $1 /
57: rep /
58: movsb /
59: /
60: pop es / }
61: pop bp
62: pop di
63: pop si
64: ret
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.