9. Пример программы
1 : ; T6963C ПРИМЕР ПРОГРАММЫ Вер.0.01
2 : ;
3 : ; ИСХОДНЫЙ КОД ПРОГРАММЫ для TMPZ84COOP
4 : ; 1991-02-15
5 : ; Размер изображения : 20 Столбцов x 8 Строк
6 : ;
7 : ; Шрифт : Режим 8 точек
8 : ;
9 : TXHOME EQU 40H ; ЗАДАТЬ АДРЕС НАЧАЛА ТЕКСТА
10 : TXAREA EQU 41H ; ЗАДАТЬ ТЕКСТОВУЮ ОБЛАСТЬ
11 : GRHOME EQU 42H ; ЗАДАТЬ АДРЕС НАЧАЛА ГРАФИКИ
12 : GRAREA EQU 43H ; ЗАДАТЬ ГРАФИЧЕСКУЮ ОБЛАСТЬ
13 : OFFSET EQU 22H ; ЗАДАТЬ АДРЕС СМЕЩЕНИЯ
14 : ADPSET EQU 24H ; ЗАДАТЬ УКАЗАТЕЛЬ АДРЕСА
15 : AWRON EQU OBOH ; УСТАНОВИТЬ РЕЖИМ АВТОМАТИЧЕСКОЙ ЗАПИСИ
16 : AWROFF EQU OB2H ; СБРОСИТЬ РЕЖИМ АВТОМАТИЧЕСКОЙ ЗАПИСИ
17 : CMDP EQU 01H ; ПОРТ СРАВНЕНИЯ
18 : DP EQU OOH ; ПОРТ ДАННЫХ
19 : STACK EQU 9FFFH ; БАЗОВЫЙ АДРЕС УКАЗАТЕЛЯ СТЕКА
20 : ;
21 : ORG OOOOH
22 : START:
23 : LD SP,STACK
24 : ;
26 : ; ЗАДАТЬ АДРЕС НАЧАЛА ТЕКСТА
26 : ;
27 : LD HL,OOOOH ; АДРЕС НАЧАЛА ТЕКСТА OOOOH
28 : CALL DT2
29 : LD A,TXHOME
30 : CALL CMD
31 :
32 : ; ЗАДАТЬ АДРЕС НАЧАЛА ГРАФИКИ
33 : ;
34 : LD HL,0200H ; АДРЕС НАЧАЛА ГРАФИКИ 0200H
35 : CALL DT2
36 : LD A,GRHOME
37 : CALL CMD
38 :
39 : ; ЗАДАТЬ ТЕКСТОВУЮ ОБЛАСТЬ
40 : ;
41 : LD HL,0014H ; ТЕКСТОВАЯ ОБЛАСТЬ 20 Столбцов
42 : CALL DT2
43 : LD A,TXAREA
44 : CALL CMD
45 : ;
46 : ; ЗАДАТЬ ГРАФИЧЕСКУЮ ОБЛАСТЬ
47 : ;
48 : LD HL,0014H ; ГРАФИЧЕСКАЯ ОБЛАСТЬ 20 Столбцов
49 : CALL DT2
50 : LD A,GRAREA
51 : CALL CMD
52 : ;
53 : ; УСТАНОВКА РЕЖИМА (OR РЕЖИМ,РЕЖИМ Внутреннего Знакогенератора)
54 : ;
55 : LD A,80H
56 : CALL CMD
57 : ;
58 : ; ВЫСТАВИТЬ РЕГИСТР СМЕЩЕНИЯ (00010 10000000 000=1400H АДРЕС
НАЧАЛА ОЗУ ЗНАКОГЕНЕРАТОРА)
59 : ; КОД СИМВОЛА 80H
60 : LD HL,0002H
61 : CALL DT2
62 : LD A,OFFSET
63 : CALL CMD
64 : ;
65 : ; РЕЖИМ ОТОБРАЖЕНИЯ
66 : ; (ВКЛ. ТЕКСТ, ВЫКЛ. ГРАФИКУ, ВЫКЛ. КУРСОР)
67 : ;
68 : LD A,94H
69 : CALL CMD
70 :
71 : ; ЗАПИСАТЬ КОД ТЕКСТОВОГО ПРОБЕЛА
72 : ;
73 : LD HL,OOOOH ; ЗАДАТЬ Указатель Адреса OOOOH
74 : CALL DT2 ; (АДРЕС НАЧАЛА ТЕКСТА)
75 : LD A,ADPSET
76 : CALL CMD
77 :
78 : LD A,AWRON ; УСТАНОВИТЬ АВТО ЗАПИСЬ ДАННЫХ
79 : CALL CMD ;
80 :
81 : LD BC,OOAOH ; 20 Столбцов x 8 Строк (160=AOH)
82 : TXCR:
83 : LD A,OOH ; ЗАПИСАТЬ ДАННЫЕ OOH
84 : CALL ADT ; (ЗАПИСАТЬ КОД ПРОБЕЛА)
85 :
86 : DEC BC
87 : LD A,B
88 : OR C
89 : JR NZ,TXCR
90 :
91 : LD A,AWROFF ; АВТО СБРОС
92 : CALL CMD
93 :
94 : ;
95 : ; ЗАПИСАТЬ ДАННЫЕ ВНЕШНЕГО ЗНАКОГЕНЕРАТОРА
96 : ;
97 : LD DE,EXTCG ; Адрес данных занакогенератора в Программе
98 : LD HL,1400H ; Стартовый Адрес ОЗУ Знакогенератора (1400H)
99 : CALL DT2
100 : LD A,ADPSET
101 : CALL CMD
102 : ;
103 : LD A,AWRON ; УСТАНОВИТЬ АВТО ЗАПИСЬ ДАННЫХ
104 : CALL CMD
105 :
106 : LD B,40H ; 8 Символов x 8 байт (64=40H)
107 : EXCG:
108 : LD A,(DE) ; ЗАПИСАТЬ ДАННЫЕ ВО ВНЕШНЕЕ ОЗУ
109 : CALL ADT ;
110 : INC HL
111 : INC DE
112 : DJNZ EXCG
113 :
114 : LD A,AWROFF ; АВТО СБРОС
115 : CALL CMD
116 :
117 : ; ЗАПИСАТЬ ДАННЫЕ ТЕКСТОВОГО ИЗОБРАЖЕНИЯ (ВНУТРЕННИЙ ЗНАКОГЕНЕРАТОР)
118 : ;
119 : LD HL,0040H ; Указатель Адреса 3 Строки, 4 Столбца
120 : CALL DT2
121 : LD A,ADPSET
122 : CALL CMD
123 :
124 : LD A,AWRON ; УСТАНОВИТЬ АВТО ЗАПИСЬ ДАННЫХ
125 : CALL CMD
126 :
127 : LD B,ODH ; Символ с кодом 13
128 : LD DE,TXPRT
129 : TXLP1:
130 : LD A,(DE) ; ЗАПИСАТЬ ДАННЫЕ
131 : CALL ADT
132 : INC DE
133 : DJNZ TXLP1
134 :
135 : LD A,AWROFF ; АВТО СБРОС
136 : CALL CMD
137 : ;
138 : ; ЗАПИСАТЬ ДАННЫЕ ТЕКСТОВОГО ИЗОБРАЖЕНИЯ (верхняя часть
ВНЕШНЕГО ЗНАКОГЕНЕРАТОРА)
139 :
140 : LD HL,006CH ; Указатель Адреса 5 Строк, 8 Столбцов
141 : CALL DT2
142 : LD A,ADPSET
143 : CALL CMD
144 :
145 : LD A,AWRON ; УСТАНОВИТЬ АВТО ЗАПИСЬ ДАННЫХ
146 : CALL CMD
147 :
148 : LD B,06H ; Символ с кодом 6
149 : LO DE,EXPRT1
150 : TXLP2;
151 : LD A,(DE) ; ЗАПИСЬ ДАННЫХ
152 : CALL ADT
153 : INC DE
154 : DJNZ TXLP2
155 :
156 : LD A,AWROFF ; АВТО СБРОС
157 : CALL CMD
158 :
159 : ; ЗАПИСАТЬ ДАННЫЕ ТЕКСТОВОГО ИЗОБРАЖЕНИЯ (нижняя часть
ВНЕШНЕГО ЗНАКОГЕНЕРАТОРА)
160 : ;
161 : LD HL,0080H ; Указатель Адреса 6 Строк, 8 Столбцов
16Z : CALL DT2
163 : LD A,ADPSET
164 : CALL CMD
165 :
166 : LD A,AWRON ; УСТАНОВИТЬ АВТО ЗАПИСЬ ДАННЫХ
167 : CALL CMD
168 :
169 : LD B,06H ; Символ с кодом 6
170 : LD DE,EXPRT2
171 : TXLP3:
172 : LD A,(DE) ; ЗАПИСАТЬ ДАННЫЕ
173 : CALL ADT
174 : INC DE
175 : DJNZ TXLP3
176 :
177 : LD A,AWROFF ; АВТО СБРОС
178 : CALL CMD
179 : PEND:
180 : JP PEND ; КОНЕЦ ПРОГРАММЫ
181 :
182 : ; Начало подпрограмм
183 : ;
184 : ; ПРОЦЕДУРА КОМАНДЫ ЗАПИСИ
185 : ;
186 : CMD:
187 : PUSH AF
188 : CMD1: IN A,(CMDP)
189 : AND 03H
190 : CP 03H ; ПРОВЕРКА СТАТУСА
191 : OR NZ,CMD1
192 : POP AF
193 : OUT (CMDP),A ; КОМАНДА ЗАПИСИ
194 : RET
195 : ;
196 : ; ПРОЦЕДУРА ЗАПИСИ ДАННЫХ (1 байт)
197 : ;
198 : DT1:
199 : PUSH AF
200 : DT11: IN A,(CMDP)
201 : AND 03H
202 : CP 03H ; ПРОВЕРКА СТАТУСА
203 : JR NZ,DT11
204 : POP AF
205 : OUT (DP),A ; ЗАПИСЬ ДАННЫХ
206 : RET
207 : ;
208 : ; ПРОЦЕДУРА ЗАПИСИ ДАННЫХ (2 байта)
209 : ;
210 : DT2:
211 : IN A,(CMDP)
212 : AND 03H
213 : CP 03H ; ПРОВЕРКА СТАТУСА
214 : JR NZ,DT2
215 : LD A,L
216 : OUT (DP),A ; ЗАПИСЬ ДАННЫХ (Dl)
217 : DT21:
218 : IN A,(CMDP)
219 : AND 03H
220 : CP 03H ; ПРОВЕРКА СТАТУСА
221 : JR NZ,DT21
222 :
223 : LD A,H
224 : OUT (DP),A ; ЗАПИСЬ ДАННЫХ (D2)
225 : RET
226 :
227 : ; ПРОЦЕДУРА РЕЖИМА АВТОМАТИЧЕСКОЙ ЗАПИСИ
228 :
229 : ADT:
230 : PUSH AF
231 : ADT1: IN A,(CMDP)
232 : AND 08H
233 : CP 08H ; ПРОВЕРКА СТАТУСА
234 : JR NZ,ADT1
235 : POP AF
236 : OUT (DP),A ; ЗАПИСЬ ДАННЫХ
237 : RET
238 : ;
239 : ; Конец подпрограмм
240 : ;
241 : ; КОДЫ СИМВОЛОВ ТЕКСТОВОГО ИЗОБРАЖЕНИЯ
242 : ;
243 : TXPRT:
244 : DEFB 34H,00H,2FH,00H,33H,00H ; КОД ВНУТРЕННЕГО ЗНАКОГЕНЕРАТОРА
245 : DEFB 28H,00H,29H,00H,22H,00H,21H
246 : EXPRT1:
247 : DEFB 80H,81H,00H,00H,84H,85H ; КОД ВНЕШНЕГО ЗНАКОГЕНЕРАТОРА
248 : EXPRT2:
249 : DEFB 82H,83H,00H,00H,86H,87H
250 : ;
251 : ; ДАННЫЕ ШРИФТА ВНЕШНЕГО ЗНАКОГЕНЕРАТОРА
252 : ;
253 : EXTCG:
254 : ;
255 : ; r^J вверх/влево КОД СИМВОЛА 80H
256 : DEFB 01H,01H,0FFH,01H,3FH,21H,3FH,21H
257 :
258 : ; r^J вверх/вправо КОД СИМВОЛА 81H
259 : DEFB 00H,00H,0FFH,00H,0FCH,04H,0FCH,04H
260 :
261 : ; r^J вниз/влево КОД СИМВОЛА 82H
262 : DEFB 21H,3FH,05H,0DH,19H,31H,0E1H,01H
263 :
264 : ; r^J вниз/вправо КОД СИМВОЛА 83H
265 : DEFB 04H,0FCH,40H,60H,30H,1CH,07H,00H
266 :
267 : ; r^J вверх/влево КОД СИМВОЛА 84H
268 : DEFB 08H,08H,0FFH,08H,09H,01H,01H,7FH
269 :
270 : ; r^J вверх/вправо КОД СИМВОЛА 85H
271 : DEFB 10H,10H,0FFH,10H,10H,00H,00H,0FCH
272 :
273 : ; r^J вниз/влево КОД СИМВОЛА 86H
274 : DEFB 00H,00H,00H,01H,07H,3CH,0E7H,00H
275 :
276 : ; rSJ вниз/вправо КОД СИМВОЛА 87H
277 : DEFB 18H,30H,60H,0C0H,00H,00H,0E0H,3FH
278 : ;
279 : END
Образец показа

|