Am Wed, 09 Apr 2008 02:07:36 GMT schrieb mark r rivet:
> On Tue, 08 Apr 2008 02:32:13 GMT, Frank Kotler <spamtrap@[EMAIL PROTECTED]
>
> wrote:
>
>>mark r rivet wrote:
>>> I'm new to assembly programming except for z80 coarse I took in the
>>> 80's. So I downloaded: Nasm, Nasmide, Alink and have the book
>>> "Assembly Language step by step with Dos and Linux". Is this good or
>>> do I need something else.
> Or start off "Step by Step" and see where it takes you!
>
> Thanks alot Frank. Let me explain the reason for my new interest in
> assembly. I have been running this really old dos screen saver called
> "Dazzle" you can find it on the net by searching for Dazzle50.zip.
I like it too. I found it here:
http://files.chatnfiles.com/ShareWare%20Heaven/GRAPHICS/DAZZLE50.ZIP
> I
> have run this most amazing program since the days of the 286, 1980 or
> so.
Do***entation for Revision 5.0f 22 July 1992
> Anyway 20 years later I am still amazed when I look at it. I need
> to know what makes it tick. I don't have the source code, so I want to
> disassemble the .exe and study it. I have the disassembler IDA. it
> disassembled nicely. Now I just need a crash course in assembly. But
> from what Ican gather from the disassembly, it's a sixteen bit
> program. It would make me very happy to understand this code and ****t
> it to 32bit and help to immortalize this freaking great code. Maybe
> you could download this program and give me some help with this. One
> way or another, I have to understand this code. I just have to!
DAZZLE is copyrighted shareware.
[Dazzle.doc]
....
3.1. Usage Limitation: Please note that this program is NOT FREE
....
11. USAGE WITHIN WINDOWS
DAZZLE has been tested with both Windows2.0 and Windows3.x, both with
excellent results. While a true Windows Application Interface is available
from MicroTronics, this version is very usable as is. DAZZLE can be left
inactive in the background, and brought up on the screen where it was last
(It also works fine under Win2K(SP4). Dirk)
....
DAZZLE is written mostly in Borland C 3.0 (copyright Borland).
Assembler code for direct video control was used mostly due to two
characteristics of DAZZLE: all image generation is done a single pixel at
a
time, thus video write mode 2 was needed for EGA speed; secondly, the VGA
mode uses the not-so-standard but highly ****table 320x400 mode instead of
the normal BIOS sup****ted 320x200 mode.
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
Looks like ModeX. Google search with "Video ModeX":
http://www.monstersoft.com/tutorial1/glossary/
ModeX
320x240x8bpp un-chained. ModeX is a term that Michael Abrash invented.
This
is an un-chained video mode, which means that you have to use a form of
bank switching to access all the screen memory. Some benefits of this mode
are hardware page flipping, multiple on-card virtual buffers (sometimes
referred to as double buffers), fast horizontal line fills (used for
*very*
fast solid filled polygons), and hardware scrolling. Some drawbacks of
this
mode are that it is difficult to code for and isn't any faster than Mode
13h on a PC today. This mode isn't sup****ted by our VESA library, since it
is outdated and doesn't offer anything we can't already do in a higher
resolution through software. There is an example of how to init ModeX on
the Introduction to Linking External ASM Files Into Borland Pascal page.
....
http://asm.sourceforge.net/articles/modex.html
http://www.gameprogrammer.com/3-tweak.html
http://www.qzx.com/pc-gpe/modex.txt
http://www.programmersheaven.com/download/749/download.aspx
http://www.programmersheaven.com/download/15316/12/ZipView.aspx
http://www.ews.uiuc.edu/~panewman/class/ece398ssl/mp3/vt_modex.c
http://www.patentstorm.us/patents/5801717-description.html
http://www.ping.de/sites/systemcoder/assemble.htm
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
4Bit-Modi are very different, so "video write mode 2" need a ****t-access
to
3CEh, a dummy-read to get the internal adress and finaly writing to the
screen at A000:xxxx(maybe we must switch the bank before).
This must be done for every new pixel that we want to set.
The bit for the Pixel-Mask-Register(3CEh) must be calculate:
2 ^ (((X/8) + 1) * 8 - X) - 1
So we can send it with AL=8 and the calculated bit in AH to the
Pixel-Mask-Register(3CEh) with "out dx,ax".
....
It is much easier to learn how to set a pixel in a 16/24/32-Bit-Videomode,
because for this modi we didnīt need any ****t-access. But for this modi
we canīt use that powerfull color-cycling that we see in DAZZLE.
Dirk


|