dos33fsprogs/demos/d2/d2.s

154 lines
2.2 KiB
ArmAsm
Raw Normal View History

2021-11-09 06:51:33 +00:00
; HGR Demo2
2021-11-05 04:23:34 +00:00
; by deater (Vince Weaver) <vince@deater.net>
; Zero Page
.include "zp.inc"
.include "hardware.inc"
2021-11-06 04:09:39 +00:00
d2:
2021-11-05 04:23:34 +00:00
;===================
2021-11-06 04:09:39 +00:00
; music Player Setup
2021-11-05 04:23:34 +00:00
lda #<peasant_song
sta SONG_L
lda #>peasant_song
sta SONG_H
; assume mockingboard in slot#4
jsr mockingboard_init
start_interrupts:
cli
2021-11-06 04:09:39 +00:00
;================================
; Clear screen and setup graphics
;================================
jsr HGR2 ; set hi-res 140x192, page2, fullscreen
; A and Y both 0 at end
sty FRAME ; start at 1 for wires purposes
;==================
; create sinetable
;ldy #0 ; Y is 0
sinetable_loop:
tya ; 2
and #$3f ; wrap sine at 63 entries ; 2
cmp #$20
php ; save pos/negative for later
and #$1f
cmp #$10
bcc sin_left ; blt
sin_right:
; sec carry should be set here
eor #$FF
adc #$20 ; 32-X
sin_left:
tax
lda sinetable_base,X ; 4+
plp
bcc sin_done
sin_negate:
; carry set here
eor #$ff
; adc #0 ; FIXME: this makes things off by 1
sin_done:
sta sinetable,Y
iny
bne sinetable_loop
; NOTE: making gbash/gbasl table wasn't worth it
2021-11-07 19:06:57 +00:00
jsr dsr_spin
2021-11-05 04:23:34 +00:00
forever:
2021-11-09 06:51:33 +00:00
jsr print_message
bit TEXTGR
2021-11-06 04:09:39 +00:00
jsr moving
2021-11-05 04:23:34 +00:00
2021-11-07 19:06:57 +00:00
jsr fast_hclr
2021-11-09 06:51:33 +00:00
2021-11-07 19:06:57 +00:00
jsr flip_page
2021-11-06 04:09:39 +00:00
jsr wires
2021-11-07 19:06:57 +00:00
jsr oval
2021-11-06 04:09:39 +00:00
jmp forever
2021-11-05 04:23:34 +00:00
2021-11-07 19:06:57 +00:00
flip_page:
ldy #$0
lda HGR_PAGE ; will be $20/$40
cmp #$20
beq done_flip_page
iny
done_flip_page:
ldx PAGE1,Y ; set display page to PAGE1 or PAGE2
eor #$60 ; flip draw page between $2000/$4000
sta HGR_PAGE
rts
2021-11-09 06:51:33 +00:00
;===================
; print message
;===================
print_message:
jsr clear_both_bottoms
ldx #35
print_message_loop:
lda message1,X
ora #$80
sta $650,X
sta $A50,X
lda message2,X
ora #$80
sta $6d0,X
sta $AD0,X
dex
bpl print_message_loop
rts
; 01234567890123456789012345678901234567890"
message1:
.byte "THE APPLE II HAS NO PALETTE ROTATION"
message2:
.byte "WE ARE DOING THIS THE HARD WAY... "
.byte "CODE: DEATER",0
.byte "MUSIC: MA2E",0
2021-11-07 19:06:57 +00:00
.include "dsr_shape.s"
2021-11-05 04:23:34 +00:00
.include "moving.s"
2021-11-06 04:09:39 +00:00
.include "wires.s"
.include "oval.s"
2021-11-09 06:51:33 +00:00
.include "clear_bottom.s"
2021-11-05 04:23:34 +00:00
; music
.include "peasant_music.s"
.include "interrupt_handler.s"
; must be last
.include "mockingboard_setup.s"