PDP-11 C V1.2-006
Вид для печати
PDP-11 C V1.2-006
Собственно оно...
В дополнение к посту с дистрибом BASIC-11...
В файле "baspat.mac.txt" (переименовать в .MAC) лежит патч для SUDTCM.OBJ, добавляющий поддержку дат после 1999 года в BASIC-11. Скорее всего подойдет к любой версии, но проверялся только в BASIC-11/RT-11 V02-03.
Использование патча:
После чего можно генерировать BASIC на свой вкус обычным образом.Код:.MAC BASPAT
.REN SUDTCM.OBJ .OLD
.PAT SUDTCM=SUDTCM.OLD,BASPAT
Пример генерации:
Здесь я при генерации затер оригинал BASIC.SAV. В начале диалога он предлагает выбрать имя, если выбрать не BASIC - не затрет. В конце сборки он ругается на неопределенные символы - это нормально (о чем он собственно пишет в программе генерации). Для ДВК/УКНЦ лучше всего выбрать FIS в качестве железа для арифметики (или EIS ежели бывают без поддержки FIS).Код:.UNP BASIC.SAV
.RU BASIC
BASIC-11/RT-11 V02-03
OPTIONAL FUNCTIONS (ALL, NONE, OR INDIVIDUAL)? A
READY
RUN SUCNFG
BASIC-11/RT-11 V02 Configuration Program
Type "?<ret>" after any prompt for HELP.
.SAV and .COM file name (default is BASIC):
Do you want a map? (Y or N; default is N): Y
.MAP name (default is same as .SAV name):
Background or Foreground ? (B or F; default is B):
Do you want PRINT USING? (Y or N; default is Y):
Do you want CALL support? (Y or N; default is N):
Single or Double precision math? (S or D; default is S): D
Arithmetic hardware (NONE, EAE, EIS, FIS, or FPU; default is NONE): FPU
Do you want the transcendental functions? (Y or N; default is Y): ?
Y includes the transcendental functions, N does not.
The transcendental functions are SQR, SIN, COS, ATN,
LOG, LOG10, and EXP.
Do you want the transcendental functions? (Y or N; default is Y):
Do you want the SUB command? (Y or N, default is Y):
Do you want the RESEQ command? (Y or N, default is Y):
Do you want long error messages? (Y or N; default is Y):
Overlay structure type (1, 2, 3, 4, or 5; default is 1): ?
The overlay structures are described as follows:
Type 1 - BASIC is not overlaid.
Type 2 - The error messages are overlaid with a segment of
of the edit phase.
Type 3 - The error message phase, edit phase, and the
execute phase are overlaid.
Type 4 - Similar to type 3 except that the edit and execute
phases are overlaid internally.
Type 5 - Similar to type 4 except that the math package, the
I/O routines, are some other routines normally in the
root segment are overlaid.
The higher the overlay structure type number, the less memory
is required by BASIC. The saving in memory requirements is made
at the expense of performance. Type 2, however, has very
Overlay structure type (1, 2, 3, 4, or 5; default is 1):
The following GLOBALS will be undefined. These
errors may be ignored.
..UAC$, ..NRC$, and ..MSP$ (from no CALL).
To create the BASIC that you have just defined,
type "BYE<ret>" after BASIC prints "READY". When the system
prompts for input, type "@BASIC<ret>" to link the new BASIC.
You may type "R BASIC<ret>" to run it.
Since you have named the file "BASIC", you may
run it by typing only "BASIC<ret>".
READY
BYE
.@BASIC
.R LINK
*BASIC,BASIC=/B:1200//
*BSPTRD,BSPAT,BSR0D
*BSR1D,BSPR0
*BSCLIN
*SUO1ID,BSOT0D.FPU,BSOT1D.FPU
*SUIOPR,SUIOPO,SUDTCM
*BSX0A,BSX0B,BSX2,BSX1A
*BSX1B,BSPR1,BSCLSN
*SUE1ID,BSE0,BSE1
*BSSUB,BSRSQ,BSCMP,BSKEYS
*BSERR,BSERML
*SUIMP,BSFUNC,SUOPT
*//
?LINK-W-Undefined globals:
..UAC$
..NRC$
..MSP$
*^C
.
Для полного счастья еще можно разрешить автоматическое использование VBGEXE для RT-11 V5.6 и новее (старым системам это не мешает).
После такой правки в новых версиях RT-11 размер памяти существенно увеличится (в системах с поддержкой MMU). В старых V5 системах нужно будет явно запускать через VBGEXE.SAV, в 5.6 и новее достаточно выполнить команду SET RUN VBGEXE и запускать как обычно.Код:.SIPP BASIC.SAV/A
Base?
Offset? 4
Base Offset Old New?
000000 000004 000000 200
000000 000006 000000 ^Y
.
Свободная память до и после правки:
Код:0 USED, 2404 FREE
0 USED, 15669 FREE
Y2K патч для BASIC-PLUS/RT-11 V3.2-05.
Выполнить:
Пример генерации:Код:.MAC BPEPAT
.MAC BPNPAT
.REN DTT(E,N).OBJ .OLD
.PAT DTTE=DTTE.OLD,BPEPAT
.PAT DTTN=DTTN.OLD,BPNPAT
Код:.VRU BPGEN
BASIC-PLUS/RT-11 V3.2-05
Ready
RUN BPCNFG
BPCNFG -- BASIC-PLUS/RT11 configuration dialogue/process version 3.2
The configuration specification process may proceed either
via an interactive dialogue at the terminal or by taking
its input from a configuration specification file.
Proceed via dialogue (YES or NO) [YES] ?
Welcome to the configuration dialogue for BASIC-PLUS/RT-11 V3.2.
By answering the questions that follow, you provide information
from which this configuration utility will create an RT-11 command
file, which you can then use to LINK an executable BASIC-PLUS image.
For each question, a default is given in brackets; you may accept
this default by merely pressing RETURN. Each question that requires
you to choose one of a set of responses will list the admissible
responses in parentheses.
If you desire more information before answering a question, type ?.
An explanation of the question will be printed, and the question
will then be asked again.
Beginning of dialogue
File name for this generation of BASIC-PLUS [BASIC]?
Shall the linking process create a .MAP file (Y or N) [N]?
Single or Double precision floating-point (S or D) [S]?
Arithmetic hardware (NHD, EIS, FIS, or FPU) [NHD]? FPU
Extended memory for user images (Y or N) [N]? Y
Abbreviated error-message text (Y or N) [N]?
LOG, LOG10, EXP, and SQRT functions (Y or N) [N]? Y
SIN, COS, TAN, and ATN functions (Y or N) [N]? Y
Matrix Mathematics features (Y or N) [N]? Y
String Arithmetic functions (Y or N) [N]? Y
GET and PUT statements (Y or N) [N]? Y
Buffer Subsetting statements and functions (Y or N) [N]? Y
PRINT USING statement (Y or N) [N]? Y
SYS() functions (Y or N) [N]? Y
BIN, BIN$, OCT, OCT$, HEX, and HEX$ functions (Y or N) [N]? Y
BREAK, UNBREAK, TRACE and UNTRACE commands (Y or N) [N]? Y
Overlay structure (1=least, 2=intermediate, 3=most) [3]?
Language Extension feature (Y or N) [N]?
Dialogue complete.
CHAINing to "DK:BPCNF1"...BPCNF1 entered...CHAIN complete.
Creating "DK:BASIC.COM"...command file created.
-----------------------------------
The configuration utility has created a LINK command file, named
DK:BASIC.COM, which contains directions from which the linker can
build a BASIC-PLUS to the specifications you gave above.
To build your new BASIC-PLUS now, type EXIT and press RETURN
after BASIC-PLUS prints "Ready" below. When RT-11 then prompts
for a new system command, enter ASSIGN commands for the logicals
OBJ: and BIN:. Then type $@DK:BASIC.COM and press RETURN
to invoke the LINK command file.
(You need to ASSIGN the logicals OBJ: and BIN: because DK:BASIC.COM
refers to them. They direct LINK to the devices to be used for
object modules (inputs to LINK) executable image (output from
LINK), respectively.)
After you have LINKed your new BASIC-PLUS executable image you
can run it by typing the RT-11 command RUN BIN:BASIC and
pressing RETURN.
Configuration process complete.
Ready
EXIT
.AS DK OBJ
.AS NL MAP
.AS DM1 BIN
.@BASIC
.R LINK
*BIN:BASIC/V=//
*OBJ:BPRT.OLB,BPRTU2.OLB,RWSV,RTIV,MESU2,RGSV
*OBJ:RTSE,IOSG,SCSV,VJSV,LXYV,KP0V
*OBJ:O3SV,ALSE,AYSV,DMSU2,ECSE,MASU2
*OBJ:PRSU2,SUSV,TRIE,EDSV,TGSE,SQSE
*OBJ:WFSV,DBSV,PUSV
*OBJ:SCTV,MTTV/O:1
*OBJ:SYTV/O:1
*OBJ:WFTV/O:1
*OBJ:FRTV/O:1
*OBJ:DTTE/O:1
*OBJ:SUTE,DMTU2,IDTV/O:1
*OBJ:XTCV,OTCV,TLCV,SACV,TSCV,FTCE/O:2
*OBJ:TICV,TOCE,TUCV,TYCV,SMCV,LNCV
*OBJ:LACV,LLCE,LSCV,LICE,STCV,AYCV
*OBJ:CMCV,DMCV,MACU2,PRCE2,RTCV,VBCV
*OBJ:BKCV,DBCE,FDCV,MXCV,PUCV
*OBJ:DDDV,CMDE,EDDG,CODE,DMDE2,SHDU2/O:2
*OBJ:BNDE
*OBJ:RTOV,MEOU2,BPOV/O:2
*OBJ:RDRV,RURE,BNRE,CHRE2/O:2
*OBJ:PTXV,AYXE2,BFXE,CHXE2,FNXE2,MAXU2/O:2
*OBJ:MFXU2,OPXE2,PRXU2,RCXV,RTXE,SQXE
*OBJ:VBXE,BKXV,DBXV,FDXE,MXXE,PUXV
*OBJ:RFXE,SMXE,SYXV,LGOV,TGOV,XFOV
*OBJ:MSFV/O:2
*//
*^C
.
Дистрибутив BASIC-11/RT-11 V02-03, пропатченный на предмет y2k, запуска урезанной версии (BAS8K) в последних версиях RT-11 и автоматического запуска под VBGEXE в RT-11 V5.6 и новее.
Отдельно патч тоже прилагается.
Пресобранные варианты в дистрибутиве (пропатченные):
- BASIC.SAV - Включает все фичи кроме CALL, тип оверлея 3, аппаратура плавающей точки не используется
- BASICD.SAV - Аналогично предыдущему, но использует двойную точность для плавающей точки
- BAS8K.SAV - Аналогично первому, но не поддерживает PRINT USING, команд SUB и RESEQ и длинные сообщения об ошибках, тип оверлея 5
Перенес тупой дизассемблер в RT-11 - надоело файлы взад-вперед таскать.
Никаких многопроходностей и попыток определить где код где данные.
Никаких FPP инструкций.
Только BIS, EIS, FIS и всякая мелочь вроде CSM, MFPT, TSTSET, WRTLCK, SPL.
Код:*[lstfile[.LST]=]binfile[.SAV][/B:base][/O:offsblk][/N:nblks]
- listfile - файл листинга (если не указывать, выводит на терминал)
- binfile - бинарный файл
- /B - задает начальный адрес (по умолчанию 0)
- /O - задает начальный номер блока
- /N - задает количество блоков которые дизассемблировать
Можно напрямую дизассемблировать устройство - к примеру загрузчик:
Генерируемый листинг выглядит так:Код:.RU DISASM SY:/N:1 SYBOOT
.DIR SYBOOT
15-Nov-2011
SYBOOT.LST 11 15-Nov-2011
1 Files, 11 Blocks
46893 Free blocks
.
Возможно где-то есть ошибки - сильно не гонял ;)Код:000000 013767 000050 002310 MOV @#50,2316
000006 062767 000002 002302 ADD #2,2316
000014 012700 177776 MOV #177776,R0
000020 104354 EMT 354
000022 005720 TST (R0)+
000024 010067 002270 MOV R0,2320
000030 013706 000042 MOV @#42,SP
000034 012701 006332 MOV #6332,R1
000040 005067 002244 CLR 2310
000044 005067 002242 CLR 2312
000050 012767 177777 002236 MOV #177777,2314
История:
Код:15-SEP-2011 02.00 ПЕРЕПИСАЛ СТАРОЕ С НУЛЯ
21-DEC-2011 02.01 ИСПРАВЛЕНЫ ОШИБКИ ОБРАБОТКИ EIS И JSR
28-FEB-2012 02.02 ИСПРАВЛЕНЫ ОШИБКИ ПРИ РАБОТЕ С БОЛЬШИМИ ФАЙЛАМИ
В дополнение к фортранам...
Y2K патч для FORTRAN IV V2.08 и патченный дистрибутив.
Команды:
и пересобрать FORTRAN IV.Код:.MAC FORPAT
.REN F0.OBJ .OLD
.PAT F0=F0.OLD,FORPAT
И еще к фортранам.
Патчики y2k для FORTRAN-77 V5.0A и патченый дистриб.
Для применения патчей:
Сегодня день исправлений :)
Не хотела, падла, работать 29го :)
Код:Программа запроса и установки даты. Для корректной работы программа
должна находиться на системном диске и называться DATE.SAV. В стартовом
командном файле следует прописать команду "R DATE". При запуске выдается
запрос текущей даты. С помощью управляющих клавиш можно установить нужную
дату. По умолчанию будет установлено последнее введенное значение.
Если на момент загрузки системы дата уже установлена (передана из ранее
загруженной системы командой "BOOT" или прочитана из TOY драйвером NL:
в RT-11 V5.6/5.7) запрос даты не выдается, и программа только обновляет
сохраненную дату. Программа также может самостоятельно установить дату на
машинах, оснащенных TOY.
При вводе даты используются следующие клавишы управления:
Стрелка влево или D - выбрать предыдущий день
Стрелка вправо или C - выбрать следующий день
Стрелка вверх или A - выбрать следующий месяц
Стрелка вниз или B - выбрать предыдущий месяц
> - выбрать следующий год
< - выбрать прошлий год
CR - установить выбранную дату
Следующие ячейки программы можно изменить программой SIPP или подобной ей
для изменения поведения программы:
1000 - последняя сохраненная дата (формат .DATE)
1002 - опции программы (значение по умолчанию 100200):
100000 - допустимые значения года 1972-2099 (RT-11 V5.6/5.7)
000200 - разрешить использовать TOY
000001 - всегда запрашивать дату
1004 - 4-словный блок имени файла программы (RADIX-50)
Именно то что в заголовке, полный текст описания и UCL.(SAV,DAT) в приложенном архиве )))
Описание(почти полностью)
Скрытый текст
Код:Описание программы UCL.SAV (длина 4 блока) неизвестного автора.
Составлено Яковлевым С.С. 205,203 КПМ МФТИ.
Last correction : Date 10/12/88 Time 01:07:14
Программа предназначена для определения в рамках ОС RT11 собственных
команд пользователя. Что это значит?
Монитор системы, получив от оператора или из косвенного файла командную
строку, анализирует ее начало до первой не буквы или нецифры по следующему
алгоритму:
1. По списку команд монитора ищется мнемоника, в обязательную часть
которой укладывается введенное слово. Если слово короче обязательной части,
но символы в нем такие же, то выдается сообщение
?KMON-F-Ambiguous command
Это не позволяет использовать огрызки команд, например DI, DE, A
Если слово найдено, то монитор разбирает ключи команды, указанные файлы,
и выполняет команду. Простые команды непосредственно выполняются монитором.
Вместо сложных же формируется цепочка простых. Как правило, она сводится к
вызову систеной утилиты PIP,DUP,DIR,RESORC,MACRO, и др. и передаче ей
строки вида:
DEVOUT:FLOUT1.EXT,FLOUT2.EXT,...=DEVIN:FILIN.EXT
Если слово в таблице команд не найдено, то монитор считает его именем
программы, находящейся на систеном томе, ищет ее и запускает. Возможны
3 ситуации:
1. Программа найдена, в командной строке через пробелы указаны спецификации
по крайней мере двух файлов:
NED T R GLUCK T,R,G M,D
Это будет эквивалентно соответственно:
R NED R GLUCK
R=T M,D=T,R,G
2. Программа найдена, в командной строке - однобуквенные ключи, или
есть знак =, или вообще неразбираемые символы. Программа запускается
командой R, остаток командной строки передается ей без изменений.
3. Программа не найдена. Вот тут-то и вступает в дело UCL. Монитор
ищет UCL.SAV на устройстве SY:, запускает его и передает ему всю коман-
дную строку без изменений.
Что же предпринимает UCL?
Прежде всего на логическом устройстве UCL:, которое надо не забыть опре-
делить (желательно в стартовом косвенном файле), он ищет файл UCL.DAT.
Это текстовый файл, который можно редактировать редактором текста NED,K52,
EDIK,EDK и прочими с нормальной кодировкой символов. Можно пользоваться
редактором M08 (версия редактора MIM с кодировкой латинских букв, совмес-
тимой с КОИ-7).
Теперь программа ищет в прочитанном файле введенную команду, предварен-
ную восклицательным знаком. Далее она анализирует введенные ключи и в
соответствии с ними формирует командный файл. Правила следующие:
- Обязательная часть команды или ключа кончается звездочкой.
- Клопом $ обозначено любое после первого пробела продолжение команды,
причем обычно это спецификация файла. Как вы видите из примера, клоп дол-
жен быть указан как в начале определения команды, так и в каждом месте,
где необходимо. Везде он будет замещаться введенным продолжением команды.
- Строка, начинающаяся с косой черты /, определяет ключ:
/<номер ключа><обязательная часть>*<необязательная часть>[:]
- Если в конце ключа стоит двоеточие, это значит, что после этого ключа
в командной строке указывается двоеточие и продолжение до пробела ана-
логично $. Только теперь это продолжение попадает в командный файл под
видом диеза # и по одному разу:
- Первый встретившийся диез заменяется на вставку из ключа с цифрой 1
после косой черты. Второй - из второго, и т.д.
- В теле командника ?0 означает, что текст до следующего знака ?
включается в командник безусловно.
- ?<цифра от 1 до 9> означает, что текст до следующего ? включается
если есть ключ с соответствующим номером.
- Текст определения очередной команды завершается
!END<имя команды>
[свернуть]