Last modified by Max on 2025/03/02 15:18

From version 2.38
edited by Max
on 2025/02/25 14:31
Change comment: (Autosaved)
To version 2.39
edited by Max
on 2025/02/25 14:36
Change comment: (Autosaved)

Summary

Details

Page properties
Content
... ... @@ -579,24 +579,24 @@
579 579  == 022: Transfer the read block of non-volatile memory from the buffer to the bus ==
580 580  
581 581  (% class="wikigeneratedid" %)
582 -Код команды 022, данная команда обеспечивает передачу буфера энергонезависимой памяти в регистр DR для считывания.
582 +Command code 022, this command ensures that the non-volatile memory buffer is transferred to the DR register for reading.
583 583  
584 584  (% class="wikigeneratedid" %)
585 -Пример программы
585 +Example program
586 586  
587 587  {{code language="assembler"}}
588 -AZ$CSR = 177220; регистр команд и состояния (CSR)
589 -AZ$DR = 177222; регистр данных (DR)
588 +AZ$CSR = 177220; command and status register (CSR)
589 +AZ$DR = 177222; data register (DR)
590 590  
591 591  
592 -; trap 50 - cброс AZ
592 +; trap 50 - reset AZ
593 593  ; результат в R1 =0 ok
594 594  AZreset: MOV #AZ$CSR,R1
595 -1$: CLR (R1); Пошлем команду "Сброс"
596 - TSTB (R1); Проверим готовность контроллера
597 - BPL 1$; Если не готов, сбрасываем еще
598 - ; раз и проверяем снова
599 - TST (R1); Проверим на ошибку,
595 +1$: CLR (R1); Send the "Reset" command
596 + TSTB (R1); Check the controller readiness
597 + BPL 1$; If not ready, reset again
598 +; once and check again
599 + TST (R1); Check for an error,
600 600   BMI 0ERR$
601 601   CLR R1
602 602   return
... ... @@ -605,30 +605,30 @@
605 605   return
606 606  
607 607  
608 -; trap 54 - чтение энергонезависимой памяти блока 1 EEPROM в буфер с адреса ADREEPROMMEM
609 -; результат R3 - адрес, если R3=0 ошибка
610 -; статус чтения в R1 0 - ok
611 -; 1 - размер не соответствует сохраненному
612 -; 2 - oшибка версии
613 -; 3 - oшибка контрольной суммы
608 +; trap 54 - reading non-volatile memory of block 1 EEPROM to the buffer from the address ADREEPROMMEM
609 +; result R3 - address, if R3=0 error
610 +; read status in R1 0 - ok
611 +; 1 - size does not match saved
612 +; 2 - version error
613 +; 3 - checksum error
614 614  ReadEEPROM: push R2
615 - call AZreset; сбросим
615 + call AZreset; reset
616 616   tst R1
617 617   bne 0ERR$
618 618  ; теперь читаем
619 619   MOV #AZ$CSR,R1
620 - mov #21,(R1); считать блок 1 энергонезависимой памяти в буфер
621 -0$: TSTB (R1); проверяем результат выполнения
622 - BPL 0$; ждем
623 - mov #22,(R1); отдать на шину считанный блок энергонезависимой памяти из буфера
624 -1$: TSTB (R1); проверяем результат выполнения
625 - BPL 1$; ждем
626 - TST (R1)+; инкрементируем
620 + mov #21,(R1); read block 1 of non-volatile memory into buffer
621 +0$: TSTB (R1); check execution result
622 + BPL 0$; wait
623 + mov #22,(R1); send read block of non-volatile memory from buffer to bus
624 +1$: TSTB (R1); check execution result
625 + BPL 1$; wait
626 + TST (R1)+; increment
627 627   mov #ADREEPROMMEM,R3
628 - mov #256.,R2; читаем 256. слов; первое слово - результат чтения
629 -2$: mov (R1),(R3)+; читаем блок слов в память
628 + mov #256.,R2; read 256. words; first word is reading result
629 +2$: mov (R1),(R3)+; read block of words into memory
630 630   sob R2,2$
631 - mov #ADREEPROMMEM,R3; успешно
631 + mov #ADREEPROMMEM,R3; successful
632 632   mov (R3),R1
633 633   br 0END$
634 634  0ERR$: CLR R3
... ... @@ -636,12 +636,11 @@
636 636   return
637 637  {{/code}}
638 638  
639 -очевидно, после считывания памяти необходимо проверить код результата в первом слове - см расшифровку кодов ошибок
639 +obviously, after reading the memory, it is necessary to check the result code in the first word - see the decoding of error codes
640 640  \\Примеры возвращаемых данных по командам
641 641  \\последовательная подача команды 021 и затем 022 позволит считать 256. слов
642 642  из энергонезависимой памяти
643 643  **Внимание! **первое слово это будет статус успешности чтения
644 -
645 645  
646 646  * 0 - ok
647 647  * 1 - размер не соответствует сохраненному