100 ';******* FASTPLOT-Routine ********
110 ';Nur fuer MODE 1 120 ';IN:DE=X,HL=Y in phys. Koordinaten 130 '; X = 0..319, Y = 0..199 140 '; 0,0 liegt links oben! 150 ' 160 'CMASK EQU &B338;Adresse Farbmaske 170 ' ;&B6A3 f. 664/6128 180 ' 190 'FPLOT LD A,L ;A=Lowbyte Y 200 'AND &X00000111 ;Bit 0..2 isolieren 210 'LD H,A ;= y MOD 8 nach H 220 'XOR L ;A=Bit 3..7 von Y 230 'LD L,A ;=(Y\8)*8 nach L 240 'LD C,A ;und nach C 250 'LD B,&60 ;B=&C0\2 = Highbyte 260 ' ;Screenstart\2 270 'ADD HL,HL ;HL*2 280 'ADD HL,HL ;HL*4 290 'ADD HL,BC ;+BC = Startadresse 300 'ADD HL,HL ;der Rasterzeile 310 ' 320 'LD A,E ;Lowbyte X nach A 330 'SRL D ;X\4 berechnen, da 340 'RR E ;4 Pixel pro Byte 350 'SRL E 360 'ADD HL,DE ;+HL=Screenadresse 370 ' 380 'LD C,&X10001000;Bitmaske f. MODE 1 390 'AND &X00000011 ;A = X MOD 4 400 'JR Z,NSHIFT ;-> =0, kein Shift 410 'LD B,A ;Schleifenzaehler 420 'SHIFT SRL C ;Bitmaske auf Pixel 430 'DJNZ SHIFT ;-Position schieben 440 ' 450 'NSHIFT LD A,(CMASK) 460 ' ;Farbmaske holen 470 'XOR (HL) ;XOR Screenbyte 480 'AND C ;AND Bitmaske 490 'XOR (HL) ;XOR Screenbyte 500 'LD (HL),A ;Neues Screenbyte 510 'RET ;fertig |