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

From version 2.93
edited by Max
on 2025/02/25 18:34
Change comment: There is no comment for this version
To version 2.87
edited by Max
on 2025/02/25 18:07
Change comment: (Autosaved)

Summary

Details

Page properties
Content
... ... @@ -1639,34 +1639,34 @@
1639 1639  
1640 1640  = Hall of Fame API Command Block =
1641 1641  
1642 -This block of commands is intended for interaction with the server [[Hall of Fame>>https://forum.maxiol.com/index.php?showtopic=5642]]
1642 +Данный блок команд предназначен для взаимодействия с сервером [[Hall of Fame>>https://forum.maxiol.com/index.php?showtopic=5642]]
1643 1643  
1644 1644  == **025: Инициализация Hall of Fame (HOF)** ==
1645 1645  
1646 -Command code 025, this command establishes a connection to the Hall of Fame server, initializes the encrypted tunnel and prepares the API for work.
1646 +Код команды 025,  данная команда устанавливает соединение с сервером Hall of Fame, инициализирует шифрованный тоннель и подготавливает API к работе.
1647 1647  
1648 1648  Example program:
1649 1649  
1650 1650  {{code language="assembler"}}
1651 -AZ$CSR = 177220 ; command and status register (CSR)
1652 -AZ$DR = 177222 ; data register (DR)
1651 +AZ$CSR = 177220 ; регистр команд и состояния (CSR)
1652 +AZ$DR = 177222 ; регистр данных (DR)
1653 1653  
1654 -; buffers
1655 -SNDBUF: .BLKW 256. ; send buffer
1656 -RCVBUF: .BLKW 256. ; receive buffer
1654 +; буфера
1655 +SNDBUF: .BLKW 256. ; буфер передачи
1656 +RCVBUF: .BLKW 256. ; буфер приема ответа
1657 1657  SIDMEM: .BLKB 34. ; SID
1658 -SIDCST: .ASCII \{"SID":"\ ; SID header
1658 +SIDCST: .ASCII \{"SID":"\ ; заголовок SID
1659 1659   .even
1660 1660  
1661 -HOFINI: ; HOF initialization
1662 - ; The result is a JSON response:
1663 - ; {"SID":"session hash","RESULT":"OK"}
1664 - ; or an error:
1665 - ; {"RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
1666 - ; {"RESULT":"ERROR","DESCRIPTION":"CONNECTION_ERROR"}
1667 - ; The result is placed in SNDBUF
1668 - ; R5 indicates success: 1 = SID exists, 0 = no SID
1669 -
1661 +HOFINI: ; инициализация HOF
1662 + ;результатом является такой JSON
1663 + ;{"SID":"хеш сессии","RESULT":"OK"}
1664 + ;или ошибка
1665 + ;{"RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
1666 + ;{"RESULT":"ERROR","DESCRIPTION":"CONNECTION_ERROR"}
1667 + ; результат помещается в SNDBUF
1668 + ; в R5 фиксация успешности - =1 есть SID, =0 нет SID
1669 +
1670 1670   mov R5, -(SP)
1671 1671   mov R4, -(SP)
1672 1672   mov R3, -(SP)
... ... @@ -1674,29 +1674,29 @@
1674 1674   mov R1, -(SP)
1675 1675   mov R0, -(SP)
1676 1676  
1677 - mov #3,R5 ; number of attempts
1677 + mov #3,R5 ; количество попыток
1678 1678  
1679 1679  220$: mov #AZ$CSR,R1
1680 - clr (R1) ; Send "Reset" command
1681 -221$: tstb (R1) ; Check controller readiness
1682 - bpl 221$ ; If not ready, wait
1680 + clr (R1) ; Пошлем команду "Сброс"
1681 +221$: tstb (R1) ; Проверим готовность контроллера
1682 + bpl 221$ ; Если не готов ждем
1683 1683  
1684 - mov #25,(R1) ; initialization - command 025
1685 -20$: tstb (R1) ; check execution result
1686 - bpl 20$ ; wait
1684 + mov #25,(R1) ; инициализация - команда 025
1685 +20$: tstb (R1) ; проверяем результат выполнения
1686 + bpl 20$ ; ждем
1687 1687  
1688 - ; Retrieve the result
1689 - mov #22,(R1) ; output the read memory block from buffer to the bus
1690 -21$: tstb (R1) ; check execution result
1691 - bpl 21$ ; wait
1692 - tst (R1)+ ; increment
1688 + ; получим результат
1689 + mov #22,(R1) ; отдать на шину считанный блок памяти из буфера
1690 +21$: tstb (R1) ; проверяем результат выполнения
1691 + bpl 21$ ; ждем
1692 + tst (R1)+ ; инкрементируем
1693 1693   mov #SNDBUF,R3
1694 - mov #256.,R2 ; read 256 words; first word is the read result
1695 -22$: mov (R1),(R3)+ ; read block of words into memory
1694 + mov #256.,R2 ; читаем 256. слов; первое слово - результат чтения
1695 +22$: mov (R1),(R3)+ ; читаем блок слов в память
1696 1696   sob R2,22$
1697 1697  
1698 1698  
1699 - ; Determine if SID exists
1699 + ; надо понять - есть ли SID
1700 1700   mov #4,R0
1701 1701   mov #SNDBUF,R1
1702 1702   mov #SIDCST,R2
... ... @@ -1705,11 +1705,11 @@
1705 1705   sob R0,23$
1706 1706   clr R5
1707 1707   inc R5
1708 - br 26$ ; success
1708 + br 26$ ; успешно
1709 1709  
1710 -24$: ; SID not found!
1710 +24$: ; SID не найден!
1711 1711   sob R5,220$
1712 - clr R5 ; error - no SID
1712 + clr R5 ; ошибка - нет SID
1713 1713  
1714 1714  26$: mov (SP)+, R0
1715 1715   mov (SP)+, R1
... ... @@ -1718,71 +1718,69 @@
1718 1718   mov (SP)+, R4
1719 1719   mov (SP)+, R5
1720 1720   return
1721 -
1722 1722  {{/code}}
1723 1723  
1724 -== 026: Exchange with Hall of Fame (HOF) ==
1723 +== **026: обмен с Hall of Fame (HOF)** ==
1725 1725  
1726 -Command code 026, this command makes a direct exchange with Hall of Fame
1725 +Код команды 026,  данная команда осуществляет непосредственный обмен с Hall of Fame
1727 1727  
1728 1728  Example program:
1729 1729  
1730 1730  {{code language="assembler"}}
1731 - ;4. user authentication
1732 - ;technically, this is sending a JSON
1733 - ;{"SID":"session hash","CMD":"AUTH_USER","NIKNAME":"user nickname","PASSWORD":"user password"}
1734 - ;the response is also JSON
1735 - ;{"SID":"session hash","RESULT":"OK","UID":"user hash"}
1736 - ;or
1737 - ;{"SID":"session hash","RESULT":"ERROR","DESCRIPTION":"USER_NOT_FOUND_OR_WRONG_PASSWORD"}
1738 - ;{"SID":"session hash","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
1739 - ;{"SID":"session hash","RESULT":"ERROR","DESCRIPTION":"SESSION_NOT_EXISTS_OR_EXPIRED"}
1730 + ;4. авторизация пользователя
1731 + ;технически это отправка JSON
1732 + ;{"SID":"хеш сессии","CMD":"AUTH_USER","NIKNAME":"никнейм пользователя","PASSWORD":"пароль пользователя"}
1733 + ;ответ тоже JSON
1734 + ;{"SID":"хеш сессии","RESULT":"OK","UID":"хеш пользователя"}
1735 + ;или
1736 + ;{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"USER_NOT_FOUND_OR_WRONG_PASSWORD"}
1737 + ;{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
1738 + ;{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SESSION_NOT_EXISTS_OR_EXPIRED"}
1740 1740  
1741 - ; load command CMD04
1742 - mov #CMD04,R1
1743 - mov #ADRMEM,R2
1744 - add #42.,R2 ; shift the pointer to the SID block length
1745 -33$: movb (R1)+,(R2)+
1746 - bne 33$
1740 + ; загоняем команду CMD04
1741 + mov #CMD04,R1
1742 + mov #ADRMEM,R2
1743 + add #42.,R2 ; cдвигаем указатель на длину блока с SID
1744 +33$: movb (R1)+,(R2)+
1745 + bne 33$
1747 1747  
1748 - .Print #ADRMEM
1747 + .Print #ADRMEM
1749 1749  
1750 - .Print #HOF05
1751 - ; send the command and wait for a response
1752 - ; load into buffer
1753 - MOV #AZ$CSR,R1
1754 -331$: TSTB (R1) ; Check controller readiness
1755 - BPL 331$ ; If not ready, wait
1756 - mov #23,(R1) ; command to write data into buffer
1757 -34$: TSTB (R1) ; check execution result
1758 - BPL 34$ ; wait
1759 - TST (R1)+ ; increment
1760 - mov #ADRMEM,R3
1761 - mov #256.,R2 ;
1762 -35$: mov (R3)+,(R1) ; send to controller
1763 - sob R2,35$
1764 - tst -(R1) ; decrement
1749 + .Print #HOF05
1750 + ; отсылаем команду и ждем ответа
1751 + ; закачиваем в буфер
1752 + MOV #AZ$CSR,R1
1753 +331$: TSTB (R1) ; Проверим готовность контроллера
1754 + BPL 331$ ; Если не готов ждем
1755 + mov #23,(R1) ; командуем что будем писать данные в буфер
1756 +34$: TSTB (R1) ; проверяем результат выполнения
1757 + BPL 34$ ; ждем
1758 + TST (R1)+ ; инкрементируем
1759 + mov #ADRMEM,R3
1760 + mov #256.,R2 ;
1761 +35$: mov (R3)+,(R1) ; отдаем в контроллер
1762 + sob R2,35$
1763 + tst -(R1) ; декрементируем
1765 1765  
1766 - ; exchange - command 026
1767 - MOV #AZ$CSR,R1
1768 -361$: TSTB (R1) ; Check controller readiness
1769 - BPL 361$ ; If not ready, wait
1770 - mov #26,(R1)
1771 -36$: TSTB (R1) ; check execution result
1772 - BPL 36$ ; wait
1765 + ; обмен - команда 026
1766 + MOV #AZ$CSR,R1
1767 +361$: TSTB (R1) ; Проверим готовность контроллера
1768 + BPL 361$ ; Если не готов ждем
1769 + mov #26,(R1)
1770 +36$: TSTB (R1) ; проверяем результат выполнения
1771 + BPL 36$ ; ждем
1773 1773  
1774 - ; receive result
1775 -371$: TSTB (R1) ; Check controller readiness
1776 - BPL 371$ ; If not ready, wait
1777 - mov #22,(R1) ; send buffer to the bus
1778 -37$: TSTB (R1) ; check execution result
1779 - BPL 37$ ; wait
1780 - TST (R1)+ ; increment
1781 - mov #ADRMEM,R3
1782 - mov #256.,R2 ; read 256 words; first word is the read result
1783 -38$: mov (R1),(R3)+ ; read block of words into memory
1784 - sob R2,38$
1785 -
1773 + ; получим результат
1774 +371$: TSTB (R1) ; Проверим готовность контроллера
1775 + BPL 371$ ; Если не готов ждем
1776 + mov #22,(R1) ; отдать на шину буфер
1777 +37$: TSTB (R1) ; проверяем результат выполнения
1778 + BPL 37$ ; ждем
1779 + TST (R1)+ ; инкрементируем
1780 + mov #ADRMEM,R3
1781 + mov #256.,R2 ; читаем 256. слов; первое слово - результат чтения
1782 +38$: mov (R1),(R3)+ ; читаем блок слов в память
1783 + sob R2,38$
1786 1786  {{/code}}
1787 1787  
1788 1788