NEW AUTO 3,1 */-------------------------------------- * ## MD5 * Return MD5 Hash for input String * # C * `void md5 (const char* str, char* digest);` * # ASM * `>PUSHW str` * `>PUSHW digest` * `>SYSCALL md5` * ## RETURN VALUE * CC *\-------------------------------------- K.MD5 >PULLW FORPNT >PULLYA >STYA TXTPTR >SYSCALL2 strlen >STYA ZPDataLen sta SETREADAUX sta SETWRITEAUX .1 jsr K.MD5Init.I bcs .9 pha save MD5 Context hMem jsr MD5Update.I jsr MD5Finalize.I pla >SYSCALL2 FreeMem Free MD5 Context clc .9 sta CLRREADAUX sta CLRWRITEAUX rts */-------------------------------------- * ## MD5Init * Initialize a MD5 computation * # C * `hMD5 md5init ();` * # ASM * `>SYSCALL MD5Init` * ## RETURN VALUE * A = hMem To S.MD5 *\-------------------------------------- K.MD5Init sta SETREADAUX sta SETWRITEAUX jsr K.MD5Init.I sta CLRREADAUX sta CLRWRITEAUX rts */-------------------------------------- * ## MD5Update * Add Data to MD5 computation * # C * `void md5update (hMD5 md5, char* data, int len);` * # ASM * `>PUSHB md5` * `>PUSHW data` * `>PUSHW len` * `>SYSCALL MD5Update` * ## RETURN VALUE *\-------------------------------------- K.MD5Update >PULLW ZPDataLen get LEN >PULLW TXTPTR get DATA >PULLA >SYSCALL2 GetMemPtr get MD5 Context >STYA ZPCtxPtr sta SETREADAUX sta SETWRITEAUX jsr K.MD5Update.I sta CLRREADAUX sta CLRWRITEAUX rts */-------------------------------------- * ## MD5Finalize * # C * `void md5finalize (hMD5 md5, char* digest);` * # ASM * `>PUSHB md5` * `>PUSHW digest` * `>SYSCALL MD5Finalize` * ## RETURN VALUE *\-------------------------------------- K.MD5Finalize >PULLW FORPNT >PULLA sta .8+1 >SYSCALL2 GetMemPtr >STYA ZPCtxPtr get MD5 Context sta SETREADAUX sta SETWRITEAUX jsr MD5Finalize.I .8 lda #$ff SELF MODIFIED >SYSCALL2 FreeMem sta CLRREADAUX sta CLRWRITEAUX rts *-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.MD5 LOAD USR/SRC/SYS/KERNEL.S ASM