?login_element?

Subversion Repositories NedoOS

Rev

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

  1. on_int
  2.       if 0;atm
  3.         ld (on_int_hl),hl
  4.         ld (on_int_sp),sp
  5.         pop hl
  6.         ld (on_int_sp2),sp
  7.         ld (on_int_jp),hl
  8.         ex de,hl;ld hl,0
  9. on_int_sp=$+1
  10.         ld (0),hl ;восстановили запоротый стек
  11.         ld sp,INTSTACK
  12.         push hl
  13.       else
  14. ;store DE in stack
  15.         ex de,hl
  16.         EX (SP),HL
  17.         LD (on_int_jp),HL
  18.         LD (IMSP),SP
  19.         LD SP,INTSTACK
  20.         push de
  21.        endif
  22.  
  23.         push af
  24.         push bc
  25.  
  26.         push ix
  27.         push iy
  28.         ex af,af' ;'
  29.         exx
  30.         push af
  31.         push bc
  32.         push de
  33.         push hl
  34.        
  35.        if doublescr
  36.        if atm      
  37. on_int_0026=$+1
  38.         ld hl,0
  39.         ld (0x0026),hl ;восстановили запоротый стек 0x0028 (=40)
  40.         ld a,(curscrnum)
  41.         ld e,a
  42.         OS_SETSCREEN ;вызываем здесь, а не в рандомном месте, иначе даже с одной задачей можем получить непредсказуемую задержку, которую не фиксирует наш таймер? с несколькими задачами надо учитывать и системный - TODO
  43. curpalette=$+1
  44.         ld de,wolfpal
  45.         OS_SETPAL
  46.         call oldimer ;ei
  47.         GET_KEY
  48.         or a
  49.         jr z,$+5
  50.         ld (curkey),a
  51.        else ;~atm
  52.        IF music
  53.         LD A,pgmuz
  54.         LD BC,#7FFD
  55.         OUT (C),A
  56.         CALL 0xc005;#8006 ;play mus
  57.        ENDIF
  58.         LD A,(newscr)
  59.         LD (curscr),A
  60. curpg=$+1
  61.         LD A,#10
  62.         CALL SETPG
  63.        endif
  64.        endif
  65.        
  66. timer=$+1
  67.         LD HL,0
  68.         inc hl
  69.         LD (timer),HL
  70.        IF showfps
  71. IMframe=$+1
  72.         LD A,1
  73.         DEC A
  74.         jr nz,IMNSEC
  75.         LD DE,#4100
  76.        ;LD DE,#4100<1
  77.        ;RR D
  78. IMfps=$+1
  79.         LD A,0
  80.         LD C,10
  81.         CALL PRDIG
  82.         LD C,1
  83.         CALL PRDIG
  84.         XOR A
  85.         LD (IMfps),A
  86.         LD A,50
  87. IMNSEC
  88.         LD (IMframe),A
  89.        ENDIF
  90.  
  91.         if !atm
  92.         call _beeper_play
  93.         endif
  94.  
  95.         pop hl
  96.         pop de
  97.         pop bc
  98.         pop af
  99.         exx
  100.         ex af,af' ;'
  101.         pop iy
  102.         pop ix
  103.  
  104.         pop bc
  105.         pop af
  106.  
  107.        if 0;atm
  108.         pop de
  109. on_int_hl=$+1
  110.         ld hl,0
  111. on_int_sp2=$+1
  112.         ld sp,0
  113.        else
  114.         pop de
  115. IMSP=$+1
  116.         LD SP,0
  117.         POP HL
  118.         ex de,hl
  119.        endif
  120.        if !atm
  121.         ei
  122.        endif
  123. on_int_jp=$+1
  124.         jp 0
  125.  
  126.        IF showfps
  127. PRDIG
  128.         LD L,15
  129.         INC L
  130.         SUB C
  131.         jr NC,$-2
  132.         ADD A,C
  133.         PUSH AF
  134.         LD A,L
  135.         ADD A,A
  136.         ADD A,A
  137.         ADD A,A
  138.         INC A
  139.         LD L,A
  140.         LD H,#3D
  141.         PUSH DE
  142.         LD B,6
  143.         LD A,(HL)
  144.         ld (DE),A
  145.         INC L,D
  146.         DJNZ $-4
  147.         POP DE
  148.         POP AF
  149.         INC E
  150.         RET
  151.        ENDIF
  152.  
  153.        if atm
  154. swapimer
  155.         di
  156.          ld hl,(0x0026) ;ok
  157.          ld (on_int_0026),hl
  158.         ld de,0x0038
  159.         ld hl,oldimer
  160.         ld bc,3
  161. swapimer0
  162.         ld a,(de)
  163.         ldi ;[oldimer] -> [0x0038]
  164.         dec hl
  165.         ld (hl),a ;[0x0038] -> [oldimer]
  166.         inc hl
  167.         jp pe,swapimer0
  168.         ei
  169.         ret
  170. oldimer
  171.         jp on_int ;заменится на код из 0x0038
  172.         jp 0x0038+3
  173.        endif
  174.