Rev 627 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
627 | savelij | 1 | |
1120 | savelij | 2 | ; LAST UPDATE: 17.10.2023 savelij |
627 | savelij | 3 | |
4 | ; PHASE 0XEA00-0X31 |
||
5 | ; FLAG'S BIT LAYOUT |
||
6 | _VMODE EQU 0 |
||
7 | _C_STA EQU 1 |
||
8 | _FLEX_C EQU 2 |
||
9 | |||
10 | _CAPS EQU 4 |
||
11 | _RUS EQU 5 |
||
12 | _K_SS EQU 6 |
||
13 | _K_CS EQU 7 |
||
14 | |||
15 | ; FLAG1'S BIT LAYOUT |
||
16 | _OVER EQU 0 |
||
17 | _TRANS EQU 1 |
||
18 | _FASTR EQU 2 |
||
19 | _BREAK EQU 3 |
||
20 | _ROLL EQU 4 |
||
21 | |||
22 | UND_MUX |
||
23 | IRG_FUN XOR A |
||
24 | RET |
||
25 | |||
26 | ; CONVERT WIN-RELATIVE TO ABS & CHECK |
||
27 | CHKCOR: LD HL,(W_X1) |
||
28 | ADD HL,BC |
||
29 | LD B,H |
||
30 | LD C,L |
||
31 | _CHKCO: OR A ; ONLY CHECK |
||
32 | EX AF,AF' |
||
33 | LD A,(W_X1) |
||
34 | CP C |
||
35 | JR Z,_CHS1 |
||
36 | JR NC,_CHX |
||
37 | _CHS1: LD A,(W_X2) |
||
38 | CP C |
||
39 | JR NC,CHSH1 |
||
40 | _CHX: LD C,A |
||
41 | EX AF,AF' |
||
42 | SCF |
||
43 | EX AF,AF' |
||
44 | CHSH1: LD A,(W_Y1) |
||
45 | CP B |
||
46 | JR Z,_CHS2 |
||
47 | JR NC,_CHY |
||
48 | _CHS2: LD A,(W_Y2) |
||
49 | CP B |
||
50 | JR NC,CHSH2 |
||
51 | _CHY: LD B,A |
||
52 | SCF |
||
53 | RET |
||
54 | |||
55 | CHSH2: EX AF,AF' |
||
56 | RET |
||
57 | |||
58 | ; SET CURSOR (W-RELATIVE & CHECK) |
||
59 | GOXY_: CALL CHKCOR |
||
60 | _GOXY: LD (CUR_X),BC ;SET ABS & NO CHECK |
||
61 | CALL GOTO_XY;EV_COR |
||
62 | ; LD (SCR_AD),HL |
||
63 | RET |
||
64 | |||
65 | CUR_IN |
||
66 | ; DI |
||
67 | DEC (IX-_C_CNT) |
||
68 | RET NZ |
||
69 | LD A,(C_MAX) |
||
70 | LD (C_CNT),A |
||
71 | LD A,(FLAG) |
||
72 | XOR 2 ;C_STAT BIT |
||
73 | LD (FLAG),A |
||
74 | EX AF,AF' |
||
75 | LD A,(C_ACT) |
||
76 | OR A |
||
77 | RET NZ |
||
78 | EX AF,AF' |
||
79 | RRA |
||
80 | AND 1 |
||
81 | CALL CURS_OO |
||
82 | RET |
||
83 | ;C_INV: LD HL,C_I |
||
84 | ;SW: LD (SW_DO+1),HL |
||
85 | ; LD HL,(SCR_AD) |
||
86 | ; LD DE,SV_ARE |
||
87 | ; JP SW_C |
||
88 | |||
89 | CUR_AC1 LD (IX-_C_ACT),1 |
||
90 | CUR_AC |
||
91 | ; DI |
||
92 | DEC (IX-_C_ACT) |
||
93 | JR Z,CA_SH |
||
94 | RET P |
||
95 | LD (IX-_C_ACT),0 |
||
96 | RET |
||
97 | |||
98 | CA_SH BIT _C_STA,(IX-_FLAG) |
||
99 | RET Z |
||
100 | LD A,1 |
||
101 | CALL CURS_OO |
||
102 | SET _C_STA,(IX-_FLAG) |
||
103 | RET |
||
104 | ; LD HL,C_A |
||
105 | ; CALL SW |
||
106 | ; BIT _C_STA,(IX-_FLAG) |
||
107 | ; JR NZ,C_INV |
||
108 | ; RET |
||
109 | |||
110 | CUR_PA |
||
111 | ; DI |
||
112 | LD A,(C_ACT) |
||
113 | INC A |
||
114 | LD (C_ACT),A |
||
115 | DEC A |
||
116 | RET NZ |
||
117 | BIT _C_STA,(IX-_FLAG) |
||
118 | RET Z |
||
119 | XOR A |
||
120 | CALL CURS_OO |
||
121 | RES _C_STA,(IX-_FLAG) |
||
122 | RET |
||
123 | ; LD HL,C_P |
||
124 | ; JR SW |
||
125 | |||
126 | ; ENCODING ROUTINE |
||
127 | ENCODE:LD B,A |
||
128 | RLCA |
||
129 | RLCA |
||
130 | RLCA |
||
131 | AND 7 |
||
132 | LD HL,SG_ENC |
||
133 | CALL ADD_HL_A |
||
134 | LD A,(HL) |
||
135 | BIT 4,B |
||
136 | JR Z,ESH |
||
137 | RLCA |
||
138 | RLCA |
||
139 | RLCA |
||
140 | RLCA |
||
141 | ESH: AND 0F0H |
||
142 | XOR B |
||
143 | AND 0F0H |
||
144 | XOR B |
||
145 | RET |
||
146 | |||
147 | ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
||
148 | ; PROTECTION |
||
149 | ROM_CHK |
||
150 | ; IF HACK_RBIOS=0 |
||
151 | ; LD BC,3FFFH |
||
152 | ; ELSE |
||
153 | RET |
||
154 | DW 0X3FFF |
||
155 | ; ENDIF |
||
156 | XOR A |
||
157 | LD H,A |
||
158 | LD L,A |
||
159 | RC_LP: ADD A,(HL) |
||
160 | ADC A,0 |
||
161 | INC HL |
||
162 | RRCA |
||
163 | XOR 0B9H |
||
164 | DEC BC |
||
165 | LD D,A |
||
166 | LD A,B |
||
167 | OR C |
||
168 | LD A,D |
||
169 | JR NZ,RC_LP |
||
170 | DEC A |
||
171 | RET Z |
||
172 | LD A,R |
||
173 | LD L,A |
||
174 | LD H,0DCH ; IS BDOS ADRESS |
||
175 | INC (HL) |
||
176 | AND 7FH |
||
177 | RET NZ |
||
178 | PROT LD HL,MES_RCK |
||
179 | XOR A |
||
180 | RC_PLP:XOR (HL) |
||
181 | INC HL |
||
182 | CALL NZ,CONOUT |
||
183 | JR NZ,RC_PLP |
||
184 | LD A,1 |
||
185 | RST 18H |
||
186 | RC_HLT:LD HL,PAL_BUF |
||
187 | LD B,16 |
||
188 | RC__1: INC (HL) |
||
189 | INC HL |
||
190 | DJNZ RC__1 |
||
191 | CALL SET_PAL |
||
192 | LD B,25 |
||
193 | EI |
||
194 | RC__2: HALT |
||
195 | DJNZ RC__2 |
||
196 | JR RC_HLT |
||
197 | MES_RCK: |
||
198 | DB 0DH,16H,0AH,58H,69H,43H,11H,13H,02H,08H,0EH,01H,4AH,0EH |
||
199 | DB 69H,69H,48H,09H,0DH,18H,11H,01H,4AH,0EH,70H,22H,17H,16H |
||
200 | DB 00H,53H,72H,17H,16H,16H,11H,74H,54H,1BH,4FH,43H,0CH,01H |
||
201 | DB 1AH,1DH,07H,1BH,10H,4BH,00H,00H,2EH |
||
202 | ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
||
203 | |||
204 | ;-------------------------------- |
||
205 | ; ROLL WINDOW UP |
||
206 | ROLL: BIT _ROLL,(IX-_FLAG1) |
||
207 | RET NZ |
||
208 | XOR A |
||
209 | JR ROL_1 |
||
210 | |||
211 | ;-------------------------------- |
||
212 | ; WROLL PROCEDURE. DIRECTION: 0-UP, 1-DOWN, 2-RIGHT, 3-LEFT |
||
213 | WROLL: CALL HEX_CVT |
||
214 | DB 6 |
||
215 | DB 4 |
||
216 | RET C |
||
217 | ROL_1 LD BC,(W_X1) |
||
218 | ROL_2: LD HL,(W_X2) |
||
219 | SBC HL,BC |
||
220 | INC H |
||
221 | INC L |
||
222 | EX DE,HL |
||
223 | JP ROL_WIND |
||
224 | |||
225 | ; OR A |
||
226 | ; JP Z,ROLL |
||
227 | ; DEC A |
||
228 | ; JP Z,UROLL ; A=1 - RIGHT, A=2 - LEFT |
||
229 | ; RRA |
||
230 | ; CALL C,PRP_INS ; PROC'S PRP_INS DON'T CHANGE CF |
||
231 | ; LD C,(IX-_W_X1) |
||
232 | ; JR C,ROL_W |
||
233 | ; CALL PRP_DEL |
||
234 | ; LD C,(IX-_W_X2) |
||
235 | ;ROL_W: LD B,(IX-_W_Y1) |
||
236 | ; CALL EV_COR |
||
237 | ; LD A,(W_Y2) |
||
238 | ; SUB (IX-_W_Y1) |
||
239 | ; RET C |
||
240 | ; INC A |
||
241 | ; LD B,A |
||
242 | ; LD C,(IX-_W_X1) |
||
243 | ;ROL_LW:LD A,(W_X2) |
||
244 | ; SUB C |
||
245 | ; RET C |
||
246 | ; INC A |
||
247 | ; LD C,A |
||
248 | ; LD IY,ARR_CO |
||
249 | ; JP SW_RRL |
||
250 | |||
251 | ;------------------------------- |
||
252 | ; INS/DEL CHAR PROCS |
||
253 | ;I_CH: CALL PRP_INS |
||
254 | ; JR ROL_L |
||
255 | |||
256 | ;D_CH: CALL PRP_DEL |
||
257 | ; LD C,(IX-_W_X2) |
||
258 | ;ROL_L: CALL EV_COR |
||
259 | ; LD C,(IX-_CUR_X) |
||
260 | ; LD B,1 |
||
261 | ; JR ROL_LW |
||
262 | ;------------------------------- |
||
263 | ; INS/DEL CHAR PROCS |
||
264 | I_CH: LD D,2 |
||
265 | DB 21H ; LD HL,NN |
||
266 | D_CH: LD D,3 |
||
267 | CALL _PRP_L |
||
268 | JP ROL_WIND |
||
269 | |||
270 | _PRP_L:LD A,(W_X2) |
||
271 | SUB C |
||
272 | LD E,A |
||
273 | INC E |
||
274 | LD A,D |
||
275 | LD D,1 |
||
276 | RET |
||
277 | |||
278 | ;-------------------------------- |
||
279 | ;CLEAR TO END OF SCREEN |
||
280 | CLREOL: |
||
281 | CALL _PRP_L |
||
282 | _CLR: LD A,' ' |
||
283 | JP CLW_WIND |
||
284 | ; LD HL,40 |
||
285 | ; LD (TMP_W),HL |
||
286 | ; LD HL,FIL |
||
287 | ; LD (SW_CLR+1),HL |
||
288 | ; LD HL,(SCR_AD) |
||
289 | ; LD A,(W_X2) |
||
290 | ; SUB (IX-_CUR_X) |
||
291 | ; RET C |
||
292 | ; INC A |
||
293 | ; LD C,A |
||
294 | ;CESW1: LD B,8 |
||
295 | ; LD IY,ARR_CO |
||
296 | ; JP SW_CLL |
||
297 | |||
298 | ; INIT ENCODER |
||
299 | ENC_INIT: |
||
300 | LD HL,ENC_ITAB |
||
301 | LD DE,SG_ENC |
||
302 | LD BC,12 |
||
303 | LDIR |
||
304 | RET |
||
305 | ENC_ITAB: |
||
306 | DB 01H,23H,45H,67H |
||
307 | DB 01H,23H,0EFH,0CDH |
||
308 | DB 01H,23H,45H,67H |
||
309 | |||
310 | ;HOME CURSOR |
||
311 | PHOME: CALL ROM_CHK |
||
312 | HOME_ LD BC,0 |
||
313 | JP GOXY_ |
||
314 | |||
315 | ;RESET WHOLE SCREEN |
||
316 | C_INIT_: ; CONSOLE INIT (A-DEEP) |
||
317 | CALL RESET |
||
318 | |||
319 | ; SET COLOR '70' |
||
320 | LD DE,'07' |
||
321 | CALL SET_COLOR |
||
322 | ; SET ENCODER |
||
323 | CALL ENC_INIT |
||
324 | ; TURN ON CURSOR |
||
325 | LD A,(C_ACT) |
||
326 | OR A |
||
327 | CALL NZ,CUR_AC1 |
||
328 | ; SET LAT MODE & CAPS |
||
329 | RES _RUS,(IX-_FLAG) |
||
330 | CALL RL_BRD |
||
331 | ; RESET ALL CONIO FLAG |
||
332 | LD (IX-_FLAG1),0 |
||
333 | |||
334 | CLRALL: |
||
335 | LD (IX-_W_X1),0 |
||
336 | LD (IX-_W_Y1),0 |
||
337 | LD (IX-_W_X2),79 |
||
338 | LD (IX-_W_Y2),24 |
||
339 | |||
340 | CLRPG: CALL HOME_ |
||
341 | LD BC,(W_X1) |
||
342 | |||
343 | ;CLEAR REST OF PAGE |
||
344 | CLR_EOP: |
||
345 | CALL CLREOL |
||
346 | ;/* |
||
347 | ; LD HL,(RTIME) |
||
348 | ;#IFNDEF ATM |
||
349 | ; LD DE,-0F4BH |
||
350 | ;#ELSE |
||
351 | ; LD DE,-0EE8H |
||
352 | ;#ENDIF |
||
353 | ; ADD HL,DE |
||
354 | ; LD DE,-5 |
||
355 | ; ADD HL,DE |
||
356 | ; JR NC,__1 |
||
357 | ; INC (IX-_HSIGN) |
||
358 | ;__1: |
||
359 | ;*/ |
||
360 | LD B,(IX-_CUR_Y) |
||
361 | INC B |
||
362 | LD C,(IX-_W_X1) |
||
363 | LD HL,(W_X2) |
||
364 | OR A |
||
365 | SBC HL,BC |
||
366 | INC H |
||
367 | RET Z |
||
368 | INC L |
||
369 | EX DE,HL |
||
370 | JP _CLR |
||
371 | |||
372 | ;RESET WHOLE SCREEN |
||
373 | ;CLRALL: LD (IX-_W_X1),0 |
||
374 | ; LD (IX-_W_X2),79 |
||
375 | ; LD (IX-_W_Y1),0 |
||
376 | ; LD (IX-_W_Y2),24 |
||
377 | ; BIT _VMODE,(IX-_FLAG) |
||
378 | ; JR NZ,DSX |
||
379 | ; LD (IX-_W_X2),39 |
||
380 | ;DSX: |
||
381 | ;CLRPG: CALL HOME_ |
||
382 | |||
383 | ;CLEAR REST OF PAGE |
||
384 | ;CLR_EOP: |
||
385 | ; CALL CLREOL |
||
386 | ; LD A,(W_Y2) |
||
387 | ; SUB (IX-_CUR_Y) |
||
388 | ; RET C |
||
389 | ; RET Z |
||
390 | ; LD B,A |
||
391 | ; LD A,(W_X2) |
||
392 | ; SUB (IX-_W_X1) |
||
393 | ; INC A |
||
394 | ; LD C,A |
||
395 | ; PUSH BC |
||
396 | ; LD B,(IX-_CUR_Y) |
||
397 | ; INC B |
||
398 | ; LD C,(IX-_W_X1) |
||
399 | ; CALL EV_COR |
||
400 | ; POP BC |
||
401 | ;CLLP: PUSH HL |
||
402 | ; PUSH BC |
||
403 | ; CALL $;CESW1 |
||
404 | ; POP BC |
||
405 | ; POP HL |
||
406 | ; LD DE,320 |
||
407 | ; ADD HL,DE |
||
408 | ; DJNZ CLLP |
||
409 | ; RET |
||
410 | |||
411 | ; OUT CHAR & ADVANCE POSITION |
||
412 | PUT_CH: |
||
413 | CALL ENCODE |
||
414 | _P_CHA: CALL _OUT_CH_ |
||
415 | __PCH: LD A,(CUR_X) |
||
416 | CP (IX-_W_X2) |
||
417 | JR NC,N_POS |
||
418 | INC A |
||
419 | LD (CUR_X),A |
||
420 | JP ADV_POS |
||
421 | ; CALL ADV |
||
422 | ; LD (SCR_AD),HL |
||
423 | ; RET |
||
424 | |||
425 | N_POS: LD B,(IX-_CUR_Y) |
||
426 | LD C,(IX-_W_X1) |
||
427 | N_POS1: INC B |
||
428 | CALL _CHKCO |
||
429 | PUSH BC |
||
430 | CALL C,ROLL |
||
431 | POP BC |
||
432 | _GOXY_: JP _GOXY |
||
433 | |||
434 | |||
435 | ;OUTPUT CHAR |
||
436 | OUT_CH: CP " " |
||
437 | JP NC,PUT_CH |
||
438 | LD BC,(CUR_X) |
||
439 | CALL HEX_CVT1 |
||
440 | DB CCH_L*8 |
||
441 | CCH_T: DEFB 0DH,0AH,0EH,0FH,1BH,7,8,9 |
||
442 | CCH_L EQU $-CCH_T |
||
443 | RET |
||
444 | |||
445 | NOP |
||
446 | JR TAB_P |
||
447 | JR BS_P |
||
448 | JR BELL_P |
||
449 | JR ESC_P |
||
450 | JR DC1_P |
||
451 | JR DC3_P |
||
452 | JR N_POS1 |
||
453 | |||
454 | CR_P: LD C,(IX-_W_X1) |
||
455 | JR _GOXY_ |
||
456 | |||
457 | DC1_P: SET _RUS,(IX-_FLAG) |
||
458 | LD A,1 |
||
459 | CALL KB_SET_RUS |
||
460 | LD HL,ENC_SI |
||
461 | DCSH: LD DE,SG_ENC |
||
462 | LD BC,4 |
||
463 | LDIR |
||
464 | JP RL_BRD |
||
465 | |||
466 | DC3_P: RES _RUS,(IX-_FLAG) |
||
467 | XOR A |
||
468 | CALL KB_SET_RUS |
||
469 | LD HL,ENC_SO |
||
470 | JR DCSH |
||
471 | |||
472 | ESC_P: LD HL,ELET_P |
||
473 | SET_SW: LD (OUT_SW+1),HL |
||
474 | RET |
||
475 | |||
476 | TAB_P: LD A," " |
||
477 | CALL _P_CHA |
||
478 | LD A,(CUR_X) |
||
479 | AND 7 |
||
480 | JR NZ,TAB_P |
||
481 | RET |
||
482 | |||
483 | BS_P: DEC C |
||
484 | CALL _CHKCO |
||
485 | JR NC,_GOXY_ |
||
486 | LD C,(IX-_W_X2) |
||
487 | DEC B |
||
488 | CALL _CHKCO |
||
489 | JR NC,_GOXY_ |
||
490 | LD B,(IX-_W_Y2) |
||
491 | JR _GOXY_ |
||
492 | |||
493 | BELL_P: LD HL,(BEEP_D) |
||
494 | BEEP: LD A,(BORDER) |
||
495 | LD C,(IX-_FE_IMG) |
||
496 | DI |
||
497 | BPLP: LD B,H |
||
498 | OUT (C),A |
||
499 | DJNZ $ |
||
500 | XOR 10H |
||
501 | DEC L |
||
502 | JR NZ,BPLP |
||
503 | EI |
||
504 | RET |
||
505 | |||
506 | ;ESC SEQUINCE CONTROL ROUTINE |
||
507 | ELET_P: SUB "@" |
||
508 | JR NC,TST_L |
||
509 | RES_OU: LD HL,OUT_CH |
||
510 | LD (IX-_C_STAT),CS_ERSEC |
||
511 | JR SET_SW |
||
512 | |||
513 | TST_L: CP NPAR_L |
||
514 | JR NC,RES_OU |
||
515 | INC A |
||
516 | LD (FUNC),A |
||
517 | DEC A |
||
518 | LD HL,NPAR_T |
||
519 | CALL ADD_HL_A |
||
520 | LD A,(HL) |
||
521 | OR A |
||
522 | JR Z,DO_PR |
||
523 | ACP_1: LD HL,PAR1 |
||
524 | LD (FCNT),A |
||
525 | LD (PAR_PT),HL |
||
526 | LD HL,ACC_PA |
||
527 | JR SET_SW |
||
528 | |||
529 | ACC_PA: LD HL,(PAR_PT) |
||
530 | SUB " " |
||
531 | JR NC,AP_OK |
||
532 | LD (IX-_FUNC),0FFH |
||
533 | LD (IX-_C_STAT),CS_UNPRN |
||
534 | AP_OK: LD (HL),A |
||
535 | INC HL |
||
536 | LD (PAR_PT),HL |
||
537 | DEC (IX-_FCNT) |
||
538 | RET NZ |
||
539 | DO_PR: |
||
540 | LD HL,OUT_CH |
||
541 | LD (OUT_SW+1),HL |
||
542 | LD A,(FUNC) |
||
543 | INC A |
||
544 | RET Z |
||
545 | DEC A |
||
546 | CALL IRG_FUN |
||
547 | LD BC,(CUR_X) |
||
548 | LD A,(PAR1) |
||
549 | EX AF,AF' |
||
550 | LD A,(FUNC) |
||
551 | CALL _VJMP |
||
552 | DB NPAR_L+1 |
||
553 | DW RES_OU |
||
554 | JPAR_T:DEFW SETP_AUX ; SET PALLET EXECUTABLE PART |
||
555 | DEFW PUT_CH, UP_P, DN_P, RT_P ; @ABC |
||
556 | DEFW LT_P, CLRPG, SET_CO, GRAPH ; DEFG |
||
557 | DEFW PHOME, RLF_P, CLR_EOP,CLREOL ; HIJK |
||
558 | DEFW SET_CA, MODE, PALLET, PLAY ; LMNO |
||
559 | DEFW I_CH, D_CH, SETENC, I_LIN ; PQRS |
||
560 | DEFW D_LIN, BORD_P, GET_ALL,WIND ; TUVW |
||
561 | DEFW WROLL, C_GOXY, S_CUR, CUR_PAR; XYZ[ |
||
1120 | savelij | 562 | DEFW KEY_PA, CUR_LN, SET_MOD,CLRALL ; 0x5C]^_ |
627 | savelij | 563 | DEFW SP_AUX, _CUR_PA,_KEY_PA,PRN_SC ; 'ABC |
564 | |||
565 | ; LD B,0 |
||
566 | ; LD C,(IX-_FUNC) |
||
567 | ; INC C |
||
568 | ; RET Z |
||
569 | ; DEC C |
||
570 | ; LD HL,JPAR_T |
||
571 | ;IJMP: ADD HL,BC |
||
572 | ; ADD HL,BC |
||
573 | ; LD C,(HL) |
||
574 | ; INC HL |
||
575 | ; LD B,(HL) |
||
576 | ; PUSH BC |
||
577 | ; LD BC,(CUR_X) |
||
578 | ; LD A,(PAR1) |
||
579 | ; RET |
||
580 | |||
581 | NPAR_T:DEFB 1, 0, 0, 0 ; @ABC |
||
582 | DEFB 0, 0, 2, 0 ; DEFG |
||
583 | DEFB 0, 0, 0, 0 ; HIJK |
||
584 | DEFB 16,1, 1, 1 ; LMNO |
||
585 | DEFB 0, 0, 9, 0 ; PQRS |
||
586 | DEFB 0, 2, 0, 4 ; TUVW |
||
587 | DEFB 1, 2, 1, 1 ; XYZ[ |
||
1120 | savelij | 588 | DEFB 2, 2, 2, 0 ; 0x5C]^_ |
627 | savelij | 589 | DEFB 16,1, 2, 16 ; 'AB |
590 | NPAR_L EQU $-NPAR_T |
||
591 | |||
592 | GET_ALL: |
||
593 | GRAPH: |
||
594 | PLAY: LD A,-1 |
||
595 | RET |
||
596 | |||
597 | UP_P: DEC B |
||
598 | CALL _CHKCO |
||
599 | JR NC,GO |
||
600 | LD B,(IX-_W_Y2) |
||
601 | GO: JP _GOXY |
||
602 | |||
603 | DN_P: INC B |
||
604 | CALL _CHKCO |
||
605 | JR NC,GO |
||
606 | LD B,(IX-_W_Y1) |
||
607 | JR GO |
||
608 | |||
609 | RT_P: INC C |
||
610 | CALL _CHKCO |
||
611 | JR NC,GO |
||
612 | LD C,(IX-_W_X1) |
||
613 | JR GO |
||
614 | |||
615 | LT_P: DEC C |
||
616 | CALL _CHKCO |
||
617 | JR NC,GO |
||
618 | LD C,(IX-_W_X2) |
||
619 | JR GO |
||
620 | |||
621 | RLF_P: INC B |
||
622 | DEC B |
||
623 | SCF |
||
624 | JR Z,RLF_SK |
||
625 | DEC B |
||
626 | CALL _CHKCO |
||
627 | RLF_SK:PUSH BC |
||
628 | LD A,1 |
||
629 | CALL C,ROL_1 |
||
630 | POP BC |
||
631 | JP _GOXY |
||
632 | |||
633 | SET_CA |
||
634 | SET_CO LD DE,(PAR1) |
||
635 | SET_COLOR: |
||
636 | LD A,E |
||
637 | LD BC,(COLOR_P) |
||
638 | ;PATM 'NI' UC HEX |
||
639 | CALL HEX_CVT |
||
640 | DB 1+4+2*8 ; MATCH 2 LETTER , UPCASE, HEX |
||
641 | DB "NI" ; N- OLD VALUE, I - INVERT |
||
642 | RET C ; NUM OR ERR |
||
643 | NOP |
||
644 | LD B,A ; INVERT OR NUM |
||
645 | NOP |
||
646 | LD A,D ; IGNORE |
||
647 | ;PATM 'NI' UC HEX |
||
648 | CALL HEX_CVT |
||
649 | DB 1+4+2*8 ; MATCH 2 LETTER , UPCASE, HEX |
||
650 | DB "NI" ; N- OLD VALUE, I - INVERT |
||
651 | RET C ; NUM OR ERR |
||
652 | NOP |
||
653 | LD C,A ; INVERT OR NUM |
||
654 | NOP |
||
655 | LD (COLOR_P),BC |
||
656 | BIT 7,B ; NOT CHANGE |
||
657 | JR Z,SCHS1 |
||
658 | LD A,C |
||
659 | CALL INVERT |
||
660 | LD B,A |
||
661 | SCHS1: BIT 7,C |
||
662 | JR Z,SCHS2 |
||
663 | LD A,B |
||
664 | CALL INVERT |
||
665 | LD C,A |
||
666 | SCHS2: CALL PCK |
||
667 | JP CONV_COL |
||
668 | |||
669 | |||
670 | PCK: LD A,B ;IN B-INK, C-PAPER |
||
671 | XOR C ;OUT A-COLOR |
||
672 | AND 0F8H |
||
673 | XOR C |
||
674 | RL C |
||
675 | XOR C |
||
676 | AND 0EFH |
||
677 | XOR C |
||
678 | RLA |
||
679 | RLA |
||
680 | RLA |
||
681 | XOR B |
||
682 | AND 0F8H |
||
683 | XOR B |
||
684 | RET |
||
685 | |||
686 | SET_MOD:CALL HEX_CVT |
||
687 | DB 1+M_LNG*8 |
||
688 | _M_S: DB "IRBFTO" |
||
689 | M_LNG EQU $-_M_S |
||
690 | NOP |
||
691 | RET C |
||
692 | AND 7FH |
||
693 | LD B,A |
||
694 | INC B |
||
695 | XOR A |
||
696 | SCF |
||
697 | SM_L: RLA |
||
698 | DJNZ SM_L |
||
699 | LD C,A |
||
700 | LD A,(PAR2) |
||
701 | CALL HEX_CVT |
||
702 | DB 6 |
||
703 | DB 2 |
||
704 | RET C |
||
705 | RRA |
||
706 | SBC A,A |
||
707 | LD B,(IX-_FLAG1) |
||
708 | XOR B |
||
709 | AND C |
||
710 | XOR B |
||
711 | LD (FLAG1),A |
||
712 | RET |
||
713 | |||
714 | ;MODE PROCEDURE |
||
715 | MODE LD A,(PAR1) |
||
716 | SUB '0'-' ' |
||
717 | LD B,A |
||
718 | CALL SET_MODE |
||
719 | LD (SYS_P),A |
||
720 | CALL SET_SYS |
||
721 | |||
722 | LD (IX-_C_ACT),1 ; FLAG 'CURSOR OFF' |
||
723 | LD H,40H ; CLEAR PHYSICAL SCREEN |
||
724 | CALL _MD1 |
||
725 | LD H,60H |
||
726 | CALL _MD1 |
||
727 | LD H,0C0H |
||
728 | CALL _MD1 |
||
729 | LD H,0E0H |
||
730 | CALL _MD1 |
||
731 | ;CALL TST_RT |
||
732 | LD A,2 |
||
733 | JP C_INIT_ |
||
734 | _MD1: LD L,0 |
||
735 | LD D,H |
||
736 | LD E,1 |
||
737 | LD BC,8000-1 |
||
738 | LD (HL),L |
||
739 | LDIR |
||
740 | RET |
||
741 | |||
742 | SET_MODE: |
||
743 | LD A,(SYS_P) |
||
744 | AND 7!0XFF;NOT 7 |
||
745 | DEC B |
||
746 | JR Z,MOD_TXT |
||
747 | DEC B |
||
748 | RET NZ |
||
749 | OR 2 |
||
750 | RET |
||
751 | MOD_TXT: |
||
752 | OR 6 |
||
753 | RET |
||
754 | |||
755 | |||
756 | ; BIT 0,(IX-_PAR1) |
||
757 | ; LD HL,ARR_CO |
||
758 | ; JR Z,MD_M |
||
759 | ; SET 5,(IX-_FE_IMG) |
||
760 | ; SET _VMODE,(IX-_FLAG) |
||
761 | ; LD DE,ARR_CO+1 |
||
762 | ; LD BC,8 |
||
763 | ; LD (HL),7 |
||
764 | ; LDIR |
||
765 | ; LD (HL),0 |
||
766 | ; LD BC,7 |
||
767 | ; LDIR |
||
768 | ; LD HL,$;HI_MOD |
||
769 | ;MD_SH: LD DE,SW_C |
||
770 | ; LD BC,SW_SIZ |
||
771 | ; LDIR |
||
772 | ; CALL OUT_FE |
||
773 | ; JP CLRALL |
||
774 | |||
775 | ;MD_M: RES 5,(IX-_FE_IMG) |
||
776 | ; RES _VMODE,(IX-_FLAG) |
||
777 | ; LD B,8 |
||
778 | ;MD_M_L: LD (HL),7 |
||
779 | ; INC HL |
||
780 | ; LD (HL),0 |
||
781 | ; INC HL |
||
782 | ; DJNZ MD_M_L |
||
783 | ; LD HL,$;M_MODE |
||
784 | ; JR MD_SH |
||
785 | |||
786 | ;BORDER & BORD COLOR MANIP ROUTINES |
||
787 | BORD_P:CALL HEX_CVT |
||
788 | DB 5;4 |
||
789 | RET C |
||
790 | LD C,A |
||
791 | LD A,(PAR2) |
||
792 | CALL HEX_CVT |
||
793 | DB 5;4 |
||
794 | RET C |
||
795 | RRCA |
||
796 | RRCA |
||
797 | RRCA |
||
798 | RRCA |
||
799 | XOR C |
||
800 | AND 0F0H |
||
801 | XOR C |
||
802 | LD (BCOL),A |
||
803 | |||
804 | RL_BRD: LD A,(BCOL) |
||
805 | BIT _RUS,(IX-_FLAG) |
||
806 | JR NZ,SET_BR |
||
807 | RRA |
||
808 | RRA |
||
809 | RRA |
||
810 | RRA |
||
811 | |||
812 | SET_BR:LD C,A |
||
813 | XOR (IX-_BORDER) |
||
814 | AND 7 |
||
815 | XOR (IX-_BORDER) |
||
816 | LD (BORDER),A |
||
817 | LD A,(FE_IMG) |
||
818 | XOR C |
||
819 | AND 0F7H |
||
820 | XOR C |
||
821 | XOR 8 |
||
822 | LD (FE_IMG),A |
||
823 | |||
824 | OUT_FE:LD C,(IX-_FE_IMG) |
||
825 | LD A,(BORDER) |
||
826 | OUT (C),A |
||
827 | RET |
||
828 | |||
829 | ;GOTOXY PROC |
||
830 | C_GOXY: LD C,(IX-_PAR2) |
||
831 | LD B,A |
||
832 | JP GOXY_ |
||
833 | |||
834 | |||
835 | ;WINDOW PROC |
||
836 | WIND: LD A,(PAR3) |
||
837 | CP (IX-_PAR1) |
||
838 | RET C |
||
839 | LD L,A |
||
840 | ; BIT _VMODE,(IX-_FLAG) |
||
841 | ; JR NZ,$+4 |
||
842 | ; ADD A,A |
||
843 | ; RET C |
||
844 | CP 80 |
||
845 | RET NC |
||
846 | LD A,(PAR4) |
||
847 | CP (IX-_PAR2) |
||
848 | RET C |
||
849 | CP 25 |
||
850 | RET NC |
||
851 | LD H,A |
||
852 | LD (W_X2),HL |
||
853 | LD HL,(PAR1) |
||
854 | LD (W_X1),HL |
||
855 | JP HOME_ |
||
856 | |||
857 | I_LIN: LD A,1 |
||
858 | DB 0EH ; LD C,N |
||
859 | D_LIN: XOR A |
||
860 | LD C,(IX-_W_X1) |
||
861 | JP ROL_2 |
||
862 | |||
863 | ;I_LIN: LD HL,UROLL |
||
864 | ;ID_LIN:LD A,(W_Y1) |
||
865 | ; PUSH AF |
||
866 | ; LD (IX-_W_Y1),B |
||
867 | ; CALL ID__1 |
||
868 | ; POP AF |
||
869 | ; LD (W_Y1),A |
||
870 | ; RET |
||
871 | |||
872 | ;ID__1: JP (HL) |
||
873 | ; |
||
874 | ;D_LIN: LD HL,ROLL |
||
875 | ; JR ID_LIN |
||
876 | |||
877 | S_CUR: CALL HEX_CVT |
||
878 | DB 6 |
||
879 | DB 3 |
||
880 | RET C |
||
881 | RES _FLEX_C,(IX-_FLAG) |
||
882 | DEC A |
||
883 | JP Z,CUR_AC |
||
884 | INC A |
||
885 | EX AF,AF' |
||
886 | CALL CUR_PA |
||
887 | EX AF,AF' |
||
888 | RET Z |
||
889 | SET _FLEX_C,(IX-_FLAG) |
||
890 | RET |
||
891 | |||
892 | CUR_PAR:CALL HEX_CVT |
||
893 | DB 1+6 |
||
894 | DB 32 |
||
895 | RET C |
||
896 | CALL LOG |
||
897 | _CUR_PA:LD (C_MAX),A |
||
898 | RET |
||
899 | |||
900 | _KEY_PA:LD (KEY_REP),A |
||
901 | LD A,(PAR2) |
||
902 | JR _KP_1 |
||
903 | |||
904 | KEY_PA:CALL HEX_CVT |
||
905 | DB 1+6 |
||
906 | DB 32 |
||
907 | RET C |
||
908 | CALL LOG |
||
909 | LD (KEY_REP),A |
||
910 | LD A,(PAR2) |
||
911 | CALL HEX_CVT |
||
912 | DB 1+6 |
||
913 | DB 32 |
||
914 | RET C |
||
915 | CALL LOG |
||
916 | _KP_1: ADD A,A |
||
917 | DEC A |
||
918 | LD (KEY_DEL),A |
||
919 | RET |
||
920 | |||
921 | LOG: INC A |
||
922 | CP 16 |
||
923 | RET C |
||
924 | SUB 8 |
||
925 | CP 16 |
||
926 | JR C,LOG1 |
||
927 | SUB 8 |
||
928 | ADD A,A |
||
929 | LOG1: ADD A,A |
||
930 | RET |
||
931 | |||
932 | CUR_LN:CALL HEX_CVT |
||
933 | DB 6 |
||
934 | DB 8 |
||
935 | RET C |
||
936 | LD B,A |
||
937 | LD A,(PAR2) |
||
938 | CALL HEX_CVT |
||
939 | DB 6 |
||
940 | DB 8 |
||
941 | RET C |
||
942 | CP B |
||
943 | RET C |
||
944 | LD C,A |
||
945 | JP SET_CURS |
||
946 | ; INC A |
||
947 | ; LD (IX-_C_BEG),B |
||
948 | ; LD (C_END),A |
||
949 | ; RET |
||
950 | |||
951 | SETENC:CALL HEX_CVT |
||
952 | DB 6 |
||
953 | DB 3 |
||
954 | RET C |
||
955 | ADD A,A |
||
956 | LD HL,SG_ENC |
||
957 | CALL ADD_HL_2A |
||
958 | LD DE,PAR2 |
||
959 | LD B,8 |
||
960 | SEC_LP:LD A,(DE) |
||
961 | INC DE |
||
962 | CALL HEX_CVT |
||
963 | DB 5;4 |
||
964 | RET C |
||
965 | RLD |
||
966 | BIT 0,B |
||
967 | JR Z,SEC_1 |
||
968 | INC HL |
||
969 | SEC_1: DJNZ SEC_LP |
||
970 | MY_RET:RET |
||
971 | |||
972 | PRN_SC LD C,0 |
||
973 | JP UND_MUX |
||
974 | ; LD DE,PAR1 |
||
975 | ; LD HL,ED_BUF |
||
976 | ; LD B,16 |
||
977 | ; CALL SEC_LP |
||
978 | ; LD DE,ED_BUF |
||
979 | ; CALL _PT_CH |
||
980 | ; JP __PCH |
||
981 | |||
982 | PALLET:CALL HEX_CVT |
||
983 | DB 1+4+8*2 |
||
984 | DB "RT" |
||
985 | ; NOP |
||
986 | RET C |
||
987 | NOP |
||
988 | JR PLT_1 |
||
989 | |||
990 | JR SP_DEF |
||
991 | |||
992 | PLT_1 |
||
993 | ; CP 81H |
||
994 | ; JR Z,SP_DEF |
||
995 | LD (PAR4),A |
||
996 | XOR A |
||
997 | LD (FUNC),A |
||
998 | SPA_S: LD A,3 |
||
999 | JP ACP_1 |
||
1000 | |||
1001 | SP_DEF:LD HL,PALN |
||
1002 | JR SP_AUX1 |
||
1003 | |||
1004 | SP_AUX:LD HL,PAR1 |
||
1005 | SP_DIR |
||
1006 | SP_AUX1:LD DE,PAL_BUF |
||
1007 | LD BC,16 |
||
1008 | LDIR |
||
1009 | JR SET_PAL |
||
1010 | |||
1011 | SETP_AUX: |
||
1012 | LD B,3 |
||
1013 | LD D,0 |
||
1014 | LD HL,PAR1 |
||
1015 | PACC_: LD A,(HL) |
||
1016 | CALL HEX_CVT |
||
1017 | DB 6 |
||
1018 | DB 4 |
||
1019 | RET C |
||
1020 | CPL |
||
1021 | RRA |
||
1022 | RRA |
||
1023 | RL D |
||
1024 | RLA |
||
1025 | SBC A,A |
||
1026 | AND 8 |
||
1027 | OR D |
||
1028 | LD D,A |
||
1029 | INC HL |
||
1030 | DJNZ PACC_ |
||
1031 | ADD A,A |
||
1032 | ADD A,A |
||
1033 | XOR D |
||
1034 | AND 0FCH |
||
1035 | XOR D |
||
1036 | OR 0CH |
||
1037 | LD D,A |
||
1038 | LD HL,PAL_BUF |
||
1039 | LD A,(PAR4) |
||
1040 | AND 7FH |
||
1041 | CALL ADD_HL_A |
||
1042 | LD (HL),D ; PAGE 1 SETS ON ENTRY TO CONOUT |
||
1043 | INC (IX-_PAR4) |
||
1044 | JP P,SET_PAL |
||
1045 | BIT 4,(IX-_PAR4) |
||
1046 | JR Z,SPA_S |
||
1047 | ;---------------------- |
||
1048 | ; SET PALLET FROM PAL_BUF |
||
1049 | SET_PAL: DI |
||
1050 | LD A,I |
||
1051 | PUSH AF |
||
1052 | LD A,HIGH (MY_R_ADR) ; 3DH |
||
1053 | LD I,A |
||
1054 | IM 2 |
||
1055 | LD A,(SYS_P) |
||
1056 | LD BC,0BD77H |
||
1057 | OUT (C),A |
||
1058 | LD A,(BORDER) |
||
1059 | AND 0F8H |
||
1060 | LD HL,PAL_BUF |
||
1061 | LD C,0XFF |
||
1062 | LD D,8 |
||
1063 | EXX |
||
1064 | LD C,(IX-_FE_IMG) |
||
1065 | SET 3,C |
||
1066 | EXX |
||
1067 | EI |
||
1068 | HALT |
||
1069 | DI |
||
1070 | SPL: EXX |
||
1071 | OUT (C),A |
||
1072 | EXX |
||
1073 | OUTI |
||
1074 | ; INC B |
||
1075 | INC A |
||
1076 | DEC D |
||
1077 | JR NZ,SPL |
||
1078 | EXX |
||
1079 | RES 3,C |
||
1080 | EXX |
||
1081 | SUB 8 |
||
1082 | LD D,8 |
||
1083 | SPL1: EXX |
||
1084 | OUT (C),A |
||
1085 | EXX |
||
1086 | OUTI |
||
1087 | ; INC B |
||
1088 | INC A |
||
1089 | DEC D |
||
1090 | JR NZ,SPL1 |
||
1091 | ADD A,0 ; +7 |
||
1092 | CALL OUT_FE ; +71 / +78 = 13*6 |
||
1093 | POP AF |
||
1094 | LD I,A |
||
1095 | IM 1 |
||
1096 | CALL SET_SYS |
||
1097 | EI |
||
1098 | LD BC,1000H ; FIND MIN&MAX COLORS |
||
1099 | LD DE,0FFH ; D - MAX, E - MIN |
||
1100 | LD HL,PAL_BUF |
||
1101 | FIV_LP:CALL CLT |
||
1102 | CP D |
||
1103 | JR C,FIV_NU |
||
1104 | LD D,A |
||
1105 | LD (IX-_I_MAX),C |
||
1106 | FIV_NU:CP E |
||
1107 | JR NC,FIV_ND |
||
1108 | LD E,A |
||
1109 | LD (IX-_I_MIN),C |
||
1110 | FIV_ND:INC C |
||
1111 | INC HL |
||
1112 | DJNZ FIV_LP |
||
1113 | LD A,D |
||
1114 | ADD A,E |
||
1115 | LD (I_AVR),A |
||
1116 | JP RL_BRD |
||
1117 | |||
1118 | INVERT:PUSH HL |
||
1119 | LD HL,PAL_BUF |
||
1120 | CALL ADD_HL_A |
||
1121 | CALL CLT |
||
1122 | ADD A,A |
||
1123 | LD HL,I_AVR |
||
1124 | CP (HL) |
||
1125 | POP HL |
||
1126 | LD A,(I_MIN) |
||
1127 | RET NC |
||
1128 | LD A,(I_MAX) |
||
1129 | RET |
||
1130 | |||
1131 | CLT: PUSH HL |
||
1132 | PUSH BC |
||
1133 | LD C,(HL) |
||
1134 | LD HL,CLT_TB |
||
1135 | LD B,6 |
||
1136 | XOR A |
||
1137 | CLT_LP:RR C |
||
1138 | JR C,CLT_1 |
||
1139 | ADD A,(HL) |
||
1140 | CLT_1: INC HL |
||
1141 | DJNZ CLT_LP |
||
1142 | POP BC |
||
1143 | POP HL |
||
1144 | RET |
||
1145 | |||
1146 | CLT_TB:DB 2,6,0CH,1,3,6 |
||
1147 | |||
1148 | DEPHASE |
||
1149 | |||
1150 | ;------------------------------------------------ |
||
1151 | CONOUT PUSH BC ;PRINT CHAR FROM A |
||
1152 | PUSH DE ;DESTROY ALL ALT REGS |
||
1153 | PUSH HL ;IX MAST POINT TO IX_BASE |
||
1154 | PUSH IY |
||
1155 | PUSH AF |
||
1156 | EX AF,AF' |
||
1157 | LD A,1 |
||
1158 | RST 18H |
||
1159 | PUSH AF |
||
1160 | CALL CUR_PA |
||
1161 | EI |
||
1162 | EX AF,AF' |
||
1163 | CALL OUT_SW |
||
1164 | CALL CUR_AC |
||
1165 | POP AF |
||
1166 | RST 18H |
||
1167 | EI |
||
1168 | POP AF |
||
1169 | POP IY |
||
1170 | POP HL |
||
1171 | POP DE |
||
1172 | POP BC |
||
1173 | RET |