; ; first.s ; ; A refined version of the first piece of firmware that I wrote completely ; from scratch. ; ; Kekoa Proudfoot ; 10/29/98 ; .lsym clear_memory, 0x0436 .lsym init_buttons, 0x1aba .lsym set_lcd_segment, 0x1b62 .lsym clear_display, 0x27ac .lsym refresh_display, 0x27c8 .lsym init_power, 0x2964 .lsym play_power_sound, 0x299a .lsym get_on_off_key_state, 0x29f2 .lsym power_off, 0x2a62 .lsym set_firmware, 0x3b9a .lsym get_sound_queue_length, 0x3ccc .global _start _start: mov.w r0,@-r7 mov.w r1,@-r7 mov.w r2,@-r7 mov.w r3,@-r7 mov.w r4,@-r7 mov.w r5,@-r7 mov.w r6,@-r7 subs #0x2,r7 mov.w #0xc000,r0 mov.w #0xf000,r1 jsr clear_memory mov.w @0x0:16,r6 mov.w r6,@0xfd90:16 power_on: mov.w #0xc000,r6 mov.w r6,@-r7 mov.w #0xc006,r6 jsr set_firmware adds #0x2,r7 jsr init_power mov.w #0x3020,r6 jsr set_lcd_segment jsr refresh_display mov.w #0x1,r6 mov.w r6,@-r7 mov.w #0x4003,r6 jsr play_power_sound adds #0x2,r7 wait_release: mov.w r7,r6 mov.w r6,@-r7 mov.w #0x4000,r6 jsr get_on_off_key_state adds #0x2,r7 mov.w @r7,r6 beq wait_release wait_press: mov.w r7,r6 mov.w r6,@-r7 mov.w #0x4000,r6 jsr get_on_off_key_state adds #0x2,r7 mov.w @r7,r6 bne wait_press mov.w #0x0,r6 mov.w r6,@-r7 mov.w #0x4003,r6 jsr play_power_sound adds #0x2,r7 wait_sound: mov.w r7,r6 mov.w r6,@-r7 mov.w #0x700c,r6 jsr get_sound_queue_length adds #0x2,r7 mov.w @r7,r6 bne wait_sound jsr clear_display jsr refresh_display jsr power_off jmp power_on .string "Do you byte, when I knock?" .org 0x4000