Subversion Repositories NedoOS

Rev

Rev 946 | 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 (curmouse),de
  73.        ld a,l
  74.        ld (curmousebuttons),a
  75.         ;ld a,c ;кнопка без учёта языка
  76.         ;or a
  77.         ;jr z,$+5
  78.         ;ld (curkey),a
  79.         ;CALL .. ;ваш обработчик прерываний
  80.        
  81.         ld a,(curpg16k) ;ok
  82.         push af
  83.         ld a,(curpg32klow) ;ok
  84.         push af
  85.         ld a,(curpg32khigh) ;ok
  86.         push af
  87.  
  88.         ld a,SND_PAGE
  89.         call setpg4000
  90.  
  91.         ld a,(musicPage)
  92.         or a
  93.         jr z,.noMusic
  94.         call setpg8000
  95.         ld bc,#fffd
  96.         ifdef TFM
  97.         ld a,%11111000          ;второй чип Turbo FM
  98.         else
  99.         ld a,#fe                ;второй чип Turbo Sound
  100.         endif
  101.                 ;если Turbo Sound нет, звуки и музыка
  102.         out (c),a               ;играют на одном чипе, иначе на разных
  103.  
  104.         ifdef TFM
  105.         ld a,(TURBOFMON)
  106.         or a
  107.         call nz,PT3_FRAME
  108.         else
  109.         call PT3_FRAME
  110.         endif
  111.  
  112.         ifdef TFM
  113.         ;jr .sfx ;wrong TS detection on TFM?
  114.         else
  115.         ld a,(turboSound)
  116.         or a
  117.         jr z,.sfx
  118.         endif
  119.  
  120. .noMusic
  121.         ifdef TFM
  122.         ;ld a,(TURBOFMON)
  123.         ;or a
  124.         ;call nz,PT3_MUTE ;reset_ay
  125.         ld a,1
  126.         call reset_ay_ay
  127.         else
  128.         ld a,1
  129.         call reset_ay
  130.         endif
  131. .sfx
  132.  
  133.         ifdef TFM
  134.         ld bc,#fffd
  135.         ld a,%11111001          ;1-й чип Turbo FM
  136.         ;ld a,%11111011         ;1-й чип Turbo FM, no wait sync
  137.         out (c),a
  138.         else
  139.         ld bc,#fffd             ;первый чип
  140.         out (c),b
  141.         endif
  142.  
  143.         call AFX_FRAME
  144.  
  145.         ;счётчик кадров
  146.  
  147.         ld hl,_time
  148.         ld b,4
  149. .time1
  150.         inc (hl)
  151.         jr nz,.time2
  152.         inc hl
  153.         djnz .time1
  154. .time2
  155.        
  156.         pop af
  157.         SETPG32KHIGH
  158.         pop af
  159.         SETPG32KLOW
  160.         pop af
  161.         SETPG16K
  162.        
  163.         pop iy
  164.         pop ix
  165.         pop hl
  166.         pop de
  167.         pop bc
  168.         pop af
  169.         ex af,af' ;'
  170.         exx
  171.         pop hl
  172.         pop bc
  173.         pop af
  174. on_int_sp=$+1
  175.         ld sp,0
  176.         pop de
  177.         EI
  178. on_int_jp=$+1
  179.         jp 0
  180.  
  181. curmouse
  182.         dw 0
  183. curmousebuttons
  184.         db 0
  185.