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

From version 2.73
edited by Max
on 2025/02/25 17:07
Change comment: (Autosaved)
To version 2.62
edited by Max
on 2025/02/25 16:17
Change comment: (Autosaved)

Summary

Details

Page properties
Content
... ... @@ -1033,29 +1033,31 @@
1033 1033  
1034 1034  {{code language="assembler"}}
1035 1035  ;--------------------------------------------------
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
1036 +; карта 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 ; put the tag
1058 + mov #240,@#SCR_TAG ; проставляем тег
1057 1057  
1058 - ; clean the address section - default is automatic address detection
1060 + ; чистим участок адресов - дефолтно автоматическое определение адресов
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 - ; memory configuration - default
1067 + ;конфигурация памяти - дефолтная
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 - ;Video controller configuration - default
1093 + ;конфигурация видеоконтроллера - дефолтная
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 - ; download the palette - take the default one from this ROM
1108 + ; закачиваем палитру - берем дефолтную из этой ПЗУшки
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; return the page from which the call was made
1115 + mov (SP)+,@#177326; вернем страницу с которой был вызов
1114 1114   return
1115 1115  {{/code}}
1116 1116  
1117 -There are three options for specifying memory areas.
1119 +Вариантов указания участков памяти три
1118 1118  
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.
1121 +1. указать адрес и длину 24х битные - формат, если их нет - система смотрит дальше
1122 +1. указать номер страницы и количество страницы, если их нет
1123 +1. система смотрит дальше - те делает скриншот на основании данных о регистрах 177230 и т.д..
1122 1122  
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)
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 -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
1133 +формат имени - DDHHMISS.SCR
1134 +где DD - две цифры дня месяца, HH - час, MI - минута, SS-секунда
1135 +\\Если в процессе выполнения команды возникнет ошибка - вместо имени будет "ERROR *"
1136 +к примеру
1134 1134  "ERROR f_open 6"
1135 1135  
1136 1136  
1137 -Example program
1140 +Пример программы
1138 1138  
1139 1139  {{code language="assembler"}}
1140 -; update the information in the screenshot header
1143 +; обновим информацию в хидере скриншота
1141 1141  ;--------------------------------------------------
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
1145 +; карта 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 - 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
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 - регистр вертикального скролинга слой 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; return the page from which the call was made
1173 + mov R5,@#177336; вернем страницу с которой был вызов
1170 1170  
1171 1171  
1172 1172   ;-------------------------
1173 - MOV #AZ$CSR,R3 ; Preparing controller CSR
1174 - MOV #AZ$DR,R4 ; Preparing controller DR
1175 -20$: CLR (R3) ; Reset the controller
1177 + 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 - ; 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
1183 + ; очистим блок памяти для имени - дабы система сделала дефолтное имя файла
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) ; give to the controller
1190 +129$: mov R1,(R4) ; отдаем в контроллер
1187 1187   sob R2,129$
1188 1188  
1189 1189  
1190 - MOV #044,(R3) ; screenshot command
1194 + MOV #044,(R3) ; команда скриншот
1191 1191  22$: TSTB (R3) ;
1192 1192   BPL 22$ ;
1193 1193  
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
1198 + ; получим имя скриншота
1199 + mov #22,(R3) ; отдать на шину считанный блок памяти из буфера
1200 +121$: tstb (R3) ; проверяем результат выполнения
1201 + bpl 121$ ; ждем
1198 1198  
1199 1199   mov #BUF,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
1204 + 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; enable the network by default, the network should be constantly enabled
1211 + mov #110,@#AZ$CSR; включаем сеть по-умолчанию сеть должна быть постоянно включена
1208 1208   .Exit
1209 1209  {{/code}}
1210 1210  
1211 -To unpack a screenshot, you can use this utility -
1215 +Для распаковки скриншота можно использовать вот эту утилиту
1212 1212  
1213 1213  
1214 1214