Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define progStart $d000
- #define usr $f7f8
- #define boardHi $c0
- ;#define board boardHi||00
- #define bonus $c010
- .org progStart-7
- ; Header
- .db $fe
- .dw progStart
- .dw progEnd-1
- .dw progStart
- progStart:
- ret
- getAddress:
- ld a, c
- add a, a
- add a, a
- add a, b
- ld l, a
- lh h, boardHi
- ret
- setValue:
- ex af, af'
- call getAddress
- ex af, af'
- ld (hl), a
- ret
- getValue:
- call getAddress
- ld a, (hl)
- ret
- upBonus:
- powerOf2:
- ; 1 <= a <= 15
- ld lh, 1
- po2_loop:
- add hl, hl
- dec a
- jr nz, po2_loop
- ex de, hl
- ld hl, (bonus)
- add hl, de
- ld (bonus), hl
- ret
- zeroNext_Vertical:
- push bc
- ld b, e
- xor a
- call setValue
- pop bc
- ret
- zeroNext_Horizontal:
- push bc
- ld c, e
- xor a
- call setValue
- pop bc
- ret
- up:
- ld c, 0
- up_startOuterLoop:
- lb b, 0
- up_StartInnerLoop:
- push bc
- inc b
- up_findNext:
- call getValue
- cp 0
- jrnz, up_foundNext
- inc b
- ld a, 3
- cp b
- jrc up_findNext
- pop bc
- jr up_endOuterLoop
- up_foundNext:
- ld d, a ; d = V1
- ld e, b ; e = Y1
- pop bc
- call getValue ; a = V
- cp 0
- jrnz, up_notZero
- ld a, d
- call setValue
- call zeroNext_Vertical
- ; push bc
- ; ld b, e
- ; inc b
- ; jr up_findNext
- jr up_startInnerLoop
- up_notZero:
- cp d
- jr up_endInnerLoop
- inc a
- call setValue
- call upBonus
- call zeroNext_Vertical
- up_endInnerLoop:
- inc b
- ld a, 2
- cp b
- jrnc, up_startInnerLoop
- up_endOuterLoop:
- inc c
- ld a, 3
- cp c
- jrnc, up_startOuterLoop
- ret
- progEnd:
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement