; ; Hacks to match MacOS (most recent first): ; ; 8/3/92 Reverted ; 9/2/94 SuperMario ROM source dump (header preserved below) ; ; ; File: AppleTalk.a ; ; Created: Friday, October 20, 1989 at 9:11:59 PM ; Version: 2.9 ; ; Copyright: © 1990-1992 by Apple Computer, Inc., all rights reserved. ; ; Change History (most recent first): ; ; 1/29/93 RB Change the SCCLockout value to 600 instead of 2600, because the ; other bits in the status register should remain unchanged for ; NewKernel. ; <11> 7/1/92 DCL Obsoleted ATalkEqu.a which now includes this file. ; <10> 6/14/91 JL Equated clientName and xppSubCode to $1C insteead of csCode ; because csCode is in SysEqu.a which would have to be included. ; Also substitued $1C for csParam which is also in SysEqu.a. ; <9> 1/30/91 gbm sab, #38: Change the ‘already including this file’ variable to ; all uppercase ; <8> 1/19/91 mbs (jg) Remove lots of private stuff that should not be released ; with MPW. Update for Inside Mac Volume 6. ; <7> 1/4/91 JDR (dba) Put CancelAtalkClosePrep, AddCSCode, and AddCSAddr in to a ; private file. ; <6> 10/1/90 JAL Checked in new AppleTalk Phase II equates. ; 1.0 11/ 9/88 CCH Adding to EASE. ; •1.1 9/14/88 CCH Updated EASE with the current rev of this file. ;-------------------------------------------------------------------- IF &TYPE('__INCLUDINGAPPLETALK__') = 'UNDEFINED' THEN __INCLUDINGAPPLETALK__ SET 1 IF &TYPE('__INCLUDINGSYSEQU__') = 'UNDEFINED' THEN INCLUDE 'SysEqu.a' ENDIF ; ; AppleTalk unit numbers. ; mppUnitNum EQU 9 ; MPP unit number atpUnitNum EQU 10 ; ATP unit number xppUnitNum EQU 40 ; XPP unit number ; atpLoadedBit EQU 4 ; ATP loaded bit number in PortBUse xppLoadedBit EQU atpLoadedBit+1 ; XPP loaded bit number in PortBUse ; ;+ Name Binding Protocol (NBP) ; nbp EQU $02 ; DDP protocol type code for NBP ; nbpControl EQU 0 ; Control code nbpTCount EQU 0 ; Tuple count nbpID EQU 1 ; NBP ID nbpTuple EQU 2 ; Start of the first tuple ; ;NBP tuple header offsets: ; tupleNet EQU 0 ; Offset to network no. [word] tupleNode EQU 2 ; Offset to node ID [byte] tupleSkt EQU 3 ; Offset to socket number [byte] tupleEnum EQU 4 ; Offset to enumerator [byte] tupleName EQU 5 ; Offset to name part of tuple [byte] tupleAddrSz EQU 5 ; tuple address field size ; ; NBP control codes - the following define the different types of NBP packets: ; brRq EQU 1 ; Broadcast request lkUp EQU 2 ; Lookup request lkUpReply EQU 3 ; Lookup reply ; ; NBP miscellaneous ; nis EQU 2 ; Names Information Socket (NIS) number tupleMax EQU 15 ; Most tuples in a lookup reply equals EQU '=' ; Wildcard symbol star EQU '*' ; "This zone" symbol ; ; ;+ Routing Table Maintenance Protocol (RTMP) ; rtmp EQU $01 ; DDP protocol type code for RTMP ; ; RTMP header offsets ; rtmpNet EQU 0 ; Offset to network number [word] rtmpIDLen EQU 2 ; Offset to ID length [byte] rtmpID EQU 3 ; Offset to start of ID field ; ; RTMP packets are received at the well-known RTMP listening socket: ; rtmpSkt EQU 1 ; Number of the RTMP socket ; ; ;;+ Datagram Delivery Protocol (DDP) ddpHopCnt EQU 0 ; Hop count (only used in long header) [byte] ddpLength EQU 0 ; Packet length (from this word onwards) [word] ddpChecksum EQU 2 ; Checksum [word] ddpDstNet EQU 4 ; Destination network no. [word] ddpSrcNet EQU 6 ; Network of origin [word] ddpDstNode EQU 8 ; Destination node address [byte] ddpSrcNode EQU 9 ; Node of origin [byte] ddpDstSkt EQU 10 ; Destination socket number [byte] ddpSrcSkt EQU 11 ; Source socket number [byte] ddpType EQU 12 ; DDP type field [byte] ; sddpDstSkt EQU 2 ; Destination socket number (short header) [byte] sddpSrcSkt EQU 3 ; Source socket number (short header) [byte] sddpType EQU 4 ; DDP type field (short header) [byte] ; ddphSzLong EQU 13 ; Size of extended DDP header ddphSzShort EQU 5 ; Size of short DDP header ; shortDDP EQU $01 ; LAP type code for DDP (short header) longDDP EQU $02 ; LAP type code for DDP (long header) ; ; DDP miscellaneous ; ddpMaxWKS EQU $7F ; The highest valid well-known socket ddpMaxData EQU 586 ; Maximum DDP data size ddpLenMask EQU $03FF ; Mask for DDP length ; ; ;+ AppleBus Link Access Protocol (ABLAP) ; lapDstAdr EQU 0 ; Destination node address [byte] lapSrcAdr EQU 1 ; Source node address [byte] lapType EQU 2 ; LAP type field [byte] lapHdSz EQU 3 ; Size of LAP header ; ; zs returned by ReadPacket and ReadRest routines ; overrunErr EQU -1 crcErr EQU -2 underrunErr EQU -3 lengthErr EQU -4 ; ; SCC interrupt priority Should NEVER MOVE.W this value, just ORI.W rb ; sccLockout EQU $2600 ; This value works on both Mac and Lisa rb ; ; ;+ MPP (control calls to NBP, DDP and ABLAP) ; lookupReply EQU 242 ; This command queued to ourself writeLAP EQU 243 ; Write out LAP packet detachPH EQU 244 ; Detach LAP protocol handler attachPH EQU 245 ; Attach LAP protocol handler writeDDP EQU 246 ; Write out DDP packet closeSkt EQU 247 ; Close DDP socket openSkt EQU 248 ; Open DDP socket loadNBP EQU 249 ; Load NBP command-executing code lastResident EQU 249 ; Last resident command confirmName EQU 250 ; Confirm name lookupName EQU 251 ; Look up name on internet removeName EQU 252 ; Remove name from Names Table registerName EQU 253 ; Register name in Names Table killNBP EQU 254 ; Kill outstanding NBP request unloadNBP EQU 255 ; Unload NBP command code setSelfSend EQU 256 ; MPP: Set to allow writes to self SetMyZone EQU 257 ; Set my zone name GetATalkInfo EQU 258 ; get AppleTalk information ATalkClosePrep EQU 259 ; AppleTalk close query ; ; ; MPP queue element standard structure: arguments passed in the CSParam area ; socket EQU $1C ; Offset to socket number (DDP) [byte] checkSumFlag EQU $1D ; Offset to checksum flag (DDP) [byte] listener EQU $1E ; Offset to socket listener (DDP) [word] argBlkSz EQU $10 ; Size of argument block to WriteDDP wdsPointer EQU $1E ; Offset to WDS pointer (DDP & ABLAP) [word] ; protType EQU $1C ; Offset to protocol type code (ABLAP) [byte] handler EQU $1E ; Offset to protocol handler (ABLAP) [word] ; interval EQU $1C ; Retry interval (NBP) [byte] count EQU $1D ; Retry count (NBP) [byte] entityPtr EQU $1E ; Entity pointer (NBP) ntQElPtr EQU $1E ; NT queue element ptr (NBP - Register) confirmAddr EQU $22 ; Address to confirm at (NBP - Confirm) newSocket EQU $26 ; Socket no. if different (NBP - Confirm) [byte] ; verifyFlag EQU $22 ; Verify name flag (NBP - Register) [byte] ; retBuffPtr EQU $22 ; Return buffer pointer (NBP - Lookup) retBuffSize EQU $26 ; Return buffer size (NBP - Lookup) [word] maxToGet EQU $28 ; Max no. responses to get (NBP - Lookup) [word] numGotten EQU $2A ; Number actually gotten (NBP - Lookup) [word] ; newSelfFlag EQU $1C ; Offset: New value for self-send flag oldSelfFlag EQU $1D ; Old value of self-send flag nKillQEl EQU $1C ; Pointer to queue element to abort (KillNBP) clientName EQU $1C ; (csCode+2) AtalkClosePrep call parm ; ; Names Table Queue element - the MPP registered names (and associated sockets) ; ntLink EQU 0 ; Link to next element ntTuple EQU 4 ; Start of tuple for replies ntSocket EQU 7 ; Socket number of entity [byte] ntEntity EQU 9 ; Start of entity name within tuple ; ; Well-known offsets within MPP local variables (as pointed to by AbusVars) ; sysLAPAddr EQU 0 ; This node's LAP address toRHA EQU 1 ; Top of RHA sysABridge EQU $19 ; Node address of a bridge [byte] sysNetNum EQU $1A ; This node's network number [word] vSCCEnable EQU $1C ; SR value to re-enable SCC interrupts [word] atpVars EQU $1E ; ATP variable pointer (high byte is flag) ; ; MPP miscellaneous ; p2Version EQU 53 ; First version with Phase 2 calls rhaSize EQU $18 ; Size of read header area wdsEntrySz EQU 6 ; Size of a WDS entry NBPWildCard EQU '≈' ; NBP wildcard delim char NBPMaxTupleSize EQU 32 ; max size for a tuple name DDPHopsMask EQU $3C00 ; Mask Hop Count bits from field in DDP header ; ; Bits in ioMix field on open (passed in) ; SrvAdrBit EQU 31 ; = 1 iff nodeID in server range ($80 - $FD) desired RouterBit EQU 30 ; = 1 iff this is a router port NoZoneNotify EQU 29 ; = 1 to supress Notification Mgr messages at .MPP open ; ; Bits in ioMix field on open (returned) ; BadZoneHintBit EQU 7 ; = 1 iff zone hint was found invalid at .MPP open OneZoneBit EQU 6 ; = 1 iff there was only one zone on cable BadNetHintBit EQU 5 ; = 1 iff our net not within RTMP cable range InStartupBit EQU 4 ; = 1 iff our net is in the startup range ; ; ; ; AppleTalk Transaction Protocol (ATP) ; atp EQU $3 ; ATP type code (in DDP header) ; ; ATP header ; atpControl EQU 0 ; Control field [byte] atpBitmap EQU 1 ; Bitmap (requests only) [byte] atpRespNo EQU 1 ; Response number (responses only) [byte] atpTransID EQU 2 ; Transaction ID [word] atpUserData EQU 4 ; Start of user data [long] atpHdSz EQU 8 ; Size of ATP header ; ; ATP control field ; atpReqCode EQU $40 ; Request code after masking atpRspCode EQU $80 ; Response code after masking atpRelCode EQU $C0 ; Release code after masking atpXOBit EQU 5 ; Bit number of exactly-once bit atpEOMBit EQU 4 ; Bit number of End-Of-Message bit atpSTSBit EQU 3 ; Send Transmission Status bit no. flagMask EQU $3F ; Mask for just flags controlMask EQU $F8 ; Mask for good control bits ; ; ATP limits ; atpMaxNum EQU 8 ; Max no. of responses per request atpMaxData EQU $242 ; Maximum data size in ATP packet ; ; ATP contol calls ; nSendRequest EQU 248 ; NSendRequest code relRspCB EQU 249 ; Release RspCB closeATPSkt EQU 250 ; Close ATP socket addResponse EQU 251 ; Add response code | Require open skt | sendResponse EQU 252 ; Send response code getRequest EQU 253 ; Get request code openATPSkt EQU 254 ; Open ATP socket sendRequest EQU 255 ; Send request code relTCB EQU 256 ; Release TCB killGetReq EQU 257 ; Kill GetRequest killSendReq EQU 258 ; Kill SendRequest killAllGetReq EQU 259 ; Kill all getRequests for a skt ; ; ; ; ATP queue element standard structure: arguments passed in the CSParam area ; atpSocket EQU $1C ; Socket number is first parameter [byte] atpFlags EQU $1D ; Flag [byte] addrBlock EQU $1E ; Start of address block reqLength EQU $22 ; Size of request buffer [word] reqPointer EQU $24 ; Pointer to request buffer or data bdsPointer EQU $28 ; Pointer to Buffer Data Structure (BDS) guArea EQU $2C ; Start of general-use area userData EQU $12 ; User bytes ; ; ATP bits ; sendCHK EQU 0 ; Bit no. of send-checksum bit in flags tidValid EQU 1 ; Bit set when TID valid in SendRequest ; ; SendRequest call interface ; numOfBuffs EQU $2C ; No. of response buffers passed in BDS [byte] timeoutVal EQU $2D ; Timeout length in seconds [byte] numOfResps EQU $2E ; Number of responses received [byte] retryCount EQU $2F ; Maximum number of retries [byte] ; reqTID EQU $16 ; Request's TID returned here (for RelTCB) currBitmap EQU $1C ; Bitmap of responses not yet received [byte] ; ; GetRequest call interface ; bitmap EQU $2C ; Offset where bitmap is returned [byte] transID EQU $2E ; Transaction ID returned here [word] ; ; SendResponse call interface ; bdsSize EQU $2D ; ; AddResponse call interface ; rspNum EQU $2C ; No. of this response with transaction [byte] ; aKillQEl EQU $2C ; Offset: Pointer to queue element to abort ; ; ATP general ; maxReqs EQU 6 ; Maximum number of concurrent requests maxRsps EQU 8 ; Max number of concurrent XO responses maxATPSkts EQU 6 ; Max number of concurrent responding-sockets releaseTime EQU 30 ; Release timer value in seconds ; ; Info for TRel timer in SendRequest and NSendRequest ; atpTRTOmask EQU 7 ; mask to TRel timeout factor atpXcall EQU 2 ; bit to indicate extended atp call parms TRelTime EQU 50 ; TRel timeout bits offset ; ; ATP Buffer Descriptor Structure (BDS) ; bdsBuffSz EQU 0 ; Send: data length Receive: buffer length bdsBuffAdr EQU 2 ; Send: data address Receive: buffer address bdsDataSz EQU 6 ; Send: used internally Receive: data length bdsUserData EQU 8 ; Send: 4 user bytes Receive: 4 user bytes bdsEntrySz EQU 12 ; Size of a BDS entry ; ; ;+ Zone Information Protocol (ZIP) ; ZIP EQU 6 ; ZIP type code (in DDP header) ZIS EQU 6 ; Zone Information Socket number ; ; ; ZIP header ; zipCommand EQU 0 ; Offset to ZIP command in packet zipFlags EQU 1 ; Offset to flags (see below) zipFirstNet EQU 2 ; Network 1 in ZIP query, reply zipNetLo EQU zipFirstNet ; Offset to low network number in range zipNetHi EQU 4 ; Offset to high network number in range zipXHdSz EQU 6 ; Size of ZIP header (for extended ZIP) ; ; ZIP limits ; MaxZoneLen EQU 33 ; max size (in bytes) of zone name ZIPNetMax EQU 3 ; Our max networks in a ZIP packet ; ; ZIP Command field ; ZQuery EQU 1 ; Command code for query ZReply EQU 2 ; Command code for reply ZTakedown EQU 3 ; ZIP takedown ZBringUp EQU 4 ; ZIP bring up ZGetInfo EQU 5 ; GNI request ZInfoReply EQU 6 ; GNI reply ZNotify EQU 7 ; ZIP notify ZIPExtReply EQU 8 ; Command code for ZIPExtReply ; ; ZIP commands used in ATP calls ; ZATPCommand EQU 0 ; ZIP command offset in ATP user bytes (request) ZGZLStart EQU 2 ; User byte offset for StartIndex (GetZoneList) ZLastFlag EQU 0 ; User byte offset for LastFlag (GZL response) ZGZLCount EQU 2 ; User byte offset for Count (GZL response) ZGetMyZone EQU 7 ; Code for GetMyZone command ZGetZoneList EQU 8 ; Code for GetZoneList command ZGetLocalZones EQU 9 ; Code for GetLocalZones command ; ; ; ZIP Flags field ; ; (GetNetInfo Request) ; BcastReply EQU 7 ; Send reply to broadcast address ; ; (GetNetInfo Reply) ; ZoneInvalid EQU 7 ; zone is invalid UseBroadcast EQU 6 ; use broadcast for NBP lookups OneZone EQU 5 ; only one zone is present ; ; RTMP+ definitions ; ; rtmpPlus EQU 5 ; DDP type for RTMP+ packet getNetInfo EQU 1 ; RTMP+ command type for GetNetInfo ; EJECT ; ; ASP definitions ; ; ; Offsets in user bytes ; aspCmdCode EQU 0 ; Offset to command field aspWSSNum EQU 1 ; WSS number in OpenSessions aspVersNum EQU 2 ; ASP version number in OpenSessions ; aspSSSNum EQU 0 ; SSS number in OpenSessReplies aspSessID EQU 1 ; Session ID (requests & OpenSessReply) aspOpenErr EQU 2 ; OpenSessReply error code ; aspSeqNum EQU 2 ; Sequence number in requests aspAttnCode EQU 2 ; Attention bytes in attentions ; ; Offsets in ATP data part ; aspWrBSize EQU 0 ; Offset to write buffer size (WriteData) aspWrHdrSz EQU 2 ; Size of data part ; ; ASP command codes - the following define the different types of ASP requests: ; aspCloseSess EQU 1 ; Close session aspCommand EQU 2 ; User-command aspGetStat EQU 3 ; Get status aspOpenSess EQU 4 ; Open session aspTickle EQU 5 ; Tickle aspWrite EQU 6 ; Write aspDataWrite EQU 7 ; WriteData (from server) aspAttention EQU 8 ; Attention (from server) ; ; ASP miscellaneous ; aspVersion EQU $0100 ; ASP version number maxCmdSize EQU atpMaxData ; Maximum command block size quantumSize EQU atpMaxData*atpMaxNum ; Maximum reply size tickleInt EQU 30 ; Tickle interval (secs) tickleTime EQU tickleInt*60*4 ; Tickle timeout (ticks) ; ;+ Control codes. NOTE: high byte of CSCode used internally ; openSess EQU 255 ; Open session closeSess EQU 254 ; Close session userCommand EQU 253 ; User command userWrite EQU 252 ; User write getStatus EQU 251 ; Get status afpCall EQU 250 ; AFP command (buffer has command code) getParms EQU 249 ; Get parameters abortOS EQU 248 ; Abort open session request closeAll EQU 247 ; Close all open sessions xCall EQU 246 ; .XPP extended calls ; ; ; ASP queue element standard structure: arguments passed in the CSParam area ; sessRefnum EQU $1C ; Offset to session refnum [word] aspTimeout EQU $1E ; Timeout for ATP [byte] aspRetry EQU $1F ; Retry count for ATP [byte] serverAddr EQU $20 ; Server address block [longword] scbPointer EQU $24 ; SCB pointer [longword] attnRoutine EQU $28 ; Attention routine pointer [long] ; cbSize EQU $20 ; Command block size [word] cbPtr EQU $22 ; Command block pointer [long] rbSize EQU $26 ; Reply buffer size [word] rbPtr EQU $28 ; Reply buffer pointer [long] wdSize EQU $2C ; Write data size [word] wdPtr EQU $2E ; Write data pointer [long] ccbStart EQU $32 ; Start of memory for CCB ; aspMaxCmdSize EQU $1C ; For SPGetParms [word] aspQuantumSize EQU $1E ; For SPGetParms [word] numSesss EQU $20 ; For SPGetParms [word] ; abortSCBPtr EQU $1C ; SCB pointer for AbortOS [long] ; cmdResult EQU $12 ; Command result (ATP user bytes) [long] ; afpAddrBlock EQU $2C ; Address block in AFP login [long] afpSCBPtr EQU $30 ; SCB pointer in AFP login [long] afpAttnRoutine EQU $34 ; Attn routine pointer in AFP login ; scbMemSize EQU $C0 ; Size of memory for SCB EJECT ;______________________________________________________________ ; ; .XPP xCall information ;______________________________________________________________ ; ; xCall subCode definitions (subCodes 0 thru 4 are reserved for internal use) ; xAddCall EQU 0 xDelCall EQU 1 zipGetLocalZones EQU 5 ; xCall subcodes zipGetZoneList EQU 6 zipGetMyZone EQU 7 xMinCall EQU zipGetLocalZones ; first xCall that can be added xMaxCall EQU 31 ; highest legal xCall ; ; xCall queue element offsets ; xppSubCode EQU $1C ; (csCode+2) offset to extended call subcode AddCSCode EQU xppSubCode+2 ; csCode of added call AddCSAddr EQU AddCSCode+2 ; addr of added call's routine ; ; SetMyZone queue element offsets (MPP) ; zoneBuffPtr EQU 30 zoneBuffSize EQU 34 numOfZones EQU 36 xppTimeout EQU 30 xppRetry EQU 31 zipBuffPtr EQU 34 zipNumZones EQU 38 zipLastFlag EQU 40 zipInfoField EQU 42 ;______________________________________________________________ ; ; AFP Command command codes ;______________________________________________________________ ; afpByteRangeLock EQU 1 afpVolClose EQU 2 afpDirClose EQU 3 afpForkClose EQU 4 afpCopyFile EQU 5 afpDirCreate EQU 6 afpFileCreate EQU 7 afpDelete EQU 8 afpEnumerate EQU 9 afpFlush EQU 10 afpForkFlush EQU 11 afpGetDirParms EQU 12 afpGetFileParms EQU 13 afpGetForkParms EQU 14 afpGetSInfo EQU 15 afpGetSParms EQU 16 afpGetVolParms EQU 17 afpLogin EQU 18 afpContLogin EQU 19 afpLogout EQU 20 afpMapID EQU 21 afpMapName EQU 22 afpMove EQU 23 afpOpenVol EQU 24 afpOpenDir EQU 25 afpOpenFork EQU 26 afpRead EQU 27 afpRename EQU 28 afpSetDirParms EQU 29 afpSetFileParms EQU 30 afpSetForkParms EQU 31 afpSetVolParms EQU 32 afpWrite EQU 33 afpGetFlDrParms EQU 34 afpSetFlDrParms EQU 35 ; afpDTOpen EQU 48 afpDTClose EQU 49 afpGetIcon EQU 51 afpGtIcnInfo EQU 52 afpAddAPPL EQU 53 afpRmvAPPL EQU 54 afpGetAPPL EQU 55 afpAddCmt EQU 56 afpRmvCmt EQU 57 afpGetCmt EQU 58 ; afpAddIcon EQU 192 ; Special code for ASP Write commands ; ;____________________________________ ; ; Offsets for certain parameters in AFP Read/Write calls ;____________________________________ ; startEndFlag EQU $1 ; Write only; offset relative to start or end rwOffset EQU $4 ; Offset at which to start read or write reqCount EQU $8 ; Count of bytes to read or write newLineFlag EQU $C ; Read only; newline character flag newLineChar EQU $D ; Read only; newline character ; lastWritten EQU $0 ; Write only; last written (returned) ; ;____________________________________ ; ; Miscellaneous ;____________________________________ ; afpUseWrite EQU $C0 ; first call in range that maps to an ASPWrite MaxNodeIds EQU 254 ; maximum node ids (1-254) MaxNetIds EQU $FFFE ; maximum net ids (1-65534) reservedNode EQU $FE ; special SysABridge token says we've heard from router reservedNet EQU $FF00 ; first network number in reserved range ; GetAppleTalkInfo GAIVersion EQU 1 ; highest version for GAI params GAI RECORD $1C ; (csParam) GetAppleTalkInfo params Version DS.W 1 ; --> params version desired VarsPtr DS.L 1 ; <-- MPP vars for this PortID DCEPtr DS.L 1 ; <-- DCE ptr for the PortID PortID DS.W 1 ; <-- port number [0..7] Configuration DS.L 1 ; <-- 32-bit config word SelfSend DS.W 1 ; <-- ≠ zero if SelfSend is enabled NetLo DS.W 1 ; <-- low-value of network range NetHI DS.W 1 ; <-- high-value of network range OurAddr DS.L 1 ; <-- our 24-bit AppleTalk address RouterAddr DS.L 1 ; <-- 24-bit address of last router NumOfPHs DS.W 1 ; <-- max. number of protocol handlers NumOfSkts DS.W 1 ; <-- max. number of static sockets NumNBPEs DS.W 1 ; <-- max. number of concurrent NBP requests NTQueue DS.L 1 ; <-- ptr to registered names queue LALength DS.W 1 ; <-> length of data link address in bytes LinkAddr DS.L 1 ; <-> ptr to buffer to store data link address ZoneName DS.L 1 ; <-> ptr to buffer to store zone name GAISz DS.B 0 ENDR RTMPHdr RECORD 0 SenderNet DS.W 1 ; sender's network number IDlength DS.B 1 ; id length (always 8) SenderID DS.B 1 ; sender's node id NullNet DS.W 1 ; null word for non-extended net Version1 DS.B 1 ; version for non-extended net NonExtSize DS.B 0 ; minimum size for non-extended ORG NullNet StartNetHi DS.B 1 ; extended high range, high byte StartNetLo DS.B 1 ; extended high range, low byte Distance DS.B 1 ; extended range distance EndNetHi DS.B 1 ; extended low range, high byte EndNetLo DS.B 1 ; extended low range, low byte Version2 DS.B 1 ; extended version ExtSize DS.B 0 ; mininum size for extended net ENDR ENDIF ; ...already included