Infotek Compiler for HP 9000 Series 200/300 - Printable Version +- HP Forums (https://www.hpmuseum.org/forum) +-- Forum: HP Calculators (and very old HP Computers) (/forum-3.html) +--- Forum: General Forum (/forum-4.html) +--- Thread: Infotek Compiler for HP 9000 Series 200/300 (/thread-6384.html) |
Infotek Compiler for HP 9000 Series 200/300 - Michael Fehlhammer - 06-08-2016 08:06 PM Infotek's BASIC Compiler is an interesting alternative to the HP Compiler; and it is an indispensable tool for those who got special floating point DIO boards from Infotek, like the MF340. The binaries are available at the other museum site, but there is no manual. Without the manual there seems to be no chance to find out which options and directives are implemented. Is there anyone who knows more about Infotek's compilers, or has even got a manual? RE: Infotek Compiler for HP 9000 Series 200/300 - Dave Frederickson - 06-09-2016 12:34 AM Hi Michael, I found this in a document: To deter unscrupulous users from selling copies of its compiler, Infotek now delivers a "security module" with the compiler, which must be plugged into a computer's Hewlett Packard Interface Bus if the compiler is to be used with that computer. Will the software from the Computer Museum run without the dongle? If not, then the manuals won't help much. Dave RE: Infotek Compiler for HP 9000 Series 200/300 - J-F Garnier - 06-09-2016 07:14 AM Michael, There is this document (that you may already know) that gives a general view of the feature. In a document called Infotek_BASIC200-300Compilers_5pages_Dec85.pdf that used to be on hpmuseum.net but that I can't find anymore, there is this statement about security: [attachment=3629] Which compiler version do you have? J-F edit: found the document again: http://www.hpmuseum.net/capcha/freecap_wrap.php?s=586 RE: Infotek Compiler for HP 9000 Series 200/300 - Martin Hepperle - 06-09-2016 09:34 AM (06-08-2016 08:06 PM)Michael Fehlhammer Wrote: Infotek's BASIC Compiler is an interesting alternative to the HP Compiler; and it is an indispensable tool for those who got special floating point DIO boards from Infotek, like the MF340.A raw dump of the software disk (e.g. with LIFUTIL) might at least reveal the names of the options and commands as they may be found in plain text inside the executables. ... while we are logged into the 9000 machines ... I have got a DOS Coprocessor DIO-I card but no software for it. Does someone have more info on the card and the software? I understand that it is intended to work with HP-UX on 300 machines but can it also be used on a 200 machine with BASIC? Martin RE: Infotek Compiler for HP 9000 Series 200/300 - Michael Fehlhammer - 06-09-2016 10:10 PM Thank you Gentlemen for your answers. I got a MF 340, so, according to the security notes, the compiler should run on a system equipped with this card. I don't know if this also holds for version 5 of the compiler. This version is available on the the museum site, and it should match my BASIC 5.1 system. I will test some combinations as soon as I find time, and will report the results here. @ Martin: A good idea to have a look at the compiler binary using a hex editor! A DOS DIO card seems to be a very rare item, never even heard of it, sorry. I'd guess there is only HP-UX support for it. For HP BASIC ( or PASCAL), the software offerings are poor. For example, you need HP-UX to run compilers for languages like FORTRAN or C. Does the card host a 80286/ 87 ? Or even 80386/87 ? The opposite variant - a "HP BASIC Coprocessor" ISA card ( with 68030, 68882 ) for DOS PCs - is more common. RE: Infotek Compiler for HP 9000 Series 200/300 - Martin Hepperle - 06-10-2016 10:50 AM (06-09-2016 10:10 PM)Michael Fehlhammer Wrote: ... The card has an 80286 and a socket for a 287 (I have not bothered to install one). I think the 386/387 was not yet existing at the time. I believe there is a picture on the HP-Museum site. It is a bit funny that both solutions exist:
HP must have invested quite a lot of effort into these special developments for probably rather low sales numbers. Martin RE: Infotek Compiler for HP 9000 Series 200/300 - Michael Fehlhammer - 06-20-2016 07:17 PM Meanwhile I got the Infothek compiler to work. I had the manual and didn't know that, crazy, sorry. Indeed a dongle is needed even if you have an Infotek floating point card installed. The good news is that the dongle ( for the HP-IB port ) is not linked to the software serial number, so any Infotek dongle will work along with any copy of the compiler. ( This was also confirmed in a contemporary aticle in a computer magazine, I read that somewhere, don't remember exactly where). I have got two of these dongles and can borrow one to an electronics expert for reverse engineering. I guess this task is not to difficult, I assume the dongle is a rather simple device. If the dongle could easily be reproduced, I can scan the manual and give the pdf to the museum. The compiler is a perfect match for BASIC 5.1. I made some benchmark testing with different FPU cards. You can see from the following table how advanced Infotek's copro cards were, compared to HP standards. Infotek was famous for there fast and relatively inexpensive hardware extensions, like memory boards, or AD converter cards. And the big plus of the Infotek compiler is that it supports all FPU boards ever built for the HP 200 series ( also the 310 and 320 ): Computer used for the tests: HP 9826A ( M 68000 @ 8 MHz ), Operating system: BASIC 5.1 Floating Point Unit RE: Infotek Compiler for HP 9000 Series 200/300 - Michael Fehlhammer - 06-20-2016 07:36 PM Sorry, the table has vanished. Here it is: The test program is a simple loop that mainly does a REAL multiplikation: Floating Point Unit-------------Time(s) interpreted-----------Time(s) compiled code None (68000 software lib.)............14.1....................................13.5 HP 98635A .....................................5.6......................................4.9 Infotek FP 200.................................3.2......................................2.8 Infotek MF 300................................1.66....................................0.74 68020/68882@33MHz DIO-c...........0.27...................................0.15 The Infotek FP 200 is based on the same chip from National Semiconductors as the HP 98635. The Infotek MF 300 features a Motorola 68881 Copro, along with some memory ( 1 MB; 4 MB in the case of the MF 340 ). The 68020/68882 (sic!) DIO card was manufactured by Newport Digital. It runs at 33 MHz and is equipped with 8 MB of RAM. An HP 98620 DMA card is required for it to work. With this card you can transform a series 200 computer into a rocket. :-) RE: Infotek Compiler for HP 9000 Series 200/300 - Jurgen Keller - 06-21-2016 12:00 PM I'm a bit surprised that compilation results in a minor speedup only. About 5% in the "None" case and 12.5% with a 98635A. I guess the last 3 options are hard to find and expensive, so in my opinion, buying a HP 98635A and using the BASIC interpreter seems to be the best option. A "lightning fast" vintage computer seems to be a strange experience anyway ;-) RE: Infotek Compiler for HP 9000 Series 200/300 - Martin Hepperle - 06-21-2016 12:46 PM (06-20-2016 07:36 PM)Michael Fehlhammer Wrote: ...It would be interesting to see how the ratio changes when the loop would contain more floating point operations. There is quite some overhead for the loop itself and having only a single multiplication inside the loop can be misleading to judge the performance of the FPUs. Maybe something with a few trig functions and squares and exponentiation. Another interesting detail for comparison would be the file size. It may also be that the "compiler" just adds a wrapper around the tokenized BASIC program to make it run standalone (without LOAD and RUN). Then a speed gain would be very small if at all. Early Visual Basic Versions (1.0, 2.0) did this before later versions introduced compilation to machine code. Martin RE: Infotek Compiler for HP 9000 Series 200/300 - Michael Fehlhammer - 06-25-2016 12:33 AM Hello Martin, I did another test where the calculation within the loop looks like this: B = B + SQR(ABS(SIN(A*I))), A, B are REAL, I is INTEGER ( loop count) Timing results are: FPU ................................... time[s](interpreted)................. time[s](compiled) none...................................12.01.......................................11.37 98635..................................4.02.........................................3.38 FP200..................................2.78..........................................2.00 MF300.................................1.40..........................................0.60 68020/68882 @33MHz........0.30..........................................0.16 Some annotations: The loop overhead doesn't play a major role here; compilation yields only a tiny improvement. The effect of compilation is more relevant in the last case; there you have direct and fast coprocessor instructions ( FMULT, FDIV, FSQRT, FSIN) and an optimized processor-coprocessor interface at the hardware level; in relation to the reduced time for calculation the constant overhead for assignment, loop, saving and recalling of arguments becomes more significant. Compilation increases the file size ( sorry, I haven't got concrete figures at hand). The Infotek compiler works different from the mentioned early Visual BASIC compilers, almost the other way round: An executable wrapper around the interpreted BASIC program would not work, because under the HP BASIC operating system, there simply is no executable format ( like it is under MS-DOS), other than a "PRG", which is a tokenized BASIC program! So the Infotek compiler keeps the fundamental structure of the interpreted BASIC program and inserts machine code where it is useful. For example, Input and Output routines (like PRINT) which generally are not time-critical are left untouched. The machine code probably is inserted in so-called CSUB functions ( compiled subroutines). One positive consequence of this approach is a very high compatibility between interpreted and compiled programs. For example, event-driven loop constructs ( like ON TIMER, ON KBD ... ) all work in the compiled program as expected. Error Messages still can refer to line numbers; they are still there! Normally during compilation the source code (interpreted prg) doesn't get deleted; therefore you can list and edit the compiled program; the listing looks exactly like the original (interpreted only) version, the compiled portion is hidden, what is a little confusing IMHO. Of course it is possible to delete the source by making use of compiler switches, so that you can save space, and, probably more important, secure your program. By the way, is anyone interested in a BASIC-based(!) assembler for 200/300 machines? RE: Infotek Compiler for HP 9000 Series 200/300 - Martin Hepperle - 06-27-2016 11:00 AM Michael, ah, now it is understandable why the results produced by these compilers are somewhat disappointing (except for the Newport FPU hardware). (06-25-2016 12:33 AM)Michael Fehlhammer Wrote: By the way, is anyone interested in a BASIC-based(!) assembler for 200/300 machines?What kind of output does this BASIC-based assembler produce? A CSUB, like the Pascal-based assembler? Or just a file with the raw 68000 object code? Could it be useful for people who do not want to use the Pascal system for the HP 9000 machines? BTW: we are still looking for the CSUB Utilities for BASIC 5.1 - do you happen to have a copy? Martin RE: Infotek Compiler for HP 9000 Series 200/300 - Michael Fehlhammer - 06-27-2016 03:53 PM Sorry Martin, I haven't got a copy of the version 5 CSUBs. If you use the the assembler I got ( made by DTACK) you won't need the PASCAL environment. You could call it an inline assembler, it works the same way the infotek compiler does: You load a binary "ASM", then you have available the keyword "ASM" in your BASIC editor. You then can include your assembler code, even refer to BASIC variables and labels. Very easy and useful in my eyes, since this is the main application scenario for assembler code: speed up an inner loop. Who should want to code the entire program in assembler? I got two versions of the assembler binaries, for use with BASIC 5 ( 5.0, 5.1, 5.11) and 6 ( 6.0, 6.1, 6.2), along with a short list of useful entry points ( which are BASIC version-specific). And I have the manual of version 6 ( don't know about the enhancements from version 5, probably there is not much difference, besides the compatibility to the newer BASIC version). Assembler version 5 supports up to 68030, I didn't check yet whether version 6 even supports 68040. Unfortunately there is an incompatibility between the assembler and the Infotek compiler: They obviously use the same binary ID, so there is a collision. I wonder whether it is possible to change the binary ID without any negative side effects, like one could simply change the ROM ID of a HP 41 module. I have no detailed information about the file structure, nor do I have a hex editor for HP 200/300. Can anyone help? |