home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ASMPRG.ZIP / STDLIB20.ASM < prev    next >
Assembly Source File  |  1993-01-10  |  3KB  |  91 lines

  1. ;==============================================================================;
  2. ; OS/2 2.0 Assembler Routines                                                  ;
  3. ;                                                                              ;
  4. ; stdlib.asm      standard library functions                                   ;
  5. ;                                                                              ;
  6. ; Author: Larry Morley                                  (c) Larry Morley, 1993 ;
  7. ;==============================================================================;
  8.  
  9.                   INCLUDE std20.inc
  10.                   INCLUDE stdmac20.inc
  11.  
  12. EXTERN            KbdCharIn:NEAR32
  13.  
  14. PUBLIC            _strlen
  15. PUBLIC            _getkey
  16.  
  17. ;------------------------------------------------------------------------------
  18.  
  19. BEGINDATA
  20.  
  21.    IO_WAIT                 EQU     0
  22.    IO_NOWAIT               EQU     1
  23.  
  24.    KBDKEYINFO      STRUCT  2
  25.       chChar_                BYTE    0
  26.       chScan_                BYTE    0
  27.       fbStatus_              BYTE    0
  28.       bNlsShift_             BYTE    0
  29.       fsState_               WORD    0
  30.       time_                  DWORD   0
  31.    KBDKEYINFO        ENDS
  32.  
  33.    PKBDKEYINFO       TYPEDEF FAR PTR KBDKEYINFO
  34.  
  35.    __KbdKeyInfo      KBDKEYINFO <>
  36.  
  37. ENDDATA
  38.  
  39. ;------------------------------------------------------------------------------
  40.  
  41. CODE32            SEGMENT
  42.                   ASSUME  CS:CODE32,SS:STACK32,DS:FLAT
  43.  
  44. _strlen           PROC    PASCAL USES ECX EDI, szString:NEAR32
  45.  
  46.                   SUB     EAX,EAX
  47.                   MOV     ECX,0FFFFFFFFH
  48.                   MOV     EDI,szString
  49.  
  50.             REPNE SCASB                    ; while ((cx--) && (es:[edi] != al));
  51.  
  52.                   .IF     ECX == 0
  53.  
  54.                      MOV     EAX,ECX
  55.  
  56.                   .ELSE
  57.  
  58.                      NEG     ECX
  59.                      SUB     ECX,2
  60.                      MOV     EAX,ECX
  61.  
  62.                   .ENDIF
  63.  
  64.                   RET
  65.  
  66. _strlen           ENDP
  67.  
  68. ;--------------------------------------
  69.  
  70. _getkey           PROC    PASCAL USES EBX EDX
  71.  
  72.                   PREP16  KbdCharIn
  73.                   CVTLP16 __KbdKeyInfo
  74.                   PUSHW   IO_WAIT
  75.                   PUSHW   0
  76.                   CALL16
  77.  
  78.                   SUB     EAX,EAX
  79.                   MOV     AL,BYTE PTR FLAT:[__KbdKeyInfo.chChar_]
  80.  
  81.                   RET
  82.  
  83. _getkey           ENDP
  84.  
  85. ;--------------------------------------
  86.  
  87. CODE32            ENDS
  88.                   END
  89.  
  90. ;------------------------------------------------------------------------------
  91.