Citation de: damcha le Lundi 23 Septembre 2013, 08:16:07 AMoui c'est vrai, du coup y'a G-lock aussi. Mais je pensai au top spin d'eyeshield71 (très bon jeu de golf d'ailleurs)
Afterburner deluxe
[move]Vous aimez le couscous-boulettes, le chorizo, la Force 4, et la mimolette ? Alors soyez les bienvenus sur Gamoover ! [/move]
Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.
Voir les contributions MenuCitation de: damcha le Lundi 23 Septembre 2013, 08:16:07 AMoui c'est vrai, du coup y'a G-lock aussi. Mais je pensai au top spin d'eyeshield71 (très bon jeu de golf d'ailleurs)
Afterburner deluxe
; crc32:
;
; crc = 0xffffffff
; for (;size > 0; size--) {
; crc = crc ^ *data++
; for (i = 8; i > 0; i--) {
; if (crc & 1)
; crc = (crc >> 1) ^ 0xEDB88320
; else
; crc = crc >> 1;
; }
; }
; crc = crc ^ 0xffffffff;
;
; HL => address of the parameters's list
; data addrL (+0), AddrH (+1)
; data SizeL (+2), SizeH (+3)
; crc dataL (+4), dataML(+5)
; crc dataMH(+6), dataH (+7)
.area CRC32 (REL)
crc32::
push PSW; save context
push B
push D
push H
; load and push rom's address
mov A,M
mov E,A
inx H
mov A,M
mov D,A
inx H
; load and push rom's size
mov A,M
mov C,A
inx H
mov A,M
mov B,A
inx H
push H; save CRC address
push B; store size
xchg; put rom's address in H
; set crc to 0xffffffff
mvi B,0xFF
mvi C,0xFF
mvi D,0xFF
mvi E,0xFF
bytelp: mov A,M; read rom's data
inx H
push H
mvi H,8; rotate 8 times, i = 8
xra E; CRC = CRC ^ data
mov E,A
bitlp: mov A,B
rar
mov B,A
mov A,C
rar
mov C,A
mov A,D
rar
mov D,A
mov A,E
rar
mov E,A
jnc ebitlp
mov A,B
xri 0xED
mov B,A
mov A,C
xri 0xB8
mov C,A
mov A,D
xri 0x83
mov D,A
mov A,E
xri 0x20
mov E,A
ebitlp: dcr H; if (--i > 0)
jnz bitlp; goto bitlp
pop H
xthl
dcx H
mov A,H; if (--size > 0)
ora L
xthl
jnz bytelp; goto bytelp
pop H; restore dummy
pop H; restore CRC address
; CRC = CRC ^ 0FFFFFFFFh
mov A,B;
xri 0xFF;
mov M,A;
inx H;
mov A,C;
xri 0xFF;
mov M,A;
inx H;
mov A,D;
xri 0xFF;
mov M,A;
inx H;
mov A,E;
xri 0xFF;
mov M,A;
pop H; restore context
pop D
pop B
pop PSW
ret
exemple: lxi sp,2400H
lxi H, ADDR
mvi A, 0AAh
sta 01000h
mvi A, 055h
sta 01001h
mvi A, 004h
sta 01002h
mvi A, 0A5h
sta 01003h
mvi A, 0FFh
sta 01004h
call tstshf
end: jmp end
ADDR: db 00h, 10h
; tstshf: test the hardware shifter
; H is a pointer to this structure :
; (+00) = X
; (+01) = Y
; (+02) = shift value
; (+03) = test value
; (+04) = result (0 = OK, 1 = KO)
tstshf: push PSW
push H
push D
mov E,M
inx H
mov D,M
xchg
mov A,M
out 004h
inx H
mov A,M
out 004h
inx H
mov A,M
out 002h
inx H
in 003h
xra M
jz tst1
mvi A,001h
tst1: inx H
mov M,A
pop D
pop H
pop PSW
ret
exemple: lxi sp,2400H
lxi H, ADDR
lxi B, 01234h
lxi D, 04567h
mvi A, 001h
sta 01000h
mvi A, 080h
sta 01001h
call crc32
end: jmp end
ADDR: db 00H, 10H
num: db 2H, 0H
crc: db 0,0,0,0
; crc32:
;
; crc = 0xffffffff
; for (;size > 0; size--) {
; crc = crc ^ *data++
; for (i = 8; i > 0; i--) {
; if (crc & 1)
; crc = (crc >> 1) ^ 0xEDB88320
; else
; crc = crc >> 1;
; }
; }
; crc = crc ^ 0xffffffff;
;
; HL => address of the parameters's list
; data addrL (+0), AddrH (+1)
; data SizeL (+2), SizeH (+3)
; crc dataL (+4), dataML(+5)
; crc dataMH(+6), dataH (+7)
crc32: push PSW; save context
push B
push D
push H
; load and push rom's address
mov A,M
mov E,A
inx H
mov A,M
mov D,A
inx H
; load and push rom's size
mov A,M
mov C,A
inx H
mov A,M
mov B,A
inx H
push H; save CRC address
push B; store size
xchg; put rom's address in H
; set crc to 0xffffffff
mvi B,0FFh
mvi C,0FFh
mvi D,0FFh
mvi E,0FFh
bytelp: mov A,M; read rom's data
inx H
push H
mvi H,8; rotate 8 times, i = 8
xra E; CRC = CRC ^ data
mov E,A
bitlp: mov A,E; if (crc & 1 == 0)
ani 1
jz rot1; goto rot1
; CRC = (CRC >> 1) ^ 0EDB88320h
; BBCCEEDD
mov A,B
rar
push PSW
xri 0EDh
mov B,A
pop PSW
mov A,C
rar
push PSW
xri 0B8h
mov C,A
pop PSW
mov A,D
rar
push PSW
xri 083h
mov D,A
pop PSW
mov A,E
rar
xri 020h
mov E,A
jmp ebitlp
; CRC = (CRC >> 1)
rot1: mov A,B
rar
mov B,A
mov A,C
rar
mov C,A
mov A,D
rar
mov D,A
mov A,E
rar
mov E,A
ebitlp: dcr H; if (--i > 0)
jnz bitlp; goto bitlp
pop H
xthl
dcx H
mov A,H; if (--size > 0)
ora L
xthl
jnz bytelp; goto bytelp
pop H; restore dummy
pop H; restore CRC address
; CRC = CRC ^ 0FFFFFFFFh
mov A,B;
xri 0FFh;
mov M,A;
inx H;
mov A,C;
xri 0FFh;
mov M,A;
inx H;
mov A,D;
xri 0FFh;
mov M,A;
inx H;
mov A,E;
xri 0FFh;
mov M,A;
pop H; restore context
pop D
pop B
pop PSW
ret
Citation de: HerosSuperMan le Dimanche 01 Septembre 2013, 12:33:09 PM
normalement je viens avec Eko c'est sur (samedi et dimanche donc)
et ptre Harpinos qui devait voir\confirmer