|
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 - 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»