Норм библиотека, но с картинками не работает. Хотя объектник я бы поглядел, чтобы не велосипедить.
А, не хочешь? Ну как хочешь. Ты сам где-то тут писал, что хотел бы с картинками работать из Паскаля.
Вид для печати
В командной строке CSI передаются максимум шесть файлов. Если надо больше, то программы обычно поддерживают ключ //.
А зачем такие сложности. Лучше в RT-11 собрать, удобнее.
Код:LIBRARY Создание и обслуживание объектных и макро библиотек
SYNTAX
LIBRARY[/OPTIONS] библиотека файлы[/OPTIONS]
SEMANTICS
Библиотека - имя библиотечного файла, который создает или
модифицируется. Файлы содержат имена файлов разделенных
запятыми (,). По умолчанию тип выходного файла для листинга
.LST, .MLB для макробиблиотек, и .OBJ для объектных библиотек.
По умолчанию типы входных файлов .OBJ и .MAC.
OPTIONS
ALLOCATE:размер
Резервирует место для выходного файла
CREATE
Создает новую объектную библиотеку
DELETE
Удаляет объектный модуль из библиотеки
EXTRACT
Извлекает объектный модуль из библиотеки и сохраняет его в OBJ-файле
INSERT
Вставляет объектный модуль в библиотеку
LIST[:файл]
Выводит каталог объектной библиотеки
MACRO
Создает макробиблиотеку
NOOBJECT
Запрещает создавать новую объектную библиотеку
OBJECT[:файл]
Задает имя объектной библиотеки
PROMPT
Выдать приглашение программы LIBR, для ввода большо числа имен
файлов (более шести). Завершается вводом //
REMOVE
Удаляет заданный глобальный символ (и соответствующий модуль)
из каталога библиотеки
REPLACE
Замещает существующий модуль более новым
UPDATE
Комбинация ключей /INSERT и /REPLACE
EXAMPLES
LIBRARY/CREATE NEWLIB FIRST,SECOND
LIBRARY/EXTRACT NEWLIB MZ1:ATAN
LIBRARY/INSERT/OBJECT:NEWLIB OLDLIB THIRD,FOURTH
LIBRARY/LIST:TT: OLDLIB
Я так думаю, тут вопрос в том, что есть команда RT LIBRARY (сокращённый вариант написания LIBR), а есть программа LIBR.SAV (которая запускается командой LIBRARY с передачей параметров). И если ввести LIBR - то это обращение к команде, а если R LIBR или RUN LIBR - то это запуск программы LIBR.SAV (если команда RUN LIBR FILE1 FILE2 - то это ещё и передача в LIBR .SAV строки команды LIBR2=LIBR1, то по сути это запуск в таком виде RUN LIBR FILE2=FILE1)
Осилил реализацию Palette и SetPalette. Критика очень приветствуется.
Хотел сделать в Palette BICB #3, 2(SP) вместо TSTB 2(SP), но похоже, что оно не устанавливает флаг нуля. Или надо писать BICB 2(SP), #3 ? Или это у меня MACRO неправильный? Так нормальный же. Этот же тот, что в эмуль Патрона вшит.Код:PROCEDURE Palette (n: INTEGER);
BEGIN /*$C
.TITLE CG004
MOV #^O146000, R0 ; #CC00
MOV #^O167252, R1 ; #EEAA
TSTB 2(SP)
BEQ PALET$
MOV #^O135631, R0 ; #BB99
MOV #^O177735, R1 ; #FFDD
DEC 2(SP)
BEQ PALET$
MOV #^O42000, R0 ; #4400
MOV #^O21146, R1 ; #2266
DEC 2(SP)
BEQ PALET$
MOV #^O31421, R0 ; #3311
MOV #^O73525, R1 ; #7755
PALET$: CALL PALET
*/
END {Palette};
/*------------------------------- Cut here --------------------------------*/
PROCEDURE SetPalette (c0, c1, c2, c3: INTEGER);
BEGIN /*$C
.TITLE CG005
BICB 8(SP), #^O17
BICB 6(SP), #^O17
MOVB 6(SP), R0
ASH #4, R0
ADD 6(SP), R0
ASH #4, R0
ADD 8(SP), R0
ASH #4, R0
ADD 8(SP), R0
BICB 4(SP), #^O17
BICB 2(SP), #^O17
MOVB 2(SP), R1
ASH #4, R1
ADD 2(SP), R1
ASH #4, R1
ADD 4(SP), R1
ASH #4, R1
ADD 4(SP), R1
CALL PALET
*/
END {SetPalette};
/*$C
.GLOBL NEWPAL
.GLOBL PALET
PALET: MOV R0, NEWPAL
MOV R1, NEWPAL+2
MOV #BUF0, R0
MOV #5, R1
MTPS #^O200
BR 2$
1$: MOVB (R0)+, @#^O176676
2$: TSTB @#^O176674
BPL 2$
SOB R1, 1$
MTPS #0
RETURN
BLK: .WORD ^O20*^O400, ^O32, ^O2470, NEWPAL, 2
BUF0: .WORD BLK, -1
NEWPAL: .WORD ^B1110111011001100, ^B1010101010001000
*/
Кстати, мне так и не ответили по поводу: на PDP-11 какие операции более быстрые - с байтами или со словами?
2 NZeemin: есть основания предположить, что Ваша утилитка rt11dsk [Jan 18 2020 07:46:18] не работает в Windows 10. Вы её там тестировали? Интересует ли больше информации по этому вопросу?
Лежащий на стеке по заданному смещению байт маскируется по AND #F, т.е. выделяются 4 младших бита. Это так и работает, проверено. Тут было упомянуто, что надо поменять операнды местами, но если так сделать, тогда не работает.
- - - Добавлено - - -
Уже юзаю, спасибо. Мне из батника нужно.