~4 !AssBfBfBfBtCCCCC(C@C@ CLCLf=`/P    PRdSpecification for Project Name: Achieving Processor-independence in Miscellaneous Lisp Machine Modules Date: 9/14/88 Writers: K. Corbett, D. Saslav Est. Work: Four days per module Purpose: This project is part of the effort to prepare for integration of the Falcon and the Lambda computing environments. The process will ensure portability for current Lambda modules, thereby enabling their subsequent transportation to the Falcon. Description: This project entails multiple system-wide searches for incompatibly-written code. For each module, a global tags search must be performed on particular processor-dependent variable names, functions, and any other constructs which impede portability. Once found, they must be analyzed, categorized as 1) Necessary for general Lambda functionality, 2) Unnecessary for general Lambda functionality Those definitions falling into the second category may be rewritten in a Lambda/Falcon compatible fashion, or, in such cases as warrant it, completely new behavior may be deemed appropriate and processor-independent code written to implement such behavior. Procedure: 1) Byte specifiers This part of the project entails a system-wide search for system internal variables which rely on particular byte patters for their operations. Eradication of these constructs will consist of global string searches on such revealing string patters as "byte" and the character '%' (used as a prefix for most byte specifiers). Once found, a determination will be made as to whether or not simple generic (portable) interface functions can be devised for each case. If not, further research will be required until a level of abstraction is reached at which such interface functions can be written. 2) The "art-q-list" array type 3) Inline documentation strings and interface mechanisms 1) Criticalto functionality or 2) Non-critical to m n   5 6hov#7CE\]^{R6CETVgij}}}}}}}}}hiwx8978tw(Z[]^|{wwwsssssssswwwwwwsw |SUuvwxyz{k 8xxttttttttpleQQ  pwT<`  p      poAlgorithm Entry StyleProgram Title BarGeneral Entry StyleName,See Also Entry Style1$G    xxT stv^   Those definitions and mechanisms falling into the first category must be rationalized with all long-term Falcon design decisions, and, where different from short-term considerations, compatible workaround mechanisms devised and implemented. and mechanisms . Alternatively, where warranted, ct code written to implement this new This is a data type that will not be supported on the Falcon. All Lambda code that currently relies on this data type must be found and rewritten. This will entail locating all places in the Lambda sources where definitions occur which use this special type, and devising new means for implementing these definitions. Any other data types that will not be supported on the Falcon (if any) must be similarly revamped. Procedure 3) Single-button mouse input (continued) A strategy is needed for reconciling the current Lambda source code's mechanisms for accepting mouse input with the fact that no left-middle-right mouse distinction exists on the Macintosh. Non-default mouse clicks and mouse keystrokes with modifier bits (and all code which relies upon such typein to begin executing) must either be discarded or an alternative execution strategy adopted. 4 Documentation strings, an optional part of any LISP function's definition, may be accessed in a number of ways on the Lambda; in order to provide equivalent access to these strings, a Falcon-specific strategy must be adopted for each such accessing method. Name: Achieving Processor I9/19enhance ojk ! b "   " F b k l v , 5 7 @ d    }w}}}}}}}}}}}}}}}}}}}}@  N O + f k t789CDOUW]h}}}}}}}}}}}}}}}} !&1DEMNOP]"*5>?I}}}}}}}}}}}}}}}}}}}}}IPQlpxy b "&+GIR}}w}}}}}}}}@8O TUO]`NOJ*+-./0U{wwssoooossswsssssss   movement Justification: This step reduces the amount of time that will be spent in the Falcon debugging stage. By eradicating as many major module incompatibilities as possible, we eradicate a wide range of possible problems consequent to porting these modules "as is". modules . A number of LISP tools exist for this purpose, including: % Compiler warnings generated by style checkers; % Tags searches through system files for indicatory character sequences; % Zwei's List Callers and Edit Callers facility (with special extensions); % New Meta-X Refind All Files command (see separate specification) In addition, some file-by-file inspection may be necessary, in cases where the above tools are insufficient. For each module, the above tools will be used to isolate and other incompatible constructs; or other callers which reference these variables will then be located and debugged, and any other constructs impeding revised or reworked at that time. The final stages of this project consist of a recompile-and-debug cycle on of the entire system, eliminating any propagated problems or indirect incompatibilities generated by the first part of the process. When all such problems have been eliminated, a cold load band will be constructed; a successfully constructed cold load band will mark the completion of this particular project. The following is a list of known compatibility problems; it may grow as development continues: (Procedure continued on next page.) ns in order to demonstrate advertised behavior. ll callers of these variables must be edited and the extent to which determined 2) The ART-Q-LIST array oneot be supported on the Falcon. This and any lcon substituted for. ART-Q-LIST may in fact hold a special importance for the current Lambda interpretation of Zwei; in this case, major code rewrites could conceivably result from this one incompatibility. 3the DOCUMENTATION function is one of these. I 4) WITH-STACK-LIST Stack lists will not be implemented on the Falcon; it is known that the current Lambda evaluator makes extensive use of stack lists. If it is discovered that code other than the interpreter relies on stack lists for its implementation, it will require major rewriting. RUXBDNOQXi~  '-}}}-8@\]_dMNOPa,]^c#7E`(}}}}}}(8COYk!ai56AHIJKfl),12}}}}}}}2TUVYeLWX`qt!&26TViqy}}}}}}}}}}}}}}}}}}}}}}y@AMTrst!"%789lWZjr+-DE}}}}}}}}}}}}}}}}}}}}EF"#F#I#J#M#`#@#Q#e#m$$ $$$.$5$W$$/$<$A$P$Q}w}}}}}}}}}}}}}}}@UXs#$8F#G#H$P$W$%*%-%.%p+Auunnjuffnuj\ffjf p~  p pw Algorithm Entry StyleProgram Title BarGeneral Entry StyleBullet List,Oppositely BoldedName,See Also Entry Style2$P     ~~r xxT stv^     Algorithm Entry StyleProgram Title BarGeneral Entry StyleBullet List,Oppositely BoldedName,See Also Entry Style2$P     ~~r xxT stv^    All documentation strings which refer to machine-dependent implementations should be reworded to accurately reflect the new machine-independent implementations devised at this time. 1) and bitwise valuesAlso included in this group are microcoded variables which have processor-specific implementation dependencies. located and edited, portablein their place determined 2) ART-Q-LISTs are used to implement on the Lambda; it is conceivable that a large portion of code will need rewriting in order to preserve the healthy operation of all existing Zwei functionality. 3) may 4) Obstructive Microcode Optimizations Functions which, having been microcoded in a manner which makes them processor-dependent, should be rewritten in LISP (if possible) in the effort to enhance portability. Project Status: Under reviewLambda System File Portability Issues 22Participants3 $Q$S$V$W$[$g$q$~$%%%%(%@%E%N%X%%%%(%)%*%+%,}}}}}}}}}}}}}} Algorithm Entry StyleProgram Title BarGeneral Entry StyleBullet List,Oppositely BoldedName,See Also Entry Style2$P     ~~r xxT stv^     Algorithm Entry StyleProgram Title BarGeneral Entry StyleBullet List,Oppositely BoldedName,See Also Entry Style2$P     ~~r xxT stv^     Algorithm Entry StyleProgram Title BarGeneral Entry StyleBullet List,Oppositely Bolded%,%.%>%J%W%X%]%h%o%p%r%~%+s+u+v+w+|+ ++"+$}wwwwww}q@!Specification EntriesAlgorithm Entry StyleProgram Title BarGeneral Entry StyleBullet List,Oppositely BoldedName,See Also Entry Style6$bxxT     ~~r xxT stv^    -4 days of programming per area (see attached), 2-3 days per system rebuild. Total 25 days (2 FTE over a period of 2-3 weeks).In progressfinding and fixingwide-spreadcodingbegin a systematic and consistent approatch t Recompiling and rebuilding the Lambda system becomes an opportunity to make gradual improvements toward the goal of portability.will incorporate a variety of approaches tosearching (Incompatible, for the purpose of this project, means either 1) Lambda processor-dependent or 2) obsolete ZetaLISP.)The we will use include ompiler warnings from new (and improved) developed for this purpose and % Tags Sand Edit Callers to find occurrences of more complicated cases. Cold-load files will be the top priority, since any portability improvements realized there will have the most benefit, soonest.will portable .The final stagesA issues that can be addressed in this fashion is attached. The list will probably grow as development continues. 1) wide search for system internal Ia more must be devised, and lers of these variables must be modified.2) e ART-Q-LIST"Callers" of ART-Q-LIST (ypes that will not be supported)replaced with a portable representationIt is known that ZWEI uses ART-Q-LIST; it, and any other system modules that are identified, must be modified.) must be determined whether.4) Non-low-level f call routines directlymodified to call equivalent LISP routines (le). 5) Obsolete ZetaLISP, MacLISP functions The existing warnings against "old-style" ZetaLISP and "obsolete" MacLISP functions should be expanded, and calls in the system code should be weeded out. This is only necessary in places where the effort will improve the efficiency and/or portability of the code, or when the old features impose more work on the developers porting to the Falcon. , , and enumerated types This is not necessarily as simple as replacing constant values with calls to BYTE, 1 +$+-+1+?+@+B+G+H+J+P+i+k+s+~,,,!,),3,8,C,L,N,P}}@,P,`,{----z-~- ---$-)-<-X-\-^-_-`-f-j-v..}}}}{}}}}}}}}}}}}@..%.&.'.G.'.(.)...7.8.G.H.J.v///;/=/@/A/a/b/i/}}}}}}}}}}}}}}}}///'/(/+/,/./8/9/@/A/E/O/P/Q/q00)0-0102030=}}}}w}}}}ww}}}}}}}}w0=0>0?0y000 0#0$0'0(070=0O0X0`0k0p0x0y0z1ysqqqqqqqqqqqqqqq11'1M1[2922 22!2&232=2C2o2s2t2u7s8 8)8+}{}}}}}}}}uoi}}}@@+A-=-]-^.&/</=/A/,0 0(011(1)28;8qqqqmmccccccccccm . T f!Specification EntriesAlgorithm Entry StyleProgram Title BarGeneral Entry StyleBullet List,Oppositely BoldedName,See Also Entry Style6$bxxT     ~~r xxT stv^    but fixing all such occurrences is part of this area. Examples for which further specification is required include argument descriptors, FEFs, and DTP codes. system (higher level) LISP versions of microcode routines that are commented out of the sources will be tested and marked for Falcon target compilation.Enhancing the of sapproaa search for non-portableNon-portable,d 8+818<8=8^8888)9-9:9;9<9?9@9F9H9U9V9_9k9l}}}}}}}}}wwwww}}}}uu@!Specification EntriesAlgorithm Entry StyleProgram Title BarGeneral Entry StyleBullet List,Oppositely BoldedName,See Also Entry Style6$bxxT     ~~r xxT stv^    f this project, means either """" will useearchT cold-load filesfor Attachment: Areas of non-portable codePart of this sub-task, $%9:9l;s;;;;;;";#;$;4;7;8;9;:;a;x=s> >>%>2ywwwwwwwwwwqwywwww@!Specification EntriesAlgorithm Entry StyleProgram Title BarGeneral Entry StyleBullet List,Oppositely BoldedName,See Also Entry Style6$bxxT     ~~r xxT stv^    can be partially automatedFmore complicated cases,; these cases more,extensive use of stack lists. Itany modules rely oHigh-levelshould be alcon.;<=>LSfghijksx|8U+A8&?l  X 2 f~r  X 2 f~r.>2>7>8>X>\>i>j>o>t>~>}}}}}}}}} ;8;:x !Specification EntriesAlgorithm Entry StyleProgram Title BarGeneral Entry StyleBullet List,Oppositely BoldedName,See Also Entry Style6$bxxT     ~~r xxT stv^    !Specification EntriesAlgorithm Entry StyleProgram Title BarGeneral Entry StyleBullet List,Oppositely BoldedName,See Also Entry Style6$bxxT     ~~r xxT stv^    g "gj IR-(2yE$Q%,+$,P./0=18+9l>2>"#$%9:;<=>LSfghijksx~|8U+A;8;:&?l  X 2 f~r  X 2 f~r(.FT FJT F $T "/0;<?LMQRSZ\^co,3CENR`achikq  &1 >FRST~ !"0{ &'239:H\dns~(*+FVqrt  ,-?]wx|}#%.69:;<MRes#$L\cdefiRTUZdel|RSTUVWh2V_3MVauvxCHt}  (78X[\o  2h ( 0 Z f | }        " 0 \ h  ! " # $ % L M N Q ` b p    2 B K y { ~  Y j v }   % & , D L M O f      / 1 2 3 6 M N o | / 1 2 3 6 : K O P Q S U _ ` j p       ' ( ) 1 = ] ^ f u z      = @ A K Q ^ _ ` a c r s t'[{|!.<=>?BLMYZ[`egu{"+3>CKLMVZ^`fgQ9-9:%] 9; 9< %J %W %X9?%ohl%ps%r%~+s+u+v+w+|+ + +" +$ +- +1+?+@+B+G+H+J+P+i+k%,+s7pOx[^'  b+~~, ,",!,),3,89@,J,Ln,N,77,P,`Y9Fc9H9U9V-9_9k-;s-F;-`;-g;-x-z%&+-~;- RU-W--$-)v-<-X -\ -^ -_ -` ;  -f...%.&ad.' ;" .B .G;# .9;$.Q.'.(MNOPa],]^c3#DE".)"a..#!.7#F.8W`.Go;4(8COYk!ai5AHI]J.H^fl.J.v//);7;8 ;9 ;: * /;/=l2#R2  /@ { } /A /X G V  /a #f #@ D /b #e  /i P  / / /' 2 ;a 2G 2o 2s S 2t =s 8' 8) > 84 > 8< 8= >% 8^ 8 8 T /( \ ` p t'/+' l'/,'/.' u  v  %t%%/8%/9%/@%/A'/E%/O%/P%% 1 /Q %  t /q >2 0 5 $  0) >7%0B 0. 02'03%0s 0y $O # $P 0 ( 0 7 9 l >8 @ 0  V >X \ >\ ~ 0# E $V 0$ $g >i $r 0' $~ >j >o 05 % 07 % 0= %' >t 0O 0X 0` 0k 0p 0x 0y %w 0z 8) 0~ 29 >~