BMON2 Software for the Real Time Picture Processor

BMON2 (the Buffer Memory Monitor System) was a main program BMON2 as well as support function programs written and used to interact with the RTPP. It allowed operations ofn Buffer Memories (BMs). These programs were written by Peter Lemkin, Bruce Shapiro, Morton Schultz, Lewis Lipkin with input from others. It is documented in [40, TR-21, TR-21b, TR-23].


This is a sample of some of the more interesting BMON2 programs, functions, and libraries for controlling the RTPP. The programs were designed to do one task (e.g., move the stage, scan an image, segment an image, take the gradient of an image, etc). These were run either stand-alone or in small batch scripts under OS/8, the operating system for the PDP8e part of the RTPP. The BMON2 program would be started and then the user could either enter a command line or tell it to run a script. This was similar to UNIX commands and scripts. As this software was written in the pre-GUI (graphical user interface) era, it required learning some of the commands and typing them in like the early UNIX and DOS systems.

The code is sorted by the following

Note that OS/8 only used the first 6 characters of a file name. Some of the names are longer for clarity.


back to Introduction

Example of using BMON2

The following example is from an experiment that used BMON2 to reconstruct a 3D projection from a set of optically serial sectioned images of a neuron. The images were captured previously using BMON2 program to do a serial section using the computer-controlled microscope. The resulting set of images were saved on magnetic tape. The reconstruction was done using the reconstruct.ft BMON2 chained-program. The BMON2 command line to run the reconstruction of the 128 serial sectioned images using every other image stored on 9-track magnetic tape using the recons BMON2 chained command was

*BM2 <-- reconstruct,MTA0:*.OS/X/2,256,144,1

1. Programs

These are standalone programs. The key one is bmon2 which runs other programs.

  • bmon2.ft - The BMON2 main Buffered Memory monitor program
  • brntst.ft - test BMOMNI BM/GP interface
  • flicker.ft - Flicker compare two images
  • freestore.ft - BM freestore debugger program
  • inibm2.ft - setup DDTG and init SVDDTG.DA and SVBMON2.DA files
  • rltst.ft - test rltxt2.ft used in RLTXTURE
  • mag10.ft - general purpose 9-track magnetic tape utility
  • timtst.ft - times a DO-LOOP for testing speed

2. BMON2 chained commands

These are called by BMON2 and when done, they return to BMON2 with a CALL CHAIN('BMON2') call.

  • apply.ft - apply specified image function to buffer memories
  • avgn.ft - average filter an NxN pixel window over BMi into BMj
  • bdedit.ft - edit image boundary and draw in an image
  • dosub.ft - map file to .BI file and then run OS/8 batch on this file
  • filgap.ft - fills gaps in narrow dark image lines in BM
  • fillbd.ft - fill BMi with gray value
  • filter.ft - apply neighborhood filter to BM
  • findfs.ft - find minimum enclosing rectangle around object in BM
  • grad8.ft - gradient filter 3x3 pixel window over BMi into BMj
  • median.ft - median 3x3 filter pixels in BM
  • midpoi.ft - midpoint 3x3 filter pixels in BM
  • gradn.ft - gradient NxN filter pixels window over BMi into BMj
  • help.ft - lookup and print the information on a BMON2 command
  • isolate.ft - isolate subregions of object
  • jgsplot.ft - compute and display joint probability matrices
  • jgstxture.ft - compute joint gray scale texture value of a BM
  • mtv.ft - compute min of horizontal and vertical neighbhood differences of BM
  • movstage.ft - move the stage to an absolute or relative position
  • nghse.ft - do image shrink/expand repeated operations on BM
  • notch.ft - notch filter pixels in BM
  • pixmta.ft - Copy image data to/from BM/9-track magnetic tape
  • prop2.ft - propagate 1's from BMi to BMj
  • reconstruct.ft - Reconstruct an orthogal view through a series of scanned images
  • review.ft - copy 1 or more named files from 9-track tape to BMs
  • rltxture.ft - texture analysis of BM data
  • rmvblobs.ft - remove blobs from a BM image under masks
  • rotate.ft - rotate BM image by specified angle
  • runfill.ft - compute the run length histogram of BMi
  • plot2d.ft - compute scatter plot(Bmi,Bmj) into BMk
  • propagate.ft - propagate all 1's in BMi to BMj using BMk as scratch area
  • segbnd.ft - segment an image by boundary following
  • segmrg.ft - segment an image threshold and size range
  • seg2ps.ft - segment image (partly corrupted in initial comments)
  • shade.ft - image shade correction of BMs
  • showmovie.ft - show a movie sequence from BM frames
  • smooth.ft - calc. and smooth a histogram of a BM or data
  • smpget.ft - sampled get 512x512 BMs down to 256x256 BM
  • strip.ft - acquire a 4x880 pixel region from Quantimet to BMs
  • xmitbm.ft - transfer data between BMs and disk or dectape
  • variance.ft - variance function of each 3x3 neighborood in BM
  • windmp.ft - print a terminal image window for BMi
  • zoom.ft - zoom or dezoom BMi into BMj

3. Libraries, Functions and Subroutines

These are called by some of the above programs.

  • arctan.ft - compute arctan() function
  • bcdsp2.ft - BMON2 command line decoder (varient)
  • bcdspe.ft - BMON2 command line decoder
  • bdoaux.ft - access internal RTPP I/O functions
  • bfollo.ft - find next boundary point in boundary following with successive calls
  • bgetpu.ft - formated I/O transfer RTPP register and BM data
  • bmap1.ft - map lines and Quantimet camera pixels to microns
  • bmap2.ft - map lines and Quantimet camera pixels to microns
  • bmax1.ft - transfer I/O of RTPP registers
  • bmax2.ft - transfer I/O of RTPP registers
  • bmax3.ft - picture processing fuctions histogram, avg8, grad4, etc.
  • bmax4.ft - picture processing loop for pixels fuctions
  • bmax5.ft - picture processing loop for scalar fuctions
  • bmax6.ft - print state of various RTPP registers
  • bmax7.ft - picture processing functions and GENSYM
  • bmax9.ft - get and print state of various Quantimet registers
  • bmbody.ft - sample template for creating new programs
  • bmcmn.ft - common area to pass parameters and results between programs
  • bmfast.ft - fast BM I/O to 3x3 nghborhood line buffer
  • bmio.ft - Buffered Memory I/O library pixel, line and neighborhoods
  • bmomni.ft - general RTPP access library used by all programs
  • bmparm.ft - read/write BM parameters from/to Common
  • bmtomt.ft - write BM data to 9-track magnetic tape
  • bndbe.ft - compute bending energy of a chain code
  • bndcorner.ft - boundary corner point calculations
  • bndcst.ft - fast BM transfer
  • bndete.ft - boundary chain code difference functions
  • bndhem.ft - convert boundary corner angles depending on hemisphere
  • bndio.ft - read/write boundary data to/from disk
  • bndlabel.ft - label boundary data
  • bndprint.ft - print boundary statistics
  • bndsem.ft - compute run length distributions
  • bndstats.ft - print boundary bending energy statistics
  • bnode.ft - higher level BM node free store manipulation
  • bnrntstats.ft - print boundary run-length-map statistics
  • bnrun.ft - setup a run-length map using the BM as a memory free-store
  • bp2.ft - print remapped boundary run-length-map semantic label names
  • bqdata.ft - do Quantimet data acquisition
  • bscomm.ft - save/restore Common data from state files
  • bset.ft - do set operations on BM free-store node lists
  • bsplit.ft - determine if a corner boundary should be split
  • bwindo.ft - compute the window around a boundary
  • camera.ft - take a photo with the 35mm or 16mm camera
  • clock.ft - timeer function with 200Hz clock.
  • cmptxt.ft - compute T15 and T19 (obscure...)
  • comass.ft - compute center of mass of objects
  • date.ft - calculate and print date and time
  • daytim.ft - get daytime from real-time clock, set OS/8 time
  • defcon.ft - define contrast function
  • dicmed.ft - I/O functions for the DICOMED graphics display
  • disast.ft - compute disaster analysis smoothing for histogram
  • doscan.ft - do a scan from the video camera to BMs and save on tape
  • dpcvrt.ft - convert double precision to/from float number
  • drw512.ft - draw a graphics line from Grafpen to 512x512 BMs
  • drwdic.ft - draw a graphics line to Dicomed display
  • drwtst.ft - test the BMOMNI BM/GP interface
  • dspngh.ft - display function of BMi in Quantimet display register
  • dyn1.ft - compute optimal threshold for image window
  • dyn2.ft - image boundary follower, with successive calls
  • dyn3.ft - various boundary functions
  • dynbnd.ft - dynamic boundary and image operations
  • emscan.ft - extract data within Grafpen image into BM
  • extrac.ft - extract data within Grafpen image into BM
  • findop.ft - find RTPP OPR else get value
  • flkr1.ft - Grafpeh functions for Flicker program
  • flkr2.ft - calibration functions for Flicker program
  • fminma.ft - calc floating point Min(A,B) or Max(A,B)
  • fncont.ft - calc. contrast stretch function of BMi into BMj
  • fretst.ft - test the BM list freeing command in Freetest program
  • gensym.ft - generate the next sequential symbol
  • getdev.ft - lookup the OS/8 device number from the name
  • geti1.ft - get 3x3 BMi data into (I0,I1,...,I8) in Common
  • getngh.ft - get data from 3x3 neighborhood from BM
  • getnxn.ft - get data from NxN neighborhood from BM
  • gpedit.ft - edit Grafpen data
  • ibcd.ft - pack or unpack an integer number into BCD
  • ibndre.ft - open and read Segbnd boundary files
  • iob.ft - I/O block read/write packing functions
  • isol1.ft - find all connected components
  • isol2.ft - calc min. convolution of perpendicular lines
  • isol3.ft - split line
  • jgsp1.ft - compute joint probability matrices for JGSPLOT
  • jgsp2.ft - functions used with JGPLOT
  • jgst1.ft - functions used with JGSTXTURE
  • jgst2.ft - functions used with JGSTXTURE
  • jgstxture.ft - compute joint gray scale texture value of a BM
  • lptspl.ft - line printer spooler to queue files to be printed
  • lrpsub.ft - (obscure)
  • lstodt.ft - BM Freestore debugger methods
  • magaux.ft - auxillary routines for 9-track driver
  • maghlr.ft - OS/8 9-track magnetic tape driver
  • magtap.ft - OS/8 9-track magnetic tape driver
  • manual.ft - library for controlling stepping microscope stage
  • match.ft - wild card matching in file names
  • max.ft - max of two integers
  • mcdspe.ft - decode command line in "special mode"
  • mdirec.ft - build stack of file names using wild cards
  • min.ft - min of two integers
  • mio.ft - I/O package for BMON2 data files
  • mouse.ft - get (x,y) data from either Grapfpen or A/D knobs on control desk.
  • movstg.ft - move the microscope stage in top-down L-R, L-R pattern
  • mtatob.ft - read data from 9-track magnetic tape to BM
  • mtfile.ft - copy a named 9-track magnetic tape file between drives
  • niehs1.ft - move the microscope stage in top-down L-R, L-R pattern
  • niehs2.ft - move the microscope stage in top-down L-R, L-R pattern
  • oct.ft - convert double precision octal to/from 2 12-bit integers
  • pheader.ft - function to read/write PPX file header
  • prop1.ft - propagate 1's in a BM by G(x,y) mask
  • ptile.ft - compute the t'th percentile of the last histogram computed
  • question.ft - questionmark "?" mapping in file names
  • rltx1.ft - computes the run-length vs gray scale distributions
  • rltx2.ft - computes & prints previously compute run-lengths & joint grayscale statistics
  • runlth.ft - method to compute the run length histogram of BMi
  • sect1.ft - do microscope serial section (move focus) and get images into BMs
  • seg22.ft - subroutine used with seg2ps.FT
  • segb1.ft - compute the boundary followed segmentation
  • segb2.ft - compute the boundary followed segmentation
  • segb2a.ft - segment an image spot list and makes images
  • segb3.ft - boolean segmentation subroutine
  • setopr.ft - set operations
  • square.ft - display a 3x3 black square in a BM
  • stage.ft - low level stage mover routines
  • stprop.ft - set the property list of a BM node
  • time.ft - read and print the real-time clock
  • timer.ft - timer function
  • txtgrad.ft - compute texture gradient features of a BM region




back to Introduction


Peter F. Lemkin
Revised: 09/022/2011
Adapted to new website: 05/14/2020