home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_disks / 300-399 / ff396.lha / turbotopaz / TurboTopaz.asm < prev    next >
Assembly Source File  |  1990-10-29  |  14KB  |  537 lines

  1. ;    TurboTopaz V1.0
  2. ;    by Preben Nielsen
  3.     OPT O+
  4. ;    OPT O1+        ;Tells when a branch could be optimised to short
  5. ;    OPT i+        ;Tells when '#' is probably missing
  6.  
  7.     incdir    "INCLUDE:"
  8.     include "exec/memory.i"
  9.     include "exec/exec_lib.i"
  10.     include "graphics/rastport.i"
  11.     include "graphics/text.i"
  12.     include "graphics/graphics_lib.i"
  13.     include "intuition/intuition.i"
  14.     include "libraries/dos.i"
  15.     include "libraries/dos_lib.i"
  16.     include "libraries/diskfont.i"
  17.     include "libraries/diskfont_lib.i"
  18.     include "libraries/dosextens.i"
  19.     include "Workbench/startup.i"
  20.     include "Workbench/workbench.i"
  21.     include "Workbench/icon_lib.i"
  22.  
  23. LF        =10
  24.  
  25. LoadBase    MACRO
  26.         IFNC        '\1','ExecBase'
  27.         movea.l        \1(PC),A6
  28.         ENDC
  29.         IFC        '\1','ExecBase'
  30.         movea.l        4.W,A6
  31.         ENDC
  32.         ENDM
  33. CallLib        MACRO
  34.         jsr        _LVO\1(A6)
  35.         ENDM
  36. Call        MACRO
  37.         bsr        \1
  38.         ENDM
  39. Push        MACRO
  40.         movem.l        \1,-(SP)
  41.         ENDM
  42. Pop        MACRO
  43.         movem.l        (SP)+,\1
  44.         ENDM
  45.  
  46. Arg        EQUR        A4
  47. ArgLen        EQUR        D4
  48. Installed    EQUR        D7
  49.  
  50. Start        Push        D0-D7/A0-A6
  51.         move.l        D0,ArgLen
  52.         move.l        A0,Arg
  53.         LoadBase    ExecBase
  54.         lea        DosName(PC),A1
  55.         CallLib        OldOpenLibrary
  56.         move.l        D0,DosBase
  57.         beq        Exit
  58.         lea        GfxName(PC),A1
  59.         CallLib        OldOpenLibrary
  60.         move.l        D0,GfxBase
  61.         beq        Exit
  62.         LoadBase    GfxBase
  63.         lea        FontAttr(PC),A0
  64.         CallLib        OpenFont
  65.         move.l        D0,TFont
  66.         move.l        D0,FontCheck+2        ;This makes 'cmp.l #Font,52(A1)'
  67.         beq        Exit
  68. FindFunc    LoadBase    ExecBase
  69.         lea        PortName(PC),A1
  70.         CallLib        FindPort        ;Are we installed ?
  71.         move.l        D0,Installed
  72.         suba.l        A1,A1
  73.         CallLib        FindTask        ;Find us
  74.         movea.l        D0,A2
  75.         tst.l        pr_CLI(A2)
  76.         bne.S        CLIStartup
  77. WBenchStartup    lea        pr_MsgPort(A2),A0
  78.         CallLib        WaitPort        ;Wait for a message
  79.         lea        pr_MsgPort(A2),A0
  80.         CallLib        GetMsg            ;Get the message
  81.         move.l        D0,WBenchMsg        ;Save it for later reply
  82.         tst.l        Installed        ;Install or Remove ?
  83.         bne.S        CLIAndWBStartup
  84.         moveq        #0,ArgLen        ;Signal that we haven't found args yet
  85.         move.l        D0,A2
  86.         move.l        sm_NumArgs(A2),D0    ;Any args ?
  87.         move.l        sm_ArgList(A2),A2
  88.         subq.l        #1,D0
  89.         blt.S        CLIAndWBStartup
  90.         beq.S        FoundArg
  91.         addq.w        #wa_SIZEOF,A2
  92. FoundArg    move.l        wa_Lock(A2),D1
  93.         move.l        wa_Name(A2),A2        ;Name of icon
  94.         beq.S        NoLock
  95.         LoadBase    DosBase
  96.         CallLib        CurrentDir
  97. NoLock        LoadBase    ExecBase
  98.         lea        IconName(PC),A1
  99.         CallLib        OldOpenLibrary
  100.         move.l        D0,IconBase
  101.         beq.S        CLIAndWBStartup
  102.         LoadBase    IconBase
  103.         move.l        A2,A0
  104.         CallLib        GetDiskObject        ;Get the icon
  105.         move.l        D0,DiskObj
  106.         beq.S        CLIAndWBStartup
  107.         move.l        D0,A2
  108.         move.l        do_ToolTypes(A2),A0
  109.         lea        FontTxt(PC),A1
  110.         CallLib        FindToolType        ;Find 'FONT=??????'
  111.         move.l        D0,Arg
  112.         move.l        D0,ArgLen        ;Signal that we have or haven't found args
  113.         bra.S        CLIAndWBStartup
  114. CLIStartup    subq.l        #1,ArgLen
  115.         clr.b        0(Arg,ArgLen)
  116. CLIAndWBStartup    tst.l        Installed        ;Install or Remove ?
  117.         beq.S        Install
  118.  
  119. Remove        move.l        Installed,A1
  120.         lea        MyText-MyPort(A1),A1    ;This is the start of the text function
  121.         move.l        GfxBase(PC),A0
  122.         cmpa.l        _LVOText+2(A0),A1
  123.         lea        AlteredTxt(PC),A1
  124.         bne        Write2Lines
  125.         move.l        Installed,A1
  126.         CallLib        RemPort
  127.         move.l        Installed,A0
  128.         CallLib        Forbid
  129.         move.w        #NFuncEnd-NFunc,D0
  130.         lea        NFunc(PC),A1
  131.         lea        NFunc-MyPort(A0),A0    ;This is the memory we allocated
  132.         Call        MemCopy
  133.         movea.w        #_LVOText,A0
  134.         movea.l        GfxBase(PC),A1
  135.         move.l        OldFunc+2(PC),D0    ;Function to restore
  136.         CallLib        SetFunction        ;Install the old function
  137.         tst.l        OFont            ;Were we useing unmodified topaz-80
  138.         beq.S        DoneResFont
  139.         move.l        TFont(PC),A1        ;Restore topaz-80
  140.         lea        tf_YSize(A1),A1
  141.         lea        TopazMisc(PC),A0
  142.         moveq        #tf_SIZEOF-tf_YSize,D0
  143.         move.w        tf_Accessors(A1),D1
  144.         Call        MemCopy
  145.         move.w        D1,tf_Accessors(A1)
  146. DoneResFont    CallLib        Permit
  147.         lea        RemovedTxt(PC),A1
  148.         bra        Write2Lines
  149.  
  150.  
  151. Install        tst.l        ArgLen
  152.         ble        DoneLoadFont
  153.         move.l        Arg,FontAttr
  154.         LoadBase    GfxBase
  155.         lea        FontAttr(PC),A0
  156.         move.b        #FPB_DISKFONT,ta_Flags(A0)
  157.         CallLib        OpenFont
  158.         tst.l        D0
  159.         bne.S        FoundFont
  160.         LoadBase    ExecBase
  161.         lea        DFName(PC),A1
  162.         CallLib        OldOpenLibrary
  163.         lea        NoLibTxt(PC),A1
  164.         move.b        #LF,35(A1)        ;Set a LF
  165.         move.l        D0,DFBase
  166.         beq        Write2Lines
  167.         LoadBase    DFBase
  168.         lea        FontAttr(PC),A0
  169.         CallLib        OpenDiskFont
  170.         move.l        D0,D7
  171.         LoadBase    ExecBase
  172.         movea.l        DFBase(PC),A1
  173.         CallLib        CloseLibrary
  174.         move.l        D7,D0
  175. FoundFont    move.l        D0,OFont
  176.         lea        NoFontTxt(PC),A1
  177.         beq        Write2Lines
  178.         move.l        D0,A0
  179.         move.l        TFont(PC),A2
  180.         moveq        #8,D0
  181.         lea        Not8x8Txt(PC),A1
  182.         cmp.w        tf_YSize(A0),D0
  183.         bne        Write2Lines
  184.         cmp.w        tf_XSize(A0),D0
  185.         bne        Write2Lines
  186.         lea        Mismatch(PC),A1
  187.         move.w        tf_Baseline(A0),D0
  188.         cmp.w        tf_Baseline(A2),D0
  189.         bne        Write2Lines
  190.         lea        CantUseProp(PC),A1
  191.         btst        #FPB_PROPORTIONAL,tf_Flags(A0)
  192.         bne        Write2Lines
  193. DoneLoadFont    LoadBase    ExecBase
  194.         move.l        #BufMem,D0
  195.         move.l        #MEMF_CHIP!MEMF_CLEAR,D1
  196.         CallLib        AllocMem        ;Allocate memory for temporary text
  197.         lea        NoMemTxt(PC),A1
  198.         move.l        D0,BMem
  199.         beq        Write2Lines
  200.         move.l        #FuncMem+CharMem,D0
  201.         move.l        #MEMF_PUBLIC!MEMF_CLEAR,D1
  202.         CallLib        AllocMem        ;Allocate memory for function
  203.         lea        NoMemTxt(PC),A1
  204.         move.l        D0,FMem
  205.         beq        Write2Lines
  206.         CallLib        Forbid
  207.         tst.l        OFont
  208.         beq.S        DoneRepFont        ;Shall we use unmodified topaz-80
  209.         move.l        TFont(PC),A0        ;Save something from topaz-80
  210.         lea        tf_YSize(A0),A0
  211.         lea        TopazMisc(PC),A1
  212.         moveq        #tf_SIZEOF-tf_YSize,D0
  213.         Call        MemCopy
  214.         move.l        OFont(PC),A0        ;Overwrite topaz-80
  215.         lea        tf_YSize(A0),A0
  216.         move.l        TFont(PC),A1
  217.         lea        tf_YSize(A1),A1
  218.         moveq        #tf_SIZEOF-tf_YSize,D0
  219.         move.w        tf_Accessors(A1),D1
  220.         Call        MemCopy
  221.         move.w        D1,tf_Accessors(A1)
  222. DoneRepFont    move.l        TFont(PC),A0
  223.         move.w        tf_Baseline(A0),D0
  224.         andi.w        #%0000000000000111,D0
  225.         lsl.w        #8,D0
  226.         lsl.w        #1,D0
  227.         ori.w        #%0101000101000011,D0
  228.         move.w        D0,SubBaseLine        ;We just made a subq.w tf_baseline,D3
  229.         move.w        tf_Modulo(A0),D1
  230.         moveq        #0,D5
  231.         moveq        #0,D6
  232.         move.b        tf_LoChar(A0),D5
  233.         move.b        tf_HiChar(A0),D6
  234.         movea.l        tf_CharData(A0),A1
  235.         movea.l        tf_CharLoc(A0),A2
  236.         movea.l        FMem(PC),A0
  237.         lea        FontData-NFunc(A0),A0
  238.         moveq        #0,D7            ;0 to tf_LoChar-1 dummy characters
  239. LowLoop        cmp.w        D5,D7
  240.         bge.S        MidLoop
  241.         move.l        D6,D0
  242.         sub.l        D5,D0
  243.         addq.l        #1,D0
  244.         Call        CopyChar
  245.         addq.l        #1,D7
  246.         bra.S        LowLoop
  247. MidLoop        cmp.w        D6,D7            ;tf_LoChar to tf_HiChar real characters
  248.         bgt.S        HighLoop
  249.         move.l        D7,D0
  250.         sub.l        D5,D0
  251.         Call        CopyChar
  252.         addq.l        #1,D7
  253.         bra.S        MidLoop
  254. HighLoop    cmpi.w        #255,D7            ;tf_HiChar to 255 dummy characters
  255.         bgt.S        InstallFunction
  256.         move.l        D6,D0
  257.         sub.l        D5,D0
  258.         addq.l        #1,D0
  259.         Call        CopyChar
  260.         addq.l        #1,D7
  261.         bra.S        HighLoop
  262. InstallFunction
  263.         move.w        #NFuncEnd-NFunc,D0
  264.         lea        NFunc(PC),A0
  265.         movea.l        FMem(PC),A1
  266.         movea.l        A1,A2
  267.         Call        MemCopy
  268.         LoadBase    ExecBase
  269.         lea        MyPort-NFunc(A2),A1
  270.         lea        PortName-NFunc(A2),A0
  271.         move.l        A0,10(A1)        ;Set portname
  272.         CallLib        AddPort        
  273.         moveq        #MyText-NFunc,D0
  274.         add.l        A2,D0
  275.         lea        FontCheck+2-NFunc(A2),A1
  276.         move.l        A1,LockFunc+2-NFunc(A2)            ;\
  277.         move.l        A1,UnLockFunc+2-NFunc(A2)        ; \Modify some absolute code
  278.         move.l        GfxBase(PC),A1                ; /
  279.         move.l        _LVOText+2(A1),OldFunc+2-NFunc(A2)    ;/Save the address of the old 'Text' function
  280.         move.w        #_LVOText,A0
  281.         CallLib        SetFunction
  282.         move.l        D0,OldFunc+2-NFunc(A2)    ;Save the address of the old 'Text' function
  283.         clr.l        BMem            ;\
  284.         clr.l        FMem            ; >Don't free memory until we are re-run
  285.         clr.l        OFont            ;/
  286.         CallLib        Permit
  287.         lea        FontName(PC),A1
  288.         move.l        FontAttr(PC),A0
  289. CopyFName    move.b        (A0)+,(A1)+
  290.         bne.S        CopyFName
  291.         move.b        #LF,-1(A1)
  292.         clr.b        (A1)
  293.         lea        InstalledTxt(PC),A1
  294. Write2Lines    Call        OpenCON            ;A0/A1=First/Second line
  295.         lea        NameOfFunc(PC),A0
  296.         Call        WriteCON
  297.         move.l        A1,A0
  298.         Call        WriteCON
  299.         Call        CloseCON
  300.         bra.S        Exit
  301.  
  302. ;D0=character to copy (0-256)
  303. ;D1=tf_Modulo
  304. ;A0=where to put character
  305. ;A1=tf_CharData
  306. ;A2=tf_CharLoc
  307. CopyChar    lsl.w        #2,D0
  308.         move.w        (A2,D0),D0        ;D0=bitoffset into tf_CharData
  309.         lsr.w        #3,D0            ;D0=byteOffset info tf_CharData
  310.         lea        0(A1,D0.W),A3        ;Here is the character bitmap
  311.         moveq        #7,D0
  312. CharLoop    move.b        (A3),(A0)+
  313.         adda.w        D1,A3
  314.         dbf        D0,CharLoop
  315.         rts
  316.  
  317. Exit
  318. FreeTopaz    LoadBase    GfxBase
  319.         move.l        TFont(PC),D0
  320.         beq.S        FreeFont
  321.         movea.l        D0,A1
  322.         CallLib        CloseFont
  323. FreeFont    move.l        OFont(PC),D0
  324.         beq.S        FreeBMem
  325.         movea.l        D0,A1
  326.         CallLib        CloseFont
  327. FreeBMem    LoadBase    ExecBase
  328.         move.l        BMem(PC),D0
  329.         beq.S        FreeFMem
  330.         movea.l        D0,A1
  331.         move.l        #BufMem,D0
  332.         CallLib        FreeMem            ;Free temporary buffer
  333. FreeFMem    move.l        FMem(PC),D0
  334.         beq.S        FreeGfx
  335.         movea.l        D0,A1
  336.         move.l        #FuncMem+CharMem,D0
  337.         CallLib        FreeMem            ;Free function and character memory
  338. FreeGfx        move.l        GfxBase(PC),D0
  339.         beq.S        FreeDos
  340.         movea.l        D0,A1
  341.         CallLib        CloseLibrary
  342. FreeDos        move.l        DosBase(PC),D0
  343.         beq.S        Flush
  344.         movea.l        D0,A1
  345.         CallLib        CloseLibrary
  346. Flush        moveq        #0,D1            ;Flush unused libs, fonts etc.
  347.         move.l        #$FFFFFF,d0
  348.         CallLib        AllocMem
  349. ReplyWB        move.l        WBenchMsg(PC),D0
  350.         beq.S        AllDone
  351.         move.l        DiskObj(PC),D0
  352.         beq.S        FreeIcon
  353.         move.l        D0,A0
  354.         LoadBase    IconBase
  355.         CallLib        FreeDiskObject
  356. FreeIcon    LoadBase    ExecBase    
  357.         move.l        IconBase(PC),D0
  358.         beq.S        WBEnd
  359.         move.l        D0,A1
  360.         CallLib        CloseLibrary
  361. WBEnd        CallLib        Forbid
  362.         movea.l        WBenchMsg(PC),A1
  363.         CallLib        ReplyMsg        ;Reply WBenchMessage if we are started from WB
  364. AllDone        Pop        D0-D7/A0-A6
  365.         moveq        #0,D0
  366.         rts
  367.  
  368. OpenCON        Push        D0-D7/A0-A6
  369.         LoadBase    DosBase
  370.         tst.l        WBenchMsg
  371.         beq.S        FromCLI
  372. FromWB        move.l        #CONName,D1
  373.         move.l        #MODE_OLDFILE,D2
  374.         CallLib        Open
  375.         bra.S        DoneOpen
  376. FromCLI        CallLib        Output
  377. DoneOpen    move.l        D0,Handle
  378.         bra.S        DoneCON
  379. ;A0=NULL terminated text to write
  380. WriteCON    Push        D0-D7/A0-A6
  381.         LoadBase    DosBase
  382.         move.l        Handle(PC),D1
  383.         beq.S        DoneCON
  384.         move.l        A0,D2
  385.         moveq        #-1,D3
  386. strlenLoop    addq.l        #1,D3
  387.         tst.b        (A0)+
  388.         bne.S        strlenLoop
  389.         CallLib        Write
  390.         bra.S        DoneCON
  391. CloseCON    Push        D0-D7/A0-A6
  392.         LoadBase    DosBase
  393.         move.l        Handle(PC),D2
  394.         beq.S        DoneCON
  395.         tst.l        WBenchMsg
  396.         beq.S        DoneCON
  397.         move.l        #150,D1
  398.         CallLib        Delay
  399.         move.l        D2,D1
  400.         CallLib        Close
  401. DoneCON        Pop        D0-D7/A0-A6
  402.         rts
  403.  
  404. ;A0=Source, A1=Dest, D0:16=count
  405. MemCopy        Push        D0/A0-A1
  406.         subq.w        #1,D0
  407. MemLoop        move.b        (A0)+,(A1)+
  408.         dbf        D0,MemLoop
  409.         Pop        D0/A0-A1
  410.         rts
  411.  
  412. ;================ Here comes the new Text-Function =================
  413. Rp        EQUR        A1
  414. BData        EQUR        A2
  415. Buf        EQUR        A3
  416. CharData    EQUR        A4
  417.  
  418. ;D0=count    D1=ascii    D2=x        D3=y
  419. ;D4=count    D5=temp. A4    D6=not used    D7=not used
  420. ;A0=string    A1=RastPort    A2=bitmap data    A3=temp buffer
  421. ;A4=CharData    A5=layer    A6=GfxBase    A7=SP
  422. * Put the code between NFunc and NFuncEnd
  423. NFunc
  424. OldFunc        jmp        12345678        ;This instruction will be changed by the installation
  425. MyText        tst.b        rp_AlgoStyle(Rp)    ;We can only write strings with style 0
  426.         bne.S        OldFunc
  427.         cmpi.w        #MaxL,D0        ;Is string too long for this MyText
  428.         bgt.S        OldFunc
  429. FontCheck    cmp.l        #12345678,rp_Font(Rp)    ;This instruction will be changed by the installation
  430.         bne.S        OldFunc
  431. LockFunc    not.w        12345678        ;This instruction will be changed by the installation
  432.         Push        D2-D5/A2-A5
  433.         move.l        D0,D4
  434.         beq.S        UnLockFunc
  435.         move.l        (Rp),D1
  436.         move.l        D1,A5
  437.         beq.S        LetsWrite
  438.         CallLib        LockLayerRom        ;Commodore says this doesn't destroy registers
  439. LetsWrite    move.l        BMem(PC),Buf        ;Get BMem pointer
  440.         move.l        Buf,D5
  441.         lea        FontData(PC),CharData
  442.         subq.w        #1,D0
  443. MoveChar    moveq        #0,D1
  444.         move.b        (A0)+,D1
  445.         asl.w        #3,D1
  446.         movea.l        CharData,BData
  447.         adda.w        D1,BData        ;Find bitmap-data
  448.         move.b        (BData)+,(Buf)+
  449.         move.b        (BData)+,1*MaxL-1(Buf)
  450.         move.b        (BData)+,2*MaxL-1(Buf)
  451.         move.b        (BData)+,3*MaxL-1(Buf)
  452.         move.b        (BData)+,4*MaxL-1(Buf)
  453.         move.b        (BData)+,5*MaxL-1(Buf)
  454.         move.b        (BData)+,6*MaxL-1(Buf)
  455.         move.b        (BData)+,7*MaxL-1(Buf)
  456.         dbra        D0,MoveChar
  457.         move.l        D5,A0
  458.         moveq        #0,D0
  459.         moveq        #MaxL,D1
  460.         movem.w        rp_cp_x(Rp),D2-D3
  461. SubBaseLine    subq.w        #1,D3            ;This instruction will be changed by the installation
  462.         lsl.w        #3,D4
  463.         add.w        D4,rp_cp_x(Rp)
  464.         moveq        #8,D5            ;Height
  465.         CallLib        BltTemplate
  466.         move.l        A5,D0
  467.         beq.S        UnLockFunc
  468.         CallLib        UnlockLayerRom
  469. UnLockFunc    not.w        12345678        ;This instruction will be changed by the installation
  470.         Pop        D2-D5/A2-A5
  471.         jmp        _LVOWaitBlit(A6)
  472. FMem        dc.l        0
  473. BMem        dc.l        0            ;Buffer to blit from
  474. TFont        dc.l        0
  475. OFont        dc.l        0
  476. TopazMisc    dcb.b        tf_SIZEOF-tf_YSize,0
  477. MyPort
  478. ;struct MsgPort {
  479. ;        struct Node {    ;struct  Node mp_Node; 
  480.         dc.l        0    ;struct  Node *ln_Succ;
  481.         dc.l        0    ;struct  Node *ln_Pred;
  482.         dc.b        0    ;UBYTE   ln_Type;
  483.         dc.b        0    ;BYTE    ln_Pri; 
  484.         dc.l        PortName;char    *ln_Name; 
  485. ;        }
  486.         dc.b        0    ;UBYTE   mp_Flags; 
  487.         dc.b        0    ;UBYTE   mp_SigBit;
  488.         dc.l        0    ;struct  Task *mp_SigTask;
  489. ;        struct List {    ;struct  List mp_MsgList;
  490.         dc.l        0    ;struct  Node *lh_Head;
  491.         dc.l        0    ;struct  Node *lh_Tail;
  492.         dc.l        0    ;struct  Node *lh_TailPred;
  493.         dc.b        0    ;UBYTE   lh_Type;
  494.         dc.b        0    ;UBYTE   l_pad;
  495. ;        }
  496. ;}
  497. PortName    dc.b        'TurboTopaz.Port',0
  498. NFuncEnd
  499. FontData
  500. MaxL        =90                ;Longest string MyText can write
  501. FuncMem        =NFuncEnd-NFunc
  502. CharMem        =8*256
  503. BufMem        =8*MaxL
  504.  
  505. FontTxt        dc.b        'FONT',0
  506. NameOfFunc    dc.b        $9B,'1;33mTurboTopaz ',$9B,'0;31mV1.0 by ',$9B,'3;33mPreben Nielsen',$9B,'0;31m in 1990',LF,0
  507. InstalledTxt    dc.b        ' TurboTopaz has now been installed with '
  508. FontName
  509. RemovedTxt    dc.b        ' TurboTopaz has now been removed',LF,0
  510. AlteredTxt    dc.b        " ERROR: The 'Text' Vector has been changed. Can't remove",LF,0
  511. Mismatch    dc.b        " ERROR: Baseline mismatch",LF,0
  512. CantUseProp    dc.b        " ERROR: Can't use Proportional font",LF,0
  513. Not8x8Txt    dc.b        " ERROR: Not a 8x8 font",LF,0
  514. NoFontTxt    dc.b        " ERROR: Can't open font",LF,0
  515. NoMemTxt    dc.b        " ERROR: Can't get memory",LF,0
  516. NoLibTxt    dc.b        " ERROR: Can't open "
  517. DFName        dc.b        'diskfont.library',0,0
  518. DosName        dc.b        'dos.library',0
  519. GfxName        dc.b        'graphics.library',0
  520. IconName    dc.b        'icon.library',0
  521. CONName        dc.b        'CON:40/40/500/45/This window goes away after 3 seconds',0
  522.         EVEN
  523. DiskObj        dc.l        0
  524. DosBase        dc.l        0
  525. GfxBase        dc.l        0
  526. DFBase        dc.l        0
  527. IconBase    dc.l        0
  528. WBenchMsg    dc.l        0
  529. Handle        dc.l        0
  530.  
  531. FontAttr    dc.l        TopazName
  532.         dc.w        TOPAZ_EIGHTY
  533.         dc.b        FS_NORMAL,FPB_ROMFONT
  534. TopazName    dc.b        'topaz.font',0
  535.         END
  536.  
  537.