Solution

The cover was generated by executing 87 101 COVER 1979, with #IO=1. (The COVER function is listed below.) The phrases "APL79" and "#PP" fall out of the random number sequence without being included in the phrase list. (The character list in variable A was no doubt carefully ordered to arrange this.) The "HÄR TALAS APL", with the A in HAR overstruck with an umlaut, is built using a dedicated line of code that imbeds a backspace (#TC[#IO]) in the output. Several of the phrases have APL symbols adjacent to them in the list. These symbols, which don't occur in the random character list, are all unused (or obsolete) in 1979-vintage APL. The timestamp from when the program was run appears on the last line (clipped in my Part 1, but visible on Part 2). When you run COVER, your timestamp will probably appear in a different position because it doesn't have the same number of characters as the 1979 timestamp. But, because the timestamp was thoughtfully put at the bottom, only the last line will be different from the back cover.

Arthur Anger, the APL79 Proceedings Editor, identified Paul Penfield as the author of the program. Paul had this to say:

Your analysis of the back cover is essentially correct and complete. The only error I noted is that the phrase WS LOCKED does not, as you say, start with a space but instead with an underscore. [Mistake now corrected here.] The characters that accompanied some of the phrases were those that could appear in character arrays but had no semantic or syntactic meaning otherwise. The underscore in 1979 had that property, along with the up-shoe, alpha, I-beam, etc.

You are correct in noting that the phrase APL79 was produced by arranging the order of the vector A. It was then noticed that by coincidence two P's ended up together. It was then a struggle to decide whether to create another phrase by moving the quad symbol in the vector A, or leave things alone and use the PP as a signature.

And he named the languages as follows:

              APL SPOKEN HERE         English 
              HER TALES APL           Danish  
              AQUI SE HABLA APL       Spanish   
              HER SNAKKES APL         Norwegian  
              ICI ON PARLE APL        French  
              HÄR TALAS APL           Swedish  
              HIER SPRICHT MAN APL    German  
              QUI SI PARLA APL        Italian  
              APL HIC DICITUR         Latin!  

The COVER function and PHRASES variable are listed below. (See APL-ASCII Transliteration if you don't know about the {keywords}.) Note that spacing in the function is significant. If your APL alters the spacing, the symbols surrounding the function listing in the output will be incorrect. The program assumes that the result of #CR is left-justified. If your function has blanks in the first column, you may be able to eliminate them by executing:

#FX 0 1{drop}#CR'COVER'



     {del}A COVER R;L;P;W;#RL
[1]   #RL{<-}R
[2]   W{<-}A[#IO+1]
[3]   P{<-}1{drop}{rho}PHRASES
[4]   P{<-}((1-A[#IO]-1{take}{rho}R{<-}#CR 'COVER'),P){take}(P{take}{+
   +}{format}#RL),[#IO](P{take}{format}#IO),[#IO](P{take}{format}A),[#IO] {+
   +}PHRASES,[#IO] P{take}{format}#TS
[5]   A{<-}'{domino}+{delta}{times}{divide}{ceiling}{floor}*{ln}|!?{+
   +}{pitimes}~^{or}{nand}{nor}{/=}{<=}){>=}]<[,{represent};=({rho}79''{+
   +}{take}.{quad}{gradedown}P{slashbar}{quotequad}{backslashbar}{reverse}{+
   +}{reversebar}{transpose}{epsilon}{<-}{basevalue}>{format}{execute}\:{+
   +}{jot}/{del}-{deltilde}{lamp}{->}L{iota}{drop}{gradeup}A'
[6]   (2+?W-4+L){rotate}A[?(W-L){rho}{rho}A],(L{<-}+/{or}\{reverse}P[#IO;]{+
   +}{/=}' '){take}P[#IO;]
[7]   {->}(1<?1{take}{rho}P{<-} 1 0 {drop}P)/#LC-1
[8]   L{<-}+/^\{reverse}' '=R
[9]   {neg}4{rotate}((1{take}{rho}R),W){take}L{rotate}((-L){rotate}R),A[?({+
   +}(1{take}{rho}R),W){rho}{rho}A]
[10]  (-?15){rotate}'HA',#TC[#IO],'{each}R TALAS APL',A[?(W-13){rho}{rho}A]
[11]  (2+?W-4+L){rotate}A[?(W-L){rho}{rho}A],(L{<-}+/{or}\{reverse}P[#IO;]{+
   +}{/=}' '){take}P[#IO;]
[12]  {->}(~0{epsilon}{rho}P{<-} 1 0 {drop}P)/#LC-1
     {del}


{del}.    PHRASES{<-}68 48{rho}'SIGPLAN\STAPL{enclose}                    {+
+}              INDEX ERROR                                     APL SPOKEN{+
+} HERE{pick}                                #AI                          {+
+}                   )FNS                                            NOT S{+
+}AVED, THIS WS IS CLEAR WS                  )LIB                         {+
+}                   SYSTEM ERROR                                    HER T{+
+}ALES APL                                   WS FULL                      {+
+}                   #SVO                                            )CLEA{+
+}R                                          SYNTAX ERROR{upshoe}         {+
+}                          APL QUOTE QUAD                                {+
+}  #WA                                             NOT GROUPED, NAME IN U{+
+}SE                        )SYMBOLS                                      {+
+}  AQUI SE HABLA APL                               ENTRY ERROR           {+
+}                          #NC                                           {+
+}  INTERFACE QUOTA EXHAUSTED                       )OFF                  {+
+}                          #LX                                           {+
+}  NONCE ERROR                                     )VARS                 {+
+}                          HER SNAKKES APL                               {+
+}  INCORRECT SIGN-ON                               #AV                   {+
+}                          DEFN ERROR{omega}                             {+
+}        )GRPS                                           #SVC            {+
+}                                IMPROPER LIBRARY REFERENCE              {+
+}        ASSOCIATION FOR COMPUTING MACHINERY             INTERRUPT       {+
+}                                {downshoe}ICI ON PARLE APL              {+
+}                 SYMBOL TABLE FULL{ibeam}                              #{+
+}DL                                             )MSG                     {+
+}                       CLEAR WS                                        #{+
+}NL                                             )SAVE                    {+
+}                       IMPLICIT ERROR                                  #{+
+}EX                                             )SI                      {+
+}                       DOMAIN ERROR                                    H{+
+}IER SPRICHT MAN APL                            )CONTINUE                {+
+}                       #SVQ                                            L{+
+}ENGTH ERROR                                    )OPRN                    {+
+}                       #CT                                             S{+
+}I DAMAGE                                       )WSID                    {+
+}                       NO SHARES{alpha}                                 {+
+}     #FX                                             COPYRIGHT 1979 ACM {+
+}                             WS NOT FOUND                               {+
+}     QUI SI PARLA APL                                #HT                {+
+}                             RANK ERROR                                 {+
+}     )OFF HOLD                                       INCORRECT COMMAND  {+
+}                             #PW                                        {+
+}     VALUE ERROR                                     APL HIC DICITUR    {+
+}                             _WS LOCKED                                 {+
+}     #SVR                                            APL79 ROCHESTER, NE{+
+}W YORK, MAY 30--JUNE 1, 1979!'


Home Page