Metropoli BBS
VIEWER: istype.asm MODE: TEXT (ASCII)
;******************************************************************************
; Filename: ISTYPE.ASM
;   Author: Peter Andersson
;  Version: 0.0
;  Created: 1994.09.19
;  Updated: 1995.03.12
;******************************************************************************
; Copyright Peter Andersson, 1994-1995.
; All rights reserved.
;******************************************************************************
; Functions included in this file:
;
; Function: ULONG @isdigit(CHAR chr)
;  Comment: Returns a nonzero value if 'chr' is a digit.
;    Input: Al - chr
;  Returns: nonzero value if 'chr' is an digit
;
; Function: ULONG @isxdigit(CHAR chr)
;  Comment: Returns a nonzero value if 'chr' is a hex digit.
;    Input: Al - chr
;  Returns: nonzero value if 'chr' is an hex digit
;
; Function: ULONG @isalpha(CHAR chr)
;  Comment: Returns a nonzero value if 'chr' is a letter.
;    Input: Al - chr
;  Returns: nonzero value if 'chr' is a letter
;
; Function: ULONG @islower(CHAR chr)
;  Comment: Returns a nonzero value if 'chr' is a lowercase letter.
;    Input: Al - chr
;  Returns: nonzero value if 'chr' is a lowercase letter
;
; Function: ULONG @isupper(CHAR chr)
;  Comment: Returns a nonzero value if 'chr' is an uppercase letter.
;    Input: Al - chr
;  Returns: nonzero value if 'chr' is an uppercase letter
;
; Function: ULONG @isalnum(CHAR chr)
;  Comment: Returns a nonzero value if 'chr' is a letter or a digit.
;    Input: Al - chr
;  Returns: nonzero value if 'chr' is a letter or a digit.
;
; Function: ULONG @iscntrl(CHAR chr)
;  Comment: Returns a nonzero value if 'chr' is a control character (0x00
;           to 0x1F and 0x7F).
;    Input: Al - chr
;  Returns: nonzero value if 'chr' is a control character
;
; Function: ULONG @isspace(CHAR chr)
;  Comment: Returns a nonzero value if 'chr' is a space character (0x09 to
;           0x0D and 0x20).
;    Input: Al - chr
;  Returns: nonzero value if 'chr' is a space character
;
; Function: ULONG @ispunct(CHAR chr)
;  Comment: Returns a nonzero value if 'chr' is a punctuation character
;           (0x00 to 0x20 and 07F).
;    Input: Al - chr
;  Returns: nonzero value if 'chr' is a punctuation character
;
; Function: ULONG @isascii(CHAR chr)
;  Comment: Returns a nonzero value if 'chr' is an ascii character (0x00 to
;           0x7Fh).
;    Input: Al - chr
;  Returns: nonzero value if 'chr' is an ascii character
;
; Function: ULONG @isprint(CHAR chr)
;  Comment: Returns a nonzero value if 'chr' is a printable character (0x20 to
;           0x7Eh).
;    Input: Al - chr
;  Returns: nonzero value if 'chr' is a printable character
;******************************************************************************

        Include STDDEF.INC

        Codeseg

TD = 001h               ; TYPE DIGIT               ("0"-"9")
TL = 002h               ; TYPE LOWERCASE CHARACTER ("a"-"z")
TU = 004h               ; TYPE UPPERCASE CHARACTER ("A"-"Z")
TP = 008h               ; TYPE PRINTABLE CHARACTER (20h-7Eh)
TC = 010h               ; TYPE CONTROL CHARACTER   (00h-1Fh+7Eh)
TS = 020h               ; TYPE SPACE CHARACTER     (09h-0Dh+20h)
TH = 040h               ; TYPE HEX DIGIT (with TD) ("a"-"f","A-F")
TUH = TU+TH             ; Upper case HEX
TLH = TL+TH             ; Lower case HEX

Proc    isascii ,1
                Cmp     Al,80h
                Sbb     Eax,Eax
                Ret
Endp

        Align   4

Proc    isalpha ,1
                And     Eax,255
                Mov     Al,[Eax+TypeTable]
                And     Al,TL+TU
                Ret
Endp

        Align   4

Proc    islower ,1
                And     Eax,255
                Mov     Al,[Eax+TypeTable]
                And     Al,TL
                Ret
Endp

        Align   4

Proc    isupper ,1
                And     Eax,255
                Mov     Al,[Eax+TypeTable]
                And     Al,TU
                Ret
Endp

        Align   4

Proc    isdigit ,1
                And     Eax,255
                Mov     Al,[Eax+TypeTable]
                And     Al,TD
                Ret
Endp

        Align   4

Proc    isxdigit ,1
                And     Eax,255
                Mov     Al,[Eax+TypeTable]
                And     Al,TD or TLH or TUH
                Ret
Endp

        Align   4

Proc    isalnum ,1
                And     Eax,255
                Mov     Al,[Eax+TypeTable]
                And     Al,TD+TL+TU
                Ret
Endp

        Align   4

Proc    isspace ,1
                And     Eax,255
                Mov     Al,[Eax+TypeTable]
                And     Al,TS
                Ret
Endp

        Align   4

Proc    ispunct ,1
                And     Eax,255
                Mov     Al,[Eax+TypeTable]
                And     Al,TS+TC
                Ret
Endp

        Align   4

Proc    isprint ,1
                And     Eax,255
                Mov     Al,[Eax+TypeTable]
                And     Al,TP
                Ret
Endp


        Align   4

Proc    iscntrl ,1
                And     Eax,255
                Mov     Al,[Eax+TypeTable]
                And     Al,TC
                Ret
Endp

        Dataseg

        Include "ISTYPE.INC"

        End

[ RETURN TO DIRECTORY ]