Home » Archimedes archive » Archimedes World » AW-1995-01-Disc2.adf » Disk2Jan95 » !AWJan95/Goodies/Event/!EvntShell/Extensions/ImpulseLib

!AWJan95/Goodies/Event/!EvntShell/Extensions/ImpulseLib

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Archimedes World » AW-1995-01-Disc2.adf » Disk2Jan95
Filename: !AWJan95/Goodies/Event/!EvntShell/Extensions/ImpulseLib
Read OK:
File size: 0DA7 bytes
Load address: 0000
Exec address: 0000
Duplicates

There is 1 duplicate copy of this file in the archive:

File contents
    1REM This library originally written by Dale Cass..
    2DEF PROCshell_ImpulseInitialise(Root$)
    3LOCAL Task%,Name$
    4Task%=_U%!148:REM task handle..
    5Name$=FNshell_GetAppName
    6OSCLI( "RMEnsure Impulse 0.18 *RMLoad "+Root$+"ImpulseII" )
    7Imp_Task%           = Task%
    8SYS "Impulse_Initialise",18,Task%,Name$,-1
    9Imp_Space%          = &400
   10DIM Imp_MethodTable% Imp_Space%
   11Imp_NextMethod%     = Imp_MethodTable% + 4
   12Imp_MethodTable%!0  = 0
   13Imp_NextToken%      = 1
   14Impulse_Command     = &200
   15Impulse_Request     = &201
   16Impulse_Reply       = &202
   17Impulse_SendData    = &203
   18Impulse_ReceiveData = &204
   19Imp_TxTag%          = 0
   20Imp_TxInProgress%   = FALSE
   21ImpTxTop%           = 0
   22ImpTxPtr%           = 0
   23_U%!100=_U%!100 OR 1<<2:REM set 'Impulse_Initialised' flag bit.. 
   24ENDPROC
   25
   26DEF PROCshell_ImpulseMakeMethod( Flags%, RETURN Token%, Method$, Syntax$ )
   27Token%              = Imp_NextToken%
   28Imp_NextToken%     += 1
   29Imp_NextMethod%!0   = Flags%
   30Imp_NextMethod%!4   = Token%
   31Imp_NextMethod%    += 8
   32$Imp_NextMethod%    = Method$
   33Imp_NextMethod%    += LENMethod$
   34Imp_NextMethod%?0   = 0
   35Imp_NextMethod%    += 1
   36$Imp_NextMethod%    = Syntax$
   37Imp_NextMethod%    += LENSyntax$
   38Imp_NextMethod%?0   = 0
   39Imp_NextMethod%    += 1
   40Imp_NextMethod%     = ((Imp_NextMethod% + 3) DIV 4) * 4
   41ENDPROC
   42
   43DEF PROCshell_ImpulseWindupMethods
   44Imp_NextMethod%!0 = -1
   45Imp_NextMethod%!4 = -1
   46Imp_NextMethod%?8 = 0
   47Imp_NextMethod%?9 = 0
   48Imp_NextMethod%  += 10
   49IF Imp_NextMethod% > Imp_MethodTable%+Imp_Space% THEN
   50   ERROR 200,"Impulse has run out of room in making methods" )
   51ENDIF
   52ENDPROC
   53
   54DEF PROCshell_ImpulseSendCommand( Command$ )
   55SYS "Impulse_SendMessage",Impulse_Command,Command$,0,0,0,0,Imp_Task%,0
   56ENDPROC
   57
   58DEF PROCshell_ImpulseSendRequest( Request$, Tag% )
   59SYS "Impulse_SendMessage",Impulse_Request,Request$,0,0,0,Tag%,Imp_Task%
   60ENDPROC
   61
   62DEF PROCshell_ImpulseSendReply( Reply$, Tag% )
   63LOCAL Size%
   64Size% = ImpTxTop% - ImpTxPtr%
   65SYS "Impulse_SendMessage",Impulse_Reply,Reply$,,,,Tag%,Imp_Task%,Size%
   66ENDPROC
   67
   68DEF PROCshell_ImpulseSetupTransmission( Block%, Size% )
   69ImpTxPtr% = Block%
   70ImpTxTop% = (Block% + Size% + 4) AND &FFFFFFFC
   71Imp_TxInProgress% = TRUE
   72ENDPROC
   73
   74DEF PROCshell_ImpulseTransmitData( Allowed% )
   75LOCAL Size%
   76Size% = ImpTxTop% - ImpTxPtr%
   77IF (Size% < Allowed%) OR (Size% <= 0) THEN
   78   Imp_TxInProgress% = FALSE
   79ENDIF
   80IF Size% > Allowed% THEN
   81   Size% = Allowed%
   82ENDIF
   83IF Size% < 0 THEN Size%=0
   84SYS "Impulse_TransmitData",ImpTxPtr%,Size%,0,0,0,0,Imp_Task%
   85ImpTxPtr% += Size%
   86ENDPROC
   87
   88DEF FNshell_ImpulseInTransmission = Imp_TxInProgress%
   89
   90DEF PROCshell_ImpulseDecode( RETURN Reason%, RETURN MethodToken%, RETURN Params%,                      RETURN Size% )
   91LOCAL Before%
   92Before% = Reason%
   93SYS "Impulse_Decode",Reason%,q%,,,,Imp_MethodTable%,Imp_Task% TO Reason%,q%,,,,MethodToken%,Params%,Size%
   94IF (Reason% = 0) AND (Before% <> 0) THEN
   95   Reason%=Before%
   96ENDIF
   97ENDPROC
   98
   99DEF FNshell_ImpulseGetString( Base%, Param%, RETURN Result$ )
  100Base% = Base%!(Param%*4)
  101IF Base%=0 THEN
  102   =FALSE
  103ENDIF
  104Result$=""
  105WHILE ?Base%>=32
  106   Result$+=CHR$?Base%:Base%+=1
  107ENDWHILE
  108=TRUE
  109
  110DEF FNshell_ImpulseGetValue( Base%, Param%, RETURN Result% )
  111Base% = Base%!(Param%*4)
  112IF Base%=0 THEN
  113   =FALSE
  114ENDIF
  115IF ?Base%=0 THEN
  116   Result%=Base%!1
  117   =TRUE
  118ELSE
  119   Result%=0
  120   =FALSE
  121ENDIF
  122
  123DEF FNshell_ImpulseGetSwitch( Base%, Param% )
  124= Base%!(Param%*4) <> 0
  125
  126DEF FNshell_ImpulseNextTxTag
  127Imp_TxTag% += 1
  128= Imp_TxTag%
  129
  130DEF FNshell_ImpulseCurrentTxTag
  131= Imp_TxTag%
4� 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.. 
�

D� �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
0Imp_NextMethod%  += 10
15� Imp_NextMethod% > Imp_MethodTable%+Imp_Space% �
2>   � 200,"Impulse has run out of room in making methods" )
3�
4�
5
6+� �shell_ImpulseSendCommand( Command$ )
7Iș "Impulse_SendMessage",Impulse_Command,Command$,0,0,0,0,Imp_Task%,0
8�
9
:1� �shell_ImpulseSendRequest( Request$, Tag% )
;Jș "Impulse_SendMessage",Impulse_Request,Request$,0,0,0,Tag%,Imp_Task%
<�
=
>-� �shell_ImpulseSendReply( Reply$, Tag% )
?� Size%
@!Size% = ImpTxTop% - ImpTxPtr%
AIș "Impulse_SendMessage",Impulse_Reply,Reply$,,,,Tag%,Imp_Task%,Size%
B�
C
D6� �shell_ImpulseSetupTransmission( Block%, Size% )
EImpTxPtr% = Block%
F0ImpTxTop% = (Block% + Size% + 4) � &FFFFFFFC
GImp_TxInProgress% = �
H�
I
J,� �shell_ImpulseTransmitData( Allowed% )
K� Size%
L!Size% = ImpTxTop% - ImpTxPtr%
M)� (Size% < Allowed%) � (Size% <= 0) �
N   Imp_TxInProgress% = �
O�
P� Size% > Allowed% �
Q   Size% = Allowed%
R�
S� Size% < 0 � Size%=0
T?ș "Impulse_TransmitData",ImpTxPtr%,Size%,0,0,0,0,Imp_Task%
UImpTxPtr% += Size%
V�
W
X6� �shell_ImpulseInTransmission = Imp_TxInProgress%
Y
Z`� �shell_ImpulseDecode( � Reason%, � MethodToken%, � Params%,                      � Size% )
[
� Before%
\Before% = Reason%
]kș "Impulse_Decode",Reason%,q%,,,,Imp_MethodTable%,Imp_Task% � Reason%,q%,,,,MethodToken%,Params%,Size%
^&� (Reason% = 0) � (Before% <> 0) �
_   Reason%=Before%
`�
a�
b
c9� �shell_ImpulseGetString( Base%, Param%, � Result$ )
dBase% = Base%!(Param%*4)
e� Base%=0 �
f	   =�
g�
hResult$=""
iȕ ?Base%>=32
j    Result$+=�?Base%:Base%+=1
k�
l=�
m
n8� �shell_ImpulseGetValue( Base%, Param%, � Result% )
oBase% = Base%!(Param%*4)
p� Base%=0 �
q	   =�
r�
s� ?Base%=0 �
t   Result%=Base%!1
u	   =�
v�
w   Result%=0
x	   =�
y�
z
{.� �shell_ImpulseGetSwitch( Base%, Param% )
|= Base%!(Param%*4) <> 0
}
~� �shell_ImpulseNextTxTag
Imp_TxTag% += 1
�= Imp_TxTag%
�
� � �shell_ImpulseCurrentTxTag
�= Imp_TxTag%
�
00000000  0d 00 01 34 f4 20 54 68  69 73 20 6c 69 62 72 61  |...4. This libra|
00000010  72 79 20 6f 72 69 67 69  6e 61 6c 6c 79 20 77 72  |ry originally wr|
00000020  69 74 74 65 6e 20 62 79  20 44 61 6c 65 20 43 61  |itten by Dale Ca|
00000030  73 73 2e 2e 0d 00 02 25  dd 20 f2 73 68 65 6c 6c  |ss.....%. .shell|
00000040  5f 49 6d 70 75 6c 73 65  49 6e 69 74 69 61 6c 69  |_ImpulseInitiali|
00000050  73 65 28 52 6f 6f 74 24  29 0d 00 03 11 ea 20 54  |se(Root$)..... T|
00000060  61 73 6b 25 2c 4e 61 6d  65 24 0d 00 04 21 54 61  |ask%,Name$...!Ta|
00000070  73 6b 25 3d 5f 55 25 21  31 34 38 3a f4 20 74 61  |sk%=_U%!148:. ta|
00000080  73 6b 20 68 61 6e 64 6c  65 2e 2e 0d 00 05 1b 4e  |sk handle......N|
00000090  61 6d 65 24 3d a4 73 68  65 6c 6c 5f 47 65 74 41  |ame$=.shell_GetA|
000000a0  70 70 4e 61 6d 65 0d 00  06 3b ff 28 20 22 52 4d  |ppName...;.( "RM|
000000b0  45 6e 73 75 72 65 20 49  6d 70 75 6c 73 65 20 30  |Ensure Impulse 0|
000000c0  2e 31 38 20 2a 52 4d 4c  6f 61 64 20 22 2b 52 6f  |.18 *RMLoad "+Ro|
000000d0  6f 74 24 2b 22 49 6d 70  75 6c 73 65 49 49 22 20  |ot$+"ImpulseII" |
000000e0  29 0d 00 07 1f 49 6d 70  5f 54 61 73 6b 25 20 20  |)....Imp_Task%  |
000000f0  20 20 20 20 20 20 20 20  20 3d 20 54 61 73 6b 25  |         = Task%|
00000100  0d 00 08 2d c8 99 20 22  49 6d 70 75 6c 73 65 5f  |...-.. "Impulse_|
00000110  49 6e 69 74 69 61 6c 69  73 65 22 2c 31 38 2c 54  |Initialise",18,T|
00000120  61 73 6b 25 2c 4e 61 6d  65 24 2c 2d 31 0d 00 09  |ask%,Name$,-1...|
00000130  1e 49 6d 70 5f 53 70 61  63 65 25 20 20 20 20 20  |.Imp_Space%     |
00000140  20 20 20 20 20 3d 20 26  34 30 30 0d 00 0a 21 de  |     = &400...!.|
00000150  20 49 6d 70 5f 4d 65 74  68 6f 64 54 61 62 6c 65  | Imp_MethodTable|
00000160  25 20 49 6d 70 5f 53 70  61 63 65 25 0d 00 0b 2e  |% Imp_Space%....|
00000170  49 6d 70 5f 4e 65 78 74  4d 65 74 68 6f 64 25 20  |Imp_NextMethod% |
00000180  20 20 20 20 3d 20 49 6d  70 5f 4d 65 74 68 6f 64  |    = Imp_Method|
00000190  54 61 62 6c 65 25 20 2b  20 34 0d 00 0c 1b 49 6d  |Table% + 4....Im|
000001a0  70 5f 4d 65 74 68 6f 64  54 61 62 6c 65 25 21 30  |p_MethodTable%!0|
000001b0  20 20 3d 20 30 0d 00 0d  1b 49 6d 70 5f 4e 65 78  |  = 0....Imp_Nex|
000001c0  74 54 6f 6b 65 6e 25 20  20 20 20 20 20 3d 20 31  |tToken%      = 1|
000001d0  0d 00 0e 1e 49 6d 70 75  6c 73 65 5f 43 6f 6d 6d  |....Impulse_Comm|
000001e0  61 6e 64 20 20 20 20 20  3d 20 26 32 30 30 0d 00  |and     = &200..|
000001f0  0f 1e 49 6d 70 75 6c 73  65 5f 52 65 71 75 65 73  |..Impulse_Reques|
00000200  74 20 20 20 20 20 3d 20  26 32 30 31 0d 00 10 1e  |t     = &201....|
00000210  49 6d 70 75 6c 73 65 5f  52 65 70 6c 79 20 20 20  |Impulse_Reply   |
00000220  20 20 20 20 3d 20 26 32  30 32 0d 00 11 1e 49 6d  |    = &202....Im|
00000230  70 75 6c 73 65 5f 53 65  6e 64 44 61 74 61 20 20  |pulse_SendData  |
00000240  20 20 3d 20 26 32 30 33  0d 00 12 1e 49 6d 70 75  |  = &203....Impu|
00000250  6c 73 65 5f 52 65 63 65  69 76 65 44 61 74 61 20  |lse_ReceiveData |
00000260  3d 20 26 32 30 34 0d 00  13 1b 49 6d 70 5f 54 78  |= &204....Imp_Tx|
00000270  54 61 67 25 20 20 20 20  20 20 20 20 20 20 3d 20  |Tag%          = |
00000280  30 0d 00 14 1b 49 6d 70  5f 54 78 49 6e 50 72 6f  |0....Imp_TxInPro|
00000290  67 72 65 73 73 25 20 20  20 3d 20 a3 0d 00 15 1b  |gress%   = .....|
000002a0  49 6d 70 54 78 54 6f 70  25 20 20 20 20 20 20 20  |ImpTxTop%       |
000002b0  20 20 20 20 3d 20 30 0d  00 16 1b 49 6d 70 54 78  |    = 0....ImpTx|
000002c0  50 74 72 25 20 20 20 20  20 20 20 20 20 20 20 3d  |Ptr%           =|
000002d0  20 30 0d 00 17 42 5f 55  25 21 31 30 30 3d 5f 55  | 0...B_U%!100=_U|
000002e0  25 21 31 30 30 20 84 20  31 3c 3c 32 3a f4 20 73  |%!100 . 1<<2:. s|
000002f0  65 74 20 27 49 6d 70 75  6c 73 65 5f 49 6e 69 74  |et 'Impulse_Init|
00000300  69 61 6c 69 73 65 64 27  20 66 6c 61 67 20 62 69  |ialised' flag bi|
00000310  74 2e 2e 20 0d 00 18 05  e1 0d 00 19 04 0d 00 1a  |t.. ............|
00000320  44 dd 20 f2 73 68 65 6c  6c 5f 49 6d 70 75 6c 73  |D. .shell_Impuls|
00000330  65 4d 61 6b 65 4d 65 74  68 6f 64 28 20 46 6c 61  |eMakeMethod( Fla|
00000340  67 73 25 2c 20 f8 20 54  6f 6b 65 6e 25 2c 20 4d  |gs%, . Token%, M|
00000350  65 74 68 6f 64 24 2c 20  53 79 6e 74 61 78 24 20  |ethod$, Syntax$ |
00000360  29 0d 00 1b 28 54 6f 6b  65 6e 25 20 20 20 20 20  |)...(Token%     |
00000370  20 20 20 20 20 20 20 20  20 3d 20 49 6d 70 5f 4e  |         = Imp_N|
00000380  65 78 74 54 6f 6b 65 6e  25 0d 00 1c 1b 49 6d 70  |extToken%....Imp|
00000390  5f 4e 65 78 74 54 6f 6b  65 6e 25 20 20 20 20 20  |_NextToken%     |
000003a0  2b 3d 20 31 0d 00 1d 20  49 6d 70 5f 4e 65 78 74  |+= 1... Imp_Next|
000003b0  4d 65 74 68 6f 64 25 21  30 20 20 20 3d 20 46 6c  |Method%!0   = Fl|
000003c0  61 67 73 25 0d 00 1e 20  49 6d 70 5f 4e 65 78 74  |ags%... Imp_Next|
000003d0  4d 65 74 68 6f 64 25 21  34 20 20 20 3d 20 54 6f  |Method%!4   = To|
000003e0  6b 65 6e 25 0d 00 1f 1b  49 6d 70 5f 4e 65 78 74  |ken%....Imp_Next|
000003f0  4d 65 74 68 6f 64 25 20  20 20 20 2b 3d 20 38 0d  |Method%    += 8.|
00000400  00 20 21 24 49 6d 70 5f  4e 65 78 74 4d 65 74 68  |. !$Imp_NextMeth|
00000410  6f 64 25 20 20 20 20 3d  20 4d 65 74 68 6f 64 24  |od%    = Method$|
00000420  0d 00 21 22 49 6d 70 5f  4e 65 78 74 4d 65 74 68  |..!"Imp_NextMeth|
00000430  6f 64 25 20 20 20 20 2b  3d 20 a9 4d 65 74 68 6f  |od%    += .Metho|
00000440  64 24 0d 00 22 1b 49 6d  70 5f 4e 65 78 74 4d 65  |d$..".Imp_NextMe|
00000450  74 68 6f 64 25 3f 30 20  20 20 3d 20 30 0d 00 23  |thod%?0   = 0..#|
00000460  1b 49 6d 70 5f 4e 65 78  74 4d 65 74 68 6f 64 25  |.Imp_NextMethod%|
00000470  20 20 20 20 2b 3d 20 31  0d 00 24 21 24 49 6d 70  |    += 1..$!$Imp|
00000480  5f 4e 65 78 74 4d 65 74  68 6f 64 25 20 20 20 20  |_NextMethod%    |
00000490  3d 20 53 79 6e 74 61 78  24 0d 00 25 22 49 6d 70  |= Syntax$..%"Imp|
000004a0  5f 4e 65 78 74 4d 65 74  68 6f 64 25 20 20 20 20  |_NextMethod%    |
000004b0  2b 3d 20 a9 53 79 6e 74  61 78 24 0d 00 26 1b 49  |+= .Syntax$..&.I|
000004c0  6d 70 5f 4e 65 78 74 4d  65 74 68 6f 64 25 3f 30  |mp_NextMethod%?0|
000004d0  20 20 20 3d 20 30 0d 00  27 1b 49 6d 70 5f 4e 65  |   = 0..'.Imp_Ne|
000004e0  78 74 4d 65 74 68 6f 64  25 20 20 20 20 2b 3d 20  |xtMethod%    += |
000004f0  31 0d 00 28 39 49 6d 70  5f 4e 65 78 74 4d 65 74  |1..(9Imp_NextMet|
00000500  68 6f 64 25 20 20 20 20  20 3d 20 28 28 49 6d 70  |hod%     = ((Imp|
00000510  5f 4e 65 78 74 4d 65 74  68 6f 64 25 20 2b 20 33  |_NextMethod% + 3|
00000520  29 20 81 20 34 29 20 2a  20 34 0d 00 29 05 e1 0d  |) . 4) * 4..)...|
00000530  00 2a 04 0d 00 2b 21 dd  20 f2 73 68 65 6c 6c 5f  |.*...+!. .shell_|
00000540  49 6d 70 75 6c 73 65 57  69 6e 64 75 70 4d 65 74  |ImpulseWindupMet|
00000550  68 6f 64 73 0d 00 2c 1a  49 6d 70 5f 4e 65 78 74  |hods..,.Imp_Next|
00000560  4d 65 74 68 6f 64 25 21  30 20 3d 20 2d 31 0d 00  |Method%!0 = -1..|
00000570  2d 1a 49 6d 70 5f 4e 65  78 74 4d 65 74 68 6f 64  |-.Imp_NextMethod|
00000580  25 21 34 20 3d 20 2d 31  0d 00 2e 19 49 6d 70 5f  |%!4 = -1....Imp_|
00000590  4e 65 78 74 4d 65 74 68  6f 64 25 3f 38 20 3d 20  |NextMethod%?8 = |
000005a0  30 0d 00 2f 19 49 6d 70  5f 4e 65 78 74 4d 65 74  |0../.Imp_NextMet|
000005b0  68 6f 64 25 3f 39 20 3d  20 30 0d 00 30 1a 49 6d  |hod%?9 = 0..0.Im|
000005c0  70 5f 4e 65 78 74 4d 65  74 68 6f 64 25 20 20 2b  |p_NextMethod%  +|
000005d0  3d 20 31 30 0d 00 31 35  e7 20 49 6d 70 5f 4e 65  |= 10..15. Imp_Ne|
000005e0  78 74 4d 65 74 68 6f 64  25 20 3e 20 49 6d 70 5f  |xtMethod% > Imp_|
000005f0  4d 65 74 68 6f 64 54 61  62 6c 65 25 2b 49 6d 70  |MethodTable%+Imp|
00000600  5f 53 70 61 63 65 25 20  8c 0d 00 32 3e 20 20 20  |_Space% ...2>   |
00000610  85 20 32 30 30 2c 22 49  6d 70 75 6c 73 65 20 68  |. 200,"Impulse h|
00000620  61 73 20 72 75 6e 20 6f  75 74 20 6f 66 20 72 6f  |as run out of ro|
00000630  6f 6d 20 69 6e 20 6d 61  6b 69 6e 67 20 6d 65 74  |om in making met|
00000640  68 6f 64 73 22 20 29 0d  00 33 05 cd 0d 00 34 05  |hods" )..3....4.|
00000650  e1 0d 00 35 04 0d 00 36  2b dd 20 f2 73 68 65 6c  |...5...6+. .shel|
00000660  6c 5f 49 6d 70 75 6c 73  65 53 65 6e 64 43 6f 6d  |l_ImpulseSendCom|
00000670  6d 61 6e 64 28 20 43 6f  6d 6d 61 6e 64 24 20 29  |mand( Command$ )|
00000680  0d 00 37 49 c8 99 20 22  49 6d 70 75 6c 73 65 5f  |..7I.. "Impulse_|
00000690  53 65 6e 64 4d 65 73 73  61 67 65 22 2c 49 6d 70  |SendMessage",Imp|
000006a0  75 6c 73 65 5f 43 6f 6d  6d 61 6e 64 2c 43 6f 6d  |ulse_Command,Com|
000006b0  6d 61 6e 64 24 2c 30 2c  30 2c 30 2c 30 2c 49 6d  |mand$,0,0,0,0,Im|
000006c0  70 5f 54 61 73 6b 25 2c  30 0d 00 38 05 e1 0d 00  |p_Task%,0..8....|
000006d0  39 04 0d 00 3a 31 dd 20  f2 73 68 65 6c 6c 5f 49  |9...:1. .shell_I|
000006e0  6d 70 75 6c 73 65 53 65  6e 64 52 65 71 75 65 73  |mpulseSendReques|
000006f0  74 28 20 52 65 71 75 65  73 74 24 2c 20 54 61 67  |t( Request$, Tag|
00000700  25 20 29 0d 00 3b 4a c8  99 20 22 49 6d 70 75 6c  |% )..;J.. "Impul|
00000710  73 65 5f 53 65 6e 64 4d  65 73 73 61 67 65 22 2c  |se_SendMessage",|
00000720  49 6d 70 75 6c 73 65 5f  52 65 71 75 65 73 74 2c  |Impulse_Request,|
00000730  52 65 71 75 65 73 74 24  2c 30 2c 30 2c 30 2c 54  |Request$,0,0,0,T|
00000740  61 67 25 2c 49 6d 70 5f  54 61 73 6b 25 0d 00 3c  |ag%,Imp_Task%..<|
00000750  05 e1 0d 00 3d 04 0d 00  3e 2d dd 20 f2 73 68 65  |....=...>-. .she|
00000760  6c 6c 5f 49 6d 70 75 6c  73 65 53 65 6e 64 52 65  |ll_ImpulseSendRe|
00000770  70 6c 79 28 20 52 65 70  6c 79 24 2c 20 54 61 67  |ply( Reply$, Tag|
00000780  25 20 29 0d 00 3f 0b ea  20 53 69 7a 65 25 0d 00  |% )..?.. Size%..|
00000790  40 21 53 69 7a 65 25 20  3d 20 49 6d 70 54 78 54  |@!Size% = ImpTxT|
000007a0  6f 70 25 20 2d 20 49 6d  70 54 78 50 74 72 25 0d  |op% - ImpTxPtr%.|
000007b0  00 41 49 c8 99 20 22 49  6d 70 75 6c 73 65 5f 53  |.AI.. "Impulse_S|
000007c0  65 6e 64 4d 65 73 73 61  67 65 22 2c 49 6d 70 75  |endMessage",Impu|
000007d0  6c 73 65 5f 52 65 70 6c  79 2c 52 65 70 6c 79 24  |lse_Reply,Reply$|
000007e0  2c 2c 2c 2c 54 61 67 25  2c 49 6d 70 5f 54 61 73  |,,,,Tag%,Imp_Tas|
000007f0  6b 25 2c 53 69 7a 65 25  0d 00 42 05 e1 0d 00 43  |k%,Size%..B....C|
00000800  04 0d 00 44 36 dd 20 f2  73 68 65 6c 6c 5f 49 6d  |...D6. .shell_Im|
00000810  70 75 6c 73 65 53 65 74  75 70 54 72 61 6e 73 6d  |pulseSetupTransm|
00000820  69 73 73 69 6f 6e 28 20  42 6c 6f 63 6b 25 2c 20  |ission( Block%, |
00000830  53 69 7a 65 25 20 29 0d  00 45 16 49 6d 70 54 78  |Size% )..E.ImpTx|
00000840  50 74 72 25 20 3d 20 42  6c 6f 63 6b 25 0d 00 46  |Ptr% = Block%..F|
00000850  30 49 6d 70 54 78 54 6f  70 25 20 3d 20 28 42 6c  |0ImpTxTop% = (Bl|
00000860  6f 63 6b 25 20 2b 20 53  69 7a 65 25 20 2b 20 34  |ock% + Size% + 4|
00000870  29 20 80 20 26 46 46 46  46 46 46 46 43 0d 00 47  |) . &FFFFFFFC..G|
00000880  19 49 6d 70 5f 54 78 49  6e 50 72 6f 67 72 65 73  |.Imp_TxInProgres|
00000890  73 25 20 3d 20 b9 0d 00  48 05 e1 0d 00 49 04 0d  |s% = ...H....I..|
000008a0  00 4a 2c dd 20 f2 73 68  65 6c 6c 5f 49 6d 70 75  |.J,. .shell_Impu|
000008b0  6c 73 65 54 72 61 6e 73  6d 69 74 44 61 74 61 28  |lseTransmitData(|
000008c0  20 41 6c 6c 6f 77 65 64  25 20 29 0d 00 4b 0b ea  | Allowed% )..K..|
000008d0  20 53 69 7a 65 25 0d 00  4c 21 53 69 7a 65 25 20  | Size%..L!Size% |
000008e0  3d 20 49 6d 70 54 78 54  6f 70 25 20 2d 20 49 6d  |= ImpTxTop% - Im|
000008f0  70 54 78 50 74 72 25 0d  00 4d 29 e7 20 28 53 69  |pTxPtr%..M). (Si|
00000900  7a 65 25 20 3c 20 41 6c  6c 6f 77 65 64 25 29 20  |ze% < Allowed%) |
00000910  84 20 28 53 69 7a 65 25  20 3c 3d 20 30 29 20 8c  |. (Size% <= 0) .|
00000920  0d 00 4e 1c 20 20 20 49  6d 70 5f 54 78 49 6e 50  |..N.   Imp_TxInP|
00000930  72 6f 67 72 65 73 73 25  20 3d 20 a3 0d 00 4f 05  |rogress% = ...O.|
00000940  cd 0d 00 50 18 e7 20 53  69 7a 65 25 20 3e 20 41  |...P.. Size% > A|
00000950  6c 6c 6f 77 65 64 25 20  8c 0d 00 51 17 20 20 20  |llowed% ...Q.   |
00000960  53 69 7a 65 25 20 3d 20  41 6c 6c 6f 77 65 64 25  |Size% = Allowed%|
00000970  0d 00 52 05 cd 0d 00 53  19 e7 20 53 69 7a 65 25  |..R....S.. Size%|
00000980  20 3c 20 30 20 8c 20 53  69 7a 65 25 3d 30 0d 00  | < 0 . Size%=0..|
00000990  54 3f c8 99 20 22 49 6d  70 75 6c 73 65 5f 54 72  |T?.. "Impulse_Tr|
000009a0  61 6e 73 6d 69 74 44 61  74 61 22 2c 49 6d 70 54  |ansmitData",ImpT|
000009b0  78 50 74 72 25 2c 53 69  7a 65 25 2c 30 2c 30 2c  |xPtr%,Size%,0,0,|
000009c0  30 2c 30 2c 49 6d 70 5f  54 61 73 6b 25 0d 00 55  |0,0,Imp_Task%..U|
000009d0  16 49 6d 70 54 78 50 74  72 25 20 2b 3d 20 53 69  |.ImpTxPtr% += Si|
000009e0  7a 65 25 0d 00 56 05 e1  0d 00 57 04 0d 00 58 36  |ze%..V....W...X6|
000009f0  dd 20 a4 73 68 65 6c 6c  5f 49 6d 70 75 6c 73 65  |. .shell_Impulse|
00000a00  49 6e 54 72 61 6e 73 6d  69 73 73 69 6f 6e 20 3d  |InTransmission =|
00000a10  20 49 6d 70 5f 54 78 49  6e 50 72 6f 67 72 65 73  | Imp_TxInProgres|
00000a20  73 25 0d 00 59 04 0d 00  5a 60 dd 20 f2 73 68 65  |s%..Y...Z`. .she|
00000a30  6c 6c 5f 49 6d 70 75 6c  73 65 44 65 63 6f 64 65  |ll_ImpulseDecode|
00000a40  28 20 f8 20 52 65 61 73  6f 6e 25 2c 20 f8 20 4d  |( . Reason%, . M|
00000a50  65 74 68 6f 64 54 6f 6b  65 6e 25 2c 20 f8 20 50  |ethodToken%, . P|
00000a60  61 72 61 6d 73 25 2c 20  20 20 20 20 20 20 20 20  |arams%,         |
00000a70  20 20 20 20 20 20 20 20  20 20 20 20 20 f8 20 53  |             . S|
00000a80  69 7a 65 25 20 29 0d 00  5b 0d ea 20 42 65 66 6f  |ize% )..[.. Befo|
00000a90  72 65 25 0d 00 5c 15 42  65 66 6f 72 65 25 20 3d  |re%..\.Before% =|
00000aa0  20 52 65 61 73 6f 6e 25  0d 00 5d 6b c8 99 20 22  | Reason%..]k.. "|
00000ab0  49 6d 70 75 6c 73 65 5f  44 65 63 6f 64 65 22 2c  |Impulse_Decode",|
00000ac0  52 65 61 73 6f 6e 25 2c  71 25 2c 2c 2c 2c 49 6d  |Reason%,q%,,,,Im|
00000ad0  70 5f 4d 65 74 68 6f 64  54 61 62 6c 65 25 2c 49  |p_MethodTable%,I|
00000ae0  6d 70 5f 54 61 73 6b 25  20 b8 20 52 65 61 73 6f  |mp_Task% . Reaso|
00000af0  6e 25 2c 71 25 2c 2c 2c  2c 4d 65 74 68 6f 64 54  |n%,q%,,,,MethodT|
00000b00  6f 6b 65 6e 25 2c 50 61  72 61 6d 73 25 2c 53 69  |oken%,Params%,Si|
00000b10  7a 65 25 0d 00 5e 26 e7  20 28 52 65 61 73 6f 6e  |ze%..^&. (Reason|
00000b20  25 20 3d 20 30 29 20 80  20 28 42 65 66 6f 72 65  |% = 0) . (Before|
00000b30  25 20 3c 3e 20 30 29 20  8c 0d 00 5f 16 20 20 20  |% <> 0) ..._.   |
00000b40  52 65 61 73 6f 6e 25 3d  42 65 66 6f 72 65 25 0d  |Reason%=Before%.|
00000b50  00 60 05 cd 0d 00 61 05  e1 0d 00 62 04 0d 00 63  |.`....a....b...c|
00000b60  39 dd 20 a4 73 68 65 6c  6c 5f 49 6d 70 75 6c 73  |9. .shell_Impuls|
00000b70  65 47 65 74 53 74 72 69  6e 67 28 20 42 61 73 65  |eGetString( Base|
00000b80  25 2c 20 50 61 72 61 6d  25 2c 20 f8 20 52 65 73  |%, Param%, . Res|
00000b90  75 6c 74 24 20 29 0d 00  64 1c 42 61 73 65 25 20  |ult$ )..d.Base% |
00000ba0  3d 20 42 61 73 65 25 21  28 50 61 72 61 6d 25 2a  |= Base%!(Param%*|
00000bb0  34 29 0d 00 65 0f e7 20  42 61 73 65 25 3d 30 20  |4)..e.. Base%=0 |
00000bc0  8c 0d 00 66 09 20 20 20  3d a3 0d 00 67 05 cd 0d  |...f.   =...g...|
00000bd0  00 68 0e 52 65 73 75 6c  74 24 3d 22 22 0d 00 69  |.h.Result$=""..i|
00000be0  11 c8 95 20 3f 42 61 73  65 25 3e 3d 33 32 0d 00  |... ?Base%>=32..|
00000bf0  6a 20 20 20 20 52 65 73  75 6c 74 24 2b 3d bd 3f  |j    Result$+=.?|
00000c00  42 61 73 65 25 3a 42 61  73 65 25 2b 3d 31 0d 00  |Base%:Base%+=1..|
00000c10  6b 05 ce 0d 00 6c 06 3d  b9 0d 00 6d 04 0d 00 6e  |k....l.=...m...n|
00000c20  38 dd 20 a4 73 68 65 6c  6c 5f 49 6d 70 75 6c 73  |8. .shell_Impuls|
00000c30  65 47 65 74 56 61 6c 75  65 28 20 42 61 73 65 25  |eGetValue( Base%|
00000c40  2c 20 50 61 72 61 6d 25  2c 20 f8 20 52 65 73 75  |, Param%, . Resu|
00000c50  6c 74 25 20 29 0d 00 6f  1c 42 61 73 65 25 20 3d  |lt% )..o.Base% =|
00000c60  20 42 61 73 65 25 21 28  50 61 72 61 6d 25 2a 34  | Base%!(Param%*4|
00000c70  29 0d 00 70 0f e7 20 42  61 73 65 25 3d 30 20 8c  |)..p.. Base%=0 .|
00000c80  0d 00 71 09 20 20 20 3d  a3 0d 00 72 05 cd 0d 00  |..q.   =...r....|
00000c90  73 10 e7 20 3f 42 61 73  65 25 3d 30 20 8c 0d 00  |s.. ?Base%=0 ...|
00000ca0  74 16 20 20 20 52 65 73  75 6c 74 25 3d 42 61 73  |t.   Result%=Bas|
00000cb0  65 25 21 31 0d 00 75 09  20 20 20 3d b9 0d 00 76  |e%!1..u.   =...v|
00000cc0  05 cc 0d 00 77 10 20 20  20 52 65 73 75 6c 74 25  |....w.   Result%|
00000cd0  3d 30 0d 00 78 09 20 20  20 3d a3 0d 00 79 05 cd  |=0..x.   =...y..|
00000ce0  0d 00 7a 04 0d 00 7b 2e  dd 20 a4 73 68 65 6c 6c  |..z...{.. .shell|
00000cf0  5f 49 6d 70 75 6c 73 65  47 65 74 53 77 69 74 63  |_ImpulseGetSwitc|
00000d00  68 28 20 42 61 73 65 25  2c 20 50 61 72 61 6d 25  |h( Base%, Param%|
00000d10  20 29 0d 00 7c 1b 3d 20  42 61 73 65 25 21 28 50  | )..|.= Base%!(P|
00000d20  61 72 61 6d 25 2a 34 29  20 3c 3e 20 30 0d 00 7d  |aram%*4) <> 0..}|
00000d30  04 0d 00 7e 1d dd 20 a4  73 68 65 6c 6c 5f 49 6d  |...~.. .shell_Im|
00000d40  70 75 6c 73 65 4e 65 78  74 54 78 54 61 67 0d 00  |pulseNextTxTag..|
00000d50  7f 13 49 6d 70 5f 54 78  54 61 67 25 20 2b 3d 20  |..Imp_TxTag% += |
00000d60  31 0d 00 80 10 3d 20 49  6d 70 5f 54 78 54 61 67  |1....= Imp_TxTag|
00000d70  25 0d 00 81 04 0d 00 82  20 dd 20 a4 73 68 65 6c  |%....... . .shel|
00000d80  6c 5f 49 6d 70 75 6c 73  65 43 75 72 72 65 6e 74  |l_ImpulseCurrent|
00000d90  54 78 54 61 67 0d 00 83  10 3d 20 49 6d 70 5f 54  |TxTag....= Imp_T|
00000da0  78 54 61 67 25 0d ff                              |xTag%..|
00000da7