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
62350fcd0a
commit
d0e3005880
Binary file not shown.
Binary file not shown.
@ -186,8 +186,9 @@ CS.RUN.PRINT.DEV
|
|||||||
jsr EnterSubDirYA
|
jsr EnterSubDirYA
|
||||||
bcs .9
|
bcs .9
|
||||||
jmp CS.RUN.ENTER.MSG
|
jmp CS.RUN.ENTER.MSG
|
||||||
.8 clc.9
|
|
||||||
rts
|
.8 clc
|
||||||
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.PRINT.DIR
|
CS.RUN.PRINT.DIR
|
||||||
>LDA.G bAllmostAll
|
>LDA.G bAllmostAll
|
||||||
|
@ -102,9 +102,6 @@ CS.RUN >INC.G ArgIndex
|
|||||||
.5 >LDA.G hSrcBasePath
|
.5 >LDA.G hSrcBasePath
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
>LDYA ZPPtr1
|
|
||||||
>SYSCALL puts
|
|
||||||
>DEBUG
|
|
||||||
>LDYA ZPPtr1
|
>LDYA ZPPtr1
|
||||||
jsr InitSrcDirYA
|
jsr InitSrcDirYA
|
||||||
bcc CS.RUN
|
bcc CS.RUN
|
||||||
@ -115,7 +112,7 @@ CS.RUN >INC.G ArgIndex
|
|||||||
|
|
||||||
>LDA.G hSrcBasePath
|
>LDA.G hSrcBasePath
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
>LDYAI 256
|
>LDYAI 256
|
||||||
>SYSCALL getmem
|
>SYSCALL getmem
|
||||||
bcs .99
|
bcs .99
|
||||||
@ -186,6 +183,9 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
|
|||||||
jsr GetEntry
|
jsr GetEntry
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
jsr FilterMatch
|
||||||
|
bcs .8 no match, skip....
|
||||||
|
|
||||||
ldy #S.STAT.P.DRIVE
|
ldy #S.STAT.P.DRIVE
|
||||||
lda (ZPFileStat),y ProDOS Device ?
|
lda (ZPFileStat),y ProDOS Device ?
|
||||||
beq .5
|
beq .5
|
||||||
@ -230,7 +230,7 @@ CS.RUN.DIR lda bRecurse
|
|||||||
cmp #'.'
|
cmp #'.'
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
jsr CS.RUN.GetFilePath
|
jsr CS.RUN.BuildFilePath
|
||||||
|
|
||||||
>PUSHW ZPRelPath
|
>PUSHW ZPRelPath
|
||||||
|
|
||||||
@ -250,10 +250,7 @@ CS.RUN.DIR lda bRecurse
|
|||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.FILE jsr FilterMatch
|
CS.RUN.FILE jsr CS.RUN.BuildFilePath
|
||||||
bcs .8 no match, skip....
|
|
||||||
|
|
||||||
jsr CS.RUN.GetFilePath
|
|
||||||
|
|
||||||
>PUSHW ZPFullPath
|
>PUSHW ZPFullPath
|
||||||
>LDA.G hArcFile
|
>LDA.G hArcFile
|
||||||
@ -326,7 +323,7 @@ CS.RUN.CheckErr bcs .1
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.GetFilePath
|
CS.RUN.BuildFilePath
|
||||||
>LDA.G hSrcBasePath
|
>LDA.G hSrcBasePath
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
@ -338,10 +335,7 @@ CS.RUN.GetFilePath
|
|||||||
>PUSHW ZPFileName
|
>PUSHW ZPFileName
|
||||||
>LDYA ZPFullPath
|
>LDYA ZPFullPath
|
||||||
>SYSCALL StrCat
|
>SYSCALL StrCat
|
||||||
|
|
||||||
>LDYA ZPFullPath
|
|
||||||
>SYSCALL puts
|
|
||||||
>DEBUG
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.OpenFile >PUSHWZ Aux type
|
CS.RUN.OpenFile >PUSHWZ Aux type
|
||||||
|
623
BIN/PAKME.S.txt
623
BIN/PAKME.S.txt
@ -11,25 +11,29 @@ NEW
|
|||||||
.INB INC/PAK.I
|
.INB INC/PAK.I
|
||||||
.INB INC/LIBPAK.I
|
.INB INC/LIBPAK.I
|
||||||
.INB INC/MLI.E.I
|
.INB INC/MLI.E.I
|
||||||
|
*--------------------------------------
|
||||||
|
CHUNK.MAX .EQ 32
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR ZPBIN
|
.OR ZPBIN
|
||||||
ZS.START
|
ZS.START
|
||||||
ZPPtr1 .BS 2
|
ZPPtr1 .BS 2
|
||||||
ZPPtr2 .BS 2
|
ZPPtr2 .BS 2
|
||||||
ZPFileName .BS 2
|
|
||||||
ZPFileStat .BS 2
|
|
||||||
|
|
||||||
ZPFullPath .BS 2
|
|
||||||
ZPRelPath .BS 2
|
|
||||||
|
|
||||||
ZPSrcBufPtr .BS 2
|
ZPSrcBufPtr .BS 2
|
||||||
ZPDstBufPtr .BS 2
|
ZPDstBufPtr .BS 2
|
||||||
|
|
||||||
bAppend .BS 1
|
ZPSrcFileSize .BS 2
|
||||||
bRecurse .BS 1
|
ZPDstTableOfs .BS 2
|
||||||
|
|
||||||
|
ZPChunkIndex .BS 1
|
||||||
|
ZPChunkCnt .BS 1
|
||||||
|
|
||||||
|
hSrcFile .BS 1
|
||||||
|
hDstFile .BS 1
|
||||||
bPause .BS 1
|
bPause .BS 1
|
||||||
|
|
||||||
|
|
||||||
ZS.END .ED
|
ZS.END .ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* File Header (16 Bytes)
|
* File Header (16 Bytes)
|
||||||
@ -53,12 +57,12 @@ CS.START cld
|
|||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
L.LIBPAK .DA LIBPAK
|
L.LIBPAK .DA LIBPAK
|
||||||
L.MSG.USAGE .DA MSG.USAGE
|
L.MSG.USAGE .DA MSG.USAGE
|
||||||
L.MSG.DIR .DA MSG.DIR
|
L.MSG.SRCFILE .DA MSG.SRCFILE
|
||||||
L.MSG.FILE .DA MSG.FILE
|
L.MSG.CHUNK .DA MSG.CHUNK
|
||||||
L.MSG.OK .DA MSG.OK
|
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.TAG .DA TAG
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT >LDYA L.LIBPAK
|
CS.INIT >LDYA L.LIBPAK
|
||||||
@ -69,17 +73,27 @@ CS.INIT >LDYA L.LIBPAK
|
|||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN >INC.G ArgIndex
|
CS.RUN ldy #S.PS.ARGC
|
||||||
|
lda (pPs),y
|
||||||
|
|
||||||
|
cmp #2
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
jsr CS.RUN.CheckSrcFile
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
>PUSHW.G STATBUF+S.STAT.P.AUXTYPE
|
||||||
|
>PUSHB.G STATBUF+S.STAT.P.TYPE
|
||||||
|
>PUSHBI O.CREATE+O.WRONLY
|
||||||
|
lda #2
|
||||||
>SYSCALL ArgV
|
>SYSCALL ArgV
|
||||||
bcs .8
|
|
||||||
>STYA ZPPtr1
|
>SYSCALL FOpen
|
||||||
|
bcs .99
|
||||||
|
|
||||||
lda (ZPPtr1)
|
sta hDstFile
|
||||||
cmp #'-'
|
|
||||||
bne .4
|
|
||||||
|
|
||||||
jsr CS.RUN.CheckOpt
|
bra CS.RUN.START
|
||||||
bcc CS.RUN
|
|
||||||
|
|
||||||
.9 >PUSHBI 0
|
.9 >PUSHBI 0
|
||||||
>LDYA L.MSG.USAGE
|
>LDYA L.MSG.USAGE
|
||||||
@ -88,82 +102,31 @@ CS.RUN >INC.G ArgIndex
|
|||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.4 >LDA.G ArcName
|
CS.RUN.START >PUSHB.G PAKME.HEADER+7
|
||||||
bne .5
|
>PUSHW ZPSrcFileSize
|
||||||
|
>PUSHW.G PAKME.HEADER+5
|
||||||
|
lda #1
|
||||||
|
>SYSCALL ArgV
|
||||||
|
>PUSHYA
|
||||||
|
|
||||||
|
>PUSHBI 7
|
||||||
|
>LDYA L.MSG.SRCFILE
|
||||||
|
>SYSCALL printf
|
||||||
|
|
||||||
>LDA.G ArgIndex
|
|
||||||
>STA.G ArcName
|
|
||||||
bra CS.RUN
|
|
||||||
|
|
||||||
.5 >LDA.G hSrcBasePath
|
|
||||||
bne .9
|
|
||||||
|
|
||||||
>LDYA ZPPtr1
|
|
||||||
jsr InitSrcDirYA
|
|
||||||
bcc CS.RUN
|
|
||||||
rts
|
|
||||||
|
|
||||||
.8 >LDA.G ArcName
|
|
||||||
beq .9
|
|
||||||
|
|
||||||
>LDA.G hSrcBasePath
|
|
||||||
beq .9
|
|
||||||
|
|
||||||
>LDYAI 256
|
|
||||||
>SYSCALL getmem
|
|
||||||
bcs .99
|
|
||||||
>STYA ZPFullPath
|
|
||||||
txa
|
|
||||||
>STA.G hSrcFullPath
|
|
||||||
|
|
||||||
>LDA.G hSrcBasePath
|
|
||||||
>SYSCALL GetMemPtr
|
|
||||||
>STYA ZPPtr1
|
|
||||||
|
|
||||||
ldy #$ff
|
|
||||||
|
|
||||||
.80 iny
|
|
||||||
lda (ZPPtr1),y
|
|
||||||
bne .80
|
|
||||||
|
|
||||||
tya
|
|
||||||
clc
|
|
||||||
adc ZPFullPath
|
|
||||||
sta ZPRelPath
|
|
||||||
lda ZPFullPath+1
|
|
||||||
adc #0
|
|
||||||
sta ZPRelPath+1
|
|
||||||
|
|
||||||
jsr CS.RUN.OpenArc
|
|
||||||
.98 bcs .99
|
|
||||||
|
|
||||||
>LDYAI CHNK.SIZE
|
|
||||||
>SYSCALL getmem
|
|
||||||
bcs .99
|
|
||||||
>STYA ZPSrcBufPtr
|
|
||||||
txa
|
|
||||||
>STA.G hSrcBuf
|
|
||||||
|
|
||||||
>LDYAI CHNK.SIZE
|
|
||||||
>SYSCALL getmem
|
|
||||||
bcs .98
|
|
||||||
>STYA ZPDstBufPtr
|
|
||||||
txa
|
|
||||||
>STA.G hDstBuf
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.LOOP ldy #S.PS.hStdIn
|
CS.RUN.LOOP ldy #S.PS.hStdIn
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
>SYSCALL feof
|
>SYSCALL feof
|
||||||
bcs .99
|
bcs .9
|
||||||
|
|
||||||
tay
|
tay
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
>SYSCALL GetChar
|
>SYSCALL GetChar
|
||||||
bcs .99
|
bcs .9
|
||||||
|
|
||||||
cmp #$03 Ctrl-C
|
cmp #$03 Ctrl-C
|
||||||
beq .99 Abort....
|
beq .9 Abort....
|
||||||
|
|
||||||
cmp #$13 Ctrl-S
|
cmp #$13 Ctrl-S
|
||||||
bne .1
|
bne .1
|
||||||
@ -176,382 +139,158 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
|
|||||||
.1 lda bPause
|
.1 lda bPause
|
||||||
bne CS.RUN.LOOP Pause...
|
bne CS.RUN.LOOP Pause...
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
jsr GetEntry
|
.7 inc ZPChunkIndex
|
||||||
bcs .9
|
|
||||||
|
|
||||||
ldy #S.STAT.P.DRIVE
|
lda ZPChunkIndex
|
||||||
lda (ZPFileStat),y ProDOS Device ?
|
asl
|
||||||
beq .5
|
clc
|
||||||
|
adc #PAKME.TABLE
|
||||||
jsr CS.RUN.DEV
|
|
||||||
bcc CS.RUN.LOOP
|
|
||||||
rts
|
|
||||||
|
|
||||||
.5 ldy #S.STAT.P.TYPE
|
|
||||||
lda (ZPFileStat),y
|
|
||||||
cmp #$0F Directory ?
|
|
||||||
bne .6
|
|
||||||
|
|
||||||
jsr CS.RUN.DIR
|
|
||||||
bcs .99
|
|
||||||
bra .8
|
|
||||||
|
|
||||||
.6 jsr CS.RUN.FILE
|
|
||||||
bcs .99
|
|
||||||
bra .8
|
|
||||||
|
|
||||||
.9 jsr LeaveSubDir
|
|
||||||
bcs .90
|
|
||||||
|
|
||||||
jsr BasePath..
|
|
||||||
|
|
||||||
.8 jsr GetNextEntry
|
|
||||||
jmp CS.RUN.LOOP
|
|
||||||
|
|
||||||
.90 lda #0
|
|
||||||
sec
|
|
||||||
.99 rts
|
|
||||||
*--------------------------------------
|
|
||||||
CS.RUN.DEV lda #E.BADPATH
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CS.RUN.DIR lda bRecurse
|
|
||||||
bpl .8
|
|
||||||
|
|
||||||
lda (ZPFileName)
|
|
||||||
cmp #'.'
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
jsr CS.RUN.GetFilePath
|
|
||||||
|
|
||||||
>PUSHW ZPRelPath
|
|
||||||
|
|
||||||
>PUSHBI 2
|
|
||||||
>LDYA L.MSG.DIR
|
|
||||||
>SYSCALL printf
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
jsr CS.RUN.WriteArcHdrDir
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>LDYA ZPFileName
|
|
||||||
jsr EnterSubDirYA
|
|
||||||
|
|
||||||
.9 jmp CS.RUN.CheckErr
|
|
||||||
|
|
||||||
.8 clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CS.RUN.FILE jsr FilterMatch
|
|
||||||
bcs .8 no match, skip....
|
|
||||||
|
|
||||||
jsr CS.RUN.GetFilePath
|
|
||||||
|
|
||||||
>PUSHW ZPFullPath
|
|
||||||
>LDA.G hArcFile
|
|
||||||
tay
|
tay
|
||||||
lda OF.Table.hPath-1,y
|
lda (pData),y
|
||||||
>SYSCALL getmemptr
|
pha
|
||||||
>SYSCALL strcmp
|
iny
|
||||||
bcc .8
|
lda (pData),y
|
||||||
|
ply
|
||||||
>PUSHW ZPRelPath
|
|
||||||
|
|
||||||
>PUSHBI 2
|
|
||||||
>LDYA L.MSG.FILE
|
|
||||||
>SYSCALL printf
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
jsr CS.RUN.WriteArcHdrFile
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
jsr CS.RUN.OpenFile
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
.1 lda #'.'
|
|
||||||
>SYSCALL putchar
|
|
||||||
|
|
||||||
jsr CS.RUN.ReadFile
|
|
||||||
bcc .2
|
|
||||||
|
|
||||||
cmp #MLI.E.EOF
|
|
||||||
bne .4
|
|
||||||
|
|
||||||
jsr CS.RUN.CloseFile
|
|
||||||
|
|
||||||
bra .9
|
|
||||||
|
|
||||||
.2 jsr CS.RUN.Pak
|
|
||||||
bcs .3
|
|
||||||
|
|
||||||
jsr CS.RUN.WritePakData
|
|
||||||
bcc .1
|
|
||||||
|
|
||||||
bra .4
|
|
||||||
|
|
||||||
.3 jsr CS.RUN.WriteSrcData
|
|
||||||
bcc .1
|
|
||||||
|
|
||||||
.4 pha
|
|
||||||
jsr CS.RUN.CloseFile
|
|
||||||
pla
|
|
||||||
sec
|
|
||||||
|
|
||||||
.9 jmp CS.RUN.CheckErr
|
|
||||||
|
|
||||||
.8 clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CS.RUN.CheckErr bcs .1
|
|
||||||
>LDYA L.MSG.OK
|
|
||||||
>SYSCALL puts
|
|
||||||
rts
|
|
||||||
|
|
||||||
.1 pha
|
|
||||||
>PUSHA
|
|
||||||
>PUSHBI 1
|
|
||||||
>LDYA L.MSG.ERR
|
|
||||||
|
|
||||||
>SYSCALL printf
|
|
||||||
|
|
||||||
pla
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CS.RUN.GetFilePath
|
|
||||||
>LDA.G hSrcBasePath
|
|
||||||
>SYSCALL GetMemPtr
|
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
|
lda ZPChunkIndex
|
||||||
|
>PUSHA
|
||||||
|
|
||||||
|
>PUSHBI 3
|
||||||
|
>LDYA L.MSG.CHUNK
|
||||||
|
>SYSCALL printf
|
||||||
|
|
||||||
>LDYA ZPFullPath
|
|
||||||
|
dec ZPChunkCnt
|
||||||
|
bne CS.RUN.LOOP
|
||||||
|
|
||||||
>SYSCALL StrCpy
|
.8 lda #0
|
||||||
|
sec
|
||||||
>PUSHW ZPFileName
|
.9 rts
|
||||||
>LDYA ZPFullPath
|
|
||||||
>SYSCALL StrCat
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.OpenFile >PUSHWZ Aux type
|
CS.RUN.CheckSrcFile
|
||||||
|
>PUSHWZ Aux type
|
||||||
>PUSHBI 0 Type
|
>PUSHBI 0 Type
|
||||||
>PUSHBI O.RDONLY
|
>PUSHBI O.RDONLY
|
||||||
>LDYA ZPFullPath
|
lda #1
|
||||||
|
>SYSCALL ArgV
|
||||||
>SYSCALL FOpen
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>STA.G hFile
|
|
||||||
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
CS.RUN.ReadFile >PUSHWI CHNK.SIZE
|
|
||||||
>PUSHW ZPSrcBufPtr
|
|
||||||
>LDA.G hFile
|
|
||||||
>SYSCALL fread
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>STYA.G Shunk.SrcSize
|
|
||||||
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
CS.RUN.CloseFile
|
|
||||||
>LDA.G hFile
|
|
||||||
>SYSCALL fclose
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>STZ.G hFile
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
CS.RUN.Pak >PUSHEA.G PAKSTAT
|
|
||||||
>PUSHW ZPDstBufPtr
|
|
||||||
>PUSHW.G Shunk.SrcSize
|
|
||||||
>PUSHW ZPSrcBufPtr
|
|
||||||
>LIBCALL hLIB,LIBPAK.Pak
|
|
||||||
bcs .9
|
|
||||||
>STYA.G Shunk.DstSize
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
CS.RUN.OpenArc >PUSHWZ Aux type
|
|
||||||
>PUSHBI $CF PAK
|
|
||||||
|
|
||||||
bit bAppend
|
|
||||||
bmi .1
|
|
||||||
|
|
||||||
>PUSHBI O.CREATE+O.WRONLY
|
|
||||||
>LDA.G ArcName
|
|
||||||
>SYSCALL Argv
|
|
||||||
|
|
||||||
>SYSCALL FOpen
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>STA.G hArcFile
|
|
||||||
|
|
||||||
>PUSHW L.ARC.Header
|
|
||||||
>LDA.G hArcFile
|
|
||||||
>SYSCALL fputs
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
.1 >PUSHBI O.RDWR
|
|
||||||
>LDA.G ArcName
|
|
||||||
>SYSCALL Argv
|
|
||||||
|
|
||||||
>SYSCALL FOpen
|
>SYSCALL FOpen
|
||||||
bcs .9
|
bcs .99
|
||||||
>STA.G hArcFile
|
|
||||||
|
|
||||||
pha
|
sta hSrcFile
|
||||||
>PUSHWI 3
|
|
||||||
>PUSHW ZPSrcBufPtr
|
|
||||||
pla
|
|
||||||
>SYSCALL fread
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
cpy #3
|
>PUSHEA.G STATBUF
|
||||||
bne .99
|
lda hSrcFile
|
||||||
|
>SYSCALL fstat
|
||||||
|
.99 bcs .9
|
||||||
|
|
||||||
|
>LDA.G STATBUF+S.STAT.SIZE+3
|
||||||
dey
|
dey
|
||||||
|
ora (pData),y
|
||||||
.2 lda ARC.Header,y
|
bne .90
|
||||||
cmp (ZPSrcBufPtr),y
|
|
||||||
bne .99
|
|
||||||
dey
|
dey
|
||||||
bpl .2
|
lda (pData),y
|
||||||
|
sta ZPSrcFileSize+1
|
||||||
|
dey
|
||||||
|
lda (pData),y
|
||||||
|
sta ZPSrcFileSize
|
||||||
|
|
||||||
|
jsr CS.RUN.CheckTAG
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
jsr CS.RUN.GetTable
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
|
||||||
>PUSHBI SEEK.END
|
|
||||||
>PUSHWI 0
|
|
||||||
>PUSHWI 0
|
|
||||||
>LDA.G hArcFile
|
|
||||||
>SYSCALL fseek
|
|
||||||
bcc .8
|
|
||||||
cmp #MLI.E.EOF
|
|
||||||
bne .99
|
|
||||||
clc
|
clc
|
||||||
.8 rts
|
rts
|
||||||
|
|
||||||
.99 >LDYA L.MSG.E.IARC
|
.90 lda #MLI.E.INCFF
|
||||||
>SYSCALL puts
|
|
||||||
lda #E.SYN
|
|
||||||
sec
|
sec
|
||||||
rts
|
.9
|
||||||
|
CS.RUN.CheckSrcFile.RTS
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.WriteArcHdrDir
|
CS.RUN.CheckTAG >PUSHBI SEEK.SET
|
||||||
lda #CHNK.T.DIR
|
>PUSHWZ
|
||||||
jsr CS.RUN.WriteArcByteA
|
|
||||||
bcc CS.RUN.WriteArcHdr
|
lda ZPSrcFileSize
|
||||||
|
sec
|
||||||
|
sbc #10
|
||||||
|
tay
|
||||||
|
lda ZPSrcFileSize+1
|
||||||
|
sbc #0
|
||||||
|
>PUSHYA
|
||||||
|
|
||||||
|
lda hSrcFile
|
||||||
|
>SYSCALL fseek
|
||||||
|
bcs CS.RUN.CheckSrcFile.RTS
|
||||||
|
|
||||||
|
>PUSHWI 10
|
||||||
|
>PUSHEA.G PAKME.HEADER
|
||||||
|
lda hSrcFile
|
||||||
|
>SYSCALL fread
|
||||||
|
bcs CS.RUN.CheckSrcFile.RTS
|
||||||
|
|
||||||
|
ldx #4
|
||||||
|
|
||||||
|
ldy #PAKME.HEADER+4
|
||||||
|
|
||||||
|
.1 lda TAG,x
|
||||||
|
cmp (pData),y
|
||||||
|
bne .90
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
CS.RUN.WriteArcHdrFile
|
.90 lda #MLI.E.INCFF
|
||||||
lda #CHNK.T.FILE
|
sec
|
||||||
jsr CS.RUN.WriteArcByteA
|
|
||||||
bcs CS.RUN.WriteArcHdr.9
|
|
||||||
|
|
||||||
ldy #S.STAT.P.TYPE
|
|
||||||
jsr CS.RUN.WriteArcByteY
|
|
||||||
bcs CS.RUN.WriteArcHdr.9
|
|
||||||
|
|
||||||
ldy #S.STAT.P.AUXTYPE
|
|
||||||
jsr CS.RUN.WriteArcByteY
|
|
||||||
bcs CS.RUN.WriteArcHdr.9
|
|
||||||
|
|
||||||
ldy #S.STAT.P.AUXTYPE+1
|
|
||||||
jsr CS.RUN.WriteArcByteY
|
|
||||||
bcs CS.RUN.WriteArcHdr.9
|
|
||||||
|
|
||||||
CS.RUN.WriteArcHdr
|
|
||||||
ldy #$ff
|
|
||||||
|
|
||||||
.1 iny
|
|
||||||
lda (ZPRelPath),y
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
tya
|
|
||||||
jsr CS.RUN.WriteArcByteA
|
|
||||||
bcs CS.RUN.WriteArcHdr.9
|
|
||||||
|
|
||||||
>PUSHW ZPRelPath
|
|
||||||
>LDA.G hArcFile
|
|
||||||
>SYSCALL fputs
|
|
||||||
|
|
||||||
CS.RUN.WriteArcHdr.9
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CS.RUN.WriteSrcData
|
|
||||||
lda #CHNK.T.DATA
|
|
||||||
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
|
|
||||||
|
|
||||||
>LDA.G Shunk.SrcSize+1
|
|
||||||
jsr CS.RUN.WriteArcByteA
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
lda #0 NO COMPRESSION
|
|
||||||
jsr CS.RUN.WriteArcByteA
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>PUSHW.G Shunk.SrcSize
|
|
||||||
>PUSHW ZPSrcBufPtr
|
|
||||||
>LDA.G hArcFile
|
|
||||||
>SYSCALL fwrite
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.WritePakData
|
CS.RUN.GetTable >PUSHBI SEEK.SET
|
||||||
lda #CHNK.T.DATA
|
>PUSHWZ
|
||||||
jsr CS.RUN.WriteArcByteA
|
|
||||||
|
>LDA.G PAKME.HEADER+8
|
||||||
|
sec
|
||||||
|
>SBC.G PAKME.HEADER+5
|
||||||
|
sta ZPDstTableOfs+1
|
||||||
|
pha
|
||||||
|
>LDA.G PAKME.HEADER+9
|
||||||
|
>SBC.G PAKME.HEADER+6
|
||||||
|
sta ZPDstTableOfs
|
||||||
|
ply
|
||||||
|
>PUSHYA
|
||||||
|
lda hSrcFile
|
||||||
|
>SYSCALL fseek
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
* >PUSHW.G Shunk.DstSize
|
>LDA.G PAKME.HEADER+7
|
||||||
* >PUSHBI 2
|
sta ZPChunkCnt
|
||||||
* >LDYA L.MSG.DBG
|
|
||||||
* >SYSCALL printf
|
|
||||||
|
|
||||||
>LDA.G Shunk.DstSize
|
asl
|
||||||
jsr CS.RUN.WriteArcByteA
|
tay
|
||||||
bcs .9
|
lda #0
|
||||||
|
>PUSHYA
|
||||||
|
|
||||||
>LDA.G Shunk.DstSize+1
|
>PUSHEA.G PAKME.TABLE
|
||||||
jsr CS.RUN.WriteArcByteA
|
lda hSrcFile
|
||||||
bcs .9
|
>SYSCALL fread
|
||||||
|
|
||||||
>PUSHW.G Shunk.DstSize
|
|
||||||
>PUSHW ZPDstBufPtr
|
|
||||||
>LDA.G hArcFile
|
|
||||||
>SYSCALL fwrite
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.WriteArcByteY
|
|
||||||
lda (ZPFileStat),y
|
|
||||||
|
|
||||||
CS.RUN.WriteArcByteA
|
|
||||||
>PUSHA
|
|
||||||
>LDA.G hArcFile
|
|
||||||
>SYSCALL fputc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CS.DOEVENT sec
|
CS.DOEVENT sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT jsr LeaveSubDir
|
CS.QUIT lda hDstFile
|
||||||
bcc CS.QUIT
|
|
||||||
|
|
||||||
>LDA.G hFilter
|
|
||||||
beq .1
|
|
||||||
>SYSCALL FreeMem
|
|
||||||
|
|
||||||
.1 >LDA.G hSrcFullPath
|
|
||||||
beq .2
|
beq .2
|
||||||
>SYSCALL FreeMem
|
>SYSCALL fclose
|
||||||
|
|
||||||
.2 >LDA.G hArcFile
|
.2 lda hSrcFile
|
||||||
beq .3
|
beq .3
|
||||||
>SYSCALL fclose
|
>SYSCALL fclose
|
||||||
|
|
||||||
@ -571,39 +310,15 @@ CS.QUIT jsr LeaveSubDir
|
|||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.CheckOpt ldy #1
|
|
||||||
lda (ZPPtr1),y
|
|
||||||
|
|
||||||
ldx #OptionVars-OptionList-1
|
|
||||||
|
|
||||||
.2 cmp OptionList,x
|
|
||||||
beq .3
|
|
||||||
dex
|
|
||||||
bpl .2
|
|
||||||
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
|
|
||||||
.3 ldy OptionVars,x
|
|
||||||
lda #$ff
|
|
||||||
sta 0,y
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
.INB USR/SRC/BIN/X.FILEENUM.S
|
|
||||||
*--------------------------------------
|
|
||||||
CS.END
|
CS.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
OptionList .AS "AaRr"
|
|
||||||
OptionVars .DA #bAppend,#bAppend,#bRecurse,#bRecurse
|
|
||||||
*--------------------------------------
|
|
||||||
MSG.USAGE .AZ "Usage : PAKME SourceBIN PackedBIN\r\n"
|
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=%D\r\n"
|
||||||
MSG.OK .AZ "[OK]"
|
MSG.OK .AZ "[OK]"
|
||||||
MSG.ERR .AZ "[%h]\r\n"
|
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..."
|
TAG .AZ "PAKME"
|
||||||
MSG.FILE .AZ "Adding File:%s..."
|
|
||||||
ARC.Header .AZ "PAKME"
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LIBPAK .AZ "libpak"
|
LIBPAK .AZ "libpak"
|
||||||
hLIB .BS 1
|
hLIB .BS 1
|
||||||
@ -611,19 +326,15 @@ hLIB .BS 1
|
|||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
DS.START
|
DS.START
|
||||||
ArgIndex .BS 1
|
|
||||||
ArcName .BS 1
|
|
||||||
hSrcFullPath .BS 1
|
|
||||||
|
|
||||||
hFile .BS 1
|
|
||||||
hArcFile .BS 1
|
|
||||||
|
|
||||||
hSrcBuf .BS 1
|
hSrcBuf .BS 1
|
||||||
hDstBuf .BS 1
|
hDstBuf .BS 1
|
||||||
|
|
||||||
Shunk.SrcSize .BS 2
|
Shunk.SrcSize .BS 2
|
||||||
Shunk.DstSize .BS 2
|
Shunk.DstSize .BS 2
|
||||||
|
|
||||||
|
STATBUF .BS S.STAT
|
||||||
|
PAKME.HEADER .BS 10
|
||||||
|
PAKME.TABLE .BS CHUNK.MAX*2
|
||||||
PAKSTAT .BS S.PAKSTAT
|
PAKSTAT .BS S.PAKSTAT
|
||||||
DS.END .ED
|
DS.END .ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -17,13 +17,6 @@ X.MAX.RECURSE .EQ 8
|
|||||||
* CC : match
|
* CC : match
|
||||||
* CS : no match
|
* CS : no match
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
*DEBUG.HERE >LDYA ZPFileName
|
|
||||||
* >SYSCALL puts
|
|
||||||
* >LDYA ZPPtr2
|
|
||||||
* >SYSCALL puts
|
|
||||||
* >DEBUG
|
|
||||||
* rts
|
|
||||||
|
|
||||||
FilterMatch >LDA.G index
|
FilterMatch >LDA.G index
|
||||||
dec
|
dec
|
||||||
bne .8 in a subdir, match everything
|
bne .8 in a subdir, match everything
|
||||||
@ -38,8 +31,6 @@ FilterMatch >LDA.G index
|
|||||||
>LDYA ZPPtr2 CI compare
|
>LDYA ZPPtr2 CI compare
|
||||||
>SYSCALL strupr
|
>SYSCALL strupr
|
||||||
|
|
||||||
* jsr DEBUG.HERE
|
|
||||||
|
|
||||||
.10 lda (ZPPtr2) Get first pattern byte
|
.10 lda (ZPPtr2) Get first pattern byte
|
||||||
beq .8 Match always if empty
|
beq .8 Match always if empty
|
||||||
|
|
||||||
@ -74,7 +65,6 @@ FilterMatch >LDA.G index
|
|||||||
.5 jsr FilterMatch.NextPtr2 we have '*', last char of pattern ?
|
.5 jsr FilterMatch.NextPtr2 we have '*', last char of pattern ?
|
||||||
beq .8 yes, match everything, including empty string
|
beq .8 yes, match everything, including empty string
|
||||||
|
|
||||||
lda (ZPPtr2) get next char of pattern
|
|
||||||
cmp #'*' another '*' ?
|
cmp #'*' another '*' ?
|
||||||
beq .5 yes, '**' = '*', go next char
|
beq .5 yes, '**' = '*', go next char
|
||||||
cmp #'?' '*?' ? we must match a least one char
|
cmp #'?' '*?' ? we must match a least one char
|
||||||
|
@ -87,6 +87,7 @@ IO.OPEN.REG >MLICALL MLIGETFILEINFO
|
|||||||
bcc IO.OPEN.REG.E Already Exists
|
bcc IO.OPEN.REG.E Already Exists
|
||||||
bit IO.Open.FLAGS Create if not exists ?
|
bit IO.Open.FLAGS Create if not exists ?
|
||||||
bpl IO.OPEN.RTS No, return MLI error
|
bpl IO.OPEN.RTS No, return MLI error
|
||||||
|
|
||||||
ldx #2 Yes, Create...
|
ldx #2 Yes, Create...
|
||||||
.1 lda IO.Open.TYPE,x
|
.1 lda IO.Open.TYPE,x
|
||||||
sta K.MLI.PARAMS+4,x File type,Aux type
|
sta K.MLI.PARAMS+4,x File type,Aux type
|
||||||
|
@ -25,7 +25,6 @@ NEW
|
|||||||
PAKME.Table .DA A2osX.MAIN
|
PAKME.Table .DA A2osX.MAIN
|
||||||
.DA A2osX.AUX
|
.DA A2osX.AUX
|
||||||
.DA A2osX.GP
|
.DA A2osX.GP
|
||||||
* .DA A2osX.GPX
|
|
||||||
.DA A2osX.D1
|
.DA A2osX.D1
|
||||||
.DA A2osX.D2
|
.DA A2osX.D2
|
||||||
.DA A2osX.E0
|
.DA A2osX.E0
|
||||||
@ -111,10 +110,10 @@ DevMgr.FreeMem .EQ *
|
|||||||
.EP
|
.EP
|
||||||
A2osX.E0.E .EQ *
|
A2osX.E0.E .EQ *
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.AS "PAKME"
|
.AS "PAKME" TAG
|
||||||
* .DA #7
|
.DA $2000 BIN ORG
|
||||||
.DA #7
|
.DA #6 Chunk Count
|
||||||
.DA PAKME.Table-$2000
|
.DA PAKME.Table Chunks
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB USR/SRC/SYS/KERNEL.S.CTRL
|
.INB USR/SRC/SYS/KERNEL.S.CTRL
|
||||||
MAN
|
MAN
|
||||||
|
Loading…
Reference in New Issue
Block a user