
;------------------------------------------------------;
; music player (new) - super mario bros. (1) overworld ;
;------------------------------------------------------;

h_total      equ  8 + 64 + 6
h_sync       equ  8
v_total      equ  3 + 20 + 2
v_sync       equ  1

screen_start  equ  $e1d0+78
screen_total  equ  h_total*v_total-1

spacedrow   equ  0
underline   equ  10
rowlines    equ  10
offsetline  equ  1
spacedatr   equ  1
cursormod   equ  1

crt_prm_port  equ  $ef00
crt_cmd_port  equ  $ef01
crt_reset     equ  $00
crt_start     equ  $27
crt_cursor    equ  $80
crt_preset    equ  $e0
crt_ir_flag   equ  $20

dma_adr2_port  equ  $f004
dma_cnt2_port  equ  $f005
dma_adr3_port  equ  $f006
dma_cnt3_port  equ  $f007
dma_mode_port  equ  $f008
dma_reset      equ  $80
dma_start      equ  $a4

pit_cnt1_port  equ  $ec00
pit_cnt2_port  equ  $ec01
pit_cnt3_port  equ  $ec02
pit_ctrl_port  equ  $ec03
pit_init1      equ  $3e
pit_init2      equ  $7e
pit_init3      equ  $be

key_tape_port  equ  $ed02

print_text     equ  $f818
display_reset  equ  $f82d
command_line   equ  $f875

;------------------------------------

begin:

  lxi  h, text
  call print_text
  pchl

text:
db 10,13,'SUPER MARIO BROS - OVERWORLD THEME (60 HZ)',10,13,10,13,0


  lxi  h, crt_cmd_port
  mov  a, m
  mvi  m, crt_reset
  dcr  l
  mvi  m, spacedrow*128 + h_total-1
  mvi  m, (v_sync-1)*64 + v_total-1
  mvi  m, (underline-1)*16 + rowlines-1
  mvi  m, offsetline*128 + spacedatr*64 + cursormod*16 + h_sync/2-1
  inr  l
  mvi  m, crt_start
  mov  a, m
  ani  crt_ir_flag
  jz   .-3

  lxi  h, dma_mode_port
  mvi  m, dma_reset
  mvi  l, 4
  mvi  m, screen_start & $ff
  mvi  m, screen_start >> 8
  inr  l
  mvi  m, screen_total & $ff
  mvi  m, $4000 + screen_total >> 8
  mvi  l, 8
  mvi  m, dma_start

  lxi  h, sound_data  ;
  shld data_pointer   ;
  mvi  a, 30          ;
  sta  wait_counter   ;


vsync:

  lda  crt_cmd_port
  ani  crt_ir_flag
  jz   vsync

  lxi  h, wait_counter
  dcr  m
  jnz  vsync


read_command:

  call get_next_data

  ora  a               ;
  jnz  off_1           ;
  lxi  h, repeat_point ;
  shld data_pointer
  jmp  read_command


off_1:

  lxi  h, pit_ctrl_port

  rlc
  jnc  off_2
  mvi  m, pit_init1


off_2:

  rlc
  jnc  off_3
  mvi  m, pit_init2


off_3:

  rlc
  jnc  set_1
  mvi  m, pit_init3


set_1:

  rlc
  mov  b, a
  jnc  set_2
  lxi  d, note_table_1
  call get_table_value
  lxi  d, pit_cnt1_port
  call set_channel_value


set_2:

  mov  a, b
  rlc
  mov  b, a
  jnc  set_3
  lxi  d, note_table_2
  call get_table_value
  lxi  d, pit_cnt2_port
  call set_channel_value


set_3:

  mov  a, b
  rlc
  jnc  set_timer
  lxi  d, note_table_3
  call get_table_value
  lxi  d, pit_cnt3_port
  call set_channel_value


set_timer:
  
  call get_next_data
  sta  wait_counter


chek_key:

  lda  key_tape_port
  rlc
  rlc
  jnc  end_program
  rlc
  jc   vsync  
  

end_program:
  
  lxi  h, pit_ctrl_port
  mvi  m, pit_init1
  mvi  m, pit_init2
  mvi  m, pit_init3
  call display_reset
  jmp  command_line


set_channel_value:
  
  mov  a, m
  stax d
  inx  h
  mov  a, m
  stax d
  ret
  

get_table_value:

  call get_next_data
  mov  l, a
  mvi  h, 0
  dad  h
  dad  d
  ret


get_next_data:

  lhld data_pointer
  mov  a, m           
  inx  h              
  shld data_pointer
  ret

;---------------------------

note_table_1:
dw 9087, 6811, 6430, 6070, 5409, 5107, 4821, 4551, 4297, 4057, 3830, 3616, 3414, 3043, 2873, 2713, 2561, 

note_table_2:
dw 5409, 4551, 4297, 4057, 3830, 3616, 3414, 3043, 2873, 2713, 2561, 2419, 2284, 2020, 1715, 

note_table_3:
dw 18173, 17155, 13622, 12140, 11460, 10819, 10213, 9642, 9103, 8593, 8113, 7660, 7232, 6827, 6086, 5425, 5123, 4567, 2300, 

sound_data:
db 4, 3, 1, 24, 6, 9, 7, 224, 1, 4, 3, 1, 24, 6, 9, 7, 224, 10, 4, 3, 1, 24, 6, 9, 7, 224, 10, 4, 3, 1, 24, 6, 6, 7, 224, 1, 4, 3, 1, 24, 6, 9, 7, 224, 10, 4, 17, 1, 24, 11, 12, 7, 224, 28, 4, 8, 1, 16, 7, 7, 160, 28, 
repeat_point:
db 4, 8, 1, 24, 4, 6, 7, 224, 19, 4, 5, 1, 24, 1, 1, 7, 224, 19, 4, 2, 1, 24, 0, 0, 7, 224, 19, 4, 6, 1, 24, 1, 3, 7, 224, 10, 4, 8, 1, 24, 3, 5, 7, 224, 10, 4, 7, 1, 24, 2, 4, 7, 224, 1, 4, 6, 1, 24, 1, 3, 7, 224, 10, 4, 5, 1, 24, 1, 1, 7, 224, 4, 4, 13, 1, 24, 7, 9, 7, 224, 4, 4, 15, 1, 24, 11, 12, 7, 224, 4, 4, 16, 1, 24, 12, 13, 7, 224, 10, 4, 14, 1, 24, 9, 10, 7, 224, 1, 4, 15, 1, 24, 11, 12, 7, 224, 10, 4, 13, 1, 24, 9, 9, 7, 224, 10, 4, 10, 1, 24, 4, 6, 7, 224, 1, 4, 12, 1, 24, 5, 7, 7, 224, 1, 4, 8, 1, 24, 3, 5, 7, 224, 19, 4, 8, 1, 24, 4, 6, 7, 224, 19, 4, 5, 1, 24, 1, 1, 7, 224, 19, 4, 2, 1, 24, 0, 0, 7, 224, 19, 4, 6, 1, 24, 1, 3, 7, 224, 10, 4, 8, 1, 24, 3, 5, 7, 224, 10, 4, 7, 1, 24, 2, 4, 7, 224, 1, 4, 6, 1, 24, 1, 3, 7, 224, 10, 4, 5, 1, 24, 1, 1, 7, 224, 4, 4, 13, 1, 24, 7, 9, 7, 224, 4, 4, 15, 1, 24, 11, 12, 7, 224, 4, 4, 16, 1, 24, 12, 13, 7, 224, 10, 4, 14, 1, 24, 9, 10, 7, 224, 1, 4, 15, 1, 24, 11, 12, 7, 224, 10, 4, 13, 1, 24, 9, 9, 7, 224, 10, 4, 10, 1, 24, 4, 6, 7, 224, 1, 4, 12, 1, 24, 5, 7, 7, 224, 1, 4, 8, 1, 24, 3, 5, 7, 224, 19, 4, 2, 8, 32, 11, 24, 15, 12, 7, 192, 1, 4, 8, 1, 24, 14, 11, 7, 224, 2, 24, 13, 10, 7, 192, 2, 24, 11, 8, 7, 192, 1, 4, 13, 8, 32, 2, 24, 12, 9, 7, 192, 1, 4, 6, 8, 32, 2, 24, 4, 2, 7, 192, 2, 24, 5, 3, 7, 192, 1, 4, 13, 1, 24, 7, 6, 7, 224, 1, 4, 13, 8, 32, 2, 24, 1, 3, 7, 192, 1, 4, 6, 1, 24, 4, 6, 7, 224, 2, 24, 5, 7, 7, 192, 1, 4, 2, 8, 32, 11, 24, 15, 12, 7, 192, 1, 4, 5, 1, 24, 14, 11, 7, 224, 2, 24, 13, 10, 7, 192, 2, 24, 11, 8, 7, 192, 1, 4, 8, 8, 32, 1, 4, 13, 1, 24, 12, 9, 7, 224, 10, 4, 18, 1, 24, 16, 14, 7, 224, 10, 4, 18, 1, 24, 16, 14, 7, 224, 1, 4, 18, 1, 24, 16, 14, 7, 224, 10, 4, 8, 8, 32, 10, 4, 2, 8, 32, 11, 24, 15, 12, 7, 192, 1, 4, 8, 1, 24, 14, 11, 7, 224, 2, 24, 13, 10, 7, 192, 2, 24, 11, 8, 7, 192, 1, 4, 13, 8, 32, 2, 24, 12, 9, 7, 192, 1, 4, 6, 8, 32, 2, 24, 4, 2, 7, 192, 2, 24, 5, 3, 7, 192, 1, 4, 13, 1, 24, 7, 6, 7, 224, 1, 4, 13, 8, 32, 2, 24, 1, 3, 7, 192, 1, 4, 6, 1, 24, 4, 6, 7, 224, 2, 24, 5, 7, 7, 192, 1, 4, 2, 8, 32, 10, 4, 9, 1, 24, 8, 8, 7, 224, 19, 4, 11, 1, 24, 5, 7, 7, 224, 19, 4, 13, 1, 24, 4, 6, 7, 224, 19, 4, 8, 8, 32, 1, 4, 8, 8, 32, 10, 4, 2, 8, 32, 10, 4, 2, 8, 32, 11, 24, 15, 12, 7, 192, 1, 4, 8, 1, 24, 14, 11, 7, 224, 2, 24, 13, 10, 7, 192, 2, 24, 11, 8, 7, 192, 1, 4, 13, 8, 32, 2, 24, 12, 9, 7, 192, 1, 4, 6, 8, 32, 2, 24, 4, 2, 7, 192, 2, 24, 5, 3, 7, 192, 1, 4, 13, 1, 24, 7, 6, 7, 224, 1, 4, 13, 8, 32, 2, 24, 1, 3, 7, 192, 1, 4, 6, 1, 24, 4, 6, 7, 224, 2, 24, 5, 7, 7, 192, 1, 4, 2, 8, 32, 11, 24, 15, 12, 7, 192, 1, 4, 5, 1, 24, 14, 11, 7, 224, 2, 24, 13, 10, 7, 192, 2, 24, 11, 8, 7, 192, 1, 4, 8, 8, 32, 1, 4, 13, 1, 24, 12, 9, 7, 224, 10, 4, 18, 1, 24, 16, 14, 7, 224, 10, 4, 18, 1, 24, 16, 14, 7, 224, 1, 4, 18, 1, 24, 16, 14, 7, 224, 10, 4, 8, 8, 32, 10, 4, 2, 8, 32, 11, 24, 15, 12, 7, 192, 1, 4, 8, 1, 24, 14, 11, 7, 224, 2, 24, 13, 10, 7, 192, 2, 24, 11, 8, 7, 192, 1, 4, 13, 8, 32, 2, 24, 12, 9, 7, 192, 1, 4, 6, 8, 32, 2, 24, 4, 2, 7, 192, 2, 24, 5, 3, 7, 192, 1, 4, 13, 1, 24, 7, 6, 7, 224, 1, 4, 13, 8, 32, 2, 24, 1, 3, 7, 192, 1, 4, 6, 1, 24, 4, 6, 7, 224, 2, 24, 5, 7, 7, 192, 1, 4, 2, 8, 32, 10, 4, 9, 1, 24, 8, 8, 7, 224, 19, 4, 11, 1, 24, 5, 7, 7, 224, 19, 4, 13, 1, 24, 4, 6, 7, 224, 19, 4, 8, 8, 32, 1, 4, 8, 8, 32, 10, 4, 2, 8, 32, 10, 4, 1, 1, 24, 8, 6, 7, 224, 2, 24, 8, 6, 7, 192, 10, 4, 4, 1, 24, 8, 6, 7, 224, 11, 24, 8, 6, 7, 192, 1, 4, 9, 1, 24, 10, 7, 7, 224, 10, 4, 8, 1, 24, 7, 9, 7, 224, 2, 24, 4, 6, 7, 192, 10, 4, 2, 1, 24, 4, 3, 7, 224, 2, 24, 1, 1, 7, 192, 10, 4, 0, 8, 32, 10, 4, 1, 1, 24, 8, 6, 7, 224, 2, 24, 8, 6, 7, 192, 10, 4, 4, 1, 24, 8, 6, 7, 224, 11, 24, 8, 6, 7, 192, 1, 4, 9, 1, 24, 10, 7, 7, 224, 2, 24, 7, 9, 7, 192, 1, 4, 8, 8, 32, 19, 4, 2, 8, 32, 19, 4, 0, 8, 32, 10, 4, 1, 1, 24, 8, 6, 7, 224, 2, 24, 8, 6, 7, 192, 10, 4, 4, 1, 24, 8, 6, 7, 224, 11, 24, 8, 6, 7, 192, 1, 4, 9, 1, 24, 10, 7, 7, 224, 10, 4, 8, 1, 24, 7, 9, 7, 224, 2, 24, 4, 6, 7, 192, 10, 4, 2, 1, 24, 4, 3, 7, 224, 2, 24, 1, 1, 7, 192, 10, 4, 0, 8, 32, 10, 4, 3, 1, 24, 6, 9, 7, 224, 1, 4, 3, 1, 24, 6, 9, 7, 224, 10, 4, 3, 1, 24, 6, 9, 7, 224, 10, 4, 3, 1, 24, 6, 6, 7, 224, 1, 4, 3, 1, 24, 6, 9, 7, 224, 10, 4, 17, 1, 24, 11, 12, 7, 224, 28, 4, 8, 1, 16, 7, 7, 160, 28, 4, 8, 1, 24, 4, 6, 7, 224, 19, 4, 5, 1, 24, 1, 1, 7, 224, 19, 4, 2, 1, 24, 0, 0, 7, 224, 19, 4, 6, 1, 24, 1, 3, 7, 224, 10, 4, 8, 1, 24, 3, 5, 7, 224, 10, 4, 7, 1, 24, 2, 4, 7, 224, 1, 4, 6, 1, 24, 1, 3, 7, 224, 10, 4, 5, 1, 24, 1, 1, 7, 224, 4, 4, 13, 1, 24, 7, 9, 7, 224, 4, 4, 15, 1, 24, 11, 12, 7, 224, 4, 4, 16, 1, 24, 12, 13, 7, 224, 10, 4, 14, 1, 24, 9, 10, 7, 224, 1, 4, 15, 1, 24, 11, 12, 7, 224, 10, 4, 13, 1, 24, 9, 9, 7, 224, 10, 4, 10, 1, 24, 4, 6, 7, 224, 1, 4, 12, 1, 24, 5, 7, 7, 224, 1, 4, 8, 1, 24, 3, 5, 7, 224, 19, 4, 8, 1, 24, 4, 6, 7, 224, 19, 4, 5, 1, 24, 1, 1, 7, 224, 19, 4, 2, 1, 24, 0, 0, 7, 224, 19, 4, 6, 1, 24, 1, 3, 7, 224, 10, 4, 8, 1, 24, 3, 5, 7, 224, 10, 4, 7, 1, 24, 2, 4, 7, 224, 1, 4, 6, 1, 24, 1, 3, 7, 224, 10, 4, 5, 1, 24, 1, 1, 7, 224, 4, 4, 13, 1, 24, 7, 9, 7, 224, 4, 4, 15, 1, 24, 11, 12, 7, 224, 4, 4, 16, 1, 24, 12, 13, 7, 224, 10, 4, 14, 1, 24, 9, 10, 7, 224, 1, 4, 15, 1, 24, 11, 12, 7, 224, 10, 4, 13, 1, 24, 9, 9, 7, 224, 10, 4, 10, 1, 24, 4, 6, 7, 224, 1, 4, 12, 1, 24, 5, 7, 7, 224, 1, 4, 8, 1, 24, 3, 5, 7, 224, 19, 4, 2, 1, 24, 12, 9, 7, 224, 2, 24, 9, 6, 7, 192, 10, 4, 7, 1, 24, 4, 1, 7, 224, 1, 4, 8, 8, 32, 10, 4, 13, 1, 24, 4, 2, 7, 224, 10, 4, 6, 1, 24, 5, 3, 7, 224, 2, 24, 12, 10, 7, 192, 1, 4, 6, 8, 32, 2, 24, 12, 10, 7, 192, 1, 4, 13, 1, 24, 5, 3, 7, 224, 1, 4, 13, 8, 32, 1, 4, 6, 8, 32, 10, 4, 3, 1, 24, 7, 5, 7, 224, 5, 24, 16, 13, 7, 192, 5, 24, 16, 13, 2, 4, 6, 5, 192, 3, 32, 1, 4, 8, 1, 24, 16, 13, 7, 224, 5, 24, 15, 12, 5, 4, 12, 2, 192, 5, 24, 13, 10, 1, 32, 6, 192, 4, 4, 8, 1, 24, 12, 9, 7, 224, 2, 24, 9, 6, 7, 192, 1, 4, 8, 8, 32, 2, 24, 5, 3, 7, 192, 1, 4, 13, 1, 24, 4, 1, 7, 224, 1, 4, 13, 8, 32, 1, 4, 8, 8, 32, 10, 4, 2, 1, 24, 12, 9, 7, 224, 2, 24, 9, 6, 7, 192, 10, 4, 7, 1, 24, 4, 1, 7, 224, 1, 4, 8, 8, 32, 10, 4, 13, 1, 24, 4, 2, 7, 224, 10, 4, 6, 1, 24, 5, 3, 7, 224, 2, 24, 12, 10, 7, 192, 1, 4, 6, 8, 32, 2, 24, 12, 10, 7, 192, 1, 4, 13, 1, 24, 5, 3, 7, 224, 1, 4, 13, 8, 32, 1, 4, 6, 8, 32, 10, 4, 8, 1, 24, 7, 5, 7, 224, 2, 24, 13, 10, 7, 192, 10, 4, 8, 1, 24, 13, 10, 7, 224, 1, 4, 8, 1, 24, 13, 10, 7, 224, 4, 4, 10, 1, 24, 12, 9, 7, 224, 4, 4, 12, 1, 24, 11, 7, 7, 224, 4, 4, 13, 1, 24, 7, 6, 7, 224, 2, 16, 4, 7, 128, 1, 4, 8, 8, 32, 2, 16, 4, 7, 128, 1, 4, 2, 1, 16, 1, 7, 160, 28, 4, 2, 1, 24, 12, 9, 7, 224, 2, 24, 9, 6, 7, 192, 10, 4, 7, 1, 24, 4, 1, 7, 224, 1, 4, 8, 8, 32, 10, 4, 13, 1, 24, 4, 2, 7, 224, 10, 4, 6, 1, 24, 5, 3, 7, 224, 2, 24, 12, 10, 7, 192, 1, 4, 6, 8, 32, 2, 24, 12, 10, 7, 192, 1, 4, 13, 1, 24, 5, 3, 7, 224, 1, 4, 13, 8, 32, 1, 4, 6, 8, 32, 10, 4, 3, 1, 24, 7, 5, 7, 224, 5, 24, 16, 13, 7, 192, 5, 24, 16, 13, 2, 4, 6, 5, 192, 3, 32, 1, 4, 8, 1, 24, 16, 13, 7, 224, 5, 24, 15, 12, 5, 4, 12, 2, 192, 5, 24, 13, 10, 1, 32, 6, 192, 4, 4, 8, 1, 24, 12, 9, 7, 224, 2, 24, 9, 6, 7, 192, 1, 4, 8, 8, 32, 2, 24, 5, 3, 7, 192, 1, 4, 13, 1, 24, 4, 1, 7, 224, 1, 4, 13, 8, 32, 1, 4, 8, 8, 32, 10, 4, 2, 1, 24, 12, 9, 7, 224, 2, 24, 9, 6, 7, 192, 10, 4, 7, 1, 24, 4, 1, 7, 224, 1, 4, 8, 8, 32, 10, 4, 13, 1, 24, 4, 2, 7, 224, 10, 4, 6, 1, 24, 5, 3, 7, 224, 2, 24, 12, 10, 7, 192, 1, 4, 6, 8, 32, 2, 24, 12, 10, 7, 192, 1, 4, 13, 1, 24, 5, 3, 7, 224, 1, 4, 13, 8, 32, 1, 4, 6, 8, 32, 10, 4, 8, 1, 24, 7, 5, 7, 224, 2, 24, 13, 10, 7, 192, 10, 4, 8, 1, 24, 13, 10, 7, 224, 1, 4, 8, 1, 24, 13, 10, 7, 224, 4, 4, 10, 1, 24, 12, 9, 7, 224, 4, 4, 12, 1, 24, 11, 7, 7, 224, 4, 4, 13, 1, 24, 7, 6, 7, 224, 2, 16, 4, 7, 128, 1, 4, 8, 8, 32, 2, 16, 4, 7, 128, 1, 4, 2, 1, 16, 1, 7, 160, 28, 4, 1, 1, 24, 8, 6, 7, 224, 2, 24, 8, 6, 7, 192, 10, 4, 4, 1, 24, 8, 6, 7, 224, 11, 24, 8, 6, 7, 192, 1, 4, 9, 1, 24, 10, 7, 7, 224, 10, 4, 8, 1, 24, 7, 9, 7, 224, 2, 24, 4, 6, 7, 192, 10, 4, 2, 1, 24, 4, 3, 7, 224, 2, 24, 1, 1, 7, 192, 10, 4, 0, 8, 32, 10, 4, 1, 1, 24, 8, 6, 7, 224, 2, 24, 8, 6, 7, 192, 10, 4, 4, 1, 24, 8, 6, 7, 224, 11, 24, 8, 6, 7, 192, 1, 4, 9, 1, 24, 10, 7, 7, 224, 2, 24, 7, 9, 7, 192, 1, 4, 8, 8, 32, 19, 4, 2, 8, 32, 19, 4, 0, 8, 32, 10, 4, 1, 1, 24, 8, 6, 7, 224, 2, 24, 8, 6, 7, 192, 10, 4, 4, 1, 24, 8, 6, 7, 224, 11, 24, 8, 6, 7, 192, 1, 4, 9, 1, 24, 10, 7, 7, 224, 10, 4, 8, 1, 24, 7, 9, 7, 224, 2, 24, 4, 6, 7, 192, 10, 4, 2, 1, 24, 4, 3, 7, 224, 2, 24, 1, 1, 7, 192, 10, 4, 0, 8, 32, 10, 4, 3, 1, 24, 6, 9, 7, 224, 1, 4, 3, 1, 24, 6, 9, 7, 224, 10, 4, 3, 1, 24, 6, 9, 7, 224, 10, 4, 3, 1, 24, 6, 6, 7, 224, 1, 4, 3, 1, 24, 6, 9, 7, 224, 10, 4, 17, 1, 24, 11, 12, 7, 224, 28, 4, 8, 1, 16, 7, 7, 160, 28, 4, 2, 1, 24, 12, 9, 7, 224, 2, 24, 9, 6, 7, 192, 10, 4, 7, 1, 24, 4, 1, 7, 224, 1, 4, 8, 8, 32, 10, 4, 13, 1, 24, 4, 2, 7, 224, 10, 4, 6, 1, 24, 5, 3, 7, 224, 2, 24, 12, 10, 7, 192, 1, 4, 6, 8, 32, 2, 24, 12, 10, 7, 192, 1, 4, 13, 1, 24, 5, 3, 7, 224, 1, 4, 13, 8, 32, 1, 4, 6, 8, 32, 10, 4, 3, 1, 24, 7, 5, 7, 224, 5, 24, 16, 13, 7, 192, 5, 24, 16, 13, 2, 4, 6, 5, 192, 3, 32, 1, 4, 8, 1, 24, 16, 13, 7, 224, 5, 24, 15, 12, 5, 4, 12, 2, 192, 5, 24, 13, 10, 1, 32, 6, 192, 4, 4, 8, 1, 24, 12, 9, 7, 224, 2, 24, 9, 6, 7, 192, 1, 4, 8, 8, 32, 2, 24, 5, 3, 7, 192, 1, 4, 13, 1, 24, 4, 1, 7, 224, 1, 4, 13, 8, 32, 1, 4, 8, 8, 32, 10, 4, 2, 1, 24, 12, 9, 7, 224, 2, 24, 9, 6, 7, 192, 10, 4, 7, 1, 24, 4, 1, 7, 224, 1, 4, 8, 8, 32, 10, 4, 13, 1, 24, 4, 2, 7, 224, 10, 4, 6, 1, 24, 5, 3, 7, 224, 2, 24, 12, 10, 7, 192, 1, 4, 6, 8, 32, 2, 24, 12, 10, 7, 192, 1, 4, 13, 1, 24, 5, 3, 7, 224, 1, 4, 13, 8, 32, 1, 4, 6, 8, 32, 10, 4, 8, 1, 24, 7, 5, 7, 224, 2, 24, 13, 10, 7, 192, 10, 4, 8, 1, 24, 13, 10, 7, 224, 1, 4, 8, 1, 24, 13, 10, 7, 224, 4, 4, 10, 1, 24, 12, 9, 7, 224, 4, 4, 12, 1, 24, 11, 7, 7, 224, 4, 4, 13, 1, 24, 7, 6, 7, 224, 2, 16, 4, 7, 128, 1, 4, 8, 8, 32, 2, 16, 4, 7, 128, 1, 4, 2, 1, 16, 1, 7, 160, 28, 0  ; eof

;---------------------------

data_pointer:
dw 0

wait_counter:
db 0
