diff --git a/shasum/shasum.a b/shasum/shasum.a index e743f1f..5f476f6 100644 --- a/shasum/shasum.a +++ b/shasum/shasum.a @@ -40,19 +40,19 @@ kh1: !be32 $EFCDAB89 kh2: !be32 $98BADCFE kh3: !be32 $10325476 kh4: !be32 $C3D2E1F0 -k1: !be32 $5A827999 ; k = constants -k2: !be32 $6ED9EBA1 -k3: !be32 $8F1BBCDC -k4: !be32 $CA62C1D6 +k1 = $5A827999 ; k constants +k2 = $6ED9EBA1 +k3 = $8F1BBCDC +k4 = $CA62C1D6 - !macro cp32 .source, .target { - lda .source + !macro set32 .target, .value { + lda #<(.value >> 24) sta .target - lda .source+1 + lda #<(.value >> 16) sta .target+1 - lda .source+2 + lda #<(.value >> 8) sta .target+2 - lda .source+3 + lda #<(.value) sta .target+3 } @@ -87,7 +87,7 @@ main: ;; Test shasum "" lda #0 sta INPUT - lda #$ff + lda #$fe sta INPUT+1 lda #0 sta LENGTH+1 @@ -102,14 +102,14 @@ main: lda #(h5-h0) jsr prbytes - ;; Test shasum ROM[:0x37] + ;; Test shasum FE00[:0x37] lda #0 sta INPUT - lda #$ff + lda #$fe sta INPUT+1 lda #0 sta LENGTH+1 - lda #$37 ; 863ec5335a92b8289e4b1e5cbf646689fe81134b + lda #$37 ; 1CF73FC6156B548A949D315120B5256245EAA33E sta LENGTH jsr shasum @@ -120,14 +120,50 @@ main: lda #(h5-h0) jsr prbytes - ;; Test shasum ROM[:0x100] + ;; Test shasum FE00[:0x100] lda #0 sta INPUT - lda #$ff + lda #$fe sta INPUT+1 lda #1 sta LENGTH+1 - lda #0 ; F0282F962EC20651431D385E813F6E0904F8F812 + lda #0 ; 7B3D05347B52210065E27054FDFD0B8B699F0965 + sta LENGTH + jsr shasum + + ; lda #$8d + ; jsr COUT + + +setSRC h0 + lda #(h5-h0) + jsr prbytes + + ;; Test shasum FE00[:0x1ff] + lda #0 + sta INPUT + lda #$fe + sta INPUT+1 + lda #$1 + sta LENGTH+1 + lda #$ff ; 269CA6B0C644DAC01D908B20C10C0D5B19C52ABF + sta LENGTH + jsr shasum + + ; lda #$8d + ; jsr COUT + + +setSRC h0 + lda #(h5-h0) + jsr prbytes + + ;; Test shasum FE00[:0x200] + lda #0 + sta INPUT + lda #$fe + sta INPUT+1 + lda #2 + sta LENGTH+1 + lda #0 ; D5AC71D5EE76E31CC82CF5136151BF4CDA503601 sta LENGTH jsr shasum @@ -245,7 +281,7 @@ do_chunk: ldy #0 ; y is index into w ;; First 20: k1 - +cp32 k1, k + +set32 k, k1 ldx #16 - jsr kind1 @@ -257,7 +293,7 @@ do_chunk: dex bne - ;; Second 20: k2 - +cp32 k2, k + +set32 k, k2 ldx #12 - jsr kind2 @@ -270,7 +306,7 @@ do_chunk: bne - ;; Third 20: k3 - +cp32 k3, k + +set32 k, k3 ldx #8 - jsr kind3 @@ -283,7 +319,7 @@ do_chunk: bne - ;; Fourth 20: k4 - +cp32 k4, k + +set32 k, k4 ldx #4 - jsr kind2 diff --git a/shasum/shasum.go b/shasum/shasum.go index 19ff80c..304df16 100644 --- a/shasum/shasum.go +++ b/shasum/shasum.go @@ -8,7 +8,41 @@ import ( "strings" ) +// 0xfe00 - 0xffff var rom = []byte{ + 0xC6, 0x34, 0xF0, 0x9F, 0xCA, 0xD0, 0x16, 0xC9, + 0xBA, 0xD0, 0xBB, 0x85, 0x31, 0xA5, 0x3E, 0x91, + 0x40, 0xE6, 0x40, 0xD0, 0x02, 0xE6, 0x41, 0x60, + 0xA4, 0x34, 0xB9, 0xFF, 0x01, 0x85, 0x31, 0x60, + 0xA2, 0x01, 0xB5, 0x3E, 0x95, 0x42, 0x95, 0x44, + 0xCA, 0x10, 0xF7, 0x60, 0xB1, 0x3C, 0x91, 0x42, + 0x20, 0xB4, 0xFC, 0x90, 0xF7, 0x60, 0xB1, 0x3C, + 0xD1, 0x42, 0xF0, 0x1C, 0x20, 0x92, 0xFD, 0xB1, + 0x3C, 0x20, 0xDA, 0xFD, 0xA9, 0xA0, 0x20, 0xED, + 0xFD, 0xA9, 0xA8, 0x20, 0xED, 0xFD, 0xB1, 0x42, + 0x20, 0xDA, 0xFD, 0xA9, 0xA9, 0x20, 0xED, 0xFD, + 0x20, 0xB4, 0xFC, 0x90, 0xD9, 0x60, 0x20, 0x75, + 0xFE, 0xA9, 0x14, 0x48, 0x20, 0xD0, 0xF8, 0x20, + 0x53, 0xF9, 0x85, 0x3A, 0x84, 0x3B, 0x68, 0x38, + 0xE9, 0x01, 0xD0, 0xEF, 0x60, 0x8A, 0xF0, 0x07, + 0xB5, 0x3C, 0x95, 0x3A, 0xCA, 0x10, 0xF9, 0x60, + 0xA0, 0x3F, 0xD0, 0x02, 0xA0, 0xFF, 0x84, 0x32, + 0x60, 0xA9, 0x00, 0x85, 0x3E, 0xA2, 0x38, 0xA0, + 0x1B, 0xD0, 0x08, 0xA9, 0x00, 0x85, 0x3E, 0xA2, + 0x36, 0xA0, 0xF0, 0xA5, 0x3E, 0x29, 0x0F, 0xF0, + 0x06, 0x09, 0xC0, 0xA0, 0x00, 0xF0, 0x02, 0xA9, + 0xFD, 0x94, 0x00, 0x95, 0x01, 0x60, 0xEA, 0xEA, + 0x4C, 0x00, 0xE0, 0x4C, 0x03, 0xE0, 0x20, 0x75, + 0xFE, 0x20, 0x3F, 0xFF, 0x6C, 0x3A, 0x00, 0x4C, + 0xD7, 0xFA, 0x60, 0xEA, 0x60, 0xEA, 0xEA, 0xEA, + 0xEA, 0xEA, 0x4C, 0xF8, 0x03, 0xA9, 0x40, 0x20, + 0xC9, 0xFC, 0xA0, 0x27, 0xA2, 0x00, 0x41, 0x3C, + 0x48, 0xA1, 0x3C, 0x20, 0xED, 0xFE, 0x20, 0xBA, + 0xFC, 0xA0, 0x1D, 0x68, 0x90, 0xEE, 0xA0, 0x22, + 0x20, 0xED, 0xFE, 0xF0, 0x4D, 0xA2, 0x10, 0x0A, + 0x20, 0xD6, 0xFC, 0xD0, 0xFA, 0x60, 0x20, 0x00, + 0xFE, 0x68, 0x68, 0xD0, 0x6C, 0x20, 0xFA, 0xFC, + 0xA9, 0x16, 0x20, 0xC9, 0xFC, 0x85, 0x2E, 0x20, 0xFA, 0xFC, 0xA0, 0x24, 0x20, 0xFD, 0xFC, 0xB0, 0xF9, 0x20, 0xFD, 0xFC, 0xA0, 0x3B, 0x20, 0xEC, @@ -51,6 +85,10 @@ func main() { fmt.Printf("%X\n", shasum(rom[:0x37])) fmt.Printf("%X\n", sha1.Sum(rom[:0x100])) // fmt.Printf("%X\n", shasum(rom[:0x100])) + // fmt.Printf("%X\n", sha1.Sum(rom[:0x1ff])) + fmt.Printf("%X\n", shasum(rom[:0x1ff])) + // fmt.Printf("%X\n", sha1.Sum(rom[:0x200])) + fmt.Printf("%X\n", shasum(rom[:0x200])) } func print40s(in []byte) {