diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 4b43dc1e..24698fc0 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 0a4d1b48..fe832235 100644 --- a/BIN/EDIT.S.BUF.txt +++ b/BIN/EDIT.S.BUF.txt @@ -97,7 +97,7 @@ BUF.DelCharAtCursor .1 >STYA BufPtr - lda (BufPtr) + lda (BufPtrDst) pha Save deleted char for later jsr BUF.MoveBackTail diff --git a/BIN/EDIT.S.CTRL.txt b/BIN/EDIT.S.CTRL.txt index 29a96a14..da07410b 100644 --- a/BIN/EDIT.S.CTRL.txt +++ b/BIN/EDIT.S.CTRL.txt @@ -274,12 +274,10 @@ Ctrl.CR jsr BUF.ComputeCOffset >STZ.G FileX >LDA.G CurY - inc - >DEBUG + >CMP.G ViewPortHm1 beq .8 Bottom line, all done - >STA.G CurY dec >CMP.G ViewPortHm1 beq .1 No scoll needed @@ -296,14 +294,11 @@ Ctrl.CR jsr BUF.ComputeCOffset >SYSCALL printf bcs .9 - >LDA.G ScreenH - dec - >PUSHA - >PUSHBI 1 - >LDYA L.SEQ.SCROLLRGN - >SYSCALL printf - -.1 jsr SCRN.UpdateCurrentLine + jsr SCRN.ResetScrollRgn + bcs .9 + +.1 >INC.G CurY + jsr SCRN.UpdateCurrentLine .8 clc .9 rts @@ -403,14 +398,15 @@ Ctrl.Y jsr BUF.GetNextLine >LDA.G FileY sec - >SBC.G ViewPortH + >SBC.G ViewPortHm1 tax >LDA.G FileY+1 sbc #0 bcs .2 - lda #0 + >LDA.G FileY tax + lda #0 .2 >STA.G ScreenY+1 dey @@ -439,7 +435,12 @@ Ctrl.Q lda #$FF clc rts *-------------------------------------- -Ctrl.S lda #PromptModeSave +Ctrl.S >LDYA L.DLG.SAVE + jsr SCRN.DLGShow + clc + rts + + lda #PromptModeSave >STA.G PromptMode >LDA.G hFileName beq .2 @@ -541,11 +542,44 @@ Ctrl.Z jsr BUF.ComputeCOffset bcs Ctrl.W.RTS cmp #C.CR did we DEL a CR ? - beq Prompt.Help.Upd yes repaint whole screen + bne .8 + >LDA.G CurY + + >CMP.G ViewPortHm1 + beq .8 Bottom line, all done + + dec + >CMP.G ViewPortHm1 + beq .8 No scoll needed + + >LDA.G ScreenH + dec + >PUSHA + >LDA.G CurY + inc + inc + >PUSHA + >PUSHBI 2 + >LDYA L.SEQ.SCROLLCURUP + >SYSCALL printf + bcs .9 + + jsr SCRN.ResetScrollRgn + bcs .9 + jsr SCRN.UpdateCurrentLine - bcs Ctrl.W.RTS - jmp SCRN.UpdateStatusBar + bcs .9 + + jsr SCRN.UpdateLast + bcc .80 +.9 rts + +.8 jsr SCRN.UpdateCurrentLine + bcs .9 +.80 jsr SCRN.UpdateStatusBar + bcs .9 + jmp SCRN.GotoCurXCurY *-------------------------------------- Prompt.Help >STZ.G PromptMode @@ -605,7 +639,7 @@ Prompt.Save cmp #3 Ctrl-C jsr FILE.Save bcc .81 -.12 jsr SCRN.LineBufInit +.12 jsr SCRN.LineBufInitInv jmp SCRN.UpdateStatusBarErrA .2 cmp #C.DEL diff --git a/BIN/EDIT.S.SCRN.txt b/BIN/EDIT.S.SCRN.txt index dbdcad59..833ee788 100644 --- a/BIN/EDIT.S.SCRN.txt +++ b/BIN/EDIT.S.SCRN.txt @@ -29,9 +29,16 @@ SCRN.Home lda #0 bne .1 rts *-------------------------------------- +SCRN.ResetScrollRgn + >LDA.G ScreenH + dec + >PUSHA + >PUSHBI 1 + >LDYA L.SEQ.SCROLLRGN + >SYSCALL printf + rts +*-------------------------------------- SCRN.UpdateTopBar - jsr SCRN.LineBufInit - >PUSHBI 1 >PUSHBI 1 >PUSHBI 2 @@ -39,6 +46,9 @@ SCRN.UpdateTopBar >SYSCALL printf bcs .9 + >LDYA.G LineBufBase + >STYA LineBufPtr + >LDA.G FileType tax >PUSHW L.MSG.FILETYPES,x @@ -54,7 +64,7 @@ SCRN.UpdateTopBar .2 >PUSHYA >PUSHBI 4 >PUSHW L.MSG.TOPBAR - >LDYA ZPPTR1 + >LDYA LineBufPtr >SYSCALL sprintf bcs .9 @@ -64,15 +74,15 @@ SCRN.UpdateTopBar ldy #255 .3 iny - lda (ZPPTR1),y + lda (LineBufPtr),y bne .3 lda #'!' - sta (ZPPTR1),y + sta (LineBufPtr),y iny lda #0 - sta (ZPPTR1),y + sta (LineBufPtr),y .8 jmp SCRN.LineBufOutBar .9 rts @@ -83,11 +93,24 @@ SCRN.UpdateMain >LDA.G ScreenY lda (pData),y sta TmpIndex+1 - lda #0 - sta TmpByte + stz TmpByte >LDA.G ViewPortH + bra SCRN.UpdateMain.1 + +SCRN.UpdateLast >LDA.G ViewPortHm1 + sta TmpByte + clc + >ADC.G ScreenY + sta (pData),y + iny + lda (pData),y + adc #0 + sta (pData),y + + lda #1 +SCRN.UpdateMain.1 sta TmpCount - + .1 lda TmpIndex ldx TmpIndex+1 @@ -159,7 +182,7 @@ SCRN.UpdateLineAtALenY jsr SCRN.GotoXY bcs SCRN.UpdateMain.9 - jsr SCRN.LineBufInit + jsr SCRN.LineBufInitNorm ldy #$ff @@ -228,12 +251,7 @@ SCRN.UpdateLineAtALenY bpl .80 jsr SCRN.ToggleSel -.80 lda #0 - jsr SCRN.ToLineBuf - - >PUSHBI 0 - >LDYA LineBufPtr - >SYSCALL printf +.80 jmp SCRN.LineBufOut .9 rts *-------------------------------------- SCRN.ToggleSel ldy #0 @@ -255,7 +273,9 @@ SCRN.ToggleSel.RTS rts *-------------------------------------- SCRN.UpdateStatusBar - jsr SCRN.LineBufInit + >LDYA.G LineBufBase + >STYA LineBufPtr + >PUSHBI 1 >PUSHB.G ScreenH @@ -308,7 +328,7 @@ SCRN.UpdateStatusBarOut tax SCRN.UpdateStatusBarOutErr >PUSHW L.MSG.STATUSBAR,x - >LDYA ZPPTR1 + >LDYA LineBufPtr >SYSCALL sprintf SCRN.LineBufOutBar >LDA.G ScreenW @@ -316,7 +336,7 @@ SCRN.LineBufOutBar ldy #0 -.1 lda (ZPPTR1),y +.1 lda (LineBufPtr),y beq .2 iny dex @@ -326,15 +346,15 @@ SCRN.LineBufOutBar .2 lda #C.SPACE -.3 sta (ZPPTR1),y +.3 sta (LineBufPtr),y iny dex bne .3 lda #0 - sta (ZPPTR1),y + sta (LineBufPtr),y -.4 >PUSHW LineBufPtr +.4 >PUSHW.G LineBufBase >PUSHBI 2 >LDYA L.SEQ.BAR >SYSCALL printf @@ -352,17 +372,6 @@ SCRN.CursorAdjust .8 rts *-------------------------------------- -SCRN.LineBufInit - >LDYA LineBufPtr - >STYA ZPPTR1 - rts -*-------------------------------------- -SCRN.ToLineBuf sta (ZPPTR1) - inc ZPPTR1 - bne .8 - inc ZPPTR1+1 -.8 rts -*-------------------------------------- SCRN.GotoCurXCurY ldy #CurX lda (pData),y @@ -525,6 +534,182 @@ SCRN.scrollDn >PUSHBI 0 .9 rts *-------------------------------------- +SCRN.DLGShow >STYA ZPPTR1 + jsr DLG.GetOrigin + stx TmpLen + sty TmpLen+1 + jsr SCRN.GotoXY + bcs .9 + + ldy #4 T + jsr DLG.InvBar + bcs .9 + + jsr SCRN.LineBufInitNorm + + jsr SCRN.VBarToLineBuf + + ldy #2 W + lda (ZPPTR1),y + dec + tax + + lda #C.SPACE +.3 jsr SCRN.ToLineBuf + dex + bne .3 + + jsr SCRN.VBarToLineBuf + + ldy #3 H + lda (ZPPTR1),y + dec + dec + sta TmpCount + +.4 inc tmpLen+1 Y + + ldx TmpLen + ldy TmpLen+1 + jsr SCRN.GotoXY + bcs .9 + + jsr SCRN.LineBufOut + bcs .9 + + dec TmpCount + bne .4 + + inc tmpLen+1 Y + + ldx TmpLen + ldy TmpLen+1 + jsr SCRN.GotoXY + bcs .9 + + ldy #5 S + jsr DLG.InvBar + bcs .9 + + ldx #10 + ldy #10 + jsr SCRN.GotoXY + +.9 rts +*-------------------------------------- +DLG.GetOrigin lda (ZPPTR1) X + bne .1 + + >LDA.G ScreenW + ldy #2 W + sec + sbc (ZPPTR1),y + + lsr + +.1 tax + + ldy #1 + lda (ZPPTR1),y Y + bne .2 + + >LDA.G ViewPortHm1 + ldy #3 H + sec + sbc (ZPPTR1),y + + lsr + +.2 tay + + rts +*-------------------------------------- +SCRN.LineBufInitNorm + clc + .HS B0 BCS +SCRN.LineBufInitInv + sec + >LDYA.G LineBufBase + >STYA LineBufPtr + ldy #0 + bcc .1 + + ldy #SEQ.INV-SEQ.NORM + +.1 lda SEQ.NORM,y + +.2 jsr SCRN.ToLineBuf + iny + lda SEQ.NORM,y + bne .2 + + rts +*-------------------------------------- +DLG.InvBar phy + jsr SCRN.LineBufInitInv + + ply + phy + lda (ZPPTR1),y + tay + lda (ZPPTR1),y + tax + +.1 iny + lda (ZPPTR1),y + jsr SCRN.ToLineBuf + dex + bne .1 + + ldy #2 W + lda (ZPPTR1),y + ply + pha + lda (ZPPTR1),y + tay + pla + sec + sbc (ZPPTR1),y + tax + + lda #C.SPACE + +.2 jsr SCRN.ToLineBuf + dex + bne .2 + + ldy #0 +.3 lda SEQ.NORM,y + beq .4 + jsr SCRN.ToLineBuf + iny + bra .3 + +.4 jsr SCRN.VBarToLineBuf + + jmp SCRN.LineBufOut +*-------------------------------------- +SCRN.VBarToLineBuf + lda #C.SO + jsr SCRN.ToLineBuf + lda #'x' + jsr SCRN.ToLineBuf + lda #C.SI +*-------------------------------------- +SCRN.ToLineBuf sta (LineBufPtr) + inc LineBufPtr + bne .8 + inc LineBufPtr+1 +.8 rts +*-------------------------------------- +SCRN.LineBufOut lda #0 + jsr SCRN.ToLineBuf + + >PUSHBI 0 + >LDYA.G LineBufBase + >SYSCALL printf + rts +*-------------------------------------- MAN SAVE USR/SRC/BIN/EDIT.S.SCRN LOAD USR/SRC/BIN/EDIT.S diff --git a/BIN/EDIT.S.txt b/BIN/EDIT.S.txt index 639deadf..23959687 100644 --- a/BIN/EDIT.S.txt +++ b/BIN/EDIT.S.txt @@ -18,8 +18,7 @@ TABMASK .EQ 3 .OR ZPBIN ZS.START BufPtr .BS 2 -BufPtrDst .EQ * -BufPtrBackup .BS 2 +BufPtrDst .BS 2 ClipboardPtr .BS 2 LineBufPtr .BS 2 @@ -75,6 +74,7 @@ L.SEQ.SCROLLRGN .DA SEQ.SCROLLRGN L.SEQ.RESET .DA SEQ.RESET L.SEQ.SCROLLUP .DA SEQ.SCROLLUP L.SEQ.SCROLLDN .DA SEQ.SCROLLDN +L.SEQ.SCROLLCURUP .DA SEQ.SCROLLCURUP L.SEQ.SCROLLCURDN .DA SEQ.SCROLLCURDN L.SEQ.CEOL .DA SEQ.CEOL L.SEQ.BAR .DA SEQ.BAR @@ -132,6 +132,7 @@ J.CTRL .DA Ctrl.Invalid .DA Ctrl.Invalid .DA Ctrl.Invalid .DA Ctrl.Invalid +L.DLG.SAVE .DA DLG.SAVE .DA 0 *-------------------------------------- CS.INIT clc @@ -152,7 +153,7 @@ CS.RUN >PUSHBI 0 >LDYAI 510+5+5+4+1 potentially 255*\\ NORM,INV,CEOL & \0 >SYSCALL Getmem bcs CS.RUN.RTS - >STYA LineBufPtr + >STYA.G LineBufBase txa >STA.G hLineBuffer @@ -270,12 +271,12 @@ CharIn.Esc >STZ.G bEscMode adc #EscBuffer tay lda (pData),y - ldx EscChars + ldx #EscChars.Cnt-1 .1 cmp EscChars,x beq .2 dex - bne .1 + bpl .1 cmp #'R' Response to cursor position query? beq .3 @@ -368,6 +369,7 @@ SEQ.INIT .AS "\ec" SEQ.SCROLLRGN .AZ "\e[?7l\e[2;%dr" SEQ.SCROLLUP .AZ "\eD" SEQ.SCROLLDN .AZ "\eM" +SEQ.SCROLLCURUP .AZ "\e[?7l\e[%d;%dr\eD" SEQ.SCROLLCURDN .AZ "\e[?7l\e[%d;%dr\eM" SEQ.BAR .AS "\e[40;37m\e[7m%s" +SEQ.NORM SEQ.NORM .AZ "\e[0m" @@ -401,7 +403,7 @@ MSG.HELP >PSTR "All commands: (* = Not yet implemented)" >PSTR " Ctrl-P : Page down" >PSTR " Ctrl-Q : Quit" >PSTR " Ctrl-R : * Replace found string with..." - >PSTR " Ctrl-S : Save file to disk..." + >PSTR " Ctrl-S : Save file..." >PSTR " Ctrl-T : Go to top of file" >PSTR " Ctrl-V : Past clipboard at cursor position" >PSTR " Ctrl-W : Erase current line" @@ -411,8 +413,26 @@ MSG.HELP >PSTR "All commands: (* = Not yet implemented)" .HS 00 *-------------------------------------- MSG.NEWFILE .AZ "newfile" -EscChars >PSTR "DBAC" -EscAscii .HS 04080A0B15 +EscChars .AS "DBAC" +EscChars.Cnt .EQ *-EscChars +EscAscii .HS 080A0B15 +*-------------------------------------- +DLG.SAVE .DA #0 X + .DA #0 Y + .DA #70 W + .DA #8 H + .DA #DLG.SAVE.T-DLG.SAVE Title + .DA #DLG.SAVE.S-DLG.SAVE Status + .DA #1,#4,#3 LABEL,x,y + >PSTR "Filename :" + .DA #2,#4,#4,#64,#hFileName TEXTBOX,x,y,MAXCHAR,hMem + .DA #1,#4,#6 LABEL,x,y + >PSTR "Filetype :" + .DA #3 + .DA L.MSG.FILETYPES + .DA #0 +DLG.SAVE.T >PSTR "Save As..." Title +DLG.SAVE.S >PSTR "CR:Save, Ctrl-T:Change Type, Ctrl-C:Cancel" *-------------------------------------- .DUMMY .OR 0 @@ -429,6 +449,7 @@ hFileName .BS 1 hFind .BS 1 hReplace .BS 1 hLineBuffer .BS 1 +LineBufBase .BS 2 BufBase .BS 2 hBuffer .BS 1 hBufferBackup .BS 1