summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorroot <root@no.no.james.local>2019-07-19 17:20:06 +0100
committerroot <root@no.no.james.local>2019-07-19 17:20:06 +0100
commit5343a2c9998ff3a4dac20ebb7e9e6fbe495ab0f2 (patch)
treedae3df3772efce6812a926498466eb54e4451615
parente888db713f9e345cbcf68b2edf3eb3a5c0929ebf (diff)
downloadwristapps-5343a2c9998ff3a4dac20ebb7e9e6fbe495ab0f2.tar.gz
wristapps-5343a2c9998ff3a4dac20ebb7e9e6fbe495ab0f2.tar.bz2
wristapps-5343a2c9998ff3a4dac20ebb7e9e6fbe495ab0f2.zip
wip
-rw-r--r--sha1/msauth.asm94
1 files 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: