|
|
1.1 ! root 1: / $Header: /kernel/kersrc/ldrv/RCS/sfmem.s,v 1.1 92/07/17 15:28:07 bin Exp Locker: bin $ ! 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: sfmem.s,v $ ! 15: / Revision 1.1 92/07/17 15:28:07 bin ! 16: / Initial revision ! 17: / ! 18: / Revision 1.1 88/03/24 16:31:08 src ! 19: / Initial revision ! 20: / ! 21: / ! 22: //////// ! 23: ! 24: //////// ! 25: / ! 26: / void ! 27: / sfmem( fp, m, n ) -- set far memory ! 28: / char far * fp; ! 29: / char * m; ! 30: / int n; ! 31: / ! 32: / Input: fp = far pointer [32 bit selector:offset] to destination ! 33: / m = source ! 34: / n = number of bytes to transfer. ! 35: / ! 36: / Action: Transfer 'n' bytes from offset 'm' in the current data space ! 37: / to far address 'fp'. ! 38: / ! 39: / Return: None. ! 40: / ! 41: //////// ! 42: ! 43: .globl sfmem_ ! 44: ! 45: sfmem_: push si / void ! 46: push di / sfmem( fp, m, n ) ! 47: push bp / ! 48: mov bp, sp / register char * fp; /* ES:DI */ ! 49: push es / register char * m; /* SI */ ! 50: les di, 8(bp) / register int n; /* CX */ ! 51: mov si, 12(bp) / ! 52: mov cx, 14(bp) / { ! 53: / ! 54: cld / ! 55: clc / for ( ; n != 0; --n ) ! 56: rcr cx, $1 / ! 57: rep / *fp++ = *m++; ! 58: movsw / ! 59: rcl cx, $1 / ! 60: rep / ! 61: movsb / ! 62: / ! 63: pop es / } ! 64: pop bp ! 65: pop di ! 66: pop si ! 67: ret
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.