Apps/FillScr: Rewrite from nasm to fasm

This commit is contained in:
2025-03-03 12:39:03 +02:00
committed by Max Logaev
parent 25b79ca6d1
commit 1a40899780
5 changed files with 39 additions and 40 deletions

View File

@@ -521,6 +521,7 @@ tup.append_table(img_files, {
{"LIB/SORT.OBJ", VAR_PROGS .. "/develop/libraries/sorter/sort.obj"}, {"LIB/SORT.OBJ", VAR_PROGS .. "/develop/libraries/sorter/sort.obj"},
{"LIB/TINYGL.OBJ", VAR_PROGS .. "/develop/libraries/TinyGL/asm_fork/tinygl.obj"}, {"LIB/TINYGL.OBJ", VAR_PROGS .. "/develop/libraries/TinyGL/asm_fork/tinygl.obj"},
{"MEDIA/ANIMAGE", VAR_PROGS .. "/media/animage/trunk/animage"}, {"MEDIA/ANIMAGE", VAR_PROGS .. "/media/animage/trunk/animage"},
{"MEDIA/FILLSCR", VAR_PROGS .. "/media/FillScr/fillscr"},
{"MEDIA/KIV", VAR_PROGS .. "/media/kiv/trunk/kiv"}, {"MEDIA/KIV", VAR_PROGS .. "/media/kiv/trunk/kiv"},
{"MEDIA/LISTPLAY", VAR_PROGS .. "/media/listplay/trunk/listplay"}, {"MEDIA/LISTPLAY", VAR_PROGS .. "/media/listplay/trunk/listplay"},
{"MEDIA/MIDAMP", VAR_PROGS .. "/media/midamp/trunk/midamp"}, {"MEDIA/MIDAMP", VAR_PROGS .. "/media/midamp/trunk/midamp"},
@@ -649,7 +650,6 @@ tup.append_table(img_files, {
{"ACLOCK", VAR_PROGS .. "/demos/aclock/trunk/aclock"}, {"ACLOCK", VAR_PROGS .. "/demos/aclock/trunk/aclock"},
{"LOD", VAR_PROGS .. "/fs/lod/lod"}, {"LOD", VAR_PROGS .. "/fs/lod/lod"},
{"DEVELOP/GENFILES", VAR_PROGS .. "/testing/genfiles/GenFiles"}, {"DEVELOP/GENFILES", VAR_PROGS .. "/testing/genfiles/GenFiles"},
{"MEDIA/FILLSCR", VAR_PROGS .. "/media/FillScr/fillscr"},
}) })
tup.append_table(extra_files, { tup.append_table(extra_files, {
}) })

View File

@@ -1,2 +1,2 @@
if tup.getconfig("NO_NASM") ~= "" then return end if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("fillscr.asm", "nasm -f bin -o %o %f " .. tup.getconfig("KPACK_CMD"), "fillscr") tup.rule("fillscr.asm", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "fillscr")

View File

@@ -0,0 +1,3 @@
@fasm.exe -m 16384 fillscr.asm fillscr.kex
@kpack fillscr.kex
pause

View File

@@ -1,28 +1,29 @@
; to compile: nasm -f bin fillscr.asm -o fillscr ;
; to generate random colors use "fillscr rnd" ; ; to generate random colors use "fillscr rnd" ;
; otherwise use "filscr r,g,b, r,g,b, r,g,b,..." ; ; otherwise use "filscr r,g,b, r,g,b, r,g,b,..." ;
ORG 0 use32
BITS 32 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 include '../../macros.inc'
PARAMS_SIZE equ 256 include '../../KOSfuncs.inc'
; ---------------------------- ;
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
; ---------------------------- ; ; ---------------------------- ;
POINTS_SIZE = 108
points_count dd 0 points_count dd 0
rnd dd 0 rnd dd 0
; ---------------------------- ; ; ---------------------------- ;
START: align 4
program.start:
mov edi, points mov edi, points
mov esi, [program.params] mov esi, dword[program.params]
cmp [esi], dword "rnd" cmp [esi], dword "rnd"
jne .not_rnd jne .not_rnd
mov [points_count], dword POINTS_SIZE / 3 mov [points_count], dword POINTS_SIZE / 3
@@ -125,32 +126,29 @@ START:
@@: @@:
add edx, 2 add edx, 2
sub eax, edx sub eax, edx
jnle @@ jnle @b
sbb edx, -1 sbb edx, -1
shr edx, 1 shr edx, 1
; set width, height ; set width, height
mov eax, 15
mov ebx, 1
mov ecx, edx mov ecx, edx
int 64 mcall SF_BACKGROUND_SET,SSF_SIZE_BG
; set "stretch" ; set "stretch"
; mov eax, 15 mcall ,SSF_MODE_BG
mov ebx, 4
mov ecx, 2
int 64
; put pixels ; put pixels
; mov eax, 15
mov ebx, 5
mov ecx, points ; BBGGRRBBGGRR...
xor edx, edx xor edx, edx
mov esi, [points_count] ; size of data = count * 3 mov esi, [points_count] ; size of data = count * 3
lea esi, [esi * 2 + esi] lea esi, [esi * 2 + esi]
int 64 mcall ,SSF_IMAGE_BG, points ; BBGGRRBBGGRR...
; refresh screen ; refresh screen
; mov eax, 15 mcall ,SSF_REDRAW_BG
mov ebx, 3
int 64
; thread terminate ; thread terminate
mov eax, -1 mcall SF_TERMINATE_PROCESS
int 64
END: align 4
program.end:
points rb POINTS_SIZE
program.params rb 256
rb 256
align 16
program.stack:
program.memory:

View File

@@ -1,2 +0,0 @@
nasm -f bin fillscr.asm -o fillscr
pause