shasum: Longer tests, slightly shorter code

Added tests for 0x1ff- and 0x200-length inputs. Also changed code that
sets k constants to use constant values, rather than copying, to save
a few bytes.
This commit is contained in:
Zellyn Hunter 2016-10-10 20:54:50 -04:00
parent 37de1f5cac
commit 54710c10a0
2 changed files with 94 additions and 20 deletions

View File

@ -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

View File

@ -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) {