; ; ECTL1.ASM - Control Key Functions part 1 ; LITRAL: INC LITFLG RTS ; BEGLINE: JSR crlf ;mov cursor, no error at bb BMI BEGLN1 jsr chtest BEQ BEGLINE ;Y=1 if EOL JSR crrt BEGLN1: RTS ; CHGCS: JSR SETMOD ; CHANGE CASE JSR CURTSP BMI CHGC2 AND #$DF ; MAKE LWR, UPR CMP #$41 ; A BCC CHGC1 CMP #$5B ; [=Z+1 BCS CHGC1 LDA (PU),Y ; GET CHR EOR #$20 ; INV CASE STA (PU),Y ; REPLACE JSR L$WXEP ;Print new CHGC1: JSR CURSRT JSR SCREEN CHGC2: RTS ;EXIT ; ; CUTSR: LOADW PT, R0 JSR PULTR0 STOREW R0, PT ;In case it don't fit in kilbuf, make continung easier JSR CUT BNEZWR R0, cutsrx JSR REDCLN RTS cutsrx: STX REDRFG RTS ; ;CUT is a general routine which cuts ;up to killbuf size between PU and R0. ;Ret w/ num EOLs in R0 ; CUT: JSR SETMOD LDA FUNCID CMP LASTFN BEQ CUT1 ; If no repeat, reset buffer MOVW KILLBOT, KILLTOP CUT1: JSR PULTR0 CLRWR R2 ;Counts EOLs for display routine ; Do the move ;Check upper limit CUT2: BEQWI KILLTOP, KILLIM, CUT3 ;check full BEQWAR PU, R0, CUT3 ;check done LDY #0 LDA (PU),Y STA (KILLTOP),Y CMP #EOL BNE CUT4 INCWR R2 ;Inc R2 if EOL CUT4: INCW PU INCW KILLTOP JMP CUT2 CUT3: MOVRR R2, R0 ;No. of EOLs RTS ; ; Make PU.LT.R0 if it isn't already ; PULTR0: BGEWRA R0, PU, PULT1 MKPLR0: MOVRR R0, R1 LOADW PU, R0 PULT2: JSR CURSLF BMI PULT1 BNEWAR PL, R1, PULT2 PULT1: RTS ; ; Make PU Greater then R0 ; MKPGR0: MOVRR R0, R1 LOADW PL, R0 PUGT2: BEQWAR PU, R1, PUGT1 JSR CURSRT BPL PUGT2 PUGT1: RTS ; DELC: JSR CURSRT BMI DELC1 JSR SCANSCR JSR POSITN JSR D$DEL DELC1: RTS ; ENDLIN: JSR crrt BMI ENDLN1 ;End of buffer jsr chtest BEQ ENDLIN JSR crlf ENDLN1: RTS ; SWPCUR: LOADW PT, R0 BEQW PU, PT, SWAP1 BGEW PU, PT, SWAP2 JSR MKPGR0 JMP SWAP3 SWAP2: JSR MKPLR0 SWAP3: STOREW R0, PT SWAP1: RTS ;EXIT ; DELBW: JSR BACKW JSR CUT BNEZWR R0, DELBW1 JSR REDCLN RTS DELBW1: JMP D$DEL2 ; ; CUTSRC: RTS ; BACKW: LOADW PU, R0 ;Save current BACKW2: JSR CURSLF BNE BACKW1 ;Quit on EOL,BB CMP #32 BEQ BACKW2 ;Loop over spcs CMP #127 BEQ BACKW1 ;Quit on TAB ; Have non-space BACKW3: JSR CURSLF BMI BACKW1 ;Quit on BB BNE BACKW4 ;Stop on: EOL, CMP #32 BEQ BACKW4 ; SPC, CMP #127 BNE BACKW3 ; TAB BACKW4: JSR CURSRT BACKW1: RTS ; FILL: ;Test for zero length beqw pt, pu, backw1 JSR SETMOD STX REDRFG LOADW PT, R0 ;Load R0 for JSR PULTR0 ;possible swap PSHST1 ;Save R0 JSR REPOSN ;Must put PS at valid place for scanscr JSR SCANSCR POPST1 ;R2 = current col ;R0 = stop addr ;Check initial condition FILL21: JSR CURTSP BEQ FILL20 ;br if normal char JSR CURSRT ;if EOL skip it LDA #0 STA R2,X BEQ FILL21 ; FILL20: JSR FILL1 ;Move till space BCC FILL2 ;If spc