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 "x" number of spaces to a write command or statement..
- ;corresponds to BASIC commands such as SPACE$(X) or TAB(x)...
- ;although in structured programming, it is stylistically better to format
- ;output using format commands such as x:9:2 for a real number or
- ;name:30 for a string, this function is often useful in designing a layout,
- ;and certainly is more "readable" in a program...}
- ;
- ;
- ;FUNCTION SPACE(X:BYTE):$STRING255;
- ;VAR
- ;I:INTEGER;
- ;S:$STRING255;
- ;
- ;BEGIN
- L170
- NAME SPACE
- ENTRY SPACE
- SPACE:
- ENTR D,2,258
- ;SETLENGTH(S,0);
- STMT D,1
- PUSH IX
- POP H
- DCX H
- DCX H
- PUSH H
- MOV H,A
- MOV L,A
- PUSH H
- CALL L169
- ;IF (X > 0) AND (X < 256) THEN FOR I:=1 TO X DO APPEND(S,' ');
- STMT D,2
- MOV H,A
- MOV L,8(IX)
- MVI A,0
- CMP L
- MOV A,H
- JNC L187
- MOV H,A
- MOV L,8(IX)
- LXI D,256
- LESS D,0
- JNC L184
- STMT D,3
- MOV 0(IX),A
- MVI -1(IX),1
- PUSH IX
- MOV H,A
- MOV L,8(IX)
- XTHL
- L209
- MOV D,M
- DCX H
- MOV E,M
- XTHL
- PUSH H
- GE D,0
- JNC L210
- STMT D,4
- PUSH IX
- POP H
- DCX H
- DCX H
- PUSH H
- LXI H,255
- PUSH H
- LXI H,288
- PUSH H
- LXI H,2
- PUSH H
- CALL L137
- CTRL M,4
- POP H
- XTHL
- INR M
- INX H
- JRNZ L229
- INR M
- JV L230
- L229
- JMP L209
- L210
- POP D
- L230
- POP D
- L184
- L186 EQU L184
- L187 EQU L186
- ;
- ;SPACE:=S;
- STMT D,5
- PUSH IX
- POP H
- DCX H
- DCX H
- RCHK S,255
- XCHG
- PUSH IX
- POP H
- LXI B,264
- DADD B
- XCHG
- LXI B,256
- LDDR
- ;END;
- STMT D,6
- EXIT D,1
-