;(*--------------------------------------------------------------------------- ; :Program. GetFontData.asm ; :Author. Fridtjof Siebert ; :Address. Nobileweg 67, D-7000-Stuttgart-40 ; :Phone. (0)711/822509 ; :Shortcut. [fbs] ; :Version. 1.0 ; :Copyright. PD ; :Language. 68000 Assembler ; :Contents. Procedures used by MuchMore to get Fonts ;---------------------------------------------------------------------------*) ; GetFontData ; A0: Pointer to font's chardata ; A1: Pointer to fontdata-Array ch EQUR A0; fd EQUR A1; ad EQUR A2; j EQUR D0; x EQUR D1; c EQUR D2; d EQUR D3; e EQUR D4; x1 EQUR D5; x2 EQUR D6; x3 EQUR D7; GetFontData: move #191,j; jloop: move j,x; asl #3,x; move x,x1; move x,x2; move x,x3; add #$600,x1; add #$c00,x2; add #$1200,x3; lea (ch,j),ad; ; Byte 0: move.b (ad),c; move.b c,0(fd,x); move.b c,d; lsr.b #2,d; bcc \1; bset #0,d; \1: move.b d,0(fd,x1); move.b c,e; lsr.b #1,e; or.b c,e; move.b e,0(fd,x2); move.b d,e; lsr.b #1,e; or.b d,e; move.b e,0(fd,x3); ; Byte 1: adda.w #$c0,ad move.b (ad),c; move.b c,1(fd,x); move.b c,d; lsr.b #2,d; bcc \2; bset #0,d; \2: move.b d,1(fd,x1); move.b c,e; lsr.b #1,e; or.b c,e; move.b e,1(fd,x2); move.b d,e; lsr.b #1,e; or.b d,e; move.b e,1(fd,x3); ; Byte 2: adda.w #$c0,ad move.b (ad),c; move.b c,2(fd,x); move.b c,d; lsr.b #1,d; bcc \3; bset #0,d; \3: move.b d,2(fd,x1); move.b c,e; lsr.b #1,e; or.b c,e; move.b e,2(fd,x2); move.b d,e; lsr.b #1,e; or.b d,e; move.b e,2(fd,x3); ; Byte 3: adda.w #$c0,ad move.b (ad),c; move.b c,3(fd,x); move.b c,d; lsr.b #1,d; bcc \4; bset #0,d; \4: move.b d,3(fd,x1); move.b c,e; lsr.b #1,e; or.b c,e; move.b e,3(fd,x2); move.b d,e; lsr.b #1,e; or.b d,e; move.b e,3(fd,x3); ; Byte 4: adda.w #$c0,ad move.b (ad),c; move.b c,4(fd,x); move.b c,4(fd,x1); move.b c,e; lsr.b #1,e; or.b c,e; move.b e,4(fd,x2); move.b e,4(fd,x3); ; Byte 5: adda.w #$c0,ad move.b (ad),c; move.b c,5(fd,x); move.b c,5(fd,x1); move.b c,e; lsr.b #1,e; or.b c,e; move.b e,5(fd,x2); move.b e,5(fd,x3); ; Byte 6: adda.w #$c0,ad move.b (ad),c; move.b c,6(fd,x); move.b c,d; lsl.b #1,d; bcc \7; bset #7,d; \7: move.b d,6(fd,x1); move.b c,e; lsr.b #1,e; or.b c,e; move.b e,6(fd,x2); move.b d,e; lsr.b #1,e; or.b d,e; move.b e,6(fd,x3); ; Byte 7: adda.w #$c0,ad move.b (ad),c; move.b c,7(fd,x); move.b c,d; lsl.b #1,d; bcc \8; bset #7,d; \8: move.b d,7(fd,x1); move.b c,e; lsr.b #1,e; or.b c,e; move.b e,7(fd,x2); move.b d,e; lsr.b #1,e; or.b d,e; move.b e,7(fd,x3); dbra j,jloop; move.l fd,ad; adda.w #$1800,ad; move #$5ff,j; invers: move.l (fd)+,c; not.l c; move.l c,(ad)+; dbra j,invers; end;