011
30.10.2004, 22:09 Uhr
Bruder Leif
dances with systems (Operator)
|
Moin!
So, bin wieder da. Hier das Plasma in C++ (Vorsicht, wieder 16 Bit):
C++: |
#include <math.h>
#define byte unsigned char #define word unsigned int
void SetPort( word wPortNr, byte bVar ) { asm { push dx push ax mov dx, wPortNr mov al, bVar out dx, al pop ax pop dx } }
void main( void ) { byte ft [512]; byte sint [256]; byte i1, a, b, c, d, od, color, bStatus; word x, y, k, i;
asm { mov ax, 0x013 int 0x010 }
/* SetPort( 0x03d4, 0x09 );
asm { mov dx, 0x03d5 in al,dx and al,0x0e0 add al,3 out dx,al } */ SetPort( 0x03c8, 0 );
for( i=0; i<=255; i++ ) { SetPort( 0x03c9, ( i / 5 ) ); SetPort( 0x03c9, ( i / 4 ) ); SetPort( 0x03c9, ( i / 2 ) ); }
for( i=0; i<=511; i++ ) ft[i] = 64+63*sin( i / 40.74 ); for( i=0; i<=255; i++ ) sint[i] = 128+127*sin( i / 40.74 );
i1 = 0;
do { i1++; c-=2; od++; d=od; for( y=0; y<=200; y++ ) { k = y*320+(y & 1); k -= ( i1 & 1 ) * 320; d+=2; a = sint[(c+y) & 255]; b = sint[(d) & 255]; for( x=0; x<=159; x++ ) { /* Anfang SetPixel */ color = ft[a+b]+ft[y+b];
asm mov ax, 0x0a000 asm mov es, ax asm mov di, k asm mov al, color asm mov es:[di], al
/* Ende SetPixel */
a+=( 1 + color * 128 ); b += 2; k += 2; } } asm mov ah, 0x0b asm int 0x021 asm mov bStatus, al } while( bStatus == 0 ); }
|
Fragt mich nicht, wie das als Win32-Quelltext aussieht... -- Mit 40 Fieber sitzt man nicht mehr vor dem PC. Man liegt im Bett. Mit dem Notebook. |