[HN Gopher] Restored F80 compiler code for CP/M
       ___________________________________________________________________
        
       Restored F80 compiler code for CP/M
        
       Author : elvis70
       Score  : 60 points
       Date   : 2022-04-10 14:27 UTC (8 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | throwaway81523 wrote:
       | F80 is Microsoft Fortran 80, in case you don't feel like clicking
       | to make sure. And it is a disassembled binary, not the original
       | source code, in case you were hoping.
        
         | anonymousiam wrote:
         | I had a copy of this in the early 80's, but after reading the
         | documentation, I decided that it was almost useless so I never
         | actually used it. Microsoft FORTRAN 80 was a limited subset of
         | FORTRAN IV and not even close to FORTRAN 77.
        
           | adrian_b wrote:
           | FORTRAN 77 (approved in 1978-04) has appeared after Intel
           | 8080 (1974) and Zilog Z80 (1976).
           | 
           | It would have made very little sense for a company willing to
           | make a FORTRAN 77 compiler to target already obsolete
           | microprocessors, instead of targetting the state-of-the-art
           | Intel 8086/8088 or Motorola MC68000.
           | 
           | The Microsoft F80 compiler would have indeed been useless for
           | anyone having unlimited access to a CPU more powerful than a
           | Z80.
           | 
           | Nevertheless there were many who had to be content with an
           | 8080/8085/Z80. For them, there was nothing better than
           | Microsoft F80 for serious numeric computation.
           | 
           | FORTRAN IV was the language in which a huge amount of high
           | quality numeric computation libraries were easily available.
           | No library was available in Fortran 77 at that time.
           | 
           | The language implemented by F80 was pretty standard. It
           | lacked many extensions frequently provided by other
           | compilers, but that did not matter much, because the
           | libraries that you would want to use were written to use only
           | strictly standard features, and not vendor extensions.
           | 
           | Before using MS F80, I had used IBM mainframes and DEC PDP-11
           | minicomputers. I do not remember any special difficulty in
           | porting the IBM/DEC Fortran programs to MS F80.
           | 
           | Obviously, an 8080/Z80, when doing floating-point
           | computations, was between 10 times and 1000 times slower than
           | an IBM or DEC computer with hardware FPU.
           | 
           | Even so, for me, passing to MS F80, where I had exclusive
           | access to the computer 24/7, was a huge progress in
           | comparison to using a shared mainframe or minicomputer, and I
           | could be much more productive, despite the slow computer.
        
       | black_13 wrote:
        
       | adrian_b wrote:
       | I have used this compiler for a few years.
       | 
       | At that time I have also disassembled a part of it, but not the
       | compiler executable.
       | 
       | I have disassembled the Fortran runtime library used by the
       | compiler for generating code.
       | 
       | Disassembling the library was more useful, because I wanted to
       | modify some of the standard functions, e.g. be replacing the
       | multiplication algorithms with faster algorithms.
       | 
       | Because the target CPU for the compiler were the 8-bit processors
       | compatible with Intel 8080, which could perform in a single
       | instruction only very simple operations, the code generated by
       | the F80 compiler consisted mostly in a sequence of function
       | invocations for functions from the runtime library.
       | 
       | Even a 16-bit multiplication or a 32-bit addition were operations
       | complex enough to be done by library functions.
       | 
       | So the runtime library included a set of functions for
       | implementing all the Fortran operators and all the Fortran
       | intrinsic functions, for all the sizes of floating-point numbers
       | or integer numbers, including operators with mixed operand types,
       | e.g. besides functions for multiplying double precision numbers
       | or single precision numbers there were also functions for
       | multiplying a double-precision with a single-precision, or a
       | double precision with a short integer, or a single-precision with
       | a long integer, and so on.
       | 
       | So there were many functions in the runtime library. The reason
       | why separate functions for mixed types were used instead of
       | applying implicit conversions, was that multiplication, divisions
       | and other such operations were very slow on 8080/Z80 (requiring
       | many milliseconds, instead of much less than a nanosecond on
       | modern CPUs). So taking advantage that one of the operands was
       | smaller could make the function faster.
        
       | aninteger wrote:
       | I always wonder what the early c++ compilers looked like.
       | Something that targeted AT&T 2.0 or 2.1 C++, so predating C++98.
       | 
       | I guess all we really have to go on is cfront or early gcc
       | (1.15.3 was the first version with a c++ front end). We also have
       | Walter Bright's Digital Mars compiler but how different is this
       | from Zortech?
        
         | adrian_b wrote:
         | In 1991, I began using C++, with both the Microsoft C++
         | compiler and the Borland Turbo C++ compiler (on a PC/AT clone
         | with a 386DX-25).
         | 
         | In the end, I have used mostly the Microsoft C++ compiler, but
         | not because I had noticed any problem with the Borland
         | compiler, but because the library delivered by Microsoft
         | happened to include some functions that I needed frequently,
         | and which were missing in the Borland library.
         | 
         | Because at that time there was no standard, even if the
         | language accepted by the two compilers was mostly the same, the
         | libraries were quite different.
         | 
         | I do not know how well templates worked in those early
         | compilers, because I did not attempt to use templates in any
         | program written during those years.
         | 
         | Except for templates and for multiple inheritance, which I have
         | used only seldom, I had exercised all other language features
         | in some complex programs, which simulated some physical models.
         | 
         | In general using C++ at that stage was, at least for me, a
         | pleasant experience in comparison with the earlier use of
         | languages like C, Fortran, Pascal or Basic. Because my programs
         | included a lot of complicated formulae whose operands were
         | matrices or vectors of complex numbers, I have especially
         | appreciated using overloaded operators to reduce dramatically
         | the size of the formulae, making them much more easy to read
         | than in my earlier programs.
         | 
         | In my opinion, the Java creators had some weird mental
         | problems, because they believed that it is better to write and
         | read something like:
         | 
         | cplx_vector_add(A, cplx_vector_sub(cplx_mat_vec_mul(B, C),
         | cplx_mat_vec_mul(D, cplx_mat_vec_mul(E, F))))
         | 
         | instead of writing and reading something like:
         | 
         | A + B * C - D * E * F
         | 
         | (The formulae that I had to use were much more complicated than
         | in the example above, so the reduction in text size was much
         | larger)
         | 
         | I did not have any complaints about the performance of the
         | compilation or execution of the programs.
         | 
         | I have found once a bug in a certain version of the Microsoft
         | C++ compiler, where depending on the order of some
         | declarations, for which there was no reason to be significant,
         | either correct or buggy code was generated. However the next
         | compiler version no longer had the bug.
         | 
         | Both the Microsoft C++ compiler and the Borland Turbo C++
         | compiler had superb documentation.
         | 
         | Even without knowing anything about C++ and without any other
         | books or publications on the subject (and obviously without
         | Internet), just reading carefully the set of manuals provided
         | with the compiler was enough for becoming a good C++ programmer
         | (assuming that you were familiar with programming in any other
         | language).
         | 
         | I think that actually the largest difference that I feel when I
         | compare now an early C++ compiler with a current C++ compiler,
         | is not that the current C++ language has 5 times more features
         | than early C++, but that the early compilers were paired with a
         | huge quantity of documentation, which seemed to have required
         | about as much writing effort as writing the compiler.
        
         | zabzonk wrote:
         | > I always wonder what the early c++ compilers looked like.
         | 
         | Pretty horrible. I attempted to use the E (education) release
         | of cfront, and failed miserably (couldn't install it).
         | 
         | I then was forced to use the Glockenspiel compiler (based on
         | cfront) and running on OS/2 (eek!) who's favourite error
         | message was a core dump - this was at a training company, and
         | the combination of very bad error messages and OS/2 was not
         | popular with our clients.
         | 
         | The Zortech compiler was the first good one, and then
         | Microsofts. Then IBM came out with a very good one on AIX.
         | 
         | I may well have got the sequencing wrong here - so long ago and
         | far away :-)
        
           | lallysingh wrote:
           | Borland turbo c++ was pretty good, and v4 came with a ton of
           | printed docs on the standard library.
        
             | WalterBright wrote:
             | Borland came out much later than Zortech C++. Borland
             | abandoned their own OOP extensions to C when they saw how
             | well ZTC++ was selling.
        
             | zabzonk wrote:
             | Indeed - completely forgot about that. Though Borland
             | really dropped the ball later, with horrible non-standard
             | extensions to the language.
             | 
             | And of course many people in SE Asia are still being
             | damaged by still being taught using Turbo C++ when they
             | could be usefully using GCC or clang.
        
               | zozbot234 wrote:
               | > And of course many people in SE Asia are still being
               | damaged by still being taught using Turbo C++ when they
               | could be usefully using GCC or clang.
               | 
               | Reason number X for someone to work on semi-faithfully
               | cloning that MS-DOS-era TUI interface so that it can work
               | as an IDE on modern systems and compilers, piggibacking
               | on things like LSP servers. It was done already for the
               | Pascal version ("fp" ide), and we also have things like
               | QB64. Hopefully it's just a matter of someone being
               | inspired to do the work.
        
               | Brian_K_White wrote:
               | I forgot, until now, that once upon a time I was building
               | & packaging xwpe for sco osr5 for a while.
               | 
               | https://web.archive.org/web/20160321050842/http://www.alj
               | ex....
               | 
               | It's like an X11 rendition of the Borland tui.
               | 
               | It didn't have a logo or icon so I made one. (several
               | crap ones actually)
               | 
               | Now the modern system I was using that emulated-old-thing
               | on is itself even older than turboc was at the time.
        
               | zozbot234 wrote:
               | Nice. Software homepage is still up at
               | http://identicalsoftware.com/xwpe/ (with self-signed
               | https), screenshots at
               | http://identicalsoftware.com/xwpe/screenshots.html . FAQ
               | about the original software preserved at https://web.arch
               | ive.org/web/20030402074122/http://www.astro.... (from
               | 2003(!), later versions are 404s). Ironically enough, the
               | homepage itself describes this as a fork aiming to
               | continue maintenance since the previous author of the
               | software had stopped responding to inquiries about it. A
               | perfect example, if perhaps a regrettably short-lived
               | one, of how ensuring the Right to Fork can help address
               | concerns about FLOSS maintainership.
        
         | WalterBright wrote:
         | > Walter Bright's Digital Mars compiler but how different is
         | this from Zortech?
         | 
         | It's the same compiler, but upgraded for C++98. It's Open
         | Source now.
         | 
         | https://github.com/DigitalMars/dmc
        
       | jmcguckin wrote:
       | Wasn't this compiler liscenced from Silicon Valley Software?
        
       | vegesm wrote:
       | Slightly related: I got the first C compiler restored and ported
       | to modern C [1]. It runs on Linux and can call libc functions,
       | though it is restricted to 32bit mode.
       | 
       | [1] https://github.com/vegesm/c72
        
       ___________________________________________________________________
       (page generated 2022-04-10 23:01 UTC)