?login_element?

Subversion Repositories NedoOS

Rev

Rev 832 | Rev 1169 | 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.         LD (on_int_hl),HL
  22.         LD (on_int_sp),SP
  23.         pop hl
  24.         LD (on_int_jp),HL
  25.         LD (on_int_sp2),SP
  26.         LD SP,INTSTACK
  27.         push af
  28.         push bc
  29.         push de
  30.         ex de,hl
  31. ;если стек в экране, то восстанавливаем нулём, иначе de
  32.         ld a,(on_int_sp+1)
  33.         sub 0x40
  34.         cp 0x3f
  35.         jr nc,$+5 ;not screen
  36.         ld hl,0
  37. on_int_sp=$+1
  38.         ld (0),hl ;восстановили запоротый стек
  39.  
  40.         exx
  41.         ex af,af' ;'
  42.         push af
  43.         push bc
  44.         push de
  45.         push hl
  46.         push ix
  47.         push iy
  48.  
  49. int_curborder=$+1
  50.         ld e,0
  51.         OS_SETBORDER
  52.  
  53. curscrnum_int=$+1
  54.         ld e,0
  55.         OS_SETSCREEN
  56.        
  57.         call oldimer ;ei ;а что если выйдем поздно (по yield)? надо в конце обработчика убрать ei, но и это не поможет, т.к. yield сейчас с включенными прерываниями!!!
  58.  
  59.         if KEMPSTON
  60.         GET_KEY
  61.         ld a,lx
  62.         ld (kempstonbuttons),a
  63.         endif
  64.        
  65.         if 1==0
  66.         GET_KEY
  67.         ld a,c ;кнопка без учёта языка
  68.         or a
  69.         jr z,$+5
  70.         ld (curkey),a
  71.        
  72.         OS_GETKEYMATRIX
  73.         rr c ;'a'
  74.         rla ;A
  75.         rr c ;'s'
  76.         rla ;B
  77.         ld c,lx
  78.         rr c ;'Space'
  79.         rla ;Select
  80.         ld c,hx
  81.         rr c ;'Enter'
  82.         rla ;Start
  83.         add a,a
  84.         bit 3,h ;7
  85.         jr z,$+3
  86.         inc a ;Up
  87.         add a,a
  88.         bit 4,h ;6
  89.         jr z,$+3
  90.         inc a ;Down
  91.         add a,a
  92.         bit 4,e ;5
  93.         jr z,$+3
  94.         inc a ;Left
  95.         add a,a
  96.         bit 2,h ;8
  97.         jr z,$+3
  98.         inc a ;Right
  99.         cpl
  100.         ld (joystate),a
  101. ;bit - button (ZX key)
  102. ;7 - A (A)
  103. ;6 - B (S)
  104. ;5 - Select (Space)
  105. ;4 - Start (Enter)
  106. ;3 - Up (7)
  107. ;2 - Down (6)
  108. ;1 - Left (5)
  109. ;0 - Right (8)
  110.         endif
  111.  
  112.         ld a,(curpg16k) ;ok
  113.         push af
  114.         ld a,(curpg32klow) ;ok
  115.         push af
  116.         ld a,(curpg32khigh) ;ok
  117.         push af
  118.         call setpgsmain40008000
  119.         ;LD     BC,PAGE3
  120.         ;LD     A,#C3
  121.         ;OUT    (C),A
  122.         call setpgc3
  123.  
  124.         CALL    PLAYS
  125.         LD      A,(SOUNDW)
  126.         CP      0
  127.         CALL    Z,PLAYS3
  128.         LD      A,5
  129.         LD      (SOUNDGO),A
  130.  
  131.         LD      A,(TIME)
  132.         INC     A
  133.         CP      2
  134.         CALL    Z,TIME2
  135.         LD      (TIME),A
  136.        
  137.         pop af
  138.         SETPG32KHIGH
  139.         pop af
  140.         SETPG32KLOW
  141.         pop af
  142.         SETPG16K
  143.  
  144.         ;call logic
  145.  
  146.         ld hl,timer
  147.         inc (hl)
  148.  
  149.         pop iy
  150.         pop ix
  151.         pop hl
  152.         pop de
  153.         pop bc
  154.         pop af
  155.         ex af,af' ;'
  156.         exx
  157.         pop de
  158.         pop bc
  159.         pop af        
  160. on_int_hl=$+1
  161.         ld hl,0
  162. on_int_sp2=$+1
  163.         ld sp,0
  164.         ei
  165. on_int_jp=$+1
  166.         jp 0
  167.  
  168. timer
  169.         db 0
  170.  
  171. PLAYS
  172.         LD      A,(SOUNDW)
  173.         CP      0
  174.         RET     Z
  175.         LD      A,(MAP)
  176.         CP      15
  177.         JR      Z,BOSSPLA
  178.         CP      31
  179.         JR      Z,BOSSPLA
  180.         CALL    #C005
  181.         LD      A,(SOUNDW)
  182.         DEC     A
  183.         LD      (SOUNDW),A
  184.         RET
  185. BOSSPLA
  186.         CALL    #CBB8+5
  187.         LD      A,(SOUNDW)
  188.         DEC     A
  189.         LD      (SOUNDW),A
  190.         RET
  191. PLAYS3
  192.         CALL    AFXFRAME
  193.         LD      A,(SOUND1)
  194.         DEC     A
  195.         CP      0
  196.         JP      Z,PLAYS4
  197.         LD      (SOUND1),A
  198.         RET
  199. PLAYS4
  200.         LD      A,(NEWLEVEL)
  201.         CP      1
  202.         JR      Z,PLAYS4A
  203.         LD      A,(SOUNDGO)
  204.         CALL    AFXPLAY
  205.         LD      A,8
  206.         LD      (SOUND1),A
  207.         RET
  208. PLAYS4A
  209.         LD      A,(SOUNDGO)
  210.         CP      5
  211.         RET     Z
  212.         CALL    AFXPLAY
  213.         LD      A,8
  214.         LD      (SOUND1),A
  215.         RET
  216. SOUND1  DEFB    8
  217. SOUNDW  DEFB    200
  218.  
  219. kempstonbuttons
  220.         db 0
  221.