Как написать свою программу для плеера М3

Качаем последний SDK-3
шрифт и патчер там старые - сразу удаляйте.
Купить/достать Visual Bacis 5-6-7 и поставить на комп.
Научится писать проги на бейсике, затем на MIPS-бейсике,
который на самом деле ассемблер, но не сложный, всего 36 команд.

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

Пишем свою первую прогу. Hello Wolrd
но будет писать Goodbye

'ORG 8C230000 - 8C23FFFF (64kb)
Sub s8C230000()
Rsp = Rsp - 24 '#18
save_Wd32 (Rsp + &H14), Rra  'запоминаем адрес возврата в стеке
Ra1 = 1
Call s8C0C7D00 'очичистить экран цветом 1
Ra2 = &H8C0F90C0 'шрифт
Ra0 = 176 'x  (ширина 480)
Ra1 = 101 'y
Ra3 = &H17 'цвет 1-фон 7-цвет
save_Wd32 (Rsp + &H10), &H8C18A148 '// Goodbye
Call s8C020344 'печать строки
Rra = load_Wd32(Rsp + &H14) 'восстановить адрес
Rsp = Rsp + 24
End Sub

на языке макросов: (компилятор надо дописывать)
save_Var(Rra)
Cls(1): Call PrintString(*adrStr, x, y, vColor, vFont)
restore_Var(Rra)

на эмуляторе проверяем работу.


компилируем в код моим компилятором
00000000:  00 00 00 00 E8 FF BD 27 ¦ 14 00 BF AF 01 00 05 34
00000010:  40 1F 03 0F 00 00 00 00 ¦ 0F 8C 06 3C C0 90 C6 34
00000020:  B0 00 04 34 65 00 05 34 ¦ 17 00 07 34 18 8C 01 3C
00000030:  48 A1 21 34 10 00 A1 AF ¦ D1 80 00 0F 00 00 00 00
00000040:  14 00 BF 8F 18 00 BD 27 ¦ 08 00 E0 03 00 00 00 00
тут же вставляем в шрифт d:\m3\jiant_r4.bin

на всякий случай дизасемблируем этот код
8C000000                        |
8C000004 addiu $sp $sp #FFE8    | $sp = $sp + #FFFFFFE8
8C000008 sw $sp $ra #0014       | save_wd32($sp + #0014),$ra
8C00000C ori $a1 $00 #0001      | $a1 = #00000001
8C000010 jal #8C0C7D00          | CALL #8C0C7D00 + NextInstr
8C000014                        | 
8C000018 lui $a2 #8C0F          | $a2 = #8C0F.0000
8C00001C ori $a2 $a2 #90C0      | $a2 = bin32($a2,|,#000090C0)
8C000020 ori $a0 $00 #00B0      | $a0 = #000000B0
8C000024 ori $a1 $00 #0065      | $a1 = #00000065
8C000028 ori $a3 $00 #0017      | $a3 = #00000017
8C00002C lui $at #8C18          | $at = #8C18.0000
8C000030 ori $at $at #A148      | $at = bin32($at,|,#0000A148)
8C000034 sw $sp $at #0010       | save_wd32($sp + #0010),$at
8C000038 jal #8C020344          | CALL #8C020344 + NextInstr
8C00003C                        | 
8C000040 lw $sp $ra #0014       | $ra = load_wd32($sp + #0014)
8C000044 addiu $sp $sp #0018    | $sp = $sp + #00000018
8C000048 jr $ra                 | JUMP (return) + NextInstr

смотрим что всё совпадает.
(можно на интерпретаторе еще погонять на ошибки)
заливаем шрифт jiant в плеер, и запускаем каледарь.
если всё правильно, то не зависнет и будет работать.
что не ясно - вопросы в гостевую. отвечу всем.

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


*******
вот идея проги для плеера для чтения текстов
текст будет с адреса 8С250000 (в jiant)
сама прога с 230000 и все другие тоже,
потом меню будет с выбором.

если пусто то ставим указатель на текст.
иначе берем продвинутый раньше указатель
чистим экран
цикл по строкам
 копируем строку 40 симв в буфер+0
 печатаем строку х,у (call 8C020344)
 у=у+21
конец цикла
указатель=указатель+сколько символов вывели
возврат

следующий приход в процедуру после нажатия любой кнопки,
код кнопки можно прочитать, и листать туда сюда, в начало итд
но пока просто страница дальше, а Esc(квадр кнопка) - выход

*****
думаю что строки типа
Rsp = Rsp - 24
save_Wd32 (Rsp + &H14), Rra
...
Rra = load_Wd32(Rsp + &H14)
Rsp = Rsp + 24

надо вставлять компилятором автоматически или проверять
и выдавать ошибку что забыли вставить
это к логике проги отношения не имеет, просто чистая формальность,
чтобы вручную переменные восстановить при выходе.
и писать макросами для скорости и понятности, но как регистры
контролировать? большой вопрос. пока не знаю как..

Компилятор будет совершенствоваться чтобы было проще писать
проги, чем больше народа будет писать для плеера тем быстрее
появятся калькулятор, записная книжка, новые игры итд.


Программы будут работать только из шрифта jiant (пока)
и только при заливке пропатченой прошивки