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 *-------------------------------------- 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 jsr UpdateCurrentLine bcs .9 jsr UpdateStatusBar bcs .9 rts .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 #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 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 UpdateTopBar bcs .9 .80 jsr UpdateStatusBar bcs .9 rts .9 jmp Ctrl.Q *-------------------------------------- MAN SAVE BIN/EDIT.S.CTRL LOAD BIN/EDIT.S ASM