home *** CD-ROM | disk | FTP | other *** search
RISC OS BBC BASIC V Source | 1993-05-22 | 3.4 KB | 120 lines |
- This library originally written by Dale Cass..
- shell_ImpulseInitialise(Root$)
- Task%,Name$
- !Task%=_U%!148:
- task handle..
- Name$=
- shell_GetAppName
- ( "RMEnsure Impulse 0.18 *RMLoad "+Root$+"ImpulseII" )
- Imp_Task% = Task%
- "Impulse_Initialise",18,Task%,Name$,-1
- Imp_Space% = &400
- Imp_MethodTable% Imp_Space%
- .Imp_NextMethod% = Imp_MethodTable% + 4
- Imp_MethodTable%!0 = 0
- Imp_NextToken% = 1
- Impulse_Command = &200
- Impulse_Request = &201
- Impulse_Reply = &202
- Impulse_SendData = &203
- Impulse_ReceiveData = &204
- Imp_TxTag% = 0
- Imp_TxInProgress% =
- ImpTxTop% = 0
- ImpTxPtr% = 0
- B_U%!100=_U%!100
- 1<<2:
- set 'Impulse_Initialised' flag bit..
- shell_ImpulseMakeMethod( Flags%,
- Token%, Method$, Syntax$ )
- (Token% = Imp_NextToken%
- Imp_NextToken% += 1
- Imp_NextMethod%!0 = Flags%
- Imp_NextMethod%!4 = Token%
- Imp_NextMethod% += 8
- !$Imp_NextMethod% = Method$
- !"Imp_NextMethod% +=
- Method$
- Imp_NextMethod%?0 = 0
- Imp_NextMethod% += 1
- $!$Imp_NextMethod% = Syntax$
- %"Imp_NextMethod% +=
- Syntax$
- Imp_NextMethod%?0 = 0
- Imp_NextMethod% += 1
- (9Imp_NextMethod% = ((Imp_NextMethod% + 3)
- 4) * 4
- shell_ImpulseWindupMethods
- Imp_NextMethod%!0 = -1
- Imp_NextMethod%!4 = -1
- Imp_NextMethod%?8 = 0
- Imp_NextMethod%?9 = 0
- Imp_NextMethod% += 10
- Imp_NextMethod% > Imp_MethodTable%+Imp_Space%
- 2>
- 200,"Impulse has run out of room in making methods" )
- shell_ImpulseSendCommand( Command$ )
- "Impulse_SendMessage",Impulse_Command,Command$,0,0,0,0,Imp_Task%,0
- shell_ImpulseSendRequest( Request$, Tag% )
- "Impulse_SendMessage",Impulse_Request,Request$,0,0,0,Tag%,Imp_Task%
- shell_ImpulseSendReply( Reply$, Tag% )
- Size%
- @!Size% = ImpTxTop% - ImpTxPtr%
- "Impulse_SendMessage",Impulse_Reply,Reply$,,,,Tag%,Imp_Task%,Size%
- shell_ImpulseSetupTransmission( Block%, Size% )
- ImpTxPtr% = Block%
- F0ImpTxTop% = (Block% + Size% + 4)
- &FFFFFFFC
- Imp_TxInProgress% =
- shell_ImpulseTransmitData( Allowed% )
- Size%
- L!Size% = ImpTxTop% - ImpTxPtr%
- (Size% < Allowed%)
- (Size% <= 0)
- Imp_TxInProgress% =
- Size% > Allowed%
- Size% = Allowed%
- Size% < 0
- Size%=0
- "Impulse_TransmitData",ImpTxPtr%,Size%,0,0,0,0,Imp_Task%
- ImpTxPtr% += Size%
- shell_ImpulseInTransmission = Imp_TxInProgress%
- shell_ImpulseDecode(
- Reason%,
- MethodToken%,
- Params%,
- Size% )
- Before%
- Before% = Reason%
- "Impulse_Decode",Reason%,q%,,,,Imp_MethodTable%,Imp_Task%
- Reason%,q%,,,,MethodToken%,Params%,Size%
- (Reason% = 0)
- (Before% <> 0)
- Reason%=Before%
- shell_ImpulseGetString( Base%, Param%,
- Result$ )
- Base% = Base%!(Param%*4)
- Base%=0
- f =
- Result$=""
- ?Base%>=32
- j Result$+=
- ?Base%:Base%+=1
- shell_ImpulseGetValue( Base%, Param%,
- Result% )
- Base% = Base%!(Param%*4)
- Base%=0
- q =
- ?Base%=0
- Result%=Base%!1
- u =
- Result%=0
- x =
- shell_ImpulseGetSwitch( Base%, Param% )
- = Base%!(Param%*4) <> 0
- shell_ImpulseNextTxTag
- Imp_TxTag% += 1
- = Imp_TxTag%
- shell_ImpulseCurrentTxTag
- = Imp_TxTag%
-