PDA

Просмотр полной версии : PASCAL + MACRO11 (УКНЦ-ДВК).



Страницы : [1] 2

hobot
07.12.2012, 17:28
Различные версии PASCAL, FAST-PASCAL, стандартные и дополнительные библиотеки функций и процедур.
Советы от программистов (если не лень им будет), полезные ссылки (проявляем инициативу), обсуждения (по настроению), программы (разгрузим немного тему программирования). УК-НЦ замечательная машинка для тех кто решит программировать на паскале ради собственного удовольствия (хобби).

К этому моменту в архиве и моём "личном" хламничке, и на этом форуме,
так или иначе опубликованы различные версии транслятора PASCAL.SAV и
библиотеки процедур и функций к нему PASCAL.OBJ. Очевидно что пара этих файлов зависимы друг от друга. В этой теме я постараюсь собрать ссылки на разбросанные по архиву и форуму различные версии системного паскаля, выложить т.н. "Учебный паскаль" в двух его реализациях, а именно:
ТЕКСТОВО-СИМВОЛЬНОЙ - для ДВК и УК-НЦ и с графическим интерфейсом от ИТО - он (если не ошибаюсь) работал только на УК-НЦ.

Конечно и обязательно будет тут и вариант УК-НЦ > ДВКашного "турбо-паскаля", независимой среды очень близкой к борланд-паскалю по философии и названиям типовых модулей (DOS - для работы с файловой системой, GRAPH - для работы с графикой). Старшая версия из известных мне имеет номер 2.2 и доработана была в Питере, затем включена в комплект поставки ПО для УК-НЦ "Альтернатива-2 УК-НЦ".

И наверное с него и следует начать, поскольку он по своему очень интересен. Но в рамках этой темы конечно невозможно будет (по ситуации) обойти вниманием и ассемблер, поскольку программы на паскале редко обходятся без т.н. "макро-вставок" - процедур и функций написанных на макро-11 (https://zx-pk.ru/threads/20444-pascal-macro11-(uknts-dvk).html?p=558147&viewfull=1#post558147).


Спасибо.



https://pic.maxiol.com/thumbs2/1608820077.787615380.pascalnewsalkossows.jpg (https://pic.maxiol.com/?v=1608820077.787615380.pascalnewsalkossows.jpg&dp=2)

pascal сборник для эмулятора ДВК. (https://zx-pk.ru/threads/20444-pascal-macro11-(uknts-dvk).html?p=1113305&viewfull=1#post1113305)


Различные версии и полезные ссылки !

hobot
07.12.2012, 18:29
Fast-Pascal v2.2 в составе пакета "Альтернатива-2"
>http://archive.pdp-11.org.ru/ukdwk_archive/ukncbtlwebcomplekt/ARS/NSK/NSK083.DSK<
>http://archive.pdp-11.org.ru/ukdwk_archive/ukncbtlwebcomplekt/ARS/NSK/NSK084.DSK<

>http://hobot.pdp-11.ru/ukdwk_archive/ukncbtlwebcomplekt/ARS/NSK/<
>http://zx.pk.ru/showpost.php?p=306895&postcount=1<

Fast-Pascal v1.1(1.2-?) исходники и полное описание
>http://archive.pdp-11.org.ru/ukdwk_archive/ukncbtlwebcomplekt/PASCALFAST/<
>http://hobot.pdp-11.ru/ukdwk_archive/ukncbtlwebcomplekt/PASCALFAST/<

Поскольку прилепленные к сообщению архивы с вариантами транслятора
у меня находятся на одном диске - некоторые файлы для привычной работы
нужно просто переименовать, присвоив им стандартные имена.

omsi-pascal v1.1G >http://zx.pk.ru/showpost.php?p=544006&postcount=94<
Адос pascal Полетаева на основе OMSI-PASCAL >http://zx.pk.ru/showpost.php?p=545716&postcount=285<

http://images.netbynet.ru/direct/c63f320b3e40e78f18c4c96fec9f3a98.png
в архиве pascal.rar

http://pic.pdp-11.ru/images/passm4.png
в архиве pascal_SM4.rar - файлы надо переименовать

http://images.netbynet.ru/direct/319a208b1228e4267fd913c1f30baa11.png
вариант (копия) Адос-Паскаля от Полетаева в архиве ados_var.rar

http://images.netbynet.ru/direct/077cbfca506b6a738905409963ef9f4b.png
в архиве pasSM4_VAR.rar - отличается размерами и процедурой трансляции.

:redface:

В рамках этой темы предлагаю любые обсуждения связанные с программированием, другими версиями трансляторов, системным, стандартным и дополнительным библиотекам, Фортран и Си ,так же немаловажные языки программирования на УК-НЦ и ДВК, заслуживают отдельной темы наверное?

El_Ju
07.12.2012, 19:44
Для ДВК был графический Паскаль. Не в том плане, что работал с графикой, а что рисовался граф программы, компилировался и после уже получался текст на Паскале. Далее стандартно. По такой технологии была сделана РДБ Микро. Я еще надеюсь когда-нибудь это увидеть :-). Заодно с исходниками самой РДБ. :-))). Кое какие сведения можно найти тут: http://alex.krsk.ru/.
Кстати, FAST-Pascal удалось побороть только после заглядывания в описание работы Турбо Паскаля (V3 который). Без этого одолеть текстовый редактор не получалось ;-).

hobot
07.12.2012, 20:09
Без этого одолеть текстовый редактор не получалось ;-).
Получалось ) У меня во всяком случае, в спокойной домашней обстановке - путём подсматривания вот в это приложение документации :


1
- 146 -




ПРИЛОЖЕНИЕ 1



КРАТКИЙ СПРАВОЧНИК КОМАНД РЕДАКТОРА



TАБЛИЦАъ1
------------------------------------------------------------
:КЛАВИША ИЛИ : ВЫПОЛНЯЕМОЕ ДЕЙСТВИЕ :
:ПОСЛEДОВАТЕЛЬ-: :
:НОСТЬ КЛАВИШ : :
------------------------------------------------------------
: : ПЕРЕМЕЩЕНИЕ ПО ТЕКСТУ :
: : :
: СТРЕЛКА : ПЕРЕДВИЖЕНИЕ МАРКЕРА НА 1 ПОЗИЦИЮ:ВПРАВО :
: ВПРАВО : :
: СТРЕЛКА : ВЛЕВО :
: ВЛЕВО : :
: СТРЕЛКА : ВВЕРХ :
: ВВЕРХ : :
: СТРЕЛКА : ВНИЗ :
: ВНИЗ : :
: <GOLD> : МАРКЕР В КОНЕЦ СТРОКИ :
: СТРЕЛКА : :
: ВПРАВО : :
: <GOLD> : МАРКЕР В НАЧАЛО СТРОКИ :
: СТРЕЛКА : :
: ВЛЕВО : :
: <GOLD> : МАРКЕР НА 12 СТРОК ВВЕРХ :
: СТРЕЛКА : :
: ВВЕРХ : :
: <GOLD> : МАРКЕР НА 12 СТРОК ВНИЗ :
: СТРЕЛКА : :
: ВНИЗ : :
: <GOLD>"4" : УСТАНОВИТЬ ТЕКУЩУЮ ПОЗИЦИЮ НА КОНЕЦ ФАЙЛА :
: <GOLD>"5" : УСТАНОВИТЬ ТЕКУЩУЮ ПОЗИЦИЮ НА НАЧАЛО ФАЙЛА:
: : :
: : КОРРЕКТИРОВКА ТЕКСТА :
: : :
: <ЗБ> : УДАЛЕНИЕ 1 СИМВОЛА СЛЕВА ОТ ТЕКУЩЕЙ :
: : ПОЗИЦИИ :
: <GRAY> : УДАЛЕНИЕ 1 СИМВОЛА СПРАВА ОТ ТЕКУЩЕЙ :
: : ПОЗИЦИИ :
: <ВК> : ВСТАВКА СИМВОЛА КОНЦА СТРОКИ СЛЕВА :
: : ОТ ТЕКУЩЕЙ ПОЗИЦИИ :
: <GOLD><ЗБ> : УДАЛЕНИЕ ВСЕХ СИМАОЛОВ СПРАВА ОТ ТЕКУ- :
: : ЩЕЙ ПОЗИЦИИ С УДАЛЕНИЕМ СИМВОЛА КОНЦА :
: : СТРОКИ :
: <GOLD><GRAY> : ТО ЖЕ БЕЗ УДАЛЕНИЯ СИМВОЛА КОНЦА СТРОКИ :
: : :
1
- 147 -




: : РАБОТА С УЧАСТКАМИ ТЕКСТА :
: : :
: <GOLD>"W" : ОТМЕТИТЬ НАЧАЛО УЧАСТКА ТЕКСТА :
: <GOLD>"В" : :
: <GOLD>"N" : ОТМЕТИТЬ КОНЕЦ УЧАСТКА ТЕКСТА :
: <GOLD>"Н" : :
: <GOLD>"У" : УДАЛИТЬ ОТМЕЧЕННЫЙ УЧАСТОК ТЕКСТА :
: <GOLD>"К" : СКОПИРОВАТЬ ОТМЕЧЕННЫЙ УЧАСТОК ТЕКСТА :
: : В ТЕКУЩУЮ ПОЗИЦИЮ :
: <GOLD>"П" : ПЕРЕМЕСТИТЬ ОТМЕЧЕННЫЙ УЧАСТОК ТЕКСТА :
: : В ТЕКУЩУЮ ПОЗИЦИЮ :
: <GOLD>"С" : СБРОС ОТМЕТОК ГРАНИЦ :
: : :
: : ДРУГИЕ ВОЗМОЖНОСТИ РЕДАКТОРА :
: : :
: <GOLD>"8" : ПОИСК ОБРАЗЦА ПО ТЕКСТУ :
: <GOLD>"7" : ВХОД В РЕДАКТИРОВАНИЕ ДРУГОГО ФАЙЛА :
: <GOLD>"^" : ПЕРЕКЛЮЧЕНИЕ РЕЖИМОВ "РУС" И "ЛАТ" :
: <CTRL/W> : РЕГЕНЕРАЦИЯ ЭКРАНА :
: <CTRL/Y> : ВЫХОД ИЗ РЕДАКТОРА :
------------------------------------------------------------

hobot
09.12.2012, 20:23
Мне совершенно ничего не известно о данном продукте, а самое главное
совершенно не помню откуда он взялся у меня на ЖД. В любом случае в
архиве NBSPAS.RAR(исходя из очень подробного авторского описания) содержится всё необходимое что-бы собрать и использовать данную версию. Полный архив прилепил к сообщению и добавил в раздел ДВК в папку NBSPASCAL (http://archive.pdp-11.org.ru/ukdwk_archive/dwkwebcomplekt/NBSPASCAL/)

RELEASE NOTES - тут же в архиве README.rar



RELEASE NOTES
-------------

NBS Pascal Version 1.6iec January 1986 for RT11
<..>
2.0 OPERATING SYSTEM SUPPORT


For historical and financial reasons, this compiler has only been
implemented under RT11. It has been used successfully with many versions
RT11 and TSX+.
<..>
4.0 BUILDING THE SYSTEM


The files contained within this release include the following logical
discs:

PASDOC.DSK

PASGUI.DOC - Original documentation for NBS Pascal (version 1.6i)
which should be read first.

PASDOC.DOC - Description of general improvements to NBS by Earl Chew

<..>


:redface:

hobot
09.12.2012, 21:02
Штука в том, что в этом архиве помимо всего прочего присутсвует уже собранный PASCAL.OBJ, странный файл PCL.SAV - который ищет PASCAL.SAV строго на устройстве SY: . И вот такой документ :


1) distributiwnye fajly nahodqtsq na magnitnoj lente. w zawisimosti
ot togo,na kakoj lentoprotqvke postawlena distributiwnaq lenta,
otwet polxzowatelq movet bytx mt0, mt1 i t.d.
2) pri generacii neobhodimo imetx dostato~no mesta na diske(okolo 1000
blokow,velatelxno neprerywnyh),na kotorom budut sozdawatxsq wremen-
nye fajly).
rekomendaciq.
predlagaem pered generaciej programmoj DSKINT sozdatx
na DK1: li~nyj disk, zatem, smontirowaw ego komandoj
MOUNT, sozdatx na nem programmoj REAKT katalog polx -
zowatelq [1,2],w kotorom i budut sozdawatxsq wremennye
fajly.
3) dlq translqtora(PASCAL.SAV) neobhodimo neprerywnoe prostranstwo 58-59
blokow,dlq biblioteki(PASCAL.OBJ) neobhodimo 73 - 90 nepreryw-
nyh blokow.



Содержимое архива PASCALD.RAR


\PascalD

[.] PAS0.OBJ PAS9.OBJ PASFOR.SAV PCL.SAV SYSF4.OBJ
[..] PAS1.OBJ PASA.OBJ PASFPP.OBJ PCLRAF.PAS SYSLIB.OBJ
CSI.PAS PAS2.OBJ PASB.OBJ PASFPP.SAV PDBIOR.PAS SYSMAC.SML
ERROR.PAS PAS3.OBJ PASCAL.HLP PASIMP.PAS PDGRAF.PAS VOC.PAS
HYPHEN.PAS PAS4.OBJ PASCAL.OBJ PASIMP.SAV PDHANO.PAS VOCE.PAS
INTRPT.PAS PAS5.OBJ PASCGN.PGN PASPRF.OBJ PDRAND.PAS
MACEIS.SAV PAS6.OBJ PASEIS.OBJ PASPRF.PAS PDROMA.PAS
MACSIM.SAV PAS7.OBJ PASFIS.OBJ PASSIM.OBJ SRCCOM.SAV
ODT.OBJ PAS8.OBJ PASFOR.PAS PASSIM.SAV STRING.PAS
48 File(s) 774158 bytes

Total Files Listed:
48 File(s) 774158 bytes




В целом как есть прилепил сюда и в раздел ДВК (http://archive.pdp-11.org.ru/ukdwk_archive/dwkwebcomplekt/PASCALD/).
Да же не уверен, что уже не выкладывал это и вполне возможно и в архиве давно лежит.

:confused_std:

hobot
09.12.2012, 22:02
http://images.netbynet.ru/direct/5c0e1563bde7c8f8096101858eaa82c9.png

http://images.netbynet.ru/direct/b151444c2336e639a9657dce56afb864.png


---------------------------------------------------------------
Учебный ПАСКАЛЬ
---------------------------------------------------------------
Имя программы:PSC.SAV

Запуск программы:
MX1>R PSC или
MX1>RU PSC


КОМАНДЫ МОНИТОРА


NEW - Создание нового файла.

EDIT - Вызов редактора текста.

COMP - Компиляция.

RUN - Запуск программы на выполнение.

OLD < Имя файла > - Чтение файла с диска.

SAVE < Имя файла > - Запись файла на диск.

TRACE - Трассировка программы

BYE - Выход.




КОМАНДЫ РЕДАКТОРА ТЕКСТА * EDIT *

<ПС> - Курсор на начало следующей строки.

<ВК> - Курсор на начало или конец строки.

<УДАЛ> - Удалить символ.

<ВСТ> - Вставить символ.

<ПРЕД>
<КАДР> - Предыдущая страница.

<СЛЕД>
<КАДР> - Следующая страница.

<НТ> - В начало текущей страницы.

<ЗБ> - Удалить символ.

<ПФ1> - Вставить строку.

<ПФ2> - Удалить строку.

<ПФ4> - Удалить символы правее курсора.

Су/ц - Выход.


Вроде бы успешно запускается и работает в UKNCBTL.

<ПС> - Курсор на начало следующей строки.
Только вот если с ПФ понятно, какая кнопка на УК-НЦ вместо ПС?
Без неё конечно набить тестовую программку не получится никак :redface:
Образ дискеты содержит :


Image : PSC.dsk

Format : DSK
Size : 800 Kb

Volume ID: RT11A
Owner :

File Blocks Date Bytes
---------- ------ ----------- ----------
PSC .SAV 60 19-Oct-1993 30'720
PSC .LST 3 31-Dec-1999 1'536
< UNUSED > 1523 779'776
---------- ------ ----------- ----------
2 Files, 63 Blocks
1523 Free blocks


Впрочем для УК-НЦ был(есть) собственный вариант "Учебного Паскаля",
с графическим интерфейсом пользователя от издателя ИТО. Этот образ
добавил в раздел ДВК в папку PSC (http://archive.pdp-11.org.ru/ukdwk_archive/dwkwebcomplekt/PSC/). - пускай отдельно там полежит(повесит).

:redface:

hobot
09.12.2012, 22:41
Как я уже писал связка PASCAL+MACRO очень удобное и правильное
решение для уменьшения размера исполняемого файла и увеличения
скорости работы программы в целом. Да и многие вещи удобнее писать
на ассемблере (по многим причинам). Поэтому, пользуясь случаем,
здесь повесим ссылку на описание языка Ассемблера для ДВК, что бы
было под рукой и не терялось из виду.

>MACRO-11 в библиотеке (http://archive.pdp-11.org.ru/BIBLIOTEKA/DVKTXT/macro11/)<

http://s20.rimg.info/c7e58de5e9188e58bcd0f23097c9c167.gif (http://smayliki.ru/smilie-1286301255.html)

El_Ju
10.12.2012, 10:41
Получалось ) У меня во всяком случае, в спокойной домашней обстановке - путём подсматривания вот в это приложение документации :

С инструкцией почти любой справиться :). У меня от описания был только огрызок, примерно, 20..120 странички. А описание стандартного Паскаля тут мало чем помогает.

hobot
10.12.2012, 16:38
С инструкцией почти любой справиться
От стандартного конечно ничем, согласен. Но у меня ситуация была такая, что версию 1.1 мне принёс один мощный Зеленоградский программист - полный пакет (с доками) на одной дискете. Его тогда прислали сюда с целью начинать внедрять в школах, как-то так. А вот борланд-паскаль - мне точно негде было подглядеть ))) Я только слышал тогда про "крутой" - "турбо-паскаль", но ПиСи был недосягаем.
Были у разрабов в студии несколько машинок и в классах университета (я ещё не поступил тогда), но помните такую вещь как "машинное время", кто ж его предоставил бы "пареньку с улицы". ) А вот, что доработали FAST-PASCAL до версии 2.2 я узнал только когда дискеты добытые Арсением изучал. (http://zx.pk.ru/showpost.php?p=306895&postcount=1)
Такие дела.

hobot
24.12.2012, 10:35
http://images.netbynet.ru/direct/428538efa03758c4e4ba1b83dbbfdf23.png

Пока у меня только документация (в pdf (http://archive.pdp-11.org.ru/BIBLIOTEKA/MicroPowerPascal_Jan82/MicroPowerPascal_Jan82.rar)) - она в свободном доступе давно лежит, а вот сам Паскаль где бы найти? Может у кого то есть ? Или кто-то может поделится ссылкой где копать? Спасибо !

http://images.netbynet.ru/direct/2d4818f4a653b0828593c5c213e89ca0.png

http://images.netbynet.ru/direct/57c36974c2aabeddd72ad74074fb0c3e.png

Этот документ в формате pdf даже в сжатом виде слишком объёмный
к этому сообщению его прилепить нельзя, к тому же повторюсь в сети
он есть сравнительно давно уже.

*в сообщении о fast-pascal добавил архив с полной документацией. (http://zx.pk.ru/attachment.php?attachmentid=38832&d=1355808839)

hobot
17.02.2013, 05:12
http://zx.pk.ru/showpost.php?p=558130&postcount=7 из этого поста,
сравнил (случайно) версию которую Patron давно давно выкладывал (и которая в архиве давно давно лежит), так вот там более продвинутый 1.3
Учебный Паскаль, кому интересно можно брать тут
>http://archive.pdp-11.org.ru/ukdwk_archive/dwkwebcomplekt/Algol_C_F77_Pascal_Lisp/PASCAL.DSK<
>http://hobot.pdp-11.ru/ukdwk_archive/dwkwebcomplekt/Algol_C_F77_Pascal_Lisp/PASCAL.DSK<

1.3 версия если сравнить шапочки вышла на 2 месяца позже, на образе
по ссылке все необходимые файлы.

http://savepic.ru/4024892.png

hobot
22.02.2013, 02:51
Ну да так и есть.
Расширяем набор процедур и функций стандартного паскаля.
На прилагаемой дискете нового в принципе ничего (на форуме уже
выкладывалось), но что бы данную тему освежить - самое то.

Подробности...

Содержимое диска:


Image : power_pascal.dsk

Format : DSK
Size : 800 Kb

Volume ID: PASCAL
Owner : ZX-FORUM

File Blocks Date Bytes
---------- ------ ----------- ----------
PASCAL.SAV 52P 22-Apr-1987 26'624
PASCAL.OBJ 83P 22-Apr-1987 42'496
MACRO .SAV 63P 21-Dec-1980 32'256
LINK .SAV 59P 31-Oct-1998 30'208
SYSLIB.OBJ 47P 19-Dec-1988 24'064
SYSMAC.SML 92P 31-Oct-1998 47'104
POWER .TTL 2P 02-Feb-1994 1'024
POWER .OBJ 6P 30-Jan-1994 3'072
POWER .PAS 9P 07-Feb-1994 4'608
POWER .SAV 13P 03-Dec-1993 6'656
BOX .MAC 11P 24-Jan-1993 5'632
BOX .OBJ 1P 31-Dec-1999 512
SHBOX .PAS 1 21-Feb-1981 512
SHBOX .SAV 4P 31-Dec-1999 2'048
< UNUSED > 1143 585'216
---------- ------ ----------- ----------
14 Files, 443 Blocks
1143 Free blocks


Библиотека POWER.OBJ содержит в себе:

Файл POWER.TTL
(* TEXT MODE *)
PROCEDURE INV(N:BOOLEAN);EXTERNAL;
PROCEDURE UNDERLINE(N:BOOLEAN);EXTERNAL;
PROCEDURE MODE(N:INTEGER);EXTERNAL;
PROCEDURE DKL(N:BOOLEAN);EXTERNAL;
PROCEDURE AT(X,Y:INTEGER);EXTERNAL;
PROCEDURE COLOR(A,B,C:INTEGER);EXTERNAL;

PROCEDURE SCREEN(N:BOOLEAN);EXTERNAL;

(* GRAPHICS MODE *)
PROCEDURE PLOT(X,Y,C:INTEGER);EXTERNAL;
PROCEDURE LINE(X,Y,XX,YY,C:INTEGER);EXTERNAL;
PROCEDURE DRAW(X,Y,C:INTEGER);EXTERNAL;
PROCEDURE CURSOR(A,B:INTEGER);EXTERNAL;
PROCEDURE PAINT(X,Y,C,CC:INTEGER);EXTERNAL;
PROCEDURE BOX(X,Y,XX,YY,C,T:INTEGER);EXTERNAL;
FUNCTION POINT(X,Y:INTEGER):INTEGER;EXTERNAL;

(* ALL AREA *)
PROCEDURE DISPLAY(N:INTEGER);EXTERNAL;
PROCEDURE PRINTER(N:INTEGER);EXTERNAL;
FUNCTION READKEY:CHAR;EXTERNAL;
FUNCTION KEYPRESSED:BOOLEAN;EXTERNAL;
PROCEDURE IK(N:BOOLEAN);EXTERNAL;
PROCEDURE ID(N:BOOLEAN);EXTERNAL;
PROCEDURE IP(N:BOOLEAN);EXTERNAL;
FUNCTION GD:INTEGER;EXTERNAL;
FUNCTION GIK:BOOLEAN;EXTERNAL;
FUNCTION GID:BOOLEAN;EXTERNAL;
FUNCTION GIP:BOOLEAN;EXTERNAL;



Программа POWER.SAV демонстрирует работу этих подпрограмм

http://savepic.ru/4090838.png

http://savepic.ru/4087766.png

http://savepic.ru/4072406.png

http://savepic.ru/4079574.png

Прямоугольники закрашенные УК-НЦ рисует очень шустро.
http://savepic.ru/4077526.png

А вот закрашивание большой площади медленное (короче говоря как в Бейсике).
http://savepic.ru/4067286.png

http://savepic.ru/4125673.png

http://savepic.ru/4126697.png

Ну после жёлтого - понятно будет ещё и белый. Долго. Медленно.
Бейсик сразу вспоминается как не крути. )
http://savepic.ru/4113385.png

Режимы экрана 10Х24 - ужасный режим нигде не видел
что бы использовался (или вроде была 1-а игра?)
http://savepic.ru/4117481.png

Игра про банки с вареньем? ) 20х24.
http://savepic.ru/4105193.png

40х24 - ИМХО:самый удобный режим для игр, которые ещё
предстоит написать для замечательного комп. УК-НЦ. )
http://savepic.ru/4109289.png

80х24.
http://savepic.ru/4077545.png

http://savepic.ru/4088809.png

Можно ещё добавить, что некоторые подпрограммы
это ESC-последовательности в одну строчку )
А некоторые конечно более сложные и не все могут
сами написать такое (по крайней мере сразу).

Процедура BOX в исходнике BOX.MAC и в
объектном модуле BOX.OBJ = псевдографические окна.
Меня она исключительно радует ) Кто автор (?) не знаю.
Но написал что бы просто показать окошки вот такую программу
с её использованием SHBOX.PAS :

PROGRAM SHOWBOX;
/* uses BOX.OBJ */
PROCEDURE BOX(A,B,C,D : INTEGER); EXTERNAL;

BEGIN

WRITE(CHR(27),'H',CHR(27),'J');
WRITELN(CHR(14),'rISUEM PSEWDOGRAFI^ESKIE OKNA',CHR(15));
BOX(12,6,68,18);
BOX(10,4,70,20);
WRITELN(CHR(7));

END.


http://savepic.ru/4087785.png


Попутно, хотелось бы спросить, возможно есть счастливые
обладатели OMSI PASCAL for RT-11 версии отличной от 1.1G ?

form
22.02.2013, 04:35
Попутно, хотелось бы спросить, возможно есть счастливые обладатели OMSI PASCAL for RT-11 версии отличной от 1.1G ?

На bitsavers 2.1 вроде валялся.

form
28.02.2013, 10:23
Наконец-то сделал нормальный паскаль вместо уродливого который "для ДВК". За основу был взят вот этот (http://archive.pdp-11.org.ru/ukdwk_archive/ukncbtlwebcomplekt/pascal/) как самый неиспорченный и, видимо, самый новый из паскалей этого вида.

Пасскаль приведен в порядок:
поддерживаются даты после 1999 года (в листинге)
показывает в листинге время, а не температуру воды в мыльнице
вместо "SM-4" вернул на место "PDP-11"

В аттачах старый вариант, патч и новый вариант.

Было:
.DA
28-Feb-2013

.TI
13:20:30

.RU PASCAL.OLD TEST ,TT:

TEST Pascal SM-4 28- -81 11:07 V1-895 Page 1
MINICOMPUTERS

Line STMT Level Nest Sourse Statement

1 PROGRAM TEST(INPUT, OUTPUT);
2 BEGIN
3 1 1 1 WRITELN('HELLO WORLD!')
4 END.

Errors detected: 0
Free memory: 5249 words

Errors detected: 0
Free memory: 5249 words

Стало:
.RU PASCAL TEST ,TT:

TEST Pascal PDP-11 28-FEB-2013 13:20 V1-895 Page 1
MINICOMPUTERS

Line STMT Level Nest Sourse Statement

1 PROGRAM TEST(INPUT, OUTPUT);
2 BEGIN
3 1 1 1 WRITELN('HELLO WORLD!')
4 END.

Errors detected: 0
Free memory: 5249 words

Errors detected: 0
Free memory: 5249 words

form
28.02.2013, 10:43
Где-то еще остались косяки - под mapped мониторами работает только в VBGEXE. Без этого или виснет намертво или если выставить VIRT$ - прога падает по MMU fault. В TSX работает. Наводит на мысль, что прога криво считает область памяти которую она может использовать и если не вписывается, наползает на USR.

hobot
28.02.2013, 14:24
вместо "SM-4" вернул на место "PDP-11"
Ух ты! Я как раз отлаживаю свой исходничек ! Ура!
Один вопрос, а почему за основу взят не OMSI? А его можно пропатчить на предмет даты? В результате моих экспериментов, я с ним сейчас работаю, поскольку исполняемый файл самый "лёгкий" по объёму получается (в моём случае 2-блока, что
не так уж и мало).

form
28.02.2013, 14:27
Ух ты! Я как раз отлаживаю свой исходничек ! Ура!
Один вопрос, а почему за основу взят не OMSI? А его можно пропатчить на предмет даты? В результате моих экспериментов, я с ним сейчас работаю, поскольку исполняемый файл самый "лёгкий" по объёму получается (в моём случае 2-блока, что
не так уж и мало).

Я его плохо знаю и как минимум не могу в нем собрать даже "Hello World" :)
Хотя в RSXовском помню собирал как-то.

hobot
28.02.2013, 14:39
Я его плохо знаю и как минимум не могу в нем собрать даже "Hello World"
Хотя в RSXовском помню собирал как-то.
В чём ты видишь разницу, если за основу Паскаля СМ-4 ДВКашного брался OMSI )

Шпора для form'a )



PROGRAM HELLOFORM;

BEGIN
WRITELN;
WRITELN(CHR(14),'pRIWET, ',CHR(15),'[form]');
END.


У меня тут реальный глюк.
Проверка в программе игнорирует вложенный в скобки AND, похоже, что
в процессе (на этапе ассемблера) теряется его смысл по соотношению с соседними AND - хотя его вложенность определена двойными скобками!
Пока не победил (
И ещё вопрос, попутный, помнится ты говорил, что ветвление CASE может не сработать? Можно подробней?
:smile:

form
28.02.2013, 14:40
В чём ты видишь разницу, если за основу Паскаля СМ-4 ДВКашного брался OMSI )

В том, что когда я попробовал скомпилить OMSI 2.1, он сказал, что не знает что такое writeln ;)
Дальше я и копаться не стал.
Тот, что я выложел а это один и тот же что и ДВКшный только новее и на OMSI не похож даже форматом листинга, прекрасно компилит.

hobot
28.02.2013, 15:31
Тот, что я выложел а это один и тот же что и ДВКшный только новее и на OMSI не похож даже форматом листинга, прекрасно компилит.
Мощно! Будем гонять ) Прямо сейчас первый прогон в UKNCBTL ! )

---------- Post added at 15:28 ---------- Previous post was at 15:03 ----------

Отлично всё, пока картинки и прочие вещи выкладывать не буду,
у меня слишком сырая программа, но вот финальный файл конечно удивил )
Утренний с OMSI OBJ-библиотекой собранный весил 13 блоков,
текущий с выше выложенным паскалем 21 блок ) Не хило так, а ведь пишет в SAV, в принципе ненужную всякую фигню - типа текст с объявлением ошибок на 7 блоков больше чем у OMSI? ) Конечно это не страшно, как-бы только его обозвать уже эту
версию паскаля ) Для коллекции в смысле? ) PASY2K.SAV и PASY2K.OBJ - наверное как-то так? )

---------- Post added at 15:31 ---------- Previous post was at 15:28 ----------


форматом листинга,
А ведь был на живой машинке и в школе у нас такой, которого вроде бы как и нет,
он в заголовке писал 8-bit и пищал на ^ ошибки ) И что то он мне так и не попался
пока что.

form
28.02.2013, 15:33
PASY2K.SAV и PASY2K.OBJ - наверное как-то так?

Я думаю лучше каталог назвать с y2k, а названия программ оставить :)

А я вот на CTAKAHе себе настоящий DECовский PDP-11 Pascal развернул вместо OMSI который полетел в мусорку :)

hobot
28.02.2013, 15:38
DECовский PDP-11 Pascal развернул
Почему его нельзя в RT-11 юзать? В чём несовместимость?

---------- Post added at 15:38 ---------- Previous post was at 15:36 ----------

Главное что бы в операторах не было расхождений, а их ведь не должно быть?
И в общей структуре программы (ну последовательность когда где что объявлять типы,
константы, переменные, функции, процедуры, тело программы (Application) и end.

form
28.02.2013, 15:38
Почему его нельзя в RT-11 юзать? В чём несовместимость?

Собственно в том, что он не для RT-11 :)

Немного оффтопа: зайди телнетом на pdp-11.org.ru - тебе понравится ;)

Логин GUEST, пароля нет. Поддерживается одна сессия - если залогинена, другим не отвечает...

NovaStorm
28.02.2013, 16:22
>зайди телнетом на pdp-11.org.ru
Ну этож не на реале? =)

form
28.02.2013, 16:23
>зайди телнетом на pdp-11.org.ru
Ну этож не на реале? =)

Как раз на реале.
Это мой 11/83 ;)

hobot
28.02.2013, 16:31
Ну этож не на реале? =)
Очень круто! Вижу LD7 какой-то тут ) АААААААААААААААААА ! )

---------- Post added at 16:31 ---------- Previous post was at 16:30 ----------

READ ONLY - а вот это правильно )

http://savepic.ru/4168768.png

form
28.02.2013, 16:34
Очень круто! Вижу LD7 какой-то тут ) АААААААААААААААААА ! )

На LD7 TCP/IP программы лежат :)
Эх, найти бы теперь TSX-Plus V6.5... По слухам кому-то дали добро его расшарить, но чем дело кончилось не ясно - последние сообщения по теме года 2007го еще...

---------- Post added at 19:33 ---------- Previous post was at 19:32 ----------


Очень круто! Вижу LD7 какой-то тут ) АААААААААААААААААА ! )

---------- Post added at 16:31 ---------- Previous post was at 16:30 ----------

READ ONLY - а вот это правильно )

Ну дык это живая система - жалко будет если кто-нибудь пару дисков проинитит :)

---------- Post added at 19:34 ---------- Previous post was at 19:33 ----------


.W
Uptime: 02:42:07
System use: Run=6%, I/O-wait=93%, Swap-wait=0%, Idle=0%
I/O Activity: User I/O=99%, Swapping I/O=0%

Job Line Pri State Size Connect CPU time Program Job name
--- ------ --- ------- ----- --------- -------- ------- ------------
1 1(0) 50 TI 62Kb 02:43:00 00:09:24 SYSMON ROOT
2* 2(0) 50 IN 37Kb 02:17:00 00:00:28 KMON ROOT
3 3(0) 50 TI 37Kb 00:02:00 00:00:09 KMON GUEST
5 Det. 50 HI 62Kb 00:02:00 00:00:04 RTELNT TCP/IP stack
6 Det. 50 SL-Swap 30Kb 02:43:00 00:00:00 WINPRT Window print
7 Det. 50 SL-Lock 62Kb 02:43:00 00:00:48 TCPIP TCP/IP stack
8 1(1) 40 TI 37Kb 02:03:00 00:00:35 KMON ROOT

.

hobot
28.02.2013, 16:43
Ну дык это живая система - жалко будет если кто-нибудь пару дисков проинитит
Да! Мощная у тебя там железяка! ) Кайф реально ! ) (http://pdp-11.org.ru/hecnet.pl)

---------- Post added at 16:39 ---------- Previous post was at 16:38 ----------

Я пока отрубился, но настройки вроде не пропадут же )

---------- Post added at 16:43 ---------- Previous post was at 16:39 ----------

Круче только если с УК-НЦшки подключиться )

http://savepic.ru/4168768.png

form
28.02.2013, 16:45
Круче только если с УК-НЦшки подключиться )

Ну можно эмулятором ДВК слинковать наверное TCP с С2.
Было бы интересно кстати как через TCP будет VTCOM/TRANSF работать. Мы в свое время с Andrey_Ak так связь устанавливали с его ДВК - в E11 довольно муторно настраивать.

Patron
28.02.2013, 17:42
Ну можно эмулятором ДВК слинковать наверное TCP с С2.Конфиг при этом может выглядеть так:



;
; pdp11 emulator config file.
;

[modules]

Ядро = Main_module.em



[objects]

ComPort = Ядро:Terminal_ComPort_Adapter
IP_Adapter = Ядро:Terminal_IP_Adapter
IP_Log = Ядро:Console



[links]

ComPort <==> IP_Adapter

IP_Adapter [Log] > IP_Log




; === INI SECTIONS ===


[ComPort.ini]
PortName = COM1
InitialStateOf[ShowPortUse]=1
SaveChangesFor[ShowPortUse]=0
InitialStateOf[StopReading]=0
SaveChangesFor[StopReading]=0
MinimalBreakTime_MKS = 3000



[IP_Adapter.ini]
Listen_on_IP =""
Listen_on_Port = 0
Connect_to_IP = 95.172.148.99
Connect_to_Port= 23
Extended_Log=0



[IP_Log.ini]
TabTitle =
InitialStateOf[StatusBar] = 0
SaveChangesFor[StatusBar] = 0
InitialStateOf[ControlBar] = 0
SaveChangesFor[ControlBar] = 0
InitialStateOf[Log]=0
SaveChangesFor[Log]=0
DumpMode=1



[Config.ini]
InitialStateOf[StatusBar] = 1
SaveChangesFor[StatusBar] = 0
ExtendedStartLog = 0
InitialStateOf[ControlBar]= 0
SaveChangesFor[ControlBar]= 0
ActiveWindowHandle=
ActiveConfigID=
InitialStateOf[Log]=0
SaveChangesFor[Log]=0

form
28.02.2013, 17:45
Сейчас соберу систему специально для эмулятора, чтобы с утилитками нужными - потестим. Наверное уже в профильную тему выложу.

hobot
01.03.2013, 09:01
Наверное уже в профильную тему выложу.
Да! ) Это очень интересно ! ) Только на моём аппаратике не работает com0com - хоть ты тресни )

form
01.03.2013, 09:19
Да! ) Это очень интересно ! ) Только на моём аппаратике не работает com0com - хоть ты тресни )

Честно признаюсь - понятия не имею что такое com0com ;)

Запустить тестовую систему пока не удается - падает при загрузке - видимо HD драйвер слишком заточен под конкретную конфигурацию. Надо ковырять... Где-то вроде пробегали исходники драйвера HD?

hobot
01.03.2013, 09:58
Надо ковырять... Где-то вроде пробегали исходники драйвера HD?
http://zx.pk.ru/showpost.php?p=436504&postcount=33

form
01.03.2013, 10:03
http://zx.pk.ru/showpost.php?p=436504&postcount=33

Там только огрызок.
Да и фиг с ним - разберу дизассемблером - он небольшой.

Patron
01.03.2013, 13:44
Там только огрызок.Вот более полный вариант: HD_v1.2 (http://zx.pk.ru/attachment.php?attachmentid=40131)

...

form
01.03.2013, 14:03
Собственно я уже разобрал дизассемблером и слегка даже переделал, сократив размер. Позже если не лень будет, выложу переделанный драйвер.

По файлу выше несколько мыслей:


.IIF NDF RTE$M, RTE$M =: 0
.IIF NDF MMG$T, MMG$T =: 0
.IIF NDF ERL$G, ERL$G =: 0
.IIF NDF TIM$IT, TIM$IT =: 0

Не несущие никакой нагрузки строки - просто захламляют исходник.


. = 116

HDMES:
.ASCIZ <CR><LF>/HD (177720) disk driver v1.2 2012/<CR><LF>

Вписывание мусора в официально документированные функциональные оффсеты не есть хорошо. Тем более, что места в install area полно и все упрощается если вписать эту строчку после JSR Rx в нсталяционном коде.


Mov PC, R0
Add #HDMES-., R0


Заменяется на .ADDR (а точнее в свете вышесказанного просто не требуется).


.DrSet MMGT, 2, O.GEN, NUM

Невозможно в принципе. Чтобы сделать подобный функционал потребуется серьезное усложнение кода.


.IIF GT .-1000 .ERROR

меняется на .ASSUME


.DrPtr

а?


.DrSpF <373>

не нужно по определению в виду отсутствия даже принципиальной возможности для функционала который требует этого.


O.GEN:
Tst R0 ; Arg = 0 ?
BEq 30$
BiS R3, HD.GEN ; Set SYSGEN bit.
Br 31$
30$:
BiC R3, HD.GEN ; Clear SYSGEN bit.
31$:
ClC
Return

CLC ничего не делает.


.IIF GT .-HDSTRT-1000 .ERROR

а?


Mov PC, R0
Add #HDMESC-., R0


MOV #HDMESC-HDBOOT,R0


.IIF EQ MMG$T .BlkW 5

Бесполезный мусор в теле драйвера.

Patron
01.03.2013, 14:14
Исходник драйвера HD далёк от идеала - это первый мой драйвер для RT-11, написанный 10 лет назад.

form
01.03.2013, 14:36
Исходник драйвера HD далёк от идеала - это первый мой драйвер для RT-11, написанный 10 лет назад.

Ну так развивать надо :)

---------- Post added at 17:19 ---------- Previous post was at 17:15 ----------

Предложение по расширению функционала:


.DRINS HD
RETURN

.ENABL LSB
JSR R1,10$
IMSG: .ASCIZ <15><12>/HD (177720) disk driver v1.2 2012/<15><12>
.EVEN
10$: MOVB (R1)+,R0
BEQ 20$
TSTB @#TPS
BPL .-4
MOVB R0,@#TPB
BR 10$
20$: MOV (SP)+,R1
RETURN
.DSABL LSB

.ASSUME . LE 400,MESSAGE=<;Install area too big>

.DRSET SILENT,15,O.SLNT,NO

O.SLNT: MOV #0,R3
MOVB R3,IMSG
.ADDR #AREA+4,R1
.ADDR #1000,R2
MOV R2,@R1
MOV #BMSG/1000,-(R1)
TST -(R1)
MOV R1,R0
EMT 375
BCS O.BAD
MOVB R3,BMSG&777(R2)
MOV R1,R0
INCB 1(R0)
EMT 375
BCS O.SYWL
MOV R1,R0
DECB 1(R0)
MOV #1,2(R0)
EMT 375
BCS O.BAD
O.GOOD: TST (PC)+
O.BAD: SEC
RETURN

O.SYWL: MOV @SP,R0
INC R0
CMPB #BR/400,(R0)+
BNE O.BAD
MOV R0,@SP
BR O.BAD

AREA: .BYTE 17,10
.BLKW 2
.WORD 256.
.WORD 0

.ASSUME . LE 1000,MESSAGE=<;SET area too big>
...
...
BMSG: .ASCIZ <15><12>/HD Boot-I-Cold boot/<15><12>
.EVEN

---------- Post added at 17:32 ---------- Previous post was at 17:19 ----------



[code][IP_Adapter.ini]
Listen_on_IP =""
Listen_on_Port = 0
Connect_to_IP = 95.172.148.99
Connect_to_Port= 23
Extended_Log=0

Кстати, IP у стакана сменился - теперь 178.49.9.102.
Кроме того на этом же адресе по 2023 порту есть OpenVMS - можно еще конфигу сделать :)

---------- Post added at 17:36 ---------- Previous post was at 17:32 ----------

Patron, еще просьба, чтобы не разбираться в конфигах. Сделай pls конфиг как default, только чтобы еще добавился второй терминальный порт 300/176500 который коннектится по IP.

Patron
01.03.2013, 15:26
конфиг как default, только чтобы еще добавился второй терминальный порт 300/176500 который коннектится по IP.Ну, второй порт в default.cfg есть:

[TerminalPort2.ini]
BaseIO_Address = 0176510
BaseVectorsAddress = 0310
DL11W_TerminalPort_ComponentDisabled = 0
DL11W_LineClock_ComponentDisabled = 1
DL11W_LineClock_Hz = 50
DL11W_TerminalPort_BitsPerByte = 11
DL11W_TerminalPort_BaudRate = 9600
DL11W_TerminalPort_CPS_Limit = 0


то же самое можно заметить и в отчёте шины о подготовке эмуляции:



bus: Подготовка эмуляции..
-----------------------------------------------------------------------------
Устройство Имя Компонент Адреса Векторы
-----------------------------------------------------------------------------
1801ВМ1 CPU ВЕ-Регистры 0177700:3
ВЕ-Таймер 0177706:3
Плата МС1201 CpuBoard Сетевой таймер 0100:1
ПЗУ-Бэйсик Отключен
ПЗУ-Пульт 0160000:0
ПЗУ-Загрузчик 0173000:256
ОЗУ 0177600:32
SEL2 0177714:1
SEL1 0177716:1
Диск HD HD 0177720:2
Плата DL11-W TerminalPort Порт терминала 0177560:4 060:2
Таймер LTC Отключен
Плата DL11-W TerminalPort2 Порт терминала 0176510:4 0310:2
Таймер LTC Отключен
Диск MX MX 0177130:2
-----------------------------------------------------------------------------



Если изменить настройки второго порта и добавить IP_Adapter, то получится как-то так: default2.cfg (http://zx.pk.ru/attachment.php?attachmentid=40132)

...

hobot
01.03.2013, 16:20
Y2K Pascal переместился в архив! > http://archive.pdp-11.org.ru/ukdwk_archive/dwkwebcomplekt/Y2K_PASCAL_form/

+ несколько учебников по ассемблеру закинул в PDP-библиотеку:

> http://archive.pdp-11.org.ru/BIBLIOTEKA/assembler_SM4/

> В. Лин - PDP-11 и VAX-11 Архитектура ЭВМ и программирование на языке ассемблера
(http://archive.pdp-11.org.ru/BIBLIOTEKA/assembler_pdp11_vax11/)
> Arthur Gill. Assembler PDP-11 - учебник. (http://archive.pdp-11.org.ru/BIBLIOTEKA/assembler_pdp11/)


(* очень прошу не забывать чему эта тема посвящена!
вот у меня Паскаль игнорирует AND и скотина продолжает его
игнорировать даже после того как его [form] пропатчил )

form
01.03.2013, 16:29
игнорирует AND

В чем это проявляется?
Я не увидел проблемы:
.RU PASCAL TEST TEST

Errors detected: 0
Free memory: 5213 words


.MAC TEST

.LIN/LINK:PASCAL TEST

.RU TEST
TEST!
AAA
127 & 31 = 31

.TY TEST.PAS
PROGRAM TEST(INPUT, OUTPUT);
VAR
A : BOOLEAN;
I : INTEGER;

BEGIN
WRITELN('TEST!');

A:= FALSE;
I:= 1;

IF (I < 2) AND NOT A THEN WRITELN('AAA');

WRITELN('127 & 31 = ', 127 AND 31)
END.


.

hobot
01.03.2013, 16:47
В чем это проявляется?
Я не увидел проблемы:
Тут наверное беда в том как это выглядит уже в ассемблере?
У меня вложенность такая
По координатам А и Б можно положить предмет, только тогда,
когда ((а<>x)and(б<>y))AND( и т.д. и т.п.
Так вот - на выходе уже в исполняемом файле он вложенные
обрабатывает как внешние, т.о. у меня по осям a и б две пустые линии...
Бред да? Я игру делаю, не смейся ) На УК-НЦ, на паскале ) Паскалю в общем )
Веселюсь )

form
01.03.2013, 16:48
У меня вложенность такая

Так ты дай конкретный пример - так придется гадать.

hobot
01.03.2013, 16:50
А должен был-бы только одно пустое место оставлять по x,y (

---------- Post added at 16:50 ---------- Previous post was at 16:49 ----------

http://zx.pk.ru/showpost.php?p=580999&postcount=44
так это и есть пример ) И тебе исходник надо?
Я могу скрин сделать?

form
01.03.2013, 16:51
А должен был-бы только одно пустое место оставлять по x,y (

---------- Post added at 16:50 ---------- Previous post was at 16:49 ----------

http://zx.pk.ru/showpost.php?p=580999&postcount=44
так это и есть пример ) И тебе исходник надо?
Я могу скрин сделать?


((а<>x)and(б<>y))AND( и т.д. и т.п.

Это не пример - это нечто вроде "как в книге не скажу какой". Ты напиши конкретно условие и параметры :)

hobot
01.03.2013, 17:12
Где то вот так :


REPEAT
A:=ROUND(RND*19);
B:=ROUND(RND*19);
UNTIL
((A<>GAMER.SX)AND(B<>GAMER.SY))AND
((A>0)AND(B>0))AND(STAGE[A,B]<>CHR(PREG1));


А получается (когда SAV запускаешь) как будто вот так :



REPEAT
A:=ROUND(RND*19);
B:=ROUND(RND*19);
UNTIL
(A<>GAMER.SX)AND(B<>GAMER.SY)AND
((A>0)AND(B>0))AND(STAGE[A,B]<>CHR(PREG1));

---------- Post added at 17:12 ---------- Previous post was at 17:01 ----------

Погоди вот картинка для наглядности сделал


http://savepic.ru/4189162.png

form
01.03.2013, 17:16
Вообще-то это идентичные условия :)

---------- Post added at 20:16 ---------- Previous post was at 20:12 ----------

Сделал на пробу с такой же вложенностью условия - работают отлично...

hobot
01.03.2013, 17:16
Вообще-то это идентичные условия
Как же? А вот вложенный что >0 обе он не игнорит между прочим )
Погляди на картинку - красные линии на поле то же должны звёздочками заполняться
однако этого не происходит, звёздочек не должно быть только там где @ ( это как раз и есть GAMER.SX и GAMER.SY и там где стены [] )

form
01.03.2013, 17:17
Как же? А вот вложенный что >0 обе он не игнорит между прочим )
Погляди на картинку - красные линии на поле то же должны звёздочками заполняться
однако этого не происходит, звёздочек не должно быть только там где @ ( это как раз и есть GAMER.SX и GAMER.SY и там где стены [] )

Я не знаю что там про звездочки, но оба условия которых ты написал полностью идентичны :)

hobot
01.03.2013, 17:20
Сделал на пробу с такой же вложенностью условия - работают отлично...
не совсем понял что ты предлагаешь? я тормоз )

---------- Post added at 17:20 ---------- Previous post was at 17:18 ----------


Я не знаю что там про звездочки, но оба условия которых ты написал полностью идентичны
А как-же (( )) двойные скобочки !

form
01.03.2013, 17:21
не совсем понял что ты предлагаешь? я тормоз )

Я говорю что поскольку ты не дал кода который можно скомпилить и проверить, я сам на пробу сделал код с аналогичными по вложенности условиями и он отлично работает. А в свете того, что ты выше говоришь что одно условие работает как другое (хотя логически они одинаковые) сильно подозреваю, что дело не в паскале :)

---------- Post added at 20:21 ---------- Previous post was at 20:20 ----------


А как-же (( )) двойные скобочки !

У тебя одни ANDы. Хоть ты их со скобочками пиши, хоть без - роли не играет. Максимум чего добьещься - изменишь количество проверок в случае ложности определнных частей условия, но конечный результат не изменится.

hobot
01.03.2013, 18:48
(хотя логически они одинаковые)
Да понятное дело что не в паскале, но условия не одинаковые же (
Я не совсем верно написал, там , гляди:

В первом случае - и так и должно как-бы быть
звучит так (логически) : перебираем всяческие значения для a и b пока
они ( (a<>sх) и (b<>sy)-одновременно, a не по отдельности!!! ) и ((обе больше нуля) - вот эта хрень срабатывает почему-то) и ( игровое поле в этом месте пустое) , тогда всё ура поехали дальше

Но на выходе получается так (логически): перебираем всяческие значения для
a и b пока они (a не равно sx) или ( b <> sy ) и ((обе больше нуля)) и (игровое поле в этом месте пустое), тогда неправильно, но всё равно ура поехали дальше.

Получается что вместо одной координаты игнорируются все позиции по sy и sx!
Какая-то фигня получается (см. рисунок выше). Туго ( Хобот (

---------- Post added at 18:48 ---------- Previous post was at 18:28 ----------

Получается что вместо одной координаты игнорируются все позиции по [a,sy] и [sx,b] ! Какая-то фигня получается (см. рисунок выше). Туго ( Хобот (

Patron
01.03.2013, 19:09
Какая-то фигня получается (см. рисунок выше)Нужно сделать тестовый вариант программы только с этой подпрограммой, модифицированной так, чтобы выводить в текстовом виде те координаты, где по её мнению надо нарисовать звёздочку.

---------- Post added at 18:09 ---------- Previous post was at 18:08 ----------

И выложить эту тестовую программу, чтобы все желающие могли её скомпилировать.

hobot
01.03.2013, 19:24
И выложить эту тестовую программу, чтобы все желающие могли её скомпилировать.
Да наверное так и сделаю (и кстати говоря не первый раз такая штука, однажды хоть убейся не работала проверка по вхождение переменной в рамки значений, но то было в Delphi) у меня там и так (для себя) для отладки все значения пишутся вокруг поля игрового (см. опять же картинку).

hobot
03.03.2013, 15:53
Залез (был повод) на дискету с исходниками ФАСТ-ПАСКАЛЯ
и дёрнул оттуда три демы для последней версии среды разработки (а именно версии 2.2)

Впервые появилaсь аббревиатура DEC и в этой демке и в шапке самой
среды ФАСТ-ПАСКАЛЯ, версия 2.2 - будем считать пока лучшей в серии.

http://savepic.ru/4172536.png

Графические демки Gyper

http://savepic.ru/4154104.png

и Синус

http://savepic.ru/4161272.png

ФАСТ-ПАСКАЛЬ и его модуль Graph - оперирует только двумя цветами,
оцените скорость заливки в GYPER.SAV - это скорее не заливка, а
инверсия ?

Все три программы на дискете прилепил.

hobot
09.03.2013, 16:07
Программа для FAST-PASCAL на дискете Titusa - disk24.dsk.

Оригинальную программу (прилепил в архиве к сообщению), нужно привести в такой вид :

http://savepic.ru/4195138.png
, тогда
после компиляции в среде версии 2.2
можно будет увидеть ночное небо :redface:

http://savepic.ru/4259649.png

hobot
15.04.2013, 03:53
http://zx.oberon2.ru/forum/viewtopic.php?f=10&t=85
Возможность кроссплатформенной разработки между ретро-платформами УК-НЦ, MS-DOS и ZX.
Одна из тем на форуме Оберон-клуб «VEDAsoft».

hobot
19.04.2013, 21:04
Для ДВК был графический Паскаль. Не в том плане, что работал с графикой, а что рисовался граф программы, компилировался и после уже получался текст на Паскале. Далее стандартно. По такой технологии была сделана РДБ Микро. Я еще надеюсь когда-нибудь это увидеть :-). Заодно с исходниками самой РДБ. :-))). Кое какие сведения можно найти тут: http://alex.krsk.ru/.
Кстати, FAST-Pascal удалось побороть только после заглядывания в описание работы Турбо Паскаля (V3 который). Без этого одолеть текстовый редактор не получалось ;-).

В по этой теме я проглядываю очень старые ДВКашные образы (все разные), может быть есть дополнительная информация? Как РБД МИКРО вычислить? Имена файлов?
Что нибудь такое? Любые подробности.

El_Ju
26.04.2013, 14:55
В по этой теме я проглядываю очень старые ДВКашные образы (все разные), может быть есть дополнительная информация? Как РБД МИКРО вычислить? Имена файлов?
Что нибудь такое? Любые подробности.
Вычислить очень просто, по подписи к диску :-). Оно тут точно пробегало. Имена главных файлов CREDB.SAV EDDB.SAV RETDB.SAV UNIDB.SAV SORDB.SAV соответственно: создание, редактирование, обслуживание, объединение и сортировка. Там еще что-то есть, но реально я пользуюсь последними четырмя. Создавать новые базы приходиться очень редко. Сама база состоит из трех файлов с одинаковым именем и расширениями DEF, ADF, TBF. Есть описание основных программ. К каждой программе свое описание. В отличии от большинства стандартных программ RT-11 довольно дружелюбна. В главных программах (EDDB RETDB) ? вызывает справку, аж из двух экранов :-). У остальных особо нечего объяснять. ПМСМ симпатичнее DBase II, экономнее расходывает дисковое пространство. Надежная, не помню что бы были какие-либо проблемы кроме нехватки места на диске. Про систему программирования сказать ничего не могу. Но надежду не теряю ;-).

Patron
26.04.2013, 15:54
Здесь всё, что я нашёл по РТК-Микро: RTK_Micro.zip (http://emulator.pdp-11.org.ru/misc/RTK_Micro.zip)

Vamos
26.04.2013, 17:53
Вот перечень файлов в дистрибутиве, красным выделено то чего никак не найти

распределение дистрибутива РТК микро на дискетах:

1. программы поддержки графики, система меню
2. документация на программы поддержки графики и систему меню
3. СУБД РТК микро (экранный интерфейс)
4. программный интерфейс РТК микро (в том числе и для СУБД),
средства генерации документов
5. документация на СУБД РТК микро, на средства генерации документов
и на программный интерфейс

рабочие файлы первой дискеты:
-----------------------------

GAS .SAV - транслятор графического ассемблера
GPA .SAV - транслятор графического паскаля
G85 .SAV - графический редактор
PGRF .SAV - печать графических файлов в 1-2 колонки
PRINT .SAV - печать текстовых файлов в несколько колонок
RTKMIC.QUE - данная справка
RTKMIC.MEN - рабочее меню
INTMEN.SAV - интерпретатор меню
EDIMEN.SAV - редактор меню
PRIMEN.SAV - программа печати меню
PEREST.GRF - тестовый пример для графического паскаля
ZWUK .GRF - тестовый пример для графического ассемблера


рабочие файлы второй дискеты:
-----------------------------

PGRF .DOC - документация по печати графических программ
ED .DOC - документация по текстовому редактору
GAS .DOC - документация по графическому ассемблеру
GPA .DOC - документация по графическому паскалю
G85 .DOC \
G851 .TXT ! - документация по графическому редактору
G852 .TXT !
G853 .TXT /
PRINT .DOC - документация по печати текстовых файлов
RDWR .LST - документация по программе копирования файлов
MENU .DOC - документация по системе меню
KLAV .DOC - документация по функциональным клавишам РТК микро


рабочие файлы третьей дискеты:
------------------------------

COLRDB.SAV - программа обслуживания столбцов
CRERDB.SAV - программа создания базы данных
EDRDB .SAV - редактор базы данных
MERRDB.SAV - программа слияния двух баз данных
SORRDB.SAV - программа сортировки базы данных
UNIRDB.SAV - программа объединения однотипных баз данных
KADR .ADF \
KADR .DEF ! - пример базы данных для СУБД
KADR .TBF /


рабочие файлы четвертой дискеты:
--------------------------------

RETRDB.SAV - программа поиска в базе данных
EDDOC .SAV - программа создания и редактирования шаблонов
документов и экранных форм
DEFRDB.PAS - файл описаний базы данных и виртуального массива
LIBRDB.OBJ - программный интерфейс РТК (СУБД и виртуальный массив)
LIBRTK.OBJ - программный интерфейс РТК (работа с окнами экрана)
LIBEK .OBJ - программный интерфейс РТК (работа с экраном и клавиатурой)
GENMEN.SAV - программа генерации процедуры меню
KADR .ADF \
KADR .DEF ! - тестовый пример для работы с шаблоном документа
KADR .TBF !
KADR .TXD /


рабочие файлы пятой дискеты:
----------------------------

DOC1 .SAV - программа обработки документации
RDBEK .DOC \ - документация на СУБД (экранный интерфейс)
RDBEK1.TXT /
RTKPR .DOC - документация на программный интерфейс РТК микро
(экранная работа)
RDBPR .DOC - документация на программный интерфейс РТК микро
(СУБД, виртуальный массив)
EDDOC .DOC - документация по редактору шаблонов документов

"графический" имеет смысл не графики, а графов :)
Так же в розыске библиотека LIBEK4.OBJ, если в тексте опечатка, то вроде она для терминалов VT 52/100. (см. вложения)

hobot
26.04.2013, 20:37
десь всё, что я нашёл по РТК-Микро:

Конечно это хорошо бы в теме по поиску файлов ( я имею в виду сообщения где выделены и названы не найденные компоненты ), а вот с УК-НЦ от СЭМЗ среди дискет
то же какая-то б\д шла (идёт) )))
Там примерно такой состав файлов (CHART.DSK - в архиве)



Image : chartbak.dsk

Format : DSK
Size : 800 Kb

Volume ID: MBD,RTKmicro
Owner : B&B

File Blocks Date Bytes
---------- ------ ----------- ----------
RT11QQ.SYS 68 15-Aug-1992 34'816
SWAP .SYS 27 03-Aug-1993 13'824
TT .SYS 2 15-Aug-1992 1'024
SL .SYS 12 15-Aug-1992 6'144
VM .SYS 2 15-Feb-1993 1'024
LP .SYS 6 29-Jun-1990 3'072
NC .SYS 29 08-Jul-1992 14'848
MZ .SYS 2 02-Jul-1994 1'024
LD .SYS 8 15-Aug-1992 4'096
STARTS.COM 1 06-Jun-1993 512
PIP .SAV 25 15-Aug-1992 12'800
DUP .SAV 45 15-Aug-1992 23'040
DIR .SAV 15 15-Aug-1992 7'680
DAY .SAV 4 15-Aug-1992 2'048
UST .SAV 3 15-Aug-1992 1'536
KLAV .SAV 18 15-Aug-1992 9'216
COLS .SAV 17 15-Aug-1992 8'704
RESORC.SAV 22 15-Aug-1992 11'264
HANDLE.SAV 7 15-Aug-1992 3'584
MZFORM.SAV 6 15-Aug-1992 3'072
TTY .SAV 3 07-Jan-1992 1'536
RDWR .SAV 2 10-Feb-1987 1'024
MSORBD.SAV 52 29-Oct-1992 26'624
MCREBD.SAV 49 08-Oct-1992 25'088
MCOLBD.SAV 56 23-Mar-1993 28'672
MEDRBD.SAV 72 01-Jul-1993 36'864
MRBD .HLP 21 24-Jul-1993 10'752
INTRDB.SAV 91P 13-Mar-1988 46'592
RETRDB.SAV 111P 17-Mar-1988 56'832
MERRDB.SAV 38P 17-Mar-1988 19'456
UNIRDB.SAV 26P 17-Mar-1988 13'312
GENRDB.SAV 67P 13-Mar-1988 34'304
SORRDB.SAV 37P 17-Mar-1988 18'944
CHART .SAV 47 15-Aug-1992 24'064
COLRDB.SAV 42P 17-Mar-1988 21'504
EDDOC .SAV 57 15-Aug-1992 29'184
EDRDB .SAV 62 15-Aug-1992 31'744
CRERDB.SAV 27P 17-Mar-1988 13'824
TPA .EXT 12 17-May-1993 6'144
TPA .HLP 12 17-May-1993 6'144
TPA .SAV 16P 17-Aug-1992 8'192
MENU .TPM 6 17-Aug-1992 3'072
USER .TPM 3 17-Aug-1992 1'536
NC .HLP 14 10-Jun-1993 7'168
SORRDB.DOC 6 05-Nov-1992 3'072
COLRDB.DOC 8 05-Nov-1992 4'096
MERRDB.DOC 7 05-Nov-1992 3'584
UNIRDB.DOC 9 05-Nov-1992 4'608
RETRDB.DOC 45 05-Nov-1992 23'040
GENRDB.DOC 26 05-Nov-1992 13'312
CHART .DOC 19 05-Nov-1992 9'728
RDBEK .DOC 51 05-Nov-1992 26'112
INTRDB.DOC 24 24-Nov-1992 12'288
SHRIFT.SAV 70 01-Jul-1993 35'840
SHRIFT.LST 25 27-Nov-1991 12'800
EDIC .SAV 22 15-Aug-1992 11'264
RUS .SAV 1 20-Sep-1992 512
LAT .SAV 1 20-Sep-1992 512
HELLO .BD 3 03-Aug-1993 1'536
< UNUSED > 27 13'824
---------- ------ ----------- ----------
59 Files, 1559 Blocks
27 Free blocks


Текст файла HELLO.BD :



************************************************** ***************************
На данной дискете содержатся наборы файлов, в сумме образующих две
независимых системы по созданию и обслуживанию баз данных. Руководства по ис-
пользованию соответствующих программ комплектов содержатся в файлах с расши-
рениями DOC и HLP. Прочитать их можно, используя имеющуюся на диске програм-
му TTY. Например, вы желаете прочитать руководство по слиянию баз данных
MERRDB.DOC . Команда для этого будет выглядеть так: TTY MERRDB.DOC
Листание текста вверх и вниз производится стрелками управления курсором .
Точно также читаются все текстовые файлы (руководство к пользовательской си-
стеме меню TPA.HLP, к "коммандеру" NC.HLP и т.д.). Конец просмотра -- клавиша
ВВОД. (Если после нажатия ВВОД система будет выдавать все сообщения русскими
буквами , дайте команду: LAT

Ж е л а е м у с п е х а !
************************************************** ***************************



Дискеты СЭМЗОВСКИЕ в архиве, если кто помнит дискета с БД считалась
с ошибкой - дискета CHART.DSK в принципе на замену, в целом всё что
касается УК-НЦшного комплекта по ссылке

тут> http://archive.pdp-11.org.ru/ukdwk_archive/ukncbtlwebcomplekt/SEMZdsk/

(зеркало)> http://hobot.pdp-11.ru/ukdwk_archive/ukncbtlwebcomplekt/SEMZdsk/

То что опубликовал Patron (за что ему огромная благодарность!) я так же подошью к архиву чуть позже. Но его набор образов правильнее наверное в раздел ДВК уже будет поместить.

Oleg N. Cher
26.04.2013, 20:52
Привет всем.

Начну с того, что сегодня пришла рассылка по Delphi и RAD Studio XE4, в которой Delphi декларируется как мультиплатформенное средство для быстрой разработки для компьютеров, ноутбуков, планшетов и мобильных устройств, включая MAC, iPhone, iPAD, также у Embarcadero есть планы сделать поддержку мобильной платформы Android.

Delphi и FreePascal — это Паскаль сегодня. Один из моих любимейших языков программирования. Язык прошёл долгий путь от “игрушки для учёных” до мощнейшего универсального средства разработки, на котором сделаны великолепные проекты, например, Total Commander (http://www.ghisler.com).

Построенное на здравых решениях, ядро языка Паскаль легко поддалось усовершенствованию и умощнению и пригодно для широчайшего класса практических задач. В России Delphi особенно популярен и всё ещё широко используется. Однако развитие языка идёт по принципу наращивания возможностей, и постепенно Delphi становится всё более громоздким, догоняя по сложности таких монстров как PL/1, C++ и Ada. С большой вероятностью мы можем предположить, что проще язык становиться не будет, ибо нужно поддерживать совместимость с накопившейся базой исходников и т.д. В конце концов такая стратегия развития неизбежно приведёт к трудностям, когда сложность уже невозможно будет контролировать.

В то же время есть язык программирования, получившийся за несколько десятилетий практического преподавания и решения различных задач методом методического и последовательного уточнения Паскаля. Это Оберон (http://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D0%B5%D1%80%D0%BE%D0%BD_(%D1%8F%D0%B7 %D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0% D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0 %B8%D1%8F)) — самый красивый из всех минималистичных языков, о котором мало кто слышал. Я смело утверждаю: Паскаль сегодня — это не только Дельфи (полученный методом наращивания), но и Оберон-2 (http://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D0%B5%D1%80%D0%BE%D0%BD-2_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0% B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2 %D0%B0%D0%BD%D0%B8%D1%8F)) / Компонентный Паскаль (http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D 1%82%D0%BD%D1%8B%D0%B9_%D0%9F%D0%B0%D1%81%D0%BA%D0 %B0%D0%BB%D1%8C) (полученные методом отбрасывания, пересмотра и уточнения целесообразности тех или иных средств). Благодаря тому, что над автором языка не довлела необходимость совместимости, он особенно на эту тему и не парился. И получившийся в итоге язык — цельный, компактный, мощный, кроссплатформенный в широком смысле (включая не только современные платформы, но и Amiga (http://zx.oberon2.ru/forum/viewtopic.php?f=3&t=39), и даже Atari (http://www.filewatcher.com/b/ftp/ftp.pgp.net/pub/atari/Programming/Oberon-0.html)). На Компонентном Паскале я успешно разработал мидлет для Java micro edition (http://zx.oberon2.ru/forum/viewtopic.php?f=27&t=38), не предвижу трудностей и в разработке для Android. Кроме одной: отсутствие инфраструктуры, да и вообще о таком использовании Оберонов мало кто знает. Оберон-2 и Компонентный Паскаль — мультипарадигменные языки для системного и прикладного программирования, они модульные, компонентные и объектно-ориентированные. Разработанные на диалектах Оберона операционные системы, компиляторы и другие программы — часто сами по себе произведения искусства. Они красивы, неординарны, компактны и достойны всяческих похвал. Оберон популярен в академической среде как способ записи алгоритмов (пришёл на смену Фортрану) и как минимальный язык для исследований. Он идеально подходит для обучения программированию. В России есть проект Информатика-21 (http://www.inr.ac.ru/~info21/), популяризующий применение Оберона для подготовки будущих программистов, ибо, помимо своих технических достоинств, Оберон даёт хорошее понимание технологий программирования и не зависит от коммерческих интересов крупных корпораций. Посмотрите чего наваяла моя малолетняя племянница после недели разговоров со мной о программировании (http://zx.oberon2.ru/forum/viewtopic.php?f=8&t=97). Благодаря простоте языка энтузиасты разработали много компиляторов Оберон-диалектов для различных платформ.

Вирт всегда считал правильным конструировать процессоры под языки, а не наоборот. Но, несмотря на это, Оберон-программы хорошо конвертируются в Си, Java, работают как на нативе, так и на .NET/JVM. Разрабатывается компилятор GPCP для LLVM. Мне принадлежит идея ZXDev ( http://zx.oberon2.ru/forum/viewtopic.php?f=10&t=21) — средства разработки на Обероне-2 для восьмибитного процессора Z80 и компьютера ZX Spectrum. Самая новая ревизия виртовского Оберона называется Oberon-07. Он ещё меньше по размеру, чем Оберон-2, и адаптирован для ARM-процессоров и архитектур большой разрядности. Вот такое направление развития Паскаля. Малоизвестное широким массам программистов, но красивое как произведение искусства. Уже более семи лет я активно применяю Оберон-технологии с пользой для своей деятельности, и программировать на чём-то другом уже мало хочется.

Однако, следуя традициям Дельфи, мы у нас на форуме пытаемся развивать язык Оберон, наращивая его теми средствами, которые кажутся нам необходимыми для практической разработки (например, Оберон-07 утерял различные типы целых, поэтому малопригоден для разработки для 8-битных процессоров). Также у вас есть возможность сделать для XDev поддержку любой интересующей вас платформы, как современной, так и ретро. Вот то моё хобби, к которому в итоге привёл меня рождённый УК-НЦ интерес к программированию. А начиналось всё с Pascal/Fast. :) Попытался по памяти восстановить программку из журнала «Информатика и образование», которую лет 20 назад переводил с Фокала на Паскаль и запускал на УК-НЦ. Я уже тогда понимал насколько Паскаль как язык удобнее, чем то, что пихалось вовнутрь ПЗУ разных бытовых машинок.

Так что приглашаю всех желающих на наш форум ( http://zx.oberon2.ru/forum), узнать больше о нашей деятельности и конечно об Оберон-технологиях. Спасибо за понимание.

P.S. Вот файлик Flower.pas, работающий в TurboPascal 7.1, да что-то у меня не сладилось записать его с помощью утилиты rt11dsk.exe на образ диска (вроде делает, но из Паскаля читает мусор). Будет желание — помогите, пожалуйста, адаптировать для Pascal/Fast. Чтобы цветочек получился круглый понадобится ввести аспект, корректирующий соотношение сторон экрана (домножить в процедурах рисования одну из координат (например, Y) на соответствующую УК-НЦ константу). Если что-то получится сделать, приложите, плиз, скриншот.

Ага вот ещё темка, которая может вас заинтересовать: Порт графической библиотеки Graph (из Turbo Pascal) под ZXDev ( http://zx.oberon2.ru/forum/viewtopic.php?f=10&t=85). Навеяно, само собою, тоже УК-НЦ. И хотя потом я больше занимался Спектрумом, потому что он стоял дома (а УК-НЦ в школе), но вспоминаю те славные денёчки, проведённые за УК-НЦ, с ностальгией. :)

hobot
26.04.2013, 22:26
Исходник из сообщения выше сразу же был мною "запихнут" в
fast-pascal c целью запустить и посмотреть "цветочек" на УК-НЦ.

Подробный отчёт с картинками.


http://savepic.net/3573915.png

Исходник был приведён к такому виду, что бы обеспечить
возможность компиляции в этой среде :



PROGRAM Flower;
{$i pas:Graph}

VAR
Gd, Gm: INTEGER;

PROCEDURE DrawFlower (x, y, radius: INTEGER; n: INTEGER; a1, a3, a5: REAL);
CONST
p = 3.1 { 0.0172 };
var
b1, b3, b5, q, r, dg, rd, cosRd, sinRd: REAL;
BEGIN
q := a1 + a3 + a5;
b1 := radius * a1 / q; b3 := radius * a3 / q; b5 := radius * a5 / q;
dg := 360.0;
REPEAT
rd := dg * p; q := n * rd;
r := ABS(b1 * SIN(q * 0.5) + b3 * SIN(q * 1.5) + b5 * SIN(q * 2.5));
cosRd := COS(rd); sinRd := SIN(rd);
MoveTo(x, y); LineRel(ROUND(r*cosRd), ROUND(r*sinRd));
PutPixel(x+ROUND((R+4.0)*cosRd), y+ROUND((R+4.0)*sinRd), WHITE);
Dg := Dg - 0.5;
UNTIL Dg = 0.0;
q := radius / 10.0;
REPEAT
n := 345;
REPEAT
PutPixel(x+ROUND(q*COS(n*p)), y+ROUND(q*SIN(n*p)), WHITE);
n := n - 15;
UNTIL n < 0;
q := q - radius / 50.0
UNTIL q < 0.0;
END {Flower};

BEGIN
Gd := 1; Gm := GraphAndText;
InitGraph(Gd, Gm);
SetBkColor(bLACK); SetColor(wHITE); ClearDevice;
DrawFlower(GetMaxX DIV 2, GetMaxY DIV 2, GetMaxY DIV 3 * 2,
5, 1.0, 0.25, 0.1);
ReadLn;
{ CloseGraph; }
END.



http://savepic.org/3448095.png

Единственное, что при нажатии на "эни_кей" и прекращения отрисовки
вместо "обычного" завершение вылетает сообщение об ошибке такого вида,

http://savepic.ru/4456850.png

но это не страшно - возможно в конце требуется какая-то процедура (про которую я забыл) и главное FLOWER.PAS рисует цветок ! )

Oleg N. Cher
27.04.2013, 01:55
Отлично, отлично, Слава! Я тут слегка подправил вариант, чтобы рисовал и серединку. Также ввёл коррекцию соотношений сторон, но в точном значении аспекта я не уверен (домножил по координате Y) — надо пробовать на реале. Кстати, в конце нужна процедура SetGraphMode(Text), тогда ошибка не возникает. А работать с образом диска у меня получилось с помощью плагина RT11dsk для Total Commander.

Ну и вот вариант на Обероне для Спектрума. Как видите, в нём легко угадывается старый добрый Паскаль. Рисует довольно медленно вследствие низкой скорости вещественных вычислений на Z80. Хотя ускорить конечно можно.

hobot
27.04.2013, 02:32
этот вариант красивее конечно - исходник из предыдущего сообщения доступен по клику на данном сообщении.
http://savepic.net/3572906.png
(http://zx.pk.ru/attachment.php?attachmentid=41207&d=1367024078)

hobot
27.04.2013, 03:35
Какая то система обучения? В общем всем желающим предлагаю поизучать, возможно на дискете не полный комплект файлов.
Предположительно для ДВК.


Image : UPDATE.dsk

Format : DSK
Size : 800 Kb

Volume ID: RT11A
Owner :

File Blocks Date Bytes
---------- ------ ----------- ----------
TETRIS.GAM 28P 04-Apr-1986 14'336
BANK .OBJ 119 14-Jul-1999 60'928
L .OBJ 1 14-Jul-1999 512
GBMP .046 3 14-Jul-1999 1'536
A .100 1 14-Jul-1999 512
A001 .100 1 14-Jul-1999 512
A996 .100 1 14-Jul-1999 512
A997 .100 1 14-Jul-1999 512
A998 .100 1 14-Jul-1999 512
A999 .100 1 14-Jul-1999 512
AOS .100 14 14-Jul-1999 7'168
AOS001.100 1 14-Jul-1999 512
AOS002.100 1 14-Jul-1999 512
AOS003.100 1 14-Jul-1999 512
AOS004.100 1 14-Jul-1999 512
AOS005.100 1 14-Jul-1999 512
AOS006.100 1 14-Jul-1999 512
AOS007.100 1 14-Jul-1999 512
AOS008.100 1 14-Jul-1999 512
AOS009.100 1 14-Jul-1999 512
AOS010.100 1 14-Jul-1999 512
AOS011.100 2 14-Jul-1999 1'024
AOS012.100 1 14-Jul-1999 512
AOS013.100 1 14-Jul-1999 512
AOS014.100 1 14-Jul-1999 512
AOS015.100 1 14-Jul-1999 512
AOS016.100 1 14-Jul-1999 512
AOS017.100 1 14-Jul-1999 512
AOS018.100 2 14-Jul-1999 1'024
AOS019.100 1 14-Jul-1999 512
AOS020.100 1 14-Jul-1999 512
AOS021.100 1 14-Jul-1999 512
AOS022.100 1 14-Jul-1999 512
AOS023.100 1 14-Jul-1999 512
AOS024.100 1 14-Jul-1999 512
AOS025.100 1 14-Jul-1999 512
AOS026.100 1 14-Jul-1999 512
AOS027.100 1 14-Jul-1999 512
AOS028.100 1 14-Jul-1999 512
AOS029.100 1 14-Jul-1999 512
AOS030.100 1 14-Jul-1999 512
AOS996.100 1 14-Jul-1999 512
AOS997.100 2 14-Jul-1999 1'024
AOS998.100 2 14-Jul-1999 1'024
AOS999.100 3 14-Jul-1999 1'536
DPOISK.100 1 14-Jul-1999 512
MIN .100 1 14-Jul-1999 512
OBMP01.100 5 17-Nov-2012 2'560
OBMP02.100 2 14-Jul-1999 1'024
OBMP03.100 2 14-Jul-1999 1'024
OBMP04.100 2 14-Jul-1999 1'024
OBMP05.100 2 14-Jul-1999 1'024
OBMP06.100 2 14-Jul-1999 1'024
OBMP07.100 2 14-Jul-1999 1'024
OBMP08.100 2 14-Jul-1999 1'024
OBMP09.100 2 14-Jul-1999 1'024
OBMP10.100 2 14-Jul-1999 1'024
OBMP11.100 4 14-Jul-1999 2'048
UPORW .100 1 14-Jul-1999 512
UPORW1.100 1 14-Jul-1999 512
YBMP01.100 3 14-Jul-1999 1'536
YBMP02.100 3 14-Jul-1999 1'536
YBMP03.100 5 14-Jul-1999 2'560
YBMP04.100 1 14-Jul-1999 512
YBMP05.100 1 14-Jul-1999 512
YBMP06.100 3 14-Jul-1999 1'536
YBMP07.100 1 14-Jul-1999 512
YBMP08.100 1 14-Jul-1999 512
YBMP09.100 1 14-Jul-1999 512
YBMP10.100 1 14-Jul-1999 512
YBMP11.100 1 14-Jul-1999 512
GBMP .146 3 14-Jul-1999 1'536
GBMP .246 3 14-Jul-1999 1'536
AOC .SAV 84 14-Jul-1999 43'008
BLYPAS.SAV 78 14-Jul-1999 39'936
LYPAS .SAV 145 14-Jul-1999 74'240
SLYPAS.SAV 63 14-Jul-1999 32'256
< UNUSED > 947 484'864
---------- ------ ----------- ----------
77 Files, 639 Blocks
947 Free blocks


И наверное немного не по теме )

hobot
27.04.2013, 20:21
Причина: Оптимизация и исправление неточностей
Да! Во первых выросла скорость отрисовки, если раньше он каждый лучик по отдельности рисовал, теперь одним проходом сразу весь узор рисует!
Надо ещё уточнить значение max-имумов в библиотеке fast-pascal, они вполне могут быть поправлены под какую нибудь из ДВКашных видеокарт(режимов).
Исходник для fast-pascal обновился, забирайте по клику на картинке.
http://savepic.net/3556566.png (http://zx.pk.ru/attachment.php?attachmentid=41207&d=1367024078)

hobot
28.10.2013, 12:55
Сегодня же - Международный день анимации ! (http://kino.itop.net/node/1895) )

ASCMAN.PAS(SAV) - на прилепленном образе,
что-бы запустить и посмотреть в динамике -
наваял от настроения, четыре кадра-примитив.
http://s3.hostingkartinok.com/uploads/images/2013/10/ab1845a1213b8bd61c92c62e19479807.png

Но всё по теме - написано на ПАСКАЛЕ! )

PROGRAM ASCMAN;
/* ARCHIVE.PDP-11.ORG.RU */

PROCEDURE GOTOXY(XX,YY: INTEGER);
BEGIN
WRITE(CHR(27),'Y',CHR(32+YY),CHR(32+XX));
END;

PROCEDURE WAIT(T: INTEGER);
VAR WT: INTEGER;
BEGIN
IF T>0 THEN FOR WT:=T DOWNTO 0 DO;
END;

PROCEDURE PROMOTKA(S: INTEGER);
VAR P: INTEGER;
BEGIN
IF S>0 THEN FOR P:=1 TO S DO WRITELN;
END;

PROCEDURE POS1(X,Y: INTEGER);
BEGIN
IF (X>=0)AND(Y>=0) THEN BEGIN
GOTOXY(X,Y);WRITE(' ## ');
GOTOXY(X,Y+1);WRITE(' # # ');
GOTOXY(X,Y+2);WRITE(' # # ');
GOTOXY(X,Y+3);WRITE(' ## ');
GOTOXY(X,Y+4);WRITE(' ######## ');
GOTOXY(X,Y+5);WRITE(' # # # # ');
GOTOXY(X,Y+6);WRITE(' # # # # ');
GOTOXY(X,Y+7);WRITE(' # # ');
GOTOXY(X,Y+8);WRITE(' ## ');
GOTOXY(X,Y+9);WRITE(' ## ## ');
GOTOXY(X,Y+10);WRITE(' # # ');
GOTOXY(X,Y+11);WRITE(' ## ## ');
END;
END;

PROCEDURE POS2(X,Y: INTEGER);
BEGIN
IF (X>=0)AND(Y>=0) THEN BEGIN
GOTOXY(X,Y);WRITE(' ## ');
GOTOXY(X,Y+1);WRITE(' # # ');
GOTOXY(X,Y+2);WRITE(' # # ');
GOTOXY(X,Y+3);WRITE(' ## ');
GOTOXY(X,Y+4);WRITE(' ######## ');
GOTOXY(X,Y+5);WRITE('# # # # ');
GOTOXY(X,Y+6);WRITE('## # # ## ');
GOTOXY(X,Y+7);WRITE(' # # ');
GOTOXY(X,Y+8);WRITE(' ## ');
GOTOXY(X,Y+9);WRITE(' ## ## ');
GOTOXY(X,Y+10);WRITE(' # # ');
GOTOXY(X,Y+11);WRITE(' ## ## ');
END;
END;

PROCEDURE POS3(X,Y: INTEGER);
BEGIN
IF (X>=0)AND(Y>=0) THEN BEGIN
GOTOXY(X,Y);WRITE(' ## ');
GOTOXY(X,Y+1);WRITE(' # # ');
GOTOXY(X,Y+2);WRITE(' # # ');
GOTOXY(X,Y+3);WRITE(' ## ');
GOTOXY(X,Y+4);WRITE(' ######## ');
GOTOXY(X,Y+5);WRITE(' # # # # ');
GOTOXY(X,Y+6);WRITE('## # # ## ');
GOTOXY(X,Y+7);WRITE(' # # ');
GOTOXY(X,Y+8);WRITE(' ## ');
GOTOXY(X,Y+9);WRITE(' ## ## ');
GOTOXY(X,Y+10);WRITE(' # # ');
GOTOXY(X,Y+11);WRITE(' ## ## ');
END;
END;

BEGIN
PROMOTKA(24);
REPEAT
POS1(20,10);
WAIT(3000);
POS2(20,10);
WAIT(3000);
POS1(20,10);
WAIT(3000);
POS3(20,10);
WAIT(3000);
UNTIL 0>0;
END.


SHKEYS.PAS(SAV) - и до кучи там же, ещё одна программка на ПАСКАЛЕ
- выводит 10-ые номера и соотв. им символы.
http://s5.hostingkartinok.com/uploads/images/2013/10/0e1c02e1a955350ce134d3f2a2a8959f.png
ПАСКАЛЬ опять же )

PROGRAM SHOWKEYS;
VAR
INKEY ORIGIN 177560B: INTEGER;
KEY ORIGIN 177562B: INTEGER;
I: INTEGER;

/* SHKEYS v0.1a */

FUNCTION KEYPRESS: BOOLEAN;
BEGIN
KEYPRESS:=FALSE;
INKEY:=0;
IF(INKEY AND 128)<>0 THEN KEYPRESS:=TRUE;
END;

BEGIN
I:=0;WRITELN;
WRITELN('[ Номер \ Символ ]');
FOR I:=32 TO 127 DO WRITE('[ I=',I:2,' \ ',CHR(I),' ]');
REPEAT
WRITELN;
WRITELN('[',CHR(14),' tEST KLAWIATURY ',CHR(15),']');

REPEAT
UNTIL KEYPRESS;

WRITELN('[ 177562=',KEY:3,'. \ SYM=',CHR(KEY):3,' ]');
IF KEY=3 THEN
BEGIN
WRITELN(CHR(15),'[ SHKEYS v0.1a ]');
/*$C EMT ^O350 */
END;
UNTIL 0>0;
END.


(! Важно) Образ дискеты загружается только в эмуляторе ДВК - Patrona, но данные читаются везде конечно! )
На дискете присутствуют PASY2K.(SAV,OBJ) - пропатченный и поправленный form'ом и PASDWK.(SAV,OBJ) - OMSI Pascal.

:redface:

Titus
28.10.2013, 13:31
Образ дискеты загружается только в эмуляторе ДВК - Patrona, но данные читаются везде конечно! )
На дискете присутствуют PASY2K.(SAV,OBJ) - пропатченный и поправленный form'ом и PASDWK.(SAV,OBJ) - OMSI Pascal.

:redface:

Вообще-то этот диск можно подцепить вторым к любому эмулю УКНЦ, и запустить RUN MZ1:ASCMAN и посмотреть)
Я посмотрел на своем в режимах КЦГД, УКНЦ, КСМ, 15ИЭ )

hobot
28.10.2013, 14:18
Вообще-то этот диск (http://zx.pk.ru/attachment.php?attachmentid=43870&d=1382950213) можно подцепить вторым к любому эмулю УКНЦ, и запустить RUN MZ1:ASCMAN и посмотреть)
Я посмотрел на своем в режимах КЦГД, УКНЦ, КСМ, 15ИЭ )

Я же так и написал выше (http://zx.pk.ru/showpost.php?p=639059&postcount=71):

Образ дискеты загружается только в эмуляторе ДВК - Patrona, но данные читаются везде конечно! )

Можно добавить на образ MZ.SYS и выполнить команду COPY/BOOT:MZ на нужном устройстве ) Тогда и загрузиться прямо
с него можно в любом эмуляторе УК-НЦ и на живой машинке при случае, но тогда и лишние(избыточные) (HD,EM).SYS лучше из образа удалить.

Спасибо!

========================================

В режиме КЦГД - работает, а КСМ+КГД и 15ИЭ повис? (

========================================

Titus
28.10.2013, 14:35
В режиме КЦГД - работает, а КСМ+КГД и 15ИЭ повис? (
Повис, потому что ты сперва выбрал КЦГД. После него везде повиснет.
Ты сперва выбери КСМ и 15ИЭ.

hobot
28.10.2013, 14:52
http://s5.hostingkartinok.com/uploads/images/2013/10/184153088f35f5632b19c50adcda3a15.png

Шикарно ! ) Будем считать День Аниматора - зачёт ! )

исходники тут > http://zx.pk.ru/showpost.php?p=639059&postcount=71


------------
Я исходники прогоняю в эм.Patrona - чемпионская скорость ! )
Да и ДВК живую не достать, а тут ASCII-анимация понимаешь ) Самое ДВКашное )
15ИЭшное ))) (настроение хорошее, наверное из за погоды).

hobot
08.11.2013, 12:08
http://zx.pk.ru/showpost.php?p=642300&postcount=73

http://s3.hostingkartinok.com/uploads/images/2013/11/94af9a4767dbaa3c492532ee697419f8.png

Я не стал архив с исходным вариант 3-го тома менять,
просто добавил ещё одну папку с вариантом из поста по ссылке выше

http://archive.pdp-11.org.ru/BIBLIOTEKA/dwkbooks/book3/

Rybak27
18.12.2013, 13:36
Здравствуйте! Подскажите, а есть Паскаль, который можно загрузить с ленты?
Нету контролера КМД, поэтому софт приходится грузить с аудио.

Patron
18.12.2013, 14:55
Нету контролера КМД, поэтому софт приходится грузить с аудио.Если на плате распаян "Стык С2" - софт можно грузить через него.

Rybak27
18.12.2013, 16:57
Patron, подскажите, а как через него грузить?

hobot
18.12.2013, 17:48
Здравствуйте! Подскажите, а есть Паскаль, который можно загрузить с ленты?
Нету контролера КМД, поэтому софт приходится грузить с аудио.
Очень сильно сомневаюсь в такой возможности, если только учебный вариант от ИТО или FAST-PASCAL в режиме (текст и программа в памяти), что опять таки сильно сомнительно - ведь трансляторам Паскаля нужна ОС! ) Так что с лентой - наверное никак не выйдет. Это не спектрум и не БК !


Patron, подскажите, а как через него грузить?
Почитайте подробнее о HX протоколе, требуется доработка УК-НЦ, в качестве сервера используется эмулятор ДВК Patrona, вам становиться доступен практически весь софт и полноценная работа по шнурку к ПиСи.
(есть исключения - те программы которые идут только с дискет!).

http://youtu.be/wexswhkpUf8 <- видео с примером загрузки.
http://zx.pk.ru/showthread.php?t=20683

и в свежей теме "Вопросы по УК-НЦ?" это совсем недавно обсуждалось.

Очень прошу не отходить слишком далеко от МАКРО-11 и Паскальства )))

Patron
18.12.2013, 18:06
а как через него грузить?Если есть PC с COM-портом ( или есть адаптер COM-USB ) - достаточно спаять шнурок, после чего можно грузиться по этому шнурку из пункта меню "Загрузка через стык С2".

Подробнее ЗДЕСЬ (http://zx.pk.ru/showthread.php?postid=565387).

Последние версии ПО - ЗДЕСЬ (http://zx.pk.ru/showthread.php?postid=574674).

hobot
26.01.2014, 22:43
У меня тут снова затык (такой уж я программист:wink:) с опросом
клавиатуры под RT-11.

form, давненько подсказал мне более грамотную конструкцию для Паскаля, чем ту, что я прежде использовал - и всё равно не спасает от проскакивания как самого нажатия, так и значения нажатой клавиши.

Проблема такая. Программа должна выводить в непрерывном цикле
последовательно три экрана с различной информацией. Т.о. алгоритм такой примерно (это в исходнике у меня!) :



/* в шапке, в разделе VAR описаны глобальные переменные */
PROGRAM KLAVAPODSTAVA;
VAR
INKEY ORIGIN 177560B: INTEGER; /* RA-КЛАВ. */
KEY ORIGIN 177562B: INTEGER; /* RD-КЛАВ. */

FUNCTION KEYPRESS: BOOLEAN; /* ПИШУ ТАКУЮ ФУН-Ю */
BEGIN
KEYPRESS:=FALSE;
INKEY:=0;
IF(INKEY AND 128)<>0 THEN KEYPRESS:=TRUE;
END;

BEGIN
REPEAT
WRITELN(' ТЕКСТОВЫЙ БЛОК №1 - ПРИВЕТСТВИЕ');
WHILE NOT KEYPRESS DO;
WRITELN(' ТЕКСТОВЫЙ БЛОК №2');
WHILE NOT KEYPRESS DO;
WRITELN(' ТЕКСТОВЫЙ БЛОК №3');
WHILE NOT KEYPRESS DO;
UNTIL KEY=3;
END.


И вот подстава!
Первое привествие вроде бы норм выводится и ожидается нажатие
клавиши. Но после блока 2 сразу выводится блок 3 и только тогда
срабатывает ожидание нажатия. Более того сохраняется значение нажатой кнопки (что не допустимо), поскольку если в третьем блоке
какая-то функция на какую-то клавишу назначена и именно она была нажата в предыдущем опросе клавиатуры - то она автоматом выполняется. Как же это всё победить и что я не так делаю?
Иногда почему то срабатывает даже <ВК> который жмётся при запуске .SAV файла ???
:confused_std:
Буду рад любому ответу и комментариям.
У меня просто рушится вся система общения с игроком в предполагаемой ASCII игрушке, то есть "остро-необходимо" что бы
каждый раз опрос клавиатуры был гарантировано уникальным, ждал нажатия кнопки и дальше (в зависимости от значения регистра
данных - то есть "клавиши") будет что-то там ветвиться\вызываться.

Спасибо.

:confused_std:

SKcorp.
26.01.2014, 22:51
Буду рад любому ответу и комментариям.


ГОВНОКОД детктед!!!

Patron
26.01.2014, 23:16
У меня тут снова затык с опросом клавиатуры под RT-11.Надо доверить опрос клавиатуры операционной системе, а в программе для проверки готовности символа использовать ассемблерную вставку с вызовом .TTINR

А чтобы этот вызов не подвешивал программу в старших релизах RT-11 - добавить ассемблерную вставку, которая будет устанавливать нужные биты JSW.

---------- Post added at 22:13 ---------- Previous post was at 21:58 ----------



VAR SIMB :INTEGER;

PROCEDURE READSIM;
BEGIN
(*$C
EMT ^O340
BCS SKIP
MOV %0,SIMB(%5)
SKIP:
*)
END;


PROCEDURE TTSPEC;
BEGIN
(*$C
BIS #^O10000,@#^O44
*)
END;

hobot
10.02.2014, 18:34
Вариант OMSI-PASCAL, отличие от предыдущего в размере .OBJ библиотеки
- она больше на 6 блоков и файл получаемый после линковки на 3 блока
вырастает как минимум.

45693

hobot
11.03.2014, 23:25
Я давно это всё подозревал, а сегодня всё таки раскидал по нужным местам и просто запустил и вся теория разом подтвердилась, FAST-PASCAL и в том числе модуль GRAPH были впервые реализованы для ДВК-2М.


http://s7.hostingkartinok.com/uploads/images/2014/03/47e93686f51e2bc524c6f18631f4429b.png

http://s7.hostingkartinok.com/uploads/images/2014/03/178c75fa31dadea3f69386765de09e99.png

http://s6.hostingkartinok.com/uploads/images/2014/03/7f340f2f968f82c598537487ecdad534.png


Затем и на БК-11М


http://s7.hostingkartinok.com/uploads/images/2014/03/dd373f360c6fe9e9a0584ee6ae422ae6.png

http://s6.hostingkartinok.com/uploads/images/2014/03/718fb781958d9bb4c3162f6a52565dcf.png



О том что турбо среда и модуль граф начиная с самой первой версии имели УК-НЦ воплощение было известно и так. Ура! Всем кто знали и молчали троекратное! ) Учитывая, что модуль GRAPH двухцветный - сильно упрощает адаптацию под конкретное видео устройство каждой из отечественных PDP-шек.

:redface:

осталось ещё найти мифический GAS.SAV...:wink:

hobot
12.03.2014, 00:40
На закусочку к предыдущему сообщению (http://zx.pk.ru/showpost.php?p=687139&postcount=86), я до конца так и не доглядел,
вернулся к компу оно вылетело в систему, но первый кадр сделал сразу )

http://s6.hostingkartinok.com/uploads/images/2014/03/e58d3fb15ca7242080c806bf7256589d.png

Да! Теперь и на спектруме? http://zx.oberon2.ru/forum/viewtopic.php?f=10&t=85

hobot
14.03.2014, 20:29
Это издание просто очень интересно - хотя и посвящено не только
и не столько Паскалю и Ассемблеру, но основы программирования
там изложенные очень даже полезны ( я вот как триллер читаю сейчас)
для понимания местного ассемблера, у меня такого учебника не было,
я даже не знал, что такая чудесная книжка есть (узнал недавно).
http://s7.hostingkartinok.com/uploads/images/2014/03/ee3d391e60bd3282c55b29708c17c02a.jpg (http://publ.lib.ru/ARCHIVES/E/ERSHOV_Andrey_Petrovich/_Ershov_A.P..html)
http://publ.lib.ru/ARCHIVES/E/ERSHOV_Andrey_Petrovich/_Ershov_A.P..html

По ссылке обе части издания. Книга написана простым и понятным
языком и интересна помимо прочего очень информативными иллюстрациями.

hobot
17.03.2014, 23:09
:confused_std:

предложеный Patronom вариант

VAR SIMB :INTEGER;

PROCEDURE READSIM;
BEGIN
(*$C
EMT ^O340
BCS SKIP
MOV %0,SIMB(%5)
SKIP:
*)
END;
не работает и даже не пытается, процедура просто проскакивает как пустая при выполнении программы (что я не так делаю?)!!!
Да и почему вместо (SP) %5, a вместо R0 %0 ???


Надо доверить опрос клавиатуры операционной системе, а в программе для проверки готовности символа использовать ассемблерную вставку с вызовом .TTINR

А чтобы этот вызов не подвешивал программу в старших релизах RT-11 - добавить ассемблерную вставку, которая будет устанавливать нужные биты JSW.

.TTINR так же просто игнорируется при выполнении программы


И вот этот вариант сбоит - то есть пропускает ожидание через раз,
может реагирует и на отжатие???


var
INKEY ORIGIN 177560B: INTEGER;
KEY ORIGIN 177562B: INTEGER;

<...>
repeat
INKEY:=0;
until (INKEY AND 128)<>0;



Я в шоке!!!

Ребята подскажите как
1 - мне получить 100% гарантию ожидания нажатия клавиатуры в любом месте программы и в регистре данных клавиатуры или какой-нибудь переменной сохранить нажатую кнопку в виде кода или символа
2 - мне считать нажатие с клавиатуры без ожидания нажатия внутри
цикла например и опять таки иметь этот код или в регистре или в переменной (но тут обычно хватает тупо обнулить РА и потом уже
в цикле проверять что нажато было последний раз)
Буфер - про буфер и как его почистить я вообще не буду спрашивать, мне бы просто выяснить 1 и 2 пункты )

В чём моя ошибка? Что я не так делаю? Должен же быть человеческий и рабочий способ !!! Печаль! А главное последний
вариант работает, но хитро!!! Манипулировать с регистрами клавиатуры получается, но непредсказуемо как-то. Печаль два раза.

:frown:

Patron
17.03.2014, 23:30
вариант

VAR SIMB :INTEGER;

PROCEDURE READSIM;
BEGIN
(*$C
EMT ^O340
BCS SKIP
MOV %0,SIMB(%5)
SKIP:
*)
END;
не работает и даже не пытается, процедура просто проскакивает как пустая при выполнении программы (что я не так делаю?)!!!Легко заметить, что содержимое глобальной переменной SIMB изменяется только тогда, когда была нажата клавиша. Иначе процедура просто "проскакивает", не изменяя вообще ничего.

Использовать надо так:



VAR SIM,SIMB :INTEGER;

PROCEDURE READSIM;
BEGIN
(*$C
EMT ^O340
BCS EXIT
MOV %0,SIMB(%5)
EXIT:
*)
END;

PROCEDURE MOVEORM1;
LABEL 9;
VAR PW :^REC;
BEGIN
IF SIMB<>SIM THEN BEGIN
9: CASE SIMB OF
70B: BEGIN DX:=0; DY:=-1 ;DD:=3 END;
65B: BEGIN DX:=0; DY:=1 ;DD:=3 END;
64B: BEGIN DX:=-1; DY:=0 ;DD:=1 END;
66B: BEGIN DX:=1; DY:=0 ;DD:=1 END;
67B: BEGIN SIM:=SIM+1; IF SIM=67B THEN SIM:=70B;
IF SIM>70B THEN SIM:=64B;
SIMB:=SIM; GOTO 9
END;
105B: STOP;
ELSE BEGIN SIM:=SIM-1;IF SIM=67B THEN SIM:=66B;
IF SIM<64B THEN SIM:=70B;
SIMB:=SIM; GOTO 9
END
END; (* CASE *)
SIM:=SIMB;
END;
NEW(PW);
PW^.X:=P^.X+DX;
PW^.Y:=P^.Y+DY;
IF DIRECTION>0 THEN BEGIN
PW^.PRED:=P;
PW^.SLED:=NIL;
P^.SLED:=PW
END
ELSE BEGIN
PW^.SLED:=P;
PW^.PRED:=NIL;
P^.PRED:=PW
END;
P:=PW;

END;


(************************************************* ************)
(* M A I N P R O G R A M *)
(************************************************* ************)

BEGIN
REPEAT
READSIM;
MOVEORM1;
UNTIL ( LEN>1000 );
END.

hobot
17.03.2014, 23:40
Иначе процедура просто "проскакивает", не изменяя вообще ничего.
Но мне надо что бы она ждала нажатия !!! А она не ждёт !!! )
Я завтра поизучаю новую шпору, спасибо! )

---------- Post added at 23:36 ---------- Previous post was at 23:35 ----------


Легко заметить,
Спорно! ))) В моём случае особенно ! )))
http://s16.rimg.info/7509a8dd88b6e1a7d75037452ca7b933.gif (http://smayliki.ru/smilie-964157895.html)

---------- Post added at 23:37 ---------- Previous post was at 23:36 ----------

но в целом это единственный затык - весёлая (по своему) программа получается (типа анонс)

---------- Post added at 23:40 ---------- Previous post was at 23:37 ----------

что то там какой то сложный огород, координаты какие-то )))

Patron
17.03.2014, 23:48
Но мне надо чтобы она ждала нажатия !!!Нет ничего проще - просто переставить метку:



VAR SIMB :INTEGER;

PROCEDURE TTYIN;
BEGIN
(*$C
NEXT:
EMT ^O340
BCS NEXT
MOV %0,SIMB(%5)
*)
END;

hobot
18.03.2014, 13:04
Нет ничего проще - просто переставить метку:



VAR SIMB :INTEGER;

PROCEDURE TTYIN;
BEGIN
(*$C
NEXT:
EMT ^O340
BCS NEXT
MOV %0,SIMB(%5)
*)
END;

Ага!
И ещё вопрос можно всё таки пояснить спец. для меня
почему вы используете процентно-цифровые обозначения,
вместо символьных указателей R0 и (SP), с чем это связано?
И в таком случае зачем использовать метку, можно ли прописать
проверку нажатия так : BCS .-4 ?
:confused_std:
Спасибо за шпору и пояснения! )

Patron
18.03.2014, 13:17
почему вы используете процентно-цифровые обозначения, вместо символьных указателей R0 и (SP), с чем это связано?Понятия не имею - просто скопировал код из исходника.


И в таком случае зачем использовать метку, можно ли прописать проверку нажатия так : BCS .-4 ?Думаю, ДА.

hobot
18.03.2014, 13:23
(*$C
BIS #^O10000,@#^O44
*)

Тогда перед экспериментами очередными последний пока вопрос
Вот этот BIS нужно каждый раз перед опросом клавы вешать или единожды
в основном теле программы достаточно?

Patron
18.03.2014, 13:56
Вот этот BIS нужно каждый раз перед опросом клавы вешать или единожды в основном теле программы достаточно?Бит сам не сбрасывается, поэтому если программа его не сбрасывает, то и повторно устанавливать уже установленный бит программе не надо.

hobot
23.03.2014, 19:34
но в целом это единственный затык

Документация на английском:

RT-11 V5.6: System Subroutine Library Manual (http://pdp-11.org.ru/files/docs/rt-11/rtv56-syslib.zip)
RT-11 V5.6: System Macro Library Manual (http://pdp-11.org.ru/files/docs/rt-11/rtv56-sysmac.zip)
RT-11 V5.6: System Internals Manual (http://pdp-11.org.ru/files/docs/rt-11/rtv56-sysint.zip)
PDP-11 MACRO-11 Language Reference Manual (MACRO-11 Version 5) (http://pdp-11.org.ru/files/docs/rsx-11/rsxm41-macro11.zip)
PDP-11 FORTRAN IV Language Reference Manual (FORTRAN IV Version 2.6) (http://pdp-11.org.ru/files/docs/rsx-11/rsxm41-f4.zip)
PDP-11 FORTRAN 77 Language Reference Manual (FORTRAN 77 Version 5.0) (http://pdp-11.org.ru/files/docs/rsx-11/rsxm41-f77.zip)

на русском:

РАФОС-ПЛЮС: Системные таблицы и библиотеки. Руководство программиста. (http://pdp-11.org.ru/files/docs/rt-11/r23310.txt)
ФОДОС-2: Программирование периферийных устройств. (http://pdp-11.org.ru/files/docs/rt-11/fodos-dev.txt)
ФОДОС-2: Ассемблер. Руководство программиста. (http://pdp-11.org.ru/files/docs/rt-11/fodos-macro.txt)
ФОДОС-2: Системная макробиблиотека. Руководство программиста. (http://pdp-11.org.ru/files/docs/rt-11/fodos-sysmac.txt)
ФОДОС-2:Монитор системы. Руководство программиста. (http://pdp-11.org.ru/files/docs/rt-11/fodos-rt11mon.txt)

Откопалось вот тут http://zx.pk.ru/showpost.php?p=377816&postcount=35
и там же (в той же теме) сейчас читаю советы\вопросы\ответы по "правильному" опросу клавиатуры. И тут странное поведение одного и
того же алгоритма в случае http://zx.pk.ru/showthread.php?p=639059&highlight=ASCMAN#post639059 - см. исходник SHKEYS.PAS которую я написал как раз с целью опрос клавиатуры проверить - там всегда работает ожидание и никогда не проскакивает !!! Но почему то в другой программе такой алгоритм не срабатывает??? :mad_std:

в общем читаю старую тему, но если будут доп.комментарии\советы буду очень рад любому ответу.

Спасибо.

---------- Post added at 19:34 ---------- Previous post was at 17:54 ----------

2 form, а можно вот этот код как-то (не для фортрана), а более
универсально переписать (что бы получить честный обработчик клавиатуры = процедуру\функцию в программе на паскале?)


.TITLE KEYB
.MCALL .GTJB,.INTEN,.MTPS,.SYNCH
.GLOBL ATTACH,DETACH

; ПРИМЕР РАБОТЫ С ПРЕРЫВАНИЯМИ ИЗ ФОРТРАНА. ИСПОЛЬЗОВАНИЕ:
;
; EXTERNAL SUBR
; CALL ATTACH(SUBR)
; - УСТАНАВЛИВАЕТ ОБРАБОТЧИК ПРЕРЫВАНИЙ ОТ КЛАВИАТУРЫ
; ПРИ НАЖАТИИ КЛАВИШИ ВЫЗЫВАЕТСЯ CALL SUBR(KEY)
;
; CALL DETACH
; - ВОССТАНАВЛИВАЕТ ВЕКТОР ПРЕРЫВАНИЯ ОТ КЛАВИАТУРЫ
;
; КОНТРОЛЬ ПАРАМЕТРОВ НЕ ВЫПОЛНЯЕТСЯ, ТАКЖЕ НЕ ПРОВЕРЯЕТСЯ БЫЛ ЛИ
; РАНЕЕ ВЫЗВАН ATTACH/DETACH.

SAVKBV: .BLKW 2 ;МЕСТО ПОД ISR ВЕКТОРА КЛАВИАТУРЫ
FORSUB: .BLKW ;МЕСТО ПОД АДРЕС ФОРТРАНОВСКОЙ ПП
FORARG: .WORD 1,KBCODE ;ВЕКТОР АРГУМЕНТОВ ДЛЯ ПП
KBCODE: .BLKW ;АРГУМЕНТ ПП
SYNBLK: .WORD 0,0,0,0 ;БЛОК SYNCH
.WORD FORARG ;...ЗАПИШЕТСЯ В R0 ПОСЛЕ .SYNCH
.WORD -1,0 ;...ДОЛЖНЫ БЫТЬ -1,0
AREA: .BLKW 2 ;ПРОСТРАНСТВО ДЛЯ ВЫЗОВА .GTJB
JOBBLK: .BLKW 8. ;БЛОК ДЛЯ ПОЛУЧЕНИЯ ИНФОРМАЦИИ О
;ЗАДАЧЕ

ATTACH: .GTJB #AREA,#JOBBLK ;ПОЛУЧАЕМ ИНФОРМАЦИЮ О ЗАДАНИИ
MOV JOBBLK,SYNBLK+2 ;ПРОПИСЫВАЕМ НОМЕР ЗАДАНИЯ В БЛОК SYNCH
.MTPS #340 ;ЗАПРЕЩАЕМ ПРЕРЫВАНИЯ
MOV @#60,SAVKBV ;СОХРАНЯЕМ ВЕКТОР КЛАВИАТУРЫ
MOV @#62,SAVKBV+2 ;...
MOV #KBDISR,@#60 ;УСТАНАВЛИВАЕМ ОБРАБОТЧИК ПРЕРЫВАНИЙ
MOV #340,@#62 ;...КЛАВИАТУРЫ
MOV 2(R5),FORSUB ;СОХРАНЯЕМ АДРЕС ФОРТРАНОВСКОЙ ПП
.MTPS #0 ;РАЗРЕШАЕМ ПРЕРЫВАНИЯ
RETURN ;ВОЗВРАЩАЕМСЯ В ФОРТРАН

DETACH: .MTPS #340 ;ЗАПРЕЩАЕМ ПРЕРЫВАНИЯ
MOV SAVKBV,@#60 ;ВОССТАНАВЛИВАЕМ ВЕКТОР КЛАВИАТУРЫ
MOV SAVKBV+2,@#62 ;...
.MTPS #0 ;РАЗРЕШАЕМ ПРЕРЫВАНИЯ
RETURN ;ВОЗВРАЩАЕМСЯ В ФОРТРАН

; СЮДА МЫ ПОПАДАЕМ ПРИ НАЖАТИИ КЛАВИШИ НА КЛАВИАТУРЕ
; ПРИОРИТЕТ ПРОЦЕССОРА УСТАНОВЛЕН НА 7 (ВСЕ ПРЕРЫВАНИЯ ЗАПРЕЩЕНЫ).
; В ЭТОТ МОМЕНТ МЫ НЕ МОЖЕМ ВЫЗЫВАТЬ КАКИЕ-ЛИБО СИСТЕМНЫЕ ВЫЗОВЫ
; ТАК КАК ПРЕРЫВАНИЕ ВОЗНИКАЕТ АСИНХРОННО ПРИ ЗАРАНЕЕ НЕИЗВЕСТНОМ
; ИСХОДНОМ СОСТОЯНИИ.
;
; СНАЧАЛА МАКРОВЫЗОВОМ .INTEN МЫ ПОНИЖАЕМ ПРИОРИТЕТ ПРОЦЕССОРА ДО 5
; И СОХРАНЯЕМ РЕГИСТРЫ R4/R5 (В НАШЕМ СЛУЧАЕ ЭТО НЕ ИСПОЛЬЗУЕТСЯ).
;
; ЗАТЕМ МАКРОВЫЗОВОМ .SYNCH МЫ ПОНИЖАЕМ ПРИОРИТЕТ ПРОЦЕССОРА ДО 0
; И ПЕРЕКЛЮЧАЕМСЯ В КОНТЕКСТ ЗАДАЧИ. ЕСЛИ ПРЕРЫВАНИЕ ВОЗНИКЛО РАНЬШЕ
; ЧЕМ ОТРАБОТАНО СЛЕДУЮЩЕЕ (SYNCH БЛОК ИСПОЛЬЗУЕТСЯ), ПРОСТО ВОЗВРАЩАЕМ
; УПРАВЛЕНИЕ (ОБРАЩАЕМ ВНИМАНИЕ, ЧТО ПОСЛЕ INTEN/SYNCH ВОЗВРАТ ИЗ
; ПРЕРЫВАНИЯ ВЫПОЛНЯЕТСЯ КОМАНДОЙ RETURN (RTS PC), А НЕ RTI).
; ПОСЛЕ УСПЕШНОГО ВЫПОЛНЕНИЯ .SYNCH МЫ НАХОДИМСЯ В КОНТЕКСТЕ НАШЕЙ
; ПРОГРАММЫ И МОЖЕМ ВЫПОЛНЯТЬ СИСТЕМНЫЕ ВЫЗОВЫ.
;
; МЕЖДУ .INTEN И .SYNCH В СТЕК НИЧЕГО НЕ ПИСАТЬ!
;
; ЗАМЕЧАНИЕ: ТАК КАК МЫ ИСПОЛЬЗУЕМ KBCODE ЗДЕСЬ В ТЕОРИИ ПОЗВОЛЯЕТ
; ВОЗНИКНУТЬ СИТУАЦИИ КОГДА СТАРОЕ ЗНАЧЕНИЕ ЕЩЕ НЕ ОБРАБОТАНО, А НОВОЕ
; БУДЕТ ЗАПИСАНО ПОВЕРХ СТАРОГО.
;

KBDISR: MOVB @#177562,KBCODE ;;;СОХРАНЯЕМ КОД КЛАВИШИ
.INTEN 5 ;;;ПЕРЕХОДИМ В КОНТЕКСТ СИСТЕМЫ
.SYNCH #SYNBLK ;;ПЕРЕХОДИМ В КОНТЕКСТ ЗАДАЧИ
BR 10$ ;;ЕСЛИ SYNCH БЛОК ЗАНЯТ - ВОЗВРАТ
MOV R0,R5 ;ВЫЗЫВАЕМ ФОРТРАНОВСКУЮ ПП
CALL @FORSUB ;...С АРГУМЕНТОМ
10$: RETURN ;ВОЗВРАЩАЕМСЯ ИЗ ПРЕРЫВАНИЯ

.END


Для меня сложность в том, что проверенный способ в одном случае
работает, и при совершенно идентичном коде (речь не о программе,
а о опросе клавиатуры) в другом сбоит !!! и как я не ковыряюсь - нет 100% решения вопроса - прямо беда же !!! (мне уже не смешно даже). В данном же исходнике - некоторые ингредиенты просто не знакомы мне - например


SAVKBV: .BLKW 2 ;МЕСТО ПОД ISR ВЕКТОРА КЛАВИАТУРЫ


Нашёл из старых шпор "драйвер клавиатуры" для УК-НЦ
Может быть из него что то выдернуть ? Мне трудно ассемблер
читать\понимать картину в целом (беда огорчения)


PROGRAM TEST;

PROCEDURE PER;
BEGIN
/*$C .RADIX 8
MOV #OUTPOS, R2
; BIS #10000, @#44
MOV #4, R1
1$: TSTB @#176674
BPL .-4
MOVB (R2)+, @#176676
SOB R1, 1$
MOV #OK, R0
EMT 351
MOV WYDEL+4, STAPP
MOV WYDEL+4, STAPP1
MOV #8., R1
2$: TSTB @#176674
BPL .-4
MOVB (R2)+, @#176676
SOB R1, 2$
JMP KPER

OK: .ASCIZ <1><2><3><4><5>
OUTPOS: .WORD WYDEL,-1,POSLAT,-1,ZAPUSK,-1
WYDEL: .BYTE ,1,32,0,-1
POSLAT: .BYTE ,20,32,
.EVEN
STAPP: .WORD ,PROG,SIZE
ZAPUSK: .BYTE ,30,32,
STAPP1: 0

PROG: MOV @#300, OLD300
MOV PC, R0
ADD #PRERK-., R0
MOV R0, @#300 ; - ВКЛЮЧЕНИЕ ДРАЙВЕРА КЛАВИАТУРЫ
MOV @#320, OLD320
MOV PC, R0
ADD #PRERT-., R0
MOV R0, @#320 ; - МУЗЫКА ВКЛ.ОТКЛ.
MOV PC, R0
ADD #TIM-., R0
MOV R0, @#100 ; - МИГАНИЕ КУРСОРА
RETURN

TIM: RTI

PRERT: MFPS -(SP)
MTPS #340
MOV R0,-(SP)
MOV R1,-(SP)
MOV R2,-(SP)
BIC #17600, @#177716
CLR R0
MOVB @#177060, R0
CMPB R0, #'9
BGT 5$
CMPB R0, #'0
BLT CANCEL
SUB #'/, R0
MOV #1, R1
1$: ASL R1
SOB R0, 1$
MOV R1, LENGTH
BR CANCEL
5$: MOV PC, R1
ADD #TAB-., R1
2$: CMPB (R1), R0
BEQ 3$
TSTB (R1)+
BEQ CANCEL
BR 2$
3$: MOV LENGTH, R2
4$: BIS #200, @#177716
MOVB 1(R1), R0
SOB R0,.
BIC #200, @#177716
SOB R0,.
SOB R0, 4$

CANCEL: MOV (SP)+, R2
MOV (SP)+, R1
MOV (SP)+, R0
MTPS (SP)+
RTI

LENGTH: 0

PRERK: MOV R0, OLDR0
MOVB @#177702, R0
BIT #200, R0
BNE 2$
BIC #200, R0
ADD PC, R0
ADD #KEYS-., R0
TSTB (R0)
BEQ 1$
MOVB (R0), @#177070
CMPB (R0), #'+
BNE 11$
INC PRESS4
11$: CMPB (R0), #',
BNE 1$
INC PRESS6
1$: MOV OLDR0, R0
RTI
2$: BIC #260, R0
CMPB R0, #11
BNE 3$
TSTB PRESS4
BEQ 1$
MOVB #173, @#177070
CLR PRESS4
BR 1$
3$: CMPB R0, #5
BNE 1$
TSTB PRESS6
BEQ 1$
MOVB #175, @#177070
CLR PRESS6
BR 1$

TAB: .BYTE 'F,177
.BYTE 'Y,161
.BYTE 'W,145
.BYTE 101,137
.BYTE 'P, 125
.BYTE 'R, 113
.BYTE 'O, 103
.BYTE 114, 77
.BYTE 'D, 70
.BYTE 'V, 62
.BYTE '\,57
.BYTE '.,52
.BYTE ' ,47

TABDIE: .BYTE 'C,170
.BYTE 'U,153
.BYTE 113,132
.BYTE 'E,120
.BYTE 'N,107
.BYTE 'G,74
.BYTE '[,65
.BYTE '],55
.BYTE 'Z,50
.BYTE ' ,47
.WORD 0

KEYS: .BYTE 2,2,2,2,2, ,,33,';,0,0,0,'$,0,0,'','(,0,0,0,0,0
.BYTE '-,11,112,'!,'",'#,'E,'%,'&,'[,'],0,0,0,0,0,0
.BYTE 0,'F,'C,'U,113,'P,'N,'G,114,'D,0,0,0,0,0,0,0
.BYTE 'Q,'Y,'W,101,111,'R,'O,'B,'@,0,0,0,0,0,0,0,0
.BYTE '^,'S,'M,' ,'T,'X,'D,'<,0,0,0,0,0,'7,'0,'1,'4,'+
.BYTE 177,'C,'B,'>,'\,'V,0,0,0,0,0,'8,'.,'2,'5,12,15,15,101
.BYTE '_,'H,'Z,0,0,0,0,0,'9,12,'3,'6,14,12,'/,':,'=,'0,'),33
.EVEN

PRESS4: 0
PRESS6: 0
OLDR0: 0
OLD300: 0
OLD320: 0
SIZE= 3000
KPER: .RADIX 10
*/
END;

BEGIN
PER;
END.


к блоку KEYS есть отдельные пометки для системных клавишь в распечатке с которой набивалось (типа вот это "СТОП", а вот это "УСТ"). Последний листинг прилепил к сообщению.

MiX
23.03.2014, 19:51
Раз тут о программировании идет речь, тогда вам ссылку на имитатор.

http://phys.pspu.ru/parshin/pdp11/index.shtml

Может кому пригодится.

P.S Всю тему не читал.

hobot
23.03.2014, 20:47
тогда вам ссылку на имитатор.
больше подходит для этой темы http://zx.pk.ru/showthread.php?t=18079
или для этой http://zx.pk.ru/showthread.php?t=18069 ! Там кстати то же
много интересного ) Просто они уже уплыли чуть ли не в архив. )

Patron
23.03.2014, 21:12
клавиатура издевается !!!В приложении: KEYS.PAS (http://zx.pk.ru/attachment.php?attachmentid=46943) - тест ввода кодов нажатых клавиш с ожиданием и без.

...

hobot
24.03.2014, 00:10
Patron, я расковырял свои исходники с турбо-паскаля от "Зеленоградской гостинницы-2" которая под DOS и вот увидел там то же что и в вашем последнем примере - ожидание привязать не к факту нажатия, а к значению - через дополнительную переменную ! ) Видимо я там то же намучился с проскоками ) Должно сработать ТАМ ) KEYS.PAS понятное дело работает, но и SHKEYS.PAS работает, буду пробовать в той проге где нужен опрос с ожиданием. Спасибо!

В любом случае у меня уже целая копилка алгоритмов по опросу клавиатуры).
Может быть кто то предложит "супер" вариант работать с кнопками в обход RT-11 вообще! ) Насколько это сложно и главное хотя бы словесное (понятное) описание необходимых действий, исходник Alex_K работает, но малоинформативен в моём случае (это тот который на sysimage - скан-коды выдаёт).

Как обработать нажатие клавиш SHIFT (НР - они правильно зовуться), а повесить функцию ПАУЗА на красную кнопку? в теме по программированию form предлагал (когда-то) всякие хитрости выкладывать - я только ещё раз присоединяюсь к призыву - в этой или другой теме не важно )

Пойду я выкручиваться и экспериментировать - без опроса клавиш никак. (казалось бы очевидная вещь клавиатура, как делать общение
с пользователем без удобного инструмента для работы с клавой?)
:redface:

Patron
24.03.2014, 00:36
работать с кнопками в обход RT-11 вообще!При нажатии на клавишу происходит прерывание и управление передаётся в монитор. Чтобы работать напрямую с регистрами клавиатуры - нужно запретить у неё прерывания.

Но программа, работающая с регистрами клавиатуры напрямую - не будет запускаться в продвинутых мониторах. Гораздо лучше использовать системные вызовы, тем более, что они прекрасно работают.

hobot
24.03.2014, 01:52
Но программа, работающая с регистрами клавиатуры напрямую - не будет запускаться в продвинутых мониторах. Гораздо лучше использовать системные вызовы, тем более, что они прекрасно работают.
Да но в моём случае речь идёт о стандартных конфигурациях УК-НЦ и ДВК,
я бы (если честно) не хотел бы даже вникать в "низкий" уровень, иметь инструментарий типа "бац" - процедура - после её вызова клавиатура уже
целиком моя (программная), где есть опознавалка для шифтов, УСТ, СТОП и
СБРоса ! Удобно же! На УК-НЦ особенно. Проверка на нажатие этих кнопок. Мечты ) Сам я такое не напишу в ближ. время конечно. поскольку сам механизм - необходимый для этого не знаю\ не понимаю. А системные вызовы - несмотря на прекрасную работу - всё таки работают криво ! или я такой программист ) Просто я не понимаю почему в одном случае срабатывает, а в другом нет один и тот же алгоритм??? ) Вот честно - (больше не буду этот вопрос писать\задавать всем уже надоело наверное - но это так!). Ещё раз спасибо за подсказки и шпоры. Всех желающих по прежнему призываю делиться своими методами и не только касательно клавиш, а вообще по теме программирования.

MM
24.03.2014, 02:58
Уважаемый господин hobot, нет ли у Вас мнения, что клава недостоверно работает именно в Вашей М-ЭВМ ?
Я бы порекомендовал изучить процесс работы с клавой именно на самом низком программном уровне - т.к., возможно, не все ИС в Вашей М-ЭВМ исправны. Например, написать тест клавы на машкодах - самый примитивный, с последовательным опросом нажатий всей клавы.
Могу поверхносно предположить, что могут быть виноваты :
1. Некоррекное выставление признака внутри ВМ2 - главного или переферийного.
2. Некорректная обработка флагов в ПЛМ, в т.ч. спонтанная.
3. Некорректная работа собственно контроллера клавы - в т.ч. от пробоя статикой.
( Или полупробоя ).
4. Более конкретно можно ответить на эти предположения при запуске Вашего софта на др. экз. М-ЭВМ.

form
24.03.2014, 04:51
Но программа, работающая с регистрами клавиатуры напрямую - не будет запускаться в продвинутых мониторах

Продвинутости не нужно. Достаточно самого обыкновенного монитора с многотерминальной поддержкой. Даже если в конфигурации всего один монитор (такая конфигурация может использоваться для возможности полного управления терминалом и работы с 8битными символами без перелопачивания монитора).

В многотерминальном мониторе система автоматически восстанавливает состояние регистров и потому попытка запретить прерывания от клавиатуры не будет иметь успеха если только не отобрать у системы таймер. Я приводил пример как обойти это (а заодно и правильно выводить на терминал за которым работаешь, а не на консоль) не трогая таймер. Но все-равно там где для прямого обращения к регистрам нет никаких разумных причин, проще обойтись системными вызовами. Заодно программа, работающая через системные вызовы, будет нормально работать в RTEM и TSX :)

Patron
24.03.2014, 11:03
А системные вызовы - несмотря на прекрасную работу - всё таки работают криво !А можно увидеть тот исходник, скомпилированная из которого программа не может нормально использовать системные вызовы ?

hobot
24.03.2014, 15:44
Продвинутости не нужно.
Да! Нужен удобный инструментарий для работы с клавиатурой напрямую в ассемблере\паскале УК-НЦ и ДВК! ) Пример UKLOAD только без необходимости предварительно загружать UKLOAD в память, а иметь некую процедуру ИНИЦИАЛИЗАЦИИ - после вызова которой сразу происходят все нужные установки и появляется доступ к глобальным показателям в виде функций
которые можно в паскале оформить или проверять их состоянии макро-вставками - например : Нажат ли шифт? - тогда бип ! Нажат ли СТОП? - тогда пауза ! В таком духе. Я просто описываю движок который был в Зеленограде однажды написан, но UKLOAD - выжил вон сколько копий, а правильный движок существует теперь только для БК11М ) Печалька. Но может ещё обнаружиться. К нему же
кстати шли и редактор+процедурки для вывода спрайтов !!!
Проще говоря - DEСовский ПАСКАЛЬ на УК-НЦ превращался в
реально удобную среду написания программ для УК-НЦ!!! ) Этот пакет висит в объявлении розыскивается с самого
начала, вместе со "СТРАНОЙ МОНСТРОВ" под RT-11 )


Например, написать тест клавы на машкодах - самый примитивный, с последовательным опросом нажатий всей клавы. Я полностью согласен что изучить все эти подводные камни самое правильное решение. По поводу написания теста:
Я не на машкодах, я просто взял функцию под редакцией (после критических замечаний form'а ) и написал совсем коротенькую и простую SHKEYS.PAS исходник и протокол работы её тут
http://zx.pk.ru/showpost.php?p=639059&postcount=71 -
см. вторую половину сообщения по ссылке.
И могу вам сказать что она везде работает и всегда ожидает нажатия и даже в случае когда жмёшь кнопки с "двойным" показателем (ВК, стрелки курсора), не проскакивает следующего ожидания до тех пор пока пользователь не нажмёт УПР+Ц, затем она выдаст код клавиши 3, свою версию и выходит в монитор.
Она работает так как надо.
Вот где начинается издевательство над моим разумом:

А можно увидеть тот исходник, скомпилированная из которого программа не может нормально использовать системные вызовы ? - это немного коварный момент\вопрос ) Тут дело в том, что
1 - я пока ещё не использовал метод ориентированный на доп.переменную значения, я только убедился что вариант из SHKEYS.PAS и вот этот (не дословно!!!)


/*$C
EMT ^O340
BCS .-2
*/
- (там не совсем так конечно, но что бы просто понятно было -> первично вами предложенный ) там работают только первый тик цикла (а всего их допустим восемь). В конце
каждого тика нужно ждать кнопку, но после нажатия в конце первого тика - остальные семь просто пролетают, словно 340-го
емта там и в помине нет , вариант из SHKEYS просто пролетает
как будто я клавишу зажал и не отпускаю. От варианта нажатой клавишу (алфавитная, стрелка курсора, ВК) - не зависит, проскок!
Patron - уже подсказал (если верите мне - напомнил) решение,
я сам же в своих старых исходниках с ДОСовского паскаля к нему пришёл (см. KEYS.PAS) - но это только означает что штатные варианты работы с клавиатурой убоги по определению. Конечно я выкручусь и программа работать будет так как задумывалось )

form
24.03.2014, 16:34
штатные варианты работы с клавиатурой убоги по определению

Они напротив очень удобны и функциональны. Да, в однотерминальном RT-11 нельзя перехватить например код CTRL/O (CTRL/D в некоторых советских вариантах). Но это все. Других ограничений нет.
Надо только правильно выставлять настройки ввода которые по сути управляются всего двумя битами (плюс еще одним если надо вводить специфические символы вроде CTRL/S, CTRL/Q). Плюс макровызов .SCCA если надо CTRL/C самостоятельно вводить/обрабатывать.

Умение использовать все это позволяет писать полноценные программы, работающие везде, а не убожества которые напишут свою заставку и на том сдохнут ибо пытаются "правильно" работать ;)

Замечу также, что это на порядок проще физической работы, правильных примеров которой на моей памяти не продемонстрировал ни один программист в советские времена :)

hobot
24.03.2014, 18:14
Замечу также, что это на порядок проще физической работы,
Я согласен, но form, ты всё время рассуждаешь с вершины системщика, а мне нужно конкретно для УК-НЦ решение под неё заточенное. Когда ты говоришь"правильные" - ты подразумеваешь стандарты DEC. В большинстве случаев я с тобой согласен на 100%. Но "иногда" я говорю "правильные" в
рамках УК-НЦ (и только УК-НЦ) и если бы я сам Зеленоградским инструментарием в своё время не пользовался и его удобств не оценил - я бы и не вспоминал и не писал об этом.



по сути управляются всего двумя битами
Прошу ещё раз обратить внимание - что эти явные для тебя моменты для меня
совсем не явные !!! То есть - предполагается что бы сделать простой опрос клавиатуры работающий так как требуется по сценарию программы мне нужно
вникнуть в кучу низкоуровневной \ регистровой косвенно-непосредственной математики ? Логически и "педагогически"
это правильный подход, но в моём случае грусть и печалька.

Вот тут твой исходник для фортрана http://zx.pk.ru/showpost.php?p=693329&postcount=97 (кстати очень понравилось решение Титуса - в его шпоргалке в теме по программированию - вот он просто взял и обхитрил все эти штуки,
избежал всех проскоков и даже победил вывод символов на экран терминала - принято на вооружение однозначно!), так вот возвращаясь к твоему исходнику - даже наличие подробного комментария не делает его информативным для меня.

На данном этапе я думаю всё будет работать (я же сказал что путём
экспериментов "сразу в теле исходника") как нужно и на УК-НЦ, и на ДВК, а если всё будет совсем хорошо, для проверки можно будет
залить к прочим программам на твоём железе (там где символьных игр подборка) и протестить на рабочесть там.

Критерии оценки грамотности сильно зависят от точек зрения.
Я не профессиональный программер, но я сейчас ещё раз хочу
сказать, что ТЗ которое ставили перед разработчиками пакета
Magnifier они очень чётко и правильно выполнили - чему
я сам был свидетелем. Возможно этот софт ещё найдётся.

Какой прок школьнику за УК-НЦ от того будет ли программа работать на DEC-мифических системах где-то в DEC-мифической среде? Программа должна использовать текущего железа тонкости и
особенности - и для этого (посмотри архив на самом деле!),
и разрабатывался инструментарий отдельно по каждой из
отечественных видео-карт и М-ЭВМ ). Наличие такого инструментария ни в каком случае не препятствовало(ует) обучению алгоритмам и основам, но позволяет использовать
некоторые объекты без лишней
физической работы.


не убожества которые напишут свою заставку и на том сдохнут - да к сожалению один из неплохих вариантов
тетриса на твоей машинке не завёлся дальше заставки. Но его писал школьник, на и для ДВКашки ) Чего же тут удивительного?

Извиняюсь за сумбур и кол-во букв.
Неудобство форума состоит в том что ссылки нужные размазываются
среди сообщений и мало кто делает себе труд читать темы.

Хобот не сдаётся, а идёт дальше паскалить )

---------- Post added at 18:14 ---------- Previous post was at 18:13 ----------


которые по сути управляются всего двумя битами
вот этот момент раскрой подробней пожалуйста если будет настроение! )
Ведь не только мне полезно будет.

form
24.03.2014, 19:16
вот этот момент раскрой подробней пожалуйста если будет настроение! )
Ведь не только мне полезно будет.

Все описано еще в документации по РАФОС. Смотреть биты JSW. Сейчас кто-нибудь расскажет, а я как протрезвею, расскажу как сделать чтобы в TSX-Plus все работало независимо от ключей /NOWAIT и /SINGLE команды RUN :)

Patron
24.03.2014, 20:45
В конце каждого тика нужно ждать кнопку, но после нажатия в конце первого тика - остальные семь просто пролетают, словно 340-го емта там и в помине нет , вариант из SHKEYS просто пролетает как будто я клавишу зажал и не отпускаю.Ну, и где этот исходник ( желательно - упрощённый до простого ввода нажатий ), чтобы его можно было скомпилировать, запустить и убедиться, что есть в природе одна программа, где системные вызовы не работают как надо.

hobot
24.03.2014, 23:59
желательно - упрощённый до простого ввода нажатий







.TY FTT.PAS
PROGRAM FTT;

PROCEDURE EMT340;
BEGIN
/*$C
EMT ^O340
BCS .-2
*/
END;

BEGIN
WRITELN(CHR(27),'H',CHR(27),'J');
WRITELN('B1');
EMT340;
WRITELN('B2');
EMT340;
WRITELN('B3');
EMT340;
WRITELN('BYE!');
END.


.


протокол


B1
- тут ждёт
B2 > проскок!
B3
- тут ждёт
BYE!

.
В этом же случае - функция с регистровыми переменными работает.
В "больной-большой" программе проскок в цикле как я писал выше
в случае использования и емт340 и регистровых без разницы.

(но я конечно не втыкал пока вот то что с доп. переменной и проверять её значение - как в вашем KEYS.PAS - эта штука будет
работать поскольку - понятно что будет)

Patron
25.03.2014, 03:21
Проскакивает, если стрелки нажимать. Стрелки вводят по два кода.

form
26.03.2014, 17:47
Для общего развития пример на родном паскале без использования MACRO-11 и особых хитростей конкретного варианта паскаля ;)
В примере вызываются фортрановские подпрограммы которые уже есть в системной библиотеке (SYSLIB.OBJ). В принципе если почитать руководство по системной библиотеке, можно обнаружить, что там найдутся подпрограммы почти на все случаи жизни...

Маленькое замечание по использованию фортрановских подпрограмм...
Первое правило фортрана гласит: GOD is REAL, unless declared INTEGER... Шутка. Хотя для фортрана справедливо ;)
А если серьезно, нужно просто учитывать некоторые особенности фортрана. Даже те кто долго работал с фортраном часто не знают одной простой вещи:
CALL SUBR(1)
Что делает данная строчка? Неправильный ответ - вызывает подпрограмму SUBR и передает ей в качестве аргумента 1. Правильный ответ - вызывает подпрограмму SUBR и первый раз передает ей в качестве аргумента 1. Все аргументы в фортране - ссылки. Отсюда правило - все аргументы таких подпрограмм, подключаемых из паскаля должны быть объявлены как VAR (и подпрограмма соответственно может их менять).

Пример программы которая ждет нажатия клавиши и печатает ее код (коды для клавиш которые генерят несколько кодов в RT-11 [стрелки, <CR>, цифровые клавиши в режиме alternative keypad])... Описание подпрограмм не привожу - оно есть в описании системной библиотеки, в том числе на русском (для рафоса). Программа завершается нажатием CTRL/C. В силу особенностей RT-11, программы не могут получить код CTRL/O в однотерминальном мониторе, а в данном случае также коды CTRL/S и CTRL/Q - для этого требуется установить кое-какие битики в настройках терминала, но это уже другая история :)


PROGRAM TEST(INPUT, OUTPUT);

VAR CTRLC : INTEGER;
KEY : CHAR;

FUNCTION IPEEK(VAR ADDR: INTEGER): INTEGER; FORTRAN;
PROCEDURE POKE(VAR ADDR, VALUE: INTEGER); FORTRAN;
FUNCTION ITTINR: INTEGER; FORTRAN;
PROCEDURE SCCA(VAR FLAG: INTEGER); FORTRAN;

FUNCTION TTYIN: CHAR;
VAR I : INTEGER;
BEGIN
REPEAT
I:= ITTINR;
UNTIL I >= 0;
TTYIN:= CHR(I)
END;

PROCEDURE INIT;
VAR ADDR : INTEGER;
VALUE : INTEGER;
BEGIN
ADDR:= 36;
VALUE:= IPEEK(ADDR) OR 4160;
POKE(ADDR, VALUE);
SCCA(CTRLC);
END;

BEGIN
INIT;
WRITELN('TYPE A KEY...');
REPEAT
KEY:= TTYIN;
WRITELN('CODE: ', ORD(KEY))
UNTIL ORD(KEY) = 3
END.

.PASCAL TEST TEST

Errors detected: 0
Free memory: 15192 words


.MAC TEST

.LIN TEST/LINK:SY:PASCAL

.RU TEST
TYPE A KEY...
CODE: 68
CODE: 74
CODE: 76
CODE: 75
CODE: 3

.

hobot
26.03.2014, 20:10
Для общего развития
Да содержание SYSLIB.OBJ тайна покрытая мраком ) А весит кстати порядочно )

Вот вопрос - как же всё таки "продвинутый драйвер клавиатуры" встроить и использовать в своих программах для УК-НЦ?
Имеется в виду - как опросить и проверить нажатие таких кнопок как НР(шифты), ПОМ, СБР, СТОП ?

Я по старой памяти помню просто глобальные переменные в Зеленоградском инструментарии они обозначались так :
S$PRESS:: - кнопки шифт (УК-НЦ не различает лев и прав)
ALF$PRESS:: - кнопка алф
и так далее по тому же принципу,
их достаточно было сравнить с нулём TST или TSTB (не помню), но предварительно загружался весьма внушительный код в виде двух процедур PPINI и CPINI из двух библиотек PP.obj и CP.obj - то есть отдельно для каждого
процессора УК-НЦ. После этого программа уже работала не зависимо от RT-11, визуально это выглядело переходом в режим 40Х24, изменением палитры, на все (абсолютно) системные кнопки программист мог повесить свои функции (!), менять на лету палитру и переключаться между двумя страницами 0 и 1 (это было удобно,
отрисовав игровой экран в странице 1 её как лампочку можно зажечь мгновенно - пример игра Conan)...
до вызова некоего EXIT - который полностью отменял все настройки по кнопкам, палитре и возвращал изображение системное на экран и системное приглашение CSI, то есть воскрешал мон в памяти и можно было спокойно дальше редактировать и отлаживать исходник !!! Представьте ещё, что к этому прилагалось удобное использование мелодий (из местного редактора (есть на многих дискетах в архиве) и 4-х цветный редактор спрайтов Magnifier со своей библиотекой процедур. Круто было очень! И в отличие от UKLOAD - не требовалось ничего предварительно загружать\запускать, конечно (и надо это понимать), что размер исполняемого модуля был увесист (но соразмеримо для запуска на РМУ и загрузки по сети УК-НЦ), поскольку включал в себя всё содержимое указанных
выше OBJ + SPROUT.OBJ (библиотеку фун.и проц. для спрайтов) + имя.OBJ (прогнанные через МАКРО файл со спрайтами в виде sprite_name:: внутри) +
SPRTAB.OBJ - таблица используемых спрайтов, где все названия спрайтов из предыдущей библиотеки просто указывались сверху вниз внутри SPRTAB::
первый спрайт имел номер 0 и так далее.
Спрайты записывались в таком примерно виде (редактор их сразу сохранял в ассемблере) ИМЯ_СПРАЙТА:: 8,8 - сначала размер по Х и У, а потом сам спрайт где обозначался цвет 1 из 4.

Сейчас похожий инструментарий обнаружен только для БК11М, авторов я не знаю, а УК-НЦ аналог с исходниками (у меня стоявший когда-то на машинке) к сожалению утерян (сильно подозреваю, что и у автора их нет).

form, спасибо за пример и шпоргалку! Принято на вооружение! )

form
26.03.2014, 20:20
Да содержание SYSLIB.OBJ тайна покрытая мраком

Никакой тайны. Как уже говорил, есть описание как в рамках документации на RT-11 так и на русском для рафоса. Иногда в эту библиотеку добавляли также фортрановские или паскалевские - просто чтобы не писать их в командной строке


Имеется в виду - как опросить и проверить нажатие таких кнопок как НР(шифты), ПОМ, СБР, СТОП ?

Это требует подгрузки своего кода в область ПП. Как подгружать можно посмотреть в исходниках PRUN и многих других. Как вклиниваться в обработку клавиатуры можно посмотреть в исходниках KBFIX. А реализацию проще всего сделать такую, чтобы эти специальные клавиши транслировались в какой-то обычный ASCII код, а в программе читать их штатным образом. К примеру так поступала библиотека VIDI - принимала <ESC> последовательности и транслировала их в определенные CTRL-коды, в результате программе пофигу было какой терминал - она получала одинаковые коды.

Остальное пропустил как не несущее никакой конкретной информации - подразумевало, что я все эти программы видел и у меня в верхнем ящике стола лежат их исходники ;)

hobot
26.03.2014, 20:38
подразумевало, что я все эти программы видел и у меня в верхнем ящике стола лежат их исходники
Нет я просто воспоминаниями делюсь - вкратце описав как это было организовано, то есть можно было одинаково успешно использовать
и в программах на ассемблере и в программах на паскале )

Вот прикольная иллюстрация в старой тетрадке обнаружил недавно !!!
Процедура ЧЕРЕП !!!:redface:Очень сильно подозреваю что это черепушка из КЦГД-шного LODE - видимо сначало должен был быть и для УК-НЦ (!), и возможно даже был (просто затерялся среди игровых пакетов, что в F-BIT продовались), а потом уже был перенесён на новенькие с КЦГД ДВКашки (хотя это только мои домыслы).

Картинки.

http://s3.hostingkartinok.com/uploads/images/2014/03/f6ead8647dde12dc765cae248b88208a.jpghttp://s4.hostingkartinok.com/uploads/images/2014/03/556a12ca2398b525e635d704cbe95c68.jpg

hobot
26.03.2014, 21:48
PROCEDURE INIT;
VAR ADDR : INTEGER;
VALUE : INTEGER;
BEGIN
ADDR:= 36;
VALUE:= IPEEK(ADDR) OR 4160;
POKE(ADDR, VALUE);
SCCA(CTRLC);
END;


form, возвращаясь к твоей шпоре, можно вот эту
процедуру подробнее описать для танкистов-паскалистов )))
Меня конструкции типа ПЕРЕМЕННАЯ:=ЗНАЧЕНИЕ OR КОНСТАНТА
всегда в ступор приводят (я видимо мыслью иначе устроен иначе
был бы системщиком однозначно!) ADDR:= 36; и 4160 это ведь не от балды цифры, а про вызов SCCA(CTRLC); - я так понял надо
описание SCCA читать, но вот CTRLC переменная - что то я не понимаю её судьбу и значение? PEEK,POKE - это же бейсик !!! )))

---------- Post added at 21:48 ---------- Previous post was at 21:47 ----------


ПЕРЕМЕННАЯ:=ЗНАЧЕНИЕ OR КОНСТАНТА
если это записать на ассемблере или как то развернуть как это выглядит для прямой как рельсы логики ?

form
27.03.2014, 03:29
конструкции типа ПЕРЕМЕННАЯ:=ЗНАЧЕНИЕ OR КОНСТАНТА

Логическая операция. 36 (44 восьм) и 4160 (10100 восьм).
Берется значение адреса 44 (JSW), в нем устанавливаются 6й и 12й биты (10100), остальные биты не меняются. Эти биты устанавлвают посимвольный режим ввода без ожидния и обработки спецсимволов.


SCCA(CTRLC)

Здесь CTRLC не используется, система в этой переменной устанавливает флаг двойного нажатия CTRLC, что можно использовать для проверки этого условия (после проверки переменную нужно вручную обнулить). В программе не используется - мы просто вводом проверяем нажатие CTRL/C.


если это записать на ассемблере или как то развернуть как это выглядит для прямой как рельсы логики ?

На ассемблере будет попроще конечно.

.MCALL .SCCA,.TTINR,.TTYIN

INIT::
BIS #10100,@#44
.SCCA #AREA,#AREA
RETURN

TTINR::
.TTINR
RETURN

TTYIN::
.TTYIN
RETURN

AREA: .BLKW 2


с объявлением в паскале как


PROCEDURE INIT; FORTRAN;
FUNCTION TTINR: CHAR; FORTRAN;
FUNCTION TTYIN: CHAR; FORTRAN

можно конечно обойтись без фортранизма, но я просто не знаю как в паскале возвращаются параметры :)

hobot
27.03.2014, 05:22
но я просто не знаю как в паскале возвращаются параметры
насколько я понимаю как ты сам оформишь так и возвратятся ) Из ассемблера в смысле?
Ну как то так

10.1. ИСПОЛЬЗОВАНИЕ МАКРОАССЕМБЛЕРА

ПАСКАЛЬ,РЕАЛИЗОВАННЫЙ ДЛЯ ДВК, ДАЕТ ВОЗМОЖНОСТЬ ВКЛЮЧАТЬ В
ЛЮБОЕ МЕСТО ПРОГРАММЫ ОТДЕЛЬНЫЕ ФРАГМЕНТЫ НА ЯЗЫКЕ
МАКРОАССЕМБЛЕР. ЧАСТИ ПРОГРАММЫ, НАПИСАННЫЕ НА МАКРОАССЕМБЛЕРЕ,
МОГУТ ИСПОЛЬЗОВАТЬ ПЕРЕМЕННЫЕ ИЗ ПРОГРАММЫ НА ЯЗЫКЕ ПАСКАЛЬ, ХОТЯ
ДЛЯ ЭТОГО ТРЕБУЕТСЯ НЕКОТОРОЕ ПОНИМАНИЕ ПРОЦЕССА ОРГАНИЗАЦИИ
ВЫПОЛНЕНИЯ. ДЛЯ ВКЛЮЧЕНИЯ ФРАГМЕНТА НА АССЕМБЛЕРЕ ИСПОЛЬЗУЕТСЯ
СПЕЦИАЛЬНЫЙ ВИД КОММЕНТАРИЕВ, НАПРИМЕР:

CTP. 47

ЩИ1.700.016 ПО.04-01 35


PROCEDURE EMTTRAP (N:INTEGER);
BEGIN
(*$C ;НАЧАЛО ФРАГМЕНТА НА МАКРО
MOV N(SP),-(SP) ;ПАРАМЕТР "N" -> В СТЕК
EMT 53 ;ВЫЗВАТЬ ДИСПЕТЧЕР EMT
*)
END (* EMTTRAP*)

ПРИ ИСПОЛЬЗОВАНИИ МАКРОАССЕМБЛЕРА СЛЕДУЕТ ПОМНИТЬ, ЧТО
ОСНОВАНИЕМ СЧИСЛЕНИЯ ЧИСЛОВЫХ КОНСТАНТ ПО УМОЛЧАНИЮ ЯВЛЯЕТСЯ 10,
А НЕ 8.

А если тебе допустим из примера выше надо присвоить или записать что то в N:integer то соответственно


MOV ЧТО-ТО, N(SP)


Это же должно работать и для глобальных подпрограмм.
Если глобальная метка несёт в себе значение значит её
оформляем функцией нужного типа, если содержит кучу
операций то процедурой.
(но скорее всего я неправильно понял фразу про параметры.)


можно конечно обойтись без фортранизма
Можно, но с ним ПКМ интереснее и заставляет всё таки начинкой
SYSLIB.OBJ обеспокоиться, раз там столько всего полезного.

В теме программирования (не в этой,а в старой по УК-НЦ) AlecV и
ты вскользь упоминаете, что Фортран вроде как системный язык DEC и RT-11, а я всю дорогу считал что MACRO-11 - ведь вроде весь монитор и PIP DUP всякие на макро написаны?

Я всегда был уверен что все вызовы .MCALL в исходниках макро
относятся к SYSMAC.SML ? И уточнение SYSLIB.OBJ при линковке
надо указывать ?

Ух! Все шпоры и разъяснения из последних сообщений взяты на вооружение! Надо бы мне кое что осмыслить и почитать прежде
чем ещё вопрос задать. Логические операции - моя встроенная логика пасует как и моя встроенная математика ) (*хобот собирает
все шпаргалки и идёт учить мат.часть :wink:)

---------- Post added at 05:22 ---------- Previous post was at 05:18 ----------

А есть ведь ещё GLIB - библиотека с линиями кружочками и прочей графикой аля бейсик - и даже вроде с исходниками (надо уточнять) - только я могу путать фортрановская она или Си-шная ? Надо уточнять.

form
27.03.2014, 06:09
Это же должно работать и для глобальных подпрограмм.

Нет, разумеется. Внешняя подпрограмма понятия не имеет ни о каком N. Но с получением параметров как раз вопросов нет - они передаются через стек и расчитать оффсеты нетрудно. А вот как функция в паскале на RT-11 возвращает значение (и универсально ли это вообще для RTшных/PDPшных паскалей) - я не знаю. В BP знаю :D


Фортран вроде как системный язык DEC

DEC всегда делал интерфейс к системным вызовам и богатый набор подпрограмм для фортрана. Это позволяет его использовать для системного программирования. Но это не значит что они программы на нем писали для системы :)

Фортран достаточно удобен для таких вещей - у подпрограмм нет жесткой привязки к количеству-типу-наличию аргументов, а подпрограмма всегда знает сколько ей аргументов передали и какие пропустили.


Я всегда был уверен что все вызовы .MCALL в исходниках макро относятся к SYSMAC.SML ?

Нет. Они относятся к любым макрокомандам которые определены где-то за пределами программы во внешней библиотеке. А SYSMAC.SML (RSXMAC.SML итд) используются если макровызов не найден в других библиотеках (или если другие не используются).


И уточнение SYSLIB.OBJ при линковке
надо указывать ?

Нет. Аналогично, если глобальный символ не находится в указанных OBJ файлах, он ищется в SYSLIB.OBJ.


А есть ведь ещё GLIB - библиотека с линиями кружочками и прочей графикой аля бейсик - и даже вроде с исходниками (надо уточнять) - только я могу путать фортрановская она или Си-шная ? Надо уточнять.

Никогда не слышал про такую :)

hobot
27.03.2014, 06:46
Никогда не слышал про такую
Я так понимаю (опять же пока на уровне "не уточнил") это довесок для Си и Фортрана ориентированный на возможности КЦГД - то есть, говоря "системным"
языком "не стандарт" "не штатное" расширение возможностей для программиста.
Сами библиотеки вот они лежат, я что то описание не вижу и вроде бы даже исходники были (???), уточню выложу-отпишусь. Хотя если выясниться, что
строго для КЦГД уже и не интересно (почти).


А вот как функция в паскале на RT-11 возвращает значение
Ну исходник ПАСКАЛЯ и многотерминального ПАСКАЛЯ вроде бы есть )
Даже вроде в этой теме один какой-то из них есть (а может даже оба).

form
27.03.2014, 06:47
Ну исходник ПАСКАЛЯ и многотерминального ПАСКАЛЯ вроде бы есть )

Ну мне это малоинтересно :)

hobot
27.03.2014, 19:52
Нашёл от тов.oldskool такое вот для Си, степень готовности этого проекта не установлено, я Си (всегда бежал! вообще) на УК-НЦ всерьёз не воспринимаю , хотя многое писалось для этой машинки на Си - пример движок игры "Стань Стальной Крысой" да и наверное ещё что-то есть и не мало.

И так документ:


О П И С А Н И Е Б И Б Л И О Т Е К И C G L I B v.2.00

(C) January 1995, Tiger

Графическая библиотека CGLIB содержит функции работы с графикой ЦП УКНЦ для
программ на языке C. Вторая версия отличается от первой расширенным набором
функций для работы с массивами видеоинформации, а также возможностью работы в
16ти цветах и более корректной версией функции outtext.
Функции библиотеки не обращаются к стандартным меткам C csv$ и cret$,
поэтому возможно их использование из программ на ассемблере. Вызывающая
последовательность выглядит примерно так:

.globl XXXXXX
mov argN,-(sp)
... ..........
mov arg2,-(sp)
mov arg1,-(sp)
call XXXXXX
add #N*2,sp

Здесь N - количество аргументов функции, arg1..argN - соответственно
аргументы (нумеруются слева направо в описании функции на C), XXXXXX - первые
6 символов имени функции.
ВНИМАНИЕ! Функции изменяют содержимое R0 и R1! Содержимое других регистров не
изменяется.

Х А Р А К Т Е Р И С Т И К А Б И Б Л И О Т Е К И

Все графические функции реализованы на ЦП УК-НЦ в связи с
неудовлетворительно малой скоростью работы и неудобным интерфейсом графики
ПЗУ. В связи с этим доступно лишь 4 цвета - соответственно экранные планы 1 и
2. Недостаточно малое количество цветов компенсировано введением механизма
палитр. Физически на экране больше 4 цветов одновременно вы получить не
сможете, но вы можете "жонглировать" цветами по своему усмотрению с помощью
переключения палитр (см. описание функций SetPalette(), Palette()).
Разрешение графического экрана составляет 640*288 точек, начало координат -
в левом верхнем углу экрана.
ВНИМАНИЕ!
Для увеличения скорости работы графики функции не производят проверку на
корректность координат, поэтому вся ответственность за правильность входных
данных лежит на программисте. Координаты должны находиться в следующих
пределах: X : [0..639], Y : [0..287], и номер цвета в пределах [0..3]. Будьте
внимательны! Если координаты выйдут за указанные пределы, могут возникнуть
неприятные сюрпризы, как то: в лучшем случае - белиберда на экране, в худшем
- затертые ОЗУ ЦП и системная область, и, как следствие, зависание машины.
Сравнительный анализ показал, что скорость работы некоторых функций, в
частности, вывод точки и закрашенного прямоугольника, превышает скорость
работы аналогичных ПЗУшных функций в 1,5-2 раза. Функция вывода линии
основана на алгоритме Люка, и ее скорость приблизительно равна скорости
ПЗУшной подпрограммы вывода линии.
Функции работы с областями изображений имеют некоторую специфику работы:
область может начинаться только со столбца, совпадающего с началом
знакоместа, иначе говоря, номер которого кратен 8. Скорость работы функций
копирования и перемещения составляет примерно
175000 (сто семьдесят пять тысяч) точек/с.

И С П О Л Ь З О В А Н И Е Б И Б Л И О Т Е К И
<..>


В приложеном архиве полное описание + CGLIB.OBJ;

Остальное по граф. для ассемблера, Си, паскаля, и Фортрана -
пока только то, что ориентировано только на КЦГД - в принципе,
в архиве наверное с самого начала валялось, я даже постил год или
больше назад про тот кусок архива информацию. Позже выяснилось,
это часть из разработок для КВАНТ-4С с КЦГД и рабочей средой АДОС - имеется в архиве у меня (источник архив Адос SuperMax'а).

hobot
27.03.2014, 22:43
Image : LIB.dsk

Format : DSK
Size : 142 Kb

Volume ID: RT11A
Owner :

File Blocks Date Bytes
---------- ------ ----------- ----------
CGLIB .OBJ 9 19-Jan-1995 4'608
CGLIB1.OBJ 29 12-Jul-1991 14'848
CGLIB2.OBJ 11 22-Dec-1989 5'632
FORLIB.OBJ 170 19-Jan-1989 87'040
SYGLIB.OBJ 51 01-Aug-1990 26'112
---------- ------ ----------- ----------
5 Files, 270 Blocks
0 Free blocks

Это в дополнение к предыдущему сообщению. (http://zx-pk.ru/showpost.php?p=694870&postcount=124)
Библиотеки взяты с разных дисков.
Описания и исходники пока не обнаружены (возможно я проглядел,
наткнусь сразу выложу в этой теме!), как видно размер CGLIB.OBJ сильно разный (!) - самая крупная особь водится на диске с Си от
участника Vamos >

hobot
27.03.2014, 23:17
http://zx-pk.ru/showpost.php?p=694870&postcount=124

http://zx-pk.ru/showpost.php?p=695007&postcount=125

Вдобавок к этим двум ещё папка с библиотеками,
которые в архиве уже с самого начала пылятся,
без дополнительных описаний и исходников.
Последние из материалов от тов. anasana

видно по дате что я их к себе на хард скинул в 2011 (не иначе как с архива пришедшего по почте! )


Image : LIBDWK.dsk

Format : DSK
Size : 575 Kb

Volume ID: RT11A
Owner :

File Blocks Date Bytes
---------- ------ ----------- ----------
PLTLIB.OBJ 137 01-Oct-2011 70'144
SY2LIB.OBJ 175 01-Oct-2011 89'600
SYSLIB.OBJ 47 01-Oct-2011 24'064
NOWSYS.SML 45 01-Oct-2011 23'040
SMAC2 .SML 54 01-Oct-2011 27'648
SYS02 .SML 30 01-Oct-2011 15'360
SYSMAC.SML 45 01-Oct-2011 23'040
FDT .OBJ 12 01-Oct-2011 6'144
FORLIB.OBJ 205 01-Oct-2011 104'960
HD6312.OBJ 2 01-Oct-2011 1'024
LIBEK5.OBJ 19 01-Oct-2011 9'728
LIBRDB.OBJ 59 01-Oct-2011 30'208
LIBRTK.OBJ 22 01-Oct-2011 11'264
MED .OBJ 39 01-Oct-2011 19'968
MKOT .OBJ 77 01-Oct-2011 39'424
PASCAL.OBJ 89 01-Oct-2011 45'568
MED .F12 39 01-Oct-2011 19'968
MEDFOR.F12 39 01-Oct-2011 19'968
MAC .MSS 1 01-Oct-2011 512
---------- ------ ----------- ----------
19 Files, 1136 Blocks
0 Free blocks


Возможно часть этих OBJ обрубки чего то целого например
MED - может быть (предп.) кусочком EDIT\EDIK какого-нибудь.
Описаний нет. Таких невыясненного назначения объектов полно,
хранятся так как были частью чего-то ведь - значит нужны.
И даже не факт что не содержат ошибок (!) кстати говоря.

hobot
05.04.2014, 18:21
1 и 2 апреля подрубал свою УК-НЦ к телевизору.
Дошли руки сделал несколько фоток и некоторый софт из архива
на живую машинку перетащил (пользуюсь для переноса дискетами
по старинке - без HX-технологий и ком-порт. соединений ибо сложно
это для меня (ковырять УК-НЦ), и там где стоят эмуляторы никаких
ком-портов нету (и даже виртуальные не заводятся - это мой ноут).

Под спойлер все подробности.

И так цветочек как и предполагалось высота\ширина рисунка
в эмуляторе и на реале 1 в 1 )
http://savepic.net/3556566.png
http://savepic.net/5103794.jpg

Меня полностью устраивают градации серого, но
не запустить разочек TSPAL от Титуса даже при ч/б
подключении я не мог ) Фотка ради фотки )
http://s5.hostingkartinok.com/uploads/images/2014/04/2b7c72dd5d3bc175cb6a3bb3ecc6be95.jpg

И ещё одна фотка, где видно насколько уползает за рамки
экрана ТВ изображение, счёт в игре не видно, три символа
слево не видно, верхняя рабочая строка видна только частично
(ищи надпись лат на снимках выше), нижняя за пределами экрана.
http://s7.hostingkartinok.com/uploads/images/2014/04/8b5fc35ddc97ab1d48e61ab03629a96e.jpg

Напомню, что цветочек по теме
http://zx.pk.ru/showpost.php?p=596457&postcount=65

bigral
07.04.2014, 18:50
1 и 2 апреля подрубал свою УК-НЦ к телевизору....

Мда, чето изображение аж "вылазит" из экрана, а некоторые LED вообще его не показывают, другие обрезают слева, чето с этим всем может можно сделать? Вот эти параметры развертки заданны в BIOS или в самих СБИС-ах прошиты?

К стати тоже самое интересно про КЦГД...

hobot
07.04.2014, 21:44
bigral, ну этот простой (в смысле трубка) плоский Panasonic DDD помните реклама была цать лет назад со слонами? Поменялся с приятелем на жёсткий диск - отличный телек, плоский экран 4:3, только пультец слегка раздолбан и корпус у телека (обоих видимо роняли).

---------- Post added at 21:44 ---------- Previous post was at 21:40 ----------

bigral, мне кажется решение по картинке надо вынести за пределы корпуса УК-НЦ и любого телевизора, это как для PlayStation-1 была коробочка универсальная для подключения к телевизорам разных поколений, так и тут должно быть какое-то идеальное решений, в том числе и для использования старых VGA мониторов для цветного или композитного подключения и Телевизоров любого поколения.

bigral
08.04.2014, 00:25
bigral, мне кажется решение по картинке надо вынести за пределы корпуса УК-НЦ и любого телевизора, это как для PlayStation-1 была коробочка универсальная для подключения к телевизорам разных поколений, так и тут должно быть какое-то идеальное решений, в том числе и для использования старых VGA мониторов для цветного или композитного подключения и Телевизоров любого поколения.

А ну эти скандаблеры на форуме давно уже есть, которые из сигналов rgb + sync создают в своем буфере памяти картинку а потом выдают ее например на VGA с другими частотами, там только много конфига надо на vhdl/verilog писать.

hobot
21.04.2014, 09:22
В процессе работы программы стал плавать выскакивать в разных местах
вылет по трапу с таким сообщением:


TRAP TO 4 - FROM PC 003152


Правил исходник, теперь чётко в одном месте вылет.
Обойти его можно (условие не вылета известно, неизвестно условие вылета !!!).

form
21.04.2014, 10:44
Правил исходник, теперь чётко в одном месте вылет.
Обойти его можно (условие не вылета известно, неизвестно условие вылета !!!).

Ну так нужен исходник и результат команды E для ближайших адресов к тому с которого вылет.

hobot
21.04.2014, 18:17
Ну так нужен исходник и результат команды E для ближайших адресов к тому с которого вылет.
у меня тут такой огород ) Надо заного переписать...
ПАСКАЛИТЬ не скучно ни разу - очитывая что в эмуляторе 3 секунды компиляция занимает примерно ) Шик!
Я пока что заного просто перепишу соблюдая условие не вылета )
Ура! )

form
21.04.2014, 18:18
у меня тут такой огород ) Надо заного переписать...
ПАСКАЛИТЬ не скучно ни разу - очитывая что в эмуляторе 3 секунды компиляция занимает примерно ) Шик!
Я пока что заного просто перепишу соблюдая условие не вылета )
Ура! )

Как вариант - собрать SD, ST, загрузить и пустить программу.
Свалится, можно будет посимвольно увидеть где.

hobot
29.06.2014, 18:28
На вскидку есть bk0010, uk-nc, кгд, кцгд, pro300...
Хотел просто упомянуть такую вещь (пока просто для информации), для УК-НЦ имеется практически аналогичный КЦГДшному "PAST" (см. демо в теме про КЦГД) набор процедур с простейшими графическими построениями и возможностью выводить "графическим" шрифтом в любых направлениях, это система GRAY

Image : GRAY.DSK

Format : DSK
Size : 75 Kb

Volume ID: Gray 2.03.90
Owner : Fomenko S.A.

File Blocks Date Bytes
---------- ------ ----------- ----------
GRAY .SAV 10 06-Mar-1990 5'120
TSGRAY.SAV 13 07-Mar-1990 6'656
GRAY .MAC 50 06-Mar-1990 25'600
GRAYF .MAC 13 10-Mar-1990 6'656
GRAY .TXT 8 10-Mar-1990 4'096
GRAYP .MAC 14 06-Mar-1990 7'168
GRAYP .OBJ 4 06-Mar-1990 2'048
T .SAV 3 10-Mar-1990 1'536
TSGRAY.BAK 9 07-Mar-1990 4'608
GRAYF .OBJ 4 10-Mar-1990 2'048
T .MAC 5 10-Mar-1990 2'560
TSGRAY.PAS 9 10-May-2014 4'608
---------- ------ ----------- ----------
12 Files, 142 Blocks
0 Free blocks


(* Краткое описание графического пакета 'Gray'для УК-НЦ *)
(* (c) Фоменко С.А. 10-Марта-1990 года. *)

procedure init; external;
(* инициализация работы с пакетом *)
procedure finit; external;
(* окончание работы с пакетом *)

procedure window(xl,yb,xr,yt:integer); external;
(* Установка окна вывода графики *)

procedure ramka; external;
(* Установление рамки в окне текущим цветом
и типом линии *)

procedure newpicture(i:integer); external;
(* Отчистка текущего окна i-способ отчистки *)
(* 0-инверсией,1-наложением,2-отчисткой по маске
3-установкой цвета *)
procedure drawmode(i:integer); external;
(* Задание способа рисования 0,1,2,3 *)

procedure color(i:integer); external;
(* Задание цвета графики 0..7 *)

procedure linestyle(i:integer); external;
(* Задание типа линии 0..7 *)

procedure userstyle(i:integer); external;
(* Задание пользовательского типа линии *)

procedure line(x,y,x1,y1:integer); external;
(* Прорисовка линии *)

procedure dot(x,y:integer); external;
(* Прорисовка точки *)

procedure grdot(x,y:integer); external;
(* Прорисовка точки графика в соответствии
с текущим типом линии *)

procedure circle(x,y,r:integer); external;
(* Прорисовка окружности *)

procedure arc(x,y,r,xs,ys,xt,yt,cw:integer); external;
(* Прорисовка дуги *)

procedure fill(x,y:integer); external;
(* Заливка произвольной области *)

procedure square(x,y,x1,y1:integer); external;
(* Прорисовка квадрата *)

procedure setcol(c,i:integer); external;
(* Установка соответствия цвета *)

procedure screen(i:integer); external;
(* Установка размеров экрана 1,2,3,4 *)

procedure chcolor(i:integer); external;
(* Установка цвета а/ц. символов *)
procedure chkurs(i:integer); external;
(* Установка цвета а/ц. курсора *)
procedure sccolor(i:integer); external;
(* Установка цвета экрана. символов *)
procedure stcolor(i:integer); external;
(* Установка цвета строки *)
(* При задании цвета меньше 0 происходит
восстановление предыдущего цвета *)

procedure invers(onof:integer); external;
(* Установка/снятие инверсии а/ц. символов
1-Установка 0-снятие *)

procedure podch(onof:integer); external;
(* Установка/снятие подчеркивания а/ц. символов
1-Установка 0-снятие *)

procedure anpos(x,y:integer); external;
(* Позиционирование а/ц курсора *)

procedure vanpos(x,y:integer); external;
(* Позиционирование а/ц курсора близко к графике *)

procedure anclear(x,y:integer); external;
(* отчистк а/ц дисплея до конца экрана *)

procedure setchsize(dx,dy:integer); external;
(* Установка размера графических символов
dx и dy - множители в размере символа *)

procedure setchup(up:integer); external;
(* Установка направления вывода графических
символов 0-нормальный вывод
1-7 повернутые через 45 град. против час.
стрелки.
8-11 вывод обратных символов по 4 направлениям
12 вывод наклонного шрифта
13 вывод обратного наклонного шрифта
14 вывод наклонного шрифта с обратным наклоном
15 вывод ---//--- развернутым... *)

procedure character(x,y:integer;c:char); external;
(* Вывод графического символа по координатам
текущим цветом графики размером и наклоном *)

procedure string(x,y,dx,dy:integer); external;
(* Вывод строки символов начиная с координаты
приращение каждого символа определяется дь,ды
вывод текста осуществляется текущим цветом
графики размером и наклоном и заканчивается
символом код которого меньше пробела (32.)
Рекомендуется следущая комбинация на вывод
---//---
setchsize(dx,dy);
setchup(up);
string(x,y,dx,dy);
write('Text... a=',a,b,c,chr(10));
---//---
chr(10) заканчивает вывод граф.символов..*)


http://s1.hostingkartinok.com/uploads/images/2014/06/e2695488b7141d8bf0636d62713928ff.png

Насколько я понимаю - Сергей Фоменко писал его уже вне ASPcorp.
Пока не публикуется - все новые материалы по ASPcorp. проходят
проверку (ожидается так же одобрение хозяина дискет и авторов на
публикацию\добавлению в архив).

http://s1.hostingkartinok.com/uploads/images/2014/06/19c8351323ab5a40014ac1dd1d55b9c7.png

(в общем выложу\прилеплю как только так сразу)

hobot
19.12.2014, 00:29
Выдернул опрос клавиатуры из исходника Titusa.
К ожиданию нажатия и работы .TTYIN естественно нет проблем.

Но! Как мне дальше работать (обрабатывать) код нажатой кнопки???
Сделал тестовую программу, что бы нагляднее описать суть вопроса:
Протокол работы:


.TPQQQ1
НАЖМИТЕ ЛЮБУЮ КЛАВИШУ
uh ty!!!
BYE 0


Листинг TPQQQ1.PAS


.TY TPQQQ1.PAS

PROGRAM TPQQQ1;
/*$C .MCALL .TTYIN
*/
VAR
RP: INTEGER;

PROCEDURE KEYPRESS(KEYCODE: INTEGER);
BEGIN
/*$C BIS #^O10000,@#^O44
.TTYIN
CMPB R0,#27.
BNE 1$
.TTYIN
1$: CMPB R0,#13.
BNE 2$
.TTYIN
2$: MOV R0, KEYCODE(SP)
*/
END;

BEGIN
WRITELN(CHR(14),'navmite l`bu` klawi{u',CHR(15));
KEYPRESS(RP);
WRITELN('uh ty!!!');
KEYPRESS(RP);
WRITELN('BYE',RP);
END.


Выделенная жирным команда не работает!!!
RP при таком как сейчас присвоении = нулю (как видно выше),
если я по примеру оператора сравнения CMPB использую оператор
MOVB программа вылетает в TRAP ??? Почему 0 ??? В чём моя ошибка ???

form
19.12.2014, 04:31
Выдернул опрос клавиатуры из исходника Titusa.
К ожиданию нажатия и работы .TTYIN естественно нет проблем.

Но! Как мне дальше работать (обрабатывать) код нажатой кнопки???
Сделал тестовую программу, что бы нагляднее описать суть вопроса:
Протокол работы:


.TPQQQ1
НАЖМИТЕ ЛЮБУЮ КЛАВИШУ
uh ty!!!
BYE 0


Листинг TPQQQ1.PAS


.TY TPQQQ1.PAS

PROGRAM TPQQQ1;
/*$C .MCALL .TTYIN
*/
VAR
RP: INTEGER;

PROCEDURE KEYPRESS(KEYCODE: INTEGER);
BEGIN
/*$C BIS #^O10000,@#^O44
.TTYIN
CMPB R0,#27.
BNE 1$
.TTYIN
1$: CMPB R0,#13.
BNE 2$
.TTYIN
2$: MOV R0, KEYCODE(SP)
*/
END;

BEGIN
WRITELN(CHR(14),'navmite l`bu` klawi{u',CHR(15));
KEYPRESS(RP);
WRITELN('uh ty!!!');
KEYPRESS(RP);
WRITELN('BYE',RP);
END.


Выделенная жирным команда не работает!!!
RP при таком как сейчас присвоении = нулю (как видно выше),
если я по примеру оператора сравнения CMPB использую оператор
MOVB программа вылетает в TRAP ??? Почему 0 ??? В чём моя ошибка ???

VAR KEYCODE в аргументах функции поставить?

hobot
19.12.2014, 16:06
VAR KEYCODE в аргументах функции поставить?

Я уже пробовал.
Для MOV снова ноль значение (((


.@MTPQ

TPQQQ1 OMSI PASCAL-1 RT11 V1.1G 19- -82 Page 1
Univ. Tasmania, Info. Sciences, Physics Bldg, Hobart 7001, site #72-12

LINE STMT LEVEL NEST SOURCE STATEMENT

1 PROGRAM TPQQQ1;
2 /*$C .MCALL .TTYIN
3 */
4 VAR
5 RP: INTEGER;
6
7 PROCEDURE KEYPRESS(VAR KEYCODE: INTEGER);
8 BEGIN
9 /*$C BIS #^O10000,@#^O44
10 .TTYIN
11 CMPB R0,#27.
12 BNE 1$
13 .TTYIN
14 1$: CMPB R0,#13.
15 BNE 2$
16 .TTYIN
17 2$: MOV R0, KEYCODE(SP)
18 */
19 1 2 1 END;
20
21 BEGIN
22 1 1 1 WRITELN(CHR(14),'navmite l`bu` klawi{u',CHR(15));
23 2 1 1 KEYPRESS(RP);
24 3 1 1 WRITELN('uh ty!!!');
25 4 1 1 KEYPRESS(RP);
26 5 1 1 WRITELN('BYE',RP);
27 6 1 1 END.

ERRORS DETECTED: 0
FREE MEMORY: 9615 WORDS

ERRORS DETECTED: 0
FREE MEMORY: 9615 WORDS

НАЖМИТЕ ЛЮБУЮ КЛАВИШУ
uh ty!!!
BYE 0

.


или так



.@MTPQ


TPQQQ1 OMSI PASCAL-1 RT11 V1.1G 19- -82 Page 1
Univ. Tasmania, Info. Sciences, Physics Bldg, Hobart 7001, site #72-12

LINE STMT LEVEL NEST SOURCE STATEMENT

1 PROGRAM TPQQQ1;
2 /*$C .MCALL .TTYIN
3 */
4 VAR
5 RP: INTEGER;
6
7 PROCEDURE KEYPRESS(VAR KEYCODE: INTEGER);
8 BEGIN
9 /*$C BIS #^O10000,@#^O44
10 .TTYIN
11 CMPB R0,#27.
12 BNE 1$
13 .TTYIN
14 1$: CMPB R0,#13.
15 BNE 2$
16 .TTYIN
17 2$: MOVB R0, KEYCODE(SP)
18 */
19 1 2 1 END;
20
21 BEGIN
22 1 1 1 WRITELN(CHR(14),'navmite l`bu` klawi{u',CHR(15));
23 2 1 1 KEYPRESS(RP);
24 3 1 1 WRITELN('uh ty!!!');
25 4 1 1 KEYPRESS(RP);
26 5 1 1 WRITELN('BYE',RP);
27 6 1 1 END.

ERRORS DETECTED: 0
FREE MEMORY: 9615 WORDS

ERRORS DETECTED: 0
FREE MEMORY: 9615 WORDS

НАЖМИТЕ ЛЮБУЮ КЛАВИШУ
uh ty!!!
BYE 0

.

Ну тут прогресс только в том, что вылетать перестало в трап !!! )
Что же ему не так?
Просто мне в Ассме обрабатывать кнопочки совсем не с руки,
каша из кода получится, мне оно нужно только до момента
нажатия, а потом уже в Паскале с ними работать.

Я попробую другую версию компилятора и в другом эмуляторе
(просто ради эксперимента, отпишусь). Может быть какая-то
хитрость внутри 340 - емта??? бцц .-2 который TTYIN ????

form
19.12.2014, 16:10
Ну тут прогресс только в том, что вылетать перестало в трап !!! )
Что же ему не так?
Просто мне в Ассме обрабатывать кнопочки совсем не с руки,
каша из кода получится, мне оно нужно только до момента
нажатия, а потом уже в Паскале с ними работать.

Я попробую другую версию компилятора и в другом эмуляторе
(просто ради эксперимента, отпишусь). Может быть какая-то
хитрость внутри 340 - емта??? бцц .-2 который TTYIN ????

Могу предположить, что KEYCODE(SP) ни что иное как адрес переменной KEYCODE, то есть команда MOV всего лишь затирает его в передаваемых функции аргументах. Поставь @ впереди :)

hobot
19.12.2014, 16:10
form, вот смотри что в ассемблере получается
(после pascal трансляции)


.TY TPQQQ1.MAC
.TITLE TPQQQ1
.MCALL .TTYIN

.RADIX 10
.GLOBL $RESR5,$RESR6,$FILE,$END
.GLOBL $BEGIN,$VER
L0:
JSR %7,$B127
.GLOBL $B127
BIS #^O10000,@#^O44
.TTYIN
CMPB R0,#27.
BNE 1$
.TTYIN
1$: CMPB R0,#13.
BNE 2$
.TTYIN
2$: MOVB R0, 2(SP)

MOV (6),2(6)
ADD #2,%6
RTS %7
$VER=12.
$BEGIN:

MOV #6,-(6)
.GLOBL $B70
JSR %7,$B70
MOV (6)+,%5
MOV (6),(5)+
MOV 2(6),(5)+
MOV %5,$RESR5
MOV #14,-(6)
CLR -(6)
JSR %7,$B20
.GLOBL $B20
MOV #L1,-(6)
MOV #21,-(6)
MOV #21,-(6)
JSR %7,$B32
.GLOBL $B32
MOV #15,-(6)
CLR -(6)
JSR %7,$B20
JSR %7,$B36
.GLOBL $B36
MOV %5,-(6)
JSR %7,L0
MOV #L2,-(6)
MOV #8,-(6)
MOV #8,-(6)
JSR %7,$B32
JSR %7,$B36
MOV %5,-(6)
JSR %7,L0
MOV #L3,-(6)
MOV #3,-(6)
MOV #3,-(6)
JSR %7,$B32
MOV @%5,-(6)
MOV #7,-(6)
JSR %7,$B24
.GLOBL $B24
JSR %7,$B36
JMP $END
L1: .WORD 24942
.WORD 28022
.WORD 29801
.WORD 8293
.WORD 24684
.WORD 30050
.WORD 8288
.WORD 27755
.WORD 30561
.WORD 31593
.WORD 117
L2: .WORD 26741
.WORD 29728
.WORD 8569
.WORD 8481
.WORD 0
L3: .WORD 22850
.WORD 69
.END


.

form
19.12.2014, 16:11
. 2$: MOVB R0, 2(SP)


Ну так и есть собственно :)

hobot
19.12.2014, 16:17
Поставю @ впереди
Так и есть, сработало. То есть - я нигде и не утверждал что всю это регистровую
математику понимаю, если речь идёт об адресе нужно ставить "косвенно".
Вот я читал мат. часть честно, но на слове вектор всегда засыпаю )))
Косвенно-непосредственно наше всё !!! )))



16 .TTYIN
17 2$: MOVB R0, @KEYCODE(SP)
18 */
19 1 2 1 END;
20
21 BEGIN
22 1 1 1 WRITELN(CHR(14),'navmite l`bu` klawi{u',CHR(15));
23 2 1 1 KEYPRESS(RP);
24 3 1 1 WRITELN('uh ty!!!');
25 4 1 1 KEYPRESS(RP);
26 5 1 1 WRITELN('BYE',RP);
27 6 1 1 END.

ERRORS DETECTED: 0
FREE MEMORY: 9615 WORDS

ERRORS DETECTED: 0
FREE MEMORY: 9615 WORDS

НАЖМИТЕ ЛЮБУЮ КЛАВИШУ
uh ty!!!
BYE 32

.


Ну да я пробел нажал? Он самый удобный )

form
19.12.2014, 16:26
Ну да я пробел нажал? Он самый удобный )

Еще предположение: если сделать FUNCTION :INTEGER, то никаких MOV не нужно будет - код будет возвращаться как значение функции :)

hobot
19.12.2014, 17:11
Еще предположение: если сделать FUNCTION :INTEGER
Получается как-то вот так:


.@MTFQ


TFQQQ1 OMSI PASCAL-1 RT11 V1.1G 19- -82 Page 1
Univ. Tasmania, Info. Sciences, Physics Bldg, Hobart 7001, site #72-12

LINE STMT LEVEL NEST SOURCE STATEMENT

1 PROGRAM TFQQQ1;
2 /*$C .MCALL .TTYIN
3 */
4 VAR
5 RP: INTEGER;
6
7 FUNCTION KEYPRESS: INTEGER;
8 VAR KEYCODE: INTEGER;
9 BEGIN
10 /*$C BIS #^O10000,@#^O44
11 .TTYIN
12 CMPB R0,#27.
13 BNE 1$
14 .TTYIN
15 1$: CMPB R0,#13.
16 BNE 2$
17 .TTYIN
18 2$: MOVB R0, KEYCODE(SP)
19 */
20 1 2 1 KEYPRESS:=KEYCODE;
21 2 2 1 END;
22
23 BEGIN
24 1 1 1 WRITELN(CHR(14),'navmite l`bu` klawi{u',CHR(15));
25 2 1 1 RP:=KEYPRESS;
26 3 1 1 WRITELN('uh ty!!!');
27 4 1 1 RP:=KEYPRESS;
28 5 1 1 WRITELN('BYE',RP);
29 6 1 1 END.

ERRORS DETECTED: 0
FREE MEMORY: 9625 WORDS

ERRORS DETECTED: 0
FREE MEMORY: 9625 WORDS

НАЖМИТЕ ЛЮБУЮ КЛАВИШУ
uh ty!!!
BYE 32

.


@ - не понадобился, но в ассемблерном листинге
"проблемная" команда выглядит так



.PASDWK TFQQQ1=TFQQQ1

ERRORS DETECTED: 0
FREE MEMORY: 10111 WORDS


.TY TFQQQ1.MAC
.MCALL .TTYIN

.GLOBL $RESR6,$RESR5,$KORE,$SAV10,$VER
.GLOBL $BEGIN,FILE,$TTY,$END
.RADIX 10
L0:
CLR -(6)
JSR %0,$B74
.GLOBL $B74
BIS #^O10000,@#^O44
.TTYIN
CMPB R0,#27.
BNE 1$
.TTYIN
1$: CMPB R0,#13.
BNE 2$
.TTYIN
2$: MOVB R0, 10(SP)

MOV 10(6),14(6)
JSR %0,$B76
.GLOBL $B76
ADD #2,%6
RTS %7
$VER=59.
$BEGIN:
ADD #2,$KORE
JSR %7,$B127
.GLOBL $B127
MOV #14,-(6)
CLR -(6)
JSR %7,$B20
.GLOBL $B20
MOV #L1,-(6)
MOV #21,-(6)
CLR -(6)
JSR %7,$B32
.GLOBL $B32
MOV #15,-(6)
CLR -(6)
JSR %7,$B20
JSR %7,$B36
.GLOBL $B36
CLR -(6)
JSR %7,L0

MOV (6)+,%0
MOV %0,@%5
MOV #L2,-(6)
MOV #8,-(6)
CLR -(6)
JSR %7,$B32
JSR %7,$B36
CLR -(6)
JSR %7,L0

MOV (6)+,%0
MOV %0,@%5
MOV #L3,-(6)
MOV #3,-(6)
CLR -(6)
JSR %7,$B32
MOV @%5,-(6)
CLR -(6)
JSR %7,$B24
.GLOBL $B24
JSR %7,$B36
JMP $END
L1: .WORD 24942
.WORD 28022
.WORD 29801
.WORD 8293
.WORD 24684
.WORD 30050
.WORD 8288
.WORD 27755
.WORD 30561
.WORD 31593
.WORD 117
L2: .WORD 26741
.WORD 29728
.WORD 8569
.WORD 8481
.WORD 0
L3: .WORD 22850
.WORD 69
.END

.


??? - вопрос не программиста (озвучивать не надо я думаю)
:redface:

form
19.12.2014, 17:13
Получается как-то вот так:

18 2$: MOVB R0, KEYCODE(SP)
19 */
20 1 2 1 KEYPRESS:=KEYCODE;

Не, по идее R0 это и есть то что возвращается и специально с ним ничего не надо делать. Только предположение - как тут не знаю, в BP знаю через AX возврат был :)

hobot
19.12.2014, 17:19
А как же без MOV - откуда функция вдруг сама себе содержимое регистра присвоит?

---------- Post added at 17:17 ---------- Previous post was at 17:13 ----------

Нет содержимое R0 надо присваивать ручками )))
http://zx-pk.ru/showpost.php?p=763195&postcount=144
Иначе опять нули нули нули )))

---------- Post added at 17:19 ---------- Previous post was at 17:17 ----------

Вот почему там без @ сработало??? (в случае функции)
Ведь это математика - тут четкий закон работать должен, разве нет?

form
19.12.2014, 17:22
Нет содержимое R0 надо присваивать ручками

Не увидел этого.
Нужен результат ассемблерный. Наиболее вероятно все-таки передача осуществляется через R0.

hobot
19.12.2014, 18:01
Не увидел этого.
http://zx-pk.ru/showpost.php?p=763195&postcount=144
тут присваиваем ручками там есть и ассемблерный листинг



Нужен результат ассемблерный.
без MOV? тупо без MOV? я попробую конечно ))) Как то так?



PROGRAM TFQQQ1;
/*$C .MCALL .TTYIN
*/
VAR
RP: INTEGER;

FUNCTION KEYPRESS: INTEGER;
BEGIN
/*$C BIS #^O10000,@#^O44
.TTYIN
CMPB R0,#27.
BNE 1$
.TTYIN
1$: CMPB R0,#13.
BNE 2$
.TTYIN
2$:
*/
END;

BEGIN
WRITELN(CHR(14),'navmite l`bu` klawi{u',CHR(15));
RP:=KEYPRESS;
Exit? Y

.PASDWK TFQQQ1=TFQQQ1

ERRORS DETECTED: 0
FREE MEMORY: 10111 WORDS


.MAC TFQQQ1

.LIN TFQQQ1,PASDWK

.TFQQQ1
НАЖМИТЕ ЛЮБУЮ КЛАВИШУ
uh ty!!!
BYE 0

.TY TFQQQ1.MAC
.MCALL .TTYIN

.GLOBL $RESR6,$RESR5,$KORE,$SAV10,$VER
.GLOBL $BEGIN,FILE,$TTY,$END
.RADIX 10
L0:
JSR %0,$B74
.GLOBL $B74
BIS #^O10000,@#^O44
.TTYIN
CMPB R0,#27.
BNE 1$
.TTYIN
1$: CMPB R0,#13.
BNE 2$
.TTYIN
2$:

JSR %0,$B76
.GLOBL $B76
RTS %7
$VER=59.
$BEGIN:
ADD #2,$KORE
JSR %7,$B127
.GLOBL $B127
MOV #14,-(6)
CLR -(6)
JSR %7,$B20
.GLOBL $B20
MOV #L1,-(6)
MOV #21,-(6)
CLR -(6)
JSR %7,$B32
.GLOBL $B32
MOV #15,-(6)
CLR -(6)
JSR %7,$B20
JSR %7,$B36
.GLOBL $B36
CLR -(6)
JSR %7,L0

MOV (6)+,%0
MOV %0,@%5
MOV #L2,-(6)
MOV #8,-(6)
CLR -(6)
JSR %7,$B32
JSR %7,$B36
CLR -(6)
JSR %7,L0

MOV (6)+,%0
MOV %0,@%5
MOV #L3,-(6)
MOV #3,-(6)
CLR -(6)
JSR %7,$B32
MOV @%5,-(6)
CLR -(6)
JSR %7,$B24
.GLOBL $B24
JSR %7,$B36
JMP $END
L1: .WORD 24942
.WORD 28022
.WORD 29801
.WORD 8293
.WORD 24684
.WORD 30050
.WORD 8288
.WORD 27755
.WORD 30561
.WORD 31593
.WORD 117
L2: .WORD 26741
.WORD 29728
.WORD 8569
.WORD 8481
.WORD 0
L3: .WORD 22850
.WORD 69
.END

.


---------- Post added at 18:01 ---------- Previous post was at 17:38 ----------

В любом случае имеем практически идеальную процедуру=функцию для опроса клавиатуры на паскале с ожиданием нажатия клавиши!!! Ура! (оба листинга смотрите выше!). И это только один из вариантов, который в теории должен работать под RT-11 везде(!), ещё вариант Patrona с третьей переменной и использование библиотеки фортрана никто не отменял )))

hobot
08.01.2015, 11:37
На глазок подогнал секунду = 30000 прогонам цикла i:=i-1;
Значение подобрано из исходников игры SUPRIS, под скорость эмуляции
ВМ2 в UKNCBTL. В новом эмуляторе ДВК задержку надо незначительно увеличивать.



PROGRAM HWCODE;
VAR IT: INTEGER;

PROCEDURE AT(CURX,CURY:INTEGER);
BEGIN
WRITE(CHR(27),'Y',CHR(32+CURY),CHR(32+CURX));
END;

PROCEDURE SECUNDER(IT:INTEGER);
VAR KW:INTEGER;
BEGIN
IF IT>0 THEN BEGIN
FOR KW:=0 TO 30000 DO;
IT:=IT-1;
END;
END;

PROCEDURE CLS;
BEGIN
WRITE(CHR(27),'H',CHR(27),'J');
END;

BEGIN
IT:=10;
CLS;
REPEAT
AT(15,10);WRITE('Время до выхода в ОС: ',IT:2,' SEC.');
SECUNDER(1);
IT:=IT-1;
UNTIL IT=0;
END.




http://pic.pdp-11.ru/images/ukncbtl.png



http://pic.pdp-11.ru/images/dvk.png


:smile:

hobot
17.02.2015, 05:25
Система GRAY с графическими процедурами для линий\окруж. и шрифтов
(строго для УК-НЦ), которую я тут вкратце описывал http://zx-pk.ru/showpost.php?p=721122&postcount=135 доступна на дискетах Сергея Фоменко и является его авторской разработкой (там и описание авторское есть к ней)
http://archive.pdp-11.org.ru/ukdwk_archive/ukncbtlwebcomplekt/Other/ASPcorp_Fomenko/

hobot
24.04.2015, 22:21
Практически версия 2.3 (!), поскольку до этого самой свежей и правильной считалась версия 2.2

вот её заголовок

http://storage1.static.itmages.ru/i/15/0424/h_1429902430_1448591_c313fdd5e8.png


И вот на одной из дискет из последнего пополнения на форуме
обнаружены сразу две более старшие версии с адаптацией для УК-НЦ


http://storage2.static.itmages.ru/i/15/0424/h_1429902582_8468642_b01766c18c.png



http://storage1.static.itmages.ru/i/15/0424/h_1429902632_8755199_f30c675cba.png


Может быть Барнаульские корректировщики среды откликнутся и прокомментируют улучшения?

образ дискеты тут http://zx-pk.ru/showpost.php?p=799492&postcount=479 UK_F-PASCAL2.2_IMG_.DSK

hobot
26.04.2015, 23:37
http://zx-pk.ru/showpost.php?p=799733&postcount=151

Пока не рекомендую новую версию вообще никому!
1 - встроенный редактор очень "не стабильный" - врубает режим ДКЛ и благодаря
очаровательному "залипанию" клавиатуры портится исходник, но хуже всего то,
что левые символы редактор "как-бы" не видит, приходится редактировать сторонним редактором (например НЫСом), во вторых библиотека CGRAPH _ которая
якобы должна добавить цветности и прочего - очень сомнительна, местный TM - замена "демо" TRADEMARK - я уже второй день не могу собрать. Библиотеки DOS,
GRAPHA и CGRAPH - что то они там наменяли в итоге сплошные конфликты двойных описаний. В общем если кто то балуется на досуге FAST\PASCAL спокойно пользуемся версией 2.2 - она ПКМ стабильная. Возможно я не разобрался пока - буду копаться, отпишусь.

hobot
28.04.2015, 17:59
http://zx-pk.ru/showpost.php?p=799733&postcount=151

http://storage4.static.itmages.ru/i/15/0428/h_1430232252_2361384_855fb7a08a.png

С горем пополам удалось собрать обновлённый trade_mark.
В общем пришлось его подправить в паре мест для совместимости со средой
2.2 стабильно. Добавили они там к примеру процедуру DEC(переменная) ??? зачем она - мне не трудно написать конструкцию вида j:=j-1; - в общем хотели как лучше (расширить возможности), но стабильности не прибавило + местные доп. модули (модуль граф там просто убитый какой-то). На картинке результат компиляции на версии 2.2 и модулем graph.pas - от неё же. Этот трэйд_марк опрятнее предыдущего конечно
оформлен.

Повторюсь : отдельной справки по расшир. командам не увидел,
листать искать документацию на сотнях страниц лень, ради процедур
EIS\FIS - каких-то :wink: жертвовать стабильность среды в целом мне
лично не интересно. Такие дела. Да! Они же CGRAPH - сделали для УК-НЦ - вот его я погляжу отдельно ещё и отпишу, но там путаница
с константами в результате компил. ругается на двойное или повторное
описание. Ещё одна особенность CGRAPH - первое увиденное мною ПО официальное как-бы где красный цвет расположен по схеме RGB :rolleyes_std:

И важнейший момент - никто видимо и не пытался оптимизировать размер исполняемого файла на выходе. Так что можно спокойно,
если кто то гоняет использует для себя, сидеть на стабильной 2.2 версии - она проверена уже временем.
И стабильно работает на всех трёх сестричках БКашеньке, УК-НЦшке и могучей ЭВМ ДВК !

hobot
29.04.2015, 01:35
в целом CGRAPH - можно и под КЦГД адаптировать (наверное) и под БК (предположительно), но две "коммерческие" демо-картинки чисто для УК-НЦ
(всё с той же дискеты http://zx-pk.ru/showpost.php?p=799733&postcount=151 )

http://storage4.static.itmages.ru/i/15/0428/h_1430260503_4011462_d44c4f1aac.png

http://storage2.static.itmages.ru/i/15/0428/h_1430260566_8961591_e102fa3b5b.png

MiX
03.11.2015, 21:03
Кому-нибудь интересна такая книга?
Сканить?
http://s020.radikal.ru/i702/1511/6e/b2265b650ad0.jpg (http://radikal.ru/big/5781aab8847845c19677850679f8dfdc)

form
03.11.2015, 21:03
Все интересно! :)

MiX
03.11.2015, 23:46
Все интересно! :)

Готово. (http://rghost.ru/download/private/6PLmBrQsG/8083ca402ca249dcd9b206d7270a98df/9d147c9b2a629dd972f5ce9620373bbe164e1a31/%D0%9E%D0%A1%D0%94%D0%92%D0%9A_%D0%9F%D0%B0%D1%81% D0%BA%D0%B0%D0%BB%D1%8C.pdf) :)

bigral
04.01.2016, 20:13
>Fast-Pascal v1.1(1.2-?) исходники и полное описание
>http://archive.pdp-11.org.ru/ukdwk_archive/ukncbtlwebcomplekt/PASCALFAST/<
>http://hobot.pdp-11.ru/ukdwk_archive/ukncbtlwebcomplekt/PASCALFAST/<

это все погибло? как я понимаю других исходников не было?

SKcorp.
04.01.2016, 21:53
>Fast-Pascal v1.1(1.2-?) исходники и полное описание
>http://archive.pdp-11.org.ru/ukdwk_archive/ukncbtlwebcomplekt/PASCALFAST/<
>http://hobot.pdp-11.ru/ukdwk_archive/ukncbtlwebcomplekt/PASCALFAST/<

это все погибло? как я понимаю других исходников не было?

http://archive.pdp-11.org.ru/ukdwk_archive/ukncbtlwebcomplekt/FASTPASCAL_v221_v223/


http://archive.pdp-11.org.ru/ukdwk_archive/ukncbtlwebcomplekt/FASTPASCAL_v22/

http://pdp-11.ru/mybk/hobot/ukdwk_archive/ukncbtlwebcomplekt/PASCALFAST/

bigral
05.01.2016, 18:29
http://pdp-11.ru/mybk/hobot/ukdwk_archive/ukncbtlwebcomplekt/PASCALFAST/

Тут лежат исходники, правда там по-моему некоторые файлы с ошибками были считанны, и при линковке не находит несколько процедур, это единственная версия?

hobot
05.01.2016, 18:40
это единственная версия?
возможно, что нет. Я капну, но скорее всего придётся смириться, там суть исходников, что бы переделать модуль граф под БК-шку, КГД ДВК, или УК-НЦ, зачем вам вообще эта среда понадобилась вдруг? Если вам рабочая среда БЫСТРОГО ПАСКАЛЯ нужна, лучше брать образы которые я собирал, их несколько вариантов есть.

bigral
05.01.2016, 18:46
зачем вам вообще эта среда понадобилась вдруг?

решил посмотреть как там сделан компилер

hobot
05.01.2016, 20:52
решил посмотреть как там сделан компилер
кстати говоря действительно очень шустрый, единственный минус огромный размер исполняемого файла, что свело все плюсы
среды на нет буквально. Так ради просто ПАСКАЛИТЬ (как хобби) я всё таки предпочитаю (если про УК-НЦ говорить) обычный
системный OMSI-PASCAL + MACRO11 )
FAST-PASCAL - ну все просто знают что он есть. И всё. Конечно он шустр, но не удобен в виду вышесказанного.
И это всё при том, что в любом случае почти все на голом АСМЕ пишут если и пишут вообще) Что лично для меня тяжеловато всёж.
Другое дело макро-вставки в программу на ПАСКАЛЕ по назначению, это да! Это красотища! Красота! )

- - - Добавлено - - -


что бы переделать модуль граф под БК-шку, КГД ДВК, или УК-НЦ,
сейчас все три варианты вроде бы настроенные на работу образы есть, и для УК-НЦ и для БК11М и для ДВК+КГД(КЦГД?).
Как-то так. Исходники, если другая копия попадётся я отпишусь.

ram_scan
11.01.2016, 13:38
http://zx-pk.ru/showpost.php?p=799733&postcount=151


2.2 стабильно. Добавили они там к примеру процедуру DEC(переменная) ??? зачем она - мне не трудно написать конструкцию вида j:=j-1; - в общем хотели как лучше (расширить возможности), но стабильности не прибавило + местные доп. модули (модуль граф там просто убитый какой-то). На картинке результат компиляции на версии 2.2 и модулем graph.pas - от неё же. Этот трэйд_марк опрятнее предыдущего конечно
оформлен.


Это они туда с борландом совместимость потащили, чтобы значит писишные исходники собирать с меньшим геморроем. Там и модуль graph насколько я помню калька с борландовского graph. Кстати вместе с DEC должна быть процедура INC еще. Только вот не помню умеет ли она более чем на единицу увеличивать/уменьшать значение.

shattered
13.02.2017, 10:51
Вдобавок к этим двум ещё папка с библиотеками,
которые в архиве уже с самого начала пылятся,
без дополнительных описаний и исходников.
Последние из материалов от тов. anasana

видно по дате что я их к себе на хард скинул в 2011 (не иначе как с архива пришедшего по почте! )


Image : LIBDWK.dsk

Format : DSK
Size : 575 Kb

Volume ID: RT11A
Owner :

File Blocks Date Bytes
---------- ------ ----------- ----------
<...>
MED .F12 39 01-Oct-2011 19'968
MEDFOR.F12 39 01-Oct-2011 19'968
<...>
---------- ------ ----------- ----------
19 Files, 1136 Blocks
0 Free blocks


Возможно часть этих OBJ обрубки чего то целого например
MED - может быть (предп.) кусочком EDIT\EDIK какого-нибудь.
Описаний нет. Таких невыясненного назначения объектов полно,
хранятся так как были частью чего-то ведь - значит нужны.
И даже не факт что не содержат ошибок (!) кстати говоря.

MDE/MEDFOR -- это, видимо


ДАННЫЙ ДОКУМЕНТ СОДЕРЖИТ ОПИСАНИЕ ГРАФИЧЕСКОГО ПАКЕТА MED.
ПАКЕТ ПРЕДНАЗНАЧЕН ДЛЯ ИСПОЛЬЗОВАНИЯ В СОСТАВЕ ДВК-3,3М2 С
ОПЕРАЦИОННОЙ СИСТЕМОЙ ОС ДВК,ФОДОС-2 ИЗ ЯЗЫКОВ
ПАСКАЛЬ,МАКРО,ФОРТРАН. ГРАФИЧЕСКИЙ ПАКЕТ СОСТОИТ ИЗ НАБОРА
ПОДПРОГРАММ, ВЫЗОВ КОТОРЫХ ИЗ ПРИКЛАДНОЙ ПРОГРАММЫ ДАЕТ
ВОЗМОЖНОСТЬ ПРОИЗВОДИТЬ ГРАФИЧЕСКИЕ ПОСТРОЕНИЯ НА ЭКРАНЕ
ДВК-3,3М2, ИСПОЛЬЗУЯ КОНТРОЛЛЕР ГРАФИЧЕСКОГО ДИСПЛЕЯ ( КГД ),
ВХОДЯЩЕГО В СОСТАВ ДВК-3.


(архив скоро будет)

hobot
13.02.2017, 15:13
shattered, сама библиотека на MX-дискетах есть в архиве. Во всяком случае файл MEDFOR.OBJ

hobot
12.10.2017, 04:22
Для ДВК был графический Паскаль. Не в том плане, что работал с графикой, а что рисовался граф программы, компилировался и после уже получался текст на Паскале. Далее стандартно. По такой технологии была сделана РДБ Микро. Я еще надеюсь когда-нибудь это увидеть :-).

вопрос, не оно ли это случаем?


LD6>RU GRAFED
Входной файл? ^C

LD6>RU GC
Input file ?^N^C

LD6>

LD6>Dir/Fu/Bl/Vol
12-Oct-2017
Volume ID: RAFOS
Owner :
CC .SAV 98 17-Dec-1986 38 CLIB .OBJ 67 17-Dec-1986 136
STDIO .H 6 17-Dec-1986 203 AS .SAV 84 17-Dec-1986 209
SUPORT.OBJ 1 17-Dec-1986 293 GC .SAV 16 17-Dec-1986 294
TDAT .C 4 17-Dec-1986 310 TDAT .SAV 11 17-Dec-1986 314
ALLCC .DOC 843 17-Dec-1986 325 ALLLIB.DOC 1172 17-Dec-1986 1168
APB .DOC 147 17-Dec-1986 2340 APC .DOC 55 17-Dec-1986 2487
C2 .SYS 546 05-May-1986 2542 GRAFED.SAV 38 17-Dec-1986 3088
GPA .SAV 36 17-Dec-1986 3126 < UNUSED > 1638 3162
15 Files, 3124 Blocks
1638 Free blocks

LD6>


и как это проверить уточнить?

hobot
05.10.2018, 19:49
ПАСКАЛИМ ? Паскалим )

Добавлено в библиотеку учебное пособие по языку Паскаль
http://archive.pdp-11.org.ru/BIBLIOTEKA/pascal_fodos_1985/

Korchagin
02.11.2018, 03:59
Собрал себе образ дискеты с Паскалем для ДВК, который описан в 3 книге про ПО ДВК. К сожалению, нет входивших в комплект поставки оптимизатора полученного при помощи транслятора ассемблерного кода IMP.SAV и форматтера паскалевских файлов FORM.SAV/ Никто не видел их в своих дистрибутивах?

MiX
03.11.2018, 19:08
Никто не видел их в своих дистрибутивах?
Есть какие-то.

Здесь. (http://rgho.st/download/private/7ZkdpJVbW/d2ff4033f35c69a6555c33eadf2ddd47/50362225f01934741ada5e56b257e70b76c97438/50362225f01934741ada5e56b257e70b76c97438/IMP_FOR.zip)

Korchagin
03.11.2018, 21:41
Проверил. IMP именно тот из 3 книжки по ПО ДВК. Форматеры текста паскалеских программм пока запустить не удалось, но это они.

Korchagin
10.11.2018, 09:47
Был несколько огорчен тем, что не нашел в описании Паскаля ДВК типа данных String. Если типы Byte=0..255 и Word=0..65535 (ну или UnsignedInt) объявить легко, то со String возник вопрос. Кто и как выходит из положения? Можно объявить String как record, но как работать в этом случае с выводом таких строк на терминал или в файл?

hobot
10.11.2018, 11:32
Korchagin, в конце такой строки внутри файла писать eoln - как то так.

Korchagin
10.11.2018, 13:28
Попробую. Но слишком уж куц конкретно этот компилятор. Еще там отметил проблему с объявлением меток (label). В доках (3 книжка) вообще даже примера нет. Ставлю объявление метки и саму метку - выдает ошибку типа label missing. И очень не нравится, что размер файла пухнет как на дрожжах на ровном месте - тех же Writeln штук 10 натыкал, компилятор вместо перехода на процедуру в слинкованной библиотеке Паскаля лепит ассемблерную копию этого Writeln в выходной файл.

Hunta
10.11.2018, 13:54
Еще там отметил проблему с объявлением меток (label).
Ну, вообще то в Паскале использование меток - это ОЧЕНЬ дурной тон ;) У него хватает возможностей языка, что бы не использовать их вообще.
И не знаю, какой там шёл с ДВК/Квант-ами (так и не попробовал), но на RSX в своё время использовали OMSI Pascal 2.0 - TSK (аналог SAV в RSX) получались зело компактными

Korchagin
10.11.2018, 16:56
С другой стороны, GOTO штука полезная в некоторых ситуациях. Ведь при программировании на асме мы не обращаем внимания на гроздья самых разных типов джампов. Так почему бы не иметь в запасе столь гибкое средство, тем паче компилятор поддерживает встроенный асм и линковку с объектниками из других языков. И label может оказаться полезной при необходимости получения пойнтера на некоторый кусок кода.

Hunta
10.11.2018, 17:01
Ведь при программировании на асме мы не обращаем внимания на гроздья самых разных типов джампов
И от этого на MACRO-11 я тоже ушёл. Ибо пониманием программы эти гроздья сбивают конкретно.

Korchagin
10.11.2018, 18:47
Модульность и тщательное комментирование. Вот ключ к легкочитаемости программ и облегчению программирования. Модуль создан, отлажен и может рассматриваться далее как черный ящик со входными и выходными параметрами.

- - - Добавлено - - -

Как с метками разберусь, хочу попробовать некое подобие объектов сляпать в виде записей. Может и прокатить - методы объектов в борландовском паскале не что иное как адреса процедур, а требуемые параметры все равно известны, как известен и тип их передачи - через стек.

- - - Добавлено - - -

С метками разобрался. В диалекте Паскаль ДВК (из 3 книжки ПО ДВК) метки работают цифровые и объявлять их надо не просто перед var, а вообще самыми первыми. Тогда работает.

form
11.11.2018, 06:25
И label может оказаться полезной при необходимости получения пойнтера на некоторый кусок кода.
А ведь существует язык в котором есть метки, но нет оператора перехода на них :)

hobot
11.11.2018, 17:34
https://zx-pk.ru/threads/20444-pascal-macro11-(uknts-dvk).html?p=985873&viewfull=1#post985873
за такое во времена оные компьютерного времени лишали )

Korchagin
11.11.2018, 22:04
ПризнаЮсь - позорник я полный в делах двкшных. Впрочем, не стыдно не знать, стыдно не учиться. Что сейчас и делаю, помаленьку разгребая непонятные фичи неизвестного мне диалекта хорошо знакомого мне еще 25 лет назад ЯП. Посмотрит кто-то эту тему спустя время и не будет громко ругаться матом, а подсознательно поблагодарит за сбереженные нервы.

hobot
11.11.2018, 22:17
Посмотрит кто-то эту тему спустя время и не будет громко ругаться матом, а подсознательно поблагодарит за сбереженные нервы. да стоит мои ранние посты-вопросы почитать, я же половину узнал только тут, а ту что знал основательно забыл за несколько 10-летий без УК-НЦ - паскаль классический просто модули CRT и DOS за вас никто не написал ) ФАСТ-ПАСКАЛЬ попробуйте - правда это не совсем то, но он ближе к Борланд варианту

Korchagin
11.11.2018, 23:07
Не настоль уж велики борландовские модули CRT и DOS, можно и написать. Правда, самого понятия unit в Паскале ДВК не обнаружено. Придется просто стыковать объектники псевдомодулей при линковке. Я просто к чему - немного упорства и все непонятные моменты станут понятными, пусть методом тыка.

hobot
12.11.2018, 05:55
немного упорства и параллельно с этой темой по программированию на УК-НЦ море полезной инфы в теме которая так и называется

hobot
05.03.2020, 17:30
РАБОТА С ФАЙЛАМИ НА ПАСКАЛЕ.
======================

Вопрос возник такой, я не могу вспомнить никак тонкий момент :
1. некогда писалась какая-то программа, которая внешний файл пользователя использовала
2. имя файла вводилось с клавиатуры
3. затем RESET (открытие существующего файла для чтения) и
если файла нет - программа на паскале очень не красиво вылетает со стандартным сообщением об ошибке
(!!!)
И вот оно - вылет нельзя было допустить и мы как-то это момент побеждали - я не могу вспомнить!!!
Вроде бы выставлялся ключ перед открытием файла /*$I-*/ а дальше то как распознать ошибка ввода вывода или нет, IORESULT - паскаль ругается, там какая то булевская функция или что? нэ могу вспомнить
Кто помнит\знает, прошу помощи !!! ) В общем в идеале у нас там по коду получалось обработать
отсутствие файла без вылета и своим по ELSE сообщением - информировать пользователя об ошибке
???

form
06.03.2020, 12:40
IORESULT - паскаль ругается
IORESULT - вроде фича всяких TP/BP/FPK (ну может и еще чья).
В целом, стандартного способа не существует.
Если брать родной паскаль который в RT-11, то в нем выглядит так:
PROGRAM TEST;
CONST
NAME = 'TEST';
DEFEXT = 'TXT';
VAR
F: TEXT;
SIZE: INTEGER;
BEGIN
RESET(F, NAME, DEFEXT, SIZE);
IF SIZE < 0 THEN
WRITELN('FILE NOT FOUND')
ELSE
WRITELN('FILE SIZE: ', SIZE, ' BLOCK(S)')
END.
Второй параметр RESET() - имя файла, третий - расширение файла по умолчанию (если не указано явно в первом параметре), третий = размер файла в блоках (если файла нет - будет -1).
.PASCAL TEST TEST

Errors detected: 0
Free memory: 7842 words


.MAC TEST

.LIN/LINK:SY:PASCAL TEST

.RU TEST
FILE NOT FOUND

.CRE TEST.TXT/ALLO:5.

.RU TEST
FILE SIZE: 5 BLOCK(S)

.
PS. В приведенном примере для скорости сравнение < 0, но в идеале надо явно сравнивать с -1 поскольку подозреваю, что для файлов размером 32768. и больше блоков размер будет отрицательный :)

hobot
06.03.2020, 13:11
form! спасибо, вот я про сайз в ресет забыл не учёл возможность,
хотя в Русском руководстве вроде бы с ним примеров куча целая!
Я тут к надвигающемуся 8 марта переделал исходник немного



HD7>TY SHONC.PAS
PROGRAM SHOWONC;
VAR
SYM: CHAR;
INF: FILE OF CHAR;
CHFS: INTEGER;

BEGIN
RESET(INF,'DK:TETKA1.TXT',,CHFS);
IF CHFS>0 THEN
WHILE NOT EOF(INF) DO
BEGIN
READ(INF,SYM);
IF NOT EOLN(INF)
THEN WRITE(SYM:1)
ELSE WRITELN(SYM:1);
END ELSE WRITELN('FILE NOT FOUND!');

CLOSE(INF);
WRITELN;
END.


HD7>RU SHONC
FILE NOT FOUND!


HD7>CREA TETKA1.TXT/ALL:8.

HD7>RU SHONC
____________________ЗЗЗ8ЗЗ88ЗЗЗ8888
__________________З_ЖЖЗ8ЗЗЗЖЖЗЖЖЗЖЖ Ж8З
________________ЗЖ8?88ЗЗЖЖЖЗ__Ж_ЖЖЖЖ� �ЖЗЖ
______________ЖЖ8?8ЗЗЗ?8ЗЖЖЖЖЖЖЖ_ЖЗ ЗЖЖЗ8Ж
______________Ж8?8ЗЗЗЗЖЖЖЖЗЗЖЖЖЖЗ� �ЖЗЗЖЖЗЗЖ
_____________Ж88?ЗЗЗЗЗЗЖЖЖЗЗЗЗЖ_Ж� �ЖЗ888З8З
_____________Ж88?ЗЗЗЗЗЗ??ЗЖЖЗЖЗЖЖЖ ЖЖ88ЗЗ88
_____________ЖЗЗ?8???З88ЗЖ?8ЗЗ8ЗЖЗЖЗ� �8З88З
_____________ЖЗЖ??8З8ЗЗЖЖЗЖЖЖЗ888ЗЖ ЖЗ8З888
_____________ЖЖЖЗ?ЗЗЗЖЗЗЗЗЗЗЗЗ88Ж ЗЗЖЖ8ЗЗ88
_____________ЗЖЖЗ?8З8?8ЗЗЗЗЗЗЗ88?ЗЗ� �8ЖЗЗЗ88Ж
_____________ЗЗЖЖ8??8??З8ЖЗЗЗЗ8???ЗЗЖ 8ЗЗ88888Ж
______________8ЗЖЖ8???8ЗЗЗЗ888??8?8ЗЗЗ88 8?8?88
_______________Ж88ЖЖЗ??З88????8ЗЗ8?ЗЗ8З8 8888??
________________ЗЖЗ88ЗЗ???8888ЗЗЗ888З88З ЗЗЗЗ???Ж
_______________З_З8ЗЗ8З???888ЗЗЗ8888ЗЖЖ ЖЖЖЖЗЗЗ??8
_________________З88ЗЖЗ?888ЗЗЗЗЗЗЗЗЗ8 ЖЖЖЖЖЖЖЗЗЗ??
________________ЗЗ8ЗЗ8888ЗЗЗЗЗЗЗЗЗЗ� �8ЗЖЖЖЖЖЖЖЗЗЗЖ
______________ЖЗ88?888ЗЗЗЗЗЗЗЗЖЖЖЖЖ ЖЗЖЗЖЖЖЖЖЖЖЗЗЗ
______________8?888ЗЗЗЗ88ЗЗЗЗЖЖЖЖЖЖ� �ЖЗ8ЗЖЖЖЖЖЖЗЗЗЖ
____________Ж88ЗЗЗЖ888ЗЗЗЖЖЖЖЖЖЖЖ� �ЗЗЗЗ88ЗЖЖЖЖЖЗЗЗЗ
___________88ЗЗЖЖЖ88888ЗЗЖЖЖЖЖЖЗЗЗ ЗЗЗЗЗ8ЗЗЖЖЖЖЗЗЗЗ
________888ЗЗЖЖЖЗ88З8ЗЗЗЖЖЖЖЖЖЗЗ ЗЗЗЗЗЗЗ8?8ЗЖЖЖЖЗЗЗЗ
________З88ЗЖЖЖЖ88ЗЗЗЗЖЖЖЖЖЖЖЗЗ ЗЗЗЗЗЗЗЗ8??ЗЗЗЖЖЗЗЗЗ
________Ж88ЗЗЗЗ8888ЗЗЗЗЖЖЖЗЗЗ8ЖЖ� �ЖЗЗЗЗЗ8?8ЗЗЗЗЖЗЗЗЗЗ
__________888888888З8ЗЗЗЗЗ?8ЖЖЖЖЖЖЗЗ ЗЗ8888ЖЗЗЗЗЗЗЗЗЗ
_____________ЗЗ8ЗЗЗЗЗЗЖЖЖЖЖЖЖЖЖЖ ЖЗЗЗЗ88З88_ЖЗЗЗЗЗЗЗЗ
_____________8ЗЗЗЗЗЗЗЖЖЖЖЖЖЖЖЖЖЗ ЗЗЗ8888З8_Ж_ЗЗЗЗЗЗЗЗ
_____________8ЗЗЗЗЗЗЗЗЖЖЖЖЖЖЖЖЗЗ ЗЗ8Ж_Ж888____ЗЗЗЗЗЗЗ
_____________ЗЗЗЗЗЗЗЗЗЗЖЖЖЖЖЗЗЗ� �88Ж___Ж_8Ж___ЗЗЗЗЗЗЗ
______________ЗЗЗЗЗЗЗЗЗЗЖЖЖЗЗЗ88З 8______ЖЖ___ЖЗЗЗЗЗЗ
______________ЗЗЗЗЗЗЗЗЗЗЖЖЖЗЗЗЗЗ З8__________ЖЗЖЖЖЗЗЗ
______________8ЗЗЗЗЗЗЗЗЗЖЖЖЖЗЗЗЗ� �8_________ЖЗЖЖЖЗЗЗЗ
______________8ЗЗЗЗЗЗЗЗЖЖЖЖЖЗЗЗЗ� �З8_______ЗЗЖЖЗЗЗЗЗ
______________888ЗЗЗЗЗЗЖЖЖЖЖЗЗЗЗЗ� �З8З____ЖЗЖЖЖЗЗЗЗ
______________88З8ЗЗЗЗЗЖЖЖЖЖЗЗЗЗЗ� �ЗЗ88__ЗЗЖЖЖЗЗЗЗ
_____________Ж888?ЗЗЗЗЗЗЖЖЖЗЖЗ???8?8? ?8ЗЖЖЖЗЗЗЖ
_____________8888ЗЗЗЗЗЗЗЗЗЖ?З??З??8З8 ЗЗЖЖЗЗЗЗ
____________Ж8ЗЗ88ЗЗЗЗЗЗЗЗ??????8?ЗЗ� �ЖЖЗЗЗЗ
____________88ЗЗ8?8З8Ж88??ЖЖ??8З8ЗЗЖЖЖ ЖЗЗЗ8
___________Ж8ЗЗЗ?8?8ЖЖ??ЗЗЖЖ??ЖЗЖЖЗ ЖЖЖЗЗ888Ж
__________8ЖЗ8ЗЗ?З8З8?8ЗЖ8?8З8ЖЖЖЗЗ8 ЗЗЗЗ8888
_________ЗЗЖЖ?_8?ЖЖЖЖЗЗЗЖ?8З???8З8?� �??ЗЗ8888
________?8ЗЗЖ?Ж_?ЖЖЗ8?ЗЖЗ?Ж?ЖЖ?_?З?� �Ж?_8?Ж88
________8Ж8ЗЗ888????8ЗЗЗ??8ЗЗЗЗЗЗ8З88 З88888Ж
________8ЖЗЖЗЗ8З888ЖЖЗЗЗ8ЗЗЗЗЗЗ8� �Ж8ЗЗЗЗЗЗЗ8
_______З8ЗЖЖЖ8ЗЗ88ЖЗЗЖЖЖЗ8ЖЗ8ЗЗ� �ЗЗЗЗЗЗЗЗЗ8
_______8ЗЖ8ЗЖ8ЗЗЗЖЗЖЖЖЖЖЖЖЖЖЗЗ 8ЗЗЗЗЗЗЗЗ8
_______8З888ЗЗ8ЖЗЗЖЖЖЖЖЖЖЖЖЗЗЗЗ ЗЗЗЗЗЗЗ
_______8З8888ЗЖЗЗЖЖЖЖЖЖЖЖЖЖЗЗЗЗ ЗЗЗЗ8Ж
_______З888З8ЖЗЗЖЖЖЖЖЖЖЖЖЖЗЗЗЗ� �ЗЗ8
_______88888ЖЗЖЖЖЖЖЖЖЖЖЖЖЗЗЗЗЗЗ З8
_______888ЗЖЗЗЖЖЖЖЖЖЖЖЖЗЗЗЗЗЗ8� �
_______8888ЗЗЖЖЖЖЖЖЖЖЖЗЗЗЗЗЗЗЗ
______88З8ЗЗЖЖЖЖЖЖЖЖЖЗЗЗЗЗЗ8
_____З888ЖЗЖЖЖЖЖЖЖЖЗЗЗЗЗЗ8З
_____888ЗЗЗЖЖЖЖЖЖЖЗЗЗЗЗ88Ж
____З88ЗЗЗЖЖЖЖЖЖЖЗЗЗЗЗ8Ж
___З888ЗЗЖЖЖЖЖЖЗЗЗЗ888
___888ЗЗЖЖЖЖЖЖЗЗЗЗ88З
__З888ЗЖЖЖЖЖЗЗЗЗ88З
__888ЗЗЖЖЖЖЗЗЗЗЗ88
__Ж88ЗЗЗЗЗЗЗЗЗЗЗЗ
___888ЗЗЗЗЗЗЗЗЗЗЗЗ
_____88ЗЗЗЗЗЗЗЗЗЗЗ8
______88ЗЗЗЗЗЖЖЖЖЖЗ8З
_______8ЗЗЗЗЗЗЖЖЖЖЖЖЗ8
_______З8ЗЗЗЗЗЗЖЖЖЖЖЖЗЗ
________З8ЗЗЗЗЗЗЖЖЖЖЖЖЗЗ
__________8ЖЗЗЗЗЗЖЖЖЖЖЗЗ
___________8ЗЗЗЗЗЗЖЖЖЖЖЗЗ
____________8ЗЗЗЗЗЗЖЖЖЖЗЗЖ
_____________8ЗЗЗЗЗЗЖЖЖЗЗЗ
______________8ЗЗЗЗЗЗЗЖЖЗЗ
_______________З8ЗЗЗЗЗЗЗЗЗЗ
_________________8ЗЗЗЗЗЗЗЗЗ
__________________8ЗЗЗЗЗЗЗЗЗ
___________________88ЗЗЗЗЗЗЗЗ
____________________8ЗЗЗЗЗЗЗ??Ж
_____________________8ЗЗЗЗ8?????
_____________________ЖЗЗЗЗ???????
_____________________?8З????????ЗЗЖЖ
_____________________8??????????ЖЗЗЖ
_____________________8З??????????8???
____________________88ЗЗЗЖ??З?8?????
___________________88ЖЗЖЗЗ??????З??
_________________8??ЗЗЖЖЗЗ8??З_?Ж?8
_____________ЖЗЗЗЗЗ???????????_?З?
______________??8З???????З?8??_?8?
______________??8??????????____???


HD7>


form, не по теме - можно ли перенести со СТАКАНА Гангстеров на ЖД с RSX для эмулятора ДВК?

form
06.03.2020, 13:13
можно ли перенести со СТАКАНА Гангстеров на ЖД с RSX для эмулятора ДВК?
Всмысле под RT-11 переделать?
В принципе можно :)

hobot
06.03.2020, 13:21
на ЖД с RSX для эмулятора ДВК?
но ты исходники так и не откопал, зачем под RT, там же есть образ готовый с RSX установленной для ВМ3 конфига )

- - - Добавлено - - -

образ похоже та сам и делал когда то там?



DEVICE TT001: NOT IN CONFIGURATION

RSX-11M V4.8 BL70 28.K
>RED HD:=SY:
>RED HD:=LB:
>MOU HD:RSX11MBL70
>@HD:[1,2]STARTUP
>* Please enter time and date (DD-MMM-YYYY HH:MM) [S]:

form
06.03.2020, 13:22
но ты исходники так и не откопал, зачем под RT, там же есть образ готовый с RSX установленной для ВМ3 конфига )
Ну в RSX-то никто не мешает перенести прямо со стакана.
SYS$GAMES:GANG.TSK
выкачать, засунуть в образ для ДВК
TSK файл - чистфй image, преобразований не требуется.

hobot
06.03.2020, 13:30
образ похоже та сам и делал когда то там?<br>

<br>
<br>
DEVICE TT001: NOT IN CONFIGURATION<br>
<br>
&nbsp;&nbsp;RSX-11M V4.8 BL70 &nbsp; 28.K<br>
&gt;RED HD:=SY:<br>
&gt;RED HD:=LB:<br>
&gt;MOU HD:RSX11MBL70<br>
&gt;@HD:[1,2]STARTUP<br>
&gt;* Please enter time and date (DD-MMM-YYYY HH:MM) [S]:<br>



Ну в RSX-то никто не мешает перенести прямо со стакана.<b
SYS$GAMES:GANG.TSK
выкачать, засунуть в образ для ДВК
TSK файл - чистфй image, преобразований не требуется.стоп стоп стоп! Я последний раз (совсем недавно!) наверное где-то в логах видно,коннектился через эмуль VT52 с помощью CTAKAH.cfg и потом копию закидывал на стакан и игрался,а вот с эмулятором ДВК + RSX + NET < --- я даже не на вы... ))) Иначе бы не спрашивал.

Hunta
06.03.2020, 13:33
"RSX-11M V4.8 BL70 28.K" - это круть. Игрушка будет летать :)

hobot
06.03.2020, 13:42
у меня в комплекте эмулятора HDRSX.DSK и конфиг к нему...Но там же просто так не запихнёшь , ПКМ я не знаю как.

- - - Добавлено - - -


Игрушка будет летать там ожидание нажатия на каждом действии - далеко не улетит

hobot
07.03.2020, 12:04
IORESULT - вроде фича всяких TP/BP/FPK (ну может и еще чья).
на одной из дискет для ДВК нашлось несколько мощных примеров :

Контроль Ошибок:


PROGRAM ERROR; (* ERROR PROCESSING *)
(*$T-,A- TURN OFF STACK OVERFLOW CHECKING IN CASE THAT WAS THE ERROR! *)

(*$E+ MAKE THIS AN EXTERNAL PROCEDURE DEFINITION
ДАННАЯ ПРОЦЕДУРА ЯВЛЯЕТСЯ ВНЕШНЕЙ *)

TYPE
ERRORTYPE = (FATAL, IOERROR, WARNING);
MESSAGE = ARRAY [1..100] OF CHAR;

PROCEDURE ERROR(CLASS:ERRORTYPE; ERRORNUMBER,ERRORMSGLENGTH:INTEGER;
VAR MSG:MESSAGE; VAR XFILE:TEXT; IOSTATUS,USERPC:INTEGER;
FILENAMELENGTH: INTEGER; VAR FILENAME: MESSAGE);

VAR I:INTEGER;

BEGIN
WRITELN;
CASE CLASS OF
WARNING: WRITE('WARNING: ');
IOERROR: WRITE('?I/O ERROR: ');
ELSE WRITE('?FATAL ERROR: ');
END;
WRITELN(MSG:ERRORMSGLENGTH);
IF CLASS=IOERROR THEN BEGIN
IF FILENAMELENGTH > 0 THEN
WRITELN(' FILENAME: "',FILENAME:FILENAMELENGTH,'"');
WRITELN(' I/O STATUS: ',IOSTATUS:1);
END;
WRITELN(' PROGRAM COUNTER: ',USERPC:-1);
END;



какой-то Интэррапт-же


(* INTRPT V1.2 --- INTERRUPT INITIALIZATION
ИНИЦИАЛИЗАЦИЯ ВЕКТОРА ПРЕРЫВАНИЯ *)

PROCEDURE INTERRUPT( VECTOR:INTEGER; PROCEDURE ROUTINE; PS:INTEGER);
VAR
PROTFAIL : BOOLEAN;
VECTORS ORIGIN 0B : ARRAY [0..100B] OF RECORD
TRAPADDR : INTEGER;
PROCESSORSTATUS : INTEGER;
END;
BEGIN
(*$C .MCALL .PROTECT
.GLOBL RTAREA, $USRPC, $RESR5
CLRB PROTFAIL(6)
.PROTECT #RTAREA,VECTOR(6)
ROLB PROTFAIL(6)
*) IF PROTFAIL THEN
WRITELN('VECTOR AT ',VECTOR:-1,' NOT AVAILABLE')
ELSE
BEGIN
WITH VECTORS[VECTOR DIV 4] DO
BEGIN
(*$C MOV VECTOR-4(6),@%3
*)(* TRAP := ROUTINEADDR; *)
PROCESSORSTATUS := PS;
END;
END;
END;




PROCEDURE SAVREG;
BEGIN
(*$C MOV %5,-(6)
MOV %4,-(6)
MOV %3,-(6)
MOV %2,-(6)
MOV %1,-(6)
MOV %0,-(6)
MOVB @#^O56,-(6)
MOV $USRPC,-(6)
MOV $RESR5,%5
JMP @16(6)
*)
END;


PROCEDURE RESREG;
BEGIN
(*$C TST (6)+
MOV (6)+,$USRPC
MOVB (6)+,@#^O56
MOV (6)+,%0
MOV (6)+,%1
MOV (6)+,%2
MOV (6)+,%3
MOV (6)+,%4
MOV (6)+,%5
TST (6)+
RTI
*)
END;



Работа с CSI - честно не понял - это обработка входящих параметров?



(* CSI V1.2 --- COMMAND STRING INTERPRETER (GENERAL) INTERFACE
ИНТЕРФЕЙС ДЛЯ РАБОТЫ С CSI *)

CONST
INMAX = 6; (* MAXIMUM NUMBER OF INPUT FILES *)
(* МАКСИМАЛЬНОЕ ЧИСЛО ВХОДНЫХ ФАЙЛОВ *)


TYPE
TSTRING = ARRAY [1..80] OF CHAR;
CSIEXTENSIONS = ARRAY [1..12] OF CHAR;

CSIDATA = RECORD
O1,O2,O3 : TEXT;
OFLAG1, OFLAG2, OFLAG3 : BOOLEAN;
INN : ARRAY [1..INMAX] OF TEXT;
IFLAG : ARRAY [1..INMAX] OF BOOLEAN;
SWITCHCOUNT : INTEGER;
SWITCH : ARRAY ['@'..'Z'] OF RECORD
GIVEN, ARGFOUND : BOOLEAN;
ARGVALUE : INTEGER;
END;
END;



FUNCTION CSI( STR:TSTRING; DEFEXTTEXT:CSIEXTENSIONS;
VAR CSIDAT:CSIDATA ) : BOOLEAN;
VAR
CHANSFREE, CSIVALUE : BOOLEAN;
C : CHAR;
I, N, CINDEX, RINDEX : INTEGER;
VAL : 0..65535;
DEFEXT : ARRAY [1..4] OF INTEGER;


FUNCTION WAITCHN( CHN : INTEGER ) : BOOLEAN;
VAR FLAG : BOOLEAN;
BEGIN
FLAG := TRUE;
(*$C .MCALL .WAIT
.WAIT CHN(6)
BCC 1$
CLRB FLAG(6)
1$: *)
WAITCHN := FLAG;
END;


PROCEDURE SETOPEN( VAR FIL:TEXT; CHN:INTEGER; RESETFLAG:BOOLEAN;
VAR RESULTFLAG:BOOLEAN );
CONST
STATTEXT = 200B; (* TEXT TYPE FILE (VS. BINARY RECORDS) *)
STATWRITE = 20B; (* FILE OPEN FOR WRITING *)
STATREAD = 10B; (* FILE OPEN FOR READING *)
STATSEEK = 4B; (* FILE IS RANDOM-ACCESS TYPE (SEEK ALLOWED) *)
STATSPAN = 2B; (* RECORDS SPAN BLOCK
BOUNDARIES (DOUBLE SIZE BUFFER) *)

BUFFERLEN = 512; (* SIZE OF FILE BUFFER IN BYTES *)
TYPE
BUFFER = ARRAY [1..BUFFERLEN] OF CHAR;
CHANBLOCK = RECORD
PTR : ^BUFFER;
STAT, DEV, NAME, NAM2, EXT, FSIZ, CHAN, BLOK: 0..65535;
BUFF : ^BUFFER;
BSIZ, HAND, REC : INTEGER;
DATA : ^BUFFER;
PER : INTEGER;
END;
VAR
CHNBLOCK : ^CHANBLOCK;
PTRFILE : RECORD CASE INTEGER OF
1: (P: ^CHANBLOCK);
2: (F: TEXT);
END;
BEGIN
RESULTFLAG := WAITCHN(CHN);
IF RESULTFLAG THEN
BEGIN
NEW(CHNBLOCK);
PTRFILE.P := CHNBLOCK; FIL := PTRFILE.F;
WITH CHNBLOCK^ DO
BEGIN
IF RESETFLAG THEN STAT := STATREAD ELSE STAT := STATWRITE;
STAT := STAT OR STATTEXT;
DEV := 0;
NAME := (ORD('C')*40+ORD('S'))*40+ORD('I')-39488;
NAM2 := (CHN + 31)*40*40;
EXT := 0;
FSIZ := 0;
CHAN := CHN;
BLOK := 0;
BSIZ := BUFFERLEN;
HAND := 100000B; (* RAN ACC DEVICE *)
REC := 1; (* RECORDSIZE: 1 *)
PER := 1000B DIV REC;
NEW(BUFF); DATA := BUFF; PTR := BUFF;
END;
(*$C .GLOBL $CHAN0
MOV CHN(6),%0
ASL %0
MOV CHNBLOCK(6),$CHAN0(0)
*)
IF RESETFLAG THEN GET(FIL);
END;
END;



BEGIN (* CSI *)
CSIVALUE := TRUE;
CINDEX := 1;
FOR RINDEX := 1 TO 4 DO
BEGIN
VAL := 0;
FOR I := 1 TO 3 DO
BEGIN
C := DEFEXTTEXT[CINDEX]; CINDEX := CINDEX+1;
IF (C>='А') AND (C<='З') THEN N := ORD(C)-96 ELSE
IF (C>='A') AND (C<='Z') THEN N := ORD(C)-ORD('@') ELSE
IF (C>='0') AND (C<='9') THEN N := ORD(C)-ORD('0')+31 ELSE
N := 0;
VAL := VAL*40+N;
END;
DEFEXT[RINDEX] := VAL;
END;
WITH CSIDAT DO
BEGIN
OFLAG1:=FALSE; OFLAG2:=FALSE; OFLAG3:=FALSE;
FOR I := 1 TO INMAX DO IFLAG[I]:=FALSE;
SWITCHCOUNT := 0;
FOR C := '@' TO 'Z' DO
WITH SWITCH[C] DO BEGIN
GIVEN:=FALSE; ARGFOUND:=FALSE; ARGVALUE:=0;
END;
CLOSE(O1); CLOSE(O2); CLOSE(O3);
FOR I := 1 TO INMAX DO CLOSE(INN[I]);
CHANSFREE := TRUE;
FOR I := 0 TO 8 DO IF WAITCHN(I) THEN CHANSFREE := FALSE;
IF NOT CHANSFREE THEN
WRITELN('CHANNELS 0..8 ARE NOT AVAILABLE FOR CSI')
ELSE
BEGIN

(*$C .MCALL .CSIGEN
.GLOBL $KORE, LOWSTK, HISTK
MOV %6,%1 ;SET THE STACK TO
;THE USR SWAP SCRATCH AREA
MOV %1, %0 ;
ADD #STR, %0 ;
ADD #DEFEXT,%1
CALL LOWSTK ;
MOV %6, %4 ;
MOV #^O1000, @#^O46 ;
.CSIGEN $KORE, %1, %0 ;DECODE LINE AND OPEN FILES
CLR @#^O46 ;
BCS 10$ ;ERROR OCCURED?
MOV (6)+,%0 ;GET COUNT OF SWITCHES
MOV %0,136(3)
BEQ 6$
BR 1$ ;
10$: MOV %4, %6 ;
CALL HISTK ;
*)

CSIVALUE := FALSE;

(*$C
BR 7$ ;
1$: MOV (6)+,%1 ;GET THE SWITCH CHAR AND ARG FLAG
MOV %1,%2
BIC #^O177600,%2
CMP %2,#^O172 ;MAKE SURE THE SWITCH IS ALPHA
BHI 4$
CMP %2,#^O140
BLO 2$
SUB #^O40,%2
2$: CMP %2,#^O132
BHI 4$
CMP %2,#^O100
BLO 4$
SUB #^O100,%2
3$: ASL %2 ;MAKE THE SWITCH CHAR AN ARRAY INDEX
ASL %2
ADD %3,%2
ADD #138,%2 ;POINT TO ELEMENT OF SWITCH ARRAY
MOVB #1,(2) ;SET SWITCH FOUND
TST %1
BPL 5$
MOVB #1,1(2) ;SET ARG FOUND
MOV (6)+,2(2) ; AND SWITCH VALUE
BR 5$
4$: TST %1
BPL 5$
TST (6)+
5$: DEC %0 ;COUNT DOWN A SWITCH
BNE 1$
6$: MOV %4, %6 ;
CALL HISTK ;
7$: ;
*)
FOR I := 1 TO INMAX DO
SETOPEN(INN[I],I+2,TRUE,IFLAG[I]);
SETOPEN(O1,0,FALSE,OFLAG1);
SETOPEN(O2,1,FALSE,OFLAG2);
SETOPEN(O3,2,FALSE,OFLAG3);
END;
END;
CSI := CSIVALUE;
END; (* CSI *)



Это с дискет, которые публиковал по личной инициативе Patron.

Oleg N. Cher
14.03.2020, 11:02
Вопрос к Хоботу. Как лучше всего хранить в тексте исходника данные спрайтов? Вот так не работает:


PROCEDURE PutSpr (x, y: INTEGER; spr: PROCEDURE); EXTERNAL;

PROCEDURE Sprt; BEGIN /*C
.BYTE 5, 5
...
*/
END {Sprt};

BEGIN
PutSpr(100, 100, @Sprt);Ты как хранишь? Константными массивами? Слова или байты? Как быть, если код символа >127 ?

Oleg N. Cher
14.03.2020, 17:39
Вот так в OMSI тоже не работает (это код для Pascal FAST):


CONST
Queen : ARRAY [0..22] OF Integer = ($505,
$0060, $0406, $0260, $F066, $0F06, $31F8,
$C31F, $8C3B, $FDC1, $DFB8, $1FFF, $81FF,
$F80F, $FF00, $FFF0, $0FFF, $007F, $E007,
$FE00, $7FE0, $03FC, $0000);

BEGIN
PutSpr(100, 100, @Queen);

- - - Добавлено - - -

Похоже, константных массивов OMSI Pascal не понимает. А вот процедурные параметры поддерживает, но с неизвестным синтаксисом. Есть какие-то ещё исходники для OMSI Pascal'я, где это может встретиться?

http://i.piccy_.info/i9/689e45ad3fd730cc7c2db09b57bce153/1584196772/100688/1320134/OMSI.png

Этот самый "Pascal User Manual and Report (https://www.springer.com/gp/book/9783662215548)" я вроде бы нашёл, но там ничего такого нет.

yu.zxpk
14.03.2020, 17:47
Может, таки, взять более адекватный инструмент для решения задачи?

И стоит смотреть в DESS, что (какой код) генерит язык высокого уровня.

Oleg N. Cher
14.03.2020, 17:50
Ну, это едва ли не самая серьёзная проблема тут. В остальном инструмент очень хороший, простой.
С нативным Си честно не хочется заморачиваться. С каким-то недопиленным GCC тоже, тем более, Вы помогать не хотите ;-)

hobot
14.03.2020, 17:59
Как лучше всего хранить в тексте исходника данные спрайтов?
я никак не храню, поскольку нет движка.
Спрайты храняться так
в отдельном файле .MAC, имя каждого 6 уникальных символов с глобальной меткой ::
сверху вниз, первая строка размеры спрайта, левый верхний соотв (как у экрана)
прогоняем в OBJ

В другом файле 1 глобальная метка
SPRTAB:: - таблица спрайтов !!!
ниже сверху вниз уникальные имена глобальных меток из библиотеки спрайтов.
прогоняем в OBJ

все наши функции - процедуры через таблицу ссылаются на спрайты (первый в таблице № 0).

так работал утерянный движок.
при линковке естественно все эти файлы через запятую с программой

Oleg N. Cher
14.03.2020, 18:32
Понятно. Значит идёт обращение по номерам-индексам, а движок уже пересчитывает в адреса. Но тогда движок должен как-то знать, где лежит таблица спрайтов. Вшивать спрайты в движок это плохая идея. Думаем дальше.

А почему движок утерянный? Есть ли игры, в которых он применялся? Раз он утерян, откуда инфа как он работал?

yu.zxpk
14.03.2020, 18:46
Ну, это едва ли не самая серьёзная проблема тут. В остальном инструмент очень хороший, простой.
С нативным Си честно не хочется заморачиваться. С каким-то недопиленным GCC тоже, тем более, Вы помогать не хотите ;-)

Учитывая отсутствие желания учить PDP-11 ассемблер... Предложение "помогать" звучит как "сделайте, пожалуйста, за меня. А то я не знаю как, и не хочу разбираться в деталях".

По части "допилить GCC". Понимаю, разбираться с GNU toolchain для PDP-11 для настройки кросс-компилятора под себя - это время. Плюс надо бы написать доп. инструменты, чтоб генерить выполняемый файл (SAV) для RT-11, например. Для переиспользования готовых наработок на MACRO-11 в GNU - так же нужно поработать, хотя бы в части конвертации MACRO-11 в GNU AS. Фактически, нужен пре-процессор из MACRO-11 в GNU AS.
Или можно сделать трансляцию *.OBJ, сгенерированных MACRO-11, в *.o (a.out формат). Это проще, чем препроцессор написать.

Oleg N. Cher
14.03.2020, 19:32
Учитывая отсутствие желания учить PDP-11 ассемблер...Та ладно? А я сейчас чем, по-вашему, занимаюсь? Писать на Паскале я хочу потому, что я люблю языки высокого уровня. И игру выбрал специально такую, которая ляжет на ЯВУ. В идеале я бы писал на Обероне через трансляцию в Си, но уже ладно, пускай будет Паскаль.


По части "допилить GCC". Понимаю, разбираться с GNU toolchain для PDP-11 для настройки кросс-компилятора под себя - это время.Вы меня отпугнули какой-то дикой терминологией про то, что там чего-то там нет. Оставим это специалистам. GCC для PDP-11 мёртв, как и OMSI Pascal.

А писать доп. инструменты и разбираться с форматами - я и так этим постоянно занимаюсь. Не знаю насколько меня хватит в плане творчества для УКНЦ. Интересных платформ много.

S_V_B
14.03.2020, 20:37
Кода разберетесь в каком формате сохранять бинарники для исходников... могу добавить в редактор. И во вкладку импорт, если объясните, что и откуда тырите.

Oleg N. Cher
15.03.2020, 09:43
S_V_B, подойдёт формат в виде циферок в директиве .WORD для MACRO-11, думаю. Я, правда, ещё не разобрался как хранятся битпланы для вывода той самой процедурой PUTSPR - или байт одного плана, за ним байт другого, или как-то иначе.

- - - Добавлено - - -

Всё-таки нарыл как правильно. Вот так работает:

http://i.piccy_.info/i9/24e4f31eb4827e4ed6a6c382432dbfaa/1584254688/48531/1320134/OMSI.png

Oleg N. Cher
16.03.2020, 13:47
Как можно (и можно ли) в OMSI Pascal задать шестнадцатеричную константу?

И тот же самый вопрос про MACRO-11. Восьмеричные и длиннее, и непривычно.

nzeemin
16.03.2020, 15:07
И тот же самый вопрос про MACRO-11. Восьмеричные и длиннее, и непривычно.

Так или иначе, PDP-11 основан на восьмеричной системе, привыкайте.
В MACRO-11 можно включить постоянно другую дефолтную систему (директива .RADIX), но это создаст неожиданности для тех кто будет читать ваш код.
В выражениях можно использовать "^B...", "^D...", "^O..." для включения нужной системы счисления по месту.
Вообще по всем вопросам по MACRO-11 читайте "PDP-11 MACRO-11 Language Reference Manual", там это всё есть.

hobot
16.03.2020, 15:15
* переключ.режимов исчисления
^B - Binary
^C - Complement
^D - Decimal
^F - Floating
^O - Octal
^R - Radix50

Oleg N. Cher
16.03.2020, 19:57
Хрень какая. Всё есть, кроме хекса. :-(

Hunta
16.03.2020, 20:27
Всё есть, кроме хекса.
На PDP-11 он нафик не нужен

Oleg N. Cher
16.03.2020, 20:28
Я с вас удивляюсь, господа. Восьмеричная система счисления вообще никак не зашита в проц PDP-11. Это вопрос привычки.

yu.zxpk
16.03.2020, 20:30
Хрень какая. Всё есть, кроме хекса. :-(

AA-KX10A-TC_PDP-11_MACRO-11_Reference_Manual_May88.pdf

6.4.1.2 Temporary Radix Control Operators
...
^Xn ; n is evaluated as a hexadecimal number

Hunta
16.03.2020, 20:40
Восьмеричная система счисления вообще никак не зашита в проц
Я тебя щас ещё больше удивлю - шестнадцатиричная - тоже. Но с командами PDP-11 удобней пользоваться восьмиричной. Вот ей и пользуемся

- - - Добавлено - - -


^Xn ; n is evaluated as a hexadecimal number



TEST MACRO V05.06R Monday 16-Mar-20 Page 1


1 .TITLE TEST
2 .MCALL .EXIT
3
4 000000 000000G DATA: .WORD ^XABCD
5
6 000002 START: .EXIT
7
8 000002' .END START
TEST MACRO V05.06R Monday 16-Mar-20 Page 1-1
Symbol table

ABCD = ****** GX DATA 000000R START 000002R

. ABS. 000000 000 (RW,I,GBL,ABS,OVR)
000004 001 (RW,I,LCL,REL,CON)
Errors detected: 0

*** Assembler statistics


Work file reads: 0
Work file writes: 0
Size of work file: 60 Words ( 1 Pages)
Size of core pool: 13056 Words ( 51 Pages)
Operating system: RT-11

Elapsed time: Unknown
DK:TEST,DK:TEST=DK:TEST


- - - Добавлено - - -

Поправка - неправильно написал:




TEST MACRO V05.06R Monday 16-Mar-20 Page 1


1 .TITLE TEST
2 .MCALL .EXIT
3
4 000000 125715 DATA: .WORD ^X0ABCD
5
6 000002 START: .EXIT
7
8 000002' .END START
TEST MACRO V05.06R Monday 16-Mar-20 Page 1-1
Symbol table

DATA 000000R START 000002R

. ABS. 000000 000 (RW,I,GBL,ABS,OVR)
000004 001 (RW,I,LCL,REL,CON)
Errors detected: 0

*** Assembler statistics


Work file reads: 0
Work file writes: 0
Size of work file: 60 Words ( 1 Pages)
Size of core pool: 13056 Words ( 51 Pages)
Operating system: RT-11

Elapsed time: Unknown
DK:TEST,DK:TEST=DK:TEST

Oleg N. Cher
16.03.2020, 20:53
^Xn ; n is evaluated as a hexadecimal numberБыло обрадовался. Но не работает.

http://i.piccy_.info/i9/a0cac7e3ee484a6a11321ca6dbf7dd5c/1584381092/8600/1320134/FFFF.png

- - - Добавлено - - -

Ага, вот так работает:


.WORD ^X0FFFF

Спасибо.

Hunta, нет особой разницы - хекс или octal, мне вот хекс привычнее просто. Ну и короче.

SuperMax
16.03.2020, 22:05
Я с вас удивляюсь, господа. Восьмеричная система счисления вообще никак не зашита в проц PDP-11. Это вопрос привычки.
именно
те не надо фиксироваться на 16тиричной и считать ее более удобной. для PDP11 принята 8миричная и она удобна. для других систем употребляется 16тиричная и она удобна там.
я привык пользоваться и той и другой - и не вижу вообще проблемы. у меня в программах константы в четырех системах - в зависимости от удобства выражения.
так что ломайте привычки и эффект утенка, изучайте новое!

Oleg N. Cher
16.03.2020, 22:38
Ломаем, изучаем. :-)

Мне спрайты удобнее и короче задавать в хексе. Но если граф. редактор S_V_B умеет импортировать и экспортировать в octal, придётся в octal.

Как видим, пока OMSI Pascal радует. Ни с чем непреодолимым не столкнулись. Посмотрим, как дальше пойдёт.

nzeemin
16.03.2020, 23:34
Я с вас удивляюсь, господа. Восьмеричная система счисления вообще никак не зашита в проц PDP-11. Это вопрос привычки.

Есть всего 10 типов людей. Тех кто понимает двоичную систему и тех кто нет.
Если смотреть на PDP-11 как "а ну просто ещё одна машинка", тогда ну видимо да, похер конечно что там внутри.
А если например смотреть как выглядят команды в восьмеричной системе - есть определённая схема. Так что таки да, некоторым образом, зашита в проц.

Oleg N. Cher
17.03.2020, 10:43
Ну, чего там внутрях PDP накручено в кодировке команд - это тёмный лес. Но вот разбивать шестнадцатеричное число на байты, полубайты - несколько проще, чем восьмеричное. Просто растащил на разряды, каждый разряд обозначен знаком. В восьмеричной же системе придётся додумывать и учитывать заём.

Hunta
17.03.2020, 10:48
чего там внутрях PDP накручено в кодировке команд - это тёмный лес.
Это в x86-x64 темный лес. А тут всё более чем прозрачно


Но вот разбивать шестнадцатеричное число на байты, полубайты - несколько проще, чем восьмеричное.
Как показывает практика, если константа не ложится на восьмеричную систему, то с большой долей вероятности наглядней её в двоичном представлении писать. Случаев, когда наглядней в шестнадцатиричной - достаточно мало

- - - Добавлено - - -


Но вот разбивать шестнадцатеричное число на байты,
Дело привычки. Я достаточно легко считаю в уме в восьмеричной системе и разбиваю слово на байты - не задумываясь. Вот обратно несколько дольше

Oleg N. Cher
17.03.2020, 10:49
Очень даже. Шестнадцатеричная система сводит смысл в записывании именно двоичной практически к нулю.
Разве что спрайты и маски расписывать, да и то одноцветные.

Hunta
17.03.2020, 10:55
Шестнадцатеричная система сводит смысл в записывании именно двоичной практически к нулю.
Вот поэтому я ей и не пользуюсь практически. Шестнадцатиричной.

S_V_B
17.03.2020, 11:00
Но если граф. редактор S_V_B умеет импортировать и экспортировать в octal, придётся в octal.
На самом деле спрайты в HEX нагляднее, в восьмеричной сделал чтобы "староверы" не возмущались. Хотя тебе какая разница ты же не вручную спрайты правишь, можно в пять сек хоть в троичной сохранить:) Этож статичные данные, вставил и забыл.

hobot
26.03.2020, 07:39
SCAN коды клавиатуры УК-НЦ для использования в программах на Паскале.

Да! Хочется повысить эффективность опроса клавиатуры и иметь возможность использовать
в программах на Паскале системные "управляющие" кнопки. Есть вот такой исходник от
Alex_K (С) Scan-code of keys, "Alphaprog", 1993, который на выходе сканкоды выдаёт на экран :



.TITLE SCAN
.IDENT /V01.00/
.MCALL .PRINT,.EXIT
BLK: .WORD 0,32,0,0,0
BLK0: .WORD BLK,-1
CHAN2: MOV #BLK0,R0
MOV #5,R1
BR 2$
1$: MOVB (R0)+,@#176676
2$: TSTB @#176674
BPL 2$
SOB R1,1$
RETURN
START: MOV #777,AA
MOVB #1,BLK+1
MOV #<$END-$BEGIN>,BLK+6
CALL CHAN2
TSTB BLK
BEQ 1$
.PRINT #WARN
.EXIT
1$: MOVB #20,BLK+1
MOV #$BEGIN,BLK+6
MOV #<$END-$BEGIN>,BLK+10
CALL CHAN2
MOVB #30,BLK+1
CALL CHAN2
AA: BR .
MOVB #2,BLK+1
CALL CHAN2
.EXIT
$BEGIN: MOV PC,R1
ADD #HEAD-.,R1
EMT 46
MTPS #200
CLR @#177700
CALL @#104054
MTPS #0
1$: TSTB @#177700
BPL 1$
MOV @#177702,R0
MOV R0,-(SP)
MOV #3,R1
CLR R2
MOV PC,R3
ADD #NUM-.,R3
BR 3$
2$: CLR R2
ROLB R0
ROLB R2
3$: ROLB R0
ROLB R2
ROLB R0
ROLB R2
ADD #60,R2
MOVB R2,(R3)+
SOB R1,2$
MOV PC,R1
ADD #NUM-.,R1
EMT 46
MOV (SP)+,R0
CMPB R0,#204
BNE 1$
MOV PC,R1
ADD #$END$-.,R1
EMT 46
BIS #100,@#177700
MOV #AA/2,@#177010
MOV #NOP,@#177014
RETURN
HEAD: .BYTE 14,33,246,62,14
.ASCIZ /Scan-code of keys, "Alphaprog", 1993/<15><12>
NUM: .ASCIZ /000 /
$END$: .BYTE 33,246,61,15,12,0
.EVEN
$END:
WARN: .ASCIZ /?SCAN-F-No memory for load/
.END START


Вопрос к асм-программистам: возможно ли его переписать так, что бы сканкоды были
значением внешней функции для Паскаля или значением входящей переменной
внешней процедуры? И возможно ли в принципе?
Если для решения задачи какую-то часть кода нужно исполнять в осн. исходнике
- орг. вставку на асм. - главное, что бы заработало?
================================================== =====

Titus
26.03.2020, 09:24
Я с вас удивляюсь, господа. Восьмеричная система счисления вообще никак не зашита в проц PDP-11. Это вопрос привычки.
Совершенно согласен.

Я написал несколько эмуляторов PDP-11 - подобных машин (УКНЦ, Союз-Неон, 0515 и т.д.), но восьмеричной системой не пользуюсь и не думаю в ней. Только в шестнадцатиричной и десятичной.
И все прекрасно)

nzeemin
26.03.2020, 12:04
Вопрос к асм-программистам: возможно ли его переписать так, что бы сканкоды были
значением внешней функции для Паскаля или значением входящей переменной
внешней процедуры? И возможно ли в принципе?
Если для решения задачи какую-то часть кода нужно исполнять в осн. исходнике
- орг. вставку на асм. - главное, что бы заработало?


Ответ, очевидно: "возможно. переписывайте."

У себя пользуюсь вот этими двумя вызовами, думаю их вполне можно приспособить для вызова из Паскаля:
(осторожно, используются 8-ричные значения 8-[ ]


; Подпрограмма: Ожидание символа с клавиатуры: R1 = полученный символ
WTKEY: TSTB @#177560
BPL WTKEY
CLR R1
MOVB @#177562, R1 ; символ в R1
CMPB R1, #33
BNE RETN
ESCKEY: TSTB @#177560
BPL ESCKEY
MOVB @#177562, R1 ; символ в R1
BIS #15400,R1 ; #33 в верхний байт
RETN: RETURN
; Подпрограмма: Получение символа с клавиатуры: флаг Z=0 = есть символ, R1 = полученный символ
GETKEY: TSTB @#177560 ; есть символ?
BPL 10$ ; нет символа => выходим
MOVB @#177562, R1 ; символ в R1
CMPB R1, #33 ; Esc ?
BEQ ESCKEY
RETURN
10$: CLR R1 ; возвращаем пустой код клавиши
RETURN

Oleg N. Cher
26.03.2020, 15:31
А можно спросить: зачем нужно делать CLR R1 перед MOVB @#177562, R1 ?

Я не стебаюсь, если что. Пытаюсь разобраться в местном асме. Вот здесь (http://textarchive.ru/c-1107613-pall.html) такая чистка регистра не делается:


TSTB @#177560 ; готовность есть?
BPL CY1 ; символ не готов!
INSYM: MOVB @#177562,R0 ; прочитать символ

nzeemin
26.03.2020, 15:48
Oleg N. Cher, вероятно он действительно лишний, остаток какого-то копипаста.

Oleg N. Cher
26.03.2020, 17:46
Если BIS #15400,R1 это действительно аналог операции OR на других процессорах и устанавливает только указанные биты, а прочие игнорирует, тогда CLR R1 всё-таки нужна - она обнуляет старший байт R1.

Но тогда подобная же операция нужна и в подпрограмме GETKEY. Смотрите. В GETKEY после MOVB @#^O177562,R1 старший байт R1 неопределён, и если полученный код Esc, то BIS просто наложит на него маску ^O15400 с неопределённым результатом. А если полученный код не Esc, то будет просто возврат с неопределённым же старшим байтом. Я всё правильно описал? Т.е. если бы старший байт был незначащий, тогда ладно. Но он ведь может иметь значащий код ^O33.

nzeemin
26.03.2020, 17:54
MOVB не так работает. он возьмёт старший бит от байта из источника, и раскопирует его вверх. Т.е. в верхнем байте будет либо 0, либо 255.
Может это как раз и осталось от времён когда я этого не понимал :-)

Oleg N. Cher
26.03.2020, 19:42
Нет ли идеи, почему вот такой код может зациклиться? И под отладчиком тоже.


WTKEY$: TSTB @#^O177560 ; Ready?
BPL WTKEY$ ; No!Ведь он же не под ПП работает?

http://i.piccy_.info/i9/ee0d6ac1ff068a5f747974af1601eabd/1585240415/181054/1320134/UKNC.png

- - - Добавлено - - -

Да, кнопки вовсю жму, эхо-печать работает. Но из самой функции WaitKey выхода нет:

FUNCTION WaitKey : INTEGER; EXTERNAL;

VAR
code: INTEGER;

BEGIN
WriteLn('Ready>');
REPEAT
code := WaitKey;
WriteLn('"', CHR(code), '"', code)
UNTIL code = 32
END.

Alex_K
26.03.2020, 19:51
Нет ли идеи, почему вот такой код может зациклиться? И под отладчиком тоже.
Если хотите работать с регистрами канала К0, то необходимо сбросить бит разрешения прерывания в регистре 177560. А так возникает прерывание раньше, чем вы узнаете об установке бита готовности. А прерывание обрабатывает операционная система, она же и выводит эхо-печать. Перед выходом из программы бит разрешения прерывания надо установить.
Соответственно BIC #^O100,@#^O177560 - сброс бита разрешения прерываний, а BIS #^O100,@#^O177560 - установка бита разрешения прерываний.
Но всё это хорошо работает в однотерминальном SJ-мониторе, в многотерминальной системе могут быть проблемы.

Oleg N. Cher
26.03.2020, 21:58
Я не очень понял про многотерминальные системы. Есть ли какой-то другой более правильный способ опроса клавиатуры в RT-11? (с ожиданием нажатия, и без).

Hunta
26.03.2020, 22:14
Есть ли какой-то другой более правильный способ опроса клавиатуры в RT-11?
.TTINR

Oleg N. Cher
27.03.2020, 02:05
Хобот, лови для Паскаля. Спасибо Никите и Alex_K


VAR crtflg: INTEGER;

PROCEDURE CrtInit;
BEGIN /*$C
.TITLE CRT001
MOV @#^O177560, crtflg
BIC #^O100, @#^O177560
*/
END {CrtInit};

PROCEDURE CrtQuit;
BEGIN /*$C
MOV crtflg, @#^O177560
*/
END {CrtQuit};

/*------------------------------- Cut here --------------------------------*/

FUNCTION GetKey : INTEGER;
BEGIN /*$C
.TITLE CRT002
.GLOBL RETKEY
CLR R1
TSTB @#^O177560 ; is char?
BPL RETN$ ; no char => return 0
RETKEY: MOVB @#^O177562, R1 ; A key code
CMPB R1, #^O33
BNE RETN$
ESCKEY: TSTB @#^O177560
BPL ESCKEY
MOVB @#^O177562, R1 ; char => low byte
BIS #^O15400, R1 ; ^O33 => high byte
RETN$: MOV R1, 12(SP) ; return result
*/
END {GetKey};

/*------------------------------- Cut here --------------------------------*/

FUNCTION WaitKey : INTEGER;
BEGIN /*$C
.TITLE CRT003
WTKEY$: TSTB @#^O177560 ; Ready?
BPL WTKEY$ ; No!
JMP RETKEY
*/
END {WaitKey};

- - - Добавлено - - -

CrtInit нужен чтобы переключить ввод с эха на опрос процедурами GetKey и WaitKey. CrtQuit возвращает ввод обратно - его надо вызывать перед выходом в ОС. Можно было бы попробовать вставить эти вызовы прямо в процедуры опроса. Но если WaitKey ещё как-то будет работать, то GetKey нет - потому что в процессе работы программы ввод будет хапать то ОС (с выводом эха), то сама GetKey. Поэтому только такой механизм.

У кого-нить есть OMSI Pascal, запатченный под возможность использовать в идентах символ "_"?

У кого-нить есть линкер и Macro-11, запатченные под иденты длиннее 6 символов? Это вообще возможно?

hobot
27.03.2020, 03:03
Ответ, очевидно: "возможно. переписывайте."

Благодарю, что отозвался, Никита, но тут хочется именно скан-коды (https://zx-pk.ru/threads/20444-pascal-macro11-(uknts-dvk).html?p=1053389&viewfull=1#post1053389) на выходе, а через регистры или системный .TTYIN это ж даже Titus могёт ))) (это шутка, как и про 8-ми я на свой счёт не воспринимаю)
В твоём варианте, кроме АР2 - в идеале надо бы ещё <ВК> двойной код отрабатывать ;-)

Alex
27.03.2020, 09:14
Я не очень понял про многотерминальные системы. Есть ли какой-то другой более правильный способ опроса клавиатуры в RT-11? (с ожиданием нажатия, и без).

При генерации RT-11 можно указать такую опцию, как "многотерминальная поддержка". Это для случая, когда к одному компьютеру подключено более одного терминала и эта опция обеспечивает поддержку этих терминалов на уровне системы. Возможность для программистов, чтобы всё было более-менее единообразно. Система поддерживает многотерминальные версии макрокоманд, кольцевой буфер терминала, отработку Ctrl/S, Ctrl/Q Ctrl/O стандартным образом.
Только я вот знаю только одну программу, которая пользуется этим функционалом - многотерминальный бэйсик. Он позволят на конфигурации без диспетчера памяти посадить за терминалы, как я видел, 4-х студентов, обеспечив им бэйсик ...
Имеет ли смысл многотерминальная поддержка на УКНЦ смысл? С первого взгляда не имеет, но кто его знает - вполне может возникнуть желание подцепить терминал на С2 и(или) на переделанный сетевой адаптер(токовая петля 20 ма, использовалось на УКНЦ входящих в комплект СВД ВУЗ, кои, как утверждалось, даже экспортировались в ГДР). :)

hobot
27.03.2020, 09:45
Только я вот знаю только одну программу, которая пользуется этим функционалом - многотерминальный бэйсик.
Я видел распечатку исходников многотерминального Паскаля для RT-11, на данный момент - распечатка передана на хранение в музей истории МИЭТа.

Со скан-кОдами клавиатуры для Паскаля, что то никто даже не проявил интерес, я ожидал, конечно, что такая возможность (буде реализованной) пригодилась бы всем сочувствующим, не только мне https://zx-pk.ru/threads/20444-pascal-macro11-(uknts-dvk).html?p=1053516&viewfull=1#post1053516 - вопрос\запрос висит по ссылке с исходником

yu.zxpk
27.03.2020, 12:18
...
У кого-нить есть OMSI Pascal, запатченный под возможность использовать в идентах символ "_"?
У кого-нить есть линкер и Macro-11, запатченные под иденты длиннее 6 символов? Это вообще возможно?

Ответ нет на оба вопроса, ибо RADIX50. 3 символа помещаются в 16 bit integer, 6 символов - 32 бита (2 слова).

Пользуйте GNU binutils (asm, linker, etc). Но там нет Pascal. И нет MACRO11 библиотеки (смотрю доку на RT11)
Я делаю себе C функции или макросы препроцессора с asm вставками и EMT), инструкции макросов не такие мощные в GNU as, как в MACRO11.
В теории можно сделать конвертор из формата файлов OBJ в Files11 в *.o (a.out) для target=pdp11-dec-aout

hobot
13.10.2020, 12:01
Продолжаю изучать добытый shattered софт.
Решил глянуть, что же там за
PAS1.LZS unknown pascal
Смотрим листинг



РАБОТАЕМ С АРХИВОМ: DK:PAS1.LZS [ 85] 13-26-88

ПОЛНЫЙ КАТАЛОГ АРХИВА

Метод 'LZS', версия V02.01, буфер сжатия: 4096, общий каталог: НЕТ
---------- ---------- -------- --------- ------- -------------------
Имя файла блоков дата <байтов> сжатие адрес в архиве
---------- ---------- -------- --------- ------- -------------------
PAS1.SAV [ 52] 01-11-81 18996 29% [ 0]+ 16
PAS1.OBJ [ 91] 28-09-85 24182 48% [ 37]+ 84
---------- ---------- -------- --------- ------- -------------------
2 143 43520 41 % 85

HD7>RU PAS1 TEST,TT:=TEST


TEST P A S C A L 13- -88 PAGE 1
ДВК "ЭЛЕКТРОНИКА НЦ 8020/2,3,4"

LINE STMT LEVEL NEST SOURCE STATEMENT

1 PROGRAM TEST;
2 BEGIN
3 1 1 1 WRITELN('Ok');
4 2 1 1 END.

ERRORS DETECTED: 0
FREE MEMORY: 9861 WORDS

ERRORS DETECTED: 0
FREE MEMORY: 9861 WORDS


HD7>MAC TEST

HD7>LIN TEST,PAS1

HD7>RU TEST
Ok



В шапке есть этот вариант и похоже именно его form патчил на предмет правильного
заголовка и современного календаря.

Идём дальше, по описанию есть ещё один архив
PASCAL.LZS unknown pascal
И вот с ним не всё однозначно,
программа транслятор с таким заголовком так же есть в шапке темы и
в архиве, но тот же тест в самом конце отказался запускаться, наверное
я просто не в курсе какой то специфики???
Смотрим листинг:


РАБОТАЕМ С АРХИВОМ: DK:PASCAL.LZS [ 323] 13-26-88

ПОЛНЫЙ КАТАЛОГ АРХИВА

Метод 'LZS', версия V02.01, буфер сжатия: 4096, общий каталог: НЕТ
---------- ---------- -------- --------- ------- -------------------
Имя файла блоков дата <байтов> сжатие адрес в архиве
---------- ---------- -------- --------- ------- -------------------
PASFOR.SAV [ 40] 29-04-92 12675 38% [ 0]+ 16
PASIMP.SAV [ 36] 29-04-92 12612 32% [ 24]+ 420
PASIMP.PAS [ 42] 29-04-92 7643 65% [ 49]+ 248
STRING.PAS [ 6] 29-04-92 1134 64% [ 64]+ 228
ERROR.PAS [ 2] 29-04-92 0586 43% [ 66]+ 354
CSI.PAS [ 10] 29-04-92 2477 52% [ 67]+ 444
INTRPT.PAS [ 3] 29-04-92 0692 55% [ 72]+ 378
PASPRF.PAS [ 21] 29-04-92 3716 66% [ 74]+ 62
PCL.PAS [ 27] 29-04-92 5973 57% [ 81]+ 210
PDROMA.PAS [ 1] 29-04-92 0246 52% [ 93]+ 56
PDHANO.PAS [ 1] 29-04-92 0284 45% [ 93]+ 318
PDRAND.PAS [ 1] 29-04-92 0246 52% [ 94]+ 106
PDGRAF.PAS [ 1] 29-04-92 0284 45% [ 94]+ 368
PDBIOR.PAS [ 17] 29-04-92 2778 69% [ 95]+ 156
HYPHEN.PAS [ 7] 29-04-92 1468 59% [ 100]+ 390
VOC.PAS [ 24] 29-04-92 4334 65% [ 103]+ 338
PAS4.OBJ [ 5] 29-04-92 1520 41% [ 112]+ 80
VOCE.PAS [ 16] 29-04-92 3166 62% [ 115]+ 80
PAS7.OBJ [ 5] 29-04-92 1318 49% [ 121]+ 190
PAS9.OBJ [ 5] 29-04-92 1492 42% [ 123]+ 500
PASB.OBJ [ 7] 29-04-92 2336 35% [ 126]+ 472
PAS0.OBJ [ 5] 29-04-92 1398 46% [ 131]+ 264
PAS1.OBJ [ 4] 29-04-92 1200 42% [ 134]+ 142
PAS2.OBJ [ 7] 29-04-92 2073 43% [ 136]+ 334
PAS3.OBJ [ 5] 29-04-92 1668 35% [ 140]+ 376
PAS5.OBJ [ 6] 29-04-92 1930 37% [ 144]+ 12
PAS8.OBJ [ 4] 29-04-92 1108 46% [ 147]+ 422
PAS6.OBJ [ 5] 29-04-92 1546 40% [ 150]+ 10
PASA.OBJ [ 7] 29-04-92 2170 40% [ 153]+ 36
EXAM1.TXT [ 1] 29-04-92 0235 55% [ 157]+ 174
EXAM2.TXT [ 1] 29-04-92 0167 68% [ 157]+ 426
PASNHD.OBJ [ 84] 29-04-92 26163 40% [ 158]+ 98
PASFPP.OBJ [ 74] 29-04-92 22916 40% [ 209]+ 166
PASFPP.SAV [ 58] 29-04-92 20975 30% [ 254]+ 58
PASPRF.OBJ [ 9] 29-04-92 2897 37% [ 295]+ 58
PASFOR.PAS [ 75] 29-04-92 10929 72% [ 300]+ 412
---------- ---------- -------- --------- ------- -------------------
36 622 165376 48 % 323

HD7>RU PASFPP TEST,TT:=TEST


TEST P A S C A L/RAFOS 13- -88 9:25 V1-564 PAGE 1
SM-3/SM-4 MINICOMPUTERS

LINE STMT LEVEL NEST SOURCE STATEMENT

1 PROGRAM TEST;
2 BEGIN
3 1 1 1 WRITELN('Ok');
4 2 1 1 END.

ERRORS DETECTED: 0
FREE MEMORY: 8895 WORDS

ERRORS DETECTED: 0
FREE MEMORY: 8895 WORDS


HD7>MAC TEST

HD7>LIN TEST,PASFPP

HD7>RU TEST

?FATAL ERROR: RESERVED INSTRUCTION TRAP
PROGRAM COUNTER: 1476


HD7>

Hunta
13.10.2020, 12:12
PASFPP.SAV - название файла намекает, что это транслятор OMSI (а листинг, что его переделали шаловливые советские ручки) и то, что транслятор будет выдавать код с поддержкой FPP (а OTS должны FPP инициализировать - отсюда прерывание по резервной инструкции, ибо на ДВК FPP - это редкость редкая)

- - - Добавлено - - -

Посмотреть, что по адресу 1474 или выложить программу - могу проверить на J11

hobot
13.10.2020, 13:37
или выложить программу
в смысле PASFPP? Так его уже дважды выложили, сам добытчик чтец дискет (он же и автор шпоры-описания к LZS-архивам, и копия этих дискет в разделе ДВК (читай новости по архиву, там прямые ссылки или тему автора)
И вопрос от меня, что есть FPP???

nzeemin
13.10.2020, 13:57
У кого-нить есть линкер и Macro-11, запатченные под иденты длиннее 6 символов? Это вообще возможно?

MACRO-11 выдаёт объектные модули стандартного формата (.OBJ), LINK их разбирает и линкует.
Формат объектных модулей описан в документе "Руководство системного программиста. Форматы файлов." - там видим что все имена описаны в формате слово в RADIX-50, т.е. по 6 символов включая цифры, заглавные буквы, пробел, точка, доллар. Тот же принцип в случае библиотек.

Таким образом, чтобы расшить это ограничение, возможны варианты:
1. Свой транслятор + линковщик - компилятор всё-в-одном, с поддержкой чего хотите, на выходе готовый бинарник - чаще всего так сейчас и делают. Часто тут и входной файл всего один. Недостаток - нельзя использовать стандартные объектные модули и библиотеки.
2. Сделать свой транслятор + линковщик всё-в-одном, но ещё и с возможностью подлинковки стандартных объектных модулей и библиотек.
3. Сделать свой формат объектных модулей с поддержкой длинных имён - нужен свой транслятор + свой линковщик (понимающий оба формата, и старый и новый).

Мне кажется наиболее реалистичным вариант 2 - тем более что можно взять какой-нибудь из существующих "компиляторов всё-в-одном" и доработать его поддержкой стандартных модулей и библиотек.

Hunta
13.10.2020, 14:04
FPP
Floating Point Processor

hobot
13.10.2020, 14:14
Floating Point Processor
возможно был какой то "эмулятор-драйвер" типа EIS.SYS для ДВК?
А на СМ-ках FPP реализован ?

Hunta
13.10.2020, 14:27
В RSX я использовал эмулятор (для RSX)
Или ставить 1801ВМ4
На СМ1600,СМ1420,СМ1425,Электроника-79 - это те компы, про которые я знаю, что должен быть

hobot
13.10.2020, 14:32
В шапке честно написано, что не ДВКашный )))

P A S C A L/RAFOS 13- -88 9:25 V1-564 PAGE 1
SM-3/SM-4 MINICOMPUTERS

Hunta
13.10.2020, 14:43
И что? СМ-3/СМ-4 - это аналоги PDP-11.
Кроме того, на них нет FPP.
Кроме того - текстовые сообщения я могу перебить и на "P A S C A L/СОБСТВЕННОСТЬ КГБ" - это что то изменит?
Так что вместо

честно написано
я бы вбил туда - честно спижжено у OMSI

hobot
13.10.2020, 14:50
Посмотреть, что по адресу 1474



HD7>RU PASFPP TEST=TEST

ERRORS DETECTED: 0
FREE MEMORY: 9347 WORDS


HD7>MAC TEST

HD7>LIN TEST,PASFPP

HD7>RU TEST

?FATAL ERROR: RESERVED INSTRUCTION TRAP
PROGRAM COUNTER: 1476

HD7> 155342
@1474/170127





HD7> 155342 <==== вот это число в эмуляторе ДВК выскочило при нажатии на
кнопку интерфейса "ПУЛЬТ" и сразу потом вполне нормальная @

Hunta
13.10.2020, 15:01
170127 - LDFPS #<число из ячейки 1476> - загрузка статуса FPP или по простому - инициализация FPP для программы. Команду выполняет FPP, его нет - трап по несуществующей (резервной) команде.

MM
24.12.2020, 03:25
Вопрос - предположим, нужна программа на Паскале под RT-11, содержащая работу с функциями Син, Кос, Тан - насколько большая библиотека будет прицеплена к файлу .SAV ?
Проц - ВМ1.

hobot
24.12.2020, 03:37
Вопрос - предположим, нужна программа на Паскале под RT-11, содержащая работу с функциями Син, Кос, Тан - насколько большая библиотека будет прицеплена к файлу .SAV ?
Проц - ВМ1.

размер исполняемого файла зависит от версии транслятора и библиотеки,
если будут использованы стандартные функции Паскаля, но есть вариант использования
библиотека для Фортрана - там столько всякой математики продвинутой, не мне вам рассказывать.

Дайте пример - могу попробовать набрать программу в Паскале и покажу результат,
ВМ1 - значит надо писать на ДВК(эмулятор (https://zx-pk.ru/threads/18351-emulyator-dvk.html)) с таким процессором, а не на УК-НЦ вот и всё.