home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_disks / 200-299 / ff234.lzh / MuchMore / src / GetFontData.asm < prev    next >
Assembly Source File  |  1989-08-02  |  4KB  |  176 lines

  1. ;(*---------------------------------------------------------------------------
  2. ;  :Program.    GetFontData.asm
  3. ;  :Author.     Fridtjof Siebert
  4. ;  :Address.    Nobileweg 67, D-7000-Stuttgart-40
  5. ;  :Phone.      (0)711/822509
  6. ;  :Shortcut.   [fbs]
  7. ;  :Version.    1.0
  8. ;  :Copyright.  PD
  9. ;  :Language.   68000 Assembler
  10. ;  :Contents.   Procedures used by MuchMore to get Fonts
  11. ;---------------------------------------------------------------------------*)
  12. ; GetFontData
  13.  
  14. ; A0: Pointer to font's chardata
  15. ; A1: Pointer to fontdata-Array
  16.  
  17. ch EQUR A0;
  18. fd EQUR A1;
  19. ad EQUR A2;
  20. j  EQUR D0;
  21. x  EQUR D1;
  22. c  EQUR D2;
  23. d  EQUR D3;
  24. e  EQUR D4;
  25. x1 EQUR D5;
  26. x2 EQUR D6;
  27. x3 EQUR D7;
  28.  
  29. GetFontData:
  30.  
  31.         move    #191,j;
  32. jloop:  move    j,x;
  33.         asl     #3,x;
  34.         move    x,x1;
  35.         move    x,x2;
  36.         move    x,x3;
  37.         add     #$600,x1;
  38.         add     #$c00,x2;
  39.         add     #$1200,x3;
  40.         lea     (ch,j),ad;
  41. ; Byte 0:
  42.         move.b  (ad),c;
  43.         move.b  c,0(fd,x);
  44.         move.b  c,d;
  45.         lsr.b   #2,d;
  46.         bcc     \1;
  47.         bset    #0,d;
  48. \1:     move.b  d,0(fd,x1);
  49.         move.b  c,e;
  50.         lsr.b   #1,e;
  51.         or.b    c,e;
  52.         move.b  e,0(fd,x2);
  53.         move.b  d,e;
  54.         lsr.b   #1,e;
  55.         or.b    d,e;
  56.         move.b  e,0(fd,x3);
  57. ; Byte 1:
  58.         adda.w  #$c0,ad
  59.         move.b  (ad),c;
  60.         move.b  c,1(fd,x);
  61.         move.b  c,d;
  62.         lsr.b   #2,d;
  63.         bcc     \2;
  64.         bset    #0,d;
  65. \2:     move.b  d,1(fd,x1);
  66.         move.b  c,e;
  67.         lsr.b   #1,e;
  68.         or.b    c,e;
  69.         move.b  e,1(fd,x2);
  70.         move.b  d,e;
  71.         lsr.b   #1,e;
  72.         or.b    d,e;
  73.         move.b  e,1(fd,x3);
  74. ; Byte 2:
  75.         adda.w  #$c0,ad
  76.         move.b  (ad),c;
  77.         move.b  c,2(fd,x);
  78.         move.b  c,d;
  79.         lsr.b   #1,d;
  80.         bcc     \3;
  81.         bset    #0,d;
  82. \3:     move.b  d,2(fd,x1);
  83.         move.b  c,e;
  84.         lsr.b   #1,e;
  85.         or.b    c,e;
  86.         move.b  e,2(fd,x2);
  87.         move.b  d,e;
  88.         lsr.b   #1,e;
  89.         or.b    d,e;
  90.         move.b  e,2(fd,x3);
  91. ; Byte 3:
  92.         adda.w  #$c0,ad
  93.         move.b  (ad),c;
  94.         move.b  c,3(fd,x);
  95.         move.b  c,d;
  96.         lsr.b   #1,d;
  97.         bcc     \4;
  98.         bset    #0,d;
  99. \4:     move.b  d,3(fd,x1);
  100.         move.b  c,e;
  101.         lsr.b   #1,e;
  102.         or.b    c,e;
  103.         move.b  e,3(fd,x2);
  104.         move.b  d,e;
  105.         lsr.b   #1,e;
  106.         or.b    d,e;
  107.         move.b  e,3(fd,x3);
  108. ; Byte 4:
  109.         adda.w  #$c0,ad
  110.         move.b  (ad),c;
  111.         move.b  c,4(fd,x);
  112.         move.b  c,4(fd,x1);
  113.         move.b  c,e;
  114.         lsr.b   #1,e;
  115.         or.b    c,e;
  116.         move.b  e,4(fd,x2);
  117.         move.b  e,4(fd,x3);
  118. ; Byte 5:
  119.         adda.w  #$c0,ad
  120.         move.b  (ad),c;
  121.         move.b  c,5(fd,x);
  122.         move.b  c,5(fd,x1);
  123.         move.b  c,e;
  124.         lsr.b   #1,e;
  125.         or.b    c,e;
  126.         move.b  e,5(fd,x2);
  127.         move.b  e,5(fd,x3);
  128. ; Byte 6:
  129.         adda.w  #$c0,ad
  130.         move.b  (ad),c;
  131.         move.b  c,6(fd,x);
  132.         move.b  c,d;
  133.         lsl.b   #1,d;
  134.         bcc     \7;
  135.         bset    #7,d;
  136. \7:     move.b  d,6(fd,x1);
  137.         move.b  c,e;
  138.         lsr.b   #1,e;
  139.         or.b    c,e;
  140.         move.b  e,6(fd,x2);
  141.         move.b  d,e;
  142.         lsr.b   #1,e;
  143.         or.b    d,e;
  144.         move.b  e,6(fd,x3);
  145. ; Byte 7:
  146.         adda.w  #$c0,ad
  147.         move.b  (ad),c;
  148.         move.b  c,7(fd,x);
  149.         move.b  c,d;
  150.         lsl.b   #1,d;
  151.         bcc     \8;
  152.         bset    #7,d;
  153. \8:     move.b  d,7(fd,x1);
  154.         move.b  c,e;
  155.         lsr.b   #1,e;
  156.         or.b    c,e;
  157.         move.b  e,7(fd,x2);
  158.         move.b  d,e;
  159.         lsr.b   #1,e;
  160.         or.b    d,e;
  161.         move.b  e,7(fd,x3);
  162.  
  163.         dbra    j,jloop;
  164.  
  165.         move.l  fd,ad;
  166.         adda.w  #$1800,ad;
  167.         move    #$5ff,j;
  168. invers: move.l  (fd)+,c;
  169.         not.l   c;
  170.         move.l  c,(ad)+;
  171.         dbra    j,invers;
  172.  
  173.        end;
  174.  
  175.  
  176.