LIST 2 7.TXT/fr: Difference between revisions
Jump to navigation
Jump to search
(Created page with "<pre> ********************************************************************** * * * CO...") Â |
Olivier.jan (talk | contribs) (Replacing content with updated version) Â |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
+ | {{Languages|LIST 2 7.TXT}} |
||
<pre> |
<pre> |
||
− | ********************************************************************** |
+ | ********************************************************************** |
* * |
* * |
||
* COURS D'ASSEMBLEUR 68000 SUR ATARI ST * |
* COURS D'ASSEMBLEUR 68000 SUR ATARI ST * |
||
* * |
* * |
||
− | * par Le |
+ | * par Le Féroce Lapin (from 44E) * |
* * |
* * |
||
− | * Listing |
+ | * 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) |
+ | 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 21: | ||
suite |
suite |
||
− | * Puisqu'on est pas en haute, on force en basse |
+ | * 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 |
+ | 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 43: | ||
− | * D0 contient le Handle ou bien un |
+ | * D0 contient le Handle ou bien un numéro d'erreur négatif |
− | TST.W D0 compare |
+ | TST.W D0 compare à 0 |
− | BLT ERREUR |
+ | BLT ERREUR inférieur donc erreur |
Line 53: | Line 54: | ||
− | * Saute les 34 octets du |
+ | * Saute les 34 octets du début de fichier DEGAS |
− | * (2 octets d'en- |
+ | * (2 octets d'en-téte, 32 de couleurs) |
− | MOVE.W #0,-(SP) |
+ | 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 68: | ||
+ | * 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 76: | ||
− | * 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 91: | ||
* D'abord repositionner le pointeur fichier |
* D'abord repositionner le pointeur fichier |
||
− | MOVE.W #0,-(SP) |
+ | 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 105: | ||
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 134: | ||
* En cas d'erreur on vient ici |
* En cas d'erreur on vient ici |
||
− | ERREUR MOVE.L #MESSAGE_ERREUR,-(SP) |
+ | ERREUR MOVE.L #MESSAGE_ERREUR,-(SP) prévient |
MOVE.W #9,-(SP) |
MOVE.W #9,-(SP) |
||
TRAP #1 |
TRAP #1 |
||
Line 146: | Line 147: | ||
− | * Puisqu'on est en basse, on reforce en moyenne |
+ | * Puisqu'on est en basse, on reforce en moyenne résolution |
− | MOVE.W #1,-(SP) moyenne |
+ | 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 164: | ||
*-------------------------------------------------------------* |
*-------------------------------------------------------------* |
||
SECTION DATA |
SECTION DATA |
||
− | MESSAGE_ERREUR DC.B " |
+ | 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 |
Latest revision as of 00:44, 17 December 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