?login_element?

Subversion Repositories NedoOS

Rev

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