home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0000 - 0009 / ibm0000-0009 / ibm0003.tar / ibm0003 / TPOWER54.ZIP / DEMOSRC.ARC / PREF.ASM < prev    next >
Encoding:
Assembly Source File  |  1989-07-10  |  6.5 KB  |  258 lines

  1. ;******************************************************
  2. ;            PREF.ASM 5.07
  3. ;     Copyright (c) TurboPower Software 1988.
  4. ; Portions copyright (c) Sunny Hill Software 1985, 1986
  5. ;     and used under license to    TurboPower Software
  6. ;         All rights reserved.
  7. ;******************************************************
  8.  
  9.     INCLUDE    TPCOMMON.ASM
  10.  
  11. ;******************************************************    Code
  12.  
  13. CODE    SEGMENT    BYTE PUBLIC
  14.  
  15.     ASSUME    CS:CODE
  16.  
  17.     PUBLIC    EscapeSequence
  18.  
  19. ;******************************************************    Key table
  20.  
  21. ;packed    table of key names for IBM extended keystroke sequences
  22.  
  23. Keys    LABEL BYTE
  24.     db   6,    "^Break"          ;0
  25.     db   6,    "AltEsc"          ;1
  26. Null    LABEL BYTE
  27.     db   0                  ;2
  28.     db   2,    "^@"              ;3
  29.     db   0                  ;4
  30.     db   0                  ;5
  31.     db   0                  ;6
  32.     db   0                  ;7
  33.     db   0                  ;8
  34.     db   0                  ;9
  35.     db   0                  ;10
  36.     db   0                  ;11
  37.     db   0                  ;12
  38.     db   0                  ;13
  39.     db   7,    "AltBksp"          ;14
  40.     db   5,    "ShTab"              ;15
  41.     db   4,    "AltQ"              ;16
  42.     db   4,    "AltW"              ;17
  43.     db   4,    "AltE"              ;18
  44.     db   4,    "AltR"              ;19
  45.     db   4,    "AltT"              ;20
  46.     db   4,    "AltY"              ;21
  47.     db   4,    "AltU"              ;22
  48.     db   4,    "AltI"              ;23
  49.     db   4,    "AltO"              ;24
  50.     db   4,    "AltP"              ;25
  51.     db   4,    "Alt["              ;26
  52.     db   4,    "Alt]"              ;27
  53.     db   8,    "AltEnter"          ;28
  54.     db   0                  ;29
  55.     db   4,    "AltA"              ;30
  56.     db   4,    "AltS"              ;31
  57.     db   4,    "AltD"              ;32
  58.     db   4,    "AltF"              ;33
  59.     db   4,    "AltG"              ;34
  60.     db   4,    "AltH"              ;35
  61.     db   4,    "AltJ"              ;36
  62.     db   4,    "AltK"              ;37
  63.     db   4,    "AltL"              ;38
  64.     db   4,    "Alt;"              ;39
  65.     db   4,    "Alt'"                ;40
  66.     db   4,    "Alt`"              ;41
  67.     db   0                  ;42
  68.     db   4,    "Alt\"              ;43
  69.     db   4,    "AltZ"              ;44
  70.     db   4,    "AltX"              ;45
  71.     db   4,    "AltC"              ;46
  72.     db   4,    "AltV"              ;47
  73.     db   4,    "AltB"              ;48
  74.     db   4,    "AltN"              ;49
  75.     db   4,    "AltM"              ;50
  76.     db   4,    "Alt,"              ;51
  77.     db   4,    "Alt."              ;52
  78.     db   4,    "Alt/"              ;53
  79.     db   0                  ;54
  80.     db   0                  ;55
  81.     db   0                  ;56
  82.     db   0                  ;57
  83.     db   0                  ;58
  84.     db   2,    "F1"              ;59
  85.     db   2,    "F2"              ;60
  86.     db   2,    "F3"              ;61
  87.     db   2,    "F4"              ;62
  88.     db   2,    "F5"              ;63
  89.     db   2,    "F6"              ;64
  90.     db   2,    "F7"              ;65
  91.     db   2,    "F8"              ;66
  92.     db   2,    "F9"              ;67
  93.     db   3,    "F10"              ;68
  94.     db   0                  ;69
  95.     db   0                  ;70
  96.     db   4,    "Home"              ;71
  97.     db   2,    "Up"              ;72
  98.     db   4,    "PgUp"              ;73
  99.     db   0                  ;74
  100.     db   4,    "Left"              ;75
  101.     db   6,    "Center"          ;76
  102.     db   5,    "Right"              ;77
  103.     db   0                  ;78
  104.     db   3,    "End"              ;79
  105.     db   4,    "Down"              ;80
  106.     db   4,    "PgDn"              ;81
  107.     db   3,    "Ins"              ;82
  108.     db   3,    "Del"              ;83
  109.     db   4,    "ShF1"              ;84
  110.     db   4,    "ShF2"              ;85
  111.     db   4,    "ShF3"              ;86
  112.     db   4,    "ShF4"              ;87
  113.     db   4,    "ShF5"              ;88
  114.     db   4,    "ShF6"              ;89
  115.     db   4,    "ShF7"              ;90
  116.     db   4,    "ShF8"              ;91
  117.     db   4,    "ShF9"              ;92
  118.     db   5,    "ShF10"              ;93
  119.     db   3,    "^F1"              ;94
  120.     db   3,    "^F2"              ;95
  121.     db   3,    "^F3"              ;96
  122.     db   3,    "^F4"              ;97
  123.     db   3,    "^F5"              ;98
  124.     db   3,    "^F6"              ;99
  125.     db   3,    "^F7"              ;100
  126.     db   3,    "^F8"              ;101
  127.     db   3,    "^F9"              ;102
  128.     db   4,    "^F10"              ;103
  129.     db   5,    "AltF1"              ;104
  130.     db   5,    "AltF2"              ;105
  131.     db   5,    "AltF3"              ;106
  132.     db   5,    "AltF4"              ;107
  133.     db   5,    "AltF5"              ;108
  134.     db   5,    "AltF6"              ;109
  135.     db   5,    "AltF7"              ;110
  136.     db   5,    "AltF8"              ;111
  137.     db   5,    "AltF9"              ;112
  138.     db   6,    "AltF10"          ;113
  139.     db   6,    "^PrtSc"          ;114
  140.     db   5,    "^Left"              ;115
  141.     db   6,    "^Right"          ;116
  142.     db   4,    "^End"              ;117
  143.     db   5,    "^PgDn"              ;118
  144.     db   5,    "^Home"              ;119
  145.     db   4,    "Alt1"              ;120
  146.     db   4,    "Alt2"              ;121
  147.     db   4,    "Alt3"              ;122
  148.     db   4,    "Alt4"              ;123
  149.     db   4,    "Alt5"              ;124
  150.     db   4,    "Alt6"              ;125
  151.     db   4,    "Alt7"              ;126
  152.     db   4,    "Alt8"              ;127
  153.     db   4,    "Alt9"              ;128
  154.     db   4,    "Alt0"              ;129
  155.     db   4,    "Alt-"              ;130
  156.     db   4,    "Alt="              ;131
  157.     db   5,    "^PgUp"              ;132
  158.     db   3,    "F11"              ;133
  159.     db   3,    "F12"              ;134
  160.     db   5,    "ShF11"              ;135
  161.     db   5,    "ShF12"              ;136
  162.     db   4,    "^F11"              ;137
  163.     db   4,    "^F12"              ;138
  164.     db   6,    "AltF11"          ;139
  165.     db   6,    "AltF12"          ;140
  166.     db   3,    "^Up"              ;141
  167.     db   6,    "^Minus"          ;142
  168.     db   7,    "^Center"          ;143
  169.     db   5,    "^Plus"              ;144
  170.     db   5,    "^Down"              ;145
  171.     db   4,    "^Ins"              ;146
  172.     db   4,    "^Del"              ;147
  173.     db   4,    "^Tab"              ;148
  174.     db   0                  ;149
  175.     db   0                  ;150
  176.     db   7,    "AltHome"          ;151
  177.     db   5,    "AltUp"              ;152
  178.     db   7,    "AltPgUp"          ;153
  179.     db   0                  ;154
  180.     db   7,    "AltLeft"          ;155
  181.     db   9,    "AltCenter"          ;156
  182.     db   8,    "AltRight"          ;157
  183.     db   0                  ;158
  184.     db   6,    "AltEnd"          ;159
  185.     db   7,    "AltDown"          ;160
  186.     db   7,    "AltPgDn"          ;161
  187.     db   6,    "AltIns"          ;162
  188.     db   6,    "AltDel"          ;163
  189.     db   0                  ;164
  190.     db   6,    "AltTab"          ;165
  191.     db   0
  192.  
  193. ;Pseudo-scan codes for TPMOUSE
  194. Mouse LABEL BYTE
  195.     db   8,    "ClkThree"          ;$E9
  196.     db   8,    "ClkRtCtr"          ;$EA
  197.     db   8,    "ClkLtCtr"          ;$EB
  198.     db   9,    "ClkCenter"          ;$EC
  199.     db   7,    "ClkBoth"          ;$ED
  200.     db   8,    "ClkRight"          ;$EE
  201.     db   7,    "ClkLeft"          ;$EF
  202.     db   0
  203.  
  204. ;*************************************************** GetEscapeSequence
  205.  
  206. ;function EscapeSequence(B : Byte) : StringPointer;
  207.  
  208. ;Return    a pointer to a text string representing    extended scan code B
  209.  
  210. ScanCode    EQU    BYTE PTR SS:[BX+4]
  211.  
  212. EscapeSequence    PROC FAR
  213.  
  214.     StackFrame
  215.     MOV    DX,DS            ;Save DS
  216.  
  217.     SetZero    CH
  218.     MOV    CL,ScanCode        ;Get character to seek
  219.     MOV    SI,offset Keys        ;SI points to Keys
  220.     CMP    CL,165            ;CL <= 165?
  221.     JBE    EsSearch
  222.     CMP    CL,0E9h            ;CL >= $E9?
  223.     JB    EsNull
  224.     CMP    CL,0EFh            ;CL <= $EF?
  225.     JA    EsNull
  226.     MOV    SI,offset Mouse        ;point to mouse    table
  227.     SUB    CL,0E9h            ;make CL relative to $E9
  228.     JMP    SHORT EsSearch        ;now do    the search
  229.  
  230. EsNull:
  231.     MOV    SI,offset Null        ;CS:SI points to Null
  232.     JMP    SHORT EsDone
  233.  
  234. EsSearch:
  235.     JCXZ    EsDone            ;Character #0? We're done
  236.     MOV    AX,CS
  237.     MOV    DS,AX            ;DS:SI points to Keys or Mouse
  238.     CLD                ;Forward direction
  239.     SetZero    AH            ;Clear top half    of length word
  240.  
  241. EsNext:
  242.     LODSB                ;Length    byte into AL
  243.     ADD    SI,AX            ;Skip over string
  244.     LOOP    EsNext            ;Repeat    for number of characters
  245.  
  246. EsDone:
  247.     MOV    DS,DX            ;Restore DS
  248.     MOV    DX,CS            ;Pointer Segment is current CS
  249.     MOV    AX,SI            ;SI points to length byte of string
  250.     RET    2
  251.  
  252. EscapeSequence    ENDP
  253.  
  254. CODE    ENDS
  255.  
  256.     END
  257.  
  258.