[comp.lang.apl] ibeams on apl/1500 and other early primitives in APL

joec@Morgan.COM (Joe Collins) (03/07/91)

Well I found my (ancient) list of Ibeams as found on that
early APL known as APL/1500:

I3 - read light pen position
I4 - tells which devices are operation at THIS terminal:
      1-CRT
      2-Typewriter
      3-CRT and Typewriter
      4-Film Projector
      5- (4 and 1)
      6- (4 and 2)
      7- all three devices
I5 - current sense switch settings on the mainframe console
I6 - current console switch settings on the console
I7 - Number of bytes available for FN storage, max was 5120
I8 - Terminal number, 0 through 31
I9 - Vector of active terminals, i.e. someone signed on
I10- Your signon number at this terminal
I11- Your terminal type: 0=CRT, 1=Typewriter
I12- Index origin
I13- Current random seed
I14- Row# where next CRT output will appear
I15- Current film frame number, 1 thru 1022
I16- Current max output line width setting
I17- Time out indicator:
       0-Last input did not timeout
       1-Last input timed out
I18- Current time-out limit for quad input and I3 input
I19- Cumulative input wait time in 60ths of a secondsm since signon
I20- Time of day in 60ths of a second since midnight
I21- elapsed cpu time in 60ths of a second, since signon
I22- Number of bytes available for var staorage, max was 6400
I23- Number of users signed on right now
I24- Signon time in 60ths of a second
I25- todays dates in form MMDDYY
I26- Current line number of function being executed
I27- vector of suspended line numbers
I28- number of suspended line numbers
I29- current setting for significant digits display

They also had a primitive known as DOMINO (which we now call matrix
divide). It served a very different purpose. Using D for the symbol:

D0   - clear the CRT screen
D1   - switch to the OTHER ternminal (CRT <-> TYPEWRITER)
D2,N - set index origin where N is 0 or 1
D3,N - set random number seed
D4,N - set CRT row for next output if using a CRT
D5,N - positions FILM projector at frame N
D6,N - sets max line width ala )WIDTH
D7,N - pause for N/60 seconds
D8   - pause until a key if pressed
D9,N - set significant digits display to N digits, N le 6
D10,N- set time out value for quad and light pen

Lastly:

range D data

would plot data within range, very simple and very fast.


-this APL would be primitive compared to today but it had some 
other interesting primitives:
   A alpha B <->  A take B rho 1
   A omega B <->  reverse/rotate of A alpha B

It also had a file system as well and most of todays primitives
but no system functions or system variables, no execute, one workspace
per account (no )LIB command) and (ugh) all functions and variables had 
to have a single character name, A-Z or a-z. Finally, the workspace was
tiny. But it had scan even before the mainframe did. Remember, this was
1968-1970. BTW this was at Fairfield University in Fairfield Connecticut.

lastly, they had )PURGE which I loved...it cleared all suspensions in a
single command.

Oh well....back to work.

joec@morgan.com