home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / CROSSASM / ASM370.ZIP / DEMO8Q.ALC < prev    next >
Encoding:
Text File  |  1985-06-15  |  3.2 KB  |  122 lines

  1.          TITLE 'DEMO8Q.ALC - 8 DEMO8QS PROBLEM'
  2. *
  3. * AUTHOR.  DON HIGGINS.
  4. * DATE.    10/23/82.
  5. * REMARKS. PC/370 DEMO OF RECURSIVE PROGRAM.
  6. *
  7. * SOLVE 8 QUEENS CHESS PROBLEM WITH RECURSIVE ROUTINE.
  8. *
  9. * THE PROBLEM AS DESCRIBED IN "STRUCTURED PROGRAMMING" BY DIJKSTRA
  10. * IS TO PRINT ALL POSSIBLE POSITIONS OF 8 QUEENS ON A CHESS BOARD
  11. * SUCH THAT THEY CANNOT CAPTURE EACH OTHER.
  12. *
  13. * PROGRAM RAN 85 SECONDS WITH JRT PASCAL ON 4MHZ Z80
  14. * PROGRAM RAN 55 SECONDS WITH PC/370 ON 4MHZ Z80
  15. * PROGRAM RAN 69 SECONDS WITH PC/370 ON 4.77MHZ 8088
  16. *
  17. DEMO8Q   CSECT
  18.          LR    BASE,ENTRY
  19.          USING DEMO8Q,BASE
  20.          L     ENTRY,=V(PET)
  21.          BALR  LINK,ENTRY
  22.          LA    STKPTR,STACK-LSENTRY
  23.          USING DSTACK,STKPTR
  24.          LA    N,1
  25.          BAL   LINK,GENQ      CALL RECURSIVE SUBROUTINE FOR RESULT
  26.          L     ENTRY,=V(PET)
  27.          BALR  LINK,ENTRY
  28.          SVC   EXIT
  29. GENQ     EQU   *
  30.          LA    STKPTR,LSENTRY(STKPTR)    PUSH STACK
  31.          ST    H,STKH
  32.          ST    LINK,STKLINK              STORE ARGUMENTS
  33.          LA    H,1
  34. LOOP     EQU   *
  35.          LA    ACOL,COL-1(H)
  36.          CLI   0(ACOL),TRUE
  37.          BNE   NEXT
  38.          LA    R1,8(N)
  39.          SR    R1,H
  40.          LA    AUP,UP-1(R1)
  41.          CLI   0(AUP),TRUE
  42.          BNE   NEXT
  43.          LA    R1,0(N,H)
  44.          BCTR  R1,0
  45.          LA    ADOWN,DOWN-1(R1)
  46.          CLI   0(ADOWN),TRUE
  47.          BNE   NEXT
  48.          STC   H,X-1(N)
  49.          MVI   0(ACOL),FALSE
  50.          MVI   0(AUP),FALSE
  51.          MVI   0(ADOWN),FALSE
  52.          LA    N,1(N)
  53.          CH    N,=H'8'
  54.          BH    PRINT
  55.          BAL   LINK,GENQ           CALL ROUTINE AGAIN
  56.          B     CONT
  57. PRINT    EQU   *                   PRINT ONE SOLUTION
  58.          LA    K,8
  59.          LA    ALINE,LINE+1
  60. PLOOP    EQU   *
  61.          SR    R0,R0
  62.          IC    R0,X-1(K)
  63.          CVD   R0,PWORK
  64.          MVC   0(4,ALINE),=X'40202020'
  65.          ED    0(4,ALINE),PWORK+6
  66.          LA    ALINE,5(ALINE)
  67.          BCT   K,PLOOP
  68.          LA    R2,LINE
  69.          SVC   WTO
  70. CONT     EQU   *
  71.          BCTR  N,0
  72.          LA    R1,0(H,N)
  73.          BCTR  R1,0
  74.          LA    ADOWN,DOWN-1(R1)
  75.          MVI   0(ADOWN),TRUE
  76.          LA    R1,8(N)
  77.          SR    R1,H
  78.          LA    AUP,UP-1(R1)
  79.          MVI   0(AUP),TRUE
  80.          LA    ACOL,COL-1(H)
  81.          MVI   0(ACOL),TRUE
  82. NEXT     EQU   *
  83.          LA    H,1(H)
  84.          CH    H,=H'8'
  85.          BNH   LOOP
  86.          L     H,STKH
  87.          L     LINK,STKLINK
  88.          SH    STKPTR,=AL2(LSENTRY)     POP STACK
  89.          BR    LINK                     RETURN
  90.          LTORG
  91. EXIT     EQU   0
  92. WTO      EQU   209
  93. R0       EQU   0
  94. R1       EQU   1
  95. R2       EQU   2
  96. N        EQU   3
  97. ACOL     EQU   4
  98. AUP      EQU   5
  99. ADOWN    EQU   6
  100. AX       EQU   7
  101. H        EQU   8
  102. ALINE    EQU   9
  103. K        EQU   10
  104. BASE     EQU   12
  105. STKPTR   EQU   13
  106. LINK     EQU   14
  107. ENTRY    EQU   15
  108. COL      DC    8AL1(TRUE)
  109. UP       DC    15AL1(TRUE)
  110. DOWN     DC    15AL1(TRUE)
  111. X        DC    8AL1(0)
  112. STACK    DC    8F'0,0'
  113. LINE     DC    CL50' ',C'$'
  114. PWORK    DC    D'0'
  115. TRUE     EQU   0
  116. FALSE    EQU   1
  117. DSTACK   DSECT
  118. STKH     DS    F
  119. STKLINK  DS    F
  120. LSENTRY  EQU   *-DSTACK
  121.          END   DEMO8Q
  122.