| Index | Manual | Download | Source | Macros | Embedded word Case ins.
Sitemap | Links | Forum | Tests | Projects

# tdosapi.htm

This program is designated for demonstration and testing of the base functions from 16bit Disk Operating System Application Programming Interface macrolibrary dosapi.htm : DosAPI, GetArgCount, GetArg, StdInput, StdOutput, TerminateProgram.

Format
  COM 16bit
Platform
  DOS, Windows 32bit
Build
  euroasm tdosapi.htm
Run
  tdosapi arg1 arg2 ...
See also
  twinapi.htm, twinabi.htm.

    tdosapi PROGRAM Format=COM,Width=16,Entry=Main:
             INCLUDE dosapi.htm, cpuext%^WIDTH.htm
    [COM]    SEGMENT Purpose=CODE+RODATA+BSS
    Main:    PROC
             GetArgCount     ; Count the command-line arguments.
             JC .Abort:
             MOV [ArgCount],CX
             MOV AX,CX
             StoD ArgCount$  ; Convert binary number AX to a decimal string.
             JC .Abort:
             StdOutput =B"%^PROGRAM launched with ", ArgCount$, =B" arguments:", Eol=Yes
             JC .Abort:
             SUB BX,BX       ; BX will be the ordinal number of each argument.
    .EchoArg:INC BX
             CMP BX,[ArgCount]
             JA .EchoEnv:    ; Jump when all arguments have been echoed.
             MOV AX,BX
             StoD ArgNr$     ; Convert binary number AX to a decimal string.
             SUB AX,AX
             STOSB           ; Zero-terminate the string.
             GetArg BX       ; Retrieve BX-th argument to SI,CX.
             JC .Abort:
             MOV AX,CX       ; Argument size in bytes.
             StoD ArgSize$   ; Convert binary number AX to a decimal string.
             SUB AX,AX
             STOSB           ; Zero-terminate the string.
             StdOutput ArgNr$, =B".[", ArgSize$, =B"]: "
             StdOutput SI, Size=CX, Eol=Yes ; Echo the argument.
             JC .Abort:
             JMP .EchoArg:
    .EchoEnv:StdOutput =B'Environment string OS='
             PUSH ES
               GetEnv =B'OS', OS$
             POP ES
             JC .EnvNotSet:
             StdOutput OS$,Eol=Yes
             StdOutput =B'Environment string UNKNOWN='
             GetEnv =B'UNKNOWN', UNKNOWN$
             JC .EnvNotSet:
             StdOutput UNKNOWN$,Eol=Yes
             JMP .EchoInp:
    .EnvNotSet:StdOutput =B' was not found.',Eol=Yes
    .EchoInp:StdOutput ="Enter some text: "
             StdInput Buffer ; Read a string from the keyboard.
             JC .Abort:
             MOV AX,CX       ; String size, including CR+LF.
             StoD BufSize$   ; Convert binary number AX to a decimal string.
             SUB AX,AX
             STOSB           ; Zero-terminate the string.
             StdOutput =B"Entered[", BufSize$, =B"]: "
             StdOutput Buffer, Size=CX ; Echo the input string.
             JC .Abort:
             StdOutput =B"%^PROGRAM terminated."
             TerminateProgram Errorlevel=0
    .Abort:  StdOutput =B"Aborted, some macro returned CF.", Eol=Yes
             TerminateProgram Errorlevel=4
             ENDP Main:
    ArgCount  DW W
    ArgCount$ DB 6*B
    ArgNr$    DB 6*B
    ArgSize$  DB 6*B
    BufSize$  DB 6*B
    Buffer    DB 128*B
    OS$       DB 1024*B
    UNKNOWN$  DB 1024*B
          ENDPROGRAM tdosapi

▲Back to the top▲