home *** CD-ROM | disk | FTP | other *** search
- ;(*---------------------------------------------------------------------------
- ; :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;
-
-
-