Vibrating rectangles: Difference between revisions

Added X86 Assembly example using 75 bytes.
(Added XPL0 example.)
(Added X86 Assembly example using 75 bytes.)
Line 934:
 
[https://1drv.ms/v/s!AqDUIunCqVnIg1MxKPi5DzwUbJEf Vibrating rectangles]
 
=={{header|X86 Assembly}}==
<lang asm> 1 ;Tanslation of XPL0 and EasyLang. A 75-byte program.
2 ;Assemble with: tasm, tlink /t
3 0000 .model tiny
4 0000 .code
5 .386
6 org 100h
7 ;assume: ax=0, bx=0, cx=00FFh, bp=09??h, direction flag is clear
8
9 0100 B0 13 start: mov al, 13h ;set 320x200x8 graphics mode
10 0102 CD 10 int 10h
11 0104 68 A000 push 0A000h ;set segment register to graphics memory
12 0107 07 pop es
13
14 ;ax = misc, color
15 ;bx = size
16 ;cx = loop counter
17 ;dx = delay
18 ;si = direction
19 ;di = pen location
20 ;bp = color
21
22 0108 B4 86 main: mov ah, 86h ;delay 0.2 seconds
23 010A B1 03 mov cl, 3 ;200000 = 30D40h; (ch=0)
24 010C BA 0D40 mov dx, 0D40h
25 010F CD 15 int 15h
26
27 0111 80 EB 02 sub bl, 2 ;Size:= Size - 2
28 0114 7D 06 jge draw ;if Size < 0 then
29 0116 B3 31 mov bl, 49 ; Size:= 49
30 0118 0F AF EB imul bp, bx ;color:= Random; (bh=0)
31 011B 45 inc bp
32 011C draw: ;Move(50-Size, 50-Size)
33 011C 69 FB FEBF imul di, bx, -321 ;di:= 50-Size + (50-Size)*320
34 0120 81 C7 3EB2 add di, 50*321 ;di:= (50-Size)*321
35 ;di:= Size*-321 + 50*321
36 0124 BE 0006 mov si, 3*2 ;set index for dir table
37 0127 8B C5 mov ax, bp ;Line(50-Size, 50+Size, Color);
38 0129 6B CB 02 lin20: imul cx, bx, 2 ;length = Size*2
39 012C AA lin30: stosb ;es:[di++]:= al
40 012D 03 BC 0143r add di, [si+dir] ;next pixel position
41 0131 E2 F9 loop lin30 ;cx--
42 0133 4E dec si
43 0134 4E dec si
44 0135 79 F2 jns lin20
45
46 0137 B4 01 mov ah, 01h ;loop until keystroke
47 0139 CD 16 int 16h
48 013B 74 CB jz main
49
50 013D B8 0003 mov ax, 0003h ;restore normal text-mode screen
51 0140 CD 10 int 10h
52 0142 C3 ret ;return to DOS
53
54 0143 FEBF FFFE 013F 0000 dir dw -320-1, -1-1, 320-1, 1-1 ;directions: up, right, down, left
55 end start
</lang>
 
=={{header|XPL0}}==
772

edits