LIST 2 7.TXT/fr: Difference between revisions

From Atari Wiki
Jump to navigation Jump to search
(Created page with "<pre> ********************************************************************** * * * CO...")
 
No edit summary
Line 4: Line 4:
 
* COURS D'ASSEMBLEUR 68000 SUR ATARI ST *
 
* COURS D'ASSEMBLEUR 68000 SUR ATARI ST *
 
* *
 
* *
−
* par Le F
+
* par Le F�roce Lapin (from 44E) *
 
* *
 
* *
−
* Listing num
+
* Listing num�ro 2 / Cours num�ro 7 *
 
* *
 
* *
 
**********************************************************************
 
**********************************************************************
   
  +
* Test r�solution, car si on est en haute et que l'on essaye de *
−
* Test r‚solution, car si on est en haute et que l'on essaye de *
 
 
* passer en basse, paf! RESET ! *
 
* passer en basse, paf! RESET ! *
   
−
MOVE.W #4,-(SP) num
+
MOVE.W #4,-(SP) num�ro fonction Getrez()
 
TRAP #14 appel Xbios
 
TRAP #14 appel Xbios
 
ADDQ.L #2,SP correction pile
 
ADDQ.L #2,SP correction pile
Line 20: Line 20:
 
suite
 
suite
   
−
* Puisqu'on est pas en haute, on force en basse r
+
* Puisqu'on est pas en haute, on force en basse r�solution
−
* on note d'abord en mettant
+
* on note d'abord en mettant � 1 un drapeau de signalement
   
 
MOVE.W #1,RESOLUTION
 
MOVE.W #1,RESOLUTION
   
−
MOVE.W #0,-(SP) basse r
+
MOVE.W #0,-(SP) basse r�solution
−
MOVE.L #-1,-(SP) adresse
+
MOVE.L #-1,-(SP) adresse �cran inchang�e
−
MOVE.L #-1,-(SP) adresse
+
MOVE.L #-1,-(SP) adresse �cran inchang�e
 
MOVE.W #5,-(SP) fonction Setscreen()
 
MOVE.W #5,-(SP) fonction Setscreen()
 
TRAP #14 du X bios
 
TRAP #14 du X bios
Line 42: Line 42:
   
   
−
* D0 contient le Handle ou bien un num
+
* D0 contient le Handle ou bien un num�ro d'erreur n�gatif
   
−
TST.W D0 compare
+
TST.W D0 compare � 0
−
BLT ERREUR inf
+
BLT ERREUR inf�rieur donc erreur
   
   
Line 53: Line 53:
   
   
−
* Saute les 34 octets du d
+
* Saute les 34 octets du d�but de fichier DEGAS
−
* (2 octets d'en-t
+
* (2 octets d'en-t�te, 32 de couleurs)
   
−
MOVE.W #0,-(SP) d
+
MOVE.W #0,-(SP) d�cale � partir du d�but de
 
fichier
 
fichier
 
MOVE.W D3,-(SP) handle du fichier
 
MOVE.W D3,-(SP) handle du fichier
−
MOVE.L #34,-(SP) nbr d'octets
+
MOVE.L #34,-(SP) nbr d'octets � sauter
 
MOVE.W #66,-(SP) fonction Fseek()
 
MOVE.W #66,-(SP) fonction Fseek()
 
TRAP #1 du GEMDOS
 
TRAP #1 du GEMDOS
Line 67: Line 67:
   
   
  +
* D�termine l'adresse de l'�cran
−
* D‚termine l'adresse de l'‚cran
 
   
 
MOVE.W #2,-(SP) fonction Physbase()
 
MOVE.W #2,-(SP) fonction Physbase()
Line 75: Line 75:
   
   
−
* Charge l'image directement dans l'
+
* Charge l'image directement dans l'�cran
   
 
MOVE.L A5,-(SP) adresse destination
 
MOVE.L A5,-(SP) adresse destination
−
MOVE.L #32000,-(SP) nbr octets
+
MOVE.L #32000,-(SP) nbr octets � lire
 
MOVE.W D3,-(SP) handle du fichier
 
MOVE.W D3,-(SP) handle du fichier
 
MOVE.W #63,-(SP) fonction Fread()
 
MOVE.W #63,-(SP) fonction Fread()
Line 90: Line 90:
 
* D'abord repositionner le pointeur fichier
 
* D'abord repositionner le pointeur fichier
   
−
MOVE.W #0,-(SP) d
+
MOVE.W #0,-(SP) d�cale � partir du d�but de
 
fichier
 
fichier
 
MOVE.W D3,-(SP) handle du fichier
 
MOVE.W D3,-(SP) handle du fichier
−
MOVE.L #2,-(SP) nbr d'octets
+
MOVE.L #2,-(SP) nbr d'octets � sauter
 
MOVE.W #66,-(SP) fonction Fseek()
 
MOVE.W #66,-(SP) fonction Fseek()
 
TRAP #1 du GEMDOS
 
TRAP #1 du GEMDOS
Line 104: Line 104:
   
 
MOVE.L #BUFFER_PAL,-(SP) adresse destination
 
MOVE.L #BUFFER_PAL,-(SP) adresse destination
−
MOVE.L #32,-(SP) nbr octets
+
MOVE.L #32,-(SP) nbr octets � lire
 
MOVE.W D3,-(SP) handle du fichier
 
MOVE.W D3,-(SP) handle du fichier
 
MOVE.W #63,-(SP) fonction Fread()
 
MOVE.W #63,-(SP) fonction Fread()
Line 133: Line 133:
 
* En cas d'erreur on vient ici
 
* En cas d'erreur on vient ici
   
−
ERREUR MOVE.L #MESSAGE_ERREUR,-(SP) pr
+
ERREUR MOVE.L #MESSAGE_ERREUR,-(SP) pr�vient
 
MOVE.W #9,-(SP)
 
MOVE.W #9,-(SP)
 
TRAP #1
 
TRAP #1
Line 146: Line 146:
   
   
−
* Puisqu'on est en basse, on reforce en moyenne r
+
* Puisqu'on est en basse, on reforce en moyenne r�solution
   
−
MOVE.W #1,-(SP) moyenne r
+
MOVE.W #1,-(SP) moyenne r�solution
−
MOVE.L #-1,-(SP) adresse
+
MOVE.L #-1,-(SP) adresse �cran inchang�e
−
MOVE.L #-1,-(SP) adresse
+
MOVE.L #-1,-(SP) adresse �cran inchang�e
 
MOVE.W #5,-(SP) fonction Setscreen()
 
MOVE.W #5,-(SP) fonction Setscreen()
 
TRAP #14 du XBIOS
 
TRAP #14 du XBIOS
Line 163: Line 163:
 
*-------------------------------------------------------------*
 
*-------------------------------------------------------------*
 
SECTION DATA
 
SECTION DATA
−
MESSAGE_ERREUR DC.B "D
+
MESSAGE_ERREUR DC.B "D�sol�, erreur avec",13,10
 
DC.B "le fichier "
 
DC.B "le fichier "
 
NOM_FICHIER DC.B "A:\IMAGE.PI1",0
 
NOM_FICHIER DC.B "A:\IMAGE.PI1",0

Revision as of 15:06, 23 November 2023

    **********************************************************************
    *                                                                    *
    *               COURS D'ASSEMBLEUR 68000 SUR ATARI ST                *
    *                                                                    *
    *                   par Le F�roce Lapin (from 44E)                   *
    *                                                                    *
    *                 Listing num�ro 2 / Cours num�ro 7                  *
    *                                                                    *
    **********************************************************************

    *  Test r�solution, car si on est en haute et que l'on essaye de *
    *  passer en basse, paf!  RESET !                                *

           MOVE.W    #4,-(SP)              num�ro fonction  Getrez()
           TRAP      #14                   appel Xbios
           ADDQ.L    #2,SP                 correction pile
           CMP.W     #2,D0                 haute ?
           BEQ       CHARGE                oui, donc on charge tout de
                                           suite

    * Puisqu'on est pas en haute, on force en basse r�solution
    * on note d'abord en mettant � 1 un drapeau de signalement

           MOVE.W    #1,RESOLUTION

           MOVE.W    #0,-(SP)              basse r�solution
           MOVE.L    #-1,-(SP)             adresse �cran inchang�e
           MOVE.L    #-1,-(SP)             adresse �cran inchang�e
           MOVE.W    #5,-(SP)              fonction Setscreen()
           TRAP      #14                   du X bios
           ADDA.L    #12,SP                correction


    * Ouverture du fichier image

  CHARGE   MOVE.W    #0,-(SP)              ouverture en lecture
           MOVE.0L   #NOM_FICHIER,-(SP)    adr nom du fichier
           MOVE.W    #61,-(SP)             fonction Fopen()
           TRAP      #1                    du GEMDOS
           ADDQ.L    #8,SP                 correction pile


    * D0 contient le Handle ou bien un num�ro d'erreur n�gatif

           TST.W     D0                    compare � 0
           BLT       ERREUR                inf�rieur donc erreur


    * On sauve le handle du fichier

           MOVE.W    D0,D3


    * Saute les 34 octets du d�but de fichier DEGAS
    * (2 octets d'en-t�te, 32 de couleurs)

           MOVE.W    #0,-(SP)              d�cale � partir du d�but de
                                           fichier
           MOVE.W    D3,-(SP)              handle du fichier
           MOVE.L    #34,-(SP)             nbr d'octets � sauter
           MOVE.W    #66,-(SP)             fonction Fseek()
           TRAP      #1                    du GEMDOS
           ADDA.L    #10,SP              
           TST.W     D0                    test D0
           BLT       ERREUR


    * D�termine l'adresse de l'�cran

           MOVE.W    #2,-(SP)              fonction Physbase()
           TRAP      #14                   du xbios
           ADDQ.L    #2,SP                 correction pile
           MOVE.L    D0,A5                 sauve l'adresse


    * Charge l'image directement dans l'�cran

           MOVE.L    A5,-(SP)              adresse destination
           MOVE.L    #32000,-(SP)          nbr octets � lire
           MOVE.W    D3,-(SP)              handle du fichier
           MOVE.W    #63,-(SP)             fonction Fread()
           TRAP      #1                    du GEMDOS
           ADDA.L    #12,SP
           TST.W     D0
           BLT       ERREUR


    * Chargement de la palette dans notre buffer palette
    * D'abord repositionner le pointeur fichier

           MOVE.W    #0,-(SP)              d�cale � partir du d�but de
                                           fichier
           MOVE.W    D3,-(SP)              handle du fichier
           MOVE.L    #2,-(SP)              nbr d'octets � sauter
           MOVE.W    #66,-(SP)             fonction Fseek()
           TRAP      #1                    du GEMDOS
           ADDA.L    #10,SP
           TST.W     D0                    test D0
           BLT       ERREUR


  * Puis chargement

           MOVE.L    #BUFFER_PAL,-(SP)     adresse destination
           MOVE.L    #32,-(SP)             nbr octets � lire
           MOVE.W    D3,-(SP)              handle du fichier
           MOVE.W    #63,-(SP)             fonction Fread()
           TRAP      #1                    du GEMDOS
           ADDA.L    #12,SP
           TST.W     D0
           BLT       ERREUR


  * On place maintenant cette palette avec Xbios (6)

           MOVE.L    #BUFFER_PAL,-(SP)     adresse palette noire
           MOVE.W    #6,-(SP)              fonction SetPalette()
           TRAP      #14                   du XBIOS
           ADDQ.L    #6,SP


  * On referme le fichier

           MOVE.W    D3,-(SP)              handle
           MOVE.W    #62,-(SP)             fonction Fclose()
           TRAP      #1                    du GEMDOS
           ADDQ.L    #4,SP

           BRA       FIN                   et on se sauve


  * En cas d'erreur on vient ici

  ERREUR   MOVE.L    #MESSAGE_ERREUR,-(SP) pr�vient
           MOVE.W    #9,-(SP)
           TRAP      #1
           ADDQ.L    #6,SP

  FIN      MOVE.W    #7,-(SP)              attend un appui touche
           TRAP      #1
           ADDQ.L    #2,SP

           CMP.W     #0,RESOLUTION
           BEQ       NOT_MOYENNE


  * Puisqu'on est en basse, on reforce en moyenne r�solution

           MOVE.W    #1,-(SP)              moyenne r�solution
           MOVE.L    #-1,-(SP)             adresse �cran inchang�e
           MOVE.L    #-1,-(SP)             adresse �cran inchang�e
           MOVE.W    #5,-(SP)              fonction Setscreen()
           TRAP      #14                   du XBIOS
           ADDA.L    #12,SP                correction


  * Puis on quitte

  NOT_MOYENNE
           MOVE.W    #0,-(SP)
           TRAP      #1
  *-------------------------------------------------------------*
      SECTION DATA
  MESSAGE_ERREUR     DC.B                  "D�sol�, erreur avec",13,10
                     DC.B                  "le fichier "
  NOM_FICHIER        DC.B                  "A:\IMAGE.PI1",0

      SECTION BSS
  BUFFER_PAL         DS.W                  16
  RESOLUTION         DS.W                  1

Back to ASM_Tutorial