Page 2 of 6

Re: EvoTools (ROM)

PostPosted: 08 Oct 2010, 15:26
by deathsoft
lvd wrote:оси на спецтруме брались писать многие. Большинство устраивали слифф.

Поэтому и надо не оси писать, а сделать набор функций работы с файлами.

Re: EvoTools (ROM)

PostPosted: 08 Oct 2010, 15:28
by deathsoft
DimkaM wrote:У каждой проги, например по адресу #C000, должно быть выделено место(допустим 64байта) под нужды ОСи. куда будут сохранятся регистры(когда предаётся управление ОС), передаватся операнды командной строки(при вызове проги), а также передаватся путь(или хотябы номер первого кластера) откуда её запустили.

Всё это по мотивам МС-ДОС.

Вот это тот самый захардкоженый ахтунг которого и надо избежать, это ничем не отличается от системных переменных трдоса. Если адрес Ц000 занят - получаем сосание, собствено что и было при адаптации касетных программ к трдосу.

Re: EvoTools (ROM)

PostPosted: 08 Oct 2010, 15:28
by deathsoft
TS-Labs wrote:Еще маленький hint на тему coding style: писать код, который работает из ПЗУ, т.е. ПОЛНОСТЬЮ исключить такой маразм, как self-modifying code.

Это само собой.

Re: EvoTools (ROM)

PostPosted: 08 Oct 2010, 15:29
by DimkaM
Нужно раскрутить Савелия на драйвер НЕМОИДЕ, Z-SD он уже выкладывал, он у меня есть.

Re: EvoTools (ROM)

PostPosted: 08 Oct 2010, 15:29
by deathsoft
Более того функции работы с файлами не должны использовать никакой памяти кроме тех областей что передано через регистры, ну и кроме стека.

Re: EvoTools (ROM)

PostPosted: 08 Oct 2010, 15:40
by DimkaM
deathsoft wrote:Вот это тот самый захардкоженый ахтунг которого и надо избежать, это ничем не отличается от системных переменных трдоса. Если адрес Ц000 занят - получаем сосание, собствено что и было при адаптации касетных программ к трдосу.

Дык страниц памяти то много(кстати менеджер памяти тоже не помешает), щёлкнул на свободную и суйся в биос.

Re: EvoTools (ROM)

PostPosted: 08 Oct 2010, 15:48
by breeze
deathsoft wrote:Приведу примерчик на Ц:


переведу примерчик на А:

Code: Select all
         ld hl,struct
         ld de,fileName
         call openFile      ;ROM

         ld hl,struct
         ld de,buf
         ld bc,100
         call readFile      ;ROM

         ld hl,struct
         call closeFile      ;ROM
   
    ret

fileName db "myfile.bin",0
buf      ds 100,0

struct   db ???


теперь самое интересное, что из себя должен представлять кусок struct ? какие данные тут должны быть? как я понимаю, здесь же должно быть указано и область в памяти для временного чтения, того же каталога и место для дискрипотора файла и собственно текущая позиция в этом файле (если мы частями читаем).

Re: EvoTools (ROM)

PostPosted: 08 Oct 2010, 15:49
by DimkaM
breeze wrote:#0003 - Инициализация устройтва (возможно) при первоночальном обращении к устройству его необходимо инициализировать (например закрыть лоток у cd-rom)

Давайте начнем с SD карты, с ней проще(монтировать всего один раздел).
Где будем хранить описание раздела? :
Количество секторов в кластере.
Тип файловой системы(или будем ориентироваться только на ФАТ32?).
Первый сектор с данными.
Байтов в секторе(или будем ориентироваться только на 512байт?).
Адрес первого сектора с таблицей кластеров.

Re: EvoTools (ROM)

PostPosted: 08 Oct 2010, 15:52
by deathsoft
breeze wrote:struct ? какие данные тут должны быть?

Те данные которые использует процедура чтения, например текущее смещение в файле, номер файла на диске (начальный кластер) и т.п. (посмотри структуру FILE на Ц). Для того чтобы понять что в этой структуре еще нужно, надо сомтреть реализацию драйвера ФАТа, какие внутренние переменные он использует, например указатель на внутренний буфер для разбора фат цепочки и т.п.

Re: EvoTools (ROM)

PostPosted: 08 Oct 2010, 15:52
by breeze
DimkaM wrote:Давайте начнем с SD карты, с ней проще(монтировать всего один раздел).


это без разницы, начинать можно хоть с TR-DOS :)

DimkaM wrote:Где будем хранить описание раздела? :


ты внимательно читаешь ? deathsoft же сказал, что где куда и зачем, все эти данные мы передаём в описателе (struct)