Kernel 0.93+

This commit is contained in:
Rémy GIBERT 2019-11-18 17:40:32 +01:00
parent a29ddf7f75
commit d6fe848f75
5 changed files with 300 additions and 60 deletions

Binary file not shown.

View File

@ -97,7 +97,7 @@ BUF.DelCharAtCursor
.1 >STYA BufPtr
lda (BufPtr)
lda (BufPtrDst)
pha Save deleted char for later
jsr BUF.MoveBackTail

View File

@ -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

View File

@ -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

View File

@ -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