mirror of
https://frontier.innolan.net/github/amigaos-cross-toolchain6.git
synced 2024-10-19 10:29:55 +00:00
395 lines
5.5 KiB
ArmAsm
395 lines
5.5 KiB
ArmAsm
#NO_APP
|
|
.text
|
|
.align 2
|
|
.globl _TT_free
|
|
_TT_free:
|
|
move.l _board+32336,d0
|
|
jeq .L1
|
|
move.l d0,-(sp)
|
|
jsr _free
|
|
addq.l #4,sp
|
|
.L1:
|
|
rts
|
|
.LC0:
|
|
.ascii "Hash table memory allocation problem. Exiting...\12\0"
|
|
.LC1:
|
|
.ascii "Transposition Table: %lld entries allocated...%lld bytes.\12\0"
|
|
.align 2
|
|
.globl _TT_set_size
|
|
_TT_set_size:
|
|
movem.l #16128,-(sp)
|
|
move.l 28(sp),d0
|
|
lsl.w #4,d0
|
|
swap d0
|
|
clr.w d0
|
|
move.l d0,d7
|
|
moveq #0,d6
|
|
cmp.l #32767,d0
|
|
jls .L19
|
|
clr.l d0
|
|
move.l #1024,d1
|
|
.L10:
|
|
add.l d1,d1
|
|
addx.l d0,d0
|
|
move.l d1,d3
|
|
moveq #27,d2
|
|
lsr.l d2,d3
|
|
move.l d0,d2
|
|
lsl.l #5,d2
|
|
or.l d3,d2
|
|
move.l d1,d3
|
|
lsl.l #5,d3
|
|
move.l d2,d4
|
|
move.l d3,d5
|
|
sub.l d7,d5
|
|
subx.l d6,d4
|
|
jls .L10
|
|
move.l d1,d5
|
|
lsl.l #4,d5
|
|
moveq #-1,d2
|
|
moveq #-1,d3
|
|
add.l d1,d3
|
|
addx.l d0,d2
|
|
move.l d3,d4
|
|
lsl.l #4,d4
|
|
.L9:
|
|
move.l _board+32336,d0
|
|
jeq .L11
|
|
move.l d0,-(sp)
|
|
jsr _free
|
|
addq.l #4,sp
|
|
.L11:
|
|
move.l d5,-(sp)
|
|
jsr _malloc
|
|
move.l d0,_board+32336
|
|
move.l d2,_board+32340
|
|
move.l d3,_board+32344
|
|
addq.l #4,sp
|
|
tst.l d0
|
|
jeq .L27
|
|
move.l d3,d1
|
|
moveq #28,d0
|
|
lsr.l d0,d1
|
|
move.l d2,d0
|
|
lsl.l #4,d0
|
|
or.l d1,d0
|
|
move.l d3,d1
|
|
lsl.l #4,d1
|
|
move.l d1,-(sp)
|
|
move.l d0,-(sp)
|
|
move.l d3,-(sp)
|
|
move.l d2,-(sp)
|
|
pea .LC1
|
|
jsr _printf
|
|
lea (20,sp),sp
|
|
.L13:
|
|
tst.l d4
|
|
jeq .L8
|
|
move.l _board+32336,a0
|
|
moveq #64,d0
|
|
cmp.l d4,d0
|
|
jcs .L28
|
|
move.l a0,d0
|
|
add.l d4,d0
|
|
.L17:
|
|
clr.b (a0)+
|
|
cmp.l a0,d0
|
|
jne .L17
|
|
.L8:
|
|
movem.l (sp)+,#252
|
|
rts
|
|
.L28:
|
|
move.l d4,-(sp)
|
|
clr.l -(sp)
|
|
move.l a0,-(sp)
|
|
jsr ___memset64
|
|
lea (12,sp),sp
|
|
movem.l (sp)+,#252
|
|
rts
|
|
.L27:
|
|
pea .LC0
|
|
jsr _printf
|
|
pea 1.w
|
|
jsr _exit
|
|
addq.l #8,sp
|
|
jra .L13
|
|
.L19:
|
|
move.l #16368,d4
|
|
clr.l d2
|
|
move.l #1023,d3
|
|
move.l #16384,d5
|
|
jra .L9
|
|
.align 2
|
|
.globl _TT_clear
|
|
_TT_clear:
|
|
move.l _board+32336,a0
|
|
cmp.w #0,a0
|
|
jeq .L29
|
|
move.l _board+32344,d0
|
|
lsl.l #4,d0
|
|
jeq .L29
|
|
moveq #64,d1
|
|
cmp.l d0,d1
|
|
jcs .L41
|
|
add.l a0,d0
|
|
.L34:
|
|
clr.b (a0)+
|
|
cmp.l a0,d0
|
|
jne .L34
|
|
.L29:
|
|
rts
|
|
.L41:
|
|
move.l d0,-(sp)
|
|
clr.l -(sp)
|
|
move.l a0,-(sp)
|
|
jsr ___memset64
|
|
lea (12,sp),sp
|
|
rts
|
|
.align 2
|
|
.globl _TT_RecordHash
|
|
_TT_RecordHash:
|
|
movem.l #12320,-(sp)
|
|
move.l 20(sp),a1
|
|
lea _board,a2
|
|
move.l 134(a2),d2
|
|
move.l 138(a2),d3
|
|
move.l 32344(a2),d0
|
|
and.l d3,d0
|
|
lsl.l #4,d0
|
|
move.l 32336(a2),a0
|
|
add.l d0,a0
|
|
move.l (a0),d0
|
|
move.l 4(a0),d1
|
|
sub.l d3,d1
|
|
subx.l d2,d0
|
|
jeq .L49
|
|
cmp.w #30800,a1
|
|
jgt .L50
|
|
.L45:
|
|
cmp.w #-30800,a1
|
|
jge .L46
|
|
sub.w _board+132,a1
|
|
.L46:
|
|
move.l d2,(a0)
|
|
move.l d3,4(a0)
|
|
move.l 28(sp),12(a0)
|
|
move.w a1,10(a0)
|
|
move.b 27(sp),9(a0)
|
|
move.b 19(sp),8(a0)
|
|
.L42:
|
|
movem.l (sp)+,#1036
|
|
rts
|
|
.L50:
|
|
move.w _board+132,a2
|
|
add.l a2,a1
|
|
move.l d2,(a0)
|
|
move.l d3,4(a0)
|
|
move.l 28(sp),12(a0)
|
|
move.w a1,10(a0)
|
|
move.b 27(sp),9(a0)
|
|
move.b 19(sp),8(a0)
|
|
jra .L42
|
|
.L49:
|
|
moveq #0,d0
|
|
move.b 8(a0),d0
|
|
cmp.l 16(sp),d0
|
|
jgt .L42
|
|
cmp.w #30800,a1
|
|
jle .L45
|
|
jra .L50
|
|
.align 2
|
|
.globl _TT_probe
|
|
_TT_probe:
|
|
movem.l #12336,-(sp)
|
|
lea _board,a3
|
|
move.l 134(a3),d2
|
|
move.l 138(a3),d3
|
|
move.l 32344(a3),d0
|
|
and.l d3,d0
|
|
lsl.l #4,d0
|
|
move.l 32336(a3),a0
|
|
add.l d0,a0
|
|
move.l (a0),d0
|
|
move.l 4(a0),d1
|
|
sub.l d3,d1
|
|
subx.l d2,d0
|
|
jne .L54
|
|
move.l 20(sp),a1
|
|
move.l 12(a0),(a1)
|
|
moveq #0,d0
|
|
move.b 8(a0),d0
|
|
cmp.l 28(sp),d0
|
|
jlt .L54
|
|
move.b 9(a0),d0
|
|
cmp.b #1,d0
|
|
jeq .L60
|
|
cmp.b #2,d0
|
|
jeq .L61
|
|
cmp.b #3,d0
|
|
jne .L54
|
|
move.w 10(a0),a1
|
|
cmp.l 36(sp),a1
|
|
jlt .L54
|
|
move.l 24(sp),a2
|
|
move.l 36(sp),(a2)
|
|
.L51:
|
|
move.l a0,d0
|
|
movem.l (sp)+,#3084
|
|
rts
|
|
.L54:
|
|
sub.l a0,a0
|
|
move.l a0,d0
|
|
movem.l (sp)+,#3084
|
|
rts
|
|
.L61:
|
|
move.w 10(a0),a1
|
|
cmp.l 32(sp),a1
|
|
jgt .L54
|
|
move.l 24(sp),a1
|
|
move.l 32(sp),(a1)
|
|
move.l a0,d0
|
|
movem.l (sp)+,#3084
|
|
rts
|
|
.L60:
|
|
move.w 10(a0),a1
|
|
move.l 24(sp),a2
|
|
move.l a1,(a2)
|
|
cmp.w #30800,a1
|
|
jgt .L62
|
|
cmp.w #-30800,a1
|
|
jge .L51
|
|
move.l a2,a3
|
|
move.w _board+132,a2
|
|
add.l a1,a2
|
|
move.l a2,(a3)
|
|
move.l a0,d0
|
|
movem.l (sp)+,#3084
|
|
rts
|
|
.L62:
|
|
sub.w _board+132,a1
|
|
move.l a1,(a2)
|
|
move.l a0,d0
|
|
movem.l (sp)+,#3084
|
|
rts
|
|
.LC2:
|
|
.ascii " <--- move not legal\12\0"
|
|
.LC3:
|
|
.ascii "No moves from hash table probing!!!\12\0"
|
|
.align 2
|
|
.globl _TT_fillPVLineFromTT
|
|
_TT_fillPVLineFromTT:
|
|
lea (-2412,sp),sp
|
|
movem.l #15422,-(sp)
|
|
move.l 2452(sp),d3
|
|
move.l 2456(sp),a3
|
|
jle .L65
|
|
lea _board,a1
|
|
move.l 134(a1),d4
|
|
move.l 138(a1),d5
|
|
move.l 32344(a1),d0
|
|
and.l d5,d0
|
|
lsl.l #4,d0
|
|
move.l 32336(a1),a0
|
|
add.l d0,a0
|
|
move.l (a0),d0
|
|
move.l 4(a0),d1
|
|
sub.l d5,d1
|
|
subx.l d4,d0
|
|
jne .L65
|
|
lea (48,sp),a2
|
|
move.l a2,a4
|
|
moveq #0,d2
|
|
lea _moveExists,a5
|
|
lea _move_make,a6
|
|
.L70:
|
|
move.l 12(a0),d4
|
|
jeq .L67
|
|
move.l d4,-(sp)
|
|
jsr (a5)
|
|
addq.l #4,sp
|
|
tst.l d0
|
|
jeq .L68
|
|
move.l d4,(a4)
|
|
move.l a4,-(sp)
|
|
jsr (a6)
|
|
addq.l #1,d2
|
|
addq.l #4,sp
|
|
cmp.l d3,d2
|
|
jeq .L66
|
|
lea _board,a1
|
|
move.l 134(a1),d4
|
|
move.l 138(a1),d5
|
|
move.l 32344(a1),d0
|
|
and.l d5,d0
|
|
lsl.l #4,d0
|
|
move.l 32336(a1),a0
|
|
add.l d0,a0
|
|
lea (12,a4),a4
|
|
move.l (a0),d0
|
|
move.l 4(a0),d1
|
|
sub.l d5,d1
|
|
subx.l d4,d0
|
|
jeq .L70
|
|
.L66:
|
|
move.l d2,d3
|
|
subq.l #1,d3
|
|
jmi .L75
|
|
move.l d3,a4
|
|
add.l d3,a4
|
|
add.l d3,a4
|
|
add.l a4,a4
|
|
add.l a4,a4
|
|
moveq #48,d0
|
|
add.l sp,d0
|
|
add.l d0,a4
|
|
lea _move_unmake,a5
|
|
.L74:
|
|
move.l a4,-(sp)
|
|
jsr (a5)
|
|
lea (-12,a4),a4
|
|
addq.l #4,sp
|
|
dbra d3,.L74
|
|
clr.w d3
|
|
subq.l #1,d3
|
|
jcc .L74
|
|
.L75:
|
|
tst.l d2
|
|
jle .L73
|
|
lea (4,a3),a0
|
|
move.l d2,d0
|
|
addq.l #1,d0
|
|
add.l d0,d0
|
|
add.l d0,d0
|
|
add.l a3,d0
|
|
.L77:
|
|
move.l (a2),(a0)+
|
|
lea (12,a2),a2
|
|
cmp.l a0,d0
|
|
jne .L77
|
|
.L73:
|
|
move.l d2,(a3)
|
|
movem.l (sp)+,#31804
|
|
lea (2412,sp),sp
|
|
rts
|
|
.L68:
|
|
move.l d4,36(sp)
|
|
jsr _printBoard
|
|
lea (48,sp),a0
|
|
move.l -(a0),-(sp)
|
|
move.l -(a0),-(sp)
|
|
move.l -4(a0),-(sp)
|
|
jsr _printMove
|
|
pea .LC2
|
|
jsr _printf
|
|
lea (16,sp),sp
|
|
.L67:
|
|
tst.l d2
|
|
jne .L66
|
|
.L65:
|
|
pea .LC3
|
|
jsr _printf
|
|
addq.l #4,sp
|
|
movem.l (sp)+,#31804
|
|
lea (2412,sp),sp
|
|
rts
|