3 января 2014, 10:05:08 AM   # 1
 
 
Сообщений: 37
Цитировать по имени
цитировать ответ
по умолчанию Re: retromining на z80

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Любой заинтересованный в retromining?

Несколько лет назад я реализовал алгоритм SHA-256 на моем TI-83. Я также осуществил AES-128-CFB. Я отказался от RSA и DSA из-за ограничений памяти, поэтому я никогда не создать полный набор сильных криптографических для TI-83 / z80. При всей заинтересованности в Bitcoin в эти дни, может быть, кто-то найдет мой SHA-256 код интересно (или я вернуться к нему --- хотя я лично считаю асимметричную криптографию или более сильный режим симметричного блока поинтереснее).

Если ~ 800 байт / сек от моих комментариев надежны, старый z80 должен делать ~ 7 ч / с, не так ли?

Код расчета:
Код:
; sha256up.z80 по timewave0
; 1twzU46whuMER6hhBPCGmdaLw8atyv9c4
;
; этот файл constains чистый, переносимый код z80,
; нет вызовов ROM TI-8x

; эта подпрограмма обновляет SHA256 хэш
; в Н0, чтобы H7 дали полный блок скопированный
; к началу WBUF
sha256update:

; Вторая часть графика сообщений (этап 1)
л.д. IX, WBUF + 64-4
LD C, 16-1
шаг 1: вкл IX
вкл IX ; IX отслеживает W (T)
вкл IX
вкл IX
вкл с ; счетчик ++

; строчная sigma_1
ЛД ч, (IX-8 + 2) ; повернуть 16 бит
LD л, (IX-8 + 3) ; как два байта
LD д, (IX-8 + 0) ; 0123 -> dehl
LD е, (IX-8 + 1)
LD B, 1
звоните rotrb ; один бит вправо
л.д. а, ч
LD (sigma_temp + 0 + 0), А ; все байты,
LD A, L ; получат операции XOR
LD (sigma_temp + 3 + 0), А ; позже должен
LD A, д ; быть последовательными
LD (sigma_temp + 6 + 0), А
л.д. а, е
LD (sigma_temp + 9 + 0), А

LD B, 2
звоните rotrb ; два бита вправо
л.д. а, ч
LD (sigma_temp + 0 + 1), ; все байты,
LD A, L ; получат операции XOR
LD (sigma_temp + 3 + 1), ; позже должен
LD A, д ; быть последовательными
LD (sigma_temp + 6 + 1),
л.д. а, е
LD (sigma_temp + 9 + 1),

л.д. ч, 0 ; сдвиг 8 бит
LD л, (IX-8 + 0) ; как байты
LD д, (IX-8 + 1)
LD е, (IX-8 + 2)
LD B, 2
вызов sharb ; еще два бита
л.д. а, ч
LD (sigma_temp + 0 + 2), ; все байты,
LD A, L ; получат операции XOR
LD (sigma_temp + 3 + 2), ; позже должен
LD A, д ; быть последовательными
LD (sigma_temp + 6 + 2),
л.д. а, е
LD (sigma_temp + 9 + 2),

LD HL, sigma_temp
LD A, (HL)
вкл гектолитров
XOR (гл)
вкл гектолитров
XOR (гл)
LD (IX + 0), А

вкл гектолитров
LD A, (HL)
вкл гектолитров
XOR (гл)
вкл гектолитров
XOR (гл)
LD (IX + 1),

вкл гектолитров
LD A, (HL)
вкл гектолитров
XOR (гл)
вкл гектолитров
XOR (гл)
LD (IX + 2),

вкл гектолитров
LD A, (HL)
вкл гектолитров
XOR (гл)
вкл гектолитров
XOR (гл)
LD (IX + 3),
; сделано с строчной sigma_1

; строчная sigma_0
ЛД ч, (IX-60 + 3) ; вращать 8 бит
LD л, (IX-60 + 0) ; как один байт
LD д, (IX-60 + 1)
LD е, (IX-60 + 2)
LD B, 1
slcb вызов ; один бит влево
л.д. а, ч
LD (sigma_temp + 0 + 0), А ; все байты,
LD A, L ; получат операции XOR
LD (sigma_temp + 3 + 0), А ; позже должен
LD A, д ; быть последовательными
LD (sigma_temp + 6 + 0), А
л.д. а, е
LD (sigma_temp + 9 + 0), А

л.д. а, е
LD E, D
LD д, л
ЛД л, ч
л.д. ч, ; hlde -> ehld
LD B, 3
звоните rotrb ; еще три бита
л.д. а, ч
LD (sigma_temp + 0 + 1), ; все байты,
LD A, L ; получат операции XOR
LD (sigma_temp + 3 + 1), ; позже должен
LD A, д ; быть последовательными
LD (sigma_temp + 6 + 1),
л.д. а, е
LD (sigma_temp + 9 + 1),

ЛД ч, (IX-60 + 0)
LD л, (IX-60 + 1)
LD д, (IX-60 + 2)
LD е, (IX-60 + 3)
LD B, 3
вызов sharb ; еще три бита
л.д. а, ч
LD (sigma_temp + 0 + 2), ; все байты,
LD A, L ; получат операции XOR
LD (sigma_temp + 3 + 2), ; позже должен
LD A, д ; быть последовательными
LD (sigma_temp + 6 + 2),
л.д. а, е
LD (sigma_temp + 9 + 2),

LD HL, sigma_temp
LD A, (HL)
вкл гектолитров
XOR (гл)
вкл гектолитров
XOR (гл)
LD D, A

вкл гектолитров
LD A, (HL)
вкл гектолитров
XOR (гл)
вкл гектолитров
XOR (гл)
л.д. е, а

вкл гектолитров
LD A, (HL)
вкл гектолитров
XOR (гл)
вкл гектолитров
XOR (гл)
LD B, A

вкл гектолитров
LD A, (HL)
вкл гектолитров
XOR (гл)
вкл гектолитров
XOR (гл)

добавить, (IX + 3)
LD (IX + 3),
LD A, (IX + 2)
АЦП а, б
LD (IX + 2),
LD A, (IX + 1)
АДЦ а, е
LD (IX + 1),
LD A, (IX + 0)
АЦП A, D
LD (IX + 0), А

толчок IX

толчок IX
поп гектолитров
вкл гектолитров
вкл гектолитров
вкл гектолитров
л.д. де, 3-28
добавить IX, де
звоните add32 ; + = W_t-7

вкл гектолитров
вкл гектолитров
вкл гектолитров
л.д. де, 28-64
добавить IX, де
звоните add32 ; + = W_t-16

поп-IX

LD A, 63
ф с ; повторение?
JP н.д., step1
; сделано с графиком сообщений

; шаг 2 является простой копией, даже облегчили
; сохраняя [A-H] и H [0-7] вместе в памяти
LD HL, H0
л.д. де, ABUF
LD BC, 32
LDIR
; Ничего себе, это было легко

; шаг 3 является наибольшей частью алгоритма
XOR A ; начать с т = 0
LD (step3_t), A ; Счетчик step3_t
шаг 3:

; прописные sigma_1 е
л.д. IX, EBUF

ЛД ч, (IX + 3)
LD л, (IX + 0)
LD д, (IX + 1)
LD е, (IX + 2)
LD B, 2
slcb вызов ; нетто 6 бит вправо
л.д. а, ч
LD (sigma_temp + 0 + 0), А ; все байты,
LD A, L ; получат операции XOR
LD (sigma_temp + 3 + 0), А ; позже должен
LD A, д ; быть последовательными
LD (sigma_temp + 6 + 0), А
л.д. а, е
LD (sigma_temp + 9 + 0), А

л.д. а, е
LD E, D
LD д, л
ЛД л, ч
л.д. ч,
LD B, 3
slcb вызов ; 6 + 8-3 бит вправо
л.д. а, ч
LD (sigma_temp + 0 + 1), ; все байты,
LD A, L ; получат операции XOR
LD (sigma_temp + 3 + 1), ; позже должен
LD A, д ; быть последовательными
LD (sigma_temp + 6 + 1),
л.д. а, е
LD (sigma_temp + 9 + 1),

Экс-де, гл
LD B, 2
slcb вызов ; 6 + 8-3 + 16-2
л.д. а, ч
LD (sigma_temp + 0 + 2), ; все байты,
LD A, L ; получат операции XOR
LD (sigma_temp + 3 + 2), ; позже должен
LD A, д ; быть последовательными
LD (sigma_temp + 6 + 2),
л.д. а, е
LD (sigma_temp + 9 + 2),

LD HL, sigma_temp
LD A, (HL)
вкл гектолитров
XOR (гл)
вкл гектолитров
XOR (гл)
LD (TEMP1 + 0), А

вкл гектолитров
LD A, (HL)
вкл гектолитров
XOR (гл)
вкл гектолитров
XOR (гл)
LD (TEMP1 + 1),

вкл гектолитров
LD A, (HL)
вкл гектолитров
XOR (гл)
вкл гектолитров
XOR (гл)
LD (TEMP1 + 2),

вкл гектолитров
LD A, (HL)
вкл гектолитров
XOR (гл)
вкл гектолитров
XOR (гл)
LD (TEMP1 + 3),
; сделано с прописной sigma_1 е

LD IX, HBUF + 3
LD HL, TEMP1 + 3
звоните add32 ; Т_1 + = HBUF

LD IX, WBUF + 3
LD A, (step3_t)
LD B, 0
ОАС
гх б ; * = 2
ОАС
гх б ; * = 2
л.д. с, а
добавить IX, бв
LD HL, TEMP1 + 3
звоните add32 ; Т_1 + = W_t

LD IX, Karray + 3
добавить IX, бв
LD HL, TEMP1 + 3
звоните add32 ; Т_1 + = K_t

; использовать XOR (г е и (F XOR г)) для Ch
л.д. IX, EBUF

LD A, (IX + 8 + 0) ; GBUF
XOR (IX + 4 + 0) ; исключающее FBUF
и (IX + 0 + 0) ; и EBUF
XOR (IX + 8 + 0) ; исключающее GBUF
LD D, A
LD A, (IX + 8 + 1) ; GBUF
XOR (IX + 4 + 1) ; исключающее FBUF
и (IX + 0 + 1) ; и EBUF
XOR (IX + 8 + 1) ; исключающее GBUF
л.д. е, а
LD A, (IX + 8 + 2) ; GBUF
XOR (IX + 4 + 2) ; исключающее FBUF
и (IX + 0 + 2) ; и EBUF
XOR (IX + 8 + 2) ; исключающее GBUF
LD B, A
LD A, (IX + 8 + 3) ; GBUF
XOR (IX + 4 + 3) ; исключающее FBUF
и (IX + 0 + 3) ; и EBUF
XOR (IX + 8 + 3) ; исключающее GBUF

добавить, (IX-20 + 3)
LD (IX-20 + 3),
LD A, (IX-20 + 2)
АЦП а, б
LD (IX-20 + 2),
LD A, (IX-20 + 1)
АДЦ а, е
LD (IX-20 + 1),
LD A, (IX-20 + 0)
АЦП A, D
LD (IX-20 + 0), А ; TEMP1 + = Ch

; прописные sigma_0 из
л.д. IX, ABUF

ЛД ч, (IX + 0)
LD л, (IX + 1)
LD д, (IX + 2) ; 0123 -> hlde
LD е, (IX + 3)
LD B, 2
звоните rotrb ; два бита вправо
л.д. а, ч
LD (sigma_temp + 0 + 0), А ; все байты,
LD A, L ; получат операции XOR
LD (sigma_temp + 3 + 0), А ; позже должен
LD A, д ; быть последовательными
LD (sigma_temp + 6 + 0), А
л.д. а, е
LD (sigma_temp + 9 + 0), А

л.д. а, е
LD E, D
LD д, л
ЛД л, ч
л.д. ч,
LD B, 3
звоните rotrb ; 2 + 8 + 3
л.д. а, ч
LD (sigma_temp + 0 + 1), ; все байты,
LD A, L ; получат операции XOR
LD (sigma_temp + 3 + 1), ; позже должен
LD A, д ; быть последовательными
LD (sigma_temp + 6 + 1),
л.д. а, е
LD (sigma_temp + 9 + 1),

л.д. а, е
LD E, D
LD д, л
ЛД л, ч
л.д. ч,
LD B, 1
звоните rotrb ; 2 + 8 + 3 + 8 + 1
л.д. а, ч
LD (sigma_temp + 0 + 2), ; все байты,
LD A, L ; получат операции XOR
LD (sigma_temp + 3 + 2), ; позже должен
LD A, д ; быть последовательными
LD (sigma_temp + 6 + 2),
л.д. а, е
LD (sigma_temp + 9 + 2),

LD HL, sigma_temp
LD A, (HL)
вкл гектолитров
XOR (гл)
вкл гектолитров
XOR (гл)
LD (TEMP2 + 0), А

вкл гектолитров
LD A, (HL)
вкл гектолитров
XOR (гл)
вкл гектолитров
XOR (гл)
LD (TEMP2 + 1),

вкл гектолитров
LD A, (HL)
вкл гектолитров
XOR (гл)
вкл гектолитров
XOR (гл)
LD (TEMP2 + 2),

вкл гектолитров
LD A, (HL)
вкл гектолитров
XOR (гл)
вкл гектолитров
XOR (гл)
LD (TEMP2 + 3),
; сделано с прописной sigma_0 из

; использовать (а и б) или (с и (а или б)) для Maj
; IX по-прежнему указывает на ABUF

LD A, (IX + 0 + 0) ; ABUF
или (IX + 4 + 0) ; или BBUF
и (IX + 8 + 0) ; и CBUF
LD D, A
LD A, (IX + 0 + 0) ; ABUF
и (IX + 4 + 0) ; и BBUF
или г
LD D, A
LD A, (IX + 0 + 1) ; ABUF
или (IX + 4 + 1) ; или BBUF
и (IX + 8 + 1) ; и CBUF
л.д. е, а
LD A, (IX + 0 + 1) ; ABUF
и (IX + 4 + 1) ; и BBUF
или е
л.д. е, а
LD A, (IX + 0 + 2) ; ABUF
или (IX + 4 + 2) ; или BBUF
и (IX + 8 + 2) ; и CBUF
LD B, A
LD A, (IX + 0 + 2) ; ABUF
и (IX + 4 + 2) ; и BBUF
или б
LD B, A
LD A, (IX + 0 + 3) ; ABUF
или (IX + 4 + 3) ; или BBUF
и (IX + 8 + 3) ; и CBUF
л.д. с, а
LD A, (IX + 0 + 3) ; ABUF
и (IX + 4 + 3) ; и BBUF
или с

добавить, (IX + 32 + 3)
LD (IX + 32 + 3),
LD A, (IX + 32 + 2)
АЦП а, б
LD (IX + 32 + 2),
LD A, (IX + 32 + 1)
АДЦ а, е
LD (IX + 32 + 1),
LD A, (IX + 32 + 0)
АЦП A, D
LD (IX + 32 + 0), А ; TEMP2 + = Maj

л.д. де, HBUF + 3 ; Н = G, G = F, F = Е,
LD HL, GBUF + 3 ; Е = D, D = С, С = В,
LD BC, 32 ; В = А, А = Т1
LDDR

LD HL, EBUF + 3
LD IX, TEMP1 + 3
звоните add32 ; Е + = Т1

LD HL, ABUF + 3
LD IX, TEMP2 + 3
звоните add32 ; А + = Т2

LD A, (step3_t)
вкл
LD (step3_t), A
ср 64 ; петля 64 раза
JP с, step_3

; часть 4 все 32-битовое дополнение
LD HL, H7 + 3
LD IX, HBUF + 3
звоните add32

LD IX, GBUF + 3
декабре гектолитров ; запомнить add32
звоните add32 ; делает гл - = 3

LD IX, FBUF + 3
декабре гектолитров
звоните add32

LD IX, EBUF + 3
декабре гектолитров
звоните add32

LD IX, DBUF + 3
декабре гектолитров
звоните add32

LD IX, CBUF + 3
декабре гектолитров
звоните add32

LD IX, BBUF + 3
декабре гектолитров
звоните add32

LD IX, ABUF + 3
декабре гектолитров
звоните add32
; конец не очень трудная часть 4

RET
; конец sha256update подпрограмму


; подпрограмма для выполнения 32-битный круговой
; правый сдвиг hlde итерации раза б
rotrb: SRL ч
р-р л
р-р д
р-р д
младший н.д., ncrce
набор 7, ч
ncrce: DJNZ rotrb
RET
; результат в hlde


; подпрограмма для выполнения 32-битной
; правый сдвиг hlde итерации раза б
sharb: SRL ч
р-р л
р-р д
р-р д
ncrh: DJNZ sharb
RET
; результат в hlde


; подпрограмма для выполнения 32-битный круговой
; сдвиг влево от hlde итерироваться раз б
slcb: ОАС е
гх д
гх л
ая ч
младший н.д., nclh
вкл е
nclh: DJNZ slcb
RET
; результат в hlde


; подпрограммы для выполнения 32-битного сложения
; добавляет (IX) к (гл)
; оба должны изначально указывать на LSB
add32: LD A, (HL)
добавить, (IX + 0) ; LSB
LD (HL), A
декабре гектолитров
LD A, (HL)
АЦП а, (IX-1) ; сложение с переносом
LD (HL), A
декабре гектолитров
LD A, (HL)
АЦП а, (IX-2)
LD (HL), A
декабре гектолитров
LD A, (HL)
АЦП а, (IX-3) ; MSB
LD (HL), A
RET
; изменения HL, и будут затерты


Str1: .db $ 04, $ AA, $ 00

; начальные значения
H0init: .db $ 6а, $ 09, $ е6, $ 67
H1init: .db $ бб, $ 67, $ ая, $ 85
H2init: .DB $ 3в, $ 6e, $ f3, $ 72
H3init: .db $ a5, $ 4f, $ f5, $ 3a
H4init: .DB $ 51, $ 0e, $ 52, $ 7F
H5init: .DB $ 9b, $ 05, $ 68, $ 8в
H6init: .DB $ 1е, $ 83, $ d9, $ аб
H7init: .db $ 5б, $ е0, $ кд, $ 19

; константы
Karray: .дБ $ 42, $ 8а, $ 2f, $ 98, $ 71, $ 37, $ 44, $ 91,
.дб $ b5, $ c0, $ фб, $ сравни, $ e9, $ b5, $ дб, $ a5,
.дБ $ 39, $ 56, $ с2, $ 5b, $ 59, $ f1, $ 11, $ f1,
.дБ $ 92, $ 3f, $ 82, $ а4, $ AB, $ 1c, $ 5e, $ d5,
.дБ $ d8, $ 07, $ аа, $ 98, $ 12, $ 83, $ 5b, $ 01,
.дБ $ 24, $ 31, $ 85, $ быть, $ 55, $ 0c, $ 7d, $ с3,
.дб $ 72, $ быть, $ 5d, $ 74, $ 80, $ де, $ b1, $ к,
.дб $ 9b, $ DC, $ 06, $ a7, $ c1, $ 9b, $ f1, $ 74,
.дб $ e4, $ 9b, $ 69, $ c1, $ эфф, $ быть, $ 47, $ 86,
.дб $ 0f, $ c1, $ 9г, $ c6, $ 24, $ 0C, $ a1, $ куб.см,
.дБ $ 2d, $ E9, $ 2c, $ 6f, $ 4а, $ 74, $ 84, $ аа,
.дб $ 5с, $ b0, $ a9, $ постоянного тока, $ 76, $ f9, $ 88, $ да,
.дБ $ 98, $ 3e, $ 51, $ 52, $ а8, $ 31, $ с6, $ 6d,
.дб $ b0, $ 03, $ 27, $ c8, $ бф, $ 59, $ 7F, $ c7,
.дб $ c6, $ е0, $ 0B, $ f3, $ d5, $ a7, $ 91, $ 47,
.дБ $ 06, $ са, $ 63, $ 51, $ 14, $ 29, $ 29, $ 67,
.дБ $ 27, $ b7, $ 0A, $ 85, $ 2е, $ 1b, $ 21, $ 38,
.дБ $ 4d, $ 2c, $ 6d, $ FC, $ 53, $ 38, $ 0D, $ 13,
.дБ $ 65, $ 0a, $ 73, $ 54, $ 76, $ 6а, $ 0a, $ бб,
.дБ $ 81, $ с2, $ с9, $ 2е, $ 92, $ 72, $ 2c, $ 85,
.дБ $ а2, $ Б.Ф., $ E8, $ a1, $ а8, $ 1а, $ 66, $ 4b,
.дБ $ с2, $ 4b, $ 8b, $ 70, $ с7, $ 6c, $ 51, $ а3,
.дБ $ d1, $ 92, $ E8, $ 19, $ d 6, $ 99, $ 06, $ 24,
.дб $ f4, $ 0e, $ 35, $ ​​85, $ 10, $ 6а, $ a0, $ 70,
.дБ $ 19, $ а4, $ с1, $ 16, $ 1е, $ 37, $ 6c, $ 08,
.дБ $ 27, $ 48, $ 77, $ 4c, $ 34, $ b0, $ BC, $ b5,
.дБ $ 39, $ 1c, $ 0c, $ b3, $ 4e, $ d8, $ аа, $ 4а,
.дБ $ 5b, $ 9с, $ CA, $ 4f, $ 68, $ 2е, $ 6f, $ f3,
.дб $ 74, $ 8х, $ 82, $ Й, $ 78, $ a5, $ 63, $ 6f,
.дб $ 84, $ c8, $ 78, $ 14, $ 8в, $ c7, $ 02, $ 08,
.дб $ 90, $ быть $ и далее, $ фа, $ a4, $ 50, $ 6c, $ Е.Б.,
.дБ $ быть, $ f9, $ а3, $ f7, $ с6, $ 71, $ 78, $ f2

Код интерфейса:
Код:
; sha256.z80 по timewave0
; 1twzU46whuMER6hhBPCGmdaLw8atyv9c4
;
; см FIPS PUB 180-2
;
; ~ 800 байт / сек для очень больших
; программы, как измерено на VTI
;
; проверяется для случайных моделей байт длины:
; 0-10, 50-70, 255-257, 16383-16385, 19000

.СПИСОК
_chkfindsym .фас $ 442A
_findsym .фас $ 442E
_zeroop1 .фас $ 428E
_errundefined .фас $ 467B
_errsyntax .фас $ 466C
_createstrng .фас $ 4472
_delvar .фас $ 44AA

OP1 .фас $ 8039

progobj .фас $ 05
strngobj .фас $ 04

блок .фас $ 8265 ; магическое число
extra_bytes .фас блок + 2
H0 .фас extra_bytes + 1
H1 .фас Н0 + 4
H2 .фас H1 + 4
H3 .фас Н2 + 4
H4 .фас Н3 + 4
H5 .фас H4 + 4
H6 .фас Н5 + 4
H7 .фас Н6 + 4
; Начало переменных, которые не могут быть перемещены в памяти
TEMP1 .фас Н7 + 4
ABUF .фас TEMP1 + 4
BBUF .фас ABUF + 4
CBUF .фас BBUF + 4
DBUF .фас CBUF + 4
EBUF .фас DBUF + 4
FBUF .фас EBUF + 4
GBUF .фас FBUF + 4
HBUF .фас GBUF + 4
TEMP2 .фас HBUF + 4
; конец переменных, которые не могут быть перемещены в памяти
WBUF .фас TEMP2 + 4
sigma_temp .фас WBUF + (4 * 64)
DataPtr .фас sigma_temp + (3 * 4)
step3_t .фас DataPtr + 2
размер .фас step3_t + 1

.орг $ 9327 ; магическое число

вызов clearvars ; четкие переменные

; основанный на коде из повидла Пэт Milheron
звоните _zeroop1
LD HL, Str1
л.д. де, OP1
LD BC, 3
LDIR
звоните _findsym ; поиск Str1
JP с, _errundefined

и $ 1F
ф strngobj ; действительно ли это sring?
JP Н.З., _errsyntax

LD HL, op1
LD (HL), progobj
вкл гектолитров
LD A, (де) ; размер имени
л.д. с, а
LD B, 0
вкл де
вкл де ; (Де) это имя PTR
Экс-де, гл
LDIR ; имя для op1

звоните _chkfindsym ; Размер PTR -> де
JP с, _errundefined
; конец хлюпать на основе кода

Экс-де, гл
LD е, (гл) ; LSB -> е
вкл гектолитров
LD д, (гл) ; MSB -> d
вкл гектолитров
л.д. (размер), де
LD (DataPtr), гл

LD B, 6
XOR A
div64: SRL д
р-р д
р-р ; сохранить остаток
DJNZ div64
SRL
SRL

л.д. (блок), де ; # Из _whole_ блоков
LD (extra_bytes), A

LD HL, H0init
л.д. де, H0
LD BC, 64
LDIR

do_hash: ; ярлык или совет?
LD HL, (блок)
XOR A
ф ч
младший Н.З., no_check_l
ф л
младший г, do_padding
no_check_l:

декабре гектолитров
LD (блок), гл ; block--
LD HL, (DataPtr)
л.д. де, WBUF
LD BC, 64
LDIR ; копия блока
LD (DataPtr), гл ; DataPtr + 64 =

вызов sha256update
младший do_hash

do_padding:
LD A, (extra_bytes)
LD B, 0
л.д. с, а
LD HL, (DataPtr)
л.д. де, WBUF
ф 0
младший г, no_cpy
LDIR
no_cpy: Экс-де, гл
LD (HL), $ 80
вкл гектолитров
ср 63
младший г, need_another_block

load_0s:
нег
добавить, 63 ; 64-1-extra_bytes
LD B, A
zero_fill:
LD (HL), 0
вкл гектолитров
DJNZ zero_fill

ф 8 ; комната для длины?
младший с, need_another_block
; так как длина сообщения не может быть больше
; 16 бит, я в безопасности повторно использовать 32-битный циклический сдвиг
; из хэш-кода для умножения на 8
л.д. де (размер)
LD HL, $ 0000 ; обеспечить 0s сдвиг
LD B, 3
slcb вызов
л.д. а, е
LD (WBUF + 63), A
LD A, д
LD (WBUF + 62), A
LD A, L
LD (WBUF + 61), A

вызов sha256update
младший сделал

need_another_block:
вызов sha256update
XOR A
LD HL, WBUF
JR load_0s ; сделать еще один блок


; назвать этот парень, когда мы сделали хэширование
сделанный: звоните _zeroop1
LD HL, Str1
л.д. де, OP1
LD BC, 3
LDIR
звоните _chkfindsym
звоните _delvar
LD HL, 2 * 256/8
звоните _createstrng ; воссоздать str1
вкл де
LD B, 256/8
LD HL, H0-1
магазин: вкл гектолитров
LD A, (HL)
нажмите аф
и $ F0
SRL
SRL
SRL
SRL
вызов store_hex ; высокая клев

поп-аф
и $ 0F
вызов store_hex ; низкое откусывание

DJNZ магазин

вызов clearvars

RET
; конец проделанной подпрограммы


.включают "sha256up.z80" ; забавный материал


; подпрограмма, чтобы очистить все переменные
clearvars:
LD HL, блок
XOR A
LD (HL), A
л.д. де, блок + 1
LD BC, размер-блок ; последний вар - начало
LDIR
RET
; конец clearvars подпрограммы


; подпрограмма для хранения символа хэша
store_hex:
вкл де
ф $ A
младший н.д., письмо
добавить, «0»
л.д. (де),
RET
Письмо: добавить, 'A' - $ A
л.д. (де),
RET
; конец шестигранного характера магазин подпрограмма

.конец

timewave0 сейчас офлайн Пожаловаться на timewave0   Ответить с цитированием Мультицитирование сообщения от timewave0 Быстрый ответ на сообщение timewave0


Как заработать Биткоины?
Без вложений. Не майнинг.


3 января 2014, 11:38:09 AM   # 2
 
 
Сообщения: 672
Цитировать по имени
цитировать ответ
по умолчанию Re: retromining на z80

Получил 1806 Биткоинов
Реальная история.





Он никогда не даст ROI.   
HellDiverUK сейчас офлайн Пожаловаться на HellDiverUK   Ответить с цитированием Мультицитирование сообщения от HellDiverUK Быстрый ответ на сообщение HellDiverUK

3 января 2014, 6:25:51 PM   # 3
 
 
Сообщения: 324
Цитировать по имени
цитировать ответ
по умолчанию Re: retromining на z80

Это лучшее, что я видел весь день. Вы, вероятно, только один, что бы определить приращение нагрузки и повторить в моем нике.

Вы должны были бы два звонка в нонс используя свой SHA-256 функцию право? Таким образом, это может быть ближе к 3 ч / с. Я не читал достаточно близко, чтобы увидеть, если вы охвачены этим.

Что Mhz делает ваш TI работать на? У меня TRS-80 Model 4 здесь где-то с 4.77Mhz Z80 в нем. Я не знаю, если я до сих пор на ассемблере диски или что-нибудь Тхо. getwork достаточно просто реализовать через RS-232, так получить работу на z80 должен быть торт.

dentldir сейчас офлайн Пожаловаться на dentldir   Ответить с цитированием Мультицитирование сообщения от dentldir Быстрый ответ на сообщение dentldir

3 января 2014, 7:16:37 PM   # 4
 
 
Сообщений: 37
Цитировать по имени
цитировать ответ
по умолчанию Re: retromining на z80

Это лучшее, что я видел весь день. Вы, вероятно, только один, что бы определить приращение нагрузки и повторить в моем нике.

Вы должны были бы два звонка в нонс используя свой SHA-256 функцию право? Таким образом, это может быть ближе к 3 ч / с. Я не читал достаточно близко, чтобы увидеть, если вы охвачены этим.

Что Mhz делает ваш TI работать на? У меня TRS-80 Model 4 здесь где-то с 4.77Mhz Z80 в нем. Я не знаю, если я до сих пор на ассемблере диски или что-нибудь Тхо. getwork достаточно просто реализовать через RS-232, так получить работу на z80 должен быть торт.


Рад, что вам понравилось.

Я полагал, 800 байты / сек и заголовок блока 80 байт должен быть хэшированными один раз, то, что 32 байт хэша должен быть хэшированным, так что в общей сложности 112 байт. Если это все, что должен был сделать, было бы 7,14 ч / с, но он должен изменить указатели (или сделать глубокую копию) между ними и вновь сделать отступы. Мои цифры для "большой" количества данных, чтобы сделать заполнение и другие накладные расходы менее значительным, но обивка может быть оптимизирована для добычи полезных ископаемых, так как длина сообщения всегда фиксированные размеры.

Согласно Википедии, оригинальный TI-83 я эмулировать побежал его z80 на 6 МГц. Новые производные способны до 15 МГц.
timewave0 сейчас офлайн Пожаловаться на timewave0   Ответить с цитированием Мультицитирование сообщения от timewave0 Быстрый ответ на сообщение timewave0

6 января 2014, 3:48:01 AM   # 5
 
 
Сообщений: 58
Цитировать по имени
цитировать ответ
по умолчанию Re: retromining на z80

Попробуйте сольную добычу и, возможно, ваш счастливый
Hippievogel сейчас офлайн Пожаловаться на Hippievogel   Ответить с цитированием Мультицитирование сообщения от Hippievogel Быстрый ответ на сообщение Hippievogel

6 января 2014, 4:05:11 AM   # 6
 
 
Сообщения: 527
Цитировать по имени
цитировать ответ
по умолчанию Re: retromining на z80

Это довольно удивительная ретро вещь прямо там.
ScaryHash сейчас офлайн Пожаловаться на ScaryHash   Ответить с цитированием Мультицитирование сообщения от ScaryHash Быстрый ответ на сообщение ScaryHash

6 января 2014, 4:06:14 AM   # 7
 
 
Сообщения: 1316
Цитировать по имени
цитировать ответ
по умолчанию Re: retromining на z80

Это лучшее, что я видел весь день. Вы, вероятно, только один, что бы определить приращение нагрузки и повторить в моем нике.

Вы должны были бы два звонка в нонс используя свой SHA-256 функцию право? Таким образом, это может быть ближе к 3 ч / с. Я не читал достаточно близко, чтобы увидеть, если вы охвачены этим.

Что Mhz делает ваш TI работать на? У меня TRS-80 Model 4 здесь где-то с 4.77Mhz Z80 в нем. Я не знаю, если я до сих пор на ассемблере диски или что-нибудь Тхо. getwork достаточно просто реализовать через RS-232, так получить работу на z80 должен быть торт.



У меня есть модель один 1,77 мГц в подвале. О 1 хэш второй, вероятно, ??
Littleshop сейчас офлайн Пожаловаться на Littleshop   Ответить с цитированием Мультицитирование сообщения от Littleshop Быстрый ответ на сообщение Littleshop

6 января 2014, 9:04:38 AM   # 8
 
 
Сообщений: 42
Цитировать по имени
цитировать ответ
по умолчанию Re: retromining на z80

Это вполне возможно, самая крутая вещь, которую я видел до сих пор в этом году !!!
chadgroover сейчас офлайн Пожаловаться на chadgroover   Ответить с цитированием Мультицитирование сообщения от chadgroover Быстрый ответ на сообщение chadgroover



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW