Kernel 0.93+

This commit is contained in:
Rémy GIBERT 2019-11-12 17:39:22 +01:00
parent 7b84824df3
commit 9830a906a5
7 changed files with 195 additions and 131 deletions

Binary file not shown.

View File

@ -351,7 +351,7 @@ BUF.ComputeCOffset
phy save line length
>LDA.G FileX
clc
* clc
adc BUF.LOffset
sta BUF.COffset

View File

@ -512,7 +512,7 @@ Prompt.Save cmp #3 Ctrl-C
.11 pla
>STA.G hFileName
>STZ.G PromptMode
jsr SaveFile
jsr FILE.Save
bcc .81
.12 jsr SCRN.LineBufInit

View File

@ -2,114 +2,134 @@ NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
NewFile stz FileLen
stz FileLen+1
clc
rts
*--------------------------------------
LoadFile >PUSHEA.G STATBUF
>LDA.G hFileName
>SYSCALL GetMemPtr
>SYSCALL stat
bcs NewFile
>LDA.G STATBUF+S.STAT.P.TYPE
cmp #S.FI.T.TXT
beq LoadFile.TXT
cmp #$FA S-C/ASM?
bne .91
jmp LoadFile.ASM
.91 lda #MLI.E.INCFF
sec
rts
>LDA.G STATBUF+S.STAT.SIZE+3
dey
ora (pData),y
bne .90
dey
lda (pData),y Size HI
adc #4 1K more
ldy #0 Size LO
FILE.New >LDYAI 4096
>STYA BufLen
>SYSCALL GetMem
bcs .9
>STYA BufPtr
txa
>STA.G hBuffer
ldy #0
ldx #0
>STA.G hBuffer FileLen already set to 0
.1 lda (BufPtrBackup),y
beq .8
cpx #C.CR
bne .2
lda #0
sta (BufPtr)
cmp #C.LF
beq .5
stz FileLen
stz FileLen+1
.2 cmp #C.SPACE
bcs .3
.9 rts
*--------------------------------------
FILE.Load jsr BUF.ResetSel
cmp #C.CR
bne .5
>PUSHEA.G STATBUF
>LDA.G hFileName
>SYSCALL GetMemPtr
>SYSCALL stat
bcs FILE.New
>LDA.G STATBUF+S.STAT.P.TYPE
cmp #S.FI.T.TXT
beq FILE.Load.TXT
cmp #$FA S-C/ASM?
bne .9
.3 sta (BufPtr)
inc BufPtr
bne .4
inc BufPtr+1
.4 inc FileLen
bne .5
inc FileLen+1
.5 tax set previous char
iny
bne .1
inc BufPtrBackup+1
bra .1
.8 sta (BufPtr)
clc
.9 jmp BUF.ResetSel
.90 lda #E.FTB
jmp FILE.Load.ASM
.9 lda #MLI.E.INCFF
sec
rts
*--------------------------------------
LoadFile.TXT stz FileLen
FILE.Load.TXT stz FileLen
stz FileLen+1
>PUSHWZ Aux type
stz TmpByte hLineBuffer
stz TmpIndex hFile
>STZ.G FileType
jsr FILE.GetBuffer
bcs .99
>LDYA 256
>SYSCALL GetMem
bcs .99
>STYA ZPPTR1
stx TmpByte
>PUSHWZ Aux type
>PUSHBI S.FI.T.TXT
>PUSHBI O.RDONLY+O.TEXT
>LDA.G hFileName
>SYSCALL GetMemPtr
>SYSCALL fopen
bcs .9
.99 bcs .9
txa
>STA.G hFile
sta TmpIndex
.1 >PUSHWI 254
>PUSHW ZPPTR1
lda TmpIndex
>SYSCALL fread
bcs .8
lda #0
sta (ZPPTR1),y Y = line len
lda (ZPPTR1)
clc
eor #C.LF
bne .2
lda #2
>STA.G FileType
sec
.9 rts
.2 lda ZPPTR1
adc #0
tay
lda ZPPTR1+1
adc #0
>PUSHYA
>LDYA BufPtr
>SYSCALL strcat
bra .1
.8 cmp #MLI.E.EOF
bne .9
>LDYA BufPtr
>SYSCALL strlen
>STYA FileLen
clc
.9 jmp FILE.Load.Cleanup
*--------------------------------------
LoadFile.ASM
FILE.Load.ASM
lda #MLI.E.INCFF
sec
rts
*--------------------------------------
SaveFile >PUSHWZ Aux type
FILE.Load.Cleanup
php
pha
lda TmpByte
beq .1
>SYSCALL freemem
.1 lda TmpIndex
beq .2
>SYSCALL fclose
.2 pla
plp
rts
*--------------------------------------
FILE.Save >PUSHWZ Aux type
>PUSHBI S.FI.T.TXT
>PUSHBI O.CREATE+O.WRONLY
>LDA.G hFileName
@ -144,6 +164,37 @@ SaveFile >PUSHWZ Aux type
jsr SCRN.UpdateTopBar
.9 rts
*--------------------------------------
FILE.GetBuffer >LDA.G STATBUF+S.STAT.SIZE+3
dey
ora (pData),y
bne .9
dey
lda (pData),y Size HI
cmp #16
bcs .1
lda #13 Min = 3k
.1 adc #3 1K more
ldy #0 Size LO
>STYA BufLen
>SYSCALL GetMem
bcs .99
>STYA BufPtr
txa
>STA.G hBuffer
lda #0
sta (BufPtr)
rts
.9 lda #E.FTB
sec
.99 rts
*--------------------------------------
MAN
SAVE USR/SRC/BIN/EDIT.S.FILE

View File

@ -44,6 +44,10 @@ SCRN.UpdateTopBar
>LDYA L.MSG.GOTOXY
>SYSCALL printf
bcs .9
>LDA.G FileType
tax
>PUSHW L.MSG.FILETYPES,x
>LDA.G hFileName
beq .1
@ -54,7 +58,7 @@ SCRN.UpdateTopBar
.1 >LDYA L.MSG.NEWFILE
.2 >PUSHYA
>PUSHBI 2
>PUSHBI 4
>PUSHW L.MSG.TOPBAR
>LDYA ZPPTR1
>SYSCALL sprintf
@ -340,7 +344,6 @@ SCRN.LineBufOutBar
>SYSCALL printf
bcs .9
jmp SCRN.GotoCurXCurY
.9 rts
*--------------------------------------
SCRN.CursorAdjust
@ -396,7 +399,10 @@ SCRN.UpdateViewPort
ror bRepaint
bra .1
.2 >LDA.G ScreenX
.2 bit bRepaint
bmi .30
.21 >LDA.G ScreenX
>ADC.G ScreenW
dec
>CMP.G FileX
@ -405,16 +411,17 @@ SCRN.UpdateViewPort
>INC.G ScreenX
sec
ror bRepaint
bra .2
bra .21
.3 ldy #FileY+1
lda (pData),y
.3 bit bRepaint
.30 bmi .6
.31 >LDA.G FileY+1
tax
dey
lda (pData),y A,X = FileY
ldy #ScreenY
cmp (pData),y
>CMP.G ScreenY
iny
txa
sbc (pData),y
@ -422,26 +429,27 @@ SCRN.UpdateViewPort
>DECW.G ScreenY move viewport up one line....
bit bRepaint
bmi .3 skip scroll, will be repainted later
bmi .31 skip scroll, will be repainted later
jsr SCRN.scrollDn ...and move content one line down
bcc .3
bcc .31
rts
.4 ldy #ScreenY+1
lda (pData),y
.4 bit bRepaint
bmi .6
.41 >LDA.G ScreenY+1
tax
dey
lda (pData),y
>ADC.G ViewPortHm1
>ADC.G ViewPortHm2
bcc .5
inx
.5 ldy #FileY A,X = screen bottom
clc
sbc (pData),y
cmp (pData),y
txa
iny FileY > screen bottom ?
sbc (pData),y
@ -449,11 +457,10 @@ SCRN.UpdateViewPort
>INCW.G ScreenY move viewport down one line....
bit bRepaint
bmi .4
bmi .41
jsr SCRN.scrollUp ...and move content one line up
bcc .4
bcc .41
.9 rts
.6 >LDA.G FileX
@ -489,8 +496,7 @@ SCRN.scrollUp >LDA.G CurX
>SYSCALL printf
bcs .9
ldy #ScreenY+1
lda (pData),y
>LDA.G ScreenY+1
tax
dey
lda (pData),y
@ -520,8 +526,7 @@ SCRN.scrollDn >LDA.G CurX
>SYSCALL printf
bcs .9
ldy #ScreenY+1
lda (pData),y
>LDA.G ScreenY+1
tax
dey
lda (pData),y

View File

@ -3,11 +3,12 @@ NEW
.LIST OFF
.OP 65C02
.OR $2000
.TF BIN/EDIT
.TF BIN/EDIT2
*--------------------------------------
.INB INC/MACROS.I
.INB INC/A2OSX.I
.INB INC/MLI.I
.INB INC/MLI.E.I
*--------------------------------------
.DUMMY
.OR ZPBIN
@ -26,6 +27,7 @@ FileLen .BS 2
BufLen .BS 2
SelLen .BS 2
TmpLen .BS 2
TmpIndex .BS 2
ZPPTR1 .BS 2
@ -73,6 +75,9 @@ L.SEQ.SCROLLDN .DA SEQ.SCROLLDN
L.SEQ.CEOL .DA SEQ.CEOL
L.SEQ.BAR .DA SEQ.BAR
L.MSG.TOPBAR .DA MSG.TOPBAR
L.MSG.FILETYPES .DA MSG.TXTCR
.DA MSG.TXTCRLF
.DA MSG.TXTASM
L.MSG.STATUSBAR .DA MSG.STATUSBAR
.DA MSG.STATUSBAR.H
.DA MSG.STATUSBAR.F
@ -123,12 +128,12 @@ J.CTRL .DA Ctrl.Invalid
.DA 0
*--------------------------------------
CS.INIT clc
rts
CS.INIT.RTS rts
*--------------------------------------
CS.RUN >PUSHBI 0
>LDYA L.SEQ.DETECT
>SYSCALL printf Send Query for term W & H
bcs CS.RUN.RTS
bcs CS.INIT.RTS
.1 >SYSCALL GetChar
bcs CS.RUN.RTS
@ -150,19 +155,15 @@ CS.RUN >PUSHBI 0
>SYSCALL RealPath
txa
>STA.G hFileName
jsr LoadFile
jsr FILE.Load
bcc .3 if CS, Failed to load file, keep name, but new file....
cmp #E.OOM
beq CS.RUN.RTS
.2 >LDYAI 1 buffer size = 0 (+ 1 for ending 0)
>SYSCALL GetMem0
.2 jsr FILE.New
bcs CS.RUN.RTS
txa
>STA.G hBuffer FileLen already set to 0
.3 lda #$ff
>STA.G bSaved
@ -317,6 +318,10 @@ CharIn.Esc >STZ.G bEscMode
>STA.G ViewPortHm1 Remove 1 more to store offsert to last line of viewport
dec
>STA.G ViewPortHm2
ply
stz TmpByte
@ -364,7 +369,10 @@ SEQ.NORM .AZ "\e[0m"
SEQ.INV .AZ "\e[7m"
SEQ.EDIT .AS "\e[93;44m" +SEQ.CEOL
SEQ.CEOL .AZ "\e[K"
MSG.TOPBAR .AZ "A2osX Edit:%s"
MSG.TOPBAR .AZ "A2osX Edit:%s %s"
MSG.TXTCR .AZ "TXT/CR"
MSG.TXTCRLF .AZ "TXT/CRLF"
MSG.TXTASM .AZ "S-C/ASM"
MSG.STATUSBAR .AZ "(Press Ctrl-A For Help) Len: %5D Pos: %5D Col: %3d Line: %5D"
MSG.STATUSBAR.H .AZ "Press any key to exit this screen:"
MSG.STATUSBAR.F .AZ "Find:%s"
@ -397,7 +405,7 @@ MSG.HELP >PSTR "All commands: (* = Not yet implemented)"
>PSTR " Ctrl-Z : Erase char under cursor"
.HS 00
*--------------------------------------
MSG.NEWFILE .AZ "(new file)"
MSG.NEWFILE .AZ "newfile"
EscChars >PSTR "DBAC"
EscAscii .HS 04080A0B15
*--------------------------------------
@ -409,10 +417,9 @@ PromptBufPtr .BS 1
PromptMode .BS 1
bExit .BS 1
bSaved .BS 1
bCRLF .BS 1
bEscMode .BS 1
EscBuffer .BS 16
hFile .BS 1
FileType .BS 1
hFileName .BS 1
hFind .BS 1
hReplace .BS 1
@ -427,6 +434,7 @@ ScreenW .BS 1
ScreenH .BS 1
ViewPortH .BS 1
ViewPortHm1 .BS 1
ViewPortHm2 .BS 1
FileX .BS 1
FileY .BS 2
ScreenX .BS 1

View File

@ -47,23 +47,23 @@ ERR.Count .EQ *-ERR.Codes
*--------------------------------------
ERR.Messages >PSTR "I/O Error"
>PSTR "No Device"
>PSTR "Disk Write-Protected"
>PSTR "Disk Write-Prot."
>PSTR "Disk Switched"
>PSTR "Device Is Offline"
>PSTR "Offline Device"
>PSTR "Invalid Path"
>PSTR "Path Not Found"
>PSTR "Volume Not Found"
>PSTR "Vol Not Found"
>PSTR "File Not Found"
>PSTR "Duplicate Filename"
>PSTR "Volume Is Full"
>PSTR "Directory Is Full"
>PSTR "Unsupported Storage Type"
>PSTR "Dup. Filename"
>PSTR "Vol Is Full"
>PSTR "Dir Is Full"
>PSTR "Unsupp. Storage"
>PSTR "End Of File"
>PSTR "File Access Error, File Locked"
>PSTR "File Already Open"
>PSTR "File Locked"
>PSTR "File Opened"
*--------------------------------------
>PSTR "Out Of Memory"
>PSTR "Out Of Memory Handle"
>PSTR "Out Of Handle"
>PSTR "Invalid Handle"
>PSTR "Buffer Overflow"
>PSTR "Bad Path"
@ -71,20 +71,20 @@ ERR.Messages >PSTR "I/O Error"
>PSTR "No Such Process"
>PSTR "Syntax Error"
>PSTR "Env Is Full"
>PSTR "Invalid BIN format"
>PSTR "Invalid BIN"
>PSTR "File Too Big"
>PSTR "User Interrupt"
*--------------------------------------
>PSTR "Command Syntax Error"
>PSTR "Expression Syntax Error"
>PSTR "Cmd Syntax Error"
>PSTR "Exp. Syntax Error"
>PSTR "Stack Error"
>PSTR "Stack Overflow"
>PSTR "LOOP Without WHILE"
>PSTR "NEXT Without FOR"
>PSTR "FI/ELSE Without IF"
>PSTR "Bad File Type"
>PSTR "Undefined Function"
>PSTR "Unexpected EOF"
>PSTR "Undef. Function"
>PSTR "Unexp. EOF"
*--------------------------------------
>PSTR "Unknown Error"
*--------------------------------------