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
-
... ... @@ -915,29 +915,29 @@ 915 915 Example program: 916 916 917 917 {{code language="assembler"}} 918 -; workingwithclock919 -; trap 60 - readingclockdatafromTCP/IPstack920 -; R3 - bufferaddresswheretoread921 -; resultinR3addressifsuccessful. R3=0iferror918 +; работа с часами 919 +; trap 60 - чтение данных часов из TCP/IP стека 920 +; R3 - адрес буфера куда надо считать 921 +; результат в R3 адрес, если успешно. R3=0 если ошибка 922 922 GetDateFromLAN: push R0 923 923 push R1 924 924 push R2 925 - call AZreset; reset925 + call AZreset; сбросим 926 926 tst R1 927 927 bne G60ERR 928 928 MOV #AZ$CSR,R1 929 929 mov #42,(R1) 930 -G60: TSTB (R1); checkexecutionresult931 - BPL G60; wait930 +G60: TSTB (R1); проверяем результат выполнения 931 + BPL G60; ждем 932 932 mov #32,(R1) 933 -1$: TSTB (R1); checkexecutionresult934 - BPL 1$; wait935 - TST (R1)+; increment936 - mov R3,R0; rememberR3address933 +1$: TSTB (R1); проверяем результат выполнения 934 + BPL 1$; ждем 935 + TST (R1)+; инкрементируем 936 + mov R3,R0; запомним R3 - адрес 937 937 mov #10.,R2; читаем 10 слов 938 -2$: mov (R1),(R3)+; readblockofwordsinto memory938 +2$: mov (R1),(R3)+; читаем блок слов в память 939 939 sob R2,2$ 940 - mov R0,R3; successful,returnaddresstoR3940 + mov R0,R3; успешно, вернем адрес в R3 941 941 br 0END$ 942 942 G60ERR: CLR R3 943 943 0END$: pop R2 ... ... @@ -946,50 +946,52 @@ 946 946 return 947 947 {{/code}} 948 948 949 - Allcommandssetthereadybitupon completion.949 +все команды устанавливают бит готовности по завершению. 950 950 951 951 952 -= **[[AZБК®>>doc:Контроллеры AZБК® для компьютеров БК-0010 БК-0010\.01 БК-0011М.WebHome]] specificcommands=952 += **Команды специфические для [[AZБК®>>doc:Контроллеры AZБК® для компьютеров БК-0010 БК-0010\.01 БК-0011М.WebHome]]** = 953 953 954 - Thesecommandsareintendedforoperationof theAZБК®controller,developedfortheBKseriesof computers-BK-0010/BK-0010.01/BK-0011M.954 +Данные команды предназначены для работы контроллера AZБК®, разработанного для серии компьютеров БК - БК-0010/БК-0010.01/БК-0011М. 955 955 956 - OtherAZ®controllersignorethese commands.956 +Другие контроллеры AZ® игнорируют эти команды 957 957 958 -== 037: Restartof the**[[AZБК®>>doc:Контроллеры AZБК® для компьютеров БК-0010 БК-0010\.01 БК-0011М.WebHome]] **controllerand the entire computer==958 +== **037: перезапуск контроллера [[AZБК®>>doc:Контроллеры AZБК® для компьютеров БК-0010 БК-0010\.01 БК-0011М.WebHome]] и всей БК** == 959 959 960 - Commandcode037,thiscommandrestartstheAZ®microcontroller,whichalsocausesarestartof the BK-0010/BK-0010.01/BK-0011M itself960 +Код команды 037, данная команда осуществляет перезапуск микроконтроллера AZ®, что вызывает и перезапуск самой БК-0010/БК-0010.01/БК-0011М 961 961 962 - Exampleprogram962 +Пример программы 963 963 964 964 {{code language="assembler"}} 965 -AZ$CSR = 177220; commandandstatusregister(CSR)966 -AZ$DR = 177222; dataregister(DR)965 +AZ$CSR = 177220; регистр команд и состояния (CSR) 966 +AZ$DR = 177222; регистр данных (DR) 967 967 968 968 969 -; trap 57 - fullrestart970 -AZcouldReboot: call AZreset; resetAZsoitisreadytoreceive969 +; trap 57 - перезапуск БК полный 970 +AZcouldReboot: call AZreset; сбросим AZ дабы он был готов принимать команды 971 971 mov #037,@#AZ$CSR 972 972 return 973 973 {{/code}} 974 974 975 -== 044: Savingascreenshottoa file==975 +== **044: Cохранение скриншота в файл** == 976 976 977 -Command code 044, this command is designed to take a memory image of the specified size (or determined automatically based on saved parameters) technically, the command can serve as a debugging tool because it is capable of taking a memory image the general limitation on taking a memory image is 2MB per image 978 -\\service memory page 76(8) is used as parameters 977 +Код команды 044, данная команда предназначена для снятия образа памяти указанного размера (или определенного автоматически на основании сохраненных параметров) 978 +технически команда может служить как средство отладки ибо способная снимать образ памяти 979 +общее ограничение на снятие образа памяти - 2МБ на один образ 980 +\\в качестве параметров используется служебная страница памяти 76(8) 979 979 980 - Structureoffillinginformationabouta screenshot982 +Структура заполнения информации о скриншоте 981 981 982 982 {{code language="c"}} 983 -// screenshotheaderstructure985 +// структура хидера скриншота 984 984 typedef __packed struct screen_header 985 985 { 986 - unsigned short int tag; //mustbeequalto0240988 + unsigned short int tag; // должен быть равен 0240 987 987 988 - startaddressinwords-forwardtaskinphysicaladdresses989 - unsigned int length; // lengthinwords-forwardtaskinphysicaladdresses990 + unsigned int begin_adress; // начальный адрес в словах - прямая задача в физических адресах 991 + unsigned int length; // длина в словах - прямая задача в физических адресах 990 990 991 - unsigned short int begin_page; startpage-number-forwardtaskinpagenumbers992 - unsigned short int len_pages; numberofpages-forwardtaskinpagenumbers993 + unsigned short int begin_page; // начальная страница - номер - прямая задача в номерах страниц 994 + unsigned short int len_pages; // количество страниц - прямая задача в номерах страниц 993 993 994 994 unsigned short int R177300; // 995 995 unsigned short int R177302; // ... ... @@ -1007,55 +1007,57 @@ 1007 1007 unsigned short int R177332; // 1008 1008 unsigned short int R177334; // 1009 1009 unsigned short int R177336; // 1010 - unsigned short int R177340; // - Windowactivationcontrolregister-windowmasks1011 - unsigned short int R177342; // - Controlregisterr/operwindow1012 - unsigned short int R177344; // - Shadowwindowcontrol register-windowmasks1013 - unsigned short int R177346; // - Mappercontrolregister1014 - unsigned short int R177350; // - copybyrecordregister177130inmemorymanagementwritemodeinSMK1015 - copybyrecordregister177716inmemorymanagementwritemodeinBK11M1012 + unsigned short int R177340; // - Регистр управления активацией окно - маски окон 1013 + unsigned short int R177342; // - Регистр управления r/o на окно 1014 + unsigned short int R177344; // - Регистр управления shadow окон - маски окон 1015 + unsigned short int R177346; // - Регистр управления маппером 1016 + unsigned short int R177350; // - регистр копия по записи 177130 в режиме записи управления памятью в SMK 1017 + unsigned short int R177352; // - регистр копия по записи 177716 в режиме записи управления памятью в БК11М 1016 1016 1017 - unsigned short int R177230; // - controlregister1018 - unsigned short int R177232; // - displaystartpagenumberregister-upperpage(layer0)1019 - unsigned short int R177240; // - displaystartpagenumberregister-upperpage(layer1)1020 - unsigned short int R177242; // - displaystartpagenumberregister-upperpage(layer2)1021 - unsigned short int R177244; // - verticalscrollregisterlayer21022 - unsigned short int R177246; // - verticalscrollregisterlayer11023 - unsigned short int R177250; // - verticalscrollregisterlayer01024 - unsigned short int R177252; // - horizontalscrollregisterlayer01025 - unsigned short int R177254; // - horizontalscrollregisterlayer11026 - unsigned short int R177256; // - horizontalscrollregisterlayer21019 + unsigned short int R177230; // - регистр управления 1020 + unsigned short int R177232; // - регистр номера страницы начала отображения - верхняя страница (слой 0) 1021 + unsigned short int R177240; // - регистр номера страницы начала отображения - средняя страница (слой 1) 1022 + unsigned short int R177242; // - регистр номера страницы начала отображения - нижняя страница (слой 2) 1023 + unsigned short int R177244; // - регистр вертикального скролинга слой 2 1024 + unsigned short int R177246; // - регистр вертикального скролинга слой 1 1025 + unsigned short int R177250; // - регистр вертикального скролинга слой 0 1026 + unsigned short int R177252; // - регистр гозизонтального скролинга слой 0 1027 + unsigned short int R177254; // - регистр гозизонтального скролинга слой 1 1028 + unsigned short int R177256; // - регистр гозизонтального скролинга слой 2 1027 1027 1028 1028 unsigned short int paldata[338]; // 1029 1029 } screen_header_t; 1030 1030 {{/code}} 1031 1031 1032 - Examplecodeforfillingamemory page1034 +Пример кода для заполнения страницы памяти 1033 1033 1034 1034 {{code language="assembler"}} 1035 1035 ;-------------------------------------------------- 1036 -; 76 thpagemap-wepreparedataforthescreenshotcommand there1037 -SCR_PAGE = 130000 ; we temporarily attach the76thpagetothe77th-thatis,intothe130000window1038 -SCR_TAG = SCR_PAGE+0 ; hereisthe input- 240 - 1word1039 -SCR_ADDR_CONF = SCR_TAG+2 ; hereisthecommandwith addresses-address+length24bits- 4words1040 -SCR_PAGE_CONF = SCR_ADDR_CONF+8. ; hereisthecommandwith pages-thestartingpageandthenumber of pages- 2words1041 -SCR_MEM_CONF = SCR_PAGE_CONF+4. ; here is the memoryconfigurationfromtheregisters- 22words1042 -SCR_VGA_CONF = SCR_MEM_CONF+44. ; herevideocontrollerconfiguration- 10words1043 -SCR_PAL = SCR_VGA_CONF+20. ; here338.values(words)ofpalette338words1038 +; карта 76й страницы - туда мы готовим данные для команды скринщотов 1039 + SCR_PAGE = 130000 ; 76ую страницу цепляем на место 77й временно - те в окно 130000 1040 + SCR_TAG = SCR_PAGE+0 ; тут вход - 240 - 1 слово 1041 + SCR_ADDR_CONF = SCR_TAG+2 ; сюда команду с адресами - адрес+длина 24 бита - 4 слова 1042 + SCR_PAGE_CONF = SCR_ADDR_CONF+8. ; сюда команду со страницами - начальная страница и количество страниц - 2 слова 1043 + SCR_MEM_CONF = SCR_PAGE_CONF+4. ; cюда конфигурацию памяти из регистров - 22 слова 1044 + SCR_VGA_CONF = SCR_MEM_CONF+44. ; сюда конфигурацию видеоконтроллера - 10 cлов 1045 + SCR_PAL = SCR_VGA_CONF+20. ; сюда 338. значений(слов) палитры 338 слов 1044 1044 ;-------------------------------------------------- 1045 -; trap 41 - preparation of default information for screenshot functionality 1046 -PrepSRC: jsr R5, PUSHA ; batch saving of registers 1047 - mov @#177326,-(SP) ; save page 130k which was before the call 1048 - mov #76,@#177326 ; hook 76th page into window 1049 1049 1050 - mov #100377,R3 ; constant-filler 1048 + 1049 +; trap 41 - подготовка дефолтной информации для работы функционала скриншотов 1050 +PrepSRC: jsr R5, PUSHA ; пакетное сохранение регистров 1051 + mov @#177326,-(SP) ; сохраним страницу 130k которая была до вызова 1052 + mov #76,@#177326 ; цепляем 76ую страницу в окно 1053 + 1054 + mov #100377,R3 ; константа-заполнитель 1051 1051 mov #SCR_PAGE,R4 1052 1052 mov #2047.,R2 1053 1053 4$: mov R3,(R4)+ 1054 1054 sob R2,4$ 1055 1055 1056 - mov #240,@#SCR_TAG ; putthe tag1060 + mov #240,@#SCR_TAG ; проставляем тег 1057 1057 1058 - ; cleantheaddresssection-defaultisautomaticaddress detection1062 + ; чистим участок адресов - дефолтно автоматическое определение адресов 1059 1059 clr R3 1060 1060 mov #SCR_ADDR_CONF,R4 1061 1061 mov #10,R2 ... ... @@ -1062,7 +1062,7 @@ 1062 1062 2$: mov R3,(R4)+ 1063 1063 sob R2,2$ 1064 1064 1065 - ; memoryconfiguration-default1069 + ;конфигурация памяти - дефолтная 1066 1066 mov #SCR_MEM_CONF,R4 1067 1067 mov #30,(R4)+ ;177300 1068 1068 mov #31,(R4)+ ;177302 ... ... @@ -1081,29 +1081,29 @@ 1081 1081 mov #110,(R4)+ ;177334 1082 1082 mov #100,(R4)+ ;177336 1083 1083 1084 - mov #170000,(R4)+ ;177340 1085 - mov R3,(R4)+ ;177342 1086 - mov #7777,(R4)+ ;177344 1087 - mov #40404,(R4)+ ;177346 1088 - mov R3,(R4)+ ;177350 1089 - mov #16000,(R4)+ ;177352 1088 + mov #170000,(R4)+ ;177340 - Регистр управления активацией окно - маски окон 1089 + mov R3,(R4)+ ;177342 - Регистр управления r/o на окно 1090 + mov #7777,(R4)+ ;177344 - Регистр управления shadow окон - маски окон 1091 + mov #40404,(R4)+ ;177346 - Регистр управления маппером 1092 + mov R3,(R4)+ ;177350 - регистр копия по записи 177130 в режиме записи управления памятью в SMK 1093 + mov #16000,(R4)+ ;177352 - регистр копия по записи 177716 в режиме записи управления памятью в БК11М 1090 1090 1091 - ; Videocontrollerconfiguration-default1095 + ;конфигурация видеоконтроллера - дефолтная 1092 1092 ; 177230-177256 1093 1093 mov #SCR_VGA_CONF,R4 1094 1094 1095 - mov #12201,(R4)+ ;177230 1096 - mov #4,(R4)+ ;177232 1097 - mov R3,(R4)+ ;177240 1098 - mov R3,(R4)+ ;177242 1099 - mov R3,(R4)+ ;177244 1100 - mov R3,(R4)+ ;177246 1101 - mov R3,(R4)+ ;177250 1102 - mov R3,(R4)+ ;177252 1103 - mov R3,(R4)+ ;177254 1104 - mov R3,(R4)+ ;177256 1099 + mov #12201,(R4)+ ;177230 - регистр управления 1100 + mov #4,(R4)+ ;177232 - регистр номера страницы начала отображения - верхняя страница (слой 0) 1101 + mov R3,(R4)+ ;177240 - регистр номера страницы начала отображения - средняя страница (слой 1) "под спрайты" 1102 + mov R3,(R4)+ ;177242 - регистр номера страницы начала отображения - нижняя страница (слой 2) "под фон" 1103 + mov R3,(R4)+ ;177244 - регистр вертикального скролинга слой 2 1104 + mov R3,(R4)+ ;177246 - регистр вертикального скролинга слой 1 1105 + mov R3,(R4)+ ;177250 - регистр вертикального скролинга слой 0 1106 + mov R3,(R4)+ ;177252 - регистр гозизонтального скролинга слой 0 1107 + mov R3,(R4)+ ;177254 - регистр гозизонтального скролинга слой 1 1108 + mov R3,(R4)+ ;177256 - регистр гозизонтального скролинга слой 2 1105 1105 1106 - ; downloadthepalette-takethedefaultonefrom this ROM1110 + ; закачиваем палитру - берем дефолтную из этой ПЗУшки 1107 1107 mov #SCR_PAL,R4 1108 1108 mov #PalData,R2 1109 1109 mov #338.,R3 ... ... @@ -1110,43 +1110,44 @@ 1110 1110 1$: mov (R2)+,(R4)+ 1111 1111 sob R3,1$ 1112 1112 1113 - mov (SP)+,@#177326; returnthepagefromwhichthe call was made1117 + mov (SP)+,@#177326; вернем страницу с которой был вызов 1114 1114 return 1115 1115 {{/code}} 1116 1116 1117 - Therearethreeoptionsfor specifying memory areas.1121 +Вариантов указания участков памяти три 1118 1118 1119 -1. specifytheaddressandlength24-bit-seeformat,iftheyarenot there-thesystemlooks further1120 -1. specifythepagenumberandpage quantity,ifthey are not there1121 -1. thesystemlooksfurther-thatis,itmakesascreenshotbasedonthe data about registers177230,etc.1123 +1. указать адрес и длину 24х битные - cм формат, если их нет - система смотрит дальше 1124 +1. указать номер страницы и количество страницы, если их нет 1125 +1. система смотрит дальше - те делает скриншот на основании данных о регистрах 177230 и т.д.. 1122 1122 1123 - Thescreenshotissaved in the format1124 -- page76 -itsfirstkilobyte1125 -- thememoryimageitself(ifthemodeis layered-thenallthreelayers)1127 +Cкриншот сохраняется в формате 1128 +- страница 76 - ее первый килобайт 1129 +- сам образ памяти (если режим слоеный - то все три слоя) 1126 1126 1127 1127 1128 -Before calling the command, you can load the file name for saving the screenshot [in the cmosmem buffer], but if it is missing (there will be no name in the buffer - a line ending with 0), the system will generate its own name based on the following rule: default path for saving screenshots 1132 +Перед вызовом команды можно загрузить имя файла для сохранения скриншота [в cmosmem буфер], однако при его отсутствии (в буфере не будет имени - строки заканчивающейся 0) система сформирует свое имя, на основании следующего правила: 1133 +дефолтный путь для сохранения скриншотов 1129 1129 0:/SCREENS/ 1130 - nameformat- DDHHMISS.SCR1131 - whereDDistwodigitsofthe day of the month, HHisthe hour, MIisthe minute, SSis the second1132 -\\ Ifanerroroccursduringthecommandexecution,thenamewillbe"ERROR *"1133 - forexample1135 +формат имени - DDHHMISS.SCR 1136 +где DD - две цифры дня месяца, HH - час, MI - минута, SS-секунда 1137 +\\Если в процессе выполнения команды возникнет ошибка - вместо имени будет "ERROR *" 1138 +к примеру 1134 1134 "ERROR f_open 6" 1135 1135 1136 1136 1137 - Exampleprogram1142 +Пример программы 1138 1138 1139 1139 {{code language="assembler"}} 1140 -; updatetheinformationinthe screenshot header1145 +; обновим информацию в хидере скриншота 1141 1141 ;-------------------------------------------------- 1142 -; 76 thpagemap-wepreparedataforthescreenshotcommand there1143 -S CR_PAGE = 130000 ;we temporarily attach the76thpagetothe77th-thatis,intothe130000window1144 -S CR_TAG = SCR_PAGE+0 ;hereisthe input- 240 - 1word1145 -S CR_ADDR_CONF= SCR_TAG+2 ;hereisthecommandwith addresses-address+length24bits- 4words1146 -S CR_PAGE_CONF= SCR_ADDR_CONF+8. ;hereisthecommandwith pages-thestartingpageandthenumber of pages- 2words1147 -S CR_MEM_CONF= SCR_PAGE_CONF+4. ;here is the memoryconfigurationfromtheregisters- 22words1148 -S CR_VGA_CONF= SCR_MEM_CONF+44. ;herevideocontrollerconfiguration- 10words1149 -S CR_PAL = SCR_VGA_CONF+20. ;here338.values(words)ofpalette338words1147 +; карта 76й страницы - туда мы готовим данные для команды скринщотов 1148 + SPAGE = 170000 ; 76ую страницу цепляем на место 77й временно - те в окно 130000 1149 + STAG = SPAGE+0 ; тут вход - 240 - 1 слово 1150 + SADDRC = STAG+2 ; сюда команду с адресами - адрес+длина 24 бита - 4 слова 1151 + SPAGEC = SADDRC+8. ; сюда команду со страницами - начальная страница и количество страниц - 2 слова 1152 + SMEMC = SPAGEC+4. ; cюда конфигурацию памяти из регистров - 22 слова 1153 + SVGAC = SMEMC+44. ; сюда конфигурацию видеоконтроллера - 10 cлов 1154 + SPAL = SVGAC+20. ; сюда 338. значений(слов) палитры 338 слов 1150 1150 ;-------------------------------------------------- 1151 1151 1152 1152 mov @#177326,R5 ; сохраним страницу 130k которая была до вызова