NEW AUTO 3,1 .LIST OFF .OP 65C02 .OR $2000 .TF bin/md5 *-------------------------------------- .INB inc/macros.i .INB inc/a2osx.i .INB inc/mli.e.i *-------------------------------------- FILEBUF.SIZE .EQ 4096 *-------------------------------------- .DUMMY .OR ZPBIN ZS.START ZPPtr1 .BS 2 ZPDataBufPtr .BS 2 ZPDataLen .BS 2 ArgIndex .BS 1 Arg .BS 1 bText .BS 1 hFile .BS 1 hDataBuf .BS 1 hMD5Ctx .BS 1 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 CS .DA DS.END-DS.START DS .DA #16 SS .DA #ZS.END-ZS.START ZP .DA 0 *-------------------------------------- * Relocation Table *-------------------------------------- .1 .DA CS.INIT .DA CS.RUN .DA CS.DOEVENT .DA CS.QUIT L.MSG.USAGE .DA MSG.USAGE .DA 0 *-------------------------------------- CS.INIT clc rts *-------------------------------------- CS.RUN ldy #S.PS.ARGC lda (pPS),y beq .99 .1 inc ArgIndex lda ArgIndex >SYSCALL ArgV bcs .8 >STYA ZPPtr1 lda (ZPPtr1) cmp #'-' bne .4 ldy #1 lda (ZPPtr1),y beq .99 ldy #OptionVars-OptionList-1 .2 cmp OptionList,y beq .3 dey bpl .2 .99 >PUSHW L.MSG.USAGE >PUSHBI 0 >SYSCALL PrintF lda #E.SYN sec rts .3 ldx OptionVars,y sec ror 0,x bra .1 .4 lda Arg bne .99 lda ArgIndex sta Arg bra .1 .8 lda Arg beq .99 lda bText beq CS.RUN.FILE *-------------------------------------- CS.RUN.TEXT lda Arg >SYSCALL ArgV >PUSHYA >PUSHEA.G MD5Buf >SYSCALL MD5 jmp CS.RUN.PRINT *-------------------------------------- CS.RUN.FILE >LDYAI FILEBUF.SIZE >SYSCALL GetMem bcs .9 >STYA ZPDataBufPtr stx hDataBuf lda Arg >SYSCALL ArgV >PUSHYA >PUSHBI O.RDONLY >PUSHBI 0 ftype >PUSHWZ Aux type >SYSCALL FOpen bcs .9 sta hFile >SYSCALL MD5Init bcs .9 sta hMD5Ctx .1 >SLEEP >PUSHB hFile >PUSHW ZPDataBufPtr Dst Ptr >PUSHWI FILEBUF.SIZE Bytes To Read >SYSCALL FRead bcc .2 cmp #MLI.E.EOF beq .8 .9 rts .2 >STYA ZPDataLen >SLEEP >PUSHB hMD5Ctx >PUSHW ZPDataBufPtr >PUSHW ZPDataLen >SYSCALL MD5Update bra .1 .8 >PUSHB hMD5Ctx >PUSHEA.G MD5Buf >SYSCALL MD5Finalize CS.RUN.PRINT >LEA.G MD5Buf >SYSCALL PutS lda #0 * sec * rts *-------------------------------------- CS.DOEVENT sec rts *-------------------------------------- CS.QUIT lda hDataBuf beq .2 >SYSCALL FreeMem .2 lda hFile beq .3 >SYSCALL FClose .3 clc rts *-------------------------------------- CS.END *-------------------------------------- OptionList .AS "Dd" OptionVars .DA #bText,#bText *-------------------------------------- MSG.USAGE .CZ "Usage : MD5 [ -d input text | input file ]\r\n" *-------------------------------------- .DUMMY .OR 0 DS.START MD5Buf .BS 33 DS.END .ED *-------------------------------------- MAN SAVE usr/src/bin/md5.s ASM