lkml.org 
[lkml]   [2003]   [Sep]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: nasm over gas?
William Lee Irwin III wrote:
> On Mon, Sep 08, 2003 at 02:03:21PM +0200, Ihar 'Philips' Filipau wrote:
>
>> e.g. C-- project: something like C, where you can operate with
>>registers just like another variables. Under DOS was producing .com
>>files witout any overhead: program with only 'int main() { return 0; }'
>>was optimized to one byte 'ret' ;-) But sure it was not complete C
>>implementation.
>
>
> There is already a C-- project and it is unrelated to your suggestion.
>
> c.f. http://cminusminus.org/
>

Actually I have tryed to find the project I knew long time ago.
But let say - it was pre internet era.

I beleive C-- was distributed as a shareware. I cannot be sure about
licensing - I come from USSR ;-)

[ ...removing the dust of time from my archives... ]

[ ...@#$%^&* it is archived with arj - VMware... ]

[ Wow - it has name! Sphinx C-- - and Google has some docs on-line
http://www.goosee.com/cmm/c--doc.htm (go directly to
http://www.goosee.com/cmm/c--doc.htm#Expressions) ]
[ Home page is http://www.goosee.com/cmm/ ]

Sample from my archive follows.
Watch the comment "RUN FILE SIZE" - 457 bytes. Far from ideal - but
already 'very good'.

/*
NAME: FIRE.C--
INFO: Written by Midnight.
Conversion to C-- (and a little palette messing) by SPHINX.
DESCRIPTION: This program displays a fire like simulation on a
VGA 320x200 256 colour screen.
RUN FILE SIZE: 457 bytes.
*/

?use80386
?resize FALSE
?assumeDSSS TRUE

?include "VIDEO.H--"
?include "VGA.H--"
?include "RANDOM.H--"
?include "KEYCODES.H--"

byte palette[768];

// byte pic = FROM "c--.cut";

word F;
word LowLimit;


void SetCols ()
byte N;
{

/*
BX = 0;
do {
SI = BX+BX+BX;
palette[SI] = BL >> 2;
palette[SI+1] = BL >> 3;
palette[SI+2] = 0;
BX++;
} while( BX < 256 );
*/


palette[0]=0;
palette[1]=0;
palette[2]=0;
BX = 0;
do {
DI = BX+BX+BX;

AX = BX * 64 / 85;
DL = AL;
palette[DI+3] = DL;
palette[DI+3+1] = 0;
palette[DI+3+2] = 0;

palette[DI+3+85+85+85] = 63;
palette[DI+3+85+85+85+1] = DL;
palette[DI+3+85+85+85+2] = 0;

palette[DI+3+85+85+85+85+85+85] = 63;
palette[DI+3+85+85+85+85+85+85+1] = 63;
palette[DI+3+85+85+85+85+85+85+2] = DL;

BX++;
} while( BX < 85 );


SETVGAPALETTE( ,0,256,#palette);
}



void AddFire (word N)
{
loop(N)
{
AX = RAND()%10+1;
SI = AX+AX;
AX = RAND()%298 + 64010;
DI = AX;
AL = RAND()&127 + 128;
loop(SI)
{
ESBYTE[DI] = AL;
ESBYTE[DI+640] = AL;
DI++;
}
}
}


void CopyAvg ()
{
DI = 1280;
do {
BX = 2;
do {
AX = ESBYTE[DI+BX-2] + ESBYTE[DI+BX+2] + ESBYTE[DI+BX] +
ESBYTE[DI+BX+640] / 4;
AX = AX + ESBYTE[DI+BX-640] >> 1;
IF( AL > 128 )
AL-=2;
ELSE IF( AL > 3)
AL -=4;
ELSE
AL = 0;

AH = AL;
ESWORD[DI+BX-1280] = AX;
ESWORD[DI+BX-1280+320] = AX;
BX += 2;
} while( BX < 318 );
DI += 640;
} while( DI < 320*204 );
}



void main ()
{
@ SETVIDEOMODE(byte vid_320x200_256);

SetCols();

ES = 0xA000;

F = 0;
do {
AddFire(F / 32 + 1);
CopyAvg();
IF( F < 512 )
F++;
LowLimit = F >> 2 + 128 >> 2;
// IF( F % 80 == 0 )
// overimage19(80,90,#pic,0);
} while( BIOSKEYCHECK() == 0 );

do {BIOSREADKEY();
} while( BIOSKEYCHECK() != 0 );

@ SETVIDEOMODE(byte vid_text80c);
}


/* end of FIRE.C-- */

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:48    [W:0.301 / U:1.552 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site