home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol064 / erase.src < prev    next >
Text File  |  1984-04-29  |  2KB  |  155 lines

  1. V    SET              0
  2. M    SET              0
  3. F    SET              0
  4. ;TYPE
  5. ;BYTE = 0..255;
  6. ;
  7. ;{procedure to erase lines on the terminal screen starting at 
  8. ;a given line and for a given number of lines}
  9. ;
  10. ;
  11. ;PROCEDURE ERASE_LINES(STARTING_LINE,NUMBER_OF_LINES:BYTE);
  12. ;
  13. ;VAR
  14. ;I:INTEGER;
  15. ;BLANKS:STRING 80;
  16. ;
  17. ;BEGIN
  18. L150
  19.     NAME ERASE_LINES
  20.     ENTRY ERASE_LINES
  21. ERASE_LINES:
  22.     ENTR    D,2,83
  23. ;
  24. ;BLANKS:='                                                ';{40SPACES}
  25.     STMT    D,1
  26.     JR    L164
  27. L163
  28.     DB    '                                                ',48
  29. L164
  30.     LXI    H,L163+48
  31.     XCHG
  32.     PUSH    IX
  33.     POP    H
  34.     DCX    H
  35.     DCX    H
  36.     XCHG
  37.     LXI    B,81
  38.     LDDR
  39. ;FOR  I:= 1 TO NUMBER_OF_LINES DO
  40.     STMT    D,2
  41.     MOV    0(IX),A
  42.     MVI    -1(IX),1
  43.     PUSH    IX
  44.     MOV    H,A
  45.     MOV    L,8(IX)
  46.     XTHL
  47. L173
  48.     MOV    D,M
  49.     DCX    H
  50.     MOV    E,M
  51.     XTHL
  52.     PUSH    H
  53.     GE    D,0
  54.     JNC    L174
  55. ;    BEGIN
  56.     STMT    D,3
  57. ;    WRITE(CHR(27),'=',CHR(STARTING_LINE+31),CHR(32),BLANKS,BLANKS);
  58.     STMT    D,4
  59.     LXI    H,27
  60.     STMT    M,4
  61.     PUSH    H
  62.     LXI    H,769
  63.     XTHL
  64.     LXI    B,1
  65.     PUSH    B
  66.     MOV    H,L
  67.     PUSH    H
  68.     INX    S
  69.     LXI    H,769
  70.     PUSH    H
  71.     LXI    B,1
  72.     PUSH    B
  73.     LXI    H,61
  74.     MOV    H,L
  75.     PUSH    H
  76.     INX    S
  77.     MOV    H,A
  78.     MOV    L,9(IX)
  79.     LXI    D,31
  80.     DADD    D,0
  81.     STMT    M,4
  82.     PUSH    H
  83.     LXI    H,769
  84.     XTHL
  85.     LXI    B,1
  86.     PUSH    B
  87.     MOV    H,L
  88.     PUSH    H
  89.     INX    S
  90.     LXI    H,32
  91.     STMT    M,4
  92.     PUSH    H
  93.     LXI    H,769
  94.     XTHL
  95.     LXI    B,1
  96.     PUSH    B
  97.     MOV    H,L
  98.     PUSH    H
  99.     INX    S
  100.     LXI    H,1793
  101.     PUSH    H
  102.     LXI    B,81
  103.     PUSH    B
  104.     LXI    H,-81
  105.     DADD    S
  106.     SPHL
  107.     XCHG
  108.     PUSH    IX
  109.     POP    H
  110.     LXI    B,-82
  111.     DADD    B
  112.     LXI    B,81
  113.     LDIR
  114.     LXI    H,1793
  115.     PUSH    H
  116.     LXI    B,81
  117.     PUSH    B
  118.     LXI    H,-81
  119.     DADD    S
  120.     SPHL
  121.     XCHG
  122.     PUSH    IX
  123.     POP    H
  124.     LXI    B,-82
  125.     DADD    B
  126.     LXI    B,81
  127.     LDIR
  128.     LXI    B,190
  129.     CALL    L111
  130. ;    STARTING_LINE:=STARTING_LINE + 1;
  131.     STMT    D,5
  132.     MOV    H,A
  133.     MOV    L,9(IX)
  134.     INX    H
  135.     RCHK    H,0,255
  136.     MOV    9(IX),L
  137. ;    END
  138.     STMT    D,6
  139. ;END;
  140.     CTRL    M,6
  141.     POP    H
  142.     XTHL
  143.     INR    M
  144.     INX    H
  145.     JRNZ    L247
  146.     INR    M
  147.     JV    L248
  148. L247
  149.     JMP    L173
  150. L174
  151.     POP    D
  152. L248
  153.     POP    D
  154.     EXIT    D,2
  155.