home *** CD-ROM | disk | FTP | other *** search
- Program LameLine;
-
- Var x1,y1,x2,y2 : Integer;
- a : Real;
-
- Procedure Line(X1,Y1,X2,Y2:Word;Col:Byte); Assembler;
- Var Data_2 : Byte;
- Data_3 : Word;
- Data_4 : Word;
- Data_5 : Word;
- Data_6 : Word;
- Data_7 : Word;
- Data_8 : Word;
- Data_9 : Word;
- Data_10 : Word;
- data_11e : Word;
- asm
- cli
- jmp @start
-
- @Sub_1: pusha
- push word ptr [si+8]
- shl word ptr [si+8],8
- push word ptr [si+6]
- push word ptr [si+4]
- push word ptr [si+2]
- push word ptr [si]
- call @sub_3
- add sp,0Ah
- popa
- ret
- @Sub_2: push ax
- push di
- mov di,bx
- shl di,2
- add di,bx
- shl di,6
- add di,cx
- or al,al
- jnz @loc_15
- cmp es:[di],ah
- jne @loc_16
- @loc_15:
- stosb
- @loc_16:
- pop di
- pop ax
- ret
- @Sub_3: enter 4,0
- pusha
- mov ax,[bp+8]
- sub ax,[bp+4]
- mov [bp-2],ax
- jns @loc_17
- neg ax
- @loc_17:
- mov bx,[bp+0Ah]
- sub bx,[bp+6]
- mov [bp-4],bx
- jns @loc_18
- neg bx
- @loc_18:
- cmp ax,bx
- jl @loc_20
- mov ax,[bp-2]
- or ax,ax
- mov cx,[bp+4]
- jns @loc_19
- xchg [bp+8],cx
- mov [bp+4],cx
- neg word ptr [bp-2]
- mov ax,[bp+6]
- xchg [bp+0Ah],ax
- mov [bp+6],ax
- neg word ptr [bp-4]
- @loc_19:
- mov ax,cx
- sub ax,[bp+4]
- imul word ptr [bp-4]
- idiv word ptr [bp-2]
- add ax,[bp+6]
- mov bx,ax
- mov ax,[bp+0Ch]
- call @sub_2
- inc cx
- cmp cx,[bp+8]
- jle @loc_19
- jmp @loc_22
- @loc_20:
- mov ax,[bp-4]
- or ax,ax
- mov bx,[bp+6]
- jns @loc_21
- mov ax,[bp+4]
- xchg [bp+8],ax
- mov [bp+4],ax
- neg word ptr [bp-2]
- xchg [bp+0Ah],bx
- mov [bp+6],bx
- neg word ptr [bp-4]
- @loc_21:
- mov ax,bx
- sub ax,[bp+6]
- imul word ptr [bp-2]
- idiv word ptr [bp-4]
- add ax,[bp+4]
- mov cx,ax
- mov ax,[bp+0Ch]
- call @sub_2
- inc bx
- cmp bx,[bp+0Ah]
- jle @loc_21
- @loc_22:
- popa
- leave
- ret
- @Start: mov Data_2,0h
- mov Data_3,078h
- mov Data_4,028h
- mov Data_5,06h
- mov Data_6,03h
- mov Data_7,05Dh
- mov Data_8,0ADh
- mov Data_9,05h
- mov Data_10,04h
- mov Data_11e,02f7h
- push 0A000h
- pop es
- cld
- mov si,data_11e
- push es
- push ds
- pop es
- mov di,si
- mov ax,X1
- stosw
- mov ax,Y1
- stosw
- mov ax,X2
- stosw
- mov ax,Y2
- stosw
- mov al,Col;
-
- stosw
- pop es
- call @sub_1
- add si,0Ah
- cmp si,35Bh
- jb @loc_4
- mov al,0FFh
- mov data_2,al
- mov si,2F7h
- @loc_4:
- mov bx,data_3
- add bx,data_5
- cmp bx,136h
- jge @loc_5
- cmp bx,0Ah
- jg @loc_6
- @loc_5:
- neg data_5
- @loc_6:
- mov data_3,bx
- mov ax,data_4
- add ax,data_6
- cmp ax,0BEh
- jge @loc_7
- cmp ax,0Ah
- jg @loc_8
- @loc_7:
- neg data_6
- @loc_8:
- mov data_4,ax
- mov ax,data_7
- add ax,data_9
- cmp ax,12Fh
- jge @loc_9
- cmp ax,0Ah
- jg @loc_10
- @loc_9:
- neg data_9
- @loc_10:
- cmp ax,bx
- jne @loc_11
- inc ax
- @loc_11:
- mov data_7,ax
- mov ax,data_8
- add ax,data_10
- cmp ax,0BEh
- jge @loc_12
- cmp ax,0Ah
- jg @loc_13
- @loc_12:
- neg data_10
- @loc_13:
- sti
- end;
-
- Begin
- asm
- mov ax,013h
- int 10h
- end;
- x1:=159;
- y1:=99;
- x2:=160;
- y2:=100;
- repeat
- Line(x1,y1,x2,y1,9);
- Line(x1,y2,x2,y2,9);
- Line(x1,y1,x1,y2,9);
- Line(x2,y1,x2,y2,9);
- a:=a+100/160;
- dec(x1);
- inc(x2);
- y1:=99-Round(a);
- y2:=100+Round(a);
- asm
- mov dx,03dah
- @y1: in al,dx
- test al,8
- jz @y1
- @y2: in al,dx
- test al,8
- jnz @y2
- end;
- until X1<0;
- asm
- mov ax,03h
- int 10h
- end
- End.
-
-