
;	INCLUDE MMacros
;	INCLUDE diskfont/diskfont.i

MAIN:
	MOVEQ #0,D5
   MOVE.L 4,A6       ;A6=EXEC
   MOVE.L D5,A1      ;CLEAR A1
   CALL FindTask
   MOVE.L D0,A5      ;A5=PTR TO OUR PROCESS
   TST.L pr_CLI(A5)
   BNE.S DOLIBS
FROMWB:
   LEA pr_MsgPort(A5),A0
   CALL WaitPort
   LEA pr_MsgPort(A5),A0
   CALL GetMsg
   MOVE.L D0,D5
DOLIBS:
   MOVEQ #0,D0
   LEA FONT(PC),A1
   CALL OpenLibrary
   MOVE.L D0,D6
   BEQ.S NOFONT

   LEA AVAILFONTS2(PC),A0
   MOVE.L A0,D0
   MOVE.L D6,A1
   MOVE.W #-36,A0
   CALL SetFunction
   LEA OLDAVAILFONTS,A5
   MOVE.L D0,(A5)

   MOVE.L #SIGBREAKF_CTRL_C|SIGBREAKF_CTRL_F,D0
   CALL Wait

   MOVE.L (A5),D0
   MOVE.L D6,A1
   MOVE.W #-36,A0
   CALL SetFunction

   MOVE.L D6,A1
   CALL CloseLibrary
NOFONT:
   TST.L D5
   BEQ.S NOWB
   CALL Forbid
   MOVE.L D5,A1      ;A1= ->WBSTARTUP MESSAGE
   CALL ReplyMsg
 NOWB:
   MOVEQ #0,D0
   RTS

	CNOP 0,4          ;LONG ALIGNES OLDWAY
NOFILE:
   MOVE.L A6,A1
   MOVE.L D6,A6
   CALL CloseLibrary
NODOS:
   MOVE.L D5,D1
   MOVE.L D4,D0
   MOVE.L A4,A0
   MOVEM.L (SP)+,A4-A6/D2-D7
   ADDQ.B #AFF_DISK,D1
OLDWAY:
   MOVE.L OLDAVAILFONTS,A1
   JMP (A1)

	CNOP 0,4
AVAILFONTS2:
   CMP.L #7,D1       ;6 14
   BGT.S OLDWAY
   BCLR #AFB_DISK,D1 ;4 10
   BEQ.S OLDWAY

   MOVEM.L A4-A6/D2-D7,-(SP)
   MOVE.L D1,D5   ; flags
   MOVE.L D0,D4   ; bufBytes
   MOVE.L A0,A4   ; buffer
   MOVE.L A6,A5   ; DiskfontBase

   MOVE.L 4,A6

   MOVEQ #0,D0
   LEA DOS(PC),A1
   CALL OpenLibrary
   MOVE.L D0,D6
   BEQ.S NODOS
   EXG A6,D6

   LEA FILENAME(PC),A1
   MOVE.L A1,D1
   MOVE.L #MODE_OLDFILE,D2
   CALL Open
   MOVE.L D0,D7
   BEQ.S NOFILE

   LEA -4(SP),SP
   MOVEQ #4,D3
   MOVE.L SP,D2
   MOVE.L D7,D1
   CALL Read

   MOVE.L (SP)+,D3
   BTST #AFB_MEMORY,D5
   BNE.S DOMEMFONTS
   SUB.L D3,D4
   BLT.S BUFFERTOOSMALL
   MOVE.L A4,D2
   MOVE.L D7,D1
   CALL Read

   MOVE.W (A4)+,D1      ;NUMBER OF AvailFonts
   BRA.S SKIP1STLOOP
LOOP:
   ADDQ.L #af_Attr+ta_Name,A4
   ADD.L D2,(A4)+
   ADDQ.L #ta_SIZEOF-ta_YSize,A4
SKIP1STLOOP:
   DBRA.S D1,LOOP

   MOVE.L D7,D1
   CALL Close

   MOVE.L A6,A1
   MOVE.L D6,A6
   CALL CloseLibrary

   MOVEM.L (SP)+,A4-A6/D2-D7
   MOVEQ #0,D0
   RTS

BUFFERTOOSMALL2:
   MOVE.L A5,A6
BUFFERTOOSMALL:
   MOVE.L D7,D1
   CALL Close

   MOVE.L A6,A1
   MOVE.L D6,A6
   CALL CloseLibrary

   NEG.L D4
   MOVE.L D4,D0
   MOVEM.L (SP)+,A4-A6/D2-D7
   RTS

	CNOP 0,4
DOMEMFONTS:
   EXG A6,A5
   SUBQ.L #2,D3
TRYAGAIN:
   MOVE.L D5,D1
   MOVEQ #0,D0
   MOVE.L SP,A0
   MOVE.L OLDAVAILFONTS,A1
   JSR (A1)
   MOVE.L D0,D1
   ADD.L D3,D1
   SUB.L D1,D4
   BLT.S BUFFERTOOSMALL2
   ADD.L D1,D4
   MOVE.L D5,D1
   MOVE.L A4,A0
   ADD.L D3,A0
   MOVE.L OLDAVAILFONTS,A1
   JSR (A1)
   TST.L D0
   BNE.S TRYAGAIN
   MOVE.L A5,A6
   MOVE.L A4,A5
   MOVE.L A4,A0
   ADD.L D3,A0
   MOVE.W (A0)+,D1
   MOVE.W D1,(A4)+
   BRA.S SKIP1STLOOP2
	CNOP 0,4
 MOVEAF:
   MOVE.L (A0)+,(A4)+
   MOVE.L (A0)+,(A4)+
   MOVE.W (A0)+,(A4)+
 SKIP1STLOOP2:
   DBRA.S D1,MOVEAF

   MOVE.L D3,D5
   MOVEQ #2,D3
   MOVE.L A4,D2
   MOVE.L D7,D1
   CALL Read

   MOVE.W (A4),D4
   ADD.W D4,(A5)

   MOVE.L D5,D3
   MOVE.L A4,D2
   MOVE.L D7,D1
   CALL Read

   MOVE.L A4,D2
   MOVE.W D4,D1
   SUBQ.L #2,D2
   BRA SKIP1STLOOP

         CNOP 0,4
FILENAME:
   DC.B 'FONTS:_FontList',0
         CNOP 0,4
DOS:
   DC.B 'dos.library',0
         CNOP 0,4
FONT:
   DC.B 'diskfont.library',0
VERSION:
   DC.B '$VER: FastFontList 1.1 (23.03.99)',0

      SECTION bss,BSS
OLDAVAILFONTS:
   DS.L 1
