В процессе исправления косяков, недочётов и функционала...
- - - Добавлено - - -
Прогнал формальные тесты - вроде ничего не сломал - можно двигаться дальше..
Вид для печати
В процессе исправления косяков, недочётов и функционала...
- - - Добавлено - - -
Прогнал формальные тесты - вроде ничего не сломал - можно двигаться дальше..
Здравствуйте вы закончили disasm можно его попросить на пробу?
Потихоньку (свободного времени катастрофически мало) доработываю обобщённый подход к переносу файлов из одной ФС в другую. В наследство от TU58fs достались только два метода - из ФС PDP11 в ФС хоста и из ФС хоста в фС PDP11 - но в ОЧЕНЬ простейшем варианте. Мой вариант будет более универсальным, в том числе - учитывающим особенности конкретной ФС. Типа поддержки или неподдержки каталогов. Но имена файлов всё ещё остаются проблемой..
Подвижки вперёд есть. Сделал класс для работы с ФС Windows - что бы можно было включить в общий подход. Умеет принимать файлы и отдавать файлы. В процессе исправил так же пару ошибок в соседних (RT-11 и ODS-1) классах. Пока получается, что дальше причёска кода и тестирование - особенно работа с именами файлов и поддержка каталогов - основные ошибки в процессе написания класса ФС Windows были связаны именно с этим.
Ну и фактически - создавать образ с ФС PDP-11 пока уммет только класс ФС RT-11.
Технически несложной должна быть реализация создания MT DOS-11.
Для XXDP есть некий под от автора (но в процессе разборок с ФС XXDP налетел на неточности и в разборке и сборке.
ФС DOS-11 похожа на ФС XXDP, основное отличие - поддержка каталогов, хотя технически каталог (один!) есть в XXDP
Ну и ODS-1 - это отдельная пестня.
Плюс ещё остаётся вопрос, что в разных ФС есть отличия в формате текстовых файлов и объектных (obj которые) файлов - тоже вопрос, который ждёт исследования - не про все ФС известно - как :) Точнее - Я не вентилировал ещё тонкости :)
Ну и ещё один функционал, который был реализован автором исходной утилиты, и на который я подзабил пока - это эмуляция TU58. В планах восстановление функционала есть, плюс хочется сделать ещё эмулятор и других лент (да и дисков тоже) через COM порт, но вот это всё остальное упирается в то, что на другой стороне должно быть НЕЧТО, что примет/отправит через COM порт команды/данные :) То есть задач - две :)
- - - Добавлено - - -
И да - времени по прежнему...
В первом приближении на новый подход (pack и unpack - это вариант переноса файлов между ФС, где на одной из сторон - ФС Windows) код прошерстил, написал и дописал. То есть ошибки и недописанное наверняка есть, но править буду по мере обнаружения.
Вот теперь готов к тому, с чего всё началось - запись на ленту в формате DOS-11 :) Может за выходные и успею накропать... :)
Было у меня подозрение, что - за выходные - это много :) Итак первый (ещё не все сценарии обрабатываются и взят каталог с распакованным образом диска RT-11 - но тем не менее) работающий вариант
В ФС RT-11 каталогов нет совсем, а ФС DOS-11 (в том числе и на ленте) по сути не имеет понятия - корневой каталог (точнее говоря - на дисках он есть, но там СПЕЦИФИЧЕСКИЕ записи) - поэтому было принято решение - всё из корневого каталога пихать в [1,1]Код:
>ImageUtilsx -from @m013.Src.dsk Path WinFS -to m013.1.Int.tap tape dos11 >m013.1.tap.Pack.mylog.txt
>type m013.1.tap.Pack.mylog.txt
Filesystem has 1 ufds, 3 files and 429 blocks
DIRECTORY [1,1]
06-APR-2024
FDF331.DOC 302 27-OCT-1989 <233>
FDF333.DOC 118 27-OCT-1989 <233>
FILE .BAD 1 09-FEB-1990 <233>
TOTL BLKS: 421
TOTL FILES: 3
>type !Log.txt
[2024-Apr-06 01:26:10 info ] initialize empty none file system on "m013.1.Int.tap"
[2024-Apr-06 01:26:11] Files from "@m013.Src.dsk" written to "m013.1.Int.tap".
[2024-Apr-06 01:26:11] 00:00:00.3128520
Следующая доработка-тест - запихать на ленту каталог с содержимым ODS-1.
А, да. Как вишенка на торт (тоже текущий вариант программы и тоже ФС RT-11):
Код:>ImageUtilsx -from m013.Test.NoInt.dsk disk rt11 -to m013.2.Int.tap tape dos11 >m013.2.tap.Pack.mylog.txt
>type m013.2.tap.Pack.mylog.txt
Filesystem has 1 ufds, 4 files and 4802 blocks
DIRECTORY [1,1]
06-APR-2024
FDF331.DOC 302 27-OCT-1989 <233>
FDF333.DOC 118 27-OCT-1989 <233>
FILE .BAD 1 09-FEB-1990 <233>
EMPTY .FIL 4371 xx-JAN-1972 <233>
TOTL BLKS: 4792
TOTL FILES: 4
>type !Log.txt
[2024-Apr-06 01:35:51 Warning] EMPTY.FIL - empty date
[2024-Apr-06 01:35:51 info ] initialize empty none file system on "m013.2.Int.tap"
[2024-Apr-06 01:35:53] Files from "m013.Test.NoInt.dsk" written to "m013.2.Int.tap".
[2024-Apr-06 01:35:53] 00:00:02.0040217
Вроде всё доделал для создания лент DOS-11
Дальше по текущим планам - добавить возможность указания порядка файлов в ФС - обобщённый вариант (то есть будет работать для всех ФС.. ну.. кроме Windows :D )Код:>ImageUtilsx -from @m013.Src.dsk Path WinFS -to m013.1.Int.tap tape dos11 >m013.1.tap.Pack.mylog.txt
>type m013.1.tap.Pack.mylog.txt
Filesystem has 2 ufds, 4 files and 733 blocks
DIRECTORY [1,1]
06-APR-2024
FDF331.DOC 302 27-OCT-1989 <233>
FDF333.DOC 118 27-OCT-1989 <233>
FILE .BAD 1 09-FEB-1990 <233>
TOTL BLKS: 421
TOTL FILES: 3
DIRECTORY [2,2]
06-APR-2024
FDF331.DOC 302 27-OCT-1989 <233>
TOTL BLKS: 302
TOTL FILES: 1
>type !Log.txt
[2024-Apr-06 15:32:25 info ] initialize empty none file system on "m013.1.Int.tap"
[2024-Apr-06 15:32:25 ERROR ] MTDOS11FileSystem does not support directory [NAMED]
[2024-Apr-06 15:32:25] Files from "@m013.Src.dsk" written to "m013.1.Int.tap".
[2024-Apr-06 15:32:25] 00:00:00.6702064
И проверки-исправления ошибок :)
А, да, сейчас хочу подсунуть созданную ленту в DOS-11 и посмотреть - как оно будет воспринято :)
- - - Добавлено - - -
SIMH помог найти ошибку :) Была в коде, который относится к записи на ленту, но который был написан без проверки. В нём нашлось две ошибки - одну нашёл в процессе написания и отладки, вторую нашел при попытке использовать ленту на SIMH, который делает больше проверок структуры ленты, чем ImageUtils. Результат:
Из занимательного - напрочь вылетело - как указывается каталог в DOS-11 :) В отличии от RSX (и VMS) в DOS-11 он указывается ПОСЛЕ имени файла :) Помогло вспомнить только чтение документацииКод:DOS/BATCH V9-20C
DATE: 6-APR-99
TIME: 16:38
DIALOGUE?
$
$LO 1,1
DATE:-06-APR-99
TIME:-16:38:24
$RU PIP
PIP V10-02
#KB:<MT:FDF331.DOC[1,1]
utwervden
u1.00025-01 33 05-lu
programmnoe obespe~enie dwk
fortran/fodos-2
translqtor s fortrana
rukowodstwo programmista
u1.00025-01 33 05
listow 86
Указание порядка добавил, есть некоторые шерховатости, но совпадение образа ленты (полученного распаковкой а потом запаковкой) с оригиналом - ОЧЕНЬ сильное (шерховатости) :) Завтра попробую сошлифовать шерховатости :)
- - - Добавлено - - -
Однако разобрался :) Ленту делали в RSX - а она поддерживает 9 символов в имени файла на ленте DOS-11 :) Ну, дальше понятно, что делать :)
Некоторая проблема может быть с идентичностью лент, созданных в XXDP и, есть вероятность, в DOS-11 - в поле дата старший (15-ый) бит использует как флаг непрерываного файла. Мой класс Mapper пока работает максимум на уровне байт, описания и поддержки битовых полей на текущий момент нет, только задумки.Код:>ImageUtilsX -dos11 -unpack Src\11SKIT1_try1.tap 1\@11SKIT1_try1.tap tape >1\11SKIT1_try1.tap.UnPack.MyLog.txt
>ImageUtilsX -from 1\@11SKIT1_try1.tap Path WinFS -to 1\11SKIT1_try1.Pack.tap tape dos11 >1\11SKIT1_try1.Pack.tap.Pack.MyLog.txt
>fc 1\11SKIT1_try1.Pack.tap Src\11SKIT1_try1.tap /b
Comparing files 1\11SKIT1_try1.Pack.tap and SRC\11SKIT1_TRY1.TAP
FC: no differences encountered
Но, собственно, цель - возможность переноса файлов из Windows в DOS-11 (а фактически и в RSX-11) достигнута - даже с поддержкой имен 9.3 в RSX :)
Дальше в планах потестировать и вернутся к идее запуска DOS-11 с диска HD :)
- - - Добавлено - - -
Нашлось ещё интересное про ленты в формате DOS-11. На загрузочной ленте XXDP аппартно загружаемый монитор в имени файла использует больше шести символов :)
- - - Добавлено - - -Код:Filesystem has 1 ufds, 704 files and 18523 blocks
DIRECTORY [2,2]
09-APR-2024
XXBOOT2 .MON 32 05-DEC-1988 <000> <--!!!!
XXDPXM .SYS 39 05-DEC-1988 <000>
XXDPSM .SYS 29 05-DEC-1988 <000>
DRSXM .SYS 48 05-DEC-1988 <000>
DRSSM .SYS 24 05-DEC-1988 <000>
DIR .SYS 7 05-DEC-1988 <000>
DB .SYS 2 05-DEC-1988 <000>
DD .SYS 3 05-DEC-1988 <000>
...
Юмор из разряда - как посмотреть каталог Windows, используя ImageUtils :v2_dizzy_punk:
Надо бы ещё показ даты файла добавить :)Код:>ImageUtilsX -dir "K:\Repo\ForDebug\ImageUtils\!ForCheck\@11SKIT1_try1.tap" path winfs
Directory [1,20]
CDA.OLB 79360
ICBLD.CMD 226
IPBLD.CMD 186
ISBLD.CMD 274
LAINIT.OLB 11264
UDCBLD.CMD 224
Total of 91534 bytes in 6 files
Directory [1,24]
CDABLD.BLD 10108
ICBLD.CMD 212
IPBLD.CMD 178
ISBLD.CMD 250
UDCBLD.CMD 212
Total of 10960 bytes in 5 files
Directory [1,54]
11MTKB.TSK 86528
11MVMR.TSK 78336
INDFIX.OBJ 5232
Total of 170096 bytes in 3 files
Directory [11,10]
CODRV.MAC 4424
CRDRV.MAC 21526
IPDRV.MAC 126032
LADRV.MAC 45138
LPDRV.MAC 12626
TTATT.MAC 42944
TTCAN.MAC 16080
TTCIS.MAC 10796
TTDAT.MAC 35458
TTFP.MAC 6566
TTICH.MAC 75358
TTINI.MAC 19146
TTJZ.MAC 3268
TTMAC.MAC 9046
TTMIS.MAC 3530
TTMOD.MAC 10830
TTODN.MAC 8678
TTOIS.MAC 6354
TTRW.MAC 47404
TTSUB.MAC 23440
TTTBL.MAC 10994
TTYH.MAC 21350
TTYJ.MAC 2924
TTYL.MAC 4568
TTYZ.MAC 10358
XMDRV.MAC 33594
Total of 612432 bytes in 26 files
Directory [2,20]
11SGEN.CMD 4656
11SGEN2.CMD 66602
ABOBAS.MAC 3334
ATLBAS.MAC 13810
BLXIOM.OBJ 266
BLXIOU.OBJ 156
BMPRE.MAC 1010
BRKBAS.MAC 1610
ERRBAS.MAC 2360
ERRMSG.MAC 2280
FCS11S.OBJ 11400
FMTDV.MAC 1632
FNDUCB.MAC 2632
GETNUM.MAC 1522
GNBLK.MAC 2046
KEYWD.MAC 2188
LKLST.MAC 2574
MCRBAS.MAC 8772
OPEBAS.MAC 35782
OTL.MAC 2330
OTLCD.MAC 8342
OTLCM.MAC 2602
OTLERR.MAC 7888
OTLHD.MAC 22926
OTLLB.MAC 32762
OTLLD.MAC 11876
OTLPRE.MAC 4030
OTLQIO.MAC 4222
OTLRD.MAC 7478
PRSBAS.MAC 2756
REDBAS.MAC 4500
REMBAS.MAC 5454
RMDMAP.OLB 54272
RMDUNM.OLB 38912
RPSBAS.MAC 6864
RUNBAS.MAC 9576
SETTIM.MAC 3498
SIP.MAC 6030
SIPBOO.MAC 38476
SIPCD.MAC 3292
SIPERR.MAC 3758
SIPLD.MAC 7926
SIPPRE.MAC 2834
SIPQIO.MAC 3838
TIMBAS.MAC 8866
TKTN.MAC 34320
Total of 504260 bytes in 46 files
Directory [200,200]
11SCOPY.CMD 4178
BLDLAINIT.CMD 6716
SGNBLDDRV.CMD 9306
SGNEXEC.CMD 84888
SGNICIS.CMD 22512
SGNIP.CMD 14520
SGNKLAB.CMD 34848
SGNPER.CMD 89574
SGNTT.CMD 14616
SYSGEN.CMD 42646
Total of 323804 bytes in 10 files
Directory [45,10]
KAADMP.MAC 5606
KAADRV.MAC 11648
KAASO3.MAC 2346
KADAGR.MAC 2700
KADDRV.MAC 6648
KADGCH.MAC 10044
KADIN0.MAC 2764
KADIN1.MAC 3782
KADIN2.MAC 2794
KADIN3.MAC 3780
KADIN4.MAC 2812
KADIN5.MAC 3608
KADINP.MAC 6276
KADSWP.MAC 3330
KAST.MAC 6850
KBFRMG.MAC 6086
KBFSTS.MAC 5438
KCLOKA.MAC 2306
KCLOKB.MAC 4546
KCOMM.MAC 2224
KCVADF.MAC 2920
KDIGO.MAC 4626
KDIO.MAC 5708
KDISWP.MAC 3418
KDOSWP.MAC 3390
KDRDRV.MAC 15648
KDSCAD.MAC 1854
KDSDGO.MAC 1986
KDVDF.MAC 5236
KEFQA.MAC 4784
KFLT16.MAC 2972
KGHIST.MAC 10548
KIESTO.MAC 1840
KKWDRV.MAC 8572
KLQSUB.MAC 3358
KMLB.MLB 10752
KMUL.MAC 1384
KPAA.MAC 3184
KPRE.MAC 1650
KRATE.B2S 3028
KRATE.FTN 3250
KRCLKB.MAC 2062
KRLOC.MAC 1948
KRWBF.MAC 5812
KSET.MAC 6494
KSTADC.MAC 3468
KSTB.MAC 3230
KSTIBF.MAC 2378
KSTOP.MAC 2364
KSUB.MAC 4880
KSWDF.MAC 6440
LABMAC.MAC 2668
Total of 237440 bytes in 52 files
Directory [45,20]
ASMK.CMD 316
K4ASM.CMD 80
KCLEAN.CMD 52
KCOMBLD.CMD 136
KLABMLB.CMD 126
KLIBBLD.CMD 110
KLIBRP.CMD 156
Total of 976 bytes in 7 files
Directory [45,24]
ASMK.CMD 316
K4ASM.CMD 80
KCLEAN.CMD 52
KCOMBLD.CMD 130
KLABMLB.CMD 128
KLIBBLD.CMD 108
KLIBRP.CMD 156
Total of 970 bytes in 7 files
Grand Total of 1952472 bytes in 162 files in 9 directories