PR#3 PREFIX /A2OSX.SRC NEW INC 1 AUTO 6 .LIST OFF *-------------------------------------- BUF.CheckSelected sec lda BUF.COffset ldy #SelStart sbc (pData),y lda BUF.COffset+1 iny sbc (pData),y bcc .9 lda BUF.COffset ldy #SelEnd sbc (pData),y lda BUF.COffset+1 iny sbc (pData),y rts CC if in selection .9 sec rts *-------------------------------------- BUF.InsertClipboard ldy #FileLen lda (pData),y sec ldy #ClipboardLen adc (pData),y pha ldy #FileLen+1 lda (pData),y ldy #ClipboardLen+1 adc (pData),y ply jsr BUF.GetNewYA bcs .9 jsr BUF.ComputeCOffset >LDYA BUF.COffset >STYA TmpCount ldy #0 jsr BUF.CopyCount phy clc lda BufPtr ldy #ClipboardLen adc (pData),y sta BufPtr iny lda BufPtr+1 adc (pData),y sta BufPtr+1 ply jsr BUF.CopyTail .4 ldy #FileLen lda (pData),y inc sta (pData),y bne .8 iny lda (pData),y inc sta (pData),y .8 clc .9 rts *-------------------------------------- BUF.InsertA sta TmpByte jsr BUF.ComputeCOffset cpy #255 bne .10 clc rts .10 ldy #FileLen lda (pData),y sec adc #1 pha iny lda (pData),y adc #0 ply jsr BUF.GetNewYA bcs .9 >LDYA BUF.COffset >STYA TmpCount ldy #0 .1 jsr BUF.CopyCount .2 lda TmpByte sta (BufPtr),y inc BufPtr bne .3 inc BufPtr+1 .3 jsr BUF.CopyTail .4 ldy #FileLen lda (pData),y inc sta (pData),y bne .8 iny lda (pData),y inc sta (pData),y .8 clc .9 rts *-------------------------------------- BUF.Del ldy #FileLen lda (pData),y iny ora (pData),y bne .10 clc exit with A=0 rts .10 jsr BUF.ComputeCOffset lda BUF.COffset clc ldy #FileLen sbc (pData),y lda BUF.COffset+1 iny sbc (pData),y bcc .11 lda #0 exit with A=0 clc rts .11 lda (pData),y pha dey lda (pData),y tay pla jsr BUF.GetNewYA bcs .9 >LDYA BUF.COffset >STYA TmpCount ldy #0 jsr BUF.CopyCount lda (BufPtrBackup),y tax Save deleted char for later inc BufPtrBackup bne .3 inc BufPtrBackup+1 .3 jsr BUF.CopyTail ldy #FileLen lda (pData),y sec sbc #1 sta (pData),y iny lda (pData),y sbc #0 sta (pData),y txa Get back deleted char clc .9 rts *-------------------------------------- BUF.SelToClipboard ldy #SelEnd+1 lda (pData),y tax dey lda (pData),y sec ldy #SelStart sbc (pData),y sta TmpCount iny txa sbc (pData),y bcc .8 sta TmpCount+1 ora TmpCount beq .8 ldy #hClipBoard lda (pData),y beq .1 >SYSCALL SYS.FreeMemA .1 >PUSHW TmpCount >PUSHB 0 >SYSCALL SYS.GetMem bcs .9 >STYA ClipboardPtr txa ldy #hClipBoard sta (pData),y ldy #ClipBoardLen lda TmpCount sta (pData),y iny lda TmpCount+1 sta (pData),y ldy #hBuffer lda (pData),y >SYSCALL SYS.GetMemPtrA >STYA BufPtr .2 jsr DecTmpCount beq .8 lda (BufPtr),y sta (ClipboardPtr),y iny bne .2 inc BufPtr+1 inc ClipboardPtr+1 bra .2 .8 clc .9 rts *-------------------------------------- BUF.CopyCount jsr DecTmpCount beq .9 lda (BufPtrBackup),y sta (BufPtr),y iny bne BUF.CopyCount inc BufPtrBackup+1 inc BufPtr+1 bra BUF.CopyCount .9 rts *-------------------------------------- BUF.CopyTail lda (BufPtrBackup),y beq .9 sta (BufPtr),y iny bne BUF.CopyTail inc BufPtrBackup+1 inc BufPtr+1 bra BUF.CopyTail .9 rts *-------------------------------------- * Out : Y = Line Length *-------------------------------------- BUF.ComputeCOffset ldy #FileY+1 lda (pData),y tax dey lda (pData),y jsr BUF.GetLineAX bcs .9 phy save line length ldy #FileX lda (pData),y clc adc BUF.LOffset sta BUF.COffset lda #0 adc BUF.LOffset+1 sta BUF.COffset+1 ply clc .9 rts *-------------------------------------- BUF.GetLineAX >STAX BUF.TmpLine1 stz BUF.LOffset stz BUF.LOffset+1 ldy #hBuffer lda (pData),y >SYSCALL SYS.GetMemPtrA >STYA BufPtr stz BUF.TmpLine2 stz BUF.TmpLine2+1 .1 ldy #0 .2 lda (BufPtr),y beq .7 cmp #13 beq .3 iny bne .2 .3 lda BUF.TmpLine1 cmp BUF.TmpLine2 bne .4 lda BUF.TmpLine1+1 cmp BUF.TmpLine2+1 beq .8 .4 tya sec adc BufPtr sta BufPtr bcc .5 inc BufPtr+1 .5 tya sec adc BUF.LOffset sta BUF.LOffset bcc .6 inc BUF.LOffset+1 .6 inc BUF.TmpLine2 bne .1 inc BUF.TmpLine2+1 bra .1 .7 lda BUF.TmpLine1 cmp BUF.TmpLine2 bne .9 lda BUF.TmpLine1+1 cmp BUF.TmpLine2+1 bne .9 .8 clc Y = Line length rts .9 sec rts *-------------------------------------- BUF.GetCharAtY tya clc adc BUF.LOffset sta BUF.COffset lda #0 adc BUF.LOffset+1 sta BUF.COffset+1 lda (BufPtr),y clc rts *-------------------------------------- BUF.GetNewYA >STYA TmpLen ldy #hBufferBackup lda (pData),y beq .1 >SYSCALL SYS.FreeMemA .1 ldy #hBuffer lda (pData),y ldy #hBufferBackup sta (pData),y >SYSCALL SYS.GetMemPtrA >STYA BufPtrBackup >PUSHW TmpLen >PUSHBI S.MEM.F.INIT0 >SYSCALL SYS.GetMem bcs .9 >STYA BufPtr txa ldy #hBuffer sta (pData),y .9 rts *-------------------------------------- MAN SAVE BIN/EDIT.S.BUF LOAD BIN/EDIT.S ASM