mirror of
https://frontier.innolan.net/github/amigaos-cross-toolchain6.git
synced 2024-10-19 10:29:55 +00:00
1781 lines
25 KiB
ArmAsm
1781 lines
25 KiB
ArmAsm
#NO_APP
|
|
.text
|
|
.align 2
|
|
.globl _initSearch
|
|
_initSearch:
|
|
move.l a2,-(sp)
|
|
move.l 8(sp),a0
|
|
clr.l 56(a0)
|
|
clr.l 52(a0)
|
|
clr.l 48(a0)
|
|
clr.l 24(a0)
|
|
clr.l 28(a0)
|
|
clr.l 32(a0)
|
|
clr.l 36(a0)
|
|
clr.l 76(a0)
|
|
clr.l 72(a0)
|
|
clr.l 80(a0)
|
|
clr.l 88(a0)
|
|
clr.l 84(a0)
|
|
clr.w _board+132
|
|
clr.l 44(a0)
|
|
lea _board+16144,a0
|
|
lea _pv+4,a2
|
|
lea _board+20144,a1
|
|
move.l #_board+16944,d0
|
|
.L2:
|
|
clr.l (a1)+
|
|
clr.l (a0)+
|
|
clr.l (a2)+
|
|
cmp.l a0,d0
|
|
jne .L2
|
|
lea _board+24144,a0
|
|
move.l #_board+32336,d1
|
|
.L3:
|
|
move.l a0,d0
|
|
add.l #512,d0
|
|
.L4:
|
|
clr.l (a0)+
|
|
cmp.l a0,d0
|
|
jne .L4
|
|
cmp.l d1,a0
|
|
jne .L3
|
|
move.l (sp)+,a2
|
|
rts
|
|
.align 2
|
|
.globl _numOfLegalMoves
|
|
_numOfLegalMoves:
|
|
lea (-3072,sp),sp
|
|
movem.l #15422,-(sp)
|
|
pea 36(sp)
|
|
jsr _generateMoves
|
|
move.l d0,d3
|
|
addq.l #4,sp
|
|
jle .L14
|
|
lea (36,sp),a2
|
|
moveq #0,d4
|
|
moveq #0,d2
|
|
lea _move_make,a6
|
|
lea _kingLoc,a5
|
|
lea _isAttacked,a4
|
|
lea _move_unmake,a3
|
|
.L13:
|
|
move.l a2,-(sp)
|
|
jsr (a6)
|
|
move.b _board+128,d1
|
|
move.b d1,d0
|
|
lsr.b #3,d0
|
|
and.l #255,d0
|
|
moveq #1,d5
|
|
sub.l d0,d5
|
|
move.l d5,d0
|
|
add.l d5,d0
|
|
add.l d0,d0
|
|
move.l (a5,d0.l),-(sp)
|
|
and.l #255,d1
|
|
move.l d1,-(sp)
|
|
jsr (a4)
|
|
lea (12,sp),sp
|
|
tst.l d0
|
|
jne .L12
|
|
addq.l #1,d4
|
|
.L12:
|
|
move.l a2,-(sp)
|
|
jsr (a3)
|
|
addq.l #1,d2
|
|
lea (12,a2),a2
|
|
addq.l #4,sp
|
|
cmp.l d3,d2
|
|
jne .L13
|
|
move.l d4,d0
|
|
movem.l (sp)+,#31804
|
|
lea (3072,sp),sp
|
|
rts
|
|
.L14:
|
|
moveq #0,d1
|
|
move.l d1,d0
|
|
movem.l (sp)+,#31804
|
|
lea (3072,sp),sp
|
|
rts
|
|
.align 2
|
|
.globl _CheckUp
|
|
_CheckUp:
|
|
move.l a2,-(sp)
|
|
move.l 8(sp),a2
|
|
jsr _get_ms
|
|
moveq #1,d1
|
|
cmp.l 16(a2),d1
|
|
jeq .L23
|
|
.L19:
|
|
moveq #2,d1
|
|
cmp.l 96(a2),d1
|
|
jeq .L20
|
|
sub.l 4(a2),d0
|
|
cmp.l #3000,d0
|
|
jls .L20
|
|
moveq #1,d0
|
|
move.l d0,92(a2)
|
|
.L20:
|
|
move.l a2,8(sp)
|
|
move.l (sp)+,a2
|
|
jra _ReadInput
|
|
.L23:
|
|
cmp.l 8(a2),d0
|
|
jls .L19
|
|
move.l d1,44(a2)
|
|
clr.l 92(a2)
|
|
move.l a2,8(sp)
|
|
move.l (sp)+,a2
|
|
jra _ReadInput
|
|
.align 2
|
|
.globl _pickMove
|
|
_pickMove:
|
|
movem.l #15392,-(sp)
|
|
move.l 24(sp),a2
|
|
move.l 28(sp),d5
|
|
move.l 32(sp),d3
|
|
cmp.l d5,d3
|
|
jle .L24
|
|
move.l d5,a0
|
|
add.l d5,a0
|
|
add.l d5,a0
|
|
add.l a0,a0
|
|
lea (a0,a0.l),a1
|
|
lea 8(a2,a1.l),a0
|
|
move.l d5,d4
|
|
move.l d5,d0
|
|
move.l #-31000,d2
|
|
.L27:
|
|
move.l (a0),d1
|
|
cmp.l d1,d2
|
|
jge .L26
|
|
move.l d0,d4
|
|
move.l d1,d2
|
|
.L26:
|
|
addq.l #1,d0
|
|
lea (12,a0),a0
|
|
cmp.l d3,d0
|
|
jne .L27
|
|
cmp.l d4,d5
|
|
jeq .L24
|
|
lea (a2,a1.l),a0
|
|
move.l (a0),d5
|
|
move.b 4(a0),d3
|
|
move.b 5(a0),d2
|
|
move.b 6(a0),d1
|
|
move.l 8(a0),d0
|
|
move.l d4,a1
|
|
add.l d4,a1
|
|
add.l d4,a1
|
|
add.l a1,a1
|
|
add.l a1,a1
|
|
lea (a2,a1.l),a1
|
|
move.l a1,a2
|
|
move.l (a2)+,(a0)+
|
|
move.l (a2)+,(a0)+
|
|
move.l (a2),(a0)
|
|
move.l d5,(a1)
|
|
move.b d3,4(a1)
|
|
move.b d2,5(a1)
|
|
move.b d1,6(a1)
|
|
move.l d0,8(a1)
|
|
.L24:
|
|
movem.l (sp)+,#1084
|
|
rts
|
|
.align 2
|
|
.globl _isRepetition
|
|
_isRepetition:
|
|
movem.l #15392,-(sp)
|
|
lea _board,a2
|
|
move.b 131(a2),d0
|
|
cmp.b #99,d0
|
|
jhi .L38
|
|
move.w 142(a2),a0
|
|
move.l a0,d1
|
|
subq.l #2,d1
|
|
and.l #255,d0
|
|
move.l a0,a1
|
|
sub.l d0,a1
|
|
cmp.l d1,a1
|
|
jgt .L36
|
|
move.l 134(a2),d2
|
|
move.l 138(a2),d3
|
|
moveq #16,d0
|
|
add.l a0,d0
|
|
lsl.l #3,d0
|
|
lea _board,a2
|
|
move.l (a2,d0.l),d4
|
|
move.l 4(a2,d0.l),d5
|
|
sub.l d3,d5
|
|
subx.l d2,d4
|
|
jeq .L38
|
|
move.l a0,d0
|
|
lsl.l #3,d0
|
|
move.l d0,a0
|
|
add.l #_board+112,a0
|
|
.L33:
|
|
subq.l #2,d1
|
|
cmp.l d1,a1
|
|
jgt .L36
|
|
lea (-16,a0),a0
|
|
move.l 16(a0),d4
|
|
move.l 20(a0),d5
|
|
sub.l d3,d5
|
|
subx.l d2,d4
|
|
jne .L33
|
|
.L38:
|
|
moveq #1,d0
|
|
movem.l (sp)+,#1084
|
|
rts
|
|
.L36:
|
|
moveq #0,d0
|
|
movem.l (sp)+,#1084
|
|
rts
|
|
.align 2
|
|
.globl _Quiescence
|
|
_Quiescence:
|
|
lea (-3088,sp),sp
|
|
movem.l #16190,-(sp)
|
|
move.l 3144(sp),a4
|
|
jsr _Evaluate
|
|
move.l d0,d4
|
|
clr.l d0
|
|
moveq #1,d1
|
|
add.l d1,28(a4)
|
|
move.l 24(a4),d2
|
|
addx.l d0,d2
|
|
move.l d2,24(a4)
|
|
move.l 32(a4),d2
|
|
move.l 36(a4),d3
|
|
clr.l d6
|
|
addq.l #1,d3
|
|
addx.l d6,d2
|
|
move.l d2,32(a4)
|
|
move.l d3,36(a4)
|
|
lea _board,a6
|
|
move.b 131(a6),d0
|
|
cmp.b #99,d0
|
|
jhi .L45
|
|
move.w 142(a6),a0
|
|
lea (-2,a0),a1
|
|
and.l #255,d0
|
|
move.l a0,a3
|
|
sub.l d0,a3
|
|
cmp.l a1,a3
|
|
jgt .L44
|
|
move.l 134(a6),d0
|
|
move.l 138(a6),d1
|
|
moveq #16,d5
|
|
add.l a0,d5
|
|
lsl.l #3,d5
|
|
lea _board,a2
|
|
move.l (a2,d5.l),d6
|
|
move.l 4(a2,d5.l),d7
|
|
sub.l d1,d7
|
|
subx.l d0,d6
|
|
jeq .L45
|
|
move.l a0,d5
|
|
lsl.l #3,d5
|
|
move.l d5,a0
|
|
add.l #_board+112,a0
|
|
move.l d2,44(sp)
|
|
move.l d3,48(sp)
|
|
move.l a3,d5
|
|
.L47:
|
|
subq.l #2,a1
|
|
cmp.l a1,d5
|
|
jgt .L71
|
|
lea (-16,a0),a0
|
|
move.l 16(a0),d2
|
|
move.l 20(a0),d3
|
|
sub.l d1,d3
|
|
subx.l d0,d2
|
|
jne .L47
|
|
.L45:
|
|
moveq #0,d5
|
|
.L41:
|
|
move.l d5,d0
|
|
movem.l (sp)+,#31996
|
|
lea (3088,sp),sp
|
|
rts
|
|
.L71:
|
|
move.l 44(sp),d2
|
|
move.l 48(sp),d3
|
|
.L44:
|
|
clr.l d0
|
|
clr.l d1
|
|
move.l d3,d1
|
|
and.l #4095,d1
|
|
move.l d0,d2
|
|
or.l d1,d2
|
|
jeq .L72
|
|
cmp.l 3140(sp),d4
|
|
jge .L58
|
|
.L51:
|
|
move.l d4,d5
|
|
cmp.l 3136(sp),d4
|
|
jlt .L73
|
|
.L52:
|
|
pea 60(sp)
|
|
jsr _generateCaptureMoves
|
|
move.l d0,d2
|
|
addq.l #4,sp
|
|
jle .L41
|
|
lea (60,sp),a2
|
|
moveq #0,d3
|
|
lea _move_make,a5
|
|
move.l 3140(sp),d0
|
|
neg.l d0
|
|
move.l d0,52(sp)
|
|
move.l a4,56(sp)
|
|
move.l 3140(sp),a4
|
|
lea (8,a2),a1
|
|
move.l d3,a0
|
|
move.l d3,d0
|
|
move.l #-31000,d6
|
|
.L54:
|
|
move.l (a1),d1
|
|
cmp.l d1,d6
|
|
jge .L53
|
|
move.l d0,a0
|
|
move.l d1,d6
|
|
.L53:
|
|
addq.l #1,d0
|
|
lea (12,a1),a1
|
|
cmp.l d2,d0
|
|
jlt .L54
|
|
cmp.l d3,a0
|
|
jeq .L56
|
|
move.l (a2),a6
|
|
move.b 4(a2),d6
|
|
move.b 5(a2),d7
|
|
move.b 6(a2),d1
|
|
move.l 8(a2),d0
|
|
lea (a0,a0.l),a1
|
|
lea (a1,a0.l),a0
|
|
add.l a0,a0
|
|
add.l a0,a0
|
|
lea (60,sp),a1
|
|
add.l a1,a0
|
|
move.l a0,a3
|
|
move.l a2,a1
|
|
move.l (a3)+,(a1)+
|
|
move.l (a3)+,(a1)+
|
|
move.l (a3),(a1)
|
|
move.l a6,(a0)
|
|
move.b d6,4(a0)
|
|
move.b d7,5(a0)
|
|
move.b d1,6(a0)
|
|
move.l d0,8(a0)
|
|
.L56:
|
|
move.l a2,-(sp)
|
|
jsr (a5)
|
|
move.b _board+128,d0
|
|
move.b d0,d1
|
|
lsr.b #3,d1
|
|
and.l #255,d1
|
|
moveq #1,d6
|
|
sub.l d1,d6
|
|
move.l d6,d1
|
|
add.l d6,d1
|
|
add.l d1,d1
|
|
lea _kingLoc,a0
|
|
move.l (a0,d1.l),-(sp)
|
|
and.l #255,d0
|
|
move.l d0,-(sp)
|
|
jsr _isAttacked
|
|
lea (12,sp),sp
|
|
tst.l d0
|
|
jeq .L74
|
|
.L57:
|
|
move.l a2,-(sp)
|
|
jsr _move_unmake
|
|
addq.l #4,sp
|
|
cmp.l d4,a4
|
|
jle .L58
|
|
cmp.l d5,d4
|
|
jle .L59
|
|
move.l d4,d5
|
|
.L59:
|
|
addq.l #1,d3
|
|
lea (12,a2),a2
|
|
cmp.l d2,d3
|
|
jeq .L41
|
|
lea (8,a2),a1
|
|
move.l d3,a0
|
|
move.l d3,d0
|
|
move.l #-31000,d6
|
|
jra .L54
|
|
.L58:
|
|
move.l 3140(sp),d1
|
|
move.l d1,d0
|
|
movem.l (sp)+,#31996
|
|
lea (3088,sp),sp
|
|
rts
|
|
.L74:
|
|
move.l 56(sp),-(sp)
|
|
move.l d5,d0
|
|
neg.l d0
|
|
move.l d0,-(sp)
|
|
move.l 60(sp),-(sp)
|
|
jsr _Quiescence
|
|
move.l d0,d4
|
|
neg.l d4
|
|
lea (12,sp),sp
|
|
jra .L57
|
|
.L73:
|
|
move.l 3136(sp),d5
|
|
jra .L52
|
|
.L72:
|
|
jsr _get_ms
|
|
moveq #1,d1
|
|
cmp.l 16(a4),d1
|
|
jeq .L75
|
|
.L49:
|
|
moveq #2,d1
|
|
cmp.l 96(a4),d1
|
|
jeq .L50
|
|
sub.l 4(a4),d0
|
|
cmp.l #3000,d0
|
|
jls .L50
|
|
moveq #1,d0
|
|
move.l d0,92(a4)
|
|
.L50:
|
|
move.l a4,-(sp)
|
|
jsr _ReadInput
|
|
addq.l #4,sp
|
|
moveq #1,d0
|
|
cmp.l 44(a4),d0
|
|
jeq .L45
|
|
.L76:
|
|
cmp.l 3140(sp),d4
|
|
jlt .L51
|
|
jra .L58
|
|
.L75:
|
|
cmp.l 8(a4),d0
|
|
jls .L49
|
|
move.l d1,44(a4)
|
|
clr.l 92(a4)
|
|
move.l a4,-(sp)
|
|
jsr _ReadInput
|
|
addq.l #4,sp
|
|
moveq #1,d0
|
|
cmp.l 44(a4),d0
|
|
jne .L76
|
|
jra .L45
|
|
.LC0:
|
|
.ascii "info depth %d currmove %s currmovenumber %d\12\0"
|
|
.align 2
|
|
.globl _AlphaBeta
|
|
_AlphaBeta:
|
|
link.w a5,#-3928
|
|
movem.l #16186,-(sp)
|
|
move.l 28(a5),a3
|
|
move.l 12(a5),-3884(a5)
|
|
clr.l -3876(a5)
|
|
clr.l -3880(a5)
|
|
clr.l d0
|
|
moveq #1,d1
|
|
add.l d1,28(a3)
|
|
move.l 24(a3),d2
|
|
addx.l d0,d2
|
|
move.l d2,24(a3)
|
|
tst.w _board+132
|
|
jeq .L78
|
|
lea _board,a4
|
|
move.b 131(a4),d0
|
|
cmp.b #99,d0
|
|
jhi .L81
|
|
move.w 142(a4),a0
|
|
lea (-2,a0),a1
|
|
and.l #255,d0
|
|
move.l a0,d3
|
|
sub.l d0,d3
|
|
cmp.l a1,d3
|
|
jgt .L78
|
|
move.l 134(a4),d0
|
|
move.l 138(a4),d1
|
|
moveq #16,d2
|
|
add.l a0,d2
|
|
lsl.l #3,d2
|
|
lea _board,a2
|
|
move.l (a2,d2.l),d4
|
|
move.l 4(a2,d2.l),d5
|
|
sub.l d1,d5
|
|
subx.l d0,d4
|
|
jeq .L81
|
|
move.l a0,d2
|
|
lsl.l #3,d2
|
|
move.l d2,a0
|
|
add.l #_board+112,a0
|
|
.L83:
|
|
subq.l #2,a1
|
|
cmp.l a1,d3
|
|
jgt .L78
|
|
lea (-16,a0),a0
|
|
move.l 16(a0),d4
|
|
move.l 20(a0),d5
|
|
sub.l d1,d5
|
|
subx.l d0,d4
|
|
jne .L83
|
|
.L81:
|
|
moveq #0,d1
|
|
move.l d1,d0
|
|
movem.l -3968(a5),#23804
|
|
unlk a5
|
|
rts
|
|
.L78:
|
|
move.l 16(a5),-(sp)
|
|
move.l 12(a5),-(sp)
|
|
move.l 8(a5),-(sp)
|
|
pea -3884(a5)
|
|
pea -3880(a5)
|
|
jsr _TT_probe
|
|
lea (20,sp),sp
|
|
tst.l d0
|
|
jeq .L85
|
|
addq.l #1,72(a3)
|
|
move.l d0,a0
|
|
move.b 9(a0),d0
|
|
cmp.b #1,d0
|
|
jeq .L169
|
|
cmp.b #3,d0
|
|
jeq .L170
|
|
.L88:
|
|
move.l -3884(a5),d1
|
|
.L171:
|
|
move.l d1,d0
|
|
movem.l -3968(a5),#23804
|
|
unlk a5
|
|
rts
|
|
.L169:
|
|
move.l -3880(a5),d1
|
|
move.l 20(a5),a0
|
|
move.l d1,4(a0)
|
|
moveq #1,d0
|
|
move.l d0,(a0)
|
|
move.l d1,d0
|
|
clr.w d0
|
|
swap d0
|
|
lsr.w #4,d0
|
|
tst.b d0
|
|
jne .L88
|
|
move.l d1,d0
|
|
moveq #9,d2
|
|
lsr.l d2,d0
|
|
lsr.l #8,d1
|
|
moveq #0,d2
|
|
not.b d2
|
|
and.l d2,d1
|
|
and.l #1920,d0
|
|
add.l d1,d0
|
|
add.l #6036,d0
|
|
add.l d0,d0
|
|
add.l d0,d0
|
|
move.l 8(a5),d1
|
|
lea _board,a0
|
|
add.l d1,(a0,d0.l)
|
|
move.l -3884(a5),d1
|
|
jra .L171
|
|
.L170:
|
|
move.l -3880(a5),d1
|
|
move.l d1,d0
|
|
clr.w d0
|
|
swap d0
|
|
lsr.w #4,d0
|
|
tst.b d0
|
|
jne .L88
|
|
move.w _board+142,a0
|
|
move.l a0,d0
|
|
add.l #4036,d0
|
|
add.l d0,d0
|
|
add.l d0,d0
|
|
lea _board,a2
|
|
move.l (a2,d0.l),a1
|
|
cmp.l d1,a1
|
|
jeq .L88
|
|
lea (5036,a0),a0
|
|
add.l a0,a0
|
|
add.l a0,a0
|
|
move.l a1,(a2,a0.l)
|
|
move.l d1,(a2,d0.l)
|
|
move.l -3884(a5),d1
|
|
jra .L171
|
|
.L85:
|
|
move.l 16(a5),d0
|
|
sub.l 12(a5),d0
|
|
move.l d0,-3912(a5)
|
|
addq.l #1,76(a3)
|
|
tst.l 8(a5)
|
|
jne .L90
|
|
move.l 20(a5),a0
|
|
clr.l (a0)
|
|
moveq #1,d1
|
|
cmp.l d0,d1
|
|
jge .L91
|
|
move.w _board+132,a0
|
|
cmp.l (a3),a0
|
|
jle .L91
|
|
move.l a0,(a3)
|
|
.L91:
|
|
move.l a3,-(sp)
|
|
move.l 16(a5),-(sp)
|
|
move.l 12(a5),-(sp)
|
|
jsr _Quiescence
|
|
movem.l -3968(a5),#23804
|
|
unlk a5
|
|
rts
|
|
.L90:
|
|
clr.l d0
|
|
clr.l d1
|
|
move.l 28(a3),d1
|
|
and.l #4095,d1
|
|
move.l d0,d2
|
|
or.l d1,d2
|
|
jeq .L172
|
|
move.b _board+128,d1
|
|
move.b d1,d0
|
|
lsr.b #3,d0
|
|
and.l #255,d0
|
|
add.l d0,d0
|
|
add.l d0,d0
|
|
lea _kingLoc,a0
|
|
move.l (a0,d0.l),-(sp)
|
|
eor.b #8,d1
|
|
and.l #255,d1
|
|
move.l d1,-(sp)
|
|
jsr _isAttacked
|
|
move.l d0,-3892(a5)
|
|
addq.l #8,sp
|
|
jeq .L95
|
|
.L181:
|
|
addq.l #1,8(a5)
|
|
lea (-3072,a5),a0
|
|
move.l a0,-3924(a5)
|
|
.L96:
|
|
move.l -3924(a5),-(sp)
|
|
jsr _generateMoves
|
|
move.l d0,d2
|
|
move.w _board+132,a0
|
|
lea _pv,a1
|
|
addq.l #4,sp
|
|
cmp.l (a1),a0
|
|
jge .L104
|
|
tst.l d0
|
|
jle .L105
|
|
addq.l #1,a0
|
|
add.l a0,a0
|
|
add.l a0,a0
|
|
move.l (a0,a1.l),d1
|
|
cmp.l -3072(a5),d1
|
|
jeq .L141
|
|
move.w #12,a0
|
|
add.l -3924(a5),a0
|
|
moveq #0,d0
|
|
.L108:
|
|
addq.l #1,d0
|
|
cmp.l d2,d0
|
|
jeq .L109
|
|
lea (12,a0),a0
|
|
cmp.l -12(a0),d1
|
|
jne .L108
|
|
move.l d0,d1
|
|
add.l d0,d1
|
|
add.l d1,d0
|
|
add.l d0,d0
|
|
add.l d0,d0
|
|
lea (a5,d0.l),a0
|
|
move.l #2000000,-3064(a0)
|
|
.L109:
|
|
move.l 8(a5),-(sp)
|
|
move.l 8(a5),-(sp)
|
|
jsr ___mulsi3
|
|
addq.l #8,sp
|
|
move.l d0,-3896(a5)
|
|
move.l -3924(a5),a2
|
|
move.l 12(a5),d4
|
|
move.l #-32000,-3928(a5)
|
|
moveq #0,d5
|
|
clr.l -3920(a5)
|
|
moveq #0,d3
|
|
move.l 20(a5),d0
|
|
addq.l #8,d0
|
|
move.l d0,-3904(a5)
|
|
move.l #-3872,d0
|
|
add.l a5,d0
|
|
move.l d0,-3900(a5)
|
|
move.l 8(a5),d0
|
|
subq.l #1,d0
|
|
move.l d0,-3916(a5)
|
|
move.l 16(a5),d0
|
|
neg.l d0
|
|
move.l d0,-3908(a5)
|
|
move.l 8(a5),d0
|
|
subq.l #2,d0
|
|
move.l d0,-3888(a5)
|
|
.L135:
|
|
lea (8,a2),a1
|
|
move.l d3,a0
|
|
move.l d3,d0
|
|
move.l #-31000,d6
|
|
.L118:
|
|
move.l (a1),d1
|
|
cmp.l d1,d6
|
|
jge .L117
|
|
move.l d0,a0
|
|
move.l d1,d6
|
|
.L117:
|
|
addq.l #1,d0
|
|
lea (12,a1),a1
|
|
cmp.l d2,d0
|
|
jlt .L118
|
|
cmp.l d3,a0
|
|
jeq .L120
|
|
move.l (a2),a6
|
|
move.b 4(a2),d7
|
|
move.b 5(a2),d6
|
|
move.b 6(a2),d1
|
|
move.l 8(a2),d0
|
|
lea (a0,a0.l),a1
|
|
lea (a1,a0.l),a0
|
|
add.l a0,a0
|
|
add.l a0,a0
|
|
add.l -3924(a5),a0
|
|
move.l a0,a4
|
|
move.l a2,a1
|
|
move.l (a4)+,(a1)+
|
|
move.l (a4)+,(a1)+
|
|
move.l (a4),(a1)
|
|
move.l a6,(a0)
|
|
move.b d7,4(a0)
|
|
move.b d6,5(a0)
|
|
move.b d1,6(a0)
|
|
move.l d0,8(a0)
|
|
.L120:
|
|
move.l a2,-(sp)
|
|
jsr _move_make
|
|
move.b _board+128,d1
|
|
move.b d1,d0
|
|
lsr.b #3,d0
|
|
and.l #255,d0
|
|
moveq #1,d6
|
|
sub.l d0,d6
|
|
move.l d6,d0
|
|
add.l d6,d0
|
|
add.l d0,d0
|
|
lea _kingLoc,a0
|
|
move.l (a0,d0.l),-(sp)
|
|
and.l #255,d1
|
|
move.l d1,-(sp)
|
|
jsr _isAttacked
|
|
lea (12,sp),sp
|
|
tst.l d0
|
|
jne .L173
|
|
tst.l d5
|
|
jeq .L174
|
|
moveq #3,d0
|
|
cmp.l d5,d0
|
|
jge .L125
|
|
moveq #2,d0
|
|
cmp.l 8(a5),d0
|
|
jge .L125
|
|
moveq #1,d0
|
|
cmp.l -3912(a5),d0
|
|
jge .L175
|
|
.L125:
|
|
move.l d4,d0
|
|
addq.l #1,d0
|
|
move.l d0,-3884(a5)
|
|
cmp.l d4,d0
|
|
jgt .L176
|
|
.L124:
|
|
addq.l #1,d5
|
|
move.l a2,-(sp)
|
|
jsr _move_unmake
|
|
addq.l #4,sp
|
|
moveq #1,d0
|
|
cmp.l 44(a3),d0
|
|
jeq .L81
|
|
tst.w _board+132
|
|
jne .L129
|
|
tst.l 92(a3)
|
|
jne .L177
|
|
.L129:
|
|
move.l -3884(a5),d6
|
|
cmp.l -3928(a5),d6
|
|
jle .L122
|
|
move.l (a2),-3920(a5)
|
|
cmp.l d4,d6
|
|
jle .L143
|
|
cmp.l 16(a5),d6
|
|
jge .L178
|
|
move.l 20(a5),a0
|
|
move.l -3920(a5),4(a0)
|
|
move.l -3876(a5),d0
|
|
jle .L134
|
|
move.l _SysBase,a6
|
|
move.l -3900(a5),a0
|
|
move.l -3904(a5),a1
|
|
lsl.l #2,d0
|
|
#APP
|
|
| 505 "src/search.c" 1
|
|
jsr a6@(-0x270:W)
|
|
#NO_APP
|
|
move.l -3876(a5),d0
|
|
move.l 20(a5),a0
|
|
.L134:
|
|
addq.l #1,d0
|
|
move.l d0,(a0)
|
|
move.l -3920(a5),d0
|
|
clr.w d0
|
|
swap d0
|
|
lsr.w #4,d0
|
|
tst.b d0
|
|
jne .L144
|
|
move.l -3920(a5),d1
|
|
lsr.l #8,d1
|
|
moveq #0,d0
|
|
not.b d0
|
|
and.l d0,d1
|
|
move.l -3920(a5),d0
|
|
moveq #9,d4
|
|
lsr.l d4,d0
|
|
and.l #1920,d0
|
|
add.l d1,d0
|
|
add.l #6036,d0
|
|
add.l d0,d0
|
|
add.l d0,d0
|
|
move.l -3896(a5),d1
|
|
lea _board,a0
|
|
add.l d1,(a0,d0.l)
|
|
move.l d6,-3928(a5)
|
|
move.l d6,d4
|
|
.L122:
|
|
addq.l #1,d3
|
|
lea (12,a2),a2
|
|
cmp.l d2,d3
|
|
jlt .L135
|
|
tst.l d5
|
|
jeq .L105
|
|
cmp.l 12(a5),d4
|
|
jeq .L137
|
|
move.l -3920(a5),-(sp)
|
|
pea 1.w
|
|
move.l -3928(a5),-(sp)
|
|
move.l 8(a5),-(sp)
|
|
jsr _TT_RecordHash
|
|
addq.l #1,80(a3)
|
|
move.l d4,d0
|
|
movem.l -3968(a5),#23804
|
|
unlk a5
|
|
rts
|
|
.L95:
|
|
jsr _Evaluate
|
|
move.l d0,d2
|
|
moveq #1,d0
|
|
cmp.l -3912(a5),d0
|
|
jge .L179
|
|
.L165:
|
|
lea (-3072,a5),a0
|
|
move.l a0,-3924(a5)
|
|
jra .L96
|
|
.L172:
|
|
jsr _get_ms
|
|
moveq #1,d1
|
|
cmp.l 16(a3),d1
|
|
jeq .L180
|
|
.L93:
|
|
moveq #2,d1
|
|
cmp.l 96(a3),d1
|
|
jeq .L94
|
|
sub.l 4(a3),d0
|
|
cmp.l #3000,d0
|
|
jls .L94
|
|
moveq #1,d0
|
|
move.l d0,92(a3)
|
|
.L94:
|
|
move.l a3,-(sp)
|
|
jsr _ReadInput
|
|
addq.l #4,sp
|
|
.L182:
|
|
move.b _board+128,d1
|
|
move.b d1,d0
|
|
lsr.b #3,d0
|
|
and.l #255,d0
|
|
add.l d0,d0
|
|
add.l d0,d0
|
|
lea _kingLoc,a0
|
|
move.l (a0,d0.l),-(sp)
|
|
eor.b #8,d1
|
|
and.l #255,d1
|
|
move.l d1,-(sp)
|
|
jsr _isAttacked
|
|
move.l d0,-3892(a5)
|
|
addq.l #8,sp
|
|
jne .L181
|
|
jra .L95
|
|
.L176:
|
|
move.l d4,d6
|
|
neg.l d6
|
|
move.l a3,-(sp)
|
|
move.l 24(a5),-(sp)
|
|
pea -3876(a5)
|
|
move.l d6,-(sp)
|
|
move.l d4,d0
|
|
not.l d0
|
|
move.l d0,-(sp)
|
|
move.l -3916(a5),-(sp)
|
|
lea _AlphaBeta,a4
|
|
jsr (a4)
|
|
neg.l d0
|
|
move.l d0,-3884(a5)
|
|
addq.l #1,64(a3)
|
|
lea (24,sp),sp
|
|
cmp.l d4,d0
|
|
jle .L124
|
|
cmp.l 16(a5),d0
|
|
jge .L124
|
|
move.l a3,-(sp)
|
|
move.l 24(a5),-(sp)
|
|
pea -3876(a5)
|
|
move.l d6,-(sp)
|
|
move.l -3908(a5),-(sp)
|
|
move.l -3916(a5),-(sp)
|
|
jsr (a4)
|
|
neg.l d0
|
|
move.l d0,-3884(a5)
|
|
addq.l #1,68(a3)
|
|
lea (24,sp),sp
|
|
jra .L124
|
|
.L177:
|
|
move.l (a2),-(sp)
|
|
jsr _moveToUCI
|
|
move.l d5,-(sp)
|
|
move.l d0,-(sp)
|
|
move.l 8(a5),-(sp)
|
|
pea .LC0
|
|
jsr _printf
|
|
move.l ___sF,a0
|
|
move.l 4(a0),-(sp)
|
|
jsr _fflush
|
|
lea (24,sp),sp
|
|
jra .L129
|
|
.L175:
|
|
cmp.l #799999,8(a2)
|
|
jgt .L125
|
|
move.l a3,-(sp)
|
|
move.l 24(a5),-(sp)
|
|
pea -3876(a5)
|
|
move.l d4,d0
|
|
neg.l d0
|
|
move.l d0,-(sp)
|
|
move.l d4,d0
|
|
not.l d0
|
|
move.l d0,-(sp)
|
|
move.l -3888(a5),-(sp)
|
|
jsr _AlphaBeta
|
|
neg.l d0
|
|
move.l d0,-3884(a5)
|
|
addq.l #1,60(a3)
|
|
lea (24,sp),sp
|
|
cmp.l d4,d0
|
|
jle .L124
|
|
jra .L176
|
|
.L180:
|
|
cmp.l 8(a3),d0
|
|
jls .L93
|
|
move.l d1,44(a3)
|
|
clr.l 92(a3)
|
|
move.l a3,-(sp)
|
|
jsr _ReadInput
|
|
addq.l #4,sp
|
|
jra .L182
|
|
.L179:
|
|
tst.l 24(a5)
|
|
jeq .L165
|
|
moveq #6,d0
|
|
cmp.l 8(a5),d0
|
|
jlt .L99
|
|
move.l 8(a5),d0
|
|
add.l d0,d0
|
|
add.l 8(a5),d0
|
|
lsl.l #3,d0
|
|
add.l 8(a5),d0
|
|
add.l d0,d0
|
|
add.l d0,d0
|
|
move.l d2,d3
|
|
sub.l d0,d3
|
|
cmp.l 16(a5),d3
|
|
jge .L183
|
|
.L99:
|
|
cmp.l 16(a5),d2
|
|
jlt .L165
|
|
tst.w _board+132
|
|
jeq .L165
|
|
move.b _board+128,d0
|
|
lsr.b #3,d0
|
|
and.l #255,d0
|
|
add.l #8097,d0
|
|
add.l d0,d0
|
|
add.l d0,d0
|
|
lea _board,a0
|
|
tst.l (a0,d0.l)
|
|
jle .L165
|
|
moveq #1,d0
|
|
cmp.l 8(a5),d0
|
|
jge .L165
|
|
move.l 8(a5),d3
|
|
asr.l #2,d3
|
|
addq.l #3,d3
|
|
sub.l 16(a5),d2
|
|
cmp.l #299,d2
|
|
jgt .L139
|
|
pea 100.w
|
|
move.l d2,-(sp)
|
|
jsr ___divsi3
|
|
addq.l #8,sp
|
|
.L100:
|
|
add.l d0,d3
|
|
lea (-3072,a5),a0
|
|
move.l a0,-3924(a5)
|
|
move.l a0,-(sp)
|
|
jsr _move_makeNull
|
|
move.l 8(a5),d0
|
|
sub.l d3,d0
|
|
addq.l #4,sp
|
|
tst.l d0
|
|
jle .L101
|
|
move.l a3,-(sp)
|
|
clr.l -(sp)
|
|
pea -3876(a5)
|
|
moveq #1,d1
|
|
sub.l 16(a5),d1
|
|
move.l d1,-(sp)
|
|
move.l 16(a5),d1
|
|
neg.l d1
|
|
move.l d1,-(sp)
|
|
move.l d0,-(sp)
|
|
jsr _AlphaBeta
|
|
move.l d0,d2
|
|
neg.l d2
|
|
lea (24,sp),sp
|
|
.L102:
|
|
move.l -3924(a5),-(sp)
|
|
jsr _move_unmakeNull
|
|
addq.l #4,sp
|
|
cmp.l 16(a5),d2
|
|
jlt .L96
|
|
addq.l #1,56(a3)
|
|
move.l 16(a5),d1
|
|
move.l d1,d0
|
|
movem.l -3968(a5),#23804
|
|
unlk a5
|
|
rts
|
|
.L173:
|
|
move.l a2,-(sp)
|
|
jsr _move_unmake
|
|
addq.l #4,sp
|
|
jra .L122
|
|
.L174:
|
|
move.l a3,-(sp)
|
|
move.l 24(a5),-(sp)
|
|
pea -3876(a5)
|
|
move.l d4,d0
|
|
neg.l d0
|
|
move.l d0,-(sp)
|
|
move.l -3908(a5),-(sp)
|
|
move.l -3916(a5),-(sp)
|
|
jsr _AlphaBeta
|
|
neg.l d0
|
|
move.l d0,-3884(a5)
|
|
lea (24,sp),sp
|
|
jra .L124
|
|
.L143:
|
|
move.l d6,-3928(a5)
|
|
jra .L122
|
|
.L144:
|
|
move.l d6,-3928(a5)
|
|
move.l d6,d4
|
|
jra .L122
|
|
.L104:
|
|
move.l -3880(a5),d1
|
|
jeq .L112
|
|
tst.l d0
|
|
jle .L105
|
|
cmp.l -3072(a5),d1
|
|
jeq .L141
|
|
move.w #12,a0
|
|
add.l -3924(a5),a0
|
|
moveq #0,d0
|
|
.L115:
|
|
addq.l #1,d0
|
|
cmp.l d2,d0
|
|
jeq .L109
|
|
lea (12,a0),a0
|
|
cmp.l -12(a0),d1
|
|
jne .L115
|
|
move.l d0,d1
|
|
add.l d0,d1
|
|
add.l d1,d0
|
|
add.l d0,d0
|
|
add.l d0,d0
|
|
lea (a5,d0.l),a0
|
|
move.l #2000000,-3064(a0)
|
|
jra .L109
|
|
.L112:
|
|
tst.l d2
|
|
jgt .L109
|
|
.L105:
|
|
tst.l -3892(a5)
|
|
jeq .L81
|
|
move.w _board+132,a0
|
|
move.l a0,d1
|
|
add.l #-31000,d1
|
|
move.l d1,d0
|
|
movem.l -3968(a5),#23804
|
|
unlk a5
|
|
rts
|
|
.L178:
|
|
subq.l #1,d5
|
|
jeq .L184
|
|
addq.l #1,48(a3)
|
|
.L132:
|
|
move.l -3920(a5),d0
|
|
clr.w d0
|
|
swap d0
|
|
lsr.w #4,d0
|
|
tst.b d0
|
|
jne .L133
|
|
move.w _board+142,a0
|
|
move.l a0,d1
|
|
add.l #4036,d1
|
|
add.l d1,d1
|
|
add.l d1,d1
|
|
lea _board,a2
|
|
move.l (a2,d1.l),a1
|
|
cmp.l -3920(a5),a1
|
|
jeq .L133
|
|
move.l a0,d0
|
|
add.l #5036,d0
|
|
add.l d0,d0
|
|
add.l d0,d0
|
|
move.l a1,(a2,d0.l)
|
|
move.l -3920(a5),(a2,d1.l)
|
|
.L133:
|
|
move.l -3920(a5),-(sp)
|
|
pea 3.w
|
|
move.l 16(a5),-(sp)
|
|
move.l 8(a5),-(sp)
|
|
jsr _TT_RecordHash
|
|
addq.l #1,88(a3)
|
|
move.l 16(a5),d1
|
|
move.l d1,d0
|
|
movem.l -3968(a5),#23804
|
|
unlk a5
|
|
rts
|
|
.L137:
|
|
addq.l #1,84(a3)
|
|
move.l -3920(a5),-(sp)
|
|
pea 2.w
|
|
move.l d4,-(sp)
|
|
move.l 8(a5),-(sp)
|
|
jsr _TT_RecordHash
|
|
move.l d4,d0
|
|
movem.l -3968(a5),#23804
|
|
unlk a5
|
|
rts
|
|
.L141:
|
|
moveq #0,d0
|
|
move.l d0,d1
|
|
add.l d0,d1
|
|
add.l d1,d0
|
|
add.l d0,d0
|
|
add.l d0,d0
|
|
lea (a5,d0.l),a0
|
|
move.l #2000000,-3064(a0)
|
|
jra .L109
|
|
.L184:
|
|
addq.l #1,52(a3)
|
|
jra .L132
|
|
.L183:
|
|
move.l 16(a5),-(sp)
|
|
lea _abs,a2
|
|
jsr (a2)
|
|
addq.l #4,sp
|
|
cmp.l #30799,d0
|
|
jgt .L99
|
|
move.l d2,-(sp)
|
|
jsr (a2)
|
|
addq.l #4,sp
|
|
cmp.l #9999,d0
|
|
jgt .L99
|
|
move.b _board+128,d0
|
|
lsr.b #3,d0
|
|
and.l #255,d0
|
|
add.l #8097,d0
|
|
add.l d0,d0
|
|
add.l d0,d0
|
|
lea _board,a0
|
|
tst.l (a0,d0.l)
|
|
jle .L99
|
|
move.l d3,d0
|
|
movem.l -3968(a5),#23804
|
|
unlk a5
|
|
rts
|
|
.L101:
|
|
move.l a3,-(sp)
|
|
moveq #1,d0
|
|
sub.l 16(a5),d0
|
|
move.l d0,-(sp)
|
|
move.l 16(a5),d0
|
|
neg.l d0
|
|
move.l d0,-(sp)
|
|
jsr _Quiescence
|
|
move.l d0,d2
|
|
neg.l d2
|
|
lea (12,sp),sp
|
|
jra .L102
|
|
.L139:
|
|
moveq #3,d0
|
|
jra .L100
|
|
.LC1:
|
|
.ascii "info depth %d seldepth %d (%d%%, Null-moves: %d LMR: %d (%d/%d) nodes %lld qnodes %lld time %d nps %lld score cp %d pv \0"
|
|
.LC2:
|
|
.ascii "Funny, I have no PV-line!\12\0"
|
|
.LC3:
|
|
.ascii "(\0"
|
|
.LC4:
|
|
.ascii ")\12\0"
|
|
.LC5:
|
|
.ascii "info depth %d seldepth %d score cp %d nodes %lld nps %lld time %d pv \0"
|
|
.LC6:
|
|
.ascii "info depth %d seldepth %d score mate %d nodes %lld nps %lld time %d pv \0"
|
|
.LC7:
|
|
.ascii "\12\0"
|
|
.LC8:
|
|
.ascii "TT - E:%d A: %d B: %d -- Hits: %d Misses: %d (%d%%)\12\0"
|
|
.LC9:
|
|
.ascii "bestmove %s\12\0"
|
|
.align 2
|
|
.globl _think
|
|
_think:
|
|
lea (-1620,sp),sp
|
|
movem.l #16190,-(sp)
|
|
move.l 1668(sp),a2
|
|
clr.l 56(sp)
|
|
clr.l _pv
|
|
clr.l 56(a2)
|
|
clr.l 52(a2)
|
|
clr.l 48(a2)
|
|
clr.l 24(a2)
|
|
clr.l 28(a2)
|
|
clr.l 32(a2)
|
|
clr.l 36(a2)
|
|
clr.l 76(a2)
|
|
clr.l 72(a2)
|
|
clr.l 80(a2)
|
|
clr.l 88(a2)
|
|
clr.l 84(a2)
|
|
clr.w _board+132
|
|
clr.l 44(a2)
|
|
lea _board+16144,a0
|
|
lea _pv+4,a3
|
|
lea _board+20144,a1
|
|
move.l #_board+16944,d0
|
|
.L186:
|
|
clr.l (a1)+
|
|
clr.l (a0)+
|
|
clr.l (a3)+
|
|
cmp.l a0,d0
|
|
jne .L186
|
|
lea _board+24144,a0
|
|
move.l #_board+32336,d1
|
|
.L189:
|
|
move.l a0,d0
|
|
add.l #512,d0
|
|
.L188:
|
|
clr.l (a0)+
|
|
cmp.l a0,d0
|
|
jne .L188
|
|
cmp.l d1,a0
|
|
jne .L189
|
|
tst.l 16(a2)
|
|
jne .L212
|
|
move.l 12(a2),52(sp)
|
|
jle .L234
|
|
move.w #1,a3
|
|
lea (56,sp),a6
|
|
move.l sp,d2
|
|
add.l #860,d2
|
|
lea _get_ms,a5
|
|
.L209:
|
|
clr.l 56(a2)
|
|
clr.l 52(a2)
|
|
clr.l 48(a2)
|
|
clr.l 60(a2)
|
|
clr.l 68(a2)
|
|
clr.l 64(a2)
|
|
clr.l (a2)
|
|
clr.l 92(a2)
|
|
lea (4,a6),a0
|
|
.L193:
|
|
clr.l (a0)+
|
|
cmp.l d2,a0
|
|
jne .L193
|
|
clr.l 56(sp)
|
|
jsr (a5)
|
|
move.l d0,d5
|
|
move.l a2,-(sp)
|
|
pea 1.w
|
|
move.l a6,-(sp)
|
|
pea 32000.w
|
|
pea -32000.w
|
|
move.l a3,-(sp)
|
|
jsr _AlphaBeta
|
|
move.l d0,d4
|
|
jsr (a5)
|
|
move.l d0,d3
|
|
jsr (a5)
|
|
lea (24,sp),sp
|
|
moveq #1,d1
|
|
cmp.l 16(a2),d1
|
|
jeq .L235
|
|
.L194:
|
|
moveq #2,d1
|
|
cmp.l 96(a2),d1
|
|
jeq .L195
|
|
sub.l 4(a2),d0
|
|
cmp.l #3000,d0
|
|
jls .L195
|
|
moveq #1,d0
|
|
move.l d0,92(a2)
|
|
.L195:
|
|
move.l a2,-(sp)
|
|
jsr _ReadInput
|
|
addq.l #4,sp
|
|
cmp.l d5,d3
|
|
jeq .L236
|
|
.L196:
|
|
move.l d4,-(sp)
|
|
jsr _abs
|
|
addq.l #4,sp
|
|
cmp.l #30799,d0
|
|
jle .L214
|
|
.L240:
|
|
cmp.l #30799,d4
|
|
jle .L198
|
|
move.l #31000,d0
|
|
sub.l d4,d0
|
|
move.l d0,d0
|
|
jpl .L241
|
|
addq.l #1,d0
|
|
.L241:
|
|
asr.l #1,d0
|
|
move.l d0,a4
|
|
addq.l #1,a4
|
|
.L197:
|
|
move.l d2,-(sp)
|
|
move.l a3,-(sp)
|
|
jsr _TT_fillPVLineFromTT
|
|
move.l 96(a2),d0
|
|
addq.l #8,sp
|
|
moveq #2,d1
|
|
cmp.l d0,d1
|
|
jeq .L199
|
|
tst.l d0
|
|
jeq .L237
|
|
tst.l 44(a2)
|
|
jne .L199
|
|
move.l 24(a2),d6
|
|
move.l 28(a2),d7
|
|
move.l d3,d1
|
|
sub.l 4(a2),d1
|
|
cmp.w #0,a4
|
|
jne .L203
|
|
move.l d1,-(sp)
|
|
move.l d7,d0
|
|
moveq #27,d1
|
|
lsr.l d1,d0
|
|
move.l d0,a0
|
|
move.l d6,d0
|
|
lsl.l #5,d0
|
|
move.l a0,d1
|
|
or.l d0,d1
|
|
move.l d1,48(sp)
|
|
move.l d7,d0
|
|
lsl.l #5,d0
|
|
move.l d0,52(sp)
|
|
move.l 48(sp),d0
|
|
move.l 52(sp),d1
|
|
sub.l d7,d1
|
|
subx.l d6,d0
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
add.l d7,d1
|
|
addx.l d6,d0
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
move.l d3,a0
|
|
sub.l d5,a0
|
|
move.l a0,-(sp)
|
|
clr.l -(sp)
|
|
move.l d1,-(sp)
|
|
move.l d0,-(sp)
|
|
jsr ___udivdi3
|
|
lea (12,sp),sp
|
|
move.l d1,(sp)
|
|
move.l d0,-(sp)
|
|
move.l d7,-(sp)
|
|
move.l d6,-(sp)
|
|
move.l d4,-(sp)
|
|
move.l (a2),-(sp)
|
|
move.l a3,-(sp)
|
|
pea .LC5
|
|
jsr _printf
|
|
lea (36,sp),sp
|
|
move.l a2,-(sp)
|
|
move.l a6,-(sp)
|
|
jsr _printLine
|
|
pea .LC7
|
|
jsr _printf
|
|
lea (12,sp),sp
|
|
.L199:
|
|
move.l ___sF,a0
|
|
move.l 4(a0),-(sp)
|
|
jsr _fflush
|
|
addq.l #4,sp
|
|
move.l 860(sp),d0
|
|
cmp.l 56(sp),d0
|
|
jle .L205
|
|
pea 804.w
|
|
move.l d2,-(sp)
|
|
pea _pv
|
|
jsr _memcpy
|
|
lea (12,sp),sp
|
|
moveq #1,d0
|
|
cmp.l 44(a2),d0
|
|
jeq .L238
|
|
.L207:
|
|
tst.l 16(a2)
|
|
jeq .L208
|
|
add.l d3,d3
|
|
sub.l d5,d3
|
|
cmp.l 8(a2),d3
|
|
jhi .L192
|
|
.L208:
|
|
addq.l #1,a3
|
|
cmp.l 52(sp),a3
|
|
jle .L209
|
|
.L192:
|
|
move.l 96(a2),d0
|
|
jeq .L239
|
|
.L210:
|
|
subq.l #2,d0
|
|
jeq .L211
|
|
move.l _pv+4,-(sp)
|
|
jsr _moveToUCI
|
|
move.l d0,-(sp)
|
|
pea .LC9
|
|
jsr _printf
|
|
lea (12,sp),sp
|
|
.L211:
|
|
move.l a3,12(a2)
|
|
move.l _pv+4,d0
|
|
movem.l (sp)+,#31996
|
|
lea (1620,sp),sp
|
|
rts
|
|
.L236:
|
|
move.l d5,d3
|
|
addq.l #1,d3
|
|
move.l d4,-(sp)
|
|
jsr _abs
|
|
addq.l #4,sp
|
|
cmp.l #30799,d0
|
|
jgt .L240
|
|
.L214:
|
|
sub.l a4,a4
|
|
jra .L197
|
|
.L235:
|
|
cmp.l 8(a2),d0
|
|
jls .L194
|
|
move.l d1,44(a2)
|
|
clr.l 92(a2)
|
|
move.l a2,-(sp)
|
|
jsr _ReadInput
|
|
addq.l #4,sp
|
|
cmp.l d5,d3
|
|
jne .L196
|
|
jra .L236
|
|
.L205:
|
|
pea 804.w
|
|
move.l a6,-(sp)
|
|
pea _pv
|
|
jsr _memcpy
|
|
lea (12,sp),sp
|
|
moveq #1,d0
|
|
cmp.l 44(a2),d0
|
|
jne .L207
|
|
.L238:
|
|
subq.l #1,a3
|
|
move.l 96(a2),d0
|
|
jne .L210
|
|
jra .L239
|
|
.L198:
|
|
move.l #-31000,d0
|
|
sub.l d4,d0
|
|
move.l d0,d0
|
|
jpl .L242
|
|
addq.l #1,d0
|
|
.L242:
|
|
asr.l #1,d0
|
|
move.l d0,a4
|
|
jra .L197
|
|
.L237:
|
|
move.l 24(a2),d6
|
|
move.l 28(a2),d7
|
|
move.l 52(a2),a4
|
|
move.l d4,-(sp)
|
|
move.l d7,d0
|
|
moveq #27,d1
|
|
lsr.l d1,d0
|
|
move.l d6,d1
|
|
lsl.l #5,d1
|
|
or.l d1,d0
|
|
move.l d7,d1
|
|
lsl.l #5,d1
|
|
sub.l d7,d1
|
|
subx.l d6,d0
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
add.l d7,d1
|
|
addx.l d6,d0
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
move.l d3,a0
|
|
sub.l d5,a0
|
|
move.l a0,-(sp)
|
|
clr.l -(sp)
|
|
move.l d1,-(sp)
|
|
move.l d0,-(sp)
|
|
jsr ___udivdi3
|
|
lea (12,sp),sp
|
|
move.l d1,(sp)
|
|
move.l d0,-(sp)
|
|
move.l d3,d0
|
|
sub.l 4(a2),d0
|
|
move.l d0,-(sp)
|
|
move.l 36(a2),-(sp)
|
|
move.l 32(a2),-(sp)
|
|
move.l d7,-(sp)
|
|
move.l d6,-(sp)
|
|
move.l 68(a2),-(sp)
|
|
move.l 64(a2),-(sp)
|
|
move.l 60(a2),-(sp)
|
|
move.l 56(a2),-(sp)
|
|
move.l a4,d7
|
|
smi d6
|
|
ext.w d6
|
|
ext.l d6
|
|
move.l d6,d0
|
|
move.l d7,d1
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
add.l d7,d1
|
|
addx.l d6,d0
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
add.l d1,d7
|
|
addx.l d0,d6
|
|
add.l d7,d7
|
|
addx.l d6,d6
|
|
add.l d7,d7
|
|
addx.l d6,d6
|
|
move.l a4,d0
|
|
add.l 48(a2),d0
|
|
move.l #1,d1
|
|
add.l d0,d1
|
|
smi d0
|
|
ext.w d0
|
|
ext.l d0
|
|
move.l d1,-(sp)
|
|
move.l d0,-(sp)
|
|
move.l d7,-(sp)
|
|
move.l d6,-(sp)
|
|
jsr ___udivdi3
|
|
lea (12,sp),sp
|
|
move.l d1,(sp)
|
|
move.l (a2),-(sp)
|
|
move.l a3,-(sp)
|
|
pea .LC1
|
|
jsr _printf
|
|
lea (64,sp),sp
|
|
tst.l 56(sp)
|
|
jeq .L201
|
|
move.l a2,-(sp)
|
|
move.l a6,-(sp)
|
|
jsr _printLine
|
|
addq.l #8,sp
|
|
pea .LC3
|
|
jsr _printf
|
|
move.l a2,-(sp)
|
|
move.l d2,-(sp)
|
|
jsr _printLine
|
|
pea .LC4
|
|
jsr _printf
|
|
lea (16,sp),sp
|
|
jra .L199
|
|
.L203:
|
|
move.l d1,-(sp)
|
|
move.l d7,d0
|
|
moveq #27,d1
|
|
lsr.l d1,d0
|
|
move.l d6,d1
|
|
lsl.l #5,d1
|
|
or.l d1,d0
|
|
move.l d7,d1
|
|
lsl.l #5,d1
|
|
sub.l d7,d1
|
|
subx.l d6,d0
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
add.l d7,d1
|
|
addx.l d6,d0
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
move.l d3,a0
|
|
sub.l d5,a0
|
|
move.l a0,-(sp)
|
|
clr.l -(sp)
|
|
move.l d1,-(sp)
|
|
move.l d0,-(sp)
|
|
jsr ___udivdi3
|
|
lea (12,sp),sp
|
|
move.l d1,(sp)
|
|
move.l d0,-(sp)
|
|
move.l d7,-(sp)
|
|
move.l d6,-(sp)
|
|
move.l a4,-(sp)
|
|
move.l (a2),-(sp)
|
|
move.l a3,-(sp)
|
|
pea .LC6
|
|
jsr _printf
|
|
lea (36,sp),sp
|
|
move.l a2,-(sp)
|
|
move.l a6,-(sp)
|
|
jsr _printLine
|
|
pea .LC7
|
|
jsr _printf
|
|
lea (12,sp),sp
|
|
jra .L199
|
|
.L201:
|
|
pea .LC2
|
|
jsr _printf
|
|
addq.l #4,sp
|
|
pea .LC3
|
|
jsr _printf
|
|
move.l a2,-(sp)
|
|
move.l d2,-(sp)
|
|
jsr _printLine
|
|
pea .LC4
|
|
jsr _printf
|
|
lea (16,sp),sp
|
|
jra .L199
|
|
.L212:
|
|
move.l #200,52(sp)
|
|
move.w #1,a3
|
|
lea (56,sp),a6
|
|
move.l sp,d2
|
|
add.l #860,d2
|
|
lea _get_ms,a5
|
|
jra .L209
|
|
.L239:
|
|
move.l 72(a2),d2
|
|
move.l 76(a2),d3
|
|
move.l d2,d5
|
|
smi d4
|
|
ext.w d4
|
|
ext.l d4
|
|
move.l d4,d0
|
|
move.l d5,d1
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
add.l d5,d1
|
|
addx.l d4,d0
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
add.l d5,d1
|
|
addx.l d4,d0
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
move.l d3,d5
|
|
add.l d2,d5
|
|
smi d4
|
|
ext.w d4
|
|
ext.l d4
|
|
move.l d5,-(sp)
|
|
move.l d4,-(sp)
|
|
move.l d1,-(sp)
|
|
move.l d0,-(sp)
|
|
jsr ___udivdi3
|
|
lea (12,sp),sp
|
|
move.l d1,(sp)
|
|
move.l d3,-(sp)
|
|
move.l d2,-(sp)
|
|
move.l 88(a2),-(sp)
|
|
move.l 84(a2),-(sp)
|
|
move.l 80(a2),-(sp)
|
|
pea .LC8
|
|
jsr _printf
|
|
move.l 96(a2),d0
|
|
lea (28,sp),sp
|
|
jra .L210
|
|
.L234:
|
|
move.w #1,a3
|
|
move.l 96(a2),d0
|
|
jne .L210
|
|
jra .L239
|
|
.globl _ReductionLimit
|
|
.align 2
|
|
_ReductionLimit:
|
|
.long 3
|
|
.globl _FullDepthMoves
|
|
.align 2
|
|
_FullDepthMoves:
|
|
.long 4
|
|
.globl _razor_margin
|
|
.align 2
|
|
_razor_margin:
|
|
.long 188
|
|
.long 222
|
|
.long 235
|
|
.long 216
|
|
.comm _pv,804
|