summaryrefslogtreecommitdiff
path: root/Debug/Matris.lst
blob: 7883b0039e1dad4396a92fc8b40f6de7d943fc13 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE    1

************ OBJECT LISTING ************

FILE NAME: G:\Casio SDK\Projekte\Matris\Matris.c

SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

        Matris.c     1    /*Matris by Casimo is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported 
                         +License.
        Matris.c     2    see here: http://creativecommons.org/licenses/by-nc-sa/3.0/
        Matris.c     3    */
        Matris.c     4    #include "stdio.h"
        Matris.c     5    #include "key.h"
        Matris.c     6    #include "draw.h"
        Matris.c     7    #include "global.h"
        Matris.c     8    
        Matris.c     9    short*APP_EnableRestart()
P   00000000              _APP_EnableRestart:              ; function: APP_EnableRestart
                                                           ; frame size=0
        Matris.c    10    {
        Matris.c    11            unsigned int ea;
        Matris.c    12            unsigned int j;
        Matris.c    13            short*pEnableRestartFlag;
        Matris.c    14            ea = *(unsigned int*)0x8001007C;
    00000000 D541                   MOV.L       L685+4,R5  ; H'8001007C
    00000002 6452                   MOV.L       @R5,R4
        Matris.c    15            ea += 0x0490*4;
    00000004 937E                   MOV.W       L685,R3    ; H'1240
    00000006 343C                   ADD         R3,R4
        Matris.c    16            if ( ea < 0x8001007C ) return 0;
    00000008 3452                   CMP/HS      R5,R4
    0000000A 8B19                   BF          L673
        Matris.c    17            if ( ea > 0x81000000 ) return 0;
    0000000C D73F                   MOV.L       L685+8,R7  ; H'81000000
    0000000E 3476                   CMP/HI      R7,R4
    00000010 8916                   BT          L673
        Matris.c    18            ea = *(unsigned int*)( ea );
    00000012 6442                   MOV.L       @R4,R4
        Matris.c    19            if ( ea < 0x8001007C ) return 0;
    00000014 3452                   CMP/HS      R5,R4
    00000016 8B13                   BF          L673
        Matris.c    20            if ( ea > 0x81000000 ) return 0;
    00000018 3476                   CMP/HI      R7,R4
    0000001A 8911                   BT          L673
        Matris.c    21            j = *(unsigned char*)( ea + 1 );
    0000001C 8441                   MOV.B       @(1,R4),R0
        Matris.c    22            j *= 4;
        Matris.c    23            ea = ( ea + j + 4 ) & 0xFFFFFFFC;
    0000001E E3FC                   MOV         #-4,R3
    00000020 660C                   EXTU.B      R0,R6
    00000022 4608                   SHLL2       R6
    00000024 346C                   ADD         R6,R4
    00000026 7404                   ADD         #4,R4
    00000028 2439                   AND         R3,R4
        Matris.c    24            if ( ea < 0x8001007C ) return 0;
    0000002A 3452                   CMP/HS      R5,R4
    0000002C 8B08                   BF          L673
        Matris.c    25            if ( ea > 0x81000000 ) return 0;
    0000002E 3476                   CMP/HI      R7,R4
    00000030 8906                   BT          L673
        Matris.c    26            pEnableRestartFlag = (short*)(*( unsigned int*)( ea ) + 8 );




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE    2


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    00000032 6442                   MOV.L       @R4,R4
        Matris.c    27            if ( ( (unsigned int)pEnableRestartFlag & 0xFF000000 ) != 0x88000000 ) return 0;
    00000034 D236                   MOV.L       L685+12,R2 ; H'FF000000
    00000036 7408                   ADD         #8,R4
    00000038 D336                   MOV.L       L685+16,R3 ; H'88000000
    0000003A 2249                   AND         R4,R2
    0000003C 3230                   CMP/EQ      R3,R2
    0000003E 8901                   BT          L509
    00000040              L673:                             
    00000040 000B                   RTS
    00000042 E000                   MOV         #0,R0
    00000044              L509:                             
        Matris.c    28            if ( pEnableRestartFlag ) *pEnableRestartFlag = 1;
    00000044 2448                   TST         R4,R4
    00000046 8D02                   BT/S        L510
        Matris.c    29            return pEnableRestartFlag;
    00000048 6043                   MOV         R4,R0
    0000004A E201                   MOV         #1,R2
    0000004C 2421                   MOV.W       R2,@R4
    0000004E              L510:                             
        Matris.c    30    }
    0000004E              L503:                             
    0000004E 000B                   RTS
    00000050 0009                   NOP
        Matris.c    31    
        Matris.c    32    //restart addin after return 1
        Matris.c    33    
        Matris.c    34    static unsigned int seed = 123456789;
        Matris.c    35    unsigned int kiss()
    00000052              _kiss:                           ; function: kiss
                                                           ; frame size=4
    00000052 4F12                   STS.L       MACL,@-R15
        Matris.c    36    {
        Matris.c    37            // interner Zustand
        Matris.c    38            static unsigned int y = 362436000;
        Matris.c    39            static unsigned int z = 521288629;
        Matris.c    40            static unsigned int c = 7654321;
        Matris.c    41     
        Matris.c    42            unsigned long t;
        Matris.c    43            
        Matris.c    44            // Linearer Kongruenzgenerator
        Matris.c    45            seed = 69069 * seed + 12345;
    00000054 D630                   MOV.L       L685+20,R6 ; __$seed
    00000056 D331                   MOV.L       L685+24,R3 ; H'00010DCD
    00000058 6262                   MOV.L       @R6,R2
    0000005A 0237                   MUL.L       R3,R2
    0000005C 9153                   MOV.W       L685+2,R1  ; H'3039
    0000005E 031A                   STS         MACL,R3
        Matris.c    46            
        Matris.c    47            // Xorshift
        Matris.c    48            y ^= y << 13;
    00000060 D42F                   MOV.L       L685+28,R4 ; __$y$306
    00000062 331C                   ADD         R1,R3
        Matris.c    49            y ^= y >> 17;
        Matris.c    50            y ^= y << 5;
        Matris.c    51            
        Matris.c    52            // Multiply-with-carry




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE    3


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

        Matris.c    53            t = (unsigned long)698769069 * z + c;
    00000064 D72F                   MOV.L       L685+32,R7 ; __$z$307
    00000066 2632                   MOV.L       R3,@R6
    00000068 6242                   MOV.L       @R4,R2
    0000006A E30D                   MOV         #13,R3
    0000006C 6042                   MOV.L       @R4,R0
    0000006E 423D                   SHLD        R3,R2
    00000070 202A                   XOR         R2,R0
    00000072 6203                   MOV         R0,R2
    00000074 4229                   SHLR16      R2
    00000076 4201                   SHLR        R2
    00000078 202A                   XOR         R2,R0
    0000007A 6203                   MOV         R0,R2
    0000007C 4208                   SHLL2       R2
    0000007E 4208                   SHLL2       R2
    00000080 4200                   SHLL        R2
    00000082 202A                   XOR         R2,R0
    00000084 2402                   MOV.L       R0,@R4
    00000086 D228                   MOV.L       L685+36,R2 ; H'29A65EAD
    00000088 6072                   MOV.L       @R7,R0
    0000008A 0027                   MUL.L       R2,R0
    0000008C D027                   MOV.L       L685+40,R0 ; __$c$308
    0000008E 051A                   STS         MACL,R5
    00000090 6102                   MOV.L       @R0,R1
        Matris.c    54            c = t >> 32;
    00000092 E2E0                   MOV         #-32,R2
    00000094 351C                   ADD         R1,R5
    00000096 6353                   MOV         R5,R3
    00000098 432D                   SHLD        R2,R3
    0000009A 6203                   MOV         R0,R2
    0000009C 2232                   MOV.L       R3,@R2
        Matris.c    55            z = (unsigned int) t;
        Matris.c    56             
        Matris.c    57            return seed + y + z;
    0000009E 6153                   MOV         R5,R1
    000000A0 2752                   MOV.L       R5,@R7
    000000A2 6342                   MOV.L       @R4,R3
    000000A4 6062                   MOV.L       @R6,R0
    000000A6 303C                   ADD         R3,R0
    000000A8 301C                   ADD         R1,R0
        Matris.c    58    }
    000000AA 000B                   RTS
    000000AC 4F16                   LDS.L       @R15+,MACL
        Matris.c    59    
        Matris.c    60    void seedkiss()
    000000AE              _seedkiss:                       ; function: seedkiss
                                                           ; frame size=4
    000000AE 4F22                   STS.L       PR,@-R15
        Matris.c    61    {
        Matris.c    62            seed = RTC_GetTicks();
    000000B0 D31F                   MOV.L       L685+44,R3 ; _RTC_GetTicks
    000000B2 430B                   JSR         @R3
    000000B4 0009                   NOP
    000000B6 D218                   MOV.L       L685+20,R2 ; __$seed
        Matris.c    63    }
    000000B8 4F26                   LDS.L       @R15+,PR
    000000BA 000B                   RTS




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE    4


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    000000BC 2202                   MOV.L       R0,@R2
        Matris.c    64    
        Matris.c    65    //kiss is a random number generator
        Matris.c    66    
        Matris.c    67    char *Disp_GetVRAMPtr(void);
        Matris.c    68    void DrawLineVRAM(int x1, int y1, int x2, int y2);
        Matris.c    69    void AllClr_DD(void);
        Matris.c    70    void AllClr_VRAM(void);
        Matris.c    71    void AllClr_DDVRAM(void);
        Matris.c    72    void locate(int x, int y);
        Matris.c    73    void Print(const unsigned char *str);
        Matris.c    74    int Timer_Install(int TimerID, void (*handler)(void), int delay);
        Matris.c    75    int Timer_Uninstall(int TimerID);
        Matris.c    76    int Timer_Start(int TimerID);
        Matris.c    77    void App_RUN_MAT();
        Matris.c    78    
        Matris.c    79    //some prototypes
        Matris.c    80    
        Matris.c    81    char swit;
        Matris.c    82    
        Matris.c    83    char pause = False;
        Matris.c    84    //pause the game
        Matris.c    85    
        Matris.c    86    char quit = False;
        Matris.c    87    
        Matris.c    88    char levelchanged = False;
        Matris.c    89    //has the level changed during two actions?
        Matris.c    90    
        Matris.c    91    char exit = False;
        Matris.c    92    
        Matris.c    93    char ready;
        Matris.c    94    
        Matris.c    95    char onoff = True;
        Matris.c    96    //used for timers
        Matris.c    97    
        Matris.c    98    char canswap;
        Matris.c    99    //brick already swapped?
        Matris.c   100    
        Matris.c   101    char slowyposdown = 0;
        Matris.c   102    
        Matris.c   103    char connected;
        Matris.c   104    //multiplayer activated?
        Matris.c   105    
        Matris.c   106    unsigned char receiveline = 0;
        Matris.c   107    unsigned char sendline     = 0;
        Matris.c   108    //what to send or receive?
        Matris.c   109    
        Matris.c   110    char cantrans = False;
        Matris.c   111    //allowed to transfer?
        Matris.c   112    
        Matris.c   113    //taken from MonochromeLib by PierrotLL
        Matris.c   114    
        Matris.c   115    void drawbuffer(char *buffer)
    000000BE              _drawbuffer:                     ; function: drawbuffer
                                                           ; frame size=16
    000000BE E107                   MOV         #7,R1
    000000C0 D61C                   MOV.L       L685+48,R6 ; H'B4000000




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE    5


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    000000C2 E004                   MOV         #4,R0
    000000C4 D51C                   MOV.L       L685+52,R5 ; H'B4010000
    000000C6 2FD6                   MOV.L       R13,@-R15
    000000C8 2FC6                   MOV.L       R12,@-R15
        Matris.c   116    {
        Matris.c   117            char *LCD_register_selector = (char*)0xB4000000, *LCD_data_register = (char*)0xB4010000;
        Matris.c   118            int i, j;
        Matris.c   119            for(i=0 ; i<64 ; i++)
    000000CA EC00                   MOV         #0,R12
    000000CC 2FA6                   MOV.L       R10,@-R15
    000000CE 6DC3                   MOV         R12,R13
    000000D0 2F96                   MOV.L       R9,@-R15
    000000D2 EA10                   MOV         #16,R10
    000000D4 E940                   MOV         #64,R9
    000000D6              L512:                             
        Matris.c   120            {
        Matris.c   121                    *LCD_register_selector = 4;
        Matris.c   122                    *LCD_data_register = i|192;
    000000D6 E3C0                   MOV         #-64,R3
    000000D8 2600                   MOV.B       R0,@R6
        Matris.c   123                    *LCD_register_selector = 4;
        Matris.c   124                    *LCD_data_register = 0;
        Matris.c   125                    *LCD_register_selector = 7;
        Matris.c   126                    for(j=0 ; j<16 ; j++) *LCD_data_register = *buffer++;
    000000DA 67A3                   MOV         R10,R7
    000000DC 23DB                   OR          R13,R3
    000000DE 2530                   MOV.B       R3,@R5
    000000E0 2600                   MOV.B       R0,@R6
    000000E2 25C0                   MOV.B       R12,@R5
    000000E4 2610                   MOV.B       R1,@R6
    000000E6              L514:                             
    000000E6 77FE                   ADD         #-2,R7
    000000E8 6344                   MOV.B       @R4+,R3
    000000EA 2778                   TST         R7,R7
    000000EC 2530                   MOV.B       R3,@R5
    000000EE 6344                   MOV.B       @R4+,R3
    000000F0 8FF9                   BF/S        L514
    000000F2 2530                   MOV.B       R3,@R5
    000000F4 7D01                   ADD         #1,R13
    000000F6 3D93                   CMP/GE      R9,R13
    000000F8 8BED                   BF          L512
        Matris.c   127            }
        Matris.c   128    }
    000000FA 69F6                   MOV.L       @R15+,R9
    000000FC 6AF6                   MOV.L       @R15+,R10
    000000FE 6CF6                   MOV.L       @R15+,R12
    00000100 000B                   RTS
    00000102 6DF6                   MOV.L       @R15+,R13
    00000104              L685:                             
    00000104 1240                   .DATA.W     H'1240
    00000106 3039                   .DATA.W     H'3039
    00000108 8001007C               .DATA.L     H'8001007C
    0000010C 81000000               .DATA.L     H'81000000
    00000110 FF000000               .DATA.L     H'FF000000
    00000114 88000000               .DATA.L     H'88000000
    00000118 <00000000>             .DATA.L     __$seed
    0000011C 00010DCD               .DATA.L     H'00010DCD




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE    6


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    00000120 <00000000>             .DATA.L     __$y$306
    00000124 <00000000>             .DATA.L     __$z$307
    00000128 29A65EAD               .DATA.L     H'29A65EAD
    0000012C <00000000>             .DATA.L     __$c$308
    00000130 <00000000>             .DATA.L     _RTC_GetTicks
    00000134 B4000000               .DATA.L     H'B4000000
    00000138 B4010000               .DATA.L     H'B4010000
        Matris.c   129    
        Matris.c   130    void RestGray(void)
    0000013C              _RestGray:                       ; function: RestGray
                                                           ; frame size=8
    0000013C 2FE6                   MOV.L       R14,@-R15
    0000013E 4F22                   STS.L       PR,@-R15
        Matris.c   131    {
        Matris.c   132            drawbuffer(pScreen);
    00000140 DE30                   MOV.L       L686+8,R14 ; _pScreen
    00000142 BFBC                   BSR         _drawbuffer
    00000144 64E2                   MOV.L       @R14,R4
        Matris.c   133            drawbuffer(pScreen + 1024);
    00000146 9359                   MOV.W       L686,R3    ; H'0400
    00000148 64E2                   MOV.L       @R14,R4
    0000014A BFB8                   BSR         _drawbuffer
    0000014C 343C                   ADD         R3,R4
        Matris.c   134            drawbuffer(pScreen + 2048);
    0000014E 9356                   MOV.W       L686+2,R3  ; H'0800
    00000150 64E2                   MOV.L       @R14,R4
    00000152 343C                   ADD         R3,R4
    00000154 4F26                   LDS.L       @R15+,PR
    00000156 AFB2                   BRA         _drawbuffer
    00000158 6EF6                   MOV.L       @R15+,R14
        Matris.c   135    }
        Matris.c   136    
        Matris.c   137    
        Matris.c   138    void Disconnect()
    0000015A              _Disconnect:                     ; function: Disconnect
                                                           ; frame size=4
    0000015A 4F22                   STS.L       PR,@-R15
        Matris.c   139    {
        Matris.c   140            Serial_Close(1);
    0000015C D32A                   MOV.L       L686+12,R3 ; _Serial_Close
    0000015E 430B                   JSR         @R3
    00000160 E401                   MOV         #1,R4
        Matris.c   141            connected = False;
    00000162 E200                   MOV         #0,R2
    00000164 D329                   MOV.L       L686+16,R3 ; _connected
        Matris.c   142    }
    00000166 4F26                   LDS.L       @R15+,PR
    00000168 000B                   RTS
    0000016A 2320                   MOV.B       R2,@R3
        Matris.c   143    
        Matris.c   144    void TeacherMode()
    0000016C              _TeacherMode:                    ; function: TeacherMode
                                                           ; frame size=4
    0000016C 4F22                   STS.L       PR,@-R15
        Matris.c   145    {
        Matris.c   146            Timer_Uninstall(6);
    0000016E D328                   MOV.L       L686+20,R3 ; _Timer_Uninstall




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE    7


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    00000170 430B                   JSR         @R3
    00000172 E406                   MOV         #6,R4
        Matris.c   147            Timer_Uninstall(7);
    00000174 D226                   MOV.L       L686+20,R2 ; _Timer_Uninstall
    00000176 420B                   JSR         @R2
    00000178 E407                   MOV         #7,R4
        Matris.c   148            Disconnect();
    0000017A BFEE                   BSR         _Disconnect
    0000017C 0009                   NOP
        Matris.c   149    
        Matris.c   150            App_RUN_MAT();
    0000017E D225                   MOV.L       L686+24,R2 ; _App_RUN_MAT
    00000180 422B                   JMP         @R2
    00000182 4F26                   LDS.L       @R15+,PR
        Matris.c   151    }
        Matris.c   152    
        Matris.c   153    int round(float num)
    00000184              _round:                          ; function: round
                                                           ; frame size=32
                                                           ; used runtime library name:
                                                           ; __addd, __stod, __dtoi
    00000184 4F22                   STS.L       PR,@-R15
        Matris.c   154    {
        Matris.c   155            return (int) (num + 0.5);
    00000186 6043                   MOV         R4,R0
    00000188 D323                   MOV.L       L686+28,R3 ; __stod
    0000018A 7FF0                   ADD         #-16,R15
    0000018C 430B                   JSR         @R3
    0000018E 2FF6                   MOV.L       R15,@-R15
    00000190 D123                   MOV.L       L686+36,R1 ; __addd
    00000192 E200                   MOV         #0,R2
    00000194 2F26                   MOV.L       R2,@-R15
    00000196 D221                   MOV.L       L686+32,R2 ; H'3FE00000
    00000198 2F26                   MOV.L       R2,@-R15
    0000019A 63F3                   MOV         R15,R3
    0000019C 7310                   ADD         #16,R3
    0000019E 410B                   JSR         @R1
    000001A0 2F36                   MOV.L       R3,@-R15
    000001A2 D220                   MOV.L       L686+40,R2 ; __dtoi
    000001A4 420B                   JSR         @R2
    000001A6 0009                   NOP
        Matris.c   156    }
    000001A8 4F26                   LDS.L       @R15+,PR
    000001AA 000B                   RTS
    000001AC 0009                   NOP
        Matris.c   157    
        Matris.c   158    void clrbuffer(char *buffer)
    000001AE              _clrbuffer:                      ; function: clrbuffer
                                                           ; frame size=0
        Matris.c   159    {
        Matris.c   160            memset(buffer, 0, 3072);
    000001AE 9627                   MOV.W       L686+4,R6  ; H'0C00
    000001B0 D31D                   MOV.L       L686+44,R3 ; _memset
    000001B2 432B                   JMP         @R3
    000001B4 E500                   MOV         #0,R5
        Matris.c   161    }
        Matris.c   162    




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE    8


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

        Matris.c   163    
        Matris.c   164    void CreateBlock()
    000001B6              _CreateBlock:                    ; function: CreateBlock
                                                           ; frame size=8
                                                           ; used runtime library name:
                                                           ; __modlu
    000001B6 2FE6                   MOV.L       R14,@-R15
    000001B8 4F22                   STS.L       PR,@-R15
        Matris.c   165    {
        Matris.c   166            block = nextblock;
        Matris.c   167            canswap = True;
    000001BA EE01                   MOV         #1,R14
    000001BC D21B                   MOV.L       L686+48,R2 ; _nextblock
    000001BE 6320                   MOV.B       @R2,R3
    000001C0 D11B                   MOV.L       L686+52,R1 ; _block
    000001C2 2130                   MOV.B       R3,@R1
    000001C4 D31B                   MOV.L       L686+56,R3 ; _canswap
        Matris.c   168            nextblock = (kiss() % 7) + 1;
    000001C6 BF44                   BSR         _kiss
    000001C8 23E0                   MOV.B       R14,@R3
    000001CA 6103                   MOV         R0,R1
    000001CC D31A                   MOV.L       L686+60,R3 ; __modlu
    000001CE 430B                   JSR         @R3
    000001D0 E007                   MOV         #7,R0
    000001D2 7001                   ADD         #1,R0
    000001D4 D215                   MOV.L       L686+48,R2 ; _nextblock
        Matris.c   169            xpos = 7;
    000001D6 E307                   MOV         #7,R3
    000001D8 D118                   MOV.L       L686+64,R1 ; _xpos
    000001DA 2200                   MOV.B       R0,@R2
    000001DC 2132                   MOV.L       R3,@R1
        Matris.c   170            ypos = 3;
    000001DE E203                   MOV         #3,R2
    000001E0 D317                   MOV.L       L686+68,R3 ; _ypos
        Matris.c   171            dir = 0;
    000001E2 E000                   MOV         #0,R0
        Matris.c   172            left = True;
    000001E4 D118                   MOV.L       L686+76,R1 ; _left
    000001E6 2322                   MOV.L       R2,@R3
    000001E8 D216                   MOV.L       L686+72,R2 ; _dir
    000001EA 2200                   MOV.B       R0,@R2
    000001EC 21E0                   MOV.B       R14,@R1
        Matris.c   173            right = True;
    000001EE D317                   MOV.L       L686+80,R3 ; _right
        Matris.c   174            cantrans = True;
    000001F0 D217                   MOV.L       L686+84,R2 ; _cantrans
    000001F2 23E0                   MOV.B       R14,@R3
    000001F4 22E0                   MOV.B       R14,@R2
        Matris.c   175    }
    000001F6 4F26                   LDS.L       @R15+,PR
    000001F8 000B                   RTS
    000001FA 6EF6                   MOV.L       @R15+,R14
    000001FC              L686:                             
    000001FC 0400                   .DATA.W     H'0400
    000001FE 0800                   .DATA.W     H'0800
    00000200 0C00                   .DATA.W     H'0C00
    00000202 0000                   .DATA.W     0




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE    9


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    00000204 <00000000>             .DATA.L     _pScreen
    00000208 <00000000>             .DATA.L     _Serial_Close
    0000020C <00000000>             .DATA.L     _connected
    00000210 <00000000>             .DATA.L     _Timer_Uninstall
    00000214 <00000000>             .DATA.L     _App_RUN_MAT
    00000218 <00000000>             .DATA.L     __stod
    0000021C 3FE00000               .DATA.L     H'3FE00000
    00000220 <00000000>             .DATA.L     __addd
    00000224 <00000000>             .DATA.L     __dtoi
    00000228 <00000000>             .DATA.L     _memset
    0000022C <00000000>             .DATA.L     _nextblock
    00000230 <00000000>             .DATA.L     _block
    00000234 <00000000>             .DATA.L     _canswap
    00000238 <00000000>             .DATA.L     __modlu
    0000023C <00000000>             .DATA.L     _xpos
    00000240 <00000000>             .DATA.L     _ypos
    00000244 <00000000>             .DATA.L     _dir
    00000248 <00000000>             .DATA.L     _left
    0000024C <00000000>             .DATA.L     _right
    00000250 <00000000>             .DATA.L     _cantrans
        Matris.c   176    
        Matris.c   177    void ResetValues()
    00000254              _ResetValues:                    ; function: ResetValues
                                                           ; frame size=60
                                                           ; used runtime library name:
                                                           ; __modlu
    00000254 2FE6                   MOV.L       R14,@-R15
    00000256 2FD6                   MOV.L       R13,@-R15
    00000258 4F22                   STS.L       PR,@-R15
    0000025A 7FE0                   ADD         #-32,R15
        Matris.c   178    {
        Matris.c   179            int x,y;
        Matris.c   180            
        Matris.c   181            char text[30];
        Matris.c   182    
        Matris.c   183            memset(&changemap, 0, 210);
    0000025C 966E                   MOV.W       L687,R6    ; H'00D2
    0000025E D438                   MOV.L       L687+4,R4  ; _changemap
    00000260 D338                   MOV.L       L687+8,R3  ; _memset
    00000262 430B                   JSR         @R3
    00000264 E500                   MOV         #0,R5
        Matris.c   184            memset(&globalmap, 0, 210);
    00000266 9669                   MOV.W       L687,R6    ; H'00D2
    00000268 D437                   MOV.L       L687+12,R4 ; _globalmap
    0000026A D236                   MOV.L       L687+8,R2  ; _memset
    0000026C 420B                   JSR         @R2
    0000026E E500                   MOV         #0,R5
        Matris.c   185            
        Matris.c   186            ypos = 3;
    00000270 D236                   MOV.L       L687+16,R2 ; _ypos
        Matris.c   187            xpos = 0;
    00000272 E100                   MOV         #0,R1
    00000274 D036                   MOV.L       L687+20,R0 ; _xpos
        Matris.c   188            block = 0;
        Matris.c   189            onoff = True;
    00000276 ED01                   MOV         #1,R13
    00000278 E303                   MOV         #3,R3




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   10


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    0000027A 6E13                   MOV         R1,R14
    0000027C 2232                   MOV.L       R3,@R2
    0000027E 2012                   MOV.L       R1,@R0
    00000280 D334                   MOV.L       L687+24,R3 ; _block
    00000282 23E0                   MOV.B       R14,@R3
    00000284 D234                   MOV.L       L687+28,R2 ; _onoff
    00000286 22D0                   MOV.B       R13,@R2
        Matris.c   190            levelchanged = False;
    00000288 D134                   MOV.L       L687+32,R1 ; _levelchanged
    0000028A 21E0                   MOV.B       R14,@R1
        Matris.c   191            right = True;
    0000028C D334                   MOV.L       L687+36,R3 ; _right
    0000028E 23D0                   MOV.B       R13,@R3
        Matris.c   192            left = True;
    00000290 D234                   MOV.L       L687+40,R2 ; _left
    00000292 22D0                   MOV.B       R13,@R2
        Matris.c   193            hold = 0;
    00000294 D134                   MOV.L       L687+44,R1 ; _hold
    00000296 21E0                   MOV.B       R14,@R1
        Matris.c   194            exit = False;
    00000298 D334                   MOV.L       L687+48,R3 ; _exit
    0000029A 23E0                   MOV.B       R14,@R3
        Matris.c   195            nextdir = Down;
    0000029C D234                   MOV.L       L687+52,R2 ; _nextdir
        Matris.c   196            nextblock = (kiss() % 7) + 1;
    0000029E BED8                   BSR         _kiss
    000002A0 22E0                   MOV.B       R14,@R2
    000002A2 6103                   MOV         R0,R1
    000002A4 D333                   MOV.L       L687+56,R3 ; __modlu
    000002A6 430B                   JSR         @R3
    000002A8 E007                   MOV         #7,R0
    000002AA 7001                   ADD         #1,R0
    000002AC D232                   MOV.L       L687+60,R2 ; _nextblock
        Matris.c   197            CreateBlock();
    000002AE BF82                   BSR         _CreateBlock
    000002B0 2200                   MOV.B       R0,@R2
        Matris.c   198            clrbuffer(pScreen);
    000002B2 D132                   MOV.L       L687+64,R1 ; _pScreen
    000002B4 BF7B                   BSR         _clrbuffer
    000002B6 6412                   MOV.L       @R1,R4
        Matris.c   199            Timer_Uninstall(6);
    000002B8 D231                   MOV.L       L687+68,R2 ; _Timer_Uninstall
    000002BA 420B                   JSR         @R2
    000002BC E406                   MOV         #6,R4
        Matris.c   200            Timer_Uninstall(7);
    000002BE D330                   MOV.L       L687+68,R3 ; _Timer_Uninstall
    000002C0 430B                   JSR         @R3
    000002C2 E407                   MOV         #7,R4
        Matris.c   201            ready = True;
    000002C4 D22F                   MOV.L       L687+72,R2 ; _ready
    000002C6 22D0                   MOV.B       R13,@R2
        Matris.c   202            connected = False;
    000002C8 D32F                   MOV.L       L687+76,R3 ; _connected
        Matris.c   203            
        Matris.c   204            AllClr_DDVRAM();
    000002CA D130                   MOV.L       L687+80,R1 ; _AllClr_DDVRAM
    000002CC 410B                   JSR         @R1




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   11


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    000002CE 23E0                   MOV.B       R14,@R3
        Matris.c   205            
        Matris.c   206            PopUpWin(2);
    000002D0 D32F                   MOV.L       L687+84,R3 ; _PopUpWin
    000002D2 430B                   JSR         @R3
    000002D4 E402                   MOV         #2,R4
        Matris.c   207            sprintf(&text, "Points: %d", points);
    000002D6 D32F                   MOV.L       L687+88,R3 ; _points
    000002D8 D12F                   MOV.L       L687+92,R1 ; L367
    000002DA 6232                   MOV.L       @R3,R2
    000002DC 2F26                   MOV.L       R2,@-R15
    000002DE 2F16                   MOV.L       R1,@-R15
    000002E0 D22E                   MOV.L       L687+96,R2 ; _sprintf
    000002E2 64F3                   MOV         R15,R4
    000002E4 420B                   JSR         @R2
    000002E6 7408                   ADD         #8,R4
        Matris.c   208            locate(3, 3);
    000002E8 D32D                   MOV.L       L687+100,R3; _locate
    000002EA E503                   MOV         #3,R5
    000002EC 430B                   JSR         @R3
    000002EE 6453                   MOV         R5,R4
        Matris.c   209            Print(&text);
    000002F0 D22C                   MOV.L       L687+104,R2; _Print
    000002F2 64F3                   MOV         R15,R4
    000002F4 420B                   JSR         @R2
    000002F6 7408                   ADD         #8,R4
        Matris.c   210            sprintf(&text, "Level: %d", level);
    000002F8 D22B                   MOV.L       L687+108,R2; _level
    000002FA 6320                   MOV.B       @R2,R3
    000002FC D12B                   MOV.L       L687+112,R1; L368
    000002FE 2F36                   MOV.L       R3,@-R15
    00000300 2F16                   MOV.L       R1,@-R15
    00000302 64F3                   MOV         R15,R4
    00000304 D325                   MOV.L       L687+96,R3 ; _sprintf
    00000306 430B                   JSR         @R3
    00000308 7410                   ADD         #16,R4
    0000030A 7F10                   ADD         #16,R15
        Matris.c   211            locate(3, 4);
    0000030C D224                   MOV.L       L687+100,R2; _locate
    0000030E E504                   MOV         #4,R5
    00000310 420B                   JSR         @R2
    00000312 E403                   MOV         #3,R4
        Matris.c   212            Print(&text);
    00000314 D323                   MOV.L       L687+104,R3; _Print
    00000316 430B                   JSR         @R3
    00000318 64F3                   MOV         R15,R4
        Matris.c   213            PutDisp_DD();
    0000031A D225                   MOV.L       L687+116,R2; _PutDisp_DD
    0000031C 420B                   JSR         @R2
    0000031E 0009                   NOP
        Matris.c   214            
        Matris.c   215            points = 0;
    00000320 D31C                   MOV.L       L687+88,R3 ; _points
    00000322 23E2                   MOV.L       R14,@R3
        Matris.c   216            level = 0;
    00000324 D220                   MOV.L       L687+108,R2; _level
    00000326 22E0                   MOV.B       R14,@R2




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   12


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    00000328 DE22                   MOV.L       L687+120,R14; _KeyDown
        Matris.c   217    
        Matris.c   218            while(!KeyDown(31));
    0000032A              L516:                             
    0000032A 4E0B                   JSR         @R14
    0000032C E41F                   MOV         #31,R4
    0000032E 2008                   TST         R0,R0
    00000330 89FB                   BT          L516
        Matris.c   219    }
    00000332 7F20                   ADD         #32,R15
    00000334 4F26                   LDS.L       @R15+,PR
    00000336 6DF6                   MOV.L       @R15+,R13
    00000338 000B                   RTS
    0000033A 6EF6                   MOV.L       @R15+,R14
    0000033C              L687:                             
    0000033C 00D2                   .DATA.W     H'00D2
    0000033E 0000                   .DATA.W     0
    00000340 <00000000>             .DATA.L     _changemap
    00000344 <00000000>             .DATA.L     _memset
    00000348 <00000000>             .DATA.L     _globalmap
    0000034C <00000000>             .DATA.L     _ypos
    00000350 <00000000>             .DATA.L     _xpos
    00000354 <00000000>             .DATA.L     _block
    00000358 <00000000>             .DATA.L     _onoff
    0000035C <00000000>             .DATA.L     _levelchanged
    00000360 <00000000>             .DATA.L     _right
    00000364 <00000000>             .DATA.L     _left
    00000368 <00000000>             .DATA.L     _hold
    0000036C <00000000>             .DATA.L     _exit
    00000370 <00000000>             .DATA.L     _nextdir
    00000374 <00000000>             .DATA.L     __modlu
    00000378 <00000000>             .DATA.L     _nextblock
    0000037C <00000000>             .DATA.L     _pScreen
    00000380 <00000000>             .DATA.L     _Timer_Uninstall
    00000384 <00000000>             .DATA.L     _ready
    00000388 <00000000>             .DATA.L     _connected
    0000038C <00000000>             .DATA.L     _AllClr_DDVRAM
    00000390 <00000000>             .DATA.L     _PopUpWin
    00000394 <00000000>             .DATA.L     _points
    00000398 <00000000>             .DATA.L     L367
    0000039C <00000000>             .DATA.L     _sprintf
    000003A0 <00000000>             .DATA.L     _locate
    000003A4 <00000000>             .DATA.L     _Print
    000003A8 <00000000>             .DATA.L     _level
    000003AC <00000000>             .DATA.L     L368
    000003B0 <00000000>             .DATA.L     _PutDisp_DD
    000003B4 <00000000>             .DATA.L     _KeyDown
        Matris.c   220    
        Matris.c   221    void Transfer()
    000003B8              _Transfer:                       ; function: Transfer
                                                           ; frame size=44
                                                           ; used runtime library name:
                                                           ; __modlu
    000003B8 2FE6                   MOV.L       R14,@-R15
    000003BA 2FD6                   MOV.L       R13,@-R15
    000003BC 2FC6                   MOV.L       R12,@-R15
    000003BE 2FB6                   MOV.L       R11,@-R15




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   13


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    000003C0 2FA6                   MOV.L       R10,@-R15
    000003C2 2F96                   MOV.L       R9,@-R15
    000003C4 2F86                   MOV.L       R8,@-R15
    000003C6 4F22                   STS.L       PR,@-R15
    000003C8 7FF8                   ADD         #-8,R15
        Matris.c   222    {
        Matris.c   223            int xcount, ycount;
        Matris.c   224            char space = kiss() % 10; //where is the hole?
    000003CA BE42                   BSR         _kiss
    000003CC EA0A                   MOV         #10,R10
    000003CE 6103                   MOV         R0,R1
    000003D0 D283                   MOV.L       L688+2,R2  ; __modlu
    000003D2 420B                   JSR         @R2
    000003D4 60A3                   MOV         R10,R0
    000003D6 2F00                   MOV.B       R0,@R15
        Matris.c   225            
        Matris.c   226            if(connected == True)
    000003D8 D382                   MOV.L       L688+6,R3  ; _connected
    000003DA 6030                   MOV.B       @R3,R0
    000003DC 8801                   CMP/EQ      #1,R0
    000003DE 8901                   BT          L689
    000003E0 A093                   BRA         L518
    000003E2 0009                   NOP
    000003E4              L689:                             
        Matris.c   227            {
        Matris.c   228                    if(receiveline > sendline)
    000003E4 DD80                   MOV.L       L688+10,R13; _sendline
    000003E6 DE81                   MOV.L       L688+14,R14; _receiveline
    000003E8 62D0                   MOV.B       @R13,R2
    000003EA 61E0                   MOV.B       @R14,R1
    000003EC 3126                   CMP/HI      R2,R1
    000003EE 8F06                   BF/S        L519
    000003F0 EB00                   MOV         #0,R11
        Matris.c   229                    {
        Matris.c   230                            //if there are lines arriving, but there can be send lines back, erase the lines, 
                         +for example: receiving 3 lines, sending 1 -> 0 are send, 2 are received
        Matris.c   231                            receiveline -= sendline;
    000003F2 62D0                   MOV.B       @R13,R2
    000003F4 61E0                   MOV.B       @R14,R1
    000003F6 3128                   SUB         R2,R1
    000003F8 2E10                   MOV.B       R1,@R14
        Matris.c   232                            sendline = 0;
    000003FA A005                   BRA         L520
    000003FC 2DB0                   MOV.B       R11,@R13
    000003FE              L519:                             
        Matris.c   233                    }
        Matris.c   234                    else
        Matris.c   235                    {
        Matris.c   236                            sendline -= receiveline;
    000003FE 62E0                   MOV.B       @R14,R2
    00000400 61D0                   MOV.B       @R13,R1
    00000402 3128                   SUB         R2,R1
    00000404 2D10                   MOV.B       R1,@R13
        Matris.c   237                            receiveline = 0;
    00000406 2EB0                   MOV.B       R11,@R14
    00000408              L520:                             
        Matris.c   238                    }




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   14


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

        Matris.c   239                    if(sendline > 0)
    00000408 63D0                   MOV.B       @R13,R3
    0000040A 633C                   EXTU.B      R3,R3
    0000040C 4315                   CMP/PL      R3
    0000040E 8B06                   BF          L521
    00000410 DC77                   MOV.L       L688+18,R12; _Serial_BufferedTransmitOneByte
        Matris.c   240                    {
        Matris.c   241                            while(Serial_BufferedTransmitOneByte(sendline) != 0);
    00000412              L522:                             
    00000412 64D0                   MOV.B       @R13,R4
    00000414 4C0B                   JSR         @R12
    00000416 644C                   EXTU.B      R4,R4
    00000418 2008                   TST         R0,R0
    0000041A 8BFA                   BF          L522
        Matris.c   242                            //send the number of lines
        Matris.c   243                            sendline = 0;
    0000041C 2DB0                   MOV.B       R11,@R13
    0000041E              L521:                             
    0000041E 60E0                   MOV.B       @R14,R0
    00000420 600C                   EXTU.B      R0,R0
    00000422 4015                   CMP/PL      R0
    00000424 8B71                   BF          L518
        Matris.c   244                    }
        Matris.c   245                    if(receiveline > 0)
        Matris.c   246                    {
        Matris.c   247                            for(ycount = 0; ycount < 20 - receiveline; ycount++)
    00000426 E714                   MOV         #20,R7
    00000428 DC72                   MOV.L       L688+22,R12; _globalmap
    0000042A 6273                   MOV         R7,R2
    0000042C 3208                   SUB         R0,R2
    0000042E 4215                   CMP/PL      R2
    00000430 8F2A                   BF/S        L525
    00000432 65B3                   MOV         R11,R5
    00000434              L526:                             
        Matris.c   248                            {
        Matris.c   249                                    for(xcount = 0; xcount < 10; xcount++)
    00000434 60B3                   MOV         R11,R0
    00000436 6653                   MOV         R5,R6
    00000438 6353                   MOV         R5,R3
    0000043A 4608                   SHLL2       R6
    0000043C 363C                   ADD         R3,R6
    0000043E 4600                   SHLL        R6
    00000440 36CC                   ADD         R12,R6
    00000442              L528:                             
        Matris.c   250                                    {
        Matris.c   251                                            globalmap[ycount][xcount] = globalmap[ycount + receiveline][xcount
                         +];
    00000442 6103                   MOV         R0,R1
    00000444 63E0                   MOV.B       @R14,R3
    00000446 316C                   ADD         R6,R1
    00000448 633C                   EXTU.B      R3,R3
    0000044A 335C                   ADD         R5,R3
    0000044C 6233                   MOV         R3,R2
    0000044E 4308                   SHLL2       R3
    00000450 332C                   ADD         R2,R3
    00000452 4300                   SHLL        R3
    00000454 33CC                   ADD         R12,R3




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   15


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    00000456 033C                   MOV.B       @(R0,R3),R3
    00000458 2130                   MOV.B       R3,@R1
    0000045A 7001                   ADD         #1,R0
    0000045C 63E0                   MOV.B       @R14,R3
    0000045E 6103                   MOV         R0,R1
    00000460 316C                   ADD         R6,R1
    00000462 633C                   EXTU.B      R3,R3
    00000464 335C                   ADD         R5,R3
    00000466 6233                   MOV         R3,R2
    00000468 4308                   SHLL2       R3
    0000046A 332C                   ADD         R2,R3
    0000046C 4300                   SHLL        R3
    0000046E 33CC                   ADD         R12,R3
    00000470 033C                   MOV.B       @(R0,R3),R3
    00000472 7001                   ADD         #1,R0
    00000474 2130                   MOV.B       R3,@R1
    00000476 30A3                   CMP/GE      R10,R0
    00000478 8BE3                   BF          L528
    0000047A 7501                   ADD         #1,R5
    0000047C 62E0                   MOV.B       @R14,R2
    0000047E 6373                   MOV         R7,R3
    00000480 622C                   EXTU.B      R2,R2
    00000482 3328                   SUB         R2,R3
    00000484 3533                   CMP/GE      R3,R5
    00000486 8BD5                   BF          L526
    00000488              L525:                             
        Matris.c   252                                            //move all lines upwards
        Matris.c   253                                    }
        Matris.c   254                            }
        Matris.c   255                            
        Matris.c   256                            for(ycount = 19; ycount > 19 - receiveline; ycount --)
    00000488 63E0                   MOV.B       @R14,R3
    0000048A E813                   MOV         #19,R8
    0000048C 633C                   EXTU.B      R3,R3
    0000048E 6283                   MOV         R8,R2
    00000490 3238                   SUB         R3,R2
    00000492 3827                   CMP/GT      R2,R8
    00000494 8B38                   BF          L529
    00000496              L530:                             
        Matris.c   257                            {
        Matris.c   258                                    for(xcount = 0; xcount < 10; xcount ++)
    00000496 6DB3                   MOV         R11,R13
    00000498 6983                   MOV         R8,R9
    0000049A 6383                   MOV         R8,R3
    0000049C 4908                   SHLL2       R9
    0000049E 393C                   ADD         R3,R9
    000004A0 4900                   SHLL        R9
    000004A2 39CC                   ADD         R12,R9
    000004A4              L532:                             
        Matris.c   259                                    {
        Matris.c   260                                            globalmap[ycount][xcount] = (xcount == space) ? 0 : (kiss() % 7) +
                         + 1;
    000004A4 63D3                   MOV         R13,R3
    000004A6 339C                   ADD         R9,R3
    000004A8 2F36                   MOV.L       R3,@-R15
    000004AA 62F3                   MOV         R15,R2
    000004AC 7204                   ADD         #4,R2




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   16


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    000004AE 6220                   MOV.B       @R2,R2
    000004B0 1F22                   MOV.L       R2,@(8,R15)
    000004B2 3D20                   CMP/EQ      R2,R13
    000004B4 8B01                   BF          L533
    000004B6 A008                   BRA         L534
    000004B8 E200                   MOV         #0,R2
    000004BA              L533:                             
    000004BA BDCA                   BSR         _kiss
    000004BC 0009                   NOP
    000004BE 6103                   MOV         R0,R1
    000004C0 D347                   MOV.L       L688+2,R3  ; __modlu
    000004C2 430B                   JSR         @R3
    000004C4 E007                   MOV         #7,R0
    000004C6 7001                   ADD         #1,R0
    000004C8 6203                   MOV         R0,R2
    000004CA              L534:                             
    000004CA 7D01                   ADD         #1,R13
    000004CC 63F6                   MOV.L       @R15+,R3
    000004CE 2320                   MOV.B       R2,@R3
    000004D0 63D3                   MOV         R13,R3
    000004D2 339C                   ADD         R9,R3
    000004D4 2F36                   MOV.L       R3,@-R15
    000004D6 52F2                   MOV.L       @(8,R15),R2
    000004D8 3D20                   CMP/EQ      R2,R13
    000004DA 8B01                   BF          L535
    000004DC A008                   BRA         L536
    000004DE E200                   MOV         #0,R2
    000004E0              L535:                             
    000004E0 BDB7                   BSR         _kiss
    000004E2 0009                   NOP
    000004E4 D33E                   MOV.L       L688+2,R3  ; __modlu
    000004E6 6103                   MOV         R0,R1
    000004E8 430B                   JSR         @R3
    000004EA E007                   MOV         #7,R0
    000004EC 7001                   ADD         #1,R0
    000004EE 6203                   MOV         R0,R2
    000004F0              L536:                             
    000004F0 63F6                   MOV.L       @R15+,R3
    000004F2 7D01                   ADD         #1,R13
    000004F4 2320                   MOV.B       R2,@R3
    000004F6 3DA3                   CMP/GE      R10,R13
    000004F8 8BD4                   BF          L532
    000004FA 78FF                   ADD         #-1,R8
    000004FC 63E0                   MOV.B       @R14,R3
    000004FE E213                   MOV         #19,R2
    00000500 633C                   EXTU.B      R3,R3
    00000502 3238                   SUB         R3,R2
    00000504 3827                   CMP/GT      R2,R8
    00000506 89C6                   BT          L530
    00000508              L529:                             
        Matris.c   261                                            //add lines at the bottom
        Matris.c   262                                    }
        Matris.c   263                            }
        Matris.c   264                            receiveline = 0;
    00000508 2EB0                   MOV.B       R11,@R14
    0000050A              L518:                             
        Matris.c   265                    }




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   17


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

        Matris.c   266            }
        Matris.c   267    }
    0000050A 7F08                   ADD         #8,R15
    0000050C 4F26                   LDS.L       @R15+,PR
    0000050E 68F6                   MOV.L       @R15+,R8
    00000510 69F6                   MOV.L       @R15+,R9
    00000512 6AF6                   MOV.L       @R15+,R10
    00000514 6BF6                   MOV.L       @R15+,R11
    00000516 6CF6                   MOV.L       @R15+,R12
    00000518 6DF6                   MOV.L       @R15+,R13
    0000051A 000B                   RTS
    0000051C 6EF6                   MOV.L       @R15+,R14
        Matris.c   268    
        Matris.c   269    void receive(void)
    0000051E              _receive:                        ; function: receive
                                                           ; frame size=8
        Matris.c   270    {
        Matris.c   271            unsigned char receiveadd = 0;
    0000051E E300                   MOV         #0,R3
    00000520 4F22                   STS.L       PR,@-R15
    00000522 7FFC                   ADD         #-4,R15
    00000524 2F30                   MOV.B       R3,@R15
        Matris.c   272            
        Matris.c   273            if(Serial_ReadOneByte(&receiveadd) != 0)
    00000526 D334                   MOV.L       L688+26,R3 ; _Serial_ReadOneByte
    00000528 430B                   JSR         @R3
    0000052A 64F3                   MOV         R15,R4
    0000052C 2008                   TST         R0,R0
    0000052E 8901                   BT          L537
        Matris.c   274            {
        Matris.c   275                    receiveadd = 0;
    00000530 E300                   MOV         #0,R3
    00000532 2F30                   MOV.B       R3,@R15
    00000534              L537:                             
        Matris.c   276            }
        Matris.c   277            
        Matris.c   278            receiveline += (receiveadd > 20)?0:receiveadd;
    00000534 D52D                   MOV.L       L688+14,R5 ; _receiveline
    00000536 E314                   MOV         #20,R3
    00000538 64F0                   MOV.B       @R15,R4
    0000053A 644C                   EXTU.B      R4,R4
    0000053C 3437                   CMP/GT      R3,R4
    0000053E 8B01                   BF          L538
    00000540 A001                   BRA         L539
    00000542 E300                   MOV         #0,R3
    00000544              L538:                             
    00000544 6343                   MOV         R4,R3
    00000546              L539:                             
    00000546 6250                   MOV.B       @R5,R2
    00000548 323C                   ADD         R3,R2
    0000054A 2520                   MOV.B       R2,@R5
        Matris.c   279    }
    0000054C 7F04                   ADD         #4,R15
    0000054E 4F26                   LDS.L       @R15+,PR
    00000550 000B                   RTS
    00000552 0009                   NOP
        Matris.c   280    




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   18


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

        Matris.c   281    void Connect()
    00000554              _Connect:                        ; function: Connect
                                                           ; frame size=24
    00000554 2FE6                   MOV.L       R14,@-R15
    00000556 2FD6                   MOV.L       R13,@-R15
    00000558 4F22                   STS.L       PR,@-R15
    0000055A 7FF4                   ADD         #-12,R15
        Matris.c   282    {
        Matris.c   283            unsigned char connstart = 111;
        Matris.c   284            unsigned char answer;
        Matris.c   285            char open_mode[6];
        Matris.c   286                       
        Matris.c   287             PopUpWin(1);
    0000055C D327                   MOV.L       L688+30,R3 ; _PopUpWin
    0000055E 430B                   JSR         @R3
    00000560 E401                   MOV         #1,R4
        Matris.c   288             locate( 5 , 4);
    00000562 E504                   MOV         #4,R5
    00000564 D226                   MOV.L       L688+34,R2 ; _locate
    00000566 420B                   JSR         @R2
    00000568 E405                   MOV         #5,R4
        Matris.c   289             Print("Connecting...");
    0000056A D426                   MOV.L       L688+38,R4 ; L395
    0000056C D326                   MOV.L       L688+42,R3 ; _Print
    0000056E 430B                   JSR         @R3
    00000570 0009                   NOP
        Matris.c   290             PutDisp_DD();
    00000572 D226                   MOV.L       L688+46,R2 ; _PutDisp_DD
    00000574 420B                   JSR         @R2
    00000576 0009                   NOP
        Matris.c   291               
        Matris.c   292            open_mode[ 0 ] = 0; // always 0
        Matris.c   293            open_mode[ 1 ] = 9; // 0=300, 1=600, 2=1200, 3=2400, 4=4800, 5=9600, 6=19200, 7=38400, 8=57600, 9=
                         +115200 baud
        Matris.c   294            open_mode[ 2 ] = 2; // parity: 0=no; 1=odd; 2=even
        Matris.c   295            open_mode[ 3 ] = 0; // datalength: 0=8 bit; 1=7 bit
        Matris.c   296            open_mode[ 4 ] = 0; // stop bits: 0=one; 1=two
        Matris.c   297            open_mode[ 5 ] = 0; // always 0
        Matris.c   298               
        Matris.c   299            Serial_Open( &open_mode );
    00000578 D325                   MOV.L       L688+50,R3 ; _Serial_Open
    0000057A E400                   MOV         #0,R4
    0000057C 6043                   MOV         R4,R0
    0000057E 80F4                   MOV.B       R0,@(4,R15)
    00000580 E009                   MOV         #9,R0
    00000582 80F5                   MOV.B       R0,@(5,R15)
    00000584 E002                   MOV         #2,R0
    00000586 80F6                   MOV.B       R0,@(6,R15)
    00000588 6043                   MOV         R4,R0
    0000058A 80F7                   MOV.B       R0,@(7,R15)
    0000058C 6043                   MOV         R4,R0
    0000058E 80F8                   MOV.B       R0,@(8,R15)
    00000590 6043                   MOV         R4,R0
    00000592 64F3                   MOV         R15,R4
    00000594 80F9                   MOV.B       R0,@(9,R15)
    00000596 430B                   JSR         @R3
    00000598 7404                   ADD         #4,R4




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   19


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    0000059A DD17                   MOV.L       L688+26,R13; _Serial_ReadOneByte
    0000059C DE14                   MOV.L       L688+18,R14; _Serial_BufferedTransmitOneByte
        Matris.c   300            
        Matris.c   301            do
    0000059E              L540:                             
        Matris.c   302            {
        Matris.c   303                    Serial_BufferedTransmitOneByte(connstart);
    0000059E 4E0B                   JSR         @R14
    000005A0 E46F                   MOV         #111,R4
        Matris.c   304                    Serial_ReadOneByte(&answer);
    000005A2 4D0B                   JSR         @R13
    000005A4 64F3                   MOV         R15,R4
        Matris.c   305            }while(answer != connstart && !KeyDown(47));
    000005A6 60F0                   MOV.B       @R15,R0
    000005A8 600C                   EXTU.B      R0,R0
    000005AA 886F                   CMP/EQ      #111,R0
    000005AC 8904                   BT          L541
    000005AE D219                   MOV.L       L688+54,R2 ; _KeyDown
    000005B0 420B                   JSR         @R2
    000005B2 E42F                   MOV         #47,R4
    000005B4 2008                   TST         R0,R0
    000005B6 89F2                   BT          L540
    000005B8              L541:                             
        Matris.c   306            
        Matris.c   307            if(!KeyDown(47))connected = True;
    000005B8 D216                   MOV.L       L688+54,R2 ; _KeyDown
    000005BA 420B                   JSR         @R2
    000005BC E42F                   MOV         #47,R4
    000005BE 2008                   TST         R0,R0
    000005C0 8B02                   BF          L542
    000005C2 E201                   MOV         #1,R2
    000005C4 D307                   MOV.L       L688+6,R3  ; _connected
    000005C6 2320                   MOV.B       R2,@R3
    000005C8              L542:                             
        Matris.c   308            
        Matris.c   309            if(connected != True)
    000005C8 D106                   MOV.L       L688+6,R1  ; _connected
    000005CA 6010                   MOV.B       @R1,R0
    000005CC 8801                   CMP/EQ      #1,R0
    000005CE 8901                   BT          L543
        Matris.c   310            {
        Matris.c   311                    Disconnect();
    000005D0 BDC3                   BSR         _Disconnect
    000005D2 0009                   NOP
    000005D4              L543:                             
        Matris.c   312            }
        Matris.c   313    }
    000005D4 7F0C                   ADD         #12,R15
    000005D6 4F26                   LDS.L       @R15+,PR
    000005D8 6DF6                   MOV.L       @R15+,R13
    000005DA 000B                   RTS
    000005DC 6EF6                   MOV.L       @R15+,R14
    000005DE              L688:                             
    000005DE 0000                   .DATA.W     0
    000005E0 <00000000>             .DATA.L     __modlu
    000005E4 <00000000>             .DATA.L     _connected
    000005E8 <00000000>             .DATA.L     _sendline




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   20


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    000005EC <00000000>             .DATA.L     _receiveline
    000005F0 <00000000>             .DATA.L     _Serial_BufferedTransmitOneByte
    000005F4 <00000000>             .DATA.L     _globalmap
    000005F8 <00000000>             .DATA.L     _Serial_ReadOneByte
    000005FC <00000000>             .DATA.L     _PopUpWin
    00000600 <00000000>             .DATA.L     _locate
    00000604 <00000000>             .DATA.L     L395
    00000608 <00000000>             .DATA.L     _Print
    0000060C <00000000>             .DATA.L     _PutDisp_DD
    00000610 <00000000>             .DATA.L     _Serial_Open
    00000614 <00000000>             .DATA.L     _KeyDown
        Matris.c   314    
        Matris.c   315    void SwapPieces()
    00000618              _SwapPieces:                     ; function: SwapPieces
                                                           ; frame size=8
                                                           ; used runtime library name:
                                                           ; __modlu
    00000618 4F22                   STS.L       PR,@-R15
    0000061A 7FFC                   ADD         #-4,R15
        Matris.c   316    {
        Matris.c   317            char save;
        Matris.c   318            if(canswap == True)
    0000061C D33F                   MOV.L       L690+2,R3  ; _canswap
    0000061E 6030                   MOV.B       @R3,R0
    00000620 8801                   CMP/EQ      #1,R0
    00000622 8B20                   BF          L544
        Matris.c   319            {
        Matris.c   320                    save = block;
    00000624 D53E                   MOV.L       L690+6,R5  ; _block
    00000626 6150                   MOV.B       @R5,R1
    00000628 D23E                   MOV.L       L690+10,R2 ; _hold
    0000062A 2F10                   MOV.B       R1,@R15
    0000062C 6420                   MOV.B       @R2,R4
    0000062E 614E                   EXTS.B      R4,R1
    00000630 2118                   TST         R1,R1
    00000632 8B0B                   BF          L545
        Matris.c   321                    if(hold == 0)
        Matris.c   322                    {
        Matris.c   323                            block = nextblock;
    00000634 D03C                   MOV.L       L690+14,R0 ; _nextblock
    00000636 6100                   MOV.B       @R0,R1
        Matris.c   324                            nextblock = (kiss() % 7) + 1;
    00000638 BD0B                   BSR         _kiss
    0000063A 2510                   MOV.B       R1,@R5
    0000063C D23B                   MOV.L       L690+18,R2 ; __modlu
    0000063E 6103                   MOV         R0,R1
    00000640 420B                   JSR         @R2
    00000642 E007                   MOV         #7,R0
    00000644 D338                   MOV.L       L690+14,R3 ; _nextblock
    00000646 7001                   ADD         #1,R0
    00000648 A001                   BRA         L546
    0000064A 2300                   MOV.B       R0,@R3
    0000064C              L545:                             
        Matris.c   325                    }
        Matris.c   326                    else
        Matris.c   327                    {
        Matris.c   328                            block = hold;




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   21


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    0000064C 2540                   MOV.B       R4,@R5
    0000064E              L546:                             
        Matris.c   329                    }
        Matris.c   330                    hold = save;
        Matris.c   331                    xpos = 7;
    0000064E E107                   MOV         #7,R1
    00000650 63F0                   MOV.B       @R15,R3
        Matris.c   332                    ypos = 3;
    00000652 E003                   MOV         #3,R0
    00000654 D233                   MOV.L       L690+10,R2 ; _hold
    00000656 2230                   MOV.B       R3,@R2
    00000658 D335                   MOV.L       L690+22,R3 ; _xpos
        Matris.c   333                    dir = 0;
    0000065A E200                   MOV         #0,R2
    0000065C 2312                   MOV.L       R1,@R3
    0000065E D135                   MOV.L       L690+26,R1 ; _ypos
    00000660 2102                   MOV.L       R0,@R1
    00000662 D035                   MOV.L       L690+30,R0 ; _dir
    00000664 2020                   MOV.B       R2,@R0
    00000666              L544:                             
        Matris.c   334            }
        Matris.c   335            canswap = False;
    00000666 E300                   MOV         #0,R3
    00000668 D12C                   MOV.L       L690+2,R1  ; _canswap
    0000066A 2130                   MOV.B       R3,@R1
        Matris.c   336    }
    0000066C 7F04                   ADD         #4,R15
    0000066E 4F26                   LDS.L       @R15+,PR
    00000670 000B                   RTS
    00000672 0009                   NOP
        Matris.c   337    
        Matris.c   338    void Rotate()
    00000674              _Rotate:                         ; function: Rotate
                                                           ; frame size=8
    00000674 2FE6                   MOV.L       R14,@-R15
    00000676 4F22                   STS.L       PR,@-R15
        Matris.c   339    {
        Matris.c   340            if(++dir == 4)
    00000678 DE2F                   MOV.L       L690+30,R14; _dir
    0000067A 60E0                   MOV.B       @R14,R0
    0000067C 7001                   ADD         #1,R0
    0000067E 2E00                   MOV.B       R0,@R14
    00000680 600E                   EXTS.B      R0,R0
    00000682 8804                   CMP/EQ      #4,R0
    00000684 8B01                   BF          L547
        Matris.c   341            {
        Matris.c   342                    dir = 0;
    00000686 E200                   MOV         #0,R2
    00000688 2E20                   MOV.B       R2,@R14
    0000068A              L547:                             
        Matris.c   343            }
        Matris.c   344            
        Matris.c   345            if(DrawSprite() == False)       
    0000068A D32C                   MOV.L       L690+34,R3 ; _DrawSprite
    0000068C 430B                   JSR         @R3
    0000068E 0009                   NOP
    00000690 2008                   TST         R0,R0




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   22


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    00000692 8B07                   BF          L548
        Matris.c   346            {
        Matris.c   347                    dir = (dir == 0)? 3 : dir - 1;
    00000694 64E0                   MOV.B       @R14,R4
    00000696 2448                   TST         R4,R4
    00000698 8B01                   BF          L549
    0000069A A002                   BRA         L550
    0000069C E303                   MOV         #3,R3
    0000069E              L549:                             
    0000069E 6343                   MOV         R4,R3
    000006A0 73FF                   ADD         #-1,R3
    000006A2              L550:                             
    000006A2 2E30                   MOV.B       R3,@R14
    000006A4              L548:                             
        Matris.c   348            }
        Matris.c   349    }
    000006A4 4F26                   LDS.L       @R15+,PR
    000006A6 000B                   RTS
    000006A8 6EF6                   MOV.L       @R15+,R14
        Matris.c   350    
        Matris.c   351    void MoveBlock()
    000006AA              _MoveBlock:                      ; function: MoveBlock
                                                           ; frame size=12
    000006AA 2FE6                   MOV.L       R14,@-R15
    000006AC 2FD6                   MOV.L       R13,@-R15
    000006AE 4F22                   STS.L       PR,@-R15
        Matris.c   352    {
        Matris.c   353            switch (nextdir)
    000006B0 D41F                   MOV.L       L690+22,R4 ; _xpos
    000006B2 DE23                   MOV.L       L690+38,R14; _nextdir
    000006B4 60E0                   MOV.B       @R14,R0
    000006B6 88FF                   CMP/EQ      #-1,R0
    000006B8 8D08                   BT/S        L494
    000006BA ED00                   MOV         #0,R13
    000006BC 8801                   CMP/EQ      #1,R0
    000006BE 890D                   BT          L495
    000006C0 8814                   CMP/EQ      #20,R0
    000006C2 8913                   BT          L496
    000006C4 880A                   CMP/EQ      #10,R0
    000006C6 8915                   BT          L497
    000006C8 A017                   BRA         L551
    000006CA 0009                   NOP
    000006CC              L494:                            ; case label 
        Matris.c   354            {
        Matris.c   355                    case Left   : if(left == True) {xpos ++;} nextdir = Down;break;
    000006CC D31D                   MOV.L       L690+42,R3 ; _left
    000006CE 6030                   MOV.B       @R3,R0
    000006D0 8801                   CMP/EQ      #1,R0
    000006D2 8B11                   BF          L676
    000006D4 6142                   MOV.L       @R4,R1
    000006D6 7101                   ADD         #1,R1
    000006D8 A00E                   BRA         L676
    000006DA 2412                   MOV.L       R1,@R4
    000006DC              L495:                            ; case label 
        Matris.c   356                    case Right: if(right == True){xpos --;}nextdir = Down;break;
    000006DC D31A                   MOV.L       L690+46,R3 ; _right
    000006DE 6030                   MOV.B       @R3,R0




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   23


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    000006E0 8801                   CMP/EQ      #1,R0
    000006E2 8B09                   BF          L676
    000006E4 6142                   MOV.L       @R4,R1
    000006E6 71FF                   ADD         #-1,R1
    000006E8 A006                   BRA         L676
    000006EA 2412                   MOV.L       R1,@R4
    000006EC              L496:                            ; case label 
        Matris.c   357                    case Rot   : Rotate();nextdir = Down;break;
    000006EC BFC2                   BSR         _Rotate
    000006EE 0009                   NOP
    000006F0 A002                   BRA         L676
    000006F2 0009                   NOP
    000006F4              L497:                            ; case label 
        Matris.c   358                    case Swap: SwapPieces();nextdir = Down;break;
    000006F4 BF90                   BSR         _SwapPieces
    000006F6 0009                   NOP
    000006F8              L676:                             
    000006F8 2ED0                   MOV.B       R13,@R14
    000006FA              L551:                             
        Matris.c   359            }
        Matris.c   360            
        Matris.c   361            if(nextdir == Fast && (int)slowyposdown == slowyposdown)
    000006FA 60E0                   MOV.B       @R14,R0
    000006FC 881E                   CMP/EQ      #30,R0
    000006FE 8B08                   BF          L554
    00000700 D312                   MOV.L       L690+50,R3 ; _slowyposdown
    00000702 6230                   MOV.B       @R3,R2
    00000704 6130                   MOV.B       @R3,R1
    00000706 3210                   CMP/EQ      R1,R2
    00000708 8B03                   BF          L554
        Matris.c   362            {
        Matris.c   363                    points += 1;
    0000070A D411                   MOV.L       L690+54,R4 ; _points
    0000070C 6342                   MOV.L       @R4,R3
    0000070E 7301                   ADD         #1,R3
    00000710 2432                   MOV.L       R3,@R4
    00000712              L554:                             
        Matris.c   364            }
        Matris.c   365    }
    00000712 4F26                   LDS.L       @R15+,PR
    00000714 6DF6                   MOV.L       @R15+,R13
    00000716 000B                   RTS
    00000718 6EF6                   MOV.L       @R15+,R14
    0000071A              L690:                             
    0000071A 0000                   .DATA.W     0
    0000071C <00000000>             .DATA.L     _canswap
    00000720 <00000000>             .DATA.L     _block
    00000724 <00000000>             .DATA.L     _hold
    00000728 <00000000>             .DATA.L     _nextblock
    0000072C <00000000>             .DATA.L     __modlu
    00000730 <00000000>             .DATA.L     _xpos
    00000734 <00000000>             .DATA.L     _ypos
    00000738 <00000000>             .DATA.L     _dir
    0000073C <00000000>             .DATA.L     _DrawSprite
    00000740 <00000000>             .DATA.L     _nextdir
    00000744 <00000000>             .DATA.L     _left
    00000748 <00000000>             .DATA.L     _right




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   24


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    0000074C <00000000>             .DATA.L     _slowyposdown
    00000750 <00000000>             .DATA.L     _points
        Matris.c   366    
        Matris.c   367    void CheckPoints()
    00000754              _CheckPoints:                    ; function: CheckPoints
                                                           ; frame size=80
                                                           ; used runtime library name:
                                                           ; __divls
    00000754 2FE6                   MOV.L       R14,@-R15
    00000756 2FD6                   MOV.L       R13,@-R15
    00000758 2FC6                   MOV.L       R12,@-R15
    0000075A 2FB6                   MOV.L       R11,@-R15
    0000075C 2FA6                   MOV.L       R10,@-R15
        Matris.c   368    {
        Matris.c   369            char typecount = 0;
    0000075E EA00                   MOV         #0,R10
    00000760 DC88                   MOV.L       L691,R12   ; _globalmap
    00000762 60A3                   MOV         R10,R0
        Matris.c   370            char oldlevel;
        Matris.c   371            int xcount, ycount;
        Matris.c   372            int ycount2, ycount3;
        Matris.c   373            char fulllinecount = 0;
        Matris.c   374            
        Matris.c   375            for(xcount = 0; xcount < 10; xcount ++)
    00000764 D688                   MOV.L       L691+4,R6  ; _exit
    00000766 65C3                   MOV         R12,R5
    00000768 2F96                   MOV.L       R9,@-R15
    0000076A 64C3                   MOV         R12,R4
    0000076C 2F86                   MOV.L       R8,@-R15
    0000076E 750A                   ADD         #10,R5
    00000770 4F22                   STS.L       PR,@-R15
    00000772 3452                   CMP/HS      R5,R4
    00000774 4F12                   STS.L       MACL,@-R15
    00000776 7FF4                   ADD         #-12,R15
    00000778 8D08                   BT/S        L555
    0000077A 80F8                   MOV.B       R0,@(8,R15)
    0000077C              L556:                             
        Matris.c   376            {
        Matris.c   377                    if(globalmap[0][xcount] != 0)
    0000077C 6240                   MOV.B       @R4,R2
    0000077E 2228                   TST         R2,R2
    00000780 8D02                   BT/S        L557
    00000782 7401                   ADD         #1,R4
        Matris.c   378                    {
        Matris.c   379                            exit = True;
    00000784 E101                   MOV         #1,R1
    00000786 2610                   MOV.B       R1,@R6
    00000788              L557:                             
    00000788 3452                   CMP/HS      R5,R4
    0000078A 8BF7                   BF          L556
    0000078C              L555:                             
        Matris.c   380                            //game over
        Matris.c   381                    }
        Matris.c   382            }
        Matris.c   383                    
        Matris.c   384            for(ycount = 0; ycount < 20; ycount ++)
    0000078C 1FA1                   MOV.L       R10,@(4,R15)




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   25


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    0000078E E90A                   MOV         #10,R9
    00000790 DB7E                   MOV.L       L691+8,R11 ; _pScreen
    00000792              L558:                             
        Matris.c   385            {
        Matris.c   386                    fulllinecount = 0;
    00000792 67A3                   MOV         R10,R7
    00000794 54F1                   MOV.L       @(4,R15),R4
    00000796 66C3                   MOV         R12,R6
        Matris.c   387                    for(xcount = 0; xcount < 10; xcount ++)
    00000798 65A3                   MOV         R10,R5
    0000079A 6343                   MOV         R4,R3
    0000079C 4408                   SHLL2       R4
    0000079E 343C                   ADD         R3,R4
    000007A0 4400                   SHLL        R4
    000007A2 34CC                   ADD         R12,R4
    000007A4              L560:                             
        Matris.c   388                    {
        Matris.c   389                            if(globalmap[ycount][xcount] != 0)
    000007A4 6340                   MOV.B       @R4,R3
    000007A6 2338                   TST         R3,R3
    000007A8 8904                   BT          L559
        Matris.c   390                            {
        Matris.c   391                                    fulllinecount ++;
    000007AA 7701                   ADD         #1,R7
    000007AC 7501                   ADD         #1,R5
    000007AE 3593                   CMP/GE      R9,R5
    000007B0 8FF8                   BF/S        L560
    000007B2 7401                   ADD         #1,R4
    000007B4              L559:                             
        Matris.c   392                            }
        Matris.c   393                            else
        Matris.c   394                            {
        Matris.c   395                                    break;
        Matris.c   396                            }
        Matris.c   397                    }
        Matris.c   398                    
        Matris.c   399                    if(fulllinecount == 10)
    000007B4 607E                   EXTS.B      R7,R0
    000007B6 880A                   CMP/EQ      #10,R0
    000007B8 8901                   BT          L692
    000007BA A102                   BRA         L564
    000007BC 0009                   NOP
    000007BE              L692:                             
        Matris.c   400                    {
        Matris.c   401                            typecount ++;
    000007BE 84F8                   MOV.B       @(8,R15),R0
    000007C0 7001                   ADD         #1,R0
    000007C2 80F8                   MOV.B       R0,@(8,R15)
        Matris.c   402                            
        Matris.c   403                            //1: single, 2: double, 3: triple line, 4: tetris (maximum)
        Matris.c   404                            
        Matris.c   405                            for(ycount2 = ycount; ycount2 > 0; ycount2 --)
    000007C4 55F1                   MOV.L       @(4,R15),R5
    000007C6 6D53                   MOV         R5,R13
    000007C8 6353                   MOV         R5,R3
    000007CA 4D08                   SHLL2       R13
    000007CC 3D3C                   ADD         R3,R13




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   26


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    000007CE 4D00                   SHLL        R13
    000007D0 3D6C                   ADD         R6,R13
    000007D2 6E53                   MOV         R5,R14
    000007D4 7EFF                   ADD         #-1,R14
    000007D6 63E3                   MOV         R14,R3
    000007D8 4E08                   SHLL2       R14
    000007DA 3E3C                   ADD         R3,R14
    000007DC 4E00                   SHLL        R14
    000007DE 4515                   CMP/PL      R5
    000007E0 8F11                   BF/S        L565
    000007E2 3E6C                   ADD         R6,R14
    000007E4              L566:                             
        Matris.c   406                            {
        Matris.c   407                                    for(xcount = 0; xcount < 10; xcount ++)
    000007E4 66A3                   MOV         R10,R6
    000007E6 67E3                   MOV         R14,R7
    000007E8 64D3                   MOV         R13,R4
    000007EA              L568:                             
    000007EA 7602                   ADD         #2,R6
        Matris.c   408                                    {
        Matris.c   409                                            globalmap[ycount2][xcount] = globalmap[ycount2 - 1][xcount];
    000007EC 6374                   MOV.B       @R7+,R3
    000007EE 3693                   CMP/GE      R9,R6
    000007F0 2430                   MOV.B       R3,@R4
    000007F2 7401                   ADD         #1,R4
    000007F4 6374                   MOV.B       @R7+,R3
    000007F6 2430                   MOV.B       R3,@R4
    000007F8 8FF7                   BF/S        L568
    000007FA 7401                   ADD         #1,R4
    000007FC 75FF                   ADD         #-1,R5
    000007FE 7DF6                   ADD         #-10,R13
    00000800 4515                   CMP/PL      R5
    00000802 8DEF                   BT/S        L566
    00000804 7EF6                   ADD         #-10,R14
    00000806              L565:                             
        Matris.c   410                                            //move averything
        Matris.c   411                                    }
        Matris.c   412                            }
        Matris.c   413                            
        Matris.c   414                            line(pScreen, 0 , 0 , 81 , 0, 1);
    00000806 E201                   MOV         #1,R2
    00000808 D361                   MOV.L       L691+12,R3 ; _line
    0000080A E751                   MOV         #81,R7
    0000080C 2F26                   MOV.L       R2,@-R15
    0000080E E600                   MOV         #0,R6
    00000810 2FA6                   MOV.L       R10,@-R15
    00000812 6563                   MOV         R6,R5
    00000814 430B                   JSR         @R3
    00000816 64B2                   MOV.L       @R11,R4
        Matris.c   415                            line(pScreen,  0 , 0 , 0 , 41, 1);
    00000818 D15D                   MOV.L       L691+12,R1 ; _line
    0000081A E201                   MOV         #1,R2
    0000081C 2F26                   MOV.L       R2,@-R15
    0000081E E329                   MOV         #41,R3
    00000820 2F36                   MOV.L       R3,@-R15
    00000822 E700                   MOV         #0,R7
    00000824 6673                   MOV         R7,R6




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   27


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    00000826 6573                   MOV         R7,R5
    00000828 410B                   JSR         @R1
    0000082A 64B2                   MOV.L       @R11,R4
        Matris.c   416                            line(pScreen,  81 , 0 , 81 , 41, 1);
    0000082C D158                   MOV.L       L691+12,R1 ; _line
    0000082E E301                   MOV         #1,R3
    00000830 2F36                   MOV.L       R3,@-R15
    00000832 E229                   MOV         #41,R2
    00000834 2F26                   MOV.L       R2,@-R15
    00000836 E751                   MOV         #81,R7
    00000838 E600                   MOV         #0,R6
    0000083A 6573                   MOV         R7,R5
    0000083C 410B                   JSR         @R1
    0000083E 64B2                   MOV.L       @R11,R4
        Matris.c   417                            line(pScreen,  81 , 41 , 0 , 41, 1);
    00000840 D153                   MOV.L       L691+12,R1 ; _line
    00000842 E301                   MOV         #1,R3
    00000844 2F36                   MOV.L       R3,@-R15
    00000846 E229                   MOV         #41,R2
    00000848 2F26                   MOV.L       R2,@-R15
    0000084A E700                   MOV         #0,R7
    0000084C 6623                   MOV         R2,R6
    0000084E E551                   MOV         #81,R5
    00000850 410B                   JSR         @R1
    00000852 64B2                   MOV.L       @R11,R4
    00000854 7F20                   ADD         #32,R15
        Matris.c   418                    
        Matris.c   419                            for(ycount3 = 0; ycount3 < 20; ycount3 ++)
    00000856 68A3                   MOV         R10,R8
    00000858              L569:                             
        Matris.c   420                            {
        Matris.c   421                                    for(xcount = 0; xcount < 10; xcount ++)
    00000858 6EA3                   MOV         R10,R14
    0000085A 6D83                   MOV         R8,R13
    0000085C 6383                   MOV         R8,R3
    0000085E 4D08                   SHLL2       R13
    00000860 3D3C                   ADD         R3,R13
    00000862 4D00                   SHLL        R13
    00000864              L571:                             
        Matris.c   422                                    {
        Matris.c   423                                            if(globalmap[ycount3][xcount] != 0 || changemap[ycount3][xcount] !
                         += 0)
    00000864 60D3                   MOV         R13,R0
    00000866 30CC                   ADD         R12,R0
    00000868 03EC                   MOV.B       @(R0,R14),R3
    0000086A 2338                   TST         R3,R3
    0000086C 8B05                   BF          L573
    0000086E D149                   MOV.L       L691+16,R1 ; _changemap
    00000870 31DC                   ADD         R13,R1
    00000872 31EC                   ADD         R14,R1
    00000874 6310                   MOV.B       @R1,R3
    00000876 2338                   TST         R3,R3
    00000878 8911                   BT          L572
    0000087A              L573:                             
        Matris.c   424                                            {
        Matris.c   425                                                    fillbox(pScreen, ycount3, xcount, (globalmap[ycount3][xcou
                         +nt] != 0)? globalmap[ycount3][xcount] - 1 : changemap[ycount3][xcount] - 1);




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   28


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    0000087A 60D3                   MOV         R13,R0
    0000087C 30CC                   ADD         R12,R0
    0000087E 07EC                   MOV.B       @(R0,R14),R7
    00000880 2778                   TST         R7,R7
    00000882 8D02                   BT/S        L574
    00000884 2F72                   MOV.L       R7,@R15
    00000886 A004                   BRA         L677
    00000888 67F2                   MOV.L       @R15,R7
    0000088A              L574:                             
    0000088A D742                   MOV.L       L691+16,R7 ; _changemap
    0000088C 37DC                   ADD         R13,R7
    0000088E 37EC                   ADD         R14,R7
    00000890 6770                   MOV.B       @R7,R7
    00000892              L677:                             
    00000892 77FF                   ADD         #-1,R7
    00000894 D240                   MOV.L       L691+20,R2 ; _fillbox
    00000896 66E3                   MOV         R14,R6
    00000898 6583                   MOV         R8,R5
    0000089A 420B                   JSR         @R2
    0000089C 64B2                   MOV.L       @R11,R4
    0000089E              L572:                             
    0000089E 7E01                   ADD         #1,R14
    000008A0 60D3                   MOV         R13,R0
    000008A2 30CC                   ADD         R12,R0
    000008A4 03EC                   MOV.B       @(R0,R14),R3
    000008A6 2338                   TST         R3,R3
    000008A8 8B05                   BF          L577
    000008AA D13A                   MOV.L       L691+16,R1 ; _changemap
    000008AC 31DC                   ADD         R13,R1
    000008AE 31EC                   ADD         R14,R1
    000008B0 6310                   MOV.B       @R1,R3
    000008B2 2338                   TST         R3,R3
    000008B4 8911                   BT          L576
    000008B6              L577:                             
    000008B6 60D3                   MOV         R13,R0
    000008B8 30CC                   ADD         R12,R0
    000008BA 07EC                   MOV.B       @(R0,R14),R7
    000008BC 2778                   TST         R7,R7
    000008BE 8D02                   BT/S        L578
    000008C0 2F72                   MOV.L       R7,@R15
    000008C2 A004                   BRA         L678
    000008C4 67F2                   MOV.L       @R15,R7
    000008C6              L578:                             
    000008C6 D733                   MOV.L       L691+16,R7 ; _changemap
    000008C8 37DC                   ADD         R13,R7
    000008CA 37EC                   ADD         R14,R7
    000008CC 6770                   MOV.B       @R7,R7
    000008CE              L678:                             
    000008CE 77FF                   ADD         #-1,R7
    000008D0 D231                   MOV.L       L691+20,R2 ; _fillbox
    000008D2 66E3                   MOV         R14,R6
    000008D4 6583                   MOV         R8,R5
    000008D6 420B                   JSR         @R2
    000008D8 64B2                   MOV.L       @R11,R4
    000008DA              L576:                             
    000008DA 7E01                   ADD         #1,R14
    000008DC 60D3                   MOV         R13,R0




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   29


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    000008DE 30CC                   ADD         R12,R0
    000008E0 03EC                   MOV.B       @(R0,R14),R3
    000008E2 2338                   TST         R3,R3
    000008E4 8B05                   BF          L581
    000008E6 D12B                   MOV.L       L691+16,R1 ; _changemap
    000008E8 31DC                   ADD         R13,R1
    000008EA 31EC                   ADD         R14,R1
    000008EC 6310                   MOV.B       @R1,R3
    000008EE 2338                   TST         R3,R3
    000008F0 8911                   BT          L580
    000008F2              L581:                             
    000008F2 60D3                   MOV         R13,R0
    000008F4 30CC                   ADD         R12,R0
    000008F6 07EC                   MOV.B       @(R0,R14),R7
    000008F8 2778                   TST         R7,R7
    000008FA 8D02                   BT/S        L582
    000008FC 2F72                   MOV.L       R7,@R15
    000008FE A004                   BRA         L679
    00000900 67F2                   MOV.L       @R15,R7
    00000902              L582:                             
    00000902 D724                   MOV.L       L691+16,R7 ; _changemap
    00000904 37DC                   ADD         R13,R7
    00000906 37EC                   ADD         R14,R7
    00000908 6770                   MOV.B       @R7,R7
    0000090A              L679:                             
    0000090A 77FF                   ADD         #-1,R7
    0000090C D222                   MOV.L       L691+20,R2 ; _fillbox
    0000090E 66E3                   MOV         R14,R6
    00000910 6583                   MOV         R8,R5
    00000912 420B                   JSR         @R2
    00000914 64B2                   MOV.L       @R11,R4
    00000916              L580:                             
    00000916 7E01                   ADD         #1,R14
    00000918 60D3                   MOV         R13,R0
    0000091A 30CC                   ADD         R12,R0
    0000091C 03EC                   MOV.B       @(R0,R14),R3
    0000091E 2338                   TST         R3,R3
    00000920 8B05                   BF          L585
    00000922 D11C                   MOV.L       L691+16,R1 ; _changemap
    00000924 31DC                   ADD         R13,R1
    00000926 31EC                   ADD         R14,R1
    00000928 6310                   MOV.B       @R1,R3
    0000092A 2338                   TST         R3,R3
    0000092C 8911                   BT          L584
    0000092E              L585:                             
    0000092E 60D3                   MOV         R13,R0
    00000930 30CC                   ADD         R12,R0
    00000932 07EC                   MOV.B       @(R0,R14),R7
    00000934 2778                   TST         R7,R7
    00000936 8D02                   BT/S        L586
    00000938 2F72                   MOV.L       R7,@R15
    0000093A A004                   BRA         L680
    0000093C 67F2                   MOV.L       @R15,R7
    0000093E              L586:                             
    0000093E D715                   MOV.L       L691+16,R7 ; _changemap
    00000940 37DC                   ADD         R13,R7
    00000942 37EC                   ADD         R14,R7




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   30


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    00000944 6770                   MOV.B       @R7,R7
    00000946              L680:                             
    00000946 77FF                   ADD         #-1,R7
    00000948 D213                   MOV.L       L691+20,R2 ; _fillbox
    0000094A 66E3                   MOV         R14,R6
    0000094C 6583                   MOV         R8,R5
    0000094E 420B                   JSR         @R2
    00000950 64B2                   MOV.L       @R11,R4
    00000952              L584:                             
    00000952 7E01                   ADD         #1,R14
    00000954 E306                   MOV         #6,R3
    00000956 3E33                   CMP/GE      R3,R14
    00000958 8B84                   BF          L571
    0000095A 3E93                   CMP/GE      R9,R14
    0000095C 892B                   BT          L588
    0000095E              L589:                             
    0000095E 60D3                   MOV         R13,R0
    00000960 30CC                   ADD         R12,R0
    00000962 03EC                   MOV.B       @(R0,R14),R3
    00000964 2338                   TST         R3,R3
    00000966 8B05                   BF          L591
    00000968 D10A                   MOV.L       L691+16,R1 ; _changemap
    0000096A 31DC                   ADD         R13,R1
    0000096C 31EC                   ADD         R14,R1
    0000096E 6310                   MOV.B       @R1,R3
    00000970 2338                   TST         R3,R3
    00000972 891D                   BT          L590
    00000974              L591:                             
    00000974 60D3                   MOV         R13,R0
    00000976 30CC                   ADD         R12,R0
    00000978 07EC                   MOV.B       @(R0,R14),R7
    0000097A 2778                   TST         R7,R7
    0000097C 8D0E                   BT/S        L592
    0000097E 2F72                   MOV.L       R7,@R15
    00000980 A010                   BRA         L681
    00000982 67F2                   MOV.L       @R15,R7
    00000984              L691:                             
    00000984 <00000000>             .DATA.L     _globalmap
    00000988 <00000000>             .DATA.L     _exit
    0000098C <00000000>             .DATA.L     _pScreen
    00000990 <00000000>             .DATA.L     _line
    00000994 <00000000>             .DATA.L     _changemap
    00000998 <00000000>             .DATA.L     _fillbox
    0000099C              L592:                             
    0000099C D73C                   MOV.L       L693+8,R7  ; _changemap
    0000099E 37DC                   ADD         R13,R7
    000009A0 37EC                   ADD         R14,R7
    000009A2 6770                   MOV.B       @R7,R7
    000009A4              L681:                             
    000009A4 D23B                   MOV.L       L693+12,R2 ; _fillbox
    000009A6 77FF                   ADD         #-1,R7
    000009A8 66E3                   MOV         R14,R6
    000009AA 6583                   MOV         R8,R5
    000009AC 420B                   JSR         @R2
    000009AE 64B2                   MOV.L       @R11,R4
    000009B0              L590:                             
    000009B0 7E01                   ADD         #1,R14




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   31


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    000009B2 3E93                   CMP/GE      R9,R14
    000009B4 8BD3                   BF          L589
    000009B6              L588:                             
    000009B6 7801                   ADD         #1,R8
    000009B8 E214                   MOV         #20,R2
    000009BA 3823                   CMP/GE      R2,R8
    000009BC 8901                   BT          L694
    000009BE AF4B                   BRA         L569
    000009C0 0009                   NOP
    000009C2              L694:                             
    000009C2              L564:                             
    000009C2 E314                   MOV         #20,R3
    000009C4 51F1                   MOV.L       @(4,R15),R1
    000009C6 7101                   ADD         #1,R1
    000009C8 3133                   CMP/GE      R3,R1
    000009CA 8D02                   BT/S        L695
    000009CC 1F11                   MOV.L       R1,@(4,R15)
    000009CE AEE0                   BRA         L558
    000009D0 0009                   NOP
    000009D2              L695:                             
    000009D2 84F8                   MOV.B       @(8,R15),R0
    000009D4 6E03                   MOV         R0,R14
    000009D6 4E15                   CMP/PL      R14
    000009D8 8B4B                   BF          L594
        Matris.c   426                                            }
        Matris.c   427                                    }
        Matris.c   428                            }
        Matris.c   429                    }
        Matris.c   430            }
        Matris.c   431            if(typecount > 0)
        Matris.c   432            {
        Matris.c   433                    int blink;
        Matris.c   434                    
        Matris.c   435                    points += (typecount == 1)? 40 * (level + 1): (typecount == 2)? 100 * level : (typecount =
                         += 3)? 300 *(level + 1): (typecount == 4)? 1200 * (level + 1) : 0;
    000009DA 60E3                   MOV         R14,R0
    000009DC D42E                   MOV.L       L693+16,R4 ; _points
    000009DE 8801                   CMP/EQ      #1,R0
    000009E0 8B08                   BF          L595
    000009E2 D32E                   MOV.L       L693+20,R3 ; _level
    000009E4 6230                   MOV.B       @R3,R2
    000009E6 7201                   ADD         #1,R2
    000009E8 6123                   MOV         R2,R1
    000009EA 4208                   SHLL2       R2
    000009EC 321C                   ADD         R1,R2
    000009EE 4208                   SHLL2       R2
    000009F0 A01B                   BRA         L599
    000009F2 4200                   SHLL        R2
    000009F4              L595:                             
    000009F4 8802                   CMP/EQ      #2,R0
    000009F6 8B04                   BF          L596
    000009F8 D328                   MOV.L       L693+20,R3 ; _level
    000009FA E164                   MOV         #100,R1
    000009FC 6230                   MOV.B       @R3,R2
    000009FE A011                   BRA         L683
    00000A00 221F                   MULS        R1,R2
    00000A02              L596:                             




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   32


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    00000A02 60E3                   MOV         R14,R0
    00000A04 8803                   CMP/EQ      #3,R0
    00000A06 8B06                   BF          L597
    00000A08 D324                   MOV.L       L693+20,R3 ; _level
    00000A0A 6230                   MOV.B       @R3,R2
    00000A0C 913C                   MOV.W       L693,R1    ; H'012C
    00000A0E 7201                   ADD         #1,R2
    00000A10 0217                   MUL.L       R1,R2
    00000A12 A007                   BRA         L683
    00000A14 0009                   NOP
    00000A16              L597:                             
    00000A16 8804                   CMP/EQ      #4,R0
    00000A18 8B06                   BF          L598
    00000A1A D320                   MOV.L       L693+20,R3 ; _level
    00000A1C 9135                   MOV.W       L693+2,R1  ; H'04B0
    00000A1E 6230                   MOV.B       @R3,R2
    00000A20 7201                   ADD         #1,R2
    00000A22 0217                   MUL.L       R1,R2
    00000A24              L683:                             
    00000A24 A001                   BRA         L599
    00000A26 021A                   STS         MACL,R2
    00000A28              L598:                             
    00000A28 E200                   MOV         #0,R2
    00000A2A              L599:                             
        Matris.c   436                    //increment points
        Matris.c   437                    
        Matris.c   438                    sendline = (typecount == 4)? 4 : typecount - 1;
    00000A2A 60E3                   MOV         R14,R0
    00000A2C 6342                   MOV.L       @R4,R3
    00000A2E 8804                   CMP/EQ      #4,R0
    00000A30 332C                   ADD         R2,R3
    00000A32 2432                   MOV.L       R3,@R4
    00000A34 8B01                   BF          L603
    00000A36 A002                   BRA         L604
    00000A38 E204                   MOV         #4,R2
    00000A3A              L603:                             
    00000A3A 62E3                   MOV         R14,R2
    00000A3C 72FF                   ADD         #-1,R2
    00000A3E              L604:                             
    00000A3E D318                   MOV.L       L693+24,R3 ; _sendline
        Matris.c   439                    //send a line, if not tetris send lines - 1
        Matris.c   440                    oldlevel = level;
    00000A40 D416                   MOV.L       L693+20,R4 ; _level
    00000A42 2320                   MOV.B       R2,@R3
    00000A44 6540                   MOV.B       @R4,R5
        Matris.c   441                    level += typecount;
    00000A46 84F8                   MOV.B       @(8,R15),R0
    00000A48 6140                   MOV.B       @R4,R1
    00000A4A 310C                   ADD         R0,R1
    00000A4C 2410                   MOV.B       R1,@R4
        Matris.c   442                    if((int)(level / 10) != (int)(oldlevel / 10) && level < 200)
    00000A4E 6640                   MOV.B       @R4,R6
    00000A50 D214                   MOV.L       L693+28,R2 ; __divls
    00000A52 6163                   MOV         R6,R1
    00000A54 420B                   JSR         @R2
    00000A56 6093                   MOV         R9,R0
    00000A58 D212                   MOV.L       L693+28,R2 ; __divls




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   33


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    00000A5A 6303                   MOV         R0,R3
    00000A5C 615E                   EXTS.B      R5,R1
    00000A5E 420B                   JSR         @R2
    00000A60 6093                   MOV         R9,R0
    00000A62 3300                   CMP/EQ      R0,R3
    00000A64 8905                   BT          L594
    00000A66 9311                   MOV.W       L693+4,R3  ; H'00C8
    00000A68 3633                   CMP/GE      R3,R6
    00000A6A 8902                   BT          L594
        Matris.c   443                    {
        Matris.c   444                            levelchanged = True;
    00000A6C D20E                   MOV.L       L693+32,R2 ; _levelchanged
    00000A6E E101                   MOV         #1,R1
    00000A70 2210                   MOV.B       R1,@R2
    00000A72              L594:                             
        Matris.c   445                            //level = round cleared lines / 10
        Matris.c   446                    }
        Matris.c   447            }
        Matris.c   448            Transfer();
    00000A72 7F0C                   ADD         #12,R15
    00000A74 4F16                   LDS.L       @R15+,MACL
    00000A76 4F26                   LDS.L       @R15+,PR
    00000A78 68F6                   MOV.L       @R15+,R8
    00000A7A 69F6                   MOV.L       @R15+,R9
    00000A7C 6AF6                   MOV.L       @R15+,R10
    00000A7E 6BF6                   MOV.L       @R15+,R11
    00000A80 6CF6                   MOV.L       @R15+,R12
    00000A82 6DF6                   MOV.L       @R15+,R13
    00000A84 AC98                   BRA         _Transfer
    00000A86 6EF6                   MOV.L       @R15+,R14
    00000A88              L693:                             
    00000A88 012C                   .DATA.W     H'012C
    00000A8A 04B0                   .DATA.W     H'04B0
    00000A8C 00C8                   .DATA.W     H'00C8
    00000A8E 0000                   .DATA.W     0
    00000A90 <00000000>             .DATA.L     _changemap
    00000A94 <00000000>             .DATA.L     _fillbox
    00000A98 <00000000>             .DATA.L     _points
    00000A9C <00000000>             .DATA.L     _level
    00000AA0 <00000000>             .DATA.L     _sendline
    00000AA4 <00000000>             .DATA.L     __divls
    00000AA8 <00000000>             .DATA.L     _levelchanged
        Matris.c   449    }
        Matris.c   450    
        Matris.c   451    void ReadKey()
    00000AAC              _ReadKey:                        ; function: ReadKey
                                                           ; frame size=12
    00000AAC 2FE6                   MOV.L       R14,@-R15
        Matris.c   452    {
        Matris.c   453            nextdir =Down;
    00000AAE E300                   MOV         #0,R3
    00000AB0 2FD6                   MOV.L       R13,@-R15
    00000AB2 4F22                   STS.L       PR,@-R15
    00000AB4 DD32                   MOV.L       L696,R13   ; _nextdir
    00000AB6 2D30                   MOV.B       R3,@R13
        Matris.c   454                    
        Matris.c   455            if(KeyDown(38)) nextdir = Rot;




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   34


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    00000AB8 DE32                   MOV.L       L696+4,R14 ; _KeyDown
    00000ABA 4E0B                   JSR         @R14
    00000ABC E426                   MOV         #38,R4
    00000ABE 2008                   TST         R0,R0
    00000AC0 8D02                   BT/S        L606
        Matris.c   456            if(KeyDown(37))  nextdir = Left  ;
    00000AC2 E425                   MOV         #37,R4
    00000AC4 E314                   MOV         #20,R3
    00000AC6 2D30                   MOV.B       R3,@R13
    00000AC8              L606:                             
    00000AC8 4E0B                   JSR         @R14
    00000ACA 0009                   NOP
    00000ACC 2008                   TST         R0,R0
    00000ACE 8D02                   BT/S        L607
        Matris.c   457            if(KeyDown(28))  nextdir = Right;
    00000AD0 E41C                   MOV         #28,R4
    00000AD2 E3FF                   MOV         #-1,R3
    00000AD4 2D30                   MOV.B       R3,@R13
    00000AD6              L607:                             
    00000AD6 4E0B                   JSR         @R14
    00000AD8 0009                   NOP
    00000ADA 2008                   TST         R0,R0
    00000ADC 8D02                   BT/S        L608
        Matris.c   458            if(KeyDown(27))  nextdir = Fast;   
    00000ADE E41B                   MOV         #27,R4
    00000AE0 E301                   MOV         #1,R3
    00000AE2 2D30                   MOV.B       R3,@R13
    00000AE4              L608:                             
    00000AE4 4E0B                   JSR         @R14
    00000AE6 0009                   NOP
    00000AE8 2008                   TST         R0,R0
    00000AEA 8D02                   BT/S        L609
        Matris.c   459            if(KeyDown(47))  exit = True; 
    00000AEC E42F                   MOV         #47,R4
    00000AEE E31E                   MOV         #30,R3
    00000AF0 2D30                   MOV.B       R3,@R13
    00000AF2              L609:                             
    00000AF2 4E0B                   JSR         @R14
    00000AF4 0009                   NOP
    00000AF6 2008                   TST         R0,R0
    00000AF8 8D03                   BT/S        L610
        Matris.c   460            if(KeyDown(26))  nextdir = Swap;
    00000AFA E41A                   MOV         #26,R4
    00000AFC D222                   MOV.L       L696+8,R2  ; _exit
    00000AFE E301                   MOV         #1,R3
    00000B00 2230                   MOV.B       R3,@R2
    00000B02              L610:                             
    00000B02 4E0B                   JSR         @R14
    00000B04 0009                   NOP
    00000B06 2008                   TST         R0,R0
    00000B08 8D02                   BT/S        L611
        Matris.c   461            if(KeyDown(31)) TeacherMode();
    00000B0A E41F                   MOV         #31,R4
    00000B0C E20A                   MOV         #10,R2
    00000B0E 2D20                   MOV.B       R2,@R13
    00000B10              L611:                             
    00000B10 4E0B                   JSR         @R14




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   35


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    00000B12 0009                   NOP
    00000B14 2008                   TST         R0,R0
    00000B16 8901                   BT          L612
    00000B18 BB28                   BSR         _TeacherMode
    00000B1A 0009                   NOP
    00000B1C              L612:                             
        Matris.c   462            if(KeyDown(39)) {pause = (pause == True)? False : True; while(KeyDown(39));}
    00000B1C 4E0B                   JSR         @R14
    00000B1E E427                   MOV         #39,R4
    00000B20 2008                   TST         R0,R0
    00000B22 890B                   BT          L613
    00000B24 D419                   MOV.L       L696+12,R4 ; _pause
    00000B26 6040                   MOV.B       @R4,R0
    00000B28 8801                   CMP/EQ      #1,R0
    00000B2A 8B01                   BF          L614
    00000B2C A001                   BRA         L615
    00000B2E E200                   MOV         #0,R2
    00000B30              L614:                             
    00000B30 E201                   MOV         #1,R2
    00000B32              L615:                             
    00000B32 2420                   MOV.B       R2,@R4
    00000B34              L616:                             
    00000B34 4E0B                   JSR         @R14
    00000B36 E427                   MOV         #39,R4
    00000B38 2008                   TST         R0,R0
    00000B3A 8BFB                   BF          L616
    00000B3C              L613:                             
        Matris.c   463    }
    00000B3C 4F26                   LDS.L       @R15+,PR
    00000B3E 6DF6                   MOV.L       @R15+,R13
    00000B40 000B                   RTS
    00000B42 6EF6                   MOV.L       @R15+,R14
        Matris.c   464    
        Matris.c   465    void Main(void)
    00000B44              _Main:                           ; function: Main
                                                           ; frame size=16
                                                           ; used runtime library name:
                                                           ; __modls
    00000B44 2FE6                   MOV.L       R14,@-R15
        Matris.c   466    {
        Matris.c   467            cantrans = False;
    00000B46 E400                   MOV         #0,R4
    00000B48 D311                   MOV.L       L696+16,R3 ; _cantrans
    00000B4A 2FD6                   MOV.L       R13,@-R15
    00000B4C 2FC6                   MOV.L       R12,@-R15
    00000B4E 4F22                   STS.L       PR,@-R15
    00000B50 2340                   MOV.B       R4,@R3
        Matris.c   468            ready = False;
    00000B52 D210                   MOV.L       L696+20,R2 ; _ready
        Matris.c   469            if(pause == False)
    00000B54 D00D                   MOV.L       L696+12,R0 ; _pause
    00000B56 2240                   MOV.B       R4,@R2
    00000B58 6100                   MOV.B       @R0,R1
    00000B5A 2118                   TST         R1,R1
    00000B5C 8B4B                   BF          L618
        Matris.c   470            {
        Matris.c   471                    receive();




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   36


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    00000B5E BCDE                   BSR         _receive
    00000B60 0009                   NOP
        Matris.c   472                    ypos += (slowyposdown % 10 == 0 || nextdir == Fast)? 1 : 0; 
    00000B62 E50A                   MOV         #10,R5
    00000B64 D40C                   MOV.L       L696+24,R4 ; _ypos
    00000B66 DE0D                   MOV.L       L696+28,R14; _slowyposdown
    00000B68 D30D                   MOV.L       L696+32,R3 ; __modls
    00000B6A 61E0                   MOV.B       @R14,R1
    00000B6C 430B                   JSR         @R3
    00000B6E 6053                   MOV         R5,R0
    00000B70 2008                   TST         R0,R0
    00000B72 8903                   BT          L620
    00000B74 D202                   MOV.L       L696,R2    ; _nextdir
    00000B76 6020                   MOV.B       @R2,R0
    00000B78 881E                   CMP/EQ      #30,R0
    00000B7A 8B13                   BF          L619
    00000B7C              L620:                             
    00000B7C A013                   BRA         L621
    00000B7E E201                   MOV         #1,R2
    00000B80              L696:                             
    00000B80 <00000000>             .DATA.L     _nextdir
    00000B84 <00000000>             .DATA.L     _KeyDown
    00000B88 <00000000>             .DATA.L     _exit
    00000B8C <00000000>             .DATA.L     _pause
    00000B90 <00000000>             .DATA.L     _cantrans
    00000B94 <00000000>             .DATA.L     _ready
    00000B98 <00000000>             .DATA.L     _ypos
    00000B9C <00000000>             .DATA.L     _slowyposdown
    00000BA0 <00000000>             .DATA.L     __modls
    00000BA4              L619:                             
    00000BA4 E200                   MOV         #0,R2
    00000BA6              L621:                             
    00000BA6 6342                   MOV.L       @R4,R3
    00000BA8 332C                   ADD         R2,R3
    00000BAA 2432                   MOV.L       R3,@R4
        Matris.c   473                    if(nextdir == Left || nextdir == Right || nextdir == Fast || nextdir == Rot || slowyposdow
                         +n % 10 == 0)
    00000BAC D235                   MOV.L       L697+6,R2  ; _nextdir
    00000BAE 6020                   MOV.B       @R2,R0
    00000BB0 88FF                   CMP/EQ      #-1,R0
    00000BB2 8D0F                   BT/S        L623
    00000BB4 6403                   MOV         R0,R4
    00000BB6 6043                   MOV         R4,R0
    00000BB8 8801                   CMP/EQ      #1,R0
    00000BBA 890B                   BT          L623
    00000BBC 6043                   MOV         R4,R0
    00000BBE 881E                   CMP/EQ      #30,R0
    00000BC0 8908                   BT          L623
    00000BC2 6043                   MOV         R4,R0
    00000BC4 8814                   CMP/EQ      #20,R0
    00000BC6 8905                   BT          L623
    00000BC8 61E0                   MOV.B       @R14,R1
    00000BCA D32F                   MOV.L       L697+10,R3 ; __modls
    00000BCC 430B                   JSR         @R3
    00000BCE 6053                   MOV         R5,R0
    00000BD0 2008                   TST         R0,R0
    00000BD2 8B0D                   BF          L622




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   37


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    00000BD4              L623:                             
        Matris.c   474                    {
        Matris.c   475                            MoveBlock();
    00000BD4 BD69                   BSR         _MoveBlock
    00000BD6 0009                   NOP
        Matris.c   476                            DrawBlock();
    00000BD8 D12C                   MOV.L       L697+14,R1 ; _DrawBlock
    00000BDA 410B                   JSR         @R1
    00000BDC 0009                   NOP
        Matris.c   477                            if(cantrans == True)
    00000BDE D22C                   MOV.L       L697+18,R2 ; _cantrans
    00000BE0 6020                   MOV.B       @R2,R0
    00000BE2 8801                   CMP/EQ      #1,R0
    00000BE4 8B04                   BF          L622
        Matris.c   478                            {
        Matris.c   479                                    CheckPoints();
    00000BE6 BDB5                   BSR         _CheckPoints
    00000BE8 0009                   NOP
        Matris.c   480                                    DrawBlock();
    00000BEA D328                   MOV.L       L697+14,R3 ; _DrawBlock
    00000BEC 430B                   JSR         @R3
    00000BEE 0009                   NOP
    00000BF0              L622:                             
        Matris.c   481                            }
        Matris.c   482                    }
        Matris.c   483                    slowyposdown++;
    00000BF0 62E0                   MOV.B       @R14,R2
    00000BF2 7201                   ADD         #1,R2
    00000BF4 2E20                   MOV.B       R2,@R14
    00000BF6              L618:                             
        Matris.c   484            }
        Matris.c   485            ready = True;
    00000BF6 E301                   MOV         #1,R3
    00000BF8 D126                   MOV.L       L697+22,R1 ; _ready
        Matris.c   486            drawNumber(pScreen, connected, 0, 62);
    00000BFA E73E                   MOV         #62,R7
    00000BFC DC26                   MOV.L       L697+26,R12; _pScreen
    00000BFE E600                   MOV         #0,R6
    00000C00 DD26                   MOV.L       L697+30,R13; _connected
    00000C02 2130                   MOV.B       R3,@R1
    00000C04 DE26                   MOV.L       L697+34,R14; _drawNumber
    00000C06 65D0                   MOV.B       @R13,R5
    00000C08 4E0B                   JSR         @R14
    00000C0A 64C2                   MOV.L       @R12,R4
        Matris.c   487            drawNumber(pScreen + 1024, connected, 0, 62);
    00000C0C 65D0                   MOV.B       @R13,R5
    00000C0E E73E                   MOV         #62,R7
    00000C10 9335                   MOV.W       L697,R3    ; H'0400
    00000C12 E600                   MOV         #0,R6
    00000C14 64C2                   MOV.L       @R12,R4
    00000C16 4E0B                   JSR         @R14
    00000C18 343C                   ADD         R3,R4
        Matris.c   488            drawNumber(pScreen + 2048, connected, 0, 62);
    00000C1A E73E                   MOV         #62,R7
    00000C1C 65D0                   MOV.B       @R13,R5
    00000C1E E600                   MOV         #0,R6
    00000C20 932E                   MOV.W       L697+2,R3  ; H'0800




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   38


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    00000C22 64C2                   MOV.L       @R12,R4
    00000C24 4E0B                   JSR         @R14
    00000C26 343C                   ADD         R3,R4
        Matris.c   489    }
    00000C28 4F26                   LDS.L       @R15+,PR
    00000C2A 6CF6                   MOV.L       @R15+,R12
    00000C2C 6DF6                   MOV.L       @R15+,R13
    00000C2E 000B                   RTS
    00000C30 6EF6                   MOV.L       @R15+,R14
        Matris.c   490    
        Matris.c   491    void CallMain(void)
    00000C32              _CallMain:                       ; function: CallMain
                                                           ; frame size=12
    00000C32 2FE6                   MOV.L       R14,@-R15
    00000C34 2FD6                   MOV.L       R13,@-R15
    00000C36 4F22                   STS.L       PR,@-R15
        Matris.c   492    {
        Matris.c   493            ReadKey();
    00000C38 BF38                   BSR         _ReadKey
    00000C3A 0009                   NOP
    00000C3C D619                   MOV.L       L697+38,R6 ; _onoff
    00000C3E DD11                   MOV.L       L697+6,R13 ; _nextdir
    00000C40 DE19                   MOV.L       L697+42,R14; _Timer_Install
    00000C42 D414                   MOV.L       L697+22,R4 ; _ready
    00000C44 60D0                   MOV.B       @R13,R0
    00000C46 881E                   CMP/EQ      #30,R0
    00000C48 8F36                   BF/S        L625
    00000C4A 6503                   MOV         R0,R5
    00000C4C D215                   MOV.L       L697+38,R2 ; _onoff
    00000C4E 6320                   MOV.B       @R2,R3
    00000C50 2338                   TST         R3,R3
    00000C52 8B31                   BF          L625
    00000C54              L626:                             
        Matris.c   494            if(nextdir == Fast && onoff == False)
        Matris.c   495            {
        Matris.c   496                    while(ready == False);
    00000C54 6140                   MOV.B       @R4,R1
    00000C56 2118                   TST         R1,R1
    00000C58 89FC                   BT          L626
        Matris.c   497                    onoff = True;
    00000C5A E201                   MOV         #1,R2
        Matris.c   498                    Timer_Uninstall(7);
    00000C5C D313                   MOV.L       L697+46,R3 ; _Timer_Uninstall
    00000C5E 2620                   MOV.B       R2,@R6
    00000C60 430B                   JSR         @R3
    00000C62 E407                   MOV         #7,R4
        Matris.c   499                    Timer_Install(7, &Main, 50);
    00000C64 D512                   MOV.L       L697+50,R5 ; _Main
    00000C66 E632                   MOV         #50,R6
    00000C68 4E0B                   JSR         @R14
    00000C6A E407                   MOV         #7,R4
        Matris.c   500                    Timer_Start(7);
    00000C6C D211                   MOV.L       L697+54,R2 ; _Timer_Start
    00000C6E 420B                   JSR         @R2
    00000C70 E407                   MOV         #7,R4
        Matris.c   501                    if(nextdir == Down)
    00000C72 63D0                   MOV.B       @R13,R3




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   39


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    00000C74 2338                   TST         R3,R3
    00000C76 8B48                   BF          L629
        Matris.c   502                    {
        Matris.c   503                            nextdir = Fast;
    00000C78 E11E                   MOV         #30,R1
    00000C7A A046                   BRA         L629
    00000C7C 2D10                   MOV.B       R1,@R13
    00000C7E              L697:                             
    00000C7E 0400                   .DATA.W     H'0400
    00000C80 0800                   .DATA.W     H'0800
    00000C82 0000                   .DATA.W     0
    00000C84 <00000000>             .DATA.L     _nextdir
    00000C88 <00000000>             .DATA.L     __modls
    00000C8C <00000000>             .DATA.L     _DrawBlock
    00000C90 <00000000>             .DATA.L     _cantrans
    00000C94 <00000000>             .DATA.L     _ready
    00000C98 <00000000>             .DATA.L     _pScreen
    00000C9C <00000000>             .DATA.L     _connected
    00000CA0 <00000000>             .DATA.L     _drawNumber
    00000CA4 <00000000>             .DATA.L     _onoff
    00000CA8 <00000000>             .DATA.L     _Timer_Install
    00000CAC <00000000>             .DATA.L     _Timer_Uninstall
    00000CB0 <00000000>             .DATA.L     _Main
    00000CB4 <00000000>             .DATA.L     _Timer_Start
    00000CB8              L625:                             
        Matris.c   504                    }
        Matris.c   505            }
        Matris.c   506            else
        Matris.c   507            {
        Matris.c   508                    if(nextdir != Fast && onoff == True || levelchanged == True)
    00000CB8 6053                   MOV         R5,R0
    00000CBA 881E                   CMP/EQ      #30,R0
    00000CBC 8903                   BT          L632
    00000CBE D31E                   MOV.L       L698,R3    ; _onoff
    00000CC0 6030                   MOV.B       @R3,R0
    00000CC2 8801                   CMP/EQ      #1,R0
    00000CC4 8903                   BT          L633
    00000CC6              L632:                             
    00000CC6 D31D                   MOV.L       L698+4,R3  ; _levelchanged
    00000CC8 6030                   MOV.B       @R3,R0
    00000CCA 8801                   CMP/EQ      #1,R0
    00000CCC 8B1D                   BF          L629
    00000CCE              L633:                             
        Matris.c   509                    {
        Matris.c   510                            while(ready == False);
    00000CCE 6240                   MOV.B       @R4,R2
    00000CD0 2228                   TST         R2,R2
    00000CD2 89FC                   BT          L633
        Matris.c   511                            onoff = False;
        Matris.c   512                            Timer_Uninstall(7);
    00000CD4 D31A                   MOV.L       L698+8,R3  ; _Timer_Uninstall
    00000CD6 E100                   MOV         #0,R1
    00000CD8 2610                   MOV.B       R1,@R6
    00000CDA 430B                   JSR         @R3
    00000CDC E407                   MOV         #7,R4
        Matris.c   513                            
        Matris.c   514                            if(level < 20)




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   40


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    00000CDE E114                   MOV         #20,R1
    00000CE0 D318                   MOV.L       L698+12,R3 ; _level
    00000CE2 6230                   MOV.B       @R3,R2
    00000CE4 3213                   CMP/GE      R1,R2
    00000CE6 8906                   BT          L635
        Matris.c   515                            {
        Matris.c   516                                    Timer_Install(7, &Main, 100 - level * 5);
    00000CE8 6030                   MOV.B       @R3,R0
    00000CEA E664                   MOV         #100,R6
    00000CEC 6203                   MOV         R0,R2
    00000CEE 4008                   SHLL2       R0
    00000CF0 302C                   ADD         R2,R0
    00000CF2 A001                   BRA         L684
    00000CF4 3608                   SUB         R0,R6
    00000CF6              L635:                             
        Matris.c   517                            }
        Matris.c   518                            else
        Matris.c   519                            {
        Matris.c   520                                     Timer_Install(7, &Main, 0);
    00000CF6 E600                   MOV         #0,R6
    00000CF8              L684:                             
    00000CF8 D513                   MOV.L       L698+16,R5 ; _Main
    00000CFA 4E0B                   JSR         @R14
    00000CFC E407                   MOV         #7,R4
        Matris.c   521                            }
        Matris.c   522                            
        Matris.c   523                            Timer_Start(7);
    00000CFE D213                   MOV.L       L698+20,R2 ; _Timer_Start
    00000D00 420B                   JSR         @R2
    00000D02 E407                   MOV         #7,R4
        Matris.c   524                            levelchanged = False;
    00000D04 D20D                   MOV.L       L698+4,R2  ; _levelchanged
    00000D06 E300                   MOV         #0,R3
    00000D08 2230                   MOV.B       R3,@R2
    00000D0A              L629:                             
        Matris.c   525                    }
        Matris.c   526            }
        Matris.c   527    }
    00000D0A 4F26                   LDS.L       @R15+,PR
    00000D0C 6DF6                   MOV.L       @R15+,R13
    00000D0E 000B                   RTS
    00000D10 6EF6                   MOV.L       @R15+,R14
        Matris.c   528    
        Matris.c   529    //the code above is not good, CallMain handles the keys and sets the timer of Main
        Matris.c   530    
        Matris.c   531    void ReadMenuKeys()
    00000D12              _ReadMenuKeys:                   ; function: ReadMenuKeys
                                                           ; frame size=4
    00000D12 4F22                   STS.L       PR,@-R15
        Matris.c   532    {
        Matris.c   533            if(KeyDown(31)) TeacherMode();
    00000D14 D30E                   MOV.L       L698+24,R3 ; _KeyDown
    00000D16 430B                   JSR         @R3
    00000D18 E41F                   MOV         #31,R4
    00000D1A 2008                   TST         R0,R0
    00000D1C 8901                   BT          L637
    00000D1E BA25                   BSR         _TeacherMode




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   41


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    00000D20 0009                   NOP
    00000D22              L637:                             
        Matris.c   534            if(KeyDown(47)) quit = True;
    00000D22 D20B                   MOV.L       L698+24,R2 ; _KeyDown
    00000D24 420B                   JSR         @R2
    00000D26 E42F                   MOV         #47,R4
    00000D28 2008                   TST         R0,R0
    00000D2A 8902                   BT          L638
    00000D2C D309                   MOV.L       L698+28,R3 ; _quit
    00000D2E E201                   MOV         #1,R2
    00000D30 2320                   MOV.B       R2,@R3
    00000D32              L638:                             
        Matris.c   535    }
    00000D32 4F26                   LDS.L       @R15+,PR
    00000D34 000B                   RTS
    00000D36 0009                   NOP
    00000D38              L698:                             
    00000D38 <00000000>             .DATA.L     _onoff
    00000D3C <00000000>             .DATA.L     _levelchanged
    00000D40 <00000000>             .DATA.L     _Timer_Uninstall
    00000D44 <00000000>             .DATA.L     _level
    00000D48 <00000000>             .DATA.L     _Main
    00000D4C <00000000>             .DATA.L     _Timer_Start
    00000D50 <00000000>             .DATA.L     _KeyDown
    00000D54 <00000000>             .DATA.L     _quit
        Matris.c   536    
        Matris.c   537    int AddIn_main(int isAppli, unsigned short OptionNum)
    00000D58              _AddIn_main:                     ; function: AddIn_main
                                                           ; frame size=52
                                                           ; used runtime library name:
                                                           ; __modlu
    00000D58 2FE6                   MOV.L       R14,@-R15
    00000D5A 2FD6                   MOV.L       R13,@-R15
    00000D5C 2FC6                   MOV.L       R12,@-R15
        Matris.c   538    {
        Matris.c   539            char c[] = {0xE6, 0x9B, 0};     
        Matris.c   540            char mode = 0;
    00000D5E ED00                   MOV         #0,R13
        Matris.c   541            
        Matris.c   542            level = 0;
        Matris.c   543            
        Matris.c   544            pScreen = (char*)malloc(3072);
    00000D60 9473                   MOV.W       L699,R4    ; H'0C00
    00000D62 62D3                   MOV         R13,R2
    00000D64 2FB6                   MOV.L       R11,@-R15
    00000D66 2FA6                   MOV.L       R10,@-R15
    00000D68 2F96                   MOV.L       R9,@-R15
    00000D6A 2F86                   MOV.L       R8,@-R15
    00000D6C 4F22                   STS.L       PR,@-R15
    00000D6E 7FEC                   ADD         #-20,R15
    00000D70 D137                   MOV.L       L699+6,R1  ; L462
    00000D72 63F3                   MOV         R15,R3
    00000D74 6010                   MOV.B       @R1,R0
    00000D76 7310                   ADD         #16,R3
    00000D78 2300                   MOV.B       R0,@R3
    00000D7A 8411                   MOV.B       @(1,R1),R0
    00000D7C 8031                   MOV.B       R0,@(1,R3)




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   42


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    00000D7E 8412                   MOV.B       @(2,R1),R0
    00000D80 8032                   MOV.B       R0,@(2,R3)
    00000D82 D334                   MOV.L       L699+10,R3 ; _level
    00000D84 2320                   MOV.B       R2,@R3
    00000D86 D234                   MOV.L       L699+14,R2 ; _malloc
    00000D88 420B                   JSR         @R2
    00000D8A 0009                   NOP
    00000D8C D333                   MOV.L       L699+18,R3 ; _pScreen
        Matris.c   545    
        Matris.c   546            nextblock = (kiss() % 7) + 1;
    00000D8E B960                   BSR         _kiss
    00000D90 2302                   MOV.L       R0,@R3
    00000D92 6103                   MOV         R0,R1
    00000D94 D332                   MOV.L       L699+22,R3 ; __modlu
    00000D96 430B                   JSR         @R3
    00000D98 E007                   MOV         #7,R0
    00000D9A 7001                   ADD         #1,R0
    00000D9C D231                   MOV.L       L699+26,R2 ; _nextblock
        Matris.c   547            CreateBlock();
    00000D9E BA0A                   BSR         _CreateBlock
    00000DA0 2200                   MOV.B       R0,@R2
        Matris.c   548            
        Matris.c   549            ready = True;
    00000DA2 E101                   MOV         #1,R1
    00000DA4 D330                   MOV.L       L699+30,R3 ; _ready
        Matris.c   550            
        Matris.c   551            APP_EnableRestart();//thx to SimonLothar
    00000DA6 B92B                   BSR         _APP_EnableRestart
    00000DA8 2310                   MOV.B       R1,@R3
        Matris.c   552            
        Matris.c   553            seedkiss();//seed random numbers
    00000DAA B980                   BSR         _seedkiss
    00000DAC 0009                   NOP
    00000DAE D22F                   MOV.L       L699+34,R2 ; L467
    00000DB0 D32F                   MOV.L       L699+38,R3 ; L468
    00000DB2 1F21                   MOV.L       R2,@(4,R15)
    00000DB4 1F33                   MOV.L       R3,@(12,R15)
    00000DB6 63F3                   MOV         R15,R3
        Matris.c   554            
        Matris.c   555            while(mode != 3)
    00000DB8 D82F                   MOV.L       L699+46,R8 ; _Timer_Install
    00000DBA 7310                   ADD         #16,R3
    00000DBC D92F                   MOV.L       L699+50,R9 ; _exit
    00000DBE D22D                   MOV.L       L699+42,R2 ; L469
    00000DC0 DB2F                   MOV.L       L699+54,R11; _Print
    00000DC2 1F22                   MOV.L       R2,@(8,R15)
    00000DC4 2F32                   MOV.L       R3,@R15
    00000DC6 DC2F                   MOV.L       L699+58,R12; _locate
    00000DC8 DE2F                   MOV.L       L699+62,R14; _KeyDown
    00000DCA              L640:                             
        Matris.c   556            {       
        Matris.c   557                    quit = False;
    00000DCA E300                   MOV         #0,R3
    00000DCC D22F                   MOV.L       L699+66,R2 ; _quit
    00000DCE 2230                   MOV.B       R3,@R2
        Matris.c   558                    Timer_Install(10, &ReadMenuKeys, 200);
    00000DD0 963C                   MOV.W       L699+2,R6  ; H'00C8




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   43


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    00000DD2 D52F                   MOV.L       L699+70,R5 ; _ReadMenuKeys
    00000DD4 480B                   JSR         @R8
    00000DD6 E40A                   MOV         #10,R4
        Matris.c   559                    Timer_Start(10);
    00000DD8 D32E                   MOV.L       L699+74,R3 ; _Timer_Start
    00000DDA 430B                   JSR         @R3
    00000DDC E40A                   MOV         #10,R4
        Matris.c   560                    while(!KeyDown(31) && mode != 3)
    00000DDE 4E0B                   JSR         @R14
    00000DE0 E41F                   MOV         #31,R4
    00000DE2 2008                   TST         R0,R0
    00000DE4 8901                   BT          L700
    00000DE6 A07E                   BRA         L641
    00000DE8 0009                   NOP
    00000DEA              L700:                             
    00000DEA 60DE                   EXTS.B      R13,R0
    00000DEC 8803                   CMP/EQ      #3,R0
    00000DEE 897A                   BT          L641
    00000DF0              L642:                             
        Matris.c   561                    {
        Matris.c   562                            AllClr_VRAM();
    00000DF0 D229                   MOV.L       L699+78,R2 ; _AllClr_VRAM
    00000DF2 420B                   JSR         @R2
    00000DF4 0009                   NOP
        Matris.c   563                    
        Matris.c   564                            locate( 6, 3 );
    00000DF6 E503                   MOV         #3,R5
    00000DF8 4C0B                   JSR         @R12
    00000DFA E406                   MOV         #6,R4
        Matris.c   565                            Print(&"Singleplayer");
    00000DFC 4B0B                   JSR         @R11
    00000DFE 54F1                   MOV.L       @(4,R15),R4
        Matris.c   566                            locate( 6, 4 );
    00000E00 E504                   MOV         #4,R5
    00000E02 4C0B                   JSR         @R12
    00000E04 E406                   MOV         #6,R4
        Matris.c   567                            Print(&"Multiplayer");
    00000E06 4B0B                   JSR         @R11
    00000E08 54F3                   MOV.L       @(12,R15),R4
        Matris.c   568                            locate( 2, 8);
    00000E0A E508                   MOV         #8,R5
    00000E0C 4C0B                   JSR         @R12
    00000E0E E402                   MOV         #2,R4
        Matris.c   569                            Print(&"Copyright by Casimo");
    00000E10 4B0B                   JSR         @R11
    00000E12 54F2                   MOV.L       @(8,R15),R4
        Matris.c   570            
        Matris.c   571                            locate( 4, 3 + mode);
    00000E14 65DE                   EXTS.B      R13,R5
    00000E16 7503                   ADD         #3,R5
    00000E18 4C0B                   JSR         @R12
    00000E1A E404                   MOV         #4,R4
        Matris.c   572                            PrintC(&c);
    00000E1C D31F                   MOV.L       L699+82,R3 ; _PrintC
    00000E1E 430B                   JSR         @R3
    00000E20 64F2                   MOV.L       @R15,R4
        Matris.c   573                            




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   44


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

        Matris.c   574                            PutDisp_DD();
    00000E22 D21F                   MOV.L       L699+86,R2 ; _PutDisp_DD
    00000E24 420B                   JSR         @R2
    00000E26 0009                   NOP
        Matris.c   575                            
        Matris.c   576                            if(KeyDown(37))
    00000E28 4E0B                   JSR         @R14
    00000E2A E425                   MOV         #37,R4
    00000E2C 2008                   TST         R0,R0
    00000E2E 8939                   BT          L643
        Matris.c   577                            {
        Matris.c   578                                    mode += (mode == 1)? -1 : 1;
    00000E30 60DE                   EXTS.B      R13,R0
    00000E32 8801                   CMP/EQ      #1,R0
    00000E34 8B01                   BF          L644
    00000E36 A001                   BRA         L645
    00000E38 E2FF                   MOV         #-1,R2
    00000E3A              L644:                             
    00000E3A E201                   MOV         #1,R2
    00000E3C              L645:                             
    00000E3C 3D2C                   ADD         R2,R13
        Matris.c   579                                    while(KeyDown(37));
    00000E3E              L646:                             
    00000E3E 4E0B                   JSR         @R14
    00000E40 E425                   MOV         #37,R4
    00000E42 2008                   TST         R0,R0
    00000E44 8BFB                   BF          L646
    00000E46 A047                   BRA         L648
    00000E48 0009                   NOP
    00000E4A              L699:                             
    00000E4A 0C00                   .DATA.W     H'0C00
    00000E4C 00C8                   .DATA.W     H'00C8
    00000E4E 0000                   .DATA.W     0
    00000E50 <00000000>             .DATA.L     L462
    00000E54 <00000000>             .DATA.L     _level
    00000E58 <00000000>             .DATA.L     _malloc
    00000E5C <00000000>             .DATA.L     _pScreen
    00000E60 <00000000>             .DATA.L     __modlu
    00000E64 <00000000>             .DATA.L     _nextblock
    00000E68 <00000000>             .DATA.L     _ready
    00000E6C <00000000>             .DATA.L     L467
    00000E70 <00000000>             .DATA.L     L468
    00000E74 <00000000>             .DATA.L     L469
    00000E78 <00000000>             .DATA.L     _Timer_Install
    00000E7C <00000000>             .DATA.L     _exit
    00000E80 <00000000>             .DATA.L     _Print
    00000E84 <00000000>             .DATA.L     _locate
    00000E88 <00000000>             .DATA.L     _KeyDown
    00000E8C <00000000>             .DATA.L     _quit
    00000E90 <00000000>             .DATA.L     _ReadMenuKeys
    00000E94 <00000000>             .DATA.L     _Timer_Start
    00000E98 <00000000>             .DATA.L     _AllClr_VRAM
    00000E9C <00000000>             .DATA.L     _PrintC
    00000EA0 <00000000>             .DATA.L     _PutDisp_DD
    00000EA4              L643:                             
        Matris.c   580                            }
        Matris.c   581                            else




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   45


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

        Matris.c   582                            {
        Matris.c   583                                    if(KeyDown(28))
    00000EA4 4E0B                   JSR         @R14
    00000EA6 E41C                   MOV         #28,R4
    00000EA8 2008                   TST         R0,R0
    00000EAA 890C                   BT          L649
        Matris.c   584                                    {
        Matris.c   585                                            mode -= (mode == 0)? -1 : 1;
    00000EAC 62DE                   EXTS.B      R13,R2
    00000EAE 2228                   TST         R2,R2
    00000EB0 8B01                   BF          L650
    00000EB2 A001                   BRA         L651
    00000EB4 E3FF                   MOV         #-1,R3
    00000EB6              L650:                             
    00000EB6 E301                   MOV         #1,R3
    00000EB8              L651:                             
    00000EB8 3D38                   SUB         R3,R13
        Matris.c   586                                            while(KeyDown(28));
    00000EBA              L652:                             
    00000EBA 4E0B                   JSR         @R14
    00000EBC E41C                   MOV         #28,R4
    00000EBE 2008                   TST         R0,R0
    00000EC0 8BFB                   BF          L652
    00000EC2 A009                   BRA         L648
    00000EC4 0009                   NOP
    00000EC6              L649:                             
        Matris.c   587                                    }
        Matris.c   588                                    else
        Matris.c   589                                    {
        Matris.c   590                                            if(KeyDown(47))
    00000EC6 4E0B                   JSR         @R14
    00000EC8 E42F                   MOV         #47,R4
    00000ECA 2008                   TST         R0,R0
    00000ECC 8904                   BT          L648
        Matris.c   591                                            {
        Matris.c   592                                                    mode = 3;
    00000ECE ED03                   MOV         #3,R13
        Matris.c   593                                                    while(KeyDown(47));
    00000ED0              L656:                             
    00000ED0 4E0B                   JSR         @R14
    00000ED2 E42F                   MOV         #47,R4
    00000ED4 2008                   TST         R0,R0
    00000ED6 8BFB                   BF          L656
    00000ED8              L648:                             
    00000ED8 4E0B                   JSR         @R14
    00000EDA E41F                   MOV         #31,R4
    00000EDC 2008                   TST         R0,R0
    00000EDE 8B02                   BF          L641
    00000EE0 60DE                   EXTS.B      R13,R0
    00000EE2 8803                   CMP/EQ      #3,R0
    00000EE4 8B84                   BF          L642
    00000EE6              L641:                             
        Matris.c   594                                            }
        Matris.c   595                                    }
        Matris.c   596                                    
        Matris.c   597                            }
        Matris.c   598                    }




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   46


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

        Matris.c   599                    
        Matris.c   600                    Timer_Uninstall(10);
    00000EE6 D222                   MOV.L       L701+4,R2  ; _Timer_Uninstall
    00000EE8 420B                   JSR         @R2
    00000EEA E40A                   MOV         #10,R4
    00000EEC 6ADE                   EXTS.B      R13,R10
    00000EEE 60A3                   MOV         R10,R0
    00000EF0 8803                   CMP/EQ      #3,R0
    00000EF2 8920                   BT          L659
        Matris.c   601                                                            
        Matris.c   602                    if(mode != 3)
        Matris.c   603                    {
        Matris.c   604                            if(mode == 1)
    00000EF4 60A3                   MOV         R10,R0
    00000EF6 8801                   CMP/EQ      #1,R0
    00000EF8 8B04                   BF          L660
        Matris.c   605                            {
        Matris.c   606                                    Serial_ClearReceiveBuffer();
    00000EFA D31E                   MOV.L       L701+8,R3  ; _Serial_ClearReceiveBuffer
    00000EFC 430B                   JSR         @R3
    00000EFE 0009                   NOP
        Matris.c   607                                    Connect();
    00000F00 BB28                   BSR         _Connect
    00000F02 0009                   NOP
    00000F04              L660:                             
        Matris.c   608                            }
        Matris.c   609                            
        Matris.c   610                            Timer_Install(6,&CallMain, 150);
    00000F04 9632                   MOV.W       L701,R6    ; H'0096
    00000F06 D51C                   MOV.L       L701+12,R5 ; _CallMain
    00000F08 480B                   JSR         @R8
    00000F0A E406                   MOV         #6,R4
        Matris.c   611                            Timer_Start(6);
    00000F0C D31B                   MOV.L       L701+16,R3 ; _Timer_Start
    00000F0E 430B                   JSR         @R3
    00000F10 E406                   MOV         #6,R4
        Matris.c   612                            
        Matris.c   613                            while(exit == False){RestGray();}
    00000F12 6290                   MOV.B       @R9,R2
    00000F14 2228                   TST         R2,R2
    00000F16 8B04                   BF          L661
    00000F18              L662:                             
    00000F18 B910                   BSR         _RestGray
    00000F1A 0009                   NOP
    00000F1C 6390                   MOV.B       @R9,R3
    00000F1E 2338                   TST         R3,R3
    00000F20 89FA                   BT          L662
    00000F22              L661:                             
        Matris.c   614                            
        Matris.c   615                            ResetValues();
    00000F22 B997                   BSR         _ResetValues
    00000F24 0009                   NOP
        Matris.c   616                            
        Matris.c   617                            while(KeyDown(47));
    00000F26              L663:                             
    00000F26 4E0B                   JSR         @R14
    00000F28 E42F                   MOV         #47,R4




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   47


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

    00000F2A 2008                   TST         R0,R0
    00000F2C 8BFB                   BF          L663
    00000F2E              L665:                             
        Matris.c   618                            while(KeyDown(31));
    00000F2E 4E0B                   JSR         @R14
    00000F30 E41F                   MOV         #31,R4
    00000F32 2008                   TST         R0,R0
    00000F34 8BFB                   BF          L665
    00000F36              L659:                             
    00000F36 60A3                   MOV         R10,R0
    00000F38 8803                   CMP/EQ      #3,R0
    00000F3A 8901                   BT          L702
    00000F3C AF45                   BRA         L640
    00000F3E 0009                   NOP
    00000F40              L702:                             
        Matris.c   619                    }
        Matris.c   620            }
        Matris.c   621            Timer_Uninstall(6);
    00000F40 D30B                   MOV.L       L701+4,R3  ; _Timer_Uninstall
    00000F42 430B                   JSR         @R3
    00000F44 E406                   MOV         #6,R4
        Matris.c   622            Timer_Uninstall(7);
    00000F46 D20A                   MOV.L       L701+4,R2  ; _Timer_Uninstall
    00000F48 420B                   JSR         @R2
    00000F4A E407                   MOV         #7,R4
        Matris.c   623            Disconnect();
    00000F4C B905                   BSR         _Disconnect
    00000F4E 0009                   NOP
        Matris.c   624            free(pScreen);
    00000F50 D20B                   MOV.L       L701+20,R2 ; _pScreen
    00000F52 D30C                   MOV.L       L701+24,R3 ; _free
    00000F54 430B                   JSR         @R3
    00000F56 6422                   MOV.L       @R2,R4
        Matris.c   625    }
    00000F58 7F14                   ADD         #20,R15
    00000F5A 4F26                   LDS.L       @R15+,PR
    00000F5C 68F6                   MOV.L       @R15+,R8
    00000F5E 69F6                   MOV.L       @R15+,R9
    00000F60 6AF6                   MOV.L       @R15+,R10
    00000F62 6BF6                   MOV.L       @R15+,R11
    00000F64 6CF6                   MOV.L       @R15+,R12
    00000F66 6DF6                   MOV.L       @R15+,R13
    00000F68 000B                   RTS
    00000F6A 6EF6                   MOV.L       @R15+,R14
    00000F6C              L701:                             
    00000F6C 0096                   .DATA.W     H'0096
    00000F6E 0000                   .DATA.W     0
    00000F70 <00000000>             .DATA.L     _Timer_Uninstall
    00000F74 <00000000>             .DATA.L     _Serial_ClearReceiveBuffer
    00000F78 <00000000>             .DATA.L     _CallMain
    00000F7C <00000000>             .DATA.L     _Timer_Start
    00000F80 <00000000>             .DATA.L     _pScreen
    00000F84 <00000000>             .DATA.L     _free
        Matris.c   626    
        Matris.c   627    //I'm sure there are unused variables
        Matris.c   628    
        Matris.c   629    #pragma section _BR_Size




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   48


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

        Matris.c   630    unsigned long BR_Size;
        Matris.c   631    #pragma section
        Matris.c   632    #pragma section _TOP
        Matris.c   633    int InitializeSystem(int isAppli, unsigned short OptionNum)
P_T 00000000              _InitializeSystem:               ; function: InitializeSystem
                                                           ; frame size=4
        Matris.c   634    {return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}
    00000000 D303                   MOV.L       L703+2,R3  ; _INIT_ADDIN_APPLICATION
    00000002 7FFC                   ADD         #-4,R15
    00000004 2F51                   MOV.W       R5,@R15
    00000006 65F1                   MOV.W       @R15,R5
    00000008 655D                   EXTU.W      R5,R5
    0000000A 432B                   JMP         @R3
    0000000C 7F04                   ADD         #4,R15
    0000000E              L703:                             
    0000000E 0000                   .DATA.W     0
    00000010 <00000000>             .DATA.L     _INIT_ADDIN_APPLICATION
        Matris.c   635    #pragma section
D   00000000              __$seed:                         ; static: seed
    00000000 075BCD15               .DATA.L     H'075BCD15
    00000004              __$y$306:                        ; static: y
    00000004 159A55A0               .DATA.L     H'159A55A0
    00000008              __$z$307:                        ; static: z
    00000008 1F123BB5               .DATA.L     H'1F123BB5
    0000000C              __$c$308:                        ; static: c
    0000000C 0074CBB1               .DATA.L     H'0074CBB1
    00000010              _pause:                          ; static: pause
    00000010 00                     .DATA.B     H'00
    00000011              _quit:                           ; static: quit
    00000011 00                     .DATA.B     H'00
    00000012              _levelchanged:                   ; static: levelchanged
    00000012 00                     .DATA.B     H'00
    00000013              _exit:                           ; static: exit
    00000013 00                     .DATA.B     H'00
    00000014              _onoff:                          ; static: onoff
    00000014 01                     .DATA.B     H'01
    00000015              _slowyposdown:                   ; static: slowyposdown
    00000015 00                     .DATA.B     H'00
    00000016              _receiveline:                    ; static: receiveline
    00000016 00                     .DATA.B     H'00
    00000017              _sendline:                       ; static: sendline
    00000017 00                     .DATA.B     H'00
    00000018              _cantrans:                       ; static: cantrans
    00000018 00                     .DATA.B     H'00
C   00000000              L367:
    00000000 506F696E74             .SDATA      "Points: %d"
             733A202564   
    0000000A 00                     .DATA.B     H'00
    0000000B 00000001               .RES.B      1
    0000000C              L368:
    0000000C 4C6576656C             .SDATA      "Level: %d"
             3A202564     
    00000015 00                     .DATA.B     H'00
    00000016 00000002               .RES.W      1
    00000018              L395:
    00000018 436F6E6E65             .SDATA      "Connecting..."
             6374696E67   




SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE   49


SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

             2E2E2E       
    00000025 00                     .DATA.B     H'00
    00000026              L462:
    00000026 E69B00                 .DATA.B     H'E6,H'9B,H'00
    00000029 00000001               .RES.B      1
    0000002A 00000002               .RES.W      1
    0000002C              L467:
    0000002C 53696E676C             .SDATA      "Singleplayer"
             65706C6179   
             6572         
    00000038 00                     .DATA.B     H'00
    00000039 00000001               .RES.B      1
    0000003A 00000002               .RES.W      1
    0000003C              L468:
    0000003C 4D756C7469             .SDATA      "Multiplayer"
             706C617965   
             72           
    00000047 00                     .DATA.B     H'00
    00000048              L469:
    00000048 436F707972             .SDATA      "Copyright by Casimo"
             6967687420   
             6279204361   
             73696D6F     
    0000005B 00                     .DATA.B     H'00
B   00000000              _swit:                           ; static: swit
    00000000 00000001               .RES.B      1
    00000001              _ready:                          ; static: ready
    00000001 00000001               .RES.B      1
    00000002              _canswap:                        ; static: canswap
    00000002 00000001               .RES.B      1
    00000003              _connected:                      ; static: connected
    00000003 00000001               .RES.B      1
B_B 00000000              _BR_Size:                        ; static: BR_Size
    00000000 00000004               .RES.L      1



























SH SERIES C/C++ Compiler (Ver. 6.0C)                                                                 02-Apr-2013 12:26:11  PAGE    1


******** STATISTICS INFORMATION ********


********** ERROR INFORMATION ***********

NUMBER OF ERRORS:           0
NUMBER OF WARNINGS:         9




******* SOURCE LINE INFORMATION ********

COMPILED SOURCE LINE:      635



******* SECTION SIZE INFORMATION *******

PROGRAM  SECTION (P):                               00000F88 Byte(s)
PROGRAM  SECTION (P_BR_Size):                       00000000 Byte(s)
PROGRAM  SECTION (P_TOP):                           00000014 Byte(s)
CONSTANT SECTION (C):                               0000005C Byte(s)
CONSTANT SECTION (C_BR_Size):                       00000000 Byte(s)
CONSTANT SECTION (C_TOP):                           00000000 Byte(s)
DATA     SECTION (D):                               00000019 Byte(s)
DATA     SECTION (D_BR_Size):                       00000000 Byte(s)
DATA     SECTION (D_TOP):                           00000000 Byte(s)
BSS      SECTION (B):                               00000004 Byte(s)
BSS      SECTION (B_BR_Size):                       00000004 Byte(s)
BSS      SECTION (B_TOP):                           00000000 Byte(s)

 TOTAL PROGRAM SIZE: 00001019 Byte(s)



********** LABEL INFORMATION ***********

NUMBER OF EXTERNAL REFERENCE SYMBOLS:           48
NUMBER OF EXTERNAL DEFINITION SYMBOLS:          38
NUMBER OF INTERNAL/EXTERNAL SYMBOLS:           243






















*** COMMAND PARAMETER ***


  -subcommand=C:\Users\Timo\AppData\Local\Temp\hmk43B4.tmp