Details | Last modification | View Log
Rev | Author | Line No. | Line |
---|---|---|---|
1476 | alone | 1 | clear_screen: |
2 | ld e,0 |
||
3 | OS_CLS |
||
4 | ret |
||
5 | |||
6 | setpal_proc |
||
7 | ; call makefadepixel |
||
8 | ; call makewhitepixel |
||
9 | ; call makefonttable |
||
10 | ; ld de,(fadecolor) |
||
11 | ; OS_SETBORDER |
||
12 | ld de,pal |
||
13 | OS_SETPAL |
||
14 | xor a |
||
15 | ld (setpalflag),a |
||
16 | ret |
||
17 | |||
18 | |||
19 | print_hl |
||
20 | ld a,(hl) |
||
21 | or a |
||
22 | ret z |
||
23 | push hl |
||
24 | PRCHAR |
||
25 | pop hl |
||
26 | inc hl |
||
27 | jp print_hl |
||
28 | ret |
||
29 | |||
30 | ;--------------------------------------- |
||
31 | ;for 320x200 |
||
32 | _immed_big: |
||
33 | ld a,1 |
||
34 | ld (setpalflag),a |
||
35 | call store8000c000 |
||
36 | |||
37 | halt |
||
38 | ld a,(load_buf1) |
||
39 | SETPG8000 |
||
40 | ld a,(user_scr0_low) |
||
41 | SETPGC000 |
||
42 | |||
43 | |||
44 | ld hl,0x8000 |
||
45 | ld de,0xc000 |
||
46 | ld bc,8000 |
||
47 | ldir |
||
48 | |||
49 | |||
50 | |||
51 | ld a,(load_buf2) |
||
52 | SETPG8000 |
||
53 | ld a,(user_scr0_high) |
||
54 | SETPGC000 |
||
55 | |||
56 | |||
57 | ld hl,0x8000 |
||
58 | ld de,0xc000 |
||
59 | ld bc,8000 |
||
60 | ldir |
||
61 | |||
62 | |||
63 | ld a,(load_buf1) |
||
64 | SETPG8000 |
||
65 | ld a,(user_scr0_low) |
||
66 | SETPGC000 |
||
67 | |||
68 | |||
69 | ld hl,0xa000 |
||
70 | ld de,0xe000 |
||
71 | ld bc,8000 |
||
72 | ldir |
||
73 | |||
74 | |||
75 | |||
76 | ld a,(load_buf2) |
||
77 | SETPG8000 |
||
78 | ld a,(user_scr0_high) |
||
79 | SETPGC000 |
||
80 | |||
81 | |||
82 | ld hl,0xa000 |
||
83 | ld de,0xe000 |
||
84 | ld bc,8000 |
||
85 | ldir |
||
86 | |||
87 | jp restore8000c000 |
||
88 | ;------------- |
||
89 | ;------------------------------------------------------------------ |
||
90 | ; 320x200 |
||
91 | ;left to right and right to left same time (interleave) |
||
92 | ;mode ???? |
||
93 | _sidas_big: |
||
94 | xor a |
||
95 | ld (mask_mode),a |
||
96 | |||
97 | ld a,(load_buf1) |
||
98 | ld (src_buf1),a |
||
99 | ld a,(load_buf2) |
||
100 | ld (src_buf2),a |
||
101 | |||
102 | ld a,1 |
||
103 | ld (setpalflag),a |
||
104 | call store8000c000 |
||
105 | |||
106 | |||
107 | ld hl,0x8000 |
||
108 | ld (sidas_l1),hl |
||
109 | ld hl,0x8000+39 |
||
110 | ld (sidas_r1),hl |
||
111 | |||
112 | ld b,40 |
||
113 | _sidas_loop1 |
||
114 | push bc |
||
115 | |||
116 | |||
117 | ld a,(src_buf1) |
||
118 | SETPG8000 |
||
119 | ld a,(user_scr0_low) |
||
120 | SETPGC000 |
||
121 | |||
122 | |||
123 | halt |
||
124 | |||
125 | ld hl,0 |
||
126 | sidas_l1 equ $-2 |
||
127 | push hl |
||
128 | pop de |
||
129 | set 6,D |
||
130 | |||
131 | push hl |
||
132 | push de |
||
133 | |||
134 | ld b,200 |
||
135 | call _down_cpy |
||
136 | |||
137 | pop de |
||
138 | pop hl |
||
139 | push hl |
||
140 | |||
141 | set 5,H |
||
142 | set 5,D |
||
143 | |||
144 | ld b,200 |
||
145 | call _down_cpy |
||
146 | |||
147 | pop hl |
||
148 | inc hl |
||
149 | ld (sidas_l1),hl |
||
150 | |||
151 | |||
152 | ld a,(src_buf2) |
||
153 | SETPG8000 |
||
154 | ld a,(user_scr0_high) |
||
155 | SETPGC000 |
||
156 | |||
157 | ld hl,0 |
||
158 | sidas_r1 equ $-2 |
||
159 | push hl |
||
160 | pop de |
||
161 | set 6,D |
||
162 | |||
163 | set 5,H |
||
164 | set 5,D |
||
165 | |||
166 | push hl |
||
167 | push de |
||
168 | |||
169 | ld b,200 |
||
170 | call _down_cpy |
||
171 | |||
172 | pop de |
||
173 | pop hl |
||
174 | push hl |
||
175 | |||
176 | res 5,H |
||
177 | res 5,D |
||
178 | |||
179 | ld b,200 |
||
180 | call _down_cpy |
||
181 | |||
182 | pop hl |
||
183 | dec hl |
||
184 | ld (sidas_r1),hl |
||
185 | |||
186 | |||
187 | pop bc |
||
188 | dec b |
||
189 | jp nz,_sidas_loop1 |
||
190 | |||
191 | jp restore8000c000 |
||
192 | ;------------------------------------------------------------------ |
||
193 | ;------------------------------------------------------------------ |
||
194 | ;copy image to screen by mask (9 color in palette is mask) |
||
195 | _iob_byte: |
||
196 | ld a,(de) |
||
197 | cp 0b11000000 ;double transparent bytes |
||
198 | jr z,_iob_next_b |
||
199 | push af |
||
200 | and 0b10111000 |
||
201 | cp 0b10000000 |
||
202 | jr z,_iob_left_transparent |
||
203 | pop af |
||
204 | push af |
||
205 | and 0b01000111 |
||
206 | cp 0b01000000 |
||
207 | jr z,_iob_right_transparent |
||
208 | pop af |
||
209 | ld (hl),a; all solid. copy |
||
210 | _iob_next_b |
||
211 | ret |
||
212 | |||
213 | _iob |
||
214 | _iob_loop |
||
215 | call _iob_byte |
||
216 | inc de |
||
217 | inc hl |
||
218 | dec bc |
||
219 | ld a,b |
||
220 | or c |
||
221 | jr nz,_iob_loop |
||
222 | ret |
||
223 | _iob_left_transparent |
||
224 | ld a,0b10111000 ; |
||
225 | and (hl) |
||
226 | ld (hl),a |
||
227 | pop af |
||
228 | and 0b01000111 |
||
229 | or (hl) |
||
230 | ld (hl),a |
||
231 | jr _iob_next_b |
||
232 | _iob_right_transparent |
||
233 | ld a,0b01000111 |
||
234 | and (hl) |
||
235 | ld (hl),a |
||
236 | pop af |
||
237 | and 0b10111000 |
||
238 | or (hl) |
||
239 | ld (hl),a |
||
240 | jr _iob_next_b |
||
241 | ;---------------------------------------- |
||
242 | mask_mode db 0 |
||
243 | _sprite_output_mask_no_pal: |
||
244 | ld a,1 |
||
245 | jr _sprite_output_o |
||
246 | sprite_output_no_pal: |
||
247 | xor a |
||
248 | _sprite_output_o: |
||
249 | ld (mask_mode),a |
||
250 | |||
251 | ld a,(scr_buf1) |
||
252 | ld (src_buf1),a |
||
253 | ld a,(scr_buf2) |
||
254 | ld (src_buf2),a |
||
255 | |||
256 | jr _mb_output |
||
257 | _memory_output_mask: |
||
258 | ld a,1 |
||
259 | jr _memory_output_o |
||
260 | _memory_output: |
||
261 | xor a |
||
262 | _memory_output_o: |
||
263 | ld (mask_mode),a |
||
264 | |||
265 | ld a,(mem_buf1) |
||
266 | ld (src_buf1),a |
||
267 | ld a,(mem_buf2) |
||
268 | ld (src_buf2),a |
||
269 | |||
270 | ld hl,mempal |
||
271 | ld de,pal |
||
272 | ld bc,32 |
||
273 | ldir ;copy palette for image in membuf |
||
274 | |||
275 | jr _mb_output |
||
276 | _2ndscreen_output: |
||
277 | xor a |
||
278 | ld (mask_mode),a |
||
279 | ld a,(user_scr1_low) |
||
280 | ld (src_buf1),a |
||
281 | ld a,(user_scr1_high) |
||
282 | ld (src_buf2),a |
||
283 | jr _mb_output |
||
284 | _buffer_output_mask: |
||
285 | ld a,1 |
||
286 | jr _buffer_output_o |
||
287 | _buffer_output |
||
288 | xor a |
||
289 | _buffer_output_o: |
||
290 | ld (mask_mode),a |
||
291 | _buffer_output_op: |
||
292 | ld a,(load_buf1) |
||
293 | ld (src_buf1),a |
||
294 | ld a,(load_buf2) |
||
295 | ld (src_buf2),a |
||
296 | _mb_output: |
||
297 | ld a,0 |
||
298 | outtyp equ $-1 |
||
299 | cp 0 |
||
300 | jp z,_immed |
||
301 | cp 4 |
||
302 | jp z,_sidas |
||
303 | cp 5 |
||
304 | jp z,_jaluzi |
||
305 | cp 6 |
||
306 | jp z,_sidas |
||
307 | cp 7 |
||
308 | jp z,_cntsds |
||
309 | cp 8 |
||
310 | jp z,_dn_up |
||
311 | cp 9 |
||
312 | jp z,_immed |
||
313 | cp 10 |
||
314 | jp z,_jaluzi |
||
315 | cp 11 |
||
316 | jp z,_lftrgt |
||
317 | cp 12 |
||
318 | jp z,_cntsds_r |
||
319 | cp 13 |
||
320 | jp z,_ud_nd |
||
321 | jp _jaluzi |
||
322 | ;------------------------------------------------------------------ |
||
323 | ; 240x148 |
||
324 | ;mode 0x32 |
||
325 | _immed: |
||
326 | ld a,1 |
||
327 | ld (setpalflag),a |
||
328 | call store8000c000 |
||
329 | |||
330 | |||
331 | halt |
||
332 | ld a,(src_buf1) |
||
333 | SETPG8000 |
||
334 | ld a,(user_scr0_low) |
||
335 | SETPGC000 |
||
336 | |||
337 | ld hl,0x8005 |
||
338 | ld b,148 |
||
339 | _immed_v1: |
||
340 | push bc |
||
341 | push hl |
||
342 | pop de |
||
343 | |||
344 | ex de,hl |
||
345 | set 6,h |
||
346 | ld bc,320 |
||
347 | add hl,bc |
||
348 | ex de,hl |
||
349 | |||
350 | call _ldi_30 |
||
351 | ld bc,10 |
||
352 | add hl,bc |
||
353 | pop bc |
||
354 | djnz _immed_v1 |
||
355 | |||
356 | |||
357 | |||
358 | halt |
||
359 | ld a,(src_buf2) |
||
360 | SETPG8000 |
||
361 | ld a,(user_scr0_high) |
||
362 | SETPGC000 |
||
363 | |||
364 | ld hl,0x8005 |
||
365 | ld b,148 |
||
366 | _immed_v2: |
||
367 | push bc |
||
368 | push hl |
||
369 | pop de |
||
370 | |||
371 | ex de,hl |
||
372 | set 6,h |
||
373 | ld bc,320 |
||
374 | add hl,bc |
||
375 | ex de,hl |
||
376 | |||
377 | call _ldi_30 |
||
378 | ld bc,10 |
||
379 | add hl,bc |
||
380 | pop bc |
||
381 | djnz _immed_v2 |
||
382 | |||
383 | halt |
||
384 | ld a,(src_buf1) |
||
385 | SETPG8000 |
||
386 | ld a,(user_scr0_low) |
||
387 | SETPGC000 |
||
388 | |||
389 | ld hl,0xa005 |
||
390 | ld b,148 |
||
391 | _immed_v3: |
||
392 | push bc |
||
393 | push hl |
||
394 | pop de |
||
395 | |||
396 | ex de,hl |
||
397 | set 6,h |
||
398 | ld bc,320 |
||
399 | add hl,bc |
||
400 | ex de,hl |
||
401 | |||
402 | call _ldi_30 |
||
403 | ld bc,10 |
||
404 | add hl,bc |
||
405 | pop bc |
||
406 | djnz _immed_v3 |
||
407 | |||
408 | halt |
||
409 | ld a,(src_buf2) |
||
410 | SETPG8000 |
||
411 | ld a,(user_scr0_high) |
||
412 | SETPGC000 |
||
413 | |||
414 | ld hl,0xa005 |
||
415 | ld b,148 |
||
416 | _immed_v4: |
||
417 | push bc |
||
418 | push hl |
||
419 | pop de |
||
420 | |||
421 | ex de,hl |
||
422 | set 6,h |
||
423 | ld bc,320 |
||
424 | add hl,bc |
||
425 | ex de,hl |
||
426 | |||
427 | call _ldi_30 |
||
428 | ld bc,10 |
||
429 | add hl,bc |
||
430 | pop bc |
||
431 | djnz _immed_v4 |
||
432 | jp restore8000c000 |
||
433 | |||
434 | ;------------------------------------------------------------------ |
||
435 | _ldi_30 |
||
436 | ld a,(mask_mode) |
||
437 | and a |
||
438 | jr nz,_ldi_30_iob |
||
439 | dup 30 |
||
440 | ldi |
||
441 | edup |
||
442 | ret |
||
443 | _ldi_30_iob |
||
444 | ex de,hl |
||
445 | dup 30 |
||
446 | call _iob_byte |
||
447 | inc hl |
||
448 | inc de |
||
449 | edup |
||
450 | ex de,hl |
||
451 | ret |
||
452 | ;---- |
||
453 | ;hl-src de-dest b,counter |
||
454 | _down_cpy: |
||
455 | ld a,(mask_mode) |
||
456 | and a |
||
457 | jr nz,_down_cpy_iob |
||
458 | |||
459 | push bc |
||
460 | ld a,(hl) |
||
461 | ld (de),a |
||
462 | call DHL |
||
463 | ex de,hl |
||
464 | call DHL |
||
465 | ex de,hl |
||
466 | pop bc |
||
467 | djnz _down_cpy |
||
468 | ret |
||
469 | _down_cpy_iob: |
||
470 | push bc |
||
471 | |||
472 | ex de,hl |
||
473 | call _iob_byte |
||
474 | ex de,hl |
||
475 | |||
476 | call DHL |
||
477 | ex de,hl |
||
478 | call DHL |
||
479 | ex de,hl |
||
480 | pop bc |
||
481 | djnz _down_cpy |
||
482 | ret |
||
483 | ;------------------------------------------------------------------ |
||
484 | ; 240x148 |
||
485 | ;left to right |
||
486 | ;mode ????? ;0x3d |
||
487 | _lftrgt: |
||
488 | ld a,1 |
||
489 | ld (setpalflag),a |
||
490 | call store8000c000 |
||
491 | |||
492 | |||
493 | ld hl,0x8005 |
||
494 | |||
495 | ld b,30 |
||
496 | _lftrgt_loop |
||
497 | push bc |
||
498 | |||
499 | push hl |
||
500 | pop de |
||
501 | |||
502 | ex de,hl |
||
503 | set 6,h |
||
504 | ld bc,320 |
||
505 | add hl,bc |
||
506 | ex de,hl |
||
507 | |||
508 | |||
509 | push hl |
||
510 | push de |
||
511 | |||
512 | halt |
||
513 | ld a,(src_buf1) |
||
514 | SETPG8000 |
||
515 | ld a,(user_scr0_low) |
||
516 | SETPGC000 |
||
517 | |||
518 | |||
519 | ld b,148 |
||
520 | call _down_cpy |
||
521 | |||
522 | pop de |
||
523 | pop hl |
||
524 | push hl |
||
525 | push de |
||
526 | |||
527 | halt |
||
528 | ld a,(src_buf2) |
||
529 | SETPG8000 |
||
530 | ld a,(user_scr0_high) |
||
531 | SETPGC000 |
||
532 | |||
533 | ld b,148 |
||
534 | call _down_cpy |
||
535 | |||
536 | |||
537 | pop de |
||
538 | pop hl |
||
539 | |||
540 | set 5,H |
||
541 | set 5,D |
||
542 | |||
543 | push hl |
||
544 | push de |
||
545 | |||
546 | halt |
||
547 | ld a,(src_buf1) |
||
548 | SETPG8000 |
||
549 | ld a,(user_scr0_low) |
||
550 | SETPGC000 |
||
551 | |||
552 | |||
553 | ld b,148 |
||
554 | call _down_cpy |
||
555 | |||
556 | pop de |
||
557 | pop hl |
||
558 | push hl |
||
559 | push de |
||
560 | |||
561 | halt |
||
562 | ld a,(src_buf2) |
||
563 | SETPG8000 |
||
564 | ld a,(user_scr0_high) |
||
565 | SETPGC000 |
||
566 | |||
567 | ld b,148 |
||
568 | call _down_cpy |
||
569 | |||
570 | pop de |
||
571 | pop hl |
||
572 | res 5,h |
||
573 | inc hl |
||
574 | |||
575 | |||
576 | pop bc |
||
577 | dec b |
||
578 | jp nz,_lftrgt_loop |
||
579 | |||
580 | jp restore8000c000 |
||
581 | ;------------------------------------------------------------------ |
||
582 | ; 240x148 |
||
583 | ;left to right and right to left same time (interleave) |
||
584 | ;mode ???? |
||
585 | _sidas: |
||
586 | ld a,1 |
||
587 | ld (setpalflag),a |
||
588 | call store8000c000 |
||
589 | |||
590 | |||
591 | ld hl,0x8005 |
||
592 | ld (sidas_l),hl |
||
593 | ld hl,0x8005+29 |
||
594 | ld (sidas_r),hl |
||
595 | |||
596 | ld b,30 |
||
597 | _sidas_loop |
||
598 | push bc |
||
599 | |||
600 | |||
601 | ld a,(src_buf1) |
||
602 | SETPG8000 |
||
603 | ld a,(user_scr0_low) |
||
604 | SETPGC000 |
||
605 | |||
606 | |||
607 | halt |
||
608 | |||
609 | ld hl,0 |
||
610 | sidas_l equ $-2 |
||
611 | push hl |
||
612 | pop de |
||
613 | |||
614 | ex de,hl |
||
615 | set 6,h |
||
616 | ld bc,320 |
||
617 | add hl,bc |
||
618 | ex de,hl |
||
619 | |||
620 | push hl |
||
621 | push de |
||
622 | |||
623 | ld b,148 |
||
624 | call _down_cpy |
||
625 | |||
626 | pop de |
||
627 | pop hl |
||
628 | push hl |
||
629 | |||
630 | set 5,H |
||
631 | set 5,D |
||
632 | |||
633 | ld b,148 |
||
634 | call _down_cpy |
||
635 | |||
636 | pop hl |
||
637 | inc hl |
||
638 | ld (sidas_l),hl |
||
639 | |||
640 | |||
641 | ld a,(src_buf2) |
||
642 | SETPG8000 |
||
643 | ld a,(user_scr0_high) |
||
644 | SETPGC000 |
||
645 | |||
646 | ld hl,0 |
||
647 | sidas_r equ $-2 |
||
648 | push hl |
||
649 | pop de |
||
650 | |||
651 | ex de,hl |
||
652 | set 6,h |
||
653 | ld bc,320 |
||
654 | add hl,bc |
||
655 | ex de,hl |
||
656 | |||
657 | set 5,H |
||
658 | set 5,D |
||
659 | |||
660 | push hl |
||
661 | push de |
||
662 | |||
663 | ld b,148 |
||
664 | call _down_cpy |
||
665 | |||
666 | pop de |
||
667 | pop hl |
||
668 | push hl |
||
669 | |||
670 | res 5,H |
||
671 | res 5,D |
||
672 | |||
673 | ld b,148 |
||
674 | call _down_cpy |
||
675 | |||
676 | pop hl |
||
677 | dec hl |
||
678 | ld (sidas_r),hl |
||
679 | |||
680 | |||
681 | pop bc |
||
682 | dec b |
||
683 | jp nz,_sidas_loop |
||
684 | |||
685 | jp restore8000c000 |
||
686 | ;------------------------------------------------------------------ |
||
687 | ; 240x148 |
||
688 | ;top to middle and bottom to middle same time |
||
689 | ;mode ??? |
||
690 | _ud_nd: |
||
691 | ld a,1 |
||
692 | ld (setpalflag),a |
||
693 | call store8000c000 |
||
694 | |||
695 | |||
696 | ld hl,0x8005 |
||
697 | ld (_ud_nd_top),hl |
||
698 | ld hl,0x8005+(147*40) |
||
699 | ld (_ud_nd_btm),hl |
||
700 | |||
701 | |||
702 | ld b,148/2 ;160/2 |
||
703 | _ud_nd_loop: |
||
704 | halt |
||
705 | push bc |
||
706 | |||
707 | |||
708 | |||
709 | ld a,(src_buf1) |
||
710 | SETPG8000 |
||
711 | ld a,(user_scr0_low) |
||
712 | SETPGC000 |
||
713 | |||
714 | |||
715 | ld hl,0 |
||
716 | _ud_nd_top: equ $-2 |
||
717 | |||
718 | push hl |
||
719 | pop de |
||
720 | |||
721 | ex de,hl |
||
722 | set 6,h |
||
723 | ld bc,320 |
||
724 | add hl,bc |
||
725 | ex de,hl |
||
726 | |||
727 | push hl |
||
728 | push de |
||
729 | |||
730 | call _ldi_30 |
||
731 | |||
732 | pop de |
||
733 | pop hl |
||
734 | |||
735 | |||
736 | set 5,h |
||
737 | set 5,d |
||
738 | |||
739 | call _ldi_30 |
||
740 | |||
741 | ld hl,0 |
||
742 | _ud_nd_btm: equ $-2 |
||
743 | |||
744 | push hl |
||
745 | pop de |
||
746 | |||
747 | ex de,hl |
||
748 | set 6,h |
||
749 | ld bc,320 |
||
750 | add hl,bc |
||
751 | ex de,hl |
||
752 | |||
753 | push hl |
||
754 | push de |
||
755 | |||
756 | call _ldi_30 |
||
757 | |||
758 | pop de |
||
759 | pop hl |
||
760 | |||
761 | |||
762 | set 5,h |
||
763 | set 5,d |
||
764 | |||
765 | call _ldi_30 |
||
766 | |||
767 | ld a,(src_buf2) |
||
768 | SETPG8000 |
||
769 | ld a,(user_scr0_high) |
||
770 | SETPGC000 |
||
771 | |||
772 | |||
773 | ld hl,(_ud_nd_top) |
||
774 | |||
775 | push hl |
||
776 | pop de |
||
777 | |||
778 | ex de,hl |
||
779 | set 6,h |
||
780 | ld bc,320 |
||
781 | add hl,bc |
||
782 | ex de,hl |
||
783 | |||
784 | push hl |
||
785 | push de |
||
786 | |||
787 | call _ldi_30 |
||
788 | |||
789 | pop de |
||
790 | pop hl |
||
791 | push hl |
||
792 | |||
793 | set 5,h |
||
794 | set 5,d |
||
795 | |||
796 | call _ldi_30 |
||
797 | |||
798 | pop hl |
||
799 | call DHL |
||
800 | ld (_ud_nd_top),hl |
||
801 | |||
802 | ld hl,(_ud_nd_btm) |
||
803 | |||
804 | push hl |
||
805 | pop de |
||
806 | |||
807 | ex de,hl |
||
808 | set 6,h |
||
809 | ld bc,320 |
||
810 | add hl,bc |
||
811 | ex de,hl |
||
812 | |||
813 | push hl |
||
814 | push de |
||
815 | |||
816 | call _ldi_30 |
||
817 | |||
818 | pop de |
||
819 | pop hl |
||
820 | |||
821 | push hl |
||
822 | set 5,h |
||
823 | set 5,d |
||
824 | |||
825 | call _ldi_30 |
||
826 | |||
827 | pop hl |
||
828 | call UPHL |
||
829 | ld (_ud_nd_btm),hl |
||
830 | |||
831 | |||
832 | pop bc |
||
833 | dec b |
||
834 | jp nz,_ud_nd_loop |
||
835 | |||
836 | jp restore8000c000 |
||
837 | ;------------------------------------------------------------------ |
||
838 | ; 240x148 |
||
839 | ;from center up and down same time |
||
840 | ;mode 0x3a |
||
841 | _dn_up: |
||
842 | ld a,1 |
||
843 | ld (setpalflag),a |
||
844 | call store8000c000 |
||
845 | |||
846 | |||
847 | ld hl,0x8005+(74*40) |
||
848 | ld (_dn_up_top),hl |
||
849 | ld hl,0x8005+(73*40) |
||
850 | ld (_dn_up_btm),hl |
||
851 | |||
852 | |||
853 | ld b,74 ;148/2 |
||
854 | _dn_up_loop: |
||
855 | halt |
||
856 | push bc |
||
857 | |||
858 | |||
859 | |||
860 | ld a,(src_buf1) |
||
861 | SETPG8000 |
||
862 | ld a,(user_scr0_low) |
||
863 | SETPGC000 |
||
864 | |||
865 | |||
866 | ld hl,0 |
||
867 | _dn_up_top: equ $-2 |
||
868 | |||
869 | push hl |
||
870 | pop de |
||
871 | |||
872 | ex de,hl |
||
873 | set 6,h |
||
874 | ld bc,320 |
||
875 | add hl,bc |
||
876 | ex de,hl |
||
877 | |||
878 | push hl |
||
879 | push de |
||
880 | |||
881 | call _ldi_30 |
||
882 | |||
883 | pop de |
||
884 | pop hl |
||
885 | |||
886 | |||
887 | set 5,h |
||
888 | set 5,d |
||
889 | |||
890 | call _ldi_30 |
||
891 | |||
892 | ld hl,0 |
||
893 | _dn_up_btm: equ $-2 |
||
894 | |||
895 | push hl |
||
896 | pop de |
||
897 | |||
898 | ex de,hl |
||
899 | set 6,h |
||
900 | ld bc,320 |
||
901 | add hl,bc |
||
902 | ex de,hl |
||
903 | |||
904 | push hl |
||
905 | push de |
||
906 | |||
907 | call _ldi_30 |
||
908 | |||
909 | pop de |
||
910 | pop hl |
||
911 | |||
912 | |||
913 | set 5,h |
||
914 | set 5,d |
||
915 | |||
916 | call _ldi_30 |
||
917 | |||
918 | ld a,(src_buf2) |
||
919 | SETPG8000 |
||
920 | ld a,(user_scr0_high) |
||
921 | SETPGC000 |
||
922 | |||
923 | |||
924 | ld hl,(_dn_up_top) |
||
925 | |||
926 | push hl |
||
927 | pop de |
||
928 | |||
929 | ex de,hl |
||
930 | set 6,h |
||
931 | ld bc,320 |
||
932 | add hl,bc |
||
933 | ex de,hl |
||
934 | |||
935 | push hl |
||
936 | push de |
||
937 | |||
938 | call _ldi_30 |
||
939 | |||
940 | pop de |
||
941 | pop hl |
||
942 | push hl |
||
943 | |||
944 | set 5,h |
||
945 | set 5,d |
||
946 | |||
947 | call _ldi_30 |
||
948 | |||
949 | pop hl |
||
950 | call DHL |
||
951 | ld (_dn_up_top),hl |
||
952 | |||
953 | ld hl,(_dn_up_btm) |
||
954 | |||
955 | push hl |
||
956 | pop de |
||
957 | |||
958 | ex de,hl |
||
959 | set 6,h |
||
960 | ld bc,320 |
||
961 | add hl,bc |
||
962 | ex de,hl |
||
963 | |||
964 | push hl |
||
965 | push de |
||
966 | |||
967 | call _ldi_30 |
||
968 | |||
969 | pop de |
||
970 | pop hl |
||
971 | |||
972 | push hl |
||
973 | set 5,h |
||
974 | set 5,d |
||
975 | |||
976 | call _ldi_30 |
||
977 | |||
978 | pop hl |
||
979 | call UPHL |
||
980 | ld (_dn_up_btm),hl |
||
981 | |||
982 | |||
983 | pop bc |
||
984 | dec b |
||
985 | jp nz,_dn_up_loop |
||
986 | |||
987 | jp restore8000c000 |
||
988 | ;------------------------------------------------------------------ |
||
989 | ; 240x148 |
||
990 | ;jaluzi top to bottom and bottom to top same tome interleave |
||
991 | ;mode 0x3c |
||
992 | _jaluzi: |
||
993 | ld a,1 |
||
994 | ld (setpalflag),a |
||
995 | call store8000c000 |
||
996 | |||
997 | |||
998 | |||
999 | ld hl,0x8005 |
||
1000 | ld (_jaluzi_top),hl |
||
1001 | ld hl,0x8005+(147*40) |
||
1002 | ld (_jaluzi_btm),hl |
||
1003 | |||
1004 | |||
1005 | ld b,74 ;148/2 |
||
1006 | _jaluzi_loop: |
||
1007 | halt |
||
1008 | push bc |
||
1009 | |||
1010 | ld a,(src_buf1) |
||
1011 | SETPG8000 |
||
1012 | ld a,(user_scr0_low) |
||
1013 | SETPGC000 |
||
1014 | |||
1015 | |||
1016 | ld hl,0 |
||
1017 | _jaluzi_top: equ $-2 |
||
1018 | |||
1019 | push hl |
||
1020 | pop de |
||
1021 | |||
1022 | ex de,hl |
||
1023 | set 6,h |
||
1024 | ld bc,320 |
||
1025 | add hl,bc |
||
1026 | ex de,hl |
||
1027 | |||
1028 | push hl |
||
1029 | push de |
||
1030 | |||
1031 | call _ldi_30 |
||
1032 | |||
1033 | pop de |
||
1034 | pop hl |
||
1035 | |||
1036 | |||
1037 | set 5,h |
||
1038 | set 5,d |
||
1039 | |||
1040 | call _ldi_30 |
||
1041 | |||
1042 | ld hl,0 |
||
1043 | _jaluzi_btm: equ $-2 |
||
1044 | |||
1045 | push hl |
||
1046 | pop de |
||
1047 | |||
1048 | ex de,hl |
||
1049 | set 6,h |
||
1050 | ld bc,320 |
||
1051 | add hl,bc |
||
1052 | ex de,hl |
||
1053 | |||
1054 | push hl |
||
1055 | push de |
||
1056 | |||
1057 | call _ldi_30 |
||
1058 | |||
1059 | pop de |
||
1060 | pop hl |
||
1061 | |||
1062 | |||
1063 | set 5,h |
||
1064 | set 5,d |
||
1065 | |||
1066 | call _ldi_30 |
||
1067 | |||
1068 | ld a,(src_buf2) |
||
1069 | SETPG8000 |
||
1070 | ld a,(user_scr0_high) |
||
1071 | SETPGC000 |
||
1072 | |||
1073 | |||
1074 | ld hl,(_jaluzi_top) |
||
1075 | |||
1076 | push hl |
||
1077 | pop de |
||
1078 | |||
1079 | ex de,hl |
||
1080 | set 6,h |
||
1081 | ld bc,320 |
||
1082 | add hl,bc |
||
1083 | ex de,hl |
||
1084 | |||
1085 | push hl |
||
1086 | push de |
||
1087 | |||
1088 | call _ldi_30 |
||
1089 | |||
1090 | pop de |
||
1091 | pop hl |
||
1092 | push hl |
||
1093 | |||
1094 | set 5,h |
||
1095 | set 5,d |
||
1096 | |||
1097 | call _ldi_30 |
||
1098 | |||
1099 | pop hl |
||
1100 | call DHL1 |
||
1101 | ld (_jaluzi_top),hl |
||
1102 | |||
1103 | ld hl,(_jaluzi_btm) |
||
1104 | |||
1105 | push hl |
||
1106 | pop de |
||
1107 | |||
1108 | ex de,hl |
||
1109 | set 6,h |
||
1110 | ld bc,320 |
||
1111 | add hl,bc |
||
1112 | ex de,hl |
||
1113 | |||
1114 | push hl |
||
1115 | push de |
||
1116 | |||
1117 | call _ldi_30 |
||
1118 | |||
1119 | pop de |
||
1120 | pop hl |
||
1121 | |||
1122 | push hl |
||
1123 | set 5,h |
||
1124 | set 5,d |
||
1125 | |||
1126 | call _ldi_30 |
||
1127 | |||
1128 | pop hl |
||
1129 | call UPHL1 |
||
1130 | ld (_jaluzi_btm),hl |
||
1131 | |||
1132 | pop bc |
||
1133 | dec b |
||
1134 | jp nz,_jaluzi_loop |
||
1135 | |||
1136 | jp restore8000c000 |
||
1137 | ;------------------------------------------------------------------ |
||
1138 | ; 240x148 |
||
1139 | ;from center to sides left and right same time |
||
1140 | ;mode 0x39 |
||
1141 | _cntsds: |
||
1142 | ld a,1 |
||
1143 | ld (setpalflag),a |
||
1144 | call store8000c000 |
||
1145 | |||
1146 | |||
1147 | ld hl,0x8005+14 ;to left |
||
1148 | ld (_cntsds_lft),hl |
||
1149 | |||
1150 | ld hl,0x8005+15 ;to right |
||
1151 | ld (_cntsds_rgt),hl |
||
1152 | |||
1153 | xor a |
||
1154 | ld (_cntsds_fsa),a |
||
1155 | |||
1156 | |||
1157 | ld b,60 ; 256 /2 /2 |
||
1158 | _cntsds_loop: |
||
1159 | halt |
||
1160 | push bc |
||
1161 | |||
1162 | ld hl,_cntsds_loop_end |
||
1163 | push hl |
||
1164 | |||
1165 | |||
1166 | ld a,0 |
||
1167 | _cntsds_fsa: equ $-1 |
||
1168 | and a |
||
1169 | jp z,_cntsds_f0 |
||
1170 | cp 1 |
||
1171 | jp z,_cntsds_f1 |
||
1172 | cp 2 |
||
1173 | jp z,_cntsds_f2 |
||
1174 | cp 3 |
||
1175 | jp z,_cntsds_f3 |
||
1176 | |||
1177 | |||
1178 | _cntsds_loop_end: |
||
1179 | ld a,(_cntsds_fsa) |
||
1180 | inc a |
||
1181 | and 3 |
||
1182 | ld (_cntsds_fsa),a |
||
1183 | pop bc |
||
1184 | dec b |
||
1185 | jp nz,_cntsds_loop |
||
1186 | |||
1187 | |||
1188 | jp restore8000c000 |
||
1189 | |||
1190 | ;---- |
||
1191 | _cntsds_f0: |
||
1192 | ld a,(src_buf2) |
||
1193 | SETPG8000 |
||
1194 | ld a,(user_scr0_high) |
||
1195 | SETPGC000 |
||
1196 | |||
1197 | ld hl,0 |
||
1198 | _cntsds_lft: equ $-2 |
||
1199 | push hl |
||
1200 | pop de |
||
1201 | |||
1202 | ex de,hl |
||
1203 | set 6,h |
||
1204 | ld bc,320 |
||
1205 | add hl,bc |
||
1206 | ex de,hl |
||
1207 | |||
1208 | set 5,h |
||
1209 | set 5,d |
||
1210 | |||
1211 | ld b,148 |
||
1212 | call _down_cpy |
||
1213 | |||
1214 | ld a,(src_buf1) |
||
1215 | SETPG8000 |
||
1216 | ld a,(user_scr0_low) |
||
1217 | SETPGC000 |
||
1218 | |||
1219 | ld hl,0 |
||
1220 | _cntsds_rgt: equ $-2 |
||
1221 | push hl |
||
1222 | pop de |
||
1223 | |||
1224 | ex de,hl |
||
1225 | set 6,h |
||
1226 | ld bc,320 |
||
1227 | add hl,bc |
||
1228 | ex de,hl |
||
1229 | |||
1230 | ld b,148 |
||
1231 | jp _down_cpy |
||
1232 | |||
1233 | |||
1234 | ;---- |
||
1235 | _cntsds_f2: |
||
1236 | ld a,(src_buf2) |
||
1237 | SETPG8000 |
||
1238 | ld a,(user_scr0_high) |
||
1239 | SETPGC000 |
||
1240 | |||
1241 | ld hl,(_cntsds_lft) |
||
1242 | push hl |
||
1243 | pop de |
||
1244 | |||
1245 | ex de,hl |
||
1246 | set 6,h |
||
1247 | ld bc,320 |
||
1248 | add hl,bc |
||
1249 | ex de,hl |
||
1250 | |||
1251 | ld b,148 |
||
1252 | call _down_cpy |
||
1253 | |||
1254 | ld a,(src_buf1) |
||
1255 | SETPG8000 |
||
1256 | ld a,(user_scr0_low) |
||
1257 | SETPGC000 |
||
1258 | |||
1259 | ld hl,(_cntsds_rgt) |
||
1260 | push hl |
||
1261 | pop de |
||
1262 | |||
1263 | ex de,hl |
||
1264 | set 6,h |
||
1265 | ld bc,320 |
||
1266 | add hl,bc |
||
1267 | ex de,hl |
||
1268 | |||
1269 | set 5,h |
||
1270 | set 5,d |
||
1271 | |||
1272 | ld b,148 |
||
1273 | jp _down_cpy |
||
1274 | |||
1275 | |||
1276 | ;---- |
||
1277 | _cntsds_f1: |
||
1278 | ld a,(src_buf1) |
||
1279 | SETPG8000 |
||
1280 | ld a,(user_scr0_low) |
||
1281 | SETPGC000 |
||
1282 | |||
1283 | ld hl,(_cntsds_lft) |
||
1284 | push hl |
||
1285 | pop de |
||
1286 | |||
1287 | ex de,hl |
||
1288 | set 6,h |
||
1289 | ld bc,320 |
||
1290 | add hl,bc |
||
1291 | ex de,hl |
||
1292 | |||
1293 | set 5,h |
||
1294 | set 5,d |
||
1295 | |||
1296 | ld b,148 |
||
1297 | call _down_cpy |
||
1298 | |||
1299 | ld a,(src_buf2) |
||
1300 | SETPG8000 |
||
1301 | ld a,(user_scr0_high) |
||
1302 | SETPGC000 |
||
1303 | |||
1304 | ld hl,(_cntsds_rgt) |
||
1305 | push hl |
||
1306 | pop de |
||
1307 | |||
1308 | ex de,hl |
||
1309 | set 6,h |
||
1310 | ld bc,320 |
||
1311 | add hl,bc |
||
1312 | ex de,hl |
||
1313 | |||
1314 | ld b,148 |
||
1315 | jp _down_cpy |
||
1316 | ;---- |
||
1317 | _cntsds_f3: |
||
1318 | ld a,(src_buf1) |
||
1319 | SETPG8000 |
||
1320 | ld a,(user_scr0_low) |
||
1321 | SETPGC000 |
||
1322 | |||
1323 | ld hl,(_cntsds_lft) |
||
1324 | push hl |
||
1325 | push hl |
||
1326 | pop de |
||
1327 | |||
1328 | ex de,hl |
||
1329 | set 6,h |
||
1330 | ld bc,320 |
||
1331 | add hl,bc |
||
1332 | ex de,hl |
||
1333 | |||
1334 | ld b,148 |
||
1335 | call _down_cpy |
||
1336 | |||
1337 | pop hl |
||
1338 | dec hl |
||
1339 | ld (_cntsds_lft),hl |
||
1340 | |||
1341 | ld a,(src_buf2) |
||
1342 | SETPG8000 |
||
1343 | ld a,(user_scr0_high) |
||
1344 | SETPGC000 |
||
1345 | |||
1346 | ld hl,(_cntsds_rgt) |
||
1347 | push hl |
||
1348 | push hl |
||
1349 | pop de |
||
1350 | |||
1351 | ex de,hl |
||
1352 | set 6,h |
||
1353 | ld bc,320 |
||
1354 | add hl,bc |
||
1355 | ex de,hl |
||
1356 | |||
1357 | set 5,h |
||
1358 | set 5,d |
||
1359 | |||
1360 | |||
1361 | ld b,148 |
||
1362 | call _down_cpy |
||
1363 | |||
1364 | pop hl |
||
1365 | inc hl |
||
1366 | ld (_cntsds_rgt),hl |
||
1367 | ret |
||
1368 | ;------------------------------------------------------------------ |
||
1369 | ; 240x148 |
||
1370 | ;from sides left and right to center same time |
||
1371 | ;mode 0x39 |
||
1372 | _cntsds_r: |
||
1373 | ld a,1 |
||
1374 | ld (setpalflag),a |
||
1375 | call store8000c000 |
||
1376 | |||
1377 | |||
1378 | ld hl,0x8005 ;to left |
||
1379 | ld (_cntsds_lft_r),hl |
||
1380 | |||
1381 | ld hl,0x8005+29 ;to right |
||
1382 | ld (_cntsds_rgt_r),hl |
||
1383 | |||
1384 | xor a |
||
1385 | ld (_cntsds_fsa_r),a |
||
1386 | |||
1387 | |||
1388 | ld b,64 ; 256 /2 /2 |
||
1389 | _cntsds_loop_r: |
||
1390 | halt |
||
1391 | push bc |
||
1392 | |||
1393 | ld hl,_cntsds_loop_end_r |
||
1394 | push hl |
||
1395 | |||
1396 | |||
1397 | ld a,0 |
||
1398 | _cntsds_fsa_r: equ $-1 |
||
1399 | and a |
||
1400 | jp z,_cntsds_f3_r |
||
1401 | cp 1 |
||
1402 | jp z,_cntsds_f2_r |
||
1403 | cp 2 |
||
1404 | jp z,_cntsds_f1_r |
||
1405 | cp 3 |
||
1406 | jp z,_cntsds_f0_r |
||
1407 | |||
1408 | |||
1409 | _cntsds_loop_end_r: |
||
1410 | ld a,(_cntsds_fsa_r) |
||
1411 | inc a |
||
1412 | and 3 |
||
1413 | ld (_cntsds_fsa_r),a |
||
1414 | pop bc |
||
1415 | dec b |
||
1416 | jp nz,_cntsds_loop_r |
||
1417 | |||
1418 | |||
1419 | jp restore8000c000 |
||
1420 | |||
1421 | ;---- |
||
1422 | _cntsds_f0_r: |
||
1423 | ld a,(src_buf2) |
||
1424 | SETPG8000 |
||
1425 | ld a,(user_scr0_high) |
||
1426 | SETPGC000 |
||
1427 | |||
1428 | ld hl,0 |
||
1429 | _cntsds_lft_r: equ $-2 |
||
1430 | push hl |
||
1431 | push hl |
||
1432 | pop de |
||
1433 | |||
1434 | ex de,hl |
||
1435 | set 6,h |
||
1436 | ld bc,320 |
||
1437 | add hl,bc |
||
1438 | ex de,hl |
||
1439 | |||
1440 | set 5,h |
||
1441 | set 5,d |
||
1442 | |||
1443 | ld b,148 |
||
1444 | call _down_cpy |
||
1445 | |||
1446 | pop hl |
||
1447 | inc hl |
||
1448 | ld (_cntsds_lft_r),hl |
||
1449 | |||
1450 | ld a,(src_buf1) |
||
1451 | SETPG8000 |
||
1452 | ld a,(user_scr0_low) |
||
1453 | SETPGC000 |
||
1454 | |||
1455 | ld hl,0 |
||
1456 | _cntsds_rgt_r: equ $-2 |
||
1457 | |||
1458 | push hl |
||
1459 | push hl |
||
1460 | pop de |
||
1461 | |||
1462 | ex de,hl |
||
1463 | set 6,h |
||
1464 | ld bc,320 |
||
1465 | add hl,bc |
||
1466 | ex de,hl |
||
1467 | |||
1468 | ld b,148 |
||
1469 | call _down_cpy |
||
1470 | pop hl |
||
1471 | dec hl |
||
1472 | ld (_cntsds_rgt_r),hl |
||
1473 | ret |
||
1474 | |||
1475 | |||
1476 | ;---- |
||
1477 | _cntsds_f2_r: |
||
1478 | ld a,(src_buf2) |
||
1479 | SETPG8000 |
||
1480 | ld a,(user_scr0_high) |
||
1481 | SETPGC000 |
||
1482 | |||
1483 | ld hl,(_cntsds_lft_r) |
||
1484 | push hl |
||
1485 | pop de |
||
1486 | |||
1487 | ex de,hl |
||
1488 | set 6,h |
||
1489 | ld bc,320 |
||
1490 | add hl,bc |
||
1491 | ex de,hl |
||
1492 | |||
1493 | ld b,148 |
||
1494 | call _down_cpy |
||
1495 | |||
1496 | ld a,(src_buf1) |
||
1497 | SETPG8000 |
||
1498 | ld a,(user_scr0_low) |
||
1499 | SETPGC000 |
||
1500 | |||
1501 | ld hl,(_cntsds_rgt_r) |
||
1502 | push hl |
||
1503 | pop de |
||
1504 | |||
1505 | ex de,hl |
||
1506 | set 6,h |
||
1507 | ld bc,320 |
||
1508 | add hl,bc |
||
1509 | ex de,hl |
||
1510 | |||
1511 | set 5,h |
||
1512 | set 5,d |
||
1513 | |||
1514 | ld b,148 |
||
1515 | jp _down_cpy |
||
1516 | |||
1517 | |||
1518 | ;---- |
||
1519 | _cntsds_f1_r: |
||
1520 | ld a,(src_buf1) |
||
1521 | SETPG8000 |
||
1522 | ld a,(user_scr0_low) |
||
1523 | SETPGC000 |
||
1524 | |||
1525 | ld hl,(_cntsds_lft_r) |
||
1526 | push hl |
||
1527 | pop de |
||
1528 | |||
1529 | ex de,hl |
||
1530 | set 6,h |
||
1531 | ld bc,320 |
||
1532 | add hl,bc |
||
1533 | ex de,hl |
||
1534 | |||
1535 | set 5,h |
||
1536 | set 5,d |
||
1537 | |||
1538 | ld b,148 |
||
1539 | call _down_cpy |
||
1540 | |||
1541 | ld a,(src_buf2) |
||
1542 | SETPG8000 |
||
1543 | ld a,(user_scr0_high) |
||
1544 | SETPGC000 |
||
1545 | |||
1546 | ld hl,(_cntsds_rgt_r) |
||
1547 | push hl |
||
1548 | pop de |
||
1549 | |||
1550 | ex de,hl |
||
1551 | set 6,h |
||
1552 | ld bc,320 |
||
1553 | add hl,bc |
||
1554 | ex de,hl |
||
1555 | |||
1556 | ld b,148 |
||
1557 | jp _down_cpy |
||
1558 | ;---- |
||
1559 | _cntsds_f3_r: |
||
1560 | ld a,(src_buf1) |
||
1561 | SETPG8000 |
||
1562 | ld a,(user_scr0_low) |
||
1563 | SETPGC000 |
||
1564 | |||
1565 | ld hl,(_cntsds_lft_r) |
||
1566 | push hl |
||
1567 | pop de |
||
1568 | |||
1569 | ex de,hl |
||
1570 | set 6,h |
||
1571 | ld bc,320 |
||
1572 | add hl,bc |
||
1573 | ex de,hl |
||
1574 | |||
1575 | ld b,148 |
||
1576 | call _down_cpy |
||
1577 | |||
1578 | ld a,(src_buf2) |
||
1579 | SETPG8000 |
||
1580 | ld a,(user_scr0_high) |
||
1581 | SETPGC000 |
||
1582 | |||
1583 | ld hl,(_cntsds_rgt_r) |
||
1584 | |||
1585 | push hl |
||
1586 | pop de |
||
1587 | |||
1588 | ex de,hl |
||
1589 | set 6,h |
||
1590 | ld bc,320 |
||
1591 | add hl,bc |
||
1592 | ex de,hl |
||
1593 | |||
1594 | set 5,h |
||
1595 | set 5,d |
||
1596 | |||
1597 | |||
1598 | ld b,148 |
||
1599 | jp _down_cpy |
||
1600 | ;------------------------------------------------------------------ |
||
1601 | _pradd2 |
||
1602 | LD (CORDS),BC |
||
1603 | SRL C |
||
1604 | SBC A |
||
1605 | AND %00100000 |
||
1606 | LD (.M111),A |
||
1607 | |||
1608 | PUSH HL |
||
1609 | LD H,#C0 |
||
1610 | LD A,H |
||
1611 | OR 0 |
||
1612 | .M111 EQU $-1 |
||
1613 | LD H,A |
||
1614 | |||
1615 | LD A,C |
||
1616 | ; ADD A,4 |
||
1617 | LD L,A |
||
1618 | |||
1619 | ld a,b |
||
1620 | and a |
||
1621 | jr z,.skip |
||
1622 | LD DE,320 |
||
1623 | .pradd_l: |
||
1624 | ADD HL,DE |
||
1625 | DJNZ .pradd_l |
||
1626 | .skip |
||
1627 | LD (COORDS),HL |
||
1628 | POP HL |
||
1629 | RET |
||
1630 | ;------------------------------------------------------------------ |
||
1631 | _pradd_p: |
||
1632 | LD (CORDS_P),BC |
||
1633 | SRL C |
||
1634 | SBC A |
||
1635 | AND %00100000 |
||
1636 | LD (.M111),A |
||
1637 | |||
1638 | PUSH HL |
||
1639 | LD H,#80 |
||
1640 | LD A,H |
||
1641 | OR 0 |
||
1642 | .M111 EQU $-1 |
||
1643 | LD H,A |
||
1644 | |||
1645 | LD A,C |
||
1646 | ADD A,4 |
||
1647 | LD L,A |
||
1648 | |||
1649 | ld a,b |
||
1650 | and a |
||
1651 | jr z,.skip |
||
1652 | LD DE,320 |
||
1653 | .pradd_l: |
||
1654 | ADD HL,DE |
||
1655 | DJNZ .pradd_l |
||
1656 | .skip |
||
1657 | LD (COORDS_P),HL |
||
1658 | POP HL |
||
1659 | RET |
||
1660 | |||
1661 | |||
1662 | _pradd_p2: |
||
1663 | LD (CORDS_P),BC |
||
1664 | SRL C |
||
1665 | SBC A |
||
1666 | AND %00100000 |
||
1667 | LD (.M111),A |
||
1668 | |||
1669 | PUSH HL |
||
1670 | LD H,#80 |
||
1671 | LD A,H |
||
1672 | OR 0 |
||
1673 | .M111 EQU $-1 |
||
1674 | LD H,A |
||
1675 | |||
1676 | LD A,C |
||
1677 | ADD A,4 |
||
1678 | LD L,A |
||
1679 | |||
1680 | ld a,b |
||
1681 | and a |
||
1682 | jr z,.skip |
||
1683 | LD DE,320 |
||
1684 | .pradd_l: |
||
1685 | ADD HL,DE |
||
1686 | DJNZ .pradd_l |
||
1687 | .skip |
||
1688 | ld de,160+320 |
||
1689 | add hl,de |
||
1690 | LD (COORDS_P),HL |
||
1691 | POP HL |
||
1692 | RET |
||
1693 | ;------------------------------------------------------------------ |
||
1694 | ;in B - y C-x |
||
1695 | ;out set coordinates for TYPE |
||
1696 | |||
1697 | _pradd |
||
1698 | LD (CORDS),BC |
||
1699 | SRL C |
||
1700 | SBC A |
||
1701 | AND %00100000 |
||
1702 | LD (M111),A |
||
1703 | |||
1704 | PUSH HL |
||
1705 | LD H,#C0 |
||
1706 | LD A,H |
||
1707 | OR 0 |
||
1708 | M111 EQU $-1 |
||
1709 | LD H,A |
||
1710 | |||
1711 | LD A,C |
||
1712 | ADD A,4 |
||
1713 | LD L,A |
||
1714 | |||
1715 | LD DE,320 |
||
1716 | pradd_l: |
||
1717 | ADD HL,DE |
||
1718 | DJNZ pradd_l |
||
1719 | ld de,160+320 |
||
1720 | add hl,de |
||
1721 | LD (COORDS),HL |
||
1722 | POP HL |
||
1723 | RET |
||
1724 | ;--------------- |
||
1725 | ;in A - char to print |
||
1726 | _type |
||
1727 | ld de,0 |
||
1728 | COORDS equ $-2 |
||
1729 | ld h,0 |
||
1730 | ld l,a |
||
1731 | M10: |
||
1732 | ld bc,FONT |
||
1733 | add hl,hl |
||
1734 | add hl,hl |
||
1735 | add hl,hl |
||
1736 | add hl,hl |
||
1737 | add hl,bc ;hl addr in FONT |
||
1738 | |||
1739 | ; ex de,hl |
||
1740 | push de |
||
1741 | push hl |
||
1742 | call setfontpage |
||
1743 | pop hl |
||
1744 | ld de,font_buf |
||
1745 | ld bc,16 |
||
1746 | ldir |
||
1747 | call unsetfontpage |
||
1748 | |||
1749 | |||
1750 | pop hl |
||
1751 | |||
1752 | ld de,font_buf |
||
1753 | push hl |
||
1754 | ld a,(user_scr0_low) |
||
1755 | SETPGC000 |
||
1756 | ld b,8 |
||
1757 | _ppnz2: |
||
1758 | push bc |
||
1759 | ld a,(de) |
||
1760 | clr1 dw 0 |
||
1761 | ld (hl),a |
||
1762 | inc de |
||
1763 | ld bc,40 |
||
1764 | add hl,bc |
||
1765 | pop bc |
||
1766 | djnz _ppnz2 |
||
1767 | pop hl |
||
1768 | |||
1769 | push hl |
||
1770 | ld a,(user_scr0_high) |
||
1771 | SETPGC000 |
||
1772 | ld b,8 |
||
1773 | _ppnz3: |
||
1774 | push bc |
||
1775 | ld a,(de) |
||
1776 | clr2 dw 0 |
||
1777 | ld (hl),a |
||
1778 | inc de |
||
1779 | ld bc,40 |
||
1780 | add hl,bc |
||
1781 | pop bc |
||
1782 | djnz _ppnz3 |
||
1783 | pop hl |
||
1784 | |||
1785 | ld a,h |
||
1786 | xor 0x20 |
||
1787 | bit 5,h |
||
1788 | ld h,a |
||
1789 | jr z,_ppnz4: |
||
1790 | inc hl |
||
1791 | |||
1792 | _ppnz4: |
||
1793 | ld (COORDS),hl |
||
1794 | ld bc,(CORDS) |
||
1795 | inc c |
||
1796 | ld (CORDS),bc |
||
1797 | |||
1798 | ret ;////// disable auto CR |
||
1799 | |||
1800 | ld a,c |
||
1801 | cp 64 |
||
1802 | ret c |
||
1803 | |||
1804 | inc b |
||
1805 | ld c,0 |
||
1806 | jp _pradd |
||
1807 | |||
1808 | UPHL1 CALL UPHL |
||
1809 | UPHL |
||
1810 | PUSH BC |
||
1811 | LD BC,40 |
||
1812 | AND A |
||
1813 | SBC HL,BC |
||
1814 | POP BC |
||
1815 | RET |
||
1816 | |||
1817 | |||
1818 | DHL1 CALL DHL |
||
1819 | DHL |
||
1820 | PUSH BC |
||
1821 | LD BC,40 |
||
1822 | ADD HL,BC |
||
1823 | POP BC |
||
1824 | RET |
||
1825 | |||
1826 | ;;;;;;;;;;;;;;;;;;;;;;; |
||
1827 | prcharprop_shch |
||
1828 | ;ld a,'�' |
||
1829 | call prcharprop_do |
||
1830 | ld a,255 |
||
1831 | jr prcharprop_do |
||
1832 | |||
1833 | _type_p: |
||
1834 | ld hl,0 |
||
1835 | COORDS_P equ $-2 |
||
1836 | prcharprop_do |
||
1837 | ;print with proportional font (any char width) |
||
1838 | ;hl=screen addr |
||
1839 | ;c=phase (even=left, odd=right pixel) |
||
1840 | ;a=char |
||
1841 | push hl |
||
1842 | |||
1843 | call setfontpage |
||
1844 | |||
1845 | ld l,a |
||
1846 | ld h,FONT2/256 ;propfont |
||
1847 | ld de,font_buf ;chardata |
||
1848 | ;1. copy char data |
||
1849 | ;shift 1 pix right if needed |
||
1850 | bit 0,c |
||
1851 | jr z,prcharprop_copyfontnoscroll |
||
1852 | dup 7 |
||
1853 | ld a,(hl) |
||
1854 | rrca |
||
1855 | ld (de),a |
||
1856 | inc h |
||
1857 | inc e |
||
1858 | edup |
||
1859 | ld a,(hl) |
||
1860 | rrca |
||
1861 | jp prcharprop_copyfontq |
||
1862 | prcharprop_copyfontnoscroll |
||
1863 | dup 7 |
||
1864 | ld a,(hl) |
||
1865 | ld (de),a |
||
1866 | inc h |
||
1867 | inc e |
||
1868 | edup |
||
1869 | ld a,(hl) |
||
1870 | prcharprop_copyfontq |
||
1871 | ld (de),a |
||
1872 | inc h |
||
1873 | ld b,(hl) ;charwidth |
||
1874 | ld a,c ;phase |
||
1875 | add a,b |
||
1876 | ld ly,a ;next phase = phase + charwidth |
||
1877 | ld a,c ;phase |
||
1878 | and 1 ;phase&1 |
||
1879 | inc a |
||
1880 | add a,b ;charwidth |
||
1881 | rra |
||
1882 | ld hy,a ;number of 2 pixel columns = (charwidth + (phase&1) + 1)/2 |
||
1883 | |||
1884 | call unsetfontpage |
||
1885 | |||
1886 | ld a,(user_scr0_low) ;ok |
||
1887 | SETPG8000 |
||
1888 | ld a,(user_scr0_high) ;ok |
||
1889 | SETPGC000 |
||
1890 | |||
1891 | pop hl |
||
1892 | ;hl=screen addr |
||
1893 | ;hy=number of 2 pixel columns = (charwidth + (phase&1) + 1)/2 |
||
1894 | ;ly=next phase (even=left, odd=right pixel) |
||
1895 | ;2. print 2 pixel vertical line (scroll left bits 7,6 in char data) |
||
1896 | ld bc,40 |
||
1897 | prcharprop_columns0 |
||
1898 | push hl |
||
1899 | ld de,font_buf |
||
1900 | dup 7 |
||
1901 | ex de,hl |
||
1902 | ld a,(de) |
||
1903 | rl (hl) ;CY=left pixel |
||
1904 | jr nc,$+4 |
||
1905 | or 0x47 ;hx |
||
1906 | rl (hl) ;CY=right pixel |
||
1907 | jr nc,$+4 |
||
1908 | or 0xb8 ;lx |
||
1909 | ld (de),a |
||
1910 | ex de,hl |
||
1911 | add hl,bc |
||
1912 | inc e |
||
1913 | edup |
||
1914 | ex de,hl |
||
1915 | ld a,(de) |
||
1916 | rl (hl) ;CY=left pixel |
||
1917 | jr nc,$+4 |
||
1918 | or 0x47 ;hx |
||
1919 | rl (hl) ;CY=right pixel |
||
1920 | jr nc,$+4 |
||
1921 | or 0xb8 ;lx |
||
1922 | ld (de),a |
||
1923 | ;3. next column and loop |
||
1924 | pop hl |
||
1925 | ld d,h |
||
1926 | ld e,l ;this will be next screen addr if the char ends in odd column ((ly&1) = 1) |
||
1927 | bit 6,h |
||
1928 | set 6,h |
||
1929 | jr z,$+2+4+2+2+1 |
||
1930 | ld a,h |
||
1931 | xor 0x60 |
||
1932 | ld h,a |
||
1933 | and 0x20 |
||
1934 | jr nz,$+3 |
||
1935 | inc hl |
||
1936 | dec hy |
||
1937 | jp nz,prcharprop_columns0 |
||
1938 | ld c,ly |
||
1939 | ;c=next phase (even=left, odd=right pixel) |
||
1940 | bit 0,c |
||
1941 | ;ret z |
||
1942 | jr z,_skpp |
||
1943 | ex de,hl ;old screen addr if the char ends in odd column ((ly&1) = 1) |
||
1944 | ;hl=next screen addr |
||
1945 | ; ret |
||
1946 | |||
1947 | |||
1948 | |||
1949 | _skpp: |
||
1950 | push bc |
||
1951 | ld (COORDS_P),hl |
||
1952 | ld bc,(CORDS_P) |
||
1953 | inc c |
||
1954 | ld (CORDS_P),bc |
||
1955 | pop bc |
||
1956 | ret |
||
1957 | |||
1958 | ;;;;;;;;;;;;;;;;;;;;;;; |
||
1959 | clear_whole_screen: |
||
1960 | call storec000 |
||
1961 | ld a,(user_scr0_high) |
||
1962 | SETPGC000 |
||
1963 | LD HL,#C000 |
||
1964 | LD DE,#C001 |
||
1965 | LD BC,16383 |
||
1966 | LD [HL],L |
||
1967 | LDIR |
||
1968 | ld a,(user_scr0_low) |
||
1969 | SETPGC000 |
||
1970 | LD HL,#C000 |
||
1971 | LD DE,#C001 |
||
1972 | LD BC,16383 |
||
1973 | LD [HL],L |
||
1974 | LDIR |
||
1975 | jp restorec000 |
||
1976 | ;;;;;;;;;;;;;;;;;;;;;;;; |
||
1977 | _clear_textbox: |
||
1978 | call storec000 |
||
1979 | |||
1980 | ld a,(user_scr0_high) |
||
1981 | SETPGC000 |
||
1982 | CLEARER_ LD HL,0xda44-160-320-2 ;D080 |
||
1983 | CLEARER1 LD B,32 |
||
1984 | XOR A |
||
1985 | 25 PUSH HL |
||
1986 | LD C,32+4 |
||
1987 | LD (HL),A |
||
1988 | INC HL |
||
1989 | DEC C |
||
1990 | JR NZ,$-3 |
||
1991 | POP HL |
||
1992 | LD DE,40 |
||
1993 | ADD HL,DE |
||
1994 | DJNZ 25B |
||
1995 | |||
1996 | CLEARER2 LD HL,0xfa44-160-320-2 ;F080 |
||
1997 | CLEARER3 LD B,32 |
||
1998 | XOR A |
||
1999 | 25 PUSH HL |
||
2000 | LD C,32+4 |
||
2001 | LD (HL),A |
||
2002 | INC HL |
||
2003 | DEC C |
||
2004 | JR NZ,$-3 |
||
2005 | POP HL |
||
2006 | LD DE,40 |
||
2007 | ADD HL,DE |
||
2008 | DJNZ 25B |
||
2009 | |||
2010 | |||
2011 | |||
2012 | ;/////// |
||
2013 | xor a |
||
2014 | ld hl,0xde23-160 |
||
2015 | |||
2016 | push hl |
||
2017 | ld b,8 |
||
2018 | .ep1: |
||
2019 | ld (hl),a |
||
2020 | call DHL |
||
2021 | djnz .ep1 |
||
2022 | pop hl |
||
2023 | |||
2024 | ld hl,0xfe23-160 |
||
2025 | |||
2026 | push hl |
||
2027 | ld b,8 |
||
2028 | .ep2: |
||
2029 | ld (hl),a |
||
2030 | call DHL |
||
2031 | djnz .ep2 |
||
2032 | pop hl |
||
2033 | ;//////////////////// |
||
2034 | |||
2035 | |||
2036 | |||
2037 | |||
2038 | |||
2039 | ld a,(user_scr0_low) |
||
2040 | SETPGC000 |
||
2041 | CLEARER_A LD HL,0xda44-160-320-2 |
||
2042 | CLEARER1A LD B,32 |
||
2043 | XOR A |
||
2044 | 25 PUSH HL |
||
2045 | LD C,32+4 |
||
2046 | LD (HL),A |
||
2047 | INC HL |
||
2048 | DEC C |
||
2049 | JR NZ,$-3 |
||
2050 | POP HL |
||
2051 | LD DE,40 |
||
2052 | ADD HL,DE |
||
2053 | DJNZ 25B |
||
2054 | CLEARER2A LD HL,0xfa44-160-320-2 |
||
2055 | CLEARER3A LD B,32 |
||
2056 | XOR A |
||
2057 | 25 PUSH HL |
||
2058 | LD C,32+4 |
||
2059 | LD (HL),A |
||
2060 | INC HL |
||
2061 | DEC C |
||
2062 | JR NZ,$-3 |
||
2063 | POP HL |
||
2064 | LD DE,40 |
||
2065 | ADD HL,DE |
||
2066 | DJNZ 25B |
||
2067 | |||
2068 | |||
2069 | ;/////// |
||
2070 | xor a |
||
2071 | ld hl,0xde23-160 |
||
2072 | |||
2073 | push hl |
||
2074 | ld b,8 |
||
2075 | .ep3: |
||
2076 | ld (hl),a |
||
2077 | call DHL |
||
2078 | djnz .ep3 |
||
2079 | pop hl |
||
2080 | |||
2081 | ld hl,0xfe23-160 |
||
2082 | |||
2083 | push hl |
||
2084 | ld b,8 |
||
2085 | .ep4: |
||
2086 | ld (hl),a |
||
2087 | call DHL |
||
2088 | djnz .ep4 |
||
2089 | pop hl |
||
2090 | ;//////////////////// |
||
2091 | jp restorec000 |
||
2092 | |||
2093 | ;---------------------------------------------------- |
||
2094 | ;---------------------------------------------------- |
||
2095 | _pre_setup |
||
2096 | ; ld a,(hl);string length |
||
2097 | ld a,(hl) |
||
2098 | ld (_line_lenght),a |
||
2099 | inc hl |
||
2100 | |||
2101 | ld a,(hl) |
||
2102 | ld (DOWN_LIMIT),a |
||
2103 | inc hl |
||
2104 | push hl |
||
2105 | xor a |
||
2106 | ld (CUR_POS),a |
||
2107 | LD HL,#121A |
||
2108 | LD (_mnpos),HL |
||
2109 | pop hl |
||
2110 | ret |
||
2111 | ;---------------------------------------------------- |
||
2112 | _prt_menu |
||
2113 | ld bc,0 |
||
2114 | _mnpos: equ $-2 |
||
2115 | call _pradd |
||
2116 | prt_m1: |
||
2117 | ld a,(hl) |
||
2118 | inc hl |
||
2119 | and a |
||
2120 | RET Z |
||
2121 | cp 1 |
||
2122 | JR Z,PRT_M2 |
||
2123 | cp 128 |
||
2124 | call nc,change_cp |
||
2125 | CP "#" |
||
2126 | call z,change_cp1 |
||
2127 | CP "@" |
||
2128 | call z,change_cp2 |
||
2129 | SUB 32 |
||
2130 | PUSH HL |
||
2131 | CALL _type |
||
2132 | POP HL |
||
2133 | JR prt_m1 |
||
2134 | PRT_M2: LD A,(_mnpos+1) |
||
2135 | INC A |
||
2136 | LD (_mnpos+1),A |
||
2137 | JR _prt_menu |
||
2138 | |||
2139 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
||
2140 | _sel_menu: |
||
2141 | ld hl,0xD691+320+160 ;- left top corner of menus |
||
2142 | ld a,0 |
||
2143 | CUR_POS EQU $-1 |
||
2144 | and a |
||
2145 | jr z,_sel_m_skip_c |
||
2146 | |||
2147 | ld bc,320 |
||
2148 | _sel_menu_clc: |
||
2149 | add hl,bc |
||
2150 | dec a |
||
2151 | jr nz,_sel_menu_clc |
||
2152 | |||
2153 | _sel_m_skip_c: |
||
2154 | ld (SEL_S),hl |
||
2155 | |||
2156 | call _highlight_selected |
||
2157 | _sel_wait_loop: |
||
2158 | call waitkey |
||
2159 | |||
2160 | cp key_up |
||
2161 | jr z,_sel_move_up |
||
2162 | cp key_down |
||
2163 | jr z,_sel_move_down |
||
2164 | cp key_enter |
||
2165 | jr z,_sel_sel_key |
||
2166 | cp ' ' |
||
2167 | jr z,_sel_sel_key |
||
2168 | cp key_esc |
||
2169 | jr z,_sel_esc_key |
||
2170 | jr _sel_wait_loop |
||
2171 | |||
2172 | _sel_move_down |
||
2173 | ld hl,0 |
||
2174 | SEL_S EQU $-2 |
||
2175 | call _highlight_selected |
||
2176 | ld hl,CUR_POS |
||
2177 | ld a,(hl) |
||
2178 | cp 0 |
||
2179 | DOWN_LIMIT EQU $-1 |
||
2180 | jp nc,_sel_menu |
||
2181 | inc (hl) |
||
2182 | jp _sel_menu |
||
2183 | |||
2184 | _sel_move_up |
||
2185 | ld hl,(SEL_S) |
||
2186 | call _highlight_selected |
||
2187 | ld hl,CUR_POS |
||
2188 | ld a,(hl) |
||
2189 | and a |
||
2190 | jp z,_sel_menu |
||
2191 | dec (HL) |
||
2192 | jp _sel_menu |
||
2193 | _sel_sel_key: |
||
2194 | ld hl,(SEL_S) |
||
2195 | call _highlight_selected |
||
2196 | ld a,(CUR_POS) |
||
2197 | ret |
||
2198 | |||
2199 | _sel_esc_key: |
||
2200 | SEL_L |
||
2201 | ld hl,(SEL_S) |
||
2202 | call _highlight_selected |
||
2203 | ld a,0xff |
||
2204 | ret |
||
2205 | |||
2206 | ;-------------------------------------- |
||
2207 | ;in hl adress in screen |
||
2208 | _highlight_selected |
||
2209 | ;LINE1 |
||
2210 | push de |
||
2211 | push hl |
||
2212 | call storec000 |
||
2213 | pop hl |
||
2214 | |||
2215 | LD A,0 |
||
2216 | _line_lenght equ $-1 |
||
2217 | LD [LINELEN],A |
||
2218 | LD [LINELEN0],A |
||
2219 | LD [LINELEN1],A |
||
2220 | LD [LINELEN2],A |
||
2221 | |||
2222 | LD [LINE1_1],HL |
||
2223 | set 5,h |
||
2224 | LD [LINE1_2],HL |
||
2225 | |||
2226 | ld a,(user_scr0_high) |
||
2227 | SETPGC000 |
||
2228 | |||
2229 | LD HL,0 |
||
2230 | LINE1_1 EQU $-2 |
||
2231 | LD B,8 |
||
2232 | |||
2233 | LD B,6 |
||
2234 | LINELEN EQU $-1 |
||
2235 | 1 LD A,(HL) |
||
2236 | xor %00010010;0xff ;XOR %00010010 |
||
2237 | LD (HL),A |
||
2238 | INC HL |
||
2239 | DJNZ 1B |
||
2240 | POP HL |
||
2241 | CALL DHL |
||
2242 | POP BC |
||
2243 | DJNZ 0B |
||
2244 | LD HL,0 |
||
2245 | LINE1_2 EQU $-2 |
||
2246 | LD B,8 |
||
2247 | |||
2248 | LD B,6 |
||
2249 | LINELEN0 EQU $-1 |
||
2250 | 1 LD A,(HL) |
||
2251 | xor %00010010;0xff ;XOR %00010010 |
||
2252 | LD (HL),A |
||
2253 | INC HL |
||
2254 | DJNZ 1B |
||
2255 | POP HL |
||
2256 | CALL DHL |
||
2257 | POP BC |
||
2258 | DJNZ 0B |
||
2259 | |||
2260 | ld a,(user_scr0_low) |
||
2261 | SETPGC000 |
||
2262 | |||
2263 | LD HL,(LINE1_1) |
||
2264 | LD B,8 |
||
2265 | |||
2266 | LD B,6 |
||
2267 | LINELEN1 EQU $-1 |
||
2268 | 1 LD A,(HL) |
||
2269 | xor %00010010;0xff ;XOR %00010010 |
||
2270 | LD (HL),A |
||
2271 | INC HL |
||
2272 | DJNZ 1B |
||
2273 | POP HL |
||
2274 | CALL DHL |
||
2275 | POP BC |
||
2276 | DJNZ 0B |
||
2277 | |||
2278 | LD HL,[LINE1_2] |
||
2279 | LD B,8 |
||
2280 | |||
2281 | LD B,6 |
||
2282 | LINELEN2 EQU $-1 |
||
2283 | 1 LD A,(HL) |
||
2284 | xor %00010010;0xff ;XOR %00010010 |
||
2285 | LD (HL),A |
||
2286 | INC HL |
||
2287 | DJNZ 1B |
||
2288 | POP HL |
||
2289 | CALL DHL |
||
2290 | POP BC |
||
2291 | DJNZ 0B |
||
2292 | |||
2293 | call restorec000 |
||
2294 | pop de |
||
2295 | ret |
||
2296 | ;;;;;;;;;;;;;;;;;;;;;; |
||
2297 | _pre_menu_store_bgnd: |
||
2298 | push af |
||
2299 | push hl |
||
2300 | ;#d680 |
||
2301 | call store8000c000 |
||
2302 | |||
2303 | ld a,(src_buf1) |
||
2304 | SETPG8000 |
||
2305 | |||
2306 | ld a,(user_scr0_low) |
||
2307 | SETPGC000 |
||
2308 | |||
2309 | ld hl,0xd680 |
||
2310 | ld de,0x8000 |
||
2311 | ld bc,320*7 |
||
2312 | ldir |
||
2313 | |||
2314 | ld hl,0xf680 |
||
2315 | ld bc,320*7 |
||
2316 | ldir |
||
2317 | |||
2318 | |||
2319 | ld a,(user_scr0_high) |
||
2320 | SETPGC000 |
||
2321 | ld hl,0xd680 |
||
2322 | ld bc,320*7 |
||
2323 | ldir |
||
2324 | |||
2325 | ld hl,0xf680 |
||
2326 | ld bc,320*7 |
||
2327 | ldir |
||
2328 | |||
2329 | call restore8000c000 |
||
2330 | pop hl |
||
2331 | pop af |
||
2332 | ret |
||
2333 | _pre_menu_restore_bgnd: |
||
2334 | push af |
||
2335 | push hl |
||
2336 | ;#d680 |
||
2337 | call store8000c000 |
||
2338 | |||
2339 | ld a,(src_buf1) |
||
2340 | SETPG8000 |
||
2341 | |||
2342 | ld a,(user_scr0_low) |
||
2343 | SETPGC000 |
||
2344 | |||
2345 | ld hl,0x8000 |
||
2346 | ld de,0xd680 |
||
2347 | ld bc,320*7 |
||
2348 | ldir |
||
2349 | |||
2350 | ld de,0xf680 |
||
2351 | ld bc,320*7 |
||
2352 | ldir |
||
2353 | |||
2354 | ld a,(user_scr0_high) |
||
2355 | SETPGC000 |
||
2356 | ld de,0xd680 |
||
2357 | ld bc,320*7 |
||
2358 | ldir |
||
2359 | |||
2360 | ld de,0xf680 |
||
2361 | ld bc,320*7 |
||
2362 | ldir |
||
2363 | call restore8000c000 |
||
2364 | pop hl |
||
2365 | pop af |
||
2366 | ret |
||
2367 | ;;;;;;;;;;;;;;;;;;;;;; |
||
2368 | DECR_SPR: |
||
2369 | |||
2370 | ld a,0 |
||
2371 | XPOS EQU $-1 |
||
2372 | SRL A |
||
2373 | jr nc,xpos1 |
||
2374 | inc a |
||
2375 | xpos1: |
||
2376 | ld c,a |
||
2377 | ld b,0 |
||
2378 | |||
2379 | |||
2380 | ld (decrspr_offset),bc |
||
2381 | |||
2382 | and a |
||
2383 | ld hl,30 |
||
2384 | SBC hl,bc |
||
2385 | ld (dcrspr_len),hl |
||
2386 | |||
2387 | call store8000c000 |
||
2388 | |||
2389 | ld a,(scr_buf1) |
||
2390 | SETPG8000 |
||
2391 | ld a,(load_buf1) |
||
2392 | SETPGC000 |
||
2393 | |||
2394 | ld bc,(decrspr_offset) |
||
2395 | ld hl,0xc005 |
||
2396 | add hl,bc |
||
2397 | ld de,0x8005 |
||
2398 | |||
2399 | ld b,148 |
||
2400 | decr_spr_lp1: |
||
2401 | push bc |
||
2402 | |||
2403 | push hl |
||
2404 | push de |
||
2405 | |||
2406 | ld bc,(dcrspr_len) |
||
2407 | call _iob |
||
2408 | |||
2409 | pop hl ; (de) |
||
2410 | call DHL |
||
2411 | ex de,hl |
||
2412 | pop hl |
||
2413 | call DHL |
||
2414 | |||
2415 | pop bc |
||
2416 | djnz decr_spr_lp1 |
||
2417 | |||
2418 | |||
2419 | ld bc,(decrspr_offset) |
||
2420 | ld hl,0xe005 |
||
2421 | add hl,bc |
||
2422 | ld de,0xa005 |
||
2423 | |||
2424 | ld b,148 |
||
2425 | decr_spr_lp2: |
||
2426 | push bc |
||
2427 | |||
2428 | push hl |
||
2429 | push de |
||
2430 | |||
2431 | ld bc,(dcrspr_len) |
||
2432 | call _iob |
||
2433 | |||
2434 | pop hl ; (de) |
||
2435 | call DHL |
||
2436 | ex de,hl |
||
2437 | pop hl |
||
2438 | call DHL |
||
2439 | |||
2440 | pop bc |
||
2441 | djnz decr_spr_lp2 |
||
2442 | |||
2443 | |||
2444 | ld a,(scr_buf2) |
||
2445 | SETPG8000 |
||
2446 | ld a,(load_buf2) |
||
2447 | SETPGC000 |
||
2448 | |||
2449 | ld bc,(decrspr_offset) |
||
2450 | ld hl,0xc005 |
||
2451 | add hl,bc |
||
2452 | ld de,0x8005 |
||
2453 | |||
2454 | ld b,148 |
||
2455 | decr_spr_lp3: |
||
2456 | push bc |
||
2457 | |||
2458 | push hl |
||
2459 | push de |
||
2460 | |||
2461 | ld bc,(dcrspr_len) |
||
2462 | call _iob |
||
2463 | |||
2464 | pop hl ; (de) |
||
2465 | call DHL |
||
2466 | ex de,hl |
||
2467 | pop hl |
||
2468 | call DHL |
||
2469 | |||
2470 | pop bc |
||
2471 | djnz decr_spr_lp3 |
||
2472 | |||
2473 | |||
2474 | ld bc,(decrspr_offset) |
||
2475 | ld hl,0xe005 |
||
2476 | add hl,bc |
||
2477 | ld de,0xa005 |
||
2478 | |||
2479 | ld b,148 |
||
2480 | decr_spr_lp4: |
||
2481 | push bc |
||
2482 | |||
2483 | push hl |
||
2484 | push de |
||
2485 | |||
2486 | ld bc,(dcrspr_len) |
||
2487 | call _iob |
||
2488 | |||
2489 | pop hl ; (de) |
||
2490 | call DHL |
||
2491 | ex de,hl |
||
2492 | pop hl |
||
2493 | call DHL |
||
2494 | |||
2495 | pop bc |
||
2496 | djnz decr_spr_lp4 |
||
2497 | |||
2498 | jp restore8000c000 |
||
2499 | decrspr_offset dw 0 ;offset to draw sprite |
||
2500 | dcrspr_len dw 0 ; cutted length |
||
2501 | ;----------------------- |
||
2502 | anim_wait: |
||
2503 | LD A,0 |
||
2504 | INC A |
||
2505 | AND 3 |
||
2506 | LD (anim_wait+1),A |
||
2507 | RET NZ |
||
2508 | |||
2509 | call store8000c000 |
||
2510 | |||
2511 | ld a,(user_scr0_low) |
||
2512 | SETPG8000 |
||
2513 | |||
2514 | ld a,(user_scr0_high) |
||
2515 | SETPGC000 |
||
2516 | |||
2517 | |||
2518 | ld hl,PUSH_DATA |
||
2519 | ld de,0x9e23-160 |
||
2520 | |||
2521 | ld a,0 |
||
2522 | FASE equ $-1 |
||
2523 | |||
2524 | add a,a;x2 |
||
2525 | add a,a;x4 |
||
2526 | add a,a;x8 |
||
2527 | add a,a;x16 |
||
2528 | add a,a;x32 |
||
2529 | ld c,a |
||
2530 | ld b,0 |
||
2531 | add hl,bc |
||
2532 | |||
2533 | ex de,hl |
||
2534 | |||
2535 | |||
2536 | push hl |
||
2537 | ld b,8 |
||
2538 | export_push_iloop1: |
||
2539 | ld a,(de) |
||
2540 | ld (hl),a |
||
2541 | call DHL |
||
2542 | inc de |
||
2543 | djnz export_push_iloop1 |
||
2544 | pop hl |
||
2545 | |||
2546 | set 6,H |
||
2547 | push hl |
||
2548 | ld b,8 |
||
2549 | export_push_iloop2: |
||
2550 | ld a,(de) |
||
2551 | ld (hl),a |
||
2552 | call DHL |
||
2553 | inc de |
||
2554 | djnz export_push_iloop2 |
||
2555 | pop hl |
||
2556 | |||
2557 | res 6,H |
||
2558 | set 5,H |
||
2559 | |||
2560 | push hl |
||
2561 | ld b,8 |
||
2562 | export_push_iloop3: |
||
2563 | ld a,(de) |
||
2564 | ld (hl),a |
||
2565 | call DHL |
||
2566 | inc de |
||
2567 | djnz export_push_iloop3 |
||
2568 | pop hl |
||
2569 | |||
2570 | set 6,H |
||
2571 | |||
2572 | ld b,8 |
||
2573 | export_push_iloop4: |
||
2574 | ld a,(de) |
||
2575 | ld (hl),a |
||
2576 | call DHL |
||
2577 | inc de |
||
2578 | djnz export_push_iloop4 |
||
2579 | |||
2580 | ld a,(FASE) |
||
2581 | inc a |
||
2582 | and 7 |
||
2583 | ld (FASE),a |
||
2584 | |||
2585 | jp restore8000c000 |
||
2586 | ;----------------------------- |
||
2587 | |||
2588 | ;--- |
||
2589 | ;in hl - x-coord 0-319 |
||
2590 | ;;out hl -adress in 8000 - ffff atm2 ega screen (x-offset) |
||
2591 | p_calc_x: |
||
2592 | and a |
||
2593 | rr h |
||
2594 | rr l |
||
2595 | ld a,l |
||
2596 | rrca |
||
2597 | rrca |
||
2598 | ld h,0 |
||
2599 | and a |
||
2600 | push af |
||
2601 | rla |
||
2602 | rr h |
||
2603 | rla |
||
2604 | rr h |
||
2605 | scf |
||
2606 | rr h |
||
2607 | pop af |
||
2608 | and 0x3f |
||
2609 | ld l,a |
||
2610 | ret |
||
2611 | ;============================================= |
||
2612 | ;in hl - x-adress in atm2 ega screen |
||
2613 | ; a - y coord - 0-199 |
||
2614 | ;;out hl -adress in 8000 - ffff atm2 ega screen (xy offset) |
||
2615 | p_calc_y: |
||
2616 | ld bc,40 |
||
2617 | p_calc_y_loop: |
||
2618 | and a |
||
2619 | ret z |
||
2620 | add hl,bc |
||
2621 | dec a |
||
2622 | jr p_calc_y_loop |
||
2623 | ;============================================= |
||
2624 | p_nextcolumn: |
||
2625 | bit 6,h |
||
2626 | set 6,h |
||
2627 | jr z,1f;shapes_linehorR_incxok |
||
2628 | ld a,h |
||
2629 | xor 0x60 |
||
2630 | ld h,a |
||
2631 | and 0x20 |
||
2632 | jr nz,1f;shapes_linehorR_incxok |
||
2633 | inc hl |
||
2634 | 1 ;shapes_linehorR_incxok |
||
2635 | ret |
||
2636 | ;--------------------------------------- |