OpenCores
URL https://opencores.org/ocsvn/thor/thor/trunk

Subversion Repositories thor

[/] [thor/] [trunk/] [FT64/] [software/] [boot/] [BIOSMain.s] - Blame information for rev 45

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 45 robfinch
        code
2
        align   16
3
;====================================================
4
; Basic Block 0
5
;====================================================
6
public code _DBERout:
7
                sub     $sp,$sp,#240
8
                sw      $v0,0[$sp]
9
                sw      $v1,8[$sp]
10
                sw      $v2,16[$sp]
11
                sw      $v3,24[$sp]
12
                sw      $t0,32[$sp]
13
                sw      $t1,40[$sp]
14
                sw      $t2,48[$sp]
15
                sw      $t3,56[$sp]
16
                sw      $t4,64[$sp]
17
                sw      $t5,72[$sp]
18
                sw      $t6,80[$sp]
19
                sw      $t7,88[$sp]
20
                sw      $t8,96[$sp]
21
                sw      $t9,104[$sp]
22
                sw      $t10,112[$sp]
23
                sw      $t11,120[$sp]
24
                sw      $t12,128[$sp]
25
                sw      $t13,136[$sp]
26
                sw      $t14,144[$sp]
27
                sw      $t15,152[$sp]
28
                sw      $r21,160[$sp]
29
                sw      $r22,168[$sp]
30
                sw      $r23,176[$sp]
31
                sw      $r24,184[$sp]
32
                sw      $r25,192[$sp]
33
                sw      $r26,200[$sp]
34
                sw      $r27,208[$sp]
35
                sw      $r28,216[$sp]
36
                sw      $r29,224[$sp]
37
                sw      $r30,232[$sp]
38
                sub     $sp,$sp,#24
39
                sw      $lr,16[$sp]
40
                sw      $xlr,8[$sp]
41
                sw      $fp,[$sp]
42
                ldi     $xlr,#BIOSMain_10
43
                mov     $fp,$sp
44
                sub     $sp,$sp,#8
45
                sub     $sp,$sp,#8
46
                sw      $r21,0[$sp]
47
                lw      $r21,-8[$fp]
48
;       DBGDisplayString("\r\nDatabus error: ");
49
                sub     $sp,$sp,#8
50
                sw      $r0,0[$sp]
51
                call    _DBGDisplayString
52
                add     $sp,$sp,#8
53
;       puthex(GetEPC());
54
                call    _GetEPC
55
                mov     $a0,$v0
56
                call    _puthex
57
;       putch(' ');
58
                ldi     $a0,#32
59
                call    _putch
60
;       puthex(GetBadAddr());
61
                call    _GetBadAddr
62
                mov     $a0,$v0
63
                call    _puthex
64
;       putch(' ');
65
                ldi     $a0,#32
66
                call    _putch
67
;       for (nn = 63; nn >= 0; nn--) {
68
                ldi     $r21,#63
69
BIOSMain_13:
70
                blt     $r21,$r0,BIOSMain_14
71
;====================================================
72
; Basic Block 1
73
;====================================================
74
;               SetPCHNDX(nn);
75
                sub     $sp,$sp,#8
76
                sw      $r21,0[$sp]
77
                call    _SetPCHNDX
78
                add     $sp,$sp,#8
79
;               puthex(ReadPCHIST());
80
                call    _ReadPCHIST
81
                mov     $a0,$v0
82
                call    _puthex
83
;               putch(' ');
84
                ldi     $a0,#32
85
                call    _putch
86
                sub     $r21,$r21,#1
87
                bra     BIOSMain_13
88
BIOSMain_14:
89
BIOSMain_16:
90
;====================================================
91
; Basic Block 2
92
;====================================================
93
                bra     BIOSMain_16
94
BIOSMain_10:
95
;====================================================
96
; Basic Block 3
97
;====================================================
98
                lw      $lr,8[$fp]
99
                sw      $lr,16[$fp]
100
                lw      $r21,0[$sp]
101
                mov     $sp,$fp
102
                lw      $fp,[$sp]
103
                lw      $xlr,8[$sp]
104
                lw      $lr,16[$sp]
105
                lw      $v0,0[$sp]
106
                lw      $v1,8[$sp]
107
                lw      $v2,16[$sp]
108
                lw      $v3,24[$sp]
109
                lw      $t0,32[$sp]
110
                lw      $t1,40[$sp]
111
                lw      $t2,48[$sp]
112
                lw      $t3,56[$sp]
113
                lw      $t4,64[$sp]
114
                lw      $t5,72[$sp]
115
                lw      $t6,80[$sp]
116
                lw      $t7,88[$sp]
117
                lw      $t8,96[$sp]
118
                lw      $t9,104[$sp]
119
                lw      $t10,112[$sp]
120
                lw      $t11,120[$sp]
121
                lw      $t12,128[$sp]
122
                lw      $t13,136[$sp]
123
                lw      $t14,144[$sp]
124
                lw      $t15,152[$sp]
125
                lw      $r21,160[$sp]
126
                lw      $r22,168[$sp]
127
                lw      $r23,176[$sp]
128
                lw      $r24,184[$sp]
129
                lw      $r25,192[$sp]
130
                lw      $r26,200[$sp]
131
                lw      $r27,208[$sp]
132
                lw      $r28,216[$sp]
133
                lw      $r29,224[$sp]
134
                lw      $r30,232[$sp]
135
                add     $sp,$sp,#240
136
                rte
137
endpublic
138
 
139
 
140
 
141
;====================================================
142
; Basic Block 0
143
;====================================================
144
public code _BIOSMain:
145
                sub     $sp,$sp,#24
146
                sw      $lr,16[$sp]
147
                sw      $xlr,8[$sp]
148
                sw      $fp,[$sp]
149
                ldi     $xlr,#BIOSMain_72
150
                mov     $fp,$sp
151
                sub     $sp,$sp,#40
152
                sub     $sp,$sp,#24
153
                sw      $r21,0[$sp]
154
                sw      $r22,8[$sp]
155
                sw      $r23,16[$sp]
156
                lw      $r21,-32[$fp]
157
                lw      $r22,-8[$fp]
158
                lw      $r23,-40[$fp]
159
;       float pi = 3.1415926535897932384626;
160
                lw      $r22,BIOSMain_21
161
                ldi     $r23,#0
162
;       LEDS(1);
163
                ldi     $a0,#1
164
;       asm {
165
 
166
                        sh              $a0,$FFDC0600
167
;       DBGAttr = 0x087FC00;//0b0000_1000_0111_1111_1100_0000_0000;
168
                ldi     $t0,#8911872
169
                sh      $t0,_DBGAttr
170
;       DBGClearScreen();
171
                call    _DBGClearScreen
172
;       DBGHomeCursor();
173
                call    _DBGHomeCursor
174
;       DBGDisplayString("  FT64 Bios Started\r\n");
175
                sub     $sp,$sp,#8
176
                ldi     $t0,#BIOSMain_22
177
                sw      $t0,0[$sp]
178
                call    _DBGDisplayString
179
                add     $sp,$sp,#8
180
;       DBGDisplayString("  Menu\r\n  up = ramtest\r\n  down = graphics demo\r\n  left = float test\r\n  right=TinyBasic\r\n");
181
                sub     $sp,$sp,#8
182
                ldi     $t0,#BIOSMain_23
183
                sw      $t0,0[$sp]
184
                call    _DBGDisplayString
185
                add     $sp,$sp,#8
186
BIOSMain_79:
187
;       asm {
188
 
189
                        lb              $v0,BUTTONS
190
;       }
191
                mov     $r21,$v0
192
;               case 4:
193
                bbs     $r21,#2,BIOSMain_91
194
;====================================================
195
; Basic Block 1
196
;====================================================
197
;               case 8:
198
                bbs     $r21,#3,BIOSMain_92
199
;====================================================
200
; Basic Block 2
201
;====================================================
202
;               case 2:
203
                bbs     $r21,#1,BIOSMain_93
204
;====================================================
205
; Basic Block 3
206
;====================================================
207
;               case 1:
208
                bbs     $r21,#0,BIOSMain_94
209
;====================================================
210
; Basic Block 4
211
;====================================================
212
                bra     BIOSMain_85
213
BIOSMain_91:
214
BIOSMain_95:
215
;====================================================
216
; Basic Block 5
217
;====================================================
218
;       asm {
219
 
220
                        lb              $v0,BUTTONS
221
;       }
222
                beq     $v0,$r0,BIOSMain_96
223
;====================================================
224
; Basic Block 6
225
;====================================================
226
;                       while(GetButton());
227
                bra     BIOSMain_95
228
BIOSMain_96:
229
;====================================================
230
; Basic Block 7
231
;====================================================
232
;                       SpriteDemo();
233
                call    _SpriteDemo
234
;                       break;
235
                bra     BIOSMain_85
236
BIOSMain_92:
237
BIOSMain_101:
238
;====================================================
239
; Basic Block 8
240
;====================================================
241
;       asm {
242
 
243
                        lb              $v0,BUTTONS
244
;       }
245
                beq     $v0,$r0,BIOSMain_102
246
;====================================================
247
; Basic Block 9
248
;====================================================
249
;                       while(GetButton());
250
                bra     BIOSMain_101
251
BIOSMain_102:
252
;====================================================
253
; Basic Block 10
254
;====================================================
255
;                       ramtest();
256
                call    _ramtest
257
;                       break;
258
                bra     BIOSMain_85
259
BIOSMain_93:
260
BIOSMain_107:
261
;====================================================
262
; Basic Block 11
263
;====================================================
264
;       asm {
265
 
266
                        lb              $v0,BUTTONS
267
;       }
268
                beq     $v0,$r0,BIOSMain_108
269
;====================================================
270
; Basic Block 12
271
;====================================================
272
;                       while(GetButton());
273
                bra     BIOSMain_107
274
BIOSMain_108:
275
;====================================================
276
; Basic Block 13
277
;====================================================
278
;                       FloatTest();
279
                call    _FloatTest
280
;                       break;
281
                bra     BIOSMain_85
282
BIOSMain_94:
283
BIOSMain_113:
284
;====================================================
285
; Basic Block 14
286
;====================================================
287
;       asm {
288
 
289
                        lb              $v0,BUTTONS
290
;       }
291
                beq     $v0,$r0,BIOSMain_114
292
;====================================================
293
; Basic Block 15
294
;====================================================
295
;                       while(GetButton());
296
                bra     BIOSMain_113
297
BIOSMain_114:
298
;====================================================
299
; Basic Block 16
300
;====================================================
301
;                       asm {
302
 
303
                        jmp     TinyBasicDSD9
304
BIOSMain_85:
305
                bra     BIOSMain_79
306
BIOSMain_72:
307
;====================================================
308
; Basic Block 17
309
;====================================================
310
                lw      $lr,8[$fp]
311
                sw      $lr,16[$fp]
312
                lw      $r21,0[$sp]
313
                lw      $r22,8[$sp]
314
                lw      $r23,16[$sp]
315
                mov     $sp,$fp
316
                lw      $fp,[$sp]
317
                lw      $xlr,8[$sp]
318
                lw      $lr,16[$sp]
319
                ret     #24
320
endpublic
321
 
322
 
323
 
324
;====================================================
325
; Basic Block 0
326
;====================================================
327
public code _BTNCIRQHandler:
328
                sub     $sp,$sp,#240
329
                sw      $v0,0[$sp]
330
                sw      $v1,8[$sp]
331
                sw      $v2,16[$sp]
332
                sw      $v3,24[$sp]
333
                sw      $t0,32[$sp]
334
                sw      $t1,40[$sp]
335
                sw      $t2,48[$sp]
336
                sw      $t3,56[$sp]
337
                sw      $t4,64[$sp]
338
                sw      $t5,72[$sp]
339
                sw      $t6,80[$sp]
340
                sw      $t7,88[$sp]
341
                sw      $t8,96[$sp]
342
                sw      $t9,104[$sp]
343
                sw      $t10,112[$sp]
344
                sw      $t11,120[$sp]
345
                sw      $t12,128[$sp]
346
                sw      $t13,136[$sp]
347
                sw      $t14,144[$sp]
348
                sw      $t15,152[$sp]
349
                sw      $r21,160[$sp]
350
                sw      $r22,168[$sp]
351
                sw      $r23,176[$sp]
352
                sw      $r24,184[$sp]
353
                sw      $r25,192[$sp]
354
                sw      $r26,200[$sp]
355
                sw      $r27,208[$sp]
356
                sw      $r28,216[$sp]
357
                sw      $r29,224[$sp]
358
                sw      $r30,232[$sp]
359
                sub     $sp,$sp,#24
360
                sw      $lr,16[$sp]
361
                sw      $xlr,8[$sp]
362
                sw      $fp,[$sp]
363
                ldi     $xlr,#BIOSMain_140
364
                mov     $fp,$sp
365
                sub     $sp,$sp,#8
366
                sub     $sp,$sp,#8
367
                sw      $r21,0[$sp]
368
                lw      $r21,-8[$fp]
369
;       asm {
370
 
371
                        ldi             r1,#30
372
                        sh              r1,PIC_ESR
373
;       DBGDisplayString("\r\nPC History:\r\n");
374
                sub     $sp,$sp,#8
375
                ldi     $t0,#BIOSMain_124
376
                sw      $t0,0[$sp]
377
                call    _DBGDisplayString
378
                add     $sp,$sp,#8
379
;       for (nn = 63; nn >= 0; nn--) {
380
                ldi     $r21,#63
381
BIOSMain_143:
382
                blt     $r21,$r0,BIOSMain_144
383
;====================================================
384
; Basic Block 1
385
;====================================================
386
;               SetPCHNDX(nn);
387
                mov     $a0,$r21
388
;       asm {
389
 
390
                        csrrw   $r0,#$101,$a0
391
;       asm {
392
 
393
                        csrrd   $v0,#$100,$r0
394
;       }
395
                mov     $a0,$v0
396
                call    _puthex
397
;               putch(' ');
398
                ldi     $a0,#32
399
                call    _putch
400
                sub     $r21,$r21,#1
401
                bra     BIOSMain_143
402
BIOSMain_144:
403
;====================================================
404
; Basic Block 2
405
;====================================================
406
                bra     BIOSMain_142
407
BIOSMain_140:
408
;====================================================
409
; Basic Block 3
410
;====================================================
411
                lw      $lr,8[$fp]
412
                sw      $lr,16[$fp]
413
BIOSMain_142:
414
                lw      $r21,0[$sp]
415
                mov     $sp,$fp
416
                lw      $fp,[$sp]
417
                lw      $xlr,8[$sp]
418
                lw      $lr,16[$sp]
419
                lw      $v0,0[$sp]
420
                lw      $v1,8[$sp]
421
                lw      $v2,16[$sp]
422
                lw      $v3,24[$sp]
423
                lw      $t0,32[$sp]
424
                lw      $t1,40[$sp]
425
                lw      $t2,48[$sp]
426
                lw      $t3,56[$sp]
427
                lw      $t4,64[$sp]
428
                lw      $t5,72[$sp]
429
                lw      $t6,80[$sp]
430
                lw      $t7,88[$sp]
431
                lw      $t8,96[$sp]
432
                lw      $t9,104[$sp]
433
                lw      $t10,112[$sp]
434
                lw      $t11,120[$sp]
435
                lw      $t12,128[$sp]
436
                lw      $t13,136[$sp]
437
                lw      $t14,144[$sp]
438
                lw      $t15,152[$sp]
439
                lw      $r21,160[$sp]
440
                lw      $r22,168[$sp]
441
                lw      $r23,176[$sp]
442
                lw      $r24,184[$sp]
443
                lw      $r25,192[$sp]
444
                lw      $r26,200[$sp]
445
                lw      $r27,208[$sp]
446
                lw      $r28,216[$sp]
447
                lw      $r29,224[$sp]
448
                lw      $r30,232[$sp]
449
                add     $sp,$sp,#240
450
                rte
451
endpublic
452
 
453
 
454
 
455
;====================================================
456
; Basic Block 0
457
;====================================================
458
public code _IBERout:
459
                sub     $sp,$sp,#240
460
                sw      $v0,0[$sp]
461
                sw      $v1,8[$sp]
462
                sw      $v2,16[$sp]
463
                sw      $v3,24[$sp]
464
                sw      $t0,32[$sp]
465
                sw      $t1,40[$sp]
466
                sw      $t2,48[$sp]
467
                sw      $t3,56[$sp]
468
                sw      $t4,64[$sp]
469
                sw      $t5,72[$sp]
470
                sw      $t6,80[$sp]
471
                sw      $t7,88[$sp]
472
                sw      $t8,96[$sp]
473
                sw      $t9,104[$sp]
474
                sw      $t10,112[$sp]
475
                sw      $t11,120[$sp]
476
                sw      $t12,128[$sp]
477
                sw      $t13,136[$sp]
478
                sw      $t14,144[$sp]
479
                sw      $t15,152[$sp]
480
                sw      $r21,160[$sp]
481
                sw      $r22,168[$sp]
482
                sw      $r23,176[$sp]
483
                sw      $r24,184[$sp]
484
                sw      $r25,192[$sp]
485
                sw      $r26,200[$sp]
486
                sw      $r27,208[$sp]
487
                sw      $r28,216[$sp]
488
                sw      $r29,224[$sp]
489
                sw      $r30,232[$sp]
490
                sub     $sp,$sp,#24
491
                sw      $lr,16[$sp]
492
                sw      $xlr,8[$sp]
493
                sw      $fp,[$sp]
494
                ldi     $xlr,#BIOSMain_174
495
                mov     $fp,$sp
496
                sub     $sp,$sp,#8
497
                sub     $sp,$sp,#8
498
                sw      $r21,0[$sp]
499
                lw      $r21,-8[$fp]
500
;       DBGDisplayString("\r\nInstruction Bus Error:\r\n");
501
                sub     $sp,$sp,#8
502
                ldi     $t0,#BIOSMain_155
503
                sw      $t0,0[$sp]
504
                call    _DBGDisplayString
505
                add     $sp,$sp,#8
506
;       DBGDisplayString("PC History:\r\n");
507
                sub     $sp,$sp,#8
508
                ldi     $t0,#BIOSMain_156
509
                sw      $t0,0[$sp]
510
                call    _DBGDisplayString
511
                add     $sp,$sp,#8
512
;       for (nn = 63; nn >= 0; nn--) {
513
                ldi     $r21,#63
514
BIOSMain_177:
515
                blt     $r21,$r0,BIOSMain_178
516
;====================================================
517
; Basic Block 1
518
;====================================================
519
;               SetPCHNDX(nn);
520
                mov     $a0,$r21
521
;       asm {
522
 
523
                        csrrw   $r0,#$101,$a0
524
;       asm {
525
 
526
                        csrrd   $v0,#$100,$r0
527
;       }
528
                mov     $a0,$v0
529
                call    _puthex
530
;               putch(' ');
531
                ldi     $a0,#32
532
                call    _putch
533
                sub     $r21,$r21,#1
534
                bra     BIOSMain_177
535
BIOSMain_178:
536
BIOSMain_188:
537
;====================================================
538
; Basic Block 2
539
;====================================================
540
                bra     BIOSMain_188
541
BIOSMain_174:
542
;====================================================
543
; Basic Block 3
544
;====================================================
545
                lw      $lr,8[$fp]
546
                sw      $lr,16[$fp]
547
                lw      $r21,0[$sp]
548
                mov     $sp,$fp
549
                lw      $fp,[$sp]
550
                lw      $xlr,8[$sp]
551
                lw      $lr,16[$sp]
552
                lw      $v0,0[$sp]
553
                lw      $v1,8[$sp]
554
                lw      $v2,16[$sp]
555
                lw      $v3,24[$sp]
556
                lw      $t0,32[$sp]
557
                lw      $t1,40[$sp]
558
                lw      $t2,48[$sp]
559
                lw      $t3,56[$sp]
560
                lw      $t4,64[$sp]
561
                lw      $t5,72[$sp]
562
                lw      $t6,80[$sp]
563
                lw      $t7,88[$sp]
564
                lw      $t8,96[$sp]
565
                lw      $t9,104[$sp]
566
                lw      $t10,112[$sp]
567
                lw      $t11,120[$sp]
568
                lw      $t12,128[$sp]
569
                lw      $t13,136[$sp]
570
                lw      $t14,144[$sp]
571
                lw      $t15,152[$sp]
572
                lw      $r21,160[$sp]
573
                lw      $r22,168[$sp]
574
                lw      $r23,176[$sp]
575
                lw      $r24,184[$sp]
576
                lw      $r25,192[$sp]
577
                lw      $r26,200[$sp]
578
                lw      $r27,208[$sp]
579
                lw      $r28,216[$sp]
580
                lw      $r29,224[$sp]
581
                lw      $r30,232[$sp]
582
                add     $sp,$sp,#240
583
                rte
584
endpublic
585
 
586
 
587
 
588
;====================================================
589
; Basic Block 0
590
;====================================================
591
public code _GrWaitQue:
592
                sub     $sp,$sp,#24
593
                sw      $fp,[$sp]
594
                mov     $fp,$sp
595
                sub     $sp,$sp,#0
596
;       asm {
597
 
598
                        sub             $sp,$sp,#16
599
                        sw              $v1,[$sp]
600
                        sw              $r6,8[$sp]
601
                        ldi             $r6,#$FFDCC000
602
                        neg             $v1,$a0
603
                        add             $v1,$v1,#1020
604
                        .0001:
605
                        lhu             $v0,$6E8[r6]
606
                        bgt             $v0,$v1,.0001
607
                        lw              $v1,[$sp]
608
                        lw              $r6,8[$sp]
609
                        add             $sp,$sp,#16
610
;       }
611
                mov     $sp,$fp
612
                lw      $fp,[$sp]
613
                ret     #24
614
endpublic
615
 
616
 
617
 
618
;====================================================
619
; Basic Block 0
620
;====================================================
621
public code _GrQueCmd:
622
                sub     $sp,$sp,#24
623
                sw      $fp,[$sp]
624
                mov     $fp,$sp
625
                sub     $sp,$sp,#0
626
;       asm {
627
 
628
                        sub             $sp,$sp,#8
629
                        sw              $r6,[$sp]
630
                        ldi             $r6,#$FFDCC000
631
                        sh              $a0,$6E0[$r6]           ; set value
632
                        sh              $a1,$6E4[$r6]           ; set command
633
                        sh              $r0,$6E8[$r6]           ; queue
634
                        lw              $r6,[$sp]
635
                        add             $sp,$sp,#8
636
;       }
637
                mov     $sp,$fp
638
                lw      $fp,[$sp]
639
                ret     #24
640
endpublic
641
 
642
 
643
 
644
;====================================================
645
; Basic Block 0
646
;====================================================
647
public code _GrResetCmdQue:
648
                sub     $sp,$sp,#24
649
                sw      $lr,16[$sp]
650
                sw      $xlr,8[$sp]
651
                sw      $fp,[$sp]
652
                ldi     $xlr,#BIOSMain_211
653
                mov     $fp,$sp
654
                sub     $sp,$sp,#8
655
                ldi     $a0,#0
656
                ldi     $a1,#254
657
                call    _GrQueCmd
658
                bra     BIOSMain_213
659
BIOSMain_211:
660
;====================================================
661
; Basic Block 1
662
;====================================================
663
                lw      $lr,8[$fp]
664
                sw      $lr,16[$fp]
665
BIOSMain_213:
666
                mov     $sp,$fp
667
                lw      $fp,[$sp]
668
                lw      $xlr,8[$sp]
669
                lw      $lr,16[$sp]
670
                ret     #24
671
endpublic
672
 
673
 
674
 
675
;====================================================
676
; Basic Block 0
677
;====================================================
678
public code _GrFlushCmdQue:
679
                sub     $sp,$sp,#24
680
                sw      $lr,16[$sp]
681
                sw      $xlr,8[$sp]
682
                sw      $fp,[$sp]
683
                ldi     $xlr,#BIOSMain_222
684
                mov     $fp,$sp
685
                sub     $sp,$sp,#16
686
                sub     $sp,$sp,#8
687
                sw      $r21,0[$sp]
688
                lw      $r21,-8[$fp]
689
;       GrWaitQue(4);
690
                ldi     $a0,#4
691
                call    _GrWaitQue
692
;       for (nn = 0; nn < 4; nn++)
693
                ldi     $r21,#0
694
BIOSMain_225:
695
                cmp     $t0,$r21,#4
696
                bge     $t0,$r0,BIOSMain_226,#2
697
;====================================================
698
; Basic Block 1
699
;====================================================
700
;               GrQueCmd(0,255);
701
                ldi     $a0,#0
702
                ldi     $a1,#255
703
                call    _GrQueCmd
704
                add     $r21,$r21,#1
705
                bra     BIOSMain_225
706
BIOSMain_226:
707
;====================================================
708
; Basic Block 2
709
;====================================================
710
                bra     BIOSMain_224
711
BIOSMain_222:
712
;====================================================
713
; Basic Block 3
714
;====================================================
715
                lw      $lr,8[$fp]
716
                sw      $lr,16[$fp]
717
BIOSMain_224:
718
                lw      $r21,0[$sp]
719
                mov     $sp,$fp
720
                lw      $fp,[$sp]
721
                lw      $xlr,8[$sp]
722
                lw      $lr,16[$sp]
723
                ret     #24
724
endpublic
725
 
726
 
727
 
728
;====================================================
729
; Basic Block 0
730
;====================================================
731
public code _GrPlotPoint:
732
                sub     $sp,$sp,#24
733
                sw      $lr,16[$sp]
734
                sw      $xlr,8[$sp]
735
                sw      $fp,[$sp]
736
                ldi     $xlr,#BIOSMain_233
737
                mov     $fp,$sp
738
                sub     $sp,$sp,#8
739
                sub     $sp,$sp,#32
740
                sw      $r21,0[$sp]
741
                sw      $r22,8[$sp]
742
                sw      $r23,16[$sp]
743
                sw      $r24,24[$sp]
744
                lw      $r21,48[$fp]
745
                lw      $r22,24[$fp]
746
                lw      $r23,32[$fp]
747
                lw      $r24,40[$fp]
748
;       GrWaitQue(5);
749
                ldi     $a0,#5
750
                call    _GrWaitQue
751
;       GrQueCmd(color & 0x7fff, 12);   // set pen color
752
                and     $t0,$r24,#32767
753
                mov     $a0,$t0
754
                ldi     $a1,#12
755
                call    _GrQueCmd
756
;       GrQueCmd(alpha & 0xffff, 14);   // set alpha value
757
                and     $t0,$r21,#65535
758
                mov     $a0,$t0
759
                ldi     $a1,#14
760
                call    _GrQueCmd
761
;       GrQueCmd(x,16);                 // set x0 pos
762
                mov     $a0,$r22
763
                ldi     $a1,#16
764
                call    _GrQueCmd
765
;       GrQueCmd(y,17);                 // set y0 pos
766
                mov     $a0,$r23
767
                ldi     $a1,#17
768
                call    _GrQueCmd
769
;       GrQueCmd(0x10,1);                               // plot point
770
                ldi     $a0,#16
771
                ldi     $a1,#1
772
                call    _GrQueCmd
773
                bra     BIOSMain_235
774
BIOSMain_233:
775
;====================================================
776
; Basic Block 1
777
;====================================================
778
                lw      $lr,8[$fp]
779
                sw      $lr,16[$fp]
780
BIOSMain_235:
781
                lw      $r21,0[$sp]
782
                lw      $r22,8[$sp]
783
                lw      $r23,16[$sp]
784
                lw      $r24,24[$sp]
785
                mov     $sp,$fp
786
                lw      $fp,[$sp]
787
                lw      $xlr,8[$sp]
788
                lw      $lr,16[$sp]
789
                ret     #24
790
endpublic
791
 
792
 
793
 
794
;====================================================
795
; Basic Block 0
796
;====================================================
797
public code _GrDrawLine:
798
                sub     $sp,$sp,#24
799
                sw      $lr,16[$sp]
800
                sw      $xlr,8[$sp]
801
                sw      $fp,[$sp]
802
                ldi     $xlr,#BIOSMain_241
803
                mov     $fp,$sp
804
                sub     $sp,$sp,#8
805
                sub     $sp,$sp,#48
806
                sw      $r21,0[$sp]
807
                sw      $r22,8[$sp]
808
                sw      $r23,16[$sp]
809
                sw      $r24,24[$sp]
810
                sw      $r25,32[$sp]
811
                sw      $r26,40[$sp]
812
                lw      $r21,40[$fp]
813
                lw      $r22,32[$fp]
814
                lw      $r23,24[$fp]
815
                lw      $r24,56[$fp]
816
                lw      $r25,64[$fp]
817
                lw      $r26,48[$fp]
818
;       GrWaitQue(7);
819
                ldi     $a0,#7
820
                call    _GrWaitQue
821
;       GrQueCmd(color & 0x7fff, 12);   // set pen color
822
                and     $t0,$r24,#32767
823
                mov     $a0,$t0
824
                ldi     $a1,#12
825
                call    _GrQueCmd
826
;       GrQueCmd(alpha & 0xffff, 14);   // set alpha value
827
                and     $t0,$r25,#65535
828
                mov     $a0,$t0
829
                ldi     $a1,#14
830
                call    _GrQueCmd
831
;       GrQueCmd(x0,16);                        // set x0 pos
832
                mov     $a0,$r23
833
                ldi     $a1,#16
834
                call    _GrQueCmd
835
;       GrQueCmd(y0,17);                        // set y0 pos
836
                mov     $a0,$r22
837
                ldi     $a1,#17
838
                call    _GrQueCmd
839
;       GrQueCmd(x1,19);                        // set x1 pos
840
                mov     $a0,$r21
841
                ldi     $a1,#19
842
                call    _GrQueCmd
843
;       GrQueCmd(y1,20);                        // set y1 pos
844
                mov     $a0,$r26
845
                ldi     $a1,#20
846
                call    _GrQueCmd
847
;       GrQueCmd(0x10,2);                               // draw line
848
                ldi     $a0,#16
849
                ldi     $a1,#2
850
                call    _GrQueCmd
851
                bra     BIOSMain_243
852
BIOSMain_241:
853
;====================================================
854
; Basic Block 1
855
;====================================================
856
                lw      $lr,8[$fp]
857
                sw      $lr,16[$fp]
858
BIOSMain_243:
859
                lw      $r21,0[$sp]
860
                lw      $r22,8[$sp]
861
                lw      $r23,16[$sp]
862
                lw      $r24,24[$sp]
863
                lw      $r25,32[$sp]
864
                lw      $r26,40[$sp]
865
                mov     $sp,$fp
866
                lw      $fp,[$sp]
867
                lw      $xlr,8[$sp]
868
                lw      $lr,16[$sp]
869
                ret     #24
870
endpublic
871
 
872
 
873
 
874
;====================================================
875
; Basic Block 0
876
;====================================================
877
public code _RandomPoints:
878
                sub     $sp,$sp,#24
879
                sw      $lr,16[$sp]
880
                sw      $xlr,8[$sp]
881
                sw      $fp,[$sp]
882
                ldi     $xlr,#BIOSMain_252
883
                mov     $fp,$sp
884
                sub     $sp,$sp,#32
885
                sub     $sp,$sp,#32
886
                sw      $r21,0[$sp]
887
                sw      $r22,8[$sp]
888
                sw      $r23,16[$sp]
889
                sw      $r24,24[$sp]
890
                lw      $r21,-8[$fp]
891
                lw      $r22,-16[$fp]
892
                lw      $r23,-32[$fp]
893
                lw      $r24,-24[$fp]
894
;       randStream = 0;
895
                sw      $r0,_randStream
896
;       for (nn = 0; nn < 10000; nn++) {
897
                ldi     $r21,#0
898
BIOSMain_255:
899
                cmp     $t0,$r21,#10000
900
                bge     $t0,$r0,BIOSMain_256,#2
901
;====================================================
902
; Basic Block 1
903
;====================================================
904
;               color = GetRand(randStream) & 0x7fff;
905
                lw      $t1,_randStream
906
                mov     $a0,$t1
907
                call    _GetRand
908
                and     $r23,$v0,#32767
909
;               x = (GetRand(randStream) % 400) + 128;
910
                lw      $t2,_randStream
911
                mov     $a0,$t2
912
                call    _GetRand
913
                mod     $t1,$v0,#400
914
                add     $r22,$t1,#128
915
;               y = (GetRand(randStream) % 300) + 14;
916
                lw      $t2,_randStream
917
                mov     $a0,$t2
918
                call    _GetRand
919
                mod     $t1,$v0,#300
920
                add     $r24,$t1,#14
921
;               GrPlotPoint(x<<16,y<<16,color,-1);
922
                sub     $sp,$sp,#32
923
                asl     $t0,$r22,#16
924
                sw      $t0,0[$sp]
925
                asl     $t1,$r24,#16
926
                sw      $t1,8[$sp]
927
                sw      $r23,16[$sp]
928
                ldi     $t2,#-1
929
                sw      $t2,24[$sp]
930
                call    _GrPlotPoint
931
                add     $sp,$sp,#32
932
                add     $r21,$r21,#1
933
                bra     BIOSMain_255
934
BIOSMain_256:
935
;====================================================
936
; Basic Block 2
937
;====================================================
938
                bra     BIOSMain_254
939
BIOSMain_252:
940
;====================================================
941
; Basic Block 3
942
;====================================================
943
                lw      $lr,8[$fp]
944
                sw      $lr,16[$fp]
945
BIOSMain_254:
946
                lw      $r21,0[$sp]
947
                lw      $r22,8[$sp]
948
                lw      $r23,16[$sp]
949
                lw      $r24,24[$sp]
950
                mov     $sp,$fp
951
                lw      $fp,[$sp]
952
                lw      $xlr,8[$sp]
953
                lw      $lr,16[$sp]
954
                ret     #24
955
endpublic
956
 
957
 
958
 
959
;====================================================
960
; Basic Block 0
961
;====================================================
962
public code _RandomLines:
963
                sub     $sp,$sp,#24
964
                sw      $lr,16[$sp]
965
                sw      $xlr,8[$sp]
966
                sw      $fp,[$sp]
967
                ldi     $xlr,#BIOSMain_266
968
                mov     $fp,$sp
969
                sub     $sp,$sp,#48
970
                sub     $sp,$sp,#48
971
                sw      $r21,0[$sp]
972
                sw      $r22,8[$sp]
973
                sw      $r23,16[$sp]
974
                sw      $r24,24[$sp]
975
                sw      $r25,32[$sp]
976
                sw      $r26,40[$sp]
977
                lw      $r21,-8[$fp]
978
                lw      $r22,-32[$fp]
979
                lw      $r23,-16[$fp]
980
                lw      $r24,-24[$fp]
981
                lw      $r25,-48[$fp]
982
                lw      $r26,-40[$fp]
983
;       randStream = 0;
984
                sw      $r0,_randStream
985
;       for (nn = 0; nn < 20000; nn++) {
986
                ldi     $r21,#0
987
BIOSMain_269:
988
                cmp     $t0,$r21,#20000
989
                bge     $t0,$r0,BIOSMain_270,#2
990
;====================================================
991
; Basic Block 1
992
;====================================================
993
;               color = GetRand(randStream) & 0x7fff;
994
                lw      $t1,_randStream
995
                mov     $a0,$t1
996
                call    _GetRand
997
                and     $r25,$v0,#32767
998
;               x0 = (GetRand(randStream) % 400) + 128;
999
                lw      $t2,_randStream
1000
                mov     $a0,$t2
1001
                call    _GetRand
1002
                mod     $t1,$v0,#400
1003
                add     $r23,$t1,#128
1004
;               y0 = (GetRand(randStream) % 300) + 14;
1005
                lw      $t2,_randStream
1006
                mov     $a0,$t2
1007
                call    _GetRand
1008
                mod     $t1,$v0,#300
1009
                add     $r24,$t1,#14
1010
;               x1 = (GetRand(randStream) % 400) + 128;
1011
                lw      $t2,_randStream
1012
                mov     $a0,$t2
1013
                call    _GetRand
1014
                mod     $t1,$v0,#400
1015
                add     $r22,$t1,#128
1016
;               y1 = (GetRand(randStream) % 300) + 14;
1017
                lw      $t2,_randStream
1018
                mov     $a0,$t2
1019
                call    _GetRand
1020
                mod     $t1,$v0,#300
1021
                add     $r26,$t1,#14
1022
;               GrDrawLine(x0<<16,y0<<16,x1<<16,y1<<16,color,-1);
1023
                sub     $sp,$sp,#48
1024
                asl     $t0,$r23,#16
1025
                sw      $t0,0[$sp]
1026
                asl     $t1,$r24,#16
1027
                sw      $t1,8[$sp]
1028
                asl     $t2,$r22,#16
1029
                sw      $t2,16[$sp]
1030
                asl     $t3,$r26,#16
1031
                sw      $t3,24[$sp]
1032
                sw      $r25,32[$sp]
1033
                ldi     $t4,#-1
1034
                sw      $t4,40[$sp]
1035
                call    _GrDrawLine
1036
                add     $sp,$sp,#48
1037
                add     $r21,$r21,#1
1038
                bra     BIOSMain_269
1039
BIOSMain_270:
1040
;====================================================
1041
; Basic Block 2
1042
;====================================================
1043
                bra     BIOSMain_268
1044
BIOSMain_266:
1045
;====================================================
1046
; Basic Block 3
1047
;====================================================
1048
                lw      $lr,8[$fp]
1049
                sw      $lr,16[$fp]
1050
BIOSMain_268:
1051
                lw      $r21,0[$sp]
1052
                lw      $r22,8[$sp]
1053
                lw      $r23,16[$sp]
1054
                lw      $r24,24[$sp]
1055
                lw      $r25,32[$sp]
1056
                lw      $r26,40[$sp]
1057
                mov     $sp,$fp
1058
                lw      $fp,[$sp]
1059
                lw      $xlr,8[$sp]
1060
                lw      $lr,16[$sp]
1061
                ret     #24
1062
endpublic
1063
 
1064
 
1065
 
1066
;====================================================
1067
; Basic Block 0
1068
;====================================================
1069
public code _GrFillRect:
1070
                sub     $sp,$sp,#24
1071
                sw      $lr,16[$sp]
1072
                sw      $xlr,8[$sp]
1073
                sw      $fp,[$sp]
1074
                ldi     $xlr,#BIOSMain_277
1075
                mov     $fp,$sp
1076
                sub     $sp,$sp,#8
1077
                sub     $sp,$sp,#40
1078
                sw      $r21,0[$sp]
1079
                sw      $r22,8[$sp]
1080
                sw      $r23,16[$sp]
1081
                sw      $r24,24[$sp]
1082
                sw      $r25,32[$sp]
1083
                lw      $r21,24[$fp]
1084
                lw      $r22,40[$fp]
1085
                lw      $r23,32[$fp]
1086
                lw      $r24,48[$fp]
1087
                lw      $r25,56[$fp]
1088
;       GrWaitQue(6);
1089
                ldi     $a0,#6
1090
                call    _GrWaitQue
1091
;       GrQueCmd(color & 0x7fff, 13);   // set fill color
1092
                and     $t0,$r25,#32767
1093
                mov     $a0,$t0
1094
                ldi     $a1,#13
1095
                call    _GrQueCmd
1096
;       GrQueCmd(x0,16);                        // set x0 pos
1097
                mov     $a0,$r21
1098
                ldi     $a1,#16
1099
                call    _GrQueCmd
1100
;       GrQueCmd(y0,17);                        // set y0 pos
1101
                mov     $a0,$r23
1102
                ldi     $a1,#17
1103
                call    _GrQueCmd
1104
;       GrQueCmd(x1,19);                        // set x1 pos
1105
                mov     $a0,$r22
1106
                ldi     $a1,#19
1107
                call    _GrQueCmd
1108
;       GrQueCmd(y1,20);                        // set y1 pos
1109
                mov     $a0,$r24
1110
                ldi     $a1,#20
1111
                call    _GrQueCmd
1112
;       GrQueCmd(0x10,3);                       // fill rect
1113
                ldi     $a0,#16
1114
                ldi     $a1,#3
1115
                call    _GrQueCmd
1116
                bra     BIOSMain_279
1117
BIOSMain_277:
1118
;====================================================
1119
; Basic Block 1
1120
;====================================================
1121
                lw      $lr,8[$fp]
1122
                sw      $lr,16[$fp]
1123
BIOSMain_279:
1124
                lw      $r21,0[$sp]
1125
                lw      $r22,8[$sp]
1126
                lw      $r23,16[$sp]
1127
                lw      $r24,24[$sp]
1128
                lw      $r25,32[$sp]
1129
                mov     $sp,$fp
1130
                lw      $fp,[$sp]
1131
                lw      $xlr,8[$sp]
1132
                lw      $lr,16[$sp]
1133
                ret     #24
1134
endpublic
1135
 
1136
 
1137
 
1138
;====================================================
1139
; Basic Block 0
1140
;====================================================
1141
public code _RandomRects:
1142
                sub     $sp,$sp,#24
1143
                sw      $lr,16[$sp]
1144
                sw      $xlr,8[$sp]
1145
                sw      $fp,[$sp]
1146
                ldi     $xlr,#BIOSMain_288
1147
                mov     $fp,$sp
1148
                sub     $sp,$sp,#48
1149
                sub     $sp,$sp,#48
1150
                sw      $r21,0[$sp]
1151
                sw      $r22,8[$sp]
1152
                sw      $r23,16[$sp]
1153
                sw      $r24,24[$sp]
1154
                sw      $r25,32[$sp]
1155
                sw      $r26,40[$sp]
1156
                lw      $r21,-8[$fp]
1157
                lw      $r22,-32[$fp]
1158
                lw      $r23,-16[$fp]
1159
                lw      $r24,-24[$fp]
1160
                lw      $r25,-48[$fp]
1161
                lw      $r26,-40[$fp]
1162
;       randStream = 0;
1163
                sw      $r0,_randStream
1164
;       for (nn = 0; nn < 1000; nn++) {
1165
                ldi     $r21,#0
1166
BIOSMain_291:
1167
                cmp     $t0,$r21,#1000
1168
                bge     $t0,$r0,BIOSMain_292,#2
1169
;====================================================
1170
; Basic Block 1
1171
;====================================================
1172
;               color = GetRand(randStream) & 0x7fff;
1173
                lw      $t1,_randStream
1174
                mov     $a0,$t1
1175
                call    _GetRand
1176
                and     $r25,$v0,#32767
1177
;               x0 = (GetRand(randStream) % 400) + 128;
1178
                lw      $t2,_randStream
1179
                mov     $a0,$t2
1180
                call    _GetRand
1181
                mod     $t1,$v0,#400
1182
                add     $r23,$t1,#128
1183
;               y0 = (GetRand(randStream) % 300) + 14;
1184
                lw      $t2,_randStream
1185
                mov     $a0,$t2
1186
                call    _GetRand
1187
                mod     $t1,$v0,#300
1188
                add     $r24,$t1,#14
1189
;               x1 = (GetRand(randStream) % 400) + 128;
1190
                lw      $t2,_randStream
1191
                mov     $a0,$t2
1192
                call    _GetRand
1193
                mod     $t1,$v0,#400
1194
                add     $r22,$t1,#128
1195
;               y1 = (GetRand(randStream) % 300) + 14;
1196
                lw      $t2,_randStream
1197
                mov     $a0,$t2
1198
                call    _GetRand
1199
                mod     $t1,$v0,#300
1200
                add     $r26,$t1,#14
1201
;               GrFillRect(x0<<16,y0<<16,x1<<16,y1<<16,color);
1202
                sub     $sp,$sp,#40
1203
                asl     $t0,$r23,#16
1204
                sw      $t0,0[$sp]
1205
                asl     $t1,$r24,#16
1206
                sw      $t1,8[$sp]
1207
                asl     $t2,$r22,#16
1208
                sw      $t2,16[$sp]
1209
                asl     $t3,$r26,#16
1210
                sw      $t3,24[$sp]
1211
                sw      $r25,32[$sp]
1212
                call    _GrFillRect
1213
                add     $sp,$sp,#40
1214
                add     $r21,$r21,#1
1215
                bra     BIOSMain_291
1216
BIOSMain_292:
1217
;====================================================
1218
; Basic Block 2
1219
;====================================================
1220
                bra     BIOSMain_290
1221
BIOSMain_288:
1222
;====================================================
1223
; Basic Block 3
1224
;====================================================
1225
                lw      $lr,8[$fp]
1226
                sw      $lr,16[$fp]
1227
BIOSMain_290:
1228
                lw      $r21,0[$sp]
1229
                lw      $r22,8[$sp]
1230
                lw      $r23,16[$sp]
1231
                lw      $r24,24[$sp]
1232
                lw      $r25,32[$sp]
1233
                lw      $r26,40[$sp]
1234
                mov     $sp,$fp
1235
                lw      $fp,[$sp]
1236
                lw      $xlr,8[$sp]
1237
                lw      $lr,16[$sp]
1238
                ret     #24
1239
endpublic
1240
 
1241
 
1242
 
1243
;====================================================
1244
; Basic Block 0
1245
;====================================================
1246
public code _GrDrawChar:
1247
                sub     $sp,$sp,#24
1248
                sw      $lr,16[$sp]
1249
                sw      $xlr,8[$sp]
1250
                sw      $fp,[$sp]
1251
                ldi     $xlr,#BIOSMain_299
1252
                mov     $fp,$sp
1253
                sub     $sp,$sp,#8
1254
                sub     $sp,$sp,#24
1255
                sw      $r21,0[$sp]
1256
                sw      $r22,8[$sp]
1257
                sw      $r23,16[$sp]
1258
                lw      $r21,40[$fp]
1259
                lw      $r22,24[$fp]
1260
                lw      $r23,32[$fp]
1261
;       GrWaitQue(5);
1262
                ldi     $a0,#5
1263
                call    _GrWaitQue
1264
;       GrQueCmd(0x7FFF, 12);   // set pen color
1265
                ldi     $a0,#32767
1266
                ldi     $a1,#12
1267
                call    _GrQueCmd
1268
;       GrQueCmd(0x000F, 13);   // set fill color
1269
                ldi     $a0,#15
1270
                ldi     $a1,#13
1271
                call    _GrQueCmd
1272
;       GrQueCmd(x,16);                 // set x0 pos
1273
                mov     $a0,$r22
1274
                ldi     $a1,#16
1275
                call    _GrQueCmd
1276
;       GrQueCmd(y,17);                 // set y0 pos
1277
                mov     $a0,$r23
1278
                ldi     $a1,#17
1279
                call    _GrQueCmd
1280
;       GrQueCmd(ch,0);                 // text blit
1281
                mov     $a0,$r21
1282
                ldi     $a1,#0
1283
                call    _GrQueCmd
1284
                bra     BIOSMain_301
1285
BIOSMain_299:
1286
;====================================================
1287
; Basic Block 1
1288
;====================================================
1289
                lw      $lr,8[$fp]
1290
                sw      $lr,16[$fp]
1291
BIOSMain_301:
1292
                lw      $r21,0[$sp]
1293
                lw      $r22,8[$sp]
1294
                lw      $r23,16[$sp]
1295
                mov     $sp,$fp
1296
                lw      $fp,[$sp]
1297
                lw      $xlr,8[$sp]
1298
                lw      $lr,16[$sp]
1299
                ret     #24
1300
endpublic
1301
 
1302
 
1303
 
1304
;====================================================
1305
; Basic Block 0
1306
;====================================================
1307
public code _RandomChars:
1308
                sub     $sp,$sp,#24
1309
                sw      $lr,16[$sp]
1310
                sw      $xlr,8[$sp]
1311
                sw      $fp,[$sp]
1312
                ldi     $xlr,#BIOSMain_310
1313
                mov     $fp,$sp
1314
                sub     $sp,$sp,#40
1315
                sub     $sp,$sp,#24
1316
                sw      $r21,0[$sp]
1317
                sw      $r22,8[$sp]
1318
                sw      $r23,16[$sp]
1319
                lw      $r21,-24[$fp]
1320
                lw      $r22,-16[$fp]
1321
                lw      $r23,-32[$fp]
1322
;       randStream = 0;
1323
                sw      $r0,_randStream
1324
;       y0 = 128;
1325
                ldi     $r23,#128
1326
;       ch = 'A';
1327
                ldi     $r22,#65
1328
;       GrWaitQue(2);
1329
                ldi     $a0,#2
1330
                call    _GrWaitQue
1331
;       GrQueCmd(0x7FFF, 12);   // set pen color
1332
                ldi     $a0,#32767
1333
                ldi     $a1,#12
1334
                call    _GrQueCmd
1335
;       GrQueCmd(0x000F, 13);   // set fill color
1336
                ldi     $a0,#15
1337
                ldi     $a1,#13
1338
                call    _GrQueCmd
1339
;       for (x0 = 128; x0 < 500; x0 += 10) {
1340
                ldi     $r21,#128
1341
BIOSMain_313:
1342
                cmp     $t0,$r21,#500
1343
                bge     $t0,$r0,BIOSMain_314,#2
1344
;====================================================
1345
; Basic Block 1
1346
;====================================================
1347
;               GrWaitQue(3);
1348
                ldi     $a0,#3
1349
                call    _GrWaitQue
1350
;               GrQueCmd(x0<<16,16);
1351
                asl     $t0,$r21,#16
1352
                mov     $a0,$t0
1353
                ldi     $a1,#16
1354
                call    _GrQueCmd
1355
;               GrQueCmd(y0<<16,17);
1356
                asl     $t0,$r23,#16
1357
                mov     $a0,$t0
1358
                ldi     $a1,#17
1359
                call    _GrQueCmd
1360
;               GrQueCmd(ch,0);
1361
                mov     $a0,$r22
1362
                ldi     $a1,#0
1363
                call    _GrQueCmd
1364
;               ch++;
1365
                add     $r22,$r22,#1
1366
                add     $r21,$r21,#10
1367
                bra     BIOSMain_313
1368
BIOSMain_314:
1369
;====================================================
1370
; Basic Block 2
1371
;====================================================
1372
                bra     BIOSMain_312
1373
BIOSMain_310:
1374
;====================================================
1375
; Basic Block 3
1376
;====================================================
1377
                lw      $lr,8[$fp]
1378
                sw      $lr,16[$fp]
1379
BIOSMain_312:
1380
                lw      $r21,0[$sp]
1381
                lw      $r22,8[$sp]
1382
                lw      $r23,16[$sp]
1383
                mov     $sp,$fp
1384
                lw      $fp,[$sp]
1385
                lw      $xlr,8[$sp]
1386
                lw      $lr,16[$sp]
1387
                ret     #24
1388
endpublic
1389
 
1390
 
1391
 
1392
;====================================================
1393
; Basic Block 0
1394
;====================================================
1395
public code _GrClearScreen:
1396
                sub     $sp,$sp,#24
1397
                sw      $fp,[$sp]
1398
                mov     $fp,$sp
1399
                sub     $sp,$sp,#16
1400
                sub     $sp,$sp,#24
1401
                sw      $r21,0[$sp]
1402
                sw      $r22,8[$sp]
1403
                sw      $r23,16[$sp]
1404
                lw      $r21,-8[$fp]
1405
                ldi     $r22,#480000
1406
;       int nn;
1407
                ldi     $r23,#1048576
1408
;       for (nn = 0; nn < 480000; nn++)
1409
                ldi     $r21,#0
1410
BIOSMain_327:
1411
                bge     $r21,$r22,BIOSMain_328,#2
1412
;====================================================
1413
; Basic Block 1
1414
;====================================================
1415
;               pScreen[nn] = 0x000f;
1416
                shl     $v0,$r21,#1
1417
                ldi     $v1,#15
1418
                sc      $v1,[$r23+$v0]
1419
                add     $r21,$r21,#1
1420
                bra     BIOSMain_327
1421
BIOSMain_328:
1422
;====================================================
1423
; Basic Block 2
1424
;====================================================
1425
                lw      $r21,0[$sp]
1426
                lw      $r22,8[$sp]
1427
                lw      $r23,16[$sp]
1428
                mov     $sp,$fp
1429
                lw      $fp,[$sp]
1430
                ret     #24
1431
endpublic
1432
 
1433
 
1434
 
1435
;====================================================
1436
; Basic Block 0
1437
;====================================================
1438
public code _ColorBandMemory:
1439
                sub     $sp,$sp,#24
1440
                sw      $lr,16[$sp]
1441
                sw      $xlr,8[$sp]
1442
                sw      $fp,[$sp]
1443
                ldi     $xlr,#BIOSMain_340
1444
                mov     $fp,$sp
1445
                sub     $sp,$sp,#24
1446
                sub     $sp,$sp,#32
1447
                sw      $r21,0[$sp]
1448
                sw      $r22,8[$sp]
1449
                sw      $r23,16[$sp]
1450
                sw      $r24,24[$sp]
1451
                lw      $r21,-16[$fp]
1452
                ldi     $r22,#480000
1453
                lc      $r23,-18[$fp]
1454
;       __int16 *pScreen = (__int16 *)0x100000;
1455
                ldi     $r24,#1048576
1456
;       randStream = 0;
1457
                sw      $r0,_randStream
1458
;       for (nn = 0; nn < 480000; nn++) {
1459
                ldi     $r21,#0
1460
BIOSMain_343:
1461
                bge     $r21,$r22,BIOSMain_344,#2
1462
;====================================================
1463
; Basic Block 1
1464
;====================================================
1465
;               if (nn % 1024 == 0)
1466
                and     $t0,$r21,#1023
1467
                bne     $t0,$r0,BIOSMain_346
1468
;====================================================
1469
; Basic Block 2
1470
;====================================================
1471
;                       color = GetRand(randStream);
1472
                lw      $t0,_randStream
1473
                mov     $a0,$t0
1474
                call    _GetRand
1475
                mov     $r23,$v0
1476
BIOSMain_346:
1477
;               pScreen[nn] = color;
1478
                sc      $r23,[$r24+$r21*2]
1479
                add     $r21,$r21,#1
1480
                bra     BIOSMain_343
1481
BIOSMain_344:
1482
;====================================================
1483
; Basic Block 3
1484
;====================================================
1485
                bra     BIOSMain_342
1486
BIOSMain_340:
1487
;====================================================
1488
; Basic Block 4
1489
;====================================================
1490
                lw      $lr,8[$fp]
1491
                sw      $lr,16[$fp]
1492
BIOSMain_342:
1493
                lw      $r21,0[$sp]
1494
                lw      $r22,8[$sp]
1495
                lw      $r23,16[$sp]
1496
                lw      $r24,24[$sp]
1497
                mov     $sp,$fp
1498
                lw      $fp,[$sp]
1499
                lw      $xlr,8[$sp]
1500
                lw      $lr,16[$sp]
1501
                ret     #24
1502
endpublic
1503
 
1504
 
1505
 
1506
;====================================================
1507
; Basic Block 0
1508
;====================================================
1509
public code _EnableSprite:
1510
                sub     $sp,$sp,#24
1511
                sw      $fp,[$sp]
1512
                mov     $fp,$sp
1513
                sub     $sp,$sp,#8
1514
                sub     $sp,$sp,#16
1515
                sw      $r21,0[$sp]
1516
                sw      $r22,8[$sp]
1517
                lw      $r21,-8[$fp]
1518
                lw      $r22,16[$fp]
1519
;       unsigned __int32 *pAVIC = ((unsigned __int32 *)0xFFDCC000);
1520
                ldi     $r21,#4292657152
1521
;       pAVIC[492] = pAVIC[492] | (1 << spriteno);
1522
                lh      $v1,1968[$r21]
1523
                ldi     $v3,#1
1524
                asl.h   $v2,$v3,$r22
1525
                or      $v0,$v1,$v2
1526
                sh      $v0,1968[$r21]
1527
                bfextu  $v0,$v0,#0,#31
1528
                lw      $r21,0[$sp]
1529
                lw      $r22,8[$sp]
1530
                mov     $sp,$fp
1531
                lw      $fp,[$sp]
1532
                ret     #24
1533
endpublic
1534
 
1535
 
1536
 
1537
;====================================================
1538
; Basic Block 0
1539
;====================================================
1540
public code _EnableSprites:
1541
                sub     $sp,$sp,#24
1542
                sw      $fp,[$sp]
1543
                mov     $fp,$sp
1544
                sub     $sp,$sp,#8
1545
                sub     $sp,$sp,#16
1546
                sw      $r21,0[$sp]
1547
                sw      $r22,8[$sp]
1548
                lw      $r21,-8[$fp]
1549
                lw      $r22,16[$fp]
1550
;       unsigned __int32 *pAVIC = ((unsigned __int32 *)0xFFDCC000);
1551
                ldi     $r21,#4292657152
1552
;       pAVIC[492] = pAVIC[492] | sprites;
1553
                lh      $v1,1968[$r21]
1554
                or      $v0,$v1,$r22
1555
                sh      $v0,1968[$r21]
1556
                bfextu  $v0,$v0,#0,#31
1557
                lw      $r21,0[$sp]
1558
                lw      $r22,8[$sp]
1559
                mov     $sp,$fp
1560
                lw      $fp,[$sp]
1561
                ret     #24
1562
endpublic
1563
 
1564
 
1565
 
1566
;====================================================
1567
; Basic Block 0
1568
;====================================================
1569
public code _RandomizeSpriteColors:
1570
                sub     $sp,$sp,#24
1571
                sw      $lr,16[$sp]
1572
                sw      $xlr,8[$sp]
1573
                sw      $fp,[$sp]
1574
                ldi     $xlr,#BIOSMain_372
1575
                mov     $fp,$sp
1576
                sub     $sp,$sp,#16
1577
                sub     $sp,$sp,#16
1578
                sw      $r21,0[$sp]
1579
                sw      $r22,8[$sp]
1580
                lw      $r21,-8[$fp]
1581
;       int colorno;
1582
                ldi     $r22,#4292657152
1583
;       randStream = 0;
1584
                sw      $r0,_randStream
1585
;       for (colorno = 2; colorno < 256; colorno++) {
1586
                ldi     $r21,#2
1587
BIOSMain_375:
1588
                cmp     $t0,$r21,#256
1589
                bge     $t0,$r0,BIOSMain_376,#2
1590
;====================================================
1591
; Basic Block 1
1592
;====================================================
1593
;               pSprite[colorno] = GetRand(randStream) & 0x7fff;
1594
                shl     $t0,$r21,#2
1595
                lw      $t2,_randStream
1596
                mov     $a0,$t2
1597
                call    _GetRand
1598
                and     $t1,$v0,#32767
1599
                sh      $t1,[$r22+$t0]
1600
                bfextu  $t1,$t1,#0,#31
1601
                add     $r21,$r21,#1
1602
                bra     BIOSMain_375
1603
BIOSMain_376:
1604
;====================================================
1605
; Basic Block 2
1606
;====================================================
1607
                bra     BIOSMain_374
1608
BIOSMain_372:
1609
;====================================================
1610
; Basic Block 3
1611
;====================================================
1612
                lw      $lr,8[$fp]
1613
                sw      $lr,16[$fp]
1614
BIOSMain_374:
1615
                lw      $r21,0[$sp]
1616
                lw      $r22,8[$sp]
1617
                mov     $sp,$fp
1618
                lw      $fp,[$sp]
1619
                lw      $xlr,8[$sp]
1620
                lw      $lr,16[$sp]
1621
                ret     #24
1622
endpublic
1623
 
1624
 
1625
 
1626
;====================================================
1627
; Basic Block 0
1628
;====================================================
1629
public code _SetSpritePos:
1630
                sub     $sp,$sp,#24
1631
                sw      $fp,[$sp]
1632
                mov     $fp,$sp
1633
                sub     $sp,$sp,#8
1634
                sub     $sp,$sp,#32
1635
                sw      $r21,0[$sp]
1636
                sw      $r22,8[$sp]
1637
                sw      $r23,16[$sp]
1638
                sw      $r24,24[$sp]
1639
                lw      $r21,-8[$fp]
1640
                lw      $r22,32[$fp]
1641
                lw      $r23,16[$fp]
1642
                lw      $r24,24[$fp]
1643
;       __int32 *pSprite = &((unsigned __int32 *)0xFFDCC000)[0x100];
1644
                ldi     $v1,#1024
1645
                or      $v2,$r0,#4292657152
1646
                add     $r21,$v1,$v2
1647
;       pSprite[spriteno*4 + 2] = (__int32)((y << 16) | x);
1648
                shl     $v2,$r23,#2
1649
                shl     $v1,$v2,#2
1650
                add     $v0,$v1,$r21
1651
                asl.h   $v2,$r22,#16
1652
                or      $v1,$v2,$r24
1653
                sh      $v1,8[$v0]
1654
                lw      $r21,0[$sp]
1655
                lw      $r22,8[$sp]
1656
                lw      $r23,16[$sp]
1657
                lw      $r24,24[$sp]
1658
                mov     $sp,$fp
1659
                lw      $fp,[$sp]
1660
                ret     #24
1661
endpublic
1662
 
1663
 
1664
 
1665
;====================================================
1666
; Basic Block 0
1667
;====================================================
1668
public code _RandomizeSpritePositions:
1669
                sub     $sp,$sp,#24
1670
                sw      $lr,16[$sp]
1671
                sw      $xlr,8[$sp]
1672
                sw      $fp,[$sp]
1673
                ldi     $xlr,#BIOSMain_394
1674
                mov     $fp,$sp
1675
                sub     $sp,$sp,#32
1676
                sub     $sp,$sp,#32
1677
                sw      $r21,0[$sp]
1678
                sw      $r22,8[$sp]
1679
                sw      $r23,16[$sp]
1680
                sw      $r24,24[$sp]
1681
                lw      $r21,-8[$fp]
1682
                lw      $r22,-32[$fp]
1683
                lw      $r23,-16[$fp]
1684
                lw      $r24,-24[$fp]
1685
;       int spriteno;
1686
                ldi     $t1,#1024
1687
                or      $t2,$r0,#4292657152
1688
                add     $r22,$t1,$t2
1689
;       randStream = 0;
1690
                sw      $r0,_randStream
1691
;       for (spriteno = 0; spriteno < 32; spriteno++) {
1692
                ldi     $r21,#0
1693
BIOSMain_397:
1694
                cmp     $t0,$r21,#32
1695
                bge     $t0,$r0,BIOSMain_398,#2
1696
;====================================================
1697
; Basic Block 1
1698
;====================================================
1699
;               x = (GetRand(randStream) % 400) + 128;
1700
                lw      $t2,_randStream
1701
                mov     $a0,$t2
1702
                call    _GetRand
1703
                mod     $t1,$v0,#400
1704
                add     $r23,$t1,#128
1705
;               y = (GetRand(randStream) % 300) + 14;
1706
                lw      $t2,_randStream
1707
                mov     $a0,$t2
1708
                call    _GetRand
1709
                mod     $t1,$v0,#300
1710
                add     $r24,$t1,#14
1711
;               pSprite[2] = (y << 16) | x;
1712
                asl.h   $t1,$r24,#16
1713
                or      $t0,$t1,$r23
1714
                sh      $t0,8[$r22]
1715
;               pSprite += 4;
1716
                add     $r22,$r22,#16
1717
                add     $r21,$r21,#1
1718
                bra     BIOSMain_397
1719
BIOSMain_398:
1720
;====================================================
1721
; Basic Block 2
1722
;====================================================
1723
                bra     BIOSMain_396
1724
BIOSMain_394:
1725
;====================================================
1726
; Basic Block 3
1727
;====================================================
1728
                lw      $lr,8[$fp]
1729
                sw      $lr,16[$fp]
1730
BIOSMain_396:
1731
BIOSMain_400:
1732
                lw      $r21,0[$sp]
1733
                lw      $r22,8[$sp]
1734
                lw      $r23,16[$sp]
1735
                lw      $r24,24[$sp]
1736
                mov     $sp,$fp
1737
                lw      $fp,[$sp]
1738
                lw      $xlr,8[$sp]
1739
                lw      $lr,16[$sp]
1740
                ret     #24
1741
endpublic
1742
 
1743
 
1744
 
1745
;====================================================
1746
; Basic Block 0
1747
;====================================================
1748
public code _SpriteDemo:
1749
                sub     $sp,$sp,#24
1750
                sw      $lr,16[$sp]
1751
                sw      $xlr,8[$sp]
1752
                sw      $fp,[$sp]
1753
                ldi     $xlr,#BIOSMain_468
1754
                mov     $fp,$sp
1755
                sub     $sp,$sp,#584
1756
                sub     $sp,$sp,#104
1757
                sw      $r21,0[$sp]
1758
                sw      $r22,8[$sp]
1759
                sw      $r23,16[$sp]
1760
                sw      $r24,24[$sp]
1761
                sw      $r25,32[$sp]
1762
                sw      $r26,40[$sp]
1763
                sw      $r27,48[$sp]
1764
                sw      $r28,56[$sp]
1765
                sw      $r29,64[$sp]
1766
                sw      $r30,72[$sp]
1767
                sw      $r31,80[$sp]
1768
                sw      $r32,88[$sp]
1769
                sw      $r33,96[$sp]
1770
                lw      $r21,-8[$fp]
1771
                lw      $r22,-528[$fp]
1772
                lw      $r23,-536[$fp]
1773
                lw      $r24,-552[$fp]
1774
                lea     $t0,-136[$fp]
1775
                mov     $r25,$t0
1776
                lea     $t0,-264[$fp]
1777
                mov     $r26,$t0
1778
                lw      $r27,-576[$fp]
1779
                lw      $r28,-560[$fp]
1780
                lw      $r29,-544[$fp]
1781
                lea     $t0,-520[$fp]
1782
                mov     $r30,$t0
1783
                lea     $t0,-392[$fp]
1784
                mov     $r31,$t0
1785
                lw      $r32,-568[$fp]
1786
                ldi     $r33,#50000
1787
;       int spriteno;
1788
                ldi     $t1,#1024
1789
                or      $t2,$r0,#4292657152
1790
                add     $r32,$t1,$t2
1791
                ldi     $r27,#503316480
1792
;       randStream = 0;
1793
                sw      $r0,_randStream
1794
;       LEDS(2);
1795
                ldi     $a0,#2
1796
;       asm {
1797
 
1798
                        sh              $a0,$FFDC0600
1799
;       RandomizeSpriteColors();
1800
                call    _RandomizeSpriteColors
1801
;       EnableSprites(-1);
1802
                sub     $sp,$sp,#8
1803
                ldi     $t0,#-1
1804
                sw      $t0,0[$sp]
1805
                call    _EnableSprites
1806
                add     $sp,$sp,#8
1807
;       for (n = 0; n < 32 * 32 * 4; n = n + 1)
1808
                ldi     $r22,#0
1809
BIOSMain_475:
1810
                cmp     $t0,$r22,#4096
1811
                bge     $t0,$r0,BIOSMain_476,#2
1812
;====================================================
1813
; Basic Block 1
1814
;====================================================
1815
;               pImages[n] = GetRand(randStream);
1816
                shl     $t0,$r22,#2
1817
                lw      $t1,_randStream
1818
                mov     $a0,$t1
1819
                call    _GetRand
1820
                sh      $v0,[$r27+$t0]
1821
                bfextu  $v0,$v0,#0,#31
1822
                add     $r22,$r22,#1
1823
                bra     BIOSMain_475
1824
BIOSMain_476:
1825
;====================================================
1826
; Basic Block 2
1827
;====================================================
1828
;       x = 128; y = 64;
1829
                ldi     $r24,#128
1830
                ldi     $r28,#64
1831
;       for (spriteno = 0; spriteno < 32; spriteno++) {
1832
                ldi     $r21,#0
1833
BIOSMain_478:
1834
                cmp     $t0,$r21,#32
1835
                bge     $t0,$r0,BIOSMain_479,#2
1836
;====================================================
1837
; Basic Block 3
1838
;====================================================
1839
;               pSprite[spriteno*4] = (__int32)&pImages[spriteno * 128];
1840
                shl     $t1,$r21,#2
1841
                shl     $t0,$t1,#2
1842
                shl.h   $t3,$r21,#7
1843
                shl.h   $t2,$t3,#2
1844
                add     $t1,$t2,$r27
1845
                sh      $t1,[$r32+$t0]
1846
;               pSprite[spriteno*4+1] = 32*60;
1847
                shl     $t2,$r21,#2
1848
                shl     $t1,$t2,#2
1849
                add     $t0,$t1,$r32
1850
                ldi     $t1,#1920
1851
                sh      $t1,4[$t0]
1852
                bfextu  $t1,$t1,#0,#31
1853
;               xpos[spriteno] = x;
1854
                sh      $r24,[$r25+$r21*4]
1855
;               ypos[spriteno] = y;
1856
                sh      $r28,[$r26+$r21*4]
1857
;               SetSpritePos(spriteno, x, y);
1858
                sub     $sp,$sp,#24
1859
                sw      $r21,0[$sp]
1860
                sw      $r24,8[$sp]
1861
                sw      $r28,16[$sp]
1862
                call    _SetSpritePos
1863
                add     $sp,$sp,#24
1864
;               x += 20;
1865
                add     $r24,$r24,#20
1866
;               if (x >= 500) {
1867
                cmp     $t0,$r24,#500
1868
                blt     $t0,$r0,BIOSMain_481,#0
1869
;====================================================
1870
; Basic Block 4
1871
;====================================================
1872
;                       x = 128;
1873
                ldi     $r24,#128
1874
;                       y += 64;
1875
                add     $r28,$r28,#64
1876
BIOSMain_481:
1877
                add     $r21,$r21,#1
1878
                bra     BIOSMain_478
1879
BIOSMain_479:
1880
;====================================================
1881
; Basic Block 5
1882
;====================================================
1883
;       LEDS(0xf7);
1884
                ldi     $a0,#247
1885
;       asm {
1886
 
1887
                        sh              $a0,$FFDC0600
1888
BIOSMain_487:
1889
;               btn = GetButton() & 31;
1890
                sw      $t0,584[$fp]
1891
;       asm {
1892
 
1893
                        lb              $v0,BUTTONS
1894
;       }
1895
                lw      $t0,584[$fp]
1896
                and     $a0,$v0,#31
1897
;       asm {
1898
 
1899
                        sh              $a0,$FFDC0600
1900
;               case 8: goto j1;
1901
                bbs     $r29,#3,BIOSMain_500
1902
;====================================================
1903
; Basic Block 6
1904
;====================================================
1905
                bra     BIOSMain_497
1906
BIOSMain_500:
1907
;====================================================
1908
; Basic Block 7
1909
;====================================================
1910
                bra     BIOSMain_401
1911
BIOSMain_497:
1912
;====================================================
1913
; Basic Block 8
1914
;====================================================
1915
                bra     BIOSMain_487
1916
BIOSMain_401:
1917
BIOSMain_501:
1918
;====================================================
1919
; Basic Block 9
1920
;====================================================
1921
                sw      $t0,584[$fp]
1922
;       asm {
1923
 
1924
                        lb              $v0,BUTTONS
1925
;       }
1926
                and     $t0,$v0,#31
1927
                beq     $t0,$r0,BIOSMain_502
1928
;====================================================
1929
; Basic Block 10
1930
;====================================================
1931
;       while (GetButton() & 31);
1932
                bra     BIOSMain_501
1933
BIOSMain_502:
1934
;====================================================
1935
; Basic Block 11
1936
;====================================================
1937
;       for (spriteno = 0; spriteno < 32; spriteno++) {
1938
                ldi     $r21,#0
1939
BIOSMain_507:
1940
                cmp     $t0,$r21,#32
1941
                bge     $t0,$r0,BIOSMain_508,#2
1942
;====================================================
1943
; Basic Block 12
1944
;====================================================
1945
;               dx[spriteno] = (GetRand(randStream) % 16) - 8;
1946
                shl     $t0,$r21,#2
1947
                lw      $t3,_randStream
1948
                mov     $a0,$t3
1949
                call    _GetRand
1950
                and     $t2,$v0,#15
1951
                sub     $t1,$t2,#8
1952
                sh      $t1,[$r31+$t0]
1953
;               dy[spriteno] = (GetRand(randStream) % 16) - 8;
1954
                shl     $t0,$r21,#2
1955
                lw      $t3,_randStream
1956
                mov     $a0,$t3
1957
                call    _GetRand
1958
                and     $t2,$v0,#15
1959
                sub     $t1,$t2,#8
1960
                sh      $t1,[$r30+$t0]
1961
                add     $r21,$r21,#1
1962
                bra     BIOSMain_507
1963
BIOSMain_508:
1964
;====================================================
1965
; Basic Block 13
1966
;====================================================
1967
;       for (n = 0; n < 32 * 32 * 2; n = n + 1)
1968
                ldi     $r22,#0
1969
BIOSMain_510:
1970
                cmp     $t0,$r22,#2048
1971
                bge     $t0,$r0,BIOSMain_511,#2
1972
;====================================================
1973
; Basic Block 14
1974
;====================================================
1975
;               pImages[n] = GetRand(randStream);
1976
                shl     $t0,$r22,#2
1977
                lw      $t1,_randStream
1978
                mov     $a0,$t1
1979
                call    _GetRand
1980
                sh      $v0,[$r27+$t0]
1981
                bfextu  $v0,$v0,#0,#31
1982
                add     $r22,$r22,#1
1983
                bra     BIOSMain_510
1984
BIOSMain_511:
1985
BIOSMain_513:
1986
;====================================================
1987
; Basic Block 15
1988
;====================================================
1989
;               for (m = 0; m < 50000; m++);    // Timing delay
1990
                ldi     $r23,#0
1991
BIOSMain_515:
1992
                bge     $r23,$r33,BIOSMain_516,#2
1993
;====================================================
1994
; Basic Block 16
1995
;====================================================
1996
                add     $r23,$r23,#1
1997
                bra     BIOSMain_515
1998
BIOSMain_516:
1999
;====================================================
2000
; Basic Block 17
2001
;====================================================
2002
;               for (spriteno = 0; spriteno < 32; spriteno++) {
2003
                ldi     $r21,#0
2004
BIOSMain_518:
2005
                cmp     $t0,$r21,#32
2006
                bge     $t0,$r0,BIOSMain_519,#2
2007
;====================================================
2008
; Basic Block 18
2009
;====================================================
2010
;                       LEDS(spriteno);
2011
                mov     $a0,$r21
2012
;       asm {
2013
 
2014
                        sh              $a0,$FFDC0600
2015
;                       xpos[spriteno] = xpos[spriteno] + dx[spriteno];
2016
                shl     $t0,$r21,#2
2017
                lh      $t2,[$r25+$r21*4]
2018
                lh      $t3,[$r31+$r21*4]
2019
                add     $t1,$t2,$t3
2020
                sh      $t1,[$r25+$t0]
2021
;                       ypos[spriteno] = ypos[spriteno] + dy[spriteno];
2022
                shl     $t0,$r21,#2
2023
                lh      $t2,[$r26+$r21*4]
2024
                lh      $t3,[$r30+$r21*4]
2025
                add     $t1,$t2,$t3
2026
                sh      $t1,[$r26+$t0]
2027
;                       if (xpos[spriteno] < 128) {
2028
                lh      $t0,[$r25+$r21*4]
2029
                cmp     $t1,$t0,#128
2030
                bge     $t1,$r0,BIOSMain_525,#0
2031
;====================================================
2032
; Basic Block 19
2033
;====================================================
2034
;                               xpos[spriteno] = 128;
2035
                shl     $t0,$r21,#2
2036
                ldi     $t1,#128
2037
                sh      $t1,[$r25+$t0]
2038
;                               dx[spriteno] = -dx[spriteno];
2039
                shl     $t0,$r21,#2
2040
                lh      $t2,[$r31+$r21*4]
2041
                neg     $t1,$t2
2042
                sh      $t1,[$r31+$t0]
2043
BIOSMain_525:
2044
;                       if (xpos[spriteno] >= 528) {
2045
                lh      $t0,[$r25+$r21*4]
2046
                cmp     $t1,$t0,#528
2047
                blt     $t1,$r0,BIOSMain_527,#0
2048
;====================================================
2049
; Basic Block 20
2050
;====================================================
2051
;                               xpos[spriteno] = 528;
2052
                shl     $t0,$r21,#2
2053
                ldi     $t1,#528
2054
                sh      $t1,[$r25+$t0]
2055
;                               dx[spriteno] = -dx[spriteno];
2056
                shl     $t0,$r21,#2
2057
                lh      $t2,[$r31+$r21*4]
2058
                neg     $t1,$t2
2059
                sh      $t1,[$r31+$t0]
2060
BIOSMain_527:
2061
;                       if (ypos[spriteno] < 14) {
2062
                lh      $t0,[$r26+$r21*4]
2063
                cmp     $t1,$t0,#14
2064
                bge     $t1,$r0,BIOSMain_529,#0
2065
;====================================================
2066
; Basic Block 21
2067
;====================================================
2068
;                               ypos[spriteno] = 14;
2069
                shl     $t0,$r21,#2
2070
                ldi     $t1,#14
2071
                sh      $t1,[$r26+$t0]
2072
;                               dy[spriteno] = -dy[spriteno];
2073
                shl     $t0,$r21,#2
2074
                lh      $t2,[$r30+$r21*4]
2075
                neg     $t1,$t2
2076
                sh      $t1,[$r30+$t0]
2077
BIOSMain_529:
2078
;                       if (ypos[spriteno] >= 314)
2079
                lh      $t0,[$r26+$r21*4]
2080
                cmp     $t1,$t0,#314
2081
                blt     $t1,$r0,BIOSMain_531,#0
2082
;====================================================
2083
; Basic Block 22
2084
;====================================================
2085
;                               ypos[spriteno] = 314;
2086
                shl     $t0,$r21,#2
2087
                ldi     $t1,#314
2088
                sh      $t1,[$r26+$t0]
2089
BIOSMain_531:
2090
;                               dy[spriteno] = -dy[spriteno];
2091
                shl     $t0,$r21,#2
2092
                lh      $t2,[$r30+$r21*4]
2093
                neg     $t1,$t2
2094
                sh      $t1,[$r30+$t0]
2095
                add     $r21,$r21,#1
2096
                bra     BIOSMain_518
2097
BIOSMain_519:
2098
;====================================================
2099
; Basic Block 23
2100
;====================================================
2101
;                       SetSpritePos(spriteno, (int)xpos[spriteno], (int)ypos[spriteno]);
2102
                sub     $sp,$sp,#24
2103
                sw      $r21,0[$sp]
2104
                lh      $t0,[$r25+$r21*4]
2105
                sw      $t0,8[$sp]
2106
                lh      $t1,[$r26+$r21*4]
2107
                sw      $t1,16[$sp]
2108
                call    _SetSpritePos
2109
                add     $sp,$sp,#24
2110
                bra     BIOSMain_513
2111
BIOSMain_468:
2112
;====================================================
2113
; Basic Block 24
2114
;====================================================
2115
                lw      $lr,8[$fp]
2116
                sw      $lr,16[$fp]
2117
                lw      $r21,0[$sp]
2118
                lw      $r22,8[$sp]
2119
                lw      $r23,16[$sp]
2120
                lw      $r24,24[$sp]
2121
                lw      $r25,32[$sp]
2122
                lw      $r26,40[$sp]
2123
                lw      $r27,48[$sp]
2124
                lw      $r28,56[$sp]
2125
                lw      $r29,64[$sp]
2126
                lw      $r30,72[$sp]
2127
                lw      $r31,80[$sp]
2128
                lw      $r32,88[$sp]
2129
                lw      $r33,96[$sp]
2130
                mov     $sp,$fp
2131
                lw      $fp,[$sp]
2132
                lw      $xlr,8[$sp]
2133
                lw      $lr,16[$sp]
2134
                ret     #24
2135
endpublic
2136
 
2137
 
2138
 
2139
;====================================================
2140
; Basic Block 0
2141
;====================================================
2142
public code _AudioTest:
2143
                sub     $sp,$sp,#24
2144
                sw      $lr,16[$sp]
2145
                sw      $xlr,8[$sp]
2146
                sw      $fp,[$sp]
2147
                ldi     $xlr,#BIOSMain_542
2148
                mov     $fp,$sp
2149
                sub     $sp,$sp,#16
2150
                sub     $sp,$sp,#16
2151
                sw      $r21,0[$sp]
2152
                sw      $r22,8[$sp]
2153
                lw      $r21,-16[$fp]
2154
;       unsigned __int32 *pGPIO = (unsigned __int32 *)(0xFFDC0700);
2155
                ldi     $r22,#4292609792
2156
                ldi     $r21,#4292657152
2157
;       LEDS(0xf7);
2158
                ldi     $a0,#247
2159
;       asm {
2160
 
2161
                        sh              $a0,$FFDC0600
2162
;       pGPIO[0] = 0xFFFFFFFF;          // turn on audio clocks
2163
                ldi     $t0,#4294967295
2164
                bfextu  $r22,$t0,#0,#31
2165
;       pAVIC[404] = 0x0000401F;        // Enable channels and test mode
2166
                ldi     $t0,#16415
2167
                sh      $t0,1616[$r21]
2168
                bfextu  $t0,$t0,#0,#31
2169
                bra     BIOSMain_544
2170
BIOSMain_542:
2171
;====================================================
2172
; Basic Block 1
2173
;====================================================
2174
                lw      $lr,8[$fp]
2175
                sw      $lr,16[$fp]
2176
BIOSMain_544:
2177
                lw      $r21,0[$sp]
2178
                lw      $r22,8[$sp]
2179
                mov     $sp,$fp
2180
                lw      $fp,[$sp]
2181
                lw      $xlr,8[$sp]
2182
                lw      $lr,16[$sp]
2183
                ret     #24
2184
endpublic
2185
 
2186
 
2187
 
2188
;====================================================
2189
; Basic Block 0
2190
;====================================================
2191
public code _InitAudio:
2192
                sub     $sp,$sp,#24
2193
                sw      $fp,[$sp]
2194
                mov     $fp,$sp
2195
                sub     $sp,$sp,#8
2196
                sub     $sp,$sp,#24
2197
                sw      $r21,0[$sp]
2198
                sw      $r22,8[$sp]
2199
                sw      $r23,16[$sp]
2200
                lw      $r21,-8[$fp]
2201
                ldi     $r22,#65535
2202
                ldi     $r23,#1048575
2203
;       unsigned __int32 *pAVIC = ((unsigned __int32 *)0xFFDCC000);
2204
                ldi     $r21,#4292657152
2205
;       pAVIC[384] = 0x200000;
2206
                ldi     $v0,#2097152
2207
                sh      $v0,1536[$r21]
2208
                bfextu  $v0,$v0,#0,#31
2209
;       pAVIC[385] = 65535;             // buffer length
2210
                sh      $r22,1540[$r21]
2211
                bfextu  $r22,$r22,#0,#31
2212
;       pAVIC[386] = 0xFFFFF;   // period to max
2213
                sh      $r23,1544[$r21]
2214
                bfextu  $r23,$r23,#0,#31
2215
;       pAVIC[387] = 0x0000;    // volume = 0, output data = 0
2216
                ldi     $v0,#0
2217
                sh      $v0,1548[$r21]
2218
;       pAVIC[388] = 0x210000;
2219
                ldi     $v0,#2162688
2220
                sh      $v0,1552[$r21]
2221
                bfextu  $v0,$v0,#0,#31
2222
;       pAVIC[389] = 65535;             // buffer length
2223
                sh      $r22,1556[$r21]
2224
                bfextu  $r22,$r22,#0,#31
2225
;       pAVIC[390] = 0xFFFFF;   // period to max
2226
                sh      $r23,1560[$r21]
2227
                bfextu  $r23,$r23,#0,#31
2228
;       pAVIC[391] = 0x0000;    // volume = 0, output data = 0
2229
                ldi     $v0,#0
2230
                sh      $v0,1564[$r21]
2231
;       pAVIC[392] = 0x220000;
2232
                ldi     $v0,#2228224
2233
                sh      $v0,1568[$r21]
2234
                bfextu  $v0,$v0,#0,#31
2235
;       pAVIC[393] = 65535;             // buffer length
2236
                sh      $r22,1572[$r21]
2237
                bfextu  $r22,$r22,#0,#31
2238
;       pAVIC[394] = 0xFFFFF;   // period to max
2239
                sh      $r23,1576[$r21]
2240
                bfextu  $r23,$r23,#0,#31
2241
;       pAVIC[395] = 0x0000;    // volume = 0, output data = 0
2242
                ldi     $v0,#0
2243
                sh      $v0,1580[$r21]
2244
;       pAVIC[396] = 0x230000;
2245
                ldi     $v0,#2293760
2246
                sh      $v0,1584[$r21]
2247
                bfextu  $v0,$v0,#0,#31
2248
;       pAVIC[397] = 65535;             // buffer length
2249
                sh      $r22,1588[$r21]
2250
                bfextu  $r22,$r22,#0,#31
2251
;       pAVIC[398] = 0xFFFFF;   // period to max
2252
                sh      $r23,1592[$r21]
2253
                bfextu  $r23,$r23,#0,#31
2254
;       pAVIC[399] = 0x0000;    // volume = 0, output data = 0
2255
                ldi     $v0,#0
2256
                sh      $v0,1596[$r21]
2257
;       pAVIC[400] = 0x240000;
2258
                ldi     $v0,#2359296
2259
                sh      $v0,1600[$r21]
2260
                bfextu  $v0,$v0,#0,#31
2261
;       pAVIC[401] = 65535;             // buffer length
2262
                sh      $r22,1604[$r21]
2263
                bfextu  $r22,$r22,#0,#31
2264
;       pAVIC[402] = 0xFFFFF;   // period to max
2265
                sh      $r23,1608[$r21]
2266
                bfextu  $r23,$r23,#0,#31
2267
;       pAVIC[403] = 0x0000;    // volume = 0, output data = 0
2268
                ldi     $v0,#0
2269
                sh      $v0,1612[$r21]
2270
;       pAVIC[404] = 0x00001F00;        // Reset
2271
                ldi     $v0,#7936
2272
                sh      $v0,1616[$r21]
2273
;       pAVIC[404] = 0x00000000;
2274
                ldi     $v0,#0
2275
                sh      $v0,1616[$r21]
2276
                bfextu  $v0,$v0,#0,#31
2277
                lw      $r21,0[$sp]
2278
                lw      $r22,8[$sp]
2279
                lw      $r23,16[$sp]
2280
                mov     $sp,$fp
2281
                lw      $fp,[$sp]
2282
                ret     #24
2283
endpublic
2284
 
2285
 
2286
 
2287
        rodata
2288
        align   16
2289
        align   8
2290
BIOSMain_21:
2291
        dh      0x54442D18,0x400921FB
2292
        align   2
2293
BIOSMain_156:   ; PC History:
2294
        dc      80,67,32,72,105,115,116,111
2295
        dc      114,121,58,13,10,0
2296
BIOSMain_155:   ; Instruction Bus Error:
2297
        dc      13,10,73,110,115,116,114,117
2298
        dc      99,116,105,111,110,32,66,117
2299
        dc      115,32,69,114,114,111,114,58
2300
        dc      13,10,0
2301
BIOSMain_124:   ; PC History:
2302
        dc      13,10,80,67,32,72,105,115
2303
        dc      116,111,114,121,58,13,10,0
2304
BIOSMain_23:    ;   Menu  up = ramtest  down = graphics demo  left = float test  right=TinyBasic
2305
        dc      32,32,77,101,110,117,13,10
2306
        dc      32,32,117,112,32,61,32,114
2307
        dc      97,109,116,101,115,116,13,10
2308
        dc      32,32,100,111,119,110,32,61
2309
        dc      32,103,114,97,112,104,105,99
2310
        dc      115,32,100,101,109,111,13,10
2311
        dc      32,32,108,101,102,116,32,61
2312
        dc      32,102,108,111,97,116,32,116
2313
        dc      101,115,116,13,10,32,32,114
2314
        dc      105,103,104,116,61,84,105,110
2315
        dc      121,66,97,115,105,99,13,10
2316
        dc      0
2317
BIOSMain_22:    ;   FT64 Bios Started
2318
        dc      32,32,70,84,54,52,32,66
2319
        dc      105,111,115,32,83,116,97,114
2320
        dc      116,101,100,13,10,0
2321
BIOSMain_0:     ; Databus error: 
2322
        dc      13,10,68,97,116,97,98,117
2323
        dc      115,32,101,114,114,111,114,58
2324
        dc      32,0
2325
        extern  _GetRand
2326
;       global  _BIOSMain
2327
;       global  _EnableSprite
2328
;       global  _GrDrawChar
2329
;       global  _GrFillRect
2330
;       global  _GrDrawLine
2331
;       global  _BTNCIRQHandler
2332
        extern  _DBGHomeCursor
2333
;       global  _SetSpritePos
2334
;       global  _RandomPoints
2335
;       global  _RandomizeSpritePositions
2336
;       global  _ColorBandMemory
2337
        extern  _SetPCHNDX
2338
;       global  _GrQueCmd
2339
;       global  _GrFlushCmdQue
2340
;       global  _GrResetCmdQue
2341
;       global  _SpriteDemo
2342
        extern  _ramtest
2343
;       global  _GrClearScreen
2344
        extern  _randStream
2345
        extern  _DBGClearScreen
2346
        extern  _DBGDisplayString
2347
        extern  _putch
2348
;       global  _EnableSprites
2349
;       global  _RandomChars
2350
;       global  _RandomLines
2351
;       global  _GrPlotPoint
2352
;       global  _RandomRects
2353
        extern  _DBGAttr
2354
;       global  _DBERout
2355
;       global  _GrWaitQue
2356
;       global  _IBERout
2357
;       global  _InitAudio
2358
;       global  _RandomizeSpriteColors
2359
;       global  _AudioTest
2360
        extern  _printf
2361
        extern  _FloatTest
2362
        extern  _prtflt
2363
        extern  _puthex

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.