;(*---------------------------------------------------------------------------
;  :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;


