?login_element?

Subversion Repositories NedoOS

Rev

Rev 1636 | 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. BASIC_KEY = #5C08
  8. keyCode db 0
  9. tableShift db 0
  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. keyWait:
  18.     dup 11
  19.     halt
  20.     edup
  21.    ret
  22.  
  23. getC:
  24. getCint:       ; for nedoOS
  25.    xor a
  26.    ld (BASIC_KEY),a
  27. getC2:
  28.    ld a,(BASIC_KEY)
  29.    and a : jr z, getC2
  30.    ld b,a
  31.    xor a : ld (BASIC_KEY), a
  32.    ld a, b
  33.    ret
  34. ;0xE - to Russian
  35. ;0xF - to Englich
  36. peekC:
  37.     xor a: ld (BASIC_KEY),a
  38.     call inkey
  39.     cp 0xE
  40.     jp z, toRus
  41.     cp 0xF
  42.     jp z, toEng
  43.     ret
  44. toRus
  45.    ld a, russiantable - englishTable
  46.    ld (tableShift), a
  47.    xor a
  48.    call keyWait
  49.    ret
  50. toEng
  51.    xor a
  52.    ld (tableShift), a
  53.    call keyWait  
  54.    ret
  55.  
  56. inkey:
  57.    ld de,0
  58.    ld bc,$fefe
  59.    in a,(c)
  60.    or $e1
  61.    cp $ff
  62.    jr nz, .keyhitA
  63.  
  64.    ld e,5
  65.    ld b,$fd
  66.    in a,(c)
  67.    or $e0
  68.    cp $ff
  69.    jr nz, .keyhitA
  70.  
  71.    ld e,10
  72.    ld b,$fb
  73.    in a,(c)
  74.    or $e0
  75.    cp $ff
  76.    jr nz, .keyhitA
  77.  
  78.    ld e,15
  79.    ld b,$f7
  80.    in a,(c)
  81.    or $e0
  82.    cp $ff
  83.    jr nz, .keyhitA
  84.  
  85.    ld e,20
  86.    ld b,$ef
  87.    in a,(c)
  88.    or $e0
  89.    cp $ff
  90.    jr nz, .keyhitA
  91.  
  92.    ld e,25
  93.    ld b,$df
  94.    in a,(c)
  95.    or $e0
  96.    cp $ff
  97.    jr nz, .keyhitA
  98.  
  99.    ld e,30
  100.    ld b,$bf
  101.    in a,(c)
  102.    or $e0
  103.    cp $ff
  104.    jr nz, .keyhitA
  105.  
  106.    ld e,35
  107.    ld b,$7f
  108.    in a,(c)
  109.    or $e2
  110.    cp $ff
  111.    ld c,a
  112.    jr nz, .keyhitB
  113.  
  114. .nokey
  115.    xor a
  116.    ret
  117.  
  118. .keyhitA
  119.  
  120.    ld c,a
  121.  
  122.    ld a,b
  123.    cpl
  124.    or $81
  125.    in a,($fe)
  126.    or $e0
  127.    cp $ff
  128.    jr nz, .nokey
  129.  
  130.    ld a,$7f
  131.    in a,($fe)
  132.    or $e2
  133.    cp $ff
  134.    jr nz, .nokey
  135.  
  136. .keyhitB
  137.  
  138.    ld b,0
  139.    ld hl,.rowtbl-$e0
  140.    add hl,bc
  141.    ld a,(hl)
  142.    cp 5
  143.    jr nc, .nokey
  144.    add a,e
  145.    ld e,a
  146.  
  147.    ld  hl, englishTable
  148.    add hl, de
  149.    ld  a, (tableShift)
  150.    ld e, a
  151.    add hl, de
  152.    ld a,$fe
  153.    in a,($fe)
  154.    and $01
  155.    jr nz, .nocaps
  156.    ld e,40
  157.    add hl,de
  158.  
  159. .nocaps
  160.  
  161.    ld a,$7f
  162.    in a,($fe)
  163.    and $02
  164.    jr nz, .nosym
  165.    ld e,80
  166.    add hl,de
  167.  
  168. .nosym
  169.  
  170.    ld a,(hl)
  171.    ret
  172.  
  173. .rowtbl
  174.    defb 255,255,255,255,255,255,255
  175.    defb 255,255,255,255,255,255,255,255
  176.    defb 4,255,255,255,255,255,255
  177.    defb 255,3,255,255,255,2,255,1
  178.    defb 0,255
  179.  
  180. englishTable
  181.    db 0,'z','x','c','v'      ; CAPS SHIFT, Z, X, C, V
  182.    db 'a','s','d','f','g'      ; A, S, D, F, G
  183.    db 'q','w','e','r','t'      ; Q, W, E, R, T
  184.    db '1','2','3','4','5'      ; 1, 2, 3, 4, 5
  185.    db '0','9','8','7','6'      ; 0, 9, 8, 7, 6
  186.    db 'p','o','i','u','y'      ; P, O, I, U, Y
  187.    db 13,'l','k','j','h'       ; ENTER, L, K, J, H
  188.    db ' ',0,'m','n','b'      ; SPACE, SYM SHIFT, M, N, B
  189.  
  190.    ; the following are CAPS SHIFTed
  191.  
  192.    db 0,'Z','X','C','V'      ; CAPS SHIFT, Z, X, C, V
  193.    db 'A','S','D','F','G'      ; A, S, D, F, G
  194.    db 'Q','W','E','R','T'      ; Q, W, E, R, T
  195.    db 14,6,128,129,8           ; 1, 2, 3, 4, 5
  196.    db 12,0,9,11,10             ; 0, 9, 8, 7, 6
  197.    db 'P','O','I','U','Y'      ; P, O, I, U, Y
  198.    db 13,'L','K','J','H'       ; ENTER, L, K, J, H
  199.    db ' ',0,'M','N','B'      ; SPACE, SYM SHIFT, M, N, B
  200.  
  201.    ; the following are SYM SHIFTed
  202.  
  203.    db 0,':',96,'?','/'       ; CAPS SHIFT, Z, X, C, V
  204.    db '~','|',92,'{','}'       ; A, S, D, F, G
  205.    db 131,132,133,'<','>'      ; Q, W, E, R, T
  206.    db '!','@','#','$','%'      ; 1, 2, 3, 4, 5
  207.    db '_',')','(',39,'&'       ; 0, 9, 8, 7, 6
  208.    db 34,';',130,']','['       ; P, O, I, U, Y
  209.    db 13,'=','+','-','^'       ; ENTER, L, K, J, H
  210.    db ' ',0,'.',',','*'      ; SPACE, SYM SHIFT, M, N, B
  211.  
  212.    ; the following are CAPS SHIFTed and SYM SHIFTed ("CTRL" key)
  213.  
  214.    db 0,26,24,3,22           ; CAPS SHIFT, Z, X, C, V
  215.    db 1,19,4,6,7               ; A, S, D, F, G
  216.    db 17,23,5,18,20            ; Q, W, E, R, T
  217.    db 27,28,29,30,31           ; 1, 2, 3, 4, 5
  218.    db 127,0,134,'`',135      ; 0, 9, 8, 7, 6
  219.    db 16,15,9,21,25            ; P, O, I, U, Y
  220.    db 13,12,11,10,8            ; ENTER, L, K, J, H
  221.    db ' ',0,13,14,2          ; SPACE, SYM SHIFT, M, N, B
  222.  
  223. russiantable
  224.    db 0,'я','ч','с','м'      ; CAPS SHIFT, Z, X, C, V
  225.    db 'ф','ы','в','а','п'      ; A, S, D, F, G
  226.    db 'й','ц','у','к','е'      ; Q, W, E, R, T
  227.    db '1','2','3','4','5'      ; 1, 2, 3, 4, 5
  228.    db '0','9','8','7','6'      ; 0, 9, 8, 7, 6
  229.    db 'з','щ','ш','г','н'      ; P, O, I, U, Y
  230.    db 13,'д','л','о','р'       ; ENTER, L, K, J, H
  231.    db ' ',0,'ь','т','и'      ; SPACE, SYM SHIFT, M, N, B
  232.  
  233.    ; the following are CAPS SHIFTed
  234.  
  235.    db 0,'Я','Ч','С','М'      ; CAPS SHIFT, Z, X, C, V
  236.    db 'Ф','Ы','В','А','П'      ; A, S, D, F, G
  237.    db 'Й','Ц','У','К','Е'      ; Q, W, E, R, T
  238.    db 15,6,128,129,8            ; 1, 2, 3, 4, 5
  239.    db 12,0,9,11,10             ; 0, 9, 8, 7, 6
  240.    db 'З','Щ','Ш','Г','Н'      ; P, O, I, U, Y
  241.    db 13,'Д','Л','О','Р'       ; ENTER, L, K, J, H
  242.    db ' ',0,'Ь','Т','И'      ; SPACE, SYM SHIFT, M, N, B
  243.  
  244.    ; the following are SYM SHIFTed
  245.  
  246.    db 0,':','ю','?','/'       ; CAPS SHIFT, Z, X, C, V
  247.    db 'б','э',92,'х','ж'       ; A, S, D, F, G
  248.    db 131,132,133,'<','>'      ; Q, W, E, R, T
  249.    db '!','@','#','$','%'      ; 1, 2, 3, 4, 5
  250.    db '_',')','(',39,'&'       ; 0, 9, 8, 7, 6
  251.    db 34,';',130,']','['       ; P, O, I, U, Y
  252.    db 13,'=','+','-','^'       ; ENTER, L, K, J, H
  253.    db ' ',0,'.',',','*'      ; SPACE, SYM SHIFT, M, N, B
  254.  
  255.    ; the following are CAPS SHIFTed and SYM SHIFTed ("CTRL" key)
  256.  
  257.    db 0,26,'Ю',3,22           ; CAPS SHIFT, Z, X, C, V
  258.    db 'Б','Э',4,'Х','Ж'               ; A, S, D, F, G
  259.    db 17,23,5,18,20            ; Q, W, E, R, T
  260.    db 27,28,29,30,31           ; 1, 2, 3, 4, 5
  261.    db 127,0,134,'`',135      ; 0, 9, 8, 7, 6
  262.    db 16,15,9,21,25            ; P, O, I, U, Y
  263.    db 13,12,11,10,8            ; ENTER, L, K, J, H
  264.    db ' ',0,13,14,2          ; SPACE, SYM SHIFT, M, N, B
  265.  
  266.     endmodule