From f6a4d5123d705d6f4307f6e0eff6f4afe7ac5818 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Mon, 27 May 2019 17:37:31 +0200 Subject: [PATCH] Kernel 0.93 --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/EDIT.S.BUF.txt | 288 +++++++++++++++++++++------------------ BIN/EDIT.S.CTRL.txt | 98 +++++++------ BIN/EDIT.S.SCRN.txt | 15 +- BIN/EDIT.S.txt | 73 +++++----- BIN/SH.S.CL.txt | 2 +- INC/MACROS.I.txt | 31 +++-- 7 files changed, 271 insertions(+), 236 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 02ffb2d413a930b8d4cf228d7a89dfeddb2a988a..94118744bb83beb5c625d17e0810b375a79a6047 100644 GIT binary patch delta 33422 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 BUF.COffset - >STYA TmpCount - jsr BUF.CopyCount jsr BUF.CopyClipboard jsr BUF.CopyTail -.4 ldy #ClipboardLen+1 - lda (pData),y - tax - dey +.4 ldy #ClipboardLen lda (pData),y clc - ldy #FileLen - adc (pData),y + adc BufLen sta (pData),y + iny - txa - adc (pData),y + lda (pData),y + adc BufLen+1 sta (pData),y .8 clc @@ -59,21 +54,17 @@ BUF.InsertA sta TmpByte clc rts -.10 ldy #FileLen - lda (pData),y - sec - adc #1 +.10 lda BufLen + clc + adc #2 pha - iny - lda (pData),y + lda BufLen+1 adc #0 ply jsr BUF.GetNewYA bcs .9 >LDYA BUF.COffset - >STYA TmpCount - .1 jsr BUF.CopyCount .2 lda TmpByte @@ -84,7 +75,13 @@ BUF.InsertA sta TmpByte .3 jsr BUF.CopyTail -.4 >INCW.G FileLen +.4 lda BufLen + clc + adc #1 + sta BufLen + bcc .8 + + inc BufLen+1 .8 clc .9 rts @@ -95,48 +92,35 @@ BUF.DelSel jsr BUF.GetSelLen .10 jsr BUF.ComputeCOffset - ldy #SelStart - lda (pData),y - sta TmpCount - sec - sbc BUF.COffset + >LDA.G SelStart + cmp BUF.COffset iny lda (pData),y - sta TmpCount+1 sbc BUF.COffset+1 bcs .11 - ldy #FileY - lda (pData),y - sec - sbc #1 - sta (pData),y - iny - lda (pData),y - sbc #0 - sta (pData),y + >DECW.G FileY - ldy #FileX - lda #0 - sta (pData),y + >STZ.G FileX bra .10 -.11 ldy #FileLen - lda (pData),y +.11 lda BufLen sec sbc SelLen pha - iny - lda (pData),y + lda BufLen+1 sbc SelLen+1 ply + iny bne .1 inc + .1 jsr BUF.GetNewYA bcs .9 + >LDYA.G SelStart jsr BUF.CopyCount lda BufPtrBackup @@ -150,15 +134,14 @@ BUF.DelSel jsr BUF.GetSelLen jsr BUF.CopyTail - ldy #FileLen - lda (pData),y + lda BufLen sec sbc SelLen - sta (pData),y - ldy #FileLen+1 - lda (pData),y + sta BufLen + + lda BufLen+1 sbc SelLen+1 - sta (pData),y + sta BufLen+1 jsr BUF.ResetSel @@ -167,26 +150,12 @@ BUF.DelSel jsr BUF.GetSelLen *-------------------------------------- * Erase char at CurXY *-------------------------------------- -BUF.DelChar lda BUF.COffset - sec - sbc #1 - tay - lda BUF.COffset+1 - sbc #0 - bcc .9 deleting char #0 - - >STYA TmpCount - - ldy #FileLen+1 - lda (pData),y - pha - dey - lda (pData),y - tay - pla +BUF.DelCharAtCursor + >LDYA BufLen jsr BUF.GetNewYA BufferLen-1 bcs .9 + >LDYA BUF.COffset jsr BUF.CopyCount .3 lda (BufPtrBackup) @@ -198,73 +167,79 @@ BUF.DelChar lda BUF.COffset .4 jsr BUF.CopyTail - ldy #FileLen - lda (pData),y - sec - sbc #1 - sta (pData),y - iny - lda (pData),y - sbc #0 - sta (pData),y + lda BufLen + bne .5 + + dec BufLen+1 + +.5 dec BufLen jsr BUF.ResetSel pla Get back deleted char - -.8 clc + + clc .9 rts *-------------------------------------- BUF.SelToClipboard jsr BUF.GetSelLen bcs .8 - >STYA TmpCount + >STYA SelLen - ldy #hClipBoard - lda (pData),y + >LDA.G hClipBoard beq .1 >SYSCALL FreeMem -.1 >LDYA TmpCount +.1 >LDYA SelLen >SYSCALL 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 + >STA.G hClipBoard ldy #hBuffer lda (pData),y >SYSCALL GetMemPtr - >STYA BufPtr - lda BufPtr - clc - ldy #SelStart - adc (pData),y + pha + tya + +* clc + >ADC.G SelStart sta BufPtr - lda BufPtr+1 - iny - adc (pData),y + pla + >ADC.G SelStart+1 sta BufPtr+1 + lda SelLen + ldy #ClipBoardLen+1 + sta (pData),y + eor #$ff + tax + + iny + lda SelLen + sta (pData),y + eor #$ff + pha + ldy #0 -.2 jsr DecTmpCount +.2 inx + bne .3 + pla + inc beq .7 - lda (BufPtr),y + + pha + +.3 lda (BufPtr),y sta (ClipboardPtr),y iny bne .2 + inc BufPtr+1 inc ClipboardPtr+1 bra .2 @@ -275,59 +250,97 @@ BUF.SelToClipboard .9 rts *-------------------------------------- BUF.CopyClipboard - >LDA.G ClipboardLen+1 + >LDA.G ClipboardLen eor #$ff tax - dey + iny lda (pData),y eor #$ff - tax + pha -.1 iny + ldy #0 + +.1 inx bne .2 - inx - beq .9 -.2 lda (ClipboardPtr) - sta (BufPtr) - inc ClipboardPtr - bne .3 + pla + inc + beq .3 + + pha + +.2 lda (ClipboardPtr),y + sta (BufPtr),y + iny + bne .1 + + inc ClipboardPtr+1 + inc BufPtr+1 + bra .1 + +.3 tya + clc + adc ClipboardPtr + sta ClipboardPtr + bcc .4 + inc ClipboardPtr+1 -.3 inc BufPtr - bne .1 +.4 tya + clc + adc BufPtr + sta BufPtr + bcc .8 + inc BufPtr+1 - bra .1 -.9 rts +.8 rts *-------------------------------------- -BUF.CopyCount lda TmpCount - eor #$ff - tay +BUF.CopyCount eor #$ff + pha - lda TmpCount+1 + tya eor #$ff tax -.1 iny - bne .2 - inx - beq .9 + ldy #0 -.2 lda (BufPtrBackup) - sta (BufPtr) - - inc BufPtrBackup - bne .3 - inc BufPtrBackup+1 - -.3 inc BufPtr +.1 inx + bne .2 + + pla + inc + beq .3 + + pha + +.2 lda (BufPtrBackup),y + sta (BufPtr),y + iny bne .1 + + inc BufPtrBackup+1 inc BufPtr+1 bra .1 -.9 rts +.3 tya + clc + adc BufPtrBackup + sta BufPtrBackup + bcc .4 + + inc BufPtrBackup+1 + +.4 tya + clc + adc BufPtr + sta BufPtr + bcc .8 + + inc BufPtr+1 + +.8 rts *-------------------------------------- BUF.CopyTail lda (BufPtrBackup) sta (BufPtr) @@ -444,7 +457,9 @@ BUF.GetCharAtY tya clc rts *-------------------------------------- -BUF.GetNewYA >STYA TmpLen +BUF.GetNewYA phy + pha + >LDA.G hBufferBackup beq .1 @@ -456,7 +471,8 @@ BUF.GetNewYA >STYA TmpLen >SYSCALL GetMemPtr >STYA BufPtrBackup - >LDYA TmpLen + pla + ply >SYSCALL GetMem bcs .9 diff --git a/BIN/EDIT.S.CTRL.txt b/BIN/EDIT.S.CTRL.txt index 6e2d7c04..12912c3a 100644 --- a/BIN/EDIT.S.CTRL.txt +++ b/BIN/EDIT.S.CTRL.txt @@ -9,11 +9,12 @@ NEW * ^E = End Block * ^F = Find... * ^G = Go To SOL -***** ^H -* ^I = -***** J,K +******** ^H = BS +******** ^I = TAB +******** ^J = LF +******** ^K = VT * ^L = Go To EOL -***** ^M +******** ^M = CR * ^N = Find Next * ^O = Page Up * ^P = Page Down @@ -21,13 +22,49 @@ NEW * ^R = Replace... * ^S = Save * ^T = Go To Top of file -***** ^U +******** ^U = FS * ^V = Paste Block * ^W = Erase line * ^X = Cut Block * ^Y = End Of File * ^Z = Undo *-------------------------------------- +Prompt.Editor cmp #C.DEL + beq Ctrl.DEL + + cmp #C.SPACE + bcc .3 + + jsr BUF.InsertA + bcs .9 + jsr SCRN.UpdateCurrentLine + bcs .9 + jsr Ctrl.FS + bcs .9 + +.8 clc + rts + +.3 asl + tax + jmp (J.CTRL,x) + +.9 jmp Ctrl.Q +*-------------------------------------- +Ctrl.DEL jsr BUF.ComputeCOffset + + lda BUF.COffset + ora BUF.COffset+1 No Backspace possible + beq .8 + + jsr Ctrl.BS + bcs .9 + + jmp Ctrl.Z.1 + +.8 clc +.9 rts +*-------------------------------------- Ctrl.Invalid clc rts @@ -514,25 +551,18 @@ Ctrl.Y ldy #FileY+1 rts .9 jmp Ctrl.Q *-------------------------------------- -Ctrl.Z clc - rts -*-------------------------------------- -Ctrl.ESC clc - rts -*-------------------------------------- -Prompt.Editor cmp #C.DEL - bne .2 - - jsr BUF.ComputeCOffset - - lda BUF.COffset - ora BUF.COffset+1 No Backspace possible - beq .8 +Ctrl.Z jsr BUF.ComputeCOffset - jsr Ctrl.BS - bcs .9 + lda BUF.COffset + cmp BufLen + lda BUF.COffset+1 + sbc BufLen+1 + bcc Ctrl.Z.1 - jsr BUF.DelChar + clc + rts + +Ctrl.Z.1 jsr BUF.DelCharAtCursor bcs .9 cmp #C.CR did we DEL a CR ? @@ -540,31 +570,13 @@ Prompt.Editor cmp #C.DEL jsr SCRN.UpdateMain bcs .9 - jsr SCRN.UpdateStatusBar - rts + jmp SCRN.UpdateStatusBar .1 jsr SCRN.UpdateCurrentLine - jsr SCRN.UpdateStatusBar - rts - -.2 cmp #C.SPACE - bcc .3 - - jsr BUF.InsertA bcs .9 - jsr SCRN.UpdateCurrentLine - bcs .9 - jsr Ctrl.FS - bcs .9 - -.8 clc - rts - -.3 asl - tax - jmp (J.CTRL,x) + jmp SCRN.UpdateStatusBar -.9 jmp Ctrl.Q +.9 rts *-------------------------------------- Prompt.Help >STZ.G PromptMode diff --git a/BIN/EDIT.S.SCRN.txt b/BIN/EDIT.S.SCRN.txt index b28f59e4..0e3f9132 100644 --- a/BIN/EDIT.S.SCRN.txt +++ b/BIN/EDIT.S.SCRN.txt @@ -2,7 +2,14 @@ NEW AUTO 3,1 .LIST OFF *-------------------------------------- -SCRN.Init >LDA.G ScreenH +SCRN.Init >LDYAI 256+5+5+1 potentially NORM,INV & \0 + >SYSCALL Getmem + bcs .9 + >STYA LineBufPtr + txa + >STA.G hLineBuffer + + >LDA.G ScreenH dec >PUSHA >PUSHBI 1 @@ -234,10 +241,8 @@ SCRN.UpdateStatusBar inc >PUSHA - ldy #FileLen+1 - >PUSHB (pData),y - dey - >PUSHB (pData),y + >PUSHW BufLen + >PUSHBI 5 >LDYA L.MSG.STATUSBAR >SYSCALL printf diff --git a/BIN/EDIT.S.txt b/BIN/EDIT.S.txt index 65e74a05..d2741972 100644 --- a/BIN/EDIT.S.txt +++ b/BIN/EDIT.S.txt @@ -22,14 +22,16 @@ BUF.COffset .BS 2 BUF.TmpLine1 .BS 2 BUF.TmpLine2 .BS 2 -TmpLen .BS 2 -TmpCount .BS 2 -TmpIndex .BS 2 +BufLen .BS 2 SelLen .BS 2 - -ZPPTR1 .BS 2 bNotRepaint .BS 1 bSelected .BS 1 + + +ZPPTR1 .BS 2 +TmpLen .BS 2 +TmpIndex .BS 2 +TmpCount .BS 1 TmpByte .BS 1 ZS.END .ED @@ -111,7 +113,7 @@ J.CTRL .DA Ctrl.Invalid .DA Ctrl.X .DA Ctrl.Y .DA Ctrl.Z - .DA Ctrl.ESC + .DA Ctrl.Invalid .DA Ctrl.Invalid .DA Ctrl.Invalid .DA Ctrl.Invalid @@ -153,7 +155,7 @@ CS.RUN >PUSHBI 0 bcs CS.RUN.RTS txa - >STA.G hBuffer FileLen already set to 0 + >STA.G hBuffer BufLen already set to 0 .3 lda #$ff >STA.G bSaved @@ -164,7 +166,7 @@ CS.RUN >PUSHBI 0 CS.RUN.LOOP >SYSCALL GetChar bcs CS.RUN.RTS I/O error -.1 jsr CharIn + jsr CharIn >LDA.G bCancel bpl CS.RUN.LOOP @@ -352,55 +354,53 @@ LoadFile >PUSHWI 0 Aux type >SYSCALL LoadTXTFile bcs .9 - >STYA BufPtr - >STYA ZPPTR1 - txa >STA.G hBuffer + + >SYSCALL GetMemPtr + >STYA BufPtr + >STYA BufPtrBackup - stz TmpLen - stz TmpLen+1 + stz BufLen + stz BufLen+1 ldy #0 + ldx #0 -.2 lda (BufPtr),y +.1 lda (BufPtrBackup),y beq .8 cpx #C.CR - bne .3 + bne .2 cmp #C.LF beq .5 -.3 cmp #C.SPACE - bcs .31 +.2 cmp #C.SPACE + bcs .3 cmp #C.CR bne .5 -.31 sta (ZPPTR1) - inc ZPPTR1 +.3 sta (BufPtr) + inc BufPtr bne .4 - inc ZPPTR1+1 + inc BufPtr+1 -.4 inc TmpLen +.4 inc BufLen bne .5 - inc TmpLen+1 + inc BufLen+1 .5 tax set previous char iny - bne .2 + bne .1 - inc ZPPTR1+1 - bra .2 + inc BufPtrBackup+1 + bra .1 -.8 lda #0 - sta (ZPPTR1) +.8 sta (BufPtr) - >LDYA TmpLen - >STYA.G FileLen - clc .9 rts *-------------------------------------- @@ -415,7 +415,7 @@ SaveFile >PUSHWI 0 Aux type pha - >PUSHW.G FileLen + >PUSHW BufLen >LDA.G hBuffer >SYSCALL GetMemPtr @@ -439,15 +439,6 @@ SaveFile >PUSHWI 0 Aux type >SYSCALL FClose .9 rts -*-------------------------------------- -DecTmpCount lda TmpCount - bne .1 - lda TmpCount+1 - beq .9 - dec TmpCount+1 -.1 dec TmpCount - ora #$ff make sure NZ -.9 rts *-------------------------------------- .INB USR/SRC/BIN/EDIT.S.BUF .INB USR/SRC/BIN/EDIT.S.CTRL @@ -492,7 +483,6 @@ MSG.HELP >PSTR "All commands: (* = Not yet implemented)" >PSTR " Ctrl-W : Erase current line" >PSTR " Ctrl-X : Cut block to clipboard" >PSTR " Ctrl-Y : Go to end of file" - >PSTR " Ctrl-Z : * Undo previous change" .HS 00 *-------------------------------------- MSG.NEWFILE .AZ "(new file)" @@ -515,7 +505,6 @@ hReplace .BS 1 hLineBuffer .BS 1 hBuffer .BS 1 hBufferBackup .BS 1 -FileLen .BS 2 hClipBoard .BS 1 ClipBoardLen .BS 2 ScreenW .BS 1 diff --git a/BIN/SH.S.CL.txt b/BIN/SH.S.CL.txt index 6fe86694..751141de 100644 --- a/BIN/SH.S.CL.txt +++ b/BIN/SH.S.CL.txt @@ -93,7 +93,7 @@ CL.CHARIN.CTRL cpx #C.CR jmp CL.CLR -.12 cpx #24 Ctrl-X +.12 cpx #26 Ctrl-Z bne .13 jmp CL.SUPPR diff --git a/INC/MACROS.I.txt b/INC/MACROS.I.txt index 6bec58cb..3e59f294 100644 --- a/INC/MACROS.I.txt +++ b/INC/MACROS.I.txt @@ -235,9 +235,9 @@ AUTO 4,1 sbc (pData),y .EM *-------------------------------------- - .MA DEC.G - >LDA.G ]1 - dec + .MA STZW.G + >STZ.G ]1 + iny sta (pData),y .EM *-------------------------------------- @@ -246,12 +246,6 @@ AUTO 4,1 inc sta (pData),y .EM -*-------------------------------------- - .MA STZW.G - >STZ.G ]1 - iny - sta (pData),y - .EM *-------------------------------------- .MA INCW.G >INC.G ]1 @@ -264,6 +258,25 @@ AUTO 4,1 :1 .EQ * .EM +*-------------------------------------- + .MA DEC.G + >LDA.G ]1 + dec + sta (pData),y + .EM +*-------------------------------------- + .MA DECW.G + >LDA.G ]1 + bne :1 + dec + sta (pData),y + + iny + lda (pData),y + +:1 dec + sta (pData),y + .EM *-------------------------------------- .MA LDYA.G >LDA.G ]1