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
|