***********************************************************************
*
*                           MyFont 1.0
*
*          (c) 1994 One of Binary Mystery (Jan Skypala)
*
*                  $VER: MyFont.s 37.1 (19.2.94)
*
***********************************************************************

                incdir  'Include:'
                include 'exec/exec_lib.i'
                include 'exec/memory.i'
                include 'graphics/graphics_lib.i'
                include 'graphics/text.i'
                include 'diskfont/diskfont_lib.i'

_SysBase        equ     4

Start           move.l  (_SysBase).w,a6
                move.l  #ResidentEnd-ResidentStart,d4
                move.l  d4,d0
                moveq.l #MEMF_PUBLIC,d1
                jsr     _LVOAllocMem(a6)        ;allocate memory
                move.l  d0,a0
                move.l  d0,a4
                lea     ResidentStart(pc),a1
.loop           move.b  (a1)+,(a0)+             ;and move resident part
                dbra    d4,.loop                ;there
PatchIt         lea     diskfontname(pc),a1
                moveq   #0,d0
                jsr     _LVOOpenLibrary(a6)     ;open diskfont.library
                beq.b   .gfx
                move.l  d0,a1
                move.w  #_LVOOpenDiskFont,a0
                moveq.l #DiskFont-ResidentStart,d0
                add.l   a4,d0
                jsr     _LVOSetFunction(a6)     ;patch OpenDiskFont()
                move.l  d0,OpenDiskFont-ResidentStart(a4)
.gfx            lea     gfxname(pc),a1
                moveq   #0,d0
                jsr     _LVOOpenLibrary(a6)     ;open graphics.library
                beq.b   .end
                move.l  d0,a1
                move.w  #_LVOOpenFont,a0
                moveq.l #GfxFont-ResidentStart,d0
                add.l   a4,d0
                jsr     _LVOSetFunction(a6)     ;patch OpenFont()
                move.l  d0,OpenFont-ResidentStart(a4)
                moveq.l #0,d0
.end            rts

***********************************************************************
ResidentStart
GfxFont         cmp.w   #8,ta_YSize(a0)         ;is it size 8?
                bne.b   .nosize8
                move.l  a1,-(a7)
                movem.l a0/d0,-(a7)
                move.l  (a0),a0
                lea     TopazName(pc),a1
.loop           move.b  (a0)+,d0                ;is it 'topaz.font'?
                cmp.b   (a1)+,d0
                bne.b   .notopaz
                tst.b   d0
                bne.b   .loop
                movem.l (a7)+,a0/d0
                lea     ThinpazName(pc),a1      ;change it to
                move.l  a1,(a0)                 ;'thinpaz.font'
                bra.b   ..
.notopaz        movem.l (a7)+,a0/d0             
..              move.l  (a7)+,a1
.nosize8        move.l  OpenFont(pc),-(a7)      ;and do normal OpenFont()
                rts
DiskFont        cmp.w   #8,ta_YSize(a0)         ;is it size 8?
                bne.b   .nosize8
                move.l  a1,-(a7)
                movem.l a0/d0,-(a7)
                move.l  (a0),a0
                lea     TopazName(pc),a1
.loop           move.b  (a0)+,d0                ;is it 'topaz.font'
                cmp.b   (a1)+,d0
                bne.b   .notopaz
                tst.b   d0
                bne.b   .loop
                movem.l (a7)+,a0/d0
                lea     ThinpazName(pc),a1      ;change it to
                move.l  a1,(a0)                 ;'thinpaz.font'
                bra.b   ..
.notopaz        movem.l (a7)+,a0/d0             
..              move.l  (a7)+,a1
.nosize8        move.l  OpenDiskFont(pc),-(a7)  ;and do OpenDiskFont()
                rts
OpenDiskFont    dc.l    0
OpenFont        dc.l    0
gfxname         dc.b    'graphics.library',0
diskfontname    dc.b    'diskfont.library',0
TopazName       dc.b    'topaz.font',0
ThinpazName     dc.b    'thinpaz.font',0
ResidentEnd
version         dc.b    '$VER: MyFont 37.1 (19/2/94)',0
***********************************************************************
