|
|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 1408 (0x580)
Types: TextFile
Names: »ERASE.MAC«
└─⟦811637d18⟧ Bits:30005383 Microsoft COBOL-80 v4.01
└─⟦this⟧ »ERASE.MAC«
$ERASE: LXI D,1 ;SEQUENTIAL POSITION 1(HOME)
CALL $CMPR ; VS CURRENT POSITION
JZ CLSCR ;IF HOME POSITION, USE CLEAR SCREEN CODE
PUSH H ;CURRENT CURSOR POSITION
CALL $CMPL ;NEGATE IT
PUSH H ; AND SAVE ON STACK
LDA $CRLEN ;SCREEN LENGHT
MOV D,A ; TO D
LDA $CRWID ;SCREEN WIDTH
MOV E,A ; TO E
CALL $MULDE ;PRODUCT IS SEQ POS OF EOS
POP D ;-CURRENT POS
DAD D ;DIFFERENCE
INX H ; PLUS ONE IS NUMBER OF SPACES TO SEND
ERASLP: MVI A,' ' ;ASCII SPACE
CALL $OUTCH ;SEND THE SPACE
DCX H ;DECR COUNTER
MOV A,H ;IF SPACE COUNTER
ORA L ;IS NOT 0
JNZ ERASLP ;MORE SPACES TO SEND
POP H ;ORIG. CURSOR POS
CALL $ROWCL ;CONVERT TO ROW AND COLUMN FORMAT
JMP $SETCR ;PUT CURSOR BACK TO ORG. POS
CLSCR: MVI A,CLEAR ;CLEAR SCREEN CODE
JMP $OUTCH ;SEND IT AND RETURN
;****************************************************
; ERASE TO END OF LINE
; ÆHÅ = CURRENT ROW NUMBER
; ÆLÅ = CURRENT COLUMN NUMBER
;****************************************************
;
$EOL: PUSH H ;CURRENT CURSOR POS.
LDA $CRWID ;SCREEN WIDTH
MOV E,A ; TO E
EOLOOP: MVI A,' ' ;ASCII SPACE
CALL $OUTCH ;SEND IT
INR L ;BUMP CURRENT COLUMN
MOV A,E ;SCREEN WIDTH
CMP L ; VS CURRENT COLUMN
JNC EOLOOP ;LOOP IF COLUMN =< WIDTH
POP H ;ORIG. CURSER POS.
JMP $SETCR ;SET CURSOR AND RETURN
«eof»