home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V7 / usr / src / games / chess / bgen.s < prev    next >
Encoding:
Text File  |  1979-05-05  |  2.5 KB  |  191 lines

  1. / generate moves
  2.  
  3. .globl    _bgen
  4.  
  5. .globl    _pval, _board, _dir
  6. .globl    _flag, _lmp, _bkpos
  7. .globl    _eppos
  8. .globl    _value
  9.  
  10. uleft    = 04040
  11. uright    = 04004
  12. dleft    = 00440
  13. dright    = 00404
  14. left    = 00040
  15. right    = 00004
  16. up    = 04000
  17. down    = 00400
  18. u2r1    = 06004
  19. u1r2    = 04006
  20. d1r2    = 00406
  21. d2r1    = 00604
  22. d2l1    = 00640
  23. d1l2    = 00460
  24. u1l2    = 04060
  25. u2l1    = 06040
  26. rank2    = 00200
  27. rank7    = 02000
  28.  
  29. _bgen:
  30.     mov    $_dir+126.,r4
  31.     mov    $_board+126.,r3
  32.     mov    _lmp,r2
  33.     mov    $63.,r1
  34. 0:
  35.     mov    (r3),r0
  36.     ble    1f
  37.     asl    r0
  38.     jmp    *2f-2(r0)
  39.  
  40. 2:
  41.     pawn
  42.     knight
  43.     bishop
  44.     rook
  45.     queen
  46.     king
  47.  
  48. pawn:
  49.     bit    $dleft,(r4)
  50.     bne    2f
  51.     tst    2*7.(r3)
  52.     bge    3f
  53.     jsr    r5,btry; 0; 7.*2
  54. 3:
  55.     mov    r1,r0
  56.     add    $7,r0
  57.     cmp    r0,_eppos
  58.     bne    2f
  59.     jsr    r5,btry; 0; -1*2
  60. 2:
  61.     bit    $dright,(r4)
  62.     bne    2f
  63.     tst    9.*2(r3)
  64.     bge    3f
  65.     jsr    r5,btry; 0; 2*9.
  66. 3:
  67.     mov    r1,r0
  68.     add    $9,r0
  69.     cmp    r0,_eppos
  70.     bne    2f
  71.     jsr    r5,btry; 0; 2*1
  72. 2:
  73.     tst    2*8.(r3)
  74.     bne    1f
  75.     jsr    r5,btry; 0; 2*8.
  76.     bit    $rank7,(r4)
  77.     beq    1f
  78.     tst    2*16.(r3)
  79.     bne    1f
  80.     jsr    r5,btry; 0; 16.*2
  81.     br    1f
  82.  
  83. knight:
  84.     jsr    r5,btry; u2r1; -15.*2
  85.     jsr    r5,btry; u1r2; -6.*2
  86.     jsr    r5,btry; d1r2; 10.*2
  87.     jsr    r5,btry; d2r1; 17.*2
  88.     jsr    r5,btry; d2l1; 15.*2
  89.     jsr    r5,btry; d1l2; 6.*2
  90.     jsr    r5,btry; u1l2; -10.*2
  91.     jsr    r5,btry; u2l1; -17.*2
  92.     br    1f
  93.  
  94.  
  95. 1:
  96.     cmp    -(r4),-(r3)
  97.     dec    r1
  98.     bpl    0b
  99.     mov    r2,_lmp
  100.     rts    pc
  101.  
  102. bishop:
  103.     jsr    r5,bslide; uleft; -9.*2
  104.     jsr    r5,bslide; uright; -7.*2
  105.     jsr    r5,bslide; dleft; 7.*2
  106.     jsr    r5,bslide; dright; 9.*2
  107.     br    1b
  108.  
  109. rook:
  110.     jsr    r5,bslide; up; -8.*2
  111.     jsr    r5,bslide; down; 8.*2
  112.     jsr    r5,bslide; left; -1.*2.
  113.     jsr    r5,bslide; right; 1.*2
  114.     br    1b
  115. queen:
  116.     jsr    r5,bslide; uleft; -9.*2
  117.     jsr    r5,bslide; uright; -7.*2
  118.     jsr    r5,bslide; dleft; 7.*2
  119.     jsr    r5,bslide; dright; 9.*2
  120.     jsr    r5,bslide; up; -8.*2
  121.     jsr    r5,bslide; left; -1.*2
  122.     jsr    r5,bslide; right; 1.*2
  123.     jsr    r5,bslide; down; 8.*2
  124.     br    1b
  125.  
  126. king:
  127.     jsr    r5,btry; uleft; -9.*2
  128.     jsr    r5,btry; uright; -7.*2
  129.     jsr    r5,btry; dleft; 7.*2
  130.     jsr    r5,btry; dright; 9.*2
  131.     jsr    r5,btry; up; -8.*2
  132.     jsr    r5,btry; left; -1.*2
  133.     jsr    r5,btry; right; 1.*2
  134.     jsr    r5,btry; down; 8.*2
  135.     br    1b
  136.  
  137. btry:
  138.     bit    (r5)+,(r4)
  139.     bne    1f
  140.     mov    r3,r0
  141.     add    (r5),r0
  142.     mov    (r0),r0
  143.     bgt    1f
  144.     asl    r0
  145.     mov    _pval+12.(r0),(r2)
  146.     sub    _value,(r2)+
  147.     mov    (r5)+,r0
  148.     asr    r0
  149.     add    r1,r0
  150.     movb    r0,(r2)+
  151.     movb    r1,(r2)+
  152.     rts    r5
  153. 1:
  154.     tst    (r5)+
  155.     rts    r5
  156.  
  157. bslide:
  158.     mov    r4,-(sp)
  159.     mov    r3,-(sp)
  160. 1:
  161.     bit    (r5)+,(r4)
  162.     bne    1f
  163.     add    (r5),r3
  164.     add    (r5),r4
  165.     mov    (r3),r0
  166.     bgt    1f
  167.     blt    2f
  168.     clr    (r2)
  169.     sub    _value,(r2)+
  170.     mov    r3,r0
  171.     sub    $_board,r0
  172.     asr    r0
  173.     movb    r0,(r2)+
  174.     movb    r1,(r2)+
  175.     tst    -(r5)
  176.     br    1b
  177. 2:
  178.     asl    r0
  179.     mov    _pval+12.(r0),(r2)
  180.     sub    _value,(r2)+
  181.     mov    r3,r0
  182.     sub    $_board,r0
  183.     asr    r0
  184.     movb    r0,(r2)+
  185.     movb    r1,(r2)+
  186. 1:
  187.     tst    (r5)+
  188.     mov    (sp)+,r3
  189.     mov    (sp)+,r4
  190.     rts    r5
  191.