Еще раз глянул LZSA2 и все же одну дополнительную очистку счетчика вернул, т.е. по итогам предыдущей и этой правки результирующий выигрыш -26 байт и итоговый размер 270 байт.
Вид для печати
Еще раз глянул LZSA2 и все же одну дополнительную очистку счетчика вернул, т.е. по итогам предыдущей и этой правки результирующий выигрыш -26 байт и итоговый размер 270 байт.
Нашел файл, который при распаковке задетектит проблему со счетчиком в LZSA2, если вдруг по прошествии времени я забудусь и снова захочу соптимизировать лишнего. Добавил его в тестовый набор.
А распаковщик LZSA1 радикально переделал. Убрал весь самомодифицирующийся код, сократил до 124 байт и заметно ускорил. Рискну даже привести цифры, в моих тестах ускорение составило от 10 до 20%.
Обновление кросс-ассемблера PDPy11:
Полностью переписан плагин подсветки кода для Sublime Text 3 – теперь код раскрашен более логично и аккуратно.
В процесс компиляции из Sublime Text добавлен автоматический запуск эмулятора (по умолчанию закомментирован).
Уже давно есть.
Записал видео по установке и настройке PDPy11:Цитата:
Очень приятный редактор.. но сложен в настройке и (надеюсь пока) для УКНЦ.
https://youtu.be/-LX8MnUs1sk
Manwe,
S_V_B, зачем весь этот огород, когда есть шикарная возможность
https://zx-pk.ru/threads/24755-emulyator-rt-11.html
т.о. редактируйте\набивайте исходник где удобней вам (мне блокнота хватает для моих поделок) и батником на скорости хоста нативными средстави всё собирается ?
а в чём печаль, если игра или демка запускается на любой системе или даже без системы?
- - - Добавлено - - -
Нативные средства не предоставляют возможностей, которые есть у PDPy11. Например, PDPy11 понимает арифметические выражения любой сложности в исходнике, длинные имена меток и констант, алиасы команд (PUSH, POP) и многое другое, что позволяет писать более понятный код.
Ничего он пока не стоит.
- - - Добавлено - - -
Основной плюс MACRO-11 - это условная компиляции и макросы. Что то мне подсказывает, что и простейшая моя программа, например - восстановленный текст SPEED не пройдёт в нём компиляцию. А ещё возникает вопрос - а к результату компиляции подцепить стандартные OBJ можно? Или этот компилятор - вещь в себе?
Я думал о том, чтобы добавить условную компиляцию в PDPy11 – собирать разные исполняемые файлы под БК 0010 и БК 0011, а также под разные операционные системы. Потом понял, что это тотальное зло и с тех пор определяю модель компьютера и операционную систему в самой программе. Чтобы был единый исполняемый файл, который работает везде. Так намного удобней для конечного пользователя.
OBJ нельзя, но если есть его исходники, можно компилировать многофайловый проект с экспортом меток.Цитата:
А ещё возникает вопрос - а к результату компиляции подцепить стандартные OBJ можно? Или этот компилятор - вещь в себе?
Вопрос к hobot, S_V_B, Hunta: если добавятся макросы и obj – вы перейдёте на связку PDPy11 + Sublime Text?
Кроме того, что на PDP-11 ассемблер в большим количеством возможностей, у него, особенно в случае RSX, и линкер с большим количеством возможностей, в частности - с поддержкой оверлеев двух типов (это есть и в RT, но не так гибко). Я не думаю, что это (скоро) появится PDPy11 + Sublime Text. Кстати, мне вполне хватает подсветки синтаксиса для .MAC файлов в FAR-е.
Условная компиляция мне - НУЖНА, если её не будет - даже задумываться не буду.
Пример кода - условной компиляции тут нет, только макросы, но вот в макросах её овердохрена (и она вовсе не для поддержки компиляции под разные ОС).
- - - Добавлено - - -Код:.NLIST
.INCLUDE /KXX:DSMAC.MAC/
.INCLUDE /KXX:MYMAC.MAC/
.INCLUDE /KXX:ASCII.MAC/
.INCLUDE /KXX:HWDF.MAC/
.INCLUDE /MACRO.MAC/
.LIST
MODULE NAME=<SPEED>, REL=<SP>, VER=<02>, COMM=<SPEED program>
FROM SYSMAC IMPORT .EXIT
BLK.SZ =: 16000.
$CODE
PROCEDURE START
BEGIN
LET TCURR := #0
LET TMAX := #4
LET R5 := @#V.TR10
LET @#V.TR10 := #CHKEIS
LET R0 := R0 / R0
LET @#V.TR10 := R5
MTPS #PR4
LET SV100 := @#V.LTC,
LET SV102 := @#V.LTC+2
$SSHOW #MSPEED
$GOTO PREP
END START
PROCEDURE PREP
BEGIN
LET R0 := TCURR + R0
LET R1 := R0
LET R0 := R0 + #CMDTBL
LET @#TCMD := (R0)
LET R1 := R1 + #CPTBLE
LET R1 := (R1)
LET R2 := #3000
LET L02106 := R2
LET L02104 := R2
LET L02106 := L02106 + #BLK.SZ*2
REPEAT
LET (R2)+ := TCMD
UNTIL L02106 EQ R2
LET (R2) := CRET
LET R2 := #100.
LET R3 := #0
$SSHOW
CALL DELAY
LET @#V.LTC+2 := #0
LET @#V.LTC := #TICTAK
MTPS #PR0
;WAIT
$GOTO TEST
END PREP
PROCEDURE TEST
BEGIN
LOOP
CALL @L02104
LET R3 := R3 + #1
END
END TEST
PROCEDURE TICTAK
BEGIN
LET R2 := R2 - #1
IF RESULT IS NE
ENTRY TEMPTY
RTI
END
$GOTO SHOW
END TICTAK
PROCEDURE SHOW
BEGIN
LET R0 := TOP
LET @#V.LTC := #TEMPTY
IF #<3000/3+BLK.SZ> LOS R0 THEN
LET R3 := R3 + #1
END
LET R3 := R3 L.SHIFT 3
CALL CALC
$SSHOW #CSPEED
$SSHOW #BUF
CALL DELAY
LET TCURR := TCURR + #1
IF TCURR NE TMAX GOTO PREP
MTPS #200
LET @#V.LTC := SV100
LET @#V.LTC+2 := SV102
.EXIT
END SHOW
PROCEDURE CHKEIS
BEGIN
LET TMAX := #2
RTI
END CHKEIS
PROCEDURE DELAY
BEGIN
LET R0 := #-4000
REPEAT
LET R0 := R0 + #1
UNTIL RESULT IS EQ
RETURN
END DELAY
;
; R3 count multiply 8
;
PROCEDURE CALC
BEGIN
LET R0 := #BUF
THRU R4 := #EBUF-BUF
LET (R0)+ :B= #SPACE
END
LET R1 := #10.
LOOP
LOOP
LET R5 := R3
IF RESULT IS EQ GOTO L01450
CALL L01452
IF R2 EQ #0 LEAVE LOOP
LET -(R0) :B= R2
LET (R0) :B= (R0) SET.BY #'0
END
IF R3 EQ #0 LEAVE LOOP
LET -(R0) :B= R2
LET (R0) :B= (R0) SET.BY #'0
END
L01450:
RETURN
END CALC
PROCEDURE L01452
BEGIN
LET R3 := #0
LET R2 := #0
IF R5 NE #0 THEN
LET R3 := NOT R3
REPEAT
LET R5 := R5 L.ROTATE
UNTIL RESULT IS CS
REPEAT
ROL R2
IF R2 HIS R1 THEN
LET R2 := R2 - R1
END
ROL R3
ASL R5
UNTIL RESULT IS EQ
LET R3 := NOT R3
END
RETURN
END L01452
PROCEDURE SSHOW
BEGIN
LOOP
LET R0 :B= (R1)+
IF RESULT IS EQ THEN
RETURN
END
REPEAT
UNTILB @TVCSR MI #0
LET @TVBUF :B= R0
END
END SSHOW
$IDATA
; $PDATA
TVCSR: .WORD TPS
TVBUF: .WORD TPB
; $ASCII
MSPEED:
.ASCIZ <LF><CR><RUS>/test bystrodejstwiq /<LAT>
ADDRR:
.ASCIZ <LF><CR><LF><RUS>/komanda sloveniq registr-registr/<LAT>
ADDRM:
.ASCIZ <CR><LF><LF><RUS>/komanda sloveniq registr-pamqtx/<LAT>
MULRR:
.ASCIZ <LF><CR><LF><RUS>/komanda umnoveniq registr-registr/<LAT>
DIVRR:
.ASCIZ <LF><CR><LF><RUS>/komanda deleniq registr-registr/<LAT>
CSPEED:
.ASCIZ <CR><LF><RUS>\bystrodejstwie (tys.op./sek) \<LAT>
.EVEN
; $IDATA
BUF: .BYTE 0, 0, 0, 0, 0, 0, 0, 0
EBUF:
.BYTE 0
.EVEN
CPTBLE:
.WORD ADDRR
.WORD ADDRM
.WORD MULRR
.WORD DIVRR
L02104: .WORD 0
L02106: .WORD 0
TCURR: .WORD 0
TMAX: .WORD 2
TCMD: .WORD 0
SV100: .WORD 0
SV102: .WORD 0
CRET: RETURN
CMDTBL:
LET R1 := R1 + R0
LET R1 := R1 + @R0
LET R0 := R0 * R0
LET R2 := R2 / R0
END SPEED
.END START
Собрать единый вариант запускаемого файла для RT и RSX будет крайне проблематично.
Мне в середине 90-ых вполне хватало отладчика – писал программы прямо в памяти БК. Никакой подсветки синтаксиса. Зато не надо ждать пока скомпилируется.
В XXI веке «мы стали более лучше одеваться» и грех отказываться от достижений современности. Вряд ли FAR подсвечивает синтаксические ошибки в процессе написания и вряд ли автоматически переходит на строку с ошибкой по указанию компилятора. Ну и эти ужасные 6-буквенные имена из Macro-11 – бррр...
Я не адепт MACRO-11 скорее наоборот. Мне хватит основных макросов для работы с файлами (или хотя бы гибкой возможности их создавать из ЕМТов).
Инклюдов вполне хватит поскольку все исходники велосипедов рожаю в муках сам, есть конечно интересные штуки в SYSLIB, но если использовать RT-11 только как средство загрузки сохранения той же игрушки - можно и обойтись своими вело-грабляими :)
Больше всего убивают метки типа "АБЫРВАЛГ", в большом проектах не хватит воображения описать все сущности.
Главное чтобы компилил рабочий SAV (желательно с секциями, а не абсолютный).
- - - Добавлено - - -
Олдскульные системщики конечно люто воспротивятся такому подходу, но это их проблемы. Для написания демок и игрушек тем более для УКНЦ (имхо) MACRO-11 в чистом виде абсолютно непригоден. Для драйверов и прочих терминальных свистулек, да ради бога :)
А синтаксис и внутренности макросов учитываются? А если ошибка будет на команде, которую сгенерировал макрос - куда он перейдёт автоматически - команды в тексте не будет. А если забыть написать END, будет ахеренное количество ошибок, причём первая будет на макросе MODULE - он сам найдёт пропущенный END? А если вместо #LABEL, я ошибусь и напишу LABEL - он это поймёт?
А подсветка неправильно написанных команд PDP-11 мне не особо нужна - я их больше 35 лет помню.
В общем, я пока плюсов не вижу. Особенно учитывая отсутствие условной компиляции.
Ничего в них ужасного - время такое было. В ассемблере VAX-а (где ресурсов поболее) сделали уже более длинные и не только символы RADIX
- - - Добавлено - - -
Да да, у современных программистов с этим напряжёнка
Если бы мы были "современными" то сороду бы не жрали эти кактусы :)
Hunta в своем амплуа- мегакульный-седобородый гуру который из вредности в 21м веке считает на логарифмической линейке :)
Для драйвера в 3блока короткие метки может и приемлемы, да и что в драйвере "воображать" тупо следуй вороху пожелтевшей документации - получишь результат:)
Такую метку нельзя – слишком длинная, на 2 символа больше максимально допустимого! ;)
Абсолютный. На БК в ОС БК-11 другой и не нужен, вроде. Или нужен?Цитата:
Главное чтобы компилил рабочий SAV (желательно с секциями, а не абсолютный).
Я так понимаю, олдскульные системные программисты и не ищут инструментов, которые ускорят их работу (даже если такие появятся). Сила привычки выше, слишком накладно переучиваться.Цитата:
Олдскульные системщики конечно люто воспротивятся такому подходу, но это их проблемы. Для написания демок и игрушек тем более для УКНЦ (имхо) MACRO-11 в чистом виде абсолютно непригоден. Для драйверов и прочих терминальных свистулек, да ради бога :)
Сколько драйверов написал?
Приведённая выше программа оттранслируется? Если я добавлю в неё вызовы п/п из SYSLIB и из пары моих библиотек - собрать смогу? Когда ответы на эти вопросы будут - да - тогда и поговорим
- - - Добавлено - - -
Ну вот приговор и понятен.
И успешно программирует на C# и JS.
И да - каждые пять минут не кричу - "А напишите ща меня мою хотелку". Так же успешно сам могу что угодно написать.
Завтра инет накроется - сколько ты сам сможешь написать, без гугла и группы "поддержки"?
Ну вот - это уже пацанский разговор :)
Для RT-11 - НОЛЬ и не собираюсь (как ты говоришь- "не интересует") :)
- - - Добавлено - - -
Только все твои хотелки какие-то странные и скучные:)
И все дружно кинулись писать ха-ха-ха.. ты в первых рядах...
Вот поэтому все так скучно и убого (за 30 лет никто не сделал - значит не нужно, тоже аргумент) Ж)
Тогда не тебе и говорить
Да и читать ты доку не умеешь, судя по постоянным вопросам в теме
- - - Добавлено - - -
Твои тоже
А с какого перепуга ты решил, что все бросятся? У каждого свои интересы и на чужие - чихать
Плата на подходе. Как будет у меня - тогда и займусь.
Напиши пару драйверов для системного устройства - тогда и посмотрим, чем штангенциркуль более умелый. А то пока я слышал только вопли "ни хера не могу"
Да ты никак их читаешь? Вот - один нашёлся - для кого.
При ошибке компиляции Sublime не меняет контекст, то есть не перескакивает на ошибку автоматически (и это правильно с позиции UX). Внизу экрана пишется в каком файле, в какой строке, какая ошибка. Но можно не читать, а просто нажать F4. Тогда текст проматывается на ошибку (как показано в видео). Если ошибка в include-файле, то он открывается в новом табе и уже там курсор устанавливается на место ошибки. Описание ошибки также даётся подсказкой в тексте программы.
Проверка синтаксиса на лету полезна для другого: например, когда ты пишешь арифметическое выражение с кучей скобок.Цитата:
А подсветка неправильно написанных команд PDP-11 мне не особо нужна - я их больше 35 лет помню.
А если появится, забросишь FAR и Macro-11? Перейдёшь на Sublime Text + PDPy11?Цитата:
В общем, я пока плюсов не вижу. Особенно учитывая отсутствие условной компиляции.
Если будет ВСЁ, что мне нужно - по крайне мере - попробую.
А эти две программы (Sublime Text + PDPy11) уже умеют работать в RT и в RSX?
- - - Добавлено - - -
А с этим как?
И кстати, вдогонку. Помимо макроса и условной компиляции, в MACRO-11 есть ещё куча директив, в частности, по управлению - что будет в листинге. Это позволяет получать, например, такое:
А такое будет доступно. А редактор в варианте листинга, когда вызов макроса в листинг не выводится, а сгенерённые команды - да - куда будет переходить на ошибку?Код:
SPEED - SPEED program MACRO V05.06R Monday 18-May-20 Page 11
3
4 000000 MODULE NAME=<SPEED>, REL=<SP>, VER=<01>, COMM=<SPEED program>
000000 .PSECT $CODE$, I, RO
000000 .PSECT $ASCII, D, RO
000000 .PSECT $PDATA, D, RO
000000 .PSECT $IDATA, D, RW
000000 .PSECT .99997, D, RW
000000 .PSECT .99998, D, RW
000000 .PSECT .99999, D, RW
.SAVE
000000 .PSECT .99998, D, RW
000000 .RESTORE
5
6 000000 FROM SYSMAC IMPORT .EXIT
;
; импорт из модуля <SYSMAC>
;
.MCALL .EXIT
7
8 001750 BLK.SZ =: 1000.
9
10 000000 $CODE
000000 .PSECT $CODE$, I, RO
11
12 000000 PROCEDURE START
000000 .PSECT $CODE$, I, RO
000000 START:
13 000000 BEGIN
000000 .PSECT $CODE$, I, RO
14 000000 LET TCURR := #0
000000 005067 000354' CLR TCURR
15
16 000004 LET TMAX := #4
000004 012767 000004 000356' MOV #4, TMAX
17
18 000012 LET R5 := @#V.TR10
000012 013705 000010 MOV @#V.TR10, R5
19
20 000016 LET @#V.TR10 := #CHKEIS
000016 012737 000336' 000010 MOV #CHKEIS, @#V.TR10
21 000024 LET R0 := R0 / R0
000024 071000 DIV R0, R0
22
23 000026 LET @#V.TR10 := R5
000026 010537 000010 MOV R5, @#V.TR10
24
25 000032 106427 000200 MTPS #PR4
26
27 000036 LET SV100 := @#V.LTC,
000036 013767 000100 000362' MOV @#V.LTC, SV100
28 000044 LET SV102 := @#V.LTC+2
000044 013767 000102 000364' MOV @#V.LTC+2, SV102
29
30 000052 $SSHOW #MSPEED
000052 012701 000004' MOV #MSPEED, R1
31
32 000062 $GOTO PREP
SPEED - SPEED program MACRO V05.06R Monday 18-May-20 Page 11-1
33 000062 END START
34
35 000062 PROCEDURE PREP
000062 .PSECT $CODE$, I, RO
000062 PREP:
36 000062 BEGIN
000062 .PSECT $CODE$, I, RO
37
38 000062 LET R0 := TCURR + R0
000062 016700 000354' MOV TCURR, R0
000066 060000 ADD R0, R0
39
40 000070 LET R1 := R0
000070 010001 MOV R0, R1
41
42 000072 LET R0 := R0 + #CMDTBL
000072 062700 000370' ADD #CMDTBL, R0
43 000076 LET @#TCMD := (R0)
000076 011037 000360' MOV (R0), @#TCMD
44
45 000102 LET R1 := R1 + #CPTBLE
000102 062701 000340' ADD #CPTBLE, R1
46 000106 LET R1 := (R1)
000106 011101 MOV (R1), R1
47
48 000110 LET R2 := #3000
000110 012702 003000 MOV #3000, R2
49
50 000114 LET L02106 := R2
000114 010267 000352' MOV R2, L02106
51 000120 LET L02104 := R2
000120 010267 000350' MOV R2, L02104
52
53 000124 LET L02106 := L02106 + #BLK.SZ*2
000124 062767 003720 000352' ADD #BLK.SZ*2, L02106
54
55 000132 REPEAT
000132 1001$:
56
57 000132 LET (R2)+ := TCMD
000132 016722 000360' MOV TCMD, (R2)+
58
59 000136 UNTIL L02106 EQ R2
000136 026702 000352' CMP L02106, R2
000142 001373 BNE 1001$
000144 1002$:
60
61 000144 LET (R2) := CRET
000144 016712 000366' MOV CRET, (R2)
62
63 000150 LET R2 := #100.
000150 012702 000144 MOV #100., R2
64 000154 LET R3 := #0
000154 005003 CLR R3
65
66 000156 $SSHOW
67
(дальше вырезано)
Sublime Text работает в Linux, MacOS, Windows. PDPy11 – в любой системе, где есть Python 2 или 3. В общем, спектр систем шире, чем у FAR.
- - - Добавлено - - -
Так макросов пока нет в PDPy11. Если появятся, то принципиальных отличий от обычных инклюдов не будет.
- - - Добавлено - - -
Была идея выводить в файл .lst не только адреса и метки, но и мнемоники ассемблера. Это можно добавить. Управляться будет директивой в тексте программы.
Если что-то не выводится в листинг – для PDPy11 это не проблема. Он ошибки не в листингах ищет, а в файлах .mac
Ещё раз. Они в RT-11 и RSX-11 работают? (вопрос риторический). Потому как я часто сижу в целевой системе. Ошибки в системных программах в эмуляторе часто не отладишь. И мелкие (а часто и средние) ошибки мне быстрее поправить там, благо есть программа, которая по идеям опередила примерно на год (скорее больше) первую версию Norton Commander, так что (к сожалению, пока только) в RSX у меня даже аналог FAR-а есть.
Для меня это фиолетово. То есть ни плюс ни минус.
Макросы в MACRO-11 - это далеко не инклюды.
Ещё раз. Как будет обрабатываться и находится ошибка, возникающая в коде, который генерирует макрос. Его в .mac файле - не будет, так что у меня это мизерный сценарий. Основной - RSX.
Как подведение итогов. Судя по тому, что я успел почитать - тем, кто пользуется этой связки и макросы и условная компиляция достаточно слабо нужны. Значит, их включение (в полном объёме!) - под вопросом. Я их использую БОЛЕЕ ЧЕМ АКТИВНО. Не говоря уже о других возможностях MACRO-11+(LINK-11 | TKB). Так что - сильно сомнительно, что я когда нибудь на эту пару перейду - плюсов даже в перспективе не видно.
- - - Добавлено - - -
Ну и ещё вдогонку - в RSX свой формат выполняемых файлов. Я смогу сразу получить его, ибо абсолютный формат (да и то сильно условно) мне (по крайне мере пока) нужен только для одного - загнать в синтезируемое ОЗУ для тестирования синтезированного разного в FPGA.
- - - Добавлено - - -
И кстати о птичках - FAR это отлично делает (кстати, как сами команды PDP), так что..
и ценности в данной поделки для меня сейчас ноль.
Там его не на что ещё выплёскивать. Если она для вас удобна - используйте, кто запрещает.
Меньше книжек надо читать психологов - ни хрена они в работе мозга они не понимают. Так что и эта ваша мысль - мимо.
Сейчас взял исходник своей демки «Fractal Blur», дописал в начале директиву make_sav, нажатием Ctrl+B скомпилировал под RT-11. Проверил в ОС БК-11 4.1 – работает. Выходит, с PDPy11 можно легко и просто писать демки и игры для RT-11.
Только вот хотел спросить у знатоков RT-11: как принято выделять память под экран? Нужно ли вообще это делать? Вопрос касается и БК, и УКНЦ.
Если не линковать с другими объектными модулями и библиотеками, если не использовать оверлеи.
А, например, системная библиотека (обращения к RT-11) используется довольно часто.
Но это конечно от назначения программы зависит, небольшие игрушки/демки можно писать и без обращений к системе и без оверлеев.
На УКНЦ нет смысла выделять память под экран, под него имеются три плана памяти, в сумме 96 КБ, на ЦП доступны два плана из трёх через регистры, на ПП доступно всё.Цитата:
Только вот хотел спросить у знатоков RT-11: как принято выделять память под экран? Нужно ли вообще это делать? Вопрос касается и БК, и УКНЦ.
я не профессионал как SVB Хунта или Вы ! Моё хобби настальгическое паскальство+макро11 в нативной среде.
6 символов наше всё !!! ) 6.3 имена файлов, а RT-11 любимая ОСЬ!!!
Под Windows я паскалю в среде Дельфи , если приспичит.
Под MS DOS в турбопаскале...
Но RT-11 и OMSI Pascal + MACRO11 = это лучшее из всего перечисленного по многим причинам - для меня.
Никакие кросс средства лично меня не интересуют вообще.
Исходники набиваю в Нысе или блокноте.
я не могу заставить вас увидеть это моими глазами. Но!!! Отказ от поддержки RT-11 и перенос проектов на магн.ленту я не поддержу ни в коем случае.
Это не моё. Это мимо меня однозначно.
Блокнот – это уже кросс-средство :)
Где же Вы увидели «отказ»? Я пишу в исходнике:Цитата:
я не могу заставить вас увидеть это моими глазами. Но!!! Отказ от поддержки RT-11 и перенос проектов на магн.ленту я не поддержу ни в коем случае.
make_sav
make_bin
make_wav
м получаю после компиляции 3 файла: для RT-11, для MKDOS, ANDOS и Монитора в эмуляторе, для загрузки с магнитофона на реальном железе. Никакого «отказа», все случаи покрыты.
Ну да, у меня пока так. Оверлеи могут понадобиться разве то для игры Zork с 150 kb текстов.
Вопрос не совсем про это. Если я хочу, чтобы после выхода программа корректно вернулась в RT-11, и ничего не прибила во время работы – как выделять память? Вдруг система хранит что-то в тех самых 96 kb, которые я хочу использовать под экран?Цитата:
На УКНЦ нет смысла выделять память под экран, под него имеются три плана памяти, в сумме 96 КБ, на ЦП доступны два плана из трёх через регистры, на ПП доступно всё.