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

View File

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

View File

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

View File

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