All pastes #497548 Raw Edit

Stuff

public text v1 · immutable
·published 2007-05-19 22:35 UTC
rendered paste body
assume cs:kod, ds:dane

dane segment
	buforek	db 4000 dup(0)
dane ends

kod segment
START:
	mov dx, dane
	mov ds, dx		;adres segmentu danych do ds
	jmp GO

;===============================================================================
USTAW proc
	mov dx, 2e1h		;rejestr rozkazow 
	mov al, 00001101b	;define configuration, konfiguracja, dlugie i krotkie pakiety (000c101 - define configuration , c = dlugie i krotkie ; [jesli 1]
	out dx, al
	
	mov al, 00011110b	;clear flag, zerowanie rejestru stanu (000rp110 - zerowanie flag, r - wyzerowanie bitu POR, p - recon)
	out dx, al
	ret
endp
;===============================================================================
;===============================================================================
WYSLIJ proc
	mov bx, 0d000h
	mov es, bx
	mov bx, dane
	mov ds, bx
	lea si, buforek
	
	mov es:[di], 01000000b		;adres nadawcy pakietu
	mov es:[di+1], 10000000b	;adres odbiorcy pakietu
	mov es:[di+2], 0
	mov es:[di+3], 5
	mov di, 5
	push cx
	mov cx, 500
	rep movsb
	pop cx
	
CZEKAJ:
	mov dx, 2e0h		;rej stanu
	in al, dx
	and al, 00000001b	;sprawdz czy TA=1 (zdolny do przeslania)
	jz CZEKAJ
	
	mov dx, 2e1h
	mov al, 00000011b
	out dx, al
	ret
endp
;===============================================================================
;===============================================================================
ODBIERZ	proc
	mov dx, 2e1h
	mov al, 00000100b	;Enable Receive To Page nn=00b
	out dx, al
	
	mov dx, 2e0h		;rej stanu

CZEKAJ:
	in al, dx
	and al, 10000000b	;spr czy RI=1 (w buforze RAM jest już przekazana paczka)
	jz CZEKAJ

JUZ:
	mov si, 5
	lea di, buforek

	mov ax, 0d000h
	mov ds, ax
	mov ax, dane
	mov es, ax
	mov cx, 500
	rep movsb
	ret
endp
;===============================================================================
;===============================================================================
SCRTOMEM proc			;Pamiec ekranu do pamici pod adres es:di
	mov dx, dane		;adres bloku danych
	mov es, dx
	lea di, buforek
	mov cx, 4000		;4000 Bajtow - caly ekran
	mov dx, 0b800h	;pamiec ekranu
	mov ds, dx		;pamiec ekranu ekranu jako zrodlo
	mov si, 0		;offset 0
	rep movsb		;kopiujemy
	ret
endp
;===============================================================================
;===============================================================================

GO:
	call USTAW

	call ODBIERZ
	mov di, 0
	cmp es:[di], "*"
	jz DALEJ
	jmp GO
	
DALEJ:
	call SCRTOMEM

	mov cx, 8
SLIJ:
	mov di, 0
	call WYSLIJ
	loop SLIJ
	

KONIEC:
	mov ax, 4c00h
	int 21h
	
kod ends
end start