HP-IPL/OS Array Editor Builds ============================= stdedit.abs - a MT/XDOS build containing the "standard" editor sfsedit.abs - an XDOS/SFS build containing the "experimental" editor fed.ipl - source code for the standard editor aedit.ipl - source code for the experimental editor fedutil.ipl - source code for import/export utilities This is a full-screen text editor for HP-IPL/OS running on a HP-21MX-class minicomputer with at least 64KW memory. It is designed to operate with almost any VT100/ANSI or HP terminal or emulation, using only simple escape codes for clearing the screen and positioning the cursor (supplied by the words in hpscreen.ipl, CLS and POS with TERMINAL selecting the terminal type). Due to the wide varience in codes emitted by various terminals (various sequences or in the case of "smart" HP terminals, none at all), the "regular" cursor keys are not used, rather control-A/S/W/Z are used to move the cursor around. The data being edited is stored in "alternate memory", or the second 32KW memory bank (HP-IPL/OS and other code runs in the first 32KW memory bank). All lines are 78 characters long with a CRLF in the last two bytes, or 40 16-bit locations. This "array" format simplifies and speeds up memory ops such as paging and inserting and deleting lines and characters, but at the expense of having to convert regular text with variable-length lines into the array format, and limits this editor to a maximum of 782 lines. Once in array format files can be loaded and saved as arrays. HP-IPL/OS doesn't care about the trailing spaces so edited IPL files can be loaded from disk or directly from alternate memory without reconversion. In HP-IPL/OS all files are allocated 32KW regardless of actual size so there's rarely a size penalty except for large IPL files such as SFS.IPL which has to be separated into two files for editing. The editor has enough capacity to edit itself. The standard version is the one included with the main HP-IPL/OS archive and includes extra code for ensuring that the machine-coded portions do not cross a page boundary, making it more suitable for "run and forget" usage from a disk menu or SFS application library. The experimental version is for testing new features without impacting the standard version, and does not include the page-crossing code and some of the comments to leave more room for self-editing. It assumes the ZAM word for clearing alternate memory is already present. Presently the only new feature is control-F for deleting an entire page of text. The optional import/export utilities can be used with either version, and provide MASAVE and MALOAD for punching and loading regular text files to and from papertape, and CASAVE and CALOAD for listing and copy/pasting text using the console. An LDTXT word is defined for SFS systems to permit converting regular text stored as HP-IPL/OS disk files. -------------------------------------------------------------- Quick Docs ========== Enter TERMINAL to toggle the terminal type, set to ANSI for a regular VT100/ANSI terminal (Hyperterminal etc), set to HP for HP terminal. This setting is saved by SYSALL XSAVE etc. AEDIT runs the main alt-mem "array" editor. ZAM clears alt-mem before editing or to clear last edit "FILE" LDFILE loads an array file from disk into alt-mem. "FILE" SVFILE saves array data from alt-mem to a disk file. FED prompts for disk files to load and save. ALOAD loads edited IPL code into the dictionary MALOAD loads a regular text file from MS in (PTR) and converts to array data in alt-mem, file must end with ~TERMINATE~ on last line, not added to the array data. MASAVE saves array data to MS out (PTP) and by default strips trailing spaces, do STFLG 0 PUT to not strip. Adds ~TERMINATE~ to last line. CALOAD converts text pasted to the console to array data in alt-mem, last line must be ~TERMINATE~, can be manually typed. CALIST lists array data to console, trailing spaces stripped unless STFLG=0. "FILE" LDTXT loads regular text from disk and converts to array data in alt-mem, requires SFS. No ~TERMINATE~ needed but if that string is present on a line by itself it terminates the load. AEDIT is limited to 782 decimal lines max, or 42 octal pages numbered 00-41, each 23 decimal lines. Line 24 lists control codes. Essentially... ctrl-A, ctrl-S, ctrl-W, ctrl-Z move the cursor ctrl-C goes to the previous page, ctrl-V goes to the next page ctrl-P prompts for a page to go to ctrl-T toggles insert mode (for the line being edited) ctrl-I inserts a line, ctrl-D deletes a line ctrl-F deletes entire page after confirming (experimental version only) ctrl-N switches to HP graphical characters ctrl-O switches to regular characters ctrl-Q quits the editor When making new pages with control-V the "of" count is less than the current page, this is because the new page hasn't been saved to alt-mem yet, thus doesn't register until moving off the page. The quickest way to print, if you don't mind ~TERMINATE~ being printed after the last line, is after quiting AEDIT enter: MSPRN MASAVE Enter CONSOLE or MSPAPER to return MS to PTR/PTP. Another way to print, without adding extra text, is this word... OCTAL DEFINE APRINT CKARRAY IFZ 2 MSUSER MSLPT #1 ARLINES GET +DO MS$IN STTSP MS$OUT MSCRLF +LOOP MSPAPER ENDIF END CONSOLE -------------------------------------------------------------- Build Information ================= These builds contain both 7906 and IDE disk drivers, if no disk boot code is detected they prompt to ask which driver to use... press 1 for a 7906 disk, press 2 for an IDE disk, or press space or any other key for no disk. This prompt should disappear if copied to a HP-IPL/OS disk system. To use without disk the prompt can be eliminated by entering RENAME !DISK #DISK then attaching PTP to a new build file (or device) and entering SYSALL to punch a new system. By default VT100/ANSI terminal codes are used, enter TERMINAL to switch to HP terminal codes (punch or save the build to save). Interface slots are assigned to... Slot 11 - console interface Slot 12 - papertape reader Slot 13 - papertape punch Slots 14,15 - 13181/7970 magtape interface set Slot 16 - 13037/7906 interface Slot 20 - LPT interface Slot 22 - BACI interface Slot 23 - IDE disk interface All but a TTY or BACI console are optional. If the TTY is in slot 11 run from location 2 to start. If TTY is in a different slot put TTY slot in switch register bits 0-5 and run from 70. To boot to a BACI console put the BACI slot in SR bits 6-11, set bit 12, run from 70. CONFIG can be used to reassign other slots (except for magtape), 2 RUN to restart, then a new system can be punched to PTP using SYSALL, saved to disk etc. The STEx IFNZ IFZ IF<0 ENDIx ELSE UNTIx WHILx CASE = < > <= >= <> DEFAxxx ENDCxxx EXECxxx WBOOx AND OR XOR ADD SUB INC DEC NOT 2CPL DUP DROP OVER ROT SWAP GET PUT PNUM CRLF DECIxxx OCTAx BINAxx RADIx SP>S SB>S XP>S XB>S YP>S YB>S ZP>S ZB>S END EOD DEFIxx DMPS S>SR SR>S PCHR PWRD CHRIx S>X X>S S>Y Y>S S>Z Z>S MUL ASL ASR ROL ROR DIV RUN X>>Y X>>Z Y>>X Z>>X $PRIxx $SWAx $CPY $DUP $DROx $LEN $ADR $XTExx $PUT $GET $CRExxx $STR $HEAx $APPxxx $TAIx $IN $CAT $VAL <>COx >PTP MS BACx BACIxxx TTYCxx MKWOxx ENDWxxx CFGE !DMS -DMS SDMA UDMA UJUMx SJUMx SPAGx C>ACxxx A>CCxxx USPAxx DMSTxxxx UPTR MSUSxx ABSLxxx GOUSxx GOSYxxxx ALTSxxx ?DMS CONFxx !SDC MTINxx MTRExx MTWRxxx GAP GAPMxxx FS1R BS1R FS1F BS1F RWLP RWOL MTSTxxxx MTBOxx MTWAxx ?MTExxxx EOF RECOxxx FILEx MTSCxx MTGEx IDREx MTDIx DLTF MTSExx MMTIx MTSAxx MTLOxx MS2Mx MT2Mx B2MT MT2B MTSHxx D2MT DADD D2CPx EMUL EDIV DSWAx $DVAx $DSTx FIX FLT FP+ FP- FP* FP/ DFLT DFIX PWR1x $>FP FP>$ FSGN FSQR TTYSxxx TTYGxx TTYPx TERMxxxx ESC POS CLS COLOx -COLxx >IDE LPT $LPT NLPT FED CPAG MPAG CLIN CCOL GCHR INSM AMTW PDGC PSGC LNLEx MVWA DISL DIBUx GPAGx PPAGx PBYTx GBYTx UDCHx UDLIx AEBS STMPxx TRCAx AEDIx LDFIxx SVFIxx FEDIx 78PAx ARLIxxx CKARxxx STTSx STFLx MALOxx MASAxx CALOxx CALIxx ALOAx LDMT SVMT APRIxx EOD=053060 FREE=006717 Package list... Start with hposmt6i.abs (3 blocks allocated) FORGET _DM print.ipl fed.ipl fedutil.ipl FEDMT.IPL (LDMT and SVMT from the mods section) DEFINE APRINT CKARRAY IFZ 2 MSUSER MSLPT #1 ARLINES GET +DO MS$IN STTSP MS$OUT MSCRLF +LOOP MSPAPER ENDIF END For use as a general-purpose MT/XDOS build, enter FORGET FED for 13622 octal words free. Enter FORGET !LPT to remove the printer driver too for 14003 octal words free. To make a diskless magtape build, enter FORGET >IDE followed by 2 RUN for 24244 free, or 17747 free after adding back fed.ipl, fedutil.ipl and FEDMT.IPL. Note that this removes the !NOLF driver (2 RUN is needed to unhook it), don't use the system with a terminal that emits CRLF enters unless nolf.ipl is added back to the system to make it ignore LF's in the input stream. SFS/EDIT 6/I 1.52P ================== This build is in the sfsedit.abs file, dated 3/16/09, and is based on the editor build included with the 7906 simulation package with the addition of print.ipl, the APRINT word from the docs section, and the words from hp2645.ipl for operating HP graphics terminals. No magtape words are included but it has extra utilities from altutil.ipl and fcam.ipl for manipulating binaries in alternate memory, and the SFS file access words for more sophisticated file processing, including LDTXT for loading normal text files for editing. LDTXT and other SFS operations require at least 96KW memory and up to 192KW memory to buffer 4 files. 1)7906 2)IDE 0 SFS/EDIT 6/I 1.52P ? WORDS DO +DO INDEx +LOOx >STEx IFNZ IFZ IF<0 ENDIx ELSE UNTIx WHILx CASE = < > <= >= <> DEFAxxx ENDCxxx EXECxxx WBOOx AND OR XOR ADD SUB INC DEC NOT 2CPL DUP DROP OVER ROT SWAP GET PUT PNUM CRLF DECIxxx OCTAx BINAxx RADIx SP>S SB>S XP>S XB>S YP>S YB>S ZP>S ZB>S END EOD DEFIxx DMPS S>SR SR>S PCHR PWRD CHRIx S>X X>S S>Y Y>S S>Z Z>S MUL ASL ASR ROL ROR DIV RUN X>>Y X>>Z Y>>X Z>>X $PRIxx $SWAx $CPY $DUP $DROx $LEN $ADR $XTExx $PUT $GET $CRExxx $STR $HEAx $APPxxx $TAIx $IN $CAT $VAL <>COx >PTP MS BACx BACIxxx TTYCxx MKWOxx ENDWxxx CFGE !DMS -DMS SDMA UDMA UJUMx SJUMx SPAGx C>ACxxx A>CCxxx USPAxx DMSTxxxx UPTR MSUSxx ABSLxxx GOUSxx GOSYxxxx ALTSxxx ?DMS CONFxx !SDC DADD D2CPx EMUL EDIV DSWAx $DVAx $DSTx FIX FLT FP+ FP- FP* FP/ DFLT DFIX PWR1x $>FP FP>$ FSGN FSQR TTYSxxx TTYGxx TTYPx TERMxxxx ESC POS CLS COLOx -COLxx >IDE FILx UCOMx FSS CWA LAA RAA FPA FSA FCA FNA DNA VNA NDEA DBLA DBHA FSLA FSHA DupCxxxx SCDRx RCDRx ChkBxx ChkDxx DIRExxxxx REOPxx OPEN SEEK DirUxxxxx CLOSx CNF DEL BCOPx RELExxx ?SFS -SFS FED CPAG MPAG CLIN CCOL GCHR INSM AMTW PDGC PSGC LNLEx MVWA DISL DIBUx GPAGx PPAGx PBYTx GBYTx UDCHx UDLIx AEBS STMPxx TRCAx AEDIx LDFIxx SVFIxx FEDIx 78PAx ARLIxxx CKARxxx STTSx STFLx MALOxx MASAxx CALOxx CALIxx ALOAx LDTXx !LPT CKLPx MSLPx +PE -PE >LPT $LPT NLPT APRIxx +TD -TD >TD -GD +GD >GD *GT EOD=060053 FREE=003724 Package list... hpiplos1.abs 1.5 kernel extra.ipl (select 32KW) 2 ALLOCATE RENAME +IRQ !IRQ oct70.ipl create.ipl version.ipl baci.ipl mkword.ipl cfge.ipl dms.ipl config.ipl double.ipl float.ipl floatext.ipl ttyscan.ipl hpscreen.ipl TERMINAL to default to ANSI disk.ipl "IDE followed by 2 RUN for a whopping 27636 free after doing 3 ALLOCATE, or 23602 free after reloading fed.ipl and fedutil.ipl. Note the notes about !NOLF. Setting up a Simulation ======================= These binaries can be simulated using the SimH HP2100 simulator although some features are meant for running on (our) real hardware, in particular the IDE disk driver for connecting an IDE disk to a real HP-21MX mini using an inexpensive homemade interface. The main advantage of having dual disk drivers is the same binary or an entire disk image runs under both a 7906 simulation and on real hardware using an IDE disk, thus permitting using the simulation to set up binaries or a disk to run on real hardware. SimH source and Windows binaries are at: http://simh.trailing-edge.com/ My modified Linux and Windows binaries is available at: http://www.infionline.net/~wtnewton/oldcomp/hp2100mod.html A startup script for a 7906/magtape system would look something like... set cpu 21MX,256K set clk dev=10 set tty dev=11 set ptr dev=12 set ptp dev=13 set lpt dev=20 set msc dev=14 attach msc msc0.tap set ds 7906 set ds dev=16 attach ds ds0.dsk set tty0 7B set tty1 7B load stdedit.abs ;this avoids the disk driver prompt... d 77700 17727 run 2 Save as (say) "stdedit.sim". For Linux, start a terminal shell with a real control-H backspace (for example Konsole set to keymap vt420) then enter hp2100 stdedit.sim (for example) to start. An example bash script to start it without opening a terminal first might look like... #!/bin/bash konsole --keymap vt420 -e hp2100 stdedit.sim For Windows a bit more needs to be done as the normal console does not support terminal codes, to make AEDIT work a "telnet" terminal has to be used. Add the following to the beginning of the startup script.. set telnet 4000 ! start telnet localhost 4000 ...rest of script To start without opening a "dos shell" make and save a batch file... @echo off hp2100 stdedit.sim When first using tell the Windows firewall it's OK, and you might have to press control-] in the telnet window and enter the following... unset crlf unset localecho set mode stream set term vt100 quit Run again and all should be OK. After pressing space to get the prompt enter CLS and make sure the screen clears. Note that when running with a telnet terminal, control-E and simulator commands must be typed in the simulator window, not the telnet window. All HP-IPL/OS commands are given in uppercase, to permit mixed-case editing the startup script enables lowercase input, so hold shift or press the caps lock when entering commands. To initialize the magtape file, enter MTGEN and press V for volume. MTDIR should show the system just saved. If saving additional systems to magtape (after reconfiguring, loading other apps etc) enter MTGEN then press F to save as an additional file. To initialize the disk enter DGEN (to save a default system for DBOOT), enter XINIT then enter 3 for the number of volumes and 26 for the number of files in the last volume. To make a default disk volume enter "7906" MKVOL (replace "7906" with whatever you want to name the volume, up to 16 characters). XDIR should show "No files". The entire init process looks like... MT6I/EDIT 1.51P ? MTGEN New Volume or File? (V/F) V Saving HP-IPL/OS...................... Saving HiMem... Writing to tape... ? MTDIR File 000001 MT6I/EDIT 1.51P System ? 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 ? "7906" MKVOL Clearing dir block 000000 000007 ? XDIR Drive: 000000 Volume: 7906 No files ? Note that this isn't a truly bootable disk as there is no boot extension on it. To do that requires running 7906bext.abs from the main HP-IPL/OS archive with specific switch register settings, see other docs to do that but the method here achieves about the same effect except the initial bootup is from the abs file specified in the startup script rather than the system area saved using DGEN. However, the disk can be booted if copied to an IDE disk attached to an HP-21MX mini using the IDE interface and the IDE bootrom code (or tiny "kicker" ABS), the core HP/IDE disk language is so simple the bootrom can directly load the DGEN'd system. To create a new file do ZAM AEDIT and use the editor to write something. Press control-Q to quit the editor. To save the edited data to magtape enter: "Label" SVMT "Label" can be any quoted name up to 20 characters and is used only to label the MTDIR listing. To reload a magtape file with LDMT it must be specified by the number appearing next to it in MTDIR, for example if file 000002 then enter 2 LDMT AEDIT to reload the file into the editor. To show (say) file 000002 without editing enter: 2 MTSHOW If file 000002 represents valid IPL code, it can be loaded by: 2 MTLOAD Enter DLTF to delete the last tape file to resave altered copies. To boot magtape system files saved using MTGEN enter: file# MTBOOT For example, enter 1 MTBOOT to boot the initially saved system. To save edited data to disk enter: "FILENAME" SVFILE "FILENAME" can be any quoted name up to 16 characters. To reload from disk into the editor enter: "FILENAME" LDFILE AEDIT To display a disk file enter: "FILENAME" XSHOW If the file contains valid IPL code it can be loaded by: "FILENAME" XLOAD To save an altered system to disk enter: "SYSNAME" XSAVE "SYSNAME" XLOAD to reload the system (XLOAD checks to see if text or binary). To delete a disk file enter: "FILENAME" XDEL To rename a disk file enter: "FILENAME" "NEWNAME" XREN To boot whatever system was saved by DGEN enter: DBOOT Other compatible ABS files can be loaded from PTR into the system using "FILE" ABS2F. For example to add the sfsedit.abs build to the disk, press control-E in the sim window and enter: attach -e ptr sfsedit.abs Enter c to continue and enter (say): "SFS/EDIT" ABS2F To import a PC text file, first use a PC editor to add ~TERMINATE~ by itself as the last line (must have no leading or trailing spaces, and have a CRLF after it), put in the sim directory for easy access. Press control-E and enter attach -e ptr filename.ext followed by c, enter MALOAD to import, then enter "FILENAME" SVFILE to save. To export an AEDIT-format text file to a regular PC text file, load it into alt.mem. by entering "FILENAME" LDFILE then press control-E and enter attach ptp filename.ext followed by c, then enter MASAVE to write the file. The ~TERMINATE~ line is added to the end. Control-E again and enter detach ptp to avoid accidently writing additional data after the file. Alternatively the APRINT word can be used.. "FILE" LDFILE then control-E, attach lpt filename.ext, c, then APRINT to write the file. Detach lpt afterwards. To export a HP-IPL/OS system to an ABS file, load the system to export (file# MTBOOT, "SYSFILE" XLOAD, DBOOT etc) then control-E and attach ptp filename.abs then c then SYSALL to write. Detach ptp afterwards. Modifications ============= The general procedure for making a new build is to FORGET name where name is the word to remove and trim from, generally (but not always) the first word or variable defined in an IPL package file. The text in the build information above lists various FORGET points, for example FORGET FED to remove the editor. If making a disk-free system, note that doing FORGET >IDE to remove the disk words also removes !NOLF (the input stream LF ignorer), however its code remains active and if any code is loaded over where it was the system will crash. To avoid this do 2 RUN after removing !NOLF. WORDS lists all the defined words in the dictionary (as HP-IPL/OS sees them, the first four characters of the name plus the length), and lists the end-of-dictionary and free dictionary space (in octal by default). EOD is important when loading machine coded words which cannot cross a 1KW boundary (42000 44000 etc so if say 45600 load something else to push past say 46000 before loading a package containing CREATE word(s)). Don't let free space get too low or go negative (in octal expressed as 1xxxxx, or bit 15 set). After trimming the dictionary back to the desired point using FORGET, attach the IPL file to load to PTR (under the SimH simulator press control-E in the simulator window and enter: attach -e ptr filename.ipl then to continue enter: c) then enter LOAD to load in the package. If something isn't found or a page error occurs, FORGET the first word or variable of the package and try a different order. Repeat for all packages to load, doing WORDS in between to keep tabs on free dictionary space. The ALLOCATE word can be used to adjust how many 1KW blocks are allocated for application data. At least 2 blocks are needed for proper disk operation, some applications (like the LIFE demo) need 3 or more blocks. Enter 2 ALLOCATE for 2 blocks, or n ALLOCATE to allocate n blocks. Each additional block reduces free space by 2000 octal. Blocks can be handy for temporarily saving words when rearranging the dictionary.. given the high-level words THIS THAT to forget THIS and keep THAT do "THAT" 0 STASH then FORGET THIS then 0 FETCH to restore THAT. This only works with high-level words (not variables, constants or CREATE words), if EXPLAIN WORD doesn't list the word's code then it won't work. Once the desired packages have been loaded and everything is otherwise configured (such as VERSION to change the sign-on string), attach ptp to the new ABS file (under simulation press control-E then enter: attach ptp filename.abs then enter: c) and enter SYSALL to write. For example, to update sfsedit.abs with a new version of aedit.ipl do the following... ? FORGET FED [press Y to confirm] ? [control-e in the sim window] sim> attach -e ptr aedit.ipl sim> c LOAD [loading text displayed] ? [control-e] sim> attach -e ptr fedutil.ipl sim> c LOAD [loading text displayed] If the printer driver is needed, halt, attach ptr print.ipl c and LOAD. If the HP2645 terminal words are needed, attach ptr hp2645.ipl and LOAD. These and other HP-IPL/OS IPL files are available from the HP-IPL/OS files listings at: http://www.infionline.net/~wtnewton/oldcomp/hp2100/files.htm The APRINT word for printing can be typed in if needed, see the package lists for the compacted code. Once the build is set up, it can be saved in various ways. To punch a new ABS file press control-E, attach ptp filename.abs then c to continue, then SYSALL to write the system. To save to magtape enter MTGEN and press F for file. To save to disk enter: "SYSNAME" XSAVE To save to the disk system area for quick DBOOT access enter: DGEN Source for the magtape load/save words ====================================== These words store the edited file in native editor "array" format, if IPL code MTLOAD will load them into the dictionary but they cannot be used to load IPL/text with variable length lines. For simplicity these do not check to see if the data is actually valid. There must already be a file on the magtape before using SVMT, if an empty tape do MTGEN and press V to write a default system to the tape. If an invalid file number is given when using LDMT the system will lock up, to recover halt and run from location 2. ;FEDMT.IPL - LOAD/SAVE AEDIT DATA FROM/TO MAGTAPE 4/9/08 ;NO CHECKING TO MAKE SURE FILE/EDIT DATA IS VALID, JUST DOES IT ;LOCKS UP IF INVALID FILE# LDMT, "NORMAL" MT2MS BEHAVIOR ;DON'T USE SVMT TO SAVE TO AN EMPTY MAGTAPE (MTGEN 1ST IF EMPTY) ; OCTAL DEFINE LDMT ;USAGE: FILE# LDMT - LOADS AEDIT FILE FROM MAGTAPE DUP "LOADING MT FILE " $PRINT PNUM CRLF ZAM CPAG #0 PUT ;CLEAR ALTMEM, CURRENT PAGE=0 2 MSUSER ;REDIRECT MS TO/FROM ALT MEM MT2MS ;LOAD MAGTAPE FILE INTO ALT MEM CONSOLE ;RETURN MS TO PTR/PTP END ; DEFINE SVMT ;USAGE: "FILENAME" SVMT - SAVES AEDIT DATA TO MAGTAPE MTSCAN ;GO TO END OF MAGTAPE $DUP "SAVING MT FILE " $PRINT $PRINT CRLF STMPAG ;MAKE SURE MPAG IS SET MPAG GET INC 1630 MUL ;PUSH NUMBER OF WORDS TO SAVE DUP #0 SWAP #1 MMTID ;MAKE ID RECORD UDMA 2 SWAP MTWRITE MTWAIT ?MTERROR ;WRITE ALTMEM TO MAGTAPE SDMA GAPMARK MTWAIT GAPMARK BS1R MTWAIT ;TIDY UP FILE END CONSOLE Using AEDIT on HP terminals =========================== To use these builds on an HP terminal (including QCTerm), enter TERMINAL at the ? prompt to configure to output HP terminal codes. Resave the build (attach ptp filename.abs then SYSALL, or "FILENAME" XSAVE if a disk system) to keep the setting. If using a graphics terminal such as the HP2645 use the sfsedit.abs version. If the terminal is not already in text mode, upon boot press space (to skip the disk driver prompt) and enter *GT to switch to text mode. Enter RENAME *GT !GT and resave to make this automatic. If using QCTerm for best results use SimH HP2100 version 3.8-0 or greater, previous sim versions require setting QCTerm to CRLF mode. There are various ways to enable a telnet prompt to use QCTerm, the easiest is probably to break to the sim prompt (control-E) then enter set telnet 23 (or some other port number), launch QCTerm (set to connect to localhost and the same port number), then enter c at the sim prompt to continue. A varient of the simulator startup script can do this automatically. When using an HP terminal (or any terminal for that matter), avoid pressing the normal cursor arrow keys. Even if the cursor moves AEDIT won't get the message, always use control-A/S/W/Z to move the cursor. AEDIT supports graphical characters on an HP terminal but the terminal interprets each control-N or control-O as positional sets, which leads to apparently buggy behavior such as characters changing from text to graphics and vice-versa. Graphics character "mode" works as intended if the following "rules" are kept in mind... Plan out and enter graphic characters linearly one line at a time. Always do control-O before cursoring or changing pages. Avoid cursoring through graphics as it disturbs the figures, however cursoring forward (in control-O/text mode) restores them. Flip pages in text mode (control-O control-V control-C) to restore the screen to the stored data if it gets messed up. There is no easy way to force a position-sensitive terminal to behave modally, so probably won't fix the apparently buggy behavior. The present implementation is probably the simplest way to get graphical characters with hardly no impact on regular text editing, just have to keep in mind how HP terminals work when using the feature. -------------------------------------------------------------- AEDIT.IPL History... (CAPS=CHANGES MADE WITH AEDIT) 4/7/08 - moved CRLF in LDFILE for consistent spacing 4/6/08 - mod'd TRCAM to fix the fix for potential mis-formatted data at end 4/5/08 - ADDED BACK CTRL-F PAGE DELETE FUNCTION, SIMPLIFIED LDFILE TO AVOID BUG WHEN FILE IS MAX# PAGES, MOD'D TRCAM TO SPEED UP 4/2/08 - MOD'D PDGC AND ADDED PSGC FOR SINGLE-CHAR UPDATES, MOD'D UDCHR 3/15/08 - MODIFIED SVFILE AND FED TO AVOID INADVERTENTLY ABANDONING 2/22/08 - REMOVED CTRL-F PAGE DEL, ADDED TRCAM TO TRUNCATE ON EXIT ADDED STMPAG CALL TO SVFILE 2/18/08 - ADDED LNLEN WORD AND MOD'D DIBUF TO SPEED UP REFRESH 1/12/08 - ADDED UDCHR TO OTHER CURSOR MOVES 1/11/08 - COMMENTS, FIXED LDFILE TO SET MPAG AND RESET CPAG 1/10/08 - FIXED LDFILE LARGE-FILE BUG [not..], ADDED PAGE-FORGET 1/10/08 - commenting and stuff for initial release 1/9/08 - added console/MS save/load/convert code [MOVED TO UTIL IPL] 1/8/08 - added insert-mode and page-goto code 1/7/08 - wrote AEDIT and its subs, added disk code -------------------------------------------------------------- Last mod 3/16/09 Terry Newton