diff --git a/data/Tupfile.lua b/data/Tupfile.lua index 500c180de..9198dc3c1 100644 --- a/data/Tupfile.lua +++ b/data/Tupfile.lua @@ -521,6 +521,7 @@ tup.append_table(img_files, { {"LIB/SORT.OBJ", VAR_PROGS .. "/develop/libraries/sorter/sort.obj"}, {"LIB/TINYGL.OBJ", VAR_PROGS .. "/develop/libraries/TinyGL/asm_fork/tinygl.obj"}, {"MEDIA/ANIMAGE", VAR_PROGS .. "/media/animage/trunk/animage"}, + {"MEDIA/FILLSCR", VAR_PROGS .. "/media/FillScr/fillscr"}, {"MEDIA/KIV", VAR_PROGS .. "/media/kiv/trunk/kiv"}, {"MEDIA/LISTPLAY", VAR_PROGS .. "/media/listplay/trunk/listplay"}, {"MEDIA/MIDAMP", VAR_PROGS .. "/media/midamp/trunk/midamp"}, @@ -649,7 +650,6 @@ tup.append_table(img_files, { {"ACLOCK", VAR_PROGS .. "/demos/aclock/trunk/aclock"}, {"LOD", VAR_PROGS .. "/fs/lod/lod"}, {"DEVELOP/GENFILES", VAR_PROGS .. "/testing/genfiles/GenFiles"}, - {"MEDIA/FILLSCR", VAR_PROGS .. "/media/FillScr/fillscr"}, }) tup.append_table(extra_files, { }) diff --git a/programs/media/FillScr/Tupfile.lua b/programs/media/FillScr/Tupfile.lua index eb156beba..e2e55198b 100644 --- a/programs/media/FillScr/Tupfile.lua +++ b/programs/media/FillScr/Tupfile.lua @@ -1,2 +1,2 @@ -if tup.getconfig("NO_NASM") ~= "" then return end -tup.rule("fillscr.asm", "nasm -f bin -o %o %f " .. tup.getconfig("KPACK_CMD"), "fillscr") \ No newline at end of file +if tup.getconfig("NO_FASM") ~= "" then return end +tup.rule("fillscr.asm", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "fillscr") diff --git a/programs/media/FillScr/build.bat b/programs/media/FillScr/build.bat new file mode 100644 index 000000000..7761428e6 --- /dev/null +++ b/programs/media/FillScr/build.bat @@ -0,0 +1,3 @@ +@fasm.exe -m 16384 fillscr.asm fillscr.kex +@kpack fillscr.kex +pause diff --git a/programs/media/FillScr/fillscr.asm b/programs/media/FillScr/fillscr.asm index d34b69e2e..6e8f6799b 100644 --- a/programs/media/FillScr/fillscr.asm +++ b/programs/media/FillScr/fillscr.asm @@ -1,28 +1,29 @@ -; to compile: nasm -f bin fillscr.asm -o fillscr ; ; to generate random colors use "fillscr rnd" ; ; otherwise use "filscr r,g,b, r,g,b, r,g,b,..." ; -ORG 0 -BITS 32 +use32 + org 0 + db 'MENUET01' +version dd 1 + dd program.start + dd program.end + dd program.memory + dd program.stack + dd program.params + dd 0 ; ---------------------------- ; -points equ END -POINTS_SIZE equ 108 -PARAMS_SIZE equ 256 -; ---------------------------- ; -MENUET01 db 'MENUET01' -version dd 1 -program.start dd START -program.end dd END -program.memory dd END + POINTS_SIZE + PARAMS_SIZE -program.stack dd 0 -program.params dd END + POINTS_SIZE -program.path dd 0 + +include '../../macros.inc' +include '../../KOSfuncs.inc' + ; ---------------------------- ; +POINTS_SIZE = 108 points_count dd 0 rnd dd 0 ; ---------------------------- ; -START: +align 4 +program.start: mov edi, points - mov esi, [program.params] + mov esi, dword[program.params] cmp [esi], dword "rnd" jne .not_rnd mov [points_count], dword POINTS_SIZE / 3 @@ -125,32 +126,29 @@ START: @@: add edx, 2 sub eax, edx - jnle @@ + jnle @b sbb edx, -1 shr edx, 1 ; set width, height - mov eax, 15 - mov ebx, 1 mov ecx, edx - int 64 + mcall SF_BACKGROUND_SET,SSF_SIZE_BG ; set "stretch" -; mov eax, 15 - mov ebx, 4 - mov ecx, 2 - int 64 + mcall ,SSF_MODE_BG ; put pixels -; mov eax, 15 - mov ebx, 5 - mov ecx, points ; BBGGRRBBGGRR... xor edx, edx mov esi, [points_count] ; size of data = count * 3 lea esi, [esi * 2 + esi] - int 64 + mcall ,SSF_IMAGE_BG, points ; BBGGRRBBGGRR... ; refresh screen -; mov eax, 15 - mov ebx, 3 - int 64 + mcall ,SSF_REDRAW_BG ; thread terminate - mov eax, -1 - int 64 -END: \ No newline at end of file + mcall SF_TERMINATE_PROCESS + +align 4 +program.end: + points rb POINTS_SIZE + program.params rb 256 + rb 256 +align 16 +program.stack: +program.memory: \ No newline at end of file diff --git a/programs/media/FillScr/make.bat b/programs/media/FillScr/make.bat deleted file mode 100644 index 5d06a2bd4..000000000 --- a/programs/media/FillScr/make.bat +++ /dev/null @@ -1,2 +0,0 @@ -nasm -f bin fillscr.asm -o fillscr -pause \ No newline at end of file