home *** CD-ROM | disk | FTP | other *** search
- ;
- ;TYPE
- ;$STRING80 = STRING 80;
- ;$STRING0 = STRING 0;
- ;$STRING255 = STRING 255;
- ;BYTE = 0..255;
- ;VAR
- ;DATA:$STRING255;
- ;NUMBER:INTEGER;
- ;
- ;function length(x:$string255):INTEGER;external;
- EXTD L168,LENGTH
- ;PROCEDURE setlength(var x:$string0; y : INTEGER); external;
- EXTD L169,SETLENGT
- ;
- ;{function to return the "y" right most characters of a string "x"..
- ;corresponds to the BASIC command RIGHT$(A$,X);..
- ;requires pascal/z external functions length and setlength..}
- ;
- ;FUNCTION RIGHT(X:$STRING255; Y:BYTE):$STRING255;
- ;
- ;{returns the last or right-most y characters in a string x}
- ;
- ;LABEL 1;
- ;VAR
- ;LEN,I:INTEGER;
- ;R:$STRING255;
- ;
- ;BEGIN
- L170
- NAME RIGHT
- ENTRY RIGHT
- RIGHT:
- ENTR D,2,260
- ;SETLENGTH(R,0);
- STMT D,1
- PUSH IX
- POP H
- LXI B,-4
- DADD B
- PUSH H
- MOV H,A
- MOV L,A
- PUSH H
- CALL L169
- ;LEN:=LENGTH(X);
- STMT D,2
- PUSH IX
- POP H
- LXI B,264
- DADD B
- SPSH S,255
- CALL L168
- STMT M,2
- MOV -2(IX),D
- MOV -3(IX),E
- ;
- ;IF (LEN = 0) OR (Y < 1) THEN GOTO 1;
- STMT D,3
- MOV L,-3(IX)
- MOV H,-2(IX)
- MOV D,A
- MOV E,A
- DSB1 D,0
- JZ L198
- MOV H,A
- MOV L,8(IX)
- MOV A,L
- CMPI D,1
- MOV A,H
- JNC L197
- L196
- L198 EQU L196
- STMT D,4
- CTRL M,4
- JMP L171
- L197
- ;IF Y >= LEN THEN
- STMT D,5
- MOV H,A
- MOV L,8(IX)
- MOV E,-3(IX)
- MOV D,-2(IX)
- GE D,0
- ; BEGIN
- JNC L218
- STMT D,6
- ; R:=X;
- STMT D,7
- PUSH IX
- POP H
- LXI B,264
- DADD B
- RCHK S,255
- XCHG
- PUSH IX
- POP H
- LXI B,-4
- DADD B
- XCHG
- LXI B,256
- LDDR
- ; GOTO 1;
- STMT D,8
- CTRL M,8
- JMP L171
- ; END;
- STMT D,9
- L218
- ;
- ;FOR I:= (LEN -Y+1) TO LEN DO APPEND(R,X[I]);
- STMT D,10
- MOV L,-3(IX)
- MOV H,-2(IX)
- MOV D,A
- MOV E,8(IX)
- DSUB D,0
- INX H
- MOV 0(IX),H
- MOV -1(IX),L
- XCHG
- PUSH IX
- MOV L,-3(IX)
- MOV H,-2(IX)
- XTHL
- L251
- MOV D,M
- DCX H
- MOV E,M
- XTHL
- PUSH H
- GE D,0
- JNC L252
- STMT D,11
- PUSH IX
- POP H
- LXI B,-4
- DADD B
- PUSH H
- LXI H,255
- PUSH H
- MOV L,-1(IX)
- MOV H,0(IX)
- RCHK H,1,255
- XCHG
- LXI H,264
- ADDR IX
- MOV D,A
- MOV E,M
- INR D
- PUSH D
- LXI H,2
- PUSH H
- CALL L137
- CTRL M,11
- POP H
- XTHL
- INR M
- INX H
- JRNZ L277
- INR M
- JV L278
- L277
- JMP L251
- L252
- POP D
- L278
- POP D
- ;
- ;1:
- STMT D,12
- L171
- ;RIGHT:=R;
- STMT D,13
- PUSH IX
- POP H
- LXI B,-4
- DADD B
- RCHK S,255
- XCHG
- PUSH IX
- POP H
- LXI B,520
- DADD B
- XCHG
- LXI B,256
- LDDR
- ;END;
- STMT D,14
- EXIT D,257
-