?login_element?

Subversion Repositories NedoOS

Rev

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