DataMuseum.dk

Presents historical artifacts from the history of:

DANOSI

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DANOSI

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦4424c43d0⟧ TextFile

    Length: 7552 (0x1d80)
    Types: TextFile
    Names: »DOSUTIL.ASM«

Derivation

└─⟦e2123b2a1⟧ Bits:30010498 DVBS1.SW2103.src.1.8-1 Pascal TOOLS JTAS 1989-04-26 LEIF NIELSEN E.d.
    └─⟦this⟧ »UNITS\DOSUTIL.ASM« 

TextFile

	TITLE	DosUtil\r
	PAGE	,132\r
\r
CODE	SEGMENT	BYTE	PUBLIC\r
	ASSUME	CS:CODE\r
	PUBLIC	UpCase,LoCase,UpperStr,LowerStr,UCTAB,LCTAB\r
;	\r
; function UpCase(Ch : char) : char;		\r
;   returns the corresponding uppercase character to the character\r
;   specified as input parameter	\r
;\r
; function LoCase(Ch : char) : char;		\r
;   returns the corresponding lowercase character to the character\r
;   specified as input parameter	\r
;\r
; function UpperStr(Str : string) : string\r
;   converts the string specified as input parameter to a string\r
;   only containing Upper Case characters, where all lower case\r
;   characters from the input string are converted to their cor-\r
;   responding upper case equivalents\r
;\r
; function LowerStr(Str : string) : string\r
;   converts the string specified as input parameter to a string\r
;   only containing Lower Case characters, where all upper case\r
;   characters from the input string are converted to their cor-\r
;   responding lower case equivalents\r
;\r
	PUBLIC	CompStr,COLTAB\r
\r
\r
UCTAB:	DB	000H,001H,002H,003H,004H,005H,006H,007H\r
	DB	008H,009H,00AH,00BH,00CH,00DH,00EH,00FH\r
	DB	010H,011H,012H,013H,014H,015H,016H,017H\r
	DB	018H,019H,01AH,01BH,01CH,01DH,01EH,01FH\r
	DB	020H,021H,022H,023H,024H,025H,026H,027H\r
	DB	028H,029H,02AH,02BH,02CH,02DH,02EH,02FH\r
	DB	030H,031H,032H,033H,034H,035H,036H,037H\r
	DB	038H,039H,03AH,03BH,03CH,03DH,03EH,03FH\r
	DB	040H,041H,042H,043H,044H,045H,046H,047H\r
	DB	048H,049H,04AH,04BH,04CH,04DH,04EH,04FH\r
	DB	050H,051H,052H,053H,054H,055H,056H,057H\r
	DB	058H,059H,05AH,05BH,05CH,05DH,05EH,05FH\r
	DB	060H,041H,042H,043H,044H,045H,046H,047H\r
	DB	048H,049H,04AH,04BH,04CH,04DH,04EH,04FH\r
	DB	050H,051H,052H,053H,054H,055H,056H,057H\r
	DB	058H,059H,05AH,07BH,07CH,07DH,07EH,07FH\r
	DB	080H,09AH,045H,041H,08EH,041H,08FH,080H\r
	DB	045H,045H,045H,049H,049H,049H,08EH,08FH\r
	DB	090H,092H,092H,04FH,099H,04FH,055H,055H\r
	DB	059H,099H,09AH,09DH,09CH,09DH,09EH,09EH\r
	DB	0A0H,0A1H,0A2H,0A3H,0A4H,0A5H,0A7H,0A7H\r
	DB	0A8H,0AAH,0AAH,0ABH,0ACH,0ADH,0AEH,0AFH\r
	DB	0B0H,0B1H,0B2H,0B3H,0B4H,0B5H,0B6H,0B7H\r
	DB	0B8H,0B9H,0BAH,0BBH,0BCH,0BDH,0BEH,0BFH\r
	DB	0C0H,0C1H,0C2H,0C3H,0C4H,0C5H,0C6H,0C7H\r
	DB	0C8H,0C9H,0CAH,0CBH,0CCH,0CDH,0CEH,0CFH\r
	DB	0D0H,0D1H,0D2H,0D3H,0D4H,0D5H,0D6H,0D7H\r
	DB	0D8H,0D9H,0DAH,0DBH,0DCH,0DDH,0DEH,0DFH\r
	DB	0E0H,0E1H,0E2H,0E3H,0E4H,0E5H,0E6H,0E7H\r
	DB	0E8H,0E9H,0EAH,0EBH,0ECH,0EDH,0EEH,0EFH\r
	DB	0F0H,0F1H,0F2H,0F3H,0F4H,0F5H,0F6H,0F7H\r
	DB	0F8H,0F9H,0FAH,0FBH,0FCH,0FDH,0FEH,0FFH\r
\r
LCTAB:	DB	000H,001H,002H,003H,004H,005H,006H,007H\r
	DB	008H,009H,00AH,00BH,00CH,00DH,00EH,00FH\r
	DB	010H,011H,012H,013H,014H,015H,016H,017H\r
	DB	018H,019H,01AH,01BH,01CH,01DH,01EH,01FH\r
	DB	020H,021H,022H,023H,024H,025H,026H,027H\r
	DB	028H,029H,02AH,02BH,02CH,02DH,02EH,02FH\r
	DB	030H,031H,032H,033H,034H,035H,036H,037H\r
	DB	038H,039H,03AH,03BH,03CH,03DH,03EH,03FH\r
	DB	040H,061H,062H,063H,064H,065H,066H,067H\r
	DB	068H,069H,06AH,06BH,06CH,06DH,06EH,06FH\r
	DB	070H,071H,072H,073H,074H,075H,076H,077H\r
	DB	078H,079H,07AH,05BH,05CH,05DH,05EH,05FH\r
	DB	060H,061H,062H,063H,064H,065H,066H,067H\r
	DB	068H,069H,06AH,06BH,06CH,06DH,06EH,06FH\r
	DB	070H,071H,072H,073H,074H,075H,076H,077H\r
	DB	078H,079H,07AH,07BH,07CH,07DH,07EH,07FH\r
	DB	087H,081H,082H,083H,084H,085H,086H,087H\r
	DB	088H,089H,08AH,08BH,08CH,08DH,084H,086H\r
	DB	090H,091H,091H,093H,094H,095H,096H,097H\r
	DB	098H,094H,081H,09BH,09CH,09BH,09FH,09FH\r
	DB	0A0H,0A1H,0A2H,0A3H,0A4H,0A5H,0A6H,0A6H\r
	DB	0A8H,0A9H,0A9H,0ABH,0ACH,0ADH,0AEH,0AFH\r
	DB	0B0H,0B1H,0B2H,0B3H,0B4H,0B5H,0B6H,0B7H\r
	DB	0B8H,0B9H,0BAH,0BBH,0BCH,0BDH,0BEH,0BFH\r
	DB	0C0H,0C1H,0C2H,0C3H,0C4H,0C5H,0C6H,0C7H\r
	DB	0C8H,0C9H,0CAH,0CBH,0CCH,0CDH,0CEH,0CFH\r
	DB	0D0H,0D1H,0D2H,0D3H,0D4H,0D5H,0D6H,0D7H\r
	DB	0D8H,0D9H,0DAH,0DBH,0DCH,0DDH,0DEH,0DFH\r
	DB	0E0H,0E1H,0E2H,0E3H,0E4H,0E5H,0E6H,0E7H\r
	DB	0E8H,0E9H,0EAH,0EBH,0ECH,0EDH,0EEH,0EFH\r
	DB	0F0H,0F1H,0F2H,0F3H,0F4H,0F5H,0F6H,0F7H\r
	DB	0F8H,0F9H,0FAH,0FBH,0FCH,0FDH,0FEH,0FFH\r
\r
UpperRes	EQU	DWORD PTR [BP+10]\r
UpperInp	EQU	DWORD PTR [BP+6]\r
\r
UpperStr	PROC	FAR\r
		PUSH	BP\r
		MOV	BP,SP\r
		PUSH	DS\r
		LDS	SI,UpperInp\r
		LES	DI,UpperRes\r
		CLD\r
		LODSB\r
		STOSB\r
		MOV	CL,AL\r
		XOR	CH,CH\r
		MOV	BX,OFFSET UCTAB\r
		JCXZ	U2\r
U1:		LODSB\r
		XLAT	CS:[BX]\r
		STOSB\r
		LOOP	U1\r
U2:		POP	DS\r
		POP	BP\r
		RET	4\r
UpperStr	ENDP\r
\r
LowerRes	EQU	DWORD PTR [BP+10]\r
LowerInp	EQU	DWORD PTR [BP+6]\r
\r
LowerStr	PROC	FAR\r
		PUSH	BP\r
		MOV	BP,SP\r
		PUSH	DS\r
		LDS	SI,LowerInp\r
		LES	DI,LowerRes\r
		CLD\r
		LODSB\r
		STOSB\r
		MOV	CL,AL\r
		XOR	CH,CH\r
		MOV	BX,OFFSET LCTAB\r
		JCXZ	L2\r
L1:		LODSB\r
		XLAT	CS:[BX]\r
		STOSB\r
		LOOP	L1\r
L2:		POP	DS\r
		POP	BP\r
		RET	4\r
LowerStr	ENDP\r
\r
UpChar		EQU	BYTE PTR [BP+6]\r
\r
UpCase		PROC	FAR\r
		PUSH	BP\r
		MOV	BP,SP\r
		MOV	AL,UpChar\r
		MOV	BX,OFFSET UCTAB\r
		XLAT	CS:[BX]\r
		POP	BP\r
		RET	2\r
UpCase		ENDP\r
\r
LoChar		EQU	BYTE PTR [BP+6]\r
\r
LoCase		PROC	FAR\r
		PUSH	BP\r
		MOV	BP,SP\r
		MOV	AL,LoChar\r
		MOV	BX,OFFSET LCTAB\r
		XLAT	CS:[BX]\r
		POP	BP\r
		RET	2\r
LoCase		ENDP\r
\r
\r
COLTAB:	DB	000H,001H,002H,003H,004H,005H,006H,007H\r
	DB	008H,009H,00AH,00BH,00CH,00DH,00EH,00FH\r
	DB	010H,011H,012H,013H,014H,015H,016H,017H\r
	DB	018H,019H,01AH,01BH,01CH,01DH,01EH,01FH\r
	DB	020H,021H,022H,023H,024H,025H,026H,027H\r
	DB	028H,029H,02AH,02BH,02CH,02DH,02EH,02FH\r
	DB	030H,031H,032H,033H,034H,035H,036H,037H\r
	DB	038H,039H,03AH,03BH,03CH,03DH,03EH,03FH\r
	DB	040H,041H,042H,043H,044H,045H,046H,047H\r
	DB	048H,049H,04AH,04BH,04CH,04DH,04EH,04FH\r
	DB	050H,051H,052H,053H,054H,055H,056H,057H\r
	DB	058H,059H,05AH,028H,02FH,029H,05EH,05FH\r
	DB	060H,041H,042H,043H,044H,045H,046H,047H\r
	DB	048H,049H,04AH,04BH,04CH,04DH,04EH,04FH\r
	DB	050H,051H,052H,053H,054H,055H,056H,057H\r
	DB	058H,059H,05AH,028H,02FH,029H,07EH,07FH\r
	DB	043H,059H,045H,041H,05BH,041H,05DH,043H\r
	DB	045H,045H,045H,049H,049H,049H,05BH,05DH\r
	DB	045H,05BH,05BH,04FH,05CH,04FH,055H,055H\r
	DB	059H,05CH,059H,05CH,024H,05CH,024H,024H\r
	DB	041H,049H,04FH,055H,04EH,04EH,041H,04FH\r
	DB	03FH,0A9H,0AAH,0ABH,0ACH,021H,022H,024H\r
	DB	0B0H,0B1H,0B2H,0B3H,0B4H,0B5H,0B6H,0B7H\r
	DB	0B8H,0B9H,0BAH,0BBH,0BCH,0BDH,0BEH,0BFH\r
	DB	0C0H,0C1H,0C2H,0C3H,0C4H,0C5H,0C6H,0C7H\r
	DB	0C8H,0C9H,0CAH,0CBH,0CCH,0CDH,0CEH,0CFH\r
	DB	0D0H,0D1H,0D2H,0D3H,0D4H,0D5H,0D6H,0D7H\r
	DB	0D8H,0D9H,0DAH,0DBH,0DCH,0DDH,0DEH,0DFH\r
	DB	0E0H,053H,0E2H,0E3H,0E4H,0E5H,0E6H,0E7H\r
	DB	0E8H,0E9H,0EAH,0EBH,0ECH,0EDH,0EEH,0EFH\r
	DB	0F0H,0F1H,0F2H,0F3H,0F4H,0F5H,0F6H,0F7H\r
	DB	0F8H,0F9H,0FAH,0FBH,0FCH,0FDH,0FEH,0FFH\r
\r
KeyLng		EQU	BYTE PTR [BP+6]\r
KeyPos		EQU	BYTE PTR [BP+8]\r
CompStr2	EQU	DWORD PTR [BP+10]\r
CompStr1	EQU	DWORD PTR [BP+14]\r
	\r
CompStr		PROC	FAR	\r
		PUSH	BP\r
		MOV	BP,SP\r
		PUSH	DS\r
		XOR	BX,BX\r
		XOR	CX,CX\r
		XOR	DX,DX\r
		CLD			; string ops forward\r
		LDS	SI,CompStr1\r
		LES	DI,CompStr2\r
		MOV	BL,KeyPos\r
		DEC	BL\r
		JGE	LCSTR1\r
		INC	BL\r
LCSTR1:		MOV	BH,KeyLng\r
		LODSB	\r
		MOV	AH,ES:[DI]\r
		INC	DI\r
		CMP	BL,AL\r
		JBE	LCSTR2\r
		CMP	BL,AH\r
		JA	LCSTR6\r
		DEC	DL\r
		JMP	LCSTR6\r
LCSTR2:		CMP	BL,AH\r
		JBE	LCSTR3\r
		INC	DL\r
		JMP	LCSTR6\r
LCSTR3:		SUB	CL,BL\r
		CMP	AL,AH\r
		JBE	LCSTR4\r
		ADD	CL,AH\r
		JMP	LCSTR5\r
LCSTR4:		ADD	CL,AL						\r
LCSTR5:		MOV	DL,AL\r
		SUB	DL,AH\r
		CMP	BH,CL\r
		JA	LCSTR6\r
		MOV	CL,BH\r
		XOR	DX,DX\r
LCSTR6:		CMP	CL,0\r
		JE	OneEmpty\r
		XOR	BH,BH\r
		ADD	SI,BX\r
		ADD	DI,BX\r
		MOV	BX,OFFSET COLTAB\r
LoopEnt:	LODSB\r
		XLAT	CS:[BX]\r
		MOV	AH,AL\r
		MOV	AL,ES:[DI]\r
		INC	DI\r
		XLAT	CS:[BX]\r
		CMP	AH,AL\r
		LOOPE	LoopEnt\r
		JA	Larger\r
		JB	Less\r
OneEmpty:	MOV	AL,1\r
		CMP	DL,0\r
		JE	Finish\r
		JG	Larger\r
Less:		MOV	AL,0\r
		JMP	Finish\r
Larger:		MOV	AL,2\r
		JMP	Finish\r
Finish:		POP	DS\r
		POP	BP\r
		RET	12								\r
CompStr		ENDP\r
\r
CODE		ENDS\r
\r
		END\r
\r
\r
«eof»