From 5343a2c9998ff3a4dac20ebb7e9e6fbe495ab0f2 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 19 Jul 2019 17:20:06 +0100 Subject: wip --- sha1/msauth.asm | 94 ++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 77 insertions(+), 17 deletions(-) diff --git a/sha1/msauth.asm b/sha1/msauth.asm index 72ef14a..2712128 100644 --- a/sha1/msauth.asm +++ b/sha1/msauth.asm @@ -327,6 +327,16 @@ sha1_block_add1: rts1: rts + +copy4_to_t2: + sta T2eV_src + ldx #(T2eV-OPLIST_START) + bra op4_list +copy4_from_t2: + sta VeT2_dest + ldx #(VeT2-OPLIST_START) + bra op4_list + op4_list: lda OPLIST_START,x sta op4_src2 @@ -345,10 +355,13 @@ op4_list: tsta beq rts1 bmi op4_list_l1 - + ldx dest + beq op_shift_right + lda src2 + sta op_rotshift_op + ; rotates dest left src1 times - ldx dest -op_list_l0: +op_rotshift_left: lda DATA_START,x rola lda DATA_START+1,x @@ -360,11 +373,30 @@ op_list_l0: lda DATA_START+3,x rola sta DATA_START+3,x +op_rotshift_op: + nop lda DATA_START,x rola sta DATA_START,x dec src1 - bne op_list_l0 + bne op_rotshift_left + bra op4_list_l2 +op_shift_right: + clc + lda DATA_START+3,x + rora + sta DATA_START+3,x + lda DATA_START+2,x + rora + sta DATA_START+2,x + lda DATA_START+1,x + rora + sta DATA_START+1,x + lda DATA_START,x + rora + sta DATA_START,x + dec src1 + bne op_shift_right bra op4_list_l2 op4_list_l1: jsr op4_binary @@ -372,15 +404,6 @@ op4_list_l2: ldx opidx bra op4_list - -copy4_to_t2: - sta T2eV_src - ldx #(T2eV-OPLIST_START) - bra op4_list -copy4_from_t2: - sta VeT2_dest - ldx #(VeT2-OPLIST_START) - bra op4_list op4_binary: ldx #0 lda #DATA_START & $ff @@ -464,7 +487,7 @@ T2eROT1ofW13xorW8xorW2xortW0: DB $1 ;rot left DB 1 ;1 time - DB 0 ; N/A + DB $9d ;cyclic DB (T2-DATA_START) ;dest DB 0 ;stop @@ -562,12 +585,12 @@ k: DB $1 ;rot left DB 30 ;30 times - DB 0 ; N/A + DB $9d ;cyclic DB (VC-DATA_START) ;dest DB $1 ;rot left DB 5 ;5 times - DB 0 ; N/A + DB $9d ;cyclic DB (VA-DATA_START) ;dest DB $d9 ;add @@ -577,7 +600,37 @@ k: DB $0 - +T1eT2div10_T2eT2mT1: + DB $d9 ;add + DB (T2-DATA_START) ;src1 + DB (ZERO-DATA_START);src2 + DB (VA-DATA_START) ;dest + DB $d9 ;add + DB (T2-DATA_START) ;src1 + DB (ZERO-DATA_START);src2 + DB (VB-DATA_START) ;dest + DB $0 ;shift right + DB 1 ;one time + DB 0 ;N/A + DB (VA-DATA_START) + DB $0 ;shift right + DB 2 ;one time + DB 0 ;N/A + DB (VB-DATA_START) + DB $0 + +; +;unsigned divu10(unsigned n) { +; unsigned q, r; +; q = (n >> 1) + (n >> 2); +; q = q + (q >> 4); +; q = q + (q >> 8); +; q = q + (q >> 16); +; q = q >> 3; +; r = n - (((q << 2) + q) << 1); +; return q + (r > 9); +;} +; OPLIST_END: @@ -654,6 +707,13 @@ KEY: DB $00 DB $4f DB $e4 + +ONEMILLION: + DB $40 + DB $42 + DB $F0 + DB $0 + RWDATA: -- cgit v1.2.3