?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. ;--------------------------------------------------------------------
  2. ; Описание: Проигрывающий модуль музыкального редактора E-Tracker
  3. ; портирован  с компьютера Sam Coupe
  4. ; Автор порта: Тарасов М.Н.(Mick),2010
  5. ;--------------------------------------------------------------------
  6. ;-------------------------------------------------------------------
  7. ; описание: Инициализация проигрывателя
  8. ; параметры: нет
  9. ; возвращаемое  значение: нет
  10. ;---------------------------------------------------------------------
  11. ;EPlayer_Init
  12. ;-------------------------------------------------------------------
  13. ; описание: Проигрывание текущей ноты
  14. ; параметры: нет
  15. ; возвращаемое  значение: нет
  16. ;---------------------------------------------------------------------
  17. EPlayer_Play:
  18.                 ;ld     bc,0FFFDh                       ;разрешим работу SAA1099
  19.                 ;ld     a,0f6h
  20.                 ;out    (c),a
  21.                 ld      a,1                             ;текущий канал
  22.                 dec     a
  23.                 jr      nz,loc_0_802A                  ;вывели информацию во все каналы?
  24.                 ld      ix,word_0_833A                 ;да,переходим к подготовки новых значений
  25.                 ld      b,6                            ;число каналов
  26.  
  27. loc_0_8011:
  28.                 push    bc
  29.                 call    sub_0_81A4
  30.                 ld      bc,19h                         ;количество байт для одного канала
  31.                 add     ix,bc
  32.                 pop     bc
  33.                 djnz    loc_0_8011
  34.                 ld      hl,(word_0_83EA)
  35.                 ld      a,h
  36.                 call    sub_0_8157
  37.                 or      l
  38.                 ld      (loc_0_80E5+1),a
  39.  
  40. loc_0_8028:
  41.                 ld      a,6                           ;установим текущий канал для обновления
  42.  
  43. loc_0_802A:
  44.                 ld      (EPlayer_Play+1),a              ;установим новое значение текущего канала
  45.                 ld      ix,word_0_833A                
  46.                 call    sub_0_826A
  47.                 ld      (EAmplitude_ch0),a               ;Amplitude 0 right/left
  48.                 ld      (EFrequency_ch0),hl
  49.                 push    hl
  50.                 ld      hl,0
  51.                 call    sub_0_815C
  52.                 ld      (loc_0_8055+1),hl
  53.                 ld      (loc_0_80E3+1),a
  54.                 ld      ix,word_0_8353
  55.                 call    sub_0_826A
  56.                 ld      (EAmplitude_ch1),a               ;Amplitude 1 right/left
  57.                 ld      (EFrequency_ch0+1),hl
  58.                 push    hl
  59.  
  60. loc_0_8055:
  61.                 ld      hl,0
  62.                 call    sub_0_815C
  63.                 ld      (loc_0_8073+1),hl
  64.                 rl      h
  65.                 jr      nc,loc_0_8065
  66.                 ld      (loc_0_80E3+1),a
  67.  
  68. loc_0_8065:
  69.                 ld      ix,word_0_836C
  70.                 call    sub_0_826A
  71.                 ld      (EAmplitude_ch2),a              ;Amplitude 2 right/left
  72.                 ld      (EFrequency_ch2),hl
  73.                 push    hl
  74.  
  75. loc_0_8073:
  76.                 ld      hl,0
  77.                 call    sub_0_815C
  78.                 ld      (loc_0_8091+1),hl
  79.                 rl      h
  80.                 jr      nc,loc_0_8083
  81.                 ld      (loc_0_80E3+1),a
  82.  
  83. loc_0_8083:
  84.                 ld      ix,word_0_8385
  85.                 call    sub_0_826A
  86.                 ld      (EAmplitude_ch3),a              ;Amplitude 3 right/left
  87.                 ld      (EFrequency_ch2+1),hl
  88.                 push    hl
  89.  
  90. loc_0_8091:
  91.                 ld      hl,0
  92.                 call    sub_0_815C
  93.                 ld      (loc_0_80AB+1),hl
  94.                 ld      (loc_0_80DD+1),a
  95.  
  96.                 ld      ix,word_0_839E
  97.                 call    sub_0_826A
  98.                 ld      (EAmplitude_ch4),a              ;Amplitude 4 right/left
  99.                 ld      (EFrequency_ch4),hl
  100.                 push    hl
  101.  
  102. loc_0_80AB:
  103.                 ld      hl,0
  104.                 call    sub_0_815C
  105.                 ld      (loc_0_80C9+1),hl
  106.                 rl      h
  107.                 jr      nc,loc_0_80BB
  108.                 ld      (loc_0_80DD+1),a
  109.  
  110. loc_0_80BB:
  111.                 ld      ix,word_0_83B7
  112.                 call    sub_0_826A
  113.                 ld      (EAmplitude_ch5),a                ;Amplitude 5 right/left
  114.                 ld      (EFrequency_ch4+1),hl
  115.                 push    hl
  116.  
  117. loc_0_80C9:
  118.                 ld      hl,0
  119.                 call    sub_0_815C
  120.                 rr      l
  121.                 rr      l
  122.                 rr      h
  123.                 rr      h
  124.                 ld      (EFrequency_en),hl               ;Freqency and Noise enable
  125.                 rlca   
  126.                 jr      c,loc_0_80E0
  127.  
  128. loc_0_80DD:
  129.                 ld      a,0
  130.                 rlca   
  131.  
  132. loc_0_80E0:
  133.                 rlca   
  134.                 rlca   
  135.                 rlca   
  136.  
  137. loc_0_80E3:
  138.                 or      0
  139.  
  140. loc_0_80E5:
  141.                 or      0
  142.                 ld      (ENoise_gen),a                  ;Noise generator 0 and 1
  143.                 pop     af
  144.                 pop     bc
  145.                 call    sub_0_8157
  146.                 or      b
  147.                 ld      h,a
  148.                 pop     af
  149.                 pop     bc
  150.                 call    sub_0_8157
  151.                 or      b
  152.                 ld      l,a
  153.                 ld      (EOctave_ch2),hl                ;Octave 2 and 3 and 4 and 5
  154.                 pop     af
  155.                 pop     bc
  156.                 call    sub_0_8157
  157.                 or      b
  158.                 ld      (EOctave_ch0),a                ;Octave 1 and 0
  159.                 ld      bc,0xfffd
  160.                 ld      de,1C01h                       ;регистр 1Сh,бит SE=1
  161.                 out     (c),d
  162.                 ld b,0xbf
  163.                 out     (c),e                          ;разрешить все каналы
  164.                 ld      hl,EEnvelope_gen1              ;таблица данных звукового канала
  165.                 ld      d,19h                          ;размер данных для одного канала
  166.  
  167. loc_0_8114:
  168.                 ld b,0xff
  169.                 out     (c),d                          ;загружаем номер регистра
  170.                 ld b,0xbf
  171.                 ld      a,(hl)                         ;читаем значение из таблицы
  172.                 out     (c),a                          ;выводим в порт
  173.                 dec     d                               ;следующий байт
  174.                 ret     m                               ;выход по окончании записи
  175.                 dec     hl                              ;переходим к следующим значениям
  176.                 jr      loc_0_8114                      ;продолжим запись в порт
  177.  
  178.                 db    5  
  179.                 db  21h
  180.                 db  3Ch
  181.                 db  55h
  182.                 db  6Dh
  183.                 db  84h
  184.                 db  99h
  185.                 db 0ADh
  186.                 db 0C0h
  187.                 db 0D2h
  188.                 db 0E3h
  189.                 db 0F3h
  190. unk_0_812C:     db 0FEh
  191.                 db    1  
  192.                 db    0  
  193.                 db    0  
  194.                 db 0FCh
  195. unk_0_8131:     db    0
  196.                 db  96h
  197.                 db  9Eh
  198.                 db  9Ah
  199.                 db  86h
  200.                 db  8Eh
  201.                 db  8Ah
  202.                 db  97h
  203.                 db  9Fh
  204.                 db  9Bh
  205.                 db  87h
  206.                 db  8Fh
  207.                 db  8Bh
  208. unk_0_813E:     db 0FEh
  209.                 db    0  
  210. unk_0_8140:     db 0FFh
  211.                 db 0D2h
  212.                 db  57h
  213.                 db  72h
  214.                 db    0
  215.                 db  52h
  216.                 db 0ABh
  217.                 db  51h
  218.                 db  61h
  219.                 db  50h
  220.                 db  52h
  221.                 db  30h
  222.                 db 0C2h
  223.                 db  2Eh
  224.                 db  35h
  225.                 db  21h
  226.                 db  29h
  227.                 db  11h
  228.                 db  41h
  229.                 db  0Fh
  230.                 db  46h
  231.                 db    0
  232.                 db  3Ah
  233.  
  234.  
  235. sub_0_8157:
  236.                 rlca   
  237.                 rlca   
  238.                 rlca   
  239.                 rlca   
  240.                 ret    
  241.  
  242. sub_0_815C:
  243.                 ex      af,af'
  244.                 rrca   
  245.                 rr      l
  246.                 rrca   
  247.                 rr      h
  248.                 ret    
  249.  
  250. sub_0_8164:
  251.                 sla     c
  252.                 ld      b,0
  253.                 jr      nc, loc_0_816B
  254.                 inc     b
  255.  
  256. loc_0_816B:
  257.                 add     hl,bc
  258.  
  259. sub_0_8169:
  260.                 ld      c,(hl)                          ;читаем  младший байт адреса смещения
  261.                 inc     hl
  262.                 ld      b,(hl)                         ;читаем старший байт адреса смещения
  263.                 inc     hl                              ;переходим к следующему адресу
  264.                 push    hl
  265.  
  266. loc_0_816E:
  267.                 ld      hl,0                           ;адрес музыки
  268.                 add     hl,bc                          ;получим адрес таблицы
  269.                 ld      c,l                            ;младший байт адреса
  270.                 ld      b,h                            ;старший байт адреса
  271.                 pop     hl
  272.                 ret    
  273.  
  274. loc_0_8176:
  275.                 ld      hl,0
  276.                 call    sub_0_8164
  277.                 ld      (ix++0Fh),c
  278.                 ld      (ix++10h),b
  279.                 ld      hl,unk_0_812C
  280.                 ld      (ix++4),l
  281.                 ld      (ix++5),h
  282.                 jr      loc_0_81D4
  283. loc_0_818D:
  284.                 ld      hl,0
  285.                 call    sub_0_8164
  286.                 ld      (ix++11h),c
  287.                 ld      (ix++12h),b
  288.                 ld      hl,unk_0_813E
  289.                 ld      (ix++8),l
  290.                 ld      (ix++9),h
  291.                 jr      loc_0_81E0
  292. sub_0_81A4:
  293.                 dec     (ix++13h)
  294.                 ret     p
  295.                 ld      a,b
  296.                 cp      3
  297.                 ld      hl,EEnvelope_gen0
  298.                 jr      nc,loc_0_81B1
  299.                 inc     hl
  300. loc_0_81B1:
  301.                 ld      (loc_0_81FB+1),hl
  302. loc_0_81B4:
  303.                 ld      e,(ix++0)
  304.                 ld      d,(ix++1)
  305. loc_0_81BA:
  306.                 ld      hl,unk_0_8140
  307. loc_0_81BD:
  308.                 ld      a,(de)
  309.                 inc     hl
  310.                 sub     (hl)
  311.                 inc     hl
  312.                 jr      c,loc_0_81BD
  313.                 inc     de
  314.                 ld      c,a
  315.                 ld      a,(hl)
  316.                 ld      (loc_0_81C9+1),a
  317. loc_0_81C9:
  318.                 jr      loc_0_81C9
  319. loc_0_81CB:
  320.                 ld      (ix++0Eh),c
  321.                 ld      c,(ix++0Fh)
  322.                 ld      b,(ix++10h)
  323. loc_0_81D4:
  324.                 ld      (ix++2),c
  325.                 ld      (ix++3),b
  326.                 ld      c,(ix++11h)
  327.                 ld      b,(ix++12h)
  328. loc_0_81E0:
  329.                 ld      (ix++6),c
  330.                 ld      (ix++7),b
  331.                 ld      (ix++14h),1
  332.                 ld      (ix++15h),1
  333.                 ld      (ix++16h),1
  334.                 jr      loc_0_81BA
  335. loc_0_81F4:
  336.                 ld      b,0
  337.                 ld      hl,unk_0_8131
  338.                 add     hl,bc
  339.                 ld      a,(hl)
  340. loc_0_81FB:
  341.                 ld      (0),a
  342.                 jr      loc_0_81BA
  343. loc_0_8200:
  344.                 ld      (ix++17h),c
  345.                 jr      loc_0_81BA
  346. loc_0_8205:
  347.                 ld      a,c
  348.                 inc     a
  349.                 ld      (loc_0_8028+1),a
  350.                 jr      loc_0_81BA
  351. loc_0_820C:
  352.                 ld      (ix++18h),c
  353.                 jr      loc_0_81BA
  354. loc_0_8211:
  355.                 jr      z,loc_0_8215
  356.                 ld      c,3
  357. loc_0_8215:
  358.                 ld      hl,(loc_0_81FB+1)
  359.                 inc     hl
  360.                 inc     hl
  361.                 ld      (hl),c
  362.                 jr      loc_0_81BA
  363. loc_0_821D:
  364.                 ld      bc,unk_0_812C
  365.                 jr      loc_0_81D4
  366. loc_0_8222:
  367.                 ld      (ix++13h),c
  368.                 ld      (ix++0),e
  369.                 ld      (ix++1),d
  370.                 ret    
  371. loc_0_822C:
  372.                 call    sub_0_8461
  373.                 jp      loc_0_81B4
  374. loc_0_8232:
  375.                 cp      7Fh ; ''
  376.                 jr      z,loc_0_823F
  377.                 cp      7Eh ; '~'
  378.                 jr      z,loc_0_8247
  379.                 add     a,2
  380.                 ld      c,a
  381.                 jr      loc_0_827D
  382. loc_0_823F:
  383.                 ld      (ix++4),l
  384.                 ld      (ix++5),h
  385.                 jr      loc_0_827D
  386. loc_0_8247:
  387.                 ld      l,(ix++4)
  388.                 ld      h,(ix++5)
  389.                 jr      loc_0_827D
  390. loc_0_824F:
  391.                 inc     a
  392.                 jr      z,loc_0_825A
  393.                 inc     a
  394.                 jr      z,loc_0_8262
  395.                 sub     60h ; '`'
  396.                 ld      c,a
  397.                 jr      loc_0_829F
  398. loc_0_825A:
  399.                 ld      l,(ix++8)
  400.                 ld      h,(ix++9)
  401.                 jr      loc_0_829F
  402. loc_0_8262:
  403.                 ld      (ix++8),l
  404.                 ld      (ix++9),h
  405.                 jr      loc_0_829F
  406. sub_0_826A:
  407.                 ld      e,(ix++0Ah)
  408.                 ld      d,(ix++0Bh)
  409.                 dec     (ix++15h)
  410.                 ld      l,(ix++2)
  411.                 ld      h,(ix++3)
  412.                 jr      nz,loc_0_828E
  413.                 ld      c,1
  414. loc_0_827D:
  415.                 ld      a,(hl)
  416.                 inc     hl
  417.                 rrca   
  418.                 jr      nc,loc_0_8232
  419.                 ld      (ix++15h),c
  420.                 ld      (ix++0Bh),a
  421.                 ld      e,(hl)
  422.                 ld      d,a
  423.                 ld      (ix++0Ah),e
  424.                 inc     hl
  425. loc_0_828E:
  426.                 push    hl
  427.                 ld      a,(ix++0Dh)
  428.                 dec     (ix++14h)
  429.                 jr      nz,loc_0_82B1
  430.                 ld      c,1
  431.                 ld      l,(ix++6)
  432.                 ld      h,(ix++7)
  433. loc_0_829F:
  434.                 ld      a,(hl)
  435.                 inc     hl
  436.                 cp      60h ; '`'
  437.                 jr      nc,loc_0_824F
  438.                 ld      (ix++14h),c
  439.                 ld      (ix++0Dh),a
  440.                 ld      (ix++6),l
  441.                 ld      (ix++7),h
  442. loc_0_82B1:
  443.                 add     a,(ix++0Eh)
  444.                 cp      5Fh ; '_'
  445.                 ld      hl,7FFh
  446.                 jr      z,loc_0_82D1
  447. loc_0_82BB:
  448.                 add     a,0
  449.                 jr      nc,loc_0_82C1
  450.                 sub     60h ; '`'
  451. loc_0_82C1:
  452.                 ld      hl,0FF0Ch
  453.                 ld      b,h
  454. loc_0_82C5:
  455.                 inc     h
  456.                 sub     l
  457.                 jr      nc,loc_0_82C5
  458.                 ld      c,a
  459.                 ld      a,h
  460.                 ld      hl,unk_0_812C
  461.                 add     hl,bc
  462.                 ld      l,(hl)
  463.                 ld      h,a
  464. loc_0_82D1:
  465.                 add     hl,de
  466.                 ld      a,h
  467.                 and     7
  468.                 ld      h,a
  469.                 ld      a,d
  470.                 rrca   
  471.                 rrca   
  472.                 rrca   
  473.                 and     0Fh
  474.                 ex      af,af'
  475.                 ex      de,hl
  476.                 pop     hl
  477.                 ld      a,(ix++0Ch)
  478.                 dec     (ix++16h)
  479.                 jr      nz,loc_0_82F4
  480.                 ld      a,(hl)
  481.                 inc     hl
  482. loc_0_82E9:
  483.                 cp      0
  484.                 jr      nz,loc_0_8322
  485.                 ld      c,(hl)
  486.                 inc     hl
  487. loc_0_82EF:
  488.                 ld      a,(hl)
  489.                 inc     hl
  490. loc_0_82F1:
  491.                 ld      (ix++16h),c
  492. loc_0_82F4:
  493.                 ld      (ix++2),l
  494.                 ld      (ix++3),h
  495.                 ld      (ix++0Ch),a
  496.                 ex      de,hl
  497.                 ld      b,(ix++18h)
  498.                 ld      c,a
  499.                 and     0Fh
  500.                 sub     b
  501.                 jr      nc,loc_0_8308
  502.                 xor     a
  503. loc_0_8308:
  504.                 ld      e,a
  505.                 ld      a,c
  506.                 and     0F0h ; 'Ё'
  507.                 call    sub_0_8157
  508.                 sub     b
  509.                 jr      nc,loc_0_8313
  510.                 xor     a
  511. loc_0_8313:
  512.                 ld      d,a
  513.                 ld      a,(ix++17h)
  514.                 or      a
  515.                 ld      a,e
  516.                 jr      nz,loc_0_831D
  517.                 ld      a,d
  518.                 ld      d,e
  519. loc_0_831D:
  520.                 call    sub_0_8157
  521.                 or      d
  522.                 ret    
  523. loc_0_8322:
  524.                 push    hl
  525.                 ld      b,a
  526. loc_0_8324:
  527.                 ld      hl,0
  528. loc_0_8327:
  529.                 ld      a,(hl)
  530.                 or      a
  531.                 jr      z,loc_0_8334
  532.                 inc     hl
  533.                 ld      c,(hl)
  534.                 inc     hl
  535.                 cp      b
  536.                 jr      nz,loc_0_8327
  537.                 pop     hl
  538.                 jr      loc_0_82EF
  539. loc_0_8334:
  540.                 pop     hl
  541.                 ld      c,1
  542.                 ld      a,b
  543.                 jr      loc_0_82F1
  544. word_0_833A:   
  545.                 ds      25
  546. word_0_8353:   
  547.                 ds      25
  548. word_0_836C:   
  549.                 ds      25
  550. word_0_8385:   
  551.                 ds      25
  552. word_0_839E:   
  553.                 ds      25
  554. word_0_83B7:   
  555.                 ds      25
  556.  
  557. EAmplitude_ch0: db      0                               ;+00h - Amplitude 0 right/left
  558. EAmplitude_ch1: db      0                               ;+01h - Amplitude 1 right/left
  559. EAmplitude_ch2: db      0                               ;+02h - Amplitude 2 right/left
  560. EAmplitude_ch3: db      0                               ;+03h - Amplitude 3 right/left
  561. EAmplitude_ch4: db      0                               ;+04h - Amplitude 4 right/left
  562. EAmplitude_ch5: db      0                               ;+05h - Amplitude 5 right/left
  563.                 db      0                               ;+06h - XXXX
  564.                 db      0                               ;+07h - XXXX
  565. EFrequency_ch0: db      0                               ;+08h - Frequency of tone 0
  566.                 db      0                               ;+09h - Frequency of tone 1
  567. EFrequency_ch2: db      0                               ;+0Ah - Frequency of tone 2
  568.                 db      0                               ;+0Bh - Frequency of tone 3
  569. EFrequency_ch4: db      0                               ;+0Ch - Frequency of tone 4
  570.                 db      0                               ;+0Dh - Frequency of tone 5
  571.                 db      0                               ;+OEh - XXXX   
  572.                 db      0                               ;+0Fh - XXXX
  573. EOctave_ch0:    db      0                               ;+10h - Octave 1 and 0
  574. EOctave_ch2:    db      0                               ;+11h - Octave 3 and 2
  575. EOctave_ch4:    db      0                               ;+12h - Octave 5 and 4
  576.                 db      0                               ;+13h - XXXX
  577. EFrequency_en:  db      0                               ;+14h - Frequency enable
  578.                 db      0                               ;+15h - Noise enable
  579. ENoise_gen:     db      0                               ;+16h - Noise generator 0 and 1
  580.                 db      0                               ;+17h - XXXX
  581. EEnvelope_gen0: db      0                               ;+18h - Envelope generator 0
  582. EEnvelope_gen1: db      0                               ;+19h - Envelope generator 1
  583.  
  584. word_0_83EA:    dw      0
  585.        
  586. EPlayer_Init:
  587.                 ld      bc,0FFFDh                       ;разрешим работу SAA1099
  588.                 ld      a,0f6h
  589.                 out     (c),a
  590.                 ld      a,6                             ;добавил инициализацию первого канала
  591.                 ld      (loc_0_8028+1),a                ;иначе некоректно стратуют некоторые модули
  592.  
  593.                 ld      (loc_0_816E+1),hl               ;сохраним адрес музыки
  594.                 call    sub_0_8169                      ;получим адрес 1 таблицы
  595.                 ld      (sub_0_8461+1),bc               ;сохраним адрес
  596.                 call    sub_0_8169                      ;получим адрес 2 таблицы
  597.                 ld      (loc_0_8476+1),bc               ;сохраним адрес
  598.                 call    sub_0_8169                      ;получим адрес 3 таблицы
  599.                 ld      (loc_0_8176+1),bc               ;сохраним адрес
  600.                 call    sub_0_8169                      ;получим адрес 4 таблицы
  601.                 ld      (loc_0_818D+1),bc               ;сохраним адрес
  602.                 call    sub_0_8169                      ;получим адрес 5 таблицы
  603.                 ld      a,(bc)
  604.                 inc     bc
  605.                 ld      (loc_0_82E9+1),a                ;сохраним адрес
  606.                 ld      (loc_0_8324+1),bc
  607.                 ld      hl,word_0_833A                  ;начальный адрес служебных данных
  608.                 ld      b,0B2h                          ;размер области служебных данных
  609.                 xor     a                               ;байт заполнения - 00h
  610. loc_0_841D:
  611.                 ld      (hl),a                          ;очищаем служебную область
  612.                 inc     hl
  613.                 djnz    loc_0_841D
  614.                 inc     a
  615.                 ld      (EPlayer_Play+1),a               ;установим номер текущего канала - 01h
  616.                 ld      ix,word_0_833A                 ;адрес служебных данных 1 канала
  617.                 ld      de,19h                         ;размер данных для одного канала
  618.                 ld      b,6
  619. loc_0_842E:
  620.                 ld      (ix++14h),1
  621.                 ld      (ix++15h),1
  622.                 ld      (ix++16h),1
  623.                 ld      hl,unk_0_812C
  624.                 ld      (ix++0Fh),l
  625.                 ld      (ix++10h),h
  626.                 ld      (ix++2),l
  627.                 ld      (ix++3),h
  628.                 ld      hl,unk_0_813E
  629.                 ld      (ix++11h),l
  630.                 ld      (ix++12h),h
  631.                 add     ix,de                           ;переходим к следующему каналу
  632.                 djnz    loc_0_842E
  633.                 ld      de,1C02h                        ;регистр 1Сh SAA1099 - выключим звук
  634.                 ld      bc,0xfffd
  635.                 out     (c),d
  636.                 ld b,0xbf
  637.                 out     (c),e                          ;иництализация микросхемы
  638. sub_0_8461:
  639.                 ld      hl,0                            ;адрес 1 таблицы
  640. loc_0_8464:
  641.                 ld      c,(hl)
  642.                 ld      a,c
  643.                 inc     hl
  644.                 inc     a
  645.                 jr      z,loc_0_84A4
  646.                 inc     a
  647.                 jr      z,loc_0_84A9
  648.                 sub     62h ; 'b'
  649.                 jr      nc,loc_0_84AE
  650.                 ld      (sub_0_8461+1),hl
  651.                 sla     c
  652. loc_0_8476:
  653.                 ld      hl,0
  654.                 call    sub_0_8164
  655.                 ld      (word_0_833A),bc
  656.                 call    sub_0_8169
  657.                 ld      (word_0_8353),bc
  658.                 call    sub_0_8169
  659.                 ld      (word_0_836C),bc
  660.                 call    sub_0_8169
  661.                 ld      (word_0_8385),bc
  662.                 call    sub_0_8169
  663.                 ld      (word_0_839E),bc
  664.                 call    sub_0_8169
  665.                 ld      (word_0_83B7),bc
  666.                 ret    
  667. loc_0_84A4:
  668.                 ld      hl,0
  669.                 jr      loc_0_8464
  670. loc_0_84A9:
  671.                 ld      (loc_0_84A4+1),hl
  672.                 jr      loc_0_8464
  673. loc_0_84AE:
  674.                 ld      (loc_0_82BB+1),a
  675.                 jr      loc_0_8464
  676. ;               .end
  677.