1 |
10 |
robfinch |
|
2 |
|
|
FFFFFFFFFFFFF000.0 org 0xFFFF_FFFF_FFFF_F000
|
3 |
|
|
FFFFFFFFFFFFF000.0 start:
|
4 |
|
|
FFFFFFFFFFFFF000.0 048020013FD ori r1,r0,#5117 ; test data
|
5 |
|
|
FFFFFFFFFFFFF000.1 00848000018 sqrt r4,r1
|
6 |
|
|
FFFFFFFFFFFFF000.2 00848000018 sqrt r4,r1
|
7 |
|
|
FFFFFFFFFFFFF010.0 0480400042B ori r2,r0,#1067
|
8 |
|
|
FFFFFFFFFFFFF010.1 01044500018 mulu r5,r1,r2
|
9 |
|
|
FFFFFFFFFFFFF010.2 04803D00000 ori r1,r0,#0xFFFF_FFFF_FFD0_0000
|
10 |
|
|
FFFFFFFFFFFFF020.0 04804000032 ori r2,r0,#0x32
|
11 |
|
|
FFFFFFFFFFFFF020.1 0480600064C ori r3,r0,#1612
|
12 |
|
|
FFFFFFFFFFFFF020.2 j1:
|
13 |
|
|
FFFFFFFFFFFFF020.2 18844000000 sc r2,[r1]
|
14 |
|
|
FFFFFFFFFFFFF030.0 02042000002 addi r1,r1,#2
|
15 |
|
|
FFFFFFFFFFFFF030.1 028C6000001 subi r3,r3,#1
|
16 |
|
|
FFFFFFFFFFFFF030.2 288C1FFFFFE bne r3,r0,j1
|
17 |
|
|
FFFFFFFFFFFFF040.0 0C7FFFFFC16 call Getkey
|
18 |
|
|
FFFFFFFFFFFFF040.1 37800000000 nop
|
19 |
|
|
FFFFFFFFFFFFF040.2 37800000000 nop
|
20 |
|
|
FFFFFFFFFFFFF050.0 37800000000 nop
|
21 |
|
|
FFFFFFFFFFFFF050.1 37800000000 nop
|
22 |
|
|
|
23 |
|
|
FFFFFFFFFFFFF050.2 Getkey:
|
24 |
|
|
FFFFFFFFFFFFF050.2 04803DC0000 ori r1,r0,#0xFFFF_FFFF_FFDC_0000
|
25 |
|
|
FFFFFFFFFFFFF060.0 sr1:
|
26 |
|
|
FFFFFFFFFFFFF060.0 10044000000 lb r2,[r1]
|
27 |
|
|
FFFFFFFFFFFFF060.1 2A880000000 bge r2,r0,sr1
|
28 |
|
|
FFFFFFFFFFFFF060.2 10040000001 lb r0,1[r1] ; clear keyboard strobe
|
29 |
|
|
FFFFFFFFFFFFF070.0 0D83E000000 ret
|
30 |
|
|
|
31 |
|
|
;==============================================================================
|
32 |
|
|
; Checkerboard RAM tester
|
33 |
|
|
;==============================================================================
|
34 |
|
|
;
|
35 |
|
|
FFFFFFFFFFFFF070.1 ramtest:
|
36 |
|
|
FFFFFFFFFFFFF070.1 01000800009 or r8,r0,r0 ; r8 = 0
|
37 |
|
|
FFFFFFFFFFFFF070.2 3D5552AAAD5
|
38 |
|
|
FFFFFFFFFFFFF080.0 04802AA5555 ori r1,r0,#0xAAAA5555AAAA5555 ; checkerboard pattern
|
39 |
|
|
FFFFFFFFFFFFF080.1 ramtest2:
|
40 |
|
|
FFFFFFFFFFFFF080.1 19A02000000 sw r1,[r8] ; save the checkerboard to memory
|
41 |
|
|
FFFFFFFFFFFFF080.2 11A04000000 lw r2,[r8] ; read it back
|
42 |
|
|
FFFFFFFFFFFFF090.0 01044300006 cmp r3,r1,r2 ; is it the same ?
|
43 |
|
|
FFFFFFFFFFFFF090.1 080C2000008 bnez r3,r0,ramtest1
|
44 |
|
|
FFFFFFFFFFFFF090.2 02210000008 addi r8,r8,#8 ; increment RAM pointer
|
45 |
|
|
FFFFFFFFFFFFF0A0.0 38000000000
|
46 |
|
|
FFFFFFFFFFFFF0A0.1 03207000000 cmpi r3,r8,#0x0000_0000_0100_0000
|
47 |
|
|
FFFFFFFFFFFFF0A0.2 080C5FFFFF9 bltz r3,r0,ramtest2
|
48 |
|
|
FFFFFFFFFFFFF0B0.0 ramtest1:
|
49 |
|
|
FFFFFFFFFFFFF0B0.0 01200A00009 or r10,r8,r0 ; r10 = max ram address
|
50 |
|
|
; readback the checkerboard pattern
|
51 |
|
|
FFFFFFFFFFFFF0B0.1 01000800009 or r8,r0,r0 ; r8 = 0
|
52 |
|
|
FFFFFFFFFFFFF0B0.2 ramtest4:
|
53 |
|
|
FFFFFFFFFFFFF0B0.2 11A04000000 lw r2,[r8]
|
54 |
|
|
FFFFFFFFFFFFF0C0.0 3D5552AAAD5
|
55 |
|
|
FFFFFFFFFFFFF0C0.1 03086AA5555 cmpi r3,r2,#0xAAAA5555AAAA5555
|
56 |
|
|
FFFFFFFFFFFFF0C0.2 080C2000009 bnez r3,r0,ramtest3
|
57 |
|
|
FFFFFFFFFFFFF0D0.0 02210000008 addi r8,r8,#8
|
58 |
|
|
FFFFFFFFFFFFF0D0.1 38000000000
|
59 |
|
|
FFFFFFFFFFFFF0D0.2 03207000000 cmpi r3,r8,#0x0000_0000_0100_0000
|
60 |
|
|
FFFFFFFFFFFFF0E0.0 080C5FFFFF6 bltz r3,r0,ramtest4
|
61 |
|
|
FFFFFFFFFFFFF0E0.1 ramtest3:
|
62 |
|
|
FFFFFFFFFFFFF0E0.1 28A1400001E bne r8,r10,ramtest8 ; check for equal maximum address
|
63 |
|
|
|
64 |
|
|
; perform ramtest again with inverted checkerboard
|
65 |
|
|
FFFFFFFFFFFFF0E0.2 01000800009 or r8,r0,r0 ; r8 = 0
|
66 |
|
|
FFFFFFFFFFFFF0F0.0 3AAAAD5552A
|
67 |
|
|
FFFFFFFFFFFFF0F0.1 0480355AAAA ori r1,r0,#0x5555AAAA5555AAAA
|
68 |
|
|
FFFFFFFFFFFFF0F0.2 ramtest5:
|
69 |
|
|
FFFFFFFFFFFFF0F0.2 19A02000000 sw r1,[r8]
|
70 |
|
|
FFFFFFFFFFFFF100.0 11A04000000 lw r2,[r8]
|
71 |
|
|
FFFFFFFFFFFFF100.1 01044300006 cmp r3,r1,r2
|
72 |
|
|
FFFFFFFFFFFFF100.2 080C2000009 bnez r3,r0,ramtest6
|
73 |
|
|
FFFFFFFFFFFFF110.0 02210000008 addi r8,r8,#8
|
74 |
|
|
FFFFFFFFFFFFF110.1 38000000000
|
75 |
|
|
FFFFFFFFFFFFF110.2 03207000000 cmpi r3,r8,#0x0000_0000_0100_0000
|
76 |
|
|
FFFFFFFFFFFFF120.0 080C5FFFFF6 bltz r3,r0,ramtest5
|
77 |
|
|
FFFFFFFFFFFFF120.1 ramtest6:
|
78 |
|
|
FFFFFFFFFFFFF120.1 01200B00009 or r11,r8,r0 ; r11 = max ram address
|
79 |
|
|
; readback checkerboard
|
80 |
|
|
FFFFFFFFFFFFF120.2 01000800009 or r8,r0,r0
|
81 |
|
|
FFFFFFFFFFFFF130.0 ramtest7:
|
82 |
|
|
FFFFFFFFFFFFF130.0 11A04000000 lw r2,[r8]
|
83 |
|
|
FFFFFFFFFFFFF130.1 3AAAAD5552A
|
84 |
|
|
FFFFFFFFFFFFF130.2 0308755AAAA cmpi r3,r2,#0x5555AAAA5555AAAA
|
85 |
|
|
FFFFFFFFFFFFF140.0 080C2000006 bnez r3,r0,ramtest8
|
86 |
|
|
FFFFFFFFFFFFF140.1 02210000008 addi r8,r8,#8
|
87 |
|
|
FFFFFFFFFFFFF140.2 38000000000
|
88 |
|
|
FFFFFFFFFFFFF150.0 03207000000 cmpi r3,r8,#0x0000_0000_0100_0000
|
89 |
|
|
FFFFFFFFFFFFF150.1 080C5FFFFF8 bltz r3,r0,ramtest7
|
90 |
|
|
FFFFFFFFFFFFF150.2 ramtest8:
|
91 |
|
|
FFFFFFFFFFFFF150.2 28216000005 beq r8,r11,ramtest9
|
92 |
|
|
FFFFFFFFFFFFF160.0 01216800014 min r8,r8,r11
|
93 |
|
|
FFFFFFFFFFFFF160.1 ramtest9:
|
94 |
|
|
FFFFFFFFFFFFF160.1 28214000004 beq r8,r10,ramtest10
|
95 |
|
|
FFFFFFFFFFFFF160.2 01214800014 min r8,r8,r10
|
96 |
|
|
FFFFFFFFFFFFF170.0 ramtest10:
|
97 |
|
|
FFFFFFFFFFFFF170.0 19810000400 sw r8,0x00000400 ;memend
|
98 |
|
|
|
99 |
|
|
FFFFFFFFFFFFFFC0.0 org 0xFFFF_FFFF_FFFF_FFC0
|
100 |
|
|
FFFFFFFFFFFFFFC0.0 37800000000 nop
|
101 |
|
|
FFFFFFFFFFFFFFC0.1 37800000000 nop
|
102 |
|
|
FFFFFFFFFFFFFFC0.2 37800000000 nop
|
103 |
|
|
FFFFFFFFFFFFFFD0.0 37800000000 nop
|
104 |
|
|
FFFFFFFFFFFFFFD0.1 37800000000 nop
|
105 |
|
|
FFFFFFFFFFFFFFD0.2 37800000000 nop
|
106 |
|
|
FFFFFFFFFFFFFFE0.0 37800000000 nop
|
107 |
|
|
FFFFFFFFFFFFFFE0.1 37800000000 nop
|
108 |
|
|
FFFFFFFFFFFFFFE0.2 37800000000 nop
|
109 |
|
|
FFFFFFFFFFFFFFF0.0 org 0xFFFF_FFFF_FFFF_FFF0
|
110 |
|
|
FFFFFFFFFFFFFFF0.0 0CFFFFFFC00 jmp start
|
111 |
|
|
|
112 |
|
|
FFFFFFFFFFFFFFF0.1 00000000000
|
113 |
|
|
FFFFFFFFFFFFFFF0.2 00000000000
|