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 .1 >STYA BufPtr
lda (BufPtr) lda (BufPtrDst)
pha Save deleted char for later pha Save deleted char for later
jsr BUF.MoveBackTail jsr BUF.MoveBackTail

View File

@ -274,12 +274,10 @@ Ctrl.CR jsr BUF.ComputeCOffset
>STZ.G FileX >STZ.G FileX
>LDA.G CurY >LDA.G CurY
inc
>DEBUG
>CMP.G ViewPortHm1 >CMP.G ViewPortHm1
beq .8 Bottom line, all done beq .8 Bottom line, all done
>STA.G CurY
dec dec
>CMP.G ViewPortHm1 >CMP.G ViewPortHm1
beq .1 No scoll needed beq .1 No scoll needed
@ -296,14 +294,11 @@ Ctrl.CR jsr BUF.ComputeCOffset
>SYSCALL printf >SYSCALL printf
bcs .9 bcs .9
>LDA.G ScreenH jsr SCRN.ResetScrollRgn
dec bcs .9
>PUSHA
>PUSHBI 1
>LDYA L.SEQ.SCROLLRGN
>SYSCALL printf
.1 jsr SCRN.UpdateCurrentLine .1 >INC.G CurY
jsr SCRN.UpdateCurrentLine
.8 clc .8 clc
.9 rts .9 rts
@ -403,14 +398,15 @@ Ctrl.Y jsr BUF.GetNextLine
>LDA.G FileY >LDA.G FileY
sec sec
>SBC.G ViewPortH >SBC.G ViewPortHm1
tax tax
>LDA.G FileY+1 >LDA.G FileY+1
sbc #0 sbc #0
bcs .2 bcs .2
lda #0 >LDA.G FileY
tax tax
lda #0
.2 >STA.G ScreenY+1 .2 >STA.G ScreenY+1
dey dey
@ -439,7 +435,12 @@ Ctrl.Q lda #$FF
clc clc
rts rts
*-------------------------------------- *--------------------------------------
Ctrl.S lda #PromptModeSave Ctrl.S >LDYA L.DLG.SAVE
jsr SCRN.DLGShow
clc
rts
lda #PromptModeSave
>STA.G PromptMode >STA.G PromptMode
>LDA.G hFileName >LDA.G hFileName
beq .2 beq .2
@ -541,11 +542,44 @@ Ctrl.Z jsr BUF.ComputeCOffset
bcs Ctrl.W.RTS bcs Ctrl.W.RTS
cmp #C.CR did we DEL a CR ? 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 jsr SCRN.UpdateCurrentLine
bcs Ctrl.W.RTS bcs .9
jmp SCRN.UpdateStatusBar
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 Prompt.Help >STZ.G PromptMode
@ -605,7 +639,7 @@ Prompt.Save cmp #3 Ctrl-C
jsr FILE.Save jsr FILE.Save
bcc .81 bcc .81
.12 jsr SCRN.LineBufInit .12 jsr SCRN.LineBufInitInv
jmp SCRN.UpdateStatusBarErrA jmp SCRN.UpdateStatusBarErrA
.2 cmp #C.DEL .2 cmp #C.DEL

View File

@ -29,9 +29,16 @@ SCRN.Home lda #0
bne .1 bne .1
rts rts
*-------------------------------------- *--------------------------------------
SCRN.ResetScrollRgn
>LDA.G ScreenH
dec
>PUSHA
>PUSHBI 1
>LDYA L.SEQ.SCROLLRGN
>SYSCALL printf
rts
*--------------------------------------
SCRN.UpdateTopBar SCRN.UpdateTopBar
jsr SCRN.LineBufInit
>PUSHBI 1 >PUSHBI 1
>PUSHBI 1 >PUSHBI 1
>PUSHBI 2 >PUSHBI 2
@ -39,6 +46,9 @@ SCRN.UpdateTopBar
>SYSCALL printf >SYSCALL printf
bcs .9 bcs .9
>LDYA.G LineBufBase
>STYA LineBufPtr
>LDA.G FileType >LDA.G FileType
tax tax
>PUSHW L.MSG.FILETYPES,x >PUSHW L.MSG.FILETYPES,x
@ -54,7 +64,7 @@ SCRN.UpdateTopBar
.2 >PUSHYA .2 >PUSHYA
>PUSHBI 4 >PUSHBI 4
>PUSHW L.MSG.TOPBAR >PUSHW L.MSG.TOPBAR
>LDYA ZPPTR1 >LDYA LineBufPtr
>SYSCALL sprintf >SYSCALL sprintf
bcs .9 bcs .9
@ -64,15 +74,15 @@ SCRN.UpdateTopBar
ldy #255 ldy #255
.3 iny .3 iny
lda (ZPPTR1),y lda (LineBufPtr),y
bne .3 bne .3
lda #'!' lda #'!'
sta (ZPPTR1),y sta (LineBufPtr),y
iny iny
lda #0 lda #0
sta (ZPPTR1),y sta (LineBufPtr),y
.8 jmp SCRN.LineBufOutBar .8 jmp SCRN.LineBufOutBar
.9 rts .9 rts
@ -83,9 +93,22 @@ SCRN.UpdateMain >LDA.G ScreenY
lda (pData),y lda (pData),y
sta TmpIndex+1 sta TmpIndex+1
lda #0 stz TmpByte
sta TmpByte
>LDA.G ViewPortH >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 sta TmpCount
.1 lda TmpIndex .1 lda TmpIndex
@ -159,7 +182,7 @@ SCRN.UpdateLineAtALenY
jsr SCRN.GotoXY jsr SCRN.GotoXY
bcs SCRN.UpdateMain.9 bcs SCRN.UpdateMain.9
jsr SCRN.LineBufInit jsr SCRN.LineBufInitNorm
ldy #$ff ldy #$ff
@ -228,12 +251,7 @@ SCRN.UpdateLineAtALenY
bpl .80 bpl .80
jsr SCRN.ToggleSel jsr SCRN.ToggleSel
.80 lda #0 .80 jmp SCRN.LineBufOut
jsr SCRN.ToLineBuf
>PUSHBI 0
>LDYA LineBufPtr
>SYSCALL printf
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
SCRN.ToggleSel ldy #0 SCRN.ToggleSel ldy #0
@ -255,7 +273,9 @@ SCRN.ToggleSel.RTS
rts rts
*-------------------------------------- *--------------------------------------
SCRN.UpdateStatusBar SCRN.UpdateStatusBar
jsr SCRN.LineBufInit >LDYA.G LineBufBase
>STYA LineBufPtr
>PUSHBI 1 >PUSHBI 1
>PUSHB.G ScreenH >PUSHB.G ScreenH
@ -308,7 +328,7 @@ SCRN.UpdateStatusBarOut
tax tax
SCRN.UpdateStatusBarOutErr SCRN.UpdateStatusBarOutErr
>PUSHW L.MSG.STATUSBAR,x >PUSHW L.MSG.STATUSBAR,x
>LDYA ZPPTR1 >LDYA LineBufPtr
>SYSCALL sprintf >SYSCALL sprintf
SCRN.LineBufOutBar SCRN.LineBufOutBar
>LDA.G ScreenW >LDA.G ScreenW
@ -316,7 +336,7 @@ SCRN.LineBufOutBar
ldy #0 ldy #0
.1 lda (ZPPTR1),y .1 lda (LineBufPtr),y
beq .2 beq .2
iny iny
dex dex
@ -326,15 +346,15 @@ SCRN.LineBufOutBar
.2 lda #C.SPACE .2 lda #C.SPACE
.3 sta (ZPPTR1),y .3 sta (LineBufPtr),y
iny iny
dex dex
bne .3 bne .3
lda #0 lda #0
sta (ZPPTR1),y sta (LineBufPtr),y
.4 >PUSHW LineBufPtr .4 >PUSHW.G LineBufBase
>PUSHBI 2 >PUSHBI 2
>LDYA L.SEQ.BAR >LDYA L.SEQ.BAR
>SYSCALL printf >SYSCALL printf
@ -352,17 +372,6 @@ SCRN.CursorAdjust
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
SCRN.LineBufInit
>LDYA LineBufPtr
>STYA ZPPTR1
rts
*--------------------------------------
SCRN.ToLineBuf sta (ZPPTR1)
inc ZPPTR1
bne .8
inc ZPPTR1+1
.8 rts
*--------------------------------------
SCRN.GotoCurXCurY SCRN.GotoCurXCurY
ldy #CurX ldy #CurX
lda (pData),y lda (pData),y
@ -525,6 +534,182 @@ SCRN.scrollDn >PUSHBI 0
.9 rts .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 MAN
SAVE USR/SRC/BIN/EDIT.S.SCRN SAVE USR/SRC/BIN/EDIT.S.SCRN
LOAD USR/SRC/BIN/EDIT.S LOAD USR/SRC/BIN/EDIT.S

View File

@ -18,8 +18,7 @@ TABMASK .EQ 3
.OR ZPBIN .OR ZPBIN
ZS.START ZS.START
BufPtr .BS 2 BufPtr .BS 2
BufPtrDst .EQ * BufPtrDst .BS 2
BufPtrBackup .BS 2
ClipboardPtr .BS 2 ClipboardPtr .BS 2
LineBufPtr .BS 2 LineBufPtr .BS 2
@ -75,6 +74,7 @@ L.SEQ.SCROLLRGN .DA SEQ.SCROLLRGN
L.SEQ.RESET .DA SEQ.RESET L.SEQ.RESET .DA SEQ.RESET
L.SEQ.SCROLLUP .DA SEQ.SCROLLUP L.SEQ.SCROLLUP .DA SEQ.SCROLLUP
L.SEQ.SCROLLDN .DA SEQ.SCROLLDN L.SEQ.SCROLLDN .DA SEQ.SCROLLDN
L.SEQ.SCROLLCURUP .DA SEQ.SCROLLCURUP
L.SEQ.SCROLLCURDN .DA SEQ.SCROLLCURDN L.SEQ.SCROLLCURDN .DA SEQ.SCROLLCURDN
L.SEQ.CEOL .DA SEQ.CEOL L.SEQ.CEOL .DA SEQ.CEOL
L.SEQ.BAR .DA SEQ.BAR L.SEQ.BAR .DA SEQ.BAR
@ -132,6 +132,7 @@ J.CTRL .DA Ctrl.Invalid
.DA Ctrl.Invalid .DA Ctrl.Invalid
.DA Ctrl.Invalid .DA Ctrl.Invalid
.DA Ctrl.Invalid .DA Ctrl.Invalid
L.DLG.SAVE .DA DLG.SAVE
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT clc CS.INIT clc
@ -152,7 +153,7 @@ CS.RUN >PUSHBI 0
>LDYAI 510+5+5+4+1 potentially 255*\\ NORM,INV,CEOL & \0 >LDYAI 510+5+5+4+1 potentially 255*\\ NORM,INV,CEOL & \0
>SYSCALL Getmem >SYSCALL Getmem
bcs CS.RUN.RTS bcs CS.RUN.RTS
>STYA LineBufPtr >STYA.G LineBufBase
txa txa
>STA.G hLineBuffer >STA.G hLineBuffer
@ -270,12 +271,12 @@ CharIn.Esc >STZ.G bEscMode
adc #EscBuffer adc #EscBuffer
tay tay
lda (pData),y lda (pData),y
ldx EscChars ldx #EscChars.Cnt-1
.1 cmp EscChars,x .1 cmp EscChars,x
beq .2 beq .2
dex dex
bne .1 bpl .1
cmp #'R' Response to cursor position query? cmp #'R' Response to cursor position query?
beq .3 beq .3
@ -368,6 +369,7 @@ SEQ.INIT .AS "\ec"
SEQ.SCROLLRGN .AZ "\e[?7l\e[2;%dr" SEQ.SCROLLRGN .AZ "\e[?7l\e[2;%dr"
SEQ.SCROLLUP .AZ "\eD" SEQ.SCROLLUP .AZ "\eD"
SEQ.SCROLLDN .AZ "\eM" SEQ.SCROLLDN .AZ "\eM"
SEQ.SCROLLCURUP .AZ "\e[?7l\e[%d;%dr\eD"
SEQ.SCROLLCURDN .AZ "\e[?7l\e[%d;%dr\eM" SEQ.SCROLLCURDN .AZ "\e[?7l\e[%d;%dr\eM"
SEQ.BAR .AS "\e[40;37m\e[7m%s" +SEQ.NORM SEQ.BAR .AS "\e[40;37m\e[7m%s" +SEQ.NORM
SEQ.NORM .AZ "\e[0m" SEQ.NORM .AZ "\e[0m"
@ -401,7 +403,7 @@ MSG.HELP >PSTR "All commands: (* = Not yet implemented)"
>PSTR " Ctrl-P : Page down" >PSTR " Ctrl-P : Page down"
>PSTR " Ctrl-Q : Quit" >PSTR " Ctrl-Q : Quit"
>PSTR " Ctrl-R : * Replace found string with..." >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-T : Go to top of file"
>PSTR " Ctrl-V : Past clipboard at cursor position" >PSTR " Ctrl-V : Past clipboard at cursor position"
>PSTR " Ctrl-W : Erase current line" >PSTR " Ctrl-W : Erase current line"
@ -411,8 +413,26 @@ MSG.HELP >PSTR "All commands: (* = Not yet implemented)"
.HS 00 .HS 00
*-------------------------------------- *--------------------------------------
MSG.NEWFILE .AZ "newfile" MSG.NEWFILE .AZ "newfile"
EscChars >PSTR "DBAC" EscChars .AS "DBAC"
EscAscii .HS 04080A0B15 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 .DUMMY
.OR 0 .OR 0
@ -429,6 +449,7 @@ hFileName .BS 1
hFind .BS 1 hFind .BS 1
hReplace .BS 1 hReplace .BS 1
hLineBuffer .BS 1 hLineBuffer .BS 1
LineBufBase .BS 2
BufBase .BS 2 BufBase .BS 2
hBuffer .BS 1 hBuffer .BS 1
hBufferBackup .BS 1 hBufferBackup .BS 1