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
-
... ... @@ -1033,29 +1033,31 @@ 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)ofpalette338words1036 +; карта 76й страницы - туда мы готовим данные для команды скринщотов 1037 + SCR_PAGE = 130000 ; 76ую страницу цепляем на место 77й временно - те в окно 130000 1038 + SCR_TAG = SCR_PAGE+0 ; тут вход - 240 - 1 слово 1039 + SCR_ADDR_CONF = SCR_TAG+2 ; сюда команду с адресами - адрес+длина 24 бита - 4 слова 1040 + SCR_PAGE_CONF = SCR_ADDR_CONF+8. ; сюда команду со страницами - начальная страница и количество страниц - 2 слова 1041 + SCR_MEM_CONF = SCR_PAGE_CONF+4. ; cюда конфигурацию памяти из регистров - 22 слова 1042 + SCR_VGA_CONF = SCR_MEM_CONF+44. ; сюда конфигурацию видеоконтроллера - 10 cлов 1043 + 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 1046 + 1047 +; trap 41 - подготовка дефолтной информации для работы функционала скриншотов 1048 +PrepSRC: jsr R5, PUSHA ; пакетное сохранение регистров 1049 + mov @#177326,-(SP) ; сохраним страницу 130k которая была до вызова 1050 + mov #76,@#177326 ; цепляем 76ую страницу в окно 1051 + 1052 + 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 tag1058 + mov #240,@#SCR_TAG ; проставляем тег 1057 1057 1058 - ; cleantheaddresssection-defaultisautomaticaddress detection1060 + ; чистим участок адресов - дефолтно автоматическое определение адресов 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-default1067 + ;конфигурация памяти - дефолтная 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 1086 + mov #170000,(R4)+ ;177340 - Регистр управления активацией окно - маски окон 1087 + mov R3,(R4)+ ;177342 - Регистр управления r/o на окно 1088 + mov #7777,(R4)+ ;177344 - Регистр управления shadow окон - маски окон 1089 + mov #40404,(R4)+ ;177346 - Регистр управления маппером 1090 + mov R3,(R4)+ ;177350 - регистр копия по записи 177130 в режиме записи управления памятью в SMK 1091 + mov #16000,(R4)+ ;177352 - регистр копия по записи 177716 в режиме записи управления памятью в БК11М 1090 1090 1091 - ; Videocontrollerconfiguration-default1093 + ;конфигурация видеоконтроллера - дефолтная 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 1097 + mov #12201,(R4)+ ;177230 - регистр управления 1098 + mov #4,(R4)+ ;177232 - регистр номера страницы начала отображения - верхняя страница (слой 0) 1099 + mov R3,(R4)+ ;177240 - регистр номера страницы начала отображения - средняя страница (слой 1) "под спрайты" 1100 + mov R3,(R4)+ ;177242 - регистр номера страницы начала отображения - нижняя страница (слой 2) "под фон" 1101 + mov R3,(R4)+ ;177244 - регистр вертикального скролинга слой 2 1102 + mov R3,(R4)+ ;177246 - регистр вертикального скролинга слой 1 1103 + mov R3,(R4)+ ;177250 - регистр вертикального скролинга слой 0 1104 + mov R3,(R4)+ ;177252 - регистр гозизонтального скролинга слой 0 1105 + mov R3,(R4)+ ;177254 - регистр гозизонтального скролинга слой 1 1106 + mov R3,(R4)+ ;177256 - регистр гозизонтального скролинга слой 2 1105 1105 1106 - ; downloadthepalette-takethedefaultonefrom this ROM1108 + ; закачиваем палитру - берем дефолтную из этой ПЗУшки 1107 1107 mov #SCR_PAL,R4 1108 1108 mov #PalData,R2 1109 1109 mov #338.,R3 ... ... @@ -1110,105 +1110,107 @@ 1110 1110 1$: mov (R2)+,(R4)+ 1111 1111 sob R3,1$ 1112 1112 1113 - mov (SP)+,@#177326; returnthepagefromwhichthe call was made1115 + mov (SP)+,@#177326; вернем страницу с которой был вызов 1114 1114 return 1115 1115 {{/code}} 1116 1116 1117 - Therearethreeoptionsfor specifying memory areas.1119 +Вариантов указания участков памяти три 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.1121 +1. указать адрес и длину 24х битные - cм формат, если их нет - система смотрит дальше 1122 +1. указать номер страницы и количество страницы, если их нет 1123 +1. система смотрит дальше - те делает скриншот на основании данных о регистрах 177230 и т.д.. 1122 1122 1123 - Thescreenshotissaved in the format1124 -- page76 -itsfirstkilobyte1125 -- thememoryimageitself(ifthemodeis layered-thenallthreelayers)1125 +Cкриншот сохраняется в формате 1126 +- страница 76 - ее первый килобайт 1127 +- сам образ памяти (если режим слоеный - то все три слоя) 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 1130 +Перед вызовом команды можно загрузить имя файла для сохранения скриншота [в cmosmem буфер], однако при его отсутствии (в буфере не будет имени - строки заканчивающейся 0) система сформирует свое имя, на основании следующего правила: 1131 +дефолтный путь для сохранения скриншотов 1129 1129 0:/SCREENS/ 1130 - nameformat- DDHHMISS.SCR1131 - whereDDistwodigitsofthe day of the month, HHisthe hour, MIisthe minute, SSis the second1132 -\\ Ifanerroroccursduringthecommandexecution,thenamewillbe"ERROR *"1133 - forexample1133 +формат имени - DDHHMISS.SCR 1134 +где DD - две цифры дня месяца, HH - час, MI - минута, SS-секунда 1135 +\\Если в процессе выполнения команды возникнет ошибка - вместо имени будет "ERROR *" 1136 +к примеру 1134 1134 "ERROR f_open 6" 1135 1135 1136 1136 1137 - Exampleprogram1140 +Пример программы 1138 1138 1139 1139 {{code language="assembler"}} 1140 -; updatetheinformationinthe screenshot header1143 +; обновим информацию в хидере скриншота 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)ofpalette338words1145 +; карта 76й страницы - туда мы готовим данные для команды скринщотов 1146 + SPAGE = 170000 ; 76ую страницу цепляем на место 77й временно - те в окно 130000 1147 + STAG = SPAGE+0 ; тут вход - 240 - 1 слово 1148 + SADDRC = STAG+2 ; сюда команду с адресами - адрес+длина 24 бита - 4 слова 1149 + SPAGEC = SADDRC+8. ; сюда команду со страницами - начальная страница и количество страниц - 2 слова 1150 + SMEMC = SPAGEC+4. ; cюда конфигурацию памяти из регистров - 22 слова 1151 + SVGAC = SMEMC+44. ; сюда конфигурацию видеоконтроллера - 10 cлов 1152 + SPAL = SVGAC+20. ; сюда 338. значений(слов) палитры 338 слов 1150 1150 ;-------------------------------------------------- 1151 - mov @#177326,R5 ; save page 130k which was before the call 1152 - mov #76,@#177336 ; hook the 76th page into the window 1153 1153 1154 - ;video controller configuration 1155 + mov @#177326,R5 ; сохраним страницу 130k которая была до вызова 1156 + mov #76,@#177336 ; цепляем 76ую страницу в окно 1157 + 1158 + ;конфигурация видеоконтроллера 1155 1155 ; 177230-177256 1156 1156 mov #SVGAC,R4 1157 1157 1158 - mov @#177230,(R4)+;177230 - controlregister1159 - mov @#177232,(R4)+;177232 - register-toppage(layer0)1160 - mov @#177240,(R4)+;177240 - register-toppage(layer1)1161 - mov @#177242,(R4)+;177242 - register-toppage(layer2)1162 - mov @#177244,(R4)+;177244 - verticalscrollregisterlayer21163 - mov @#177246,(R4)+;177246 - verticalscrollregisterlayer11164 - mov @#177250,(R4)+;177250 - verticalscrollregisterlayer01165 - mov @#177252,(R4)+;177252 - horizontalscrollregisterlayer01166 - mov @#177254,(R4)+;177254 - horizontalscrollregisterlayer11167 - mov @#177256,(R4)+;177256 - horizontalscrollregisterlayer21162 + mov @#177230,(R4)+;177230 - регистр управления 1163 + mov @#177232,(R4)+;177232 - регистр - верхняя страница (слой 0) 1164 + mov @#177240,(R4)+;177240 - регистр - средняя страница (слой 1) 1165 + mov @#177242,(R4)+;177242 - регистр - нижняя страница (слой 2) 1166 + mov @#177244,(R4)+;177244 - регистр вертикального скролинга слой 2 1167 + mov @#177246,(R4)+;177246 - регистр вертикального скролинга слой 1 1168 + mov @#177250,(R4)+;177250 - регистр вертикального скролинга слой 0 1169 + mov @#177252,(R4)+;177252 - регистр гозизонтального скролинга слой 0 1170 + mov @#177254,(R4)+;177254 - регистр гозизонтального скролинга слой 1 1171 + mov @#177256,(R4)+;177256 - регистр гозизонтального скролинга слой 2 1168 1168 1169 - mov R5,@#177336; returnthepagefromwhichthe call was made1173 + mov R5,@#177336; вернем страницу с которой был вызов 1170 1170 1171 1171 1172 1172 ;------------------------- 1173 - MOV #AZ$CSR,R3 ; PreparingcontrollerCSR1174 - MOV #AZ$DR,R4 ; PreparingcontrollerDR1175 -20$: CLR (R3) ; Resetthe controller1177 + MOV #AZ$CSR,R3 ; Готовим CSR контроллера 1178 + MOV #AZ$DR,R4 ; Готовим DR контроллера 1179 +20$: CLR (R3) ; Сбросим контроллер 1176 1176 TSTB (R3) 1177 1177 BPL 20$ 1178 1178 1179 - ; clearthememoryblockforthe name-sothatthesystemmakesa default file name1180 - mov #23,(R3) ; commandthatwewillwritedatato the buffer1181 -128$: TSTB (R3) ; checktheresult of execution1182 - BPL 128$ ; wait1183 + ; очистим блок памяти для имени - дабы система сделала дефолтное имя файла 1184 + mov #23,(R3) ; командуем что будем писать данные в буфер 1185 +128$: TSTB (R3) ; проверяем результат выполнения 1186 + BPL 128$ ; ждем 1183 1183 clr R1 1184 1184 1185 1185 mov #256.,R2 ; 1186 -129$: mov R1,(R4) ; givetothe controller1190 +129$: mov R1,(R4) ; отдаем в контроллер 1187 1187 sob R2,129$ 1188 1188 1189 1189 1190 - MOV #044,(R3) ; screenshotcommand1194 + MOV #044,(R3) ; команда скриншот 1191 1191 22$: TSTB (R3) ; 1192 1192 BPL 22$ ; 1193 1193 1194 - ; getthescreenshot name1195 - mov #22,(R3) ; givethereadmemoryblockfromthebuffer to the bus1196 -121$: tstb (R3) ; checktheresult of execution1197 - bpl 121$ ; wait1198 + ; получим имя скриншота 1199 + mov #22,(R3) ; отдать на шину считанный блок памяти из буфера 1200 +121$: tstb (R3) ; проверяем результат выполнения 1201 + bpl 121$ ; ждем 1198 1198 1199 1199 mov #BUF,R1 1200 - mov #256.,R2 ; read256.words;thefirstwordisthe result of reading1201 -122$: mov (R4),(R1)+ ; readablockofwords into memory1204 + mov #256.,R2 ; читаем 256. слов; первое слово - результат чтения 1205 +122$: mov (R4),(R1)+ ; читаем блок слов в память 1202 1202 sob R2,122$ 1203 1203 1204 1204 .PRINT #RESOK 1205 1205 .Print #BUF 1206 1206 1207 - mov #110,@#AZ$CSR; enablethenetworkbydefault,thenetworkshould be constantly enabled1211 + mov #110,@#AZ$CSR; включаем сеть по-умолчанию сеть должна быть постоянно включена 1208 1208 .Exit 1209 1209 {{/code}} 1210 1210 1211 - Tounpackascreenshot,youcanusethisutility -1215 +Для распаковки скриншота можно использовать вот эту утилиту 1212 1212 1213 1213 1214 1214