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..