; http://www.cpcrulez.2ya.com
;
;
; Source pour MAXAM ? et l'assembleur de WinAPE
;

       ORG &9000

;   HL = HL * L

MULB8  PUSH DE            ; Sauvegarde
       PUSH BC            ; de
       PUSH AF            ; registres influences
       XOR  A             ; A vaut zero
       OR   L             ; L vaut-il zero aussi ?
       JR   Z,RETOUR      ; Si oui, on ce casse
       LD   E,L           ; E=L
       LD   D,A           ; DE=L
       LD   A,H           ; A=H
       OR   A             ; H valait-il zero?
       JR   Z,RETOUR      ; Si oui , faut se barrer maintenant
       LD   HL,0          ; Je ne sais quoi dire
       LD   B,8           ; Nombre de bits a decaler
START  RRA                ; Le bit de droite de A vaut-il 1
       JR   NC,PASADD     ; Si il faut zero on additionne pas
       ADD  HL,DE         ; Dans le cas contraire , on le fait
PASADD SLA  E             ; Decalage a gauche de DE
       RL                 ; Soit sa multiplication par 2
       DJNZ START         ; On fait ceci huit fois
SORS   POP  AF            ; Restitution
       POP  BC            ; Des
       POP  DE            ; Registres preserves
       RET                ; Retour  al'envoyeur
RETOUR LD   HL,0          ; Resultat egal a zero
       JR   SORS          ; Voir la bonne remaque