home *** CD-ROM | disk | FTP | other *** search
/ Supremacy 1 / Supremacy-1.iso / DEMOS / C-D / DNTPAP4.ZIP / ARCHIVES.DNT / SOURCES.ZIP / LIST_2_7.S < prev    next >
Encoding:
Text File  |  1987-04-22  |  4.1 KB  |  136 lines

  1. ****************************************************************************
  2. *                                                                         *
  3. *                COURS D'ASSEMBLEUR 68000 SUR ATARI ST                    *
  4. *                                                                         *
  5. *                    par Le Féroce Lapin (from 44E)                       *
  6. *                                                                         *
  7. *                  Listing numéro 2 / Cours numéro 7                      *
  8. *                                                                         *
  9. ****************************************************************************
  10.  
  11. * Test résolution, car si on est en haute et que l'on
  12. * essaye de passer en basse, paf! reset!
  13.     MOVE.W    #4,-(SP)    numéro fonction  Getrez()
  14.     TRAP    #14    appel Xbios
  15.     ADDQ.L    #2,SP      correction pile
  16.     CMP.W    #2,D0      haute ?
  17.     BEQ    CHARGE      oui, donc on charge tout de suite
  18.     
  19. * Puisqu'on est pas en haute, on force en basse résolution
  20. * on note d'abord en mettant à 1 un drapeau de signalement
  21.     MOVE.W    #1,RESOLUTION
  22.     
  23.     MOVE.W    #0,-(SP)    basse résolution
  24.     MOVE.L    #-1,-(SP)  adresse écran inchangée    
  25.     MOVE.L    #-1,-(SP)  adresse écran inchangée    
  26.     MOVE.W    #5,-(SP)   fonction Setscreen()
  27.     TRAP    #14    du xbios
  28.     ADDA.L    #12,SP    correction
  29.     
  30. * Ouverture du fichier image
  31. CHARGE    MOVE.W    #0,-(SP)    ouverture en lecture
  32.     MOVE.L    #NOM_FICHIER,-(SP)   adr nom du fichier
  33.     MOVE.W    #61,-(SP)  fonction Fopen()
  34.     TRAP    #1    du gemdos    
  35.     ADDQ.L    #8,SP     correction pile
  36. * D0 contient le Handle ou bien un numéro d'erreur négatif
  37.     TST.W    D0    compare à 0
  38.     BLT    ERREUR     inférieur donc erreur
  39. * On sauve le handle du fichier
  40.     MOVE.W    D0,D3
  41.  
  42. * Saute les 34 octets du début de fichier degas
  43. * (2 octets d'en-téte, 32 de couleurs)
  44.     MOVE.W    #0,-(SP)    décale à partir du début de fichier
  45.     MOVE.W    D3,-(SP)    handle du fichier
  46.     MOVE.L    #34,-(SP)    nbr d'octets à sauter
  47.     MOVE.W    #66,-(SP)    fonction fseek()
  48.     TRAP    #1    du gemdos
  49.     ADDA.L    #10,SP    
  50.     TST.W    D0    test D0
  51.     BLT    ERREUR
  52.  
  53. * Détermine l'adresse de l'écran
  54.     MOVE.W    #2,-(SP)   fonction Physbase()
  55.     TRAP    #14    du xbios
  56.     ADDQ.L    #2,SP    correction pile
  57.     MOVE.L    D0,A5    sauve l'adresse
  58.     
  59. * Charge l'image directement dans l'écran
  60.     MOVE.L    A5,-(SP)   adresse destination
  61.     MOVE.L    #32000,-(SP)  nbr octets à lire
  62.     MOVE.W    D3,-(SP)    handle du fichier
  63.     MOVE.W    #63,-(SP)    fonction Fread()
  64.     TRAP    #1    du gemdos
  65.     ADDA.L    #12,SP
  66.     TST.W    D0
  67.     BLT    ERREUR
  68.     
  69. * Chargement de la palette dans notre buffer palette
  70. * D'abord repositionner le pointeur fichier
  71.     MOVE.W    #0,-(SP)    décale à partir du début de fichier
  72.     MOVE.W    D3,-(SP)    handle du fichier
  73.     MOVE.L    #2,-(SP)    nbr d'octets à sauter
  74.     MOVE.W    #66,-(SP)    fonction fseek()
  75.     TRAP    #1    du gemdos
  76.     ADDA.L    #10,SP    
  77.     TST.W    D0    test D0
  78.     BLT    ERREUR
  79. * Puis chargement    
  80.     MOVE.L    #BUFFER_PAL,-(SP)   adresse destination
  81.     MOVE.L    #32,-(SP)  nbr octets à lire
  82.     MOVE.W    D3,-(SP)    handle du fichier
  83.     MOVE.W    #63,-(SP)    fonction Fread()
  84.     TRAP    #1    du gemdos
  85.     ADDA.L    #12,SP
  86.     TST.W    D0
  87.     BLT    ERREUR
  88.  
  89. * On place maintenant cette palette avec Xbios (6)
  90.     MOVE.L    #BUFFER_PAL,-(SP)    adresse palette noire
  91.     MOVE.W    #6,-(SP)        fonction Setpalette()
  92.     TRAP    #14        du xbios
  93.     ADDQ.L    #6,SP
  94.     
  95. * On referme le fichier
  96.     MOVE.W    D3,-(SP)    handle
  97.     MOVE.W    #62,-(SP)    fonction Fclose()
  98.     TRAP    #1    du gemdos
  99.     ADDQ.L    #4,SP
  100.     
  101.     BRA    FIN    et on se sauve
  102.     
  103. * En cas d'erreur on vient ici    
  104. ERREUR    MOVE.L    #MESSAGE_ERREUR,-(SP) prévient
  105.     MOVE.W    #9,-(SP)
  106.     TRAP    #1
  107.     ADDQ.L    #6,SP    
  108.     
  109. FIN    MOVE.W    #7,-(SP)   attend un appui touche
  110.     TRAP    #1
  111.     ADDQ.L    #2,SP    
  112.     
  113.     CMP.W    #0,RESOLUTION
  114.     BEQ    NOT_MOYENNE
  115. * Puisqu'on est en basse on reforce en moyenne résolution
  116.     MOVE.W    #1,-(SP)    moyenne résolution
  117.     MOVE.L    #-1,-(SP)  adresse écran inchangée    
  118.     MOVE.L    #-1,-(SP)  adresse écran inchangée    
  119.     MOVE.W    #5,-(SP)   fonction Setscreen()
  120.     TRAP    #14    du xbios
  121.     ADDA.L    #12,SP    correction
  122. * Puis on quitte
  123. NOT_MOYENNE
  124.     MOVE.W    #0,-(SP)
  125.     TRAP    #1
  126. *-------------------------------------------------------------*
  127.     SECTION DATA
  128. MESSAGE_ERREUR    DC.B    "Désolé, erreur avec",13,10
  129.         DC.B    "le fichier "
  130. NOM_FICHIER    DC.B    "A:\IMAGE.PI1",0
  131.  
  132.     SECTION BSS
  133. BUFFER_PAL        DS.W    16
  134. RESOLUTION        DS.W    1
  135.         
  136.