NEW PREFIX AUTO 4,1 .LIST OFF *-------------------------------------- * ^A = Help * ^B = Begin Block * ^C = Copy Block * ^D = Delete Block * ^E = End Block * ^F = Find... * ^G = Go To SOL ***** ^H * ^I = ***** J,K * ^L = Go To EOL ***** ^M * ^N = Find Next * ^O = Page Up * ^P = Page Down * ^Q = Quit * ^R = Replace... * ^S = Save * ^T = Go To Top of file ***** ^U * ^V = Paste Block * ^W = Erase line * ^X = Cut Block * ^Y = End Of File * ^Z = Undo *-------------------------------------- Ctrl.Invalid clc rts *-------------------------------------- Ctrl.A lda #PromptModeHelp >STA.G PromptMode >LDYA L.MSG.HELP >STYA ZPPTR1 stz .1+1 .1 ldy #0 ldx #0 jsr GotoXY lda (ZPPTR1) beq .8 >PUSHW ZPPTR1 >PUSHBI 2 >LDYA L.MSG.HELPLINE >SYSCALL printf bcs .9 inc .1+1 lda (ZPPTR1) sec adc ZPPTR1 sta ZPPTR1 bcc .1 inc ZPPTR1+1 bra .1 .8 jsr SCRN.UpdateStatusBar bcs .9 rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.B jsr BUF.ComputeCOffset lda BUF.COffset ldy #SelStart sta (pData),y lda BUF.COffset+1 iny sta (pData),y jsr SCRN.UpdateMain bcs .9 rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.C jsr BUF.SelToClipboard bcs .9 .8 clc rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.E jsr BUF.ComputeCOffset lda BUF.COffset ldy #SelEnd sta (pData),y lda BUF.COffset+1 iny sta (pData),y jsr SCRN.UpdateMain bcs .9 rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.F lda #PromptModeFind >STA.G PromptMode jsr SCRN.UpdateStatusBar bcs .9 rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.G ldy #FileX lda (pData),y beq .8 lda #0 sta (pData),y jsr SCRN.UpdateViewPort bcs .9 .8 clc rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.BS ldy #FileX lda (pData),y beq .1 already at begining of line dec sta (pData),y bra .3 .1 ldy #FileY+1 lda (pData),y tax dey ora (pData),y beq .8 lda (pData),y bne .2 dex .2 dec jsr BUF.GetLineAX bcs .8 tya ldy #FileX sta (pData),y sec ldy #FileY lda (pData),y sbc #1 sta (pData),y iny lda (pData),y sbc #0 sta (pData),y .3 jsr SCRN.UpdateViewPort bcs .9 .8 clc rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.TAB clc rts *-------------------------------------- Ctrl.LF ldy #FileY+1 lda (pData),y tax dey lda (pData),y inc bne .1 inx .1 jsr BUF.GetLineAX bcs .8 tya Y = line length ldy #FileX cmp (pData),y bcs .2 sta (pData),y .2 ldy #FileY lda (pData),y inc sta (pData),y bne .3 iny lda (pData),y inc sta (pData),y .3 jsr SCRN.UpdateViewPort bcs .9 .8 clc rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.VT ldy #FileY+1 lda (pData),y tax dey ora (pData),y beq .8 lda (pData),y bne .1 dex .1 dec jsr BUF.GetLineAX bcs .8 tya Y = line length ldy #FileX cmp (pData),y bcs .2 sta (pData),y .2 sec ldy #FileY lda (pData),y sbc #1 sta (pData),y iny lda (pData),y sbc #0 sta (pData),y jsr SCRN.UpdateViewPort bcs .9 .8 clc rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.L jsr BUF.GetLine bcs .8 tya Y = line length ldy #FileX sta (pData),y jsr SCRN.UpdateViewPort bcs .9 .8 clc rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.CR lda #C.CR jsr BUF.InsertA bcs .9 ldy #FileX lda #0 sta (pData),y jsr SCRN.UpdateMain bcs .9 clc rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.N clc rts *-------------------------------------- Ctrl.O ldy #FileY+1 lda (pData),y tax dey lda (pData),y ldy #ViewPortH sec sbc (pData),y pha txa sbc #0 bcc .8 ldy #FileY+1 sta (pData),y dey pla sta (pData),y lda #0 ldy #FileX sta (pData),y jsr SCRN.UpdateViewPort bcs .9 rts .9 jmp Ctrl.Q .8 pla jmp Ctrl.T *-------------------------------------- Ctrl.P ldy #FileY+1 lda (pData),y tax dey lda (pData),y ldy #ViewPortH clc adc (pData),y bcc .1 inx .1 pha phx jsr BUF.GetLineAX A,X = FileY+PAGE bcs .8 tya Y = line length ldy #FileX sta (pData),y ldy #FileY+1 pla sta (pData),y dey pla sta (pData),y jsr SCRN.UpdateViewPort bcs .9 rts .9 jmp Ctrl.Q .8 pla pla jmp Ctrl.Y *-------------------------------------- Ctrl.Q lda #$FF >STA.G bCANCEL clc rts *-------------------------------------- Ctrl.R lda #PromptModeReplace >STA.G PromptMode jsr SCRN.UpdateStatusBar bcs .9 rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.S lda #PromptModeSave >STA.G PromptMode >LDA.G hFileName beq .2 >SYSCALL GetMemPtr >STYA ZPPTR1 ldy #$ff .1 iny lda (ZPPTR1),y sta (pData),y bne .1 tya .2 >STA.G PromptBufPtr jsr SCRN.UpdateStatusBar bcs .9 clc rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.T >STZ.G FileX >STZW.G FileY jsr SCRN.UpdateViewPort bcs .9 rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.FS jsr BUF.GetLine bcs .8 tya Y = line length ldy #FileX cmp (pData),y beq .1 already at end of line lda (pData),y inc sta (pData),y bra .3 .1 ldy #FileY+1 lda (pData),y tax dey lda (pData),y inc bne .2 inx .2 jsr BUF.GetLineAX bcs .8 ldy #FileY CC lda (pData),y adc #1 sta (pData),y iny lda (pData),y adc #0 sta (pData),y ldy #FileX lda #0 sta (pData),y .3 jsr SCRN.UpdateViewPort bcs .9 .8 clc rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.V jsr BUF.InsertClipboard bcs .9 jsr SCRN.UpdateMain bcs .9 jsr SCRN.UpdateStatusBar bcs .9 rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.W jsr BUF.ComputeCOffset Y=line len phy lda BUF.LOffset ldy #SelStart sta (pData),y lda BUF.LOffset+1 iny sta (pData),y pla sec +1 for CR adc BUF.LOffset ldy #SelEnd sta (pData),y lda BUF.LOffset+1 adc #0 iny sta (pData),y bra Ctrl.D *-------------------------------------- Ctrl.X jsr BUF.SelToClipboard bcs Ctrl.X.RTS Ctrl.D jsr BUF.DelSel bcs .9 jsr SCRN.UpdateMain bcs .9 jmp SCRN.UpdateStatusBar .9 jmp Ctrl.Q Ctrl.X.RTS rts *-------------------------------------- Ctrl.Y ldy #FileY+1 lda (pData),y tax dey lda (pData),y inc bne .1 inx .1 jsr BUF.GetLineAX bcs .2 ldy #FileY lda (pData),y inc sta (pData),y bne Ctrl.Y iny lda (pData),y inc sta (pData),y bra Ctrl.Y .2 jsr BUF.GetLine Y=linelen tya Y = line length >STA.G FileX jsr SCRN.UpdateViewPort bcs .9 rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.Z clc rts *-------------------------------------- Ctrl.ESC clc rts *-------------------------------------- Prompt.Editor cmp #C.DEL beq .4 cmp #C.SPACE bcs .7 asl tax jmp (J.CTRL,x) .4 jsr BUF.Del bcs .9 cmp #C.CR did we DEL a CR ? bne .5 jsr SCRN.UpdateMain bcs .9 bra .6 .5 jsr SCRN.UpdateCurrentLine bcs .9 .6 jsr SCRN.UpdateStatusBar bcs .9 rts .7 jsr BUF.InsertA bcs .9 jsr SCRN.UpdateCurrentLine bcs .9 jsr Ctrl.FS bcs .9 rts .9 jmp Ctrl.Q *-------------------------------------- Prompt.Help >STZ.G PromptMode jsr SCRN.UpdateMain bcs .9 jsr SCRN.UpdateStatusBar bcs .9 rts .9 jmp Ctrl.Q *-------------------------------------- Prompt.Find cmp #3 bne .1 >STZ.G PromptMode jsr SCRN.UpdateStatusBar bcs .9 rts .1 cmp #13 bne .2 .2 clc rts .9 jmp Ctrl.Q *-------------------------------------- Prompt.Replace cmp #3 bne .1 >STZ.G PromptMode jsr SCRN.UpdateStatusBar bcs .9 rts .1 cmp #13 bne .2 .2 clc rts .9 jmp Ctrl.Q *-------------------------------------- Prompt.Save cmp #3 Ctrl-C bne .1 >STZ.G PromptMode bra .80 .1 cmp #C.CR bne .2 >LDA.G PromptBufPtr beq .8 >LDYA pData >SYSCALL RealPath bcs .12 phx >LDA.G hFileName beq .11 >SYSCALL FreeMem .11 pla >STA.G hFileName >STZ.G PromptMode jsr SaveFile bcc .81 .12 jsr SCRN.UpdateStatusBarErrA bcs .9 rts .2 cmp #127 bne .3 >LDA.G PromptBufPtr beq .8 dec sta (pData),y tay lda #0 sta (pData),y bra .80 .3 cmp #C.SPACE bcc .8 pha >LDA.G PromptBufPtr tay pla cpy #PromptBufMax beq .8 sta (pData),y iny lda #0 sta (pData),y tya >STA.G PromptBufPtr bra .80 .8 clc rts .81 jsr SCRN.UpdateTopBar bcs .9 .80 jsr SCRN.UpdateStatusBar bcs .9 rts .9 jmp Ctrl.Q *-------------------------------------- MAN SAVE USR/SRC/BIN/BIN/EDIT.S.CTRL LOAD USR/SRC/BIN/BIN/EDIT.S ASM