
;	INCLUDE MMacros
;	INCLUDE diskfont/diskfont.i

MAIN:
   LEA BSS_START,A4              ;A4= ->BSS SECTION
	MOVE.L 4,A6
   MOVE.L D0,ARGLEN(A4)
;   MOVE.L A0,ARGPTR(A4)
   MOVE.L A6,A5	;A5=EXEC
   CLEARA A1
   CALL FindTask
   MOVE.L D0,A3      ;A3=PTR TO OUR PROCESS
;   MOVE.L pr_CurrentDir(A3),D2   ;D2=LOCK FOR CURRENTDIR FROM CLI
   TST.L pr_CLI(A3)
   BNE.S DOLIBS
FROMWB:
   LEA pr_MsgPort(A3),A0
   CALL WaitPort
   LEA pr_MsgPort(A3),A0
   CALL GetMsg
   MOVE.L D0,ARGPTR(A4)
   CLR.L ARGLEN(A4)
;   MOVE.L D0,A0
;   MOVE.L sm_ArgList(A0),A1
;   MOVE.L wa_Lock(A1),D2       ;D2=LOCK FOR CURRENTDIR FROM WB
DOLIBS:
   MOVEQ #0,D0
   LEA DOS(PC),A1
   CALL OpenLibrary
   MOVE.L D0,DOSBASE(A4)
   BEQ NODOS

   MOVE.L D0,A6
   LEA FILENAME(PC),A1
   MOVE.L A1,D1
   CALL DeleteFile

   MOVE.L A5,A6
   MOVEQ #0,D0
   LEA FONT(PC),A1
   CALL OpenLibrary
   MOVE.L D0,FONTBASE(A4)
   BEQ NOFONT

   MOVE.L D0,A6
   MOVEQ #AFF_DISK,D1
   MOVEQ #0,D0
   LEA ERRORNUM(A4),A0
   CALL AvailFonts
   MOVE.L D0,D6
   BEQ NOFONTS

   MOVE.L A5,A6
   MOVEQ #0,D1
   ADDQ.L #4,D0
   CALL AllocMem
   MOVE.L D0,D7
   BEQ NOMEM
   ADDQ.L #4,D7

   MOVE.L FONTBASE(A4),A6
   MOVEQ #AFF_DISK,D1
   MOVE.L D6,D0
   MOVE.L D7,A0
   CALL AvailFonts
   TST.L D0
   BNE.S NOCANGROW

   MOVE.L D7,A3
   ADD.L D6,A3

   MOVE.L D7,A2
   MOVE.W (A2)+,D1      ;NUMBER OF AvailFonts
   BRA.S SKIP
LOOP:
   ADDQ.L #af_Attr+ta_Name,A2
   MOVE.L (A2)+,D0
   CMP.L A3,D0
   BGE.S NOTBIGGER
   MOVE.L D0,A3
NOTBIGGER:
   ADDQ.L #ta_SIZEOF-ta_YSize,A2
SKIP:
   DBRA.S D1,LOOP

   MOVE.L D7,A0
   MOVE.L A3,D0
   MOVE.L D6,D1

   SUB.L A2,D0

   SUB.L D0,D1
   MOVE.L D1,-(A0)

   ADD.L D7,D0

   MOVE.L D7,A1
   MOVE.W (A1)+,D1
   BRA.S SKIP2
LOOP2:
   ADDQ.L #af_Attr+ta_Name,A1
   SUB.L D0,(A1)+
   ADDQ.L #ta_SIZEOF-ta_YSize,A1
SKIP2:
   DBRA.S D1,LOOP2

   MOVE.L DOSBASE(A4),A6
   LEA FILENAME(PC),A1
   MOVE.L A1,D1
   MOVE.L #MODE_NEWFILE,D2
   CALL Open
   MOVE.L D0,D5
   BEQ.S NOFILE

   MOVE.L D5,D1        ;FILE PTR
   MOVE.L D7,D2
   SUBQ.L #4,D2        ;ADDRESS
   MOVE.L A2,D3
   SUB.L D2,D3         ;BYTES TO WRITE
   CALL Write
   CMP.W D3,D0
   BNE.S BADWRITE

   MOVE.L D5,D1        ;FILE PTR
   MOVE.L A3,D2        ;ADDRESS

   SUB.L D7,A3
   MOVE.L D6,D3
   SUB.L A3,D3         ;BYTES TO WRITE
   CALL Write
   CMP.L D3,D0
   BNE.S BADWRITE
CLOSEFILE:
   MOVE.L D5,D1
   CALL Close

NOFILE:
NOCANGROW:
   MOVE.L A5,A6
   MOVE.L D6,D0
   ADDQ.L #4,D0
   MOVE.L D7,A1
   SUB.L #4,A1
   CALL FreeMem
NOMEM:
   MOVE.L FONTBASE(A4),A1
   CALL CloseLibrary
NOFONT:
   MOVE.L DOSBASE(A4),A1
   CALL CloseLibrary
NODOS:
   TST.L ARGLEN(A4)
   BNE.S NOWB
   CALL Forbid
   MOVE.L ARGPTR(A4),A1      ;A1= ->WBSTARTUP MESSAGE
   CALL ReplyMsg
NOWB:
   MOVE.L ERRORNUM(A4),D0
   RTS

BADWRITE:
   MOVE.L D5,D1
   CALL Close
   LEA FILENAME(PC),A1
   MOVE.L A1,D1
   CALL DeleteFile
   MOVE.W #20,ERRORNUM+2(A4)
   BRA.S NOFILE

NOFONTS:
   MOVE.W #10,ERRORNUM+2(A4)
   MOVE.L A5,A6
   BRA.S NOMEM

         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: FixFontList 1.1 (23.03.99)',0


            SECTION Bss,BSS
BSS_START:  ;(A4)
ARGLEN:
   DS.L 1
ARGPTR:
   DS.L 1
DOSBASE:
   DS.L 1
FONTBASE:
   DS.L 1
ERRORNUM:
   DS.L 1
