home *** CD-ROM | disk | FTP | other *** search
- *
- * DISCLAIMER:
- *
- * This program is provided as a service to the programmer
- * community to demonstrate one or more features of the Amiga
- * personal computer. These code samples may be freely used
- * for commercial or noncommercial purposes.
- *
- * Commodore Electronics, Ltd ("Commodore") makes no
- * warranties, either expressed or implied, with respect
- * to the program described herein, its quality, performance,
- * merchantability, or fitness for any particular purpose.
- * This program is provided "as is" and the entire risk
- * as to its quality and performance is with the user.
- * Should the program prove defective following its
- * purchase, the user (and not the creator of the program,
- * Commodore, their distributors or their retailers)
- * assumes the entire cost of all necessary damages. In
- * no event will Commodore be liable for direct, indirect,
- * incidental or consequential damages resulting from any
- * defect in the program even if it has been advised of the
- * possibility of such damages. Some laws do not allow
- * the exclusion or limitation of implied warranties or
- * liabilities for incidental or consequential damages,
- * so the above limitation or exclusion may not apply.
- *
-
- * samplefont.asm
- *
- *
- *
- * A complete sample font. To test this font, the following must be done:
- *
- * 1. In the AmigaDOS SYS:fonts directory, install a file by the name of
- * test.font, containing 264 bytes.
- *
- * The first two bytes must contain the value hex 0f00, the
- * identifier for a font header.
- *
- * The next word (2 bytes), should contain the value 0001,
- * which is the number of FontContents elements. There is
- * only going to be one font in the directory that this
- * font description covers.
- *
- * Follow this header material with the ascii value for
- * 'test/8'; the next 250 bytes should be set to zero.
- * This represents the pathname for AmigaDOS to follow
- * from the directory SYS:fonts in order to reach this test font.
- * 'test' is the directory it should go to and '8' is the font
- * file itself, as assembled and linked below.
- *
- * The next two bytes (as one word) contain the font YSize, in
- * this case 0008.
- *
- * The next byte contains the font Flags, in this case 00.
- *
- * The last byte contains the font characteristics, in this
- * case hex 60, this says it is a disk-based font (bit 1 set)
- * and the font has been removed (bit 7 set) saying that the
- * font is not currently resident.
- *
- * Summary (all in hex) of test.font file:
- *
- * 0f00 0001 test/8 ........ 0008 00 60
- * word word 256-bytes...... word byte byte
- *
- * 2. Create a directory named 'test' in SYS:fonts.
- *
- * Copy the file created by assembling and linking the test font
- * below into a file named '8' in subdirectory SYS:fonts/test.
- *
- * Use the font under the Notepad program or any other. It
- * defines ascii characters 'a' 'b' 'c' and 'd' only. All
- * other characters print an "unknown character", a rectangle.
- *
- * author: Rob Peck 12/1/85
- *
- * This code may be freely utilized to create programs for the Amiga
- *
- *------ Included Files -----------------------------------------------
-
- INCLUDE "exec/types.i"
- INCLUDE "exec/nodes.i"
- INCLUDE "libraries/diskfont.i"
-
- MOVEQ #0,D0 ;provide an easy exit in case somebody
- ;tries to RUN this file instead of loading it.
- RTS
- DC.L 0 ; ln_Succ
- DC.L 0 ; ln_Pred
- DC.B NT_FONT ; ln_Type
- DC.B 0 ; ln_Pri
- DC.L fontName ; ln_Name
- DC.W DFH_ID ; FileID
- DC.W 1 ; Revision
- DC.L 0 ; Segment
- fontName:
- DS.B MAXFONTNAME ; Name
- font:
- DC.L 0 ; ln_Succ
- DC.L 0 ; ln_Pred
- DC.B NT_FONT ; ln_Type
- DC.B 0 ; ln_Pri
- DC.L fontName ; ln_Name
- DC.L 0 ; mn_ReplyPort
- DC.W fontEnd-font ; mn_Length
- DC.W 8 ; tf_YSize
- DC.B 0 ; tf_Style
- DC.B FPF_DESIGNED+FPF_PROPORTIONAL ; tf_Flags
- DC.W 14 ; tf_XSize
- DC.W 6 ; tf_Baseline
-
- * baseline must be no greater a value than YSize-1, otherwise algorithmically
- * generated style (italic particularly) can corrupt system memory.
-
- DC.W 1 ; tf_BoldSmear
- DC.W 0 ; tf_Accessors
- DC.B 97 ; tf_LoChar
- DC.B 100 ; tf_HiChar
- DC.L fontData ; tf_CharData
- DC.W 8 ; tf_Modulo, no of bytes to add to
- ; data pointer to go from one row of
- ; a character to the next row of it.
- DC.L fontLoc ; tf_CharLoc, bit position in the
- ; font data at which the character
- ; begins.
- DC.L fontSpace ; tf_CharSpace
- DC.L fontKern ; tf_CharKern
-
- *******************************************************************
- * These are the suits-characters that this font data defines.
- * ascii lower case a,b,c,d. The font descriptor says that there
- * are 4 characters described here. The fifth character in the
- * table is the character that is to be output when there is
- * no character in this character set that matches the ascii
- * value requested.
- *
- * 97 98 99 100 256
- *< >< >< >< >< >
- * @@@ @@@ @ @ @@@ @@@@@@@@@@@@
- * @@@@@ @@@@@ @@@@@ @@@ @@@@@ @@ @@
- * @@@@@@@@@ @@@@@@@@@ @@@@@ @@ @ @@ @@ @@
- * @@@@@@@ @@@@@@@@@@@ @@@@@@@ @@@@@@@@@@@ @@ @@
- * @@@@@ @@@ @ @@@ @@@@@ @@ @ @@ @@ @@
- * @@@ @ @@@ @ @@ @@
- * @ @@@@@ @ @@@@@ @@@@@@@@@@@@
- *
- *******************************************************************
- fontData:
- DC.W $071C0,$08040,$070FF,$0F000
- DC.W $0FBE3,$0E0E0,$0F8C0,$03000
- DC.W $07FCF,$0F9F3,$026C0,$03000
- DC.W $03F9F,$0FFFF,$0FFC0,$03000
- DC.W $01F0E,$0B9F3,$026C0,$03000
- DC.W $00E00,$080E0,$020C0,$03000
- DC.W $00403,$0E040,$0F8FF,$0F000
- DC.W $00000,$00000,$00000,$00000
- DC.W $00000,$00000,$00000,$00000
-
- * font data is bit-packed edge to edge to save space; thats what the
- * fontLoc is all about.
-
- fontLoc:
- DC.L $00000000B,$0000B000B,$000160007,$0001D000B
- DC.L $00028000C
-
- * Each pair of words specifies how the characters are bit-packed. For
- * example, the first character starts at bit position 0000, and is 000B
- * (11) bits wide. The second character starts at bit position 000B and
- * is 000B bits wide, and so on. Tells font handler how to unpack the
- * bits from the array.
-
- fontSpace:
- DC.W 000012,000012,000008,000012,000013
-
- * fontSpace array: Use a space that is this-wide to contain this character
- * when it is printed.
-
- fontKern:
- DC.W 000001,000001,000001,000001,000001
- fontEnd:
- END
-