mirror of
https://github.com/A2osX/A2osX.git
synced 2024-07-13 13:29:04 +00:00
Kernel 0.93+
This commit is contained in:
parent
45fa33bd6d
commit
f4762df90b
Binary file not shown.
Binary file not shown.
249
BIN/PAKME.S.txt
249
BIN/PAKME.S.txt
@ -19,22 +19,24 @@ CHUNK.MAX .EQ 32
|
||||
ZS.START
|
||||
ZPPtr1 .BS 2
|
||||
ZPPtr2 .BS 2
|
||||
|
||||
ZPSrcBufPtr .BS 2
|
||||
ZPDstBufPtr .BS 2
|
||||
|
||||
ZPSrcFileSize .BS 2
|
||||
ZPDstTableOfs .BS 2
|
||||
|
||||
hSrcFile .BS 1
|
||||
hDstFile .BS 1
|
||||
ZPChunkIndex .BS 1
|
||||
ZPChunkCnt .BS 1
|
||||
ZPChunkOfs .BS 2
|
||||
ZPChunkLen .BS 2
|
||||
|
||||
hSrcFile .BS 1
|
||||
hDstFile .BS 1
|
||||
bPause .BS 1
|
||||
ZPChunkPakedLen .BS 2
|
||||
ZPChunkNewOfs .BS 2
|
||||
hSrcBuf .BS 1
|
||||
hDstBuf .BS 1
|
||||
ZPSrcBufPtr .BS 2
|
||||
ZPDstBufPtr .BS 2
|
||||
|
||||
bPause .BS 1
|
||||
|
||||
ZS.END .ED
|
||||
*--------------------------------------
|
||||
@ -61,8 +63,7 @@ L.LIBPAK .DA LIBPAK
|
||||
L.MSG.USAGE .DA MSG.USAGE
|
||||
L.MSG.SRCFILE .DA MSG.SRCFILE
|
||||
L.MSG.CHUNK .DA MSG.CHUNK
|
||||
L.MSG.OK .DA MSG.OK
|
||||
L.MSG.ERR .DA MSG.ERR
|
||||
L.MSG.PAKED .DA MSG.PAKED
|
||||
L.MSG.E.IARC .DA MSG.E.IARC
|
||||
L.TAG .DA TAG
|
||||
.DA 0
|
||||
@ -104,31 +105,62 @@ CS.RUN ldy #S.PS.ARGC
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.START >PUSHB.G PAKME.HEADER+7
|
||||
>PUSHW ZPSrcFileSize
|
||||
CS.RUN.START >PUSHW ZPDstTableOfs
|
||||
>PUSHB.G PAKME.HEADER+7
|
||||
>PUSHW.G PAKME.HEADER+5
|
||||
>PUSHW ZPSrcFileSize
|
||||
lda #1
|
||||
>SYSCALL ArgV
|
||||
>PUSHYA
|
||||
|
||||
>PUSHBI 7
|
||||
>PUSHBI 9
|
||||
>LDYA L.MSG.SRCFILE
|
||||
>SYSCALL printf
|
||||
|
||||
>LDYA ZPDstTableOfs
|
||||
jsr CS.RUN.GetSrcBufYA
|
||||
bcs CS.RUN.RTS
|
||||
|
||||
>PUSHBI SEEK.SET
|
||||
>PUSHWZ
|
||||
>PUSHWZ
|
||||
lda hSrcFile
|
||||
>SYSCALL fseek
|
||||
bcs CS.RUN.RTS
|
||||
|
||||
>PUSHW ZPDstTableOfs
|
||||
>PUSHW ZPSrcBufPtr
|
||||
lda hSrcFile
|
||||
>SYSCALL fread
|
||||
bcs CS.RUN.RTS
|
||||
|
||||
>PUSHW ZPDstTableOfs
|
||||
>PUSHW ZPSrcBufPtr
|
||||
lda hDstFile
|
||||
>SYSCALL fwrite
|
||||
bcs CS.RUN.RTS
|
||||
|
||||
jsr CS.QUIT.BUF
|
||||
|
||||
jsr CS.RUN.WriteTable Write Fake table
|
||||
|
||||
bcc CS.RUN.LOOP
|
||||
|
||||
CS.RUN.RTS rts
|
||||
*--------------------------------------
|
||||
CS.RUN.LOOP ldy #S.PS.hStdIn
|
||||
lda (pPS),y
|
||||
>SYSCALL feof
|
||||
bcs .9
|
||||
bcs CS.RUN.RTS
|
||||
|
||||
tay
|
||||
bne .1
|
||||
|
||||
>SYSCALL GetChar
|
||||
bcs .9
|
||||
bcs CS.RUN.RTS
|
||||
|
||||
cmp #$03 Ctrl-C
|
||||
beq .9 Abort....
|
||||
beq CS.RUN.RTS Abort....
|
||||
|
||||
cmp #$13 Ctrl-S
|
||||
bne .1
|
||||
@ -142,22 +174,47 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
|
||||
bne CS.RUN.LOOP Pause...
|
||||
*--------------------------------------
|
||||
jsr CS.RUN.GetChunk
|
||||
bcs .9
|
||||
bcs CS.RUN.RTS
|
||||
|
||||
>PUSHW ZPChunkLen
|
||||
>PUSHW ZPChunkOfs
|
||||
>PUSHB ZPChunkIndex
|
||||
>PUSHBI 3
|
||||
lda ZPChunkIndex
|
||||
inc
|
||||
>PUSHA
|
||||
>PUSHBI 5
|
||||
>LDYA L.MSG.CHUNK
|
||||
>SYSCALL printf
|
||||
bcs .9
|
||||
|
||||
jsr CS.RUN.Pak
|
||||
bcs .9
|
||||
|
||||
jsr CS.RUN.WritePak
|
||||
bcs .9
|
||||
|
||||
>PUSHW ZPChunkNewOfs
|
||||
>PUSHW ZPChunkPakedLen
|
||||
>PUSHBI 4
|
||||
>LDYA L.MSG.PAKED
|
||||
>SYSCALL printf
|
||||
bcs .9
|
||||
|
||||
jsr CS.QUIT.BUF
|
||||
|
||||
jsr CS.RUN.UpdateTable
|
||||
inc ZPChunkIndex
|
||||
dec ZPChunkCnt
|
||||
beq .8
|
||||
|
||||
jmp CS.RUN.LOOP
|
||||
jmp CS.RUN.LOOP
|
||||
|
||||
.8 lda #0
|
||||
.8 jsr CS.RUN.SeekTable
|
||||
bcs .9
|
||||
|
||||
jsr CS.RUN.WriteTable Write modifid Table
|
||||
bcs .9
|
||||
|
||||
lda #0
|
||||
sec
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
@ -245,21 +302,16 @@ CS.RUN.CheckTAG >PUSHBI SEEK.SET
|
||||
sec
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.GetTable >PUSHBI SEEK.SET
|
||||
>PUSHWZ
|
||||
|
||||
>LDA.G PAKME.HEADER+8
|
||||
CS.RUN.GetTable >LDA.G PAKME.HEADER+8
|
||||
sec
|
||||
>SBC.G PAKME.HEADER+5
|
||||
sta ZPDstTableOfs+1
|
||||
pha
|
||||
sta ZPDstTableOfs
|
||||
|
||||
>LDA.G PAKME.HEADER+9
|
||||
>SBC.G PAKME.HEADER+6
|
||||
sta ZPDstTableOfs
|
||||
ply
|
||||
>PUSHYA
|
||||
lda hSrcFile
|
||||
>SYSCALL fseek
|
||||
sta ZPDstTableOfs+1
|
||||
|
||||
jsr CS.RUN.SeekTable
|
||||
bcs .9
|
||||
|
||||
>LDA.G PAKME.HEADER+7
|
||||
@ -278,8 +330,6 @@ CS.RUN.GetTable >PUSHBI SEEK.SET
|
||||
*--------------------------------------
|
||||
CS.RUN.GetChunk lda ZPChunkIndex
|
||||
|
||||
inc ZPChunkIndex
|
||||
|
||||
asl
|
||||
clc
|
||||
adc #PAKME.TABLE+1
|
||||
@ -312,15 +362,26 @@ CS.RUN.GetChunk lda ZPChunkIndex
|
||||
bcs .9
|
||||
|
||||
>LDA.G CHUNK.HEADER
|
||||
* bne .90
|
||||
bne .90
|
||||
|
||||
>LDA.G CHUNK.HEADER+1
|
||||
sta ZPChunkLen
|
||||
pha
|
||||
iny
|
||||
lda (pData),y
|
||||
sta ZPChunkLen+1
|
||||
ply
|
||||
|
||||
clc
|
||||
jsr CS.RUN.GetSrcBufYA
|
||||
bcs .9
|
||||
|
||||
>PUSHW ZPChunkLen
|
||||
>PUSHW ZPSrcBufPtr
|
||||
lda hSrcFile
|
||||
>SYSCALL fread
|
||||
bcs .9
|
||||
|
||||
* clc
|
||||
rts
|
||||
|
||||
.90 lda #MLI.E.INCFF
|
||||
@ -328,6 +389,89 @@ CS.RUN.GetChunk lda ZPChunkIndex
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.GetSrcBufYA
|
||||
>SYSCALL getmem
|
||||
bcs .9
|
||||
stx hSrcBuf
|
||||
>STYA ZPSrcBufPtr
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.Pak >LDYA ZPChunkLen
|
||||
>SYSCALL getmem
|
||||
bcs .9
|
||||
stx hDstBuf
|
||||
>STYA ZPDstBufPtr
|
||||
|
||||
>PUSHEA.G PAKSTAT
|
||||
>PUSHW ZPDstBufPtr
|
||||
>PUSHW ZPChunkLen
|
||||
>PUSHW ZPSrcBufPtr
|
||||
>LIBCALL hLIB,LIBPAK.Pak
|
||||
bcs .9
|
||||
>STYA ZPChunkPakedLen
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.SeekTable
|
||||
>PUSHBI SEEK.SET
|
||||
>PUSHWZ
|
||||
>PUSHW ZPDstTableOfs
|
||||
lda hSrcFile
|
||||
>SYSCALL fseek
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.WriteTable
|
||||
lda ZPChunkCnt
|
||||
asl
|
||||
tay
|
||||
lda #0
|
||||
>PUSHYA
|
||||
>PUSHEA.G PAKME.TABLE
|
||||
lda hDstFile
|
||||
>SYSCALL fwrite
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.WritePak lda hDstFile
|
||||
>SYSCALL ftell
|
||||
bcs .9
|
||||
|
||||
>PULLW ZPChunkNewOfs
|
||||
inc pStack
|
||||
inc pStack
|
||||
|
||||
>PUSHW ZPChunkPakedLen
|
||||
>PUSHW ZPDstBufPtr
|
||||
lda hDstFile
|
||||
>SYSCALL fwrite
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.UpdateTable
|
||||
ldy #PAKME.HEADER+6
|
||||
lda (pData),y
|
||||
pha
|
||||
|
||||
dey
|
||||
lda (pData),y
|
||||
pha
|
||||
|
||||
lda ZPChunkIndex
|
||||
|
||||
asl
|
||||
clc
|
||||
adc #PAKME.TABLE
|
||||
tay
|
||||
|
||||
pla
|
||||
clc
|
||||
adc ZPChunkNewOfs
|
||||
sta (pData),y
|
||||
|
||||
iny
|
||||
|
||||
pla
|
||||
adc ZPChunkNewOfs+1
|
||||
sta (pData),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.DOEVENT sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -339,15 +483,9 @@ CS.QUIT lda hDstFile
|
||||
beq .3
|
||||
>SYSCALL fclose
|
||||
|
||||
.3 >LDA.G hDstBuf
|
||||
beq .4
|
||||
>SYSCALL FreeMem
|
||||
.3 jsr CS.QUIT.BUF
|
||||
|
||||
.4 >LDA.G hSrcBuf
|
||||
beq .5
|
||||
>SYSCALL FreeMem
|
||||
|
||||
.5 lda hLIB
|
||||
lda hLIB
|
||||
beq .8
|
||||
|
||||
>SYSCALL UnloadLib
|
||||
@ -355,13 +493,24 @@ CS.QUIT lda hDstFile
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT.BUF lda hDstBuf
|
||||
beq .1
|
||||
stz hDstBuf
|
||||
>SYSCALL FreeMem
|
||||
|
||||
.1 lda hSrcBuf
|
||||
beq .8
|
||||
stz hSrcBuf
|
||||
>SYSCALL FreeMem
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
*--------------------------------------
|
||||
MSG.USAGE .AZ "Usage : PAKME SourceBIN PackedBIN\r\n"
|
||||
MSG.SRCFILE .AZ "Source File : %s, Org=$%H Size=%D, %d Chunks.\r\n"
|
||||
MSG.CHUNK .AZ " Chunk #%02d : Ofs=%H, Len=%D\r\n"
|
||||
MSG.OK .AZ "[OK]"
|
||||
MSG.ERR .AZ "[%h]\r\n"
|
||||
MSG.SRCFILE .AZ "Source File : %s, Size=%5D, Org=$%H, %d Chunks at $%H.\r\n"
|
||||
MSG.CHUNK .AZ " Chunk #%02d : Ofs=$%H, Len=%5D ... "
|
||||
MSG.PAKED .AZ "PAKed : %5D Bytes, New Ofs=$%H\r\n"
|
||||
MSG.E.IARC .AZ "Invalid/corrupt archive"
|
||||
TAG .AZ "PAKME"
|
||||
*--------------------------------------
|
||||
@ -371,12 +520,6 @@ hLIB .BS 1
|
||||
.DUMMY
|
||||
.OR 0
|
||||
DS.START
|
||||
hSrcBuf .BS 1
|
||||
hDstBuf .BS 1
|
||||
|
||||
Shunk.SrcSize .BS 2
|
||||
Shunk.DstSize .BS 2
|
||||
|
||||
STATBUF .BS S.STAT
|
||||
PAKME.HEADER .BS 10
|
||||
PAKME.TABLE .BS CHUNK.MAX*2
|
||||
|
@ -20,22 +20,15 @@ Kernel.Init2 sei
|
||||
>LDYAI MSG.Init2
|
||||
jsr PrintFYA
|
||||
|
||||
>LDYAI A2osX.MAIN
|
||||
>LDYA PAKME.MAIN
|
||||
>STYA ZPInBufPtr
|
||||
>LDYAI CORE.Run
|
||||
>STYA ZPOutBufPtr
|
||||
jsr X.Unpak
|
||||
|
||||
* >LDYAI A2osX.MAIN
|
||||
* >STYA ZPPtr1
|
||||
* >LDYAI CORE.Run
|
||||
* >STYA ZPPtr2
|
||||
* >LDYAI A2osX.MAIN.S^$FFFF
|
||||
* jsr Kernel.Move
|
||||
|
||||
sta SETWRITEAUX
|
||||
|
||||
>LDYAI A2osX.AUX
|
||||
>LDYA PAKME.AUX
|
||||
>STYA ZPInBufPtr
|
||||
>LDYAI X.OSD
|
||||
>STYA ZPOutBufPtr
|
||||
@ -43,83 +36,37 @@ Kernel.Init2 sei
|
||||
|
||||
sta CLRWRITEAUX
|
||||
|
||||
* >LDYAI A2osX.AUX
|
||||
* >STYA A1L Src Start Address (MAIN)
|
||||
* >LDYAI A2osX.GP
|
||||
* >STYA A2L Src End Address (MAIN)
|
||||
* >LDYAI X.OSD
|
||||
* >STYA A4L Dst Address (AUX)
|
||||
* sec Main To Aux
|
||||
* jsr AuxMove
|
||||
|
||||
>LDYAI A2osX.GP
|
||||
>LDYA PAKME.GP
|
||||
>STYA ZPInBufPtr
|
||||
>LDYAI A2osX.SYSCALL
|
||||
>STYA ZPOutBufPtr
|
||||
jsr X.Unpak
|
||||
|
||||
* >LDYAI A2osX.GP
|
||||
* >STYA ZPPtr1
|
||||
* >LDYAI A2osX.SYSCALL
|
||||
* >STYA ZPPtr2
|
||||
* >LDYAI A2osX.GP.S^$FFFF
|
||||
* jsr Kernel.Move
|
||||
|
||||
* >LDYAI A2osX.GPX
|
||||
* >STYA A1L Src Start Address (MAIN)
|
||||
* >LDYAI A2osX.D1
|
||||
* >STYA A2L Src End Address (MAIN)
|
||||
* >LDYAI A2osX.SYSCALL
|
||||
* >STYA A4L Dst Address (AUX)
|
||||
* sec Main To Aux
|
||||
* jsr AuxMove
|
||||
|
||||
sta SETALTZP
|
||||
bit RRAMWRAMBNK2
|
||||
bit RRAMWRAMBNK2
|
||||
|
||||
>LDYAI A2osX.D2
|
||||
>LDYA PAKME.D2
|
||||
>STYA ZPInBufPtr
|
||||
>LDYAI $D000
|
||||
>STYA ZPOutBufPtr
|
||||
jsr X.Unpak
|
||||
|
||||
* >LDYAI A2osX.D2
|
||||
* >STYA ZPPtr1
|
||||
* >LDYAI $D000
|
||||
* >STYA ZPPtr2
|
||||
* >LDYAI A2osX.D2.S^$FFFF
|
||||
* jsr Kernel.Move
|
||||
|
||||
bit RRAMWRAMBNK1
|
||||
bit RRAMWRAMBNK1
|
||||
|
||||
>LDYAI A2osX.D1
|
||||
>LDYA PAKME.D1
|
||||
>STYA ZPInBufPtr
|
||||
>LDYAI $D000
|
||||
>STYA ZPOutBufPtr
|
||||
jsr X.Unpak
|
||||
|
||||
* >LDYAI A2osX.D1
|
||||
* >STYA ZPPtr1
|
||||
* >LDYAI $D000
|
||||
* >STYA ZPPtr2
|
||||
* >LDYAI A2osX.D1.S^$FFFF
|
||||
* jsr Kernel.Move
|
||||
|
||||
>LDYAI A2osX.E0
|
||||
>LDYA PAKME.E0
|
||||
>STYA ZPInBufPtr
|
||||
>LDYAI $E000
|
||||
>STYA ZPOutBufPtr
|
||||
jsr X.Unpak
|
||||
|
||||
* >LDYAI A2osX.E0
|
||||
* >STYA ZPPtr1
|
||||
* >LDYAI $E000
|
||||
* >STYA ZPPtr2
|
||||
* >LDYAI A2osX.E0.S^$FFFF
|
||||
* jsr Kernel.Move
|
||||
|
||||
bit RROMBNK1
|
||||
sta CLRALTZP
|
||||
cli
|
||||
@ -239,23 +186,6 @@ Kernel.Init3.Err
|
||||
*--------------------------------------
|
||||
* INIT2 Subs
|
||||
*--------------------------------------
|
||||
*Kernel.Move >STYA ZPPtr3
|
||||
* ldy #0
|
||||
|
||||
*.1 inc ZPPtr3
|
||||
* bne .2
|
||||
* inc ZPPtr3+1
|
||||
* beq .9
|
||||
|
||||
*.2 lda (ZPPtr1),y
|
||||
* sta (ZPPtr2),y
|
||||
* iny
|
||||
* bne .1
|
||||
* inc ZPPtr1+1
|
||||
* inc ZPPtr2+1
|
||||
* bne .1
|
||||
*.9 rts
|
||||
*--------------------------------------
|
||||
KConfigLoad >LDYAI MSG.KCREAD
|
||||
jsr PrintFYA
|
||||
|
||||
|
@ -22,12 +22,13 @@ NEW
|
||||
.INB USR/SRC/SHARED/X.PRINTF.S
|
||||
.INB USR/SRC/SHARED/X.UNPAK.S
|
||||
|
||||
PAKME.Table .DA A2osX.MAIN
|
||||
.DA A2osX.AUX
|
||||
.DA A2osX.GP
|
||||
.DA A2osX.D1
|
||||
.DA A2osX.D2
|
||||
.DA A2osX.E0
|
||||
PAKME.Table
|
||||
PAKME.MAIN .DA A2osX.MAIN
|
||||
PAKME.AUX .DA A2osX.AUX
|
||||
PAKME.GP .DA A2osX.GP
|
||||
PAKME.D1 .DA A2osX.D1
|
||||
PAKME.D2 .DA A2osX.D2
|
||||
PAKME.E0 .DA A2osX.E0
|
||||
|
||||
A2osX.MAIN .DA #0
|
||||
.DA A2osX.MAIN.S
|
||||
@ -56,9 +57,7 @@ A2osX.GP .DA #0
|
||||
.PH A2osX.SYSCALL
|
||||
.INB USR/SRC/SYS/KERNEL.S.GP
|
||||
.EP
|
||||
*A2osX.GPX .PH A2osX.SYSCALL
|
||||
* .INB USR/SRC/SYS/KERNEL.S.GPX
|
||||
* .EP
|
||||
|
||||
A2osX.D1 .DA #0
|
||||
.DA A2osX.D1.S
|
||||
.PH $D000
|
||||
@ -72,6 +71,7 @@ A2osX.D1 .DA #0
|
||||
.INB USR/SRC/SYS/KERNEL.S.FIO
|
||||
.INB USR/SRC/SYS/KERNEL.S.PFT
|
||||
.EP
|
||||
|
||||
A2osX.D2 .DA #0
|
||||
.DA A2osX.D2.S
|
||||
.PH $D000
|
||||
@ -83,6 +83,7 @@ A2osX.D2 .DA #0
|
||||
.INB USR/SRC/SYS/KERNEL.S.ARG
|
||||
.INB USR/SRC/SYS/KERNEL.S.ENV
|
||||
.EP
|
||||
|
||||
A2osX.E0 .DA #0
|
||||
.DA A2osX.E0.S
|
||||
.PH $E000
|
||||
@ -109,6 +110,7 @@ DevMgr.FreeMem .EQ *
|
||||
.LIST OFF
|
||||
.EP
|
||||
A2osX.E0.E .EQ *
|
||||
|
||||
*--------------------------------------
|
||||
.AS "PAKME" TAG
|
||||
.DA $2000 BIN ORG
|
||||
|
Loading…
Reference in New Issue
Block a user