Advertisement
Padou

TD2STRCALC

Sep 26th, 2017
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. *-----------------------------------------------------------
  2. * Title      : TD02
  3. * Written by : Damien Galochet
  4. * Date       : 20/09/17
  5. * Description: :)
  6. *-----------------------------------------------------------
  7.         ORG     $1000
  8. START: move.b   #50, d0                        ; Fermeture des fichiers ouverts        
  9.         trap    #15
  10.         cmp     #2, d0                          ; Vérification des erreurs
  11.         beq     err                             ; Si échec, sortie
  12.        
  13.         lea     fName, a1                       ; Ouverture du fichier
  14.         move.b  #51, d0
  15.         trap    #15
  16.         cmp     #2, d0                          ; Vérification du succés de l'ouverture du fichier
  17.         bne     fOpen                           ; Si échec, tentative de création, sinon saut.
  18.         move.b  #52, d0
  19.         trap    #15
  20.         cmp     #2, d0                          ; Vérification du succés de la création du fichier
  21.         beq     err                             ; Si échec, sortie
  22.        
  23. fOpen: move.l  d1, d3                          ; Sauvegarde du FID dans d3
  24. bcl:   lea     mess0, a1                       ; Affichage de l'invite de saisie
  25.         move.b  #13, d0
  26.         trap    #15
  27.         move.b  #5, d0                          ; Lecture d'un caractrère
  28.         trap    #15
  29.         cmp     #'O', d1                        ; Comparaison avec O
  30.         beq     write
  31.         cmp     #'o', d1                        ; Comparaison avec o
  32.         beq     write
  33.         cmp     #'N', d1                        ; Comparaison avec N
  34.         beq     read                        
  35.         cmp     #'n', d1                        ; Comparaison avec n
  36.         beq     read
  37.         bra     bcl                             ; Saisie non reconnue, bouclage
  38.  
  39. write: lea     mess1, a1                       ; Pointage sur adresse du message de saisie
  40.         move.b  #13, d0                         ; Affichage du message de saisie
  41.         trap    #15
  42.         move.b  #2, d0                          ; Lecture depuis le clavier
  43.         lea     zoneA, a1                       ; Pointage sur zone tampon
  44.         trap    #15
  45.         cmp     #13, d1                         ; Vérification du nombre de caractères lus
  46.         bne     lErr
  47.         move.l  d3, d1                          ; Chargement du FID dans d1
  48.         move.b  #54, d0                         ; Écriture dans le fichier
  49.         move.l  #13, d2                         ; Nombre d'octets à écrire
  50.         trap    #15
  51.         cmp     #2, d0                          ; Vérification des erreurs
  52.         beq     err
  53.         bra     bcl
  54.        
  55. read:  lea     zoneA, a1                       ; Pointage sur buffer mémoire
  56.         move.b  d3, d1                          ; Chargement du FID dans d1
  57.         move.b  #55, d0                         ; Positionnement du curseur dans le fichier
  58.         move.l  #0, d2                          ; Position 0 (début)
  59.         trap    #15
  60. bclRead move.b  d3, d1                          ; Chargement du FID dans d1
  61.         move.b  #53, d0                         ; Lecture du fichier
  62.         move.l  #13, d2                         ; Nombre d'octets à lire
  63.         trap    #15
  64.         cmp     #2, d0                          ; Vérification des erreurs
  65.         beq     err
  66.         cmp     #1, d0                          ; Vérification de la lecture d'une fin de fichier
  67.         beq     fin
  68.         move.w  #13, d1                         ; Nombre de caractères à afficher
  69.         move.b  #0, d0                          ; Affichage de la lecture
  70.         trap    #15
  71.         bra     bclRead                         ; Bouclage      
  72.        
  73.        
  74. lErr   move.b  #13, d0                         ; Affichage du message d'erreur de longueur de saisie
  75.         lea     messLEr, a1
  76.         trap    #15
  77.         bra     bcl        
  78.        
  79. err:   move.b  #13, d0                         ; Affichage du message du message d'erreur
  80.         lea     messErr, a1                    
  81.         trap    #15
  82.         bra fin
  83.        
  84. fin:   move.b  #9, D0
  85.         trap    #15                             ; halt simulator
  86.        
  87. fName  dc.b    'sauvegarde.txt',0
  88. mess0  dc.b    'Voulez-vous saisir un numéro? (O/N)',0
  89. mess1  dc.b    'Saisissez le numéro: ',0
  90. messErr dc.b    'Erreur rencontrée',0
  91. messLEr dc.b    'Taille du numéro saisi invalide',0
  92. zoneA  ds.b    13
  93.  
  94.         END     START
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement