home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / PACKET / RLI120.ARK / DCMD.MAC < prev    next >
Text File  |  1987-05-11  |  5KB  |  167 lines

  1. ; DCMD.MAC - 5/11/87 - Command dispatch.
  2.  
  3.     .z80
  4.     .xlist
  5.     maclib    TNC.LIB
  6.     tncdefs
  7.     .list
  8.  
  9.     entry dcmd
  10.  
  11.     external    f1l,erwhat,logtxt,flds,fcb1,mode
  12.  
  13. defcmd    macro    adr,chars,args,modes
  14.     external    adr
  15.     dw    adr
  16.     dw    chars
  17.     db    args
  18.     db    modes
  19.     endm
  20.  
  21.     cseg
  22. dcmd:    ld    a,(f1l)
  23.     or    a        ; Blank line?
  24.     ret    z        ; Yes, ignore it
  25.     cp    3        ; > 2 chars?
  26.     jp    nc,erwhat    ; Yes, what is it?
  27.     ld    hl,(fcb1+1)    ; Command
  28.     ld    (logtxt),hl    ; Save command for logging
  29.     ld    a,(flds)
  30.     ld    c,a        ; (C) has # fields user typed
  31.     ld    b,tblitm    ; (B) has # items in table
  32.     ld    de,6        ; Item size
  33.     ld    ix,tbl        ; First command
  34. dca:    ld    a,(mode)
  35.     and    (ix+5)        ; Do it in this mode?
  36.     jr    z,dcb        ; No
  37.     ld    a,(ix+4)    ; Fields in this command
  38.     cp    c        ; Right # fields?
  39.     jr    nz,dcb        ; No
  40.     ld    a,(ix+3)    ; First letter, this command
  41.     cp    l        ; First letter match?
  42.     jr    nz,dcb        ; No
  43.     ld    a,(ix+2)    ; Second letter
  44.     cp    h        ; Same?
  45.     jr    z,dcc        ; Yes, match
  46.     cp    '*'        ; Wildcard?
  47.     jr    z,dcc        ; Yes, match
  48. dcb:    add    ix,de        ; Increment to next command
  49.     dec    b        ; Count the command we checked
  50.     jr    nz,dca        ; More to check
  51.     jp    erwhat        ; No such command
  52.  
  53. ; Got a match, pick up address and go do it.
  54.  
  55. dcc:    ld    l,(ix)        ; Low byte procedure entry
  56.     ld    h,(ix+1)    ; High byte procedure entry
  57.     jp    (hl)        ; Go do it to it
  58.  
  59. ; gmode - GateWay commands
  60. ; lmode - Local console commands
  61. ; smode - Remote sysop commands
  62. ; umode - User commands
  63.  
  64. ;        Entry    Cmd     # flds    mode
  65.  
  66. tbl:    defcmd    syson,    '@ ',    1,    umode
  67.     defcmd    sysoff,    '@ ',    1,    smode
  68.     defcmd    auto,    'A ',    1,    lmode
  69.     defcmd    hidfil,    'AN',    2,    lmode+smode
  70.     defcmd    hidfil,    'AS',    2,    lmode+smode
  71.     defcmd    logout,    'B ',    1,    smode+umode
  72.     defcmd    gbye,    'B ',    1,    gmode
  73.     defcmd    bsfila,    'BA',    2,    lmode
  74.     defcmd    bsfilb,    'BB',    2,    lmode
  75.     defcmd    settim,    'C ',    1,    lmode+smode
  76.     defcmd    cnusr,    'C ',    2,    lmode
  77.     defcmd    gcon1,    'C ',    1,    gmode
  78.     defcmd    gcon2,    'C ',    2,    gmode
  79.     defcmd    gcon4,    'C ',    4,    gmode
  80.     defcmd    dload,    'D ',    2,    umode
  81.     defcmd    disp,    'D ',    2,    lmode+smode
  82.     defcmd    lstusr,    'DB',    1,    lmode+smode
  83.     defcmd    lstusr,    'DE',    1,    lmode+smode
  84.     defcmd    lstusr,    'DL',    1,    lmode+smode
  85.     defcmd    disp,    'DP',    2,    lmode+smode
  86.     defcmd    lstusr,    'DS',    1,    lmode+smode
  87.     defcmd    lstusr,    'DU',    1,    lmode+smode
  88.     defcmd    edmsg,    'E ',    2,    lmode+smode
  89.     defcmd    edfil,    'EF',    2,    lmode
  90.     defcmd    etmsg,    'ET',    2,    lmode++smode+umode
  91.     defcmd    eusr1,    'EU',    1,    lmode+smode
  92.     defcmd    eusr2,    'EU',    2,    lmode+smode
  93.     defcmd    filmsg,    'F ',    3,    lmode+smode
  94.     defcmd    filmsg,    'FA',    3,    lmode+smode
  95.     defcmd    filusr,    'FB',    2,    lmode+smode
  96.     defcmd    filusr,    'FL',    2,    lmode+smode
  97.     defcmd    gate,    'G ',    1,    umode
  98.     defcmd    untall,    'G ',    1,    lmode+smode
  99.     defcmd    unt,    'GM',    1,    lmode+smode
  100.     defcmd    gatoff,    'GN',    1,    lmode+smode
  101.     defcmd    unt,    'GR',    1,    lmode+smode
  102.     defcmd    untusr,    'GU',    1,    lmode+smode
  103.     defcmd    gaton,    'GY',    1,    lmode+smode
  104.     defcmd    untusz,    'GZ',    1,    lmode+smode
  105.     defcmd    help,    'H ',    1,    umode
  106.     defcmd    togmen,    'H ',    1,    lmode
  107.     defcmd    info,    'I ',    1,    umode
  108.     defcmd    prthrd,    'J ',    1,    lmode+smode+umode+gmode
  109.     defcmd    klmsg1,    'K ',    1,    lmode+umode
  110.     defcmd    klmsg3,    'KF',    1,    lmode+smode
  111.     defcmd    klmsg3,    'KM',    1,    lmode+umode
  112.     defcmd    klmsg1,    'KT',    1,    lmode+umode
  113.     defcmd    klmsg2,    'K ',    2,    lmode+umode
  114.     defcmd    klmsg2,    'KT',    2,    lmode+umode
  115.     defcmd    lstmsg,    'LL',    2,    lmode+umode
  116.     defcmd    lstmsg,    'L*',    1,    lmode+umode
  117.     defcmd    lstmsg,    'L*',    2,    lmode+umode
  118.     defcmd    gmon,    'M ',    1,    gmode
  119.     defcmd    smsg3,    'M*',    3,    lmode+smode
  120.     defcmd    smsg5,    'M*',    5,    lmode+smode
  121.     defcmd    smsg7,    'M*',    7,    lmode+smode
  122.     defcmd    renfil,    'N ',    3,    lmode+smode
  123.     defcmd    setnam,    'N ',    2,    umode
  124.     defcmd    ussetx, 'NE',    1,    lmode+umode
  125.     defcmd    usseth, 'NH',    2,    lmode+umode
  126.     defcmd    opfila,    'OA',    2,    lmode
  127.     defcmd    opfilb,    'OB',    2,    lmode
  128.     defcmd    shpath,    'P ',    2,    lmode+umode+gmode
  129.     defcmd    paramc,    'P*',    2,    lmode+smode
  130.     defcmd    exit,    'Q ',    1,    lmode
  131.     defcmd    gater,    'R ',    1,    gmode
  132.     defcmd    rdmsg1,    'R ',    1,    lmode+umode
  133.     defcmd    rdmsg2,    'R ',    2,    lmode+umode
  134.     defcmd    rdmsg3,    'RM',    1,    lmode+umode
  135.     defcmd    smsg1,    'S*',    1,    lmode+umode
  136.     defcmd    smsg2,    'S*',    2,    lmode+umode
  137.     defcmd    smsg4,    'S*',    4,    lmode+umode
  138.     defcmd    smsg6,    'S*',    6,    lmode+umode
  139.     defcmd    talk,    'T ',    1,    umode
  140.     defcmd    lterma,    'TA',    1,    lmode
  141.     defcmd    ltermb,    'TB',    1,    lmode
  142.     defcmd    rcvfil,    'U ',    2,    lmode+umode
  143.     defcmd    gunp,    'U ',    1,    gmode
  144.     defcmd    rcvfil,    'UA',    2,    lmode+smode
  145.     defcmd    copfil,    'V ',    3,    lmode+smode
  146.     defcmd    dir,    'W ',    1,    lmode+smode+umode
  147.     defcmd    dira,    'WA',    1,    lmode+smode
  148.     defcmd    dirn,    'WN',    1,    lmode+smode+umode
  149.     defcmd    dirs,    'WS',    1,    lmode+smode
  150.     defcmd    dir,    'W ',    2,    lmode+smode+umode
  151.     defcmd    dira,    'WA',    2,    lmode+smode
  152.     defcmd    dirn,    'WN',    2,    lmode+smode+umode
  153.     defcmd    dirs,    'WS',    2,    lmode+smode
  154.     defcmd    togmen,    'X ',    1,    umode+gmode
  155.     defcmd    fwd1,    'X ',    1,    lmode
  156.     defcmd    fwd2,    'X ',    2,    lmode
  157.     defcmd    fwd3,    'XI',    1,    lmode
  158.     defcmd    fwd4,    'XI',    2,    lmode
  159.     defcmd    chgca,    'YC',    2,    lmode+smode
  160.     defcmd    chgf,    'YF',    2,    lmode+smode
  161.     defcmd    chgl,    'YL',    2,    lmode+smode
  162.     defcmd    kilfil,    'Z ',    2,    lmode+smode
  163. tbllen    equ    $-tbl
  164. tblitm    equ    tbllen/6
  165.     end
  166. 
  167.