Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   небольшой опрос (http://forum.oszone.net/showthread.php?t=29773)

irik 28-04-2004 06:35 205736

скажите,когда вы начали программировать- какая была первая программа(простая или сложная) ,
может заодно подскажите,с какой программы проще начинать писать,
откуда у вас берутся идеи,
и еще ,может глупый вопрос,а для написания пр-мы,жава скрипт?

fLANkeR 28-04-2004 07:01 205737

begin
Writeln('HELLO WORLD!');
end.

#include <iostream.h>
void main(){
cout<<"HELLO WORLD!";
}
а бейсик я уже забыл. ;)

irik 28-04-2004 08:30 205738

это вообще трудно- самому придумывать программы?

BrutalBit 28-04-2004 09:16 205739

Цитата:

это вообще трудно- самому придумывать программы?
Все зависит от фантазии.

DYURIK 28-04-2004 14:09 205740

Вобщето все проги пишутся для конкретной цели..... чего их придумивать???

Guest 28-04-2004 14:36 205741

Я начал писать еще на spectrum... первые программы были на бейсике, потом на ассемблере... писал восновном игры, или менял уже готовые (благо на спектруме это было сделать легко), вот так ..
Regards, suxxl

vadimiron 28-04-2004 20:24 205742

А я начал всё через "попу" :)
Начал программировать на PHP, так как мне нравилось интернет программирование и всё с этим связанное, а сейчас пора уже учится нормальному программированию и учу С++

А первая программа была следущая:

$i=1;
while ($i<10000000000)
{
     echo $i;
     $i++;
}
Что естественно привело к зависанию моего браузера :) (в принципе я этого и добивался) - вот такая вот история

JCooper 28-04-2004 20:40 205743

Помню когда мне было еще лет 12 был у меня ibm 286. Вот это были времена. Писал проги на старом добром TP 6.0 (7.0). Запомнилась лишь игра типа РПГ только полностью текстовая. А так в сновном писал всякую ерунду, даже прогами назвать нельзя, учился одним словом. Первый код написанный мною был выдран из книги, некое подобие хеллоу ворлд.

suxxl 28-04-2004 21:46 205744

Предложение, если у кого то есть старые исходники - кинуть сюда, вместе посмеемся :-) сейчас я маленький кусочек найду :-)
вот основная программа
Цитата:

Uses Crt,key,GraphLib;
Var x,s,y: LongInt;
   Time : LongInt;
   Timer : LongInt absolute $40:$6c;

 Procedure movelka;
 Begin
 s:=1;
 x:=150;
 y:=100;
  Repeat
   Time:=Timer;
     Repeat Until Timer-Time>1;
   ClrVid2(0);
   PrintD('“ç¨ *áª*«ì - ®â®¬áâ¨èì! :)',1,1,3);
   ShowPicTransD(x,y,s);
   ShowDouble;
    If pressed [scLeft] then
     Begin
      dec(x,4);
      inc(s);
      if s>2 then s:=1;
     End else
    If pressed [scRight] then
     Begin
      inc(x,4);
      inc(s);
      if s>2 then s:=1;
     End else s:=1;
  Until pressed [scEsc];
 End;

BEGIN
GrInit;
Install_Handler;
ClrVid2(0);
ReadPicture('1.img');
ReadPicture('2.img');
TrCol:=$FF;
movelka;
GrDone;
Restore_Handler;
END.
и сама библиотека графическая:
Цитата:

Unit GraphLib;

{$L rus}
{$L mouse}
Interface

Uses Dos;

Type TPalette = Array[0..255] of record R,G,B : Byte; End; { *«¨âà* }
Const
     VGA256 = $13;
     TextMode = 3;
     PalMask = $36C;
     PalRegR = $3C7;
     PalRegW = $3C8;
     PalData = $3C9;

     fcFriend = 15;
     fcEnemy = 40;
     colGreen = 28;
     colYellow = 8;
     colRed = 40;
     fr=0;
     en=64;
     FadeSpeed : LongInt = 20; { ‘ª®à®áâì £*è¥*¨ï/¯à®ï¢«¥*¨ï íªà*** }

Type TVidBuf = Array[1..65100] of Byte;
    TSpr = Array[0..15,0..15] of byte;
    TFont = Array[128..239,1..8] of byte;
    TMouseBuf = Array[1..16,1..16] of byte;

Var SegDB : Word;
   GetBack : Byte;
   Fnt : ^TFont;
   Int1CSave : Pointer;
   MouseVis : Boolean;
   MouseX,MouseY : Integer;
   MouseBuf : ^TMouseBuf;
   MouseFile : File of TSpr;
   MouseSpr : ^TSpr;
   DoubleBuf : ^TVidBuf;
   FrameColor : Byte;
   Pic : Array[1..100] of record
                            W,H : Word;
                            Spr : Pointer;
                          End;
   LastP : Integer;
   TrCol : Byte;
   Pal : TPalette;

Procedure SetPalette(Pal : TPalette);
Procedure FadePal(Pal : TPalette);
Procedure LightPal(Pal : TPalette);
Procedure ReadPicture(FileName : String);
Procedure FreePicture(PicN : Byte);
Procedure ShowPicture(X,Y,PicN : Integer);
Procedure ShowPictureD(X,Y,PicN : Integer);
Procedure ShowPicTrans(X,Y,PicN : Integer);
Procedure ShowPicTransD(X,Y,PicN : Integer);
Procedure VRT;
Procedure ReadMouseState(Var XMo,YMo : Integer;Var Lb,Mb,Rb : Boolean);
Procedure DrawLeft(A : Word;P : Pointer);
Procedure DrawRight(A : Word;P : Pointer);
Procedure ShowFrame(X1,Y1,W,H : Word);
Procedure Pixel(x,y : Word; Color : Byte);
Procedure PixelD(x,y : Word; Color : Byte);
Procedure SetMode(Mode : Byte);
Procedure SetPalReg(index,Red,Green,Blue : Byte);
Procedure ClrVid(color : Byte);
Procedure ClrVid2(color : Byte);
Procedure Print(S : String;x,y : Word; color : Byte);
Procedure PrintD(S : String;x,y : Word; color : Byte);
Procedure ShowImage(x,y : Word;w,h : Word;Spr : Pointer);
Procedure ShowTrans(x,y : Word;w,h : Word;Spr : Pointer);
Procedure ShowImageD(x,y : LongInt;w,h : Word;Spr : Pointer);
Procedure ShowTransD(x,y : Word;w,h : Word;Spr : Pointer);
Procedure ShowSprD(x,y : Word;w,h : Word;Spr : Pointer;col : Byte);
Procedure ShowEnergy(x,y : LongInt;len,col : Byte);
{Procedure DrawSprite16(Spr : TSpr;x,y : Word);}
Procedure DrawSpriteD(Spr : TSpr;x,y : Word);
Procedure DrawSpriteT(Spr : TSpr;x,y : Word);
Procedure ReadUnderMouse;
Procedure ShowUnderMouse;
Procedure ShowMous;
Procedure ShowMous2;
Procedure ShowDouble;
Procedure ShowMouse;
Procedure HideMouse;
Procedure GrInit;
Procedure GrDone;

Implementation

Procedure RusFont; far; external;
Procedure MouseSp; far; external;

Procedure FadePal(Pal : TPalette);
Var A,B : LongInt;
P : TPalette;
T : LongInt;
Begin
 For B:=FadeSpeed downto 0 do
 Begin
   For A:=0 to 255 do
   Begin
     P[A].R:=Trunc(Pal[A].R*B/FadeSpeed);
     P[A].G:=Trunc(Pal[A].G*B/FadeSpeed);
     P[A].B:=Trunc(Pal[A].B*B/FadeSpeed);
   End;
   SetPalette(P);
   T:=MemL[$40:$6c];
   Repeat Until MemL[$40:$6c]-T>=1;
 End;
End;

Procedure LightPal(Pal : TPalette);
Var A,B : LongInt;
P : TPalette;
T : LongInt;
Begin
 For B:=0 to FadeSpeed do
 Begin
   For A:=0 to 255 do
   Begin
     P[A].R:=Trunc(Pal[A].R*B/FadeSpeed);
     P[A].G:=Trunc(Pal[A].G*B/FadeSpeed);
     P[A].B:=Trunc(Pal[A].B*B/FadeSpeed);
   End;
   SetPalette(P);
   T:=MemL[$40:$6c];
   Repeat Until MemL[$40:$6c]-T>=1;
 End;
End;



Procedure ReadPicture(FileName : String);
Var F : File;
W,H : Word;
Begin
 Assign(F,FileName);
 ReSet(F,1);
 BlockRead(F,W,2);
 BlockRead(F,H,2);
 Inc(LastP);
 GetMem(Pic[LastP].Spr,W*H);
 Pic[LastP].W:=W;
 Pic[LastP].H:=H;
 BlockRead(F,Pic[LastP].Spr^,W*H);
 BlockRead(F,Pal,SizeOf(Pal));
 Close(F);
 For W:=0 to 255 do SetPalReg(W,Pal[W].R,Pal[W].G,Pal[W].B);
End;

Procedure FreePicture(PicN : Byte);
Begin
 FreeMem(Pic[PicN].Spr,Pic[PicN].W*Pic[PicN].H);
End;

Procedure ShowPicture(X,Y,PicN : Integer);
Begin
 ShowImage(X,Y,Pic[PicN].W,Pic[PicN].H,Pic[PicN].Spr);
End;

Procedure ShowPicTrans(X,Y,PicN : Integer);
Begin
 ShowTrans(X,Y,Pic[PicN].W,Pic[PicN].H,Pic[PicN].Spr);
End;

Procedure ShowPicTransD(X,Y,PicN : Integer);
Begin
 ShowTransD(X,Y,Pic[PicN].W,Pic[PicN].H,Pic[PicN].Spr);
End;

Procedure ShowPictureD(X,Y,PicN : Integer);
Begin
 ShowImageD(X,Y,Pic[PicN].W,Pic[PicN].H,Pic[PicN].Spr);
End;

Procedure ReSetMouse;
Var R : Registers;
Begin
 R.ax:=0;
 Intr($33,R);
End;

Procedure ReadMouseState(Var XMo,YMo : Integer;Var Lb,Mb,Rb : Boolean);
Var R : Registers;
Begin
 R.ax:=3;
 Intr($33,R);
 XMo:=R.cx;
 YMo:=R.dx;
 Lb:=R.bx and 1=1;
 Rb:=R.bx and 2=2;
 Mb:=R.bx and 4=4;
End;

Procedure SetMode(Mode : Byte); assembler;
Asm
 Mov AH,0
 Mov AL,Mode
 Int 10h
End;

Procedure Pixel(x,y : Word; Color : Byte); assembler;
Asm
 Mov ax,SegA000
 Mov es,ax
 Mov di,y
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x
 Mov al,Byte Ptr color
 Mov es : [di],al
End;

Procedure PixelD(x,y : Word;Color : Byte); assembler;
Asm
 Mov ax,SegDB
 Mov es,ax
 Mov di,y
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x
 Mov al,Byte Ptr color
 Mov es : [di],al
End;

Procedure SetPalReg(index,Red,Green,Blue : Byte);
Begin
 Port[PalMask]:=$FF;
 Port[PalRegW]:=index;
 Port[PalData]:=Red;
 Port[PalData]:=Green;
 Port[PalData]:=Blue;
End;

Procedure SetPalette(Pal : TPalette);
Var I : Byte;
Begin
 For I:=0 to 255 do SetPalReg(I,Pal[i].R,Pal[i].G,Pal[i].B);
End;

Procedure ShMo;
Begin
 DrawSpriteD(MouseSpr^,MouseX,MouseY);
End;

Procedure RdMo; assembler;
Asm
 Push ds
 Les di,MouseBuf
 Mov si,MouseY
 Shl si,6
 Mov bx,si
 Shl si,2
 Add si,bx
 Add si,MouseX
 Push si
 Mov ax,SegDB
 Mov ds,ax
 Pop si
 Mov cx,16
 Cld
@m1 :
 Push cx
 Mov cx,8
 Rep MovsW
 Pop cx
 Add si,304
 Loop @m1
 Pop ds
End;

Procedure ShowDouble; assembler;
Asm
 Mov dl,MouseVis
 Push dx
 Mov MouseVis,0
 Cmp dl,1
 Jne @dal1
 Call RdMo
 Call ShMo
@dal1 :
 Push ds
 Mov ax,SegA000
 Mov es,ax
 Mov di,0
 Mov cx,32000
 Mov ax,SegDB
 Mov ds,ax
 Mov si,0
 Cld
 Rep MovsW
 Pop ds
 Pop dx
 Mov MouseVis,dl
End;

Procedure ShowFrame(X1,Y1,W,H : Word); assembler;
Asm
 mov ax,SegDB
 mov es,ax
 Mov di,y1
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x1
 mov cx,W
 mov al,FrameColor
 rep stosb
 add di,320
 sub di,w
 mov cx,h
 sub cx,2
@Met1:
 mov es:[di],al
 add di,w
 dec di
 mov es:[di],al
 inc di
 add di,320
 sub di,w
 loop @Met1
 mov cx,w
 rep stosb
End;

Procedure ClrVid(color : Byte); assembler;
Asm
 Mov ax,SegA000
 Mov es,ax
 Mov di,0
 Mov cx,32000
 Mov ah,color
 Mov al,ah
 Cld
 Rep StosW
 Mov GetBack,al
End;

Procedure ClrVid2(color : Byte); assembler;
Asm
 Mov ax,SegDB
 Mov es,ax
 Mov di,0
 Mov cx,32000
 Mov ah,color
 Mov al,ah
 Cld
 Rep StosW
 Mov GetBack,al
End;

Procedure Print(S : String;x,y : Word; color : Byte);
Var i,x1,y1,Off : Word;

 Procedure Prt(Ch : Char;x,y,off : Word; color : Byte);
 Var WrkSeg,WrkOff,x2,y2,TOff : Word;
 BitMask,O : Byte;
 Begin
   If Ord(Ch)<128 then
   Begin
     TOff:=Off;
     WrkSeg:=$F000;
     WrkOff:=$FA6E+(Ord(Ch) shl 3);
     For y:=0 to 7 do
     Begin
       BitMask:=$80;
       For x:=0 to 7 do
       Begin
         If Mem[WrkSeg:WrkOff] and BitMask<>0 then Mem[SegA000:(TOff+x)]:=color
           else Mem[SegA000:(TOff+x)]:=GetBack;
         BitMask:=BitMask shr 1;
       End;
       Inc(TOff,320);
       Inc(WrkOff);
     End;
   End else
   Begin
     TOff:=Off;
     O:=Ord(CH);
     For y:=1 to 8 do
     Begin
       BitMask:=$80;
       For x:=0 to 7 do
       Begin
         If Fnt^[o,y] and BitMask<>0 then Mem[SegA000:(TOff+x)]:=color
           else Mem[SegA000:(TOff+x)]:=GetBack;
         BitMask:=BitMask shr 1;
       End;
       Inc(TOff,320);
     End;
   End;
 End;

Begin
 x1:=x;y1:=y;
 Off:=(y shl 8)+(y shl 6)+x;
 For i:=1 to length(s) do
 Begin
   Prt(s[i],x1,y1,off,color);
   Inc(x1,8);
   Inc(off,8);
 End;
End;

Procedure PrintD(S : String;x,y : Word; color : Byte);
Var Segm,i,x1,y1,Off : Word;

 Procedure PrtD(Ch : Char;x,y,off : Word; color : Byte);
 Var WrkSeg,WrkOff,x2,y2,TOff : Word;
 BitMask,O : Byte;
 Begin
   If Ord(Ch)<128 then
   Begin
     TOff:=Off;
     WrkSeg:=$F000;
     WrkOff:=$FA6E+(Ord(Ch) shl 3);
     For y:=0 to 7 do
     Begin
       BitMask:=$80;
       For x:=0 to 7 do
       Begin
         If Mem[WrkSeg:WrkOff] and BitMask<>0 then Mem[Segm:(TOff+x)]:=color
           else Mem[Segm:(TOff+x)]:=GetBack;
         BitMask:=BitMask shr 1;
       End;
       Inc(TOff,320);
       Inc(WrkOff);
     End;
   End else
   Begin
     TOff:=Off;
     O:=Ord(CH);
     For y:=1 to 8 do
     Begin
       BitMask:=$80;
       For x:=0 to 7 do
       Begin
         If Fnt^[o,y] and BitMask<>0 then Mem[Segm:(TOff+x)]:=color
           else Mem[Segm:(TOff+x)]:=GetBack;
         BitMask:=BitMask shr 1;
       End;
       Inc(TOff,320);
     End;
   End;
 End;

Begin
 x1:=x;y1:=y;
 Off:=(y shl 8)+(y shl 6)+x;
 Segm:=SegDB;
 For i:=1 to length(s) do
 Begin
   PrtD(s[i],x1,y1,off,color);
   Inc(x1,8);
   Inc(off,8);
 End;
End;

Procedure ShowImage(x,y : Word;w,h : Word;Spr : Pointer); assembler;
Asm
 Mov ax,SegA000
 Mov es,ax
 Mov di,y
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x
 push ds
 mov cx,h
 mov bx,w
 lds si,spr
@Met1 :
 push cx
 mov cx,bx
 rep movsb
 pop cx
 add di,320
 sub di,bx
 Loop @Met1
 Pop ds
End;

Procedure ShowTrans(x,y : Word;w,h : Word;Spr : Pointer); assembler;
Asm
 Mov ax,SegA000
 Mov es,ax
 mov dl,TrCol
 Mov di,y
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x
 push ds
 mov cx,h
 mov bx,w
 lds si,spr
@Met1 :
 push cx
 mov cx,bx
@Met2 :
 mov al,ds:[si]
 cmp al,dl
 jz @Met3
 mov es:[di],al
@Met3:
 inc di
 inc si
 loop @Met2
 pop cx
 add di,320
 sub di,bx
 Loop @Met1
 Pop ds
End;

Procedure ShowImageD_a(x,y : Word;w,h : Word;Spr : Pointer); assembler;
Asm
 Mov ax,SegDB
 Mov es,ax
 Mov di,y
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x
 push ds
 mov cx,h
 mov bx,w
 lds si,spr
@Met1 :
 push cx
 mov cx,bx
 rep movsb
 pop cx
 add di,320
 sub di,bx
 Loop @Met1
 Pop ds
End;

Procedure ShowICD_a(x,y,w,h,adr,wa : Word;Spr : Pointer); assembler;
Asm
 Mov ax,SegDB
 Mov es,ax
 Mov di,y
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x
 push ds
 mov cx,h
 mov bx,w
 mov dx,wa
 lds si,spr
 add si,adr
@Met1 :
 push cx
 mov cx,bx
 rep movsb
 pop cx
 add di,320
 sub di,bx
 add si,dx
 Loop @Met1
 Pop ds
End;

Procedure ShowImageD(x,y : LongInt;w,h : Word;Spr : Pointer);
Var A,B,C,D : LongInt;
Begin
 If (X<=-W) or (Y<=-H) or (X>319) or (Y>199) then exit;
 If (X>=0) and (Y>=0) and (X<321-W) and (Y<=201-H) then
   ShowImageD_a(X,Y,W,H,Spr) else
   Begin
     A:=0; B:=0; C:=W-1; D:=H-1;
     If X<0 then Begin A:=-X; X:=0; End;
     If Y<0 then Begin B:=-Y; Y:=0; End;
     If X>320-W then C:=319-X;
     If Y>200-H then D:=199-Y;
     if (c-a+1<=0) or (d-b+1<=0) then
       a:=a;
     ShowICD_a(x,y,c-a+1,d-b+1,b*w+a,w-c+a-1,spr);
   End;
End;

Procedure ShowTransD(x,y : Word;w,h : Word;Spr : Pointer); assembler;
Asm
 Mov ax,SegDB
 mov dl,TrCol
 Mov es,ax
 Mov di,y
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x
 push ds
 mov cx,h
 mov bx,w
 lds si,spr
@Met1 :
 push cx
 mov cx,bx
@Met2 :
 mov al,ds:[si]
 cmp al,dl
 jz @Met3
 mov es:[di],al
@Met3:
 inc di
 inc si
 loop @Met2
 pop cx
 add di,320
 sub di,bx
 Loop @Met1
 Pop ds
End;

Procedure ShowSprD(x,y : Word;w,h : Word;Spr : Pointer;Col : Byte); assembler;
Asm
 Mov ax,SegDB
 Mov es,ax
 Mov di,y
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x
 push ds
 mov cx,h
 mov bx,w
 lds si,spr
@Met1 :
 push cx
 mov cx,bx
@Met2 :
 mov al,ds:[si]
 cmp al,14
 jz @Met3
 cmp al,12
 jnz @Met4
 mov al,col
@Met4:
 mov es:[di],al
@Met3:
 inc di
 inc si
 loop @Met2
 pop cx
 add di,320
 sub di,bx
 Loop @Met1
 Pop ds
End;

Procedure ShowEnergy(x,y : LongInt;len,col : Byte);
Var A,B : LongInt;
Begin
 If (X<-len) or (X>319) then Exit else
 Begin
   For A:=0 to len-1 do
     For B:=0 to 1 do
       If (X+A>=0) and (X+A<320) and (Y+B>0) and (Y+B<200) then
         PixelD(X+A,Y+B,col);
 End;
End;

{Procedure DrawSprite16(Spr : TSpr;x,y : Word); assembler;
Asm
 Mov ax,SegA000
 Mov es,ax
 Mov di,y
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x
 push ds
 lds si,spr
 mov cx,16
@Met1 :
 push cx
 mov cx,8
 rep movsw
 pop cx
 add di,304
 Loop @Met1
 Pop ds
End;}

Procedure DrawLeft(A : Word;P : Pointer); assembler;
Asm
 mov ax,SegDB
 cld
 mov es,ax
 push ds
 mov bx,A
 mov ax,320
 sub ax,bx
 mov dx,ax
 xor di,di
 lds si,P
 mov cx,200
@M1:
 add si,bx
 push cx
 mov cx,dx
 rep movsb
 add di,bx
 pop cx
 loop @M1
 pop ds
End;

Procedure DrawRight(A : Word;P : Pointer); assembler;
Asm
 mov ax,SegDB
 cld
 mov es,ax
 push ds
 mov bx,A
 mov ax,320
 sub ax,bx
 mov dx,ax
 xor di,di
 lds si,P
 mov cx,200
@M1:
 add di,dx
 push cx
 mov cx,bx
 rep movsb
 add si,dx
 pop cx
 loop @M1
 pop ds
End;


Procedure DrawSpriteT(Spr : TSpr;x,y : Word); assembler;
Asm
 Mov ax,SegA000
 Mov es,ax
 Mov di,y
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x
 push ds
 lds si,spr
 mov cx,16
@Metk1 :
 push cx
 mov cx,16
@metk2 :
 Mov al,[si]
 Cmp al,0
 Je @metk3
 Mov es:[di],al
@metk3 :
 Inc si
 Inc di
 Loop @metk2
 pop cx
 add di,304
 Loop @Metk1
 Pop ds
End;


Procedure DrawSpriteD(Spr : TSpr;x,y : Word); assembler;
Asm
 Mov ax,SegDB
 Mov es,ax
 Mov di,y
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,x
 push ds
 lds si,spr
 mov cx,16
@Me1 :
 push cx
 mov cx,16
@Me2 :
 Mov al,[si]
 Cmp al,0
 Je @Me3
 Mov es:[di],al
@Me3 :
 Inc di
 Inc si
 Loop @Me2
 pop cx
 add di,304
 Loop @Me1
 Pop ds
End;

Procedure ReadUnderMouse; assembler;
Asm
 Push ds
 Les di,MouseBuf
 Mov si,MouseY
 Shl si,6
 Mov bx,si
 Shl si,2
 Add si,bx
 Add si,MouseX
 Mov ax,SegA000
 Mov ds,ax
 Mov cx,16
 Cld
@m1 :
 Push cx
 Mov cx,8
 Rep MovsW
 Pop cx
 Add si,304
 Loop @m1
 Pop ds
End;

Procedure ShowUnderMouse; assembler;
Asm
 Push ds
 Mov ax,SegA000
 Mov es,ax
 Mov di,MouseY
 Shl di,6
 Mov bx,di
 Shl di,2
 Add di,bx
 Add di,MouseX
 Lds si,MouseBuf
 Cld
 Mov cx,16
@mm1 :
 Push cx
 Mov cx,8
 Rep MovsW
 Pop cx
 Add di,304
 Loop @mm1
 Pop ds
End;

Procedure ShowMous;
Begin
 DrawSpriteT(MouseSpr^,MouseX,MouseY);
End;

Procedure ShowMous2;
Begin
 DrawSpriteD(MouseSpr^,MouseX,MouseY);
End;

Procedure ShowMouse;
Var Lb,Mb,Rb : Boolean;
Begin
 ReadMouseState(MouseX,MouseY,Lb,Mb,Rb);
 MouseX:=MouseX Shr 1;
 MouseVis:=True;
 ReadUnderMouse;
 ShowMous;
End;

Procedure HideMouse;
Begin
 MouseVis:=False;
 ShowUnderMouse;
End;

procedure VRT; assembler;
asm
 mov dx,3DAh
@VRT1:
 in al,dx
 test al,8
 jnz @VRT1
@VRT2:
 in al,dx
 test al,8
 jz @VRT2
end;

{$F+,S-,W-}
procedure TimerHandler; interrupt;
Var xm,ym : Integer;
Lb,Rb,Mb : Boolean;
 begin
   { Timer ISR }
   If MouseVis then
   Begin
     ReadMouseState(xm,ym,Lb,Mb,Rb);
     If (xm Shr 1<>MouseX) or (ym<>MouseY) then
     Begin
       ShowUnderMouse;
       MouseX:=Xm Shr 1;
       MouseY:=Ym;
       If MouseX>304 then MouseX:=304;
       If MouseY>184 then MouseY:=184;
       ReadUnderMouse;
       ShowMous;
     End;
   End;
 end;
{$F-,S+}

Procedure GrInit;
Var a,b,c : Longint;
F : File of Byte;
Lb,Rb,Mb : Boolean;
S,O : Word;
Begin
 LastP:=0;
 MouseSpr:=@MouseSp;
 New(MouseBuf);
 MouseVis:=False;
 ResetMouse;
 GetIntVec($1C,Int1CSave);
 SetIntVec($1C,@TimerHandler);
 New(DoubleBuf);
 SegDB:=Seg(DoubleBuf^)+1;
 SetMode(VGA256);
{  MakePal;}
 GetBack:=0;
End;

Procedure GrDone;
Begin
{  Dispose(DoubleBuf);}
 Release(HeapOrg);
 SetMode(TextMode);
 SetIntVec($1C,Int1CSave);
End;

var a,b,c : longint;
s,o : Word;
Begin
 New(Fnt);
 S:=Seg(RusFont);
 O:=Ofs(RusFont);
 c:=0;
 For a:=128 to 239 do
   For b:=1 to 8 do
   Begin
     Fnt^[a,b]:=Mem[S:O+c];
     Inc(c);
   End;
 LastP:=0;
End.
Добавлено:

мля :-) малость переборщил :р

BrutalBit 28-04-2004 22:44 205745

Цитата:

Предложение, если у кого то есть старые исходники - кинуть сюда, вместе посмеемся :-) сейчас я маленький кусочек найду :-)
вот основная программа
Жалко,после того как полетел винт,у меня остались только исходники моего интерпритатора,да и то в распечатанном виде:(

suxxl 29-04-2004 00:28 205746

у меня еще спектрумовские на винте есть :-)
но я не решился их сюда постить, они раз в 10 больше того, что я уже запостил :-)

Prisoner 29-04-2004 03:22 205747

suxxl
Эта... типа... а может не надо? %). А то у меня броузер повиснет   (как в случае с vadimiron'ом) после пары постов вроде твоего :).

UZER 29-04-2004 07:04 205748

suxxl
Это что, твоя ПЕРВАЯ программка?? Или первая в каком-то определенном языке?

Вот у меня первая программа (*.exe) была на дельфи
Код:

TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Hello World');
end;

А до этого я в ЯваСкрипте ковырялся много

hasherfrog 29-04-2004 09:56 205749

irik
>> когда - где-то в 85-86 году. Первый мой комп выглядел так: http://history-pc.nm.ru/images/pmk/b3-21.jpg
Если кто-то думает, что БЗ-21 - это несерьезно, посмотрите вот это: http://ershov.iis.nsk.su/archive/eai...p;fileid=77827 :)
>> первая программа (простая или сложная) - сложная, генерила случайное число от 1 до 6.
>> с какой программы проще начинать писать - с простой
>> откуда у вас берутся идеи - уже давно не берутся, а спускаются сверху.
>> это вообще трудно- самому придумывать программы? - :lol: Нет. Пойдёшь, бывало, в сортир, придумаешь программу-другую. :lol:
suxxl Ты больше чем переборщил.

irik 29-04-2004 10:49 205750

hasherfrog
Цитата:

когда - где-то в 85-86 году. Первый мой комп выглядел так: http://history-pc.nm.ru/images/pmk/b3-21.jpg
это и правда копьютер?:o
на нем еще программы можно писать?

hasherfrog 29-04-2004 11:09 205751

irik
>> это и правда копьютер? - Да. См. http://history-pc.nm.ru/pmk.htm

suxxl 29-04-2004 11:30 205752

Prisoner
Сорри :-) я немного нерасчитал :-) в IDA вроде немного, а как запостил, то увидил. что ошибся...
UZER
нет, я же сказал, что это один из старых сорсов, для смеха...
первые были типа:
Цитата:

  ORG 30000

       CALL SETSCR
       LD A,22
       RST 16
       LD A,5
       RST 16
       XOR A
       RST 16
       LD HL,TEXT
       CALL T_TAPE
       RET

TEXT    DEFM "1999 NCAA GAMES HUSKIES vs N.CAROLINA"
       DEFB 0

SETSCR  LD A,5
       LD (23693),A
       LD A,0
       CALL 8859
       CALL 3435
       LD A,2
       CALL 5633
       RET

T_TAPE  LD A,(HL)
       AND A
       JR NZ,TTAPE1
       LD A," "
       RST 16
       RET
TTAPE1  RST 16
       INC HL

       PUSH HL
       LD DE,TXTCUR
       LD BC,4
       CALL 8252
       CALL 3405
       XOR A
       OUT (254),A

       LD BC,5
       CALL 7997

       LD A,%00010000
       OUT (254),A
       POP HL
       JR T_TAPE
TXTCUR  DEFB 17,1," ",8


Время: 20:42.

Время: 20:42.
© OSzone.net 2001-