Вход

Просмотр полной версии : Практическое программирование в среде RT-11 на ассемблере.



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

AFZ
22.12.2016, 10:03
Может быть - не смотрел, но работает и не в KMONе. Я тоже детально не вникал, но в модуле TSKMON присутствует значительная вставка, как раз на тему SL. Напоминаю, у меня от него есть исходник, я еще долго возмущался, откуда у Потёмкина и компании взялись исходники и почему они все не выложены в Сеть?

form
22.12.2016, 10:11
Я тоже детально не вникал
Ну теперь-то проще - листинги доступны. По хорошему навалиться бы на них толпой да перевести в исходники :)

AFZ
22.12.2016, 10:22
По хорошему навалиться бы на них толпой да перевести в исходники Надо бы...

Меня другое интересует. Где все эти люди - Климов, Сторожевых, Потёмкин, Полетаев... По возрасту им всем пора на пенсию, самое время трындеть на форумах, а никого нет. Надо бы их найти, да пригласить сюда.

hobot
22.12.2016, 18:20
Где все эти люди - Климов, Сторожевых, Потёмкин, Полетаев...
Полетаев Владимир - я встречался с ним с целью забрать у него сохранившуюся часть листингов из
его личной коллекции, проживает в Зеленограде, тогда я в первые и познакомился с ним лично.
Он тему даже в этом разделе заводил с целью отдать распечатки (там только бумага, дискет там нет).

Климов - для меня лично ещё один человек легенда, поскольку автор любимого мною DESS )
Я лично с ним не знаком.

Сторожевых (лично не знаком) отмечался диалогами на форуме
http://www.tis.kz/forum/index.php

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


русифицирован частично
от из комплекта ADOS для ДВК скорее всего, там всё на Русском - системные сообщения,
Ныс текстовый редактор, ну практически вся среда "частично Руссифицирована" )

form
22.12.2016, 18:49
всё на Русском
тут насколько я пока заметил русифицировано два слова :)

hobot
22.12.2016, 19:26
русифицировано два слова
Ну это в DESS, а я про среду в целом.
Там PIP и DUP частично вещают на Русском )
И DIR там по Русски говорящий шикарно смотрелся тогда ещё ! )

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

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

минус всей этой среды сегодня - нет поддержки современных дат ! )

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

полностью пакет у superMAX на КВАНТЕ4 крутился насколько я знаю )

form
23.12.2016, 08:16
нет поддержки современных дат ! )
А кто мешает сделать? :)

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

Косяк в DECовской документации по макробиблиотеке от v5.6 (наверное и от 5.5):
.CSTAT #AREA,#3,#ADDR ;Get the status
BCS NOCHAN ;Channel 3 not open
MOV #ADDR+CS.UNT,R5 ;Point to unit #
MOV (R5)+,R0 ;Unit # to R0
ADD #^r 0,R0 ;Make it RAD50
CMP #^r 7,R0 ;Was it 0--7?
BGE 10$ ;Yes, xxn form
ADD #^r 0 ,R0 ;Else must have been 10--77 (xnn form)
10$: ADD (R5),R0 ;Get device name
MOV R0,DEVNAM ;’DEVNAM’ has RAD50 device name

Код считает, что номер устройства выдается в восьме-50-ичной системе счисления :)

hobot
23.12.2016, 23:58
восьме-50-ичной

Ха! Третье пространство )

http://smayls.ru/data/smiles/animashki-komputeri-253.gif

MM
09.05.2018, 01:51
Кто-нибуть имеет опыт работы с ФС FAT-32 в полном объеме ( с фрагметацией файлов и вложенными каталогами ) ?
Или хотя бы с FAT-16 ?
Речь идет именно о тексте программы для DEC-16 бит, без каких-либо библиотек .

svinka
09.05.2018, 10:27
Кто-нибуть имеет опыт работы с ФС FAT-32 в полном объеме ( с фрагметацией файлов и вложенными каталогами ) ?
Или хотя бы с FAT-16 ?кл
Речь идет именно о тексте программы для DEC-16 бит, без каких-либо библиотек .

в исходниках нескольких свободных минималистичных операционок такое есть. После компиляции с С кот весит 12-16кг и ему еще надо 2-4килолитра свободного воздуха
У ардуинщиков такого много.
Ссылки пришлю по запросу

MM
27.07.2018, 20:56
Очень практический вопрос :
нужна маленькая программа под RT-11 SJ V5.00, которая запрашивает имя файла ( с клавиатуры ), и читает его в адрес 020000. При этом считанный файл не должен быть длинее 020000 ( 8 ).
Если кто силен в ассемблере - опубликуйте , пожалуйста, программу в виде восьмеричных цифр. Адрес начала программы - 002000 ( 8 ).

MM
01.08.2018, 21:40
практический вопрос
Ладно, по причине отсуствия реальных программеров вопрос снимается - общественность будет просто указавать номер сектора диска BY: для чтения контента для программатора ЭСППЗУ.

AFZ
03.08.2018, 06:21
по причине отсуствия реальных программеров вопрос снимается Ну почему же? Вот (https://yadi.sk/d/A_LBFeFK3ZrM8d) программуля. Учитывая, что предполагается ввод ее с пульта, сделана предельно упрощенной. Поэтому:
1. Драйвер диска, с которого будут загружаться данные, должен быть загружен заранее (или быть резидентным).
2. USR должна быть загружена (SET USR NOSWAP)
3. Ошибки проверяются, но не анализируются, по любой ошибке будет сообщение "*** ERROR ***"
4. Имя файла принимается по .CSISPC, т.е. после запуска программы она выдаст звездочку, после которой надо набрать имя файла. Дефолтный тип файла .ROM

Архив содержит всё, включая дамп значимого блока модуля .SAV (CHG.DMP). Название, кстати, осталось от какой-то моей старой программы, что-то я там изменял, а для этой выдернул начало не вникая, что там дальше.

Если нет возможности перенести программу на загружаемый диск, то можно попробовать набрать ее с пульта и сохранить на диске командой SAVE.

MM
15.08.2018, 15:17
Практический вопрос о карте загрузки блоков программы типа .SAV, размещается с 360 ячейки 0 блока.
Например, значение адреса 360 "000377" соответствует каким именно загружаемым блокам ?
В русском переводе мануала по модулю .SAV этот вопрос рассмотрен слишком кратко, без примеров.

AFZ
15.08.2018, 17:58
Ну, судя по тому, что в моей CHG.SAV загружаются блоки 0 и 2, а в ячейке 360 лежит код 240, очевидно, что 7-й бит (0200) отвечает за блок 0, а 5-й (040) за блок 2. Остальные, видимо, по аналогии.

randomizer
04.12.2018, 18:04
Как можно загрузить файл в регион памяти. Пробую загрузить изображение используя следующий код, отрабатывает без ошибок, но не загружается даже хотя бы одного блока.


ReadFile: ;------------------------------------------------------------{{{
.LOOKUP #AREA,#0,#FileName ;.LOOKUP area,chan,dblk[,seqnum]
BCC 1$
.PRINT LERR
1$: .READW #AREA,#0,#FB,9600.,#0 ;.READW area,chan,buf,wcnt,blk[,BMODE=strg]
BCC 2$
.PRINT RERR
2$: .CLOSE #0 ;.CLOSE chan
RETURN

LERR: .ASCIIZ /Lookup error/
RERR: .ASCIIZ /Read error/
.Even
AREA: .BLKW 5 ;EMT Argument Block
FileName: .RAD50 /DK REBELSBPS/
;----------------------------------------------------------------------------}}}

form
04.12.2018, 18:15
не загружается даже хотя бы одного блока
Недостаточно информации. К примеру чему равно FB. Все мониторы кроме SJ (включая SB) проверяют что адрес принадлежит задаче (то есть если адрес где-то в странице I/O, номер не пройдет.
В строках, печатющих ошибку - ошибка - результат будет не тот, что ожидается (адрес символа пишется с #) :)
В самих строках сообщений тоже (там получается .ASCII, а не .ASCIZ как предполагалось).

randomizer
04.12.2018, 18:29
FB определён в теле программы как


FB:: ;framebuffer
.=BP12
.BLKW <320*240*2/16>


Все мониторы кроме SJ (включая SB) проверяют что адрес принадлежит задаче
А я как раз использую SJ монитор версии 5.04g, на УКНЦ.

В строках, печатющих ошибку - ошибка - результат будет не тот, что ожидается (адрес символа пишется с #)
упс...

form
04.12.2018, 18:36
А я как раз использую SJ монитор версии 5.04g, на УКНЦ.
5.04g переходная система к новым - там может так же быть. Или как минимум может проверяться, что адрес указывает выше самой системы в памяти. Так, что тут смотреть надо. В любом случае если адрес из I/O page, лучше через буфер делать.

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

Да, ну и само устройство (или его эмуляция раз речь про УКНЦ) может не предусматривать передачу данных в I/O page.

randomizer
04.12.2018, 19:11
Да, ну и само устройство (или его эмуляция раз речь про УКНЦ) может не предусматривать передачу данных в I/O page.
Я пытаюсь загрузить как раз в память которая ниже ОС, в нижние 32КБ(в УКНЦ только их можно использовать как видеопамять с прямым доступом).

Попробую ещё вечером запустить исправив ошибки с выводом сообщений на экран.

Кстати, из описания вызова не совсем ясно как он работает: необходимо задать wcnt - количество слов для чтения и blk - блок для чтения. Я так понимаю что если задать wcnt=128, и blk=0, при размере блока 512 байт, в буфер будут занесены 256 байт. А если задать wcnt больше размера блока? Будут прочитаны несколько блоков?

form
04.12.2018, 20:06
Я так понимаю что если задать wcnt=128, и blk=0, при размере блока 512 байт, в буфер будут занесены 256 байт.
Да.


А если задать wcnt больше размера блока? Будут прочитаны несколько блоков?
Да.
Без учета границ памяти и ограничений устройств, теоретическое максимальное количество слов может быть 32767.

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

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

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


.READW #AREA,#0,#FB,9600.,#0
Кстати еще ошибка: вместо количества слов 9600., он возьмет количество слов по адресу 22600, а там скорее всего 0 - вот и причина :)

randomizer
04.12.2018, 20:24
Кстати еще ошибка: вместо количества слов 9600., он возьмет количество слов по адресу 22600, а там скорее всего 0 - вот и причина
Да, частая ошибка у меня, с непривычки, вместо укзателя на значение указываю само значение :v2_blush:

hobot
05.12.2018, 08:10
randomizer, можно значение, но тогда символ #

MM
05.12.2018, 23:55
Соответствие ячеек 360-376 и длины загрузки файла типа .SAV ( при верхнем адресе ( ячейка 000050 файла типа .SAV )):
000360 : 000200 000000 - 1 блок 000776
000360 : 000340 000000 - 2 блока 002000
000360 : 000360 000000 - 3 блока 003000
000360 : 000370 000000 - 4 блока
000360 : 000374 000000 - 5 блоков
000360 : 000376 000000 - 6 блоков
000360 : 000377 000000 - 7 блоков
000360 : 100377 000000 - 8 блоков
000360 : 140377 000000 - 9 блоков
000360 : 160377 000000 - 10 блоков
000360 : 170377 000000 - 11 блоков
000360 : 174377 000000 - 12 блоков
000360 : 176377 000000 - 13 блоков 015000
000360 : 177377 000000 - 14 блоков 016000
000360 : 177777 000000 - 15 блоков 017000
000360 : 177777 000200 - 16 блоков 020000
000360 : 177777 000300 - 17 блоков 021000
000360 : 177777 000340 - 20 блоков 022000

000360 : 177777 000300 - 20 блоков 021776

form
16.12.2018, 22:30
Соответствие ячеек 360-376 и длины загрузки файла типа .SAV
Если быть точным, то между значением данных ячеек и длиной загрузки (а тем более длиной файла) никакого соответствия нет.
Точнее длиной загрузки можно назвать количество битов в данных ячейках, установленных в 1 :)

Вот к примеру:
.BLKW 256.*10.
.END
Получим файл 11 блоков, 12776 в 50 и 200 в 360.

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

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

И немного баловства:
MOV @#54,R0
CMP (R0)+,(R0)+
ROR @R0

Это код открытия устройства TT: по каналу 0 (при условии, что он [канал] не был ранее открыт) :)
Правда это не освобождает от необходимости делать .FETCH/LOAD для драйвера в SJ мониторе.

MM
16.12.2018, 23:01
Если быть точным, то между значением данных ячеек и длиной загрузки (а тем более длиной файла) никакого соответствия нет.
Троллинг будет поощрен.