Что тут поменять, чтоб оно выплёскивало не в 16384, а в виртуальный экран?

Проверка границ не помешала бы

Код:
PUTIMAGE1	

		ld	de,(_WINX)			; e=col_win, d=row_window
		ld	a,(_WINH)
		ld	b,a

putimage_011	push	bc

		push	de

                LD      A,D				
                RRCA
                RRCA
                RRCA
                AND	A,224
		ADD	A,E
                LD	E,A
                LD	A,D
                AND	24
                OR	64
                LD	D,A

		dup	8
		push	de
		ld	bc,(_WINW)
		ld	b,0
		ldir
		pop	de
		inc	d
		edup

		pop	de
		inc	d
		pop	bc
		djnz	putimage_011

; +++++ _flag_attr_window +++++

		ld	de,(_WINX)			; e=col_win, d=row_window
		ld	a,(_WINH)
		ld	b,a

putimage_021	push	bc
		push	de

                LD	A,D				
                RRCA
                RRCA
                RRCA
                LD	C,A
                AND	31
                OR	88
                LD	B,A
                LD	A,C
                AND	252
                OR	E
                LD	C,A

		ld	d,b
		ld	e,c
		ld	bc,(_WINH)
		ld	b,0
		ldir

		pop	de

		inc	d

		pop	bc
		djnz	putimage_021


		ret