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

From version 2.79
edited by Max
on 2025/02/25 17:27
Change comment: (Autosaved)
To version 2.94
edited by Max
on 2025/02/25 18:37
Change comment: (Autosaved)

Summary

Details

Page properties
Content
... ... @@ -1603,70 +1603,70 @@
1603 1603  
1604 1604  == 057: Reading sizecard buffer ==
1605 1605  
1606 -Код команды 057,  данная команда отдает буфер sizecard (2 слова)
1606 +Command code 057, this command returns the sizecard buffer (2 words)
1607 1607  
1608 -буфер sizecard содержит 2 слова 16bit
1609 -первое слово - общий объем карты доступный для FAT в МБ
1610 -второе слово - свободный объем на карте в МБ
1608 +sizecard buffer contains 2 words 16bit
1609 +first word - total card size available for FAT in MB
1610 +second word - free card size in MB
1611 1611  
1612 1612  Example program:
1613 1613  
1614 1614  {{code language="assembler"}}
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
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 +
1633 1633  {{/code}}
1634 1634  
1635 -Пример данных
1636 -035521 - всего на карточке мегабайт - 15185.
1637 -035417 - свободно мегабайт - 15119.
1638 -
1636 +Example data
1637 +035521 - total megabytes on the card - 15185.
1638 +035417 - free megabytes - 15119.
1639 1639  
1640 -= **Блок команд API Hall of Fame** =
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