User Tag List

Страница 37 из 48 ПерваяПервая ... 333435363738394041 ... ПоследняяПоследняя
Показано с 361 по 370 из 471

Тема: RT-11 для чайников

  1. #361

    Регистрация
    22.11.2009
    Адрес
    Москва
    Сообщений
    1,699
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    195
    Поблагодарили
    127 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Первое правило программирования для RT-11 -- забыть про ASCII имена файлов, потому что они передаются в кодировке RAD50 Для первичного просветления читать про макрос .CSISPC.

    Для cowgol runtime я написал такой код (fcb.rt11 -- это parameter area для макросов, fcb.buffer -- буфер для чтения/записи блока)
    Код:
    sub FCBOpenIn(fcb: [FCB], filename: [uint8]): (errno: uint8) is
        var rtfcb := &fcb.rt11;
        var rtbuf := &fcb.buffer;
        var rad50 := rtbuf + 30;
        var defext: uint16[] := {0, 0, 0, 0};
    
        # parse ASCII filename into RAD50 rtbuf
    
        @ASm "mov sp, r5";
        @ASm ".csisp", rtbuf, ",", defext, ",", filename;
        @ASm "mov r5, sp";
        @ASm "bcc 1$";
        @ASm "movb #1,", carry;
        @ASm "1$:";
    
        if carry != 0 then
            errno := carry as uint8;
            return;
        end if
    
        @ASm ".looku", rtfcb, ", #0, ", rad50;
        @ASm "bcc 2$";
        @ASm "movb #1,", carry;
        @ASm "2$:";
    
        errno := carry as uint8;
        if errno == 0 then
            file_i_channels[0] := fcb;
        else
            file_i_channels[0] := 0 as [FCB];
        end if;
    end sub;

  2. #361
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #362

    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,724
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    406
    Поблагодарили
    257 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Моя цель - компактный код, ведь я пишу 256-байтные и 512-байтные демки. Макросы удобны для системного программирования, но не для моих целей. Мне нужно контролировать код. Например, в одной демке у меня такое:
    Код:
    LEN:	MOV #2048.,R3
    	SUB #32.,LEN+2
    	BEQ LEN+2	; end of data? exit
    Когда счётчик доходит до нуля, происходит переход на него, то есть на образовавшуюся команду HALT - конец программы. Этот трюк позволяет не хранить отдельную команду HALT, что экономит 2 байта. И подобное во многих местах. Если бы инструкция MOV #2048.,R3 находилась внутри макроса, я не смог бы прыгнуть в его середину.


    Цитата Сообщение от Alex_K Посмотреть сообщение
    Имеется прекрасная библиотека с макросами SYSMAC.SML, там всё есть.
    Библиотеку нашёл, а её исходника не нашёл. Мне бы посмотреть как устроены все эти макросы типа lookup и read.

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

    Читаю AA-PD6LA-TC_RT-11_System_Macro_Library_Manual_Aug91.pdf

    Во-первых, непонятно, в каком байте хранить код функции для EMT 375. Судя по табличке, в старшем. Но по логике, этот байт - первое, что должен считать обработчик EMT, а значит он должен быть младшим. По крайней мере, на БК0010 так сделано. Почему в документации не разделили это слово на 2 байта, чтобы исключить недопонимание?

    Во-вторых, описан макрос .CDFN, но не написано куда он возвращает номер канала, чтобы потом использовать его при открытии файла.

    В общем, нужны исходники этих макросов. Где их взять?
    Последний раз редактировалось Manwe; 10.09.2020 в 09:11.
    manwe.pdp-11.ru

  4. #363

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,247
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    638
    Поблагодарили
    414 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    Библиотеку нашёл, а её исходника не нашёл. Мне бы посмотреть как устроены все эти макросы типа lookup и read.
    Цитата Сообщение от Manwe Посмотреть сообщение
    В общем, нужны исходники этих макросов. Где их взять?
    В SYSMAC.SML бинарный только заголовок, далее идёт чистый текст. Заголовок можно отрезать в любом бинарном редакторе.

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

    Цитата Сообщение от Manwe Посмотреть сообщение
    Во-вторых, описан макрос .CDFN, но не написано куда он возвращает номер канала, чтобы потом использовать его при открытии файла.
    А зачем вам .CDFN? Он изменяет количество доступных для задачи каналов ввода-вывода. При этом таблицу каналов надо хранить в теле задачи. Неужто вам стандартных 15 недостаточно. Если надо только считать из файла, то достаточно .LOOKUP, .READW и .CLOSE.

  5. #364

    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,724
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    406
    Поблагодарили
    257 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    А зачем вам .CDFN? Он изменяет количество доступных для задачи каналов ввода-вывода. При этом таблицу каналов надо хранить в теле задачи. Неужто вам стандартных 15 недостаточно. Если надо только считать из файла, то достаточно .LOOKUP, .READW и .CLOSE.
    Использовать всегда канал номер 0? Из документации это не очень понятно, прямо не сказано.

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

    Цитата Сообщение от Alex_K Посмотреть сообщение
    В SYSMAC.SML бинарный только заголовок, далее идёт чистый текст. Заголовок можно отрезать в любом бинарном редакторе.
    Спасибо, отрезал первые полтора килобайта, помогло.
    manwe.pdp-11.ru

  6. #365

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,247
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    638
    Поблагодарили
    414 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    Использовать всегда канал номер 0? Из документации это не очень понятно, прямо не сказано.
    Да, при старте своей задачи вы получаете в распоряжение 15 каналов ввода-вывода, от 0 до 14(016). И можете их использовать по своему усмотрению.

    Этот пользователь поблагодарил Alex_K за это полезное сообщение:

    troosh(10.09.2020)

  7. #366

    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,724
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    406
    Поблагодарили
    257 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Да, при старте своей задачи вы получаете в распоряжение 15 каналов ввода-вывода, от 0 до 14(016). И можете их использовать по своему усмотрению.
    Значит, такой код будет корректным?
    Код:
            MOV #LOOKUPdata,R0
            EMT 375             ; open file
            MOV #READdata,R0
            EMT 375             ; read file
            RET
    
    LOOKUPdata: .BYTE 0         ; channel number
                .BYTE 1         ; function number
                .WORD FileName  ; pointer to the text string
                .WORD 0         ; for magnetic tape
    READdata:   .BYTE 0         ; channel number
                .BYTE 10        ; function number
                .WORD 0         ; block number to read
                .WORD Load      ; address to load a file
                .WORD 512./2    ; file size
                .WORD 1
    
    FileName:   RAD50 "DK FILE00DAT"
    Load:
    manwe.pdp-11.ru

  8. #367

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,247
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    638
    Поблагодарили
    414 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    Значит, такой код будет корректным?
    Ну в принципе да. Не обрабатываются ошибки. Если есть ошибка, то после исполнения EMT 375 будет установлен бит C в PSW. Ну и в блоке для .READW последнее слово должно быть равно нулю, это .READW, а не .READ. И не RAD50, а .RAD50 (с точкой).

  9. #368

    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,724
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    406
    Поблагодарили
    257 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо, получилось!
    Можно даже убрать .WORD 0 ; for magnetic tape

    Нажмите на изображение для увеличения. 

Название:	Loader2.jpg 
Просмотров:	159 
Размер:	23.4 Кб 
ID:	73469
    manwe.pdp-11.ru

    Этот пользователь поблагодарил Manwe за это полезное сообщение:

    xolod(10.09.2020)

  10. #369

    Регистрация
    18.04.2015
    Адрес
    г. Люберцы
    Сообщений
    342
    Спасибо Благодарностей отдано 
    103
    Спасибо Благодарностей получено 
    32
    Поблагодарили
    27 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    И не RAD50, а .RAD50 (с точкой).
    У них не macro-11, а свой ассемблер. Им можно.

  11. #370

    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,724
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    406
    Поблагодарили
    257 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от troosh Посмотреть сообщение
    У них не macro-11, а свой ассемблер. Им можно.
    У нас пока вообще нет поддержки Radix-50 в нём В будущем добавим, а пока написал конвертер для БК0010: ты ему строку, он тебе числа на экран.
    manwe.pdp-11.ru

Страница 37 из 48 ПерваяПервая ... 333435363738394041 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 206
    Последнее: 19.08.2020, 10:36
  2. Монолоадер для чайников.
    от ZX_NOVOSIB в разделе Для начинающих
    Ответов: 226
    Последнее: 24.05.2018, 08:54
  3. TS Conf прошивка для Чайников
    от AAA в разделе Софт
    Ответов: 157
    Последнее: 10.01.2015, 04:46
  4. Ответов: 35
    Последнее: 01.12.2006, 10:06

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •