Home » Archimedes archive » Acorn User » AU 1993-10.adf » !StarInfo_StarInfo » SharedCLib/SCLsrce

SharedCLib/SCLsrce

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 » Acorn User » AU 1993-10.adf » !StarInfo_StarInfo
Filename: SharedCLib/SCLsrce
Read OK:
File size: 1D12 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM     >SCLsrce
   20REM By  DCA, based on PRM example
   30REM For 32-bit machines
   40REM (c) BAU September 1993
   50:
   60DIM code% &10000,swi$(64),swi(64),def(64)
   70def()=FALSE
   80max_swi=-1
   90i%=0
  100REPEAT
  110 SYS "OS_GBPB",9,"SCL",code%,1,i%,&100,"*" TO ,,,read%,i%
  120 IF read%=1 THEN
  130  j%=code%
  140  WHILE ?j%>=32
  150   j%+=1
  160  ENDWHILE
  170  ?j%=13
  180  f$=FNlc($code%)
  190  IF LEFT$(f$,3)="swi" THEN
  200   swi_no=VAL(MID$(f$,4))
  210   def(swi_no)=TRUE
  220   IF swi_no>max_swi max_swi=swi_no
  230   swi$(swi_no)="SCL."+f$
  240  ENDIF
  250 ENDIF
  260UNTIL i%=-1
  270IF max_swi=-1 ERROR 0,"No source files found!"
  280swi$(64)="SCL.Version"
  290OVERLAY swi$()
  300swi_chunk=&CE440
  310vbit=1<<28
  320r0=0:r1=1:r2=2:r3=3:r4=4
  330r5=5:r6=6:r7=7:r8=8:r9=9:r14=14
  340sl=10:fp=11:wp=12:sp=13:lr=14:pc=15
  350swi_chunk=&CE4C0
  360vbit=1<<28
  370wk=0
  380size=FNwk(4)
  390libreloc=FNwk(4)
  400clientreloc=FNwk(4)
  410FOR swi=0 TO max_swi
  420 IF def(swi) THEN z=EVAL("FNswi"+RIGHT$("0"+STR$swi,2)+"_vars")
  430NEXT
  440Lib_Offset=20
  450SL_Lib_Offset=540
  460_kernel_moduleinit=38*4
  470_clib_initialiase=20*4
  480_clib_finalisemodule=179*4
  490SL_Client_Offset=-536
  500FOR pass%=4 TO 6 STEP 2
  510P%=0
  520O%=code%
  530[OPT pass%
  540.module_base
  550        DCD     0
  560        DCD     init
  570        DCD     terminate
  580        DCD     0
  590        DCD     title
  600        DCD     help
  610        DCD     0
  620        DCD     swi_chunk
  630        DCD     swicode
  640        DCD     switbl
  650
  660.title  EQUS    "SCL"+CHR$0
  670.help   EQUS    FNversion+CHR$0
  680        ALIGN
  690
  700.switbl EQUS    "SCL"+CHR$0
  710]
  720FOR swi=0 TO max_swi
  730 IF def(swi) THEN
  740  [OPT pass%
  750        EQUS    EVAL("FNswi"+RIGHT$("0"+STR$swi,2)+"_name")+CHR$0
  760  ]
  770 ELSE
  780  [OPT pass%
  790        EQUS    "Unused"+RIGHT$("0"+STR$swi,2)+CHR$0
  800  ]
  810 ENDIF
  820NEXT
  830[OPT pass%
  840        DCB     0
  850        ALIGN
  860
  870.init   STMDB   (sp)!,{r7-r11,lr}
  880        MOV     sl,sp,LSR #20
  890        MOV     sl,sl,LSL #20
  900        LDMIA   sl,{r4,r5}
  910        STMDB   (sp)!,{r4,r5}
  920        MOV     r0,#6
  930        FNadrl(r4,rw_base)
  940        FNadrl(r5,rw_limit)
  950        SUB     r3,r5,r4
  960        ADD     r3,r3,#(wk AND &00FF)
  970        ADD     r3,r3,#(wk AND &FF00)
  980        SWI     "XOS_Module"
  990        MOV     r9,r12
 1000        STR     r2,[r12]
 1010        MOV     r12,r2
 1020        STR     r3,[r12]
 1030        ADR     r0,stubs
 1040        FNadrl(r14,kernel_vectors)
 1050        STR     r14,[r0,#4]
 1060        FNadrl(r14,kernel_vectors_end)
 1070        STR     r14,[r0,#8]
 1080        FNadrl(r14,kernel_statics)
 1090        STR     r14,[r0,#12]
 1100        FNadrl(r14,kernel_statics_end)
 1110        STR     r14,[r0,#16]
 1120        FNadrl(r14,clib_vectors)
 1130        STR     r14,[r0,#24]
 1140        FNadrl(r14,clib_vectors_end)
 1150        STR     r14,[r0,#28]
 1160        FNadrl(r14,clib_statics)
 1170        STR     r14,[r0,#32]
 1180        FNadrl(r14,clib_statics_end)
 1190        STR     r14,[r0,#36]
 1200        ADD     r1,r12,#wk
 1210        ADD     r2,r12,r3
 1220        FNadrl(r3,zi_base)
 1230        MOV     r6,#4<<16
 1240        SWI     "XSharedCLibrary_LibInitModule"
 1250        ADD     r8,r1,#Lib_Offset
 1260        LDMIA   r8,{r7,r8}
 1270        STMIB   r12,{r7,r8}
 1280        ADR     r0,kernel_init_block
 1290        ADR     r14,module_base
 1300        STR     r14,[r0]
 1310        ADR     r14,rts_block
 1320        STR     r14,[r0,#4]
 1330        ADR     r14,rts_block_end
 1340        STR     r14,[r0,#8]
 1350        ADR     r14,c_str
 1360        STR     r14,rts_block+12
 1370        BL      call_moduleinit
 1380        STMDB   (sp)!,{r9}
 1390        BL      clib_vectors+_clib_initialiase
 1400        LDMIA   (sp)!,{r2}
 1410        ADD     r0,sp,#(10-7+2)*4
 1420        LDMIA   r0,{r0,r1}
 1430        BL      user_init
 1440        MOV     sl,sp,LSR #20
 1450        MOV     sl,sl,LSL #20
 1460        LDMIA   (sp)!,{r4,r5}
 1470        STMIA   sl,{r4,r5}
 1480        LDMIA   (sp)!,{r7-r11,lr}
 1490        CMP     r0,#0
 1500        BICEQS  pc,lr,#vbit
 1510        ORRS    pc,lr,#vbit
 1520
 1530.call_moduleinit
 1540        STMDB   (sp)!,{lr}
 1550        B       kernel_vectors+_kernel_moduleinit
 1560
 1570.terminate
 1580        STMDB   (sp)!,{r7-r11,lr}
 1590        MOV     sl,sp,LSR #20
 1600        MOV     sl,sl,LSL #20
 1610        LDMIA   sl,{r4,r5}
 1620        MOV     r0,r12
 1630        LDR     r12,[r12]
 1640        LDMIB   r12,{r11,r12}
 1650        STMIA   sl,{r11,r12}
 1660        ADD     sl,sl,#SL_Lib_Offset
 1670        MOV     fp,#0
 1680        BL      clib_vectors+_clib_finalisemodule
 1690        MOV     sl,sp,LSR #20
 1700        MOV     sl,sl,LSL #20
 1710        STMIA   sl,{r4,r5}
 1720        LDMIA   (sp)!,{r7-r11,pc}^
 1730
 1740.swicode
 1750        STMDB   (sp)!,{r0-r9,lr}
 1760        MOV     sl,sp,LSR #20
 1770        MOV     sl,sl,LSL #20
 1780        LDMIA   sl,{r8,r9}
 1790        MOV     r0,r11
 1800        MOV     r1,sp
 1810        MOV     r2,r12
 1820        LDR     r12,[r12]
 1830        LDMIB   r12,{r11,r12}
 1840        STMIA   sl,{r11,r12}
 1850        ADD     sl,sl,#SL_Lib_Offset
 1860        MOV     fp,#0
 1870        BL      user_swi
 1880        MOV     sl,sp,LSR #20
 1890        MOV     sl,sl,LSL #20
 1900        STMIA   sl,{r8,r9}
 1910        CMP     r0,#0
 1920        STRNE   r0,[sp]
 1930        LDMIA   (sp)!,{r0-r9,lr}
 1940        BICEQS  pc,lr,#vbit
 1950        ORRS    pc,lr,#vbit
 1960
 1970.user_init
 1980        STMDB   (sp)!,{r4-r9,lr}
 1990        MOV     r0,#0
 2000]
 2010FOR swi=0 TO max_swi
 2020 IF def(swi) THEN
 2030  k=EVAL("FNswi"+RIGHT$("0"+STR$swi,2)+"_init")
 2040  [OPT pass%
 2050        CMP     r0,#0
 2060        LDMNEIA (sp)!,{r4-r9,pc}^
 2070  ]
 2080 ENDIF
 2090NEXT
 2100[OPT pass%
 2110        MOV     r0,#0
 2120        LDMIA   (sp)!,{r4-r9,pc}^
 2130
 2140.user_swi
 2150        STMDB   (sp)!,{r8,r9,lr}
 2160        CMP     r0,#max_swi+1
 2170        ADDCC   pc,pc,r0,LSL #3
 2180        B       unknown_swi
 2190]
 2200FOR swi=0 TO max_swi
 2210 [OPT pass%
 2220        BL      swi(swi)
 2230        B       done_swi
 2240 ]
 2250NEXT
 2260[OPT pass%
 2270.done_swi
 2280        LDMIA   (sp)!,{r8,r9,pc}
 2290.unknown_swi
 2300        ADR     r0,bad_swi_err
 2310        LDMIA   (sp)!,{r8-r9,lr}
 2320        ORRS    pc,lr,#vbit
 2330.bad_swi_err
 2340        DCD     &1E6
 2350        EQUS    "Unknown SCL operation"
 2360        DCB     0
 2370        ALIGN
 2380
 2390.stubs  DCD     1
 2400        FNtable(16)
 2410        DCD     2
 2420        FNtable(16)
 2430        DCD     -1
 2440
 2450.kernel_init_block
 2460        FNtable(12)
 2470
 2480.rts_block
 2490        DCD     rts_block_end-rts_block
 2500        FNtable(20)
 2510.rts_block_end
 2520
 2530.c_str  EQUS    "C"+CHR$0
 2540        ALIGN
 2550
 2560.kernel_vectors FNtable(48*4)
 2570.kernel_vectors_end
 2580
 2590.clib_vectors FNtable(183*4)
 2600.clib_vectors_end
 2610]
 2620REM Statics will be copied into workspace, but we have to pretend
 2630REM they're further on in the module!
 2640rw_base=P%
 2650kernel_statics=P%
 2660kernel_statics_end=kernel_statics+&31C
 2670clib_statics=kernel_statics_end
 2680clib_statics_end=clib_statics+&B48
 2690zi_base=clib_statics_end
 2700rw_limit=zi_base+&40
 2710[OPT pass%
 2720.null_swi
 2730        MOV     pc,lr
 2740]
 2750FOR swi=0 TO max_swi
 2760 IF def(swi) THEN
 2770  swi(swi)=P%
 2780  k=EVAL("FNswi"+RIGHT$("0"+STR$swi,2)+"_code")
 2790 ELSE
 2800  swi(swi)=null_swi
 2810 ENDIF
 2820NEXT
 2830NEXT pass%
 2840SYS "OS_File",10,"SCLmod",&FFA,,code%,O%
 2850END
 2860:
 2870DEF FNtable(size%)
 2880WHILE size%>0
 2890 !O%=0
 2900 O%+=4
 2910 P%+=4
 2920 size%-=4
 2930ENDWHILE
 2940=0
 2950:
 2960DEF FNwk(req)
 2970wk+=req
 2980=wk-req
 2990:
 3000DEF FNlc(a$)
 3010LOCAL b$,i,c
 3020FOR i=1 TO LEN(a$)
 3030 c=ASCMID$(a$,i)
 3040 IF c>=ASC"A" AND c<=ASC"Z" c+=32
 3050 b$+=CHR$c
 3060NEXT
 3070=b$
 3080:
 3090DEF FNadrl(reg,off)
 3100off=(off-(P%+8))
 3110[OPT pass%
 3120        ADD     reg,pc,#(off AND &FF)
 3130        ADD     reg,reg,#(off AND &FF00)
 3140]
 3150=0

�     >SCLsrce
#� By  DCA, based on PRM example
� For 32-bit machines
(� (c) BAU September 1993
2:
<+� code% &10000,swi$(64),swi(64),def(64)
Fdef()=�
Pmax_swi=-1
Zi%=0
d�
n; ș "OS_GBPB",9,"SCL",code%,1,i%,&100,"*" � ,,,read%,i%
x � read%=1 �
�  j%=code%
�  ȕ ?j%>=32
�   j%+=1
�  �
�  ?j%=13
�  f$=�lc($code%)
�  � �f$,3)="swi" �
�   swi_no=�(�f$,4))
�   def(swi_no)=�
�&   � swi_no>max_swi max_swi=swi_no
�   swi$(swi_no)="SCL."+f$
�  �
� �
� i%=-1
-� max_swi=-1 � 0,"No source files found!"
swi$(64)="SCL.Version"
"
ȣ swi$()
,swi_chunk=&CE440
6vbit=1<<28
@r0=0:r1=1:r2=2:r3=3:r4=4
J#r5=5:r6=6:r7=7:r8=8:r9=9:r14=14
T'sl=10:fp=11:wp=12:sp=13:lr=14:pc=15
^swi_chunk=&CE4C0
hvbit=1<<28
rwk=0
|size=�wk(4)
�libreloc=�wk(4)
�clientreloc=�wk(4)
�� swi=0 � max_swi
�3 � def(swi) � z=�("FNswi"+�"0"+�swi,2)+"_vars")
��
�Lib_Offset=20
�SL_Lib_Offset=540
�_kernel_moduleinit=38*4
�_clib_initialiase=20*4
�_clib_finalisemodule=179*4
�SL_Client_Offset=-536
�� pass%=4 � 6 � 2
�P%=0
O%=code%
[OPT pass%
.module_base
&        DCD     0
0        DCD     init
:        DCD     terminate
D        DCD     0
N        DCD     title
X        DCD     help
b        DCD     0
l        DCD     swi_chunk
v        DCD     swicode
�        DCD     switbl
�
�.title  EQUS    "SCL"+�0
�.help   EQUS    �version+�0
�        ALIGN
�
�.switbl EQUS    "SCL"+�0
�]
�� swi=0 � max_swi
� � def(swi) �
�  [OPT pass%
�6        EQUS    �("FNswi"+�"0"+�swi,2)+"_name")+�0
�  ]
 �
  [OPT pass%
,        EQUS    "Unused"+�"0"+�swi,2)+�0
   ]
* �
4�
>[OPT pass%
H        DCB     0
R        ALIGN
\
f%.init   STMDB   (sp)!,{r7-r11,lr}
p!        MOV     sl,sp,LSR #20
z!        MOV     sl,sl,LSL #20
�        LDMIA   sl,{r4,r5}
�!        STMDB   (sp)!,{r4,r5}
�        MOV     r0,#6
�        �adrl(r4,rw_base)
�        �adrl(r5,rw_limit)
�        SUB     r3,r5,r4
�'        ADD     r3,r3,#(wk � &00FF)
�'        ADD     r3,r3,#(wk � &FF00)
�         SWI     "XOS_Module"
�        MOV     r9,r12
�        STR     r2,[r12]
�        MOV     r12,r2
�        STR     r3,[r12]
        ADR     r0,stubs
%        �adrl(r14,kernel_vectors)
        STR     r14,[r0,#4]
$)        �adrl(r14,kernel_vectors_end)
.        STR     r14,[r0,#8]
8%        �adrl(r14,kernel_statics)
B         STR     r14,[r0,#12]
L)        �adrl(r14,kernel_statics_end)
V         STR     r14,[r0,#16]
`#        �adrl(r14,clib_vectors)
j         STR     r14,[r0,#24]
t'        �adrl(r14,clib_vectors_end)
~         STR     r14,[r0,#28]
�#        �adrl(r14,clib_statics)
�         STR     r14,[r0,#32]
�'        �adrl(r14,clib_statics_end)
�         STR     r14,[r0,#36]
�        ADD     r1,r12,#wk
�        ADD     r2,r12,r3
�        �adrl(r3,zi_base)
�        MOV     r6,#4<<16
�3        SWI     "XSharedCLibrary_LibInitModule"
�%        ADD     r8,r1,#Lib_Offset
�        LDMIA   r8,{r7,r8}
�        STMIB   r12,{r7,r8}
(        ADR     r0,kernel_init_block

#        ADR     r14,module_base
        STR     r14,[r0]
!        ADR     r14,rts_block
(        STR     r14,[r0,#4]
2%        ADR     r14,rts_block_end
<        STR     r14,[r0,#8]
F        ADR     r14,c_str
P$        STR     r14,rts_block+12
Z#        BL      call_moduleinit
d        STMDB   (sp)!,{r9}
n2        BL      clib_vectors+_clib_initialiase
x        LDMIA   (sp)!,{r2}
�%        ADD     r0,sp,#(10-7+2)*4
�        LDMIA   r0,{r0,r1}
�        BL      user_init
�!        MOV     sl,sp,LSR #20
�!        MOV     sl,sl,LSL #20
�!        LDMIA   (sp)!,{r4,r5}
�        STMIA   sl,{r4,r5}
�%        LDMIA   (sp)!,{r7-r11,lr}
�        CMP     r0,#0
�        BICEQS  pc,lr,#vbit
�        �RS    pc,lr,#vbit
�
�.call_moduleinit
        STMDB   (sp)!,{lr}
5        B       kernel_vectors+_kernel_moduleinit

".terminate
,%        STMDB   (sp)!,{r7-r11,lr}
6!        MOV     sl,sp,LSR #20
@!        MOV     sl,sl,LSL #20
J        LDMIA   sl,{r4,r5}
T        MOV     r0,r12
^        LDR     r12,[r12]
h!        LDMIB   r12,{r11,r12}
r         STMIA   sl,{r11,r12}
|(        ADD     sl,sl,#SL_Lib_Offset
�        MOV     fp,#0
�5        BL      clib_vectors+_clib_finalisemodule
�!        MOV     sl,sp,LSR #20
�!        MOV     sl,sl,LSL #20
�        STMIA   sl,{r4,r5}
�&        LDMIA   (sp)!,{r7-r11,pc}^
�
�.swicode
�$        STMDB   (sp)!,{r0-r9,lr}
�!        MOV     sl,sp,LSR #20
�!        MOV     sl,sl,LSL #20
�        LDMIA   sl,{r8,r9}
�        MOV     r0,r11
        MOV     r1,sp
        MOV     r2,r12
        LDR     r12,[r12]
&!        LDMIB   r12,{r11,r12}
0         STMIA   sl,{r11,r12}
:(        ADD     sl,sl,#SL_Lib_Offset
D        MOV     fp,#0
N        BL      user_swi
X!        MOV     sl,sp,LSR #20
b!        MOV     sl,sl,LSL #20
l        STMIA   sl,{r8,r9}
v        CMP     r0,#0
�        STRNE   r0,[sp]
�$        LDMIA   (sp)!,{r0-r9,lr}
�        BICEQS  pc,lr,#vbit
�        �RS    pc,lr,#vbit
�
�.user_init
�$        STMDB   (sp)!,{r4-r9,lr}
�        MOV     r0,#0
�]
�� swi=0 � max_swi
� � def(swi) �
�'  k=�("FNswi"+�"0"+�swi,2)+"_init")
�  [OPT pass%
        CMP     r0,#0
%        LDMNEIA (sp)!,{r4-r9,pc}^
  ]
  �
*�
4[OPT pass%
>        MOV     r0,#0
H%        LDMIA   (sp)!,{r4-r9,pc}^
R
\
.user_swi
f$        STMDB   (sp)!,{r8,r9,lr}
p!        CMP     r0,#max_swi+1
z#        ADDCC   pc,pc,r0,LSL #3
�        B       unknown_swi
�]
�� swi=0 � max_swi
� [OPT pass%
�        BL      swi(swi)
�        B       done_swi
� ]
��
�[OPT pass%
�
.done_swi
�$        LDMIA   (sp)!,{r8,r9,pc}
�.unknown_swi
�"        ADR     r0,bad_swi_err
	$        LDMIA   (sp)!,{r8-r9,lr}
	        �RS    pc,lr,#vbit
	.bad_swi_err
	$        DCD     &1E6
	.+        EQUS    "Unknown SCL operation"
	8        DCB     0
	B        ALIGN
	L
	V.stubs  DCD     1
	`        �table(16)
	j        DCD     2
	t        �table(16)
	~        DCD     -1
	�
	�.kernel_init_block
	�        �table(12)
	�
	�.rts_block
	�+        DCD     rts_block_end-rts_block
	�        �table(20)
	�.rts_block_end
	�
	�.c_str  EQUS    "C"+�0
	�        ALIGN
	�
 .kernel_vectors �table(48*4)

.kernel_vectors_end

.clib_vectors �table(183*4)
(.clib_vectors_end
2]
<C� Statics will be copied into workspace, but we have to pretend
F'� they're further on in the module!
Prw_base=P%
Zkernel_statics=P%
d*kernel_statics_end=kernel_statics+&31C
n#clib_statics=kernel_statics_end
x&clib_statics_end=clib_statics+&B48
�zi_base=clib_statics_end
�rw_limit=zi_base+&40
�[OPT pass%
�
.null_swi
�        MOV     pc,lr
�]
�� swi=0 � max_swi
� � def(swi) �
�  swi(swi)=P%
�'  k=�("FNswi"+�"0"+�swi,2)+"_code")
� �
�  swi(swi)=null_swi
� �
�
� pass%
+ș "OS_File",10,"SCLmod",&FFA,,code%,O%
"�
,:
6� �table(size%)
@ȕ size%>0
J
 !O%=0
T
 O%+=4
^
 P%+=4
h
 size%-=4
r�
|=0
�:
�� �wk(req)
�wk+=req
�=wk-req
�:
�
� �lc(a$)
�� b$,i,c
�� i=1 � �(a$)
� c=��a$,i)
� � c>=�"A" � c<=�"Z" c+=32
� b$+=�c
��
�=b$
:
� �adrl(reg,off)
off=(off-(P%+8))
&[OPT pass%
0'        ADD     reg,pc,#(off � &FF)
:*        ADD     reg,reg,#(off � &FF00)
D]
N=0
�
00000000  0d 00 0a 12 f4 20 20 20  20 20 3e 53 43 4c 73 72  |.....     >SCLsr|
00000010  63 65 0d 00 14 23 f4 20  42 79 20 20 44 43 41 2c  |ce...#. By  DCA,|
00000020  20 62 61 73 65 64 20 6f  6e 20 50 52 4d 20 65 78  | based on PRM ex|
00000030  61 6d 70 6c 65 0d 00 1e  19 f4 20 46 6f 72 20 33  |ample..... For 3|
00000040  32 2d 62 69 74 20 6d 61  63 68 69 6e 65 73 0d 00  |2-bit machines..|
00000050  28 1c f4 20 28 63 29 20  42 41 55 20 53 65 70 74  |(.. (c) BAU Sept|
00000060  65 6d 62 65 72 20 31 39  39 33 0d 00 32 05 3a 0d  |ember 1993..2.:.|
00000070  00 3c 2b de 20 63 6f 64  65 25 20 26 31 30 30 30  |.<+. code% &1000|
00000080  30 2c 73 77 69 24 28 36  34 29 2c 73 77 69 28 36  |0,swi$(64),swi(6|
00000090  34 29 2c 64 65 66 28 36  34 29 0d 00 46 0b 64 65  |4),def(64)..F.de|
000000a0  66 28 29 3d a3 0d 00 50  0e 6d 61 78 5f 73 77 69  |f()=...P.max_swi|
000000b0  3d 2d 31 0d 00 5a 08 69  25 3d 30 0d 00 64 05 f5  |=-1..Z.i%=0..d..|
000000c0  0d 00 6e 3b 20 c8 99 20  22 4f 53 5f 47 42 50 42  |..n; .. "OS_GBPB|
000000d0  22 2c 39 2c 22 53 43 4c  22 2c 63 6f 64 65 25 2c  |",9,"SCL",code%,|
000000e0  31 2c 69 25 2c 26 31 30  30 2c 22 2a 22 20 b8 20  |1,i%,&100,"*" . |
000000f0  2c 2c 2c 72 65 61 64 25  2c 69 25 0d 00 78 10 20  |,,,read%,i%..x. |
00000100  e7 20 72 65 61 64 25 3d  31 20 8c 0d 00 82 0e 20  |. read%=1 ..... |
00000110  20 6a 25 3d 63 6f 64 65  25 0d 00 8c 10 20 20 c8  | j%=code%....  .|
00000120  95 20 3f 6a 25 3e 3d 33  32 0d 00 96 0c 20 20 20  |. ?j%>=32....   |
00000130  6a 25 2b 3d 31 0d 00 a0  07 20 20 ce 0d 00 aa 0c  |j%+=1....  .....|
00000140  20 20 3f 6a 25 3d 31 33  0d 00 b4 14 20 20 66 24  |  ?j%=13....  f$|
00000150  3d a4 6c 63 28 24 63 6f  64 65 25 29 0d 00 be 16  |=.lc($code%)....|
00000160  20 20 e7 20 c0 66 24 2c  33 29 3d 22 73 77 69 22  |  . .f$,3)="swi"|
00000170  20 8c 0d 00 c8 17 20 20  20 73 77 69 5f 6e 6f 3d  | .....   swi_no=|
00000180  bb 28 c1 66 24 2c 34 29  29 0d 00 d2 14 20 20 20  |.(.f$,4))....   |
00000190  64 65 66 28 73 77 69 5f  6e 6f 29 3d b9 0d 00 dc  |def(swi_no)=....|
000001a0  26 20 20 20 e7 20 73 77  69 5f 6e 6f 3e 6d 61 78  |&   . swi_no>max|
000001b0  5f 73 77 69 20 6d 61 78  5f 73 77 69 3d 73 77 69  |_swi max_swi=swi|
000001c0  5f 6e 6f 0d 00 e6 1d 20  20 20 73 77 69 24 28 73  |_no....   swi$(s|
000001d0  77 69 5f 6e 6f 29 3d 22  53 43 4c 2e 22 2b 66 24  |wi_no)="SCL."+f$|
000001e0  0d 00 f0 07 20 20 cd 0d  00 fa 06 20 cd 0d 01 04  |....  ..... ....|
000001f0  0b fd 20 69 25 3d 2d 31  0d 01 0e 2d e7 20 6d 61  |.. i%=-1...-. ma|
00000200  78 5f 73 77 69 3d 2d 31  20 85 20 30 2c 22 4e 6f  |x_swi=-1 . 0,"No|
00000210  20 73 6f 75 72 63 65 20  66 69 6c 65 73 20 66 6f  | source files fo|
00000220  75 6e 64 21 22 0d 01 18  1a 73 77 69 24 28 36 34  |und!"....swi$(64|
00000230  29 3d 22 53 43 4c 2e 56  65 72 73 69 6f 6e 22 0d  |)="SCL.Version".|
00000240  01 22 0d c8 a3 20 73 77  69 24 28 29 0d 01 2c 14  |."... swi$()..,.|
00000250  73 77 69 5f 63 68 75 6e  6b 3d 26 43 45 34 34 30  |swi_chunk=&CE440|
00000260  0d 01 36 0e 76 62 69 74  3d 31 3c 3c 32 38 0d 01  |..6.vbit=1<<28..|
00000270  40 1c 72 30 3d 30 3a 72  31 3d 31 3a 72 32 3d 32  |@.r0=0:r1=1:r2=2|
00000280  3a 72 33 3d 33 3a 72 34  3d 34 0d 01 4a 23 72 35  |:r3=3:r4=4..J#r5|
00000290  3d 35 3a 72 36 3d 36 3a  72 37 3d 37 3a 72 38 3d  |=5:r6=6:r7=7:r8=|
000002a0  38 3a 72 39 3d 39 3a 72  31 34 3d 31 34 0d 01 54  |8:r9=9:r14=14..T|
000002b0  27 73 6c 3d 31 30 3a 66  70 3d 31 31 3a 77 70 3d  |'sl=10:fp=11:wp=|
000002c0  31 32 3a 73 70 3d 31 33  3a 6c 72 3d 31 34 3a 70  |12:sp=13:lr=14:p|
000002d0  63 3d 31 35 0d 01 5e 14  73 77 69 5f 63 68 75 6e  |c=15..^.swi_chun|
000002e0  6b 3d 26 43 45 34 43 30  0d 01 68 0e 76 62 69 74  |k=&CE4C0..h.vbit|
000002f0  3d 31 3c 3c 32 38 0d 01  72 08 77 6b 3d 30 0d 01  |=1<<28..r.wk=0..|
00000300  7c 0f 73 69 7a 65 3d a4  77 6b 28 34 29 0d 01 86  ||.size=.wk(4)...|
00000310  13 6c 69 62 72 65 6c 6f  63 3d a4 77 6b 28 34 29  |.libreloc=.wk(4)|
00000320  0d 01 90 16 63 6c 69 65  6e 74 72 65 6c 6f 63 3d  |....clientreloc=|
00000330  a4 77 6b 28 34 29 0d 01  9a 15 e3 20 73 77 69 3d  |.wk(4)..... swi=|
00000340  30 20 b8 20 6d 61 78 5f  73 77 69 0d 01 a4 33 20  |0 . max_swi...3 |
00000350  e7 20 64 65 66 28 73 77  69 29 20 8c 20 7a 3d a0  |. def(swi) . z=.|
00000360  28 22 46 4e 73 77 69 22  2b c2 22 30 22 2b c3 73  |("FNswi"+."0"+.s|
00000370  77 69 2c 32 29 2b 22 5f  76 61 72 73 22 29 0d 01  |wi,2)+"_vars")..|
00000380  ae 05 ed 0d 01 b8 11 4c  69 62 5f 4f 66 66 73 65  |.......Lib_Offse|
00000390  74 3d 32 30 0d 01 c2 15  53 4c 5f 4c 69 62 5f 4f  |t=20....SL_Lib_O|
000003a0  66 66 73 65 74 3d 35 34  30 0d 01 cc 1b 5f 6b 65  |ffset=540...._ke|
000003b0  72 6e 65 6c 5f 6d 6f 64  75 6c 65 69 6e 69 74 3d  |rnel_moduleinit=|
000003c0  33 38 2a 34 0d 01 d6 1a  5f 63 6c 69 62 5f 69 6e  |38*4...._clib_in|
000003d0  69 74 69 61 6c 69 61 73  65 3d 32 30 2a 34 0d 01  |itialiase=20*4..|
000003e0  e0 1e 5f 63 6c 69 62 5f  66 69 6e 61 6c 69 73 65  |.._clib_finalise|
000003f0  6d 6f 64 75 6c 65 3d 31  37 39 2a 34 0d 01 ea 19  |module=179*4....|
00000400  53 4c 5f 43 6c 69 65 6e  74 5f 4f 66 66 73 65 74  |SL_Client_Offset|
00000410  3d 2d 35 33 36 0d 01 f4  15 e3 20 70 61 73 73 25  |=-536..... pass%|
00000420  3d 34 20 b8 20 36 20 88  20 32 0d 01 fe 08 50 25  |=4 . 6 . 2....P%|
00000430  3d 30 0d 02 08 0c 4f 25  3d 63 6f 64 65 25 0d 02  |=0....O%=code%..|
00000440  12 0e 5b 4f 50 54 20 70  61 73 73 25 0d 02 1c 10  |..[OPT pass%....|
00000450  2e 6d 6f 64 75 6c 65 5f  62 61 73 65 0d 02 26 15  |.module_base..&.|
00000460  20 20 20 20 20 20 20 20  44 43 44 20 20 20 20 20  |        DCD     |
00000470  30 0d 02 30 18 20 20 20  20 20 20 20 20 44 43 44  |0..0.        DCD|
00000480  20 20 20 20 20 69 6e 69  74 0d 02 3a 1d 20 20 20  |     init..:.   |
00000490  20 20 20 20 20 44 43 44  20 20 20 20 20 74 65 72  |     DCD     ter|
000004a0  6d 69 6e 61 74 65 0d 02  44 15 20 20 20 20 20 20  |minate..D.      |
000004b0  20 20 44 43 44 20 20 20  20 20 30 0d 02 4e 19 20  |  DCD     0..N. |
000004c0  20 20 20 20 20 20 20 44  43 44 20 20 20 20 20 74  |       DCD     t|
000004d0  69 74 6c 65 0d 02 58 18  20 20 20 20 20 20 20 20  |itle..X.        |
000004e0  44 43 44 20 20 20 20 20  68 65 6c 70 0d 02 62 15  |DCD     help..b.|
000004f0  20 20 20 20 20 20 20 20  44 43 44 20 20 20 20 20  |        DCD     |
00000500  30 0d 02 6c 1d 20 20 20  20 20 20 20 20 44 43 44  |0..l.        DCD|
00000510  20 20 20 20 20 73 77 69  5f 63 68 75 6e 6b 0d 02  |     swi_chunk..|
00000520  76 1b 20 20 20 20 20 20  20 20 44 43 44 20 20 20  |v.        DCD   |
00000530  20 20 73 77 69 63 6f 64  65 0d 02 80 1a 20 20 20  |  swicode....   |
00000540  20 20 20 20 20 44 43 44  20 20 20 20 20 73 77 69  |     DCD     swi|
00000550  74 62 6c 0d 02 8a 04 0d  02 94 1c 2e 74 69 74 6c  |tbl.........titl|
00000560  65 20 20 45 51 55 53 20  20 20 20 22 53 43 4c 22  |e  EQUS    "SCL"|
00000570  2b bd 30 0d 02 9e 1f 2e  68 65 6c 70 20 20 20 45  |+.0.....help   E|
00000580  51 55 53 20 20 20 20 a4  76 65 72 73 69 6f 6e 2b  |QUS    .version+|
00000590  bd 30 0d 02 a8 11 20 20  20 20 20 20 20 20 41 4c  |.0....        AL|
000005a0  49 47 4e 0d 02 b2 04 0d  02 bc 1c 2e 73 77 69 74  |IGN.........swit|
000005b0  62 6c 20 45 51 55 53 20  20 20 20 22 53 43 4c 22  |bl EQUS    "SCL"|
000005c0  2b bd 30 0d 02 c6 05 5d  0d 02 d0 15 e3 20 73 77  |+.0....]..... sw|
000005d0  69 3d 30 20 b8 20 6d 61  78 5f 73 77 69 0d 02 da  |i=0 . max_swi...|
000005e0  11 20 e7 20 64 65 66 28  73 77 69 29 20 8c 0d 02  |. . def(swi) ...|
000005f0  e4 10 20 20 5b 4f 50 54  20 70 61 73 73 25 0d 02  |..  [OPT pass%..|
00000600  ee 36 20 20 20 20 20 20  20 20 45 51 55 53 20 20  |.6        EQUS  |
00000610  20 20 a0 28 22 46 4e 73  77 69 22 2b c2 22 30 22  |  .("FNswi"+."0"|
00000620  2b c3 73 77 69 2c 32 29  2b 22 5f 6e 61 6d 65 22  |+.swi,2)+"_name"|
00000630  29 2b bd 30 0d 02 f8 07  20 20 5d 0d 03 02 06 20  |)+.0....  ].... |
00000640  cc 0d 03 0c 10 20 20 5b  4f 50 54 20 70 61 73 73  |.....  [OPT pass|
00000650  25 0d 03 16 2c 20 20 20  20 20 20 20 20 45 51 55  |%...,        EQU|
00000660  53 20 20 20 20 22 55 6e  75 73 65 64 22 2b c2 22  |S    "Unused"+."|
00000670  30 22 2b c3 73 77 69 2c  32 29 2b bd 30 0d 03 20  |0"+.swi,2)+.0.. |
00000680  07 20 20 5d 0d 03 2a 06  20 cd 0d 03 34 05 ed 0d  |.  ]..*. ...4...|
00000690  03 3e 0e 5b 4f 50 54 20  70 61 73 73 25 0d 03 48  |.>.[OPT pass%..H|
000006a0  15 20 20 20 20 20 20 20  20 44 43 42 20 20 20 20  |.        DCB    |
000006b0  20 30 0d 03 52 11 20 20  20 20 20 20 20 20 41 4c  | 0..R.        AL|
000006c0  49 47 4e 0d 03 5c 04 0d  03 66 25 2e 69 6e 69 74  |IGN..\...f%.init|
000006d0  20 20 20 53 54 4d 44 42  20 20 20 28 73 70 29 21  |   STMDB   (sp)!|
000006e0  2c 7b 72 37 2d 72 31 31  2c 6c 72 7d 0d 03 70 21  |,{r7-r11,lr}..p!|
000006f0  20 20 20 20 20 20 20 20  4d 4f 56 20 20 20 20 20  |        MOV     |
00000700  73 6c 2c 73 70 2c 4c 53  52 20 23 32 30 0d 03 7a  |sl,sp,LSR #20..z|
00000710  21 20 20 20 20 20 20 20  20 4d 4f 56 20 20 20 20  |!        MOV    |
00000720  20 73 6c 2c 73 6c 2c 4c  53 4c 20 23 32 30 0d 03  | sl,sl,LSL #20..|
00000730  84 1e 20 20 20 20 20 20  20 20 4c 44 4d 49 41 20  |..        LDMIA |
00000740  20 20 73 6c 2c 7b 72 34  2c 72 35 7d 0d 03 8e 21  |  sl,{r4,r5}...!|
00000750  20 20 20 20 20 20 20 20  53 54 4d 44 42 20 20 20  |        STMDB   |
00000760  28 73 70 29 21 2c 7b 72  34 2c 72 35 7d 0d 03 98  |(sp)!,{r4,r5}...|
00000770  19 20 20 20 20 20 20 20  20 4d 4f 56 20 20 20 20  |.        MOV    |
00000780  20 72 30 2c 23 36 0d 03  a2 1d 20 20 20 20 20 20  | r0,#6....      |
00000790  20 20 a4 61 64 72 6c 28  72 34 2c 72 77 5f 62 61  |  .adrl(r4,rw_ba|
000007a0  73 65 29 0d 03 ac 1e 20  20 20 20 20 20 20 20 a4  |se)....        .|
000007b0  61 64 72 6c 28 72 35 2c  72 77 5f 6c 69 6d 69 74  |adrl(r5,rw_limit|
000007c0  29 0d 03 b6 1c 20 20 20  20 20 20 20 20 53 55 42  |)....        SUB|
000007d0  20 20 20 20 20 72 33 2c  72 35 2c 72 34 0d 03 c0  |     r3,r5,r4...|
000007e0  27 20 20 20 20 20 20 20  20 41 44 44 20 20 20 20  |'        ADD    |
000007f0  20 72 33 2c 72 33 2c 23  28 77 6b 20 80 20 26 30  | r3,r3,#(wk . &0|
00000800  30 46 46 29 0d 03 ca 27  20 20 20 20 20 20 20 20  |0FF)...'        |
00000810  41 44 44 20 20 20 20 20  72 33 2c 72 33 2c 23 28  |ADD     r3,r3,#(|
00000820  77 6b 20 80 20 26 46 46  30 30 29 0d 03 d4 20 20  |wk . &FF00)...  |
00000830  20 20 20 20 20 20 20 53  57 49 20 20 20 20 20 22  |       SWI     "|
00000840  58 4f 53 5f 4d 6f 64 75  6c 65 22 0d 03 de 1a 20  |XOS_Module".... |
00000850  20 20 20 20 20 20 20 4d  4f 56 20 20 20 20 20 72  |       MOV     r|
00000860  39 2c 72 31 32 0d 03 e8  1c 20 20 20 20 20 20 20  |9,r12....       |
00000870  20 53 54 52 20 20 20 20  20 72 32 2c 5b 72 31 32  | STR     r2,[r12|
00000880  5d 0d 03 f2 1a 20 20 20  20 20 20 20 20 4d 4f 56  |]....        MOV|
00000890  20 20 20 20 20 72 31 32  2c 72 32 0d 03 fc 1c 20  |     r12,r2.... |
000008a0  20 20 20 20 20 20 20 53  54 52 20 20 20 20 20 72  |       STR     r|
000008b0  33 2c 5b 72 31 32 5d 0d  04 06 1c 20 20 20 20 20  |3,[r12]....     |
000008c0  20 20 20 41 44 52 20 20  20 20 20 72 30 2c 73 74  |   ADR     r0,st|
000008d0  75 62 73 0d 04 10 25 20  20 20 20 20 20 20 20 a4  |ubs...%        .|
000008e0  61 64 72 6c 28 72 31 34  2c 6b 65 72 6e 65 6c 5f  |adrl(r14,kernel_|
000008f0  76 65 63 74 6f 72 73 29  0d 04 1a 1f 20 20 20 20  |vectors)....    |
00000900  20 20 20 20 53 54 52 20  20 20 20 20 72 31 34 2c  |    STR     r14,|
00000910  5b 72 30 2c 23 34 5d 0d  04 24 29 20 20 20 20 20  |[r0,#4]..$)     |
00000920  20 20 20 a4 61 64 72 6c  28 72 31 34 2c 6b 65 72  |   .adrl(r14,ker|
00000930  6e 65 6c 5f 76 65 63 74  6f 72 73 5f 65 6e 64 29  |nel_vectors_end)|
00000940  0d 04 2e 1f 20 20 20 20  20 20 20 20 53 54 52 20  |....        STR |
00000950  20 20 20 20 72 31 34 2c  5b 72 30 2c 23 38 5d 0d  |    r14,[r0,#8].|
00000960  04 38 25 20 20 20 20 20  20 20 20 a4 61 64 72 6c  |.8%        .adrl|
00000970  28 72 31 34 2c 6b 65 72  6e 65 6c 5f 73 74 61 74  |(r14,kernel_stat|
00000980  69 63 73 29 0d 04 42 20  20 20 20 20 20 20 20 20  |ics)..B         |
00000990  53 54 52 20 20 20 20 20  72 31 34 2c 5b 72 30 2c  |STR     r14,[r0,|
000009a0  23 31 32 5d 0d 04 4c 29  20 20 20 20 20 20 20 20  |#12]..L)        |
000009b0  a4 61 64 72 6c 28 72 31  34 2c 6b 65 72 6e 65 6c  |.adrl(r14,kernel|
000009c0  5f 73 74 61 74 69 63 73  5f 65 6e 64 29 0d 04 56  |_statics_end)..V|
000009d0  20 20 20 20 20 20 20 20  20 53 54 52 20 20 20 20  |         STR    |
000009e0  20 72 31 34 2c 5b 72 30  2c 23 31 36 5d 0d 04 60  | r14,[r0,#16]..`|
000009f0  23 20 20 20 20 20 20 20  20 a4 61 64 72 6c 28 72  |#        .adrl(r|
00000a00  31 34 2c 63 6c 69 62 5f  76 65 63 74 6f 72 73 29  |14,clib_vectors)|
00000a10  0d 04 6a 20 20 20 20 20  20 20 20 20 53 54 52 20  |..j         STR |
00000a20  20 20 20 20 72 31 34 2c  5b 72 30 2c 23 32 34 5d  |    r14,[r0,#24]|
00000a30  0d 04 74 27 20 20 20 20  20 20 20 20 a4 61 64 72  |..t'        .adr|
00000a40  6c 28 72 31 34 2c 63 6c  69 62 5f 76 65 63 74 6f  |l(r14,clib_vecto|
00000a50  72 73 5f 65 6e 64 29 0d  04 7e 20 20 20 20 20 20  |rs_end)..~      |
00000a60  20 20 20 53 54 52 20 20  20 20 20 72 31 34 2c 5b  |   STR     r14,[|
00000a70  72 30 2c 23 32 38 5d 0d  04 88 23 20 20 20 20 20  |r0,#28]...#     |
00000a80  20 20 20 a4 61 64 72 6c  28 72 31 34 2c 63 6c 69  |   .adrl(r14,cli|
00000a90  62 5f 73 74 61 74 69 63  73 29 0d 04 92 20 20 20  |b_statics)...   |
00000aa0  20 20 20 20 20 20 53 54  52 20 20 20 20 20 72 31  |      STR     r1|
00000ab0  34 2c 5b 72 30 2c 23 33  32 5d 0d 04 9c 27 20 20  |4,[r0,#32]...'  |
00000ac0  20 20 20 20 20 20 a4 61  64 72 6c 28 72 31 34 2c  |      .adrl(r14,|
00000ad0  63 6c 69 62 5f 73 74 61  74 69 63 73 5f 65 6e 64  |clib_statics_end|
00000ae0  29 0d 04 a6 20 20 20 20  20 20 20 20 20 53 54 52  |)...         STR|
00000af0  20 20 20 20 20 72 31 34  2c 5b 72 30 2c 23 33 36  |     r14,[r0,#36|
00000b00  5d 0d 04 b0 1e 20 20 20  20 20 20 20 20 41 44 44  |]....        ADD|
00000b10  20 20 20 20 20 72 31 2c  72 31 32 2c 23 77 6b 0d  |     r1,r12,#wk.|
00000b20  04 ba 1d 20 20 20 20 20  20 20 20 41 44 44 20 20  |...        ADD  |
00000b30  20 20 20 72 32 2c 72 31  32 2c 72 33 0d 04 c4 1d  |   r2,r12,r3....|
00000b40  20 20 20 20 20 20 20 20  a4 61 64 72 6c 28 72 33  |        .adrl(r3|
00000b50  2c 7a 69 5f 62 61 73 65  29 0d 04 ce 1d 20 20 20  |,zi_base)....   |
00000b60  20 20 20 20 20 4d 4f 56  20 20 20 20 20 72 36 2c  |     MOV     r6,|
00000b70  23 34 3c 3c 31 36 0d 04  d8 33 20 20 20 20 20 20  |#4<<16...3      |
00000b80  20 20 53 57 49 20 20 20  20 20 22 58 53 68 61 72  |  SWI     "XShar|
00000b90  65 64 43 4c 69 62 72 61  72 79 5f 4c 69 62 49 6e  |edCLibrary_LibIn|
00000ba0  69 74 4d 6f 64 75 6c 65  22 0d 04 e2 25 20 20 20  |itModule"...%   |
00000bb0  20 20 20 20 20 41 44 44  20 20 20 20 20 72 38 2c  |     ADD     r8,|
00000bc0  72 31 2c 23 4c 69 62 5f  4f 66 66 73 65 74 0d 04  |r1,#Lib_Offset..|
00000bd0  ec 1e 20 20 20 20 20 20  20 20 4c 44 4d 49 41 20  |..        LDMIA |
00000be0  20 20 72 38 2c 7b 72 37  2c 72 38 7d 0d 04 f6 1f  |  r8,{r7,r8}....|
00000bf0  20 20 20 20 20 20 20 20  53 54 4d 49 42 20 20 20  |        STMIB   |
00000c00  72 31 32 2c 7b 72 37 2c  72 38 7d 0d 05 00 28 20  |r12,{r7,r8}...( |
00000c10  20 20 20 20 20 20 20 41  44 52 20 20 20 20 20 72  |       ADR     r|
00000c20  30 2c 6b 65 72 6e 65 6c  5f 69 6e 69 74 5f 62 6c  |0,kernel_init_bl|
00000c30  6f 63 6b 0d 05 0a 23 20  20 20 20 20 20 20 20 41  |ock...#        A|
00000c40  44 52 20 20 20 20 20 72  31 34 2c 6d 6f 64 75 6c  |DR     r14,modul|
00000c50  65 5f 62 61 73 65 0d 05  14 1c 20 20 20 20 20 20  |e_base....      |
00000c60  20 20 53 54 52 20 20 20  20 20 72 31 34 2c 5b 72  |  STR     r14,[r|
00000c70  30 5d 0d 05 1e 21 20 20  20 20 20 20 20 20 41 44  |0]...!        AD|
00000c80  52 20 20 20 20 20 72 31  34 2c 72 74 73 5f 62 6c  |R     r14,rts_bl|
00000c90  6f 63 6b 0d 05 28 1f 20  20 20 20 20 20 20 20 53  |ock..(.        S|
00000ca0  54 52 20 20 20 20 20 72  31 34 2c 5b 72 30 2c 23  |TR     r14,[r0,#|
00000cb0  34 5d 0d 05 32 25 20 20  20 20 20 20 20 20 41 44  |4]..2%        AD|
00000cc0  52 20 20 20 20 20 72 31  34 2c 72 74 73 5f 62 6c  |R     r14,rts_bl|
00000cd0  6f 63 6b 5f 65 6e 64 0d  05 3c 1f 20 20 20 20 20  |ock_end..<.     |
00000ce0  20 20 20 53 54 52 20 20  20 20 20 72 31 34 2c 5b  |   STR     r14,[|
00000cf0  72 30 2c 23 38 5d 0d 05  46 1d 20 20 20 20 20 20  |r0,#8]..F.      |
00000d00  20 20 41 44 52 20 20 20  20 20 72 31 34 2c 63 5f  |  ADR     r14,c_|
00000d10  73 74 72 0d 05 50 24 20  20 20 20 20 20 20 20 53  |str..P$        S|
00000d20  54 52 20 20 20 20 20 72  31 34 2c 72 74 73 5f 62  |TR     r14,rts_b|
00000d30  6c 6f 63 6b 2b 31 32 0d  05 5a 23 20 20 20 20 20  |lock+12..Z#     |
00000d40  20 20 20 42 4c 20 20 20  20 20 20 63 61 6c 6c 5f  |   BL      call_|
00000d50  6d 6f 64 75 6c 65 69 6e  69 74 0d 05 64 1e 20 20  |moduleinit..d.  |
00000d60  20 20 20 20 20 20 53 54  4d 44 42 20 20 20 28 73  |      STMDB   (s|
00000d70  70 29 21 2c 7b 72 39 7d  0d 05 6e 32 20 20 20 20  |p)!,{r9}..n2    |
00000d80  20 20 20 20 42 4c 20 20  20 20 20 20 63 6c 69 62  |    BL      clib|
00000d90  5f 76 65 63 74 6f 72 73  2b 5f 63 6c 69 62 5f 69  |_vectors+_clib_i|
00000da0  6e 69 74 69 61 6c 69 61  73 65 0d 05 78 1e 20 20  |nitialiase..x.  |
00000db0  20 20 20 20 20 20 4c 44  4d 49 41 20 20 20 28 73  |      LDMIA   (s|
00000dc0  70 29 21 2c 7b 72 32 7d  0d 05 82 25 20 20 20 20  |p)!,{r2}...%    |
00000dd0  20 20 20 20 41 44 44 20  20 20 20 20 72 30 2c 73  |    ADD     r0,s|
00000de0  70 2c 23 28 31 30 2d 37  2b 32 29 2a 34 0d 05 8c  |p,#(10-7+2)*4...|
00000df0  1e 20 20 20 20 20 20 20  20 4c 44 4d 49 41 20 20  |.        LDMIA  |
00000e00  20 72 30 2c 7b 72 30 2c  72 31 7d 0d 05 96 1d 20  | r0,{r0,r1}.... |
00000e10  20 20 20 20 20 20 20 42  4c 20 20 20 20 20 20 75  |       BL      u|
00000e20  73 65 72 5f 69 6e 69 74  0d 05 a0 21 20 20 20 20  |ser_init...!    |
00000e30  20 20 20 20 4d 4f 56 20  20 20 20 20 73 6c 2c 73  |    MOV     sl,s|
00000e40  70 2c 4c 53 52 20 23 32  30 0d 05 aa 21 20 20 20  |p,LSR #20...!   |
00000e50  20 20 20 20 20 4d 4f 56  20 20 20 20 20 73 6c 2c  |     MOV     sl,|
00000e60  73 6c 2c 4c 53 4c 20 23  32 30 0d 05 b4 21 20 20  |sl,LSL #20...!  |
00000e70  20 20 20 20 20 20 4c 44  4d 49 41 20 20 20 28 73  |      LDMIA   (s|
00000e80  70 29 21 2c 7b 72 34 2c  72 35 7d 0d 05 be 1e 20  |p)!,{r4,r5}.... |
00000e90  20 20 20 20 20 20 20 53  54 4d 49 41 20 20 20 73  |       STMIA   s|
00000ea0  6c 2c 7b 72 34 2c 72 35  7d 0d 05 c8 25 20 20 20  |l,{r4,r5}...%   |
00000eb0  20 20 20 20 20 4c 44 4d  49 41 20 20 20 28 73 70  |     LDMIA   (sp|
00000ec0  29 21 2c 7b 72 37 2d 72  31 31 2c 6c 72 7d 0d 05  |)!,{r7-r11,lr}..|
00000ed0  d2 19 20 20 20 20 20 20  20 20 43 4d 50 20 20 20  |..        CMP   |
00000ee0  20 20 72 30 2c 23 30 0d  05 dc 1f 20 20 20 20 20  |  r0,#0....     |
00000ef0  20 20 20 42 49 43 45 51  53 20 20 70 63 2c 6c 72  |   BICEQS  pc,lr|
00000f00  2c 23 76 62 69 74 0d 05  e6 1e 20 20 20 20 20 20  |,#vbit....      |
00000f10  20 20 84 52 53 20 20 20  20 70 63 2c 6c 72 2c 23  |  .RS    pc,lr,#|
00000f20  76 62 69 74 0d 05 f0 04  0d 05 fa 14 2e 63 61 6c  |vbit.........cal|
00000f30  6c 5f 6d 6f 64 75 6c 65  69 6e 69 74 0d 06 04 1e  |l_moduleinit....|
00000f40  20 20 20 20 20 20 20 20  53 54 4d 44 42 20 20 20  |        STMDB   |
00000f50  28 73 70 29 21 2c 7b 6c  72 7d 0d 06 0e 35 20 20  |(sp)!,{lr}...5  |
00000f60  20 20 20 20 20 20 42 20  20 20 20 20 20 20 6b 65  |      B       ke|
00000f70  72 6e 65 6c 5f 76 65 63  74 6f 72 73 2b 5f 6b 65  |rnel_vectors+_ke|
00000f80  72 6e 65 6c 5f 6d 6f 64  75 6c 65 69 6e 69 74 0d  |rnel_moduleinit.|
00000f90  06 18 04 0d 06 22 0e 2e  74 65 72 6d 69 6e 61 74  |....."..terminat|
00000fa0  65 0d 06 2c 25 20 20 20  20 20 20 20 20 53 54 4d  |e..,%        STM|
00000fb0  44 42 20 20 20 28 73 70  29 21 2c 7b 72 37 2d 72  |DB   (sp)!,{r7-r|
00000fc0  31 31 2c 6c 72 7d 0d 06  36 21 20 20 20 20 20 20  |11,lr}..6!      |
00000fd0  20 20 4d 4f 56 20 20 20  20 20 73 6c 2c 73 70 2c  |  MOV     sl,sp,|
00000fe0  4c 53 52 20 23 32 30 0d  06 40 21 20 20 20 20 20  |LSR #20..@!     |
00000ff0  20 20 20 4d 4f 56 20 20  20 20 20 73 6c 2c 73 6c  |   MOV     sl,sl|
00001000  2c 4c 53 4c 20 23 32 30  0d 06 4a 1e 20 20 20 20  |,LSL #20..J.    |
00001010  20 20 20 20 4c 44 4d 49  41 20 20 20 73 6c 2c 7b  |    LDMIA   sl,{|
00001020  72 34 2c 72 35 7d 0d 06  54 1a 20 20 20 20 20 20  |r4,r5}..T.      |
00001030  20 20 4d 4f 56 20 20 20  20 20 72 30 2c 72 31 32  |  MOV     r0,r12|
00001040  0d 06 5e 1d 20 20 20 20  20 20 20 20 4c 44 52 20  |..^.        LDR |
00001050  20 20 20 20 72 31 32 2c  5b 72 31 32 5d 0d 06 68  |    r12,[r12]..h|
00001060  21 20 20 20 20 20 20 20  20 4c 44 4d 49 42 20 20  |!        LDMIB  |
00001070  20 72 31 32 2c 7b 72 31  31 2c 72 31 32 7d 0d 06  | r12,{r11,r12}..|
00001080  72 20 20 20 20 20 20 20  20 20 53 54 4d 49 41 20  |r         STMIA |
00001090  20 20 73 6c 2c 7b 72 31  31 2c 72 31 32 7d 0d 06  |  sl,{r11,r12}..|
000010a0  7c 28 20 20 20 20 20 20  20 20 41 44 44 20 20 20  ||(        ADD   |
000010b0  20 20 73 6c 2c 73 6c 2c  23 53 4c 5f 4c 69 62 5f  |  sl,sl,#SL_Lib_|
000010c0  4f 66 66 73 65 74 0d 06  86 19 20 20 20 20 20 20  |Offset....      |
000010d0  20 20 4d 4f 56 20 20 20  20 20 66 70 2c 23 30 0d  |  MOV     fp,#0.|
000010e0  06 90 35 20 20 20 20 20  20 20 20 42 4c 20 20 20  |..5        BL   |
000010f0  20 20 20 63 6c 69 62 5f  76 65 63 74 6f 72 73 2b  |   clib_vectors+|
00001100  5f 63 6c 69 62 5f 66 69  6e 61 6c 69 73 65 6d 6f  |_clib_finalisemo|
00001110  64 75 6c 65 0d 06 9a 21  20 20 20 20 20 20 20 20  |dule...!        |
00001120  4d 4f 56 20 20 20 20 20  73 6c 2c 73 70 2c 4c 53  |MOV     sl,sp,LS|
00001130  52 20 23 32 30 0d 06 a4  21 20 20 20 20 20 20 20  |R #20...!       |
00001140  20 4d 4f 56 20 20 20 20  20 73 6c 2c 73 6c 2c 4c  | MOV     sl,sl,L|
00001150  53 4c 20 23 32 30 0d 06  ae 1e 20 20 20 20 20 20  |SL #20....      |
00001160  20 20 53 54 4d 49 41 20  20 20 73 6c 2c 7b 72 34  |  STMIA   sl,{r4|
00001170  2c 72 35 7d 0d 06 b8 26  20 20 20 20 20 20 20 20  |,r5}...&        |
00001180  4c 44 4d 49 41 20 20 20  28 73 70 29 21 2c 7b 72  |LDMIA   (sp)!,{r|
00001190  37 2d 72 31 31 2c 70 63  7d 5e 0d 06 c2 04 0d 06  |7-r11,pc}^......|
000011a0  cc 0c 2e 73 77 69 63 6f  64 65 0d 06 d6 24 20 20  |...swicode...$  |
000011b0  20 20 20 20 20 20 53 54  4d 44 42 20 20 20 28 73  |      STMDB   (s|
000011c0  70 29 21 2c 7b 72 30 2d  72 39 2c 6c 72 7d 0d 06  |p)!,{r0-r9,lr}..|
000011d0  e0 21 20 20 20 20 20 20  20 20 4d 4f 56 20 20 20  |.!        MOV   |
000011e0  20 20 73 6c 2c 73 70 2c  4c 53 52 20 23 32 30 0d  |  sl,sp,LSR #20.|
000011f0  06 ea 21 20 20 20 20 20  20 20 20 4d 4f 56 20 20  |..!        MOV  |
00001200  20 20 20 73 6c 2c 73 6c  2c 4c 53 4c 20 23 32 30  |   sl,sl,LSL #20|
00001210  0d 06 f4 1e 20 20 20 20  20 20 20 20 4c 44 4d 49  |....        LDMI|
00001220  41 20 20 20 73 6c 2c 7b  72 38 2c 72 39 7d 0d 06  |A   sl,{r8,r9}..|
00001230  fe 1a 20 20 20 20 20 20  20 20 4d 4f 56 20 20 20  |..        MOV   |
00001240  20 20 72 30 2c 72 31 31  0d 07 08 19 20 20 20 20  |  r0,r11....    |
00001250  20 20 20 20 4d 4f 56 20  20 20 20 20 72 31 2c 73  |    MOV     r1,s|
00001260  70 0d 07 12 1a 20 20 20  20 20 20 20 20 4d 4f 56  |p....        MOV|
00001270  20 20 20 20 20 72 32 2c  72 31 32 0d 07 1c 1d 20  |     r2,r12.... |
00001280  20 20 20 20 20 20 20 4c  44 52 20 20 20 20 20 72  |       LDR     r|
00001290  31 32 2c 5b 72 31 32 5d  0d 07 26 21 20 20 20 20  |12,[r12]..&!    |
000012a0  20 20 20 20 4c 44 4d 49  42 20 20 20 72 31 32 2c  |    LDMIB   r12,|
000012b0  7b 72 31 31 2c 72 31 32  7d 0d 07 30 20 20 20 20  |{r11,r12}..0    |
000012c0  20 20 20 20 20 53 54 4d  49 41 20 20 20 73 6c 2c  |     STMIA   sl,|
000012d0  7b 72 31 31 2c 72 31 32  7d 0d 07 3a 28 20 20 20  |{r11,r12}..:(   |
000012e0  20 20 20 20 20 41 44 44  20 20 20 20 20 73 6c 2c  |     ADD     sl,|
000012f0  73 6c 2c 23 53 4c 5f 4c  69 62 5f 4f 66 66 73 65  |sl,#SL_Lib_Offse|
00001300  74 0d 07 44 19 20 20 20  20 20 20 20 20 4d 4f 56  |t..D.        MOV|
00001310  20 20 20 20 20 66 70 2c  23 30 0d 07 4e 1c 20 20  |     fp,#0..N.  |
00001320  20 20 20 20 20 20 42 4c  20 20 20 20 20 20 75 73  |      BL      us|
00001330  65 72 5f 73 77 69 0d 07  58 21 20 20 20 20 20 20  |er_swi..X!      |
00001340  20 20 4d 4f 56 20 20 20  20 20 73 6c 2c 73 70 2c  |  MOV     sl,sp,|
00001350  4c 53 52 20 23 32 30 0d  07 62 21 20 20 20 20 20  |LSR #20..b!     |
00001360  20 20 20 4d 4f 56 20 20  20 20 20 73 6c 2c 73 6c  |   MOV     sl,sl|
00001370  2c 4c 53 4c 20 23 32 30  0d 07 6c 1e 20 20 20 20  |,LSL #20..l.    |
00001380  20 20 20 20 53 54 4d 49  41 20 20 20 73 6c 2c 7b  |    STMIA   sl,{|
00001390  72 38 2c 72 39 7d 0d 07  76 19 20 20 20 20 20 20  |r8,r9}..v.      |
000013a0  20 20 43 4d 50 20 20 20  20 20 72 30 2c 23 30 0d  |  CMP     r0,#0.|
000013b0  07 80 1b 20 20 20 20 20  20 20 20 53 54 52 4e 45  |...        STRNE|
000013c0  20 20 20 72 30 2c 5b 73  70 5d 0d 07 8a 24 20 20  |   r0,[sp]...$  |
000013d0  20 20 20 20 20 20 4c 44  4d 49 41 20 20 20 28 73  |      LDMIA   (s|
000013e0  70 29 21 2c 7b 72 30 2d  72 39 2c 6c 72 7d 0d 07  |p)!,{r0-r9,lr}..|
000013f0  94 1f 20 20 20 20 20 20  20 20 42 49 43 45 51 53  |..        BICEQS|
00001400  20 20 70 63 2c 6c 72 2c  23 76 62 69 74 0d 07 9e  |  pc,lr,#vbit...|
00001410  1e 20 20 20 20 20 20 20  20 84 52 53 20 20 20 20  |.        .RS    |
00001420  70 63 2c 6c 72 2c 23 76  62 69 74 0d 07 a8 04 0d  |pc,lr,#vbit.....|
00001430  07 b2 0e 2e 75 73 65 72  5f 69 6e 69 74 0d 07 bc  |....user_init...|
00001440  24 20 20 20 20 20 20 20  20 53 54 4d 44 42 20 20  |$        STMDB  |
00001450  20 28 73 70 29 21 2c 7b  72 34 2d 72 39 2c 6c 72  | (sp)!,{r4-r9,lr|
00001460  7d 0d 07 c6 19 20 20 20  20 20 20 20 20 4d 4f 56  |}....        MOV|
00001470  20 20 20 20 20 72 30 2c  23 30 0d 07 d0 05 5d 0d  |     r0,#0....].|
00001480  07 da 15 e3 20 73 77 69  3d 30 20 b8 20 6d 61 78  |.... swi=0 . max|
00001490  5f 73 77 69 0d 07 e4 11  20 e7 20 64 65 66 28 73  |_swi.... . def(s|
000014a0  77 69 29 20 8c 0d 07 ee  27 20 20 6b 3d a0 28 22  |wi) ....'  k=.("|
000014b0  46 4e 73 77 69 22 2b c2  22 30 22 2b c3 73 77 69  |FNswi"+."0"+.swi|
000014c0  2c 32 29 2b 22 5f 69 6e  69 74 22 29 0d 07 f8 10  |,2)+"_init")....|
000014d0  20 20 5b 4f 50 54 20 70  61 73 73 25 0d 08 02 19  |  [OPT pass%....|
000014e0  20 20 20 20 20 20 20 20  43 4d 50 20 20 20 20 20  |        CMP     |
000014f0  72 30 2c 23 30 0d 08 0c  25 20 20 20 20 20 20 20  |r0,#0...%       |
00001500  20 4c 44 4d 4e 45 49 41  20 28 73 70 29 21 2c 7b  | LDMNEIA (sp)!,{|
00001510  72 34 2d 72 39 2c 70 63  7d 5e 0d 08 16 07 20 20  |r4-r9,pc}^....  |
00001520  5d 0d 08 20 06 20 cd 0d  08 2a 05 ed 0d 08 34 0e  |].. . ...*....4.|
00001530  5b 4f 50 54 20 70 61 73  73 25 0d 08 3e 19 20 20  |[OPT pass%..>.  |
00001540  20 20 20 20 20 20 4d 4f  56 20 20 20 20 20 72 30  |      MOV     r0|
00001550  2c 23 30 0d 08 48 25 20  20 20 20 20 20 20 20 4c  |,#0..H%        L|
00001560  44 4d 49 41 20 20 20 28  73 70 29 21 2c 7b 72 34  |DMIA   (sp)!,{r4|
00001570  2d 72 39 2c 70 63 7d 5e  0d 08 52 04 0d 08 5c 0d  |-r9,pc}^..R...\.|
00001580  2e 75 73 65 72 5f 73 77  69 0d 08 66 24 20 20 20  |.user_swi..f$   |
00001590  20 20 20 20 20 53 54 4d  44 42 20 20 20 28 73 70  |     STMDB   (sp|
000015a0  29 21 2c 7b 72 38 2c 72  39 2c 6c 72 7d 0d 08 70  |)!,{r8,r9,lr}..p|
000015b0  21 20 20 20 20 20 20 20  20 43 4d 50 20 20 20 20  |!        CMP    |
000015c0  20 72 30 2c 23 6d 61 78  5f 73 77 69 2b 31 0d 08  | r0,#max_swi+1..|
000015d0  7a 23 20 20 20 20 20 20  20 20 41 44 44 43 43 20  |z#        ADDCC |
000015e0  20 20 70 63 2c 70 63 2c  72 30 2c 4c 53 4c 20 23  |  pc,pc,r0,LSL #|
000015f0  33 0d 08 84 1f 20 20 20  20 20 20 20 20 42 20 20  |3....        B  |
00001600  20 20 20 20 20 75 6e 6b  6e 6f 77 6e 5f 73 77 69  |     unknown_swi|
00001610  0d 08 8e 05 5d 0d 08 98  15 e3 20 73 77 69 3d 30  |....]..... swi=0|
00001620  20 b8 20 6d 61 78 5f 73  77 69 0d 08 a2 0f 20 5b  | . max_swi.... [|
00001630  4f 50 54 20 70 61 73 73  25 0d 08 ac 1c 20 20 20  |OPT pass%....   |
00001640  20 20 20 20 20 42 4c 20  20 20 20 20 20 73 77 69  |     BL      swi|
00001650  28 73 77 69 29 0d 08 b6  1c 20 20 20 20 20 20 20  |(swi)....       |
00001660  20 42 20 20 20 20 20 20  20 64 6f 6e 65 5f 73 77  | B       done_sw|
00001670  69 0d 08 c0 06 20 5d 0d  08 ca 05 ed 0d 08 d4 0e  |i.... ].........|
00001680  5b 4f 50 54 20 70 61 73  73 25 0d 08 de 0d 2e 64  |[OPT pass%.....d|
00001690  6f 6e 65 5f 73 77 69 0d  08 e8 24 20 20 20 20 20  |one_swi...$     |
000016a0  20 20 20 4c 44 4d 49 41  20 20 20 28 73 70 29 21  |   LDMIA   (sp)!|
000016b0  2c 7b 72 38 2c 72 39 2c  70 63 7d 0d 08 f2 10 2e  |,{r8,r9,pc}.....|
000016c0  75 6e 6b 6e 6f 77 6e 5f  73 77 69 0d 08 fc 22 20  |unknown_swi..." |
000016d0  20 20 20 20 20 20 20 41  44 52 20 20 20 20 20 72  |       ADR     r|
000016e0  30 2c 62 61 64 5f 73 77  69 5f 65 72 72 0d 09 06  |0,bad_swi_err...|
000016f0  24 20 20 20 20 20 20 20  20 4c 44 4d 49 41 20 20  |$        LDMIA  |
00001700  20 28 73 70 29 21 2c 7b  72 38 2d 72 39 2c 6c 72  | (sp)!,{r8-r9,lr|
00001710  7d 0d 09 10 1e 20 20 20  20 20 20 20 20 84 52 53  |}....        .RS|
00001720  20 20 20 20 70 63 2c 6c  72 2c 23 76 62 69 74 0d  |    pc,lr,#vbit.|
00001730  09 1a 10 2e 62 61 64 5f  73 77 69 5f 65 72 72 0d  |....bad_swi_err.|
00001740  09 24 18 20 20 20 20 20  20 20 20 44 43 44 20 20  |.$.        DCD  |
00001750  20 20 20 26 31 45 36 0d  09 2e 2b 20 20 20 20 20  |   &1E6...+     |
00001760  20 20 20 45 51 55 53 20  20 20 20 22 55 6e 6b 6e  |   EQUS    "Unkn|
00001770  6f 77 6e 20 53 43 4c 20  6f 70 65 72 61 74 69 6f  |own SCL operatio|
00001780  6e 22 0d 09 38 15 20 20  20 20 20 20 20 20 44 43  |n"..8.        DC|
00001790  42 20 20 20 20 20 30 0d  09 42 11 20 20 20 20 20  |B     0..B.     |
000017a0  20 20 20 41 4c 49 47 4e  0d 09 4c 04 0d 09 56 15  |   ALIGN..L...V.|
000017b0  2e 73 74 75 62 73 20 20  44 43 44 20 20 20 20 20  |.stubs  DCD     |
000017c0  31 0d 09 60 16 20 20 20  20 20 20 20 20 a4 74 61  |1..`.        .ta|
000017d0  62 6c 65 28 31 36 29 0d  09 6a 15 20 20 20 20 20  |ble(16)..j.     |
000017e0  20 20 20 44 43 44 20 20  20 20 20 32 0d 09 74 16  |   DCD     2..t.|
000017f0  20 20 20 20 20 20 20 20  a4 74 61 62 6c 65 28 31  |        .table(1|
00001800  36 29 0d 09 7e 16 20 20  20 20 20 20 20 20 44 43  |6)..~.        DC|
00001810  44 20 20 20 20 20 2d 31  0d 09 88 04 0d 09 92 16  |D     -1........|
00001820  2e 6b 65 72 6e 65 6c 5f  69 6e 69 74 5f 62 6c 6f  |.kernel_init_blo|
00001830  63 6b 0d 09 9c 16 20 20  20 20 20 20 20 20 a4 74  |ck....        .t|
00001840  61 62 6c 65 28 31 32 29  0d 09 a6 04 0d 09 b0 0e  |able(12)........|
00001850  2e 72 74 73 5f 62 6c 6f  63 6b 0d 09 ba 2b 20 20  |.rts_block...+  |
00001860  20 20 20 20 20 20 44 43  44 20 20 20 20 20 72 74  |      DCD     rt|
00001870  73 5f 62 6c 6f 63 6b 5f  65 6e 64 2d 72 74 73 5f  |s_block_end-rts_|
00001880  62 6c 6f 63 6b 0d 09 c4  16 20 20 20 20 20 20 20  |block....       |
00001890  20 a4 74 61 62 6c 65 28  32 30 29 0d 09 ce 12 2e  | .table(20).....|
000018a0  72 74 73 5f 62 6c 6f 63  6b 5f 65 6e 64 0d 09 d8  |rts_block_end...|
000018b0  04 0d 09 e2 1a 2e 63 5f  73 74 72 20 20 45 51 55  |......c_str  EQU|
000018c0  53 20 20 20 20 22 43 22  2b bd 30 0d 09 ec 11 20  |S    "C"+.0.... |
000018d0  20 20 20 20 20 20 20 41  4c 49 47 4e 0d 09 f6 04  |       ALIGN....|
000018e0  0d 0a 00 20 2e 6b 65 72  6e 65 6c 5f 76 65 63 74  |... .kernel_vect|
000018f0  6f 72 73 20 a4 74 61 62  6c 65 28 34 38 2a 34 29  |ors .table(48*4)|
00001900  0d 0a 0a 17 2e 6b 65 72  6e 65 6c 5f 76 65 63 74  |.....kernel_vect|
00001910  6f 72 73 5f 65 6e 64 0d  0a 14 04 0d 0a 1e 1f 2e  |ors_end.........|
00001920  63 6c 69 62 5f 76 65 63  74 6f 72 73 20 a4 74 61  |clib_vectors .ta|
00001930  62 6c 65 28 31 38 33 2a  34 29 0d 0a 28 15 2e 63  |ble(183*4)..(..c|
00001940  6c 69 62 5f 76 65 63 74  6f 72 73 5f 65 6e 64 0d  |lib_vectors_end.|
00001950  0a 32 05 5d 0d 0a 3c 43  f4 20 53 74 61 74 69 63  |.2.]..<C. Static|
00001960  73 20 77 69 6c 6c 20 62  65 20 63 6f 70 69 65 64  |s will be copied|
00001970  20 69 6e 74 6f 20 77 6f  72 6b 73 70 61 63 65 2c  | into workspace,|
00001980  20 62 75 74 20 77 65 20  68 61 76 65 20 74 6f 20  | but we have to |
00001990  70 72 65 74 65 6e 64 0d  0a 46 27 f4 20 74 68 65  |pretend..F'. the|
000019a0  79 27 72 65 20 66 75 72  74 68 65 72 20 6f 6e 20  |y're further on |
000019b0  69 6e 20 74 68 65 20 6d  6f 64 75 6c 65 21 0d 0a  |in the module!..|
000019c0  50 0e 72 77 5f 62 61 73  65 3d 50 25 0d 0a 5a 15  |P.rw_base=P%..Z.|
000019d0  6b 65 72 6e 65 6c 5f 73  74 61 74 69 63 73 3d 50  |kernel_statics=P|
000019e0  25 0d 0a 64 2a 6b 65 72  6e 65 6c 5f 73 74 61 74  |%..d*kernel_stat|
000019f0  69 63 73 5f 65 6e 64 3d  6b 65 72 6e 65 6c 5f 73  |ics_end=kernel_s|
00001a00  74 61 74 69 63 73 2b 26  33 31 43 0d 0a 6e 23 63  |tatics+&31C..n#c|
00001a10  6c 69 62 5f 73 74 61 74  69 63 73 3d 6b 65 72 6e  |lib_statics=kern|
00001a20  65 6c 5f 73 74 61 74 69  63 73 5f 65 6e 64 0d 0a  |el_statics_end..|
00001a30  78 26 63 6c 69 62 5f 73  74 61 74 69 63 73 5f 65  |x&clib_statics_e|
00001a40  6e 64 3d 63 6c 69 62 5f  73 74 61 74 69 63 73 2b  |nd=clib_statics+|
00001a50  26 42 34 38 0d 0a 82 1c  7a 69 5f 62 61 73 65 3d  |&B48....zi_base=|
00001a60  63 6c 69 62 5f 73 74 61  74 69 63 73 5f 65 6e 64  |clib_statics_end|
00001a70  0d 0a 8c 18 72 77 5f 6c  69 6d 69 74 3d 7a 69 5f  |....rw_limit=zi_|
00001a80  62 61 73 65 2b 26 34 30  0d 0a 96 0e 5b 4f 50 54  |base+&40....[OPT|
00001a90  20 70 61 73 73 25 0d 0a  a0 0d 2e 6e 75 6c 6c 5f  | pass%.....null_|
00001aa0  73 77 69 0d 0a aa 19 20  20 20 20 20 20 20 20 4d  |swi....        M|
00001ab0  4f 56 20 20 20 20 20 70  63 2c 6c 72 0d 0a b4 05  |OV     pc,lr....|
00001ac0  5d 0d 0a be 15 e3 20 73  77 69 3d 30 20 b8 20 6d  |]..... swi=0 . m|
00001ad0  61 78 5f 73 77 69 0d 0a  c8 11 20 e7 20 64 65 66  |ax_swi.... . def|
00001ae0  28 73 77 69 29 20 8c 0d  0a d2 11 20 20 73 77 69  |(swi) .....  swi|
00001af0  28 73 77 69 29 3d 50 25  0d 0a dc 27 20 20 6b 3d  |(swi)=P%...'  k=|
00001b00  a0 28 22 46 4e 73 77 69  22 2b c2 22 30 22 2b c3  |.("FNswi"+."0"+.|
00001b10  73 77 69 2c 32 29 2b 22  5f 63 6f 64 65 22 29 0d  |swi,2)+"_code").|
00001b20  0a e6 06 20 cc 0d 0a f0  17 20 20 73 77 69 28 73  |... .....  swi(s|
00001b30  77 69 29 3d 6e 75 6c 6c  5f 73 77 69 0d 0a fa 06  |wi)=null_swi....|
00001b40  20 cd 0d 0b 04 05 ed 0d  0b 0e 0b ed 20 70 61 73  | ........... pas|
00001b50  73 25 0d 0b 18 2b c8 99  20 22 4f 53 5f 46 69 6c  |s%...+.. "OS_Fil|
00001b60  65 22 2c 31 30 2c 22 53  43 4c 6d 6f 64 22 2c 26  |e",10,"SCLmod",&|
00001b70  46 46 41 2c 2c 63 6f 64  65 25 2c 4f 25 0d 0b 22  |FFA,,code%,O%.."|
00001b80  05 e0 0d 0b 2c 05 3a 0d  0b 36 13 dd 20 a4 74 61  |....,.:..6.. .ta|
00001b90  62 6c 65 28 73 69 7a 65  25 29 0d 0b 40 0e c8 95  |ble(size%)..@...|
00001ba0  20 73 69 7a 65 25 3e 30  0d 0b 4a 0a 20 21 4f 25  | size%>0..J. !O%|
00001bb0  3d 30 0d 0b 54 0a 20 4f  25 2b 3d 34 0d 0b 5e 0a  |=0..T. O%+=4..^.|
00001bc0  20 50 25 2b 3d 34 0d 0b  68 0d 20 73 69 7a 65 25  | P%+=4..h. size%|
00001bd0  2d 3d 34 0d 0b 72 05 ce  0d 0b 7c 06 3d 30 0d 0b  |-=4..r....|.=0..|
00001be0  86 05 3a 0d 0b 90 0e dd  20 a4 77 6b 28 72 65 71  |..:..... .wk(req|
00001bf0  29 0d 0b 9a 0b 77 6b 2b  3d 72 65 71 0d 0b a4 0b  |)....wk+=req....|
00001c00  3d 77 6b 2d 72 65 71 0d  0b ae 05 3a 0d 0b b8 0d  |=wk-req....:....|
00001c10  dd 20 a4 6c 63 28 61 24  29 0d 0b c2 0c ea 20 62  |. .lc(a$)..... b|
00001c20  24 2c 69 2c 63 0d 0b cc  11 e3 20 69 3d 31 20 b8  |$,i,c..... i=1 .|
00001c30  20 a9 28 61 24 29 0d 0b  d6 0e 20 63 3d 97 c1 61  | .(a$).... c=..a|
00001c40  24 2c 69 29 0d 0b e0 1e  20 e7 20 63 3e 3d 97 22  |$,i).... . c>=."|
00001c50  41 22 20 80 20 63 3c 3d  97 22 5a 22 20 63 2b 3d  |A" . c<=."Z" c+=|
00001c60  33 32 0d 0b ea 0b 20 62  24 2b 3d bd 63 0d 0b f4  |32.... b$+=.c...|
00001c70  05 ed 0d 0b fe 07 3d 62  24 0d 0c 08 05 3a 0d 0c  |......=b$....:..|
00001c80  12 14 dd 20 a4 61 64 72  6c 28 72 65 67 2c 6f 66  |... .adrl(reg,of|
00001c90  66 29 0d 0c 1c 14 6f 66  66 3d 28 6f 66 66 2d 28  |f)....off=(off-(|
00001ca0  50 25 2b 38 29 29 0d 0c  26 0e 5b 4f 50 54 20 70  |P%+8))..&.[OPT p|
00001cb0  61 73 73 25 0d 0c 30 27  20 20 20 20 20 20 20 20  |ass%..0'        |
00001cc0  41 44 44 20 20 20 20 20  72 65 67 2c 70 63 2c 23  |ADD     reg,pc,#|
00001cd0  28 6f 66 66 20 80 20 26  46 46 29 0d 0c 3a 2a 20  |(off . &FF)..:* |
00001ce0  20 20 20 20 20 20 20 41  44 44 20 20 20 20 20 72  |       ADD     r|
00001cf0  65 67 2c 72 65 67 2c 23  28 6f 66 66 20 80 20 26  |eg,reg,#(off . &|
00001d00  46 46 30 30 29 0d 0c 44  05 5d 0d 0c 4e 06 3d 30  |FF00)..D.]..N.=0|
00001d10  0d ff                                             |..|
00001d12