
; *******************************************************
; *							*
; *     Turbo Pascal Run-time Library                   *
; *	Textfile Integer I/O				*
; *							*
; *     Copyright (c) 1988,92 Borland International     *
; *							*
; *******************************************************

	TITLE	TINT

	INCLUDE	SE.ASM

DATA	SEGMENT	WORD PUBLIC

; Externals

	EXTRN	InOutRes:WORD

DATA	ENDS

CODE	SEGMENT	BYTE PUBLIC

	ASSUME	CS:CODE,DS:DATA

; Externals

	EXTRN	Str2Int:NEAR,Int2Str:NEAR,ReadText:NEAR
	EXTRN	WriteBuffer:NEAR,WriteBlanks:NEAR

; Publics

	PUBLIC	ReadInt,WriteInt

; Read standard procedure (Integer)

ReadInt:

	ARG	FileP,DWORD,1
	LOC	NumBuf,BYTE,32

	ENTRY	WINFAR
	LES	BX,FileP
	MOV	AX,OFFSET CS:@@10
	MOV	CX,32
	LEA	DI,NumBuf
	MOV	DX,SS
	CALL	ReadText
	MOV	CX,DI
	LEA	DI,NumBuf
	SUB	CX,DI
	JE	@@2
	PUSH	SS
	POP	ES
	CALL	Str2Int
	JC	@@1
	JCXZ	@@3
@@1:	MOV	InOutRes,106
@@2:	XOR	AX,AX
	MOV	DX,AX
@@3:	EXIT	0
@@10:	LODSB
	CMP	AL,' '
	JA	@@12
	CMP	AL,eof
	JE	@@13
	CMP	SI,BX
	JNE	@@10
	MOV	AX,OFFSET CS:@@10
	RET
@@11:	LODSB
	CMP	AL,' '
	JBE	@@13
@@12:	STOSB
	CMP	SI,BX
	LOOPNE	@@11
	JCXZ	@@14
	MOV	AX,OFFSET CS:@@11
	RET
@@13:	DEC	SI
@@14:	XOR	AX,AX
	RET

; Write standard procedure (Integer)

WriteInt:

	ARG	FileP,DWORD,1
	ARG	Value,DWORD,1
	ARG	Width,WORD,1
	LOC	NumBuf,BYTE,32

	ENTRY	WINFAR
	MOV	AX,Value.w0
	MOV	DX,Value.w2
	LEA	DI,NumBuf[32]
	PUSH	SS
	POP	ES
	CALL	Int2Str
	LES	BX,FileP
	MOV	DX,Width
	SUB	DX,CX
	JLE	@@1
	PUSH	CX
	PUSH	DI
	CALL	WriteBlanks
	POP	DI
	POP	CX
@@1:	MOV	AX,CX
	MOV	SI,DI
	MOV	DX,SS
	CALL	WriteBuffer
	EXIT	6

CODE	ENDS

	END
