home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 1 / ARM_CLUB_CD.iso / contents / apps / program / d / eventshell / !ShellSys / ImpulseLib (.txt) < prev    next >
Encoding:
RISC OS BBC BASIC V Source  |  1993-05-22  |  3.4 KB  |  120 lines

  1.  This library originally written by Dale Cass..
  2. shell_ImpulseInitialise(Root$)
  3.  Task%,Name$
  4. !Task%=_U%!148:
  5.  task handle..
  6. Name$=
  7. shell_GetAppName
  8. ( "RMEnsure Impulse 0.18 *RMLoad "+Root$+"ImpulseII" )
  9. Imp_Task%           = Task%
  10.  "Impulse_Initialise",18,Task%,Name$,-1
  11. Imp_Space%          = &400
  12.  Imp_MethodTable% Imp_Space%
  13. .Imp_NextMethod%     = Imp_MethodTable% + 4
  14. Imp_MethodTable%!0  = 0
  15. Imp_NextToken%      = 1
  16. Impulse_Command     = &200
  17. Impulse_Request     = &201
  18. Impulse_Reply       = &202
  19. Impulse_SendData    = &203
  20. Impulse_ReceiveData = &204
  21. Imp_TxTag%          = 0
  22. Imp_TxInProgress%   = 
  23. ImpTxTop%           = 0
  24. ImpTxPtr%           = 0
  25. B_U%!100=_U%!100 
  26.  1<<2:
  27.  set 'Impulse_Initialised' flag bit.. 
  28. shell_ImpulseMakeMethod( Flags%, 
  29.  Token%, Method$, Syntax$ )
  30. (Token%              = Imp_NextToken%
  31. Imp_NextToken%     += 1
  32.  Imp_NextMethod%!0   = Flags%
  33.  Imp_NextMethod%!4   = Token%
  34. Imp_NextMethod%    += 8
  35.  !$Imp_NextMethod%    = Method$
  36. !"Imp_NextMethod%    += 
  37. Method$
  38. Imp_NextMethod%?0   = 0
  39. Imp_NextMethod%    += 1
  40. $!$Imp_NextMethod%    = Syntax$
  41. %"Imp_NextMethod%    += 
  42. Syntax$
  43. Imp_NextMethod%?0   = 0
  44. Imp_NextMethod%    += 1
  45. (9Imp_NextMethod%     = ((Imp_NextMethod% + 3) 
  46.  4) * 4
  47. shell_ImpulseWindupMethods
  48. Imp_NextMethod%!0 = -1
  49. Imp_NextMethod%!4 = -1
  50. Imp_NextMethod%?8 = 0
  51. Imp_NextMethod%?9 = 0
  52. Imp_NextMethod%  += 10
  53.  Imp_NextMethod% > Imp_MethodTable%+Imp_Space% 
  54. 2>   
  55.  200,"Impulse has run out of room in making methods" )
  56. shell_ImpulseSendCommand( Command$ )
  57.  "Impulse_SendMessage",Impulse_Command,Command$,0,0,0,0,Imp_Task%,0
  58. shell_ImpulseSendRequest( Request$, Tag% )
  59.  "Impulse_SendMessage",Impulse_Request,Request$,0,0,0,Tag%,Imp_Task%
  60. shell_ImpulseSendReply( Reply$, Tag% )
  61.  Size%
  62. @!Size% = ImpTxTop% - ImpTxPtr%
  63.  "Impulse_SendMessage",Impulse_Reply,Reply$,,,,Tag%,Imp_Task%,Size%
  64. shell_ImpulseSetupTransmission( Block%, Size% )
  65. ImpTxPtr% = Block%
  66. F0ImpTxTop% = (Block% + Size% + 4) 
  67.  &FFFFFFFC
  68. Imp_TxInProgress% = 
  69. shell_ImpulseTransmitData( Allowed% )
  70.  Size%
  71. L!Size% = ImpTxTop% - ImpTxPtr%
  72.  (Size% < Allowed%) 
  73.  (Size% <= 0) 
  74.    Imp_TxInProgress% = 
  75.  Size% > Allowed% 
  76.    Size% = Allowed%
  77.  Size% < 0 
  78.  Size%=0
  79.  "Impulse_TransmitData",ImpTxPtr%,Size%,0,0,0,0,Imp_Task%
  80. ImpTxPtr% += Size%
  81. shell_ImpulseInTransmission = Imp_TxInProgress%
  82. shell_ImpulseDecode( 
  83.  Reason%, 
  84.  MethodToken%, 
  85.  Params%,                      
  86.  Size% )
  87.  Before%
  88. Before% = Reason%
  89.  "Impulse_Decode",Reason%,q%,,,,Imp_MethodTable%,Imp_Task% 
  90.  Reason%,q%,,,,MethodToken%,Params%,Size%
  91.  (Reason% = 0) 
  92.  (Before% <> 0) 
  93.    Reason%=Before%
  94. shell_ImpulseGetString( Base%, Param%, 
  95.  Result$ )
  96. Base% = Base%!(Param%*4)
  97.  Base%=0 
  98. f       =
  99. Result$=""
  100.  ?Base%>=32
  101. j    Result$+=
  102. ?Base%:Base%+=1
  103. shell_ImpulseGetValue( Base%, Param%, 
  104.  Result% )
  105. Base% = Base%!(Param%*4)
  106.  Base%=0 
  107. q       =
  108.  ?Base%=0 
  109.    Result%=Base%!1
  110. u       =
  111.    Result%=0
  112. x       =
  113. shell_ImpulseGetSwitch( Base%, Param% )
  114. = Base%!(Param%*4) <> 0
  115. shell_ImpulseNextTxTag
  116. Imp_TxTag% += 1
  117. = Imp_TxTag%
  118. shell_ImpulseCurrentTxTag
  119. = Imp_TxTag%
  120.