million-perfect-letters/src/million.a

135 lines
3.2 KiB
Plaintext

;license:MIT
;(c) 2020 by 4am
;
!cpu 6502
!to "build/MILLION.SYSTEM",plain
*=$2000
column = $FC
row = $FD
!source "src/constants.a" ; no code
!source "src/macros.a" ; no code
!source "src/million.init.a" ; one-time initialization code
!source "src/hw.vbl.init.a"
FirstMover
!pseudopc $4000 {
Start
jsr TitlePage
lda #7
jsr InitPuzzle
+LDADDR puzzleline1
jsr AddLineToPuzzle
+LDADDR puzzleline2
jsr AddLineToPuzzle
+LDADDR puzzleline3
jsr AddLineToPuzzle
+LDADDR targetword1
jsr AddTargetWordToPuzzle
+LDADDR targetword2
jsr AddTargetWordToPuzzle
+LDADDR targetword3
jsr AddTargetWordToPuzzle
lda #0
sta selected_logical_column
jsr RedrawPuzzle
jsr AnimatePuzzleIntoPlace
jsr DrawColumnSelectionIndicator
bit $c010
jmp PlayEventLoop
selected_logical_column
!byte 0
PlayEventLoop
- lda $c000
bpl -
bit $c010
cmp #$8B ; up arrow
beq EventUpArrow
cmp #$8A ; down arrow
beq EventDownArrow
cmp #$88 ; left arrow
beq EventLeftArrow
cmp #$95 ; right arrow
beq EventRightArrow
jmp PlayEventLoop
EventUpArrow
ldy selected_logical_column
jsr ScrollPuzzleUp
bcs @fail
jsr ScrollUp
jsr CheckForTargetWord
bcc FoundTargetWord
bcs @done
@fail jsr SoftBell
@done jmp PlayEventLoop
EventDownArrow
ldy selected_logical_column
jsr ScrollPuzzleDown
bcs @fail
jsr ScrollDown
jsr CheckForTargetWord
bcc FoundTargetWord
bcs @done
@fail jsr SoftBell
@done jmp PlayEventLoop
FoundTargetWord
ldx #4
ldy #0
- lda puzzle_data4, y
jsr DrawCharacter
iny
cpy puzzle_logical_width
bne -
jmp PlayEventLoop
EventLeftArrow
ldy selected_logical_column
jsr EraseColumnSelectionIndicator
bne +
ldy puzzle_logical_width
+ dey
sty selected_logical_column
jsr DrawColumnSelectionIndicator
jmp PlayEventLoop
EventRightArrow
ldy selected_logical_column
jsr EraseColumnSelectionIndicator
iny
cpy puzzle_logical_width
bcc +
ldy #0
+ sty selected_logical_column
jsr DrawColumnSelectionIndicator
jmp PlayEventLoop
puzzleline1
!raw "PRTFELE"
puzzleline2
!raw "MHERINS"
puzzleline3
!raw "SIOTBET"
targetword1
!raw "MITTENS"
targetword2
!raw "PROFILE"
targetword3
!raw "SHERBET"
!source "src/ds.puzzle.a"
!source "src/hw.vbl.a"
!source "src/ui.title.a"
!source "src/ui.common.a"
!source "src/ui.font.a"
!source "src/ui.font.data.a"
}