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
-
... ... @@ -1603,70 +1603,70 @@ 1603 1603 1604 1604 == 057: Reading sizecard buffer == 1605 1605 1606 - Commandcode057,thiscommandreturnsthesizecardbuffer(2words)1606 +Код команды 057, данная команда отдает буфер sizecard (2 слова) 1607 1607 1608 -sizecard buffercontains2words16bit1609 - firstword-totalcardsizeavailableforFATinMB1610 - secondword-freecardsizeinMB1608 +буфер sizecard содержит 2 слова 16bit 1609 +первое слово - общий объем карты доступный для FAT в МБ 1610 +второе слово - свободный объем на карте в МБ 1611 1611 1612 1612 Example program: 1613 1613 1614 1614 {{code language="assembler"}} 1615 -; trap 51 - get the total/free size of the SD card in megabytes 1616 -; result in R1 - total; R2 - free 1617 -GetSizeSD: call AZreset ; reset 1618 - tst R1 1619 - bne 0ERR$ 1620 - MOV #AZ$CSR,R1 1621 - mov #56,(R1) 1622 -1$: TSTB (R1) ; prepare buffer 1623 - BPL 1$ ; wait 1624 - mov #57,(R1) 1625 -2$: TSTB (R1) ; prepare buffer 1626 - BPL 2$ ; wait 1627 - mov @#AZ$DR ,R1 ; total megabytes 1628 - mov @#AZ$DR ,R2 ; free megabytes 1629 - return 1630 - clr R1 1631 - clr R2 1632 - return 1633 - 1615 +; trap 51 - получение объема SD карты всего/свободно в мегабайтах 1616 +; результат в R1 - всего; R2 - свободно 1617 +GetSizeSD: call AZreset; сбросим 1618 + tst R1 1619 + bne 0ERR$ 1620 + MOV #AZ$CSR,R1 1621 + mov #56,(R1) 1622 +1$: TSTB (R1); подготовить буфер 1623 + BPL 1$; ждем 1624 + mov #57,(R1) 1625 +2$: TSTB (R1); подготовить буфер 1626 + BPL 2$; ждем 1627 + mov @#AZ$DR ,R1; всего мегабайт 1628 + mov @#AZ$DR ,R2; свободно мегабайт 1629 + return 1630 + clr R1 1631 + clr R2 1632 + return 1634 1634 {{/code}} 1635 1635 1636 -Example data 1637 -035521 - total megabytes on the card - 15185. 1638 -035417 - free megabytes - 15119. 1635 +Пример данных 1636 +035521 - всего на карточке мегабайт - 15185. 1637 +035417 - свободно мегабайт - 15119. 1638 + 1639 1639 1640 -= Hall of Fame API Command Block=1640 += **Блок команд API Hall of Fame** = 1641 1641 1642 - Thisblockofcommandsisintendedforinteraction 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 - Commandcode025,thiscommandestablishesaconnectionto theHall of Fameserver,initializestheencryptedtunnelandprepares theAPIforwork.1646 +Код команды 025, данная команда устанавливает соединение с сервером Hall of Fame, инициализирует шифрованный тоннель и подготавливает API к работе. 1647 1647 1648 1648 Example program: 1649 1649 1650 1650 {{code language="assembler"}} 1651 -AZ$CSR = 177220 ; commandandstatusregister(CSR)1652 -AZ$DR = 177222 ; dataregister(DR)1651 +AZ$CSR = 177220 ; регистр команд и состояния (CSR) 1652 +AZ$DR = 177222 ; регистр данных (DR) 1653 1653 1654 -; buffers1655 -SNDBUF: .BLKW 256. ; sendbuffer1656 -RCVBUF: .BLKW 256. ; receivebuffer1654 +; буфера 1655 +SNDBUF: .BLKW 256. ; буфер передачи 1656 +RCVBUF: .BLKW 256. ; буфер приема ответа 1657 1657 SIDMEM: .BLKB 34. ; SID 1658 -SIDCST: .ASCII \{"SID":"\ ; SID header1658 +SIDCST: .ASCII \{"SID":"\ ; заголовок SID-а 1659 1659 .even 1660 1660 1661 -HOFINI: ; HOF initialization1662 - ; Theresultis aJSONresponse:1663 - ; sessionhash","RESULT":"OK"}1664 - ; or an error:1665 - ; 1666 - ; 1667 - ; Theresultisplaced inSNDBUF1668 - ; R5 indicatessuccess:1= SIDexists, 0=noSID1669 - 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 ; numberof attempts1677 + mov #3,R5 ; количество попыток 1678 1678 1679 1679 220$: mov #AZ$CSR,R1 1680 - clr (R1) ; Send"Reset"command1681 -221$: tstb (R1) ; Checkcontrollerreadiness1682 - bpl 221$ ; Ifnotready,wait1680 + clr (R1) ; Пошлем команду "Сброс" 1681 +221$: tstb (R1) ; Проверим готовность контроллера 1682 + bpl 221$ ; Если не готов ждем 1683 1683 1684 - mov #25,(R1) ; initialization-command0251685 -20$: tstb (R1) ; checkexecutionresult1686 - bpl 20$ ; wait1684 + mov #25,(R1) ; инициализация - команда 025 1685 +20$: tstb (R1) ; проверяем результат выполнения 1686 + bpl 20$ ; ждем 1687 1687 1688 - ; Retrievethe result1689 - mov #22,(R1) ; outputthereadmemoryblockfrombufferto the bus1690 -21$: tstb (R1) ; checkexecutionresult1691 - bpl 21$ ; wait1692 - tst (R1)+ ; increment1688 + ; получим результат 1689 + mov #22,(R1) ; отдать на шину считанный блок памяти из буфера 1690 +21$: tstb (R1) ; проверяем результат выполнения 1691 + bpl 21$ ; ждем 1692 + tst (R1)+ ; инкрементируем 1693 1693 mov #SNDBUF,R3 1694 - mov #256.,R2 ; read256words;firstwordistheread result1695 -22$: mov (R1),(R3)+ ; readblockofwordsinto memory1694 + mov #256.,R2 ; читаем 256. слов; первое слово - результат чтения 1695 +22$: mov (R1),(R3)+ ; читаем блок слов в память 1696 1696 sob R2,22$ 1697 1697 1698 1698 1699 - ; DetermineifSIDexists1699 + ; надо понять - есть ли 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$ ; success1708 + br 26$ ; успешно 1709 1709 1710 -24$: ; SID notfound!1710 +24$: ; SID не найден! 1711 1711 sob R5,220$ 1712 - clr R5 ; error-noSID1712 + 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: ExchangewithHall of Fame (HOF) ==1723 +== **026: обмен с Hall of Fame (HOF)** == 1725 1725 1726 - Commandcode026,thiscommandmakesadirectexchange withHall of Fame1725 +Код команды 026, данная команда осуществляет непосредственный обмен с Hall of Fame 1727 1727 1728 1728 Example program: 1729 1729 1730 1730 {{code language="assembler"}} 1731 - ;4. userauthentication1732 - ; technically,thisissending aJSON1733 - ;{"SID":" sessionhash","CMD":"AUTH_USER","NIKNAME":"usernickname","PASSWORD":"userpassword"}1734 - ; theresponseis alsoJSON1735 - ;{"SID":" sessionhash","RESULT":"OK","UID":"userhash"}1736 - ; or1737 - ;{"SID":" sessionhash","RESULT":"ERROR","DESCRIPTION":"USER_NOT_FOUND_OR_WRONG_PASSWORD"}1738 - ;{"SID":" sessionhash","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}1739 - ;{"SID":" sessionhash","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 - ; loadcommandCMD041742 - mov #CMD04,R1 1743 - mov #ADRMEM,R2 1744 - add #42.,R2 ; shiftthepointertotheSIDblock length1745 -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 - ; sendthecommandandwait for a response1752 - ; loadintobuffer1753 - MOV #AZ$CSR,R1 1754 -331$: TSTB (R1) ; Checkcontrollerreadiness1755 - BPL 331$ ; Ifnotready,wait1756 - mov #23,(R1) ; commandtowritedataintobuffer1757 -34$: TSTB (R1) ; checkexecutionresult1758 - BPL 34$ ; wait1759 - TST (R1)+ ; increment1760 - mov #ADRMEM,R3 1761 - mov #256.,R2 ; 1762 -35$: mov (R3)+,(R1) ; sendtocontroller1763 - sob R2,35$ 1764 - tst -(R1) ; decrement1749 + .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-command0261767 - MOV #AZ$CSR,R1 1768 -361$: TSTB (R1) ; Checkcontrollerreadiness1769 - BPL 361$ ; Ifnotready,wait1770 - mov #26,(R1) 1771 -36$: TSTB (R1) ; checkexecutionresult1772 - BPL 36$ ; wait1765 + ; обмен - команда 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