74 lines
979 B
Text
74 lines
979 B
Text
n equ 8 ; queens
|
|
maximum equ 32 ; only limited by time
|
|
place equ $00
|
|
count equ maximum+place ; 64 bits (8 bytes)
|
|
length equ maximum+8
|
|
org $80
|
|
start
|
|
LDY #n ; n queens on an n x n board
|
|
STY greater+1
|
|
DEY
|
|
STY safe+1
|
|
LDX #length
|
|
LDA #$00
|
|
clear
|
|
STA place,X
|
|
DEX
|
|
BPL clear
|
|
next
|
|
INX
|
|
LDA #$FF
|
|
STA place,X
|
|
loop
|
|
INC place,X
|
|
LDA place,X
|
|
greater
|
|
CMP #n
|
|
BCS max
|
|
STX index+1
|
|
index
|
|
LDY #$00 ; index+1
|
|
BEQ safe
|
|
DEY
|
|
STA compare+1
|
|
STA add+1 ; compare
|
|
STA sub+1 ; compare
|
|
issafe
|
|
LDA place,Y
|
|
compare
|
|
CMP #$00 ; compare+1
|
|
BEQ loop ; unsafe
|
|
INC add+1
|
|
add
|
|
CMP #$00 ; add+1
|
|
BEQ loop ; unsafe
|
|
DEC sub+1
|
|
sub
|
|
CMP #$00 ; sub+1
|
|
BEQ loop ; unsafe
|
|
DEY
|
|
BPL issafe
|
|
safe
|
|
CPX #n-1
|
|
BNE next
|
|
INC count ; 64 bits (8 bytes)
|
|
BNE loop
|
|
INC count+1
|
|
BNE loop
|
|
INC count+2
|
|
BNE loop
|
|
INC count+3
|
|
BNE loop
|
|
INC count+4
|
|
BNE loop
|
|
INC count+5
|
|
BNE loop
|
|
INC count+6
|
|
BNE loop
|
|
INC count+7
|
|
BNE loop
|
|
BRK
|
|
max
|
|
DEX
|
|
BPL loop
|
|
; RTS
|