7-22-00:  I have most of the codes in, the main formulas are already in
          and functioning. Now i need the label support. To make it all
          Much easier, i am supporting in for 32 bit addressing (for
          natural use) But, unless you make the EXE header, large program's
          won't work. I have added in some new codes.

          @name code ;this code was used in my original assembler. For
                      compadibilty, it is 16 bits large.
          %name code ;THIS code is a new one. Like the @, this one is
                      32 bits large. naturally used for addressing.
                      (changing addressing isn't hard, as they are put
                      in for x's for now)
          ^name code ;this is for 1 byte. This is the smallest one you
                      can get.

   NOTE: for the codes of @,%,^, these use standard number codes.
   Examples:
             1020h
             400
             202o
             1111b
             These are legal. (quite flexible eh? :) )

  I will go through and add some MMX support after i get the rest of these
   working correctly.

  Also, i will not include Label VS label changes. The only acception is
   CPX, as that moves when you go through it...
  This personally, saves me a LOT of hassle while writing the program..

  JUMPS.. This is the only place i see a problem. Mainly for how far forward
  or how far back something needs to be. I think i can do it by using an
  Adjustment figure, make them all assume 3 bytes (1 jump, 16 bit indirective)
  and then, when and as it needs, it will be adjusting all values related
  to memory. But this is quite a hassle too... for now, i will just say,
  all jmp's are 16 bit indirective..

  to solve this, i have intilled a little feature. When you choose a jump,
  and you know how far it is going to be (over 128, rough guess) then you
  can select direct choices.. they are
   SHORT, NEAR, FAR
   Short, 127   forward and 128   back (not including the size)
   Near,  32767 forward and 32678 back
   Far,   Direct, 16 bit offset, 16 bit segment address

   if you don't use these, NEAR is assumed..

  INCLUDES:
  I have used the original format for includes, similar to C, but very
  different. They work like this.

  *function file
  This one will open up, and copy all the functions. The !'s (locators) are
  ignored.

  #Function file
  This merely tells it what file it is working with now.

  !function name
  This copies individual functions, for use with programs. 

 7-23-00: V0.10
 I have added label support, and it looks great. For some labels, inside
texts (all uppercase, will be changed by the label name) you just use the
uppercase of it all.. to use a labelname without it interfereing, use this
format. (or soemthing similar)
@VIDEO 1
db "VIDE","O and whatever else"

 with this format, the label name doesn't totally match, and since the
source is only 3 bytes longer, i don't think you will mind too much.. just
remember to use what you can.. before you mess up :)

 I have also fixed a bug i never saw before, involving the MOV Reg, imm's,
and i used an octal formula to fix it. Don't mess with it.

 That's about it..

 7-24-00: V0.11
 Some little looping things i noticed.. This is the same thing as the jumps,
but warning is issued, you should use SHORT or NEAR when you are using them.
 NEAR IS assumed. Sorry.. can't fix that.. not without a LOT of hassle..
 so.. if you do JB something, it is near, and if you do JB SHORT something,
it is the 8088 version, smaller and closer.. something i noticed.. and to
fix part of that, i re-arranged two intructions.. don't ask... (for those
instructions, FAR doesn't work very well)

 I have added the support for immediate values, other then the AX registers.
To use them, just use them. There are regular, and Sign Exstended..
 7-25-00: V0.12
 Changing varies peices of code for size, and stability.
 7-28-00: V0.13
 Fixed another bug, involving the include, and fixed the L-FUN.bas program,
so the functions are supported for the old, and new format.
 8-2-00:  V0.14
 I got tired of it being so slow, so i did a few changes.. now it works as
before, but much faster.. (the first section anyway) so.. enjoy :) (now it can
run faster then hell :) )
 8-4-00:  V0.16
 I added some 32 bit register memory support.. i also did a quick formula that
saves space, (and all together, time too) for the 32 bit registers.. in the
other half anyway, the 16 and 8 bit ones are still there.. (16 and 32 are
highly connected)
 Also, i have fixed a bug when i changed it all.. making most of the code
normal again. Also.. a label my itself should now work..
 8-5-00: V0.17
 Fixed more bugs, and got the registers done.. (i think) also.. i have added
support to the common Segment registers, to regular ones.. Also Control
registers, and Debugging registers. Careful.. Next planned is MMX!! :)
 8-6-00: V0.18
 Made a change, so you can change the value of %cpx with another label.. this
increases the abilities, but be careful.. even i can't control what you do :)
 8-10-00: V0.19
 I added a FAST command.. This is with two parts. M and F.. Make fast and
Fast.. It is ONLY for finished work. Ready for my compiler on any computer.
This GREATLY increases time when doing a program. It makes a file called,
[assmeblefile].fst and writes the labels, how many there are, the size of
the calculated program, and cpxx, the required function. So it doesn't have
to search, instead once it is done prepairing, it just uses these labels.
 Saves a lot of time :)
 9-12-00: V0.20
 I fixed a little bug i know will come along.. I fixed the Ah problem, but not
the other BH and CH and DH problems.. (Hex, not little registers) by adding
the 0 in front of them, they are numbers, and NOT registers
 Also, i have fixed the small bug involving the size for certain jumps. By
doing the looking twice, it is certain to have the right size this time. Where
by guessing the instruction, it didn't know what it was getting, and could be
off by as much as 3 bytes.
 9-24-00: V0.21
 Found a little bug involving the LOOP protocol. I don't know what, but it was
doing 3-5 bytes for each time it looped, and it made everything out of sync.
 I reordered it, and added a few codes for checking, these need to be redone
later, but for main work, it is fixed. Also added a 2 time step (like JMP's)
so it redoes it after it knows the true instruction size.. plus the length of
the number.
 9-29-00: V0.21
 Just decided to write a manual for my program. (So don't try to kill me if
you don't understand it totally :) ) It has some main information i posted
in here, but oh well. I really need to write some code for label checking..
10-11-00: V0.22
 Found another bug. This is a tiny one, when you have a comma within the "'s
it was counted as part of the instruction count. this made me have a terrible
time finding. But it should work now, only outside of the "'s does it count
the commas..
11-06-00: V0.22
 Some odd bug...
 I notice this bug only comes apparent when you don't write anything. Example,
if you make a jump for the VERY next line (so the value is 0) something
happens, and it adds 2. I don't know, but just put 1 or 2 NOP's to fix this
until you write something in that section.
02-05-00: V0.23
 I noticed on some computations, i would get 6666h for a 32bit code.. that is
because on some previous parts, before i added the new 32bit translate
section, some parts i didn't take that out of.. Although ok, it causes SOME
problems. Not really, the second 66h (32 bit change) code is ignored.. so..
it just makes the output a little smaller.

02-18-01: V0.23
 BUG NOTICED!!!

 Take note, this bug took 3 weeks to catch.. i am not going to patch it, but
keep this in mind. If you use a label, and then FAIL to use an instruction,
using it as a pointer. It will still jump through the instruction identifyer
and screw up the code.

 To fix this, just put something in the label, either the next instruction
or a NOP, and it will fix.
05-21-01: V0.24
 While working on the new assembler, i noticed the codes for the PUSH FS,GS
and POP FS,GS were wrong. So i updated them. That's all

05-26-01: V0.25
 Found a bug with the CALL function. Fixed now, it should now support all
calls as before, and all new ones too. At least.. for now, no promises

06-28-01: V0.26
 Well, an odd bug. If you put BP+0, there would be an extra 0. A single byte
bug. It's fixed now.
12-25-01: V0.26
 It refuses TAB's, i'm not supprised. I will make a program shortly, to fix
this problem. but i won't bother updating this program. not worth it, with
my new program almost done.
12-30-01: V0.27
 Well, a nice little bug. I didn't see it before, but it's with a few
instructions. if it won't use an instruction you know it should, try checking
to see if it says ( A>128 then) Rather then seeing if it's compadible..

    Source: geocities.com/siliconvalley/haven/2635

               ( geocities.com/siliconvalley/haven)                   ( geocities.com/siliconvalley)