Но сейчас то код работает в других условиях и это надо учитывать
Вид для печати
Дошли руки посмотреть что там поменялось в HD (пробовал как-то запользовать последний эмулятор с RSX - не пошел). Глянул на исходник HD.MAC, прилагающийся к эмулятору и немного впал в ступор.
Упоминается бит DMA в CSR, но никакого DMA судя по исходникам и в помине нет (раньше был) - вся перекачка данных выполняется вручную, тем самым делая поддержку прерываний по сути бесполезной.
Расширение адреса видимо пропало как класс (хотя раз теперь DMA нету, то и нафиг оно не нужно).
Прошу поправить если я что-то не так понял :)
Смотри- здесь.
Значит про DMA все понял верно.
Тогда собственно вопрос - можно ли управлять версией контроллера или оно фиксированно в эмуляторе?
Можно, смотри - здесь.
Разобрался в изменениях HD из-за которых старый драйвер перестал работать в RSX (независимо от того какой тип контроллера указать).
- независимо от типа контроллера (рассматриваем 2 и 3 по сути), I/O теперь не мгновенный
- запись байта в младший байт регистра данных теперь не трогает старший байт (раньше он занулялся)
Допинал предварительный вариант драйвера (гибрид, позволяющий на старом эмуляторе без поддержки прерываний подготовить систему, а на новом эмеляторе работать с прерываниями).
Теперь пытаюсь вспомнить подробности как заставить работать восстановление после "сбоя питания".
На данный момент при отжатии Power происходит штатный останов до "восстановления", но при нажатии Power, печатаются несколько звездочек и происходит останов. Вектор 24 оказывается зачищенным.
Пошел искать в теме сообщения когда ранее тестировал фичу, но может кто навскидку ткнет что надо поправить чтобы при "восстановлении питания" происходило повторное псевдопрерывание по 24?
- - - Добавлено - - -
Все, разобрался.
Теперь можно допинать драйвер, кое-что подправить в SAV, а то он, бедняга, считает что это UNIBUS система (и надо сказать, оснований для таких мыслей немало) да перенести ноду под эмулятором ДВК на новый вариант.
form, а TSX ты с новым эмулятором пробовал? У меня не пошел. С эмулированного DW запускается и работает, а с HD висит. То есть, что-то не то во взаимодействии драйвера с эмулируемым устройством, типа, устройство Патрон изменил, а драйвер не подправил.
Скорее всего драйвер HD в TSX не той версии.
В остальном проблем не должно быть.
Гляну сегодня.
- - - Добавлено - - -
Собрал свой драйвер под TSX.
Тип HD должен быть выставлен как 3.
В TSGEN.MAC должен быть с флагами DMA,MAPH.
Драйвер, прилагаемый к эмулятору по идее тоже будет работать если из него убрать код печати на экран в инсталяционной процедуре. Только обязательно собирать с опциями MMG$T и TIM$IT.
Это касается и RT-11 - нужно собирать с точными опциями. Там в драйвере есть всякие SET HD ERLG и SET HD TIMIT, но они работать не будут по понятным причинам в драйверах с обслуживанием прерываний или где используется .FORK (HD v3.0, v4.0, v5.0).
Это можно исправить:Код:; .DRAST HD,5,DONE
BR DONE
HDINT:: .INTEN 5,PIC
; .FORK FORKBK
MOV @#54,R4 ;можно R5
ADD 402(R4),R4
JSR R5,@R4
.WORD FORKBK-.
Код:.SH ALL
TSX-Plus Version = 6.50
18-Apr-2020
Active Handler Handler Handler
Device I/O Status V. base P. base size CSR Vector
------ ------ ------ ------- ------- ------- ------ ------
TT 0 000004
LD 0 102446
CL 0 016057 045752 000000 512
HD 0 102762 120000 073640 202 177720 164
LP 0 030003 120000 073631 406 177514 200
NL 0 000025 120000 073630 60
VM 0 102447 076770 000000 426
Assignments:
SY --> HD7:
DK --> HD7:
There are no allocated devices
Uptime: 00:00:19
System use: Run=1%, I/O-wait=0%, Swap-wait=0%, Idle=98%
I/O Activity: User I/O=0%, Swapping I/O=0%
Job Line Pri State Size Connect CPU time Program Job name
--- ------ --- ------- ----- --------- -------- ------- ------------
1* 1(0) 50 IN 39Kb 00:01:00 00:00:00 KMON
Line Type Vector CSR Terminal Speed Active Line Name
---- ----- ---------- ------ -------- -------- ------ ------------
1* Oper. DL 060 177560 VT52 9600 8N Yes Console
2 Local DL 300 176500 VT52 9600 8N No DLV11 - 1
3 Local DL 310 176510 VT52 9600 8N No DLV11 - 2
4 Local DL 320 176520 VT52 9600 8N No DLV11 - 3
5 Local DL 330 176530 VT52 9600 8N No DLV11 - 4
CL version number 18.
Unit Line Job Options
---- ---- ---- ----------------------------
CL0 none none
CL1 none none
CL2 none none
CL3 none none
Total installed memory = 4088Kb
Size of unmapped TSX and handlers = 33Kb (100076)
Size of mapped TSX system regions = 80Kb
Total size of TSX and mapped data = 127Kb
Size of mapped device handlers = 1Kb
Size of sharable run-time systems = 54Kb
Size of data cache buffer area = 0Kb
Space available for user jobs = 1862Kb
Swappable job context area = 7Kb
Current job memory limit = 56Kb
Maximum job memory limit = 64Kb
QUAN0 = 2
QUAN1 = 20
QUAN1A = 2
QUAN1B = 2
QUAN1C = 1
QUAN2 = 10
QUAN3 = 20
INTIOC = 30
HIPRCT = 40
Spooled devices: LP0
Logical subset disks:
No logical disks are mounted
Mounted devices:
Device Associated jobs
---------- ------------------------------
HD7: 1
Shared run-time systems:
CBR063
There are no named regions
Program Attributes and Privileges
-------------- -----------------------------------------
HD7:DUP.SAV DUP/PRIV=(SYSPRV,NODEBUG)
HD7:IND.SAV NOWAIT/IND/PRIV=(NODEBUG)
HD7:KED.SAV SINGLECHAR/NOWAIT/HIGH/PRIV=(NODEBUG)
HD7:KEX.SAV SINGLECHAR/NOWAIT/HIGH/PRIV=(NODEBUG)
HD7:K52.SAV SINGLECHAR/NOWAIT/HIGH/PRIV=(NODEBUG)
HD7:LOGON.SAV LOCK/BYPASN/PRIV=(BYPASS,SETNAME,SETPRV,SYSPRV,
NODEBUG)
HD7:PATCH.SAV SINGLECHAR/PRIV=(NODEBUG)
HD7:SETUP.SAV IOPAGE/SETUP/PRIV=(NODEBUG)
HD7:SYSMON.SAV /PRIV=(MEMMAP,NODEBUG)
HD7:TECO.SAV SINGLECHAR/NOWAIT/PRIV=(NODEBUG)
HD7:TRANSF.SAV SINGLECHAR/NOWAIT/NONINTERACTIVE/NOWINDOW/PRIV=(
NODEBUG)
HD7:TSAUTH.SAV BYPASN/PRIV=(NODEBUG)
HD7:TSXUCL.SAV TSXUCL/PRIV=(NODEBUG)
HD7:VTCOM.SAV SINGLECHAR/NOWAIT/MEMLOCK/PRIV=(PSWAPM,NODEBUG)
Authorized privileges: ALLOCATE,BYPASS,DEBUG,DETACH,GETCXT,MEMMAP,
MESSAGE,NFSREAD,NFSWRITE,OPER,PSWAPM,REALTIME,
RLOCK,SEND,SETNAME,SETPRV,SPFUN,SYSGBL,
SYSPRV,TERMINAL,WORLD,GROUP,SAME,SUBPROCESS,
UP1,UP2,UP3,UP4
Current privileges: ALLOCATE,BYPASS,DEBUG,DETACH,GETCXT,MEMMAP,
MESSAGE,NFSREAD,NFSWRITE,OPER,PSWAPM,REALTIME,
RLOCK,SEND,SETNAME,SETPRV,SPFUN,SYSGBL,
SYSPRV,TERMINAL,WORLD,GROUP,SAME,SUBPROCESS,
UP1,UP2,UP3,UP4
SL status: OFF,NOKED,NOTTYIN,SUBSTITUTE
VM Base=100000 Top=170000 Size=3584
.
А для 5.1 SJ/FB не сгенеришь? И для XM?.. И что надо добавить в конфиг?
Для XM должно быть MMG$T=1, TIM$IT=1 (HD.TSX из архива ввыше подойдет тоже).
Для SJ/FB достаточно собрать вариант без опций и с TIM$IT=1.
Ну или поправить прилагаемые исходники как выше написал - тогда получится универсальный вариант, настраивающийся через SET.
- - - Добавлено - - -
На всякий случай тот вариант из которого я собирал HD.TSX выше.
Это драйвер только для t3 контроллера без подстройки под систему - надо генерить с конкретными опциями.
Если не лень будет - допилю его до поддержки 32bit I/O, разделов и номеров 10-77.