10 '
20 ';*** CLS.ASS - Auf verschiedene Arten den Screen loeschen
30 ';              entnommen aus verschiedenen Bollaware-Produktionen!!!
40 '
50 'org &8000
60 '
70 'FRAME   equ &BD19
80 'WAITKEY equ &BB18
90 '
100 'start
110 'ld hl,cls_liste
120 '
130 'loop ld e,(hl)
140 'inc hl
150 'ld d,(hl)
160 'inc hl
170 'ld a,e
180 'or d
190 'jr z,start
200 'push hl
210 'ld (cls_call+1),de
220 '
230 'ld hl,&C000
240 'ld de,&C001
250 'ld bc,&3FFF
260 'ld (hl),&FF
270 'ldir
280 '
290 'ld b,100
300 'warten halt
310 'djnz warten
320 'cls_call call 0
330 'ld b,0
340 'warten2 halt
350 'djnz warten2
360 '
370 'pop hl
380 'jr loop
390 '
400 'cls_liste
410 'dw mycls,facls,peccls,raster,keil,sabber
420 'dw 0
430 '
440 ';*** Fres Fighter II Turbo
450 '
460 'mycls ld hl,&C000
470 'ld de,&FFCF
480 'ld ix,&C04F
490 'ld iy,&FF80
500 'ld bc,&0164
510 'mycls1 call mycls_oben
520 'inc hl
530 'dec ix
540 'call mycls_unten
550 'dec de
560 'inc iy
570 'inc b
580 'ld a,b
590 'cp 41
600 'jr nz,mycls1
610 'dec b
620 'dec hl
630 'inc ix
640 'inc de
650 'dec iy
660 'mycls2 call mycls_oben
670 'call RBC26
680 'push hl
690 'pop ix
700 'inc ix
710 'call mycls_unten
720 'call SBC29
730 'push de
740 'pop iy
750 'dec iy
760 'dec c
770 'jr nz,mycls2
780 'ret
790 '
800 'mycls_oben push bc
810 'push hl
820 'ld c,0
830 'push bc
840 'myo1 ld (hl),c
850 'call RBC26
860 'dec hl
870 'djnz myo1
880 'pop bc
890 'push ix
900 'pop hl
910 'myo2 ld (hl),c
920 'call RBC26
930 'inc hl
940 'djnz myo2
950 'pop hl
960 'pop bc
970 'ret
980 '
990 'mycls_unten push bc
1000 'ex de,hl
1010 'push hl
1020 'ld c,0
1030 'push bc
1040 'myu1 ld (hl),c
1050 'call RBC29
1060 'inc hl
1070 'djnz myu1
1080 'pop bc
1090 'push iy
1100 'pop hl
1110 'myu2 ld (hl),c
1120 'call RBC29
1130 'dec hl
1140 'djnz myu2
1150 'pop hl
1160 'ex de,hl
1170 'pop bc
1180 'ret
1190 '
1200 '
1210 '
1220 ';*** Fres Attack
1230 '
1240 'facls ld e,0 ; Farbe zum Loeschen!
1250 'ld hl,&c000
1260 'ld b,1
1270 'ld c,79
1280 'facls1 call faline
1290 'call RBC26
1300 'inc b
1310 'dec c
1320 'jr nz,facls1
1330 'ld c,120
1340 'facls2 call faline
1350 'call RBC26
1360 'dec c
1370 'jr nz,facls2
1380 'ld c,80
1390 'facls3 call faline
1400 'inc hl
1410 'dec b
1420 'dec c
1430 'jr nz,facls3
1440 'ret
1450 'faline push hl
1460 'push bc
1470 'call FRAME
1480 'faline1 ld (hl),e
1490 'inc hl
1500 'call RBC29
1510 'djnz faline1
1520 'pop bc
1530 'pop hl
1540 'ret
1550 '
1560 '
1570 '
1580 ';*** Auch Fres Attack
1590 '
1600 'peccls ld hl,&c04F
1610 'ld b,200
1620 'call FRAME
1630 'peccs1 ld (hl),&FF
1640 'call RBC26
1650 'djnz peccs1
1660 'ld hl,&c04E
1670 'ld b,79
1680 'peccs2 push bc
1690 'push hl
1700 'call FRAME
1710 'ld b,200
1720 'peccs3 ld (hl),&FF
1730 'inc hl
1740 'ld (hl),0
1750 'dec hl
1760 'call RBC26
1770 'djnz peccs3
1780 'pop hl
1790 'pop bc
1800 'dec hl
1810 'djnz peccs2
1820 'inc hl
1830 'call FRAME
1840 'ld b,200
1850 'peccs4 ld (hl),0
1860 'call RBC26
1870 'djnz peccs4
1880 'ret
1890 '
1900 '
1910 '
1920 ';*** Woman & Dragons Demo : Raster
1930 '
1940 'raster
1950 'ld hl,&C000 ; Screen Raster-Loeschen
1960 'ld de,&FF80
1970 'ld c,&AA
1980 'ld ixl,200
1990 'raster_loop push hl
2000 'push de
2010 'ld b,160
2020 'raster_loop1 ld a,(hl)
2030 'and c
2040 'ld (hl),a
2050 'inc hl
2060 'ex de,hl
2070 'djnz raster_loop1
2080 'ld a,c
2090 'cpl
2100 'ld c,a
2110 'pop de
2120 'call SBC29
2130 'pop hl
2140 'call RBC26
2150 'dec ixl
2160 'jr nz,raster_loop
2170 'ret
2180 '
2190 '
2200 '
2210 ';*** Woman & Dragons Demo : Keil
2220 '
2230 'keil ld hl,&DBC0
2240 'ld b,0
2250 'ld c,99
2260 'keillp ld a,b
2270 'cp 80
2280 'ret z
2290 'push bc
2300 'push hl
2310 '
2320 'ld a,100
2330 'sub c
2340 'ld c,a
2350 'ld e,b
2360 ';*** HL-Adr  C-Anz Lines  E-Breite Lines
2370 'ld d,c
2380 'call FRAME
2390 'koben1 ld a,e
2400 'cp 80
2410 'jr nc,koben2
2420 'ld (hl),0
2430 'inc hl
2440 'koben2 call RBC26
2450 'dec c
2460 'jr nz,koben1
2470 'ld c,d
2480 'kunte1 ld a,e
2490 'cp 80
2500 'jr nc,kunte2
2510 'dec hl
2520 'ld (hl),0
2530 'kunte2 call RBC26
2540 'dec c
2550 'jr nz,kunte1
2560 '
2570 'pop hl
2580 'pop bc
2590 'inc b
2600 'inc hl
2610 'ld a,c
2620 'or a
2630 'jr z,keillp
2640 'dec hl
2650 'dec b
2660 'dec c
2670 'call RBC29
2680 'jr keillp
2690 '
2700 '
2710 '
2720 ';*** Woman & Dragons Demo : Blut-Sabber
2730 '
2740 'sabber
2750 '
2760 'ld hl,&C000 ; Screen loeschen
2770 'ld d,h
2780 'ld e,l
2790 'ld bc,&3FFF
2800 'ld (hl),0
2810 'inc de
2820 'ldir
2830 '
2840 'scls ld iy,320 ; Data initalisieren
2850 'ld hl,scldat   ; pro Pixel : wieviel noch runter,Adresse,Maske
2860 'ld de,&C000
2870 'ld c,&x10001000
2880 'scls1 ld (hl),200
2890 'inc hl
2900 'ld (hl),e
2910 'inc hl
2920 'ld (hl),d
2930 'inc hl
2940 'ld (hl),c
2950 'inc hl
2960 'rrc c
2970 'jr nc,scls1a
2980 'inc de
2990 'scls1a dec iy
3000 'ld a,iyl
3010 'or iyh
3020 'jr nz,scls1
3030 '
3040 'sclsdo ld ix,0 ; fertige Linien
3050 'ld iy,320
3060 'ld hl,scldat
3070 'call &bd19
3080 'scls2 push hl
3090 'call scls3
3100 'pop hl
3110 'inc hl
3120 'inc hl
3130 'inc hl
3140 'inc hl
3150 'dec iy
3160 'ld a,iyh
3170 'or iyl
3180 'jr nz,scls2
3190 'ld a,ixh
3200 'dec a
3210 'jr nz,sclsdo
3220 'ld a,ixl
3230 'cp &40
3240 'jr nz,sclsdo
3250 'ret
3260 '
3270 'scls3 ld a,(hl)
3280 'or a
3290 'jr nz,scls3a
3300 'inc ix
3310 'ret
3320 'scls3a ld a,r
3330 'and &x11
3340 'inc a
3350 'ld b,a     ; b Linien runter!
3360 'ld a,(hl)
3370 'sub b
3380 'jr nc,scls3b
3390 'ld b,(hl)  ; b war zu gross!
3400 'sub a
3410 'scls3b ld (hl),a
3420 'inc hl
3430 'ld e,(hl)
3440 'inc hl
3450 'ld d,(hl)
3460 'inc hl
3470 'ld c,(hl)
3480 'scls3c ld a,(de)
3490 'or c
3500 'ld (de),a
3510 'call SBC26
3520 'djnz scls3c
3530 'dec hl
3540 'ld (hl),d
3550 'dec hl
3560 'ld (hl),e
3570 'ret
3580 '
3590 '
3600 '
3610 ';*** Diese Routinen sind fuer alle da!!!
3620 '
3630 ';*** HL eine Zeile runter
3640 'RBC26 ld a,h
3650 'add a,8
3660 'ld h,a
3670 'ret nc
3680 'ld a,&50
3690 'add a,l
3700 'ld l,a
3710 'ld a,&c0
3720 'adc a,h
3730 'ld h,a
3740 'ret
3750 '
3760 ';*** HL eine Zeile hoch
3770 'RBC29 ld a,h
3780 'sub 8
3790 'ld h,a
3800 'bit 6,a
3810 'ret nz
3820 'ld a,&b0
3830 'add a,l
3840 'ld l,a
3850 'ld a,&3f
3860 'adc a,h
3870 'ld h,a
3880 'ret
3890 '
3900 ';*** DE eine Zeile runter
3910 'SBC26 ld a,d
3920 'add a,8
3930 'ld d,a
3940 'ret nc
3950 'ld a,&50
3960 'add a,e
3970 'ld e,a
3980 'ld a,&c0
3990 'adc a,d
4000 'ld d,a
4010 'ret
4020 '
4030 ';*** HL eine Zeile hoch
4040 'SBC29 ld a,d
4050 'sub 8
4060 'ld d,a
4070 'bit 6,a
4080 'ret nz
4090 'ld a,&b0
4100 'add a,e
4110 'ld e,a
4120 'ld a,&3f
4130 'adc a,d
4140 'ld d,a
4150 'ret
4160 '
4170 '
4180 ';*** Daten fuer Sabber-Effekt
4190 'scldat
4200 '
p z,shap