?login_element?

Subversion Repositories NedoOS

Rev

Rev 835 | Blame | Compare with Previous | Last modification | View Log | Download

  1.         ;export _joystick
  2.         ;export _keyboard
  3.         ;export _mouse_apply_clip
  4.  
  5.  
  6.        
  7. ;яюыєўхэшх XY фхы№Є фтшцхэш  ёЄЁхыъш ь√°ш
  8.  
  9. poll_mouse_delta
  10.         ld a,(_mouse_prev_dx)
  11.         ld e,a
  12.         ld bc,#fbdf     ;фхы№Єр x
  13.         in a,(c)
  14.         ld d,a
  15.         sub e
  16.         ld (_mouse_dx),a
  17.         ld a,d
  18.         ld (_mouse_prev_dx),a
  19.  
  20.         ld a,(_mouse_prev_dy)
  21.         ld b,#ff        ;фхы№Єр y
  22.         in e,(c)
  23.         sub e
  24.         ld (_mouse_dy),a
  25.         ld a,e
  26.         ld (_mouse_prev_dy),a
  27.  
  28.         ret
  29.  
  30.  
  31.  
  32. ;яЁшьхэхэшх чюэ√ ъышяяшэур ь√°ш, т√ч√трхЄё  яЁш шчьхэхэшш ъююЁфшэрЄ шыш чюэ√
  33.  
  34. _mouse_apply_clip
  35.         ld hl,(_mouse_cx1)
  36.         ld a,(_mouse_cx2)
  37.         ld h,a
  38.         ld a,(_mouse_x)
  39.         cp l
  40.         jr nc,$+3
  41.         ld a,l
  42.         cp h
  43.         jr c,$+3
  44.         ld a,h
  45.         ld (_mouse_x),a
  46.  
  47.         ld hl,(_mouse_cy1)
  48.         ld a,(_mouse_cy2)
  49.         ld h,a
  50.         ld a,(_mouse_y)
  51.         cp l
  52.         jr nc,$+3
  53.         ld a,l
  54.         cp h
  55.         jr c,$+3
  56.         ld a,h
  57.         ld (_mouse_y),a
  58.  
  59.         ret
  60.  
  61.  
  62.  
  63. ;ъюф юяЁюёр ь√°ш, шёяюы№чєхЄё  юфэюъЁрЄэю т юсЁрсюЄўшъх яЁхЁ√трэш 
  64.  
  65.         macro poll_mouse
  66.  
  67.         call poll_mouse_delta
  68.  
  69.         ld b,#fa        ;ъэюяъш ь√°ш
  70.         in a,(c)
  71.         cpl
  72.         and #7
  73.         ld (_mouse_btn),a
  74.  
  75.         ld a,(_mouse_cx1)
  76.         ld e,a
  77.         ld a,(_mouse_cx2)
  78.         ld d,a
  79.  
  80.         ld a,(_mouse_dx)
  81.         ld c,a
  82.         srl a
  83.         bit 7,c
  84.         jr z,$+4
  85.         or #80
  86.         ld c,a
  87.         ld a,(_mouse_x)
  88.         add a,c
  89.         rl c
  90.         jp nc,.clipRight
  91. .clipLeft
  92.         cp d
  93.         jr c,$+3
  94.         ld a,e
  95.         cp e
  96.         jr nc,.clipHDone
  97.         ld a,e
  98.         jp .clipHDone
  99. .clipRight
  100.         cp d
  101.         jr c,.clipHDone
  102.         ld a,d
  103. .clipHDone
  104.         ld (_mouse_x),a
  105.  
  106.         ld a,(_mouse_cy1)
  107.         ld e,a
  108.         ld a,(_mouse_cy2)
  109.         ld d,a
  110.  
  111.         ld a,(_mouse_dy)
  112.         ld c,a
  113.         ld a,(_mouse_y)
  114.         add a,c
  115.         rl c
  116.         jp nc,.clipDown
  117. .clipUp
  118.         cp d
  119.         jr c,$+3
  120.         ld a,e
  121.         cp e
  122.         jr nc,.clipVDone
  123.         ld a,e
  124.         jp .clipVDone
  125. .clipDown
  126.         cp d
  127.         jr c,.clipVDone
  128.         ld a,d
  129. .clipVDone
  130.         ld (_mouse_y),a
  131.  
  132.         endm
  133.  
  134.  
  135.  
  136. ;ЇєэъЎш  юяЁюёр фцющёЄшъют ш ъыртшрЄєЁ√
  137. ;юяЁр°штрхЄ Kempston ш Cursor+Space
  138.  
  139. _joystick
  140.         ld l,0
  141.  
  142.         ld bc,#fefe             ;Ё ф cZXCV
  143.         in a,(c)
  144.         rra
  145.         jr c,.noCaps    ;caps эх эрцрЄ
  146.  
  147. ;cursor фцющёЄшъ
  148.  
  149.         ld b,#f7                ;Ё ф 12345
  150.         in a,(c)
  151.         and #10
  152.         jr nz,$+4
  153.         set 1,l
  154.         ld b,#ef                ;09876
  155.         in a,(c)
  156.         rra
  157.         jr c,$+4
  158.         set 4,l
  159.         rra
  160.         rra
  161.         jr c,$+4
  162.         set 0,l
  163.         rra
  164.         jr c,$+4
  165.         set 3,l
  166.         rra
  167.         jr c,$+4
  168.         set 2,l
  169. .noCaps
  170.         ld b,#7f                ;Ё ф SpSymBNM
  171.         in a,(c)
  172.         rra
  173.         jr c,$+4
  174.         set 4,l
  175.        
  176.         if 0
  177.         ld a,l
  178.         or a
  179.         ret nz
  180.  
  181. ;kempston фцющёЄшъ
  182. _kempston_joystick
  183.         ld a,#83 ;basic48 switchable to dos
  184.         ld bc,#3ff7
  185.         push bc
  186.         out (c),a
  187.         ld a,%10101000 ;ega,turbo
  188.         ld bc,#ff77 ;shadow ports off
  189.  
  190.         di
  191.         out (c),a
  192.  
  193.         in a,(31)
  194.         ld b,a
  195.         and #e0
  196.         jr nz,$+3 ;kempston joystick is absent
  197.         ld l,b
  198.  
  199.         ld a,%10101000 ;ega,turbo
  200.         ld b,#bd;#41 ;shadow ports and palette on
  201.         call joystick_out_dos
  202.         ei
  203.  
  204.         ld a,#7f ;RAM on, 7ffd off
  205.         pop bc;ld bc,#3ff7
  206.         out (c),a
  207.         ld a,CC_PAGE0
  208.         jp setSlot0
  209. joystick_out_dos
  210.         ld de,#2a53
  211.         push de
  212.         jp #3d2f
  213.         else
  214.         ret
  215.         endif
  216.        
  217.        
  218. ;юяЁюё ъыртшрЄєЁ√, чряюыэ хЄ 40-срщЄэ√щ ьрёёшт Їырурьш ёюёЄю эш  ъыртш°
  219.  
  220.        
  221.        
  222. _keyboard
  223.         push ix
  224.         ex de,hl
  225.         ld ix,keysPrevState
  226.         ld bc,#fefe             ;cZXCV
  227. keyboard_row0
  228.         push bc
  229.         in a,(c)
  230.         cpl
  231.         ld e,a
  232.         ld b,5
  233. .l0
  234.         rr e
  235.         sbc a,a
  236.         ld c,a
  237.         xor (ix)
  238.         and c
  239.         and 2
  240.         ld (ix),c
  241.         rr c
  242.         jr nc,$+4
  243.         or 1
  244.         ld (hl),a
  245.         inc ix
  246.         inc hl
  247.         djnz .l0
  248.         pop bc
  249.         rlc b
  250.         jr c,keyboard_row0
  251.         pop ix
  252.         ret
  253.