Kernel 0.93++

This commit is contained in:
Rémy GIBERT 2020-02-11 17:32:33 +01:00
parent 6da34d72e3
commit a32e9e06c1
7 changed files with 218 additions and 61 deletions

Binary file not shown.

View File

@ -532,22 +532,9 @@ BUF.BufPtrSetup >STYA TmpLen
bcc .8
>PUSHB.G hBuf
lda FileLen+1
inc
inc
sta BufLen+1
>PUSHA
>PUSHBI 0
>SYSCALL realloc
jsr BUF.BufPtr.Realloc
bcs .9
>STYA.G BufBase
txa
>STA.G hBuf
.8 lda BUF.COffset
clc
>ADC.G BufBase
@ -569,6 +556,24 @@ BUF.BufPtrSetup >STYA TmpLen
clc
.9 rts
*--------------------------------------
BUF.BufPtr.Realloc
>PUSHB.G hBuf
lda FileLen+1
inc
inc
sta BufLen+1
>PUSHA
>PUSHBI 0
>SYSCALL realloc
bcs .9
>STYA.G BufBase
txa
>STA.G hBuf
.9 rts
*--------------------------------------
MAN
SAVE USR/SRC/BIN/EDIT.S.BUF
LOAD USR/SRC/BIN/EDIT.S

View File

@ -77,12 +77,8 @@ FILE.Load.TXT stz FileLen
>STYA ZPPTR1
stx TmpByte
>PUSHWZ Aux type
>PUSHBI S.FI.T.TXT
>PUSHBI O.RDONLY+O.TEXT
>LDA.G hFileName
>SYSCALL GetMemPtr
>SYSCALL fopen
ldx #S.FI.T.TXT
jsr FILE.OpenTypeX
bcs .99
sta TmpIndex
@ -153,9 +149,146 @@ FILE.Load.TXT stz FileLen
.9 sec
jmp FILE.Close
*--------------------------------------
FILE.Load.ASM
lda #MLI.E.INCFF
sec
FILE.Load.ASM stz FileLen
stz FileLen+1
lda #4
>STA.G FileType
lda #8
jsr FILE.GetBufferA 2k buffer
bcs .9
>LDYAI 256
>SYSCALL GetMem
bcs .99
>STYA ZPPTR1
stx TmpByte
ldx #$FA
jsr FILE.OpenTypeX
bcs .99
sta TmpIndex
.1 >PUSHWI 3
>PUSHW ZPPTR1
lda TmpIndex
>SYSCALL fread
bcs .7
lda #0
>PUSHA
lda (ZPPTR1)
dec
dec
dec
>PUSHA
>PUSHW ZPPTR1
lda TmpIndex
>SYSCALL fread
bcs .7
jsr FILE.Load.ASM.Decode
bcc .1
.7 cmp #MLI.E.EOF
bne .9
lda #0
sta (BufPtr)
clc
.HS B0 BCS
.9 sec
jmp FILE.Close
.99 rts
*--------------------------------------
FILE.Load.ASM.Decode
ldy #0
.1 lda (ZPPtr1),y
beq .8
iny
tax
bmi .2
jsr FILE.Load.ASM.2Buf
bcc .1
rts
.2 cmp #$C0 REPEAT char?
bne .5
lda (ZPPtr1),y Get Repeat Count
iny
tax
lda (ZPPtr1),y Get Repeat Char
iny
.4 jsr FILE.Load.ASM.2Buf
dex
bne .4
bra .1
.5 and #$3F Compute blank count
tax
lda #C.SPACE
.6 jsr FILE.Load.ASM.2Buf
dex
bne .6
bra .1
.9 rts
.8 lda #C.CR
*--------------------------------------
FILE.Load.ASM.2Buf
phy
phx
sta (BufPtr)
inc BufPtr
bne .1
inc BufPtr+1
.1 inc FileLen
bne .8
inc FileLen+1
lda FileLen+1
cmp BufLen+1
bne .8
jsr BUF.BufPtr.Realloc
bcs .9
>LDA.G BufBase
* clc
adc FileLen
sta BufPtr
iny
lda (pData),y
adc FileLen+1
sta BufPtr+1
.8 clc
.9 plx
ply
rts
*--------------------------------------
FILE.OpenTypeX >PUSHWZ Aux type
txa
>PUSHA
>PUSHBI O.RDONLY
>LDA.G hFileName
>SYSCALL GetMemPtr
>SYSCALL fopen
rts
*--------------------------------------
FILE.Save >LDYAI 256
@ -256,14 +389,14 @@ FILE.Save.ASM
FILE.GetBuffer >LDA.G STATBUF+S.STAT.SIZE+3
dey
ora (pData),y
bne .9
bne FILE.GetBuffer.9
dey
lda (pData),y Size HI
inc
inc
ldy #0 Size LO
FILE.GetBufferA ldy #0 Size LO
>STYA BufLen
>SYSCALL GetMem
bcs .99
@ -272,15 +405,13 @@ FILE.GetBuffer >LDA.G STATBUF+S.STAT.SIZE+3
>STYA.G BufBase
txa
>STA.G hBuf
lda #0
sta (BufPtr)
rts
.9 lda #E.FTB
sec
.99 rts
FILE.GetBuffer.9
lda #E.FTB
sec
rts
*--------------------------------------
MAN
SAVE USR/SRC/BIN/EDIT.S.FILE

View File

@ -10,7 +10,6 @@ PASS.MAX .EQ 64
*--------------------------------------
.INB INC/MACROS.I
.INB INC/A2OSX.I
.INB INC/LIBCRYPT.I
*--------------------------------------
* Zero Page Segment, up to 32 bytes
*--------------------------------------
@ -75,24 +74,32 @@ CS.INIT clc
CS.RUN >LDYAI S.PW
>SYSCALL getmem
bcs .99
>STYA ZPPWPtr
stx ZPhPW
>LDYAI 256
>SYSCALL getmem
bcs .99
>STYA ZPStrPtr
stx ZPhStr
>PUSHW ZPPWPtr
lda #0
>SYSCALL GetPWUID
bcc .1
jmp CS.RUN.ROOT
.1 ldy #S.PW
.2 dey
lda PW.DEFAULT,y
sta (pData),y
tya
bne .2
jsr CS.RUN.CheckArg
bcs .9
@ -219,20 +226,26 @@ CS.RUN.CheckArg inc ArgIndex
lda (ZPStrPtr)
cmp #'-'
bne .4
ldy #1
lda (ZPStrPtr),y
ldx OptionList
.2 cmp OptionList,x
ldx #OptionCnt
.2 cmp OptionList-1,x
beq .3
dex
bne .2
bpl .2
lda #E.SYN
sec
rts
.3 txa
and #$fe
tax
jmp (J.CS.RUN.CheckArg,x)
.4 lda ArgUsername
bne CS.RUN.CheckArg.9
lda pData
@ -351,7 +364,8 @@ CS.QUIT lda ZPhStr
*--------------------------------------
CS.END
*--------------------------------------
OptionList >PSTR "CcDdPpSs"
OptionList .AS "CcDdPpSs"
OptionCnt .EQ *-OptionList
*--------------------------------------
* Initialized DATA
*--------------------------------------
@ -369,7 +383,7 @@ MSG.BS .DA #C.BS,#C.SPACE,#C.BS,#0
*--------------------------------------
PW.ROOT .AS "root"
.BS 17-4
.AZ "D41D8CD98F00B204E9800998ECF8427E"
.AZ "d41d8cd98f00b204e9800998ecf8427e"
.DA #0 UID
.DA #0 GID
.AS "Root User"
@ -380,7 +394,7 @@ PW.ROOT .AS "root"
.BS 65-13
*--------------------------------------
PW.DEFAULT .BS 17 NAME
.AZ "D41D8CD98F00B204E9800998ECF8427E"
.AZ "d41d8cd98f00b204e9800998ecf8427e"
.DA #0 UID
.DA #1 GID
.BS 65 GECOS

View File

@ -3,7 +3,7 @@ NEW
.LIST OFF
.OP 65C02
.OR $2000
.TF BIN/USERDEL
.TF bin/userdel
*--------------------------------------
.INB INC/MACROS.I
.INB INC/A2OSX.I

View File

@ -459,13 +459,13 @@ Mem.DecRefCnt ldy #S.MEM.REFCNT
* Y,A = File Length
* X = hMem of Loaded Object in AUX mem
*\--------------------------------------
K.LoadStkObj ldx #SYS.LoadTxtFile To get ending \0
jsr K.SYSCALL2
K.LoadStkObj >SYSCALL2 LoadTxtFile To get ending \0
bcs .99
stx .90+1
sty .81+1 Save File Len
sta .82+1
iny
bne .1
inc +1 for ending 0
@ -563,15 +563,7 @@ MEM.MoveToMain sec
lda .2+1
>SYSCALL2 GetStkObjPtr
>STYA A1L Save AUX base Ptr
pha Add Allocated LEN
tya
clc
adc A2L
sta A2L
pla
adc A2L+1
sta A2L+1 to get End address in A2L/H
jsr MEM.MoveSetupA1A2 Setup AUX base & End Ptrs
clc Aux To Main
jsr AuxMove
@ -599,15 +591,7 @@ MEM.MoveToAux stx .1+1 Save MAIN hMem
lda .1+1
jsr K.GetMemPtr
>STYA A1L Save MAIN base Ptr
pha Add Allocated LEN
tya
clc
adc A2L
sta A2L
pla
adc A2L+1
sta A2L+1 to get End address in A2L/H
jsr MEM.MoveSetupA1A2 Setup MAIN base & End Ptrs
sec Main To Aux
jsr AuxMove
@ -620,6 +604,28 @@ MEM.MoveToAux stx .1+1 Save MAIN hMem
.9 rts
*--------------------------------------
MEM.MoveSetupA1A2
>STYA A1L Start Address
pha
tya
clc
adc A2L
tay
pla
adc A2L+1
sta A2L+1
tya
bne .1
dec A2L+1
.1 dey
sty A2L
rts
*--------------------------------------
MEM.GetKrnlBuf pha
tya
clc

View File

@ -155,6 +155,7 @@ K.PutPW >STYA ZPPtr2
bcc .11 user exits..
jsr PWD.GetUID new user, get UID
bcs .99
ldy #S.PW.UID
sta CLRWRITEAUX
sta (TXTPTR),y