A2osX/BIN/MD5.S.txt

266 lines
4.8 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

NEW
PREFIX /A2OSX.BUILD
AUTO 4,1
.LIST OFF
.OP 65C02
.OR $2000
.TF /A2OSX.BUILD/BIN/MD5
*--------------------------------------
.INB /A2OSX.BUILD/INC/MACROS.I
.INB /A2OSX.BUILD/INC/A2OSX.I
.INB /A2OSX.BUILD/INC/MLI.ERR.I
.INB /A2OSX.BUILD/INC/LIBCRYPT.I
*--------------------------------------
FILEBUF.SIZE .EQ 4096
*--------------------------------------
ZPPtr1 .EQ ZPBIN
ZPDataBufPtr .EQ ZPBIN+2
*--------------------------------------
* 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 CS
.DA DS.END-DS.START DS
.DA #16 SS
.DA #4 ZP
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.QUIT
L.LIBCRYPT .DA LIBCRYPT
L.MSG.USAGE .DA MSG.USAGE
L.MSG.INIT .DA MSG.INIT
L.MSG.OK .DA MSG.OK
L.MSG.ERR .DA MSG.ERR
.DA 0
*--------------------------------------
CS.INIT ldy #S.PS.ARGC
lda (pPs),y
beq .99
.1 >INC.G ArgIndex
>SYSCALL GetArg.A
bcs .8
>STYA ZPPtr1
lda (ZPPtr1)
cmp #'-'
bne .4
ldy #1
lda (ZPPtr1),y
beq .99
ldx OptionList
.2 cmp OptionList,x
beq .3
dex
bne .2
.99 >LDYA L.MSG.USAGE
>SYSCALL PrintF.YA
lda #K.E.SYN
sec
rts
.3 ldy OptionVars-1,x
lda #$80
sta (pData),y
bra .1
.4 >LDA.G Arg
bne .99
>LDA.G ArgIndex
>STA.G Arg
bra .1
.8 >LDYA L.LIBCRYPT
>SYSCALL LoadLib.YA
bcs .9
sta hLIBCRYPT
* lda (pPs)
* ora #S.PS.F.EVENT Now accept events
* sta (pPs)
clc
.9 rts
*--------------------------------------
CS.RUN >LDA.G bText
beq CS.RUN.FILE
*--------------------------------------
CS.RUN.TEXT >LDA.G Arg
>SYSCALL GetArg.A
>PUSHYA
>PUSHEA.G MD5Buf
>LIBCALL hLIBCRYPT,LIBCRYPT.MD5
bcs .9
>LEA.G MD5Buf
>SYSCALL PrintF.YA
lda #13
>SYSCALL PutChar.A
lda #10
>SYSCALL PutChar.A
lda #0
sec
.9 rts
*--------------------------------------
CS.RUN.FILE >LDA.G Arg
>SYSCALL GetArg.A
>SYSCALL RealPath.YA
bcc .10
rts
.10 txa
>STA.G hFullPath
>LDYAI FILEBUF.SIZE
>SYSCALL GetMem.YA
bcs .9
>STYA ZPDataBufPtr
txa
>STA.G hDataBuf
>PUSHWI 0 Aux type
>PUSHBI 0
>PUSHBI SYS.FOpen.R
>LDA.G hFullPath
>SYSCALL GetMemPtr.A
>PUSHYA
>SYSCALL FOpen
bcs .9
>STA.G hFile
>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Init
bcs .9
>STA.G hMD5Ctx
.1 >PUSHW ZPDataBufPtr Dst Ptr
>PUSHWI FILEBUF.SIZE Bytes To Read
>PUSHB.G hFile
>SYSCALL FRead
bcc .2
eor #MLI.E.EOF
beq .8
.9 rts
.2 >PUSHYA MD5 DataLen
>PUSHW ZPDataBufPtr
>PUSHB.G hMD5Ctx
>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Update
bra .1
.8 >PUSHEA.G MD5Buf
>PUSHB.G hMD5Ctx
>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Finalize
>LEA.G MD5Buf
>SYSCALL PrintF.YA
lda #13
>SYSCALL PutChar.A
lda #10
>SYSCALL PutChar.A
lda #0
sec
rts
*--------------------------------------
CS.DOEVENT sec
rts
*--------------------------------------
CS.QUIT >LDA.G hFullPath
beq .1
>SYSCALL FreeMem.A
.1 >LDA.G hDataBuf
beq .2
>SYSCALL FreeMem.A
.2 >LDA.G hFile
beq .3
>SYSCALL FClose.A
.3
.7 lda hLIBCRYPT
beq .8
>SYSCALL UnloadLib.A
.8 clc
rts
*--------------------------------------
A2CharAX pha
lsr
lsr
lsr
lsr
and #$0F
ora #$30
cmp #'9'+1
bcc .1
adc #6
.1 tax
pla
and #$0F
ora #$30
cmp #'9'+1
bcc .8
adc #6
.8 rts
*--------------------------------------
CS.END
*--------------------------------------
OptionList >PSTR "Dd"
OptionVars .DA #bText,#bText
*--------------------------------------
MSG.USAGE .AZ "Usage : MD5 [ -d input text | input file ]\r\n"
MSG.OK .AZ "[OK]\r\n"
MSG.ERR .AZ "[%h]\r\n"
MSG.INIT .AZ "Computing %s ..."
*--------------------------------------
LIBCRYPT .AZ "libcrypt.o"
hLIBCRYPT .BS 1
*--------------------------------------
.DUMMY
.OR 0
DS.START
ArgIndex .BS 1
Arg .BS 1
bText .BS 1
hFullPath .BS 1
hFile .BS 1
hDataBuf .BS 1
hMD5Ctx .BS 1
MD5Buf .BS 33
DS.END .ED
*--------------------------------------
MAN
SAVE /A2OSX.SRC/BIN/MD5.S
ASM