📄 wgen.s
字号:
/ generate moves.globl _wgen.globl _pval, _board, _dir.globl _flag, _lmp, _wkpos.globl _eppos.globl _valueuleft = 04040uright = 04004dleft = 00440dright = 00404left = 00040right = 00004up = 04000down = 00400u2r1 = 06004u1r2 = 04006d1r2 = 00406d2r1 = 00604d2l1 = 00640d1l2 = 00460u1l2 = 04060u2l1 = 06040rank2 = 00200rank7 = 02000_wgen: mov $_dir+126.,r4 mov $_board+126.,r3 mov _lmp,r2 mov $63.,r10: mov (r3),r0 bge 1f asl r0 jmp *2f(r0) king queen rook bishop knight pawn2:pawn: bit $uleft,(r4) bne 2f tst -2*9.(r3) ble 3f jsr r5,wtry; 0; -9.*23: mov r1,r0 sub $9,r0 cmp r0,_eppos bne 2f jsr r5,wtry; 0; -1*22: bit $uright,(r4) bne 2f tst -7.*2(r3) ble 3f jsr r5,wtry; 0; -7.*23: mov r1,r0 sub $7,r0 cmp r0,_eppos bne 2f jsr r5,wtry; 0; 2*12: tst -2*8.(r3) bne 1f jsr r5,wtry; 0; -2*8. bit $rank2,(r4) beq 1f tst -2*16.(r3) bne 1f jsr r5,wtry; 0; -16.*2 br 1fknight: jsr r5,wtry; u2r1; -15.*2 jsr r5,wtry; u1r2; -6.*2 jsr r5,wtry; d1r2; 10.*2 jsr r5,wtry; d2r1; 17.*2 jsr r5,wtry; d2l1; 15.*2 jsr r5,wtry; d1l2; 6.*2 jsr r5,wtry; u1l2; -10.*2 jsr r5,wtry; u2l1; -17.*2 br 1f1: cmp -(r4),-(r3) dec r1 bpl 0b mov r2,_lmp rts pcbishop: jsr r5,wslide; uleft; -9.*2 jsr r5,wslide; uright; -7.*2 jsr r5,wslide; dleft; 7.*2 jsr r5,wslide; dright; 9.*2 br 1brook: jsr r5,wslide; up; -8.*2 jsr r5,wslide; down; 8.*2 jsr r5,wslide; left; -1.*2. jsr r5,wslide; right; 1.*2 br 1bqueen: jsr r5,wslide; uleft; -9.*2 jsr r5,wslide; uright; -7.*2 jsr r5,wslide; dleft; 7.*2 jsr r5,wslide; dright; 9.*2 jsr r5,wslide; up; -8.*2 jsr r5,wslide; left; -1.*2 jsr r5,wslide; right; 1.*2 jsr r5,wslide; down; 8.*2 br 1bking: jsr r5,wtry; uleft; -9.*2 jsr r5,wtry; uright; -7.*2 jsr r5,wtry; dleft; 7.*2 jsr r5,wtry; dright; 9.*2 jsr r5,wtry; up; -8.*2 jsr r5,wtry; left; -1.*2 jsr r5,wtry; right; 1.*2 jsr r5,wtry; down; 8.*2 br 1bwtry: bit (r5)+,(r4) bne 1f mov r3,r0 add (r5),r0 mov (r0),r0 blt 1f asl r0 mov _value,(r2) sub _pval+12.(r0),(r2)+ mov (r5)+,r0 asr r0 add r1,r0 movb r0,(r2)+ movb r1,(r2)+ rts r51: tst (r5)+ rts r5wslide: mov r4,-(sp) mov r3,-(sp)1: bit (r5)+,(r4) bne 1f add (r5),r3 add (r5),r4 mov (r3),r0 blt 1f bgt 2f mov _value,(r2)+ mov r3,r0 sub $_board,r0 asr r0 movb r0,(r2)+ movb r1,(r2)+ tst -(r5) br 1b2: asl r0 mov _value,(r2) sub _pval+12.(r0),(r2)+ mov r3,r0 sub $_board,r0 asr r0 movb r0,(r2)+ movb r1,(r2)+1: tst (r5)+ mov (sp)+,r3 mov (sp)+,r4 rts r5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -