Changes for page API контроллеров AZ®
Last modified by Max on 2025/03/02 15:18
Summary
-
Page properties (1 modified, 0 added, 0 removed)
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: ; инициализацияHOF1662 - ; результатомявляетсятакойJSON1663 - ;{"SID":" хешсессии","RESULT":"OK"}1664 - ; илиошибка1665 - ;{"RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"} 1666 - ;{"RESULT":"ERROR","DESCRIPTION":"CONNECTION_ERROR"} 1667 - ; результатпомещаетсявSNDBUF1668 - ; в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) ; инициализациякоманда0251685 -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 - ; надопонять- есть лиSID1699 + ; 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 Fame1726 +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 - ; техническиэтоотправкаJSON1732 - ;{"SID":" хешсессии","CMD":"AUTH_USER","NIKNAME":"никнеймпользователя","PASSWORD":"парольпользователя"}1733 - ; ответтожеJSON1734 - ;{"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 - ; загоняемкомандуCMD041741 - mov #CMD04,R1 1742 - mov #ADRMEM,R2 1743 - add #42.,R2 ; cдвигаемуказательнадлинублокасSID1744 -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 - ; обменкоманда0261766 - 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