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,31 +1033,29 @@ 1033 1033 1034 1034 {{code language="assembler"}} 1035 1035 ;-------------------------------------------------- 1036 -; карта76йстраницы-тудамыготовимданныедлякомандыскринщотов1037 - уюстраницуцепляемнаместо77йвременно-тевокно1300001038 - тутвход- 240 - 1слово1039 - сюдакомандусадресами-адрес+длина24бита- 4слова1040 - сюдакомандусостраницами-начальнаястраницаиколичествостраниц- 2слова1041 - cюдаконфигурациюпамятиизрегистров- 22слова1042 - сюдаконфигурациювидеоконтроллера- 10cлов1043 - сюда338.значений(слов)палитры338слов1036 +; 76th page map - we prepare data for the screenshot command there 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 +SCR_MEM_CONF = SCR_PAGE_CONF+4. ; here is the memory configuration from the registers - 22 words 1042 +SCR_VGA_CONF = SCR_MEM_CONF+44. ; here video controller configuration - 10 words 1043 +SCR_PAL = SCR_VGA_CONF+20. ; here 338. values (words) of palette 338 words 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 1045 1045 1046 - 1047 -; trap 41 - подготовка дефолтной информации для работы функционала скриншотов 1048 -PrepSRC: jsr R5, PUSHA ; пакетное сохранение регистров 1049 - mov @#177326,-(SP) ; сохраним страницу 130k которая была до вызова 1050 - mov #76,@#177326 ; цепляем 76ую страницу в окно 1051 - 1052 - mov #100377,R3 ; константа-заполнитель 1050 + mov #100377,R3 ; constant-filler 1053 1053 mov #SCR_PAGE,R4 1054 1054 mov #2047.,R2 1055 1055 4$: mov R3,(R4)+ 1056 1056 sob R2,4$ 1057 1057 1058 - mov #240,@#SCR_TAG ; проставляемтег1056 + mov #240,@#SCR_TAG ; put the tag 1059 1059 1060 - ; чистимучастокадресов-дефолтноавтоматическоеопределениеадресов1058 + ; clean the address section - default is automatic address detection 1061 1061 clr R3 1062 1062 mov #SCR_ADDR_CONF,R4 1063 1063 mov #10,R2 ... ... @@ -1064,7 +1064,7 @@ 1064 1064 2$: mov R3,(R4)+ 1065 1065 sob R2,2$ 1066 1066 1067 - ; конфигурацияпамяти-дефолтная1065 + ; memory configuration - default 1068 1068 mov #SCR_MEM_CONF,R4 1069 1069 mov #30,(R4)+ ;177300 1070 1070 mov #31,(R4)+ ;177302 ... ... @@ -1083,29 +1083,29 @@ 1083 1083 mov #110,(R4)+ ;177334 1084 1084 mov #100,(R4)+ ;177336 1085 1085 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 в режиме записи управления памятью в SMK1091 - mov #16000,(R4)+ ;177352 - регистр копия по записи 177716 в режиме записи управления памятью в БК11М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 1092 1092 1093 - ; конфигурациявидеоконтроллера-дефолтная1091 + ;Video controller configuration - default 1094 1094 ; 177230-177256 1095 1095 mov #SCR_VGA_CONF,R4 1096 1096 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 - регистр вертикального скролинга слой 21102 - mov R3,(R4)+ ;177246 - регистр вертикального скролинга слой 11103 - mov R3,(R4)+ ;177250 - регистр вертикального скролинга слой 01104 - mov R3,(R4)+ ;177252 - регистр гозизонтального скролинга слой 01105 - mov R3,(R4)+ ;177254 - регистр гозизонтального скролинга слой 11106 - mov R3,(R4)+ ;177256 - регистр гозизонтального скролинга слой 21095 + 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 1107 1107 1108 - ; закачиваемпалитру-беремдефолтнуюизэтойПЗУшки1106 + ; download the palette - take the default one from this ROM 1109 1109 mov #SCR_PAL,R4 1110 1110 mov #PalData,R2 1111 1111 mov #338.,R3 ... ... @@ -1112,107 +1112,105 @@ 1112 1112 1$: mov (R2)+,(R4)+ 1113 1113 sob R3,1$ 1114 1114 1115 - mov (SP)+,@#177326; вернемстраницускоторойбылвызов1113 + mov (SP)+,@#177326; return the page from which the call was made 1116 1116 return 1117 1117 {{/code}} 1118 1118 1119 - Вариантовуказанияучастковпамятитри1117 +There are three options for specifying memory areas. 1120 1120 1121 -1. указатьадресидлину24хбитные-cмформат,еслиихнет-системасмотритдальше1122 -1. указатьномерстраницыиколичествостраницы,еслиихнет1123 -1. системасмотритдальше-теделаетскриншотнаоснованииданныхорегистрах177230и т.д..1119 +1. specify the address and length 24-bit - see format, if they are not there - the system looks further 1120 +1. specify the page number and page quantity, if they are not there 1121 +1. the system looks further - that is, it makes a screenshot based on the data about registers 177230, etc. 1124 1124 1125 - Cкриншотсохраняетсявформате1126 -- страница76 -еепервыйкилобайт1127 -- самобразпамяти(еслирежимслоеный-товсетрислоя)1123 +The screenshot is saved in the format 1124 +- page 76 - its first kilobyte 1125 +- the memory image itself (if the mode is layered - then all three layers) 1128 1128 1129 1129 1130 -Перед вызовом команды можно загрузить имя файла для сохранения скриншота [в cmosmem буфер], однако при его отсутствии (в буфере не будет имени - строки заканчивающейся 0) система сформирует свое имя, на основании следующего правила: 1131 -дефолтный путь для сохранения скриншотов 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 1132 0:/SCREENS/ 1133 - форматимени- DDHHMISS.SCR1134 - гдеDD-двецифрыднямесяца, HH-час, MI-минута, SS-секунда1135 -\\ Есливпроцессевыполнениякомандывозникнетошибка-вместоименибудет"ERROR *"1136 - кпримеру1130 +name format - DDHHMISS.SCR 1131 +where DD is two digits of the day of the month, HH is the hour, MI is the minute, SS is the second 1132 +\\If an error occurs during the command execution, the name will be "ERROR *" 1133 +for example 1137 1137 "ERROR f_open 6" 1138 1138 1139 1139 1140 - Примерпрограммы1137 +Example program 1141 1141 1142 1142 {{code language="assembler"}} 1143 -; обновиминформациювхидерескриншота1140 +; update the information in the screenshot header 1144 1144 ;-------------------------------------------------- 1145 -; карта76йстраницы-тудамыготовимданныедлякомандыскринщотов1146 - 70000уюстраницуцепляемнаместо77йвременно-тевокно1300001147 - тутвход- 240 - 1слово1148 - сюдакомандусадресами-адрес+длина24бита- 4слова1149 - сюдакомандусостраницами-начальнаястраницаиколичествостраниц- 2слова1150 - cюдаконфигурациюпамятиизрегистров- 22слова1151 - сюдаконфигурациювидеоконтроллера- 10cлов1152 - сюда338.значений(слов)палитры338слов1142 +; 76th page map - we prepare data for the screenshot command there 1143 +SCR_PAGE = 130000 ; we temporarily attach the 76th page to the 77th - that is, into the 130000 window 1144 +SCR_TAG = SCR_PAGE+0 ; here is the input - 240 - 1 word 1145 +SCR_ADDR_CONF = SCR_TAG+2 ; here is the command with addresses - address+length 24 bits - 4 words 1146 +SCR_PAGE_CONF = SCR_ADDR_CONF+8. ; here is the command with pages - the starting page and the number of pages - 2 words 1147 +SCR_MEM_CONF = SCR_PAGE_CONF+4. ; here is the memory configuration from the registers - 22 words 1148 +SCR_VGA_CONF = SCR_MEM_CONF+44. ; here video controller configuration - 10 words 1149 +SCR_PAL = SCR_VGA_CONF+20. ; here 338. values (words) of palette 338 words 1153 1153 ;-------------------------------------------------- 1151 + mov @#177326,R5 ; save page 130k which was before the call 1152 + mov #76,@#177336 ; hook the 76th page into the window 1154 1154 1155 - mov @#177326,R5 ; сохраним страницу 130k которая была до вызова 1156 - mov #76,@#177336 ; цепляем 76ую страницу в окно 1157 - 1158 - ;конфигурация видеоконтроллера 1154 + ;video controller configuration 1159 1159 ; 177230-177256 1160 1160 mov #SVGAC,R4 1161 1161 1162 - 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 - регистрвертикальногоскролингаслой21167 - mov @#177246,(R4)+;177246 - регистрвертикальногоскролингаслой11168 - mov @#177250,(R4)+;177250 - регистрвертикальногоскролингаслой01169 - mov @#177252,(R4)+;177252 - регистргозизонтальногоскролингаслой01170 - mov @#177254,(R4)+;177254 - регистргозизонтальногоскролингаслой11171 - mov @#177256,(R4)+;177256 - регистргозизонтальногоскролингаслой21158 + mov @#177230,(R4)+;177230 - control register 1159 + mov @#177232,(R4)+;177232 - register - top page (layer 0) 1160 + mov @#177240,(R4)+;177240 - register - top page (layer 1) 1161 + mov @#177242,(R4)+;177242 - register - top page (layer 2) 1162 + mov @#177244,(R4)+;177244 - vertical scroll register layer 2 1163 + mov @#177246,(R4)+;177246 - vertical scroll register layer 1 1164 + mov @#177250,(R4)+;177250 - vertical scroll register layer 0 1165 + mov @#177252,(R4)+;177252 - horizontal scroll register layer 0 1166 + mov @#177254,(R4)+;177254 - horizontal scroll register layer 1 1167 + mov @#177256,(R4)+;177256 - horizontal scroll register layer 2 1172 1172 1173 - mov R5,@#177336; вернемстраницускоторойбылвызов1169 + mov R5,@#177336; return the page from which the call was made 1174 1174 1175 1175 1176 1176 ;------------------------- 1177 - MOV #AZ$CSR,R3 ; ГотовимCSRконтроллера1178 - MOV #AZ$DR,R4 ; ГотовимDRконтроллера1179 -20$: CLR (R3) ; Сбросимконтроллер1173 + MOV #AZ$CSR,R3 ; Preparing controller CSR 1174 + MOV #AZ$DR,R4 ; Preparing controller DR 1175 +20$: CLR (R3) ; Reset the controller 1180 1180 TSTB (R3) 1181 1181 BPL 20$ 1182 1182 1183 - ; очистимблокпамятидляимени-дабысистемасделаладефолтноеимяфайла1184 - mov #23,(R3) ; командуемчтобудемписатьданныевбуфер1185 -128$: TSTB (R3) ; проверяемрезультатвыполнения1186 - BPL 128$ ; ждем1179 + ; clear the memory block for the name - so that the system makes a default file name 1180 + mov #23,(R3) ; command that we will write data to the buffer 1181 +128$: TSTB (R3) ; check the result of execution 1182 + BPL 128$ ; wait 1187 1187 clr R1 1188 1188 1189 1189 mov #256.,R2 ; 1190 -129$: mov R1,(R4) ; отдаемвконтроллер1186 +129$: mov R1,(R4) ; give to the controller 1191 1191 sob R2,129$ 1192 1192 1193 1193 1194 - MOV #044,(R3) ; командаскриншот1190 + MOV #044,(R3) ; screenshot command 1195 1195 22$: TSTB (R3) ; 1196 1196 BPL 22$ ; 1197 1197 1198 - ; получимимяскриншота1199 - mov #22,(R3) ; отдатьнашинусчитанныйблокпамятиизбуфера1200 -121$: tstb (R3) ; проверяемрезультатвыполнения1201 - bpl 121$ ; ждем1194 + ; get the screenshot name 1195 + mov #22,(R3) ; give the read memory block from the buffer to the bus 1196 +121$: tstb (R3) ; check the result of execution 1197 + bpl 121$ ; wait 1202 1202 1203 1203 mov #BUF,R1 1204 - mov #256.,R2 ; читаем256.слов;первоеслово-результатчтения1205 -122$: mov (R4),(R1)+ ; читаемблоксловвпамять1200 + mov #256.,R2 ; read 256. words; the first word is the result of reading 1201 +122$: mov (R4),(R1)+ ; read a block of words into memory 1206 1206 sob R2,122$ 1207 1207 1208 1208 .PRINT #RESOK 1209 1209 .Print #BUF 1210 1210 1211 - mov #110,@#AZ$CSR; включаемсетьпо-умолчаниюсетьдолжнабытьпостоянновключена1207 + mov #110,@#AZ$CSR; enable the network by default, the network should be constantly enabled 1212 1212 .Exit 1213 1213 {{/code}} 1214 1214 1215 - Дляраспаковкискриншотаможноиспользоватьвотэтуутилиту1211 +To unpack a screenshot, you can use this utility - 1216 1216 1217 1217 1218 1218