HISTORY OF THE QBASIC ASSEMBLER
ADDITION: 2/29/00 added label support.. a little buggy, but works.. ex:
ADDITION: 2/29/00 added size support.. $ex
FIX: 2/29/00 Fixed the label names so they are fixed.. CS:,DS:,ES:,SS:
(comment line 76 to disable this)
FIX: 3/01/00 Fix label support.. But be careful anyway
FIX: 3/02/00 Fixed MOV ??,[BX] combinations.. and others, instead of
being locked on AX and AL (0)
FIX: 3/02/00 Fixed ADD functions, so you can use al,cl,dl,bl-
ah,ch,dh,bh-ax,cx,dx,bx,cs,ds,es,ss.. but the
16 bit registers, use an 8 bit add/minus?, and integer..
ADDITION: 3/02/00 I went though, and put the rest of the jump points on,
but some of these don't make sense...
ADDITION: 3/02/00 I added my instruction ERA, to the list.. it is almost
identicle to DB, but meant for keeping track of
locations, and debugging, specifically so you can print
the exact location.. no "'s are needed.. just what's
after the ERA... (you don't have to use this...)
and all text will be uppercase.. (easier for labels)
FIX: 3/02/00 Fixed SUB and CMP functions, and put them together in the
pattern, 80h, use this new information to make the rest of
the codes easy to finnish
ADDITION: 3/03/00 I have added the @.. This works like an EQU instruction
Basically, say @test 0000, and the test label becomes
0000, or @thing 101F, it's 101F... (useful for some
things, have 2 byte values of two things for useful
information..
ADDITION: 3/04/00 I have added the @CP.. This option works with the @
The main difference, is the location of how many bytes
are present in the program. or the local information.
also, i changed from MKI and CVI to SVE and SVB (My
functions, unsigned) so they support up to 16 bits..
The @CP only ADDS that many bytes you put in there..
it doesn't set the new amount.. Experts only!!
ADDITION: 3/04/00 Also, the +CP (same as @CP) and -CP (takes away that
may bytes) useful for changeing code within your code.
ex.. MOV AX,0000
-CP 0002 ;(move back to start of set number 0000)
NUM: ;catch location
+CP 0002 ;return to normal
NOTE: @CP is unaffected by labels.. +CP is.. so you can use this for more
Flexible buffering.. -CP is also affected by labels.. :)
NOTE: Do becareful, if you get CP under 0, (negative) you will not compile it
right..
FIX: 3/04/00 I went through, and enabled more 32 bit operators, and did
some testing.. as well as added a few other instructions.
Try out the CPUID :)
CHANGE: 3/06/00 Due to some programming, the @CP is now a setting, and a
Label, which updates to the current spot.. this might be
useful later for more advanced programmers.. and i put in
a different counter, so +cp and -cp don't mess up the size
of the programming.. (Estimated size) Experts only :)
(Before, if you put +cp 1000 and nothing else, it would be
4096 extra bytes in the estimated size.. even if you didn't
add any extra codes.. this is what was fixed..)
CP is a label.. but of the current position... careful..
FIX: 3/06/00 When adding the feature so it has a more exact size estimate
i overlooked a little bug, so the last label is always
skipped... This has been fixed..
ADDITION: 3/07/00 While making a few small functions, i added more 32-bit
support, making it faster and easier to work with.. but
make sure all the numbers are there :)
ADDITION: 3/09/00 I added some 'Include' support... it works differently
then C and other assemblers.. simply.. there are 3 commands
first) *somename.asm
this is 'whole library' include..
second) #othername.asm
this opens the file.. then
third) !individual types from othername.asm
this is not perfected.. but there is a counterpart in
othername.asm.. that holds which lines to copy.. with this,
you can also change the order they come in, for simplicity,
or for fun :)
(Counterpart/ Line numbers)
!individual 100(start) 200(end)
NOTE: When making this include support, you must have the functions index
(!) in the order they appear, so my second program and grab the line numbers
ADDITION: 3/09/00 I added more support for options.. you can use more then
1 option at a time.. and for files with a LOT of labels,
use the Percentage to see how fast it is moving...
D/Debug P/Percent X/Default Files
FIX: 3/10/00 I have fixed the entire section for comments ;
from now on, everything after will be erased..
FIX: 3/15/00 Fixed a few things, i am not sure what i fixed...
But there was something about the 2 files only and
no options thing...
ADDITION: 3/16/00 I found information on the PUSH for pushing a 8 bit value
This may work for other things too.. but i need more
information to suceed in the 16 and 32 bit values
FIX: 3/16/00 When i added the CP label control, i forgot, that CPUID
starts with CP.. and therefore destroying my work..
New label is CPX.. this is reserved.. use this as needed
FIX: 3/28/00 I made a little test asm file.. to see how many of which
commands were recodnized.. i am happy to say, most.. and
a few more extensive tests.. but now i need a dissasembler
to make it better.. com/exe to text... we will see..
FIX: 4/02/00 I noticed certain instructions, like adc weren't all
going through.. i have added an extra few lines in, that
fix this, but if there are any others, i will need to find
them... they may be important
and some small bugs
ADDITION: 4/04/00 I noticed that there are 2 different jmp's.. 1 for long and
1 for short.. i will add it as JXX and it will use up to
127 either way.. for other assemblers, simply change JXX
with JMP.. but JMP's will work as well..
FIX: 4/05/00 I added some more support for Xchg (may be more later..)
FIX: 4/06/00 I found a problem with the +cp/+cpx and -cp/-cpx and i just
fixed it.. careful.. it may still have a fault
ADDITION: 4/06/00 I added some code to test the length of the jumps between
the JXX and JMP.. if they are short enough, or too far, it
will tell you in part of the debugging information.. and
for making smaller, and faster code, you may go by these
bits of information :)
-------------------------------------------------------------------------
There are a lot of things to do yet, but i think it is coming pretty well
all these codes i have entered in here i have used debug to help me on..
should you find any errors.. contact me ASAP
Era Scarecrow / 2000
and comments ; will be ignored :).. and if the program stops, use the
Immediate section, and do, PRINT LLN,A$,B$,C$,D$,X$.. this will help
you find your errors.. mainly with LLN (Line in the text file)
BUG LIST:
1) Use full numbers.. especially when working with 16 bit items.. (jmp
mov ax,0000) to go without all the numbers it will think it 8 bit, and
make MAJOR errors (Size and other items..)
2) ADD BX,0010 : This is wrong, it will only accept 1 byte, but the bug,
is the pattern won't accept that without the other byte.. do it this way,
The left half, is minus, and right half is plus.. that way it is easier
to keep track of.. Example.. (the AX uses true 16 bit instead of 8)..
ADD BX,+14 = ADD BX,0014
ADD BX,-42 = ADD BX,4200
ADD BX,4211? The minus is done first, then the plus.. so ADD BX,+11
(If you go over 7f, then it's a minus.. no changes i can control)
3) To get a HEX value, of what was used for the labels, and have them
as a normal text format.. (47h?) Use either DB, and have the label names
in upper case.. or use ERA and it will work just as well.. where
everything is upper case.. (A bug for debugging) :)
4) If you put up labels that don't exsist (something:) or ($something)
or (@something 0000) then you will have problems using the assembler..
               (
geocities.com/siliconvalley/haven)                   (
geocities.com/siliconvalley)