![]() |
|
|
|
|
|
#1 |
|
Veteran
Join Date: 1st December 2010
Location: Архангельск
Posts: 1,597
Thanks: 512
Thanked 1,173 Times in 556 Posts
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
А почему бы не вынести сам коммандер на флешку или SD. Тогда не придется перепрошивать ПЗУ, при обновлении. А в ПЗУ будет лишь загрузчик.
Еще бы я предложил сделать в этом ПЗУ несколько стандартных точек входа. Типа загрузка файла в память, загрузка содержимого каталога в память. Тогда бы можно было менять аппаратную часть при неизменном коммандере. |
|
|
|
| The Following User Says Thank You to vinxru For This Useful Post: | perestoronin (1st March 2013) |
|
|
#2 |
|
Guru
Join Date: 30th May 2007
Location: г. Лянтор, Сургутского р-на, ХМАО
Posts: 2,175
Thanks: 452
Thanked 468 Times in 367 Posts
![]() ![]() ![]() ![]() ![]() ![]() |
Я тоже за. Какие подпрограммы будем садить в ПЗУ?
__________________
http://nick-name.ru/forum/Fifan.gif Сайт про ПК "Специалист" и его клоны http://www.spetsialist-mx.ru/Web site about computer Spetsialist and its clones http://www.spetsialist-mx.ru/ (yet only in Russian)
|
|
|
|
|
|
#3 |
|
Veteran
Join Date: 1st December 2010
Location: Архангельск
Posts: 1,597
Thanks: 512
Thanked 1,173 Times in 556 Posts
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
D800 - Загрузка коммандера и передача ему управления. В A возвращается код ошибки.
D803 - Загрузка файла указанного в HL и передача ему управления. В A возвращается код ошибки. D806 - Загрузка файла указанного в HL в память по адресу DE. Если BC не равен нулю, то размер файла должен быть равен BC. В A возвращается код ошибки. D809 - Получение первого из списка файлов папки HL в память по адресу DE. (Формат надо придумать.) В A возвращается код ошибки. D80С - Получение следующих файлов в память по адресу DE. (Формат надо придумать.) В A возвращается код ошибки. D80F - Получение свободного места на флешка. На входе A - буква диска. В A возвращается код ошибки. Потом еще будут нужны функции сохранения файла, переименования файла, удаления файла, создания папки. И совсем круто было бы продумать работу с файлами. open, read, write, seek, close. Но это сложно и не нужно наверное пока. Но предусмотреть под них резерв стоит. ---------- Post added at 20:33 ---------- Previous post was at 20:30 ---------- Еще можно подумать, что бы стандартные функции BIOS загрузки/сохранения на магнитофон передавали управление этому BIOS-у. Что бы Бейсик сохранял данные на флешку. Last edited by vinxru; 1st March 2013 at 22:36. |
|
|
|
|
|
#4 |
|
Veteran
Join Date: 26th February 2011
Location: Павлодар
Posts: 1,182
Thanks: 176
Thanked 436 Times in 269 Posts
![]() ![]() ![]() ![]() ![]() |
Лично я считаю, что должно быть 3 уровня подпрограмм. Как и в любом другом месте.
Уровень 1, самый низкий. Здесь работа с железом: клавиатура, экран, низкоуровневый сервис, работа с картой на уровне считать/писать сектор. По сути - это таблица вызовов BIOS (в нашей аналогии - загрузчика ПСПЗУ). Уровень 2, средний. Здесь работа с логическими единицами ресурсов, как то работа с памятью, сюда же надо абстрагировать работу с FS на всех дисках. Уровень 3, верхний. Здесь, собственно, прикладной сервис. По сути - это сервис DOS. По этому плану я сейчас пилю поддержку карты для Специалиста МХ2, и сейчас я на стадии поддержки записи на SD. Как только это закончу, я тут же напишу утилиту загрузки файлов с кассеты и буду цифровать все кассеты сразу на карту (возможно получится в автоматическом режиме даже). |
|
|
|
|
|
#5 |
|
Veteran
Join Date: 1st December 2010
Location: Архангельск
Posts: 1,597
Thanks: 512
Thanked 1,173 Times in 556 Posts
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Я предлагаю зашить в ПЗУ работу с файловой системой. Ну и функции на уровне секторов то же будут, но особо и не нужна.
У тебя на флешке используется собственная файловая система. Простая, понятная. У кого то будет FAT (большой и сложный), у кого то TRDOS, у кого то CP/M. А может кто то напишет сетевой драйвер, тогда работа с секторами будет невозможна. Типа меня. Если ФС разместить в BIOS, то любая программа сможет использовать максимально ОЗУ. В ОЗУ не будет ядра операционной системы. И при этом загружать файлы в память. ---------- Post added at 21:05 ---------- Previous post was at 21:05 ---------- Клавиатура, экран поддерживаются оригинальным биосом. ---------- Post added at 21:09 ---------- Previous post was at 21:05 ---------- Что бы сохранить гибкость, нужно предусмотреть загрузку расширений файловых систем. Сразу после запуска BIOS будет поддерживать только флешку. Но можно загрузить драйвер любого устройства и он будет доступен через вызовы BIOS. ---------- Post added at 21:09 ---------- Previous post was at 21:09 ---------- То есть предусмотреть функцию ПОДКЛЮЧИТЬ ДИСК. UPD: Еще изменение атрибутов. Last edited by vinxru; 3rd March 2013 at 15:58. |
|
|
|
|
|
#6 |
|
Veteran
Join Date: 26th February 2011
Location: Павлодар
Posts: 1,182
Thanks: 176
Thanked 436 Times in 269 Posts
![]() ![]() ![]() ![]() ![]() |
|
|
|
|
|
|
#7 | |
|
Moderator
Join Date: 14th August 2006
Location: Владимир
Posts: 2,458
Thanks: 203
Thanked 612 Times in 469 Posts
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Quote:
__________________
Лучше сделать и жалеть, чем не сделать и жалеть. |
|
|
|
|
|
|
#8 | |
|
Guru
Join Date: 30th May 2007
Location: г. Лянтор, Сургутского р-на, ХМАО
Posts: 2,175
Thanks: 452
Thanked 468 Times in 367 Posts
![]() ![]() ![]() ![]() ![]() ![]() |
Вы пока выясняете я сделал работу с SD картой в браузере. Почему-то не работает запуск загруженных файлов. Идея такая. Сначала я инициализирую SD карту и контроллер. Потом считываю в каталог все RKS файлы (пока их два). Вывожу каталог. Потом выбираю файл для запуска. Теперь нужно представить формат RKS файла:
1. Два байта - адрес запуска он же и начальный; 2. Два байта - конечный адрес; 3. Тело файла размером (конечный адрес-начальный адрес); 4. Контрольная сумма. По моей специфике я сначала любой найденный файл гружу с нулевого адреса ОЗУ. Потом выясняю по начальному адресу куда нужно переместить блок кода. Считывание блока кода с SD карты работает, а вот потом программа отказывается перемещаться куда ей надо и запускаться (подпрограмма CalcStartEnd считывает последовательно четыре байта и размещает их соответственно в E,D,C и B; в Size находится размер блока): Quote:
__________________
http://nick-name.ru/forum/Fifan.gif Сайт про ПК "Специалист" и его клоны http://www.spetsialist-mx.ru/Web site about computer Spetsialist and its clones http://www.spetsialist-mx.ru/ (yet only in Russian)
|
|
|
|
|
|
|
#9 |
|
Guru
Join Date: 24th January 2008
Location: Уфа
Posts: 2,529
Thanks: 174
Thanked 677 Times in 482 Posts
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
dec bc (т.е. DCX B) не устанавливает флагов. Видимо флаг Z уже после CalcStartEnd установлен был.
---------- Post added at 15:21 ---------- Previous post was at 15:10 ---------- Кстати, если области копирования будут пересекаться (а они наверняка будут пересекаться), то нужно учитывать, куда производится копирование: вверх или вниз. Если вниз, то надо с конца копировать, а если вверх, то сначала, как у тебя. Т.о. у тебя будут работать только те программы, которые работают с нуля, или с адреса, превышающего размер программы.
__________________
http://bashkiria-2m.narod.ru/ |
|
|
|
|
|
#10 |
|
Veteran
Join Date: 26th February 2011
Location: Павлодар
Posts: 1,182
Thanks: 176
Thanked 436 Times in 269 Posts
![]() ![]() ![]() ![]() ![]() |
|
|
|
|
![]() |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | |
| Display Modes | |
|
|