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 phy save line length
>LDA.G FileX >LDA.G FileX
clc * clc
adc BUF.LOffset adc BUF.LOffset
sta BUF.COffset sta BUF.COffset

View File

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

View File

@ -2,114 +2,134 @@ NEW
AUTO 3,1 AUTO 3,1
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
NewFile stz FileLen FILE.New >LDYAI 4096
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
>STYA BufLen >STYA BufLen
>SYSCALL GetMem >SYSCALL GetMem
bcs .9
>STYA BufPtr >STYA BufPtr
txa txa
>STA.G hBuffer >STA.G hBuffer FileLen already set to 0
ldy #0
ldx #0
.1 lda (BufPtrBackup),y lda #0
beq .8 sta (BufPtr)
cpx #C.CR
bne .2
cmp #C.LF stz FileLen
beq .5 stz FileLen+1
.2 cmp #C.SPACE .9 rts
bcs .3 *--------------------------------------
FILE.Load jsr BUF.ResetSel
cmp #C.CR >PUSHEA.G STATBUF
bne .5 >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) jmp FILE.Load.ASM
inc BufPtr
bne .4 .9 lda #MLI.E.INCFF
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
sec sec
rts rts
*-------------------------------------- *--------------------------------------
LoadFile.TXT stz FileLen FILE.Load.TXT stz FileLen
stz FileLen+1 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 S.FI.T.TXT
>PUSHBI O.RDONLY+O.TEXT >PUSHBI O.RDONLY+O.TEXT
>LDA.G hFileName >LDA.G hFileName
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>SYSCALL fopen >SYSCALL fopen
bcs .9 .99 bcs .9
txa sta TmpIndex
>STA.G hFile
.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 lda #MLI.E.INCFF
sec sec
rts 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 S.FI.T.TXT
>PUSHBI O.CREATE+O.WRONLY >PUSHBI O.CREATE+O.WRONLY
>LDA.G hFileName >LDA.G hFileName
@ -144,6 +164,37 @@ SaveFile >PUSHWZ Aux type
jsr SCRN.UpdateTopBar jsr SCRN.UpdateTopBar
.9 rts .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 MAN
SAVE USR/SRC/BIN/EDIT.S.FILE SAVE USR/SRC/BIN/EDIT.S.FILE

View File

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

View File

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

View File

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