; PARAMS.INC ; reading commandline-parameters ; (c) 9/1991 by Jan Laitenberger ; Assemble with JASMIN @CntPar: PUSH BX ; save PUSH CX ; registers PUSH DX PUSH SI XOR CH, CH ; length of MOV CL, [80h] ; commandline MOV BX, CX MOV BYTE PTR [BX+81h], 20h XOR BX, BX ; counter MOV SI, 81h ; first byte ADD CX, SI XOR DX, DX @Next: CMP SI, CX JE @ExitCnt LODSB ; next byte CMP AL, 32 ; AL=" " ? JNE @L00 XOR DX, DX JMP SHORT @Next @L00: CMP DX, 0 JNE @L01 INC BX CMP BP, 1234h JNE @L01 CMP BX, DI JNE @L01 MOV DI, SI DEC DI JMP SHORT @ExitCnt @L01: INC DX JMP SHORT @Next @ExitCnt: MOV AX, BX ; result to AX POP SI ; restore POP DX ; registers POP CX POP BX RET ; Parameters for @GetPar: ; I - AH: maximum length ; AL: nr of parameter ; DX: offset target string ; O - BX: length @GetPar: PUSH AX ; save PUSH CX ; registers PUSH SI PUSH DI PUSH BP XOR BX, BX XOR CX, CX XCHG CL, AH MOV DI, AX CALL @CntPar CMP DI, AX JA @L03 MOV BP, 1234h ; get param CALL @CntPar ; offset MOV SI, DX XCHG SI, DI @L02: LODSB CMP AL,20h ; end of JE @L03 ; param ? STOSB INC BX LOOP @L02 @L03: POP BP ; restore POP DI ; registers POP SI POP CX POP AX RET