home *** CD-ROM | disk | FTP | other *** search
- ;TYPE
- ;$STRING0 = STRING 0;
- ;$STRING80 =STRING 80;
- ;$STRING255 = STRING 255;
- ;
- ;VAR
- ;DATA:$STRING80;
- ;FUNCTION LENGTH(x:$STRING255):INTEGER;EXTERNAL;
- EXTD L156,LENGTH
- ;PROCEDURE SETLENGTH(VAR X:$STRING0; Y:INTEGER);EXTERNAL;
- EXTD L157,SETLENGT
- ;
- ;{function to convert a string "x" to all lower case characters and then
- ;return this converted string..
- ;corresponds to the BASIC command LCASE$(A$)..}
- ;
- ;
- ;FUNCTION LCASE(X:$STRING255):$STRING255;
- ;LABEL 1;
- ;VAR
- ;I,LEN,ASCII:INTEGER;
- ;LCASEX:$STRING80;
- ;
- ;BEGIN
- L158
- NAME LCASE
- ENTRY LCASE
- LCASE:
- ENTR D,2,87
- ;SETLENGTH(LCASEX,0);
- STMT D,1
- PUSH IX
- POP H
- LXI B,-6
- DADD B
- PUSH H
- MOV H,A
- MOV L,A
- PUSH H
- CALL L157
- ;LEN:=LENGTH(X);
- STMT D,2
- PUSH IX
- POP H
- LXI B,263
- DADD B
- SPSH S,255
- CALL L156
- STMT M,2
- MOV -4(IX),D
- MOV -5(IX),E
- ;IF (LEN = 0) OR (LEN > 255) THEN GOTO 1;
- STMT D,3
- MOV L,-5(IX)
- MOV H,-4(IX)
- MOV D,A
- MOV E,A
- DSB1 D,0
- JZ L186
- MOV L,-5(IX)
- MOV H,-4(IX)
- LXI D,255
- GRET D,0
- JNC L185
- L184
- L186 EQU L184
- STMT D,4
- CTRL M,4
- JMP L159
- L185
- ;
- ;FOR I:=1 TO LEN DO
- STMT D,5
- MOV -2(IX),A
- MVI -3(IX),1
- PUSH IX
- POP H
- DCX H
- DCX H
- PUSH H
- MOV L,-5(IX)
- MOV H,-4(IX)
- XTHL
- L213
- MOV D,M
- DCX H
- MOV E,M
- XTHL
- PUSH H
- GE D,0
- JNC L214
- ;
- ; IF (ORD(X[I]) > 64) AND (ORD(X[I]) < 91) THEN
- STMT D,6
- MOV L,-3(IX)
- MOV H,-2(IX)
- RCHK H,1,255
- XCHG
- LXI H,263
- ADDR IX
- MOV D,A
- MOV E,M
- STMT M,6
- LXI H,64
- XCHG
- GRET D,0
- JNC L225
- MOV L,-3(IX)
- MOV H,-2(IX)
- RCHK H,1,255
- XCHG
- LXI H,263
- ADDR IX
- MOV D,A
- MOV E,M
- STMT M,6
- LXI H,91
- XCHG
- LESS D,0
- ; APPEND(LCASEX,CHR(ORD(X[I])+32)) ELSE
- JNC L222
- STMT D,7
- PUSH IX
- POP H
- LXI B,-6
- DADD B
- PUSH H
- LXI H,80
- PUSH H
- MOV L,-3(IX)
- MOV H,-2(IX)
- RCHK H,1,255
- XCHG
- LXI H,263
- ADDR IX
- MOV D,A
- MOV E,M
- STMT M,7
- LXI H,32
- DADD D,0
- STMT M,7
- INR H
- PUSH H
- LXI H,2
- PUSH H
- CALL L137
- ; APPEND(LCASEX,X[I]);
- JMP L294
- L222
- L224 EQU L222
- L225 EQU L224
- STMT D,8
- PUSH IX
- POP H
- LXI B,-6
- DADD B
- PUSH H
- LXI H,80
- PUSH H
- MOV L,-3(IX)
- MOV H,-2(IX)
- RCHK H,1,255
- XCHG
- LXI H,263
- ADDR IX
- MOV D,A
- MOV E,M
- INR D
- PUSH D
- LXI H,2
- PUSH H
- CALL L137
- L294
- CTRL M,8
- POP H
- XTHL
- INR M
- INX H
- JRNZ L313
- INR M
- JV L314
- L313
- JMP L213
- L214
- POP D
- L314
- POP D
- ;
- ;{97 represents a little 'a' and 122 a little 'z'..32 is the offset between
- ; a capital and a little letter in ascii code}
- ;
- ;LCASE:=LCASEX;
- STMT D,9
- PUSH IX
- POP H
- LXI B,-6
- DADD B
- RCHK S,255
- XCHG
- PUSH IX
- POP H
- LXI B,519
- DADD B
- XCHG
- LXI B,256
- LDDR
- ;1: {immediate exit upon fatal error}
- STMT D,10
- L159
- ;
- ;END;
- STMT D,11
- EXIT D,256
-