?login_element?

Subversion Repositories NedoOS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.     module Console
  2. KEY_UP = 11
  3. KEY_DN = 10
  4. KEY_LT = 8
  5. KEY_RT = 9
  6. BACKSPACE = 12
  7. keyCode db 0
  8.  
  9. waitForKeyUp:
  10.     xor a : in a, (#fe) : cpl : and 31 : jr nz, waitForKeyUp
  11.     ret
  12.  
  13. getC:
  14.     call inkey
  15. .loop
  16.     push af
  17.     call inkey
  18.     pop bc
  19.     cp b
  20.     jr z, .loop
  21. .exit
  22.     ret
  23.  
  24. peekC:
  25.     call inkey
  26.     ret
  27.  
  28. inkey:
  29.    ld de,0
  30.    ld bc,$fefe
  31.    in a,(c)
  32.    or $e1
  33.    cp $ff
  34.    jr nz, .keyhitA
  35.  
  36.    ld e,5
  37.    ld b,$fd
  38.    in a,(c)
  39.    or $e0
  40.    cp $ff
  41.    jr nz, .keyhitA
  42.  
  43.    ld e,10
  44.    ld b,$fb
  45.    in a,(c)
  46.    or $e0
  47.    cp $ff
  48.    jr nz, .keyhitA
  49.  
  50.    ld e,15
  51.    ld b,$f7
  52.    in a,(c)
  53.    or $e0
  54.    cp $ff
  55.    jr nz, .keyhitA
  56.  
  57.    ld e,20
  58.    ld b,$ef
  59.    in a,(c)
  60.    or $e0
  61.    cp $ff
  62.    jr nz, .keyhitA
  63.  
  64.    ld e,25
  65.    ld b,$df
  66.    in a,(c)
  67.    or $e0
  68.    cp $ff
  69.    jr nz, .keyhitA
  70.  
  71.    ld e,30
  72.    ld b,$bf
  73.    in a,(c)
  74.    or $e0
  75.    cp $ff
  76.    jr nz, .keyhitA
  77.  
  78.    ld e,35
  79.    ld b,$7f
  80.    in a,(c)
  81.    or $e2
  82.    cp $ff
  83.    ld c,a
  84.    jr nz, .keyhitB
  85.  
  86. .nokey
  87.    xor a
  88.    ret
  89.  
  90. .keyhitA
  91.  
  92.    ld c,a
  93.  
  94.    ld a,b
  95.    cpl
  96.    or $81
  97.    in a,($fe)
  98.    or $e0
  99.    cp $ff
  100.    jr nz, .nokey
  101.  
  102.    ld a,$7f
  103.    in a,($fe)
  104.    or $e2
  105.    cp $ff
  106.    jr nz, .nokey
  107.  
  108. .keyhitB
  109.  
  110.    ld b,0
  111.    ld hl,.rowtbl-$e0
  112.    add hl,bc
  113.    ld a,(hl)
  114.    cp 5
  115.    jr nc, .nokey
  116.    add a,e
  117.    ld e,a
  118.  
  119.    ld hl,.table
  120.    add hl,de
  121.  
  122.    ld a,$fe
  123.    in a,($fe)
  124.    and $01
  125.    jr nz, .nocaps
  126.    ld e,40
  127.    add hl,de
  128.  
  129. .nocaps
  130.  
  131.    ld a,$7f
  132.    in a,($fe)
  133.    and $02
  134.    jr nz, .nosym
  135.    ld e,80
  136.    add hl,de
  137.  
  138. .nosym
  139.  
  140.    ld a,(hl)
  141.    ret
  142.  
  143. .rowtbl
  144.    defb 255,255,255,255,255,255,255
  145.    defb 255,255,255,255,255,255,255,255
  146.    defb 4,255,255,255,255,255,255
  147.    defb 255,3,255,255,255,2,255,1
  148.    defb 0,255
  149.  
  150. .table
  151.    db 0,'z','x','c','v'      ; CAPS SHIFT, Z, X, C, V
  152.    db 'a','s','d','f','g'      ; A, S, D, F, G
  153.    db 'q','w','e','r','t'      ; Q, W, E, R, T
  154.    db '1','2','3','4','5'      ; 1, 2, 3, 4, 5
  155.    db '0','9','8','7','6'      ; 0, 9, 8, 7, 6
  156.    db 'p','o','i','u','y'      ; P, O, I, U, Y
  157.    db 13,'l','k','j','h'       ; ENTER, L, K, J, H
  158.    db ' ',0,'m','n','b'      ; SPACE, SYM SHIFT, M, N, B
  159.  
  160.    ; the following are CAPS SHIFTed
  161.  
  162.    db 0,'Z','X','C','V'      ; CAPS SHIFT, Z, X, C, V
  163.    db 'A','S','D','F','G'      ; A, S, D, F, G
  164.    db 'Q','W','E','R','T'      ; Q, W, E, R, T
  165.    db 7,6,128,129,8            ; 1, 2, 3, 4, 5
  166.    db 12,0,9,11,10             ; 0, 9, 8, 7, 6
  167.    db 'P','O','I','U','Y'      ; P, O, I, U, Y
  168.    db 13,'L','K','J','H'       ; ENTER, L, K, J, H
  169.    db ' ',0,'M','N','B'      ; SPACE, SYM SHIFT, M, N, B
  170.  
  171.    ; the following are SYM SHIFTed
  172.  
  173.    db 0,':',96,'?','/'       ; CAPS SHIFT, Z, X, C, V
  174.    db '~','|',92,'{','}'       ; A, S, D, F, G
  175.    db 131,132,133,'<','>'      ; Q, W, E, R, T
  176.    db '!','@','#','$','%'      ; 1, 2, 3, 4, 5
  177.    db '_',')','(',39,'&'       ; 0, 9, 8, 7, 6
  178.    db 34,';',130,']','['       ; P, O, I, U, Y
  179.    db 13,'=','+','-','^'       ; ENTER, L, K, J, H
  180.    db ' ',0,'.',',','*'      ; SPACE, SYM SHIFT, M, N, B
  181.  
  182.    ; the following are CAPS SHIFTed and SYM SHIFTed ("CTRL" key)
  183.  
  184.    db 0,26,24,3,22           ; CAPS SHIFT, Z, X, C, V
  185.    db 1,19,4,6,7               ; A, S, D, F, G
  186.    db 17,23,5,18,20            ; Q, W, E, R, T
  187.    db 27,28,29,30,31           ; 1, 2, 3, 4, 5
  188.    db 127,0,134,'`',135      ; 0, 9, 8, 7, 6
  189.    db 16,15,9,21,25            ; P, O, I, U, Y
  190.    db 13,12,11,10,8            ; ENTER, L, K, J, H
  191.    db ' ',0,13,14,2          ; SPACE, SYM SHIFT, M, N, B
  192.     endmodule