?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,1;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,SEED
  99.         INC (HL)
  100.         JR NZ,$+4
  101.          INC HL
  102.          INC (HL)
  103.  
  104.         ld hl,timer
  105.         inc (hl)
  106.  
  107.         pop iy
  108.         pop ix
  109.         pop hl
  110.         pop de
  111.         pop bc
  112.         pop af
  113.         ex af,af' ;'
  114.         exx
  115.         pop hl
  116.         pop bc
  117.         pop af        
  118. on_int_sp=$+1
  119.         ld sp,0
  120.         pop de
  121.         ei
  122. on_int_jp=$+1
  123.         jp 0
  124.  
  125. timer
  126.         db 0
  127.