Subversion Repositories NedoOS

Rev

Rev 942 | Rev 1029 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download

  1. swapimer
  2.         di
  3.         ld de,0x0038
  4.         ld hl,oldimer
  5.         ld bc,3
  6. swapimer0
  7.         ld a,(de)
  8.         ldi ;[oldimer] -> [0x0038]
  9.         dec hl
  10.         ld (hl),a ;[0x0038] -> [oldimer]
  11.         inc hl
  12.         jp pe,swapimer0
  13.         ei
  14.         ret
  15. oldimer
  16.         jp on_int ;заменится на код из 0x0038
  17.         jp 0x0038+3
  18.  
  19. on_int
  20. ;restore stack with de
  21.         EX DE,HL
  22.         EX (SP),HL ;de="hl", в стеке "de"
  23.         LD (on_int_jp),HL
  24.         ;EX DE,HL
  25.         ;POP DE
  26.         LD (on_int_sp),SP
  27.         LD SP,INTSTACK        
  28.         push af
  29.         push bc
  30.         push de ;"hl"
  31.         exx
  32.         ex af,af' ;'
  33.         push af
  34.         push bc
  35.         push de
  36.         push hl
  37.         push ix
  38.         push iy
  39.  
  40.         ld hl,_palChange
  41.         xor a
  42.         cp (hl)
  43.         ld (hl),a
  44.         jp z,int_nochangepal
  45.         ld de,(_palBright)
  46.         ld a,d
  47.         add a,high palBrightTable
  48.         ld b,a
  49.         ld lx,e
  50.         ld hl,_palette
  51.         ld de,CURPAL
  52.         dup 16
  53.         ld a,(hl)
  54.         add a,lx
  55.         ld c,a
  56.         ld a,(bc)
  57.         ld (de),a
  58.         inc de
  59.         ld (de),a
  60.         inc de
  61.         inc l
  62.         edup
  63.         ld a,(_borderCol)
  64.         ld e,a
  65.         OS_SETBORDER
  66.         ld de,CURPAL
  67.         OS_SETPAL
  68. int_nochangepal
  69.         call oldimer
  70.  
  71.         ;GET_KEY
  72.         ;ld a,c ;кнопка без учёта языка
  73.         ;or a
  74.         ;jr z,$+5
  75.         ;ld (curkey),a
  76.         ;CALL .. ;ваш обработчик прерываний
  77.        
  78.         ld a,(curpg16k) ;ok
  79.         push af
  80.         ld a,(curpg32klow) ;ok
  81.         push af
  82.         ld a,(curpg32khigh) ;ok
  83.         push af
  84.  
  85.         ld a,SND_PAGE
  86.         call setpg4000
  87.  
  88.         ld a,(musicPage)
  89.         or a
  90.         jr z,.noMusic
  91.         call setpg8000
  92.         ld bc,#fffd
  93.         ifdef TFM
  94.         ld a,%11111000          ;второй чип Turbo FM
  95.         else
  96.         ld a,#fe                ;второй чип Turbo Sound
  97.         endif
  98.                 ;если Turbo Sound нет, звуки и музыка
  99.         out (c),a               ;играют на одном чипе, иначе на разных
  100.  
  101.         ifdef TFM
  102.         ld a,(TURBOFMON)
  103.         or a
  104.         call nz,PT3_FRAME
  105.         else
  106.         call PT3_FRAME
  107.         endif
  108.  
  109.         ifdef TFM
  110.         ;jr .sfx ;wrong TS detection on TFM?
  111.         else
  112.         ld a,(turboSound)
  113.         or a
  114.         jr z,.sfx
  115.         endif
  116.  
  117. .noMusic
  118.         ifdef TFM
  119.         ;ld a,(TURBOFMON)
  120.         ;or a
  121.         ;call nz,PT3_MUTE ;reset_ay
  122.         ld a,1
  123.         call reset_ay_ay
  124.         else
  125.         ld a,1
  126.         call reset_ay
  127.         endif
  128. .sfx
  129.  
  130.         ifdef TFM
  131.         ld bc,#fffd
  132.         ld a,%11111001          ;1-й чип Turbo FM
  133.         ;ld a,%11111011         ;1-й чип Turbo FM, no wait sync
  134.         out (c),a
  135.         else
  136.         ld bc,#fffd             ;первый чип
  137.         out (c),b
  138.         endif
  139.  
  140.         call AFX_FRAME
  141.  
  142.         ;счётчик кадров
  143.  
  144.         ld hl,_time
  145.         ld b,4
  146. .time1
  147.         inc (hl)
  148.         jr nz,.time2
  149.         inc hl
  150.         djnz .time1
  151. .time2
  152.        
  153.         pop af
  154.         SETPG32KHIGH
  155.         pop af
  156.         SETPG32KLOW
  157.         pop af
  158.         SETPG16K
  159.        
  160.         pop iy
  161.         pop ix
  162.         pop hl
  163.         pop de
  164.         pop bc
  165.         pop af
  166.         ex af,af' ;'
  167.         exx
  168.         pop hl
  169.         pop bc
  170.         pop af
  171. on_int_sp=$+1
  172.         ld sp,0
  173.         pop de
  174.         EI
  175. on_int_jp=$+1
  176.         jp 0
  177.