home *** CD-ROM | disk | FTP | other *** search
- {
- Dycp rutin
-
- Ez a rutin szintén nagyon rövid és gyors, ezért ugyanaz érvényes rá, mint
- az elôzôre. A mûködési elvét nem részletezem, mert az hiszem, hogy igazán nem
- bonyolult.
-
- A forráskód :
- }
-
- Program _Dycp;
-
- Uses Crt,FontInst;
-
- Const Szoveg:String =
- '.................. ┼NEWS DISKMAG ISSUE #1.666 BY XEED ..............';
-
-
- Var ScrollKep:Array[0..400,0..1] of Byte;
- SinTable:Array[0..360*4-1] of Byte;
- Poz,CPos,SPos,MaxChar:Byte;
- SinPos,SinSZ:Word;
- A:Word;
-
- Procedure Scroll(AD:Word);Assembler;
- ASM
- MOV AX,0A000h
- MOV ES,AX
- XOR DI,DI
- XOR DX,DX
- LEA SI,ScrollKep
- LEA BX,SinTable
- MOV AX,SinPos
- MOV SinSz,AX
- @C1:PUSH DI
-
- LEA BX,SinTable
- ADD BX,SinSz
- MOV AL,[BX]
- MOV POZ,AL
- INC SinSz
- CMP SinSz,360*4
- JB @c2
- MOV SinSz,0
- @c2:
-
- XOR BX,BX
- MOV BL,POZ { BL-ben poz div 8 }
- MOV CL,BL { CL-ben poz mod 8 }
- SHR BL,3
- AND CL,7
- ADD DI,BX
- ADD DI,AD
- LODSW
- ROR AX,CL
- STOSW
- MOV AL,0
- STOSB
-
- POP DI
- ADD DI,80
-
- @E1:INC DX
- CMP DX,400
- JB @C1
-
- CMP SinPos,0
- JA @E2
- MOV SinPos,360*4
- @E2:SUB SinPos,2
-
- LEA BX,Szoveg
- XOR AX,AX
- MOV AL,SPos
- XLAT
- LEA BX,FontX
- SHL AX,4
- ADD BX,AX
- XOR AX,AX
- ADD AL,CPos
- ADD BX,AX
- XOR AX,AX
- MOV AL,[BX]
- LEA BX,ScrollKep
- ADD BX,400*2
- ROR AX,1
- MOV [BX],AX
- INC CPOS
- CMP CPOS,16
- JB @e3
- MOV CPOS,0
- INC SPOS
- @E3:
- END;
-
- Begin
- ASM { 640x400x16-os üzemmód }
- MOV AX,000Eh
- INT 10h
- MOV DX,3D4h
- MOV AX,0009h
- OUT DX,AX
- END;
- FillChar(ScrollKep,802,0);
- For A:=0 to 360*4-1 do SinTable[A]:=48+Round(Sin(6*A*Pi/360/4)*32);
- SinPos:=0;SinSZ:=0;
- SPos:=1;CPos:=0;MaxChar:=Length(Szoveg);
- Repeat
- ASM { Raster-idôzítés }
- MOV DX,3DAh
- @W1:IN AL,DX
- TEST AL,8
- JNE @W1
- @W2:IN AL,DX
- TEST AL,8
- JE @W2
- END;
- Move(ScrollKep[1],ScrollKep[0],800);
- { Ezt már nem volt kedvem ASM-ban.}
- Inc(Poz);
- Scroll(0); { A paraméterben a scroll X pozicióját leszel szives...}
- If SPos>MaxChar Then SPos:=1;
- Until KeyPressed; { Åntíl kíjpresszd }
- While KeyPressed do ReadKey;
- ASM { Szöveges mód visszakapcsolása }
- MOV AX,0003h
- INT 10h
- END;
- End. { Bonus : XeeD RuLEZ!!!! }
-