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