scene.org File Archive

File download

<root>­/­mags­/­hugi­/­compos/hcompo24.zip

File size:
19 153 bytes (18.70K)
File date:
2008-11-08 23:04:10
Download count:
all-time: 474

Preview

  • BIG.BIN 64.00K
  • BIG.TXT 18B
  • CIRCLE.BIN 31B
  • CIRCLE.TXT 24B
  • EXAMPLE.ASM 11.04K
  • EXAMPLE.COM 656B
  • FILL1.BIN 10B
  • FILL1.TXT 22B
  • FILL2.BIN 1.64K
  • FILL2.TXT 22B
  • FILL3.BIN 30B
  • FILL3.TXT 22B
  • GENERAL.TXT 10.44K
  • MOVE1.BIN 33B
  • MOVE1.TXT 22B
  • MOVE2.BIN 62B
  • MOVE2.TXT 22B
  • MULTI.TXT 100B
  • RULES.TXT 11.75K
  • SMALL.BIN 1B
  • SMALL.TXT 22B
  • TEST.ASM 5.56K
  • TEST.COM 626B
  • TESTME.BAT 1.22K

file_id.diz

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
        h u g i   s i z e   c o d i n g   c o m p e t i t i o n   # 24

                                 infofile v1.3
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


The Tortiose and the Hare

The task for Hugi Compo 24, is to create a program that when given a stream
of bytes, will draw to the screen a set of pixels.  This stream of data
will be a set of commands to move the Torriose around the screen, drawing
pixels as he goes.

The Tortiose will be able to draw single pixels, lines, circles, etc., using
256 colors.

Since we have had many compos get a filename from the command line, I have
decided that your entry will prompt the user for a filename instead.

These are the rules:
 - Your entry will prompt the user for a filename.
 - The user will enter a 8.3 DOS filename and press ENTER.
 - You can assume the filename is valid and exists in the
   current directory.
 - You will read the bytes from the file, either all at once,
   then draw the screen, or a byte at a time, while drawing the
   screen.  You may do it as you please.
 - You will be sure to close the file before exiting.
 - You can not use the DOS EXIT service to close the file for 
   you.  You will see why a little later.
 - Once you have drawn the screen as the data describes, you
   will loop back to the first of the program to accept another
   filename.
 - If the filename is empty, i.e.: The ENTER key was pressed with
   no name given, you will exit to DOS.
 - Since you will be looping through like this, you must close
   the file handle before you loop.
 - You can assume that the Tortiose will start at coord's 0,0
   on the first filename, but will remain at the last position
   of the last command on any consecutive files entered.  i.e.:
   the coord's for the Tortiose will only be at 0,0 on the first
   command unless a command through out the stream places the
   tortious back at that coor'd.
 - Starting color is zero (0)
 - Pen is off at start of app.
 - On Exit of app, you must change back to screen mode 03h
 - When you loop back to get the filename, you must save the
   current contents of the mode 13h video screen, go to mode 03h
   get the filename, then if not "empty", go to mode 13h and restore
   the video screen from saved memory.  The video screen mode
   *must* be mode 13h.  You can not use a compatible VESA mode
   and set/clear the "clear video screen" bit.  You must save
   and restore the 64000 bytes of data yourself.
 - There is no limit on the count of times this loop will take place.

About the data:
 - You can assume that it is a consecutive stream of bytes and
   each command is a single byte.
 - You can not assume that any parameters for the commands are single
   bytes, and if they are larger than bytes, they will be in Intel
   little-endian order.
 - You must complete one command before moving on to the next command
   in the data stream.
 - You may *NOT* "draw" the data to a buffer before sending to the
   screen.  You *MUST* draw each command to the screen before moving
   on to the next command.
 - On any movement command that would move the Tortoise off the edge
   of the screen, you simple stop at the edge.  i.e.: If the Tortious
   is three (3) positions from the right side and the command is to
   move four (4) steps to the right, you ignore the last step and stay
   at the screens right edge.
 - The screen mode will be mode 13h (320x200 256 colors) and will be
   at physical address 0x0A0000
 - Only command 8 changes the pen color.  Any other command that has
   a trailing color byte uses that color, but the next command uses
   the orignal pen color if applicable.
 - Only commands 1, 2, 3, and 4 care if the pen is on or off.
   All other commands draw to the screen whether the pen is on or off.
 - Commands 1, 2, 3, and 4 draw a line to the given position.  i.e.:
   a series of pixels are written in horizontal/vertical line count
   times.  For example:  If command 4 is given with a count word of
   10, you draw 10 pixels to the right if the pen is on.  If it is
   of, you do not change the color of the current pixels as you move
   10 pixels to the right.
 - Unless anyone objects, let us assume that all memory from CS:0000
   to the EBDA (Extended BIOS Data Area) at 0x9FC00 is available to
   your entry.  Unless you have a wierd TSR or DOS setup, all memory
   above CS:0000 should be available until the EBDA is encountered.
     ** please correct me if I am wrong.  It has been a while **
 - You may assume that the command file contains only valid commands.

The data commands are:
 00h - nop
 01h - Move Up
 02h - Move Down
       - A trialing byte will be the distance to move.
       - The offset will be zero based from the current position.
         If the offset is zero (0), no movement is made.
 03h - Move Left
 04h - Move Right
       - A trialing 16-bit word will be the distance to move.
       - The offset will be zero based from the current position.
         If the offset is zero (0), no movement is made.
 05h - Move to coord's
       - A trailing 16-bit word pair will be the actual coord's
       - the first 16-bit word is the X (horz) coord and the
         second is the Y (vert).  All coord's are zero based.
       - No drawing is done from current position to new position.
       - You may assume that the coord's are within the boundarys.
         i.e: 0 <= X <= 319
              0 <= Y <= 199
         This means that the second 16-bit word will have a zero
         as its high byte.
 06h - Pen on
       - Simply tells the processor to draw when movement is made.
 07h - Pen off
       - Simply tells the processor to not draw when movement is made.
 08h - Change color
       - A trialing byte will be the new color to use.
 09h - Pause for user key press.
       - Pause and wait for the user to press a key.
       - No drawing or processing of any further commands will be
         performed until the key is removed from the INT 16h buffer.
       - The key code will be ignored.
 10h - Draw a circle
       - Draw a circle with the center at this position and a
         trialing byte as the radius.  This means no circle larger
         than a radius of 255.
       - again, if the circle will be drawn off the screen, you 
         do not draw the pixels that would be beyond the boundarys.
       - You may use the FPU to do the calculations, but it is not
         mandatory.  However, you *must* use five (5) decimal places
         of Pi (3.14159) when calculating the distance to draw your
         circle.
       - the trailing by will not be zero.
 11h - Fill an area
       - A trailing 8-bit byte denotes the color.
       - You will replace the current positions colored pixels with the
         newly given color with out passing a different colored boundary.
       - i.e:  You must change the current positions pixel color to the
         newly given color, and all of the ones next to it as long as they
         match the firsts original color.  (That wasn't very clear, was it?
         (Ask me is you don't quite understand that.  It is the typical
         "fill" tool of most graphic applications.)


I have left the Circle Drawing command in the rules.  The rule will be:

*If your circle draw routine creates a circle on the screen with the
 same pixel count and positions as the example does, your circle draw 
 routine passes the test suit.*

This means you can use any type of circle draw algo/routine you would like
as long as it draws the same circle as the test suit does.

I have left out the line draw command.  I wanted either/or.  Not both. :)

-------------------------------- [SUBMISSION] -------------------------------

You have to send

() the sourcecode of your entry
() the executable of your entry ("entry.com")

to Adok so that he can analyse and evaluate your entry.

Send your entries to:
                         fys@frontiernet.net

It  would  be best if you could submit  your entry as early as possible. Then
Adok  can inform you about bugs, if he finds any, and you have enough time to
fix  them.  Attention: if he finds  no  bugs, this doesn't automatically mean
that your entry is bug-free.

You can submit updates to your entries all the time till the deadline.

Entries that do not agree with these rules will be disqualified. Their coders
will be informed about the mistake, and they can re-submit a bugfixed version
unless the compo is over.

If  the  compo  is over and a hidden  flaw  is found in one of the originally
accepted  entries during the public judgement period, the best older entry of
this competitor that fits all the rules will qualify instead.

------------------------------- [PRE-RESULTS] -------------------------------

Preliminary  results of this compo will be released on the compo-web-site and
always  updated  after  receiving  a new entry.  In  this  way the compo will
hopefully be exciting.

Compo-web-site URL:
                     http://www.frontiernet.net/~fys/hugi/hcompo.htm


--------------------------------- [SCHEDULE] --------------------------------

 July 01, 2005                   Compo starts
 Sept 30, 2005, 11:59 pm mst     Deadline for entry submission, compo is over
  Oct 01, 2005                   Entries and beta results will be released,
                                 Start of public judgement
  Oct 08, 2005, 11:59 pm mst     End of public judgement
  Oct 09, 2005                   Final results will be released

----------------------------- [PUBLIC JUDGEMENT] ----------------------------

After the deadline for entry submission,  as soon as the entries and the beta
results  are released, the public judgement starts.  During this week you can
discuss  and object to the entries that  seem to break some rule. Please send
your  objections  to  the compo-mailinglist (see  below).  Adok and/or a jury
formed  by  him will check if your  objections are according to the rules. If
they are, the invalid entry will be disqualified.

---------------------------------- [PRIZES] ---------------------------------

I'm  sorry if I disappoint you, but  there are no material prizes. Everything
is  just  a matter of  honor and  fame. Moreover,  all competitors  will  get
points and   be listed in  the 'World League Table of  Assembly' situated  at
the  compo-web-site.  Reaching a good place at  a  compo and even more in the
World League Table of Assembly is a good visiting-card and recommendation for
every competitor!

------------------------------- [MAILINGLIST] -------------------------------

The  purpose of the Hugi Compo Mailinglist  is to inform about new compos and
provide a discussion forum for the competitors. At the moment there are about
325 subscribers.

To  subscribe send a mail  to hugi-compo-subscribe@egroups.com. You'll get an
automatically  generated  mail which confirms  your subscription within a few
hours.  Then  you  start  getting the mails  the  others  have posted to this
mailinglist.

Mails for the list have to be sent to:
        hugi-compo-subscribe@yahoogroups.com

If you want to unsubscribe, send a mail to:
        hugi-compo-unsubscribe@yahoogroups.com

-------------------------------- [ADDRESSES] --------------------------------

Send your entries to:
                                         hugi@netway.at        [Adok/Hugi]
Compo-homepage
(pre-results, world league table, etc.)
                          http://www.frontiernet.net/~fys/hugi/hcompo.htm
Subscribe to the mailinglist:
                                         hugi-compo-subscribe@egroups.com

-----------------------------------------------------------------------------

Thanks for reading this info file!