home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 21 / AACD 21.iso / AACD / Games / JST / sources / OSEmu / console.s next >
Encoding:
Text File  |  2001-03-19  |  2.0 KB  |  84 lines

  1.  
  2. **************************************************************************
  3. *   CONSOLE.DEVICE                                                       *
  4. **************************************************************************
  5.  
  6. ; < A0: event
  7. ; < A1: buffer
  8. ; < A2: keymap (ignored, NULL)
  9. ; < D1: buffer length
  10. ; > D0: keycode length
  11. ; > (A1): ASCII key
  12.  
  13. _RawKeyConvert:
  14.     cmp.b    #IECLASS_RAWKEY,(ie_Class,A0)
  15.     bne.b    .nok        ; not a key event: out!
  16.  
  17.     movem.l    D2/A2,-(A7)
  18.  
  19.     move.w    (ie_Code,A0),D2
  20.     bclr    #7,D2
  21.     bne.b    .kup        ; key up!
  22.  
  23.     cmp.w    #$4C,D2
  24.     bcs.b    .normal
  25.     cmp.w    #$50,D2
  26.     bcs.b    .arrows
  27.     cmp.w    #$60,D2
  28.     bcs.b    .functions
  29.     bra.b    .qualifiers        ; qualifiers, out!
  30.  
  31. .normal:
  32.     lea    .keytable_shifted(pc),A2
  33.     move.w    (ie_Qualifier,A0),D0
  34.     and.b    #IEQUALIFIER_LSHIFT!IEQUALIFIER_RSHIFT!IEQUALIFIER_CAPSLOCK,D0
  35.     bne.b    .shift
  36.     lea    .keytable(pc),A2
  37. .shift
  38.     move.b    (A2,D2.W),(A1)+
  39.     moveq    #1,D0
  40.     bra.b    .exit
  41. .arrows:
  42.     lea    .keytable(pc),A2
  43.     move.b    #$9B,(A1)+
  44.     move.b    (A2,D2.W),(A1)+
  45.     moveq    #2,D0
  46.     bra.b    .exit
  47.     
  48. .functions:
  49.     lea    .keytable(pc),A2
  50.     move.b    #$9B,(A1)+
  51.     move.b    (A2,D2.W),(A1)+
  52.     move.b    #$7E,(A1)+
  53.     moveq    #3,D0
  54.     bra.b    .exit
  55. .qualifiers:
  56.     moveq    #0,D0
  57. .exit
  58.     movem.l    (A7)+,D2/A2
  59.     rts
  60. .kup:
  61.     moveq    #0,D0
  62.     bra.b    .exit
  63. .nok:
  64.     moveq    #0,D0
  65.     rts
  66.  
  67. .keytable:
  68.     dc.b    '`','1','2','3','4','5','6','7','8','9','0','-','=','|','?','0'
  69.     dc.b    'q','w','e','r','t','y','u','i','o','p','[',']','?','1','2','3'
  70.     dc.b    'a','s','d','f','g','h','j','k','l',';',$27,'?','?','4','5','6'
  71.     dc.b    '<','z','x','c','v','b','n','m',',','.','/','?','?','7','8','9'
  72.     dc.b    ' ',$08,$09,$0A,$0A,$1B,$7F,'?','?','?','.','?'
  73. .arrtable:
  74.     dc.b    $41,$42,$43,$44
  75. .functable:
  76.     dc.b    $30,$31,$32,$33,$34,$35,$36,$37,$38,$39,'?','?','?','?','?',$3F
  77. .keytable_shifted:
  78.     dc.b    '~','!','@',$22,'$','%','6','7','8','9','0','-','=','|','?','0'
  79.     dc.b    'Q','W','E','R','T','Y','U','I','O','P','{','}','?','1','2','3'
  80.     dc.b    'A','S','D','F','G','H','J','K','L',':',$22,'?','?','4','5','6'
  81.     dc.b    '>','Z','X','C','V','B','N','M','<','>','?','?','?','7','8','9'
  82.     dc.b    ' ',$08,$09,$0A,$0A,$1B,$7F,'?','?','?','.','?'
  83.     even
  84.