Мануал по SYSLIB:
http://www.bitsavers.org/pdf/dec/pdp...nual_Aug91.pdf
Обрати внимание на описание EMT (т.е. все можно сделать с помощью их).
Самый простой и нужный EMT 350 (макрос .EXIT) - выход из программы пользователя :)
Вид для печати
Мануал по SYSLIB:
http://www.bitsavers.org/pdf/dec/pdp...nual_Aug91.pdf
Обрати внимание на описание EMT (т.е. все можно сделать с помощью их).
Самый простой и нужный EMT 350 (макрос .EXIT) - выход из программы пользователя :)
Понял, спасибо
- - - Добавлено - - -
Спасибо. Есть описание SYSLIB на русском даже: http://gid.pdp-11.ru/books/00008-01.33.01-1.html
Правда, из него у меня сложилось впечатление, что обычная (не резидентная) программа пользователя не обязана просить у системы выделить ей свободную память. Вместо этого можно просто в заголовке .sav-файла указать верхний адрес памяти, который превышает реальный размер программы. И в этом дополнительном месте делать что угодно (например, генерировать таблицы, хранить промежуточные результаты и т.п.)
Ничего не нужно выделять (ну конечно создавай массивы переменные и др.. ), главное чтобы твоя программа на момент запуска влезла в память (все что нужно уже загружено до тебя) в противном случае тебе сообщат.
Хуже дела с ПП там как раз все динамически происходит (выделять-освобождать) и поэтому все твои процедуры должны быть перемещаемыми.
Но к RT-11 это не относится.
В заголовке конечно много интересного (сильно не копал) например битовые карты распределения памяти, но по моему это относится к более старшим версиям (многозадачным и прочим наворотам) в SJ нужно нет не знаю. Короче нужно разбираться. Что будет достаточно для наших гейм-демомэйкерским потребностям на том и остановиться.
Битовая карта нужна, без неё ОС БК-11 не запускает программу.
Идея в том, что я не хочу хранить в конце программы кучу нулей (речь идёт о десятке килобайт), которые потом займу под всякие буферы и переменные. А функций выделения памяти в программных запросах RT-11 не обнаружено. Поэтому хочу просто указать побольше конечный адрес в заголовке .sav-файла. Смотрел игры под ОС БК-11 («Кот рыболов» и тому подобное) – в них верхний адрес памяти слегка превышает реальную длину программы. Видимо, так и нужно делать. Странно, что в явном виде это не описано в формате .sav-файлов (а следовало бы описать, ведь там два способа указания размера программы: битовой картой по блокам 512 байт каждый и 16-битным числом).
Возможно - пока не попробуешь не узнаешь ;)
Наверняка можно узнать верхний адрес рантайм при запуске. Пока не озадачивался написанием 40b демо :)
Manwe, корректно вернуться? )))
.EXIT
теперь регистры видео переправить и будет УК-НЦ вариант.
Немного не по теме, но вот научный совет таких спецов как участники беседы + @AFZ + возможно кто то ещё примкнул бы
и мог бы повыдёргивать оставшиеся игрушки с ИТО игропакетов !!! Внимание - рыцарь не ломанный (без вечной жизни как в пакете)
уже есть, далее - существ. два варианта Арканоид с вечными попытками и без.
Что бы играть в них с любого девайса, а не только с дискет. с AZ контр. УК-НЦ например.
- - - Добавлено - - -
так и есть. RT-11 всегда на твоей стороне ;-) Маленькая и шустрая, с 5-ой версии это просто сказка, а не ОСЬ )))
Может, на УКНЦ она и шустрая. А на БК 0011 грузится долго :(
да не особо долго, но в целом конечно медленно, улучшить ситуацию можно только победой над
заведомо "узкими" местами. Я в своё время и не мучал свою БК0010-01, а просто пересел на УК-НЦ,
теперь, когда Никита перетащил с БК Лоде Руннер, --- УК-НЦ самый норм. выбор для домашнего PDP11
под управлением RT-11, все "левые"(АНДОС и проч. + марсианка) ОСИ для БК для меня ересь и предательство, так же как и порты ДОС игрушек никакого "огонька" для меня не жгут )))
Но это я вот такой. Бывают и другие мнения.
- - - Добавлено - - -
7 секунд в эмуляторе с дискеты - а на реале никогда не юзал.
Ты меня травмируешь совершенно по другому поводу, а именно , что версия Лоде Руннера, о которой идёт речь = это был эксклюзив для БК.
Благодаря Никите, теперь есть трилогия для УК-НЦ под ОС RT-11 ;-)
И закон Лоде Руннера мне хорошо известен, благодарю.
по первому пункту не согласен, по второму не согласен частично.
Игра от Маркова не порт! Это именно версия была только на БК (если ошибаюсь дайте ссылку) до тех пор пока не вмешался Никита и эту ситуацию не улучшил, а тот вариант , который ты подразумеваешь, на БК его вовсе нет, а на УК-НЦ входит в игропакет 1990 года от ИТО Москва "Игрушка-1".
Пример эксклюзивного (в моём понимании \ терминологии) порта вот = Лабиринты Маркова, спрайтики изменены, вариант от Зеленоградцев для КЦГД
https://forum.maxiol.com/index.php?showtopic=4786# - там надо листать вниз будут фотки с заставкой игры...поиграть можно только на живой или в эмуляторе Титуса.
Провёл эксперимент: указал в заголовке sav-файла последний адрес программы 20000. Хотя, сама программа занимает адреса с 1000 по 2000. Запустилось без проблем. Видимо, это и есть способ выделить дополнительные 16000 байт памяти под временные данные программы.
ОС БК-11 в эмуляторе БК грузится у меня 26 секунд до появления приглашения ввода даты. Если сразу нажать Ввод и ждать пока загрузится оболочка типа Norton Commander – 38 секунд.
Пробую перетащить свой проект написанный под MACRO-11 на pdpy11 с заменой макросов не ЕМТы - сразу столкнулся с мелкими проблемами:
1. не понимает досовскую кодировку даже в комментах - валится с сообщением неизвестный чарсет, насколько я понял.
поправка: не понимает русские комменты.
поправка: На другом компе не ругается на комменты..
2. не понимает RETURN только RETКод:File "C:\Users\Stepan\AppData\Local\Programs\Python\Python37-32\lib\encodings\cp1251.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 1431: character maps to <undefined>
3. не понимает #^B1111000011010000 (вроде бы был разговор про двоичную запись)
4. не понимает <> скобки в выражениях #<2+2>
5. В инклюдах не видит переменные объявленные ниже. (компилирует в один проход?)
копаю дальше..
Простую программку скомпилировал и даже запустил.
Пробовал собрать игрушку (много инклюдов), после всех правок и надругательств (по перестановке местами инклюдов):
"Fatal Python error: Cannot recover from stack overflow."
В коде много структур такого типа:
Может из-за этого ему стек бомбануло..Код:SINFO:
.WORD INFO0, INFO1, INFO2, INFO3, INFO4, INFO5, INFO6, INFO7, INFO8, INFO9
.WORD INFO10, INFO11, INFO12, INFO13, INFO14, INFO15, INFO16, INFO17, INFO18, INFO19
.WORD INFO20, INFO21, INFO22, INFO23, INFO24, INFO25, INFO26, INFO27, INFO28, INFO29
.WORD INFO30, INFO31, INFO32, INFO33, INFO34, INFO35, INFO36, INFO37, INFO38, INFO39
.WORD INFO40, INFO41, INFO42, INFO43, INFO44, INFO45, INFO46, INFO47, INFO48, INFO49
.WORD INFO50, INFO51, INFO52, INFO53, INFO54, INFO55, INFO56, INFO57, INFO58, INFO59
.WORD INFO60, INFO61, INFO62, INFO63, INFO64, INFO65, INFO66, INFO67, INFO68, INFO69
.WORD INFO70, INFO71, INFO72, INFO73, INFO74, INFO75, INFO76, INFO77, INFO78, INFO79
.WORD INFO80, INFO81, INFO82, INFO83, INFO84, INFO85, INFO86, INFO87, INFO88, INFO89
.WORD INFO90
INFO0:
.BYTE 0, 0, 0, 0
.BYTE 1
.BYTE 45., 148., 104., 0, 0, 0
.BYTE 0
В принципе все эти метки нафиг не нужны просто в одном из проходов нужно адресами массивы заполнить, а в коде на них ссылок нет.
.EXTERN ALL - пытается все метки из инклюдов в "уме" удержать?
Да, есть такой косяк. Сохраняй в UTF-8. Русскоязычные текстовые строки (.ASCII, .ASCIZ) работают только при сохранении в кодировке KOI8-R и запуске компилятора на Python 2. Будем исправлять. Пока, к сожалению, так.
Хорошо, добавим.Цитата:
2. не понимает RETURN только RET
#0bчисло.Цитата:
3. не понимает #^B1111000011010000 (вроде бы был разговор про двоичную запись)
Вроде как в математике используются круглые скобки :)Цитата:
4. не понимает <> скобки в выражениях #<2+2>
Не очень понял ситуацию.Цитата:
5. В инклюдах не видит переменные объявленные ниже. (компилирует в один проход?)
копаю дальше...
.EXTERN ALL - пытается все метки из инклюдов в "уме" удержать?
Ты в основной программе (назовём её main.mac) пишешь .include ”file.mac” и ниже этого объявляешь переменные типа Screen=40000 ?
Если да, и ты хочешь чтобы переменная Screen виделась внутри файла file.mac – пиши .extern all в файле main.mac (или .extern Screen).
издевательство!
как вы демы на ассемблере пишите ???
у языка есть синтаксис - либо вы поддерживаете его - либо меняйте название !!!
warum?
Я это к тому, что есть куча исходников под MACRO-11 в которых нужно будет делать много мелких правок.
Если писать с нуля то без разницы конечно.
Да все просто - если переменная объявлена ниже инклюда то в нем она не видна.
И если у тебя много инклюдов то и вставлять их нужно в порядке объявления переменных (меток) в них, что не очень удобно.
В итоге когда исправил все синтаксические косяки - завалился стек при компиляции.. возможную причину я указал.
Не знал, что на БК были ассемблеры с поддержкой арифметики в угловых скобках. Всегда писали #Metka+2, а не #<Metka+2>. Но если действительно есть такой стандарт, можно добавить в PDPy11.
- - - Добавлено - - -
Всё равно непонятно. Давай на примере:
у тебя есть main.mac и в нём .include ”file1.mac” и .include ”file2.mac” (именно в таком порядке)
Ты объявил переменную в file2.mac, а хочешь использовать её в file1.mac
Но она не видится.
Так?
Python 3?Цитата:
В итоге когда исправил все синтаксические косяки - завалился стек при компиляции.. возможную причину я указал.
А у тебя там точно не получилось рекурсивных инклюдов?
А это не на БК (на ней свет клином не сошёлся), это стандарт языка ассемблера MACRO-11
Не догадываешься, почему?
Я тебе больше скажу - у него (ассемблера MACRO-11) ещё и приоритета операций нет.
И ^B - это, по сути, указание операции, а не указание основания - ^C, например - это вычисление комплементарного (до 1) значения.
Ты доку по MACRO-11 не пробовал читать?
Если речь про арифметику с метками, то в PDPy11 в случае неоднозначного толкования нужно писать признак метки - двоеточие. Например, JMP 2:+2 означает переход на 2 байта после локальной метки 2:
Сочувствую ему. В XXI веке нет смысла писать арифметические выражения без приоритетов. Человека без 30-летнего бэкграунда Macro-11 это обескураживает.
У нас инверсия числа делается префиксом ~ как в других современных языках. Ну и запись двоичных и 16-ричных чисел тоже по стандартам современных языков.Цитата:
И ^B - это, по сути, указание операции, а не указание основания - ^C, например - это вычисление комплементарного (до 1) значения.
Как мы уже выяснили, ты всё равно с Macro-11 никуда не уйдёшь. Наш кроссассемблер задумывался для домашних компьютеров, а не для поддержки софта от DEC. В первую очередь PDPy11 для БК 0010 и 0011М. Во втору очередь - для УКНЦ. В третью - для Союз-Неона.
Чтобы что? Чтобы сделать точный клон Macro-11, которым всё равно не станут пользоваться фанаты олдскульного софта от DEC?Цитата:
Ты доку по MACRO-11 не пробовал читать?
Сделайте поддержку обоих синтаксисов: 0b и ^b, это не трудно
как с круглыми скобками собираетесь разрешать конфликт определения адресаций и арифметических выражений?
(a-b)/2(R1) вот такое как распарсить? А <a-b>/2(R1) (или <<a-b>/2>(R1) - более наглядно) - обычная индексная адресация. Правда не стоит копировать MACRO-11 и всё таки сделать скобки не декоративными, а реально определяющими приоритет операций.
Да и (R1) - это получается арифметическое выражение в скобках, относительная адресация 67, где R1 - имя метки, а не регистр. Или нужно делать сильно навороченный парсер с исключениями, который в результате превратится в монстра и всё равно не все исключения будет ловить.
Ещё сделайте защиту от рекурсивных включений, простой список инклюд, и если новая добавляемая инклюда уже есть в списке - то её игнорировать.
Вот для этого нужно сделать первичный проход со сбором всех меток, синтаксический разбор операндов и определение адресаций в командах, а потом уже вторичный проход, где будут вычисляться арифметические выражения и подставляться значения меток в ветвления. Я как раз хочу сделать такую штуку в своём BKTurbo, но кажется проще переписать его с нуля, чем изменить.
Не, чтобы можно было скомпилировать макровский исходник хотя бы с чуть меньшими усилиями. Добавить макровский синтаксис задания систем счисления чисел, способ записи строк в .ascii - это необходимый минимум.
Вообще, то разговор идёт про MACRO-11
А что, уже есть чем пользоваться? Тебе S_V_B уже привёл пример - написанный сейчас исходник не компилируется у тебя.
Человек делает кросс-ассемблер под себя. Пусть делает. А раз он (кросс-ассебмлер) не сможет обрабатывать старые исходники - он так и останется - только для него. Видимо он (человек) решил, что то, что удобно для него - будет удобно для всех. Пусть и остаётся со своим заблуждением
Если именно скомпилировать - то с запущенным эмулятором Патрона - мне не кажется, что какие то особые усилия нужны. А получаешь - гарантированно поддерживающий всё компилятор.
С моей точки зрения, чего действительно не хватает - это среды для написания исходника и без компиляции вообще. То есть пишешь исходник, а в фоне создаётся obj файл. Ну, если точнее - создаётся некая структура, из которой можно сделать obj файл тупым сохранением. И естественно - с полной поддержкой возможностей MACRO-11.
- - - Добавлено - - -
Макросы и условная компиляция.
Вообще-то, нет.
Кросс-ассемблер делается для БК-сообщества. Большая часть этих демок написана на PDPy11. Люди его используют. Пожелания всегда приветствуются от тех, кто хочет попробовать PDPy11. Баг-репорт от S_V_B уже принят в работу.
Это нужно только тебе, а ты не станешь пользоваться PDPy11. Так что условная компиляция пока подождёт.
- - - Добавлено - - -
Согласен.
Пока что приходится писать a/2-b/2(R1).
Подумаем. Наблюдение из практики: сложные арифметические выражения чаще встречаются не в коде, а в задании констант. Там никаких регистров в скобках не бывает, поэтому до сих пор не сталкивался с ощущением путаницы.
что значит были? ) и почему во множественном числе???
Круглые скобки используются при адресации MOV (R2)+, -(SP)
<> - ДЛЯ выражений и ASCIIкодов
не могло программирование так деградировать, не верю )))
- - - Добавлено - - -
наконец-то ! ты сам признал, что тратишь время на никому не нужный проект, поверь куча людей больше бы оценило оконный интерпритатор Вильнюс-Бейсика с УК-НЦ ROM или из исходников под\для Windows. Нативный Macro-11 не нужно клонировать, с ним (при желании) нужно просто работать в своё удовольствие, все средства для этого уже написаны, всё остальное ересь, дегенератство и упадничество. Дисциплины среди программистов никакой не стало ! Разбаловали вас.
Зря вы так ей Богу.. человек хоть что-то делает, а вы сразу какашками кидаетесь :)
Вот ты Хобот много написал чтобы так говорить... остались еденицы которые могут хоть что-то сделать, а с такой поддержкой.. любое желание писать пропадает :(
Удобство разработки не значит лень, а значит сокращение затрат по времени и нервам.
То что мне необходимо я написал и если заработает то значит не только для себя Manwe делал.
Если gid сделает, будет еще лучше - всегда нужна альтернатива, а не дремучее ретроградство :)
Этот проект не нужен только Hunta. А тем, кто реально программирует на БК, он нужен – я приводил список сколько всего люди сделали с помощью PDPy11.
Эта тема форума посвящена БК. Программирование для УКНЦ обсуждают в других ветках, и я там никому не предлагаю использовать PDPy11.
На БК не так. Для ASCII используется слэш или кавычки.
Ну и много наработали в Макро-11 для БК за последние годы? Хочется сравнить результаты с тем, что получено с помощью PDPy11.Цитата:
Нативный Macro-11 не нужно клонировать, с ним (при желании) нужно просто работать в своё удовольствие, все средства для этого уже написаны, всё остальное ересь, дегенератство и упадничество. Дисциплины среди программистов никакой не стало ! Разбаловали вас.
да ни в коем разе, просто ты так воспринял!
мне слишком нравится какие демки выжимает из БК Манвэ - это раз!
во вторых - у Манвэ так просто ничего не отобьёшь, я же просто своим мнением поделился т Манвэ думается воспринял это правильно.
в твоем прочтении я читаю презрение к нативной среде, работать с которой тебе не мешает ничего кроме привитой уже развязности и
избалованности.
в шапке главной объявлять всё глобальное в главном модуле - с каких пор это стало дремучим ретроградством )))
А про скобочки - назвался груздем = соблюдай синтаксис, а то что килобайты исходников с нормального Макро-11 переделывать под новодел???
ага! именно вот такая #0^B ))) Ура! Как альтернативно !!! Переделывай\вставляй нолики во все МАКРО-11 исходники, альтернатива пришла!!!
не слишком много, кое что есть даже опубликовано и в архиве...я не пишу на низком уровне :wink:
я паскалю+макро-11 - это Хобби для RT-11, под окошками дельфя, под досом турбопас )))
тебе чего прямых ссылок надо или прямой отчёт с исходниками по каждой программе ???
У меня хорошая память. А у Интернета ещё лучше. Ты говорил, что тебе нужен ассемблер для запуска на целевой системе RSX-11. Наш кроссассемблер никогда не планировался для запуска на БК, ДВК, УКНЦ, Электронике-60. Поэтому ты не будешь им пользоваться никогда. Вот твоя цитата с подтверждением:
да причём тут манеры)))
эх, ребята, жаль, что именно вы так всё воспринимаете...
просто я никак не ожидал, что автор демо с японским зонтом не знает синтаксис МАКРО-11,
а SVB любую критику воспринимает крайне резко - вот это уже манера.
Вы притягиваете какой-то левак и называете нативное программирование нех.словами и говорите о манерах - это странно немного ИМХО?
Именно в нативной среде весь кайф, а иначе в чём???