home *** CD-ROM | disk | FTP | other *** search
- .globl _bmove, _bremove
- .globl _board, _pval, _amp, _flag, _eppos, _value, _bkpos
- .globl _game
-
- _bmove:
- 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
- ble error
- jmp *0f-2(r0) / type of man
- 0:
- pmove
- nmove
- bmove
- rmove
- qmove
- kmove
-
- 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+[2*8.](r3)
- mov $4,(r4)+
- mov r4,_amp
- rts pc
- 1:
- cmp r2,$2*16. / double move
- bne 1f
- movb 3(sp),r2
- add $8,r2
- mov r2,_eppos
- br move
- 1:
- cmp r3,$40.*2
- blt move
- add $25.,_value
- cmp r3,$48.*2
- blt move
- add $50.,_value
- cmp r3,$56.*2 / queen promotion
- blt move
- add $625.,_value
- mov $5,_board(r3)
- mov $5,(r4)+
- mov r4,_amp
- rts pc
-
- rmove:
- cmp r2,$2*7.
- bne 1f
- bic $10,_flag
- br move
- 1:
- tst r2
- bne move
- bic $20,_flag
- br move
-
- kmove:
- asr r3
- mov r3,_bkpos
- bic $30,_flag
- cmp r2,$2*4.
- bne 2f
- cmp r3,$6 / kingside castle
- bne 1f
- inc _value
- mov $4,_board+[2*5.]
- clr _board+[2*7.]
- mov $2,(r4)+
- mov r4,_amp
- rts pc
- 1:
- cmp r3,$2 / queenside castle
- bne 2f
- inc _value
- mov $4,_board+[2*3.]
- clr _board+[2*0.]
- mov $3,(r4)+
- mov r4,_amp
- rts pc
- 2: / king move
- tst _game
- bne 1f
- sub $2,_value
- 1:
- clr (r4)+
- mov r4,_amp
- rts pc
-
- qmove:
- tst _game
- bne move
- dec _value
- br move
-
- nmove:
- bmove:
- move:
- mov $1,(r4)+
- mov r4,_amp
- rts pc
-
- _bremove:
- 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,_bkpos
-
- movex:
- rts pc
-
- moveo:
- mov $4,_board+[2*7.]
- clr _board+[2*5]
- mov $4,_bkpos
- rts pc
-
- moveoo:
- mov $4,_board+[2*0]
- clr _board+[2*3]
- mov $4,_bkpos;
- rts pc
-
- movep:
- mov $1,_board(r2)
- clr _board+[2*8.](r3)
- rts pc
-
- moveq:
- mov $1,_board(r2)
- rts pc
-