Mini routines Z80 utiles ou collection de Helpers optimisés
NEG HL
xor a
sub l
ld l,a
sbc a
sub h
ld h,a
|
Ajouter une valeur 8 bits signée à HL
; HL = HL + C
ld a,c
add a ; récupère le signe de C
sbc a ; si signé, alors A=255 sinon A=0
ld b,a ; répercuter le signe de C dans BC
add hl,bc
|
Valeur absolue de HL
absHL
bit 7,h : ret z ; positif, rien à faire
xor a : sub l : ld l,a
sbc a : sub h : ld h,a
ret
|
Valeur absolue de BC
absBC
bit 7,b : ret z ; positif, rien à faire
xor a : sub c : ld c,a
sbc a : sub b : ld b,a
ret
|
Valeur absolue de DE
absDE
bit 7,d : ret z ; positif, rien à faire
xor a : sub e : ld e,a
sbc a : sub d : ld d,a
ret
|
Valeur absolue de A
absA
or a : ret p ; positif, rien à faire
neg
ret
|
Comparaison de HL et DE :
CP_HL_DE
or a
sbc hl,de
add hl,de
ret
|
Effacer une zone mémoire sur une longueur donnée
memset
xor a
.loop
ld (hl),a
cpi
jp pe,.loop
ret
|
Désactiver le système temporairement :
desactiver_systeme
di
ld hl,(#38) : ld (restaure_systeme+1),hl
ld hl,#C9FB : ld (#38),hl
ei
ret
restaure_systeme
ld hl,#C9FB : ld (#38),hl
ret
|
Affichage décimal de la valeur de HL
dispHL
ld bc,-10000 : call num1
ld bc,-1000 : call num1
ld bc,-100 : call num1
ld c,-10 : call num1
ld c,-1
num1
ld a,'0'-1
num2
inc a
add hl,bc
jr c,num2
sbc hl,bc
call affiche_caractere_ascii
ret
|
Comment calculer la racine carré de HL? Voici une routine qui le fait en arrondissant à l'inférieur :
racineHL ; résultat dans le registre E
ld bc,#800
ld e,c
xor a
.shl4loop
add hl,hl
rl c
adc hl,hl
rl c
jr nc,$+4
set 0,l
ld a,e
add a
ld e,a
add a
bit 0,l
jr nz,$+5
sub c
jr nc,$+7
ld a,c
sub e
inc e
sub e
ld c,a
djnz .shl4loop
bit 0,l
ret z
inc b
ret
|
Pensez à jeter un oeil dans la rubrique des
[ liens ]
, en particulier les sites pour calculatrices Texas Instrument qui regorgent de routines de calcul dont certaines ont été recopiées ici.
CPCrulez[Content Management System] v8.732-desktop/c Page créée en 411 millisecondes et consultée 5 foisL'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko. |
|