A2osX/BIN/PAK.S.txt

698 lines
12 KiB
Plaintext
Raw Normal View History

2019-04-03 05:51:28 +00:00
NEW
2019-05-02 09:52:32 +00:00
AUTO 3,1
2019-04-03 05:51:28 +00:00
.LIST OFF
.OP 65C02
.OR $2000
2020-02-29 14:06:28 +00:00
.TF bin/pak
2019-04-03 05:51:28 +00:00
*--------------------------------------
2020-08-19 19:39:43 +00:00
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/kernel.i
.INB inc/pak.i
.INB inc/libpak.i
.INB inc/mli.e.i
2019-04-03 05:51:28 +00:00
*--------------------------------------
2019-04-30 16:08:47 +00:00
X.ENTER.SUBDIR .EQ 0
2019-04-03 05:51:28 +00:00
X.COPY.TO.DEST .EQ 0
X.DELETE.SOURCE .EQ 0
X.RESET.SRC.DIR .EQ 0 single pass
2019-04-03 05:51:28 +00:00
*--------------------------------------
.DUMMY
.OR ZPBIN
ZS.START
ZPPtr1 .BS 2
ZPPtr2 .BS 2
ZPFileName .BS 2
ZPFileStat .BS 2
2019-09-19 15:22:14 +00:00
2019-04-03 05:51:28 +00:00
ZPFullPath .BS 2
2019-09-19 15:22:14 +00:00
ZPRelPath .BS 2
2019-10-02 15:21:03 +00:00
ZPSrcBufPtr .BS 2
ZPDstBufPtr .BS 2
2019-09-19 15:22:14 +00:00
bAppend .BS 1
bRecurse .BS 1
bPause .BS 1
2019-04-03 05:51:28 +00:00
ZS.END .ED
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
CS.START cld
jmp (.1,x)
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA 0
.DA CS.END-CS.START Code Size (without Constants)
.DA DS.END-DS.START Data SegmentSize
2019-04-17 15:31:18 +00:00
.DA #64 Stack Size
2019-04-03 05:51:28 +00:00
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
2022-11-02 06:54:30 +00:00
.DA CS.DOEVENT
2019-04-03 05:51:28 +00:00
.DA CS.QUIT
2019-09-25 15:34:43 +00:00
L.LIBPAK .DA LIBPAK
2019-04-03 05:51:28 +00:00
L.MSG.USAGE .DA MSG.USAGE
L.MSG.DIR .DA MSG.DIR
L.MSG.FILE .DA MSG.FILE
L.MSG.OK .DA MSG.OK
L.MSG.ERR .DA MSG.ERR
2019-09-23 14:08:17 +00:00
L.MSG.E.IARC .DA MSG.E.IARC
2019-09-19 15:22:14 +00:00
L.ARC.Header .DA ARC.Header
2019-04-03 05:51:28 +00:00
.DA 0
*--------------------------------------
2019-09-25 15:34:43 +00:00
CS.INIT >LDYA L.LIBPAK
>SYSCALL LoadLib
bcs .9
2022-11-02 06:54:30 +00:00
2019-09-25 15:34:43 +00:00
sta hLIB
.9 rts
2019-04-05 05:59:06 +00:00
*--------------------------------------
CS.RUN >INC.G ArgIndex
2019-04-03 05:51:28 +00:00
>SYSCALL ArgV
bcs .8
2019-04-03 05:51:28 +00:00
>STYA ZPPtr1
2022-11-02 06:54:30 +00:00
2019-04-03 05:51:28 +00:00
lda (ZPPtr1)
cmp #'-'
bne .4
2022-11-02 06:54:30 +00:00
2019-09-19 15:22:14 +00:00
jsr CS.RUN.CheckOpt
2020-02-29 14:06:28 +00:00
bcs .9
2020-02-29 14:06:28 +00:00
bne CS.RUN
2022-11-02 06:54:30 +00:00
2020-02-29 14:06:28 +00:00
>INC.G ArgIndex -X
>SYSCALL ArgV
bcs .9
2022-11-02 06:54:30 +00:00
2020-02-29 14:06:28 +00:00
>SYSCALL StrDup
bcs .9
2022-11-02 06:54:30 +00:00
2020-02-29 14:06:28 +00:00
txa
>STA.G hIgnore
2020-02-29 14:06:28 +00:00
bra CS.RUN
2022-11-02 06:54:30 +00:00
.9 >LDYA L.MSG.USAGE
>SYSCALL PutS
2019-04-03 05:51:28 +00:00
lda #E.SYN
sec
2019-04-05 05:59:06 +00:00
.99 rts
2019-04-03 05:51:28 +00:00
*--------------------------------------
.4 >LDA.G ArcName
bne .5
2019-04-17 15:31:18 +00:00
>LDA.G ArgIndex
>STA.G ArcName
bra CS.RUN
2022-11-02 06:54:30 +00:00
2019-04-17 15:31:18 +00:00
.5 >LDA.G hSrcBasePath
2019-04-05 05:59:06 +00:00
bne .9
2022-11-02 06:54:30 +00:00
2019-04-03 05:51:28 +00:00
>LDYA ZPPtr1
jsr X.InitSrcDirYA
2019-04-05 05:59:06 +00:00
bcc CS.RUN
2019-04-03 05:51:28 +00:00
rts
2022-11-02 06:54:30 +00:00
2019-04-17 15:31:18 +00:00
.8 >LDA.G ArcName
beq .9
2022-11-02 06:54:30 +00:00
2019-04-17 15:31:18 +00:00
>LDA.G hSrcBasePath
beq .9
2020-02-29 14:06:28 +00:00
*--------------------------------------
2019-04-17 15:31:18 +00:00
>LDYAI 256
2020-02-28 07:21:46 +00:00
>SYSCALL GetMem
2019-04-03 05:51:28 +00:00
bcs .99
2019-04-03 05:51:28 +00:00
>STYA ZPFullPath
txa
>STA.G hSrcFullPath
2022-11-02 06:54:30 +00:00
2019-09-19 15:22:14 +00:00
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>STYA ZPPtr1
2019-10-28 16:20:40 +00:00
2019-09-19 15:22:14 +00:00
ldy #$ff
2022-11-02 06:54:30 +00:00
2019-09-19 15:22:14 +00:00
.80 iny
lda (ZPPtr1),y
bne .80
2022-11-02 06:54:30 +00:00
2019-09-19 15:22:14 +00:00
tya
clc
adc ZPFullPath
sta ZPRelPath
lda ZPFullPath+1
adc #0
sta ZPRelPath+1
2022-11-02 06:54:30 +00:00
2019-09-19 15:22:14 +00:00
jsr CS.RUN.OpenArc
2019-10-02 15:21:03 +00:00
.98 bcs .99
2022-11-02 06:54:30 +00:00
2019-09-23 14:08:17 +00:00
>LDYAI CHNK.SIZE
2020-02-28 07:21:46 +00:00
>SYSCALL GetMem
2019-10-29 06:32:04 +00:00
bcs .98
2019-10-02 15:21:03 +00:00
>STYA ZPSrcBufPtr
txa
>STA.G hSrcBuf
>LDYAI CHNK.SIZE
2020-02-28 07:21:46 +00:00
>SYSCALL GetMem
2019-10-02 15:21:03 +00:00
bcs .98
2019-10-02 15:21:03 +00:00
>STYA ZPDstBufPtr
2019-09-19 15:22:14 +00:00
txa
2019-10-02 15:21:03 +00:00
>STA.G hDstBuf
2019-04-03 05:51:28 +00:00
*--------------------------------------
2019-04-05 05:59:06 +00:00
CS.RUN.LOOP ldy #S.PS.hStdIn
2019-04-03 05:51:28 +00:00
lda (pPS),y
2020-08-19 19:39:43 +00:00
>SYSCALL FEOF
2019-04-03 05:51:28 +00:00
bcs .99
2022-11-02 06:54:30 +00:00
2019-04-03 05:51:28 +00:00
tay
2019-05-02 09:52:32 +00:00
bne .1
2022-11-02 06:54:30 +00:00
2019-04-03 05:51:28 +00:00
>SYSCALL GetChar
bcs .99
2022-11-02 06:54:30 +00:00
2019-04-03 05:51:28 +00:00
cmp #$03 Ctrl-C
2019-04-17 15:31:18 +00:00
beq .99 Abort....
2022-11-02 06:54:30 +00:00
2019-04-03 05:51:28 +00:00
cmp #$13 Ctrl-S
2019-04-17 15:31:18 +00:00
bne .1
2019-04-03 05:51:28 +00:00
2019-09-19 15:22:14 +00:00
lda bPause
2019-04-03 05:51:28 +00:00
eor #$ff
2019-09-19 15:22:14 +00:00
sta bPause
2019-04-17 15:31:18 +00:00
bne CS.RUN.LOOP
2022-11-02 06:54:30 +00:00
2019-09-19 15:22:14 +00:00
.1 lda bPause
2019-04-17 15:31:18 +00:00
bne CS.RUN.LOOP Pause...
2019-09-23 14:08:17 +00:00
*--------------------------------------
jsr X.GetEntry
2019-04-03 05:51:28 +00:00
bcs .9
2022-11-02 06:54:30 +00:00
jsr X.IncludeMatch
2019-10-29 14:47:25 +00:00
bcs .8 no match, skip....
jsr X.IgnoreMatch
2020-02-29 14:06:28 +00:00
bcc .8 match, skip
2022-11-02 06:54:30 +00:00
2020-04-13 17:04:02 +00:00
ldy #S.STAT.MODE+1
2019-04-03 05:51:28 +00:00
lda (ZPFileStat),y
2020-04-13 17:04:02 +00:00
and #$70
beq .6
2022-11-02 06:54:30 +00:00
2020-04-13 17:04:02 +00:00
cmp /S.STAT.MODE.DIR
bne .8
2019-04-03 05:51:28 +00:00
2019-04-17 15:31:18 +00:00
jsr CS.RUN.DIR
bcs .99
2019-09-20 15:15:06 +00:00
bra .8
2022-11-02 06:54:30 +00:00
2019-04-17 15:31:18 +00:00
.6 jsr CS.RUN.FILE
bcs .99
2019-09-20 15:15:06 +00:00
bra .8
2019-04-17 15:31:18 +00:00
.9 jsr X.LeaveSubDir
2019-04-17 15:31:18 +00:00
bcs .90
2019-04-03 05:51:28 +00:00
jsr X.BasePath..
2022-11-02 06:54:30 +00:00
.8 jsr X.GetNextEntry
2019-04-17 15:31:18 +00:00
jmp CS.RUN.LOOP
2022-11-02 06:54:30 +00:00
2019-04-17 15:31:18 +00:00
.90 lda #0
2019-04-03 05:51:28 +00:00
sec
.99 rts
*--------------------------------------
2019-04-17 15:31:18 +00:00
CS.RUN.DEV lda #E.BADPATH
2022-11-02 06:54:30 +00:00
sec
2019-04-17 15:31:18 +00:00
rts
*--------------------------------------
2019-09-19 15:22:14 +00:00
CS.RUN.DIR lda bRecurse
2019-08-26 06:29:18 +00:00
bpl .8
2020-04-13 17:04:02 +00:00
2019-08-26 06:29:18 +00:00
lda (ZPFileName)
2019-04-17 15:31:18 +00:00
cmp #'.'
2020-04-13 17:04:02 +00:00
bne .1
2022-11-02 06:54:30 +00:00
2020-04-13 17:04:02 +00:00
ldy #1
lda (ZPFileName),y
2019-04-17 15:31:18 +00:00
beq .8
2022-11-02 06:54:30 +00:00
2020-04-13 17:04:02 +00:00
cmp #'.'
bne .1
2022-11-02 06:54:30 +00:00
2020-04-13 17:04:02 +00:00
iny
lda (ZPFileName),y
beq .8
2022-11-02 06:54:30 +00:00
2020-04-13 17:04:02 +00:00
.1 jsr CS.RUN.BuildFilePath
2022-11-02 06:54:30 +00:00
2020-02-29 14:06:28 +00:00
>PUSHW L.MSG.DIR
2019-09-19 15:22:14 +00:00
>PUSHW ZPRelPath
2022-11-02 06:54:30 +00:00
2019-04-03 05:51:28 +00:00
>PUSHBI 2
2020-02-28 07:21:46 +00:00
>SYSCALL PrintF
2019-04-03 05:51:28 +00:00
bcs .9
2022-11-02 06:54:30 +00:00
2019-09-23 14:08:17 +00:00
jsr CS.RUN.WriteArcHdrDir
2019-09-19 15:22:14 +00:00
bcs .9
2022-11-02 06:54:30 +00:00
2019-04-17 15:31:18 +00:00
>LDYA ZPFileName
jsr X.EnterSubDirYA
2022-11-02 06:54:30 +00:00
2019-09-19 15:22:14 +00:00
.9 jmp CS.RUN.CheckErr
2022-11-02 06:54:30 +00:00
2019-04-17 15:31:18 +00:00
.8 clc
2019-09-19 15:22:14 +00:00
rts
2019-04-03 05:51:28 +00:00
*--------------------------------------
2019-10-29 14:47:25 +00:00
CS.RUN.FILE jsr CS.RUN.BuildFilePath
2022-11-02 06:54:30 +00:00
2019-09-19 15:22:14 +00:00
>PUSHW ZPFullPath
>LDA.G hArcFile
tay
2023-10-18 05:41:12 +00:00
lda FILEs.hName-1,y
2020-08-19 19:39:43 +00:00
>SYSCALL GetMemPtr
2021-05-04 17:31:21 +00:00
>PUSHYA
2020-08-19 19:39:43 +00:00
>SYSCALL StrCmp
2019-09-19 15:22:14 +00:00
bcc .8
2020-02-29 14:06:28 +00:00
>PUSHW L.MSG.FILE
2019-09-19 15:22:14 +00:00
>PUSHW ZPRelPath
2022-11-02 06:54:30 +00:00
2019-04-03 05:51:28 +00:00
>PUSHBI 2
2020-02-28 07:21:46 +00:00
>SYSCALL PrintF
2019-04-03 05:51:28 +00:00
bcs .9
2022-11-02 06:54:30 +00:00
2019-09-23 14:08:17 +00:00
jsr CS.RUN.WriteArcHdrFile
2019-09-19 15:22:14 +00:00
bcs .9
jsr CS.RUN.OpenFile
bcs .9
2022-11-02 06:54:30 +00:00
2019-09-23 14:08:17 +00:00
.1 lda #'.'
2020-08-19 19:39:43 +00:00
>SYSCALL PutChar
2022-11-02 06:54:30 +00:00
2019-09-23 14:08:17 +00:00
jsr CS.RUN.ReadFile
bcc .2
2022-11-02 06:54:30 +00:00
2019-09-23 14:08:17 +00:00
cmp #MLI.E.EOF
bne .4
2022-11-02 06:54:30 +00:00
2019-09-20 15:15:06 +00:00
jsr CS.RUN.CloseFile
2022-11-02 06:54:30 +00:00
2019-09-23 14:08:17 +00:00
bra .9
2022-11-02 06:54:30 +00:00
2019-10-02 15:21:03 +00:00
.2 jsr CS.RUN.Pak
2019-10-14 15:58:16 +00:00
bcs .3
jsr CS.RUN.WritePakData
bcc .1
2022-11-02 06:54:30 +00:00
2019-10-14 15:58:16 +00:00
bra .4
2022-11-02 06:54:30 +00:00
2019-10-14 15:58:16 +00:00
.3 jsr CS.RUN.WriteSrcData
2019-09-23 14:08:17 +00:00
bcc .1
2022-11-02 06:54:30 +00:00
2019-09-23 14:08:17 +00:00
.4 pha
jsr CS.RUN.CloseFile
pla
sec
2022-11-02 06:54:30 +00:00
2019-09-20 15:15:06 +00:00
.9 jmp CS.RUN.CheckErr
2022-11-02 06:54:30 +00:00
2019-04-17 15:31:18 +00:00
.8 clc
2019-09-19 15:22:14 +00:00
rts
2019-04-03 05:51:28 +00:00
*--------------------------------------
CS.RUN.CheckErr bcs .1
>LDYA L.MSG.OK
2020-02-28 07:21:46 +00:00
>SYSCALL PutS
2019-04-03 05:51:28 +00:00
rts
2022-11-02 06:54:30 +00:00
2019-04-03 05:51:28 +00:00
.1 pha
2020-02-29 14:06:28 +00:00
>PUSHW L.MSG.ERR
pla
pha
2019-04-03 05:51:28 +00:00
>PUSHA
>PUSHBI 1
2022-11-02 06:54:30 +00:00
2020-02-28 07:21:46 +00:00
>SYSCALL PrintF
2019-09-19 15:22:14 +00:00
2019-04-03 05:51:28 +00:00
pla
2019-09-19 15:22:14 +00:00
sec
2019-04-03 05:51:28 +00:00
rts
*--------------------------------------
2019-10-29 14:47:25 +00:00
CS.RUN.BuildFilePath
2021-05-04 17:31:21 +00:00
>PUSHW ZPFullPath
2019-04-03 05:51:28 +00:00
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>PUSHYA
>SYSCALL StrCpy
2022-11-02 06:54:30 +00:00
2021-05-04 17:31:21 +00:00
>PUSHW ZPFullPath
2019-04-03 05:51:28 +00:00
>PUSHW ZPFileName
>SYSCALL StrCat
rts
*--------------------------------------
2020-02-29 14:06:28 +00:00
CS.RUN.OpenFile >PUSHW ZPFullPath
2019-09-23 14:08:17 +00:00
>PUSHBI O.RDONLY
2020-02-29 14:06:28 +00:00
>PUSHBI 0 Type
>PUSHWZ Aux type
2019-09-23 14:08:17 +00:00
>SYSCALL FOpen
bcs .9
2022-11-02 06:54:30 +00:00
2019-09-23 14:08:17 +00:00
>STA.G hFile
.9 rts
*--------------------------------------
2021-05-14 20:58:20 +00:00
CS.RUN.ReadFile >PUSHB.G hFile
2019-10-02 15:21:03 +00:00
>PUSHW ZPSrcBufPtr
2021-05-14 20:58:20 +00:00
>PUSHWI CHNK.SIZE
2020-08-19 19:39:43 +00:00
>SYSCALL FRead
2019-09-23 14:08:17 +00:00
bcs .9
2022-11-02 06:54:30 +00:00
2019-10-02 15:21:03 +00:00
>STYA.G Shunk.SrcSize
2022-11-02 06:54:30 +00:00
.9 rts
2019-09-23 14:08:17 +00:00
*--------------------------------------
CS.RUN.CloseFile
>LDA.G hFile
2020-02-28 07:21:46 +00:00
>SYSCALL FClose
2019-09-23 14:08:17 +00:00
bcs .9
2022-11-02 06:54:30 +00:00
2019-09-23 14:08:17 +00:00
>STZ.G hFile
2019-09-23 14:08:17 +00:00
.9 rts
*--------------------------------------
2019-10-02 15:21:03 +00:00
CS.RUN.Pak >PUSHEA.G PAKSTAT
>PUSHW ZPDstBufPtr
>PUSHW.G Shunk.SrcSize
>PUSHW ZPSrcBufPtr
>LIBCALL hLIB,LIBPAK.Pak
2019-10-16 14:31:49 +00:00
bcs .9
2019-10-02 15:21:03 +00:00
>STYA.G Shunk.DstSize
2019-10-16 14:31:49 +00:00
.9 rts
2019-10-02 15:21:03 +00:00
*--------------------------------------
2020-02-29 14:06:28 +00:00
CS.RUN.OpenArc >LDA.G ArcName
2020-08-19 19:39:43 +00:00
>SYSCALL ArgV
2020-02-29 14:06:28 +00:00
>PUSHYA
2022-11-02 06:54:30 +00:00
2019-09-23 14:08:17 +00:00
bit bAppend
2019-10-28 06:32:12 +00:00
bmi CS.RUN.AppendArc
2022-11-02 06:54:30 +00:00
2019-09-19 15:22:14 +00:00
>PUSHBI O.CREATE+O.WRONLY
2020-02-29 14:06:28 +00:00
>PUSHBI $CF PAK
>PUSHWZ Aux type
2022-11-02 06:54:30 +00:00
2019-09-19 15:22:14 +00:00
>SYSCALL FOpen
bcs .9
2022-11-02 06:54:30 +00:00
2019-09-19 15:22:14 +00:00
>STA.G hArcFile
2019-09-23 14:08:17 +00:00
2020-08-25 10:56:00 +00:00
>PUSHB.G hArcFile
2019-09-19 15:22:14 +00:00
>PUSHW L.ARC.Header
2020-08-19 19:39:43 +00:00
>SYSCALL FPutS
2022-11-02 06:54:30 +00:00
.9
2019-10-28 06:32:12 +00:00
CS.RUN.OpenArc.RTS
rts
2019-09-19 15:22:14 +00:00
*--------------------------------------
2019-10-28 06:32:12 +00:00
CS.RUN.AppendArc
>PUSHBI O.RDWR+O.APPEND
2020-02-29 14:06:28 +00:00
>PUSHBI $CF PAK
>PUSHWZ Aux type
2022-11-02 06:54:30 +00:00
2019-09-23 14:08:17 +00:00
>SYSCALL FOpen
2019-10-28 06:32:12 +00:00
bcs CS.RUN.OpenArc.RTS
2019-09-23 14:08:17 +00:00
>STA.G hArcFile
2022-11-02 06:54:30 +00:00
2021-05-14 20:58:20 +00:00
>PUSHB.G hArcFile
>PUSHLZ
2019-10-28 06:32:12 +00:00
>PUSHBI SEEK.SET
2020-08-19 19:39:43 +00:00
>SYSCALL FSeek
2019-10-28 06:32:12 +00:00
bcs CS.RUN.OpenArc.RTS
2021-05-14 20:58:20 +00:00
>PUSHB.G hArcFile
2019-10-02 15:21:03 +00:00
>PUSHW ZPSrcBufPtr
2021-05-14 20:58:20 +00:00
>PUSHWI 3
2020-08-19 19:39:43 +00:00
>SYSCALL FRead
2019-09-19 15:22:14 +00:00
bcs .9
2022-11-02 06:54:30 +00:00
2019-09-23 14:08:17 +00:00
cpy #3
bne .99
2022-11-02 06:54:30 +00:00
2019-09-23 14:08:17 +00:00
dey
2022-11-02 06:54:30 +00:00
2019-09-23 14:08:17 +00:00
.2 lda ARC.Header,y
2019-10-02 15:21:03 +00:00
cmp (ZPSrcBufPtr),y
2019-09-23 14:08:17 +00:00
bne .99
2019-09-23 14:08:17 +00:00
dey
bpl .2
2022-11-02 06:54:30 +00:00
2021-05-14 20:58:20 +00:00
>PUSHB.G hArcFile
>PUSHLZ
2019-09-23 14:08:17 +00:00
>PUSHBI SEEK.END
2020-08-19 19:39:43 +00:00
>SYSCALL FSeek
2019-10-28 06:32:12 +00:00
.9 rts
2019-09-23 14:08:17 +00:00
.99 >LDYA L.MSG.E.IARC
2020-02-28 07:21:46 +00:00
>SYSCALL PutS
2019-09-23 14:08:17 +00:00
lda #E.SYN
sec
rts
*--------------------------------------
CS.RUN.WriteArcHdrDir
lda #CHNK.T.DIR
jsr CS.RUN.WriteArcByteA
bcc CS.RUN.WriteArcHdr
rts
2022-11-02 06:54:30 +00:00
2019-09-23 14:08:17 +00:00
CS.RUN.WriteArcHdrFile
lda #CHNK.T.FILE
jsr CS.RUN.WriteArcByteA
bcs CS.RUN.WriteArcHdr.9
2022-11-02 06:54:30 +00:00
2019-09-23 14:08:17 +00:00
ldy #S.STAT.P.TYPE
jsr CS.RUN.WriteArcByteY
bcs CS.RUN.WriteArcHdr.9
2022-11-02 06:54:30 +00:00
2019-09-19 15:22:14 +00:00
ldy #S.STAT.P.AUXTYPE
2019-09-23 14:08:17 +00:00
jsr CS.RUN.WriteArcByteY
bcs CS.RUN.WriteArcHdr.9
2019-09-19 15:22:14 +00:00
ldy #S.STAT.P.AUXTYPE+1
2019-09-23 14:08:17 +00:00
jsr CS.RUN.WriteArcByteY
bcs CS.RUN.WriteArcHdr.9
2019-09-19 15:22:14 +00:00
2019-09-23 14:08:17 +00:00
CS.RUN.WriteArcHdr
2019-09-19 15:22:14 +00:00
ldy #$ff
2022-11-02 06:54:30 +00:00
2019-09-19 15:22:14 +00:00
.1 iny
lda (ZPRelPath),y
bne .1
2022-11-02 06:54:30 +00:00
2019-09-19 15:22:14 +00:00
tya
2019-09-23 14:08:17 +00:00
jsr CS.RUN.WriteArcByteA
bcs CS.RUN.WriteArcHdr.9
2022-11-02 06:54:30 +00:00
2020-08-25 10:56:00 +00:00
>PUSHB.G hArcFile
2019-09-19 15:22:14 +00:00
>PUSHW ZPRelPath
2020-08-19 19:39:43 +00:00
>SYSCALL FPutS
2022-11-02 06:54:30 +00:00
2019-09-23 14:08:17 +00:00
CS.RUN.WriteArcHdr.9
2019-09-19 15:22:14 +00:00
rts
*--------------------------------------
2019-10-14 15:58:16 +00:00
CS.RUN.WriteSrcData
2019-09-23 14:08:17 +00:00
lda #CHNK.T.DATA
jsr CS.RUN.WriteArcByteA
2019-09-19 15:22:14 +00:00
bcs .9
2022-11-02 06:54:30 +00:00
2019-10-14 15:58:16 +00:00
>LDA.G Shunk.SrcSize
2019-10-17 10:36:45 +00:00
clc
adc #3
pha
>LDA.G Shunk.SrcSize+1
adc #0
sta ZPPtr1+1
2022-11-02 06:54:30 +00:00
2019-10-17 10:36:45 +00:00
pla
2019-09-23 14:08:17 +00:00
jsr CS.RUN.WriteArcByteA
2019-09-20 15:15:06 +00:00
bcs .9
2022-11-02 06:54:30 +00:00
2019-10-17 10:36:45 +00:00
lda ZPPtr1+1
2019-09-23 14:08:17 +00:00
jsr CS.RUN.WriteArcByteA
2019-10-02 15:21:03 +00:00
bcs .9
2022-11-02 06:54:30 +00:00
2019-10-14 15:58:16 +00:00
lda #0 NO COMPRESSION
2019-09-23 14:08:17 +00:00
jsr CS.RUN.WriteArcByteA
bcs .9
2022-11-02 06:54:30 +00:00
2019-10-17 10:36:45 +00:00
>LDA.G Shunk.SrcSize
jsr CS.RUN.WriteArcByteA
bcs .9
2022-11-02 06:54:30 +00:00
2019-10-17 10:36:45 +00:00
>LDA.G Shunk.SrcSize+1
jsr CS.RUN.WriteArcByteA
bcs .9
2021-05-14 20:58:20 +00:00
>PUSHB.G hArcFile
2019-10-14 15:58:16 +00:00
>PUSHW ZPSrcBufPtr
2021-05-14 20:58:20 +00:00
>PUSHW.G Shunk.SrcSize
2020-08-19 19:39:43 +00:00
>SYSCALL FWrite
2019-10-14 15:58:16 +00:00
.9 rts
*--------------------------------------
CS.RUN.WritePakData
lda #CHNK.T.DATA
jsr CS.RUN.WriteArcByteA
bcs .9
>LDA.G Shunk.DstSize
jsr CS.RUN.WriteArcByteA
bcs .9
2022-11-02 06:54:30 +00:00
2019-10-14 15:58:16 +00:00
>LDA.G Shunk.DstSize+1
jsr CS.RUN.WriteArcByteA
bcs .9
2019-10-16 06:09:13 +00:00
2021-05-14 20:58:20 +00:00
>PUSHB.G hArcFile
2019-10-02 15:21:03 +00:00
>PUSHW ZPDstBufPtr
2021-05-14 20:58:20 +00:00
>PUSHW.G Shunk.DstSize
2020-08-19 19:39:43 +00:00
>SYSCALL FWrite
2019-09-20 15:15:06 +00:00
.9 rts
*--------------------------------------
2019-09-23 14:08:17 +00:00
CS.RUN.WriteArcByteY
lda (ZPFileStat),y
2022-11-02 06:54:30 +00:00
2019-09-23 14:08:17 +00:00
CS.RUN.WriteArcByteA
2021-05-14 20:58:20 +00:00
pha
>PUSHB.G hArcFile
pla
2022-11-02 06:54:30 +00:00
>PUSHA
2020-08-19 19:39:43 +00:00
>SYSCALL FPutC
2019-09-23 14:08:17 +00:00
rts
*--------------------------------------
2019-04-03 05:51:28 +00:00
CS.DOEVENT sec
rts
*--------------------------------------
CS.QUIT jsr X.LeaveSubDir
2019-04-03 05:51:28 +00:00
bcc CS.QUIT
2022-11-02 06:54:30 +00:00
ldy #hIgnore
2020-02-29 14:06:28 +00:00
jsr .7
ldy #hInclude
2020-02-29 14:06:28 +00:00
jsr .7
2020-02-29 14:06:28 +00:00
ldy #hSrcFullPath
jsr .7
2020-02-29 14:06:28 +00:00
ldy #hDstBuf
jsr .7
2020-02-29 14:06:28 +00:00
ldy #hSrcBuf
jsr .7
>LDA.G hArcFile
2019-04-03 05:51:28 +00:00
beq .1
2020-02-28 07:21:46 +00:00
>SYSCALL FClose
2019-10-02 15:21:03 +00:00
2020-02-29 14:06:28 +00:00
.1 lda hLIB
beq .2
2022-11-02 06:54:30 +00:00
2019-09-25 15:34:43 +00:00
>SYSCALL UnloadLib
2022-11-02 06:54:30 +00:00
2020-02-29 14:06:28 +00:00
.2 clc
2019-04-03 05:51:28 +00:00
rts
2022-11-02 06:54:30 +00:00
2020-02-29 14:06:28 +00:00
.7 lda (pData),y
beq .8
2020-02-29 14:06:28 +00:00
>SYSCALL FreeMem
2022-11-02 06:54:30 +00:00
.8 rts
2019-09-19 15:22:14 +00:00
*--------------------------------------
2022-11-02 06:54:30 +00:00
CS.RUN.CheckOpt ldy #1
2019-09-19 15:22:14 +00:00
lda (ZPPtr1),y
ldx #OptionVars-OptionList-1
2020-02-29 14:06:28 +00:00
.1 cmp OptionList,x
beq .2
2019-09-19 15:22:14 +00:00
dex
2020-02-29 14:06:28 +00:00
bpl .1
2019-09-19 15:22:14 +00:00
sec
rts
2022-11-02 06:54:30 +00:00
2020-02-29 14:06:28 +00:00
.2 ldy OptionVars,x
beq .8
2022-11-02 06:54:30 +00:00
2019-09-19 15:22:14 +00:00
lda #$ff
sta 0,y
2020-02-29 14:06:28 +00:00
.8 clc
2019-09-19 15:22:14 +00:00
rts
2019-04-03 05:51:28 +00:00
*--------------------------------------
2020-08-25 14:54:30 +00:00
.INB usr/src/shared/x.fileenum.s
2019-04-03 05:51:28 +00:00
*--------------------------------------
CS.END
*--------------------------------------
2020-02-29 14:06:28 +00:00
OptionList .AS "AaRrXx"
OptionVars .DA #bAppend,#bAppend,#bRecurse,#bRecurse,#0,#0
2019-04-03 05:51:28 +00:00
*--------------------------------------
2022-11-02 06:54:30 +00:00
MSG.USAGE .CS "Usage : PAK Archive [File *,? wildcards allowed]\r\n"
.CS " -A : Append to archive\r\n"
.CS " -R : Recurse subdirectories\r\n"
.CZ " -X <*,? wildcards allowed> : exclude files \r\n"
MSG.OK .CZ "[OK]"
MSG.ERR .CZ "[%h]\r\n"
MSG.E.IARC .CZ "Invalid/corrupt archive"
MSG.DIR .CZ "Reading Dir:%s..."
MSG.FILE .CZ "Adding File:%s..."
ARC.Header .CZ "PAK"
2019-09-25 15:34:43 +00:00
*--------------------------------------
2019-12-10 16:06:51 +00:00
LIBPAK .AZ "libpak"
2019-09-25 15:34:43 +00:00
hLIB .BS 1
2019-04-03 05:51:28 +00:00
*--------------------------------------
.DUMMY
.OR 0
DS.START
ArgIndex .BS 1
2019-04-17 15:31:18 +00:00
ArcName .BS 1
2019-04-03 05:51:28 +00:00
hSrcFullPath .BS 1
2019-10-02 15:21:03 +00:00
2019-09-19 15:22:14 +00:00
hFile .BS 1
2019-10-02 15:21:03 +00:00
hArcFile .BS 1
2019-04-17 15:31:18 +00:00
2019-10-02 15:21:03 +00:00
hSrcBuf .BS 1
hDstBuf .BS 1
Shunk.SrcSize .BS 2
Shunk.DstSize .BS 2
PAKSTAT .BS S.PAKSTAT
2022-11-02 06:54:30 +00:00
2020-08-25 14:54:30 +00:00
.INB usr/src/shared/x.fileenum.g
2019-04-03 05:51:28 +00:00
DS.END
.ED
*--------------------------------------
MAN
2020-08-25 10:56:00 +00:00
SAVE usr/src/bin/pak.s
2019-04-03 05:51:28 +00:00
ASM