Subversion Repositories NedoOS

Rev

Rev 942 | 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.         pop af
  143.         SETPG32KHIGH
  144.         pop af
  145.         SETPG32KLOW
  146.         pop af
  147.         SETPG16K
  148.        
  149.         pop iy
  150.         pop ix
  151.         pop hl
  152.         pop de
  153.         pop bc
  154.         pop af
  155.         ex af,af' ;'
  156.         exx
  157.         pop hl
  158.         pop bc
  159.         pop af
  160. on_int_sp=$+1
  161.         ld sp,0
  162.         pop de
  163.         EI
  164. on_int_jp=$+1
  165.         jp 0
  166.