HP-IPL/OS Build and Simulation Scripts ====================================== bashscripts directory - contains Linux/bash-specific scripts hp2100bat directory - contains Windows-specific batch files boot_7906.sim - boots the "removeable" platter of a 7906 disk image make_16k.sim - makes the hpos16k.abs build from abs/hpiplos1.abs make_7906.sim - makes the hpos7906.abs build from abs/hposdms.abs make_demo.sim - makes the hposdemo.abs build from abs/hposdms.abs make_dms.sim - makes the hposdms.abs build from abs/hpiplos1.abs make_ide.sim - makes the hposide.abs build from abs/hpiplos1.abs make_idem.sim - makes the hposidem.abs build from ide/hposide.abs make_mt.sim - makes the hposmt.abs build from abs/hpiplos1.abs make_mt6i.cm1 - used by make_mt6i.sim, IPL to rename 7906 driver make_mt6i.cm2 - used by make_mt6i.sim, IPL to rename IDE driver and add !DISK make_mt6i.cm3 - used by make_mt6i.sim, IPL to run DMENU if driver selected make_mt6i.sim - makes the hposmt6i.abs build from abs/hpiplos1.abs run_7906_be.sim - assists in setting up a bootable 7906 disk image run_dms.sim - loads and runs abs/hposdms.abs run_mt.sim - attaches a magtape file and loads and runs abs/hposmt.abs Links to tools... The HPASM assembler and the MAKE_MT magtape tool are in the zip at: http://www.infionline.net/~wtnewton/oldcomp/hp2100/hpos_utl.zip My modified HP2100 simulator binaries are at: http://www.infionline.net/~wtnewton/oldcomp/hp2100mod.html Source, docs and stock binaries for all the SimH simulators are at: http://simh.trailing-edge.com/ Setting up a HP-IPL/OS development environment ---------------------------------------------- The HP-IPL/OS distribution includes many file types... .txt - docs .ipl - HP-IPL/OS code for words and immediate commands .abs - HP binary code in ABS format (absolute binary system) .asm - assembly source compatible with ASMB, HPASM and Asm21 (.asm is also used for 8051 source for the IDE disk controller) .hpa - assembly source tested only with HPASM (usually for internal bits) .lst - listing files produced by an assembler .gif - graphics .hex - microcontroller "hex" object code .sim - scripts for the HP2100 simulator .bat - Windows batch files .bas - BASIC source file no extension - Linux bash scripts other extensions - files used by other things Of these, a typical Windows system only recognizes .txt .gif and .bat so unless you do something you won't be able to view or edit the text files. Also, by default Windows hides the extensions of files, you'll probably want to change that so extensions are always shown (or however, it's your computer but it's necessary to tell the difference between the files or it's just all a mess). The first step for Windows (after disabling the hiding of file extensions) is to associate the text types with Notepad or another plain-text editor, so right-click one of the .sim files and select properties, click the change button and choose Notepad. Repeat for .ipl, .asm, .hpa and .lst files (there's a .lst file in the "ide" dir). Additional associations are needed to more easily operate the tools, .sim files need to be associated with the HP2100 simulator, .abs files can be associated with the hp2100abs script or batch to "run" them when double-clicked, if doing work with HP assembly it helps to associate .asm and .hpa files with scripts or batches that run the assembler and do extra processing like attaching a leader and renaming the files. Review the files and docs in the hp2100bat directory, they aren't absolutely necessary but even if you never assemble anything, being able to double-click ABS files to run them is very handy for testing. As written the hp2100abs.bat file requires it and the hp2100.exe file to be in the C:\hp2100bat directory so if you install them you can associate .sim files to hp2100.exe there. Otherwise hp2100.exe can be anywhere, just associate the .sim files to it if you want to be able to operate the build scripts by right-clicking them. Beats the heck out of dropping to a dos prompt... but you can do it that way, in a dos window in the directory where the .sim scripts are just do hp2100 script.sim to run it (assuming hp2100.exe is in a path dir). Doing things by association is just easier, not required. Linux is different, for HP-IPL/OS development it's no better or worse once set up but setting it up probably requires more effort. On the plus side, at least Ubuntu already recognizes text types, on the minus side the default editor adds LF line ends, not CRLF as required. So something like unix2dos must be installed for text types, and used after every edit. Some editors permit using CRLF line ends, use one of these if possible. On the plus side Linux terminals usually accept VT100/ANSI-compatible screen codes so LIFE and AEDIT work, on the minus side there's no standard Linux terminal, so editing and adapting will likely be needed. A couple more minuses for Linux.. at least for folks bothered by these things (personally I don't care because I'm a script nut) - Ubuntu typically sets the current directory to home, not where the file being clicked is, so scripts have to derive the directory name from the filename passed by association using the dirname command. The biggest aggrevation (that went away once I found the ROX Mime Editor) is by default (Gnome) associations can't be done by extension. Some idealistic idea that everything should be distinguishable by content but that just doesn't cut it.. I have dozens of file types which I need different tools for and they're all text to the system. So mime types have to be created. Yet another thing that has to be overcome if using Linux.. many useful tools ranging from making a simulated magtape to loading code into a HP mini are DOS .exe files, so DosEmu/FreeDos is a must. Also, VMware is quite handy for running XP for running HyperTerminal and other Windows programs. Pretty much most of the difference between Windows and Linux is in the setup, once that's done the process is pretty much the same. About the only thing XP won't do (but Win9x will) is screen codes, but that's easy to work around by using telnet/HyperTerminal. One thing for sure, it's much easier to set things up on Windows. Most of the things that needed to be set up to develop HP-IPL/OS under Linux I had already done, so for me little else had to be done but write a few scripts. If all those things had to be done from scratch it makes the 100+ megs for perl just to run Asm21 seem like nothing. Anyway... enough OS talk, here's how to rebuild HP-IPL/OS. In the instructions that follow it is assumed the files will be operated out of the "scripts" directory. If you'd rather not disturb the original scripts directory, simply make another directory such as "work" placed alongside "ipl" "abs" etc and copy the needed scripts there. Using the make scripts ---------------------- The make*.sim files don't actually make builds, rather they assist the build process by attaching files to PTR one by one and printing instructions. After performing each step press control-E to move on to the next step. When done SYSALL is instructed to write the build to an ABS file, which if used as the input for further builds is copied to the "abs" directory or "ide" directory so the other scripts can load the updated version. So obviously order matters when rebuilding things, depending on what was changed. For example, if using the hpos7906.abs build and something in extra.ipl was changed (in all builds), make_dms.sim must be run and the resulting hposdms.abs file moved to the "abs" directory before running the make_7906.sim script, which starts with the dms build. When I rebuild all the builds after making a change I first run make_dms and make_mt, copy those to "abs", then the other scripts can be run. The make_ide script has to be run and the hposide.abs file moved to "ide" before running the make_idem script, which adds magtape drivers to the stock IDE build. Refer to the file list above for .abs dependencies, or view the .sim script to see what it initially loads. The make scripts can be edited or new scripts made (copy the closest one as a starting point) to make custom builds that add or leave out packages. Each package typically begins with an attach ptr command, an echo to print instructions, and c to continue the simulation. Copy/paste these in blocks when rearranging, delete the block to remove a package (if another package needs it'll print a NOT FOUND message, try again), and duplicate the general structure to add packages to the build. Eventually you'll have to play around with the package order to avoid page errors but usually this only takes a few tries. With a bit of knowledge of which IPL's contain CREATE code, where and how much (view the IPL files listed in the sim script), and doing WORDS after each step to see where EOD is, you can predict if the IPL will go or not. Or do what I do, blindly load IPL's until it breaks, then rearrange. IPL's build on each other so sometimes satisfying the load dependencies can be a bit tricky but with practice and familiarity with the IPL files it gets easier. Worse comes to worse use VARIABLE _PAD n to add n words (n=octal number of words needed to get the CREATE-containing word past the 2000-mod boundary, but better to find an arrangement that works, or add another useful non-CREATE-containing IPL file so memory won't be wasted. When using the HP2100 simulator, if you tell it to attach ptr to a file that doesn't exist, it creates a zero-byte file. Just delete it and try again if it happens. One way to reduce the effect of this is when writing custom IPL code to include, put them in the scripts (or work, anywhere but the main ipl) directory, so if a filename mistake is made you'll see the empty file be created. Making builds for different configurations ------------------------------------------ The CONFIG command permits changing the slot assignments of TBG, TTY, PTR, PTP, BACI, LPT, 7900 or 7906, IDE and HPIB devices, and also permits selecting TTY or BACI console on bootup. If using one of the build scripts to prepare a build, when instructed to SYSALL, run CONFIG to define the desired configuration Then do SYSALL. Upon booting the ABS file on a real machine the new config will be put into effect. Some devices don't permit slot-patching, including the 7970 magtape and XY display words. To change those slots the associated .ipl files have to be edited and the build rebuilt. As far as magtape goes, I don't know if it even works on a real magtape drive... once upon a time it did. To use the simulator to change the slots of an existing build, load it into the simulator using the hp2100abs batch or bash script, or by using an edited version of the run_dms.sim script. Enter CONFIG and change as needed, then press control-E to halt the simulator, enter: attach ptp yourbuild.abs (adjust the filename as needed) then enter c to continue the simulation and enter SYSALL. Halt the simulator and exit. A similar technique can be used to add IPL files to existing builds. Run the build under sim, halt the sim and enter: attach ptr ../ipl/file.ipl (adjust the path and filename to point to the IPL file to add) If it says "creating file" then you goofed and have a zero-byte file to remove. Enter c to continue then enter LOAD to load the IPL. If you get page errors, exit the sim and try again with a different load order. If you get a "NOT FOUND" error, exit the sim and look at the .ipl to see what it requires, try again and load the required IPL first. Sometimes a NOT FOUND is intentional, for example loading ttyscan.ipl before [hp]screen.ipl so it won't load the included demo. Sometimes unwanted words are forgotten after loading, for example FORGET !SDC after loading config.ipl if no intention of loading cfge.ipl to provide switch-registor reconfig ability, or FORGET HELP after loading mtextra.ipl if you don't need a reminder soaking up memory. Both of these examples are only relevant if making a build starting with the kernel but still illustrate there are exceptions. While at it, to avoid having to do it on real hardware, set the desired block allocation (n ALLOCATE where n usually ranges from 2 to 4) to provide a comfortable mix of free mem (do WORDS to see) and block resources (most things need 2 blocks, LIFE requires 3 blocks). If HP screen words are loaded do TERMINAL to set the default terminal type. When "just right", halt the sim, attach ptp to the output.abs file, continue, and SYSALL to make the build. Simulation techniques --------------------- A HP-IPL/OS simulation can serve different purposes depending on what you want to do. It can be used to explore HP mini programming techniques by itself, used strictly for generating real-hardware builds, or both. There are limitations to simulation of course... just because code works under sim does not guarantee it will work on real hardware, and many devices such as BACI, HPIB, IDE and the XY display cannot presently be simulated. If running the simulation under Windows XP or similar OS's, the "dos" window does not support screen commands so by default things like LIFE and AEDIT will not work. This doesn't matter if just using sim techniques to make real hardware builds but if you want screen codes under XP you'll need to use a Telnet client. XP's HyperTerminal works well for this, edit the simulation script you use to include the line: set telnet 23 anywhere before the part that actually runs the sim, usually I put it after the other set tty lines. After "running" the .sim script it'll say waiting for telnet connection.. unblock the firewall warning that pops up, run HyperTerminal and tell it to connect to telnet localhost and HP-IPL/OS should pop up (you can also do this in a running simulation, control-E to halt, enter set telnet 23 then enter run 2 to restart). Save the Hyperterminal setup and find/copy the .ht file to the desktop so next time you just have to double-click the .ht file. Sim commands including the control-E to halt must be given in the "dos" window running the HP2100 simulator. If you want the simulation to run at approximate real-HP speed, add a command to the .sim script you use that says: set throttle 850K It isn't exact, depends on the instruction mix, but fairly close. The HP-IPL/OS magtape system makes it fairly easy to create new builds without having to edit scripts and type numerous attach commands at the simulator prompt. IPL files can be copied to the magtape then loaded into the dictionary using simple commands like 77 MTLOAD to load file #77. Depending on how much available memory is needed, sometimes it's worth using the magtape sim to spin builds for real hardware that doesn't have a magtape drive. This is how the hposmt6i.abs 7906/IDE combination build was originally made which I use on my HP2113E machine, later I reduced the steps to a .sim script to speed up the process when updates are made. On my system I use a MT/7906 simulation to create new builds by loading packages from magtape, XSAVE the build to a disk file, then I can copy the 7906 disk image as-is to my IDE drive and boot it on real hardware and run the builds. When dictionary memory gets tight it's desireable to not have to have the magtape words in memory, the techniques outlined in the previous section can be used to make a customized build containing (say) only IDE drivers, but even in that case it's still useful to have a magtape/7906 capable build which can be used to copy IPL files from magtape to a disk volume, avoiding having to determine and specify the byte sizes of each IPL file to manually import them to disk. Assuming the IDE disk is created by copying a 7906 disk image to the IDE disk... to import IPL files to a native IDE disk it has to be done by determining the exact byte size of each IPL file (use a dos dir command), attaching each IPL to PTR (emulator, pass-through type is preferable), and issuing commands like DECIMAL bytesize OCTAL "FILENAME.IPL" MS2F for each file imported. Tedious... if possible it's much easier to set up a disk image under sim then use a "DD" program to copy the disk image to an IDE drive using a USB drive tray. Hint... XDOS doesn't care how the disk is formatted, so if setting up a 7906 sim disk image (see the section after this) strictly for the purpose of copying to an IDE disk, just specify the full SFS size of 100 volumes 100 files in the XINIT command. Also you can re-XINIT at any time then run VRECOVER to recover existing volumes and use RENVOL to restore the volume names. To set up a combination magtape/7906 simulation, first set up the magtape simulation, then set up the disk simulation, then make a copy of the boot_7906.sim file and edit it so it attaches the magtape file too, then load and run a "combination" build such as hposmt6i.abs (or any build containing both magtape and 7906 drivers) and DGEN it so the default boot system can access both magtape and disk. The default hposmt6i.abs build includes a disk menu, if you don't want that FORGET _DM before DGENing to the boot area. Setting up a magtape simulation ------------------------------- The run_mt.sim script attaches a magtape file as tape0.tap then loads and runs the base magtape build. Enter MTGEN then press V for new volume to write the system to the magtape, after that MTDIR will show the "file". The hpos_utl.zip (linked from the main HP-IPL/OS page) contains a MAKE_MT.EXE utility program that can be used to generate a custom magtape file containing IPL and other text files, which can be renamed to tape0.tap and mounted directly, or the way I usually do it, imported into an existing tape0.tap file that already contains a MTGEN-made initial build. Procedure... Copy all the .ipl and .txt you want to include to a work directory along with MAKE_MT.EXE and to speed things up create the following batch file... @echo off :: this batch file creates a SimH-HP2100 magtape file using :: the make_mt.exe utility, edit path and file masks as needed. echo zz_ipl.tap > zz_files.lst dir /on /b *.txt >> zz_files.lst dir /on /b *.ipl >> zz_files.lst echo. >> zz_files.lst make_mt.exe < zz_files.lst echo MagTape IPL file updated... dir zz_ipl.tap Note... if using Linux you'll need to install DosEmu and FreeDos (not exactly easy to set up but worth it) so the dos MAKE_MT.EXE program and the batch file can be run. There are other ways to make a magtape file but they aren't automated, each file has to be imported, and probably not worth bothering with, skip to the disk section and just import what you want there. Or reboot into Windows or borrow a Dos/Windows system to make the magtape file. I save as "zz_make.bat" so it'll be the last file listed and not inferfere with my concentration (the same reason the output tape is named zz_ipl.tap). Run zz_make to create a magtape file containing all of the TXT and IPL files in the work directory. Although the zz_ipl.tap file can be mounted directly (rename to tape0.tap or edit the script), to import it into a magtape system already containing a boot build follow these steps... Copy the mtbackup.ipl file from the "ipl" directory to the "scripts" directory, not necessary but makes the typing easier and if mistyped the zero-byte mistake will appear under scripts instead of getting lost in the ipl directory. Copy the zz_ipl.tap file to the "scripts" directory. Run the run_mt script and if not already done previously, enter MTGEN and press V to generate the boot build. Press control-E to halt the sim, and enter: attach ptr mtbackup.ipl Then enter C to continue the sim. The prompt was already displayed when halted so it won't show again, press enter to print it again if you want. Enter LOAD to load the mtbackup.ipl utility. Press control-E to halt and enter: attach ptr zz_ipl.tap Then enter C to continue. Enter MTRESTORE and press A to add files, they should start going in. When done, MTDIR should show all of the files. Enter HELP for a brief summary of magtape commands to display and load the magtape files which can be used to make new builds (but before doing that control-e, exit and rerun run_mt.sim first to start fresh). When a build is made, it can be written to an .abs file by control-E/halt, attach ptp build.abs then C to continue and enter SYSALL. Setting up a 7906 disk simulation --------------------------------- Note... the HP2100 simulator buffers disk writes, always press control-E to halt the simulation before exiting. Don't just close the window, and just in case make periodic copies of the disk image file. The run_7906_be.sim script assists in the process of making a bootable 7906 disk image. First it loads and executes the 7906 boot extension with the proper switch register settings, then prints instructions for setting up the disk. Here's a dump of what it looks like... HP 2100 simulator V3.7-3 DS: creating new file : : Preparing boot extension : HALT instruction 102044, P: 02352 (JMP 2351) : : To prepare the disk enter DGEN then enter XINIT : Specify 3 volumes 26 (octal) files in last volume. : Then use varients of "NAME" MKVOL to create the volumes. : To prepare the fixed platter do 1 CHPL then repeat : the XINIT and MKVOL commands, DGEN to write boot system. : If desired edit this script to lay extension to fixed : platter to boot using sim command: boot -f ds : HP-IPL/OS 7906 1.5 ? DGEN Saving boot system to disk... Done, status = 000000 ? XINIT XINIT - overwrites volume index, enter 0 to abort How many volumes? 3 How many entries in last dir? 26 Writing new volume index... Done ? "DEFAULT" MKVOL Clearing dir block 000000 000007 ? "STOCK7906" XSAVE Saving to 000000 000047 ******************************* ? XDIR Drive: 000000 Volume: DEFAULT Filename LA RA LAP BSIZ CW BLKL BLKH Slot STOCK7906 000002 000002 000000 174000 000000 000047 000000 000000 ? Press control-E to halt the simulation and exit. Now the boot_7906.sim script can be run to boot the disk... HP 2100 simulator V3.7-3 HP-IPL/OS 7906 1.5 ? XDIR Drive: 000000 Volume: DEFAULT Filename LA RA LAP BSIZ CW BLKL BLKH Slot STOCK7906 000002 000002 000000 174000 000000 000047 000000 000000 ? To turn this into a combination magtape/disk system, copy the boot_7906.sim file to another file (I called it boot_7906mt.sim) and uncomment the 3 lines that set up and attach the magtape file (tape0.tap, created by the instructions for setting up a magtape sim). Copy a MT/7906-capable build such as hposmt6i.abs (in the "ide" dir) to where the sim is being built, run the new boot_7906mt.sim script, press control-E to halt, and at the sim prompt enter load hposmt6i.abs then enter run 2. At the HP-IPL/OS prompt enter DGEN to save the new system. Control-E and exit. Like this... HP-IPL/OS 7906 1.5 ? Simulation stopped, P: 02226 (JMP 2225) sim> load hposmt6i.abs sim> run 2 === HP-IPL/OS Disk Menu === Nothing to do HP-IPL/OS MT6I 1.5 ? DGEN Saving boot system to disk... Done, status = 000000 ? Simulation stopped, P: 02226 (JMP 2225) sim> exit Run boot_7906mt.sim again to test... === HP-IPL/OS Disk Menu === Nothing to do HP-IPL/OS MT6I 1.5 ? XDIR Drive: 000000 Volume: DEFAULT Filename LA RA LAP BSIZ CW BLKL BLKH Slot STOCK7906 000002 000002 000000 174000 000000 000047 000000 000000 ? MTDIR File 000001 HP-IPL/OS MT 1.5 System File 000002 SUMMARY.TXT File 064510 words File 000003 1DCA.IPL File 006400 words File 000004 7900.IPL File 015512 words File 000005 7906.IPL File 012204 words File 000006 ALTUTIL.IPL File 012567 words File 000007 BACI.IPL File 004151 words File 000010 BASCONV.IPL File 002630 words File 000011 BIGSHIFT.IPL File 003124 words File 000012 CAPSLOCK.IPL File 001653 words File 000013 CFGE.IPL File 001676 words File 000014 CONALT.IPL File 005027 words File 000015 CONFIG.IPL File 002574 words File 000016 CONGEN.IPL File 002123 words File 000017 CREATE.IPL File 034765 words File 000020 CSBOOT.IPL File 001345 words File 000021 CYLONS.IPL File 000603 words File 000022 DBACKUP.IPL File 000517 words File 000023 DEBUG.IPL File 007516 words File 000024 DHELP.IPL File 003223 words File 000025 DISK.IPL File 003400 words File 000026 DMENU.IPL File 010426 words File 000027 DMS.IPL File 021616 words File 000030 DOUBLE.IPL File 007537 words File 000031 ECAL.IPL File 003535 words File 000032 EDIT.IPL File 004407 words File 000033 EHELP.IPL File 000740 words File 000034 EXTRA.IPL File 020733 words File 000035 FCAM.IPL File 005741 words File 000036 FED.IPL File 027515 words File 000037 FEDUTIL.IPL File 006225 words File 000040 FIXFST.IPL File 002212 words File 000041 FLOAT.IPL File 001772 words File 000042 FLOATEXT.IPL File 011010 words File 000043 GAMES.IPL File 003710 words File 000044 HP2645.IPL File 000667 words File 000045 HPIB.IPL File 003417 words File 000046 HPSCREEN.IPL File 001177 words File 000047 IDE.IPL File 010053 words File 000050 INTERNAL.IPL File 013051 words File 000051 LDENC.IPL File 001674 words File 000052 LIB2.IPL File 013747 words File 000053 LIFE.IPL File 010476 words File 000054 LOG2ABS.IPL File 003105 words File 000055 MAGTAPE.IPL File 014476 words File 000056 MAZE.IPL File 020651 words File 000057 MKBCS.IPL File 007402 words File 000060 MKCLDR.IPL File 002530 words File 000061 MKHPASM.IPL File 013041 words File 000062 MKLDR.IPL File 002337 words File 000063 MKWORD.IPL File 001605 words File 000064 MS2L.IPL File 000753 words File 000065 MT2F.IPL File 000606 words File 000066 MTBACKUP.IPL File 006410 words File 000067 MTEXTRA.IPL File 013733 words File 000070 NOLF.IPL File 001137 words File 000071 N_ROCKS.IPL File 026772 words File 000072 OCT70.IPL File 005504 words File 000073 PRINT.IPL File 005641 words File 000074 SCREEN.IPL File 000575 words File 000075 SFS.IPL File 055267 words File 000076 SFSUTILS.IPL File 003062 words File 000077 SIOBCS.IPL File 004705 words File 000100 SIOUTIL.IPL File 001033 words File 000101 TBG.IPL File 004410 words File 000102 TTYSCAN.IPL File 001041 words File 000103 VERSION.IPL File 001343 words File 000104 XDOS.IPL File 032721 words File 000105 XUTILS.IPL File 013354 words ? The disk menu can be removed by doing FORGET _DM then DGENing the change, but let's put it to use... ? "STOCK7906" "@ HPOS7906 1.5" XREN Renaming STOCK7906 to @ HPOS7906 1.5... Done ? "@ HPOSMT6I 1.5" XSAVE Saving to 000000 000107 ******************************* ? DBOOT === HP-IPL/OS Disk Menu === A) Binary HPOS7906 1.5 B) Binary HPOSMT6I 1.5 1) Exit to prompt 2) Halt system (quit) Press a key: Ok let's copy the editor IPL to a disk file so DMENU can run and forget it. On this particular tape file, the MT2F.IPL utility for copying a magtape file to disk is file # 65, and FED.IPL containing the editor is file # 36. Your tape file numbers will be different. Press 1 to exit the menu if running, enter 65 MTLOAD to load the utility, then enter 36 "$ FED" MT2F to copy FED.IPL to a disk file DMENU can run and forget.. must start with $ and the name is the same as the first word in the package which also runs the "application". DBOOT to remove the utility and show the new app... Press a key: 1 HP-IPL/OS MT6I 1.5 ? 65 MTLOAD ? 36 "$ FED" MT2F Saving alt to 000000 000147 ************ ? DBOOT === HP-IPL/OS Disk Menu === A) Binary HPOS7906 1.5 B) Binary HPOSMT6I 1.5 C) Run IPL FED 1) Exit to prompt 2) Halt system (quit) Press a key: C Loading alt mem: ************ HP-IPL/OS MT6I 1.5 Full-screen Array Editor Loading FED... Declaring variables... Loading ZAM... Forgetting dup ZAM Creating PDGC... 054220 : [trimmed] 054272 : Fixing... Loading sub-words... Loading AEDIT... Loading LDFILE SVFILE FEDIT... === IPL/text Array File Editor === Filename to edit: TEST.IPL File doesn't exist [screen clears, I typed...] OCTAL DEFINE TEST "HELLO WORLD" $PRINT CRLF END CONSOLE [extra space trimmed] CTRL:ZAWS moves VCP next/prev/pg ID lines T=ovr NO gr/Txt Q quit Page=00 of 00 [pressed control-Q to quit] Save file to disk? Y Filename to save (enter for TEST.IPL): Saving alt to 000000 000207 * === HP-IPL/OS Disk Menu === A) Binary HPOS7906 1.5 B) Binary HPOSMT6I 1.5 C) Run IPL FED 1) Exit to prompt 2) Halt system (quit) Press a key: 1 ? XDIR Drive: 000000 Volume: DEFAULT Filename LA RA LAP BSIZ CW BLKL BLKH Slot @ HPOS7906 1.5 000002 000002 000000 174000 000000 000047 000000 000000 @ HPOSMT6I 1.5 000002 000002 000000 174000 000000 000107 000000 000001 $ FED 000000 000000 000000 057232 000000 000147 000000 000002 TEST.IPL 000000 000000 000000 003460 000000 000207 000000 000003 ? "TEST.IPL" XLOAD Loading alt mem: * ? TEST HELLO WORLD ? There are a zillion ways to go from here. FED/AEDIT doesn't work on a stock XP sim unless a telnet client is used, otherwise the process is the same. The same technique (run and forget from DMENU) can be done using MAZE.IPL, 1DCA.IPL and LIFE.IPL, which are also arranged so the first word is the word that runs the app. Terry Newton