Files
amigaos-cross-toolchain6/test/test13/bbb/board.s
T
2017-06-09 15:06:38 +01:00

2215 lines
30 KiB
ArmAsm

#NO_APP
.text
.align 2
.globl _diagAttack
_diagAttack:
move.l d2,-(sp)
move.l 16(sp),a0
move.l 12(sp),d1
add.l a0,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L7
lea _board,a1
move.b (a1,d1.l),d2
jne .L3
.L5:
add.l a0,d1
moveq #119,d2
not.b d2
and.l d1,d2
jne .L1
move.b (a1,d1.l),d2
jeq .L5
.L3:
moveq #8,d1
and.l d2,d1
cmp.l 8(sp),d1
jeq .L12
.L1:
move.l (sp)+,d2
rts
.L12:
and.b #5,d2
cmp.b #5,d2
seq d0
ext.w d0
ext.l d0
neg.l d0
move.l (sp)+,d2
rts
.L7:
moveq #0,d0
move.l (sp)+,d2
rts
.align 2
.globl _straightAttack
_straightAttack:
move.l d2,-(sp)
move.l 16(sp),a0
move.l 12(sp),d1
add.l a0,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L19
lea _board,a1
move.b (a1,d1.l),d2
jne .L15
.L17:
add.l a0,d1
moveq #119,d2
not.b d2
and.l d1,d2
jne .L13
move.b (a1,d1.l),d2
jeq .L17
.L15:
moveq #8,d1
and.l d2,d1
cmp.l 8(sp),d1
jeq .L24
.L13:
move.l (sp)+,d2
rts
.L24:
moveq #7,d0
and.l d0,d2
subq.l #6,d2
moveq #1,d0
cmp.l d2,d0
scc d0
ext.w d0
ext.l d0
neg.l d0
move.l (sp)+,d2
rts
.L19:
moveq #0,d0
move.l (sp)+,d2
rts
.align 2
.globl _isAttacked
_isAttacked:
subq.l #4,sp
movem.l #16190,-(sp)
move.l 52(sp),a5
move.l 56(sp),a0
cmp.w #0,a5
jne .L26
moveq #-15,d4
add.l a0,d4
moveq #119,d0
not.b d0
and.l d4,d0
jeq .L168
moveq #-17,d6
add.l a0,d6
moveq #119,d1
not.b d1
and.l d6,d1
jne .L29
.L174:
lea _board,a1
cmp.b #1,(a1,d6.l)
jeq .L140
moveq #-33,d2
add.l a0,d2
moveq #119,d3
not.b d3
and.l d2,d3
jne .L97
.L96:
cmp.b #3,(a1,d2.l)
jeq .L140
tst.l d1
jne .L31
.L97:
cmp.b #2,(a1,d6.l)
jeq .L140
.L31:
moveq #-31,d1
add.l a0,d1
moveq #119,d2
not.b d2
and.l d1,d2
jne .L32
.L175:
lea _board,a1
cmp.b #3,(a1,d1.l)
jeq .L140
.L32:
moveq #-16,d3
add.l a0,d3
moveq #119,d1
not.b d1
and.l d3,d1
jne .L33
lea _board,a1
cmp.b #2,(a1,d3.l)
jeq .L140
.L33:
moveq #-18,d1
add.l a0,d1
moveq #119,d2
not.b d2
and.l d1,d2
jne .L34
lea _board,a1
cmp.b #3,(a1,d1.l)
jeq .L140
.L34:
tst.l d0
jne .L35
lea _board,a1
cmp.b #2,(a1,d4.l)
jeq .L140
.L35:
moveq #-14,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L36
lea _board,a1
cmp.b #3,(a1,d0.l)
jeq .L140
.L36:
lea (1,a0),a2
moveq #119,d1
not.b d1
move.l a2,d0
and.l d0,d1
jne .L37
lea _board,a1
cmp.b #2,(a1,a2.l)
jeq .L140
.L37:
moveq #14,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L38
lea _board,a1
cmp.b #3,(a1,d0.l)
jeq .L140
.L38:
lea (-1,a0),a6
moveq #119,d0
not.b d0
move.l a6,d1
and.l d1,d0
jne .L39
lea _board,a1
cmp.b #2,(a1,a6.l)
jeq .L140
.L39:
moveq #18,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L40
lea _board,a1
cmp.b #3,(a1,d0.l)
jeq .L140
.L40:
moveq #15,d7
add.l a0,d7
moveq #119,d0
not.b d0
and.l d7,d0
jne .L41
lea _board,a1
cmp.b #2,(a1,d7.l)
jeq .L140
.L41:
moveq #31,d1
add.l a0,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L42
lea _board,a1
cmp.b #3,(a1,d1.l)
jeq .L140
.L42:
moveq #16,d1
add.l a0,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L43
lea _board,a1
cmp.b #2,(a1,d1.l)
jeq .L140
.L43:
lea (33,a0),a1
move.l a1,d2
moveq #119,d0
not.b d0
and.l d0,d2
jne .L44
lea _board,a3
cmp.b #3,(a3,a1.l)
jeq .L140
.L44:
moveq #17,d5
add.l a0,d5
moveq #119,d0
not.b d0
and.l d5,d0
jeq .L169
.L45:
moveq #119,d0
not.b d0
and.l d1,d0
jne .L63
lea _board,a1
move.b (a1,d1.l),d1
jne .L64
moveq #32,d1
add.l a0,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L63
move.b (a1,d1.l),d1
jne .L64
moveq #48,d1
add.l a0,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L63
move.b (a1,d1.l),d1
jne .L64
moveq #64,d1
add.l a0,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L63
move.b (a1,d1.l),d1
jne .L64
moveq #80,d1
add.l a0,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L63
move.b (a1,d1.l),d1
jne .L64
moveq #96,d1
add.l a0,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L63
move.b (a1,d1.l),d1
jne .L64
moveq #112,d1
add.l a0,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L63
move.b (a1,d1.l),d1
jne .L64
move.l a0,d1
add.l #128,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L63
move.b (a1,d1.l),d1
jne .L64
move.l a0,d1
add.l #144,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L63
move.b (a1,d1.l),d1
jne .L64
.L63:
moveq #119,d0
not.b d0
and.l d3,d0
jne .L67
lea _board,a1
move.b (a1,d3.l),d1
jne .L82
moveq #-32,d1
add.l a0,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L67
move.b (a1,d1.l),d1
jne .L82
moveq #-48,d1
add.l a0,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L67
move.b (a1,d1.l),d1
jne .L82
moveq #-64,d1
add.l a0,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L67
move.b (a1,d1.l),d1
jne .L82
moveq #-80,d1
add.l a0,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L67
move.b (a1,d1.l),d1
jne .L82
moveq #-96,d1
add.l a0,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L67
move.b (a1,d1.l),d1
jne .L82
moveq #-112,d1
add.l a0,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L67
move.b (a1,d1.l),d1
jne .L82
moveq #-128,d1
add.l a0,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L67
move.b (a1,d1.l),d1
jne .L82
move.l a0,d1
add.l #-144,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L67
move.b (a1,d1.l),d1
jne .L82
.L67:
move.l a2,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L70
lea _board,a1
move.b (a1,a2.l),d1
jne .L84
.L69:
addq.l #1,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L70
move.b (a1,d0.l),d1
jeq .L69
.L84:
moveq #8,d0
and.l d1,d0
cmp.l a5,d0
jeq .L170
.L70:
move.l a6,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L73
lea _board,a1
move.b (a1,a6.l),d0
jne .L86
.L72:
subq.l #1,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L73
move.b (a1,d1.l),d0
jeq .L72
.L86:
moveq #8,d1
and.l d0,d1
cmp.l a5,d1
jeq .L171
.L73:
moveq #119,d0
not.b d0
and.l d5,d0
jne .L75
lea _board,a1
move.b (a1,d5.l),d0
jne .L88
moveq #34,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L75
move.b (a1,d0.l),d0
jne .L88
moveq #51,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L75
move.b (a1,d0.l),d0
jne .L88
moveq #68,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L75
move.b (a1,d0.l),d0
jne .L88
moveq #85,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L75
move.b (a1,d0.l),d0
jne .L88
moveq #102,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L75
move.b (a1,d0.l),d0
jne .L88
moveq #119,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L75
move.b (a1,d0.l),d0
jne .L88
move.l a0,d0
add.l #136,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L75
move.b (a1,d0.l),d0
jne .L88
move.l a0,d0
add.l #153,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L75
move.b (a1,d0.l),d0
jne .L88
.L75:
moveq #119,d0
not.b d0
and.l d4,d0
jne .L77
lea _board,a1
move.b (a1,d4.l),d0
jne .L90
moveq #-30,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L77
move.b (a1,d0.l),d0
jne .L90
moveq #-45,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L77
move.b (a1,d0.l),d0
jne .L90
moveq #-60,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L77
move.b (a1,d0.l),d0
jne .L90
moveq #-75,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L77
move.b (a1,d0.l),d0
jne .L90
moveq #-90,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L77
move.b (a1,d0.l),d0
jne .L90
moveq #-105,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L77
move.b (a1,d0.l),d0
jne .L90
moveq #-120,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L77
move.b (a1,d0.l),d0
jne .L90
move.l a0,d0
add.l #-135,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L77
move.b (a1,d0.l),d0
jne .L90
move.l a0,d0
add.l #-150,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L77
move.b (a1,d0.l),d0
jne .L90
.L77:
moveq #119,d0
not.b d0
and.l d7,d0
jne .L79
.L176:
lea _board,a1
move.b (a1,d7.l),d0
jne .L92
moveq #30,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L79
move.b (a1,d0.l),d0
jne .L92
moveq #45,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L79
move.b (a1,d0.l),d0
jne .L92
moveq #60,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L79
move.b (a1,d0.l),d0
jne .L92
moveq #75,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L79
move.b (a1,d0.l),d0
jne .L92
moveq #90,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L79
move.b (a1,d0.l),d0
jne .L92
moveq #105,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L79
move.b (a1,d0.l),d0
jne .L92
moveq #120,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L79
move.b (a1,d0.l),d0
jne .L92
move.l a0,d0
add.l #135,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L79
move.b (a1,d0.l),d0
jne .L92
move.l a0,d0
add.l #150,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L79
move.b (a1,d0.l),d0
jne .L92
.L79:
moveq #119,d0
not.b d0
and.l d6,d0
jne .L147
lea _board,a1
move.b (a1,d6.l),d1
jne .L94
moveq #-34,d1
add.l a0,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L147
move.b (a1,d1.l),d1
jne .L94
moveq #-51,d1
add.l a0,d1
moveq #119,d2
not.b d2
and.l d1,d2
jne .L25
move.b (a1,d1.l),d1
jne .L94
moveq #-68,d1
add.l a0,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L147
move.b (a1,d1.l),d1
jne .L94
moveq #-85,d1
add.l a0,d1
moveq #119,d2
not.b d2
and.l d1,d2
jne .L25
move.b (a1,d1.l),d1
jne .L94
moveq #-102,d1
add.l a0,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L147
move.b (a1,d1.l),d1
jne .L94
moveq #-119,d1
add.l a0,d1
moveq #119,d2
not.b d2
and.l d1,d2
jne .L25
move.b (a1,d1.l),d1
jne .L94
move.l a0,d1
add.l #-136,d1
moveq #119,d2
not.b d2
and.l d1,d2
jne .L25
move.b (a1,d1.l),d1
jne .L94
lea (-153,a0),a0
move.l a0,d0
moveq #119,d1
not.b d1
and.l d1,d0
jne .L147
move.b (a1,a0.l),d1
jne .L94
.L25:
movem.l (sp)+,#31996
addq.l #4,sp
rts
.L26:
moveq #17,d5
add.l a0,d5
moveq #119,d0
not.b d0
and.l d5,d0
move.l d0,a1
jeq .L172
.L46:
moveq #15,d7
add.l a0,d7
moveq #119,d0
not.b d0
and.l d7,d0
move.l d0,44(sp)
jne .L47
lea _board,a2
cmp.b #9,(a2,d7.l)
jeq .L140
.L47:
moveq #-33,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L48
lea _board,a2
cmp.b #11,(a2,d0.l)
jeq .L140
.L48:
moveq #-17,d6
add.l a0,d6
moveq #119,d0
not.b d0
and.l d6,d0
jne .L49
lea _board,a2
cmp.b #10,(a2,d6.l)
jeq .L140
.L49:
moveq #-31,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L50
lea _board,a2
cmp.b #11,(a2,d0.l)
jeq .L140
.L50:
moveq #-16,d3
add.l a0,d3
moveq #119,d0
not.b d0
and.l d3,d0
jne .L51
lea _board,a2
cmp.b #10,(a2,d3.l)
jeq .L140
.L51:
moveq #-18,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L52
lea _board,a2
cmp.b #11,(a2,d0.l)
jeq .L140
.L52:
moveq #-15,d4
add.l a0,d4
moveq #119,d0
not.b d0
and.l d4,d0
jne .L53
lea _board,a2
cmp.b #10,(a2,d4.l)
jeq .L140
.L53:
moveq #-14,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L54
lea _board,a2
cmp.b #11,(a2,d0.l)
jeq .L140
.L54:
lea (1,a0),a2
moveq #119,d1
not.b d1
move.l a2,d0
and.l d0,d1
jne .L55
lea _board,a3
cmp.b #10,(a3,a2.l)
jeq .L140
.L55:
moveq #14,d0
add.l a0,d0
moveq #119,d1
not.b d1
and.l d0,d1
jne .L56
lea _board,a3
cmp.b #11,(a3,d0.l)
jeq .L140
.L56:
lea (-1,a0),a6
moveq #119,d1
not.b d1
move.l a6,d0
and.l d0,d1
jne .L57
lea _board,a3
cmp.b #10,(a3,a6.l)
jeq .L140
.L57:
lea (18,a0),a3
move.l a3,d0
moveq #119,d1
not.b d1
and.l d1,d0
jne .L58
lea _board,a4
cmp.b #11,(a4,a3.l)
jeq .L140
.L58:
tst.l 44(sp)
jne .L59
lea _board,a3
cmp.b #10,(a3,d7.l)
jeq .L140
.L59:
moveq #31,d1
add.l a0,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L60
lea _board,a3
cmp.b #11,(a3,d1.l)
jeq .L140
.L60:
moveq #16,d1
add.l a0,d1
moveq #119,d0
not.b d0
and.l d1,d0
jne .L61
lea _board,a3
cmp.b #10,(a3,d1.l)
jeq .L140
.L61:
lea (33,a0),a3
move.l a3,d0
moveq #119,d2
not.b d2
and.l d2,d0
jne .L62
lea _board,a4
cmp.b #11,(a4,a3.l)
jeq .L140
.L62:
cmp.w #0,a1
jne .L45
lea _board,a1
cmp.b #10,(a1,d5.l)
jne .L45
.L140:
moveq #1,d0
.L173:
movem.l (sp)+,#31996
addq.l #4,sp
rts
.L172:
lea _board,a2
cmp.b #9,(a2,d5.l)
jne .L46
moveq #1,d0
jra .L173
.L168:
lea _board,a1
cmp.b #1,(a1,d4.l)
jeq .L140
moveq #-17,d6
add.l a0,d6
moveq #119,d1
not.b d1
and.l d6,d1
jeq .L174
.L29:
moveq #-33,d2
add.l a0,d2
moveq #119,d3
not.b d3
and.l d2,d3
lea _board,a1
jeq .L96
moveq #-31,d1
add.l a0,d1
moveq #119,d2
not.b d2
and.l d1,d2
jne .L32
jra .L175
.L64:
moveq #8,d0
and.l d1,d0
cmp.l a5,d0
jne .L63
moveq #7,d0
and.l d0,d1
subq.l #6,d1
moveq #1,d0
cmp.l d1,d0
jcs .L63
jra .L173
.L169:
lea _board,a1
cmp.b #2,(a1,d5.l)
jne .L45
moveq #1,d0
jra .L173
.L82:
moveq #8,d0
and.l d1,d0
cmp.l a5,d0
jne .L67
moveq #7,d0
and.l d0,d1
subq.l #6,d1
moveq #1,d0
cmp.l d1,d0
jcs .L67
jra .L173
.L170:
moveq #7,d0
and.l d0,d1
move.l d1,d0
subq.l #6,d0
moveq #1,d1
cmp.l d0,d1
jcs .L70
moveq #1,d0
jra .L173
.L171:
moveq #7,d1
and.l d1,d0
subq.l #6,d0
moveq #1,d1
cmp.l d0,d1
jcs .L73
moveq #1,d0
jra .L173
.L88:
moveq #8,d1
and.l d0,d1
cmp.l a5,d1
jne .L75
and.b #5,d0
cmp.b #5,d0
jne .L75
moveq #1,d0
jra .L173
.L90:
moveq #8,d1
and.l d0,d1
cmp.l a5,d1
jne .L77
and.b #5,d0
cmp.b #5,d0
jeq .L140
moveq #119,d0
not.b d0
and.l d7,d0
jeq .L176
jra .L79
.L92:
moveq #8,d1
and.l d0,d1
cmp.l a5,d1
jne .L79
and.b #5,d0
cmp.b #5,d0
jne .L79
moveq #1,d0
jra .L173
.L94:
moveq #8,d0
and.l d1,d0
cmp.l a5,d0
jeq .L177
.L147:
moveq #0,d0
movem.l (sp)+,#31996
addq.l #4,sp
rts
.L177:
and.b #5,d1
cmp.b #5,d1
seq d0
ext.w d0
ext.l d0
neg.l d0
movem.l (sp)+,#31996
addq.l #4,sp
rts
.align 2
.globl _sq2algebraic
_sq2algebraic:
move.l d2,-(sp)
move.l 8(sp),d1
move.l #_buf.2800,d0
move.b d1,d2
and.b #7,d2
add.b #97,d2
move.l d0,a0
move.b d2,(a0)
lsr.b #4,d1
add.b #49,d1
move.b d1,_buf.2800+1
clr.b _buf.2800+2
move.l (sp)+,d2
rts
.LC0:
.ascii "\12\0"
.LC1:
.ascii "%4d\0"
.align 2
.globl _printpsq
_printpsq:
movem.l #8240,-(sp)
move.l 20(sp),d0
lsl.l #8,d0
move.l 16(sp),a2
add.l d0,a2
moveq #0,d2
lea _printf,a3
.L181:
moveq #7,d0
and.l d2,d0
jeq .L185
move.l (a2)+,-(sp)
pea .LC1
jsr (a3)
addq.l #1,d2
addq.l #8,sp
moveq #64,d0
cmp.l d2,d0
jne .L181
.L186:
move.l #.LC0,16(sp)
movem.l (sp)+,#3076
jra _printf
.L185:
pea .LC0
jsr (a3)
addq.l #4,sp
move.l (a2)+,-(sp)
pea .LC1
jsr (a3)
addq.l #1,d2
addq.l #8,sp
moveq #64,d0
cmp.l d2,d0
jne .L181
jra .L186
.align 2
.globl _board2fen
_board2fen:
movem.l #15904,-(sp)
lea _board+112,a0
move.l #_board-16,d3
move.l #_board,d2
moveq #0,d4
lea _buf.2819,a1
lea _lookup.2820,a2
.L188:
move.b (a0),d0
jeq .L190
move.l d4,d1
addq.l #1,d1
and.l #255,d0
move.b (a2,d0.l),(a1,d4.l)
move.b 1(a0),d0
jne .L229
moveq #2,d0
moveq #49,d5
.L227:
move.b 2(a0),d4
jeq .L193
move.b d5,(a1,d1.l)
addq.l #1,d1
.L194:
move.l d1,d5
addq.l #1,d5
and.l #255,d4
move.b (a2,d4.l),(a1,d1.l)
move.b 3(a0),d4
jne .L197
moveq #1,d0
move.b 4(a0),d1
jeq .L257
.L199:
move.l d5,d6
addq.l #1,d6
add.b #48,d0
move.b d0,(a1,d5.l)
.L201:
move.l d6,d4
addq.l #1,d4
and.l #255,d1
move.b (a2,d1.l),(a1,d6.l)
move.b 5(a0),d1
jne .L205
moveq #1,d0
move.b 6(a0),d1
jeq .L246
.L262:
move.l d4,d5
addq.l #1,d5
add.b #48,d0
move.b d0,(a1,d4.l)
.L209:
move.l d5,d4
addq.l #1,d4
and.l #255,d1
move.b (a2,d1.l),(a1,d5.l)
move.b 7(a0),d1
jne .L213
moveq #49,d0
move.l d4,d5
addq.l #1,d5
move.b d0,(a1,d4.l)
.L215:
move.l d5,d4
cmp.l d2,a0
jeq .L189
addq.l #1,d4
move.b #47,(a1,d5.l)
lea (-16,a0),a0
cmp.l d3,a0
jne .L188
.L189:
move.l d4,d1
addq.l #1,d1
move.b #32,(a1,d4.l)
move.l d4,a0
addq.l #2,a0
tst.b _board+128
jne .L230
moveq #119,d0
move.b d0,(a1,d1.l)
move.l d4,d1
addq.l #3,d1
move.b #32,(a1,a0.l)
move.b _board+129,d0
jne .L217
.L263:
move.b #45,(a1,d1.l)
addq.l #1,d1
.L218:
move.l d1,a2
addq.l #1,a2
move.b #32,(a1,d1.l)
move.b _board+130,d2
cmp.b #127,d2
jeq .L258
.L222:
move.b d2,d0
and.b #7,d0
add.b #97,d0
lea _buf.2800,a0
move.b d0,(a0)
lsr.b #4,d2
add.b #49,d2
move.b d2,_buf.2800+1
clr.b _buf.2800+2
add.l #_buf.2819,a2
addq.l #1,a0
move.b d0,(a2)+
jeq .L224
.L259:
move.b (a0),d0
addq.l #1,a0
move.b d0,(a2)+
jne .L259
.L224:
addq.l #3,d1
clr.b (a1,d1.l)
move.l #_buf.2819,d0
movem.l (sp)+,#1148
rts
.L229:
move.l d1,d5
.L191:
move.l d5,d1
addq.l #1,d1
and.l #255,d0
move.b (a2,d0.l),(a1,d5.l)
move.b 2(a0),d4
jne .L194
moveq #1,d0
.L193:
move.b 3(a0),d4
jeq .L260
move.l d1,d5
addq.l #1,d5
add.b #48,d0
move.b d0,(a1,d1.l)
.L197:
move.l d5,d6
addq.l #1,d6
and.l #255,d4
move.b (a2,d4.l),(a1,d5.l)
move.b 4(a0),d1
jne .L201
moveq #1,d0
.L202:
move.b 5(a0),d1
jeq .L245
move.l d6,d4
addq.l #1,d4
add.b #48,d0
move.b d0,(a1,d6.l)
.L205:
move.l d4,d5
addq.l #1,d5
and.l #255,d1
move.b (a2,d1.l),(a1,d4.l)
move.b 6(a0),d1
jne .L209
moveq #1,d0
move.b 7(a0),d1
jeq .L261
.L211:
move.l d5,d4
addq.l #1,d4
add.b #48,d0
move.b d0,(a1,d5.l)
.L213:
move.l d4,d5
addq.l #1,d5
and.l #255,d1
move.b (a2,d1.l),(a1,d4.l)
jra .L215
.L190:
move.b 1(a0),d0
jne .L226
move.l d4,d1
moveq #3,d0
moveq #50,d5
jra .L227
.L245:
addq.l #1,d0
move.l d6,d4
move.b 6(a0),d1
jne .L262
.L246:
addq.l #1,d0
move.l d4,d5
move.b 7(a0),d1
jne .L211
.L261:
add.b #49,d0
move.l d5,d1
addq.l #1,d5
move.b d0,(a1,d1.l)
jra .L215
.L260:
addq.l #1,d0
move.l d1,d5
move.b 4(a0),d1
jne .L199
.L257:
addq.l #1,d0
move.l d5,d6
jra .L202
.L226:
move.l d4,d5
addq.l #1,d5
move.b #49,(a1,d4.l)
jra .L191
.L230:
moveq #98,d0
move.b d0,(a1,d1.l)
move.l d4,d1
addq.l #3,d1
move.b #32,(a1,a0.l)
move.b _board+129,d0
jeq .L263
.L217:
btst #3,d0
jeq .L219
move.b #75,(a1,d1.l)
move.l d4,d1
addq.l #4,d1
.L219:
btst #2,d0
jeq .L220
move.b #81,(a1,d1.l)
addq.l #1,d1
.L220:
btst #1,d0
jeq .L221
move.b #107,(a1,d1.l)
addq.l #1,d1
.L221:
btst #0,d0
jeq .L218
move.b #113,(a1,d1.l)
addq.l #1,d1
move.l d1,a2
addq.l #1,a2
move.b #32,(a1,d1.l)
move.b _board+130,d2
cmp.b #127,d2
jne .L222
.L258:
addq.l #2,d1
move.b #45,(a1,a2.l)
clr.b (a1,d1.l)
move.l #_buf.2819,d0
movem.l (sp)+,#1148
rts
.LC2:
.ascii " -\0"
.LC3:
.ascii "white\0"
.LC4:
.ascii "black\0"
.LC5:
.ascii "\12 a b c d e f g h\12\12\0"
.LC6:
.ascii "%d \0"
.LC7:
.ascii "*\0"
.LC8:
.ascii " \0"
.LC9:
.ascii "%c\0"
.LC10:
.ascii "\12 a b c d e f g h\11\11Position key: %llX\0"
.LC11:
.ascii "\12Side to move: %s e.p.: %s\12\0"
.LC12:
.ascii "Fen: %s\12\0"
.align 2
.globl _printBoard
_printBoard:
movem.l #15420,-(sp)
pea .LC5
lea _printf,a4
jsr (a4)
lea _board+112,a5
addq.l #4,sp
moveq #8,d5
moveq #32,d4
.L265:
move.l a5,a2
clr.w d2
.L279:
move.b (a2)+,d3
moveq #7,d0
and.l d3,d0
add.l d0,d0
move.w .L268(pc,d0.l),d0
jmp %pc@(2,d0:w)
.balignw 2,0x284c
.L268:
.word .L267-.L268
.word .L283-.L268
.word .L270-.L268
.word .L271-.L268
.word .L266-.L268
.word .L272-.L268
.word .L273-.L268
.word .L274-.L268
.L283:
move.w #80,a3
moveq #80,d4
tst.w d2
jeq .L289
.L275:
btst #3,d3
jne .L290
pea .LC8
jsr (a4)
addq.l #4,sp
.L278:
move.l a3,-(sp)
pea .LC9
jsr (a4)
addq.w #1,d2
addq.l #8,sp
cmp.w #8,d2
jne .L279
.L292:
pea .LC0
jsr (a4)
subq.l #1,d5
lea (-16,a5),a5
addq.l #4,sp
jne .L265
lea _board,a2
move.l 138(a2),-(sp)
move.l 134(a2),-(sp)
pea .LC10
jsr (a4)
move.b 130(a2),d0
lea (12,sp),sp
cmp.b #127,d0
jeq .L284
lea _buf.2800,a0
move.b d0,d1
and.b #7,d1
add.b #97,d1
move.b d1,(a0)
lsr.b #4,d0
add.b #49,d0
move.b d0,_buf.2800+1
clr.b _buf.2800+2
.L281:
tst.b _board+128
jeq .L291
move.l #.LC4,d0
move.l a0,-(sp)
move.l d0,-(sp)
pea .LC11
jsr (a4)
jsr _board2fen
move.l d0,-(sp)
pea .LC12
jsr (a4)
lea (20,sp),sp
movem.l (sp)+,#15420
rts
.L267:
move.w #46,a3
moveq #46,d4
tst.w d2
jne .L275
jra .L289
.L273:
move.w #82,a3
moveq #82,d4
tst.w d2
jne .L275
jra .L289
.L272:
move.w #66,a3
moveq #66,d4
tst.w d2
jne .L275
jra .L289
.L271:
move.w #78,a3
moveq #78,d4
tst.w d2
jne .L275
jra .L289
.L270:
move.w #75,a3
moveq #75,d4
tst.w d2
jne .L275
jra .L289
.L274:
move.w #81,a3
moveq #81,d4
tst.w d2
jne .L275
jra .L289
.L266:
moveq #0,d0
move.b d4,d0
move.l d0,a3
tst.w d2
jne .L275
jra .L289
.L290:
pea .LC7
jsr (a4)
moveq #0,d0
move.b d4,d0
addq.l #4,sp
move.l __ctype_,a0
btst #0,1(a0,d0.l)
jeq .L278
lea (32,a3),a3
move.l a3,-(sp)
pea .LC9
jsr (a4)
addq.w #1,d2
addq.l #8,sp
cmp.w #8,d2
jne .L279
jra .L292
.L291:
move.l #.LC3,d0
move.l a0,-(sp)
move.l d0,-(sp)
pea .LC11
jsr (a4)
jsr _board2fen
move.l d0,-(sp)
pea .LC12
jsr (a4)
lea (20,sp),sp
movem.l (sp)+,#15420
rts
.L284:
lea .LC2,a0
jra .L281
.L289:
move.l d5,-(sp)
pea .LC6
jsr (a4)
addq.l #8,sp
jra .L275
.align 2
.globl _fen2board
_fen2board:
movem.l #15422,-(sp)
move.l 40(sp),a1
lea _board,a2
move.l a2,a0
move.l #_board+128,d0
.L294:
clr.b (a0)+
cmp.l d0,a0
jne .L294
lea _board+32364,a0
clr.l 28(a0)
clr.l 24(a0)
clr.l 4(a0)
clr.l (a0)
clr.l 20(a0)
clr.l 16(a0)
sub.l a0,a0
moveq #7,d2
move.l #_psq_pawns,d3
move.l #_kingLoc,d4
lea _psq_queens,a6
lea _psq_bishops,a5
lea _psq_knights,a4
move.l #_psq_rooks,d5
.L295:
move.b (a1)+,d1
jeq .L314
.L313:
move.b d1,d0
add.b #-49,d0
cmp.b #65,d0
jhi .L296
and.l #255,d0
add.l d0,d0
move.w .L298(pc,d0.l),d0
jmp %pc@(2,d0:w)
.balignw 2,0x284c
.L298:
.word .L297-.L298
.word .L297-.L298
.word .L297-.L298
.word .L297-.L298
.word .L297-.L298
.word .L297-.L298
.word .L297-.L298
.word .L297-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L299-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L300-.L298
.word .L296-.L298
.word .L296-.L298
.word .L301-.L298
.word .L296-.L298
.word .L302-.L298
.word .L303-.L298
.word .L304-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L305-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L296-.L298
.word .L306-.L298
.word .L296-.L298
.word .L296-.L298
.word .L307-.L298
.word .L296-.L298
.word .L308-.L298
.word .L309-.L298
.word .L310-.L298
.L310:
move.l a2,d1
add.l a0,d1
move.l d2,d0
lsl.l #4,d0
move.l d1,a3
move.b #14,(a3,d0.l)
addq.l #1,_board+32392
move.l d2,d0
lsl.l #3,d0
lea 64(a0,d0.l),a3
move.l a3,d0
add.l a3,d0
add.l d0,d0
move.l d0,a3
move.l (a3,d5.l),d0
add.l _matValues+56,d0
add.l d0,_board+32368
addq.l #1,a0
.L296:
moveq #8,d0
cmp.l a0,d0
jne .L295
.L365:
subq.l #1,d2
jmi .L314
sub.l a0,a0
move.b (a1)+,d1
jne .L313
.L314:
move.l a1,d2
moveq #0,d0
.L312:
move.l d2,a0
move.b (a0),d1
addq.l #1,d2
cmp.b #32,d1
jeq .L315
cmp.b #59,d1
jne .L364
.L315:
addq.l #1,d0
jra .L312
.L309:
move.l a2,d1
add.l a0,d1
move.l d2,d0
lsl.l #4,d0
move.l d1,a3
move.b #15,(a3,d0.l)
addq.l #1,_board+32392
move.l d2,d0
lsl.l #3,d0
lea 64(a0,d0.l),a3
move.l a3,d0
add.l a3,d0
add.l d0,d0
move.l (a6,d0.l),d0
add.l _matValues+60,d0
add.l d0,_board+32368
addq.l #1,a0
moveq #8,d0
cmp.l a0,d0
jne .L295
jra .L365
.L308:
move.l a2,d1
add.l a0,d1
move.l d2,d0
lsl.l #4,d0
move.l d1,a3
move.b #9,(a3,d0.l)
addq.l #1,_board+32384
move.l d2,d0
lsl.l #3,d0
lea 64(a0,d0.l),a3
move.l a3,d0
add.l a3,d0
add.l d0,d0
move.l d0,a3
move.l (a3,d3.l),d0
add.l _matValues+36,d0
add.l d0,_board+32368
addq.l #1,a0
moveq #8,d0
cmp.l a0,d0
jne .L295
jra .L365
.L307:
move.l a2,d1
add.l a0,d1
move.l d2,d0
lsl.l #4,d0
move.l d1,a3
move.b #11,(a3,d0.l)
addq.l #1,_board+32392
move.l d2,d0
lsl.l #3,d0
lea 64(a0,d0.l),a3
move.l a3,d0
add.l a3,d0
add.l d0,d0
move.l (a4,d0.l),d0
add.l _matValues+44,d0
add.l d0,_board+32368
addq.l #1,a0
moveq #8,d0
cmp.l a0,d0
jne .L295
jra .L365
.L306:
move.l d2,d0
lsl.l #4,d0
add.l a0,d0
move.b #10,(a2,d0.l)
move.l d0,_kingLoc+4
addq.l #1,a0
moveq #8,d0
cmp.l a0,d0
jne .L295
jra .L365
.L305:
move.l a2,d1
add.l a0,d1
move.l d2,d0
lsl.l #4,d0
move.l d1,a3
move.b #13,(a3,d0.l)
addq.l #1,_board+32392
move.l d2,d0
lsl.l #3,d0
lea 64(a0,d0.l),a3
move.l a3,d0
add.l a3,d0
add.l d0,d0
move.l (a5,d0.l),d0
add.l _matValues+52,d0
add.l d0,_board+32368
addq.l #1,a0
moveq #8,d0
cmp.l a0,d0
jne .L295
jra .L365
.L304:
move.l a2,d1
add.l a0,d1
move.l d2,d0
lsl.l #4,d0
move.l d1,a3
move.b #6,(a3,d0.l)
addq.l #1,_board+32388
move.l d2,d0
lsl.l #3,d0
add.l a0,d0
add.l d0,d0
add.l d0,d0
move.l d0,a3
move.l (a3,d5.l),d0
add.l _matValues+24,d0
add.l d0,_board+32364
addq.l #1,a0
moveq #8,d0
cmp.l a0,d0
jne .L295
jra .L365
.L303:
move.l a2,d1
add.l a0,d1
move.l d2,d0
lsl.l #4,d0
move.l d1,a3
move.b #7,(a3,d0.l)
addq.l #1,_board+32388
move.l d2,d0
lsl.l #3,d0
add.l a0,d0
add.l d0,d0
add.l d0,d0
move.l (a6,d0.l),d0
add.l _matValues+28,d0
add.l d0,_board+32364
addq.l #1,a0
moveq #8,d0
cmp.l a0,d0
jne .L295
jra .L365
.L302:
move.l a2,d1
add.l a0,d1
move.l d2,d0
lsl.l #4,d0
move.l d1,a3
move.b #1,(a3,d0.l)
addq.l #1,_board+32380
move.l d2,d0
lsl.l #3,d0
add.l a0,d0
add.l d0,d0
add.l d0,d0
move.l d0,a3
move.l (a3,d3.l),d0
add.l _matValues+4,d0
add.l d0,_board+32364
addq.l #1,a0
moveq #8,d0
cmp.l a0,d0
jne .L295
jra .L365
.L299:
move.l a2,d1
add.l a0,d1
move.l d2,d0
lsl.l #4,d0
move.l d1,a3
move.b #5,(a3,d0.l)
addq.l #1,_board+32388
move.l d2,d0
lsl.l #3,d0
add.l a0,d0
add.l d0,d0
add.l d0,d0
move.l (a5,d0.l),d0
add.l _matValues+20,d0
add.l d0,_board+32364
addq.l #1,a0
moveq #8,d0
cmp.l a0,d0
jne .L295
jra .L365
.L297:
ext.w d1
lea -48(a0,d1.w),a0
moveq #8,d0
cmp.l a0,d0
jne .L295
jra .L365
.L301:
move.l a2,d1
add.l a0,d1
move.l d2,d0
lsl.l #4,d0
move.l d1,a3
move.b #3,(a3,d0.l)
addq.l #1,_board+32388
move.l d2,d0
lsl.l #3,d0
add.l a0,d0
add.l d0,d0
add.l d0,d0
move.l (a4,d0.l),d0
add.l _matValues+12,d0
add.l d0,_board+32364
addq.l #1,a0
moveq #8,d0
cmp.l a0,d0
jne .L295
jra .L365
.L300:
move.l d2,d0
lsl.l #4,d0
add.l a0,d0
move.b #2,(a2,d0.l)
move.l d4,a3
move.l d0,(a3)
addq.l #1,a0
moveq #8,d0
cmp.l a0,d0
jne .L295
jra .L365
.L364:
cmp.b #98,d1
jeq .L366
cmp.b #119,d1
jeq .L367
.L317:
tst.b d1
jeq .L318
.L372:
addq.l #1,d0
move.b (a1,d0.l),d1
jeq .L318
.L319:
cmp.b #32,d1
jeq .L321
cmp.b #59,d1
jne .L368
.L321:
addq.l #1,d0
move.b (a1,d0.l),d1
jra .L319
.L368:
cmp.b #45,d1
jeq .L322
moveq #0,d2
sub.l a0,a0
.L327:
cmp.b #75,d1
jeq .L369
cmp.b #81,d1
jeq .L370
cmp.b #107,d1
jne .L326
addq.l #2,d2
.L324:
addq.l #1,d0
move.b (a1,d0.l),d1
cmp.b #32,d1
jne .L327
.L373:
add.l a0,a0
move.l a0,d1
add.l a0,d1
or.b d2,d1
move.b d1,_board+129
lea (a1,d0.l),a0
.L329:
move.l a0,a2
move.b (a0)+,d1
cmp.b #32,d1
jeq .L330
cmp.b #59,d1
jne .L371
.L330:
addq.l #1,d0
jra .L329
.L318:
clr.b _board+129
move.b #127,_board+130
movem.l (sp)+,#31804
rts
.L371:
move.b #127,_board+130
move.b (a2),d1
cmp.b #45,d1
jeq .L331
move.b 1(a1,d0.l),d0
ext.w d0
lsl.b #4,d0
add.b d0,d1
add.b #-113,d1
move.b d1,_board+130
.L331:
jsr _generatePosKey
lea _board+131,a0
move.l d0,3(a0)
move.l d1,7(a0)
clr.w 1(a0)
clr.b (a0)
movem.l (sp)+,#31804
rts
.L367:
clr.b _board+128
move.b (a0),d1
jeq .L318
jra .L372
.L366:
move.b #8,_board+128
cmp.b #119,d1
jne .L317
jra .L367
.L370:
addq.l #1,a0
addq.l #1,d0
move.b (a1,d0.l),d1
cmp.b #32,d1
jne .L327
jra .L373
.L369:
addq.l #2,a0
addq.l #1,d0
move.b (a1,d0.l),d1
cmp.b #32,d1
jne .L327
jra .L373
.L326:
cmp.b #113,d1
jne .L324
addq.l #1,d2
addq.l #1,d0
move.b (a1,d0.l),d1
cmp.b #32,d1
jne .L327
jra .L373
.L322:
addq.l #1,d0
clr.b d1
move.b d1,_board+129
lea (a1,d0.l),a0
jra .L329
.LC13:
.ascii "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1\0"
.align 2
.globl _initBoard
_initBoard:
movem.l #16190,-(sp)
clr.w _board+142
pea .LC13
jsr _fen2board
moveq #4,d0
move.l d0,_kingLoc
moveq #116,d0
move.l d0,_kingLoc+4
move.l #_psq_pawns+256,d5
move.l #_psq_knights+256,d4
move.l #_psq_bishops+256,d3
lea _psq_rooks+256,a6
lea _psq_queens+256,a5
addq.l #4,sp
sub.l a0,a0
moveq #0,d2
move.l #_psq_pawns,d7
lea _raw_psq_pawns,a4
move.l #_raw_psq_knights,d6
lea _raw_psq_queens,a1
.L376:
move.l d2,d0
jlt .L380
asr.l #3,d0
moveq #7,d1
sub.l d0,d1
move.l d1,d0
lsl.l #3,d0
moveq #7,d1
and.l d2,d1
add.l d1,d0
add.l d0,d0
add.l d0,d0
move.l (a4,d0.l),(a0,d7.l)
move.l d5,a2
move.l (a4,a0.l),d1
neg.l d1
move.l d1,(a2)+
move.l a2,d5
move.l d6,a2
move.l (a2,d0.l),d1
lea _psq_knights,a2
move.l d1,(a2,a0.l)
move.l d4,a2
neg.l d1
move.l d1,(a2)+
move.l a2,d4
lea _psq_bishops,a2
lea _raw_psq_bishops,a3
move.l (a3,d0.l),(a2,a0.l)
move.l d3,a2
move.l (a3,a0.l),d1
neg.l d1
move.l d1,(a2)+
move.l a2,d3
lea _psq_rooks,a3
lea _raw_psq_rooks,a2
move.l (a2,d0.l),(a3,a0.l)
move.l (a2,a0.l),d1
neg.l d1
move.l d1,(a6)+
lea _psq_queens,a2
move.l (a1,d0.l),(a2,a0.l)
move.l (a1,a0.l),d0
neg.l d0
move.l d0,(a5)+
addq.l #1,d2
addq.l #4,a0
moveq #64,d1
cmp.l d2,d1
jne .L376
.L381:
movem.l (sp)+,#31996
rts
.L380:
addq.l #7,d0
asr.l #3,d0
moveq #7,d1
sub.l d0,d1
move.l d1,d0
lsl.l #3,d0
moveq #7,d1
and.l d2,d1
add.l d1,d0
add.l d0,d0
add.l d0,d0
move.l (a4,d0.l),(a0,d7.l)
move.l d5,a2
move.l (a4,a0.l),d1
neg.l d1
move.l d1,(a2)+
move.l a2,d5
move.l d6,a2
move.l (a2,d0.l),d1
lea _psq_knights,a2
move.l d1,(a2,a0.l)
move.l d4,a2
neg.l d1
move.l d1,(a2)+
move.l a2,d4
lea _psq_bishops,a2
lea _raw_psq_bishops,a3
move.l (a3,d0.l),(a2,a0.l)
move.l d3,a2
move.l (a3,a0.l),d1
neg.l d1
move.l d1,(a2)+
move.l a2,d3
lea _psq_rooks,a3
lea _raw_psq_rooks,a2
move.l (a2,d0.l),(a3,a0.l)
move.l (a2,a0.l),d1
neg.l d1
move.l d1,(a6)+
lea _psq_queens,a2
move.l (a1,d0.l),(a2,a0.l)
move.l (a1,a0.l),d0
neg.l d0
move.l d0,(a5)+
addq.l #1,d2
addq.l #4,a0
moveq #64,d1
cmp.l d2,d1
jne .L376
jra .L381
_lookup.2820:
.ascii " PKN BRQ pkn brq\0"
.lcomm _buf.2819,128
.lcomm _buf.2800,3