?login_element?

Subversion Repositories NedoOS

Rev

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