git @ Cat's Eye Technologies BefOS / master src / kernel / copypaste.s
master

Tree @master (Download .tar.gz)

copypaste.s @masterraw · history · blame

;--- BEGIN ---------------------------------------------------;

;--- CONSTANTS -----------------------------------------------;

;--- DATA ----------------------------------------------------;

SEGMENT	.data

coybyte:	db 01

;--- BSS -----------------------------------------------------;

SEGMENT	.bss

;--- CODE ----------------------------------------------------;

SEGMENT	.text

		;;--------------------------------------------;
		;; Copy page in memory to clipboard.
		;; ax: * -> GARBAGE
		;; di: * -> GARBAGE
CopyPage:	mov	di, 0
.Copy:		mov	ax, di
		mov	al, [cbuffer + di]
		mov	[bbuffer + di], al
		inc	di
		cmp	di, 2048
		jne	.Copy
		jmp	OKLight


		;;--------------------------------------------;
		;; Copy page in memory to clipboard and erase it.
		;; ax: * -> GARBAGE
		;; di: * -> GARBAGE
CutPage:	call	EditModeOnly
		call	CopyPage
		jmp	FillPage



		;;--------------------------------------------;
		;; Copy clipboard contents to page buffer.
		;; ax: * -> GARBAGE
		;; di: * -> GARBAGE
PastePage:	call	EditModeOnly
		mov	di, 0
.Copy:		mov	ax, di
		mov	al, [bbuffer + di]
		mov	[cbuffer + di], al
		inc	di
		cmp	di, 2048
		jne	.Copy
		jmp	DisplayPage



		;;--------------------------------------------;
		;; Fill page buffer with current byte.
		;; bl: * -> GARBAGE
		;; di: * -> GARBAGE
		;; *: * -> GARBAGE
FillPage:	call	EditModeOnly
		mov	di, [bufptr]
		mov	bl, [cbuffer + di]
		mov	di, 0
.Fill:		mov	[cbuffer + di], bl
		inc	di
		cmp	di, 2000
		jne	.Fill
		jmp	DisplayPage


		;;--------------------------------------------;
		;; Copy current byte from page to clipbyte.
		;; al: * -> GARBAGE
		;; di: * -> GARBAGE
CopyByte:	mov	di, [bufptr]
		mov	al, [cbuffer + di]
		mov	[coybyte], al
		jmp	OKLight


		; PasteByte - copy byte from clipboard to page
		; al,cl,di=DESTROYED
PasteByte:	call	EditModeOnly
		mov	di, [bufptr]
		mov	al, [coybyte]
		mov	[cbuffer + di], al
		mov	cl, al
		call	ShowByte
                jmp     Advance

;--- END -----------------------------------------------------;