home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / ccdos / ccuibm.dat < prev    next >
Text File  |  2020-01-01  |  15KB  |  318 lines

  1.         include ccsdef.h
  2.  
  3.         public  keybd, dfkey, shkey, msuinit
  4.  
  5. ; some definitions
  6. kbint   equ     16h                     ; IBM, Bios keyboard interrupt
  7. shift   equ     200h                    ; IBM, synonym for right or left shift
  8. control equ     400h                    ; IBM, synonym for control shift
  9. alt     equ     800h                    ; IBM, synonym for alt shift
  10. enhanced equ    1000h                   ; IBM, enhanced keyboard code
  11.  
  12. rgt_shift equ   1                       ; IBM shift state bits
  13. lft_shift equ   2
  14. ctl_shift equ   4
  15. alt_shift equ   8
  16. numlock   equ   20h
  17.  
  18. maxkeys equ     200                     ; maximum number of key definitions
  19. maxstng equ     100                     ; maximum number of multi-char strings
  20. stbuflen equ    1000                    ; length of string buffer (bytes)
  21.  
  22. verb    equ     8000h                   ; dirlist flag: use verb action table
  23. strng   equ     4000h                   ; dirlist flag: use string action table
  24. scan    equ     100h                    ; keycode flag: code is scan not ascii
  25. braceop equ     7bh                     ; opening curly brace
  26. bracecl equ     7dh                     ; closing curly brace
  27.  
  28. datas   segment public 'datas'
  29.         extrn taklev:byte, comand:byte, intake:byte, flags:byte
  30.         extrn shkadr:word, stkadr:word, trans:byte
  31.                                                 ; system dependent references
  32.         extrn vtemu:byte                        ; emulator data [jrd]
  33.         extrn isccdos:byte                      ; MSDOS or CCDOS ? [zqf]
  34.  
  35. ;;;     System Independent local storage
  36.  
  37. tranbuf db      132 dup (?)             ; 132 byte translator work buffer
  38. crlf    db      cr,lf,'$'
  39. dfhelp1 db    cr,lf,' Enter key',27h,'s identification as a character',cr,lf
  40.         db      '  or as its numerical equivalent \{b##} of ascii',cr,lf
  41.         db      '  or as its scan code \{b##}'
  42.         db      cr,lf,'  or as SCAN followed by its scan code',cr,lf
  43.         db      '    where b is O for octal, X for hex, or D for decimal'
  44.         db      ' (default).',cr,lf,'    Braces {} are optional.'
  45.         db      cr,lf,'    Follow the identification with the new definition.'
  46.         db      cr,lf,' or CLEAR to restore initial key settings'
  47.         db      cr,lf,' or ON (def) for Bios i/o or OFF to use DOS i/o.$' ;IBM
  48. cdfhelp1 db     cr,lf,'╩Σ╚δ╝ⁿ',27h,'╡─╫╓╖√▒Ω╩╢',cr,lf
  49.         db      ' ╗≥╩╟╦ⁿ╡╚╝█╡─ ascii ╓╡: \{b##}',cr,lf
  50.         db      ' ╗≥╩╟╦ⁿ╡─╔¿├Φ┬δ: \{b##}'
  51.         db      cr,lf,' ╗≥╩╟ SCAN ║≤╜╙╦ⁿ╡─╔¿├Φ┬δ',cr,lf
  52.         db      '    ╒Γ└∩ b┐╔╥╘╩╟ O, X ╗≥ D,╖╓▒≡▒φ╩╛░╦╜°╓╞.╩«┴∙╜°╓╞║═╩«╜°╓╞╩²'
  53.         db      '╚▒╩í╘≥▒φ╩╛╩╟╩«╜°╓╞╩²',cr,lf,'   { }╩╟╚╬╤í╧ε.'
  54.         db      cr,lf,'    ▒Ω╩╢╖√║≤╜╙╨┬╡─╢¿╥σ.'
  55.         db      cr,lf,' ╗≥╩╟ CLEAR ╗╓╕┤╫ε│⌡╡─╝ⁿ╔Φ╓├'
  56.         db      cr,lf,' ╗≥╩╟ ON -- ╞⌠╢» BIOS ╡─ I/O (╚▒╩í)'
  57.         db      '╗≥ OFF -- ╩╣╙├ DOS ╡─ I/O.$'
  58. dfaskky db      cr,lf,' Push key to be defined: $'
  59. cdfaskky db     cr,lf,' ╩Σ╚δ╨Φ╥¬╢¿╥σ╡─╝ⁿ: $'
  60. dfaskdf db      ' Enter new definition: $'
  61. cdfaskdf db     ' ╩Σ╚δ╨┬╡─╢¿╥σ: $'
  62. verbbad db      cr,lf,' No such verb',cr,lf,'$'
  63. cverbbad db     cr,lf,' ├╗╙╨╒Γ╤∙╡─╢»╫≈',cr,lf,'$'
  64. strbad  db      cr,lf,' Not enough space for new string',cr,lf,'$'
  65. cstrbad db      cr,lf,' ├╗╙╨╫π╣╗╡─┐╒╝Σ╠ß╣⌐╕°╨┬╡─╫╓╖√┤«',cr,lf,'$'
  66. keyfull db      cr,lf,' No more space to define keys',cr,lf,'$'
  67. ckeyfull db     cr,lf,' ├╗╙╨╕ⁿ╢α╡─┐╒╝Σ╢¿╥σ╝ⁿ',cr,lf,'$'
  68. dfkopps db      cr,lf,' Opps! That is Kermit',27h,'s Escape Char.'
  69.         db      ' Translation is not permitted.',cr,lf,'$'
  70. cdfkopps db     cr,lf,' ▓╗╢╘! ─╟╩╟ Kermit ╧╡═│',27h,'╡─═╦│÷╫╓╖√.'
  71.          db     ' ╩╟▓╗╘╩╨φ╫¬╗╗╡─.',cr,lf,'$'
  72. shkmsg1 db      cr,lf,'Push key to be shown (? shows all): $'
  73. cshkmsg1 db     cr,lf,'╧╘╩╛╥╤╢¿╥σ╡─╝ⁿ ( ? ╧╘╩╛╦∙╙╨╡─╢¿╥σ): $'
  74. shkmsg2 db      ' decimal is defined as',cr,lf,'$'
  75. cshkmsg2 db     ' ╩«╜°╓╞╩²▒╗╢¿╥σ╬¬',cr,lf,'$'
  76. shkmsg3 db      cr,lf,'... more, push any key to continue ...$'
  77. cshkmsg3 db     cr,lf,'... ╗╣╙╨, ┤≥╚δ╚╬╥╗╝ⁿ╥╘╝╠╨°...$'
  78. kwarnmsg db     cr,lf,' Notice: this form of Set Key is obsolete$'
  79. ckwarnmsg db    cr,lf,' ╫ó╥Γ: ╒Γ╓╓╔Φ╓├╝ⁿ╡─╖╜╩╜╥╤▒╗╣²╩▒$'
  80.  
  81. ascmsg  db      ' Ascii char: $'
  82. cascmsg db      ' Ascii ╫╓╖√: $'
  83. scanmsg db      ' Scan Code $'
  84. cscanmsg db     ' ╔¿├Φ┬δ $'
  85. strngmsg db     ' String: $'
  86. cstrngmsg db    ' ╫╓╖√┤«: $' 
  87. verbmsg db      ' Verb: $'
  88. cverbmsg db     ' ╢»╫≈: $'
  89. noxmsg  db      ' Self, no translation.$'
  90. cnoxmsg db      ' ▒╛╥σ, ├╗╙╨╫¬╗╗.$'
  91. fremsg  db      cr,lf,' Free space: $'
  92. cfremsg db      cr,lf,' ╫╘╙╔┐╒╝Σ: $'
  93. kyfrdef db      ' key and $'
  94. ckyfrdef db     ' ╝ⁿ ║═ $'
  95. stfrdef db      ' string definitions, $'
  96. cstfrdef db     ' ┤«╡─╢¿╥σ, $'
  97. stfrspc db      ' string characters.',cr,lf,'$'
  98. cstfrspc db     ' ┤«╡─╫╓╖√.',cr,lf,'$'
  99.                                         ; translation tables
  100. keylist dw      maxkeys dup (0)         ; 16 bit keycodes, paralled by dirlist
  101. dirlist dw      maxkeys dup (0)         ; director {v+s} + {index | new char}
  102. sptable dw      maxstng dup (0)         ; list of asciiz string offsets
  103. stbuf   dw      stbuflen dup (0)        ; buffer for strings
  104. strmax  dw      stbuf                   ; first free byte in stbuf
  105. listptr dw      ?                       ; item number for keylist and dirlist
  106. nkeys   dw      0                       ; number of actively defined keys
  107. keycode dw      ?                       ; ascii/scan code for key
  108. kbtemp  dw      ?                       ; scratch storage for translator
  109. brace   db      ?                       ; brace detected flag byte
  110. oldform db      0                       ; old form Set Key, if non-zero
  111. verblen dw      ?                       ; length of user's verb (work temp)
  112. kwcnt   dw      ?                       ; number of keywords (work temp)
  113. msutake db      ?                       ; if being run from take file or not
  114. twelve  dw      12d
  115. dosflg  db      0
  116. ;;;     End System Independent Data Area
  117.  
  118. ;;;     System Dependent Data Area
  119. ;       edit dfhelp2 to include nice list of verbs for this system.
  120. dfhelp2 db      cr,lf,' Enter either  \Kverb  for a Kermit action verb',cr,lf
  121.         db      ' or a replacement string  (single byte binary numbers are'
  122.         db      ' \{b##})',cr,lf,' or push Return to undefine a key, ^C to'
  123.         db      ' retain current definition.'
  124.         db      cr,lf,' Braces {} are optional, and strings maybe enclosed in'
  125.         db      ' them.',cr,lf,' Strings may not begin with the character'
  126.         db      ' combinations of  \k  or  \{k',cr,lf
  127.         db      '    (start with a { brace instead).',cr,lf,lf
  128.         db      ' Verbs are as follows. VT102 keys (arrows and keypad):',cr,lf
  129.         db   '   uparr, dnarr, lfarr, rtarr, kpminus, kpcoma, kpdot, kpenter,'
  130.         db      cr,lf
  131.         db   '   Gold (same as PF1), PF1, PF2, PF3, PF4, kp0, ... kp9'
  132.         db      cr,lf,' Kermit screen control and actions:',cr,lf
  133.         db   '   upscn, dnscn, homscn, endscn, upone, dnone, prtscn, dump,'
  134.         db      cr,lf
  135.         db   '   logoff, logon, termtype, reset, holdscrn, modeline, break,'
  136.         db      ' lbreak,'
  137.         db      cr,lf
  138.         db   '   hangup, null (send one), terminalR, terminalS, DOS, help,'
  139.         db   ' status, exit'
  140.         db      cr,lf,'$'
  141.  
  142.         ; Aliaskey: keys having aliases - same ascii code but more than one
  143.         ; scan code, as on auxillary keypads. Use just scan codes with these.
  144.         ; Alternative use: force ascii keys to report out just scan codes.
  145.         ; Table format: high byte = scan code, low byte = ascii code.
  146.         ; Contents are machine dependent.
  147. cdfhelp2 db     cr,lf,' ╝ⁿ╚δ╫≈╬¬╥╗╕÷ Kermit ╢»╫≈╡─ \Kverb  ',cr,lf
  148.          db     '╗≥╒▀ ╝ⁿ╚δ╥╗╕÷╠µ╗╗┤«(╡Ñ╫╓╜┌╢■╜°╓╞╩²╡─╕±╩╜╩╟ \{b##} )'
  149.          db     cr,lf,' ╗≥ ░┤ Return ╖┼╞·╝ⁿ╢¿╥σ, ░┤ ^C ▒ú┴⌠╝ⁿ╡─╡▒╟░╢¿╥σ.'
  150.          db     cr,lf,' { }▒φ╩╛╚╬╤í╧ε, ╫╓╖√┤«┐╔─▄╩╣╙├{ }.'
  151.          db     cr,lf,' ╫╓╖√┤«┐╔╥╘▓╗╙├╥╘ \K ╗≥ \{K ┐¬═╖╡─╫╓╖√╫Θ║╧',cr,lf
  152.          db     '(╢°┤·╥╘ { ┐¬═╖).',cr,lf,lf
  153.          db     ' ╙╨╧┬┴╨╢»┤╩┐╔╥╘╩╣╙├:'
  154.          db     cr,lf,' VT102 ╘╩╨φ╡─╝ⁿ(╖╜╧≥╝ⁿ║═╩²╫╓╨í╝ⁿ┼╠):',cr,lf
  155.          db  '   uparr, dnarr, lfarr, rtarr, kpminus, kpcoma, kpdot, kpenter,'
  156.          db     cr,lf
  157.          db  '   Gold (\3 PF1), PF1, PF2, PF3, PF4, kp0, ...kp9'
  158.          db     cr,lf,' Kermit ╞┴─╗┐╪╓╞╙δ▓┘╢»╫≈:',cr,lf
  159.          db  '   upscn, dnscn, homscn, endscn, upone, dnone, prtscn, dump,'
  160.          db     cr,lf
  161.          db  '   logoff, logon, termtype, reset, holdscrn, modeline, break,'
  162.          db     '  lbread,'
  163.          db     cr,lf
  164.          db  '   hangup, null (╖ó╦═╥╗╕÷), terminalR, terminalS, DOS, help,'
  165.          db  ' status, exit'
  166.          db     cr,lf,'$'
  167.  
  168.         ; Aliaskey: keys having aliases - same ascii code but more than one
  169.         ; scan code, as on auxillary keypads. Use just scan codes with these.
  170.         ; Alternative use: force ascii keys to report out just scan codes.
  171.         ; Table format: high byte = scan code, low byte = ascii code.
  172.         ; Contents are machine dependent.
  173. aliaskey dw     (14*scan)+bs            ; Backspace key [hi=scan, lo=ascii]
  174.         dw      (55*scan)+'*'           ; keypad asterisk
  175.         dw      (74*scan)+'-'           ; keypad minus
  176.         dw      (78*scan)+'+'           ; keypad plus
  177.         dw      (71*scan)+'7'           ; keypad numeric area
  178.         dw      (72*scan)+'8'
  179.         dw      (73*scan)+'9'
  180.         dw      (75*scan)+'4'
  181.         dw      (76*scan)+'5'
  182.         dw      (77*scan)+'6'
  183.         dw      (79*scan)+'1'
  184.         dw      (80*scan)+'2'
  185.         dw      (81*scan)+'3'
  186.         dw      (82*scan)+'0'
  187.         dw      (83*scan)+'.'
  188.         dw      (83*scan)+','           ; German keypad had comma vs dot
  189.         dw      (15*scan)+tab
  190. aliaslen equ    ($-aliaskey) shr 1      ; number of words in aliaskey table
  191.  
  192. kverbs  db      48                      ; number of table entries below
  193.         mkeyw   'uparr',uparrw          ; independent of ordering and case!
  194.         mkeyw   'dnarr',dnarrw          ; mkeyw 'name',procedure entry point
  195.         mkeyw   'lfarr',lfarr
  196.         mkeyw   'rtarr',rtarr
  197.         mkeyw   'gold',pf1
  198.         mkeyw   'pf1',pf1
  199.         mkeyw   'pf2',pf2
  200.         mkeyw   'pf3',pf3
  201.         mkeyw   'pf4',pf4
  202.         mkeyw   'kp0',kp0
  203.         mkeyw   'kp1',kp1
  204.         mkeyw   'kp2',kp2
  205.         mkeyw   'kp3',kp3
  206.         mkeyw   'kp4',kp4
  207.         mkeyw   'kp5',kp5
  208.         mkeyw   'kp6',kp6
  209.         mkeyw   'kp7',kp7
  210.         mkeyw   'kp8',kp8
  211.         mkeyw   'kp9',kp9
  212.         mkeyw   'kpminus',kpminus
  213.         mkeyw   'kpcoma',kpcoma
  214.         mkeyw   'kpenter',kpenter
  215.         mkeyw   'kpdot',kpdot
  216.         mkeyw   'termtype',vtans52
  217.         mkeyw   'reset',vtinit
  218.         mkeyw   'holdscrn',khold
  219.         mkeyw   'dnscn',dnwpg
  220.         mkeyw   'upscn',upwpg
  221.         mkeyw   'endscn',endwnd
  222.         mkeyw   'homscn',homwnd
  223.         mkeyw   'upone',upone
  224.         mkeyw   'dnone',dnone
  225.         mkeyw   'prtscn',trnprs
  226.         mkeyw   'dump',dmpscn
  227.         mkeyw   'modeline',trnmod
  228.         mkeyw   'break',sendbr
  229.         mkeyw   'lbreak',sendbl
  230.         mkeyw   'hangup',chang
  231.         mkeyw   'null',snull
  232.         mkeyw   'logon',klogon
  233.         mkeyw   'logoff',klogof
  234.         mkeyw   'terminalR',vtrmac
  235.         mkeyw   'terminalS',vtsmac
  236.         mkeyw   'DOS',cdos
  237.         mkeyw   'help',cquery
  238.         mkeyw   'status',cstatus
  239.         mkeyw   'exit',cquit
  240.  
  241.                                         ; Initialization data.
  242. kbdinlst equ    this byte     ; Kermit IBM initialization time keyboard setup
  243.         mkeyw   '\kgold',scan+59        ; F1    mkeyw 'definition',keycode
  244.         mkeyw   '\kpf2',scan+60         ; F2
  245.         mkeyw   '\kpf3',scan+61         ; F3
  246.         mkeyw   '\kpf4',scan+62         ; F4
  247.         mkeyw   '\kkp0',scan+shift+90   ; VT100 keypad numeric area, SF7
  248.         mkeyw   '\kkp1',scan+shift+86   ; SF3
  249.         mkeyw   '\kkp2',scan+shift+87   ; SF4
  250.         mkeyw   '\kkp3',scan+shift+88   ; SF5
  251.         mkeyw   '\kkp4',scan+67         ; F9
  252.         mkeyw   '\kkp5',scan+68         ; F10
  253.         mkeyw   '\kkp6',scan+shift+84   ; SF1
  254.         mkeyw   '\kkp7',scan+63         ; F5
  255.         mkeyw   '\kkp8',scan+64         ; F6
  256.         mkeyw   '\kkp9',scan+65         ; F7
  257.         mkeyw   '\kkpenter',scan+shift+89 ; SF6
  258.         mkeyw   '\kkpcoma',scan+shift+85  ; SF2
  259.         mkeyw   '\kkpminus',scan+66     ; F8
  260.         mkeyw   '\kkpdot',scan+shift+91 ; SF8
  261.         mkeyw   '\kuparr',scan+72       ; VT100 cursor keys (arrows)
  262.         mkeyw   '\kdnarr',scan+80
  263.         mkeyw   '\klfarr',scan+75
  264.         mkeyw   '\krtarr',scan+77
  265.         mkeyw   '\kupscn',scan+73       ; PgUp  Kermit screen roll back keys
  266.         mkeyw   '\kdnscn',scan+81       ; PgDn
  267.         mkeyw   '\khomscn',scan+71      ; Home
  268.         mkeyw   '\kendscn',scan+79      ; End
  269.         mkeyw   '\kupone',scan+control+132 ; Ctrl PgUp  one line scrolls
  270.         mkeyw   '\kdnone',scan+control+118 ; Ctrl PgDn
  271.         mkeyw   '\kuparr',scan+enhanced+72 ; Enhanced kbd duplicate keys
  272.         mkeyw   '\kdnarr',scan+enhanced+80
  273.         mkeyw   '\klfarr',scan+enhanced+75
  274.         mkeyw   '\krtarr',scan+enhanced+77
  275.         mkeyw   '\kupscn',scan+enhanced+73 ; PgUp Kermit screen roll back keys
  276.         mkeyw   '\kdnscn',scan+enhanced+81 ; PgDn
  277.         mkeyw   '\khomscn',scan+enhanced+71 ; Home
  278.         mkeyw   '\kendscn',scan+enhanced+79     ; End
  279.         mkeyw   '\kupone',scan+control+enhanced+132 ;Ctrl PgUp one line scroll
  280.         mkeyw   '\kdnone',scan+control+enhanced+118 ; Ctrl PgDn
  281.         mkeyw   '\kmodeline',scan+74    ; Kermit toggle mode line  Keypad -
  282.         mkeyw   '\ktermtype',scan+alt+130 ; Kermit toggle terminal type  Alt -
  283.         mkeyw   '\kreset',scan+alt+131  ; Kermit reset terminal  Alt =
  284.         mkeyw   '\kprtscn',scan+control+114 ; Kermit toggle prn scrn  Ctrl *
  285.         mkeyw   '\kdump',scan+control+117 ; Kermit Dump Screen  Ctrl End
  286.         mkeyw   '*',scan+55             ; keypad asterisk
  287.         mkeyw   '*',scan+enhanced+55    ; Enhanced kbd keypad asterisk
  288. ;;;     mkeyw   '-',scan+74             ; keypad minus
  289.         mkeyw   '+',scan+78             ; keypad plus
  290.         mkeyw   '.',scan+shift+83       ; IBM numeric keypad
  291.         mkeyw   '0',scan+shift+82
  292.         mkeyw   '1',scan+shift+79
  293.         mkeyw   '2',scan+shift+80
  294.         mkeyw   '3',scan+shift+81
  295.         mkeyw   '4',scan+shift+75
  296.         mkeyw   '5',scan+shift+76
  297.         mkeyw   '6',scan+shift+77
  298.         mkeyw   '7',scan+shift+71
  299.         mkeyw   '8',scan+shift+72
  300.         mkeyw   '9',scan+shift+73
  301.         mkeyw   tab,scan+15             ; regular Tab key, made special
  302.         mkeyw   cr,scan+enhanced+cr     ; Enhanced kbd grey Enter key
  303.         mkeyw   lf,scan+enhanced+control+lf ; Enhanced grey Control Enter
  304.         mkeyw   '/',scan+enhanced+'/'   ; Enhanced kbd grey foward slash
  305.         mkeyw   '\0',scan+control+3     ; Control at-sign sends null
  306.         mkeyw   '\0',scan+control+shift+3 ; Control Shift at-sign sends null
  307.         mkeyw   '\x7f',scan+83          ; Del key sends DEL
  308.         mkeyw   '\x7f',scan+enhanced+83 ; Enhanced duplicate DEL sends DEL
  309.         mkeyw   '\x7f',scan+14          ; Backspace key sends DEL
  310.         mkeyw   '\kexit',scan+alt+45    ; Exit connect mode  Alt X
  311.         mkeyw   '\kstatus',scan+alt+31  ; Connect mode status  Alt S
  312.         mkeyw   '\kbreak',scan+alt+48   ; Send a Break  Alt B
  313.         mkeyw   '\kbreak',scan+control+0; Control-Break sends a Break too
  314.         mkeyw   '\khelp',scan+alt+35    ; Connect mode drop down menu  Alt H
  315.         dw      0               ; end of table marker
  316.  
  317. datas   ends
  318.