Kernel 0.93+

This commit is contained in:
Rémy GIBERT 2019-11-04 14:41:58 +01:00
parent 3ebca5bfa7
commit 385ed9dc62
6 changed files with 178 additions and 147 deletions

Binary file not shown.

View File

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

View File

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

View File

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

View File

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

BIN
_Pics/ProDOS.FX.logo.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB