Home » Archimedes archive » Acorn User » AU 1993-09.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-09.adf » !StarInfo_StarInfo
Filename: SharedCLib/SCLsrce
Read OK:
File size: 1D1B bytes
Load address: 0000
Exec address: 0000
File contents
   10REM     >SCLsrce (Info10)
   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 (Info10)
#� 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 1b f4 20 20 20  20 20 3e 53 43 4c 73 72  |.....     >SCLsr|
00000010  63 65 20 28 49 6e 66 6f  31 30 29 0d 00 14 23 f4  |ce (Info10)...#.|
00000020  20 42 79 20 20 44 43 41  2c 20 62 61 73 65 64 20  | By  DCA, based |
00000030  6f 6e 20 50 52 4d 20 65  78 61 6d 70 6c 65 0d 00  |on PRM example..|
00000040  1e 19 f4 20 46 6f 72 20  33 32 2d 62 69 74 20 6d  |... For 32-bit m|
00000050  61 63 68 69 6e 65 73 0d  00 28 1c f4 20 28 63 29  |achines..(.. (c)|
00000060  20 42 41 55 20 53 65 70  74 65 6d 62 65 72 20 31  | BAU September 1|
00000070  39 39 33 0d 00 32 05 3a  0d 00 3c 2b de 20 63 6f  |993..2.:..<+. co|
00000080  64 65 25 20 26 31 30 30  30 30 2c 73 77 69 24 28  |de% &10000,swi$(|
00000090  36 34 29 2c 73 77 69 28  36 34 29 2c 64 65 66 28  |64),swi(64),def(|
000000a0  36 34 29 0d 00 46 0b 64  65 66 28 29 3d a3 0d 00  |64)..F.def()=...|
000000b0  50 0e 6d 61 78 5f 73 77  69 3d 2d 31 0d 00 5a 08  |P.max_swi=-1..Z.|
000000c0  69 25 3d 30 0d 00 64 05  f5 0d 00 6e 3b 20 c8 99  |i%=0..d....n; ..|
000000d0  20 22 4f 53 5f 47 42 50  42 22 2c 39 2c 22 53 43  | "OS_GBPB",9,"SC|
000000e0  4c 22 2c 63 6f 64 65 25  2c 31 2c 69 25 2c 26 31  |L",code%,1,i%,&1|
000000f0  30 30 2c 22 2a 22 20 b8  20 2c 2c 2c 72 65 61 64  |00,"*" . ,,,read|
00000100  25 2c 69 25 0d 00 78 10  20 e7 20 72 65 61 64 25  |%,i%..x. . read%|
00000110  3d 31 20 8c 0d 00 82 0e  20 20 6a 25 3d 63 6f 64  |=1 .....  j%=cod|
00000120  65 25 0d 00 8c 10 20 20  c8 95 20 3f 6a 25 3e 3d  |e%....  .. ?j%>=|
00000130  33 32 0d 00 96 0c 20 20  20 6a 25 2b 3d 31 0d 00  |32....   j%+=1..|
00000140  a0 07 20 20 ce 0d 00 aa  0c 20 20 3f 6a 25 3d 31  |..  .....  ?j%=1|
00000150  33 0d 00 b4 14 20 20 66  24 3d a4 6c 63 28 24 63  |3....  f$=.lc($c|
00000160  6f 64 65 25 29 0d 00 be  16 20 20 e7 20 c0 66 24  |ode%)....  . .f$|
00000170  2c 33 29 3d 22 73 77 69  22 20 8c 0d 00 c8 17 20  |,3)="swi" ..... |
00000180  20 20 73 77 69 5f 6e 6f  3d bb 28 c1 66 24 2c 34  |  swi_no=.(.f$,4|
00000190  29 29 0d 00 d2 14 20 20  20 64 65 66 28 73 77 69  |))....   def(swi|
000001a0  5f 6e 6f 29 3d b9 0d 00  dc 26 20 20 20 e7 20 73  |_no)=....&   . s|
000001b0  77 69 5f 6e 6f 3e 6d 61  78 5f 73 77 69 20 6d 61  |wi_no>max_swi ma|
000001c0  78 5f 73 77 69 3d 73 77  69 5f 6e 6f 0d 00 e6 1d  |x_swi=swi_no....|
000001d0  20 20 20 73 77 69 24 28  73 77 69 5f 6e 6f 29 3d  |   swi$(swi_no)=|
000001e0  22 53 43 4c 2e 22 2b 66  24 0d 00 f0 07 20 20 cd  |"SCL."+f$....  .|
000001f0  0d 00 fa 06 20 cd 0d 01  04 0b fd 20 69 25 3d 2d  |.... ...... i%=-|
00000200  31 0d 01 0e 2d e7 20 6d  61 78 5f 73 77 69 3d 2d  |1...-. max_swi=-|
00000210  31 20 85 20 30 2c 22 4e  6f 20 73 6f 75 72 63 65  |1 . 0,"No source|
00000220  20 66 69 6c 65 73 20 66  6f 75 6e 64 21 22 0d 01  | files found!"..|
00000230  18 1a 73 77 69 24 28 36  34 29 3d 22 53 43 4c 2e  |..swi$(64)="SCL.|
00000240  56 65 72 73 69 6f 6e 22  0d 01 22 0d c8 a3 20 73  |Version".."... s|
00000250  77 69 24 28 29 0d 01 2c  14 73 77 69 5f 63 68 75  |wi$()..,.swi_chu|
00000260  6e 6b 3d 26 43 45 34 34  30 0d 01 36 0e 76 62 69  |nk=&CE440..6.vbi|
00000270  74 3d 31 3c 3c 32 38 0d  01 40 1c 72 30 3d 30 3a  |t=1<<28..@.r0=0:|
00000280  72 31 3d 31 3a 72 32 3d  32 3a 72 33 3d 33 3a 72  |r1=1:r2=2:r3=3:r|
00000290  34 3d 34 0d 01 4a 23 72  35 3d 35 3a 72 36 3d 36  |4=4..J#r5=5:r6=6|
000002a0  3a 72 37 3d 37 3a 72 38  3d 38 3a 72 39 3d 39 3a  |:r7=7:r8=8:r9=9:|
000002b0  72 31 34 3d 31 34 0d 01  54 27 73 6c 3d 31 30 3a  |r14=14..T'sl=10:|
000002c0  66 70 3d 31 31 3a 77 70  3d 31 32 3a 73 70 3d 31  |fp=11:wp=12:sp=1|
000002d0  33 3a 6c 72 3d 31 34 3a  70 63 3d 31 35 0d 01 5e  |3:lr=14:pc=15..^|
000002e0  14 73 77 69 5f 63 68 75  6e 6b 3d 26 43 45 34 43  |.swi_chunk=&CE4C|
000002f0  30 0d 01 68 0e 76 62 69  74 3d 31 3c 3c 32 38 0d  |0..h.vbit=1<<28.|
00000300  01 72 08 77 6b 3d 30 0d  01 7c 0f 73 69 7a 65 3d  |.r.wk=0..|.size=|
00000310  a4 77 6b 28 34 29 0d 01  86 13 6c 69 62 72 65 6c  |.wk(4)....librel|
00000320  6f 63 3d a4 77 6b 28 34  29 0d 01 90 16 63 6c 69  |oc=.wk(4)....cli|
00000330  65 6e 74 72 65 6c 6f 63  3d a4 77 6b 28 34 29 0d  |entreloc=.wk(4).|
00000340  01 9a 15 e3 20 73 77 69  3d 30 20 b8 20 6d 61 78  |.... swi=0 . max|
00000350  5f 73 77 69 0d 01 a4 33  20 e7 20 64 65 66 28 73  |_swi...3 . def(s|
00000360  77 69 29 20 8c 20 7a 3d  a0 28 22 46 4e 73 77 69  |wi) . z=.("FNswi|
00000370  22 2b c2 22 30 22 2b c3  73 77 69 2c 32 29 2b 22  |"+."0"+.swi,2)+"|
00000380  5f 76 61 72 73 22 29 0d  01 ae 05 ed 0d 01 b8 11  |_vars").........|
00000390  4c 69 62 5f 4f 66 66 73  65 74 3d 32 30 0d 01 c2  |Lib_Offset=20...|
000003a0  15 53 4c 5f 4c 69 62 5f  4f 66 66 73 65 74 3d 35  |.SL_Lib_Offset=5|
000003b0  34 30 0d 01 cc 1b 5f 6b  65 72 6e 65 6c 5f 6d 6f  |40...._kernel_mo|
000003c0  64 75 6c 65 69 6e 69 74  3d 33 38 2a 34 0d 01 d6  |duleinit=38*4...|
000003d0  1a 5f 63 6c 69 62 5f 69  6e 69 74 69 61 6c 69 61  |._clib_initialia|
000003e0  73 65 3d 32 30 2a 34 0d  01 e0 1e 5f 63 6c 69 62  |se=20*4...._clib|
000003f0  5f 66 69 6e 61 6c 69 73  65 6d 6f 64 75 6c 65 3d  |_finalisemodule=|
00000400  31 37 39 2a 34 0d 01 ea  19 53 4c 5f 43 6c 69 65  |179*4....SL_Clie|
00000410  6e 74 5f 4f 66 66 73 65  74 3d 2d 35 33 36 0d 01  |nt_Offset=-536..|
00000420  f4 15 e3 20 70 61 73 73  25 3d 34 20 b8 20 36 20  |... pass%=4 . 6 |
00000430  88 20 32 0d 01 fe 08 50  25 3d 30 0d 02 08 0c 4f  |. 2....P%=0....O|
00000440  25 3d 63 6f 64 65 25 0d  02 12 0e 5b 4f 50 54 20  |%=code%....[OPT |
00000450  70 61 73 73 25 0d 02 1c  10 2e 6d 6f 64 75 6c 65  |pass%.....module|
00000460  5f 62 61 73 65 0d 02 26  15 20 20 20 20 20 20 20  |_base..&.       |
00000470  20 44 43 44 20 20 20 20  20 30 0d 02 30 18 20 20  | DCD     0..0.  |
00000480  20 20 20 20 20 20 44 43  44 20 20 20 20 20 69 6e  |      DCD     in|
00000490  69 74 0d 02 3a 1d 20 20  20 20 20 20 20 20 44 43  |it..:.        DC|
000004a0  44 20 20 20 20 20 74 65  72 6d 69 6e 61 74 65 0d  |D     terminate.|
000004b0  02 44 15 20 20 20 20 20  20 20 20 44 43 44 20 20  |.D.        DCD  |
000004c0  20 20 20 30 0d 02 4e 19  20 20 20 20 20 20 20 20  |   0..N.        |
000004d0  44 43 44 20 20 20 20 20  74 69 74 6c 65 0d 02 58  |DCD     title..X|
000004e0  18 20 20 20 20 20 20 20  20 44 43 44 20 20 20 20  |.        DCD    |
000004f0  20 68 65 6c 70 0d 02 62  15 20 20 20 20 20 20 20  | help..b.       |
00000500  20 44 43 44 20 20 20 20  20 30 0d 02 6c 1d 20 20  | DCD     0..l.  |
00000510  20 20 20 20 20 20 44 43  44 20 20 20 20 20 73 77  |      DCD     sw|
00000520  69 5f 63 68 75 6e 6b 0d  02 76 1b 20 20 20 20 20  |i_chunk..v.     |
00000530  20 20 20 44 43 44 20 20  20 20 20 73 77 69 63 6f  |   DCD     swico|
00000540  64 65 0d 02 80 1a 20 20  20 20 20 20 20 20 44 43  |de....        DC|
00000550  44 20 20 20 20 20 73 77  69 74 62 6c 0d 02 8a 04  |D     switbl....|
00000560  0d 02 94 1c 2e 74 69 74  6c 65 20 20 45 51 55 53  |.....title  EQUS|
00000570  20 20 20 20 22 53 43 4c  22 2b bd 30 0d 02 9e 1f  |    "SCL"+.0....|
00000580  2e 68 65 6c 70 20 20 20  45 51 55 53 20 20 20 20  |.help   EQUS    |
00000590  a4 76 65 72 73 69 6f 6e  2b bd 30 0d 02 a8 11 20  |.version+.0.... |
000005a0  20 20 20 20 20 20 20 41  4c 49 47 4e 0d 02 b2 04  |       ALIGN....|
000005b0  0d 02 bc 1c 2e 73 77 69  74 62 6c 20 45 51 55 53  |.....switbl EQUS|
000005c0  20 20 20 20 22 53 43 4c  22 2b bd 30 0d 02 c6 05  |    "SCL"+.0....|
000005d0  5d 0d 02 d0 15 e3 20 73  77 69 3d 30 20 b8 20 6d  |]..... swi=0 . m|
000005e0  61 78 5f 73 77 69 0d 02  da 11 20 e7 20 64 65 66  |ax_swi.... . def|
000005f0  28 73 77 69 29 20 8c 0d  02 e4 10 20 20 5b 4f 50  |(swi) .....  [OP|
00000600  54 20 70 61 73 73 25 0d  02 ee 36 20 20 20 20 20  |T pass%...6     |
00000610  20 20 20 45 51 55 53 20  20 20 20 a0 28 22 46 4e  |   EQUS    .("FN|
00000620  73 77 69 22 2b c2 22 30  22 2b c3 73 77 69 2c 32  |swi"+."0"+.swi,2|
00000630  29 2b 22 5f 6e 61 6d 65  22 29 2b bd 30 0d 02 f8  |)+"_name")+.0...|
00000640  07 20 20 5d 0d 03 02 06  20 cc 0d 03 0c 10 20 20  |.  ].... .....  |
00000650  5b 4f 50 54 20 70 61 73  73 25 0d 03 16 2c 20 20  |[OPT pass%...,  |
00000660  20 20 20 20 20 20 45 51  55 53 20 20 20 20 22 55  |      EQUS    "U|
00000670  6e 75 73 65 64 22 2b c2  22 30 22 2b c3 73 77 69  |nused"+."0"+.swi|
00000680  2c 32 29 2b bd 30 0d 03  20 07 20 20 5d 0d 03 2a  |,2)+.0.. .  ]..*|
00000690  06 20 cd 0d 03 34 05 ed  0d 03 3e 0e 5b 4f 50 54  |. ...4....>.[OPT|
000006a0  20 70 61 73 73 25 0d 03  48 15 20 20 20 20 20 20  | pass%..H.      |
000006b0  20 20 44 43 42 20 20 20  20 20 30 0d 03 52 11 20  |  DCB     0..R. |
000006c0  20 20 20 20 20 20 20 41  4c 49 47 4e 0d 03 5c 04  |       ALIGN..\.|
000006d0  0d 03 66 25 2e 69 6e 69  74 20 20 20 53 54 4d 44  |..f%.init   STMD|
000006e0  42 20 20 20 28 73 70 29  21 2c 7b 72 37 2d 72 31  |B   (sp)!,{r7-r1|
000006f0  31 2c 6c 72 7d 0d 03 70  21 20 20 20 20 20 20 20  |1,lr}..p!       |
00000700  20 4d 4f 56 20 20 20 20  20 73 6c 2c 73 70 2c 4c  | MOV     sl,sp,L|
00000710  53 52 20 23 32 30 0d 03  7a 21 20 20 20 20 20 20  |SR #20..z!      |
00000720  20 20 4d 4f 56 20 20 20  20 20 73 6c 2c 73 6c 2c  |  MOV     sl,sl,|
00000730  4c 53 4c 20 23 32 30 0d  03 84 1e 20 20 20 20 20  |LSL #20....     |
00000740  20 20 20 4c 44 4d 49 41  20 20 20 73 6c 2c 7b 72  |   LDMIA   sl,{r|
00000750  34 2c 72 35 7d 0d 03 8e  21 20 20 20 20 20 20 20  |4,r5}...!       |
00000760  20 53 54 4d 44 42 20 20  20 28 73 70 29 21 2c 7b  | STMDB   (sp)!,{|
00000770  72 34 2c 72 35 7d 0d 03  98 19 20 20 20 20 20 20  |r4,r5}....      |
00000780  20 20 4d 4f 56 20 20 20  20 20 72 30 2c 23 36 0d  |  MOV     r0,#6.|
00000790  03 a2 1d 20 20 20 20 20  20 20 20 a4 61 64 72 6c  |...        .adrl|
000007a0  28 72 34 2c 72 77 5f 62  61 73 65 29 0d 03 ac 1e  |(r4,rw_base)....|
000007b0  20 20 20 20 20 20 20 20  a4 61 64 72 6c 28 72 35  |        .adrl(r5|
000007c0  2c 72 77 5f 6c 69 6d 69  74 29 0d 03 b6 1c 20 20  |,rw_limit)....  |
000007d0  20 20 20 20 20 20 53 55  42 20 20 20 20 20 72 33  |      SUB     r3|
000007e0  2c 72 35 2c 72 34 0d 03  c0 27 20 20 20 20 20 20  |,r5,r4...'      |
000007f0  20 20 41 44 44 20 20 20  20 20 72 33 2c 72 33 2c  |  ADD     r3,r3,|
00000800  23 28 77 6b 20 80 20 26  30 30 46 46 29 0d 03 ca  |#(wk . &00FF)...|
00000810  27 20 20 20 20 20 20 20  20 41 44 44 20 20 20 20  |'        ADD    |
00000820  20 72 33 2c 72 33 2c 23  28 77 6b 20 80 20 26 46  | r3,r3,#(wk . &F|
00000830  46 30 30 29 0d 03 d4 20  20 20 20 20 20 20 20 20  |F00)...         |
00000840  53 57 49 20 20 20 20 20  22 58 4f 53 5f 4d 6f 64  |SWI     "XOS_Mod|
00000850  75 6c 65 22 0d 03 de 1a  20 20 20 20 20 20 20 20  |ule"....        |
00000860  4d 4f 56 20 20 20 20 20  72 39 2c 72 31 32 0d 03  |MOV     r9,r12..|
00000870  e8 1c 20 20 20 20 20 20  20 20 53 54 52 20 20 20  |..        STR   |
00000880  20 20 72 32 2c 5b 72 31  32 5d 0d 03 f2 1a 20 20  |  r2,[r12]....  |
00000890  20 20 20 20 20 20 4d 4f  56 20 20 20 20 20 72 31  |      MOV     r1|
000008a0  32 2c 72 32 0d 03 fc 1c  20 20 20 20 20 20 20 20  |2,r2....        |
000008b0  53 54 52 20 20 20 20 20  72 33 2c 5b 72 31 32 5d  |STR     r3,[r12]|
000008c0  0d 04 06 1c 20 20 20 20  20 20 20 20 41 44 52 20  |....        ADR |
000008d0  20 20 20 20 72 30 2c 73  74 75 62 73 0d 04 10 25  |    r0,stubs...%|
000008e0  20 20 20 20 20 20 20 20  a4 61 64 72 6c 28 72 31  |        .adrl(r1|
000008f0  34 2c 6b 65 72 6e 65 6c  5f 76 65 63 74 6f 72 73  |4,kernel_vectors|
00000900  29 0d 04 1a 1f 20 20 20  20 20 20 20 20 53 54 52  |)....        STR|
00000910  20 20 20 20 20 72 31 34  2c 5b 72 30 2c 23 34 5d  |     r14,[r0,#4]|
00000920  0d 04 24 29 20 20 20 20  20 20 20 20 a4 61 64 72  |..$)        .adr|
00000930  6c 28 72 31 34 2c 6b 65  72 6e 65 6c 5f 76 65 63  |l(r14,kernel_vec|
00000940  74 6f 72 73 5f 65 6e 64  29 0d 04 2e 1f 20 20 20  |tors_end)....   |
00000950  20 20 20 20 20 53 54 52  20 20 20 20 20 72 31 34  |     STR     r14|
00000960  2c 5b 72 30 2c 23 38 5d  0d 04 38 25 20 20 20 20  |,[r0,#8]..8%    |
00000970  20 20 20 20 a4 61 64 72  6c 28 72 31 34 2c 6b 65  |    .adrl(r14,ke|
00000980  72 6e 65 6c 5f 73 74 61  74 69 63 73 29 0d 04 42  |rnel_statics)..B|
00000990  20 20 20 20 20 20 20 20  20 53 54 52 20 20 20 20  |         STR    |
000009a0  20 72 31 34 2c 5b 72 30  2c 23 31 32 5d 0d 04 4c  | r14,[r0,#12]..L|
000009b0  29 20 20 20 20 20 20 20  20 a4 61 64 72 6c 28 72  |)        .adrl(r|
000009c0  31 34 2c 6b 65 72 6e 65  6c 5f 73 74 61 74 69 63  |14,kernel_static|
000009d0  73 5f 65 6e 64 29 0d 04  56 20 20 20 20 20 20 20  |s_end)..V       |
000009e0  20 20 53 54 52 20 20 20  20 20 72 31 34 2c 5b 72  |  STR     r14,[r|
000009f0  30 2c 23 31 36 5d 0d 04  60 23 20 20 20 20 20 20  |0,#16]..`#      |
00000a00  20 20 a4 61 64 72 6c 28  72 31 34 2c 63 6c 69 62  |  .adrl(r14,clib|
00000a10  5f 76 65 63 74 6f 72 73  29 0d 04 6a 20 20 20 20  |_vectors)..j    |
00000a20  20 20 20 20 20 53 54 52  20 20 20 20 20 72 31 34  |     STR     r14|
00000a30  2c 5b 72 30 2c 23 32 34  5d 0d 04 74 27 20 20 20  |,[r0,#24]..t'   |
00000a40  20 20 20 20 20 a4 61 64  72 6c 28 72 31 34 2c 63  |     .adrl(r14,c|
00000a50  6c 69 62 5f 76 65 63 74  6f 72 73 5f 65 6e 64 29  |lib_vectors_end)|
00000a60  0d 04 7e 20 20 20 20 20  20 20 20 20 53 54 52 20  |..~         STR |
00000a70  20 20 20 20 72 31 34 2c  5b 72 30 2c 23 32 38 5d  |    r14,[r0,#28]|
00000a80  0d 04 88 23 20 20 20 20  20 20 20 20 a4 61 64 72  |...#        .adr|
00000a90  6c 28 72 31 34 2c 63 6c  69 62 5f 73 74 61 74 69  |l(r14,clib_stati|
00000aa0  63 73 29 0d 04 92 20 20  20 20 20 20 20 20 20 53  |cs)...         S|
00000ab0  54 52 20 20 20 20 20 72  31 34 2c 5b 72 30 2c 23  |TR     r14,[r0,#|
00000ac0  33 32 5d 0d 04 9c 27 20  20 20 20 20 20 20 20 a4  |32]...'        .|
00000ad0  61 64 72 6c 28 72 31 34  2c 63 6c 69 62 5f 73 74  |adrl(r14,clib_st|
00000ae0  61 74 69 63 73 5f 65 6e  64 29 0d 04 a6 20 20 20  |atics_end)...   |
00000af0  20 20 20 20 20 20 53 54  52 20 20 20 20 20 72 31  |      STR     r1|
00000b00  34 2c 5b 72 30 2c 23 33  36 5d 0d 04 b0 1e 20 20  |4,[r0,#36]....  |
00000b10  20 20 20 20 20 20 41 44  44 20 20 20 20 20 72 31  |      ADD     r1|
00000b20  2c 72 31 32 2c 23 77 6b  0d 04 ba 1d 20 20 20 20  |,r12,#wk....    |
00000b30  20 20 20 20 41 44 44 20  20 20 20 20 72 32 2c 72  |    ADD     r2,r|
00000b40  31 32 2c 72 33 0d 04 c4  1d 20 20 20 20 20 20 20  |12,r3....       |
00000b50  20 a4 61 64 72 6c 28 72  33 2c 7a 69 5f 62 61 73  | .adrl(r3,zi_bas|
00000b60  65 29 0d 04 ce 1d 20 20  20 20 20 20 20 20 4d 4f  |e)....        MO|
00000b70  56 20 20 20 20 20 72 36  2c 23 34 3c 3c 31 36 0d  |V     r6,#4<<16.|
00000b80  04 d8 33 20 20 20 20 20  20 20 20 53 57 49 20 20  |..3        SWI  |
00000b90  20 20 20 22 58 53 68 61  72 65 64 43 4c 69 62 72  |   "XSharedCLibr|
00000ba0  61 72 79 5f 4c 69 62 49  6e 69 74 4d 6f 64 75 6c  |ary_LibInitModul|
00000bb0  65 22 0d 04 e2 25 20 20  20 20 20 20 20 20 41 44  |e"...%        AD|
00000bc0  44 20 20 20 20 20 72 38  2c 72 31 2c 23 4c 69 62  |D     r8,r1,#Lib|
00000bd0  5f 4f 66 66 73 65 74 0d  04 ec 1e 20 20 20 20 20  |_Offset....     |
00000be0  20 20 20 4c 44 4d 49 41  20 20 20 72 38 2c 7b 72  |   LDMIA   r8,{r|
00000bf0  37 2c 72 38 7d 0d 04 f6  1f 20 20 20 20 20 20 20  |7,r8}....       |
00000c00  20 53 54 4d 49 42 20 20  20 72 31 32 2c 7b 72 37  | STMIB   r12,{r7|
00000c10  2c 72 38 7d 0d 05 00 28  20 20 20 20 20 20 20 20  |,r8}...(        |
00000c20  41 44 52 20 20 20 20 20  72 30 2c 6b 65 72 6e 65  |ADR     r0,kerne|
00000c30  6c 5f 69 6e 69 74 5f 62  6c 6f 63 6b 0d 05 0a 23  |l_init_block...#|
00000c40  20 20 20 20 20 20 20 20  41 44 52 20 20 20 20 20  |        ADR     |
00000c50  72 31 34 2c 6d 6f 64 75  6c 65 5f 62 61 73 65 0d  |r14,module_base.|
00000c60  05 14 1c 20 20 20 20 20  20 20 20 53 54 52 20 20  |...        STR  |
00000c70  20 20 20 72 31 34 2c 5b  72 30 5d 0d 05 1e 21 20  |   r14,[r0]...! |
00000c80  20 20 20 20 20 20 20 41  44 52 20 20 20 20 20 72  |       ADR     r|
00000c90  31 34 2c 72 74 73 5f 62  6c 6f 63 6b 0d 05 28 1f  |14,rts_block..(.|
00000ca0  20 20 20 20 20 20 20 20  53 54 52 20 20 20 20 20  |        STR     |
00000cb0  72 31 34 2c 5b 72 30 2c  23 34 5d 0d 05 32 25 20  |r14,[r0,#4]..2% |
00000cc0  20 20 20 20 20 20 20 41  44 52 20 20 20 20 20 72  |       ADR     r|
00000cd0  31 34 2c 72 74 73 5f 62  6c 6f 63 6b 5f 65 6e 64  |14,rts_block_end|
00000ce0  0d 05 3c 1f 20 20 20 20  20 20 20 20 53 54 52 20  |..<.        STR |
00000cf0  20 20 20 20 72 31 34 2c  5b 72 30 2c 23 38 5d 0d  |    r14,[r0,#8].|
00000d00  05 46 1d 20 20 20 20 20  20 20 20 41 44 52 20 20  |.F.        ADR  |
00000d10  20 20 20 72 31 34 2c 63  5f 73 74 72 0d 05 50 24  |   r14,c_str..P$|
00000d20  20 20 20 20 20 20 20 20  53 54 52 20 20 20 20 20  |        STR     |
00000d30  72 31 34 2c 72 74 73 5f  62 6c 6f 63 6b 2b 31 32  |r14,rts_block+12|
00000d40  0d 05 5a 23 20 20 20 20  20 20 20 20 42 4c 20 20  |..Z#        BL  |
00000d50  20 20 20 20 63 61 6c 6c  5f 6d 6f 64 75 6c 65 69  |    call_modulei|
00000d60  6e 69 74 0d 05 64 1e 20  20 20 20 20 20 20 20 53  |nit..d.        S|
00000d70  54 4d 44 42 20 20 20 28  73 70 29 21 2c 7b 72 39  |TMDB   (sp)!,{r9|
00000d80  7d 0d 05 6e 32 20 20 20  20 20 20 20 20 42 4c 20  |}..n2        BL |
00000d90  20 20 20 20 20 63 6c 69  62 5f 76 65 63 74 6f 72  |     clib_vector|
00000da0  73 2b 5f 63 6c 69 62 5f  69 6e 69 74 69 61 6c 69  |s+_clib_initiali|
00000db0  61 73 65 0d 05 78 1e 20  20 20 20 20 20 20 20 4c  |ase..x.        L|
00000dc0  44 4d 49 41 20 20 20 28  73 70 29 21 2c 7b 72 32  |DMIA   (sp)!,{r2|
00000dd0  7d 0d 05 82 25 20 20 20  20 20 20 20 20 41 44 44  |}...%        ADD|
00000de0  20 20 20 20 20 72 30 2c  73 70 2c 23 28 31 30 2d  |     r0,sp,#(10-|
00000df0  37 2b 32 29 2a 34 0d 05  8c 1e 20 20 20 20 20 20  |7+2)*4....      |
00000e00  20 20 4c 44 4d 49 41 20  20 20 72 30 2c 7b 72 30  |  LDMIA   r0,{r0|
00000e10  2c 72 31 7d 0d 05 96 1d  20 20 20 20 20 20 20 20  |,r1}....        |
00000e20  42 4c 20 20 20 20 20 20  75 73 65 72 5f 69 6e 69  |BL      user_ini|
00000e30  74 0d 05 a0 21 20 20 20  20 20 20 20 20 4d 4f 56  |t...!        MOV|
00000e40  20 20 20 20 20 73 6c 2c  73 70 2c 4c 53 52 20 23  |     sl,sp,LSR #|
00000e50  32 30 0d 05 aa 21 20 20  20 20 20 20 20 20 4d 4f  |20...!        MO|
00000e60  56 20 20 20 20 20 73 6c  2c 73 6c 2c 4c 53 4c 20  |V     sl,sl,LSL |
00000e70  23 32 30 0d 05 b4 21 20  20 20 20 20 20 20 20 4c  |#20...!        L|
00000e80  44 4d 49 41 20 20 20 28  73 70 29 21 2c 7b 72 34  |DMIA   (sp)!,{r4|
00000e90  2c 72 35 7d 0d 05 be 1e  20 20 20 20 20 20 20 20  |,r5}....        |
00000ea0  53 54 4d 49 41 20 20 20  73 6c 2c 7b 72 34 2c 72  |STMIA   sl,{r4,r|
00000eb0  35 7d 0d 05 c8 25 20 20  20 20 20 20 20 20 4c 44  |5}...%        LD|
00000ec0  4d 49 41 20 20 20 28 73  70 29 21 2c 7b 72 37 2d  |MIA   (sp)!,{r7-|
00000ed0  72 31 31 2c 6c 72 7d 0d  05 d2 19 20 20 20 20 20  |r11,lr}....     |
00000ee0  20 20 20 43 4d 50 20 20  20 20 20 72 30 2c 23 30  |   CMP     r0,#0|
00000ef0  0d 05 dc 1f 20 20 20 20  20 20 20 20 42 49 43 45  |....        BICE|
00000f00  51 53 20 20 70 63 2c 6c  72 2c 23 76 62 69 74 0d  |QS  pc,lr,#vbit.|
00000f10  05 e6 1e 20 20 20 20 20  20 20 20 84 52 53 20 20  |...        .RS  |
00000f20  20 20 70 63 2c 6c 72 2c  23 76 62 69 74 0d 05 f0  |  pc,lr,#vbit...|
00000f30  04 0d 05 fa 14 2e 63 61  6c 6c 5f 6d 6f 64 75 6c  |......call_modul|
00000f40  65 69 6e 69 74 0d 06 04  1e 20 20 20 20 20 20 20  |einit....       |
00000f50  20 53 54 4d 44 42 20 20  20 28 73 70 29 21 2c 7b  | STMDB   (sp)!,{|
00000f60  6c 72 7d 0d 06 0e 35 20  20 20 20 20 20 20 20 42  |lr}...5        B|
00000f70  20 20 20 20 20 20 20 6b  65 72 6e 65 6c 5f 76 65  |       kernel_ve|
00000f80  63 74 6f 72 73 2b 5f 6b  65 72 6e 65 6c 5f 6d 6f  |ctors+_kernel_mo|
00000f90  64 75 6c 65 69 6e 69 74  0d 06 18 04 0d 06 22 0e  |duleinit......".|
00000fa0  2e 74 65 72 6d 69 6e 61  74 65 0d 06 2c 25 20 20  |.terminate..,%  |
00000fb0  20 20 20 20 20 20 53 54  4d 44 42 20 20 20 28 73  |      STMDB   (s|
00000fc0  70 29 21 2c 7b 72 37 2d  72 31 31 2c 6c 72 7d 0d  |p)!,{r7-r11,lr}.|
00000fd0  06 36 21 20 20 20 20 20  20 20 20 4d 4f 56 20 20  |.6!        MOV  |
00000fe0  20 20 20 73 6c 2c 73 70  2c 4c 53 52 20 23 32 30  |   sl,sp,LSR #20|
00000ff0  0d 06 40 21 20 20 20 20  20 20 20 20 4d 4f 56 20  |..@!        MOV |
00001000  20 20 20 20 73 6c 2c 73  6c 2c 4c 53 4c 20 23 32  |    sl,sl,LSL #2|
00001010  30 0d 06 4a 1e 20 20 20  20 20 20 20 20 4c 44 4d  |0..J.        LDM|
00001020  49 41 20 20 20 73 6c 2c  7b 72 34 2c 72 35 7d 0d  |IA   sl,{r4,r5}.|
00001030  06 54 1a 20 20 20 20 20  20 20 20 4d 4f 56 20 20  |.T.        MOV  |
00001040  20 20 20 72 30 2c 72 31  32 0d 06 5e 1d 20 20 20  |   r0,r12..^.   |
00001050  20 20 20 20 20 4c 44 52  20 20 20 20 20 72 31 32  |     LDR     r12|
00001060  2c 5b 72 31 32 5d 0d 06  68 21 20 20 20 20 20 20  |,[r12]..h!      |
00001070  20 20 4c 44 4d 49 42 20  20 20 72 31 32 2c 7b 72  |  LDMIB   r12,{r|
00001080  31 31 2c 72 31 32 7d 0d  06 72 20 20 20 20 20 20  |11,r12}..r      |
00001090  20 20 20 53 54 4d 49 41  20 20 20 73 6c 2c 7b 72  |   STMIA   sl,{r|
000010a0  31 31 2c 72 31 32 7d 0d  06 7c 28 20 20 20 20 20  |11,r12}..|(     |
000010b0  20 20 20 41 44 44 20 20  20 20 20 73 6c 2c 73 6c  |   ADD     sl,sl|
000010c0  2c 23 53 4c 5f 4c 69 62  5f 4f 66 66 73 65 74 0d  |,#SL_Lib_Offset.|
000010d0  06 86 19 20 20 20 20 20  20 20 20 4d 4f 56 20 20  |...        MOV  |
000010e0  20 20 20 66 70 2c 23 30  0d 06 90 35 20 20 20 20  |   fp,#0...5    |
000010f0  20 20 20 20 42 4c 20 20  20 20 20 20 63 6c 69 62  |    BL      clib|
00001100  5f 76 65 63 74 6f 72 73  2b 5f 63 6c 69 62 5f 66  |_vectors+_clib_f|
00001110  69 6e 61 6c 69 73 65 6d  6f 64 75 6c 65 0d 06 9a  |inalisemodule...|
00001120  21 20 20 20 20 20 20 20  20 4d 4f 56 20 20 20 20  |!        MOV    |
00001130  20 73 6c 2c 73 70 2c 4c  53 52 20 23 32 30 0d 06  | sl,sp,LSR #20..|
00001140  a4 21 20 20 20 20 20 20  20 20 4d 4f 56 20 20 20  |.!        MOV   |
00001150  20 20 73 6c 2c 73 6c 2c  4c 53 4c 20 23 32 30 0d  |  sl,sl,LSL #20.|
00001160  06 ae 1e 20 20 20 20 20  20 20 20 53 54 4d 49 41  |...        STMIA|
00001170  20 20 20 73 6c 2c 7b 72  34 2c 72 35 7d 0d 06 b8  |   sl,{r4,r5}...|
00001180  26 20 20 20 20 20 20 20  20 4c 44 4d 49 41 20 20  |&        LDMIA  |
00001190  20 28 73 70 29 21 2c 7b  72 37 2d 72 31 31 2c 70  | (sp)!,{r7-r11,p|
000011a0  63 7d 5e 0d 06 c2 04 0d  06 cc 0c 2e 73 77 69 63  |c}^.........swic|
000011b0  6f 64 65 0d 06 d6 24 20  20 20 20 20 20 20 20 53  |ode...$        S|
000011c0  54 4d 44 42 20 20 20 28  73 70 29 21 2c 7b 72 30  |TMDB   (sp)!,{r0|
000011d0  2d 72 39 2c 6c 72 7d 0d  06 e0 21 20 20 20 20 20  |-r9,lr}...!     |
000011e0  20 20 20 4d 4f 56 20 20  20 20 20 73 6c 2c 73 70  |   MOV     sl,sp|
000011f0  2c 4c 53 52 20 23 32 30  0d 06 ea 21 20 20 20 20  |,LSR #20...!    |
00001200  20 20 20 20 4d 4f 56 20  20 20 20 20 73 6c 2c 73  |    MOV     sl,s|
00001210  6c 2c 4c 53 4c 20 23 32  30 0d 06 f4 1e 20 20 20  |l,LSL #20....   |
00001220  20 20 20 20 20 4c 44 4d  49 41 20 20 20 73 6c 2c  |     LDMIA   sl,|
00001230  7b 72 38 2c 72 39 7d 0d  06 fe 1a 20 20 20 20 20  |{r8,r9}....     |
00001240  20 20 20 4d 4f 56 20 20  20 20 20 72 30 2c 72 31  |   MOV     r0,r1|
00001250  31 0d 07 08 19 20 20 20  20 20 20 20 20 4d 4f 56  |1....        MOV|
00001260  20 20 20 20 20 72 31 2c  73 70 0d 07 12 1a 20 20  |     r1,sp....  |
00001270  20 20 20 20 20 20 4d 4f  56 20 20 20 20 20 72 32  |      MOV     r2|
00001280  2c 72 31 32 0d 07 1c 1d  20 20 20 20 20 20 20 20  |,r12....        |
00001290  4c 44 52 20 20 20 20 20  72 31 32 2c 5b 72 31 32  |LDR     r12,[r12|
000012a0  5d 0d 07 26 21 20 20 20  20 20 20 20 20 4c 44 4d  |]..&!        LDM|
000012b0  49 42 20 20 20 72 31 32  2c 7b 72 31 31 2c 72 31  |IB   r12,{r11,r1|
000012c0  32 7d 0d 07 30 20 20 20  20 20 20 20 20 20 53 54  |2}..0         ST|
000012d0  4d 49 41 20 20 20 73 6c  2c 7b 72 31 31 2c 72 31  |MIA   sl,{r11,r1|
000012e0  32 7d 0d 07 3a 28 20 20  20 20 20 20 20 20 41 44  |2}..:(        AD|
000012f0  44 20 20 20 20 20 73 6c  2c 73 6c 2c 23 53 4c 5f  |D     sl,sl,#SL_|
00001300  4c 69 62 5f 4f 66 66 73  65 74 0d 07 44 19 20 20  |Lib_Offset..D.  |
00001310  20 20 20 20 20 20 4d 4f  56 20 20 20 20 20 66 70  |      MOV     fp|
00001320  2c 23 30 0d 07 4e 1c 20  20 20 20 20 20 20 20 42  |,#0..N.        B|
00001330  4c 20 20 20 20 20 20 75  73 65 72 5f 73 77 69 0d  |L      user_swi.|
00001340  07 58 21 20 20 20 20 20  20 20 20 4d 4f 56 20 20  |.X!        MOV  |
00001350  20 20 20 73 6c 2c 73 70  2c 4c 53 52 20 23 32 30  |   sl,sp,LSR #20|
00001360  0d 07 62 21 20 20 20 20  20 20 20 20 4d 4f 56 20  |..b!        MOV |
00001370  20 20 20 20 73 6c 2c 73  6c 2c 4c 53 4c 20 23 32  |    sl,sl,LSL #2|
00001380  30 0d 07 6c 1e 20 20 20  20 20 20 20 20 53 54 4d  |0..l.        STM|
00001390  49 41 20 20 20 73 6c 2c  7b 72 38 2c 72 39 7d 0d  |IA   sl,{r8,r9}.|
000013a0  07 76 19 20 20 20 20 20  20 20 20 43 4d 50 20 20  |.v.        CMP  |
000013b0  20 20 20 72 30 2c 23 30  0d 07 80 1b 20 20 20 20  |   r0,#0....    |
000013c0  20 20 20 20 53 54 52 4e  45 20 20 20 72 30 2c 5b  |    STRNE   r0,[|
000013d0  73 70 5d 0d 07 8a 24 20  20 20 20 20 20 20 20 4c  |sp]...$        L|
000013e0  44 4d 49 41 20 20 20 28  73 70 29 21 2c 7b 72 30  |DMIA   (sp)!,{r0|
000013f0  2d 72 39 2c 6c 72 7d 0d  07 94 1f 20 20 20 20 20  |-r9,lr}....     |
00001400  20 20 20 42 49 43 45 51  53 20 20 70 63 2c 6c 72  |   BICEQS  pc,lr|
00001410  2c 23 76 62 69 74 0d 07  9e 1e 20 20 20 20 20 20  |,#vbit....      |
00001420  20 20 84 52 53 20 20 20  20 70 63 2c 6c 72 2c 23  |  .RS    pc,lr,#|
00001430  76 62 69 74 0d 07 a8 04  0d 07 b2 0e 2e 75 73 65  |vbit.........use|
00001440  72 5f 69 6e 69 74 0d 07  bc 24 20 20 20 20 20 20  |r_init...$      |
00001450  20 20 53 54 4d 44 42 20  20 20 28 73 70 29 21 2c  |  STMDB   (sp)!,|
00001460  7b 72 34 2d 72 39 2c 6c  72 7d 0d 07 c6 19 20 20  |{r4-r9,lr}....  |
00001470  20 20 20 20 20 20 4d 4f  56 20 20 20 20 20 72 30  |      MOV     r0|
00001480  2c 23 30 0d 07 d0 05 5d  0d 07 da 15 e3 20 73 77  |,#0....]..... sw|
00001490  69 3d 30 20 b8 20 6d 61  78 5f 73 77 69 0d 07 e4  |i=0 . max_swi...|
000014a0  11 20 e7 20 64 65 66 28  73 77 69 29 20 8c 0d 07  |. . def(swi) ...|
000014b0  ee 27 20 20 6b 3d a0 28  22 46 4e 73 77 69 22 2b  |.'  k=.("FNswi"+|
000014c0  c2 22 30 22 2b c3 73 77  69 2c 32 29 2b 22 5f 69  |."0"+.swi,2)+"_i|
000014d0  6e 69 74 22 29 0d 07 f8  10 20 20 5b 4f 50 54 20  |nit")....  [OPT |
000014e0  70 61 73 73 25 0d 08 02  19 20 20 20 20 20 20 20  |pass%....       |
000014f0  20 43 4d 50 20 20 20 20  20 72 30 2c 23 30 0d 08  | CMP     r0,#0..|
00001500  0c 25 20 20 20 20 20 20  20 20 4c 44 4d 4e 45 49  |.%        LDMNEI|
00001510  41 20 28 73 70 29 21 2c  7b 72 34 2d 72 39 2c 70  |A (sp)!,{r4-r9,p|
00001520  63 7d 5e 0d 08 16 07 20  20 5d 0d 08 20 06 20 cd  |c}^....  ].. . .|
00001530  0d 08 2a 05 ed 0d 08 34  0e 5b 4f 50 54 20 70 61  |..*....4.[OPT pa|
00001540  73 73 25 0d 08 3e 19 20  20 20 20 20 20 20 20 4d  |ss%..>.        M|
00001550  4f 56 20 20 20 20 20 72  30 2c 23 30 0d 08 48 25  |OV     r0,#0..H%|
00001560  20 20 20 20 20 20 20 20  4c 44 4d 49 41 20 20 20  |        LDMIA   |
00001570  28 73 70 29 21 2c 7b 72  34 2d 72 39 2c 70 63 7d  |(sp)!,{r4-r9,pc}|
00001580  5e 0d 08 52 04 0d 08 5c  0d 2e 75 73 65 72 5f 73  |^..R...\..user_s|
00001590  77 69 0d 08 66 24 20 20  20 20 20 20 20 20 53 54  |wi..f$        ST|
000015a0  4d 44 42 20 20 20 28 73  70 29 21 2c 7b 72 38 2c  |MDB   (sp)!,{r8,|
000015b0  72 39 2c 6c 72 7d 0d 08  70 21 20 20 20 20 20 20  |r9,lr}..p!      |
000015c0  20 20 43 4d 50 20 20 20  20 20 72 30 2c 23 6d 61  |  CMP     r0,#ma|
000015d0  78 5f 73 77 69 2b 31 0d  08 7a 23 20 20 20 20 20  |x_swi+1..z#     |
000015e0  20 20 20 41 44 44 43 43  20 20 20 70 63 2c 70 63  |   ADDCC   pc,pc|
000015f0  2c 72 30 2c 4c 53 4c 20  23 33 0d 08 84 1f 20 20  |,r0,LSL #3....  |
00001600  20 20 20 20 20 20 42 20  20 20 20 20 20 20 75 6e  |      B       un|
00001610  6b 6e 6f 77 6e 5f 73 77  69 0d 08 8e 05 5d 0d 08  |known_swi....]..|
00001620  98 15 e3 20 73 77 69 3d  30 20 b8 20 6d 61 78 5f  |... swi=0 . max_|
00001630  73 77 69 0d 08 a2 0f 20  5b 4f 50 54 20 70 61 73  |swi.... [OPT pas|
00001640  73 25 0d 08 ac 1c 20 20  20 20 20 20 20 20 42 4c  |s%....        BL|
00001650  20 20 20 20 20 20 73 77  69 28 73 77 69 29 0d 08  |      swi(swi)..|
00001660  b6 1c 20 20 20 20 20 20  20 20 42 20 20 20 20 20  |..        B     |
00001670  20 20 64 6f 6e 65 5f 73  77 69 0d 08 c0 06 20 5d  |  done_swi.... ]|
00001680  0d 08 ca 05 ed 0d 08 d4  0e 5b 4f 50 54 20 70 61  |.........[OPT pa|
00001690  73 73 25 0d 08 de 0d 2e  64 6f 6e 65 5f 73 77 69  |ss%.....done_swi|
000016a0  0d 08 e8 24 20 20 20 20  20 20 20 20 4c 44 4d 49  |...$        LDMI|
000016b0  41 20 20 20 28 73 70 29  21 2c 7b 72 38 2c 72 39  |A   (sp)!,{r8,r9|
000016c0  2c 70 63 7d 0d 08 f2 10  2e 75 6e 6b 6e 6f 77 6e  |,pc}.....unknown|
000016d0  5f 73 77 69 0d 08 fc 22  20 20 20 20 20 20 20 20  |_swi..."        |
000016e0  41 44 52 20 20 20 20 20  72 30 2c 62 61 64 5f 73  |ADR     r0,bad_s|
000016f0  77 69 5f 65 72 72 0d 09  06 24 20 20 20 20 20 20  |wi_err...$      |
00001700  20 20 4c 44 4d 49 41 20  20 20 28 73 70 29 21 2c  |  LDMIA   (sp)!,|
00001710  7b 72 38 2d 72 39 2c 6c  72 7d 0d 09 10 1e 20 20  |{r8-r9,lr}....  |
00001720  20 20 20 20 20 20 84 52  53 20 20 20 20 70 63 2c  |      .RS    pc,|
00001730  6c 72 2c 23 76 62 69 74  0d 09 1a 10 2e 62 61 64  |lr,#vbit.....bad|
00001740  5f 73 77 69 5f 65 72 72  0d 09 24 18 20 20 20 20  |_swi_err..$.    |
00001750  20 20 20 20 44 43 44 20  20 20 20 20 26 31 45 36  |    DCD     &1E6|
00001760  0d 09 2e 2b 20 20 20 20  20 20 20 20 45 51 55 53  |...+        EQUS|
00001770  20 20 20 20 22 55 6e 6b  6e 6f 77 6e 20 53 43 4c  |    "Unknown SCL|
00001780  20 6f 70 65 72 61 74 69  6f 6e 22 0d 09 38 15 20  | operation"..8. |
00001790  20 20 20 20 20 20 20 44  43 42 20 20 20 20 20 30  |       DCB     0|
000017a0  0d 09 42 11 20 20 20 20  20 20 20 20 41 4c 49 47  |..B.        ALIG|
000017b0  4e 0d 09 4c 04 0d 09 56  15 2e 73 74 75 62 73 20  |N..L...V..stubs |
000017c0  20 44 43 44 20 20 20 20  20 31 0d 09 60 16 20 20  | DCD     1..`.  |
000017d0  20 20 20 20 20 20 a4 74  61 62 6c 65 28 31 36 29  |      .table(16)|
000017e0  0d 09 6a 15 20 20 20 20  20 20 20 20 44 43 44 20  |..j.        DCD |
000017f0  20 20 20 20 32 0d 09 74  16 20 20 20 20 20 20 20  |    2..t.       |
00001800  20 a4 74 61 62 6c 65 28  31 36 29 0d 09 7e 16 20  | .table(16)..~. |
00001810  20 20 20 20 20 20 20 44  43 44 20 20 20 20 20 2d  |       DCD     -|
00001820  31 0d 09 88 04 0d 09 92  16 2e 6b 65 72 6e 65 6c  |1.........kernel|
00001830  5f 69 6e 69 74 5f 62 6c  6f 63 6b 0d 09 9c 16 20  |_init_block.... |
00001840  20 20 20 20 20 20 20 a4  74 61 62 6c 65 28 31 32  |       .table(12|
00001850  29 0d 09 a6 04 0d 09 b0  0e 2e 72 74 73 5f 62 6c  |).........rts_bl|
00001860  6f 63 6b 0d 09 ba 2b 20  20 20 20 20 20 20 20 44  |ock...+        D|
00001870  43 44 20 20 20 20 20 72  74 73 5f 62 6c 6f 63 6b  |CD     rts_block|
00001880  5f 65 6e 64 2d 72 74 73  5f 62 6c 6f 63 6b 0d 09  |_end-rts_block..|
00001890  c4 16 20 20 20 20 20 20  20 20 a4 74 61 62 6c 65  |..        .table|
000018a0  28 32 30 29 0d 09 ce 12  2e 72 74 73 5f 62 6c 6f  |(20).....rts_blo|
000018b0  63 6b 5f 65 6e 64 0d 09  d8 04 0d 09 e2 1a 2e 63  |ck_end.........c|
000018c0  5f 73 74 72 20 20 45 51  55 53 20 20 20 20 22 43  |_str  EQUS    "C|
000018d0  22 2b bd 30 0d 09 ec 11  20 20 20 20 20 20 20 20  |"+.0....        |
000018e0  41 4c 49 47 4e 0d 09 f6  04 0d 0a 00 20 2e 6b 65  |ALIGN....... .ke|
000018f0  72 6e 65 6c 5f 76 65 63  74 6f 72 73 20 a4 74 61  |rnel_vectors .ta|
00001900  62 6c 65 28 34 38 2a 34  29 0d 0a 0a 17 2e 6b 65  |ble(48*4).....ke|
00001910  72 6e 65 6c 5f 76 65 63  74 6f 72 73 5f 65 6e 64  |rnel_vectors_end|
00001920  0d 0a 14 04 0d 0a 1e 1f  2e 63 6c 69 62 5f 76 65  |.........clib_ve|
00001930  63 74 6f 72 73 20 a4 74  61 62 6c 65 28 31 38 33  |ctors .table(183|
00001940  2a 34 29 0d 0a 28 15 2e  63 6c 69 62 5f 76 65 63  |*4)..(..clib_vec|
00001950  74 6f 72 73 5f 65 6e 64  0d 0a 32 05 5d 0d 0a 3c  |tors_end..2.]..<|
00001960  43 f4 20 53 74 61 74 69  63 73 20 77 69 6c 6c 20  |C. Statics will |
00001970  62 65 20 63 6f 70 69 65  64 20 69 6e 74 6f 20 77  |be copied into w|
00001980  6f 72 6b 73 70 61 63 65  2c 20 62 75 74 20 77 65  |orkspace, but we|
00001990  20 68 61 76 65 20 74 6f  20 70 72 65 74 65 6e 64  | have to pretend|
000019a0  0d 0a 46 27 f4 20 74 68  65 79 27 72 65 20 66 75  |..F'. they're fu|
000019b0  72 74 68 65 72 20 6f 6e  20 69 6e 20 74 68 65 20  |rther on in the |
000019c0  6d 6f 64 75 6c 65 21 0d  0a 50 0e 72 77 5f 62 61  |module!..P.rw_ba|
000019d0  73 65 3d 50 25 0d 0a 5a  15 6b 65 72 6e 65 6c 5f  |se=P%..Z.kernel_|
000019e0  73 74 61 74 69 63 73 3d  50 25 0d 0a 64 2a 6b 65  |statics=P%..d*ke|
000019f0  72 6e 65 6c 5f 73 74 61  74 69 63 73 5f 65 6e 64  |rnel_statics_end|
00001a00  3d 6b 65 72 6e 65 6c 5f  73 74 61 74 69 63 73 2b  |=kernel_statics+|
00001a10  26 33 31 43 0d 0a 6e 23  63 6c 69 62 5f 73 74 61  |&31C..n#clib_sta|
00001a20  74 69 63 73 3d 6b 65 72  6e 65 6c 5f 73 74 61 74  |tics=kernel_stat|
00001a30  69 63 73 5f 65 6e 64 0d  0a 78 26 63 6c 69 62 5f  |ics_end..x&clib_|
00001a40  73 74 61 74 69 63 73 5f  65 6e 64 3d 63 6c 69 62  |statics_end=clib|
00001a50  5f 73 74 61 74 69 63 73  2b 26 42 34 38 0d 0a 82  |_statics+&B48...|
00001a60  1c 7a 69 5f 62 61 73 65  3d 63 6c 69 62 5f 73 74  |.zi_base=clib_st|
00001a70  61 74 69 63 73 5f 65 6e  64 0d 0a 8c 18 72 77 5f  |atics_end....rw_|
00001a80  6c 69 6d 69 74 3d 7a 69  5f 62 61 73 65 2b 26 34  |limit=zi_base+&4|
00001a90  30 0d 0a 96 0e 5b 4f 50  54 20 70 61 73 73 25 0d  |0....[OPT pass%.|
00001aa0  0a a0 0d 2e 6e 75 6c 6c  5f 73 77 69 0d 0a aa 19  |....null_swi....|
00001ab0  20 20 20 20 20 20 20 20  4d 4f 56 20 20 20 20 20  |        MOV     |
00001ac0  70 63 2c 6c 72 0d 0a b4  05 5d 0d 0a be 15 e3 20  |pc,lr....]..... |
00001ad0  73 77 69 3d 30 20 b8 20  6d 61 78 5f 73 77 69 0d  |swi=0 . max_swi.|
00001ae0  0a c8 11 20 e7 20 64 65  66 28 73 77 69 29 20 8c  |... . def(swi) .|
00001af0  0d 0a d2 11 20 20 73 77  69 28 73 77 69 29 3d 50  |....  swi(swi)=P|
00001b00  25 0d 0a dc 27 20 20 6b  3d a0 28 22 46 4e 73 77  |%...'  k=.("FNsw|
00001b10  69 22 2b c2 22 30 22 2b  c3 73 77 69 2c 32 29 2b  |i"+."0"+.swi,2)+|
00001b20  22 5f 63 6f 64 65 22 29  0d 0a e6 06 20 cc 0d 0a  |"_code").... ...|
00001b30  f0 17 20 20 73 77 69 28  73 77 69 29 3d 6e 75 6c  |..  swi(swi)=nul|
00001b40  6c 5f 73 77 69 0d 0a fa  06 20 cd 0d 0b 04 05 ed  |l_swi.... ......|
00001b50  0d 0b 0e 0b ed 20 70 61  73 73 25 0d 0b 18 2b c8  |..... pass%...+.|
00001b60  99 20 22 4f 53 5f 46 69  6c 65 22 2c 31 30 2c 22  |. "OS_File",10,"|
00001b70  53 43 4c 6d 6f 64 22 2c  26 46 46 41 2c 2c 63 6f  |SCLmod",&FFA,,co|
00001b80  64 65 25 2c 4f 25 0d 0b  22 05 e0 0d 0b 2c 05 3a  |de%,O%.."....,.:|
00001b90  0d 0b 36 13 dd 20 a4 74  61 62 6c 65 28 73 69 7a  |..6.. .table(siz|
00001ba0  65 25 29 0d 0b 40 0e c8  95 20 73 69 7a 65 25 3e  |e%)..@... size%>|
00001bb0  30 0d 0b 4a 0a 20 21 4f  25 3d 30 0d 0b 54 0a 20  |0..J. !O%=0..T. |
00001bc0  4f 25 2b 3d 34 0d 0b 5e  0a 20 50 25 2b 3d 34 0d  |O%+=4..^. P%+=4.|
00001bd0  0b 68 0d 20 73 69 7a 65  25 2d 3d 34 0d 0b 72 05  |.h. size%-=4..r.|
00001be0  ce 0d 0b 7c 06 3d 30 0d  0b 86 05 3a 0d 0b 90 0e  |...|.=0....:....|
00001bf0  dd 20 a4 77 6b 28 72 65  71 29 0d 0b 9a 0b 77 6b  |. .wk(req)....wk|
00001c00  2b 3d 72 65 71 0d 0b a4  0b 3d 77 6b 2d 72 65 71  |+=req....=wk-req|
00001c10  0d 0b ae 05 3a 0d 0b b8  0d dd 20 a4 6c 63 28 61  |....:..... .lc(a|
00001c20  24 29 0d 0b c2 0c ea 20  62 24 2c 69 2c 63 0d 0b  |$)..... b$,i,c..|
00001c30  cc 11 e3 20 69 3d 31 20  b8 20 a9 28 61 24 29 0d  |... i=1 . .(a$).|
00001c40  0b d6 0e 20 63 3d 97 c1  61 24 2c 69 29 0d 0b e0  |... c=..a$,i)...|
00001c50  1e 20 e7 20 63 3e 3d 97  22 41 22 20 80 20 63 3c  |. . c>=."A" . c<|
00001c60  3d 97 22 5a 22 20 63 2b  3d 33 32 0d 0b ea 0b 20  |=."Z" c+=32.... |
00001c70  62 24 2b 3d bd 63 0d 0b  f4 05 ed 0d 0b fe 07 3d  |b$+=.c.........=|
00001c80  62 24 0d 0c 08 05 3a 0d  0c 12 14 dd 20 a4 61 64  |b$....:..... .ad|
00001c90  72 6c 28 72 65 67 2c 6f  66 66 29 0d 0c 1c 14 6f  |rl(reg,off)....o|
00001ca0  66 66 3d 28 6f 66 66 2d  28 50 25 2b 38 29 29 0d  |ff=(off-(P%+8)).|
00001cb0  0c 26 0e 5b 4f 50 54 20  70 61 73 73 25 0d 0c 30  |.&.[OPT pass%..0|
00001cc0  27 20 20 20 20 20 20 20  20 41 44 44 20 20 20 20  |'        ADD    |
00001cd0  20 72 65 67 2c 70 63 2c  23 28 6f 66 66 20 80 20  | reg,pc,#(off . |
00001ce0  26 46 46 29 0d 0c 3a 2a  20 20 20 20 20 20 20 20  |&FF)..:*        |
00001cf0  41 44 44 20 20 20 20 20  72 65 67 2c 72 65 67 2c  |ADD     reg,reg,|
00001d00  23 28 6f 66 66 20 80 20  26 46 46 30 30 29 0d 0c  |#(off . &FF00)..|
00001d10  44 05 5d 0d 0c 4e 06 3d  30 0d ff                 |D.]..N.=0..|
00001d1b