; ******************************************************* ; * * ; * Turbo Pascal Run-time Library * ; * Command Line Parameter Routines * ; * * ; * Copyright (c) 1988,92 Borland International * ; * * ; ******************************************************* TITLE PARS INCLUDE SE.ASM DATA SEGMENT WORD PUBLIC ; Externals EXTRN PrefixSeg:WORD DATA ENDS CODE SEGMENT BYTE PUBLIC ASSUME CS:CODE,DS:DATA ; Publics PUBLIC GetParStr,GetParCnt ; ParamStr standard function GetParStr: ARG StrP,DWORD,1 ARG Index,WORD,1 ENTRY FAR MOV DX,Index OR DX,DX JE @@1 CALL ParStrCnt JMP SHORT @@4 @@1: MOV AH,dosGetVersion INT DOS CMP AL,3 MOV AX,0 JB @@4 MOV ES,PrefixSeg MOV ES,ES:pspEnvSeg XOR DI,DI CLD @@2: CMP AL,ES:[DI] JE @@3 MOV CX,-1 REPNE SCASB JMP @@2 @@3: ADD DI,3 MOV SI,DI MOV CX,256 REPNE SCASB XCHG AX,CX NOT AL @@4: PUSH DS PUSH ES POP DS LES DI,StrP CLD STOSB XCHG AX,CX REP MOVSB POP DS EXIT 2 ; ParamCount standard function GetParCnt: XOR DX,DX CALL ParStrCnt XCHG AX,BX RETF ; Return parameter string and count ; In DX = Parameter string number ; Out AX = Parameter string length ; BX = Parameter string count ; ES:SI = Parameter string pointer ParStrCnt: MOV ES,PrefixSeg MOV DI,OFFSET pspCmdLine MOV CL,ES:[DI] XOR CH,CH INC DI XOR BX,BX @@1: JCXZ @@3 @@2: CMP BYTE PTR ES:[DI],' ' JA @@3 INC DI LOOP @@2 @@3: MOV SI,DI JCXZ @@5 @@4: CMP BYTE PTR ES:[DI],' ' JBE @@5 INC DI LOOP @@4 @@5: MOV AX,DI SUB AX,SI JE @@6 INC BX DEC DX JNZ @@1 @@6: RET CODE ENDS END