?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. ; half-row      DEC     HEX     BIN
  2. ; Space...B     32766   7FFE    01111111 11111110
  3. ; Enter...H     49150   BFFE    10111111 11111110
  4. ; P...Y         57342   DFFE    11011111 11111110
  5. ; 0...6         61438   EFFE    11101111 11111110
  6. ; 1...5         63486   F7FE    11110111 11111110
  7. ; Q...T         64510   FBFE    11111011 11111110
  8. ; A...G         65022   FDFE    11111101 11111110
  9. ; CS...V        65278   FEFE    11111110 11111110
  10.         module CONTROL
  11. update:
  12.         ld hl,objectsData + oData.direction
  13.         ld b,MAX_OBJECTS
  14.         ld de,OBJECT_DATA_SIZE
  15. .checkDirection:
  16.         ld a,(hl)
  17.         or a
  18.         ret nz
  19.         add hl,de
  20.         djnz .checkDirection
  21.         ld hl,global_direction
  22.         ld e,DIRECTION.LEFT
  23.         ld bc,#DFFE
  24.         in a,(c)
  25.         bit 1,a
  26.         jr z,set
  27.         rlc e           ; DIRECTION.RIGHT
  28.         bit 0,a
  29.         jr z,set
  30.         rlc e           ; DIRECTION.UP
  31.         ld b,#FB
  32.         in a,(c)
  33.         bit 0,a
  34.         jr z,set
  35.         rlc e           ; DIRECTION.DOWN
  36.         ld b,#FD
  37.         in a,(c)
  38.         bit 0,a
  39.         jr nz,sinclairs
  40. set:
  41.         ld a,e
  42.         ld (hl),a       ; set direction to "global_direction"
  43.         ld (preDir),a
  44.         jp OBJECTS.identifyMovingObjects
  45. ;-------------------------------------------
  46. enter:
  47.         ld bc,#BFFE
  48.         jr caps + 3
  49. space:
  50.         ld bc,#7FFE
  51.         jr caps + 3
  52. caps:
  53.         ld bc,#FEFE
  54.         in a,(c)
  55.         bit 0,a
  56.         ret
  57. ;-------------------------------------------
  58. sinclairs:
  59.         ; without fire button
  60.         push hl
  61.         call digListener
  62.         pop hl
  63.         ld a,(de)
  64.         or a
  65.         ret z
  66.         ld e,DIRECTION.LEFT
  67.         ; sinclair I
  68.         cp '1'
  69.         jr z,set
  70.         rlc e
  71.         cp '2'
  72.         jr z,set
  73.         rlc e
  74.         cp '4'
  75.         jr z,set
  76.         rlc e
  77.         cp '3'
  78.         jr z,set
  79.         ; sinclair II
  80.         ld e,DIRECTION.LEFT
  81.         cp '6'
  82.         jr z,set
  83.         rlc e
  84.         cp '7'
  85.         jr z,set
  86.         rlc e
  87.         cp '9'
  88.         jr z,set
  89.         rlc e
  90.         cp '8'
  91.         jr z,set
  92.         ret
  93. ; ;-------------------------------------------
  94. ; kempston:
  95. ;       ld a,(kempstonState)
  96. ;       or a
  97. ;       ret z
  98. ;       ld c,0
  99. ;       in a,(#1f)
  100. ;       rrca
  101. ;       jr nc,
  102. ; ;-------------------------------------------
  103. numbers:        db "1234509876",0
  104. digListener:
  105.         ; return DE = address of digital char [(DE) == 0 = not pressed]
  106.         ld hl,#0505
  107.         ld de,numbers
  108.         ld bc,#F7FE     ; 1-5
  109. .pass:
  110.         in a,(c)
  111.         cpl
  112.         and %00011111
  113. .half
  114.         rrca
  115.         ret c
  116.         inc de
  117.         dec l
  118.         jr nz,.half
  119.         rlc b           ; BC = #EFFE ; 0-6
  120.         cp h
  121.         ret z
  122.         ld l,h
  123.         ld h,a
  124.         jr .pass
  125.         endmodule
  126.