User Tag List

Страница 19 из 48 ПерваяПервая ... 151617181920212223 ... ПоследняяПоследняя
Показано с 181 по 190 из 472

Тема: Орион-ПРО. Софтверные дела

  1. #181

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,392
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Конверсии выходного дня - две игрушки с msx (в imsx они не работают, т.к. напрямую обращаются к портам). Клавиши управления описаны в readme. Запускать из PRODOS. Поддерживаются (на автоопределении) оба варианта дешифрации AY (Пушков и zx).
    Очередное большое спасибо Дмитрию2012 за проверку на реале и выявление неприятного бага!
    Вложения Вложения

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

  3. #182

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Прикольно. Но кажется, немного быстровато...

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

    Цитата Сообщение от Error404 Посмотреть сообщение
    Там все очень коряво: эти переменные (экстент EX и переполнение extra_extent=S2) существуют в двух ипостасях одновременно
    Вообще-то, функции прямого доступа к записи (блоку из 128 байт) просто конвертируют 16-битный номер записи в те самые extra_extent, EX и номер записи 0-127. А потом вызывают всё те-же функции чтения/записи. Больше этот 16-битный номер нигде не используется.

    Цитата Сообщение от Error404 Посмотреть сообщение
    И BDOS постоянно на сдвигах тасует их между этими двумя способами представления, где-то сглюкивая
    Да нет, основной способ доступа именно через те самые extra_extent, EX и номер записи 0-127. Поиск в каталоге осуществляется по номеру юзера, имени файла, 5-ти битам номера экстента и тому самому расширенному номеру S2, благо они все рядом, в пределах 15 байт. Функция поиска на входе имеет количество байт, которые нужно сравнивать. Это либо 12, для простого поиска первого попавшегося, либо 15, для поиска с нужным номером экстента (функция сравнивает номер экстента накладывая маску, которую ты хакнул, и пропускает байт S1).

    Функции последовательного чтения/записи после обмена с диском увеличивают номер записи, а если надо и номер экстента, а также расширенный номер (проверяя при этом, чтобы расширенный номер не стал больше 16, в противном случае выдаёт ошибку). Можно в отладчике посмотреть, что происходит после чтения 512кБ. ivagor, у тебя есть готовый образ диска, чтобы посмотреть?
    Последний раз редактировалось b2m; 30.07.2016 в 21:28.

  4. #183

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    b2m, если бы оно работало как ты пишешь (а я так понял ты считаешь что ошибки в BDOS нет, просто мы тут что-то неправильное ей подаем на вход), то BDOS (еще не правленная) записывала бы файлы и более 512кб, когда я (пользователь) их пытаюсь записать (а я таки пытался). Но вместо этого она обламывалась на 512кб, точно так же как и при чтении. Т.е. дело не в том как файлы записаны на диске (моим плагином или еще как-то), а в том что в BDOS ошибка в реализации, и чего там понаписано в описаниях - тоже могут быть только фантазии из серии "как оно должно бы быть". На практике, никто большие файлы не проверял (кроме нас, и еще пары человек в Инете, т.к. это было давно, в эпоху носителей-маломерок), и реально работает только адресация по номеру экстента и все. Тут или отлаживать чужие ошибки (которые могут быть и в самой логике построения этой унылой "математики" с кучей счетчиков где должен быть один), или переписать кусок - отказываться от нафиг ненужного S2 (а обойтись единым счетчиком - одним увеличенным EX как и подсказывает банальный практицизм, вместо маразма с ведением двух счетчиков да еще и перепаковывя их в разное количество байт), или (к чему я склоняюсь) - взять переписанный бдос уже без всего этого бреда (а такие у меня на примете есть, просто хотелось обойтись малой кровью - типа "поправить десяток байт и оно вдруг заработает").
    Последний раз редактировалось Error404; 30.07.2016 в 22:30.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  5. #184

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    я так понял ты считаешь что ошибки в BDOS нет
    А ты считаешь, что за 30 лет никто так и не заметил ошибку?

  6. #185

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    А ты считаешь, что за 30 лет никто так и не заметил ошибку?
    Не только заметили, но и переписали BDOS, т.к. {цитирую по памяти} "проще было переписать".
    Есть у меня архив переписанной 2.2, причем уже в коде Z80, меньшего размера (что дало автору впихнуть в сстандартный объем еще и код для поддержки дат файлов, каталога по умолчанию и т.п.), и одно из упоминавшихся в описалове - он писал что исправил ошибки в файловом доступе в стандартной 2.2, что дало увеличение максимального размера - как ФС так и файлов (до математического предела, а не до бага). Конечно, все это надо проверять, т.к. делано это опять же еще до эпохи дешевых "народных" HDD.

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

    Если память не подводит, вроде вот это оно:
    http://www.gaby.de/ftp/pub/cpm/znode...ssrc/zsdos.htm
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  7. #186

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,392
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Прикольно. Но кажется, немного быстровато...
    Там есть кнопки F1 и F2 для выключения/включения турбы (readme.txt). Музыка в турбе точно слишком быстрая, но в сложных (для движка) местах без турбы грустно.

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

    Цитата Сообщение от b2m Посмотреть сообщение
    ivagor, у тебя есть готовый образ диска, чтобы посмотреть?
    Есть, но я сегодня не дома, только завтра смогу выложить. У Errora404 тоже есть такой образ.

  8. #187

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Не только заметили, но и переписали BDOS, т.к. {цитирую по памяти} "проще было переписать".
    Ну, господа, если вы используете что-то своё, а не CP/M 2.2, то конечно, оно у вас может и не работать

    Я вот не поленился, набил программу, которая записывает 1100h записей (544Кб) последовательно, а потом читает записи с номерами 0FFFh и 1000h. Тестировал на Корвете (там CP/M байт в байт как на Башкирии, но у Башкирии один логический диск всего 384Кб). Так вот считалось именно то, что я и записывал (а именно - 16-битный номер записи).

    И в каталоге именно так, как и должно быть - номера экстентов: ... 00.1E 00.1F 01.00 01.01 ...

  9. #188

    Регистрация
    13.03.2016
    Адрес
    г. Владивосток
    Сообщений
    89
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Моть вообще CPM 3 запилить, где то помню попадались исходники. Поддержка страничной памяти, TPA 60 Килобайт. Ещё чего то не помню. )
    Альтаирка неплоха ,конечно, но охота ,чего то охота. А чего еще не понял.

  10. #189

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А теперь посмотрим на исходники, на которые дал ссылку Error404. Интересует, как они конвертируют номер записи:

    Скрытый текст

    Код:
    LDFCB:	LD	(RDWR),A	; Save Read/Write flag
    	LD	A,(IX+33)	; Get first byte random record
    	LD	D,A		; Save it in D
    	RES	7,D		; Reset MSB to get next record
    	RLA			; Shift MSB in carry
    	LD	A,(IX+34)	; Load next byte random record
    	RLA			; Shift Carry
    	PUSH	AF		; Save it
    	AND	MAXEXT		; Mask next extent
    	LD	C,A		; Save it in C
    	POP	AF		; Get byte
    	RLA			; Shift 4 times
    	RLA
    	RLA
    	RLA
    	AND	0FH		; Mask it
    	LD	B,A		; Save data module number
    	LD	A,(IX+35)	; Get next byte random record
    	LD	E,6		; Set random record to large flag
    	CP	4		; Test random record to large
    	JR	NC,LDFCB8	; Yes then error
    	RLCA			; Shift 4 times
    	RLCA
    	RLCA
    	RLCA
    	ADD	A,B		; Add byte
    	LD	B,A		; Save data module number in B
    	LD	(IX+NXTREC),D	; Set next record count
    	LD	D,(IX+FCBMOD)	; Get data module number
    	BIT	6,D		; Test error random record
    	JR	NZ,LDFCB0	; Yes then jump
    	LD	A,C		; Get new extent number
    	CP	(IX+FCBEXT)	; Compare with FCB
    	JR	NZ,LDFCB0	; Not equal then open next extent
    	LD	A,B		; Get new data module number
    	XOR	(IX+FCBMOD)	; Compare with data module number
    	AND	MAXMOD		; Mask it
    	JR	Z,LDFCB6	; Equal then return
    LDFCB0:	BIT	7,D		; Test FCB modified (write)
    [свернуть]

    Обратите внимание на выделенные красным цветом строчки. Правильно ли запомнились в стеке 4 бита расширенного номера экстента? Или может быть нужно было только 3 раза потом сдвиг делать?

  11. #190
    HardWareMan
    Гость

    По умолчанию

    Все зависит от того, сколько бит в екстенте. Если вот это верно:
    Код:
    ;   For random i/o, set the fcb for the desired record number
    ; based on the 'r0,r1,r2' bytes. These bytes in the fcb are
    ; used as follows:
    ;
    ;       fcb+35            fcb+34            fcb+33
    ;  |     'r-2'      |      'r-1'      |      'r-0'     |
    ;  |7             0 | 7             0 | 7             0|
    ;  |0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0|
    ;  |    overflow   | | extra |  extent   |   record #  |
    ;  | ______________| |_extent|__number___|_____________|
    ;                     also 's2'
    то сдвигов должно быть всего 4 а не 5. И тогда, либо первый RLA должен быть после PUSH AF (т.е. два байта поменять местами) либо один RLA после POP AF убрать. Возможно это ошибка разрабов и изначально все должно было быть по первому варианту. А оошибку сразу не выявили потому что не было столько объемов. Или я не прав?

    PS Я вот думаю, может натянуть какую досю на мой МХ2?

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

    Стоп, а сдвиг то влево а не вправо. Причем через С. Так что 5 это нормально.
    Последний раз редактировалось HardWareMan; 31.07.2016 в 12:28.

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

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

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

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

Похожие темы

  1. Дела паяльные.
    от Sayman в разделе Для начинающих
    Ответов: 24
    Последнее: 09.10.2009, 20:14
  2. валаются без дела разобранные спектрумы
    от Damein Alpha в разделе Барахолка (архив)
    Ответов: 17
    Последнее: 17.09.2009, 10:15
  3. Дела мышиные...
    от Producer в разделе Барахолка (архив)
    Ответов: 0
    Последнее: 22.01.2005, 02:59

Ваши права

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