From 9d0aee6c6daaf9b72b8ef2dd4094fec4a22a9b43 Mon Sep 17 00:00:00 2001 From: Andrew Date: Sat, 31 May 2025 21:49:52 +0100 Subject: [PATCH] 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. --- data/Tupfile.lua | 2 +- .../demos/zeroline/{trunk => }/Tupfile.lua | 0 programs/demos/zeroline/{trunk => }/build.bat | 0 programs/demos/zeroline/{trunk => }/build.sh | 0 .../demos/zeroline/{trunk => }/zeroline.asm | 752 +++++++++--------- 5 files changed, 380 insertions(+), 374 deletions(-) rename programs/demos/zeroline/{trunk => }/Tupfile.lua (100%) rename programs/demos/zeroline/{trunk => }/build.bat (100%) rename programs/demos/zeroline/{trunk => }/build.sh (100%) rename programs/demos/zeroline/{trunk => }/zeroline.asm (94%) diff --git a/data/Tupfile.lua b/data/Tupfile.lua index 0cb3db2a7..7cd3473c5 100644 --- a/data/Tupfile.lua +++ b/data/Tupfile.lua @@ -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"}, diff --git a/programs/demos/zeroline/trunk/Tupfile.lua b/programs/demos/zeroline/Tupfile.lua similarity index 100% rename from programs/demos/zeroline/trunk/Tupfile.lua rename to programs/demos/zeroline/Tupfile.lua diff --git a/programs/demos/zeroline/trunk/build.bat b/programs/demos/zeroline/build.bat similarity index 100% rename from programs/demos/zeroline/trunk/build.bat rename to programs/demos/zeroline/build.bat diff --git a/programs/demos/zeroline/trunk/build.sh b/programs/demos/zeroline/build.sh similarity index 100% rename from programs/demos/zeroline/trunk/build.sh rename to programs/demos/zeroline/build.sh diff --git a/programs/demos/zeroline/trunk/zeroline.asm b/programs/demos/zeroline/zeroline.asm similarity index 94% rename from programs/demos/zeroline/trunk/zeroline.asm rename to programs/demos/zeroline/zeroline.asm index a7e0086fd..6a97b9f08 100644 --- a/programs/demos/zeroline/trunk/zeroline.asm +++ b/programs/demos/zeroline/zeroline.asm @@ -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: