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
-
... ... @@ -1034,14 +1034,15 @@ 1034 1034 {{code language="assembler"}} 1035 1035 ;-------------------------------------------------- 1036 1036 ; 76th page map - we prepare data for the screenshot command there 1037 -SCR_PAGE 1038 -SCR_TAG 1039 -SCR_ADDR_CONF = SCR_TAG+2 1040 -SCR_PAGE_CONF = SCR_ADDR_CONF+8. ; here is the command with pages - the starting page and the number of pages - 2 words 1037 +SCR_PAGE = 130000 ; we temporarily attach the 76th page to the 77th - that is, into the 130000 window 1038 +SCR_TAG = SCR_PAGE+0 ; here is the input - 240 - 1 word 1039 +SCR_ADDR_CONF = SCR_TAG+2 ; here is the command with addresses - address+length 24 bits - 4 words 1040 +SCR_PAGE_CONF = SCR_ADDR_CONF+8. ; here is the command with pages - the starting page and the number of pages - 2 words 1041 1041 SCR_MEM_CONF = SCR_PAGE_CONF+4. ; here is the memory configuration from the registers - 22 words 1042 1042 SCR_VGA_CONF = SCR_MEM_CONF+44. ; here video controller configuration - 10 words 1043 -SCR_PAL 1043 +SCR_PAL = SCR_VGA_CONF+20. ; here 338. values ??(words) of palette 338 words 1044 1044 ;-------------------------------------------------- 1045 + 1045 1045 ; trap 41 - preparation of default information for screenshot functionality 1046 1046 PrepSRC: jsr R5, PUSHA ; batch saving of registers 1047 1047 mov @#177326,-(SP) ; save page 130k which was before the call ... ... @@ -1137,78 +1137,79 @@ 1137 1137 Example program 1138 1138 1139 1139 {{code language="assembler"}} 1140 -; updatetheinformationinthe screenshot header1141 +; обновим информацию в хидере скриншота 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)ofpalette338words1143 +; карта 76й страницы - туда мы готовим данные для команды скринщотов 1144 + SPAGE = 170000 ; 76ую страницу цепляем на место 77й временно - те в окно 130000 1145 + STAG = SPAGE+0 ; тут вход - 240 - 1 слово 1146 + SADDRC = STAG+2 ; сюда команду с адресами - адрес+длина 24 бита - 4 слова 1147 + SPAGEC = SADDRC+8. ; сюда команду со страницами - начальная страница и количество страниц - 2 слова 1148 + SMEMC = SPAGEC+4. ; cюда конфигурацию памяти из регистров - 22 слова 1149 + SVGAC = SMEMC+44. ; сюда конфигурацию видеоконтроллера - 10 cлов 1150 + 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 1153 + mov @#177326,R5 ; сохраним страницу 130k которая была до вызова 1154 + mov #76,@#177336 ; цепляем 76ую страницу в окно 1155 + 1156 + ;конфигурация видеоконтроллера 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 - horizontalscrollregisterlayer21160 + mov @#177230,(R4)+;177230 - регистр управления 1161 + mov @#177232,(R4)+;177232 - регистр - верхняя страница (слой 0) 1162 + mov @#177240,(R4)+;177240 - регистр - средняя страница (слой 1) 1163 + mov @#177242,(R4)+;177242 - регистр - нижняя страница (слой 2) 1164 + mov @#177244,(R4)+;177244 - регистр вертикального скролинга слой 2 1165 + mov @#177246,(R4)+;177246 - регистр вертикального скролинга слой 1 1166 + mov @#177250,(R4)+;177250 - регистр вертикального скролинга слой 0 1167 + mov @#177252,(R4)+;177252 - регистр гозизонтального скролинга слой 0 1168 + mov @#177254,(R4)+;177254 - регистр гозизонтального скролинга слой 1 1169 + mov @#177256,(R4)+;177256 - регистр гозизонтального скролинга слой 2 1168 1168 1169 - mov R5,@#177336; returnthepagefromwhichthe call was made1171 + mov R5,@#177336; вернем страницу с которой был вызов 1170 1170 1171 1171 1172 1172 ;------------------------- 1173 - MOV #AZ$CSR,R3 ; PreparingcontrollerCSR1174 - MOV #AZ$DR,R4 ; PreparingcontrollerDR1175 -20$: CLR (R3) ; Resetthe controller1175 + MOV #AZ$CSR,R3 ; Готовим CSR контроллера 1176 + MOV #AZ$DR,R4 ; Готовим DR контроллера 1177 +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$ ; wait1181 + ; очистим блок памяти для имени - дабы система сделала дефолтное имя файла 1182 + mov #23,(R3) ; командуем что будем писать данные в буфер 1183 +128$: TSTB (R3) ; проверяем результат выполнения 1184 + BPL 128$ ; ждем 1183 1183 clr R1 1184 1184 1185 1185 mov #256.,R2 ; 1186 -129$: mov R1,(R4) ; givetothe controller1188 +129$: mov R1,(R4) ; отдаем в контроллер 1187 1187 sob R2,129$ 1188 1188 1189 1189 1190 - MOV #044,(R3) ; screenshotcommand1192 + 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$ ; wait1196 + ; получим имя скриншота 1197 + mov #22,(R3) ; отдать на шину считанный блок памяти из буфера 1198 +121$: tstb (R3) ; проверяем результат выполнения 1199 + 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 memory1202 + mov #256.,R2 ; читаем 256. слов; первое слово - результат чтения 1203 +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 enabled1209 + mov #110,@#AZ$CSR; включаем сеть по-умолчанию сеть должна быть постоянно включена 1208 1208 .Exit 1209 1209 {{/code}} 1210 1210 1211 - Tounpackascreenshot,youcanusethisutility -1213 +Для распаковки скриншота можно использовать вот эту утилиту 1212 1212 1213 1213 1214 1214