Re: [Simh] Interdata OS/32: hello-world in CAL32
On Tue, 23 Feb 2016 14:15:11 + "Armistead, Jason BIS"wrote: > Hosting on a VAX under VMS might be viewed as a little extreme when the > target had less than 64K of EPROM and a few K of RAM, but it worked. That's what I meant. I know what a cross compiler is. I never saw a mainframe-hosted cross-compiler back in the day and here within 2 days I found out about two mainframe hosted cross compilers. And then your note about extreme re: VAX/VMS. Imagine! ___ Simh mailing list Simh@trailing-edge.com http://mailman.trailing-edge.com/mailman/listinfo/simh
Re: [Simh] Interdata OS/32: hello-world in CAL32
On Feb 23, 2016, an anonymous user (li...@openmailbox.org) wrote: > Thanks very much for the additional info. Your post was very timely since I > read in the notes that come with the PL/M cross compiler > that is being discussed that it was a cross-compiler hosted on MTS and VM/CMS. > I don't think I ever came across a cross compiler in the old days. It is > interesting to see that people used these odd combinations. > I wonder if we should start trying to archive and document cross compilers > specifically. > On Tue, 23 Feb 2016 01:01:28 -0500 > johns...@gregjohnson.org wrote: > [very nice story snipped] Cross compilers were great when your target system didn't have enough memory, storage, and possibly no actual operating system to support a locally-hosted compiler. For a language like PL/M-86 which had no language specific I/O constructs beyond reading to and writing from I/O ports on the target CPU, it was perfect for writing applications for an OS-less embedded systems, but it needed a host. Hosting on a VAX under VMS might be viewed as a little extreme when the target had less than 64K of EPROM and a few K of RAM, but it worked. The only complaint I had is that Intel limited the symbol table sizes somewhere in the linker (IIRC !), and you could exceed the maximum number of external symbols, thus requiring some splitting of modules and multi-step linking to resolve this dilemma. I suspect the origins of this limitation was the MS-DOS environment with 640K of memory (Intel's tools didn't use a DOS extender), and that whoever ported the toolset to VAX/VMS never increased this limitation, even though VAX/VMS could support a lot more than virtual memory than DOS. Assemblers were a little bit easier to host on a target - smaller code size in your editor, no optimization required, etc., though plenty of cross assemblers certainly existed for a wide range of targets, especially those that were embedded like Intel 8048 & 8051, Motorola 680x, etc. A lot of the "classic" embedded cross compiler/cross assembler companies are no longer in existence, either gobbled up by larger companies, or simply going the way of the Dodo bird. Names like Franklin, 2500AD, Avocet System, Adtek (from Japan) and Hi-Tech (from Queensland Australia), were pretty common players, but these days their products are no longer available, or if you're lucky they are end-of-life and provided as-is with no support, even if you buy them. Intel created their own systems, like the Intel's iPDS-100 running ISIS-II, or Motorola/Freescale (now NXP) got 3rd party vendors like P Micro to do some of their tools and development boards. It was a wild time !!! PS: I'd love to see an iPDS-100 emulation in SIMH one day !!! ___ Simh mailing list Simh@trailing-edge.com http://mailman.trailing-edge.com/mailman/listinfo/simh
Re: [Simh] Interdata OS/32: hello-world in CAL32
Thanks very much for the additional info. Your post was very timely since I read in the notes that come with the PL/M cross compiler that is being discussed that it was a cross-compiler hosted on MTS and VM/CMS. I don't think I ever came across a cross compiler in the old days. It is interesting to see that people used these odd combinations. I wonder if we should start trying to archive and document cross compilers specifically. On Tue, 23 Feb 2016 01:01:28 -0500 johns...@gregjohnson.org wrote: [very nice story snipped] ___ Simh mailing list Simh@trailing-edge.com http://mailman.trailing-edge.com/mailman/listinfo/simh
Re: [Simh] Interdata OS/32: hello-world in CAL32
Actually there was also an Interdata cross assembler which ran on an IBM OS/360 and produced punched 'load decks'. I believe the 'assembler' was little more than the OS/360 assembler with a bunch of macros. When I was in high school I had access to an Interdata 7/32 and Interdata 70 (16-bit) up at the local university. the 7/32 did not run OS/32 but a locally written OS called WTS (Western Terminal System) - they attached about 16 or to terminals to a 7/32 with about 128K of memory (each terminal I believe had a huge 8K partition). It was used for CAI (Computer Assisted Instruction), programming and administration. Ran an interpreted basic (also locally written but pretty good), and abbreviated version of PL/1 (called WPL) and one of the systems ran sort of a batch FORTRAN. But a version of PILOT was used for CAI. That is how I learned FORTRAN - a CAI program call FORBUS written in Pilot. However the Interdata 70 was fun - it was 16 bit with about 64K memory. Ran an Interdata OS called BOSS which was real basic - to assign a disk file you would specify a range of sectors in hex and the disk 'catalog' was a physical piece of paper with file names and sector ranges on it. (I believe this was _way_ before OS/32) Me and another guy (a student there) would work (read: play with) an Interdata OS called DOS (Disk Operating System) which featured, among other things, blocking of multiple records on a disk sector and a real disk catalog. Interdata also had an real time OS called RTOS - I never got into that - perhaps that was an ancestor to OS/16 and OS/32. I never really got to work with OS/32 but I see some vestages of the old BOSS and DOS commands reflected in OS/32 - ALlocate and ASsign for example). What we would do is take the DOS source code (on punched cards) and run them over on the OS/360 IBM with the cross-assembler the assembler would produce a 'load deck' which was then punched on 80-column cards (in binary). As I recall the BOSS/DOS load deck record size was something like 108 bytes. Anyway we would get this load deck and put it in a card reader on the Interdata 70 preceeded by a 'boot' card (containing a binary program which would load the rest of the cards). Key in (or verify) a program at location '50' via the switches. Press EXE and it would load, in effect, boot from the card reader. Editing was by inserting and replacing cards in the OS punched Deck (about a box - 2,000 cards). The main use of the 70 was students running simulations (I don't exactly recall the name of the simulation package - simulac or something like that?), graphics, and land use management. It had a Tektronics 1410 storage tube graphics terminal, a card reader, a thermal printer for the 1410, a regular ASCII terminal (I wrote a PASLA driver for it), and I believe a digitizer. Anyway - that's my story :). -- Greg Quoting li...@openmailbox.org: Thanks for the very interesting info! I have not come across this machine or software and did not know anything about it. On Thu, 18 Feb 2016 21:16:32 -0500 Davis Johnsonwrote: I'm pretty sure the resemblance was intentional so as to be an easier sell to customers familiar with 360 assembler. There was a rumor that they had originally hoped to sell low-cost training machines to schools when real computers were expensive. There is some architectural resemblance if you throw out most of the address modes, base registers, have fewer condition code bits... You end up with 16 two's complement registers, uniform size 8-bit op codes, RX, RR, and RI addressing modes (with a few variants). A 16 bit quantity on the 16 bit machines was always, from the beginning, a "HALF WORD". The assembler, "CAL" (Common Assembly Language) would assemble 16 or 32 bit source. With care it was possible to write source code that could be assembled to either 16 or 32 bit object. Don's example uses some of the features, A(...) specifies an "address length" constant, 16 or 32 bit as appropriate. There was a whole set of opcode mnemonics that would assemble appropriately depending on the target. The BASIC interpreter was a key example, and was actually distributed in source form. I'd love to find a copy. If you were really careful you could create a binary that would actually run on 16 or 32 bit machines without modification. Some of the hardware diagnostics are this way. Look for COMMON in the diagnostic title. For a 32 bit target a different kind of careful would let you write position independent code. On 02/16/2016 05:16 AM, li...@openmailbox.org wrote: > Fascinating and very similar in syntax to the assembler for IBM OS/360 > and later. Does anybody know the history behind this? > > On Mon, 15 Feb 2016 13:58:26 -0500 (EST) > dst...@execulink.com (Don Stalkowski) wrote: > >> *L EDIT32 >> TSKID = EDIT32 >> *ST >> *13:19:38 EDIT32:PERKIN-ELMER OS/32 EDIT 03-145 R04-01 >>
Re: [Simh] Interdata OS/32: hello-world in CAL32
Thanks for the very interesting info! I have not come across this machine or software and did not know anything about it. On Thu, 18 Feb 2016 21:16:32 -0500 Davis Johnsonwrote: > I'm pretty sure the resemblance was intentional so as to be an easier > sell to customers familiar with 360 assembler. > > There was a rumor that they had originally hoped to sell low-cost > training machines to schools when real computers were expensive. > > There is some architectural resemblance if you throw out most of the > address modes, base registers, have fewer condition code bits... You end > up with 16 two's complement registers, uniform size 8-bit op codes, RX, > RR, and RI addressing modes (with a few variants). > > A 16 bit quantity on the 16 bit machines was always, from the beginning, > a "HALF WORD". > > The assembler, "CAL" (Common Assembly Language) would assemble 16 or 32 > bit source. > > With care it was possible to write source code that could be assembled > to either 16 or 32 bit object. Don's example uses some of the features, > A(...) specifies an "address length" constant, 16 or 32 bit as > appropriate. There was a whole set of opcode mnemonics that would > assemble appropriately depending on the target. The BASIC interpreter > was a key example, and was actually distributed in source form. I'd love > to find a copy. > > If you were really careful you could create a binary that would actually > run on 16 or 32 bit machines without modification. Some of the hardware > diagnostics are this way. Look for COMMON in the diagnostic title. > > For a 32 bit target a different kind of careful would let you write > position independent code. > > On 02/16/2016 05:16 AM, li...@openmailbox.org wrote: > > Fascinating and very similar in syntax to the assembler for IBM OS/360 > > and later. Does anybody know the history behind this? > > > > On Mon, 15 Feb 2016 13:58:26 -0500 (EST) > > dst...@execulink.com (Don Stalkowski) wrote: > > > >> *L EDIT32 > >> TSKID = EDIT32 > >> *ST > >> *13:19:38 EDIT32:PERKIN-ELMER OS/32 EDIT 03-145 R04-01 > >> *EDIT32>GET HELLO.CAL > >> *EDIT32>T 1-12 > >> *13:19:48 EDIT32:1 SVC 1,SAY > >> *13:19:48 EDIT32:2 SVC 3,0 > >> *13:19:48 EDIT32:3 ALIGN ADC > >> *13:19:48 EDIT32:4SAY DBX'28' > >> *13:19:48 EDIT32:5 DBX'00' > >> *13:19:48 EDIT32:6 DS2 > >> *13:19:48 EDIT32:7 DCA(SAY1) > >> *13:19:48 EDIT32:8 DCA(SAY2) > >> *13:19:48 EDIT32:9 DAS 2 > >> *13:19:48 EDIT32: 10SAY1 DCC'HELLO WORLD ' > >> *13:19:48 EDIT32: 11SAY2 EQU *-1 > >> *13:19:48 EDIT32: 12 END > >> *EDIT32>END > > ___ > > Simh mailing list > > Simh@trailing-edge.com > > http://mailman.trailing-edge.com/mailman/listinfo/simh > > > > > > ___ > Simh mailing list > Simh@trailing-edge.com > http://mailman.trailing-edge.com/mailman/listinfo/simh ___ Simh mailing list Simh@trailing-edge.com http://mailman.trailing-edge.com/mailman/listinfo/simh
Re: [Simh] Interdata OS/32: hello-world in CAL32
Fascinating and very similar in syntax to the assembler for IBM OS/360 and later. Does anybody know the history behind this? On Mon, 15 Feb 2016 13:58:26 -0500 (EST) dst...@execulink.com (Don Stalkowski) wrote: > *L EDIT32 > TSKID = EDIT32 > *ST > *13:19:38 EDIT32:PERKIN-ELMER OS/32 EDIT 03-145 R04-01 > *EDIT32>GET HELLO.CAL > *EDIT32>T 1-12 > *13:19:48 EDIT32:1 SVC 1,SAY > *13:19:48 EDIT32:2 SVC 3,0 > *13:19:48 EDIT32:3 ALIGN ADC > *13:19:48 EDIT32:4SAY DBX'28' > *13:19:48 EDIT32:5 DBX'00' > *13:19:48 EDIT32:6 DS2 > *13:19:48 EDIT32:7 DCA(SAY1) > *13:19:48 EDIT32:8 DCA(SAY2) > *13:19:48 EDIT32:9 DAS 2 > *13:19:48 EDIT32: 10SAY1 DCC'HELLO WORLD ' > *13:19:48 EDIT32: 11SAY2 EQU *-1 > *13:19:48 EDIT32: 12 END > *EDIT32>END ___ Simh mailing list Simh@trailing-edge.com http://mailman.trailing-edge.com/mailman/listinfo/simh
[Simh] Interdata OS/32: hello-world in CAL32
For those following the Interdata OS/32 saga, here's an example of "HELLO WORLD" in CAL32 and how to assemble/link it. --- "HELLO WORLD" in CAL32 The spacing in the .CAL file is important! I don't know what the exact spacing requirements are, but this worked. The "os32st" directory on bitsavers contains a "Program Reference" manual that proved helpful in writing this. *L EDIT32 TSKID = EDIT32 *ST *13:19:38 EDIT32:PERKIN-ELMER OS/32 EDIT 03-145 R04-01 *EDIT32>GET HELLO.CAL *EDIT32>T 1-12 *13:19:48 EDIT32:1 SVC 1,SAY *13:19:48 EDIT32:2 SVC 3,0 *13:19:48 EDIT32:3 ALIGN ADC *13:19:48 EDIT32:4SAY DBX'28' *13:19:48 EDIT32:5 DBX'00' *13:19:48 EDIT32:6 DS2 *13:19:48 EDIT32:7 DCA(SAY1) *13:19:48 EDIT32:8 DCA(SAY2) *13:19:48 EDIT32:9 DAS 2 *13:19:48 EDIT32: 10SAY1 DCC'HELLO WORLD ' *13:19:48 EDIT32: 11SAY2 EQU *-1 *13:19:48 EDIT32: 12 END *EDIT32>END *13:19:59 EDIT32:END OF TASK 0 * Simulation stopped, PC: 22C9A (BAL R12,19064) sim> as lpt cal02 LPT: creating new file sim> c L CAL32 TSKID = CAL32 *AS 1,HELLO.CAL AL HELLO.OBJ,IN,126 *AS 2,HELLO.OBJ *AS 3,PR: *ST *13:27:19 CAL32:CAL/32 03-338R01-01 *13:27:19 CAL32: NO ERRORS TABLE SPACE USED : 1K *13:27:19 CAL32:END OF TASK 0 *L LINK TSKID = LINK *ST *13:27:32 LINK:PERKIN-ELMER OS/32 LINKAGE EDITOR 03-242 R01-03 *LINK>IN HELLO.OBJ *LINK>BU *13:27:40 LINK:ENTER FILE DESCRIPTOR FOR IMAGE*LINK>HELLO.TSK *13:27:46 LINK:MAP?*LINK>NO *LINK>END *13:27:53 LINK:END OF TASK 0 *L HELLO TSKID = HELLO *AS 0,CON: *ST *13:28:15 HELLO:HELLO WORLD *13:28:15 HELLO:END OF TASK 0 * ___ Simh mailing list Simh@trailing-edge.com http://mailman.trailing-edge.com/mailman/listinfo/simh