[Back to STRINGS SWAG index] [Back to Main SWAG index] [Original]

    {
    > I did, as I said "I couldn't get anything to work". No functions that
    > I called returned the expected results, or maybe I wasn't doing something
    > correctly, in any case it would be easier if someone was to post
    > information on how I do something like this:

    There is an easy way to convert strings using the national conversion tables
    using DOS function $6521 (4.0 up). I'm using these two implementations:

      MS-DOS function $6521
      Version 4.0 up
      Converts string at address DS:DX
      of length CX
    }

    procedure cap(var s:string);
    { converts string S to uppercase
      procedure version
    }
    assembler;
    asm
      push ds
      lds  si,s
      mov  cl,[si]
      xor  ch,ch
      jcxz @Exit
      lea  dx,[si+1]
      mov  ax,$6521
      int  21h
    @Exit:
      pop ds
    end;

    function fcap(s:string):string;
    (* TP 7.0
    function fcap(const s:string):string;
    *)
    { converts string S to uppercase
      function version
    }
    assembler;
    asm
      push ds
      lds  si,s
      cld
      lodsb
      mov  cl,al
      xor  ch,ch
      jcxz @Exit
      les  di,@Result
      stosb
      mov  dx,di
      push cx
      rep  movsb
      push es
      pop  ds
      pop  cx
      mov  ax,$6521
      int  21h
    @Exit:
      pop ds
    end;

[Back to STRINGS SWAG index] [Back to Main SWAG index] [Original]