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 = * ^X = Cut Block * ^Y = * ^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 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 UpdateMain bcs .9 rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.C ldy #SelEnd+1 lda (pData),y tax dey lda (pData),y sec ldy #SelStart sbc (pData),y sta TmpLen iny txa sbc (pData),y bcs .8 sta TmpLen+1 ldy #hClipBoard lda (pData),y beq .1 >SYSCALL SYS.FreeMemA .1 .8 clc rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.D clc rts *-------------------------------------- Ctrl.E jsr BUF.ComputeCOffset lda BUF.COffset ldy #SelEnd sta (pData),y lda BUF.COffset+1 iny sta (pData),y jsr UpdateMain bcs .9 rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.F lda #PromptModeFind ldy #PromptMode sta (pData),y jsr UpdateStatusBar bcs .9 rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.G ldy #FileX lda (pData),y beq .8 lda #0 sta (pData),y jsr 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 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 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 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 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 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 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 UpdateStatusBar bcs .9 clc rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.T clc rts *-------------------------------------- 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 UpdateViewPort bcs .9 .8 clc rts .9 jmp Ctrl.Q *-------------------------------------- Ctrl.V clc rts *-------------------------------------- Ctrl.W clc rts *-------------------------------------- Ctrl.X clc 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 *-------------------------------------- Ctrl.DEL 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 jmp Ctrl.DEL .7 jsr BUF.InsertA bcs .9 jsr UpdateCurrentLine bcs .9 jsr Ctrl.FS bcs .9 rts .9 jmp Ctrl.Q *-------------------------------------- Prompt.Help ldy #PromptMode lda #0 sta (pData),y jsr UpdateMain bcs .9 jsr UpdateStatusBar bcs .9 rts .9 jmp Ctrl.Q *-------------------------------------- Prompt.Find cmp #3 bne .1 ldy #PromptMode lda #0 sta (pData),y jsr 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 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 #PromptMode lda #0 sta (pData),y bra .80 .2 cmp #127 bne .3 lda (pData) beq .8 dec sta (pData) bra .80 .3 >DEBUG 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 .80 jsr UpdateStatusBar bcs .9 rts .9 jmp Ctrl.Q *-------------------------------------- MAN SAVE BIN/EDIT.S.CTRL LOAD BIN/EDIT.S ASM