diff --git a/programs/develop/tinypy/tinypy/Makefile b/programs/develop/tinypy/tinypy/Makefile index 321773fd5c..3c7973cfe0 100644 --- a/programs/develop/tinypy/tinypy/Makefile +++ b/programs/develop/tinypy/tinypy/Makefile @@ -1,7 +1,7 @@ export MENUETDEV=../../libraries/menuetlibc OUTFILE = tpmain OBJS = tpmain.o kolibri_init.o kolibri_fs.o kolibri_gui.o kolibri_dbg.o -CFLAGS = -I. +CFLAGS = -I. -mpreferred-stack-boundary=2 -mincoming-stack-boundary=2 include $(MENUETDEV)/makefiles/Makefile_for_program kolibri_dbg.o: fasm_modules/kolibri_dbg.s fasm fasm_modules/kolibri_dbg.s diff --git a/programs/develop/tinypy/tinypy/py2bc.py b/programs/develop/tinypy/tinypy/py2bc.py index 83d0827443..abde08de75 100644 --- a/programs/develop/tinypy/tinypy/py2bc.py +++ b/programs/develop/tinypy/tinypy/py2bc.py @@ -15,7 +15,6 @@ def _import(name): return MODULES[name] py = name+".py" tpc = name+".tpc" - print("CP") if exists(py): if not exists(tpc) or mtime(py) > mtime(tpc): s = load(py) @@ -43,7 +42,6 @@ def import_fname(fname,name): return g def tinypy(): - print("tinypy called") return import_fname(ARGV[0],'__main__') def main(src,dest): @@ -52,5 +50,4 @@ def main(src,dest): save(dest,r) if __name__ == '__main__': - print("Running main") main(ARGV[1],ARGV[2]) diff --git a/programs/develop/tinypy/tinypy/tpmain.c b/programs/develop/tinypy/tinypy/tpmain.c index 68cb098305..f3ea332bbb 100644 --- a/programs/develop/tinypy/tinypy/tpmain.c +++ b/programs/develop/tinypy/tinypy/tpmain.c @@ -1,25 +1,16 @@ #include "tp.c" /* INCLUDE */ const char header[]="TinyPy for kolibriOS"; -const int argc = 2; extern _stdcall void kolibri_dbg_init(tp_vm *tp); -void main(void) { - char *argv[2]={"tpmain", "test.py"}; - - CONSOLE_INIT(header); - con_printf("TinyPy console, version 1.1.\n"); - con_printf("Enter program file:"); - if (!(argv[1] = malloc(256))) - con_printf("Memory error\n"); - con_gets(argv[1], 256); - argv[1][strlen(argv[1]) - 1] = '\0'; - con_printf("Running file %s\n", argv[1]); +void main(int argc, const char *argv[]) { tp_vm *tp = tp_init(argc, argv); kolibri_dbg_init(tp); kolibri_init(tp); + CONSOLE_INIT(header); /* INIT */ tp_call(tp,"py2bc","tinypy",tp_None); + con_printf("Done"); tp_deinit(tp); kol_exit(); return; diff --git a/programs/develop/tinypy/tp_kolibri.txt b/programs/develop/tinypy/tp_kolibri.txt index 53bc47e7ad..4ca6877809 100644 --- a/programs/develop/tinypy/tp_kolibri.txt +++ b/programs/develop/tinypy/tp_kolibri.txt @@ -84,12 +84,7 @@ TP_FNC, TP_DATA. - итераторы и сопрограмм; - синтаксический "сахар" для объявления списков и словарей, наподобие odd_squares = [a*a for a in range(100) if a%2]; - - интерактивная консоль - - передача параметров через ARGV - - В библиотеке menuetlibc процедура разбора параметров командной строки пока - не адаптирована для КолибриОС, поэтому при запуске TinyPy приходится вводить - имя файла вручную, также нельзя передавать параметры в командной строке. + - интерактивная консоль. И конечно, не хватает основной силы Python - его стандартной библиотеки. @@ -116,11 +111,15 @@ if __name__=="__main__": math.square(12) Вначале нужно скомпилировать модуль math.py в байт-код при помощи программы - py2bc.py, она работает как в Python, так и в TinyPy. В последнем случае нужно - указать глобальный массив ARGV=[0, 'math.py', 'math.tpc'], так как передать - параметры через командную строку пока нельзя. После этого можно запустить - prog.py из TinyPy. Синтаксис "from module import function" пока не - поддерживается. + py2bc.py, она работает как в Python, так и в TinyPy. Запускаем shell и выполняем команду + # tinypy py2bc.py math.py math.tpc + + После этого можно запустить prog.py из TinyPy. + + # tinypy prog.py + 144 + + Замечание: синтаксис "from module import function" пока не поддерживается. 3.2 Модули на C.