?login_element?

Subversion Repositories NedoOS

Rev

Rev 911 | 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.        if INT_USE_BC
  21. ;restore stack with bc
  22.         ld (on_int_hl),hl
  23.         pop hl
  24.         push bc
  25.         LD (on_int_jp),HL
  26.         LD (on_int_sp),SP
  27.         LD SP,INTSTACK
  28.         push af
  29.         push de
  30.        else
  31. ;restore stack with de
  32.         EX DE,HL
  33.         EX (SP),HL ;de="hl", в стеке "de"
  34.         LD (on_int_jp),HL
  35.         LD (on_int_sp),SP
  36.         LD SP,INTSTACK
  37.         push af
  38.         push bc
  39.         push de ;"hl"
  40.        endif
  41.         exx
  42.         ex af,af' ;'
  43.         push af
  44.         push bc
  45.         push de
  46.         push hl
  47.         push ix
  48.         push iy
  49.        
  50.         call oldimer ;ei ;>10000t ;а что если выйдем поздно (по yield)? надо в конце обработчика убрать ei, но и это не поможет, т.к. yield сейчас с включенными прерываниями!!!
  51.         di
  52.        
  53.        if 1==0
  54.         GET_KEY
  55.         ld a,c ;кнопка без учёта языка
  56.         or a
  57.         jr z,$+5
  58.         ld (curkey),a
  59.         OS_GETKEYMATRIX
  60.         rr c ;'a'
  61.         rla ;A
  62.         rr c ;'s'
  63.         rla ;B
  64.         ld c,lx
  65.         rr c ;'Space'
  66.         rla ;Select
  67.         ld c,hx
  68.         rr c ;'Enter'
  69.         rla ;Start
  70.         add a,a
  71.         bit 3,h ;7
  72.         jr z,$+3
  73.         inc a ;Up
  74.         add a,a
  75.         bit 4,h ;6
  76.         jr z,$+3
  77.         inc a ;Down
  78.         add a,a
  79.         bit 4,e ;5
  80.         jr z,$+3
  81.         inc a ;Left
  82.         add a,a
  83.         bit 2,h ;8
  84.         jr z,$+3
  85.         inc a ;Right
  86.         cpl
  87.         ld (joystate),a
  88. ;bit - button (ZX key)
  89. ;7 - A (A)
  90. ;6 - B (S)
  91. ;5 - Select (Space)
  92. ;4 - Start (Enter)
  93. ;3 - Up (7)
  94. ;2 - Down (6)
  95. ;1 - Left (5)
  96. ;0 - Right (8)
  97.        endif
  98.         ld a,(curpg4000) ;ok
  99.         push af
  100.         ld a,(curpg8000) ;ok
  101.         push af
  102.         ;ld a,(curpgc000) ;ok
  103.         ;push af
  104.        call setpgsmain40008000
  105.         call IMS ;ваш обработчик прерываний (не забывайте сохранить CURPG...)
  106.         ;pop af
  107.         ;SETPG32KHIGH
  108.         pop af
  109.         SETPG8000
  110.         pop af
  111.         SETPG4000
  112.  
  113.         ;ld hl,timer
  114.         ;inc (hl)
  115.  
  116.         pop iy
  117.         pop ix
  118.         pop hl
  119.         pop de
  120.         pop bc
  121.         pop af
  122.         ex af,af' ;'
  123.         exx
  124.        if INT_USE_BC
  125. on_int_hl=$+1
  126.         ld hl,0
  127.         pop de
  128.         pop af        
  129. on_int_sp=$+1
  130.         ld sp,0
  131.         pop bc
  132.        else
  133.         pop hl
  134.         pop bc
  135.         pop af        
  136. on_int_sp=$+1
  137.         ld sp,0
  138.         pop de
  139.        endif
  140.         ei
  141. on_int_jp=$+1
  142.         jp 0
  143.  
  144. ;timer
  145.         ;db 0
  146.