"FORMS for BUREAUCRACY: Copyright (C)1987 Infocom, Inc. All rights reserved." > > 2>> > 2>> > > > ) (FIELDS ) TF) > )> > >> > > <==? .RLINE>> > > > >)> > >> > <+ .X ,MARGIN>>> > > > > ) (FIRST-NAME "First name:" 25 "Random" FF-NAME ) (MIDDLE-INITIAL "Middle initial:" 1 "Q" FF-MIDDLE-INITIAL) (YOUR-SEX "Your sex (M/F):" 1 "M" FF-SEX) (STREET-NUMBER "House number:" 4 "69" FF-STREET-NUMBER ) (STREET-NAME "Street name:" 24 "Mandalay" ) (CITY-NAME "City:" 18 "Newton" ) (STATE-NAME "State:" 5 "MA" FF-STATE) (ZIP-CODE "Zip:" 6 "02174") (PHONE-NUMBER "Phone:" 17 "646 9105" FF-PHONE-NUMBER) (EMPLOYER-NAME "Last employer but one:" 14 "Infocom" ) (LEAST-FAVORITE-COLOR "Least favourite colour:" 12 "red" FF-LEAST-FAVORITE-COLOR) (FRIEND "Name of girl/boy friend:" 11 "Dunbar" ) (LAST-FRIEND "Previous girl/boy friend:" 10 "None" )> > ; "True--> female" )) > ) (T )> ) (T )> )> > ) (T >)> > ) "AUX" (CNT 0) (PTR ,FIELD-DATA-OFFSET) MAX CHAR:FIX TBL:FIELD OLDLEN (ECHO? T)) ) (T )> > > ,FORM-DO-ECHO? .TBL>>> >)> > >> > > > )> > ; "CR?" )> > ) (T )> ) (T > )> )>) ( 14> )> )> .FF>) ( ; "Backspace?" > ) (T )> )> > )> >> > )> > 0> ) (<==? .CNT .MAX> ) (> ,FORM-ADD-CHAR .TBL .CHAR>> ; "OK to use this char?" 1>> 1>>> >)> >)> > >>) (T )> > )>>> "Functions for individual fields" <==? 2>> 2) (T T)>> <>) (T T)>> ; "Force street number after name..." >>> <>) (T T)>) (<==? .CONTEXT ,FORM-EXIT-FIELD> >>>> > > )> >> >> >> >> >> .VAL) (<==? .CONTEXT ,FORM-ADD-CHAR> T) (T <>)>) (T T)>> > %>> T) (T <>)>) (T T)>> > >> T) (T <>)>> % %> ) (T >)> T) (<==? .CONTEXT ,FORM-ADD-CHAR> %> %>> T) (T <>)>) (T T)>> > >> > >>> T) (T <>)>) (T T)>> %> > <>) (T )) FIX> .CHAR> ) (<==? .CHAR %> ) (T )> .FF-NAME>)> >> )> >> T)>) (T T)>) (T T)>> ) LEN TBL CHAR:FIX (UC? T) (ALL-UC? <>) TV) >>> > .FN>) (T > ,FORM-UPPERCASE? .TBL>>>> >)> )> FIX>> 1>> 1>>> >) ( <==? .CNT 1>> T) (.CAP? >) (T >)>) ( %> ) (T > > .LEN> )> )>)> > > > .LEN> )>>)>> > 127> ) (T )> >>> > .LEN> ; "If we've been through the loop too many times without a hit, just start at the beginning and proceed until we find something or run out (in 2nd case, return -1)" > .LEN> )> >) (T > >)> >>> > ,FORM-OK-TO-ENTER-FIELD? .F>>> 1> )>)>> .N> ) (HIST ,FORM-HISTORY) (HISTLEN 0) N (BOGUS-ERRORS 0)) > > >>> >> ,FORM-FIELD-RESET .F>)> 0> > .FIELDCT> )>> > ) ERRVAL) > > > )> >> > > ; "Put this field back on the list" ; "And find the one we were in before" >> FIX>> ) (> ,FORM-EXIT-FIELD .TBL>> )> > 3>> )>)>)> >> > T> )> > .FIELDCT> )> > )>> ; "Does SCREEN S-TEXT..." )> > T> "Some constants to prevent number overflows" ;"Largest positive number on 16 bit machine." > ;"Largest div by 10" > ;"Largest div by 100" "Expects address of an ASCII byte table, 0th byte = length. Returns value. If DOT-OK is true, allows a decimal and in fact makes it 100 times bigger if no decimal point. Returns -1 if overflow and -2 if too many dots." ) "AUX" (SUM:FIX 0) LEN:FIX X:FIX (DOT-SEEN <>)) FIX>> FIX>> 1>> 1>>> )> > >> > )> >) (>> > ) (T )> > .LEN> > )> >)> )>> > > )) )> > > > )) )> >>>> ) "AUX" TF LEN:FIX) )> > > " "> > .LEN> )>>> )) ) (T FIX>> > > .LEN> )>>)>>