Или такой еще вопрос, при сохранении через оператор SAVE там каким принципом идет выгрузка контрольной суммы? Может быть через этот оператор есть какие-то лазейки?
Или такой еще вопрос, при сохранении через оператор SAVE там каким принципом идет выгрузка контрольной суммы? Может быть через этот оператор есть какие-то лазейки?
Группа в ВК, посвященная кассетным версиям игр для спектрума
В коллекции:Plazma-128K (YM+TR-DOS), Кворум 128+, Эксперт-006, Квант V3.а, Квант (Didaktik), Компаньон-2 (V2.2), Radon Plus, Урал 8-64К, Byte, Хоббит, Байт, Compact-256, Profi-128K (Kramis V.02), Himac 48K
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
SAVE разве считает контрольную сумму? В заголовке такого поля нет.
JeRrS, Если очень хочется в бейсике, то XOR можно взять отсюда.
Вписав в цикле : LET k=FN X(k,peek(i))
Хорошо, может быть что именно в бейсике не особо то и нужно, если есть какой-то код, который можно вызвать через randomize usr при вызове которого я бы указал start и length в памяти где нужно произвести расчет контрольной суммы?
Группа в ВК, посвященная кассетным версиям игр для спектрума
В коллекции:Plazma-128K (YM+TR-DOS), Кворум 128+, Эксперт-006, Квант V3.а, Квант (Didaktik), Компаньон-2 (V2.2), Radon Plus, Урал 8-64К, Byte, Хоббит, Байт, Compact-256, Profi-128K (Kramis V.02), Himac 48K
С передачей параметров видится что-то типа такого:
в нулевой строке после рем процедура подсчета контрольной суммыКод:0 REM ........ 10 POKE (6+256*PEEK(23636)+PEEK(23635),Start-INT(Start/256)*256 20 POKE (7+256*PEEK(23636)+PEEK(23635),INT(Start/256) 30 POKE (9+256*PEEK(23636)+PEEK(23635),Start-INT(Lenght/256)*256 40 POKE (10+256*PEEK(23636)+PEEK(23635),INT (Lenght/256) 50 LET CRC = INT USR (5+256*PEEK(23636)+PEEK(23635)
Код:ld hl,0 ;тут будет адрес начала ld bc,0 ;тут длина блока .... ;сам алгоритм (регистры IY и I не должны портится) на выходе в регистре BC должен быть результат
Reobne(18.03.2022)
Алгоритм (втупую):
Может и накосячил где.Код:ld a,255 loop: ld d,(hl) xor d inc hl dec bc ld e,a ld a,b or c ld a,e jr nz,loop ld c,a ret![]()
В правильно заданном вопросе содержится половина ответа
Упаковал всё, что сказали предыдущие два товарища, в одну строку, в определяемую функцию. Строка 1 должна быть первой в программе.
Вызывать функцию надо так: FN x(start,length)
В 10-й строке CLEAR для прикола. Чтобы было очевидно куда можно писать CLEAR.
В 20-й строке пример вызова функции, для подсчёта контрольной суммы экрана. В данном виде пустого, ответ должен получиться 255.
JeRrS(18.03.2022)
Reobne, О - Отлично) то что нужно. Я правильно понимаю что я ограничен тем что нельзя заполнять данные свыше чем 65000?
Группа в ВК, посвященная кассетным версиям игр для спектрума
В коллекции:Plazma-128K (YM+TR-DOS), Кворум 128+, Эксперт-006, Квант V3.а, Квант (Didaktik), Компаньон-2 (V2.2), Radon Plus, Урал 8-64К, Byte, Хоббит, Байт, Compact-256, Profi-128K (Kramis V.02), Himac 48K
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)