home *** CD-ROM | disk | FTP | other *** search
/ Beijing Paradise BBS Backup / PARADISE.ISO / software / BBSDOORW / SHSUCD11.ZIP / NETBIOS.ADS < prev    next >
Text File  |  1995-06-29  |  6KB  |  144 lines

  1. --************************************************************************
  2. --
  3. --  NETBIOS.ADS               Version 3.0
  4. --
  5. --  A copyright-reserved, free use program.
  6. --  (c)John H. McCoy, 1994, 1995, Sam Houston St. Univ., TX 77341-2206
  7. --************************************************************************
  8.  
  9. with system, unchecked_conversion, unchecked_deallocation;
  10. with Types; use Types;
  11.  
  12. package NetBIOS is
  13.  
  14. -- NetBIOS Status codes
  15.  
  16. type NB_ReturnCodes is new byte;
  17.  
  18. NB_Ok                      : constant NB_ReturnCodes := 16#00#;
  19. NB_InvalidBufferLength     : constant NB_ReturnCodes := 16#01#;
  20. NB_InvalidCommand          : constant NB_ReturnCodes := 16#03#;
  21. NB_CommandTimeOut          : constant NB_ReturnCodes := 16#05#;
  22. NB_IncompleteReceive       : constant NB_ReturnCodes := 16#06#;
  23. NB_InvalidSessionNumber    : constant NB_ReturnCodes := 16#08#;
  24. NB_NoResourcesAvailable    : constant NB_ReturnCodes := 16#09#;
  25. NB_SessionClosed           : constant NB_ReturnCodes := 16#0A#;
  26. NB_CommandCanceled         : constant NB_ReturnCodes := 16#0B#;
  27. NB_DuplicateLocalName      : constant NB_ReturnCodes := 16#0D#;
  28. NB_NameTableFull           : constant NB_ReturnCodes := 16#0E#;
  29. NB_ActiveNameDeregistered  : constant NB_ReturnCodes := 16#0F#;
  30. NB_SessionTableFull        : constant NB_ReturnCodes := 16#11#;
  31. NB_IllegalNameNumber       : constant NB_ReturnCodes := 16#13#;
  32. NB_NoAnswer                : constant NB_ReturnCodes := 16#14#;
  33. NB_NameNotFound            : constant NB_ReturnCodes := 16#15#;
  34. NB_NameAlreadyClaimed      : constant NB_ReturnCodes := 16#16#;
  35. NB_NameDeleted             : constant NB_ReturnCodes := 16#17#;
  36. NB_SessionEndedAbnormally  : constant NB_ReturnCodes := 16#18#;
  37. NB_NameConflictDetected    : constant NB_ReturnCodes := 16#19#;
  38. NB_InterfaceBusy           : constant NB_ReturnCodes := 16#21#;
  39. NB_ToManyCommandsQueued    : constant NB_ReturnCodes := 16#22#;
  40. NB_NetBiosNotLoaded        : constant NB_ReturnCodes := 16#FB#;
  41. NB_CommandPending          : constant NB_ReturnCodes := 16#FF#;
  42.  
  43.  
  44. -- NetBIOS Exceptions
  45.  
  46. NBX_ReceiveTimeOut, NBX_SendTimeOut, NBX_SessionClosed, NBX_NoListener,
  47. NBX_NameAlreadyClaimed, NBX_SessionAborted, NBX_NetBiosNotLoaded,
  48. NBX_GeneralError: exception;
  49.  
  50. -- NetBIOS Command codes
  51.  
  52. type NB_CommandCodes is new byte;
  53.  
  54. NB_AdapterStatus        : constant NB_CommandCodes := 16#33#;
  55. NB_AdapterStatus_NoWait : constant NB_CommandCodes := 16#B3#;
  56. NB_AddName              : constant NB_CommandCodes := 16#30#;
  57. NB_AddName_NoWait       : constant NB_CommandCodes := 16#B0#;
  58. NB_DelName              : constant NB_CommandCodes := 16#31#;
  59. NB_DelName_NoWait       : constant NB_CommandCodes := 16#B1#;
  60. NB_Call                 : constant NB_CommandCodes := 16#10#;
  61. NB_Call_NoWait          : constant NB_CommandCodes := 16#90#;
  62. NB_Cancel               : constant NB_CommandCodes := 16#35#;
  63. NB_Listen               : constant NB_CommandCodes := 16#11#;
  64. NB_Listen_NoWait        : constant NB_CommandCodes := 16#91#;
  65. NB_Hangup               : constant NB_CommandCodes := 16#12#;
  66. NB_Hangup_NoWait        : constant NB_CommandCodes := 16#92#;
  67. NB_Send                 : constant NB_CommandCodes := 16#14#;
  68. NB_Send_NoWait          : constant NB_CommandCodes := 16#94#;
  69. NB_Receive              : constant NB_CommandCodes := 16#15#;
  70. NB_Receive_NoWait       : constant NB_CommandCodes := 16#95#;
  71. NB_Reset                : constant NB_CommandCodes := 16#32#;
  72. NB_SessionStatus        : constant NB_CommandCodes := 16#34#;
  73. NB_SessionStatus_NoWait : constant NB_CommandCodes := 16#B4#;
  74.  
  75. -- NetBIOS Command Block
  76.  
  77. type NetBiosCmdBlks is
  78. record
  79.    Command           : NB_CommandCodes := 0;
  80.    ReturnCode        : NB_ReturnCodes := NB_NetBiosNotLoaded;
  81.    LocalSession      : byte := 0;
  82.    NameNumber        : byte := 0;
  83.    BufferPtr         : system.address := 0;
  84.    Bufferlength      : word := 0;
  85.    CallName          : string16 := (others => ascii.nul);
  86.    Name              : string16 := (others => ascii.nul);
  87.    ReceiveTimeOut    : byte := 0;   -- in half seconds
  88.    SendTimeOut       : byte := 0;
  89.    PostCallBackPtr   : system.address := 0;
  90.    LanAdapter        : byte := 0;
  91.    CommandStatus     : NB_ReturnCodes := 0;
  92.    Reserved          : bytes(1..14) := (others => 0);
  93. end record;
  94.  
  95. type ncbAccess is access NetBiosCmdBlks;
  96. procedure ZapNCB is new unchecked_deallocation(NetBiosCmdBlks,ncbAccess);
  97.  
  98. function ncbAccess_to_SA is new unchecked_conversion(ncbAccess,system.address);
  99. function SA_to_ncbAccess is new unchecked_conversion(system.address,ncbAccess);
  100.  
  101. type NB_SessionStateCodes is new byte;
  102.  
  103. NB_SS_ListenPending  : constant NB_SessionStateCodes := 16#01#;
  104. NB_SS_CallPending    : constant NB_SessionStateCodes := 16#02#;
  105. NB_SS_SessionEstab   : constant NB_SessionStateCodes := 16#03#;
  106. NB_SS_HangUpPending  : constant NB_SessionStateCodes := 16#04#;
  107. NB_SS_HangUpComplete : constant NB_SessionStateCodes := 16#05#;
  108. NB_SS_SessionAborted : constant NB_SessionStateCodes := 16#06#;
  109.  
  110. type NB_SSEntry is
  111.   record
  112.     LSN                   :byte;
  113.     State                 :NB_SessionStateCodes;
  114.     LocalName             :string16;
  115.     RemoteName            :string16;
  116.     PendRcv               :byte;
  117.     PendSend              :byte;
  118.   end record;
  119.  
  120. type NB_SSEntries is array(positive range <>) of NB_SSEntry;
  121.  
  122. generic
  123.   MaxSessions: positive;
  124. package NB_SSTypes is
  125.   type NB_SSs is
  126.     record
  127.       NameNumber            :byte;
  128.       SessionsCount         :byte;
  129.       PendRcvDatagramCount  :byte;
  130.       PendRcvAnyCount       :byte;
  131.       SS                    :NB_SSEntries(1..MaxSessions);
  132.     end record;
  133.  
  134.   type NBSSAccess is access NB_SSs;
  135.   procedure ZapNBSSs is new unchecked_deallocation(NB_SSs,NBSSAccess);
  136. end NB_SSTypes;
  137.  
  138. procedure NetBiosCall (Ncb : ncbAccess);
  139.  
  140. procedure NetAddName (NetName  : string16);
  141.  
  142. procedure NetHangUp (Session : byte);
  143.  
  144. end NetBIOS;