HP-IPL/OS 1.6 Build Information =============================== HP-IPL/OS can be built in a variety of ways to support just about any HP21xx minicomputer from the 2114 to the 21MX M/E/F series. Peripheral support is according to what we have available for testing, presently HP-IPL/OS includes drivers for the following... Slot 10 - Time base generator (tbg.ipl) Slot 11 - TTY console interface (built-in) Slot 12 - Papertape Reader (built-in) Slot 13 - Papertape Punch (built-in) Slots 14,15 - 13181/7970 Magtape (magtape.ipl) Slots 16,17 - 13210/7900 disk interface (7900.ipl) Slot 16 - 13037/7906 disk interface (7906.ipl) Slot 17 - HPIB machine interface (hpib.ipl) Slot 20 - 12555 XY plot display (n_rocks.ipl) Slot 20 - 12845 LPT interface (print.ipl) Slot 22 - BACI serial interface (baci.ipl) Slot 23 - Bob Shannon's IDE disk interface (ide.ipl) Most of the slot assignments can be changed using CONFIG, to alter Magtape and XY display slots the affected ipl files must be edited and (re)loaded. Note... the default HPIB slot conflicts with the default 7900 bext/driver, the easiest non-editing way to fix if both are needed is move the HPIB interface to another slot and use CONFIG to change the HPIB slot then regenerate the system (SYSALL DGEN etc). The default LPT slot conflicts with XY, if using both put LPT in a different slot and use CONFIG. Most 32K+ builds include cfge.ipl which allows configuring TTY and optionally BACI slots via the switch register (SR), requires baci.ipl and config.ipl (!SDC) to enable BACI console but can be used alone to set the TTY slot. To reconfigure, after loading via papertape (or any bootloader that halts before running) clear SR, put the TTY slot in SR bits 0-5, and put the BACI slot in bits 6-11. If SR bit 15 is set with SR bits 6-11 zeroed then autostarting is disabled (by making SR 177777), if SR bit 12 is set with SR bits 6-11 containing BACI slot, then configures to use the BACI interface as the console. Run from location 70 (instead of 2) to read the SR bits and reconfigure. I.E to boot to a baci console with the default slot assignments put 12211 in SR, 70 in P and run. The 7906 boot extension can use the cfge reconfig method, if SR bit 5 is set then it halts allowing entry of TTY/BACI slots, continue drops through and runs from location 70. Both the 7900 and 7906 boot extensions auto-detect the drive slots and patch themselves accordingly, so a disk can be moved to a controller in another slot and still boot (run CONFIG afterwards). ABS File Formats ================ The hpos*.abs files were generated by HP-IPL/OS' SYSALL or SYSGEN command and include 8 to 20 zero bytes at the beginning for the leader and 20 zero bytes at the end. The hpiplos1.abs kernel, 790?bext.abs and oct-d.abs were assembled using the asm21.pl cross-assembler modified to add a leader of 8 zero bytes. I don't have an official specification for the ABS binary format, the following is as I understand it: Leader - any number of 0 bytes (depends on interface) For each record... Byte - number of words in the record Byte - 0 Byte - high byte of address Byte - low byte of address For each word in record... Byte - high byte of word Byte - low byte of word Byte - high byte of 16-bit checksum of all words in record Byte - low byte of checksum 0 to 4 (?) zero bytes to separate records Trailer - at least 16 (?) zero bytes to terminate load Leading zeros don't seem to cause any problems with the BBL (basic binary loader, aka papertape boot rom) but if loading via BACI the leader needs to be deleted either using a hex editor or by the sending software. Other applications may require hex-editing the ABS files if a specific number of zero leader bytes is required. HP-IPL/OS 8K V1.6 =================== This build is in the hpiplos1.abs file, build date 6/9/10. Assembly source is in the hpiplos1.asm file. ? 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 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 TBG TBGZxxx >WDT +WDT -WDT !100xx T>>S TIMExxx PTIMx !WDA !BACx MSBAxx BACx BACIxxx TTYCxx CBUS ?BUS >BUS BUx $ACxxx A>CCxxx USPAxx DMSTxxxx UPTR MSUSxx ABSLxxx GOUSxx GOSYxxxx ALTSxxx ?DMS MKWOxx ENDWxxx DADD D2CPx EMUL EDIV DSWAx $DVAx $DSTx DASL DASR DLSL DLSR DROL DROR FIX FLT FP+ FP- FP* FP/ DFLT DFIX PWR1x $>FP FP>$ FSGN FSQR TTYPx TERMxxxx ESC POS CLS COLOx -COLxx EOD=033562 FREE=024215 Default allocation is 4 1KW data blocks. Package list... Start with hpiplos1.abs extra.ipl (select 32K) oct70.ipl create.ipl debug.ipl version.ipl tbg.ipl baci.ipl hpib.ipl config.ipl cfge.ipl dms.ipl mkword.ipl double.ipl bigshift.ipl float.ipl floatext.ipl hpscreen.ipl TERMINAL to default to ANSI Configuration... Slot 10 - TBG Slot 11 - TTY Slot 12 - PTR Slot 13 - PTP Slot 17 - HPIB Slot 22 - BACI HP-IPL/OS MT 1.64 ================= This build is in the hposmt.abs file, build date 6/13/11. ? 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 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 HELP EOD=032562 FREE=027215 Package list... Start with hpiplos1.abs extra.ipl (select 32K) 3 ALLOCATE for 3KW data memory oct70.ipl create.ipl version.ipl baci.ipl mkword.ipl cfge.ipl dms.ipl config.ipl magtape.ipl mtextra.ipl RENAME +IRQ !IRQ Configuration... Slot 11 - TTY Slot 12 - PTR Slot 13 - PTP Slots 14/15 - Magtape Slot 22 - BACI HP-IPL/OS 7906 1.65 =================== This build is in the hpos7906.abs file, build date 1/1/12. ? 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 TBG TBGZxxx >WDT +WDT -WDT !100xx T>>S TIMExxx PTIMx !WDA !BACx MSBAxx BACx BACIxxx TTYCxx CBUS ?BUS >BUS BUx $ACxxx A>CCxxx USPAxx DMSTxxxx UPTR MSUSxx ABSLxxx GOUSxx GOSYxxxx ALTSxxx ?DMS MKWOxx ENDWxxx DADD D2CPx EMUL EDIV DSWAx $DVAx $DSTx DASL DASR DLSL DLSR DROL DROR FIX FLT FP+ FP- FP* FP/ DFLT DFIX PWR1x $>FP FP>$ FSGN FSQR 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 D2F FCOPx FMOVx FDUP MS2F F2MS ABS2x VRECxxxx XRECxxxx XINIx DHELx EOD=053136 FREE=010641 Package list... Start with hposdms.abs 2 ALLOCATE disk.ipl xdos.ipl 7906.ipl sfs.ipl sfsutils.ipl xutils.ipl dhelp.ipl Configuration... Slot 10 - TBG Slot 11 - TTY Slot 12 - PTR Slot 13 - PTP Slot 16 - 7906 Slot 17 - HPIB Slot 22 - BACI HP-IPL/OS DEMO 1.64 =================== This build is in the hposdemo.abs file, build date 6/13/11. ? 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 TBG TBGZxxx >WDT +WDT -WDT !100xx T>>S TIMExxx PTIMx !WDA !BACx MSBAxx BACx BACIxxx TTYCxx CBUS ?BUS >BUS BUx $ACxxx A>CCxxx USPAxx DMSTxxxx UPTR MSUSxx ABSLxxx GOUSxx GOSYxxxx ALTSxxx ?DMS MKWOxx ENDWxxx DADD D2CPx EMUL EDIV DSWAx $DVAx $DSTx DASL DASR DLSL DLSR DROL DROR FIX FLT FP+ FP- FP* FP/ DFLT DFIX PWR1x $>FP FP>$ FSGN FSQR TTYPx TERMxxxx ESC POS CLS COLOx -COLxx !NOLx ZAM HLT ALTRxx RUNAxx PTHExxxx AAOUx ALTAxx ALTDxxx CLRHxxx ALTHxxx +TD -TD >TD -GD +GD >GD *GT !LPT CKLPx MSLPx +PE -PE >LPT $LPT NLPT CPAG MPAG CLIN CCOL GCHR INSM AMTW PDGC PSGC LNLEx MVWA DISL DIBUx GPAGx PPAGx PBYTx GBYTx UDCHx UDLIx AEBS STMPxx TRCAx AEDIx 78PAx ARLIxxx CKARxxx STTSx STFLx MALOxx MASAxx CALOxx CALIxx ALOAx ALTExx CONGxx ALTGxx CONAxx ECAL DELAx SHOW CYLOx CYLOxx SPEEx 1DCA 1DCAxxx MAZE TTYSxxx TTYGxx LIFE EOD=056412 FREE=003365 Configuration... Slot 10 - Time base generator Slot 11 - TTY console interface Slot 12 - Papertape Reader Slot 13 - Papertape Punch Slot 17 - HPIB machine interface Slot 20 - LPT interface Slot 22 - BACI serial interface Build list... Start with hposdms.abs 3 ALLOCATE nolf.ipl altutil.ipl hp2645.ipl print.ipl fed.ipl fedutil.ipl conalt.ipl ecal.ipl cylons.ipl 1dca.ipl maze.ipl ttyscan.ipl FORGET TTYDEMO life.ipl Default is set to ANSI/VT100-compatible screen codes, if using on a HP terminal enter TERMINAL to switch to HP mode. The setting sticks if the build is punched using SYSALL or otherwise saved. If using on a HP2645 terminal also enter *GT to enable a regular text mode. Loaded demos and utilities... MAZE - a maze game 1DCA - one-dimensional cellular automata generator LIFE - Conway's Game of Life [number] CYLONS - displays "cylons" display on switch register ECAL - an electronics calculator RUNABS - loads ABS file attached to PTR (run 77000 to return to HP-IPL/OS) CONGEN - dumps system to console as text-encoded binary ALTGEN - dumps alt.mem to console as text-encoded binary CONALT - loads text-encoded binary into alt.mem AEDIT - edits IPL/text in alt mem (see below for quick-help) ZAM - clears alt.mem (use before editing new file) ALOAD - loads edited IPL code MALOAD - loads MS (PTR) into alt.mem for editing (must end w/ ~TERMINATE~) MASAVE - saves alt.mem to MS (PTP) (adds ~TERMINATE~) CALOAD - loads file pasted to console for editing (enter ~TERMINATE~ to stop) CALIST - lists edited file to console MSLPT - redirects MS out to printer, MSPAPER to return MS to PTR/PTP +PE - enable and disable printer echo for logging commands and output -PE - turn off printer echo To print edited text do MSLPT MASAVE but that adds ~TERMINATE~ to output. If that's not OK enter this APRINT word (use AEDIT then ALOAD)... OCTAL DEFINE APRINT CKARRAY IFZ 2 MSUSER MSLPT #1 ARLINES GET +DO MS$IN STTSP MS$OUT MSCRLF +LOOP MSPAPER ENDIF END CONSOLE Using AEDIT... AEDIT edits data in alternate memory in "array" format, each line is 78 characters with a CRLF in columns 79/80. Data is edited 23 lines at a time, up to 34 pages numbered 00 to 41 octal. Internally AEDIT supports partial pages but as soon as the page is displayed the rest of a partial page is converted to spaces. Upon exit alt mem is zeroed after the last line of non-space data, and the MPAG variable contains the last page number. If using a HP terminal make sure TERMINAL is set to HP mode, default for the "demo" build is VT100/ANSI. Enter ZAM to clear alternate memory before starting a new edit file, AEDIT resumes editing on the page it was on when last exited. Once started the following keystrokes are available... Enter - move the cursor to the start of next line, paging if needed Backspace - deletes previous character, if insert mode moves rest of line Control-A - move the cursor left Control-S - move the cursor right Control-W - move the cursor up Control-Z - move the cursor down Control-V - show the next page Control-C - show the previous page Control-P - go to a specified page Control-D - delete the line the cursor is on (careful!) Control-I - insert a blank line at cursor, pushing everything down Control-T - toggle insert/overwrite mode (on line only) Control-N - select graphics character set (HP terminals only) Control-O - select regular character set Control-Q - quit editing Once an IPL masterpiece has been created (and the editor exited) it can be loaded into the dictionary by doing ALOAD. When doing repeated edits of the same word don't forget to FORGET the previous version to avoid dups and overflowing the dictionary. To save the edited file attach PTP to an output medium - for real hardware stick an eeprom in your PTP emu or however you do it, under sim press control-E and enter attach ptp filename.ext (substitute name, great.ipl, story.txt etc) then enter c to continue the simulation. Enter MASAVE to punch the edited data. Alternatively, set the terminal to capture and enter CALIST (or copy the listed data from the screen). To reload, attach PTR to file and enter MALOAD, or enter CALOAD and paste the data to the screen. Pasting text requires a terminal emulation that permits setting character and line delays.. HyperTerminal, ProComm etc. HP-IPL/OS 16K 1.60 ================== This build is in the hpos16k.abs file, build date 6/9/08. ? 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 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 CONFxx !SDC CFGE !DMS -DMS SDMA UDMA UJUMx SJUMx SPAGx C>ACxxx A>CCxxx USPAxx DMSTxxxx UPTR MSUSxx ABSLxxx GOUSxx GOSYxxxx ALTSxxx ?DMS MKWOxx ENDWxxx DADD D2CPx EMUL EDIV DSWAx $DVAx $DSTx DASL DASR DLSL DLSR DROL DROR FIX FLT FP+ FP- FP* FP/ DFLT DFIX PWR1x $>FP FP>$ FSGN FSQR TTYPx TERMxxxx ESC POS CLS COLOx -COLxx ZAM HLT ALTRxx RUNAxx PTHExxxx AAOUx ALTAxx ALTDxxx CLRHxxx ALTHxxx ALTExx CONGxx ALTGxx CONAxx L2ABx _FLG _XFR _LNZ _CNT _MCZ FCAM ?MSOxx _PAD _CBD _TRA AM2Axx APUT AGET _ASM _FTN _ALG _BIN _SIO _BCS NumFxxxx MKBCx $ASM $FTN $ALG $SIO $BCS $BIN ISIO IOPAxxx SIOPxxxx SHAM UNSHxx MSUPxxxx BINPxxxx EOD=045656 FREE=012121 Package list... start with hpiplos1.abs extra.ipl (select 32K) oct70.ipl create.ipl debug.ipl version.ipl baci.ipl config.ipl cfge.ipl dms.ipl mkword.ipl double.ipl bigshift.ipl float.ipl floatext.ipl hpscreen.ipl TERMINAL to default to ANSI altutil.ipl conalt.ipl log2abs.ipl fcam.ipl mkbcs.ipl sioutil.ipl sham.ipl msupatch.ipl binpatch.ipl 270 10 PUT (to tell utilities to use TBG=10) Configuration... Slot 11 - TTY Slot 12 - PTR Slot 13 - PTP Slot 22 - BACI Summary of some of the available utilities... ALTSAVE - copies HP-IPL/OS to alt mem and puts a program at location 77000 which swaps main and alt mem then runs from location 2. ZAM - Zero Alt Mem, ALTSAVE ZAM zeros alt mem but leaves the swapper. Hint... if you might need to run the swapper (77000 RUN or ALTRUN) to test a binary loaded via ABSLOAD or whatever, do ALTSAVE ZAM before loading memory to make sure the swapper is there to run. HLT - halts the computer for swapping cables, attaching etc. ABSLOAD - loads ABS from PTR into alt mem (attach first or do HLT ABSLOAD). RUNABS - runs an ABS file from PTR, prompts to halt/attach if needed. Executes from location 2 if 2/3 defined, otherwise prompts for a run address. Automatically does ALTSAVE ZAM, so after operating the program, halt and run from 77000 to return to HP-IPL/OS. FCAM - scans alt memory for code and prints ranges AM2ABS - scans alt memory and punches an ABS file from what it detects, prompts to halt for attaching output file. For apps, not overlays. PTZERO or PTHEADER - writes 20 or 8 zeros to PTP (attach first) [from] [to] AAOUT - writes range to PTP in ABS format (attach first) use like: PTZERO [from] [to] AAOUT [from] [to] AAOUT etc PTZERO to save exact ranges to an ABS file. Useful for making overlays. [from] [to] ALTDUMP - dumps alt memory to screen in octal to examine. SHAM - prompts for address and displays pageful of octal and ascii. Enter ALL at the ADR: prompt to dump 31KW from alt mem. UNSHAM - decodes a SHAM dump attached to PTR and puts in alt mem. [address] AGET PNUM - prints octal value of location in alt mem. [address] [value] APUT - changes a location in alt mem. ALTRUN - runs whatever's in alt mem. Halt and run 77000 to exit back. ALTHALT - swaps main/alt then halts. This means overwriting location 3 to point to a halt, and it does not put it back - probably a flaw but I use this only for debugging. It prints what it was so if important do (under sim) d 3 [normal run address] to restore the previous run vector before doing run 77000 to exit back to hpiplos. CLRHALT - saves HP-IPL/OS then halts to a clear 31KW machine except for a halt in location 2, run 77000 to exit back. SIOPATCH - patches the slots of a 16K SIO driver for running extasmb.abs or the FORTRAN or Algol compilers. HLT and attach ptr to existing sio driver, attach ptp to new sio.abs driver, then run SIOPATCH. [from] [to] [slot] IOPATCH - manually patch I/O instructions in a range. MKBCS - generates a simh hp2100 "make" script for building BCS projects. Prompts for source names (without extension), press a key to indicate type, then for ALGOL or FORTRAN source files enter the number of segments in the source file (assembly sources can have only one segment). Press enter at the Filename: prompt when all the modules have been specified, it'll halt to attach ptp to the output script file, continue to write out script, detach ptp when it halts again. Copy the bin directory with the vintage tools to your working directory, then execute the script with the hp2100 simulator to compile and link the source files to produce an abs file. Assuming no errors were made along the way. Hint.. a build listing can be saved to a file by running like: hp2100 scriptname > log.txt MSUPATCH - a utility for configuring the 31KW version of MSU BASIC including slots, enabling/disabling backspace and changing startup text. [from] [to] ALTENC - encodes alt memory to console text, useful for saving binary code from a real HP when no papertape punch out is available. ALTGEN - encodes the current HP-IPL/OS system to (a lot of) console text. CONALT - copies ALTENC-encoded binary code pasted to the console into alt mem, send an empty line or press enter to terminate. L2ABS - converts a ALTENC/ALTGEN-created log file attached to PTR to an ABS file attached to PTP. BINPATCH - a general utility for changing the slots in binary code loaded into altmem. ABSLOAD from PTR first, then BINPATCH, from the menu run FCAM to find code extents (usually drivers are last but not always), run SHAM to show a specified alt memory range if needed, select CHANGE DEVICE I/O SLOT to change slot assignments one by one. It searches by slot number so be sure not to change a slot to a slot already being used, to swap slots change one to a temp slot first. Enter old slot, new slot, start and end addresses and press Y/N for prompt (recommended) and patch control words (DMA transfers, usually needed but be careful it doesn't match other data). Repeat for each slot to change, when done press a key to exit utility and enter AM2ABS to punch alt mem to PTP in abs format (or save exact ranges manually, see PTZERO and AAOUT). Caution... using BINPATCH often requires knowledge of the binary being patched, and it doesn't work for everything (beware of self-patching code). Test results thoroughly. HP-IPL/OS 8K 1.60 ================= This build is in the hpos8k.abs file, build date 6/9/10. ? 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