; This source code in this file is licensed to You by Castle Technology
; Limited ("Castle") and its licensors on contractual terms and conditions
; ("Licence") which entitle you freely to modify and/or to distribute this
; source code subject to Your compliance with the terms of the Licence.
; 
; This source code has been made available to You without any warranties
; whatsoever. Consequently, Your use, modification and distribution of this
; source code is entirely at Your own risk and neither Castle, its licensors
; nor any other person who has contributed to this source code shall be
; liable to You for any loss or damage which You may suffer as a result of
; Your use, modification or distribution of this source code.
; 
; Full details of Your rights and obligations are set out in the Licence.
; You should have received a copy of the Licence with this source code file.
; If You have not received a copy, the text of the Licence is available
; online at www.castle-technology.co.uk/riscosbaselicence.htm
; 
        SUBT    Exported Econet constants ; => &.Hdr.Econet

OldOpt  SETA   {OPT}
        OPT    OptNoList+OptNoP1List

; ***********************************
; ***    C h a n g e   L i s t    ***
; ***********************************

; Date       Name  Description
; ----       ----  -----------
; 01-Sep-87  BC    Added NetPrint SWIs, and new SWIs to Econet, tidied stati
; 19-Oct-87  BC    Added Port and Domain SWIs
; 02-Dec-87  BC    Added Immediate ops
; 18-Dec-87  BC    Added NetMonitor SWIs
; 23-Feb-88  BC    Removed Domain SWIs, added ReleasePort
; 23-Feb-88  BC    Changed PreAllocatePort to ClaimPort
; 14-Mar-88  BC    Added EnumerateFSCache
; 08-Apr-88  BC    Added EconetV stuff for progress
; 11-Apr-88  BC/IJ Changed Econet_StartTransmit to Econet_StartTransmission
; 27-Jun-88  BC    Added ConvertDate (FS format (16bit) to OS format (40bit))
; 06-Jul-88  BC    Added EnumerateFSList
; 11-Jul-88  BC    Added DoFSOpToGivenFS
; 12-Jul-88  BC    Changed SWI names and order
; 11-Aug-88  BC    Fixed the export of OSRPC values
; 14-Nov-88  SKS   Amended list for Econet_017
; 16-May-89  BC    Changed ConvertDate to 40bit FS format
; 30-May-89  BC    Added new SWI (NetFS_UpdateFSList)
; 10-Jun-89  BC    Added new SWI (NetPrint_BindPSName)
; 12-Oct-89  BC    Added new SWI (NetFS_EnumerateFSContexts)
; 12-Oct-89  BC    Added new SWI (NetFS_ReadUserId)
; 12-Oct-89  BC    Added constants for enumeration results
; 13-Oct-89  BC    Added constants for protection bits
; 16-Oct-89  BC    Added constants for file server operations
; 21-Nov-89  BC    Added new SWI (NetFS_GetObjectUID)
; 19-Mar-90  BC    Added allocation of Ports
; 21-Mar-90  BC    Added more Ports
; 07-Aug-90  BC    Added six new reason codes to the EconetVector for the Broadcast Loader
; 08-Aug-90  BC    Added two ports for the Broadcast Loader
; 14-Aug-90  BC    Added Port_DigitalServicesTapeStore
; 14-Aug-90  BC    Added Port_ImpressionLicenceChecker
; 14-Aug-90  BC    Added Port_DigitalServicesSquirrel
; 17-Sep-90  BC    Added SWI NetFS_EnableCache
; 05-Dec-90  BC    Added Port_SIDSecondary
; 24-Jan-91  BC    Added two ports for CSD; &DC, and &DD
; 22-May-91  BC    Added two new SWIs for NetPrint
; 22-May-91  BC    Added symbols for printer server status values
; 19-Jun-91  BC    Added Port_DigitalServicesSquirrel2
; 16-Jul-91  BC    Added two ports for Oak Solutions &DE and &DF
; 31-Oct-91  BC    Added MNS SWIs and the ReadTransportType SWI
; 14-Nov-91  BC    Removed MNS SWIs
; 14-Nov-91  BC    Added a table for Task numbers for Logon
; 14-Nov-91  BC    Changed SWI Econet_ReadProtection to Econet_Hardware
; 11-Dec-91  BC    Added TransportTypes
; 19-Feb-92  BC    Added Transport_Nexus
; 19-Feb-92  BC    Changed SWI Econet_Hardware to Econet_AbandonAndReadReceive
; 25-Feb-92  BC    Added SWI Econet_Version
; 25-Feb-92  BC    Added SWI Econet_NetworkState and associated values
; 30-Mar-92  BC    Moved SWIs around after complaints, put ReadProtection back in
; 30-Mar-92  BC    Added SWI Econet_PacketSize
; 31-Mar-92  BC    Added SWI Econet_ReadTransportName
; 23-Apr-92  BC    Added Constants for broadcasting
; 12-Nov-92  JAB   Added 2 Econet Ports for Digital Services NetGain product &E0 &E1
; 10-Dec-92  amg   Added 2 ports for Les Want's AppFS (&E2, &E3)
; 07-Jan-93  BC    Added two ports for AtomWide (&E4, &E5)
; 07-Jan-93  BC    Added a port for the Acorn Resource Locator (&9D)
; 08-Feb-93  JAB   Added a port for Iota &E6
; 08-Mar-93  BC    Added the new SWI Econet_EnumerateTransmit
; 21-May-93  JAB   Added two ports for PEP Associates (&E7, &E8)
; 01-Jul-93  BC    Added the new SWI Econet_HardwareAddresses
; 08-Sep-93  BC    Added Port_ClassFS_Server for Oak Solutions
; 30-Sep-93  BC    Reallocated ports &D3 and &DA to Ran's FastFS
; 05-Oct-93  KSR   Added SWIs Econet_InetRxDirect and Econet_EnumerateMap for AUN
; 05-Oct-93  KSR   Shuffled EnumerateTransmit and HardwareAddresses up to allow for above
; 25-May-94  BC    Noted port allocations belonging to SJ (&A0 and &A1)
; 25-May-94  BC    Added port allocation minimum and maximum values
; 31-May-94  BC    Corrected SJ ports
; 01-Jun-94  BC    Reallocated the DigiStore port from &54 to &EA
; 06-Jun-94  BC    Added SWI Econet_NetworkParameters
; 09-Jun-94  BC    Fix "values" bug at line 301
; 28-Jun-94  AMcC  Changed to using the preferred SWI base and name symbols
; 02-Dec-94  BC    Add a synonym for Port D0 (for SJs modifications to NetPrint)

 ^ 0 ; Values for Status returns from Econet calls

Status_Transmitted              # 1     ; 0,  Total completion OK
Status_LineJammed               # 1     ; 1,  Unable to start transmission due to CTS
Status_NetError                 # 1     ; 2,  Four way handshake fails, or collision
Status_NotListening             # 1     ; 3,  No 'ScoutAck' is received
Status_NoClock                  # 1     ; 4
Status_TxReady                  # 1     ; 5,  Waiting for a retry
Status_Transmitting             # 1     ; 6
Status_RxReady                  # 1     ; 7
Status_Receiving                # 1     ; 8
Status_Received                 # 1     ; 9
Status_NoReply                  # 1     ; 10, High level protocol reply fails
Status_Escape                   # 1     ; 11, Wait is ESCaped from
Status_NotPresent               # 1     ; 12, Machine peek fails
Status_MaxValue                 * @ - 1

                                ^ 1     ; Types of Immediate Operations

Econet_Peek                     # 1     ; 1,  Copy memory from another machine
Econet_Poke                     # 1     ; 2,  Copy memory to another machine
Econet_JSR                      # 1     ; 3,  Cause JSR/BL on another machine
Econet_UserProcedureCall        # 1     ; 4,  Execute User remote procedure call
Econet_OSProcedureCall          # 1     ; 5,  Execute OS remote procedure call
Econet_Halt                     # 1     ; 6,  Halt the remote machine
Econet_Continue                 # 1     ; 7,  Continue the remote machine
Econet_MachinePeek              # 1     ; 8,  Machine peek of another machine
Econet_GetRegisters             # 1     ; 9,  Return registers from another machine  

Econet_BroadcastCount           * 5
Econet_BroadcastDelay           * 5

                                          ; Protection mask bits

Econet_Prot_Peek                * 1:SHL:0 ; 1,   Copy memory from another machine
Econet_Prot_Poke                * 1:SHL:1 ; 2,   Copy memory to another machine
Econet_Prot_JSR                 * 1:SHL:2 ; 4,   Cause JSR/BL on another machine
Econet_Prot_UserProcedureCall   * 1:SHL:3 ; 8,   Execute User remote procedure call
Econet_Prot_OSProcedureCall     * 1:SHL:4 ; 16,  Execute OS remote procedure call
Econet_Prot_Halt                * 1:SHL:5 ; 32,  Halt the remote machine
Econet_Prot_Continue            * 1:SHL:6 ; 64,  Continue the remote machine
Econet_Prot_MachinePeek         * 1:SHL:7 ; 128, Machine peek of another machine
Econet_Prot_GetRegisters        * 1:SHL:8 ; 256, Return registers from another machine  
Econet_Prot_WriteThrough        * 1:SHL:31;      Write result to configuration memory

                                ^ 0     ; OS Procedure numbers

Econet_OSCharacterFromNotify    # 1     ; 0
Econet_OSInitialiseRemote       # 1     ; 1
Econet_OSGetViewParameters      # 1     ; 2
Econet_OSCauseFatalError        # 1     ; 3
Econet_OSCharacterFromRemote    # 1     ; 4

 ; Reason codes for the EconetVector

NetFS_StartLoad                 * &10   ; Size of transfer in R1
NetFS_PartLoad                  * &11   ; Data transfered in R1 
NetFS_FinishLoad                * &12
NetFS_StartSave                 * &20   ; Size of transfer in R1
NetFS_PartSave                  * &21   ; Data transfered in R1
NetFS_FinishSave                * &22
NetFS_StartCreate               * &30   ; Size of creation in R1
NetFS_PartCreate                * &31   ; Size created so far in R1
NetFS_FinishCreate              * &32
NetFS_StartGetBytes             * &40   ; Size of transfer in R1
NetFS_PartGetBytes              * &41   ; Data transfered in R1
NetFS_FinishGetBytes            * &42
NetFS_StartPutBytes             * &50   ; Size of transfer in R1
NetFS_PartPutBytes              * &51   ; Data transfered in R1
NetFS_FinishPutBytes            * &52
NetFS_StartWait                 * &60   ; Called at the start of a BroadcastWait
NetFS_FinishWait                * &62   ; Called at the end of a BroadcastWait
NetFS_StartBroadcastLoad        * &70   ; Size of transfer in R1
NetFS_PartBroadcastLoad         * &71   ; Data transfered in R1 
NetFS_FinishBroadcastLoad       * &72
NetFS_StartBroadcastSave        * &80   ; Size of transfer in R1
NetFS_PartBroadcastSave         * &81   ; Data transfered in R1
NetFS_FinishBroadcastSave       * &82

; Note that reason codes that start "NetFS_" can be used by NetPrint
; for the same reasons as NetFS.

Econet_StartTransmission        * &C0   ; Called when we start to wait
                                        ; for a transmission to finish
Econet_FinishTransmission       * &C2   ; Called when DoTransmit returns
Econet_StartReception           * &D0   ; Called when we start to wait
                                        ; for a reception to complete
Econet_FinishReception          * &D2   ; Called when WaitForReception returns

                                ^ 0     ; Offsets in the result block of an enumeration
NetFS_Enumeration_Station       # 1
NetFS_Enumeration_Network       # 1
NetFS_Enumeration_DriveNumber   # 1
NetFS_Enumeration_DiscName      # 16
NetFS_Enumeration_DiscNameZero  # 1
NetFS_Enumeration_SmallSize     # 0
NetFS_Enumeration_UserId        # 21
NetFS_Enumeration_UserIdEnd     # 1
NetFS_Enumeration_Reserved      # 2
NetFS_Enumeration_FullSize      # 0

                                ^ 0     ; File server function codes
FileServer_DecodeCommand        # 1     ; 0
FileServer_SaveFile             # 1     ; 1
FileServer_LoadFile             # 1     ; 2
FileServer_Examine              # 1     ; 3
FileServer_CatalogHeader        # 1     ; 4
FileServer_LoadAsCommand        # 1     ; 5
FileServer_Open                 # 1     ; 6
FileServer_Close                # 1     ; 7
FileServer_GetByte              # 1     ; 8
FileServer_PutByte              # 1     ; 9
FileServer_GetBytes             # 1     ; 10
FileServer_PutBytes             # 1     ; 11
FileServer_ReadArguments        # 1     ; 12
FileServer_SetArguments         # 1     ; 13
FileServer_DiscName             # 1     ; 14
FileServer_LoggedOnUsers        # 1     ; 15
FileServer_ReadDateAndTime      # 1     ; 16
FileServer_EndOfFileStatus      # 1     ; 17
FileServer_ReadObjectInfo       # 1     ; 18
FileServer_SetObjectAttributes  # 1     ; 19
FileServer_DeleteObject         # 1     ; 20
FileServer_ReadUserEnvironment  # 1     ; 21
FileServer_SetLogOnOption       # 1     ; 22
FileServer_LogOff               # 1     ; 23
FileServer_UserInformation      # 1     ; 24
FileServer_ReadServerVersion    # 1     ; 25
FileServer_ReadDiscFreeSpace    # 1     ; 26
FileServer_CreateDirectory      # 1     ; 27
FileServer_SetDateAndTime       # 1     ; 28
FileServer_CreateFile           # 1     ; 29
FileServer_ReadUserFreeSpace    # 1     ; 30
FileServer_SetUserFreeSpace     # 1     ; 31
FileServer_ReadClientUserId     # 1     ; 32
FileServer_LoggedOnUsersExt     # 1     ; 33
FileServer_UserInformationExt   # 1     ; 34

 ; Task numbers for task logons to FileStore etc.

                                ^ 0
FSTask_Pathetic                 # 1     ; 0, Stupid old programs
FSTask_Squirrel                 # 1     ; 1, DSL's Squirrel database
FSTask_Manager                  # 1     ; 2, Acorn / OAK Solution's !Manager
FSTask_Spare                    # 5
FSTask_Clever                   # 8     ; 8..15, a better NetFS one day
FSTask_Max                      # 0

        ASSERT  FSTask_Max = 16

        ; Econet port allocations

Port_AllocationMinimum          * &10

Port_DigitalServicesTapeStore   * &54   ; Now (01-Jun-94) disused

Port_AllocationMaximum          * &8F

Port_FileServerCommand          * &99   ; Used by NetFS to command the server

Port_Bridge                     * &9C   ; Used to interrogate the bridge
Port_ResourceLocator            * &9D   ; Used by Acorn's ResourceLocator
Port_PrinterServerInquiryReply  * &9E   ; All replies to Enquiries on this port
Port_PrinterServerInquiry       * &9F   ; Used for status inquiry
Port_SJServerUtilityMode        * &A0   ; Used by the 'Fast' protocol
                                        ; &A1 to &AE notionally allocated to SJ
Port_SJVirtualEconet            * &AF   ; Net startup reply port
Port_FindServer                 * &B0   ; Broadcast the server's name
Port_FindServerReply            * &B1   ; Server's reply
Port_TeletextServerCommand      * &B2   ;
Port_TeletextServerPage         * &B3   ;

Port_OldPrinterServerData       * &D0   ; Supported by the BBC PS ROM
Port_PrinterServerDataReply     * &D0   ; SJ's updated protocol
Port_PrinterServerData          * &D1   ; Used by block oriented protocols
Port_TCPIPProtocolSuite         * &D2   ; Marks all traffic
Port_FastFS_Control             * &D3   ; Acorn's FastFS (RMokady)
Port_Scrollarama                * &D4   ; Scrolling message system (PColmer)
Port_Phone                      * &D5   ; Interactive message system (RMokady)
Port_BroadcastControl           * &D6   ; Acorn/DSL Broadcst Loader
Port_BroadcastData              * &D7   ; Acorn/DSL Broadcst Loader
Port_ImpressionLicenceChecker   * &D8   ; Computer Concepts network site licence
Port_DigitalServicesSquirrel    * &D9
Port_FastFS_Data                * &DA   ; Acorn's FastFS (RMokady)
Port_DigitalServicesSquirrel2   * &DB
Port_DataDistributionControl    * &DC   ; Cambridge Systems Design
Port_DataDistributionData       * &DD   ; Cambridge Systems Design
Port_ClassROM                   * &DE   ; Oak Solutions
Port_PrinterSpoolerCommand      * &DF   ; Oak Solutions
Port_DigitalServicesNetGain1    * &E0   ; David Faulkner, Digital Services
Port_DigitalServicesNetGain2    * &E1   ; David Faulkner, Digital Services
Port_AppFS1                     * &E2   ; Les Want, AppFS
Port_AppFS2                     * &E3   ; Les Want, AppFS
Port_AtomWideFaxNet             * &E4   ; Martin Coulson / Chris Ross
Port_AtomWidePrintNet           * &E5   ; Martin Coulson / Chris Ross
Port_IotaDataPower              * &E6   ; Neil Raine, Iota
Port_CDNetServerBroadcast       * &E7   ; Ellis Hall, PEP Associates
Port_CDNetServerReplies         * &E8   ; Ellis Hall, PEP Associates
Port_ClassFS_Server             * &E9   ; Oak Solutions
Port_DigitalServicesTapeStore2  * &EA   ; New allocation to replace &54
Port_DeveloperSupport           * &EB   ; Mark/Jon communication port
Port_LLS_Net                    * &EC   ; Longman Logotron S-Net server

                                        ; Current allocations here up to &EF
                                        ; Then go back to &B4 to &CF

 ^ 0 ; Values for Status returns from NetPrint_ListServers

Status_Ready                    # 1     ; 0, Printer is ready
Status_Busy                     # 1     ; 1, Printer is working for someone else
Status_Jammed                   # 1     ; 2, Printer isn't working for anybody
Status_PrinterServerVoid        # 3
Status_OffLine                  # 1     ; 6, Printer has been switched off
Status_AlreadyOpen              # 1     ; 7, This station is already using the printer

 ^ 0 ; Values for TransportType returned by ReadTransportType

Transport_Unknown               # 1     ; 0
Transport_IP                    # 1     ; 1, Known to be using IP protocols
Transport_Econet                # 1     ; 2, Known to be using actual Econet
Transport_Nexus                 # 1     ; 3, Using SJ's Nexus Network
Transport_ClassNet              # 1     ; 4, Oak Solutions
Transport_MaxKnown              # 0     ; 5, Used to test return values

 ^ 0 ; Values returned from SWI Econet_NetworkState

Econet_State_OK                 # 1     ; 0, Everything is OK
Econet_State_NoClock            # 1     ; 1, There is no clock on the network

SWIClass SETS   EconetSWI_Name
        ^       EconetSWI_Base

        AddSWI  CreateReceive                           ; 40000
        AddSWI  ExamineReceive                          ; 40001
        AddSWI  ReadReceive                             ; 40002
        AddSWI  AbandonReceive                          ; 40003
        AddSWI  WaitForReception                        ; 40004
        AddSWI  EnumerateReceive                        ; 40005
        AddSWI  StartTransmit                           ; 40006
        AddSWI  PollTransmit                            ; 40007
        AddSWI  AbandonTransmit                         ; 40008
        AddSWI  DoTransmit                              ; 40009
        AddSWI  ReadLocalStationAndNet                  ; 4000A
        AddSWI  ConvertStatusToString                   ; 4000B
        AddSWI  ConvertStatusToError                    ; 4000C
        AddSWI  ReadProtection                          ; 4000D
        AddSWI  SetProtection                           ; 4000E
        AddSWI  ReadStationNumber                       ; 4000F
        AddSWI  PrintBanner                             ; 40010
        AddSWI  ReadTransportType                       ; 40011
        AddSWI  ReleasePort                             ; 40012
        AddSWI  AllocatePort                            ; 40013
        AddSWI  DeAllocatePort                          ; 40014
        AddSWI  ClaimPort                               ; 40015
        AddSWI  StartImmediate                          ; 40016
        AddSWI  DoImmediate                             ; 40017
        AddSWI  AbandonAndReadReceive                   ; 40018
        AddSWI  Version                                 ; 40019
        AddSWI  NetworkState                            ; 4001A
        AddSWI  PacketSize                              ; 4001B
        AddSWI  ReadTransportName                       ; 4001C
        AddSWI  InetRxDirect                            ; 4001D
        AddSWI  EnumerateMap                            ; 4001E
        AddSWI  EnumerateTransmit                       ; 4001F
        AddSWI  HardwareAddresses                       ; 40020
        AddSWI  NetworkParameters                       ; 40021

EconetSWICheckValue * @

SWIClass SETS NetFSSWI_Name
        ^       NetFSSWI_Base

        AddSWI  ReadFSNumber                            ; 40040
        AddSWI  SetFSNumber                             ; 40041
        AddSWI  ReadFSName                              ; 40042
        AddSWI  SetFSName                               ; 40043
        AddSWI  ReadCurrentContext                      ; 40044
        AddSWI  SetCurrentContext                       ; 40045
        AddSWI  ReadFSTimeouts                          ; 40046
        AddSWI  SetFSTimeouts                           ; 40047
        AddSWI  DoFSOp                                  ; 40048
        AddSWI  EnumerateFSList                         ; 40049
        AddSWI  EnumerateFS                             ; 4004A
        AddSWI  ConvertDate                             ; 4004B
        AddSWI  DoFSOpToGivenFS                         ; 4004C
        AddSWI  UpdateFSList                            ; 4004D
        AddSWI  EnumerateFSContexts                     ; 4004E
        AddSWI  ReadUserId                              ; 4004F
        AddSWI  GetObjectUID                            ; 40050
        AddSWI  EnableCache                             ; 40051

NetFSSWICheckValue * @

SWIClass SETS NetPrintSWI_Name
        ^       NetPrintSWI_Base

        AddSWI  ReadPSNumber                            ; 40200
        AddSWI  SetPSNumber                             ; 40201
        AddSWI  ReadPSName                              ; 40202
        AddSWI  SetPSName                               ; 40203
        AddSWI  ReadPSTimeouts                          ; 40204
        AddSWI  SetPSTimeouts                           ; 40205
        AddSWI  BindPSName                              ; 40206
        AddSWI  ListServers                             ; 40207
        AddSWI  ConvertStatusToString                   ; 40208

NetPrintSWICheckValue * @

SWIClass SETS NetMonitorSWI_Name
        ^       NetMonitorSWI_Base

        AddSWI  PrintChar                               ; 80040
        AddSWI  DefineTask                              ; 80041
        AddSWI  AbandonTask                             ; 80042
        AddSWI  ConvertFont                             ; 80043
        AddSWI  UseFont                                 ; 80044
        AddSWI  RestoreFont                             ; 80045
        AddSWI  StartWithCurrentFont                    ; 80046
        AddSWI  StartWithInternalFont                   ; 80047

NetMonitorSWICheckValue * @

        OPT     OldOpt
        END