aboutsummaryrefslogtreecommitdiffstats
path: root/asm/test_py_src.atk16_optimized
blob: f5268534eb5e114f415d758cedf79d385e5ff1a5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
@use ext_std:*
@let sp RH
@let vector_table 0x10
@let vt_ISR0 0x10
@let vt_ISR1 0x11
@let vt_ISR2 0x12
@let vt_ISR3 0x13
@let vt_stack_addr 0x14
@let vt_term_pp_addr 0x15
@let vt_kb_pp_addr 0x16
@let vt_gr_mode_addr 0x17
@let vt_sprite_mem 0x18
@let vt_text_mem 0x19
@let stack_segment 0x8000
@let mmio_segment 0xE000
@let terminal_addr 0xE000
@let keyboard_addr 0xE001
@let gr_mode_addr 0xE002
@let sprite_mem 0xE800
@let text_mem 0xF800
@let gr_disabled_mode 0b00
@let gr_text_mode 0b01
@let gr_sprite_mode 0b10
@address 0x0
  ldi vt_stack_addr RA
  ldr RA SP
  jpi program_segment
@address vector_table
  keyboard_isr
  hlt_isr
  hlt_isr
  hlt_isr
  stack_segment
  terminal_addr
  keyboard_addr
  gr_mode_addr
  sprite_mem
  text_mem
@label hlt_isr
  ldi 0x55 RE
  hlt
@label keyboard_isr
  spu RA
  spu RB
  ldi vt_kb_pp_addr RA
  ldr RA RA
  ldr RA RA
  ldi vt_term_pp_addr RB
  ldr RB RB
  str RA RB
  spo RB
  spo RA
  rti
@label program_segment
  ldi vt_gr_mode_addr RA
  ldr RA RA
  ldi gr_disabled_mode RB
  str RB RA
  jpi main
@label text_mode
  1
@label graphics_mode_addr_p
  23
@label text_mem_addr_p
  25
@label int_1
  65
@label int_5
  26
@label nth_letter
  ldi vt_stack_addr RA
  ldr RA RA
  ldi 4 RB
  add RA RB RA
  ldr RA RA
  ldi int_1 RB
  ldr RB RB
  add RA RB RA
  spu RA
  ldi vt_stack_addr RA
  ldr RA RA
  ldi 3 RB
  add RA RB RA
  spo RB
  mov RA SP
  ldr RA RA
  spu RB
  jpr RA
@label main
  addi SP 3 SP
  ldi graphics_mode_addr_p RC
  ldr RC RC
  ldr RC RC
  spu RC
  ldi vt_stack_addr RA
  ldr RA RA
  ldi 0 RB
  add RA RB RA
  spo RB
  str RB RA
  ldi text_mem_addr_p RC
  ldr RC RC
  ldr RC RC
  spu RC
  ldi vt_stack_addr RA
  ldr RA RA
  ldi 1 RB
  add RA RB RA
  spo RB
  str RB RA
  ldi vt_stack_addr RA
  ldr RA RA
  ldi 0 RB
  add RA RB RA
  ldr RA RA
  ldi text_mode RB
  ldr RB RB
  str RB RA
  ldi 0 RC
  spu RC
  ldi vt_stack_addr RA
  ldr RA RA
  ldi 2 RB
  add RA RB RA
  spo RB
  str RB RA
  ldi 0b111111111 RG
@label while_test_2
  ldi vt_stack_addr RB
  ldr RB RB
  ldi 2 RC
  add RB RC RB
  ldr RB RB
  ldi int_5 RC
  ldr RC RC
  sub RB RC RB
  bri carry Compare_true_6
  ldi 0 RB
  spu RB
  jpi Compare_end_7
@label compare_true_6
  ldi 1 RB
  spu RB
@label compare_end_7
  spo RA
  addi RA 0 RA
  bri zero While_else_3
  ldi vt_stack_addr RA
  ldr RA RA
  ldi 1 RB
  add RA RB RA
  ldr RA RA
  spu RA
  ldi vt_stack_addr RA
  ldr RA RA
  ldi 2 RB
  add RA RB RA
  ldr RA RB
  spo RA
  add RA RB RA
  spu RA
  ldi 0 RA
  spu RA
  ldi vt_stack_addr RA
  ldr RA RA
  ldi 2 RB
  add RA RB RA
  ldr RA RA
  spu RA
  subi SP 2 RA
  lpc RB
  addi RB 3 RB
  str RB RA
  jpi nth_letter
  spo RB
  spo RA
  str RB RA
  ldi vt_stack_addr RC
  ldr RC RC
  ldi 2 RD
  add RC RD RC
  ldr RC RC
  ldi 1 RD
  add RC RD RC
  spu RC
  ldi vt_stack_addr RA
  ldr RA RA
  ldi 2 RB
  add RA RB RA
  spo RB
  str RB RA
  jpi While_test_2
@label while_else_3
@label while_end_4
@label while_test_8
  ldi 1 RA
  addi RA 0 RA
  bri zero While_else_9
  jpi While_test_8
@label while_else_9
@label while_end_10
  subi SP 3 SP