Kernel 0.93+

This commit is contained in:
Rémy GIBERT 2019-10-16 16:31:49 +02:00
parent 16bc27fa1c
commit 5e9259f250
5 changed files with 80 additions and 91 deletions

Binary file not shown.

View File

@ -63,6 +63,7 @@ L.MSG.OK .DA MSG.OK
L.MSG.ERR .DA MSG.ERR
L.MSG.E.IARC .DA MSG.E.IARC
L.ARC.Header .DA ARC.Header
L.MSG.DBG .DA MSG.DBG
.DA 0
*--------------------------------------
CS.INIT >LDYA L.LIBPAK
@ -372,8 +373,9 @@ CS.RUN.Pak >PUSHEA.G PAKSTAT
>PUSHW.G Shunk.SrcSize
>PUSHW ZPSrcBufPtr
>LIBCALL hLIB,LIBPAK.Pak
bcs .9
>STYA.G Shunk.DstSize
rts
.9 rts
*--------------------------------------
CS.RUN.OpenArc >PUSHWZ Aux type
>PUSHBI $CF PAK
@ -484,6 +486,11 @@ CS.RUN.WriteSrcData
jsr CS.RUN.WriteArcByteA
bcs .9
>PUSHW.G Shunk.SrcSize
>PUSHBI 2
>LDYA L.MSG.DBG
>SYSCALL printf
>LDA.G Shunk.SrcSize
jsr CS.RUN.WriteArcByteA
bcs .9
@ -506,6 +513,11 @@ CS.RUN.WritePakData
lda #CHNK.T.DATA
jsr CS.RUN.WriteArcByteA
bcs .9
* >PUSHW.G Shunk.DstSize
* >PUSHBI 2
* >LDYA L.MSG.DBG
* >SYSCALL printf
>LDA.G Shunk.DstSize
jsr CS.RUN.WriteArcByteA
@ -598,6 +610,7 @@ MSG.ERR .AZ "[%h]\r\n"
MSG.E.IARC .AZ "Invalid/corrupt archive"
MSG.DIR .AZ "Reading Dir:%s..."
MSG.FILE .AZ "Adding File:%s..."
MSG.DBG .AZ "%H"
ARC.Header .AZ "PAK"
*--------------------------------------
LIBPAK .AZ "libpak"

View File

@ -59,7 +59,7 @@ L.MSG.OK .DA MSG.OK
L.MSG.ERR .DA MSG.ERR
L.MSG.E.IARC .DA MSG.E.IARC
L.MSG.E.OFS .DA MSG.E.OFS
L.DBG .DA DBG
L.MSG.DBG .DA MSG.DBG
.DA 0
*--------------------------------------
CS.INIT clc
@ -182,35 +182,46 @@ CS.RUN.LOOP jsr CS.RUN.GetByte
.2 cmp #CHNK.T.DATA
bne .3 Could be a 0 byte file
.20 jsr CS.RUN.GetByte DataLen LO
.20 lda #'.'
>SYSCALL putchar
jsr CS.RUN.GetByte DataLen LO
bcs .9
sta ZPInBufLen
jsr CS.RUN.GetByte DataLen HI
bcs .9
sta ZPInBufLen+1
jsr CS.RUN.ReadData
bcs .9
lda (ZPInBufPtr)
sta ZPOutBufLen
ldy #1
lda (ZPInBufPtr),y
sta ZPOutBufLen
iny
lda (ZPInBufPtr),y
sta ZPOutBufLen+1
* >PUSHW ZPOutBufLen
* >PUSHBI 2
* >LDYA L.MSG.DBG
* >SYSCALL printf
>LDA.G hOutBuf
>SYSCALL getmemptr
>STYA ZPOutBufPtr
jsr X.Unpak
bcs .9
.90 bcs .9
jsr CS.RUN.WriteFile
bcs .9
bcs .90
jsr CS.RUN.GetByte
bcs .8
cmp #CHNK.T.DATA
beq .20
@ -289,7 +300,10 @@ CS.RUN.GetFileName
.9 rts
*--------------------------------------
CS.RUN.ReadData >PUSHW ZPInBufLen
>PUSHW ZPInBufPtr
>LDA.G hInBuf
>SYSCALL getmemptr
>STYA ZPInBufPtr
>PUSHYA
>LDA.G hArcFile
>SYSCALL fread
rts
@ -375,7 +389,7 @@ MSG.ERR .AZ "[%h]\r\n"
MSG.E.IARC .AZ "Invalid/corrupt archive"
MSG.E.OFS .AZ "UnPak Error at Offset : %L\r\n"
MSG.PAK .AS "PAK"
DBG .AZ "\r\n\e[7m[L=%h,O=%H]\e[0m"
MSG.DBG .AZ "%H"
*--------------------------------------
.DUMMY
.OR 0

View File

@ -9,7 +9,7 @@ NEW
.INB INC/A2OSX.I
.INB INC/LIBPAK.I
*--------------------------------------
STATS .EQ 1
STATS .EQ 0
*--------------------------------------
ZPSrcPtr .EQ ZPLIB
ZPDstPtr .EQ ZPLIB+2
@ -70,6 +70,12 @@ Pak >PULLW Pak.SrcPtr
stz Pak.CntH,x
inx
bne .1
ldx #S.PAKSTAT.PASS2+1
.2 stz Pak.Stat,x Reset Stats
dex
bpl .2
* PASS #1 : no store, update byte counters
@ -100,7 +106,6 @@ Pak >PULLW Pak.SrcPtr
.DO STATS=1
jsr Pak.PrintStats
>DEBUG
.FIN
ldy #S.PAKSTAT-1
@ -132,12 +137,7 @@ Pak.Run >LDYA Pak.SrcPtr
sta Pak.SrcCnt+1
sta Pak.DstCnt+1
ldx #S.PAKSTAT.PASS1
bit Pak.bPass2
bpl .1
inx
inx
ldx #S.PAKSTAT.TOP8
.1 stz Pak.Stat,x Reset Stats
inx

View File

@ -10,8 +10,8 @@ NEW
* ZPPtr2
* ZPInMask,ZPBLOfsLBits,ZPBLOfsHBits,ZPBLLenBits
*--------------------------------------
X.Unpak >DEBUG
lda (ZPInBufPtr) CHNK.DATA.T
X.Unpak jsr X.Unpak.GetNextByte CHNK.DATA.T
tax
bne X.Unpak.PAK
*--------------------------------------
X.Unpak.STORE ldy #0
@ -25,7 +25,6 @@ X.Unpak.STORE ldy #0
jsr X.Unpak.PutByte
bne .1
X.Unpak.STORE.8
clc
rts
*--------------------------------------
@ -38,42 +37,38 @@ X.Unpak.PAK pha A = BLBITS
sta ZPBLLenBits
pla
ldx #8
and #$0f
tax
ldx #0
cmp #8
bcc .10
ldx #8
and #7
tax
lda #8
.10 stx ZPBLOfsLBits
sta ZPBLOfsHBits
jsr X.Unpak.NextByte get TOPCNT
.10 sta ZPBLOfsLBits
stx ZPBLOfsHBits
lda (ZPInBufPtr) ULEN LO
jsr X.Unpak.GetNextByte ULEN LO
sec
adc #0
eor #$ff
sta ZPnCnt
jsr X.Unpak.NextByte
lda (ZPInBufPtr) ULEN HI
jsr X.Unpak.GetNextByte ULEN HI
adc #0
eor #$ff
sta ZPnCnt+1
jsr X.Unpak.NextByte
jsr X.Unpak.GetNextByte get TOPCNT
lda (ZPInBufPtr) CHNK.DATA.PAK.TOPLEN
tax
jsr X.Unpak.NextByte get TOPCNT
ldx ZPInBufPtr ZPPtr1 = TOP table
stx ZPPtr1
ldx ZPInBufPtr+1
stx ZPPtr1+1
lda ZPInBufPtr
sta ZPPtr1
lda ZPInBufPtr+1
sta ZPPtr1+1
txa
clc
adc ZPInBufPtr skip TOP table
sta ZPInBufPtr
@ -84,10 +79,6 @@ X.Unpak.PAK pha A = BLBITS
.11 lda #$80
sta ZPInMask
*--------------------------------------
.1 lda ZPnCnt
ora ZPnCnt+1
beq X.Unpak.STORE.8
*--------------------------------------
.2 jsr X.Unpak.GetBitInC
bcs .3 ->TOP
* BYTE8
@ -131,9 +122,9 @@ X.Unpak.PAK pha A = BLBITS
* BACKLINK : 1111 OfsLBits OfsHBits LenBits
.6 ldx ZPBLOfsLBits
jsr X.Unpak.GetXBitInA
tay
eor #$ff
sec
adc ZPOutBufPtr
@ -147,10 +138,7 @@ X.Unpak.PAK pha A = BLBITS
jsr X.Unpak.GetXBitInA
plp
.61 pha
>PUSHYA
pla
eor #$ff
.61 eor #$ff
adc ZPOutBufPtr+1
sta ZPPtr2+1
@ -160,16 +148,7 @@ X.Unpak.PAK pha A = BLBITS
inc +1
inc +1
inc +1
>PUSHA
pha
>PUSHBI 3
>LDYA L.DBG
>SYSCALL printf
pla
tax
ldy #0
@ -181,14 +160,12 @@ X.Unpak.PAK pha A = BLBITS
dex
bne .62
lda #'\'
>SYSCALL putchar
lda #C.CR
>SYSCALL putchar
lda #C.LF
>SYSCALL putchar
lda ZPnCnt
ora ZPnCnt+1
bne .2
jmp .1
clc
rts
.99 sec
rts
@ -224,6 +201,8 @@ X.Unpak.GetBitInC
pla
rts
*--------------------------------------
X.Unpak.GetNextByte
lda (ZPInBufPtr)
X.Unpak.NextByte
inc ZPInBufPtr
bne .8
@ -232,32 +211,15 @@ X.Unpak.NextByte
.8 rts
*--------------------------------------
X.Unpak.PutByte sta (ZPOutBufPtr)
pha
phx
phy
lda (ZPOutBufPtr)
>SYSCALL putchar
lda (ZPOutBufPtr)
cmp #C.CR
bne .6
lda #C.LF
>SYSCALL putchar
.6
ply
plx
pla
inc ZPOutBufPtr
bne .1
inc ZPOutBufPtr+1
.1 inc ZPnCnt
bne .2
bne .8
inc ZPnCnt+1
.2 rts
.8 rts
*--------------------------------------
.LIST ON
X.Unpak.Size .EQ *-X.Unpak