ca65 V2.17 - Git 582aa41 Main file : 8queens.ca65 Current file: 8queens.ca65 000000r 1 ; 000000r 1 ; ACORN System 1 Applications: Eight Queen's Problem 000000r 1 ; 000000r 1 ; From the Acorn System 1 User's Manual 000000r 1 ; 000000r 1 ; (Chris Oddy January 2022) 000000r 1 ; 000000r 1 ; entry point $0200 000000r 1 ; 000000r 1 .setcpu "6502" 000000r 1 .listbytes unlimited 000000r 1 ; 000000r 1 COUNT := $19 000000r 1 ROW := $20 000000r 1 LEFT := $29 000000r 1 RIGHT := $32 000000r 1 RDHEXTD := $FE60 ; right double hex to display 000000r 1 RESTART := $FF04 ; monitor reentry point 000000r 1 ; 000000r 1 .org $0200 000200 1 ; 000200 1 F8 QUEENS: sed 000201 1 A2 20 ldx #$20 000203 1 84 19 sty COUNT ; clear count 000205 1 84 20 sty ROW ; clear row occupied 000207 1 84 29 sty LEFT ; clear left diagonal attacks 000209 1 84 32 sty RIGHT ; clear right diagonal attacks 00020B 1 20 16 02 jsr TRY ; find the No. of ways 00020E 1 A5 19 lda COUNT 000210 1 20 60 FE jsr RDHEXTD ; display answer 000213 1 4C 04 FF jmp RESTART 000216 1 B5 00 TRY: lda $00,x ; finished yet ? 000218 1 C9 FF cmp #$FF 00021A 1 D0 07 bne CONTIN 00021C 1 A5 19 lda COUNT ; finished, so increment count 00021E 1 69 00 adc #$00 000220 1 85 19 sta COUNT 000222 1 60 FINISH: rts 000223 1 15 09 CONTIN: ora $09,x ; current left 000225 1 15 12 ora $12,x ; current right 000227 1 A8 LOOP: tay 000228 1 49 FF eor #$FF 00022A 1 F0 F6 beq FINISH ; no chance 00022C 1 95 1B sta $1B,x ; current possible place 00022E 1 C8 iny 00022F 1 98 tya 000230 1 35 1B and $1B,x 000232 1 A8 tay 000233 1 15 00 ora $00,x 000235 1 95 01 sta $01,x ; new row 000237 1 98 tya 000238 1 15 09 ora $09,x 00023A 1 0A asl A 00023B 1 95 0A sta $0A,x ; new left attack 00023D 1 98 tya 00023E 1 15 12 ora $12,x 000240 1 4A lsr A 000241 1 95 13 sta $13,x ; new right attack 000243 1 E8 inx 000244 1 20 16 02 jsr TRY 000247 1 CA dex 000248 1 B5 01 lda $01,x 00024A 1 49 FF eor #$FF 00024C 1 35 1B and $1B,x 00024E 1 49 FF eor #$FF 000250 1 4C 27 02 jmp LOOP 000250 1