; See the constellations, right across the sky ; No cigar no lady on his arm, just a guy made of dots and lines ; Power up, blinks switches yellow ; Change state, change button blinks ; animates to screen ; remembers light switch and date settings even when leave room ; day of month is 1-31 (even on months w/o 31 days) ; year 0-9999, leading 0 suppression ; time 1200AM - 1159PM, leading 0 suppression ; slider lights up when you adjust ; the actual constellation does seem to be based on a massive background, ; and a fore-shortened version appears on the panel when up ; but in original myst code? lower panel while light blinking (change) ; and come back, not blinking, but press button and nothing happens ; and light sticks on? draw_date: ;================= ; draw the bars startup_animate_smc: lda #0 beq done_startup dec startup_animate_smc+1 ; 0001 1111 cmp #31 bne animate2 animate1: lda #8 sta month_lit_smc+1 bne done_startup animate2: cmp #23 bne animate3 lda #8 sta date_lit_smc+1 bne done_startup animate3: cmp #15 bne animate4 lda #8 sta year_lit_smc+1 bne done_startup animate4: cmp #7 bne done_startup lda #8 sta time_lit_smc+1 done_startup: jsr draw_month_bar jsr draw_date_bar jsr draw_year_bar jsr draw_time_bar jsr draw_button jsr draw_stars ;================= ; month lda DENTIST_MONTH ; get month asl asl tay sty saved_month_ptr ; first letter lda months,Y ; look up in month table and #$3f ; get char from font asl tay lda big_font,Y sta INL lda big_font+1,Y sta INH lda #$0 sta XPOS lda #40 sta YPOS jsr put_sprite_raw ; second letter ldy saved_month_ptr lda months+1,Y ; look up in month table and #$3f ; get char from font asl tay lda big_font,Y sta INL lda big_font+1,Y sta INH lda #$4 sta XPOS lda #40 sta YPOS jsr put_sprite_raw ; third letter ldy saved_month_ptr lda months+2,Y ; look up in month table and #$3f ; get char from font asl tay lda big_font,Y sta INL lda big_font+1,Y sta INH lda #$8 sta XPOS lda #40 sta YPOS jsr put_sprite_raw ;================= ; day ; tens lda DENTIST_DAY ; note, starts with 0 so add 1 sed clc adc #1 cld lsr lsr lsr and #$1E beq skip_tens ; skip tens if zero tay lda big_font_num,Y sta INL lda big_font_num+1,Y sta INH lda #16 sta XPOS lda #40 sta YPOS jsr put_sprite_raw skip_tens: lda DENTIST_DAY ; note, starts with 0 so add 1 sed clc adc #1 cld and #$f asl tay lda big_font_num,Y sta INL lda big_font_num+1,Y sta INH lda #20 sta XPOS lda #40 sta YPOS jsr put_sprite_raw ;================= ; year lda #$ff ; draw in normal text sta ps_smc1+1 ldx #0 ; nonzero (for leading zero suppression) lda DENTIST_CENTURY lsr lsr lsr lsr and #$f bne century_top_not_zero lda #$a0 bne store_century_top century_top_not_zero: inx ora #$B0 store_century_top: sta year_string+2 lda DENTIST_CENTURY and #$f bne century_bottom_not_zero cpx #0 bne century_bottom_not_zero lda #$a0 bne store_century_bottom century_bottom_not_zero: inx ora #$B0 store_century_bottom: sta year_string+3 lda DENTIST_YEAR lsr lsr lsr lsr and #$f bne year_top_not_zero cpx #0 bne year_top_not_zero lda #$a0 bne store_year_top year_top_not_zero: ora #$B0 store_year_top: sta year_string+4 lda DENTIST_YEAR and #$f ora #$B0 sta year_string+5 lda #year_string sta OUTH jsr move_and_print ;================= ; time ;================= lda DENTIST_HOURS beq is_0dark30 cmp #$13 bcc update_hour sed sec sbc #$12 cld jmp update_hour is_0dark30: lda #$12 bne update_hour update_hour: sta TEMP lda TEMP lsr lsr lsr lsr and #$f bne hour_top_not_zero lda #$a0 bne store_hours_top hour_top_not_zero: ora #$B0 store_hours_top: sta time_string+2 lda TEMP and #$f ora #$B0 store_hours_bottom: sta time_string+3 lda DENTIST_MINUTES lsr lsr lsr lsr and #$f ora #$B0 store_minutes_top: sta time_string+4 lda DENTIST_MINUTES and #$f ora #$B0 sta time_string+5 ; calculate AM/PM ; AM if 0..11 lda DENTIST_HOURS cmp #$12 bcc time_am time_pm: lda #'P'+$80 jmp write_am_pm time_am: lda #'A'+$80 write_am_pm: sta time_string+6 lda #time_string sta OUTH jsr move_and_print lda #$3f ; restore to drawing inverse text sta ps_smc1+1 rts year_string: .byte 28,21,'0'+$80,'0'+$80,'0'+$80,'0'+$80,0 time_string: .byte 28,23,'1'+$80,'2'+$80,'0'+$80,'0'+$80,'A'+$80,'M'+$80,0 saved_month_ptr: .byte $00 months: .byte "JAN",0 .byte "FEB",0 .byte "MAR",0 .byte "APR",0 .byte "MAY",0 .byte "JUN",0 .byte "JUL",0 .byte "AUG",0 .byte "SEP",0 .byte "OCT",0 .byte "NOV",0 .byte "DEC",0 ; A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ; 5 1 2 1 3 1 1 3 1 2 3 2 2 2 1 1 3 1 1 big_font: .word big_font_space ; @ .word big_font_a ; A .word big_font_b ; B .word big_font_c ; C .word big_font_d ; D .word big_font_e ; E .word big_font_f ; F .word big_font_g ; G .word big_font_space ; H .word big_font_space ; I .word big_font_j ; J .word big_font_space ; K .word big_font_l ; L .word big_font_m ; M .word big_font_n ; N .word big_font_o ; O .word big_font_p ; P .word big_font_space ; Q .word big_font_r ; R .word big_font_s ; S .word big_font_t ; T .word big_font_u ; U .word big_font_v ; V .word big_font_space ; W .word big_font_space ; X .word big_font_y ; Y .word big_font_space ; Z big_font_space: .byte 3,4 .byte $a0,$a0,$a0 .byte $a0,$a0,$a0 .byte $a0,$a0,$a0 .byte $a0,$a0,$a0 big_font_a: .byte 3,4 .byte $a0,$DF,$a0 ; _ .byte $BA,$a0,$BA ; : : .byte $BA,$AD,$BA ; :-: .byte $BA,$a0,$BA ; : : big_font_b: .byte 3,4 .byte $a0,$DF,$DF ; __ .byte $BA,$a0,$AF ; : / .byte $BA,$AD,$a0 ; :- .byte $BA,$DF,$AF ; :_/ big_font_c: .byte 3,4 .byte $a0,$DF,$DF ; __ .byte $BA,$a0,$a0 ; : .byte $BA,$A0,$a0 ; : .byte $BA,$DF,$DF ; :__ big_font_d: .byte 3,4 .byte $a0,$DF,$a0 ; _ .byte $BA,$a0,$DC ; : \ .byte $BA,$a0,$BA ; : : .byte $BA,$DF,$AD ; :_/ big_font_e: .byte 3,4 .byte $a0,$DF,$DF ; __ .byte $BA,$a0,$a0 ; : .byte $BA,$AD,$a0 ; :- .byte $BA,$DF,$DF ; :__ big_font_f: .byte 3,4 .byte $a0,$DF,$DF ; __ .byte $BA,$a0,$a0 ; : .byte $BA,$AD,$a0 ; :- .byte $BA,$a0,$a0 ; : big_font_g: .byte 3,4 .byte $a0,$DF,$DF ; __ .byte $BA,$a0,$a0 ; : .byte $BA,$a0,$AD ; : - .byte $BA,$DF,$BA ; :_: big_font_j: .byte 3,4 .byte $a0,$a0,$a0 ; .byte $a0,$a0,$BA ; : .byte $a0,$a0,$BA ; : .byte $BA,$DF,$BA ; :_: big_font_l: .byte 3,4 .byte $a0,$a0,$a0 ; .byte $BA,$a0,$a0 ; : .byte $BA,$a0,$a0 ; : .byte $BA,$DF,$DF ; :__ big_font_m: .byte 3,4 .byte $a0,$a0,$a0 ; .byte $BA,$a0,$BA ; : : .byte $BA,$D6,$BA ; :V: .byte $BA,$a0,$BA ; : : big_font_n: .byte 3,4 .byte $a0,$a0,$a0 ; .byte $BA,$a0,$BA ; : : .byte $BA,$DC,$BA ; :\: .byte $BA,$a0,$BA ; : : big_font_o: .byte 3,4 .byte $a0,$DF,$a0 ; _ .byte $BA,$a0,$BA ; : : .byte $BA,$a0,$BA ; : : .byte $BA,$DF,$BA ; :_: big_font_p: .byte 3,4 .byte $a0,$DF,$a0 ; _ .byte $BA,$a0,$BA ; : : .byte $BA,$AD,$A7 ; :-' .byte $BA,$a0,$a0 ; : big_font_r: .byte 3,4 .byte $a0,$DF,$a0 ; _ .byte $BA,$a0,$BA ; : : .byte $BA,$AD,$A7 ; :-' .byte $BA,$DC,$a0 ; :\ big_font_s: .byte 3,4 .byte $a0,$DF,$DF ; __ .byte $BA,$a0,$a0 ; : .byte $a0,$AD,$a0 ; - .byte $DF,$DF,$BA ; __: big_font_t: .byte 3,4 .byte $DF,$DF,$DF ; ___ .byte $a0,$BA,$a0 ; : .byte $a0,$BA,$a0 ; : .byte $a0,$BA,$a0 ; : big_font_u: .byte 3,4 .byte $a0,$a0,$a0 ; .byte $BA,$a0,$BA ; : : .byte $BA,$a0,$BA ; : : .byte $BA,$DF,$BA ; :_: big_font_v: .byte 3,4 .byte $a0,$a0,$a0 ; .byte $BA,$a0,$BA ; : : .byte $BA,$a0,$AF ; : / .byte $BA,$AF,$a0 ; :/ big_font_y: .byte 3,4 .byte $a0,$a0,$a0 ; .byte $BA,$a0,$BA ; : : .byte $A7,$AE,$A7 ; '.' .byte $a0,$BA,$a0 ; : big_font_num: .word big_font_0 ; 0 .word big_font_1 ; 1 .word big_font_2 ; 2 .word big_font_3 ; 3 .word big_font_4 ; 4 .word big_font_5 ; 5 .word big_font_6 ; 6 .word big_font_7 ; 7 .word big_font_8 ; 8 .word big_font_9 ; 9 big_font_0: .byte 3,4 .byte $a0,$DF,$a0 ; _ .byte $BA,$a0,$BA ; : : .byte $BA,$a0,$BA ; : : .byte $BA,$DF,$BA ; :_: big_font_1: .byte 3,4 .byte $a0,$a0,$a0 ; .byte $a0,$a0,$BA ; : .byte $a0,$a0,$BA ; : .byte $a0,$a0,$BA ; : big_font_2: .byte 3,4 .byte $a0,$DF,$a0 ; _ .byte $a0,$a0,$BA ; : .byte $a0,$AD,$a0 ; - .byte $BA,$DF,$DF ; :__ big_font_3: .byte 3,4 .byte $a0,$DF,$a0 ; _ .byte $a0,$a0,$BA ; : .byte $a0,$AD,$BA ; -: .byte $a0,$DF,$BA ; _: big_font_4: .byte 3,4 .byte $a0,$a0,$a0 ; .byte $BA,$a0,$BA ; : : .byte $A7,$AD,$BA ; '-: .byte $A0,$A0,$BA ; : big_font_5: .byte 3,4 .byte $a0,$DF,$DF ; __ .byte $BA,$a0,$a0 ; : .byte $a0,$AD,$a0 ; - .byte $DF,$DF,$BA ; __: big_font_6: .byte 3,4 .byte $a0,$DF,$DF ; __ .byte $BA,$a0,$a0 ; : .byte $BA,$AD,$AE ; :-. .byte $BA,$DF,$BA ; :_: big_font_7: .byte 3,4 .byte $DF,$DF,$a0 ; __ .byte $a0,$a0,$BA ; : .byte $a0,$a0,$BA ; : .byte $a0,$a0,$BA ; : big_font_8: .byte 3,4 .byte $a0,$DF,$a0 ; _ .byte $BA,$a0,$BA ; : : .byte $BA,$AD,$BA ; :-: .byte $BA,$DF,$BA ; :_: big_font_9: .byte 3,4 .byte $a0,$DF,$a0 ; _ .byte $BA,$a0,$BA ; : : .byte $A7,$AD,$BA ; '-: .byte $a0,$DF,$BA ; _: ; 012345678901234567890 ; _ ; : : : : : ; : :-: :\: ;:_: : : : : ; __ _ __ ;: : : / ;:-- :- :- ;: :_ :_/ ; _ _ ;: : : : : : ;:V: :-: :_/ ;: : : : : \ ; 1 2 3 ;012345678901234567890123456789013456789 ; _ __ ___ __ __ ;: : : : : : 1984 ;: : : : -- -- ;:_: :__ : . :__ :__ 10 04 AM ; _ _ __ _ _ ; | | | : : : | | | | | | | ; | | | : : : | -| |-| |_| ; - - : . : : | _| |_| | ; sliders ; 8 -> 25 (18) ; if 16 ; 24*60=1440 ; 0*12/8 = 0 0*31/8=0 0*9999/8=0 0 ; 1*12/8 = 1.5 1*31/8=3.9 1250 180 3:00 ; 2*12/8 = 3 2*31/8=7.8 2500 360 6:00 ; 3*12/8 = 4.5 11.6 3750 540 9:00 ; 4*12/8 = 6 15.5 5000 720 12:00 ; 5*12/8 = 7.5 19.4 6250 900 15:00 ; 6*12/8 = 9 23.25 7500 1080 18:00 ; 7*12/8 = 10.5 27.12 8750 1260 21:00 ; 8*12/8 = 12 31 9999 1440 24:00 month_limits: .byte 0,1,3,4,6,7,9,10,11 date_limits: .byte $00,$04,$08,$12,$16,$20,$24,$28,$30 century_limits: ; 21 is wrong .byte $00,$12,$21,$37,$50,$62,$75,$87,$99 ; makes scroll to 1984 hour_limits: ; faster .byte $00,$03,$06,$09,$12,$15,$18,$21,$23 arbitrary: ;=============================== ;=============================== ; draw the slider bars ;=============================== ;=============================== draw_month_bar: lda DENTIST_MONTH ldx #0 find_month_yval: cmp month_limits,X beq found_month_yval bcc found_month_yval inx cpx #8 bne find_month_yval found_month_yval: lda #22 month_lit_smc: ldy #0 beq draw_bar dec month_lit_smc+1 jmp draw_lit_bar draw_date_bar: lda DENTIST_DAY ldx #0 find_date_yval: cmp date_limits,X beq found_date_yval bcc found_date_yval inx cpx #8 bne find_date_yval found_date_yval: lda #26 date_lit_smc: ldy #0 beq draw_bar dec date_lit_smc+1 jmp draw_lit_bar draw_year_bar: lda DENTIST_CENTURY ldx #0 find_year_yval: cmp century_limits,X beq found_year_yval bcc found_year_yval inx cpx #8 bne find_year_yval found_year_yval: lda #30 year_lit_smc: ldy #0 beq draw_bar dec year_lit_smc+1 jmp draw_lit_bar draw_time_bar: lda DENTIST_HOURS ldx #0 find_time_yval: cmp hour_limits,X beq found_time_yval bcc found_time_yval inx cpx #8 bne find_time_yval found_time_yval: lda #34 time_lit_smc: ldy #0 beq draw_bar dec time_lit_smc+1 jmp draw_lit_bar draw_bar: sta XPOS txa asl clc adc #8 sta YPOS lda #panel_bar_sprite sta INH jsr put_sprite_crop rts draw_lit_bar: sta XPOS txa asl clc adc #8 sta YPOS lda #panel_bar_lit_sprite sta INH jsr put_sprite_crop rts ;============================== ;============================== ; draw the button ;============================== ;============================== draw_button: button_smc: lda #0 beq done_button lda FRAMEL and #$20 beq done_button lda #button_on_sprite sta INH lda #20 sta XPOS lda #16 sta YPOS jsr put_sprite_crop done_button: rts panel_bar_sprite: .byte 3,1 .byte $00,$00,$00 panel_bar_lit_sprite: .byte 3,1 .byte $00,$dd,$00 button_on_sprite: .byte 1,1 .byte $dd ;======================== ;======================== ; button pressed ;======================== ;======================== panel_button: lda CURSOR_Y cmp #12 bcc done_panel_button cmp #24 bcs done_panel_button lda #32 sta ANIMATE_FRAME lda #0 sta button_smc+1 lda DENTIST_MONTH sta saved_month lda DENTIST_DAY sta saved_day lda DENTIST_CENTURY sta saved_century lda DENTIST_YEAR sta saved_year lda DENTIST_HOURS sta saved_hour lda DENTIST_MINUTES sta saved_minutes done_panel_button: rts ;=========================== ;=========================== ; panel pressed ;=========================== ;=========================== panel_pressed: lda CURSOR_X cmp #32 bcs panel_time cmp #28 bcs panel_year cmp #24 bcs panel_day cmp #20 bcs panel_month bcc panel_button panel_month: lda #5 sta month_lit_smc+1 lda CURSOR_Y check_month_dec: cmp #8 bcs check_month_inc jmp dec_dentist_month check_month_inc: cmp #26 bcc check_month_bar jmp inc_dentist_month check_month_bar: sec sbc #8 lsr tax lda month_limits,X sta DENTIST_MONTH jmp done_pressed_changed panel_day: lda #5 sta date_lit_smc+1 lda CURSOR_Y check_day_dec: cmp #8 bcs check_day_inc jmp dec_dentist_day check_day_inc: cmp #26 bcc check_day_bar jmp inc_dentist_day check_day_bar: sec sbc #8 lsr tax lda date_limits,X sta DENTIST_DAY jmp done_pressed_changed panel_year: lda #5 sta year_lit_smc+1 lda CURSOR_Y check_year_dec: cmp #8 bcs check_year_inc jmp dec_dentist_year check_year_inc: cmp #26 bcc check_year_bar jmp inc_dentist_year check_year_bar: sec sbc #8 lsr tax lda century_limits,X sta DENTIST_CENTURY lda #0 sta DENTIST_YEAR jmp done_pressed_changed panel_time: lda #5 sta time_lit_smc+1 lda CURSOR_Y cmp #8 bcc dec_dentist_time cmp #26 bcs inc_dentist_time check_time_bar: sec sbc #8 lsr tax lda hour_limits,X sta DENTIST_HOURS lda #0 sta DENTIST_MINUTES jmp done_pressed_changed rts inc_dentist_time: lda DENTIST_HOURS cmp #$23 bne actually_inc_time lda DENTIST_MINUTES cmp #$59 beq done_pressed2 actually_inc_time: sed clc lda DENTIST_MINUTES adc #1 sta DENTIST_MINUTES cmp #$60 bne done_pressed2 lda #$00 sta DENTIST_MINUTES clc lda DENTIST_HOURS adc #1 sta DENTIST_HOURS jmp done_pressed_changed dec_dentist_time: lda DENTIST_HOURS bne actually_dec_time lda DENTIST_MINUTES beq done_pressed2 actually_dec_time: sed sec lda DENTIST_MINUTES sbc #1 sta DENTIST_MINUTES cmp #$99 bne done_pressed2 lda #$59 sta DENTIST_MINUTES lda DENTIST_HOURS sec sbc #1 sta DENTIST_HOURS jmp done_pressed_changed done_pressed2: cld rts inc_dentist_year: lda DENTIST_CENTURY cmp #$99 bne actually_inc_year lda DENTIST_YEAR cmp #$99 beq done_pressed actually_inc_year: sed clc lda DENTIST_YEAR adc #1 sta DENTIST_YEAR lda DENTIST_CENTURY adc #0 sta DENTIST_CENTURY jmp done_pressed_changed dec_dentist_year: lda DENTIST_CENTURY bne actually_dec_year lda DENTIST_YEAR beq done_pressed actually_dec_year: sed sec lda DENTIST_YEAR sbc #1 sta DENTIST_YEAR lda DENTIST_CENTURY sbc #0 sta DENTIST_CENTURY jmp done_pressed_changed inc_dentist_month: lda DENTIST_MONTH cmp #11 beq done_pressed inc DENTIST_MONTH jmp done_pressed_changed dec_dentist_month: lda DENTIST_MONTH cmp #0 beq done_pressed dec DENTIST_MONTH jmp done_pressed_changed inc_dentist_day: lda DENTIST_DAY cmp #$30 beq done_pressed sed clc adc #1 sta DENTIST_DAY jmp done_pressed_changed dec_dentist_day: lda DENTIST_DAY cmp #0 beq done_pressed sed sec sbc #1 sta DENTIST_DAY jmp done_pressed_changed done_pressed: cld rts done_pressed_changed: cld lda #1 sta button_smc+1 rts ;=========================== ;=========================== ; draw stars ;=========================== ;=========================== draw_stars: lda DENTIST_LIGHT bne stars_lights_off ; if lights on lda #6 sta XPOS lda #6 sta YPOS lda #lights_on_sprite sta INH jmp put_sprite_crop stars_lights_off: lda ANIMATE_FRAME beq regular_stars dec ANIMATE_FRAME tay ; plot 1st lda #$0f sta plot_color+1 lda saved_year,Y eor arbitrary,Y tax ldy saved_minutes jsr special_plot_point ; plot 2nd ldy ANIMATE_FRAME lda #$ff sta plot_color+1 lda saved_month,Y eor arbitrary,Y tax lda saved_hour,Y sbc arbitrary,Y tay jsr special_plot_point ; plot 3rd ldy ANIMATE_FRAME lda #$f0 sta plot_color+1 lda saved_hour,Y adc arbitrary,Y tax lda saved_year,Y sbc arbitrary,Y tay jsr special_plot_point ; plot 4th ldy ANIMATE_FRAME lda #$50 sta plot_color+1 lda saved_minutes,Y eor arbitrary,Y tax lda saved_year,Y adc arbitrary,Y tay jsr special_plot_point rts regular_stars: lda saved_month cmp #9 ; OCTOBER beq draw_leaf cmp #0 beq draw_snake cmp #10 beq draw_bug bne not_special ; OCT 11 1984 10:04AM (leaf) draw_leaf: lda saved_day cmp #$10 bne not_special lda saved_century cmp #$19 bne not_special lda saved_hour cmp #$10 bne not_special lda #7 sta XPOS lda #8 sta YPOS lda #october_sprite sta INH jmp put_sprite_crop ; JAN 17 1207 5:46AM (snake) draw_snake: lda saved_day cmp #$16 bne not_special lda saved_century cmp #$12 bne not_special lda saved_hour cmp #$5 bne not_special lda #7 sta XPOS lda #8 sta YPOS lda #january_sprite sta INH jmp put_sprite_crop ; NOV 23 9791 6:57PM (bug) draw_bug: lda saved_day cmp #$22 bne not_special lda saved_century cmp #$97 bne not_special lda saved_hour cmp #$18 bne not_special lda #7 sta XPOS lda #8 sta YPOS lda #november_sprite sta INH jmp put_sprite_crop not_special: ; plot 4 stars, somewhat randomly based on settings ; plot 1st lda #$0f sta plot_color+1 lda saved_year eor saved_month tax ldy saved_minutes jsr special_plot_point ; plot 2nd lda #$ff sta plot_color+1 lda saved_month eor saved_year tax lda saved_hour sbc saved_minutes tay jsr special_plot_point ; plot 3rd lda #$f0 sta plot_color+1 lda saved_hour adc saved_minutes tax lda saved_year sbc saved_day tay jsr special_plot_point ; plot 4th lda #$50 sta plot_color+1 lda saved_minutes eor saved_day tax lda saved_year adc saved_day tay jsr special_plot_point rts special_plot_point: txa and #$7 clc adc #$7 sta CH tya and #$7 clc adc #$4 sta CV jmp plot_point saved_month: .byte $00 saved_day: .byte $00 saved_century: .byte $00 saved_year: .byte $00 saved_hour: .byte $00 saved_minutes: .byte $00 ; constellations ; 6x6 lights_on_sprite: .byte 9,10 .byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff .byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff .byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff .byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff .byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff .byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff .byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff .byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff .byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff .byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff ; OCT 11 1984 10:04AM (leaf) october_sprite: .byte 7,7 .byte $00,$00,$00,$00,$00,$f0,$00 .byte $00,$f0,$00,$00,$00,$0f,$00 .byte $00,$0f,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00 .byte $00,$f0,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$ff .byte $f0,$0f,$00,$0f,$00,$00,$00 ; JAN 17 1207 5:46AM (snake) january_sprite: .byte 7,7 .byte $00,$0f,$00,$00,$00,$ff,$00 .byte $00,$ff,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$0f .byte $00,$00,$00,$f0,$00,$00,$0f .byte $00,$00,$ff,$00,$00,$00,$00 ; NOV 23 9791 6:57PM (bug) november_sprite: .byte 7,7 .byte $f0,$00,$00,$ff,$00,$00,$f0 .byte $00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$ff,$00,$00,$0f,$00 .byte $00,$00,$00,$00,$00,$00,$00 .byte $00,$f0,$00,$00,$00,$f0,$00 .byte $00,$00,$00,$00,$00,$0f,$00 .byte $00,$00,$00,$0f,$00,$00,$00 ; turn on double high point at CH,CV plot_point: lda CV ; y asl tax lda gr_offsets,X sta OUTL lda gr_offsets+1,X clc adc DRAW_PAGE sta OUTH lda CH ; x tay plot_color: lda #$77 sta (OUTL),Y rts