PR#3 PREFIX /A2OSX.SRC NEW INC 1 AUTO 6 .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 ldy #PromptMode lda #PromptModeHelp sta (pData),y ldx #0 ldy #0 jsr GotoXY >LDYA L.MSG.HELP >STYA ZPPTR1 .1 lda (ZPPTR1) beq .8 >LDYA ZPPTR1 >SYSCALL PPrintFYA bcs .9 >LDYA L.SEQ.CEOL >SYSCALL CPrintFYA bcs .9 lda #13 >SYSCALL COutA sec lda (ZPPTR1) 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 ldy #PromptMode sta (pData),y 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 #13 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 ldy #bCANCEL sta (pData),y clc rts *-------------------------------------- Ctrl.R lda #PromptModeReplace ldy #PromptMode sta (pData),y jsr SCRN.UpdateStatusBar bcs .9 clc rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.S lda #PromptModeSave ldy #PromptMode sta (pData),y ldy #hFileName lda (pData),y beq .2 >SYSCALL GetMemPtrA >STYA ZPPTR1 lda (ZPPTR1) tay .1 lda (ZPPTR1),y sta (pData),y dey bpl .1 .2 jsr SCRN.UpdateStatusBar bcs .9 clc rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.T lda #0 ldy #FileX sta (pData),y ldy #FileY sta (pData),y iny sta (pData),y 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 ldy #FileX sta (pData),y jsr SCRN.UpdateViewPort bcs .9 rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.Z clc rts *-------------------------------------- Ctrl.ESC ldy #bEscMode lda #$ff sta (pData),y inc ldy #EscBuffer sta (pData),y clc rts *-------------------------------------- Prompt.Editor pha ldy #bInit lda (pData),y asl pla bcs .1 cmp #$1B beq Ctrl.ESC cmp #3 Ctrl-C ? beq .9 clc rts .1 cmp #127 beq .4 cmp #$20 bcs .7 asl tax jmp (J.CTRL,x) .4 jsr BUF.Del bcs .9 cmp #13 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 ldy #PromptMode lda #0 sta (pData),y jsr SCRN.UpdateMain bcs .9 jsr SCRN.UpdateStatusBar bcs .9 rts .9 jmp Ctrl.Q *-------------------------------------- Prompt.Find cmp #3 bne .1 ldy #PromptMode lda #0 sta (pData),y jsr SCRN.UpdateStatusBar bcs .9 rts .1 cmp #13 bne .2 .2 clc rts .9 jmp Ctrl.Q *-------------------------------------- Prompt.Replace cmp #3 bne .1 ldy #PromptMode lda #0 sta (pData),y jsr SCRN.UpdateStatusBar bcs .9 rts .1 cmp #13 bne .2 .2 clc rts .9 jmp Ctrl.Q *-------------------------------------- Prompt.Save cmp #3 bne .1 ldy #PromptMode lda #0 sta (pData),y bra .80 .1 cmp #13 bne .2 lda (pData) beq .8 ldy #hFileName lda (pData),y beq .11 >SYSCALL FreeMemA .11 >LDYA pData >SYSCALL NewPStrYA txa ldy #hFileName sta (pData),y ldy #PromptMode lda #0 sta (pData),y jsr SaveFile bcc .81 jsr SCRN.UpdateStatusBarErrA bcs .9 rts .2 cmp #127 bne .3 lda (pData) beq .8 dec sta (pData) bra .80 .3 cmp #$20 bcc .8 pha lda (pData) tay pla cpy #PromptBufferMax beq .8 iny sta (pData),y tya sta (pData) bra .80 .8 clc rts .81 jsr SCRN.UpdateTopBar bcs .9 .80 jsr SCRN.UpdateStatusBar bcs .9 rts .9 jmp Ctrl.Q *-------------------------------------- MAN SAVE BIN/EDIT.S.CTRL LOAD BIN/EDIT.S ASM