Windows-M3,FAR-M3+,OS-M3+
Скачать jiant(3мая)(финальная версия)
Программы для плеера М3 
dvr.rar
dvr2.rar
dvr3.rar
dvr4.rar
dvr5.rar
(по дате смотрите самые новые)

новый загрузчик boot.em3(Win-M3), может менять картинки-менюшки и фон,
менять надписи на свои на англ и рус языке на тек. сеанс.
автозагрузчик тем(картинок и звуков)
прога делать значки *.spr

проги в папке C:\DVR\ на внутреней флешке
Таймер.em3
Календарь.em3
Тесты_ОС-М3.em3
Переключить_SECAM.em3
Калькулятор.em3
Словарь-переводчик.em3 + EngRus.dic
Словарь для переводчика
Телеф_справочник.em3 + data.txt
Mp3-Случайно_с_SD.em3
Mp3-Случайно_с_вн.em3
Флеш_Диск-инфо.em3
игра по *.pls
игра по *.muz
система меню *.men
просмотр *.spr
просмотр *.spf (SP font)
игры Тетрис и Змейка
Memory.em3
======================================================

Все что я хотел, я сделал и показал что это возможно,
остальное напишет кто-нибудь когда-нибудь..
средства для разработки программ для плеера есть,
Все кто захочет писать проги пишите мне на мыло (есть в SDK)
если что-то непонятно то объясню и научу.

Все остальные вопросы обсуждаются на форуме на новом сайте.

Для всех кто хочет помочь и научиться то на сегодня надо:
-значки в формате .spr , делать прогой makeSpr.rar или свою прогу писать.
-шрифты SP разных размеров и цветов (делаются прогой CutImageV1.1.3.exe из .bmp) 
-конвертор из *.bmp -> *.spr с учетом цветовой схемы и экрана М3.
-конверторы .jpg->.bmp .gif->.bmp и другие форматы.
-алгоритм вывода на графич. экран (второй экран)
-написать процедуру "запись файла" (есть чтение/запись сектора/кластера,
и чтение файла (только до 700к), надо искать свободные кластеры, писать,
перепроверять что записано верно, писать в таблицу кластеров FAT1 FAT2,
и в каталог DOS+LFN по алгоритму, который нужно выяснить в доках.
-написать процедуру "копировать файл" - это чтение и запись файла.
-програму для увеличения/уменьшения/обрезания до 320х240 JPG

Для тех кто будет писать проги на других языках и средствах разработки:
-проги для плеера должны иметь расширение .em3 (explay M3)
-загружаются и исполняются с адреса 8C240000 max 700k
но можно самокопировать после запуска в любое место и там исполнять.
-проги с расширением .cm3 (.com) загружаются с 8C23C000 max 16k
имеют много ограничений и особеностей, это обработчики расширений файлов,
драйвера, доп. кодеки и системные команды.
-----------------
Качать лучше все версии SDK, но пользоваться последним.
sdkM3.zip,sdk3M3.zip,sdk4M3.zip,sdk5M3.zip,SDK-M3.ZIP(11 мая)
-----------------
старые ссылки удалять пока не буду вдруг пригодятся..
но смотрите по датам что где, старые проги на новой ОС-М3 работать не будут.

=======Инфа для разработчиков и хакеров==============================
новые системные переменные 
8C218D20(b)-ширина тек символа
8C218D21(b)-тек пункт тек меню типа1(окно)
8C218D22(w)-х1
8C218D24(w)-у1
8C218D26(w)-х2
8C218D28(w)-у2
8C218D30-цвет меню1
8C218D34-цвет пункта меню1
8C218D38-размер паузы (1 сек)  9999=1сек     99=86  99=99   11626=2D6A
8C218D3C-указатель на память.
--$v0$v1$a0$a1$a2$a3$t0$t1----8регистров
8C218D40-Rv0
8C218D44-Rv1
8C218D48-Ra0
8C218D4C-Ra1
8C218D50-Ra2
8C218D54-Ra3
8C218D58-Rt0 (st10)
8C218D5C-Rt1 (st14)
8C218D60 номер регистра/ 1-байт
8C218D64 /значение
8C218D68 адрес ячейки/
8C218D6C /значениe
8C218D70 адрес вызова (call at)
8C218D74 адрес вызова при ожидании нажатия кнопок(для анимации)

8C218D78 указатель меню тек уровня 0-1024  или 9999 для ..
8C218D7C кластер каталога возврата
8C218D80 указатель отладчика
8C218D84 адрес возврата из жучка
8C218D88 команда1 под жучком
8C218D8С команда2 под жучком

8C218D90(b) 0 сектор при чтении 512 (byte)  0 нет в слоте
8C218D91(b) sec/claster 32  16k чтении 512  0 нет в слоте
8C218D94(b) 0 сектор при чтении SD  0 нет карты в слоте
8C218D95(b) sec/claster 32/64  16k/32k  при чтении SD 0 нет карты в слоте

8C218D98(b) текущий привод 0/1 если карты нет то всегда 0
8C218D99(b) флаг первого вхождения (инициализвция один раз) 16/0
*остальное можно вычислить и см. в таблице приводов
8C218D9A(b) значков по горизонтали 8
8C218D9B(b) значков по вертикали 5
8C218D9C(b) тек значок по гориз
8C218D9D(b) тек значок по верт
8C218D9E(b) - флаг одноразового блока boot.em3
8C218D9F(b)-свободно
8C218DA0 - адрес графического экрана
8C218DA4 - перехват рисования спрайта
8C218DA8 - перехват рисования спрайта
16 байт свободно
8C218DB0(160-255)ширины символов
8C218E10-новый заголовок
------------------------------

8C218D10+13F740=8C358450 jiant file
шрифт узкий 0-255 и рус. широкий 160-255
8C222E00-конец шрифта
сюда можно пихать разные данные(сист.звуки тут)
до 22603E занято звуками, свободно 4034б
8C226F00(256b адреса и длины системных звуков по 8 байт 32 звука

8C227000-буфер 512 для чтения/записи сектора
8C227200-таблица вн.флеш диска512   первый сектор
8C227300-таблица флеш карты
8C227400-текущий путь. (сюда писать нельзя - служебный chdir)
8C227500-путь для смены каталога.(chdir стирает)
8C227600-буфер для проверки файла и загрузки (разделяет на каталог и файл)
8C227700-буфер путь run_Prog
8C227800-буфер старый тек путь файла до драйвера run_Prog
8C227900-буфер для даты времени инфо файл 256 16х4
свободно для данных (можно здесь сделать настройки в RSV)

8C228000-?загруженные проги (мелкие тесты 32к)
8C230000-начало ОС-3 ини+патчер+переход в 300+
8C23C000-драйвера расширений
8C240000-большой буфер 780к для текстов  здесь можно хранить картинки звуки
... данные или ресурсы большой проги.
8C300000-new OS-M3 до 340   (262к) + тек.картинки, звуки (можно менять)
8C310000-64к (putMenuDir.em3)
 свободно для внешних модулей(взамен стандартных)

AC320000 резерв буфер для временного чтения кластера16к-32к
AC328000 буфер для загрузки файлов в ОЗУ 16к-32к
AC330000 (16к-32к) буфер тек кластера 32 секторов флешки каталог ДОС 32х512
8C338000 (16к-32к) буфер тек каталога 32х512 ссылка

8C340000-data0 - большой динамич буфер 65к (для сохр экрана и др) 

8C350000-data1  256 маленький динамический буфер(256) для строк (форматирование)
8C350100+строки и таблицы до конца
8C358000 процедуры hook и жучок
8C358450-конец jiant

H8C218D10 - большой шрифт в озу до 
H8C218E10 - новый узкий шрифт
186-ESC 187-Mode 188-Vol 189-kursor 190-enter 191-стрелка мыши

AC868800-AC88DFFF - гр экран  153600 #25800    320*240*2б  64к цветов
AC7A4800-AC7B2900 - текстовый экран 480х240 16 цветов  ->480х234->320x240


карта памяти прошивки в озу плеера
8C00.0000 
boot+data
8C00.2999
....? mem
8C01.0000
main_kod
8C0F.9010

8C0F.90C0 шрифт 4  16х32
8C0F.D0D0 шрифт 4 симв 16х32
8C10.10E0 шрифт 4 12x26   не используется похоже
8C10.37F0 шрифт 4 5шт значки перемотки 16x16

8C10.3940 шрифт 16x20 для надписей меню итд.     16 цветные
8C10.8950 шрифт 16x20 симв для надписей меню итд. 16 цветные

8C10ED60
??? 
8C110F30
Jpg
8C1408FC
wav          22486
8C1460D2
data
8C193970 -end

D0008000 -stek
---------------------------------------
B0001015 = порт вывода отладочных надписей

-------для разработчиков, адреса новых процедур ОС-М3---------
waitKey() AdrMem=8C300010 Size= 104 
tColor8(vColor) AdrMem=8C300080 Size= 36 
tGetAdrEkr(x, y) AdrMem=8C3000B0 Size= 52 
tOgrGr() AdrMem=8C3000F0 Size= 160 
tCls(vColor) AdrMem=8C3001A0 Size= 72 
tDrawPixel(x, y, vColor) AdrMem=8C3001F0 Size= 136 
drawLineX(x1, y1, x2, y2, vColor) AdrMem=8C300280 Size= 184 
drawLineY(x1, y1, x2, y2, vColor) AdrMem=8C300340 Size= 164 
drawLineYw2(x1, y1, x2, y2, vColor) AdrMem=8C3003F0 Size= 108 
drawRect(x1, y1, x2, y2, vColor) AdrMem=8C300460 Size= 128 
drawRectFill(x1, y1, x2, y2, vColor) AdrMem=8C3004F0 Size= 436 
saveRect(x1, y1, x2, y2, adrBuf As Long) AdrMem=8C3006B0 Size= 448 
loadRect(x1, y1, x2, y2, adrBuf As Long) AdrMem=8C300880 Size= 464 
drawSpr(x1, y1, adrSpr As Long) AdrMem=8C300A60 Size= 276 
drawSprOkno(x1, y1, adrSpr As Long) AdrMem=8C300B80 Size= 348 
putChar16w(x1, y1, c, vFont As Long, vColor8) AdrMem=8C300CE0 Size= 404 
putChar32w(x1, y1, c, vFont, vColor4) AdrMem=8C300E80 Size= 300 
putString(x1, y1, adrStr As Long, mode_x3, vColor) AdrMem=8C300FB0 Size= 556 
save_t_to_Stek() AdrMem=8C3011E0 Size= 48 
load_t_from_Stek() AdrMem=8C301220 Size= 48 
save_r_to_Stek() AdrMem=8C301260 Size= 128 
load_r_from_Stek() AdrMem=8C3012F0 Size= 128 
save_ra_s_to_Stek() AdrMem=8C301380 Size= 40 
load_ra_s_from_Stek() AdrMem=8C3013B0 Size= 40 
getNumRazr(dd As Long, nRazr) AdrMem=8C3013E0 Size= 24 
putNumRazr(dd As Long, nRazr, vRazr) AdrMem=8C301400 Size= 44 
inputDec8(dd As Long, x, y) AdrMem=8C301430 Size= 620 
inputHex8(dd As Long, x, y) AdrMem=8C3016A0 Size= 532 
moveKursor(x, y, adrSpr As Long) AdrMem=8C3018C0 Size= 336 
tCopyMem(adrBuf As Long, adrIst As Long, size As Long) AdrMem=8C301A20 Size= 124 
tCopyStr(adrBuf As Long, adrIst As Long, maxSize As Long) AdrMem=8C301AA0 Size= 52 
testRect(x1, y1, x2, y2, x, y) AdrMem=8C301AE0 Size= 64 
tSetKursor(x, y) AdrMem=8C301B30 Size= 24 
tGetKursor() AdrMem=8C301B50 Size= 24 
tPause(n As Long) AdrMem=8C301B70 Size= 48 
tGetPixel(x, y) AdrMem=8C301BB0 Size= 108 
tScroll_Up() AdrMem=8C301C20 Size= 52 
tScroll_Dn() AdrMem=8C301C60 Size= 60 
fonUzor(vColor) AdrMem=8C301CA0 Size= 140 
tVal(adrStr As Long) AdrMem=8C301D30 Size= 72 
tValHex(adrStr As Long) AdrMem=8C301D80 Size= 104 
inputHex2(dd, x, y) AdrMem=8C301DF0 Size= 516 
inputText1(dd, x, y) AdrMem=8C302000 Size= 468 
char_to_Spr(c, vFont As Long, vColor8, adrSpr As Long) AdrMem=8C3021E0 Size= 168 
tCmpMem(adr1 As Long, adr2 As Long, vLen) AdrMem=8C302290 Size= 140 
tCmpStr(adr1 As Long, adr2 As Long, maxLen) AdrMem=8C302320 Size= 60 
tLenStr(adrStr As Long) AdrMem=8C302360 Size= 48 
tTrimR(adrStr As Long, maxLen) AdrMem=8C3023A0 Size= 92 
tLCase(adrStr As Long) AdrMem=8C302400 Size= 76 
tFindStrByte(adrStr As Long, vByte) AdrMem=8C302450 Size= 68 
tFindStrByteObr(adrStr As Long, vByte) AdrMem=8C3024A0 Size= 96 
playSignal(vNum) AdrMem=8C302510 Size= 76 
find_Str(adrStr As Long, adrMem As Long, sizeStr, sizeMem) AdrMem=8C302560 Size= 132 
tClsMem(vAdr As Long, vSize) AdrMem=8C3025F0 Size= 88 
stopError(adrMsg As Long, vErr) AdrMem=8C302650 Size= 296 
stopError2(adrMsg As Long, vErr, adrStr As Long) AdrMem=8C302780 Size= 324 
view_mem_Hex(vAdr As Long) AdrMem=8C3028D0 Size= 404 
edit_mem_Hex(vAdr) AdrMem=8C302A70 Size= 548 
view_mem_Text(vAdr As Long) AdrMem=8C302CA0 Size= 392 
edit_mem_Text(vAdr) AdrMem=8C302E30 Size= 492 
dump_Mem() AdrMem=8C303020 Size= 236 
putMenu(x1, y1, x2, y2, adrMenu As Long, mode_x3) AdrMem=8C303110 Size= 560 
save_Reg() AdrMem=8C303350 Size= 48 
load_Reg() AdrMem=8C303390 Size= 48 
view_Reg() AdrMem=8C3033D0 Size= 188 
edit_Reg() AdrMem=8C303490 Size= 220 
test_Func() AdrMem=8C303570 Size= 204 
tabl_Atr() AdrMem=8C303640 Size= 328 
view_text32x12(vAdr As Long) AdrMem=8C303790 Size= 496 
cGetLFN(adrEl32 As Long) AdrMem=8C303990 Size= 160 
get_ListDir(adrKlas As Long, adrBuf As Long) AdrMem=8C303A40 Size= 572 
read_Sector(numDisk, sec1, nSec, adrBuf) AdrMem=8C303C80 Size= 92 
init_Flash() AdrMem=8C303CE0 Size= 1020 
chDir(adrPath As Long) AdrMem=8C3040E0 Size= 944 
existFile(adrPath As Long) AdrMem=8C3044A0 Size= 244 
load_File_kl(vKlaster1, vSize, adrBuf As Long, numDisk) AdrMem=8C3045A0 Size= 336 
load_File(adrPath As Long, maxSize, adrBuf As Long) AdrMem=8C304700 Size= 188 

---разобраные процедуры прошивки и др.инфа-----------

+8C020344 -print string  st(10)-adrStr,a0-x,a1-y,a2-adrFont,a3-color
8C20EFC тоже но в рамке
+8C0206C0 -print string  st(10)-adrStr,a0-x,a1-y,a2-adrFont,a3-color 
st(18)=колич симв   st(14)=перв символ в строке аналог mid$(s,k1,k2)
                                          JFIF-?
8C05A44C -view jpg а0=адрес а1=размер а2=#434400 а3=#140(320) (s10)=#F0(240)
+8C0284EC - выбор надписи {v0=a0*8+#8C146AA4+(4*язык0/1)}
-+8C09C104 -Play_WAV a0-adr a1-size a2=1?

+8C01A208    печать значков режима повтора (#8C41815D) 0/1/*
-8C01ABAC  ?ходилка по мп3
+8C01F06C    печать значков сверху карта,питание,сеть 
?8C01AE34   ?показывает инфу о мп3/wma файле, теги
+8C026C8C    вывод надписей меню аксесори/мемори/календарь 
+8C014D10 ----- вывод надписи Ок/селект
+8C0AC474 -форматирование строк Си а1-адр строки формата а2-значение а0-приемник
+8C0AC538 -форматирование строк Си + пишет в буфер или порт а0-адрес надписи 
 a1-значение копирует в rs232 и буфер. пишет в порт по флагу из порта возможно 
 в rs232 для отладки и в буфер
(#8C195470) буфер приемник форматированных строк от s8C0AC538
(8C192A28) адрес обработчика отладки если 0 то пишет в порт 1025 по флагу 1026

(#8C41815D) режимы повторов. 0- 1- 2-
b(#8C18BEB3) 0-аксесори 3-мемори 4-календарь
b(#8C18A098) -питание 0-полное 1 среднее 2 низкое
w(#8C19399C) -вставлена флеш карта 0-нет
b(#8C18A096) - питание от сети
w(#8C18B078) - высота видео 244/288(пал)
b(#8C193C32) флаг 0/1 0-не читает шрифт с флеш

(#8C193B18) перекл для вывода написей внизу  0/1 фото/видео нет/есть
написано видео режим?
(#8C18A4C8)  видео 0-нет (1 2 #10 #40)выводит  (в области прошивки) FF FF FF FF
(#8C18A3A4) фото/видео 1/#10
(#8C18A4D0) фото=0/1   вместо LOGO надо сделать HIDE и убирать надписи и время
(8C18A4C8) не (#8C18A4D0)
байт(8C41.8120)=1 #8C18A4D0=0 (8C18A4C8)=2/16

+8C015754- вывод нижнего меню и сверху режима VIDEO PHOTO
+8C017764- вывод нижнего меню и сверху режима SETUP
+8C028554- вывод нижнего меню и сверху режима RECORD
+8C01B7C0 вывод нижнего меню и сверху режима AUDIO
+8C0218B0 ----- //вывод картинок: меню сетап аксесори
8C023F9C ----- что то печатает   большой и сложный
+8C028B44  запись или меню ходилка
+8C0EDE84  определяет длину строки? 0-на конце и еще что то 4байта
8C01AE34 ----- //вывод инфы мп3 файлов?
+8C029864  печать надписи по номеру выравненных вправо ширина 16 480
+8C028248 -----   ходилка по меню аксесори? большой300к
+8C027E38 ----- что то про каледарь   200к
+8C027A10 печать календаря? да!! а0-год а1-месяц а2-число (глюк с $fp) и криво
+8C026F50 ----- показывает сколько свободной памяти на флешке  
+8C02646C ----- что то печатает какой то квадрат зеленый фиг знает.
+8C02A8B8 печать кит меню из 5 пунктов слева и есть FM 1/20
+8C0C7D88 рисует линию
(8C196244) вертикальные не рисует пока тут 0, а сюда из порта читаетh(#B00070D6)

+8C0C7F5C рисует прямоугольник и закрашивает
+8C0C84AC рисует прямоугольник и закрашивает
+8С020A94 - обработчик таймера! выводит значек уровень питания и время в углу
+8C0AA680 -чтение кнопок
+8C0C7D00 -чистка экрана
+8C028248 - меню аксесори, игры память календарь, всё работает!

c:02905C ----- запись WAV и еще чего то
+028248 -----   ходилка по меню аксесори?
+027E38 ----- что то про каледарь ходилка выбиралка?
+026F50 ----- показывает сколько свобной памяти на флешке?
C:01ABAC ----- ходилка по мп3?
c:01B534 ----- игралка wav?
c:01C364 ----- вывод служебной инфы о системе?
c:020240 -----загрузка большого шрифта из флеш в озу по секторам?
C:035870 загрузка из флеш в озу разного
C:0176A4 -----создает папки на флешке
C:016B0C -----играет асф и показывает жпг?

+8C0A9F9C - разрешает прерывания с кнопок
+8C0145F8 'считать нажата кнопка по адр а0
+8C0AA680 'ждать нажать кнопки и вернуть код в (v0)
+8C0145F8 'нажатие по адр а0   15-?/3-влево 1-вверх 2-вниз 4-вправо 
5-enter 6-esc? 7

(8C41812C)?=0/1
(8C41812E)
8C0BBD90-записывает 320х240 в порты а0 а1 .для вывода?
(8C192BBC)=320  (8C192BC0)=240    Sub s8C0B6304() считывает
8C0C7D00 чистка экрана 0000, (8C196244)=240  (8C196004)=480
=======================
s8C0A10F4 - выводит инфу о флеш диске - занято/свободно итд
+8C0EC820 -*a0=string(a2,chr(a1))
c:018F28 ----- форматирование флеш
8C0A9FBC ----- адрес по строке (сравнивает)v0=8C4B3ED0+48*ф-я UI_KEY/APP_SEM