Little Big LAN Internal API

Packet types/descriptions

These are the formats of all inter-node communication packets. Anything one node needs from another is handled by one or several of these packets. All requesting packets have a header of 5 bytes, and then a certain number of bytes which are specific to that packet type. Answer packets have a similar structure.

The xxx_LINK modules transmit and receive all of these packets and know nothing of their contents except for the first two bytes which provide routing information.

;===========================================================================
;
;
; Packet commands:         NOTE: these are not up-to-date
;                                Changes may have been made!
;
;               00 = LOGON/OFF
;               01 =
;               02 = ABSOLUTE SECTOR R/W
;               03 = DISK INFO
;               04 = OPEN FILE
;               05 = CLOSE FILE
;               06 = FIND FIRST
;               07 = FIND NEXT
;               08 = MKDIR
;               09 = RMDIR
;               10 = 
;               11 = CREATE FILE
;               12 = DEL FILE
;               13 = READ FILE
;               14 = WRITE FILE
;               15 = ALTER NAME/ATTR
;               16 = LOCK/UNLOCK RECORD
;               17 =
;               18 = CHARACTER I/O
;
;

;--------------------------- LOGON/OFF -------------------------------------- 0
;
;  transfer description: LOGON/OFF
;
;  REQUEST:
;
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command = 0         +4
;
;  0                   +5    SPECIFIC
;  0                   +6
;  mode 1=ON, 0=OFF    +7
;  if logon:
;  time to hangup      +8/9     (in minutes)
;  password            +10..    (24 char max)
;
;
;
;  ANSWER:
;
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command/code        +4
;    80h = good
;    C0h = bad
;
;  0                   +5    SPECIFIC
;  err code            +6/7
;           0=ok
;           1=target has no potection
;           2=bad password



;--------------------------- ABSOLUTE SECTOR R/W ---------------------------- 2

;  transfer description: SECTOR R/W
;
;  REQUEST:
;
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command = 2         +4
;
;  drive               +5    SPECIFIC
;  mode 0=W, 1=R       +6
;  sector #            +7..10
;  sector size         +11/12
;  reserved            +13
;  if writing:
;  1 sector's data     +14...
;
;
;
;  ANSWER:
;
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command/code        +4
;    82h = good
;    C2h = bad
;
;  drive               +5    SPECIFIC
;  err code            +6/7
;  reserved            +8..10
;  sector size         +11/12
;  reserved            +13
;  if reading:
;  1 sector's data     +14..
;
;
;
;   NOTE: buffer must be big enough
;         to transfer 1 buffer
;
;          media <= 32  meg = 512  bytes
;          media <= 64  meg = 1024 bytes
;          media <= 128 meg = 2048 bytes
;          media <= 256 meg = 4096 bytes


;--------------------------- DISK INFO ---------------------------------- 3
;
;  transfer description: DISK INFO
;
;  REQUEST:
;
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command = 3         +4
;  
;  drive               +5    SPECIFIC
;  mode                +6
;
;
;  ANSWER:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command/code        +4
;    83h = good
;    C3h = bad
;  
;  drive               +5    SPECIFIC
;  err code            +6/7
;  bytes per sec       +8/9
;  secs per cluster    +10/11
;  clusters on disk    +12/13
;  free clusters       +14/15
;  media descriptor    +16


;--------------------------- OPEN ------------------------------------------ 4
;
;  transfer description: OPEN
;  
;  REQUEST:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command = 4         +4
;  
;  drive               +5    SPECIFIC
;  reserved 0          +6/7
;  sharing mode        +8
;  path                +9...
;  
;  
;  ANSWER:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command/code        +4
;    84h = good
;    C4h = bad
;  
;  drive               +5    SPECIFIC
;  err code            +6/7
;  handle or doserr    +8/9
;  file time           +10/11
;  file date           +12/13
;  file sz             +14..17


;-------------------------- CLOSE ------------------------------------------ 5
;
;  transfer description: CLOSE
;  
;  REQUEST:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command = 5         +4
;  drive               +5    SPECIFIC
;  handle              +6/7
;  
;  ANSWER:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command/code        +4
;    85h = good
;    C5h = bad
;  
;  drive               +5    SPECIFIC
;  err code            +6/7


;--------------------------- FIND FIRST ------------------------------------- 6
;
;  transfer description: FIND FIRST
;  
;  REQUEST:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command = 6         +4
;  
;  drive               +5    SPECIFIC
;  reserved 0          +6
;  attr                +7/8
;  path                +9...
;  
;  
;  ANSWER:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command/code        +4
;    86h = good
;    C6h = bad
;  
;  drive               +5    SPECIFIC
;  err code            +6/7
;                            IF OK:
;  nul (handle)        +8/9
;  reserved/dos        +10.30
;  attr                +31
;  file time           +32/33
;  file date           +34/35
;  file sz             +36..39
;  asciiz name         +40..52


;--------------------------- FIND NEXT -------------------------------------- 7
;
;  transfer description: FIND NEXT
;  
;  REQUEST:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command = 7         +4
;  
;  drive               +5    SPECIFIC
;  reserved 0          +6..8
;  "next" DTA data     +9..30
;  
;  
;  ANSWER:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command/code        +4
;    87h = good
;    C7h = bad
;  
;  drive               +5    SPECIFIC
;  err code            +6/7
;                            IF OK:
;  nul (handle)        +8/9
;  reserved/dos        +10.30
;  attr                +31
;  file time           +32/33
;  file date           +34/35
;  file sz             +36..39
;  asciiz name         +40..52


;--------------------------- MKDIR ------------------------------------------ 8
;
;  transfer description: MKDIR
;  
;  REQUEST:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command = 8         +4
;  
;  drive               +5    SPECIFIC
;  reserved  0         +6..8
;  path                +9...
;  
;  
;  ANSWER:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command/code        +4
;    88h = good
;    C8h = bad
;  
;  drive               +5    SPECIFIC
;  status 0=ok         +6/7


;--------------------------- RMDIR ------------------------------------------ 9
;
;  transfer description: RMDIR
;  
;  REQUEST:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command = 9         +4
;  
;  drive               +5    SPECIFIC
;  reserved 0          +6..8
;  path                +9...
;  
;  
;  ANSWER:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command/code        +4
;    89h = good
;    C9h = bad
;  
;  drive               +5    SPECIFIC
;  status 0=ok         +6/7


;--------------------------- CREATE FILE ----------------------------------- 11
;
;  transfer description: CREATE FILE
;  
;  REQUEST:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command = 11        +4
;  
;  drive               +5    SPECIFIC
;  reserved 0          +6
;  attr                +7/8
;  path                +9...
;  
;  
;  ANSWER:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command/code        +4
;    8Bh = good
;    CBh = bad
;  
;  drive               +5    SPECIFIC
;  status 0=ok         +6/7
;  handle/error        +8/9
;                            IF OK:
;  file time           +10/11
;  file date           +12/13


;--------------------------- DEL FILE -------------------------------------- 12
;
;  transfer description: DEL FILE
;  
;  REQUEST:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command = 12        +4
;  
;  drive               +5    SPECIFIC
;  mode                +6
;         0 = FCB type del
;         1 = asciiz type del
;  
;                      ASCIIZ:
;  reserved 0          +7/8
;  path                +9...
;  
;                      FCB
;  fcb drive           +7
;  fcb name            +8..18
;  current path        +19
;  
;  ANSWER:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command/code        +4
;    8Ch = good
;    CCh = bad
;  
;  drive               +5    SPECIFIC
;  status 0=ok         +6/7


;--------------------------- READ FILE ------------------------------------ 13
;
;  transfer description: READ
;  
;  REQUEST:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command = 13        +4
;  
;  drive               +5    SPECIFIC
;  handle              +6/7
;  start byte          +8..11
;  count               +12/13
;
;
;
;  ANSWER:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command/code        +4
;    8Dh = good
;    CDh = bad
;  
;  drive               +5    SPECIFIC
;  err code            +6/7
;  new pos             +8..11
;  count read          +12/13
;  data                +14...


;--------------------------- WRITE FILE ------------------------------------ 14
;
;  transfer description: WRITE
;  
;  REQUEST:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command = 14        +4
;  
;  drive               +5    SPECIFIC
;  handle              +6/7
;  
;  data start byte     +8..11
;  count               +12/13
;  data                +14...
;
;
;
;  ANSWER:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command/code        +4
;    8Eh = good
;    CEh = bad
;  
;  drive               +5    SPECIFIC
;  err code            +6/7
;  new pos.            +8..11
;  count written       +12/13


;--------------------------- General ALTER ------------------------------- 15
;
;  transfer description: ALTER attr
;  
;  REQUEST:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command = 15        +4
;  
;  drive               +5    SPECIFIC
;  mode 0/1            +6
;  attr                +7/8
;  path                +9...
;  
;  
;  ANSWER: if setting
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command/code        +4
;    8Fh = good
;    CFh = bad
;  
;  drive               +5    SPECIFIC
;  status 0=ok         +6/7
;  attr                +8/9


;--------------------------- General ALTER ------------------------------- 15
;
;  transfer description: CHANGE NAME/FCB
;  
;  REQUEST:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command = 15        +4
;  
;  drive               +5    SPECIFIC - non extended
;  mode 2              +6
;  drive               +7
;  current name        +8..18
;  reserved            +19..24
;  new name            +25..35
;  current path        +36..
;
;  drive               +5    SPECIFIC - extended
;  mode 2              +6
;  0FFh                +7
;  reserved            +8..12        8,9,10,11,12
;  attribute           +13
;  drive               +14 
;  current name        +15..25
;  reserved            +26..31
;  new name            +32..42
;  current path        +43..
;  
;  
;  ANSWER:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command/code        +4
;    8Fh = good
;    CFh = bad
;  
;  drive               +5    SPECIFIC
;  status 0=ok         +6/7


;--------------------------- General ALTER ------------------------------- 15
;
;  transfer description: CHANGE NAME/ASCIIZ
;  
;  REQUEST:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command = 15        +4
;  
;  drive               +5    SPECIFIC
;  mode 3              +6
;  reserved            +7/8
;  current pathname    +9..
;  new pathname        +??..
;  
;  
;  
;  ANSWER:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command/code        +4
;    8Fh = good
;    CFh = bad
;  
;  drive               +5    SPECIFIC
;  status 0=ok         +6/7


;--------------------------- General ALTER ------------------------------- 15
;
;  transfer description: ALTER/TIME
;  
;  REQUEST:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command = 15        +4
;  
;  drive               +5    SPECIFIC
;  mode 4/5            +6
;  handle              +7/8
;  time                +9/10
;  date                +11/12
;  
;  
;  ANSWER: if setting
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command/code        +4
;    8Fh = good
;    CFh = bad
;  
;  drive               +5    SPECIFIC
;  status 0=ok         +6/7
;  time                +8/9
;  date                +10/11


;--------------------------- LOCK/UNLOCK ---------------------------------- 16
;
;  transfer description: LOCK/UNLOCK FILE
;  
;  REQUEST:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command = 16        +4
;  
;  drive               +5    SPECIFIC
;  mode 0=lock 1=unlk  +6
;  handle              +7/8
;  start offset        +9..12
;  length              +13..16
;  
;  
;  ANSWER:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command/code        +4
;    90h = good
;    E0h = bad
;  
;  drive               +5    SPECIFIC
;  status 0=ok         +6/7



;--------------------------- DEVICE R/W ---------------------------------- 18
;
;  transfer description: R/W DEVICE
;  
;  REQUEST:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command =  18       +4
;  
;  mode: 00 = normal   +5    SPECIFIC
;        01 = ioctl
;  source device#      +6
;  targ device name    +7..14
;  write count         +15/16
;  read count          +17/18
;  write data          +19...
;  
;  
;  ANSWER:
;  
;  target node         +0    HEADER
;  sending node        +1
;  module id           +2
;  transaction#        +3
;  command/code        +4
;    92h = good
;    D2h = bad
;  
;  mode                +5    SPECIFIC
;  source device#      +6
;  write status 0=ok   +7/8
;  count written       +9/10
;  read status         +11/12
;  count read          +13/14
;  read data           +15..

Top of Programmer Stuff -or- Main Table of Contents -or- Top of Form