home *** CD-ROM | disk | FTP | other *** search
- V SET 0
- M SET 0
- F SET 0
- ;TYPE
- ;BYTE = 0..255;
- ;
- ;{procedure to erase lines on the terminal screen starting at
- ;a given line and for a given number of lines}
- ;
- ;
- ;PROCEDURE ERASE_LINES(STARTING_LINE,NUMBER_OF_LINES:BYTE);
- ;
- ;VAR
- ;I:INTEGER;
- ;BLANKS:STRING 80;
- ;
- ;BEGIN
- L150
- NAME ERASE_LINES
- ENTRY ERASE_LINES
- ERASE_LINES:
- ENTR D,2,83
- ;
- ;BLANKS:=' ';{40SPACES}
- STMT D,1
- JR L164
- L163
- DB ' ',48
- L164
- LXI H,L163+48
- XCHG
- PUSH IX
- POP H
- DCX H
- DCX H
- XCHG
- LXI B,81
- LDDR
- ;FOR I:= 1 TO NUMBER_OF_LINES DO
- STMT D,2
- MOV 0(IX),A
- MVI -1(IX),1
- PUSH IX
- MOV H,A
- MOV L,8(IX)
- XTHL
- L173
- MOV D,M
- DCX H
- MOV E,M
- XTHL
- PUSH H
- GE D,0
- JNC L174
- ; BEGIN
- STMT D,3
- ; WRITE(CHR(27),'=',CHR(STARTING_LINE+31),CHR(32),BLANKS,BLANKS);
- STMT D,4
- LXI H,27
- STMT M,4
- PUSH H
- LXI H,769
- XTHL
- LXI B,1
- PUSH B
- MOV H,L
- PUSH H
- INX S
- LXI H,769
- PUSH H
- LXI B,1
- PUSH B
- LXI H,61
- MOV H,L
- PUSH H
- INX S
- MOV H,A
- MOV L,9(IX)
- LXI D,31
- DADD D,0
- STMT M,4
- PUSH H
- LXI H,769
- XTHL
- LXI B,1
- PUSH B
- MOV H,L
- PUSH H
- INX S
- LXI H,32
- STMT M,4
- PUSH H
- LXI H,769
- XTHL
- LXI B,1
- PUSH B
- MOV H,L
- PUSH H
- INX S
- LXI H,1793
- PUSH H
- LXI B,81
- PUSH B
- LXI H,-81
- DADD S
- SPHL
- XCHG
- PUSH IX
- POP H
- LXI B,-82
- DADD B
- LXI B,81
- LDIR
- LXI H,1793
- PUSH H
- LXI B,81
- PUSH B
- LXI H,-81
- DADD S
- SPHL
- XCHG
- PUSH IX
- POP H
- LXI B,-82
- DADD B
- LXI B,81
- LDIR
- LXI B,190
- CALL L111
- ; STARTING_LINE:=STARTING_LINE + 1;
- STMT D,5
- MOV H,A
- MOV L,9(IX)
- INX H
- RCHK H,0,255
- MOV 9(IX),L
- ; END
- STMT D,6
- ;END;
- CTRL M,6
- POP H
- XTHL
- INR M
- INX H
- JRNZ L247
- INR M
- JV L248
- L247
- JMP L173
- L174
- POP D
- L248
- POP D
- EXIT D,2
-