Subversion Repositories tsfmpro

Rev

Rev 544 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

  1. ;--------------------------------------------------------------------
  2. ; Описание: Программа проигрывания модулей E-Tracker
  3. ; начальный экран сконверчен с компьютера Sam Coupe - Fred magazine 30
  4. ; поддержка в железе: ZXM-SoundCard
  5. ; Автор порта: Тарасов М.Н.(Mick),2010
  6. ;--------------------------------------------------------------------
  7.                 DEVICE ZXSPECTRUM128
  8.  
  9.                 .org    6000h
  10.  
  11. ;-------------------------------------------------------------------
  12. ; описание: Точка входа в программу после передачи управления из ОС
  13. ;---------------------------------------------------------------------
  14. ETunes_Start:          
  15.                 xor     a                               ;бордер в черный цвет
  16.                 out     (0feh),a       
  17.                 ld      (ETunes_count_music),a          ;счетчик номера музыки
  18.  
  19.                 ld      hl,4000h
  20.                 ld      de,4001h
  21.                 ld      bc,1b00h
  22.                 ld      (hl),c
  23.                 ldir
  24.                
  25.                 ld      hl,4000h                        ;грузим экран
  26.                 ld      de,(5CF4h)
  27.                 ld      bc,1B05h
  28.                 call    3d13h
  29.                 call    Str_init_load
  30.                 ei
  31. ETunes_loading:
  32.                 halt
  33.                 ld      b,0
  34. Etunes_wait:
  35.                 djnz    Etunes_wait                    
  36.                 call    Str_play
  37.                 jr      nc,ETunes_loading      
  38.  
  39.                 di                                      ;на всякий пожарный запретим прерывания
  40.                 ld      a,10h                           ;установим начальную страницу памяти
  41.                 ld      (ETunes_page_memory),a
  42.                 ld      bc,7ffdh
  43.                 out     (c),a
  44.                 ld      hl,0C000h                       ;грузим музыкальный пак 1.
  45.                 ld      de,(5CF4h)
  46.                 ld      bc,3B05h
  47.                 call    3d13h
  48.  
  49.                 ld      a,11h
  50.                 ld      bc,7ffdh
  51.                 out     (c),a
  52.                 ld      hl,0C000h                       ;грузим музыкальный пак 2.
  53.                 ld      de,(5CF4h)
  54.                 ld      bc,3E05h
  55.                 call    3d13h
  56.  
  57.                 ld      a,13h
  58.                 ld      bc,7ffdh
  59.                 out     (c),a
  60.                 ld      hl,0C000h                       ;грузим музыкальный пак 3.
  61.                 ld      de,(5CF4h)
  62.                 ld      bc,3905h
  63.                 call    3d13h
  64.  
  65.                 ld      a,14h
  66.                 ld      bc,7ffdh
  67.                 out     (c),a
  68.                 ld      hl,0C000h                       ;грузим музыкальный пак 4.
  69.                 ld      de,(5CF4h)
  70.                 ld      bc,3E05h
  71.                 call    3d13h
  72.  
  73.                 ld      a,16h
  74.                 ld      bc,7ffdh
  75.                 out     (c),a
  76.                 ld      hl,0C000h                       ;грузим музыкальный пак 5.
  77.                 ld      de,(5CF4h)
  78.                 ld      bc,3B05h
  79.                 call    3d13h
  80.  
  81.                 ld      a,17h
  82.                 ld      bc,7ffdh
  83.                 out     (c),a
  84.                 ld      hl,0C000h                       ;грузим музыкальный пак 6.
  85.                 ld      de,(5CF4h)
  86.                 ld      bc,2105h
  87.                 call    3d13h
  88.  
  89.                 ld      a,10h
  90.                 ld      bc,7ffdh
  91.                 out     (c),a
  92.  
  93.                 ld      sp,5fffh
  94.                 call    Str_init                        ;инициализация бегущей строки
  95.                 call    Analyzer_clear                  ;очистим анализатор
  96.                 ld      hl,0C000h
  97.                 ld      (EPlayer_Init+1),hl            ;адрес музыкального произведения
  98.                 ld      bc,0FFFDh                       ;разрешим работу SAA1099
  99.                 ld      a,0f6h
  100.                 out     (c),a
  101.                 call    EPlayer_Init                    ;инициализация проигрывающего модуля
  102.                 ld      hl,0fe00h                       ;создаем таблицу прерывания для im 2
  103.                 ld      de,0fe01h
  104.                 ld      bc,0100h
  105.                 ld      (hl),0fdh
  106.                 ldir
  107.                 ld      a,0c3h                          ;установим вектор прерывания
  108.                 ld      (0fdfdh),a
  109.                 ld      hl,Interrupt_handle
  110.                 ld      (0fdfeh),hl
  111.                 di
  112.                 ld      a,0feh                          ;окончание установки прерывания
  113.                 ld      i,a
  114.                 im      2
  115.                 ei
  116. ETunes_key:            
  117.                 xor     a
  118.                 ld      (ETunes_key_press),a
  119. ETunes_loop:           
  120.                 halt
  121.                
  122.                 call    Analyzer_update
  123.                 call    Analyzer_clear
  124.                 call    Str_play
  125.                 call    Analyzer_view
  126.  
  127.                 ld      a,7fh                           ;ожидаем пробел - переход к следующей композиции
  128.                 in      a,(0feh)
  129.                 rra    
  130.                 jr      c,ETunes_key
  131.  
  132.                 ld      a,0FEh
  133.                 in      a,(0FEh)
  134.                 rra        
  135.                 jr      nc,ETunes_exit
  136.  
  137.                 ld      a,(ETunes_key_press)
  138.                 and     a
  139.                 jr      nz,ETunes_loop
  140.  
  141.                 di     
  142.                 inc     a
  143.                 ld      (ETunes_key_press),a
  144.                 ld      a,(ETunes_page_memory)          ;загрузим номер страницы памяти
  145.                 ld      bc,7ffdh
  146.                 out     (c),a
  147.                 call    EPlayer_Init                    ;глушим работу проигрывающего модуля
  148.                 ld      bc,0FFFDh                       ;запрещаем работу SAA1099
  149.                 ld      a,0feh
  150.                 out     (c),a
  151.                 ld      a,(ETunes_count_music)
  152.                 inc     a
  153.                 cp      20
  154.                 jr      c,ETunes_next_music
  155.                 xor     a
  156.  
  157. ETunes_next_music:
  158.                 ld      (ETunes_count_music),a
  159.                 ld      l,a
  160.                 ld      e,a
  161.                 ld      h,0
  162.                 ld      d,h
  163.                 add     hl,hl
  164.                 add     hl,de
  165.                 ld      de,ETunes_tabl_music
  166.                 add     hl,de
  167.                 ld      a,(hl)                          ;номер страницы памяти
  168.                 ld      (ETunes_page_memory),a
  169.                 inc     hl
  170.                 ld      a,(hl)                          
  171.                 inc     hl
  172.                 ld      h,(hl)
  173.                 ld      l,a
  174.                 ld      a,(ETunes_page_memory)          ;загрузим номер страницы памяти
  175.                 ld      bc,7ffdh
  176.                 out     (c),a
  177.                 ld      (EPlayer_Init+1),hl            ;адрес музыкального произведения
  178.                 ld      bc,0FFFDh                       ;разрешим работу SAA1099
  179.                 ld      a,0f6h
  180.                 out     (c),a
  181.                 call    EPlayer_Init                    ;инициализируем проигрыватель
  182.                 ld      a,10h
  183.                 ld      bc,7ffdh
  184.                 out     (c),a
  185.                 ei
  186.                 jr      ETunes_loop
  187.  
  188. ETunes_exit:           
  189.                 di     
  190.                 call    EPlayer_Init                    ;глушим работу проигрывающего модуля
  191.                 ld      bc,0FFFDh                       ;запрещаем работу SAA1099
  192.                 ld      a,0feh
  193.                 out     (c),a
  194.                 ld      hl,0   
  195.                 push    hl
  196.                 jp      3d2fh                           ;выход в TR-DOS
  197.  
  198. ETunes_tabl_music:
  199.                 db      10h                             ; 1 музыкальное произведение
  200.                 dw      0C000h
  201.                 db      10h                             ; 2 музыкальное произведение
  202.                 dw      0CC90h
  203.                 db      10h                             ; 3 музыкальное произведение
  204.                 dw      0D330h
  205.                 db      10h                             ; 4 музыкальное произведение
  206.                 dw      0DE20h
  207.                 db      10h                             ; 5 музыкальное произведение
  208.                 dw      0E930h
  209.                 db      11h                             ; 6 музыкальное произведение
  210.                 dw      0C000h
  211.                 db      11h                             ; 7 музыкальное произведение
  212.                 dw      0CDC0h
  213.                 db      11h                             ; 8 музыкальное произведение
  214.                 dw      0E6C0h
  215.                 db      13h                             ; 9 музыкальное произведение
  216.                 dw      0C000h
  217.                 db      14h                             ; 10 музыкальное произведение
  218.                 dw      0C000h
  219.                 db      14h                             ; 11 музыкальное произведение
  220.                 dw      0CDC0h
  221.                 db      14h                             ; 12 музыкальное произведение
  222.                 dw      0E170h
  223.                 db      14h                             ; 13 музыкальное произведение
  224.                 dw      0EB60h
  225.                 db      16h                             ; 14 музыкальное произведение
  226.                 dw      0C000h
  227.                 db      16h                             ; 15 музыкальное произведение
  228.                 dw      0DB10h
  229.                 db      16h                             ; 16 музыкальное произведение
  230.                 dw      0E7A0h
  231.                 db      16h                             ; 17 музыкальное произведение
  232.                 dw      0EF20h
  233.                 db      17h                             ; 18 музыкальное произведение
  234.                 dw      0C000h
  235.                 db      17h                             ; 19 музыкальное произведение
  236.                 dw      0D200h
  237.                 db      17h                             ; 20 музыкальное произведение
  238.                 dw      0D640h
  239.  
  240. ETunes_page_memory:
  241.                 db      0              
  242. ETunes_count_music:
  243.                 db      0
  244. ETunes_key_press:
  245.                 db      0
  246.  
  247. Interrupt_handle:
  248.                 push    hl     
  249.                 push    bc     
  250.                 push    de
  251.                 push    af     
  252.                 ld      a,(ETunes_page_memory)
  253.                 ld      bc,7ffdh
  254.                 out     (c),a
  255.                 call    EPlayer_Play
  256.                 ld      a,10h
  257.                 ld      bc,7ffdh
  258.                 out     (c),a
  259.                 pop     af
  260.                 pop     de
  261.                 pop     bc
  262.                 pop     hl
  263.                 ei
  264.                 ret
  265.  
  266.                 .include  analyzer.asm
  267.                 .include  etplayer.asm
  268.                 .include  string.asm
  269. Etunes_end:
  270.  
  271.                 .savebin "etunes.bin",ETunes_Start, Etunes_end - ETunes_Start
  272.                 .end
  273.  
  274.