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 >LDYA ZPPTR1 >SYSCALL SYS.PSTROutYA bcs .9 >LDYA L.SEQ.CEOL >SYSCALL SYS.PSTROutYA bcs .9 sec lda (ZPPTR1) adc ZPPTR1 sta ZPPTR1 bcc .2 inc ZPPTR1+1 .2 lda (ZPPTR1) beq .8 lda #13 >SYSCALL SYS.CoutA bcs .9 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.D jsr BUF.DelSel bcs .9 jsr SCRN.UpdateMain bcs .9 jmp SCRN.UpdateStatusBar .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 ldy #FileY+1 lda (pData),y tax dey lda (pData),y jsr BUF.GetLineAX 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 clc rts *-------------------------------------- Ctrl.P clc rts *-------------------------------------- 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 SYS.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 ldy #FileY+1 lda (pData),y tax dey lda (pData),y jsr BUF.GetLineAX 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 clc rts *-------------------------------------- Ctrl.X jsr BUF.SelToClipboard bcs .99 jsr BUF.DelSel bcs .9 jsr SCRN.UpdateMain bcs .9 jmp SCRN.UpdateStatusBar .9 jmp Ctrl.Q .99 rts *-------------------------------------- Ctrl.Y clc rts *-------------------------------------- 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 SYS.FreeMemA .11 >LDYA pData >SYSCALL SYS.NewPStrYA 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