mirror of
https://frontier.innolan.net/github/amigaos-cross-toolchain6.git
synced 2024-10-19 10:29:55 +00:00
2215 lines
30 KiB
ArmAsm
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
|