.TITLE TIOIAS INTERACTIVE SCOPE HANDLER .SBTTL INTERACTIVE SCOPE HANDLER ; LAST EDIT ON 13-MAR-80 BY MARK BRAMHALL .IDENT /V36/ ORG TECOIO SCRLOD::RETURN ;REFERENCE TO GET THE OVERLAY INTO MEMORY... .PSECT CRTRUB,RO,I,GBL,REL,OVR ORG CRTRUB .ENABL LSB CRTRUB: BR 10$ ;BRANCH TO SET UP ROUTINE .ASSUME . EQ CRTRUB+2 CUPSEQ: .BLKW 4 ;CURSOR UP SEQUENCE POINTERS .ASSUME . EQ CRTRUB+12 ERLSEQ: .BLKW 4 ;ERASE LINE SEQUENCE POINTERS 10$: CLR R4 ;NO "WATCH" READ/WRITE REGION RETURN ; AND EXIT .DSABL LSB .SBTTL INTERACTIVE SCOPE CHARACTER/LINE DELETION ECHOING ;+ ; DELLIN - ECHO THE DELETION OF A LINE. ; ; CALL DELLIN ; ; R0, R1, R2, R3, R4 UNDEFINED ;- .PSECT TIOIAS,RO,I,GBL,REL,OVR ORG TIOIAS .ENABL LSB .ASSUME . EQ TIOIAS DELLIN: BR 100$ ;BRANCH TO THE REAL CODE HALT ;NEEDED FILLER... ;+ ; DELCHR - ECHO THE DELETION OF A CHARACTER. ; ; R0 = CHARACTER DELETED ; ; CALL DELCHR ; ; R0, R1, R2, R3, R4 UNDEFINED ;- .ASSUME . EQ TIOIAS+4 DELCHR: BR 10$ ;BRANCH TO THE REAL CODE HALT ;NEEDED FILLER... 10$: BIT #ET$CRT,ETYPE(R5) ;SCOPE? BEQ 110$ ;NOPE CMP R0,#SPACE ;NORMAL GRAPHIC? BHIS 50$ ;YES, DO 1 NORMAL SEQUENCE CMP R0,#ESC ;ESCAPE? BEQ 50$ ;YES, DO 1 NORMAL SEQUENCE SUB #BS,R0 ;BIAS THE CHARACTER BY BACKSPACE BLO 40$ ;LOWER THAN BACKSPACE, DO 2 NORMAL SEQUENCES CMP R0,#CR-BS ;IS IT CARRIAGE RETURN OR HIGHER? BHI 40$ ;HIGHER, DO 2 NORMAL SEQUENCES BEQ 60$ ;IT'S CARRIAGE RETURN, RE-PRINT THE LINE ASL R0 ;ELSE FORM FOR WORD DISPATCHING ADD R0,PC ; AND DO A JUMP DISPATCH... BR 60$ ;, RE-PRINT LINE BR 60$ ;, RE-PRINT LINE BR 30$ ;, DO 1 CURSOR UP SEQUENCE BR 20$ ;, DO 2 CURSOR UP SEQUENCES MOV PC,-(SP) ;, DO 4 CURSOR UP SEQUENCES 20$: MOV PC,-(SP) ;SET TO DO THE BELOW TWICE 30$: MOV #CUPSEQ,R2 ;SET CURSOR UP SEQUENCE BR 80$ ; AND GO DO IT 40$: MOV PC,-(SP) ;SET TO DO THE BELOW TWICE 50$: CALLX PRINTS,R2,120$ ;GO DO A NORMAL CHARACTER ERASE SEQUENCE 60$: MOV #PRTLIN,-(SP) ;RE-PRINT LINE AFTER ERASEING IT 70$: MOV #ERLSEQ,R2 ;GET ERASE LINE SEQUENCE POINTER POINTER 80$: ADD CRTYPE(R5),R2 ;FORM POINTER TO CORRECT SEQUENCE POINTER 90$: CALLX PRINTS,R0 ;DO A SEQUENCE (YES, I KNOW, WRONG REGISTER!) 100$: BIT #ET$CRT,ETYPE(R5) ;SCOPE? BNE 70$ ;YEP CALLRX CRLF ;NOPE 110$: CALLRX TYPE ;GO ECHO THE DELETED CHARACTER 120$: .BYTE 140$-130$ ;NORMAL CHARACTER ERASE SEQUENCE 130$: .BYTE BS,SPACE,BS ; 140$: ;REFERENCE ONLY FOR FORMING SEQUENCE'S SIZE .DSABL LSB .END