home *** CD-ROM | disk | FTP | other *** search
- .globl _wmove, _wremove
- .globl _board, _pval, _amp, _flag, _eppos, _value, _wkpos
- .globl _game
-
- _wmove:
- mov _amp,r4
- movb 2(sp),r3 / to
- movb 3(sp),r2 / from
- mov _value,(r4)+
- mov _flag,(r4)+
- mov _eppos,(r4)+
- mov r2,(r4)+
- mov r3,(r4)+
- asl r2 / from as a word index
- asl r3 / to as word index
- mov _board(r3),r0
- mov r0,(r4)+
- beq 1f
- asl r0
- sub _pval+12.(r0),_value
- 1:
- mov _board(r2),r0
- mov r0,_board(r3)
- clr _board(r2)
- mov $-1,_eppos
- asl r0
- bge error
- jmp *0f(r0) / type of man
- kmove
- qmove
- rmove
- bmove
- nmove
- pmove
- 0:
- error:
- 3
-
-
- pmove:
- sub r3,r2
- bge 1f
- neg r2
- 1:
- cmp r2,$2*1 / ep capture
- bne 1f
- clr _board(r3)
- mov $-1,_board-16.(r3)
- mov $4,(r4)+
- mov r4,_amp
- rts pc
- 1:
- cmp r2,$2*16. / double move
- bne 1f
- movb 3(sp),r2
- sub $8,r2
- mov r2,_eppos
- br move
- 1:
- cmp r3,$24.*2
- bge move
- sub $25.,_value
- cmp r3,$16.*2
- bge move
- sub $50.,_value
- cmp r3,$8.*2 / queen promotion
- bge move
- sub $625.,_value
- mov $-5,_board(r3)
- mov $5,(r4)+
- mov r4,_amp
- rts pc
-
- rmove:
- cmp r2,$2*63.
- bne 1f
- bic $1,_flag
- br move
- 1:
- cmp r2,$2*56.
- bne move
- bic $2,_flag
- br move
-
- kmove:
- asr r3
- mov r3,_wkpos
- bic $3,_flag
- cmp r2,$2*60.
- bne 2f
- cmp r3,$62. / kingside castle
- bne 1f
- dec _value
- mov $-4,_board+[2*61.]
- clr _board+[2*63.]
- mov $2,(r4)+
- mov r4,_amp
- rts pc
- 1:
- cmp r3,$58. / queenside castle
- bne 2f
- dec _value
- mov $-4,_board+[2*59.]
- clr _board+[2*56.]
- mov $3,(r4)+
- mov r4,_amp
- rts pc
- 2: / king move
- tst _game
- bne 1f
- add $2,_value
- 1:
- clr (r4)+
- mov r4,_amp
- rts pc
-
- qmove:
- tst _game
- bne move
- inc _value
- br move
-
- nmove:
- bmove:
- move:
- mov $1,(r4)+
- mov r4,_amp
- rts pc
-
- _wremove:
- mov _amp,r4
- mov -(r4),r0
- mov -(r4),r1
- mov -(r4),r3
- mov -(r4),r2
- mov -(r4),_eppos
- mov -(r4),_flag
- mov -(r4),_value
- mov r4,_amp
- asl r2
- asl r3
- mov _board(r3),_board(r2)
- mov r1,_board(r3)
- asl r0
- jmp *0f(r0)
- 0:
- movek
- movex
- moveo
- moveoo
- movep
- moveq
-
- movek:
- asr r2
- mov r2,_wkpos
-
- movex:
- rts pc
-
- moveo:
- mov $-4,_board+[2*63.]
- clr _board+[2*61.]
- mov $60.,_wkpos
- rts pc
-
- moveoo:
- mov $-4,_board+[2*56.]
- clr _board+[2*59.]
- mov $60.,_wkpos;
- rts pc
-
- movep:
- mov $-1,_board(r2)
- clr _board-[2*8.](r3)
- rts pc
-
- moveq:
- mov $-1,_board(r2)
- rts pc
-