flat assembler
Message board for the users of flat assembler.
Index
> Compiler Internals > How to download an older version of FASM ? Goto page 1, 2 Next |
Author |
|
Tomasz Grysztar 13 May 2012, 19:57
The fas documentation was intended to be version-independent. Note this section:
fas documentation wrote: If header is shorter than 64 bytes, it comes from a version that does not support dumping some of the structures. It should then be interpreted that the data for missing structures could not be provided, not that the size of that data is zero. As for the old versions of fasm, you can find them on the old website. |
|||
13 May 2012, 19:57 |
|
shutdownall 13 May 2012, 20:11
I did read that but not sure if symbol references is a new feature added to fasm. Would be a good idea to add fas.txt somewhere to the sources. The link to the website didn't really help as 1.69 was not archived nor does the archive contain the manuals.
I will try to interprete the manual myself but would be a better feeling to have a trustable documentation. |
|||
13 May 2012, 20:11 |
|
Tomasz Grysztar 13 May 2012, 20:14
The newer version of this documentation is intended to be more complete and corrected and I wouldn't really want you to use the older one, that's why it's previous stages are not archived.
If there was something there that wouldn't work correctly with older versions, it would be documented as well. The thing is: this document should a base for writing a tools that should work with all .fas files, no matter what version of fasm produced them. |
|||
13 May 2012, 20:14 |
|
shutdownall 13 May 2012, 20:50
Tomasz Grysztar wrote: The newer version of this documentation is intended to be more complete and corrected and I wouldn't really want you to use the older one. Okay, accepted. Tomasz Grysztar wrote: The thing is: this document should a base for writing a tools that should work with all .fas files, no matter what version of fasm produced them. You do not really believe this, don't you ? In fact I don't like to have separate command line tools as I integrate some useful ore needed functions directly in the IDE. So in that case wether previous nor newer versions would really benefit from it. But that's my personal philosophy of how things or tools have to work. |
|||
13 May 2012, 20:50 |
|
Tomasz Grysztar 13 May 2012, 21:15
shutdownall wrote: You do not really believe this, don't you ? The idea behind .fas was that it should be some standard format outputted by fasm, so when you follow the specification of this format, you should not have to care about what particular version produced it (though the header contains information about version if you really need it). Just like when you use linker to produce executable from .obj file, you do not expect that the .obj produced by new version of fasm will suddenly be different in such a way that your linker will refuse to work with it. There is a specification for .obj format and it does not depend on what version of what tool is used to produce it. The same I wanted to have with .fas - I had to devise my own format only because none of the existing debug info format were capable of containing all the data fasm can provide and which can be useful for various purposes. Thus came the idea that fasm should have its own format and then external tools could be provided to produce any other debug info format out of it, when needed (just like objconv can be used to convert objects generated by fasm into format that it doesn't support). |
|||
13 May 2012, 21:15 |
|
shutdownall 14 May 2012, 15:10
Tomasz Grysztar wrote:
Yes - I agree in that point. FAS has many many data inside as I looked at the documentation. Even in which pass a label has been stored. That is weird but can offer some useful custom features. In your example with the obj file - well it is not important which version (or which program) created it - every linker will accept it. BUT the object file definition does not change from version to version. (didn't proove - just assume it) |
|||
14 May 2012, 15:10 |
|
Tomasz Grysztar 14 May 2012, 18:20
shutdownall wrote: In your example with the obj file - well it is not important which version (or which program) created it - every linker will accept it. BUT the object file definition does not change from version to version. |
|||
14 May 2012, 18:20 |
|
revolution 01 Mar 2023, 17:18
Tomasz Grysztar wrote: As for the old versions of fasm, you can find them on the old website. |
|||
01 Mar 2023, 17:18 |
|
revolution 01 Mar 2023, 17:29
|
|||
01 Mar 2023, 17:29 |
|
bitRAKE 02 Mar 2023, 17:42
|
|||
02 Mar 2023, 17:42 |
|
revolution 02 Mar 2023, 19:05
Some zip links:
1999-05-04: unreleased version 0.90 1999-07-01: unreleased version 1.00 2000-06-19: release 1.0 2000-07-01: release 1.01 2000-07-06: release 1.02 2000-07-19: release 1.03 2000-08-10: release 1.04 2000-08-16: release 1.05 2000-08-23: release 1.06 2000-10-07: release 1.07 2000-11-13: release 1.08 2001-01-04: release 1.09 2001-03-22: release 1.10 2001-06-25: release 1.11 2001-08-23: release 1.13 2001-10-17: release 1.14 2001-11-17: release 1.20 2002-01-18: release 1.30 2002-02-03: release 1.31 2002-03-06: release 1.32 2002-04-19: release 1.34 2002-05-06: release 1.35 2002-05-22: release 1.36 2002-06-12: release 1.37 2002-07-08: release 1.39 2002-08-04: release 1.40 2002-11-14: release 1.41 2002-12-05: release 1.42 2003-01-10: release 1.43 2003-01-19: release 1.44 2003-02-06: release 1.45 2003-04-09: release 1.46 2003-06-28: release 1.47 2003-07-24: release 1.48 2003-09-16: release 1.49 2003-12-08: release 1.50 2004-01-31: release 1.51 2004-04-03: release 1.52 2004-07-22: release 1.53 2004-08-04: release 1.54 2004-09-12: release 1.55 2004-09-27: release 1.56 2005-01-19: release 1.57 2005-02-12: release 1.58 2005-03-12: release 1.60 2005-06-14: release 1.62 2005-08-08: release 1.64 2006-05-07: release 1.66 2009-06-13: release 1.68 2012-04-17: release 1.70 2012-04-30: release 1.70.01 2012-05-22: release 1.70.02 2012-06-29: release 1.70.03 2012-09-21: release 1.71.00 2012-09-23: release 1.71.01 2012-09-26: release 1.71.02 2012-09-27: release 1.71.03 2012-10-10: release 1.71.04 2012-10-15: release 1.71.05 2012-11-22: release 1.71.06 2012-12-23: release 1.71.07 2013-03-08: release 1.71.08 2013-03-30: release 1.71.09 2013-04-03: release 1.71.10 2013-07-09: release 1.71.11 2013-08-04: release 1.71.12 2013-09-09: release 1.71.13 2013-10-25: release 1.71.14 2013-10-26: release 1.71.15 2013-10-30: release 1.71.16 2014-01-27: release 1.71.17 2014-02-02: release 1.71.18 2014-02-09: release 1.71.19 2014-02-27: release 1.71.20 2014-05-27: release 1.71.21 2014-09-28: release 1.71.22 2014-10-21: release 1.71.23 2014-10-27: release 1.71.24 2014-11-03: release 1.71.25 2014-11-12: release 1.71.26 2014-11-18: release 1.71.27 2014-12-01: release 1.71.28 2014-12-05: release 1.71.29 2014-12-07: release 1.71.30 2014-12-08: release 1.71.31 2015-01-04: release 1.71.32 2015-01-09: release 1.71.33 2015-02-17: release 1.71.34 2015-02-25: release 1.71.35 2015-02-25: release 1.71.36 2015-03-03: release 1.71.37 2015-03-09: release 1.71.38 2015-03-11: release 1.71.39 2015-10-19: release 1.71.40 2015-10-21: release 1.71.41 2015-10-22: release 1.71.42 2015-10-26: release 1.71.43 2015-10-27: release 1.71.44 2015-10-31: release 1.71.45 2015-10-31: release 1.71.46 2015-11-09: release 1.71.47 2015-11-18: release 1.71.48 2015-12-06: release 1.71.49 2016-01-30: release 1.71.50 2016-02-08: release 1.71.51 2016-05-13: release 1.71.52 2016-05-21: release 1.71.53 2016-06-09: release 1.71.54 2016-09-18: release 1.71.55 2016-09-19: release 1.71.56 2016-09-26: release 1.71.57 2016-12-08: release 1.71.58 2017-01-20: release 1.71.59 2017-02-05: release 1.71.60 2017-05-04: release 1.71.61 2017-05-08: release 1.71.62 2017-06-21: release 1.71.63 2017-10-20: release 1.72 2017-11-24: release 1.73.00 2017-11-25: release 1.73.01 2017-12-26: release 1.73.02 2018-04-15: release 1.73.03 2018-04-30: release 1.73.04 2019-01-03: release 1.73.05 2019-01-04: release 1.73.06 2019-01-30: release 1.73.07 2019-01-31: release 1.73.08 2019-02-17: release 1.73.09 2019-04-05: release 1.73.10 2019-04-19: release 1.73.11 2019-05-19: release 1.73.12 2019-07-14: release 1.73.13 2019-07-30: release 1.73.14 2019-08-01: release 1.73.15 2019-08-04: release 1.73.16 2019-11-10: release 1.73.17 2019-11-14: release 1.73.18 2019-11-28: release 1.73.19 2019-11-29: release 1.73.20 2019-12-05: release 1.73.21 2020-02-09: release 1.73.22 2020-04-09: release 1.73.23 2020-04-29: release 1.73.24 2020-08-20: release 1.73.25 2021-01-26: release 1.73.26 2021-01-27: release 1.73.27 2021-09-16: release 1.73.28 2021-12-23: release 1.73.29 2022-02-21: release 1.73.30 |
|||
02 Mar 2023, 19:05 |
|
revolution 02 Mar 2023, 19:30
None of the github zip files have an executable, or any of the examples, that are included in the files hosted on the download page.
Someone starting from zero with fasm still needs flatassembler.net, or another site, hosting the original zips. |
|||
02 Mar 2023, 19:30 |
|
revolution 03 Mar 2023, 04:05
Also none of the github zip files have any of the IDE code, the includes, or macros.
win32ax.inc (et. al.), fasmd & fasmw not included. |
|||
03 Mar 2023, 04:05 |
|
bitRAKE 03 Mar 2023, 06:07
By combining the current WHATSNEW.TXT with the 1.60 version we have brief feature landscape to choose from.
|
|||
03 Mar 2023, 06:07 |
|
revolution 03 Mar 2023, 15:29
I tried to recreate the executable from "2000-06-19: release 1.0" with v1.73.08. It almost gets there, but there are some changes.
First some preliminary work is needed. Step 1: unzip and un-upx the original published fasm.com (32002 bytes). UPX claims to exactly decompress .com files. Step 2: Create a small compatibility prefix file for v1.73 to account for changes in the spec from 23 years ago. Code: irp j,ja,jb,jc,je,jg,jl,jo,jp,js,jz,jae,jbe,jge,jle,jmp,jna,jnb,jnc,jne,jng,jnl,jno,jnp,jns,jnz,jpe,jpo { macro j args \{ match byte, short \\{ j args \\} \} } irp v, Ah,Bh,Ch,Dh,Eh,Fh,\ A0h,A1h,A2h,A3h,A4h,A5h,A6h,A7h,A8h,A9h,AAh,ABh,ACh,ADh,AEh,AFh,\ B0h,B1h,B2h,B3h,B4h,B5h,B6h,B7h,B8h,B9h,BAh,BBh,BCh,BDh,BEh,BFh,\ C0h,C1h,C2h,C3h,C4h,C5h,C6h,C7h,C8h,C9h,CAh,CBh,CCh,CDh,CEh,CFh,\ D0h,D1h,D2h,D3h,D4h,D5h,D6h,D7h,D8h,D9h,DAh,DBh,DCh,DDh,DEh,DFh,\ E0h,E1h,E2h,E3h,E4h,E5h,E6h,E7h,E8h,E9h,EAh,EBh,ECh,EDh,EEh,EFh,\ F0h,F1h,F2h,F3h,F4h,F5h,F6h,F7h,F8h,F9h,FAh,FBh,FCh,FDh,FEh,FFh,\ AF0Fh,BA0Fh,D9DEh,E0DFh,FFFFh,FFFFFh,FFFFF0h { v equ 0#v } include 'fasm.asm' Step 3: Create symbolics links for the longer names used in the source, which DOS would have silently truncated. Code: ln -s expressi.inc source/expressions.inc ln -s preproce.inc source/preprocessor.inc ln -s assemble.inc source/assembler.inc There are 5 differences. One difference encodes one extra byte, four other differences encode eight fewer bytes. Code: 129c129 < 14c: 2e 0f 01 16 88 02 lgdtw cs:0x288 --- > 14c: 2e 66 0f 01 16 89 02 lgdtd cs:0x289 190c190 < 1fc: 68 ff ff push 0xffff --- > 1fd: 6a ff push 0xffff 969c969 < a21: 66 69 c9 0a 00 00 00 imul ecx,ecx,0xa --- > a21: 66 6b c9 0a imul ecx,ecx,0xa 1928c1928 < 16db: 0f 84 7e 00 je 0x175d --- > 16d8: 74 7e je 0x1758 7852c7852 < 5924: 0f 84 7f 00 je 0x59a7 --- > 591f: 74 7f je 0x59a0 Code: system.inc: ;... lgdt pword [cs:GDTR] ; load GDT register ;... GDTR dw 2*8-1 ; limit of GDT dd ? ; linear address of GDT ;... |
|||
03 Mar 2023, 15:29 |
|
revolution 03 Mar 2023, 20:35
The eldest version of fasmw I can find is v1.41. I hope that is just because my DDG-fu is poor, and that older archives do still exist.
V1.41 contains files dated 2001-12-03 (e.g. FASMW.ICO). Which would suggest the earliest version of fasmw might have been v1.30. |
|||
03 Mar 2023, 20:35 |
|
Tomasz Grysztar 04 Mar 2023, 10:28
The 1.41 was indeed the first version of FASMW IDE, but it reused some of the files from the earlier "Assembler Workplace" project, these are the roots going back to 2001 (see also my story about HDOS, which gives a bit more context).
revolution wrote: Someone starting from zero with fasm still needs flatassembler.net, or another site, hosting the original zips. |
|||
04 Mar 2023, 10:28 |
|
revolution 04 Mar 2023, 14:18
Good. I found the v1.40 announcement. It makes no mention of a GUI.
I think an interpreted language might be better than a compiled HLL. Perhaps even bash (ash, sh, etc.) is a good choice. Not because it is great for things like this, but because it is ubiquitous and accessible. Or for non-nix systems perhaps BASIC is a better choice. An old Win95 or DOS machine can run BASIC. It doesn't have to be fast or efficient, it's only got one job to do, running for a one time purpose. More important is that anyone can be confident with how it works and can see that it produces the proper output. Last edited by revolution on 04 Mar 2023, 17:45; edited 1 time in total |
|||
04 Mar 2023, 14:18 |
|
bitRAKE 04 Mar 2023, 15:30
I've been thinking about writing fasmg in LLVM IR (or one of the higher-level abstraction like MIR) - to make it available for all the backends supported by LLVM.
|
|||
04 Mar 2023, 15:30 |
|
Goto page 1, 2 Next < Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2024, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.