home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
pascal
/
bp7os2
/
os2rtl
/
sys
/
tf48.asm
< prev
next >
Wrap
Assembly Source File
|
1993-08-16
|
2KB
|
128 lines
; *******************************************************
; * *
; * Turbo Pascal Run-time Library *
; * Textfile Real I/O *
; * *
; * Copyright (c) 1988,92 Borland International *
; * *
; *******************************************************
TITLE TF48
INCLUDE SE.ASM
DATA SEGMENT WORD PUBLIC
; Externals
EXTRN InOutRes:WORD
DATA ENDS
CODE SEGMENT BYTE PUBLIC
ASSUME CS:CODE,DS:DATA
; Externals
EXTRN Str2Real:NEAR,Real2Str:NEAR,ReadText:NEAR
EXTRN WriteBuffer:NEAR,WriteBlanks:NEAR
; Publics
PUBLIC ReadReal,WriteReal
; Read standard procedure (Real)
ReadReal:
ARG FileP,DWORD,1
LOC NumBuf,BYTE,64
ENTRY WINFAR
LES BX,FileP
MOV AX,OFFSET CS:@@10
MOV CX,64
LEA DI,NumBuf
MOV DX,SS
CALL ReadText
MOV CX,DI
LEA DI,NumBuf
SUB CX,DI
JE @@2
PUSH SS
POP ES
CALL Str2Real
JC @@1
JCXZ @@3
@@1: MOV InOutRes,106
@@2: XOR AX,AX
MOV BX,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 (Real)
WriteReal:
ARG FileP,DWORD,1
ARG Value,BYTE,6
ARG Width,WORD,1
ARG Decimals,WORD,1
LOC NumBuf,BYTE,64
ENTRY WINFAR
MOV AX,Value.w0
MOV BX,Value.w2
MOV DX,Value.w4
MOV CX,Decimals
OR CX,CX
JNS @@1
MOV CX,6
SUB CX,Width
CMP CX,-2
JLE @@1
MOV CX,-2
@@1: LEA DI,NumBuf
PUSH SS
POP ES
CALL Real2Str
LES BX,FileP
MOV DX,Width
SUB DX,CX
JLE @@2
PUSH CX
CALL WriteBlanks
POP CX
@@2: MOV AX,CX
LEA SI,NumBuf
MOV DX,SS
CALL WriteBuffer
EXIT 10
CODE ENDS
END