home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 4: The Falcon Archive / nf_archive_four_v1.0.iso / ARCHIVE / WORK / UTILITY / FUSS_V1.ZIP / FUSS_V1.S next >
Text File  |  1993-12-13  |  6KB  |  355 lines

  1.  
  2. ;    F030 universal screensaver 
  3. ;    version 1
  4. ;    T.AL 93
  5.  
  6.  
  7.     output .ttp
  8.     text
  9.  
  10.  
  11.     move.l 4(sp),a3        base page pointer
  12.     move.l $c(a3),d0    p_tlen
  13.     add.l $14(a3),d0    +p_dlen
  14.     add.l $1c(a3),d0    +p_blen
  15.     add.l #256,d0
  16.     move.l d0,d3        sauve taille prog
  17.  
  18.     pea prompt
  19.     move.w #9,-(sp)
  20.     trap #1
  21.     addq.l #6,sp
  22.  
  23.     clr.l -(sp)        super
  24.     move.w #$20,-(sp)
  25.     trap #1
  26.     addq.l #6,sp
  27.     move.l d0,-(sp)        sauve oldstack
  28.  
  29.  
  30. ;-----------------------------------------------
  31. ;teste la presence d'une option sur la ligne de commande
  32.  
  33.     move.b $80(a3),d0
  34.     beq.s nocmdline
  35.     
  36. ;recupere le path sur la ligne de commande et le termine par un nul
  37.  
  38.     lea $81(a3),a3
  39.     clr.b (a3,d0.w)        nul à la fin du path
  40.     move.l a3,FileName
  41.  
  42. ;teste si FUSS est deja installe
  43.  
  44.     move.l $502.w,a0
  45.     lea sign-dump(a0),a1    a1.l adresse de la signature
  46.     cmp.l #'FUSS',(a1)
  47.     bne.s install
  48.  
  49. ;deja installe, on donne le path à la version deja installee et on quitte    
  50.  
  51.     lea defaultfile-dump(a0),a1
  52. filencpy    move.b (a3)+,(a1)+
  53.     bne.s filencpy
  54.     
  55. ;affiche la situation
  56.  
  57.     pea newfname
  58.     move.w #9,-(sp)
  59.     trap #1
  60.     addq.l #6,sp
  61.     
  62.     move.l FileName,-(sp)
  63.     move.w #9,-(sp)
  64.     trap #1
  65.     addq.l #6,sp
  66.     
  67.     bra pterm
  68.     
  69.     
  70. ;-----------------------------------------------
  71. ;pas de ligne de commande
  72.  
  73. nocmdline    lea defaultfile,a0
  74.     move.l a0,FileName
  75.     
  76. ;teste si FUSS est deja installe
  77.  
  78.     move.l $502.w,a0
  79.     lea sign-dump(a0),a1    a1.l adresse de la signature
  80.     cmp.l #'FUSS',(a1)
  81.     bne.s install
  82.  
  83. ;si oui on restaure l'ancien vecteur et on quitte
  84.  
  85.     move.l olddump-dump(a0),$502.w    restaure ancien vecteur dump
  86.     
  87. ;affiche la situation
  88.  
  89.     pea wipe
  90.     move.w #9,-(sp)
  91.     trap #1
  92.     addq.l #6,sp
  93.     
  94.     bra pterm
  95.  
  96.  
  97. ;-----------------------------------------------
  98. ;on installe FUSS
  99.                 
  100. install    pea waiting
  101.     move.w #9,-(sp)
  102.     trap #1
  103.     addq.l #6,sp 
  104.  
  105.     move.l FileName,-(sp)
  106.     move.w #9,-(sp)
  107.     trap #1
  108.     addq.l #6,sp
  109.  
  110.     pea cr
  111.     move.w #9,-(sp)
  112.     trap #1
  113.     addq.l #6,sp
  114.  
  115.     move.l $502.w,olddump
  116.  
  117.     lea dump,a0        dump vector
  118.     move.l a0,$502.w
  119.  
  120.     move.w #$20,-(sp)    user
  121.     trap #1
  122.     addq.l #6,sp
  123.  
  124.     move.w #1,-(sp)
  125.     trap #1
  126.     addq.l #2,sp
  127.  
  128.     clr.w -(sp)        keep process
  129.     move.l d3,-(sp)
  130.     move.w #$31,-(sp)
  131.     trap #1
  132.  
  133.  
  134. ;-----------------------------------------------
  135. pterm    pea cr
  136.     move.w #9,-(sp)
  137.     trap #1
  138.     addq.l #6,sp
  139.  
  140.     move.w #1,-(sp)
  141.     trap #1
  142.     addq.l #2,sp
  143.  
  144.     move.w #$20,-(sp)    user
  145.     trap #1
  146.     addq.l #6,sp
  147.     
  148.     clr.w -(sp)
  149.     trap #1
  150.  
  151.  
  152. ;-----------------------------------------------
  153. dump    bsr screensave
  154.     rts
  155.     
  156. ;-----------------------------------------------
  157. screensave    movem.l d0-a6,-(sp)
  158.  
  159. ;recupere l'adresse, le mode et la taille de l'ecran
  160.  
  161.     move.w #2,-(sp)        Physbase
  162.     trap #14
  163.     addq.l #2,sp
  164.     move.l d0,a3        a3.l screenbase
  165.  
  166.     move.w #-1,-(sp)
  167.     move.w #88,-(sp)    VsetMode(-1)
  168.     trap #14
  169.     addq.l #4,sp
  170.     move.w d0,d3        d3.w screenmode
  171.  
  172.     move.w d0,-(sp)        mode courant
  173.     move.w #91,-(sp)    Vgetsize
  174.     trap #14
  175.     addq.l #4,sp
  176.     move.l d0,d4        d4.l screensize
  177.  
  178. ;sauve la DTA du programme interrompu
  179.  
  180.     move.w #$2f,-(sp)
  181.     trap #1
  182.     addq.l #2,sp
  183.     
  184.     move.l d0,savDTA
  185.     
  186. ;sauve le lecteur et le path courant
  187.  
  188.     move.w #$19,-(sp)
  189.     trap #1
  190.     addq.l #2,sp
  191.     
  192.     move.b d0,savPath
  193.     move.b #':',savPath+1
  194.     
  195.     clr.w -(sp)
  196.     pea savPath+2
  197.     move.w #$47,-(sp)
  198.     trap #1
  199.     addq.l #8,sp
  200.     
  201. ;installe DTA pour la sauvegarde
  202.  
  203.     pea DTA
  204.     move.w #$1a,-(sp)
  205.     trap #1
  206.     addq.l #6,sp
  207.     
  208. ;ouvre le fichier F30 et sauve le handle
  209.  
  210.     clr.w -(sp)
  211.     move.l FileName,-(sp)
  212.     move.w #$3c,-(sp)
  213.     trap #1
  214.     addq.l #8,sp
  215.  
  216.     move.w d0,d5        d5.w handle
  217.  
  218. ;determine la structure du fichier, truecolor ou bitmap
  219. ; screenmode.bit2 on -> truecolor mode, off -> bitmap mode
  220.  
  221.     btst #2,d3
  222.     bne.s savescrmode
  223.  
  224. ;mode bitmap, determine l'adresse et la taille de la palette
  225. ; screenmode.bit7 on -> ST comptatible mode (palette $8240.w)
  226. ;                 off -> Falcon mode (palette $9800.w)
  227.  
  228.     btst #7,d3    
  229.     beq.s F30pal
  230.     
  231.     lea $ffff8240.w,a0    adresse palette
  232.     move.w #32,d0        taille
  233.     bra.s savepalette    
  234.     
  235. F30pal    lea $ffff9800.w,a0
  236.     move.w #256*4,d0
  237.  
  238. ;copie screenmode et la palette dans un buffer
  239.  
  240. savepalette    lea savbuf,a1
  241.     moveq.l #0,d1
  242.     move.w d0,d1        bytecount pour la sauvegarde
  243.     addq.w #2,d1
  244.     
  245.     lsr.w #2,d0
  246.     subq.w #1,d0
  247.     
  248.     move.w d3,(a1)+        sauve screenmode
  249.  
  250. palcpy    move.l (a0)+,(a1)+    sauve la palette
  251.     dbf d0,palcpy
  252.     bra.s savebuf
  253.     
  254. ;sauve le screenmode en truecolor
  255.  
  256. savescrmode    move.w d3,savbuf
  257.     moveq.l #2,d1
  258.     
  259. ;sauve le buffer sur disque
  260.  
  261. savebuf    pea savbuf
  262.     move.l d1,-(sp)
  263.     move.w d5,-(sp)
  264.     move.w #$40,-(sp)
  265.     trap #1
  266.     add.l #12,sp
  267.  
  268. ;sauve l'ecran sur disque
  269.  
  270. saverawdata    pea (a3)
  271.     move.l d4,-(sp)
  272.     move.w d5,-(sp)
  273.     move.w #$40,-(sp)
  274.     trap #1
  275.     add.l #12,sp
  276.     
  277. ;ferme le fichier
  278.  
  279.     move.w d5,-(sp)
  280.     move.w #$3e,-(sp)
  281.     trap #1
  282.     addq.l #4,sp
  283.  
  284. ;restaure DTA et path
  285.  
  286.     move.l savDTA,-(sp)
  287.     move.w #$1a,-(sp)
  288.     trap #1
  289.     addq.l #6,sp
  290.     
  291.     pea savPath
  292.     move.w #$3b,-(sp)
  293.     trap #1
  294.     addq.l #6,sp
  295.  
  296.     pea prompt
  297.     move.w #9,-(sp)
  298.     trap #1
  299.     addq.l #6,sp
  300.  
  301.     pea work
  302.     move.w #9,-(sp)
  303.     trap #1
  304.     addq.l #6,sp
  305.          
  306.     movem.l (sp)+,d0-a6
  307.     rts
  308.  
  309. ;-----------------------------------------------
  310.     even
  311.     data
  312.  
  313. sign    dc.b 'FUSS',0
  314.  
  315. prompt    dc.b $1b,'E'
  316.     dc.b 'FUSS v1.0:',$a,$d,$a,$d
  317.     dc.b 'Falcon030 Universal Screen Saver',$a,$d
  318.     dc.b 'by T.AL 93',$a,$d,$a,$d
  319.     dc.b 0
  320.  
  321. waiting    dc.b 'Installed',$a,$d
  322.  
  323. newfname    dc.b 'Save image as: ',0
  324.  
  325. wipe    dc.b 'Removed from memory',0
  326.  
  327. defaultfile    dc.b '\SAVER.F30',0    nom par defaut
  328.     ds.b 200    un peu de place pour un autre fichier
  329.     
  330. cr    dc.b $a,$d,0
  331.  
  332. work    dc.b 'FUSS is working for you ?!',0
  333.  
  334. ;-----------------------------------------------
  335.     even
  336.     bss
  337.  
  338.     ds.b 256
  339.     
  340. DTA    ds.b 44
  341.  
  342. FileName    ds.l 1
  343.     
  344. olddump    ds.l 1
  345.  
  346. savDTA    ds.l 1
  347. savPath    ds.b 256
  348.  
  349. savbuf    ds.b 2048
  350.  
  351.  
  352. ;-----------------------------------------------
  353.     end
  354.  
  355.