demos/zeroline: Post-SVN tidy

- Move source code from `trunk` into root directory.
- Update build files and ASM include paths.
- Note: Line endings standardised from `CRLF` > `LF`, so best to view diffs with whitespace changes hidden.
This commit is contained in:
2025-05-31 21:49:52 +01:00
parent 7fe66081fa
commit 9d0aee6c6d
5 changed files with 380 additions and 374 deletions

View File

@@ -466,7 +466,7 @@ tup.append_table(img_files, {
{"DEMOS/TUBE", VAR_PROGS .. "/demos/tube/tube"},
{"DEMOS/UNVWATER", VAR_PROGS .. "/demos/unvwater/unvwater"},
{"DEMOS/WEB", VAR_PROGS .. "/demos/web/web"},
{"DEMOS/ZEROLINE", VAR_PROGS .. "/demos/zeroline/trunk/zeroline"},
{"DEMOS/ZEROLINE", VAR_PROGS .. "/demos/zeroline/zeroline"},
{"DEVELOP/BOARD", VAR_PROGS .. "/system/board/trunk/board"},
{"DEVELOP/DBGBOARD", VAR_PROGS .. "/system/dbgboard/dbgboard"},
{"DEVELOP/CEDIT", SRC_PROGS .. "/develop/cedit/CEDIT"},

View File

@@ -1,373 +1,379 @@
;------------------------------------------------------------------------------
; @SS - screensaver
;------------------------------------------------------------------------------
; last update: 30/03/2012
; changed by: Marat Zakiyanov aka Mario79, aka Mario
; changes: The program uses only 4 Kb memory is now.
; Code refactoring. Using transparent cursor.
; Fix bug - using lots of buttons from f.8.
;---------------------------------------------------------------------
; SCREENSAVER APPLICATION by lisovin@26.ru
;
; Compile with FASM for Menuet
;
;------------------------------------------------------------------------------
use32
org 0x0
db 'MENUET01' ; 8 byte id
dd 0x01 ; header version
dd START ; start of code
dd IM_END ; size of image
dd I_END ; memory for app
dd stack_top ; esp
dd I_Param ; boot parameters
dd 0x0 ; path
;------------------------------------------------------------------------------
include '..\..\..\macros.inc'
;include 'debug.inc'
;------------------------------------------------------------------------------
align 4
START:
mcall 68,11
mcall 40, EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE
; boot parameters
cmp [I_Param], dword '@ss'
setz [screensaver]
cmp [I_Param],dword 'ZERO'
jne @f
mov [type],dword 0
;--------------------------------------
align 4
@@:
cmp [I_Param],dword 'ASSM'
jne bgr_changed
mov [type],dword 24
;------------------------------------------------------------------------------
align 4
bgr_changed:
mcall 14
mov [y_max],ax
shr eax,16
mov [x_max],ax
shl eax,16
mov [top_right_corner],eax
call create_ss
;------------------------------------------------------------------------------
align 4
still:
cmp al,2 ; key in buffer?
jz key
cmp al,5 ; background redraw?
jz bgr_changed
; mouse event
mcall 37,2 ; ¯à®¢¥à¨¬ ª­®¯ª¨
and al,3
cmp al,3 ; ­ ¦ âë ®¡¥ ª­®¯ª¨ ¬ëè¨?
jnz still
mcall 37,0 ; ¯à®¢¥à¨¬ ª®®à¤¨­ âë
cmp [top_right_corner],eax
jnz still
;------------------------------------------------------------------------------
align 4
key:
mcall ; eax = 2
jmp still
;------------------------------------------------------------------------------
align 4
create_ss:
mcall 40,100010b
;set_new_cursor_skin - transparent cursor
mcall 68,12,32*32*4 ; get memory for own cursor area
push eax
mov ecx,eax
mcall 37,4,,2 ; load own cursor
mov ecx,eax
mcall 37,5 ; set own cursor
pop ecx
mcall 68,13 ; free own cursor area
cmp [type],dword 0
je drawsswin
cmp [type],dword 24
je asminit
mov dword [delay],1
mov [lx1],10 ; for "draw line"
mov [lx2],40
mov [ly1],50
mov [ly2],100
mov [addx1],1
mov [addx2],1
mov [addy1],1
mov [addy2],1
jmp drawsswin
;--------------------------------------
align 4
asminit: ; for "assembler" - assembler sources demo
; get size of file
mov [fileinfo],dword 5
mov [fileinfo.point],dword fileinfo_buffer
mcall 70,fileinfo
test eax,eax
jnz .no_file
; get memory for file
mov ecx,[fileinfo_buffer+32]
mov [fileinfo.size],ecx
mcall 68,12
mov [fileinfo.point],eax
; load file
mov [fileinfo],dword 0
mcall 70,fileinfo
test eax,eax
jz @f
mcall 68,13,[fileinfo.point]
;--------------------------------------
align 4
.no_file:
mov [type],dword 0
jmp drawsswin
;--------------------------------------
align 4
@@:
mov dword [delay],1 ;25 - old value
;--------------------------------------
align 4
asminit1:
mov eax,[fileinfo.point]
mov [stringstart],eax
mov dword [stringlen],1
;--------------------------------------
align 4
newpage:
mov [stringpos],16
;--------------------------------------
align 4
drawsswin:
xor eax,eax
movzx ebx,[x_max]
movzx ecx,[y_max]
inc ebx
inc ecx
mcall ,,,0x01000000
xor edx,edx
;mcall 13 ;Leency - use transparent background
;--------------------------------------
align 4
tstill:
mcall 23,[delay]
test eax,eax
jnz thr_end
cmp [type],dword 0
je tstill
cmp [type],dword 24
je drawssasm
call draw_line
jmp tstill
;--------------------------------------
align 4
thr_end:
cmp [screensaver], 0
jz @f
mcall 70, f70
@@:
cmp [type],dword 24
jne @f
mcall 68,13,[fileinfo.point]
@@:
and [params], not 1
or eax,-1
mcall
;------------------------------------------------------------------------------
align 4
drawssasm:
mov edi,[stringstart]
add edi,[stringlen]
dec edi
mov eax,edi
sub eax,[fileinfo.point]
cmp eax,[fileinfo.size]
ja asminit1
cmp word [edi],0x0a0d
je addstring
cmp byte [edi],0x0a
jne noaddstring
dec edi
;--------------------------------------
align 4
addstring:
add [stringpos],16
add edi,2
mov [stringstart],edi
mov dword [stringlen],1
mov ax,[stringpos]
cmp ax,[y_max]
jb tstill
jmp newpage
;--------------------------------------
align 4
noaddstring:
mov ebx,[stringlen]
shl ebx,19
mov bx,[stringpos]
mov edx,[stringstart]
add edx,[stringlen]
dec edx
mcall 4,,0x104ba010,,1
inc dword [stringlen]
cmp [edi],byte ' '
je drawssasm
jmp tstill
;------------------------------------------------------------------------------
align 4
draw_line:
movzx esi,[x_max]
movzx edi,[y_max]
mov eax,[addx1]
add [lx1],eax
mov eax,[addy1]
add [ly1],eax
mov eax,[addx2]
add [lx2],eax
mov eax,[addy2]
add [ly2],eax
cmp [lx1],1
jge dl1
mov [addx1],1
;--------------------------------------
align 4
dl1:
cmp [lx2],1
jge dl2
mov [addx2],1
;--------------------------------------
align 4
dl2:
cmp [lx1],esi
jbe dl3
mov [addx1],0xffffffff
;--------------------------------------
align 4
dl3:
cmp [lx2],esi
jbe dl4
mov [addx2],0xffffffff
;--------------------------------------
align 4
dl4:
cmp [ly1],1
jge dl5
mov [addy1],1
;--------------------------------------
align 4
dl5:
cmp [ly2],2
jge dl6
mov [addy2],1
;--------------------------------------
align 4
dl6:
cmp [ly1],edi
jbe dl7
mov [addy1],-1
;--------------------------------------
align 4
dl7:
cmp [ly2],edi
jbe dl8
mov [addy2],-1
;--------------------------------------
align 4
dl8:
mov eax,[lx2]
cmp [lx1],eax
jz dnol
mov bx,word [lx1]
shl ebx,16
mov bx,word [lx2]
mov cx,word [ly1]
shl ecx,16
mov cx,word [ly2]
mov edx,[lcolor]
and edx,0xffffff
mcall 38
;--------------------------------------
align 4
dnol:
add [lcolor],0x010201
ret
;------------------------------------------------------------------------------
align 4 ; DATA AREA
type dd 12
delay dd 100
lx1 dd 10
lx2 dd 40
ly1 dd 50
ly2 dd 100
addx1 dd 1
addx2 dd 1
addy1 dd 1
addy2 dd 1
stringlen dd 1
stringstart dd 0
stringpos dw 16
params db 0 ;if bit 0 set-ssaver works if bit 1 set-setup works
fileinfo:
dd 0
dd 0
dd 0
.size: dd 0
.point: dd 0
db '/sys/macros.inc',0
f70: ; run
dd 7, 0, 0, 0, 0
db '/sys/@SS',0
screensaver db ?
;-------------------------------
IM_END: ; UNINITIALIZED DATA
top_right_corner rd 1
align 4
lcolor dd ?
x_max dw ? ; à §¬¥àë íªà ­ 
y_max dw ?
I_Param:
fileinfo_buffer:
rb 40
;-------------------------------
rb 512
stack_top:
I_END:
; SPDX-License-Identifier: NOASSERTION
;
; Text encoded with Code Page 866 - Cyrillic
;------------------------------------------------------------------------------
; @SS - screensaver
;------------------------------------------------------------------------------
; last update: 30/03/2012
; changed by: Marat Zakiyanov aka Mario79, aka Mario
; changes: The program uses only 4 Kb memory is now.
; Code refactoring. Using transparent cursor.
; Fix bug - using lots of buttons from f.8.
;---------------------------------------------------------------------
; SCREENSAVER APPLICATION by lisovin@26.ru
;
; Compile with FASM for Menuet
;
;------------------------------------------------------------------------------
use32
org 0x0
db 'MENUET01' ; 8 byte id
dd 0x01 ; header version
dd START ; start of code
dd IM_END ; size of image
dd I_END ; memory for app
dd stack_top ; esp
dd I_Param ; boot parameters
dd 0x0 ; path
;------------------------------------------------------------------------------
include '..\..\macros.inc'
;include 'debug.inc'
;------------------------------------------------------------------------------
align 4
START:
mcall 68,11
mcall 40, EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE
; boot parameters
cmp [I_Param], dword '@ss'
setz [screensaver]
cmp [I_Param],dword 'ZERO'
jne @f
mov [type],dword 0
;--------------------------------------
align 4
@@:
cmp [I_Param],dword 'ASSM'
jne bgr_changed
mov [type],dword 24
;------------------------------------------------------------------------------
align 4
bgr_changed:
mcall 14
mov [y_max],ax
shr eax,16
mov [x_max],ax
shl eax,16
mov [top_right_corner],eax
call create_ss
;------------------------------------------------------------------------------
align 4
still:
cmp al,2 ; key in buffer?
jz key
cmp al,5 ; background redraw?
jz bgr_changed
; mouse event
mcall 37,2 ; ¯à®¢¥à¨¬ ª­®¯ª¨
and al,3
cmp al,3 ; ­ ¦ âë ®¡¥ ª­®¯ª¨ ¬ëè¨?
jnz still
mcall 37,0 ; ¯à®¢¥à¨¬ ª®®à¤¨­ âë
cmp [top_right_corner],eax
jnz still
;------------------------------------------------------------------------------
align 4
key:
mcall ; eax = 2
jmp still
;------------------------------------------------------------------------------
align 4
create_ss:
mcall 40,100010b
;set_new_cursor_skin - transparent cursor
mcall 68,12,32*32*4 ; get memory for own cursor area
push eax
mov ecx,eax
mcall 37,4,,2 ; load own cursor
mov ecx,eax
mcall 37,5 ; set own cursor
pop ecx
mcall 68,13 ; free own cursor area
cmp [type],dword 0
je drawsswin
cmp [type],dword 24
je asminit
mov dword [delay],1
mov [lx1],10 ; for "draw line"
mov [lx2],40
mov [ly1],50
mov [ly2],100
mov [addx1],1
mov [addx2],1
mov [addy1],1
mov [addy2],1
jmp drawsswin
;--------------------------------------
align 4
asminit: ; for "assembler" - assembler sources demo
; get size of file
mov [fileinfo],dword 5
mov [fileinfo.point],dword fileinfo_buffer
mcall 70,fileinfo
test eax,eax
jnz .no_file
; get memory for file
mov ecx,[fileinfo_buffer+32]
mov [fileinfo.size],ecx
mcall 68,12
mov [fileinfo.point],eax
; load file
mov [fileinfo],dword 0
mcall 70,fileinfo
test eax,eax
jz @f
mcall 68,13,[fileinfo.point]
;--------------------------------------
align 4
.no_file:
mov [type],dword 0
jmp drawsswin
;--------------------------------------
align 4
@@:
mov dword [delay],1 ;25 - old value
;--------------------------------------
align 4
asminit1:
mov eax,[fileinfo.point]
mov [stringstart],eax
mov dword [stringlen],1
;--------------------------------------
align 4
newpage:
mov [stringpos],16
;--------------------------------------
align 4
drawsswin:
xor eax,eax
movzx ebx,[x_max]
movzx ecx,[y_max]
inc ebx
inc ecx
mcall ,,,0x01000000
xor edx,edx
;mcall 13 ;Leency - use transparent background
;--------------------------------------
align 4
tstill:
mcall 23,[delay]
test eax,eax
jnz thr_end
cmp [type],dword 0
je tstill
cmp [type],dword 24
je drawssasm
call draw_line
jmp tstill
;--------------------------------------
align 4
thr_end:
cmp [screensaver], 0
jz @f
mcall 70, f70
@@:
cmp [type],dword 24
jne @f
mcall 68,13,[fileinfo.point]
@@:
and [params], not 1
or eax,-1
mcall
;------------------------------------------------------------------------------
align 4
drawssasm:
mov edi,[stringstart]
add edi,[stringlen]
dec edi
mov eax,edi
sub eax,[fileinfo.point]
cmp eax,[fileinfo.size]
ja asminit1
cmp word [edi],0x0a0d
je addstring
cmp byte [edi],0x0a
jne noaddstring
dec edi
;--------------------------------------
align 4
addstring:
add [stringpos],16
add edi,2
mov [stringstart],edi
mov dword [stringlen],1
mov ax,[stringpos]
cmp ax,[y_max]
jb tstill
jmp newpage
;--------------------------------------
align 4
noaddstring:
mov ebx,[stringlen]
shl ebx,19
mov bx,[stringpos]
mov edx,[stringstart]
add edx,[stringlen]
dec edx
mcall 4,,0x104ba010,,1
inc dword [stringlen]
cmp [edi],byte ' '
je drawssasm
jmp tstill
;------------------------------------------------------------------------------
align 4
draw_line:
movzx esi,[x_max]
movzx edi,[y_max]
mov eax,[addx1]
add [lx1],eax
mov eax,[addy1]
add [ly1],eax
mov eax,[addx2]
add [lx2],eax
mov eax,[addy2]
add [ly2],eax
cmp [lx1],1
jge dl1
mov [addx1],1
;--------------------------------------
align 4
dl1:
cmp [lx2],1
jge dl2
mov [addx2],1
;--------------------------------------
align 4
dl2:
cmp [lx1],esi
jbe dl3
mov [addx1],0xffffffff
;--------------------------------------
align 4
dl3:
cmp [lx2],esi
jbe dl4
mov [addx2],0xffffffff
;--------------------------------------
align 4
dl4:
cmp [ly1],1
jge dl5
mov [addy1],1
;--------------------------------------
align 4
dl5:
cmp [ly2],2
jge dl6
mov [addy2],1
;--------------------------------------
align 4
dl6:
cmp [ly1],edi
jbe dl7
mov [addy1],-1
;--------------------------------------
align 4
dl7:
cmp [ly2],edi
jbe dl8
mov [addy2],-1
;--------------------------------------
align 4
dl8:
mov eax,[lx2]
cmp [lx1],eax
jz dnol
mov bx,word [lx1]
shl ebx,16
mov bx,word [lx2]
mov cx,word [ly1]
shl ecx,16
mov cx,word [ly2]
mov edx,[lcolor]
and edx,0xffffff
mcall 38
;--------------------------------------
align 4
dnol:
add [lcolor],0x010201
ret
;------------------------------------------------------------------------------
align 4 ; DATA AREA
type dd 12
delay dd 100
lx1 dd 10
lx2 dd 40
ly1 dd 50
ly2 dd 100
addx1 dd 1
addx2 dd 1
addy1 dd 1
addy2 dd 1
stringlen dd 1
stringstart dd 0
stringpos dw 16
params db 0 ;if bit 0 set-ssaver works if bit 1 set-setup works
fileinfo:
dd 0
dd 0
dd 0
.size: dd 0
.point: dd 0
db '/sys/macros.inc',0
f70: ; run
dd 7, 0, 0, 0, 0
db '/sys/@SS',0
screensaver db ?
;-------------------------------
IM_END: ; UNINITIALIZED DATA
top_right_corner rd 1
align 4
lcolor dd ?
x_max dw ? ; à §¬¥àë íªà ­ 
y_max dw ?
I_Param:
fileinfo_buffer:
rb 40
;-------------------------------
rb 512
stack_top:
I_END: