þ a‹R þ d þ w ÿÿÿÿÿÿÿÿÿÿþ m^9     þ hý	 oP    þ nSystem-wide;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;	ASSEMBLY PROCEDURE FOR SPEEDING UP TRANSMISSION			;
;	PhySendShortPkt							;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


		NAME		PHYMODULE3
CGROUP		GROUP		CODE

STACK		SEGMENT STACK	'STACK'
STACK		ENDS

		ASSUME		CS:CGROUP, SS:STACK

CODE		SEGMENT PUBLIC 'CODE'

; Constants

loopCount		EQU	0FFH
txBufEmpty		EQU	004H
resetCrcAndStatus	EQU	090H
resetDmaPending		EQU	028H
resetEom		EQU	0C0H

; Procedure PhySendShortPkt(pBopCommand, pBopData, data0, data1)

; Stack structure

params		STRUC
oldBP		DW	?
oldDS		DW	?
retAddr		DW	?
data1		DB	?
unused1		DB	?
data0		DB	?
unused2		DB	?
pBopData	DD	?
pBopCommand	DD	?
params		ENDS

		PUBLIC	PhySendShortPkt
PhySendShortPkt	PROC	NEAR

		PUSH	DS
		PUSH	BP
		MOV	BP, SP
		LES	BX, [BP].pBopCommand
		LDS	SI, [BP].pBopData
		MOV	AL, [BP].data0
		MOV	AH, [BP].data1
		MOV	CX, loopCount

		CLI
		MOV	BYTE PTR ES:[BX], resetCrcAndStatus
		MOV	BYTE PTR ES:[BX], resetDmaPending
		MOV	[SI], AL

testLoop:	DEC	CX
		JZ	done
		TEST	BYTE PTR ES:[BX], txBufEmpty
		JZ	testLoop

done:		MOV	[SI], AH
		MOV	BYTE PTR ES:[BX], resetEom
		STI

		POP	BP
		POP	DS
		RET	12

PhySendShortPkt	ENDP

CODE		ENDS

		END
