diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 548a31a0..2e430784 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/EDIT.S.BUF.txt b/BIN/EDIT.S.BUF.txt index 457ee5fb..0fe884f9 100644 --- a/BIN/EDIT.S.BUF.txt +++ b/BIN/EDIT.S.BUF.txt @@ -41,6 +41,47 @@ BUF.InsertClipboard .8 clc .9 rts *-------------------------------------- +BUF.InsertTAB jsr BUF.ComputeCOffset + cpy #256-TABLEN + beq .8 + + lda BufLen + sec + adc #TABLEN + tay + lda BufLen+1 + adc #0 + + jsr BUF.GetNewYA + bcs .9 + + >LDYA BUF.COffset + jsr BUF.Start2YA + + ldy #TABLEN + lda #C.SPACE + +.1 sta (BufPtr) + inc BufPtr + bne .2 + inc BufPtr+1 + +.2 dey + bne .1 + +.3 jsr BUF.CopyTail + +.4 lda BufLen + clc + adc #TABLEN + sta BufLen + bcc .8 + + inc BufLen+1 + +.8 clc +.9 rts +*-------------------------------------- BUF.InsertA sta TmpByte jsr BUF.ComputeCOffset cpy #255 @@ -166,12 +207,13 @@ BUF.SelToClipboard pha tya -* clc + >ADC.G SelStart sta BufPtr pla - >ADC.G SelStart+1 + iny SelStart+1 + adc (pData),y sta BufPtr+1 lda SelLen @@ -432,10 +474,11 @@ BUF.GetNewYA tax In 256 bytes page to avoid fragmentation >LDA.G bSaved beq .8 + lda #0 + sta (pData),y + jsr SCRN.UpdateTopBar bcs .9 - - >STZ.G bSaved .8 * clc .9 rts diff --git a/BIN/EDIT.S.CTRL.txt b/BIN/EDIT.S.CTRL.txt index c34140e8..844d6bc6 100644 --- a/BIN/EDIT.S.CTRL.txt +++ b/BIN/EDIT.S.CTRL.txt @@ -93,6 +93,7 @@ Ctrl.A lda #PromptModeHelp .8 jmp SCRN.UpdateStatusBar *-------------------------------------- Ctrl.B jsr BUF.ComputeCOffset + lda BUF.COffset ldy #SelStart sta (pData),y @@ -104,6 +105,7 @@ Ctrl.B jsr BUF.ComputeCOffset Ctrl.C jmp BUF.SelToClipboard *-------------------------------------- Ctrl.E jsr BUF.ComputeCOffset + lda BUF.COffset ldy #SelEnd sta (pData),y @@ -116,8 +118,7 @@ Ctrl.F lda #PromptModeFind >STA.G PromptMode jmp SCRN.UpdateStatusBar *-------------------------------------- -Ctrl.G ldy #FileX - lda (pData),y +Ctrl.G >LDA.G FileX beq .8 lda #0 @@ -130,16 +131,14 @@ Ctrl.G ldy #FileX .8 clc rts *-------------------------------------- -Ctrl.BS ldy #FileX - lda (pData),y +Ctrl.BS >LDA.G FileX beq .1 already at beginning of line dec sta (pData),y bra .3 -.1 ldy #FileY+1 - lda (pData),y +.1 >LDA.G FileY+1 tax dey ora (pData),y @@ -155,8 +154,7 @@ Ctrl.BS ldy #FileX bcs .8 tya - ldy #FileX - sta (pData),y + >STA.G FileX >DECW.G FileY @@ -167,16 +165,42 @@ Ctrl.BS ldy #FileX .8 clc rts *-------------------------------------- -Ctrl.TAB +Ctrl.TAB jsr BUF.InsertTAB + bcs .9 + + >LDA.G FileX clc - rts + adc #TABLEN + sta (pData),y + + >LDA.G CurX + clc + adc #TABLEN + sta (pData),y + + >SBC.G ScreenX + >SBC.G ScreenW + + bcs .8 + jsr SCRN.UpdateCurrentLine + bcs .9 + jmp SCRN.UpdateStatusBar + +.8 >ADC.G ScreenX + inc + sta (pData),y + + jsr BUF.ComputeCOffset + + jmp SCRN.UpdateViewPort + +.9 rts *-------------------------------------- Ctrl.LF jsr BUF.GetNextLine bcs .8 tya Y = line length - ldy #FileX - cmp (pData),y + >CMP.G FileX bcs .2 sta (pData),y @@ -189,8 +213,7 @@ Ctrl.LF jsr BUF.GetNextLine .8 clc rts *-------------------------------------- -Ctrl.VT ldy #FileY+1 - lda (pData),y +Ctrl.VT >LDA.G FileY+1 tax dey ora (pData),y @@ -206,9 +229,9 @@ Ctrl.VT ldy #FileY+1 bcs .8 tya Y = line length - ldy #FileX - cmp (pData),y + >CMP.G FileX bcs .2 + sta (pData),y .2 >DECW.G FileY @@ -216,22 +239,19 @@ Ctrl.VT ldy #FileY+1 jsr BUF.ComputeCOffset jmp SCRN.UpdateViewPort -.8 clc +.8 +Ctrl.VT.8 clc rts *-------------------------------------- Ctrl.L jsr BUF.GetLine - bcs .8 + bcs Ctrl.VT.8 tya Y = line length - ldy #FileX - sta (pData),y + >STA.G FileX jsr BUF.ComputeCOffset jmp SCRN.UpdateViewPort - -.8 clc - rts *-------------------------------------- Ctrl.CR lda #C.CR jsr BUF.InsertA @@ -252,6 +272,7 @@ Ctrl.O ldy #FileY+1 tax dey lda (pData),y + ldy #ViewPortH sec sbc (pData),y @@ -265,9 +286,8 @@ Ctrl.O ldy #FileY+1 dey pla sta (pData),y - lda #0 - ldy #FileX - sta (pData),y + + >STZ.G FileX jsr BUF.ComputeCOffset @@ -281,6 +301,7 @@ Ctrl.P ldy #FileY+1 tax dey lda (pData),y + ldy #ViewPortH clc adc (pData),y @@ -294,8 +315,7 @@ Ctrl.P ldy #FileY+1 bcs .8 tya Y = line length - ldy #FileX - sta (pData),y + >STA.G FileX ldy #FileY+1 pla @@ -318,7 +338,7 @@ Ctrl.R lda #PromptModeReplace jmp SCRN.UpdateStatusBar *-------------------------------------- Ctrl.Q lda #$FF - >STA.G bCANCEL + >STA.G bExit >LDA.G bSaved beq Ctrl.S @@ -345,18 +365,31 @@ Ctrl.S lda #PromptModeSave jmp SCRN.UpdateStatusBar *-------------------------------------- -Ctrl.T >STZ.G FileX - >STZW.G FileY - >DEBUG +Ctrl.T jsr SCRN.Home jsr BUF.ComputeCOffset + + jmp SCRN.UpdateViewPort +*-------------------------------------- +Ctrl.Y jsr BUF.GetNextLine + bcs .1 + + >INCW.G FileY + bra Ctrl.Y + +.1 jsr BUF.GetLine + + tya Y = line length + >STA.G FileX + + jsr BUF.ComputeCOffset + jmp SCRN.UpdateViewPort *-------------------------------------- Ctrl.FS jsr BUF.GetLine bcs .8 tya Y = line length - ldy #FileX - cmp (pData),y + >CMP.G FileX beq .1 already at end of line lda (pData),y @@ -424,32 +457,6 @@ Ctrl.D jsr BUF.DelSel jmp SCRN.UpdateStatusBar *-------------------------------------- -Ctrl.Y ldy #FileY+1 - lda (pData),y - tax - dey - lda (pData),y - inc - bne .1 - - inx - -.1 jsr BUF.GetLineAX - - bcs .2 - - >INCW.G FileY - bra Ctrl.Y - -.2 jsr BUF.GetLine - - tya Y = line length - >STA.G FileX - - jsr BUF.ComputeCOffset - - jmp SCRN.UpdateViewPort -*-------------------------------------- Ctrl.Z jsr BUF.ComputeCOffset lda BUF.COffset @@ -551,7 +558,7 @@ Prompt.Save cmp #3 Ctrl-C >LDA.G PromptBufPtr tay pla - cpy #PromptBufMax + cpy #PROMPTBUFMAX beq .8 sta (pData),y diff --git a/BIN/EDIT.S.SCRN.txt b/BIN/EDIT.S.SCRN.txt index 5f52a7d1..5c76c2bc 100644 --- a/BIN/EDIT.S.SCRN.txt +++ b/BIN/EDIT.S.SCRN.txt @@ -17,23 +17,7 @@ SCRN.Init >LDYAI 510+5+5+4+1 potentially 255*\\ NORM,INV,CEOL & \0 >SYSCALL printf bcs .9 - lda #0 - - ldy #FileX - sta (pData),y - - ldy #FileY - sta (pData),y - iny - sta (pData),y - - ldy #ScreenX - sta (pData),y - - ldy #ScreenY - sta (pData),y - iny - sta (pData),y + jsr SCRN.Home jsr SCRN.UpdateTopBar bcs .9 @@ -42,6 +26,22 @@ SCRN.Init >LDYAI 510+5+5+4+1 potentially 255*\\ NORM,INV,CEOL & \0 jsr SCRN.UpdateMain .9 rts *-------------------------------------- +SCRN.Home lda #0 + + ldy #FileX + +.1 sta (pData),y + iny + + cpy #CurX + bne .1 + + inc + sta (pData),y CurX + iny + sta (pData),y CurY + rts +*-------------------------------------- SCRN.UpdateTopBar jsr SCRN.LineBufInit @@ -76,7 +76,7 @@ SCRN.UpdateTopBar lda (ZPPTR1),y bne .3 - lda #"*" + lda #'!' sta (ZPPTR1),y iny @@ -143,7 +143,9 @@ SCRN.UpdateCurrentLine clc >ADC.G CurY bcc .1 + inx + .1 jsr BUF.GetLineAX bcs SCRN.UpdateMain.9 @@ -393,16 +395,11 @@ SCRN.UpdateViewPort lda #$ff sta bNotRepaint -.1 ldy #FileX - lda (pData),y - ldy #ScreenX - cmp (pData),y +.1 >LDA.G FileX + >CMP.G ScreenX bcs .2 out of left border ? - ldy #ScreenX yes - lda (pData),y - dec - sta (pData),y + >DEC.G ScreenX yes stz bNotRepaint bra .1 @@ -416,10 +413,7 @@ SCRN.UpdateViewPort cmp (pData),y bcs .3 out of right border ? - ldy #ScreenX - lda (pData),y - inc - sta (pData),y + >INC.G ScreenX stz bNotRepaint bra .2 @@ -428,6 +422,7 @@ SCRN.UpdateViewPort tax dey lda (pData),y A,X = FileY + ldy #ScreenY cmp (pData),y iny @@ -435,14 +430,7 @@ SCRN.UpdateViewPort sbc (pData),y bcs .4 out of top border ? - ldy #ScreenY move viewport up one line.... - lda (pData),y - sbc #0 CC from BCS - sta (pData),y - iny - lda (pData),y - sbc #0 - sta (pData),y + >DECW.G ScreenY move viewport up one line.... bit bNotRepaint bpl .3 @@ -454,9 +442,8 @@ SCRN.UpdateViewPort tax dey lda (pData),y - ldy #ViewPortHm1 - clc - adc (pData),y + + >ADC.G ViewPortHm1 bcc .41 inx @@ -468,15 +455,7 @@ SCRN.UpdateViewPort sbc (pData),y bcs .5 CS : fileY>= screen bottom -* clc from BCS - ldy #ScreenY move viewport down one line.... - lda (pData),y - adc #1 - sta (pData),y - iny - lda (pData),y - adc #0 - sta (pData),y + >INCW.G ScreenY move viewport down one line.... bit bNotRepaint bpl .4 @@ -484,20 +463,13 @@ SCRN.UpdateViewPort bcs .9 bra .4 -.5 sec - ldy #FileX - lda (pData),y - ldy #ScreenX - sbc (pData),y - ldy #CurX - sta (pData),y - sec - ldy #FileY - lda (pData),y - ldy #ScreenY - sbc (pData),y - ldy #CurY - sta (pData),y +.5 >LDA.G FileX + >SBC.G ScreenX + >STA.G CurX + + >LDA.G FileY + >SBC.G ScreenY + >STA.G CurY bit bNotRepaint bmi .6 @@ -510,12 +482,10 @@ SCRN.UpdateViewPort jmp SCRN.GotoCurXCurY .9 rts *-------------------------------------- -SCRN.scrollUp ldy #CurX - lda (pData),y +SCRN.scrollUp >LDA.G CurX inc >PUSHA - ldy #CurY - lda (pData),y + >LDA.G CurY inc inc >PUSHA @@ -523,30 +493,32 @@ SCRN.scrollUp ldy #CurX >LDYA L.SEQ.SCROLLUP >SYSCALL printf bcs .9 + ldy #ScreenY+1 lda (pData),y tax dey lda (pData),y + clc ldy #ViewPortHm1 adc (pData),y bcc .1 + inx + .1 jsr BUF.GetLineAX bcs .9 - ldy #ViewPortHm1 - lda (pData),y + + >LDA.G ViewPortHm1 jmp SCRN.UpdateLineAtALenY .9 rts *-------------------------------------- -SCRN.scrollDn ldy #CurX - lda (pData),y +SCRN.scrollDn >LDA.G CurX inc >PUSHA - ldy #CurY - lda (pData),y + >LDA.G CurY inc inc >PUSHA @@ -560,10 +532,13 @@ SCRN.scrollDn ldy #CurX tax dey lda (pData),y + jsr BUF.GetLineAX bcs .9 + lda #0 jmp SCRN.UpdateLineAtALenY + .9 rts *-------------------------------------- MAN diff --git a/BIN/EDIT.S.txt b/BIN/EDIT.S.txt index c5fe5cca..e8ae5618 100644 --- a/BIN/EDIT.S.txt +++ b/BIN/EDIT.S.txt @@ -36,7 +36,8 @@ bSelected .BS 1 ZS.END .ED *-------------------------------------- -PromptBufMax .EQ 64 +PROMPTBUFMAX .EQ 64 +TABLEN .EQ 4 *-------------------------------------- PromptModeHelp .EQ 2 PromptModeFind .EQ 4 @@ -165,7 +166,7 @@ CS.RUN.LOOP >SYSCALL GetChar jsr CharIn bcs .9 - >LDA.G bCancel + >LDA.G bExit bpl CS.RUN.LOOP lda #0 @@ -186,15 +187,20 @@ CS.QUIT ldy #hLineBuffer ldy #hBuffer jsr .8 + ldy #hBufferBackup jsr .8 + ldy #hClipBoard jsr .8 ldy #hFileName + .8 lda (pData),y beq .9 + >SYSCALL FreeMem + .9 clc rts *-------------------------------------- @@ -479,10 +485,10 @@ EscAscii .HS 04080A0B15 .DUMMY .OR 0 DS.START -PromptBuf .BS PromptBufMax+1 +PromptBuf .BS PROMPTBUFMAX+1 PromptBufPtr .BS 1 PromptMode .BS 1 -bCancel .BS 1 +bExit .BS 1 bSaved .BS 1 bEscMode .BS 1 EscBuffer .BS 16 @@ -494,18 +500,18 @@ hBuffer .BS 1 hBufferBackup .BS 1 hClipBoard .BS 1 ClipBoardLen .BS 2 +SelStart .BS 2 +SelEnd .BS 2 ScreenW .BS 1 ScreenH .BS 1 ViewPortH .BS 1 ViewPortHm1 .BS 1 +FileX .BS 1 +FileY .BS 2 ScreenX .BS 1 ScreenY .BS 2 CurX .BS 1 CurY .BS 1 -FileX .BS 1 -FileY .BS 2 -SelStart .BS 2 -SelEnd .BS 2 DS.END .ED *-------------------------------------- diff --git a/_Pics/ProDOS.FX.logo.bmp b/_Pics/ProDOS.FX.logo.bmp new file mode 100644 index 00000000..9c0086ef Binary files /dev/null and b/_Pics/ProDOS.FX.logo.bmp differ