home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_disks / 200-299 / ff244.lzh / FMC / FMC.s < prev    next >
Text File  |  1989-09-03  |  6KB  |  279 lines

  1.     opt    l+
  2.  
  3.     incdir       "vd0:include/"
  4.     
  5.  
  6.  
  7.     include    intuition/intuition.i
  8.     include    intuition/intuition_lib.i
  9.             include     exec/memory.i
  10.     include    exec/exec_lib.i
  11.     include    graphics/graphics_lib.i
  12.     include    graphics/text.i
  13.     include    libraries/dos_lib.i
  14.     include    libraries/dos.i
  15.     include    "misc/easystart.i"
  16.     
  17.     jmp    Start
  18.  
  19. PRINT    macro
  20.     move    #\1,d0    
  21.     move    #\2,d1    
  22.     move.l    _Window,a1
  23.     move.l    wd_RPort(a1),a1
  24.     CALLGRAF    Move        
  25.     move    #\3,d0    
  26.     move.l    _Window,a1
  27.     move.l    wd_RPort(a1),a1
  28.     CALLGRAF    SetAPen
  29.     lea    \4,a0    
  30.     move.l    #\5,d0    
  31.     move.l    _Window,a1        
  32.     move.l    wd_RPort(a1),a1    
  33.     CALLGRAF    Text
  34.     endm
  35.  
  36. OpenThem    lea    dosname(pc),a1
  37.     moveq.l    #0,d0
  38.     CALLEXEC     OpenLibrary
  39.     move.l    d0,_DOSBase    
  40.     lea    intname(pc),a1                 
  41.     moveq.l    #0,d0        
  42.     CALLEXEC     OpenLibrary
  43.     move.l    d0,_IntuitionBase  
  44.     lea    grafname(pc),a1
  45.     moveq.l    #0,d0
  46.     CALLEXEC     OpenLibrary
  47.     move.l    d0,_GfxBase
  48.     rts
  49. _DOSBase    dc.l    0
  50. dosname    DOSNAME
  51. _GfxBase    dc.l    0
  52. grafname    GRAFNAME
  53. _IntuitionBase    dc.l    0
  54. intname    INTNAME
  55.  
  56. _NewWindow    dc.w    300,100,160,45
  57.     dc.b    1,2
  58.     dc.l    CLOSEWINDOW!GADGETUP!MENUPICK
  59.     dc.l    WINDOWCLOSE!ACTIVATE!WINDOWDRAG!WINDOWDEPTH
  60.     dc.l    Gadget1
  61.     dc.l    0,Title
  62.     dc.l    0,0
  63.     dc.w    0,0,0,0
  64.     dc.w    WBENCHSCREEN
  65. Title    dc.b    "FMC by RF",0
  66. Gadget1    dc.l    0
  67.     dc.w    9,13,32,30
  68.     dc.w    GADGHCOMP!GADGHIMAGE!GADGIMAGE,RELVERIFY!TOGGLESELECT,BOOLGADGET
  69.     dc.l    Image1,Image2,0,0,0
  70.     dc.w    1
  71.     dc.l    0
  72. Image1    dc.w    0,0,32,30,2
  73.     dc.l    Data1
  74.     dc.b    1+2,0
  75.     dc.l    0
  76. Image2    dc.w    0,0,32,30,2
  77.     dc.l    Data2
  78.     dc.b    1+2,0
  79.     dc.l    0
  80. Font    dc.l    FName
  81.     dc.w    TOPAZ_EIGHTY
  82.     dc.b    FS_NORMAL
  83.     dc.b    FPF_ROMFONT
  84. FName    dc.b    "topaz.font",0
  85.  
  86. _Window    dc.l    0
  87.     
  88. Start    bsr    OpenThem
  89.     lea.l    _NewWindow(pc),a0
  90.     CALLINT    OpenWindow
  91.     move.l    d0,_Window
  92.     beq    exit
  93.     jsr    Init
  94.     lea.l    Font(pc),a0
  95.     CALLGRAF    OpenFont
  96.     move.l    _Window,a1
  97.     move.l    wd_RPort(a1),a1
  98.     move.l    d0,a0
  99.     CALLGRAF    SetFont
  100.  
  101.  
  102. wait    PRINT    50,20,2,Text1,4
  103.     PRINT    50,30,3,Text2,4
  104.     PRINT    50,40,3,Text3,4
  105.     moveq    #MEMF_PUBLIC,d1 
  106.     CALLEXEC     AvailMem        
  107.            move.l      d0,d2 
  108.     lea    buffer,a0    
  109.     bsr    ASCII
  110.     PRINT    90,20,1,buffer,8
  111.     moveq    #MEMF_FAST,d1 
  112.     CALLEXEC     AvailMem        
  113.            move.l      d0,d2 
  114.     lea    buffer,a0    
  115.     bsr    ASCII
  116.     PRINT    90,30,1,buffer,8
  117.     moveq    #MEMF_CHIP,d1 
  118.     CALLEXEC     AvailMem        
  119.            move.l      d0,d2 
  120.     lea    buffer,a0    
  121.     bsr    ASCII
  122.     PRINT    90,40,1,buffer,8
  123.  
  124.     move.l    _Window,a0
  125.     move.l    wd_UserPort(a0),a0
  126.     CALLEXEC    GetMsg
  127.     tst.l    d0
  128.     bne    Message
  129.     move.l    #30,d1
  130.     CALLDOS    Delay
  131.     bra    wait
  132. Message    move.l    d0,a1
  133.     move.l    im_Class(a1),d4
  134.     CALLEXEC    ReplyMsg
  135.     cmp.l    #MENUPICK,d4
  136.     beq    Menue
  137.     cmp.l    #CLOSEWINDOW,d4
  138.     bne    Change
  139.     move.l    _Window,a0
  140.     CALLINT    CloseWindow
  141.     jsr    Reset
  142. exit    moveq    #0,d0
  143.     rts
  144. Change    eor.b    #$ff,FM_Flag
  145.     bra    wait
  146.  
  147.  
  148.  
  149.  
  150.  
  151. ASCII    clr.b    d3    
  152.     moveq    #7,d0    
  153.     lea    buffer,a0    
  154.     lea    pwrof10,a1    
  155. nex    moveq    #'0',d1    
  156. dec    addq    #1,d1    
  157.     sub.l    (a1),d2    
  158.     bcc.s    dec    
  159.     subq    #1,d1    
  160.     add.l    (a1),d2    
  161.     move.b    d1,(a0)+    
  162.     lea    4(a1),a1    
  163.     dbra    d0,nex
  164.     moveq    #6,d0    
  165.     lea    buffer,a0
  166. rep    cmp.b    #'0',(a0)
  167.     bne    done
  168.     move.b    #' ',(a0)+
  169.     dbra    d0,rep    
  170. done    rts
  171.  
  172. pwrof10    dc.l    10000000
  173.     dc.l    1000000
  174.     dc.l    100000
  175.     dc.l    10000
  176.     dc.l    1000
  177.     dc.l    100
  178.     dc.l    10
  179.     dc.l    1
  180. buffer    ds.b    10
  181.  
  182.  
  183. Text1    dc.b    "RAM "
  184. Text2    dc.b    "Fast"
  185. Text3    dc.b    "Chip"
  186. Init    move.l    4,a6
  187.     move.l    _LVOAvailMem+2(a6),NAvM+2
  188.     move.l    #NewAvailMem,_LVOAvailMem+2(a6)
  189.     move.l    _LVOAllocMem+2(a6),NAcM+2
  190.     move.l    #NewAllocMem,_LVOAllocMem+2(a6)
  191.     rts
  192. Reset    move.l    4,a6
  193.     move.l    NAvM+2,_LVOAvailMem+2(a6)
  194.     move.l    NAcM+2,_LVOAllocMem+2(a6)
  195.     rts
  196.  
  197. FM_Flag    dc.b    0
  198.     even
  199. NewAvailMem    tst.b    FM_Flag
  200.     beq.s    NAvM
  201.     btst    #2,d1
  202.     bne    NAvM2
  203.     or.b    #%11,d1
  204. NAvM    jmp    0
  205. NAvM2    moveq.l    #0,d0
  206.     rts
  207.  
  208. NewAllocMem    tst.b    FM_Flag
  209.     beq.s    NAcM
  210.     btst    #2,d1
  211.     bne    NAvM2
  212.     or.b    #%11,d1
  213. NAcM    jmp    0
  214.  
  215.  
  216.     
  217.  
  218.  
  219.  
  220. Menue    CALLEXEC    Forbid        
  221.     move.l    _Window,a0
  222.     cmp.w    #20,wd_Height(a0)
  223.     bls    MakeBig        ;  stretch window to normal size  
  224.     moveq.l    #0,d0
  225.     move.w    #10,d1
  226.     sub.w    wd_Height(a0),d1
  227.     CALLINT    SizeWindow
  228.     CALLEXEC    Permit
  229.     bra    wait
  230. MakeBig    move.l    _Window,a0        ;crunch window to min. size
  231.     moveq.l    #0,d0
  232.     move.w    wd_TopEdge(a0),d1
  233.     neg.w    d1
  234.     CALLINT    MoveWindow        ; move window to top (to have enough room)
  235.     move.l    _Window,a0
  236.     moveq.l    #0,d0
  237.     move.w    #35,d1
  238.     CALLINT    SizeWindow        ; resize window
  239.     CALLEXEC    Permit
  240.     move.l    #10,d1        ; Intuition needs time to understand it 
  241.     CALLDOS    Delay        ; (don't ask me why !)
  242.     bra    wait
  243.  
  244.  
  245.     section    "data",DATA_C
  246.  
  247. Data1    dc.b $ff,$ff,$ff,$ff,$c0,$00,$00,$03,$c0,$79,$f0,$03,$c0,$cd,$98,$03
  248.     dc.b $c0,$cd,$98,$03,$c0,$79,$98,$03,$c0,$00,$00,$03,$c0,$03,$c0,$03
  249.     dc.b $c0,$07,$e0,$03,$c0,$07,$e0,$03,$c0,$03,$c0,$03,$c0,$03,$c0,$03
  250.     dc.b $c0,$07,$e0,$03,$c0,$0b,$d0,$03,$c0,$13,$c8,$03,$c0,$13,$c8,$03
  251.     dc.b $c0,$08,$10,$03,$c0,$07,$e0,$03,$c0,$00,$00,$03,$c0,$00,$00,$03
  252.     dc.b $c0,$00,$00,$03,$c0,$00,$00,$03,$c0,$00,$00,$03,$c0,$01,$c7,$03
  253.     dc.b $c1,$e3,$0c,$03,$c3,$37,$9e,$03,$c3,$33,$0c,$03,$c1,$e3,$0c,$03
  254.     dc.b $c0,$00,$00,$03,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$c0,$00,$00,$03
  255.     dc.b $c0,$00,$00,$03,$c0,$00,$00,$03,$c0,$00,$00,$03,$c0,$00,$00,$03
  256.     dc.b $c0,$28,$00,$03,$c0,$57,$c0,$03,$c0,$2f,$e0,$03,$c0,$17,$e0,$03
  257.     dc.b $c0,$2b,$c0,$03,$c0,$17,$c0,$03,$c0,$2b,$c0,$03,$c0,$17,$e0,$03
  258.     dc.b $c0,$2f,$f0,$03,$c0,$0f,$f0,$03,$c0,$07,$e0,$03,$c0,$00,$00,$03
  259.     dc.b $c0,$00,$00,$03,$c0,$00,$00,$03,$c0,$00,$00,$03,$c0,$00,$00,$03
  260.     dc.b $c0,$00,$00,$03,$c0,$00,$00,$03,$c0,$00,$00,$03,$c0,$00,$00,$03
  261.     dc.b $c0,$00,$00,$03,$c0,$00,$00,$03,$c0,$00,$00,$03,$ff,$ff,$ff,$ff
  262.     
  263. Data2    dc.b $ff,$ff,$ff,$ff,$c0,$00,$00,$03,$c0,$79,$f0,$03,$c0,$cd,$98,$03
  264.     dc.b $c0,$cd,$98,$03,$c0,$79,$98,$03,$c0,$00,$00,$03,$c0,$00,$00,$03
  265.     dc.b $c0,$00,$00,$03,$c0,$00,$00,$03,$c0,$00,$00,$03,$c0,$00,$00,$03
  266.     dc.b $c0,$07,$e0,$03,$c0,$08,$10,$03,$c0,$13,$c8,$03,$c0,$13,$c8,$03
  267.     dc.b $c0,$0b,$d0,$03,$c0,$07,$e0,$03,$c0,$03,$c0,$03,$c0,$03,$c0,$03
  268.     dc.b $c0,$07,$e0,$03,$c0,$07,$e0,$03,$c0,$03,$c0,$03,$c0,$01,$c7,$03
  269.     dc.b $c1,$e3,$0c,$03,$c3,$37,$9e,$03,$c3,$33,$0c,$03,$c1,$e3,$0c,$03
  270.     dc.b $c0,$00,$00,$03,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$c0,$00,$00,$03
  271.     dc.b $c0,$00,$00,$03,$c0,$00,$00,$03,$c0,$00,$00,$03,$c0,$00,$00,$03
  272.     dc.b $c0,$00,$00,$03,$c0,$00,$00,$03,$c0,$00,$00,$03,$c0,$00,$00,$03
  273.     dc.b $c0,$00,$00,$03,$c0,$00,$00,$03,$c0,$00,$00,$03,$c0,$07,$e0,$03
  274.     dc.b $c0,$0f,$f0,$03,$c0,$2f,$f0,$03,$c0,$17,$e0,$03,$c0,$2b,$c0,$03
  275.     dc.b $c0,$17,$c0,$03,$c0,$2b,$c0,$03,$c0,$17,$e0,$03,$c0,$2f,$e0,$03
  276.     dc.b $c0,$57,$c0,$03,$c0,$28,$00,$03,$c0,$00,$00,$03,$c0,$00,$00,$03
  277.     dc.b $c0,$00,$00,$03,$c0,$00,$00,$03,$c0,$00,$00,$03,$ff,$ff,$ff,$ff
  278.  
  279.