-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlab7.lst
7422 lines (6512 loc) · 308 KB
/
lab7.lst
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
ARM Macro Assembler Page 1
1 00000000 AREA interrupts, CODE, READWRITE
2 00000000 EXPORT lab7
3 00000000 EXPORT FIQ_Handler
4 00000000
5 00000000 EXTERN pin_connect_block_setup_for_uar
t0
6 00000000 EXTERN uart_init
7 00000000 EXTERN read_character
8 00000000 EXTERN output_character
9 00000000 EXTERN read_string
10 00000000 EXTERN output_string
11 00000000 EXTERN div_and_mod
12 00000000 EXTERN illuminateLEDs
13 00000000 EXTERN illuminate_RGB_LED
14 00000000 EXTERN display_digit_on_7_seg
15 00000000
16 00000000
31 00000000 20 20 20
20 20 20
20 20 20
20 20 20
20 20 20
20 20 20
20 20 20
20 20 20
20 20 20
20 20 20
20 53 43
4F 52 45
20 30 30
30 0A 0A
0A 0D 20
20 20 20
20 20 20
20 20 20
20 5F 5F
5F 5F 5F
0A 0D 20
20 20 20
20 20 20
20 20 20
2F 2F 2F
2F 51 2F
7C 0A 0D
20 20 20
20 20 20
20 20 20
2F 5F 5F
5F 5F 2F
20 7C 5F
5F 5F 5F
0A 0D 20
20 20 20
20 20 20
20 20 7C
20 20 20
20 7C 20
2F 2F 2F
2F 2F 7C
ARM Macro Assembler Page 2
0A 0D 20
20 20 20
20 20 20
20 20 7C
5F 5F 5F
5F 7C 2F
5F 5F 5F
2F 20 7C
5F 5F 5F
5F 0A 0D
20 20 20
20 20 20
20 20 20
2F 2F 2F
2F 2F 7C
20 20 20
7C 20 2F
2F 2F 2F
2F 2F 7C
0A 0D 20
20 20 20
20 20 20
20 2F 5F
5F 5F 2F
20 7C 5F
5F 5F 7C
2F 5F 5F
5F 5F 2F
20 7C 5F
5F 5F 5F
5F 0A 0D
20 20 20
20 20 20
20 20 7C
20 20 20
7C 20 2F
2F 2F 2F
2F 7C 20
20 20 20
7C 20 2F
2F 2F 2F
2F 2F 7C
0A 0D 20
20 20 20
20 20 20
20 7C 5F
5F 5F 7C
2F 5F 5F
5F 2F 20
7C 5F 5F
5F 5F 7C
2F 5F 5F
5F 5F 2F
20 7C 5F
5F 5F 5F
0A 0D 20
20 20 20
20 20 20
20 2F 2F
ARM Macro Assembler Page 3
2F 2F 2F
7C 20 20
20 7C 20
2F 2F 2F
2F 2F 2F
7C 20 20
20 20 7C
20 2F 2F
2F 2F 2F
7C 0A 0D
20 20 20
20 20 20
20 2F 5F
5F 5F 2F
20 7C 5F
5F 5F 7C
2F 5F 5F
5F 5F 2F
20 7C 5F
5F 5F 5F
7C 2F 5F
5F 5F 2F
20 7C 5F
5F 5F 5F
0A 0D 20
20 20 20
20 20 20
7C 20 20
20 7C 20
2F 2F 2F
2F 2F 7C
20 20 20
20 7C 20
2F 2F 2F
2F 2F 2F
7C 20 20
20 7C 20
2F 2F 2F
2F 2F 7C
0A 0D 20
20 20 20
20 20 20
7C 5F 5F
5F 7C 2F
5F 5F 5F
2F 20 7C
5F 5F 5F
5F 7C 2F
5F 5F 5F
5F 2F 20
7C 5F 5F
5F 7C 2F
5F 5F 5F
2F 20 7C
0A 0D 20
20 20 20
20 20 2F
2F 2F 2F
2F 7C 20
ARM Macro Assembler Page 4
20 20 7C
20 2F 2F
2F 2F 2F
2F 7C 20
20 20 20
7C 20 2F
2F 2F 2F
2F 7C 20
20 20 20
7C 20 2F
0A 0D 20
20 20 20
20 2F 5F
5F 5F 2F
20 7C 5F
5F 5F 7C
2F 5F 5F
5F 5F 2F
20 7C 5F
5F 5F 5F
7C 2F 5F
5F 5F 2F
20 7C 5F
5F 5F 5F
7C 2F 0A
0D 20 20
20 20 7C
20 20 20
20 7C 20
2F 2F 2F
2F 2F 7C
20 20 20
20 7C 2F
2F 2F 2F
2F 2F 7C
20 20 20
20 7C 20
2F 0A 0D
20 20 20
20 7C 5F
5F 5F 5F
7C 2F 5F
5F 5F 2F
20 7C 5F
5F 5F 5F
2F 5F 5F
5F 5F 2F
20 7C 5F
5F 5F 5F
7C 2F 0A
0D 20 20
20 2F 2F
2F 2F 2F
2F 7C 20
20 20 20
7C 20 2F
2F 2F 2F
2F 7C 20
20 20 20
ARM Macro Assembler Page 5
7C 20 2F
0A 0D 20
20 2F 5F
5F 5F 5F
2F 20 7C
5F 5F 5F
5F 7C 2F
5F 5F 5F
2F 20 7C
5F 5F 5F
5F 7C 2F
0A 0D 20
20 7C 20
20 20 20
7C 20 2F
2F 2F 2F
2F 7C 20
20 20 20
7C 20 2F
0A 0D 20
20 7C 5F
5F 5F 5F
7C 2F 5F
5F 5F 2F
20 7C 5F
5F 5F 5F
7C 2F 0A
0D 20 2F
2F 2F 2F
2F 2F 7C
20 20 20
20 7C 20
2F 0A 0D
2F 5F 5F
5F 5F 2F
20 7C 5F
5F 5F 5F
7C 2F 0A
0D 7C 20
20 20 20
7C 20 2F
0A 0D 7C
5F 5F 5F
5F 7C 2F
0A 0D 00 GAME_BOARD
= "
SCORE 000",10,10,10,13, " _____",10,13," ////Q/|",10,13,
" /____/ |____",10,13," | | /////|",10,13, " |____|
/___/ |____",10,13," /////| | //////|", 10,13," /___/ |___|/_
___/ |_____",10,13," | | /////", "| | //////|",10,13," |___
|/___/ |____|/____/ |____",10,13, " /////| | //////| | /////|",10,
13," /___/ |___|/", "____/ |____|/___/ |____",10,13," | | /////|
| //////|", " | /////|",10,13," |___|/___/ |____|/____/ |___|/___/
|",10,13, " /////| | //////| | /////| | /",10,13," /___/ |__
_|/", "____/ |____|/___/ |____|/",10,13," | | /////| |//////| | /"
, 10,13," |____|/___/ |____/____/ |____|/",10,13," //////| | ///", "/
/| | /",10,13," /____/ |____|/___/ |____|/",10,13," | | /////", "|
| /",10,13," |____|/___/ |____|/",10,13," //////| | /",10,13, "/____/ |___
_|/",10,13,"| | /",10,13,"|____|/",10,13,0
ARM Macro Assembler Page 6
32 00000318
33 00000318
51 00000318 20 20 20
20 20 20
20 20 20
20 57 65
6C 63 6F
6D 65 20
74 6F 20
41 52 4D
20 51 42
45 52 54
0A 0A 0A
0D 49 6E
73 74 72
75 63 74
69 6F 6E
73 3A 0A
0D 51 62
65 72 74
20 69 73
20 72 65
70 72 65
73 65 6E
74 65 64
20 62 79
20 61 20
51 2C 20
62 61 6C
6C 73 20
61 72 65
20 72 65
70 72 65
73 65 6E
74 65 64
20 62 79
20 61 20
4F 2C 20
0A 0D 74
68 65 20
73 6E 61
6B 65 20
62 61 6C
6C 20 69
73 20 61
20 43 2C
20 61 6E
64 20 74
68 65 20
73 6E 61
6B 65 20
69 73 20
61 6E 20
53 2E 0A
0A 0D 55
73 65 20
74 68 65
20 77 2C
20 61 2C
ARM Macro Assembler Page 7
20 73 2C
20 64 20
6B 65 79
73 20 74
6F 20 6D
6F 76 65
20 75 70
2C 20 6C
65 66 74
2C 20 64
6F 77 6E
2C 20 61
6E 64 20
72 69 67
68 74 20
0A 0D 72
65 73 70
65 63 74
69 76 65
6C 79 2E
0A 0A 0D
51 62 65
72 74 20
73 74 61
72 74 73
20 74 68
65 20 67
61 6D 65
20 77 69
74 68 20
66 6F 75
72 20 6C
69 76 65
73 2E 20
47 65 74
74 69 6E
67 20 68
69 74 20
62 79 20
61 20 0A
0D 62 61
6C 6C 2C
20 6F 72
20 73 6E
61 6B 65
20 72 65
6D 6F 76
65 73 20
61 20 6C
69 66 65
2E 20 4A
75 6D 70
69 6E 67
20 6F 66
66 20 74
68 65 20
73 69 64
65 20 6F
66 20 74
ARM Macro Assembler Page 8
68 65 20
0A 0D 70
79 72 61
6D 69 64
20 61 6C
73 6F 20
63 6F 73
74 73 20
6F 6E 65
20 6F 6E
65 20 6C
69 66 65
2E 0A 0A
0D 55 6E
65 78 70
6C 6F 72
65 64 20
73 71 75
61 72 65
73 20 61
72 65 20
73 68 61
64 65 64
20 77 69
74 68 20
2F 2F 2F
2F 2E 20
45 78 70
6C 6F 72
65 20 61
6C 6C 20
73 71 75
61 72 65
73 0A 0D
74 6F 20
61 64 76
61 6E 63
65 20 74
6F 20 74
68 65 20
6E 65 78
74 20 6C
65 76 65
6C 2E 0A
0A 0D 54
68 65 20
67 61 6D
65 20 69
73 20 6F
76 65 72
20 61 66
74 65 72
20 32 20
6D 69 6E
75 74 65
73 2C 20
6F 72 20
61 6C 6C
20 66 6F
ARM Macro Assembler Page 9
75 72 20
6C 69 76
65 73 20
68 61 76
65 20 0A
0D 62 65
65 6E 20
6C 6F 73
74 2E 0A
0A 0D 50
72 65 73
73 20 74
68 65 20
73 70 61
63 65 20
62 61 72
20 61 74
20 61 6E
79 74 69
6D 65 20
74 6F 20
65 78 69
74 20 74
68 65 20
67 61 6D
65 2E 0A
0A 0D 50
72 65 73
73 20 74
68 65 20
41 52 4D
20 70 75
73 68 20
62 75 74
74 6F 6E
20 61 74
20 61 6E
79 74 69
6D 65 20
74 6F 20
70 61 75
73 65 20
74 68 65
20 67 61
6D 65 2E
0A 0D 4E
6F 20 69
6E 70 75
74 73 20
77 69 6C
6C 20 62
65 20 61
63 63 65
70 74 65
64 20 75
6E 74 69
6C 20 74
68 65 20
67 61 6D
ARM Macro Assembler Page 10
65 20 69
73 20 75
6E 70 61
75 73 65
64 20 62
79 20 0A
0D 70 75
73 68 69
6E 67 20
74 68 65
20 41 52
4D 20 70
75 73 68
20 62 75
74 74 6F
6E 20 61
67 61 69
6E 2E 0A
0A 0D 50
72 65 73
73 20 67
20 61 74
20 61 6E
79 74 69
6D 65 20
74 6F 20
73 74 61
72 74 20
61 20 6E
65 77 20
67 61 6D
65 2E 0A
0A 0D 50
72 65 73
73 20 67
20 6E 6F
77 20 74
6F 20 73
74 61 72
74 2E 2E
2E 0A 0D
00 INTRO = " Welcome to ARM QBERT
",10,10,10,13,"Instructions:",10,13, "Qbert is represented by a Q, balls are r
epresented by a O, ",10,13, "the snake ball is a C, and the snake is an S.",10
,10,13, "Use the w, a, s, d keys to move up, left, down, and right ",10,13, "
respectively.",10,10,13, "Qbert starts the game with four lives. Getting hit b
y a ",10,13, "ball, or snake removes a life. Jumping off the side of the ",10,
13, "pyramid also costs one one life.",10,10,13, "Unexplored squares are shad
ed with ////. Explore all squares",10,13, "to advance to the next level.",10,1
0,13, "The game is over after 2 minutes, or all four lives have ",10,13, "bee
n lost.",10,10,13, "Press the space bar at anytime to exit the game.",10,10,13
, "Press the ARM push button at anytime to pause the game.",10,13, "No inputs
will be accepted until the game is unpaused by ",10,13, "pushing the ARM push
button again.",10,10,13, "Press g at anytime to start a new game.",10,10,13,
"Press g now to start...",10,13,0
52 00000652
55 00000652 20 20 20
20 20 20
20 20 20
ARM Macro Assembler Page 11
20 20 20
20 20 20
47 61 6D
65 20 4F
76 65 72
20 20 20
20 20 20
53 63 6F
72 65 3A
20 30 30
30 0A 0A
0A 0A 0D
20 20 20
20 20 20
20 20 20
20 20 20
20 20 20
50 72 65
73 73 20
67 20 74
6F 20 70
6C 61 79
20 61 67
61 69 6E
0A 0D 20
20 20 20
20 20 20
20 20 20
20 20 20
20 20 50
72 65 73
73 20 73
70 61 63
65 20 62
61 72 20
74 6F 20
65 78 69
74 00 GAME_OVER
= " Game Over
Score: 000",10,10,10,10,13, " Press g to play again",10,13, "
Press space bar to exit",0
56 000006CC
57 000006CC 20 20 20
20 74 69
6D 65 72
20 31 20
20 20 0A
0D 00 TEST_TIMER1
= " timer 1 ",10,13,0
58 000006DD
59 000006DD
60 000006DD 00 00 00 ALIGN
61 000006E0 0000000F
Q_X_POSITION
DCD 15 ; Starting x=15
62 000006E4 00000005
Q_Y_POSITION
DCD 5 ; Starting y=5
63 000006E8 00000000
ARM Macro Assembler Page 12
Q_DIRECTION
DCD 0 ;0=none, 1=up, 2=le
ft, 3=down, 4=right
64 000006EC 00000001
Q_SQUARE
DCD 1
65 000006F0 00000000
BALL1_X_POSITION
DCD 0
66 000006F4 00000000
BALL1_Y_POSITION
DCD 0
67 000006F8 00000000
BALL1_DIRECTION
DCD 0
68 000006FC 00000000
BALL1_SQUARE
DCD 0
69 00000700 00000000
BALL2_X_POSITION
DCD 0
70 00000704 00000000
BALL2_Y_POSITION
DCD 0
71 00000708 00000000
BALL2_DIRECTION
DCD 0
72 0000070C 00000000
BALL2_SQUARE
DCD 0
73 00000710 00000000
SNAKEBALL_X_POSITION
DCD 0
74 00000714 00000000
SNAKEBALL_Y_POSITION
DCD 0
75 00000718 00000000
SNAKEBALL_DIRECTION
DCD 0
76 0000071C 00000000
SNAKEBALL_SQUARE
DCD 0
77 00000720 00000000
SNAKE_X_POSITION
DCD 0
78 00000724 00000000
SNAKE_Y_POSITION
DCD 0
79 00000728 00000000
SNAKE_DIRECTION
DCD 0
80 0000072C 00000000
SNAKE_SQUARE
DCD 0
81 00000730 00000001
LEVEL DCD 1
82 00000734 00000004
LIVES DCD 4
ARM Macro Assembler Page 13
83 00000738 SQUARE
84 00000738 00000000 DCD 0 ; 0
85 0000073C 00000000 DCD 0 ; 1
86 00000740 00000000 DCD 0 ; 2
87 00000744 00000000 DCD 0 ; 3
88 00000748 00000000 DCD 0 ; 4
89 0000074C 00000000 DCD 0 ; 5
90 00000750 00000000 DCD 0 ; 6
91 00000754 00000000 DCD 0 ; 7
92 00000758 00000000 DCD 0 ; 8
93 0000075C 00000000 DCD 0 ; 9
94 00000760 00000000 DCD 0 ; 10
95 00000764 00000000 DCD 0 ; 11
96 00000768 00000000 DCD 0 ; 12
97 0000076C 00000000 DCD 0 ; 13
98 00000770 00000000 DCD 0 ; 14
99 00000774 00000000 DCD 0 ; 15
100 00000778 00000000 DCD 0 ; 16
101 0000077C 00000000 DCD 0 ; 17
102 00000780 00000000 DCD 0 ; 18
103 00000784 00000000 DCD 0 ; 29
104 00000788 00000000 DCD 0 ; 20
105 0000078C 00000000 DCD 0 ; 21
106 00000790 00000000
SCORE DCD 0
107 00000794 00000000
BLINK DCD 0
108 00000798 00000001
Q_MOVES DCD 1
109 0000079C 00000000
INC_TIMER_FLAG
DCD 0 ; 0=up to date, 1=n
eeds to be updated
110 000007A0 00000000
NUM_BALLS
DCD 0
111 000007A4 00000000
NUM_HALF_SECS
DCD 0
112 000007A8 00000000
IS_PAUSED
DCD 0 ; 0=running, 1=paus
ed
113 000007AC 00000000
BALL1_FELL_OFF
DCD 0 ; Set if falls off
114 000007B0 00000000
BALL2_FELL_OFF
DCD 0 ; Set if falls off
115 000007B4 00000000
SNAKEBALL_FELL_OFF
DCD 0 ; Set if falls off
116 000007B8 00000000
IS_GAMEOVER_SCREEN
DCD 0 ; Set when at game
over screen
117 000007BC 00000000
DISPLAY_CURSE
DCD 0
ARM Macro Assembler Page 14
118 000007C0 00 Q_RECENTLY_HIT
= 0 ; Set when Q has be
en hit
119 000007C1
120 000007C1 00 00 00 ALIGN
121 000007C4
122 000007C4 lab7
123 000007C4 E92D4000 STMFD sp!, {lr}
124 000007C8 ;;;;;; TODO hide cursor????
125 000007C8 EBFFFFFE BL uart_init
126 000007CC EBFFFFFE BL pin_connect_block_setup_for_uar
t0
127 000007D0 EB0008B4 BL interrupt_init
128 000007D4
129 000007D4 E3A0200C MOV r2, #0x0C ; ASCII 0x0C is for
new page
130 000007D8 EBFFFFFE BL output_character ; Clear the sc
reen
131 000007DC ; Seven-seg starts with a 0
132 000007DC E3A04000 MOV r4, #0
133 000007E0 EBFFFFFE BL display_digit_on_7_seg
134 000007E4 ; RGB LED starts as white
135 000007E4 E3A04005 MOV r4, #5
136 000007E8 EBFFFFFE BL illuminate_RGB_LED ; Set RGB LC
D to white
137 000007EC ; Display intro/instructions
138 000007EC E59F3728 LDR r3, =INTRO
139 000007F0 EBFFFFFE BL output_string
140 000007F4
141 000007F4 ; Loop at intro screen until player starts a new game or
quits
142 000007F4 endlessLoop
143 000007F4 E2800000 ADD r0, r0, #0 ; NOP
144 000007F8 EAFFFFFD B endlessLoop
145 000007FC
146 000007FC newGame
147 000007FC E92D423F STMFD SP!, {r0-r5, r9, lr}
; Save registers
148 00000800 E3A0200C MOV r2, #0x0C ; ASCII 0x0C is for
new page
149 00000804 EBFFFFFE BL output_character
; Clear the screen
150 00000808
151 00000808 ; is no longer at the game over screen
152 00000808 E59F0710 LDR r0, =IS_GAMEOVER_SCREEN
; clear variable
153 0000080C E3A01000 MOV r1, #0
154 00000810 E5C01000 STRB r1, [r0]
155 00000814
156 00000814 ; set ball 1 and 2, snakeball and snake to no square
157 00000814 E59F0708 LDR r0, =BALL1_SQUARE
158 00000818 E3A01000 MOV r1, #0
159 0000081C E5801000 STR r1, [r0]
160 00000820 ; set ball2 to no square
161 00000820 E59F0700 LDR r0, =BALL2_SQUARE
162 00000824 E5801000 STR r1, [r0]
163 00000828 ; set snakeball to no square
164 00000828 E59F06FC LDR r0, =SNAKEBALL_SQUARE
165 0000082C E5801000 STR r1, [r0]
ARM Macro Assembler Page 15
166 00000830 ; set snake to no square
167 00000830 E59F06F8 LDR r0, =SNAKE_SQUARE
168 00000834 E5801000 STR r1, [r0]
169 00000838
170 00000838 ; Do not continue to blink after a new game is started
171 00000838 E59F06F4 LDR r0, =BLINK
172 0000083C E3A01000 MOV r1, #0
173 00000840 E5801000 STR r1, [r0]
174 00000844
175 00000844 ; Reset 2s spawn timer to 0
176 00000844 E59F46EC LDR r4, =NUM_HALF_SECS
177 00000848 E3A05000 MOV r5, #0
178 0000084C E5845000 STR r5, [r4]
179 00000850
180 00000850 ; Reset SCORE to 0
181 00000850 E59F46E4 LDR r4, =SCORE
182 00000854 E3A05000 MOV r5, #0
183 00000858 E5845000 STR r5, [r4]
184 0000085C
185 0000085C ; Reset NUM_BALLS to 0
186 0000085C E59F46DC LDR r4, =NUM_BALLS
187 00000860 E3A05000 MOV r5, #0
188 00000864 E5845000 STR r5, [r4]
189 00000868
190 00000868 ; Reset all SQUAREs to 0
191 00000868 EB000027 BL resetAllSquares
192 0000086C
193 0000086C ; Reset LEVEL to 1
194 0000086C E59F46D0 LDR r4, =LEVEL
195 00000870 E3A05001 MOV r5, #1
196 00000874 E5845000 STR r5, [r4]
197 00000878
198 00000878 ; Reset LIVES to 4
199 00000878 E59F46C8 LDR r4, =LIVES ; Set the LIVES to
4
200 0000087C E3A05004 MOV r5, #4
201 00000880 E5845000 STR r5, [r4]
202 00000884
203 00000884 E3A04001 MOV r4, #1
204 00000888 EBFFFFFE BL display_digit_on_7_seg ; Displa
y current level (1)
205 0000088C E3A04001 MOV r4, #1
206 00000890 EBFFFFFE BL illuminate_RGB_LED ; Set RGB LC
D to green when gam
e running
207 00000894
208 00000894 ; turn all four leds on
209 00000894 E3A04000 MOV r4, #0x00
210 00000898 EBFFFFFE BL illuminateLEDs ; Set all 4 LCDs
to on
211 0000089C
212 0000089C ; Reset Q to starting position
213 0000089C E59F46A8 LDR r4, =Q_X_POSITION
214 000008A0 E3A0500F MOV r5, #15
215 000008A4 E5845000 STR r5, [r4] ; store new xPos
216 000008A8 E59F46A0 LDR r4, =Q_Y_POSITION
217 000008AC E3A05005 MOV r5, #5
218 000008B0 E5845000 STR r5, [r4] ; store new yPos
ARM Macro Assembler Page 16
219 000008B4
220 000008B4 ; Reset Q_DIRECTION to 0 = none
221 000008B4 E59F4698 LDR r4, =Q_DIRECTION
222 000008B8 E3A05000 MOV r5, #0
223 000008BC E5845000 STR r5, [r4] ; store new directi
on
224 000008C0
225 000008C0 ; Display the game board
226 000008C0 E59F3690 LDR r3, =GAME_BOARD
227 000008C4 EBFFFFFE BL output_string
228 000008C8
229 000008C8
230 000008C8 ; Enable timer0
231 000008C8 E59F268C LDR r2, =0xE000401C ; Address of Ma
tch Register 0 (MR0
)
232 000008CC ;LDR r0, =36864000 ; timeout period of the timer (2
s)
233 000008CC ;LDR r0, =18432000 ; timeout period of the timer (1