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

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

Summary

Details

Page properties
Content
... ... @@ -1639,34 +1639,34 @@
1639 1639  
1640 1640  = Hall of Fame API Command Block =
1641 1641  
1642 -Данный блок команд предназначен для взаимодействия с сервером [[Hall of Fame>>https://forum.maxiol.com/index.php?showtopic=5642]]
1642 +This block of commands is intended for interaction with the server [[Hall of Fame>>https://forum.maxiol.com/index.php?showtopic=5642]]
1643 1643  
1644 1644  == **025: Инициализация Hall of Fame (HOF)** ==
1645 1645  
1646 -Код команды 025,  данная команда устанавливает соединение с сервером Hall of Fame, инициализирует шифрованный тоннель и подготавливает API к работе.
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.
1647 1647  
1648 1648  Example program:
1649 1649  
1650 1650  {{code language="assembler"}}
1651 -AZ$CSR = 177220 ; регистр команд и состояния (CSR)
1652 -AZ$DR = 177222 ; регистр данных (DR)
1651 +AZ$CSR = 177220 ; command and status register (CSR)
1652 +AZ$DR = 177222 ; data register (DR)
1653 1653  
1654 -; буфера
1655 -SNDBUF: .BLKW 256. ; буфер передачи
1656 -RCVBUF: .BLKW 256. ; буфер приема ответа
1654 +; buffers
1655 +SNDBUF: .BLKW 256. ; send buffer
1656 +RCVBUF: .BLKW 256. ; receive buffer
1657 1657  SIDMEM: .BLKB 34. ; SID
1658 -SIDCST: .ASCII \{"SID":"\ ; заголовок SID
1658 +SIDCST: .ASCII \{"SID":"\ ; SID header
1659 1659   .even
1660 1660  
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 -
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 +
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 ; количество попыток
1677 + mov #3,R5 ; number of attempts
1678 1678  
1679 1679  220$: mov #AZ$CSR,R1
1680 - clr (R1) ; Пошлем команду "Сброс"
1681 -221$: tstb (R1) ; Проверим готовность контроллера
1682 - bpl 221$ ; Если не готов ждем
1680 + clr (R1) ; Send "Reset" command
1681 +221$: tstb (R1) ; Check controller readiness
1682 + bpl 221$ ; If not ready, wait
1683 1683  
1684 - mov #25,(R1) ; инициализация - команда 025
1685 -20$: tstb (R1) ; проверяем результат выполнения
1686 - bpl 20$ ; ждем
1684 + mov #25,(R1) ; initialization - command 025
1685 +20$: tstb (R1) ; check execution result
1686 + bpl 20$ ; wait
1687 1687  
1688 - ; получим результат
1689 - mov #22,(R1) ; отдать на шину считанный блок памяти из буфера
1690 -21$: tstb (R1) ; проверяем результат выполнения
1691 - bpl 21$ ; ждем
1692 - tst (R1)+ ; инкрементируем
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
1693 1693   mov #SNDBUF,R3
1694 - mov #256.,R2 ; читаем 256. слов; первое слово - результат чтения
1695 -22$: mov (R1),(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
1696 1696   sob R2,22$
1697 1697  
1698 1698  
1699 - ; надо понять - есть ли SID
1699 + ; Determine if SID exists
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$ ; успешно
1708 + br 26$ ; success
1709 1709  
1710 -24$: ; SID не найден!
1710 +24$: ; SID not found!
1711 1711   sob R5,220$
1712 - clr R5 ; ошибка - нет SID
1712 + clr R5 ; error - no SID
1713 1713  
1714 1714  26$: mov (SP)+, R0
1715 1715   mov (SP)+, R1
... ... @@ -1718,69 +1718,71 @@
1718 1718   mov (SP)+, R4
1719 1719   mov (SP)+, R5
1720 1720   return
1721 +
1721 1721  {{/code}}
1722 1722  
1723 -== **026: обмен с Hall of Fame (HOF)** ==
1724 +== 026: Exchange with Hall of Fame (HOF) ==
1724 1724  
1725 -Код команды 026,  данная команда осуществляет непосредственный обмен с Hall of Fame
1726 +Command code 026, this command makes a direct exchange with Hall of Fame
1726 1726  
1727 1727  Example program:
1728 1728  
1729 1729  {{code language="assembler"}}
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"}
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"}
1739 1739  
1740 - ; загоняем команду CMD04
1741 - mov #CMD04,R1
1742 - mov #ADRMEM,R2
1743 - add #42.,R2 ; cдвигаем указатель на длину блока с SID
1744 -33$: movb (R1)+,(R2)+
1745 - bne 33$
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$
1746 1746  
1747 - .Print #ADRMEM
1748 + .Print #ADRMEM
1748 1748  
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) ; декрементируем
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
1764 1764  
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$ ; ждем
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
1772 1772  
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$
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 +
1784 1784  {{/code}}
1785 1785  
1786 1786