;*******************************************************;
;                                                       ;
;       Turbo Pascal Version 7.0                        ;
;       Extended Unit                                   ;
;       Version 1.0                                     ;
;                                                       ;
;       Copyright (c) 1993 by RDA Software              ;
;                                                       ;
;*******************************************************;

.MODEL TPASCAL
.CODE
LOCALS	@@

Sim	equ	ss:[bx + 4]

; Function ToLower(Sim: Char): Char;
; Функция преобразует символ Sim к нижнему регистру.

PUBLIC  ToLower

    ToLower	PROC	Far
	mov	bx, sp
	mov	ax, Sim
	cmp	al, 'A'
	jb	@@3
	cmp	al, 'Z'
	ja	@@2
   @@1: add	al, 32
	ret	2
   @@2: cmp	al, 'А'
	jb	@@3
	cmp	al, 'П'
	jbe	@@1
	cmp	al, 'Я'
	ja	@@3
	add	al, 80
   @@3: ret	2
    ToLower	ENDP


; Function ToUpper(Sim: Char): Char;
; Функция преобразует символ Sim к верхнему регистру.

PUBLIC  ToUpper

    ToUpper	PROC	Far
	mov	bx, sp
	mov	ax, Sim
	cmp	al, 'a'
	jb	@@3
	cmp	al, 7Ah
	ja	@@2
   @@1: sub	al, 32
	ret	2
   @@2: cmp	al, 'а'
	jb	@@3
	cmp	al, 'п'
	jbe	@@1
	cmp	al, 'р'
	jb	@@3
	cmp	al, 'я'
	ja	@@3
	sub	al, 80
   @@3: ret	2
    ToUpper	ENDP


; Function  IsDigit(Sim: Char): Boolean;
; Функция возвращает TRUE, если Sim является десятичной цифрой.

PUBLIC  IsDigit

    IsDigit	PROC	Far
	mov	bx, sp
	mov	ax, Sim
	cmp	al, '0'
	jb	@@1
	cmp	al, '9'
	ja	@@1
	mov	al, 1
	ret	2
   @@1: xor	ax, ax
	ret	2
    IsDigit	ENDP


; Function  IsHexDigit(Sim: Char): Boolean;
; Функция возвращает TRUE, если Sim является шестнадцатиричной цифрой.

PUBLIC  IsHexDigit

    IsHexDigit	PROC	Far
	mov	bx, sp
	mov	ax, Sim
	cmp	al, '0'
	jb	@@3
	cmp	al, '9'
	ja	@@2
   @@1: mov	al, 1
	ret	2
   @@2: cmp	al, 'A'
	jb	@@3
	cmp	al, 'F'
	jbe	@@1
	cmp	al, 'a'
	jb	@@3
	cmp	al, 'f'
	jbe	@@1
   @@3: xor	ax, ax
	ret	2
    IsHexDigit	ENDP


; Function  IsLatChar(Sim: Char): Boolean;
; Функция возвращает TRUE, если Sim является буквой латинского алфавита.

PUBLIC  IsLatChar

    IsLatChar	PROC	Far
	mov	bx, sp
	mov	ax, Sim
	cmp	al, 'A'
	jb	@@3
	cmp	al, 'Z'
	ja	@@2
   @@1: mov	al, 1
	ret	2
   @@2: cmp	al, 'a'
	jb	@@3
	cmp	al, 'z'
	jbe	@@1
   @@3: xor	ax, ax
	ret	2
    IsLatChar	ENDP


; Function  IsRusChar(Sim: Char): Boolean;
; Функция возвращает TRUE, если Sim является буквой русского алфавита.

PUBLIC  IsRusChar

    IsRusChar	PROC	Far
	mov	bx, sp
	mov	ax, Sim
	cmp	al, 'А'
	jb	@@3
	cmp	al, 'п'
	ja	@@2
   @@1: mov	al, 1
	ret	2
   @@2: cmp	al, 'р'
	jb	@@3
	cmp	al, 'я'
	jbe	@@1
   @@3: xor	ax, ax
	ret	2
    IsRusChar	ENDP


; Function  IsAlpha(Sim: Char): Boolean;
; Функция возвращает TRUE, если Sim является русской или латинской буквой.

PUBLIC  IsAlpha

    IsAlpha	PROC	Far
	mov	bx, sp
	mov	ax, Sim
	cmp	al, 'A'
	jb	@@3
	cmp	al, 'Z'
	ja	@@2
   @@1: mov	al, 1
	ret	2
   @@2: cmp	al, 'a'
	jb	@@3
	cmp	al, 'z'
	jbe	@@1
	cmp	al, 'А'
	jb	@@3
	cmp	al, 'п'
	jbe	@@1
	cmp	al, 'р'
	jb	@@3
	cmp	al, 'я'
	jbe	@@1
   @@3: xor	ax, ax
	ret	2
    IsAlpha	ENDP


; Function  IsAlNum(Sim: Char): Boolean;
; Функция возвращает TRUE, если Sim является русской
; или латинской буквой или цифрой.

PUBLIC  IsAlNum

    IsAlNum	PROC	Far
	mov	bx, sp
	mov	ax, Sim
	cmp	al, '0'
	jb	@@3
	cmp	al, '9'
	ja	@@2
   @@1: mov	al, 1
	ret	2
   @@2: cmp	al, 'A'
	jb	@@3
	cmp	al, 'Z'
	jbe	@@1
	cmp	al, 'a'
	jb	@@3
	cmp	al, 'z'
	jbe	@@1
	cmp	al, 'А'
	jb	@@3
	cmp	al, 'п'
	jbe	@@1
	cmp	al, 'р'
	jb	@@3
	cmp	al, 'я'
	jbe	@@1
   @@3: xor	ax, ax
	ret	2
    IsAlNum	ENDP

; Function  IsAlfa(Sim: Char): Boolean;
; Функция возвращает TRUE, если Sim является печатной буквой
; (символом с кодом в диапазоне 20h..7Fh).

PUBLIC  IsAlfa

    IsAlfa	PROC	Far
	mov	bx, sp
	mov	ax, Sim
	cmp	al, ' '
	jb	@@1
	cmp	al, 7Fh
	ja	@@1
	mov	al, 1
	ret	2
   @@1: xor	ax, ax
	ret	2
    IsAlfa	ENDP


; Function  IsLower(Sim: Char): Boolean;
; Функция возвращает TRUE, если Sim является буквой нижнего регистра.

PUBLIC  IsLower

    IsLower	PROC	Far
	mov	bx, sp
	mov	ax, Sim
	cmp	al, 'a'
	jb	@@3
	cmp	al, 'z'
	ja	@@2
   @@1: mov	al, 1
	ret	2
   @@2: cmp	al, 'а'
	jb	@@3
	cmp	al, 'п'
	jbe	@@1
	cmp	al, 'р'
	jb	@@3
	cmp	al, 'я'
	jbe	@@1
   @@3: xor	ax, ax
	ret	2
    IsLower	ENDP


; Function  IsUpper(Sim: Char): Boolean;
; Функция возвращает TRUE, если Sim является буквой верхнего регистра.

PUBLIC  IsUpper

    IsUpper	PROC	Far
	mov	bx, sp
	mov	ax, Sim
	cmp	al, 'A'
	jb	@@3
	cmp	al, 'Z'
	ja	@@2
   @@1: mov	al, 1
	ret	2
   @@2: cmp	al, 'А'
	jb	@@3
	cmp	al, 'Я'
	jbe	@@1
   @@3: xor	ax, ax
	ret	2
    IsUpper	ENDP

END