|
|
DataMuseum.dkPresents historical artifacts from the history of: DANOSI |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DANOSI Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 7552 (0x1d80)
Types: TextFile
Names: »DOSUTIL.ASM«
└─⟦e2123b2a1⟧ Bits:30010498 DVBS1.SW2103.src.1.8-1 Pascal TOOLS JTAS 1989-04-26 LEIF NIELSEN E.d.
└─⟦this⟧ »UNITS\DOSUTIL.ASM«
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»