File:  [MW Coherent from dump] / coherent / b / kernel / ldrv / ffmem.s
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Wed May 29 04:56:37 2019 UTC (7 years ago) by root
Branches: MarkWilliams, MAIN
CVS tags: relic, HEAD
coherent

/ $Header: /var/lib/cvsd/repos/coherent/coherent/b/kernel/ldrv/ffmem.s,v 1.1.1.1 2019/05/29 04:56:37 root Exp $
/
/	The  information  contained herein  is a trade secret  of INETCO
/	Systems, and is confidential information.   It is provided under
/	a license agreement,  and may be copied or disclosed  only under
/	the terms of that agreement.   Any reproduction or disclosure of
/	this  material  without  the express  written  authorization  of
/	INETCO Systems or persuant to the license agreement is unlawful.
/
/	Copyright (c) 1986
/	An unpublished work by INETCO Systems, Ltd.
/	All rights reserved.
/
/ $Log: ffmem.s,v $
/ Revision 1.1.1.1  2019/05/29 04:56:37  root
/ coherent
/
/ Revision 1.1  92/07/17  15:27:51  bin
/ Initial revision
/
/ Revision 1.1	88/03/24  16:30:31	src
/ Initial revision
/ 
/
////////

////////
/
/ void
/ ffmem( fp, m, n )	-- fetch far memory
/ faddr_t fp;
/ char * m;
/ int n;
/
/	Input:	fp = far pointer [32 bit selector:offset] to source
/		m  = destination
/		n  = number of bytes to transfer.
/
/	Action:	Transfer 'n' bytes from far address 'fp' to offset 'm'
/		in the current data space.
/
/	Return:	None.
/
////////

	.globl	ffmem_

ffmem_:	push	si		/ void
	push	di		/ ffmem( fp, m, n )
	push	bp		/
	mov	bp, sp		/ register faddr_t fp;		/* DS:SI */
	push	ds		/ register char * m;		/* DI */
	lds	si, 8(bp)	/ register int n;		/* CX */
	mov	di, 12(bp)	/
	mov	cx, 14(bp)	/ {
				/
	cld			/
	clc			/	for ( ; n != 0; --n )
	rcr	cx, $1		/
	rep			/		*m++ = *fp++;
	movsw			/
	rcl	cx, $1		/
	rep			/
	movsb			/
				/
	pop	ds		/ }
	pop	bp
	pop	di
	pop	si
	ret

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.