📄 bgen.s
字号:
.data .asciz "@(#)bgen.s 1.1 92/07/30 Copyr 1984 Sun Micro" .even .text | Copyright (c) 1984 by Sun Microsystems, Inc.# bgen()## generate moves.globl _bgen.globl _pval, _board, _dir.globl _flag, _lmp, _bkpos.globl _eppos.globl _valueuleft = 04040uright = 04004dleft = 00440dright = 00404left = 00040right = 00004up = 04000down = 00400u2r1 = 06004u1r2 = 04006d1r2 = 00406d2r1 = 00604d2l1 = 00640d1l2 = 00460u1l2 = 04060u2l1 = 06040rank2 = 00200rank7 = 02000# r0 -> d0 (this is used as a temporary)# r1 -> d1# r2 -> a2# r3 -> a3# r4 -> a4# r5 -> a5atmp = a0dtmp = d2_bgen: movl #_dir+126,a4 | mov $_dir+126.,r4 movl #_board+126,a3 | mov $_board+126.,r3 movl _lmp,a2 | mov _lmp,r2 movw #63,d1 | mov $63.,r10: movw a3@,d0 | mov (r3),r0 ble 1f | ble 1f aslw #1,d0 | asl r0 movw pc@(6-2,d0:w),dtmp jmp pc@(2,dtmp:w) | jmp *2f(r0)2: .word pawn-2b .word knight-2b .word bishop-2b .word rook-2b .word queen-2b .word king-2bpawn: movw #dleft,dtmp andw a4@,dtmp | bit $dleft,(r4) bne 2f | bne 2f tstw a3@(2*7) | tst 2*7.(r3) bge 3f | bge 3f jsr btry .word 0,7*2 | jsr r5,btry; 0; 7.*23: movw d1,d0 | mov r1,r0 addw #7,d0 | add $7,r0 cmpw _eppos,d0 | cmp r0,_eppos bne 2f | bne 2f jsr btry .word 0,-1*2 | jsr r5,btry; 0; -1*22: movw #dright,dtmp andw a4@,dtmp | bit $dright,(r4) bne 2f | bne 2f tstw a3@(9*2) | tst 9.*2(r3) bge 3f | bge 3f jsr btry .word 0, 9*2 | jsr r5,btry; 0; 9.*23: movw d1,d0 | mov r1,r0 addw #9,d0 | add $9,r0 cmpw _eppos,d0 | cmp r0,_eppos bne 2f | bne 2f jsr btry .word 0,2*1 | jsr r5,btry; 0; 2*12: tstw a3@(2*8) | tst 2*8.(r3) bne 1f | bne 1f jsr btry .word 0,2*8 | jsr r5,btry; 0; 2*8. movw #rank7,dtmp andw a4@,dtmp | bit $rank7,(r4) beq 1f | beq 1f tstw a3@(2*16) | tst 2*16.(r3) bne 1f | bne 1f jsr btry .word 0,16*2 | jsr r5,btry; 0; 16.*2 bra 1f | br 1fknight: jsr btry .word u2r1, -15*2 | jsr r5,btry; u2r1; -15.*2 jsr btry .word u1r2, -6*2 | jsr r5,btry; u1r2; -6.*2 jsr btry .word d1r2, 10*2 | jsr r5,btry; d1r2; 10.*2 jsr btry .word d2r1, 17*2 | jsr r5,btry; d2r1; 17.*2 jsr btry .word d2l1, 15*2 | jsr r5,btry; d2l1; 15.*2 jsr btry .word d1l2, 6*2 | jsr r5,btry; d1l2; 6.*2 jsr btry .word u1l2, -10*2 | jsr r5,btry; u1l2; -10.*2 jsr btry .word u2l1, -17*2 | jsr r5,btry; u2l1; -17.*2 bra 1f | br 1f1: movw a3@-,dtmp cmpw a4@-,dtmp | cmp -(r4),-(r3) subqw #1,d1 | dec r1 bpl 0b | bpl 0b movl a2,_lmp | mov r2,_lmp rts | rts pcbishop: jsr bslide .word uleft, -9*2 | jsr r5,bslide; uleft; -9.*2 jsr bslide .word uright, -7*2 | jsr r5,bslide; uright; -7.*2 jsr bslide .word dleft, 7*2 | jsr r5,bslide; dleft; 7.*2 jsr bslide .word dright, 9*2 | jsr r5,bslide; dright; 9.*2 bra 1b | br 1brook: jsr bslide .word up, -8*2 | jsr r5,bslide; up; -8.*2 jsr bslide .word down, 8*2 | jsr r5,bslide; down; 8.*2 jsr bslide .word left, -1*2 | jsr r5,bslide; left; -1.*2. jsr bslide .word right, 1*2 | jsr r5,bslide; right; 1.*2 bra 1b | br 1bqueen: jsr bslide .word uleft, -9*2 | jsr r5,bslide; uleft; -9.*2 jsr bslide .word uright, -7*2 | jsr r5,bslide; uright; -7.*2 jsr bslide .word dleft, 7*2 | jsr r5,bslide; dleft; 7.*2 jsr bslide .word dright, 9*2 | jsr r5,bslide; dright; 9.*2 jsr bslide .word up, -8*2 | jsr r5,bslide; up; -8.*2 jsr bslide .word left, -1*2 | jsr r5,bslide; left; -1.*2 jsr bslide .word right, 1*2 | jsr r5,bslide; right; 1.*2 jsr bslide .word down, 8*2 | jsr r5,bslide; down; 8.*2 bra 1b | br 1bking: jsr btry .word uleft, -9*2 | jsr r5,btry; uleft; -9.*2 jsr btry .word uright, -7*2 | jsr r5,btry; uright; -7.*2 jsr btry .word dleft, 7*2 | jsr r5,btry; dleft; 7.*2 jsr btry .word dright, 9*2 | jsr r5,btry; dright; 9.*2 jsr btry .word up, -8*2 | jsr r5,btry; up; -8.*2 jsr btry .word left, -1*2 | jsr r5,btry; left; -1.*2 jsr btry .word right, 1*2 | jsr r5,btry; right; 1.*2 jsr btry .word down, 8*2 | jsr r5,btry; down; 8.*2 bra 1b | br 1bbtry: movl sp@,a5 | implicit in pdp-11 jsr movw a5@+,dtmp andw a4@,dtmp | bit (r5)+,(r4) bne 1f | bne 1f movw a5@,d0 extl d0 movl d0,atmp | mov r3,r0 addl a3,atmp | add (r5),r0 movw atmp@,d0 | mov (r0),r0 bgt 1f | bgt 1f aslw #1,d0 | asl r0 extl d0 movl d0,atmp addl #_pval+12,atmp movw atmp@,a2@ | mov _pval+12.(r0),(r2) movw _value,dtmp subw dtmp,a2@+ | sub _value,(r2)+ movw a5@+,d0 | mov (r5)+,r0 asrw #1,d0 | asr r0 addw d1,d0 | add r1,r0 | switch byte order movb d1,a2@+ | movb r0,(r2)+ movb d0,a2@+ | movb r1,(r2)+ movl a5,sp@ rts | rts r51: tstw a5@+ | tst (r5)+ movl a5,sp@ rts | rts r5bslide: movl sp@,a5 | implicit in pdp-11 jsr movl a4,sp@- | mov r4,-(sp) movl a3,sp@- | mov r3,-(sp)1: movw a5@+,dtmp andw a4@,dtmp | bit (r5)+,(r4) bne 1f | bne 1f movw a5@,dtmp extl dtmp addl dtmp,a3 | add (r5),r3 addl dtmp,a4 | add (r5),r4 movw a3@,d0 | mov (r3),r0 bgt 1f | bgt 1f blt 2f | blt 2f clrw a2@ | clr (r2) movw _value,dtmp subw dtmp,a2@+ | sub _value,(r2)+ movl a3,d0 | mov r3,r0 subl #_board,d0 | sub $_board,r0 asrw #1,d0 | asr r0 | swap bytes movb d1,a2@+ | movb r0,(r2)+ movb d0,a2@+ | movb r1,(r2)+ tstw a5@- | tst -(r5) bra 1b | br 1b2: aslw #1,d0 | asl r0 extl d0 movl d0,atmp addl #_pval+12,atmp movw atmp@,a2@ | mov _pval+12.(r0),(r2) movw _value,dtmp subw dtmp,a2@+ | sub _value,(r2)+ movl a3,d0 | mov r3,r0 subl #_board,d0 | sub $_board,r0 asrw #1,d0 | asr r0 | swap bytes movb d1,a2@+ | movb r0,(r2)+ movb d0,a2@+ | movb r1,(r2)+1: tstw a5@+ | tst (r5)+ movl sp@+,a3 | mov (sp)+,r3 movl sp@+,a4 | mov (sp)+,r4 movl a5,sp@ rts | rts r5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -