?login_element?

Subversion Repositories NedoOS

Rev

Blame | 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.         LD (on_int_sp),SP
  25.         LD SP,INTSTACK
  26.         push af
  27.         push bc
  28.         push de ;"hl"
  29.         exx
  30.         ex af,af' ;'
  31.         push af
  32.         push bc
  33.         push de
  34.         push hl
  35.         push ix
  36.         push iy
  37.  
  38. curscrnum_int=$+1
  39.         ld e,0
  40.         OS_SETSCREEN
  41.        
  42.         call oldimer ;ei ;а что если выйдем поздно (по yield)? надо в конце обработчика убрать ei, но и это не поможет, т.к. yield сейчас с включенными прерываниями!!!
  43.        
  44.          if 0
  45.         GET_KEY
  46.         ld a,c ;кнопка без учёта языка
  47.         or a
  48.         jr z,$+5
  49.         ld (curkey),a
  50.        
  51.         OS_GETKEYMATRIX
  52.         rr c ;'a'
  53.         rla ;A
  54.         rr c ;'s'
  55.         rla ;B
  56.         ld c,lx
  57.         rr c ;'Space'
  58.         rla ;Select
  59.         ld c,hx
  60.         rr c ;'Enter'
  61.         rla ;Start
  62.         add a,a
  63.         bit 3,h ;7
  64.         jr z,$+3
  65.         inc a ;Up
  66.         add a,a
  67.         bit 4,h ;6
  68.         jr z,$+3
  69.         inc a ;Down
  70.         add a,a
  71.         bit 4,e ;5
  72.         jr z,$+3
  73.         inc a ;Left
  74.         add a,a
  75.         bit 2,h ;8
  76.         jr z,$+3
  77.         inc a ;Right
  78.         cpl
  79.         ld (joystate),a
  80. ;bit - button (ZX key)
  81. ;7 - A (A)
  82. ;6 - B (S)
  83. ;5 - Select (Space)
  84. ;4 - Start (Enter)
  85. ;3 - Up (7)
  86. ;2 - Down (6)
  87. ;1 - Left (5)
  88. ;0 - Right (8)
  89.          endif
  90.         ;CALL .. ;ваш обработчик прерываний (не забывайте сохранить CURPG...)
  91.         ld a,(curpg16k) ;ok
  92.         SETPG16K
  93.         ld a,(curpg32klow) ;ok
  94.         SETPG32KLOW
  95.         ld a,(curpg32khigh) ;ok
  96.         SETPG32KHIGH
  97.  
  98.         ld hl,timer
  99.         inc (hl)
  100.  
  101.         pop iy
  102.         pop ix
  103.         pop hl
  104.         pop de
  105.         pop bc
  106.         pop af
  107.         ex af,af' ;'
  108.         exx
  109.         pop hl
  110.         pop bc
  111.         pop af        
  112. on_int_sp=$+1
  113.         ld sp,0
  114.         pop de
  115.         ei
  116. on_int_jp=$+1
  117.         jp 0
  118.  
  119. timer
  120.         db 0
  121.