WHILE WRITING A PROGRAM, YOU MAY ASK 'HELP' TO REVIEW SECTIONS, PHRASES, WORDS OR SYMBOLS LISTED BELOW BY GIVING THE DIRECT COMMAND 'L G HELP'. SHOULD YOU WISH TO RETURN TO YOUR PROGRAM BEFORE HELP'S RESPONSE IS DONE, HOLD DOWN THE 'CTRL' KEY WHILE STRIKING THE 'O' THEN TYPE 'G' AND HIT 'RETURN'. INDEX FOR 'HELP' DPF FOCAL--1980 COMMANDS SYMBOLS FUNCTIONS --------------- ------------- ----------------- ELEM. COMMANDS ARITH. SYMBOLS FABS( ) ABSOLUTE VALUE -------------- -------------- FATN( ) ARC-TANGENT FCOS( ) COSINE ASK ^ EXPONENTIATION FEXP( ) EXPONENTIAL COMMENT * MULTIPLICATION FITR( ) INTEGER CONTINUE / DIVISION FLOG( ) LOG (BASE E) DO + ADDITION FRAN( ) RANDOM NUMBER ERASE - SUBSTRACTION FSGN( ) SIGN PART FOR () PARENTHESES FSIN( ) SINE GO [] SQUARE BRACKETS FSQT( ) SQUARE ROOT GOTO <> ANGLE BRACKETS FIN ( ) CHARAC. INPUT IF FOUT( ) CHARAC. OUTPUT MODIFY SPECIAL CHARACTERS FIND( ) CHARAC. SEARCH BRANCH ------------------ QUIT RETURN & FORM FEED MISCELLANEOUS SET ' LINE FEED ------------- TYPE ! RETURN/LF WRITE # RESET PAGE CHANGES FROM OTHER FOCALS : TAB/CR ONLY DEVICE NAMES % OUTPUT FORMAT DIRECT COMMANDS LIBRARY COMMANDS $ SYMBOL TABLE ERROR CODES ---------------- " TEXT EXPRESSIONS ? TRACE FILES LIBRARY CALL E POWER-OF-TEN INDIRECT COMMANDS LIBRARY DELETE RUBOUT/DELETE COMMAND DECODER LIBRARY GOSUB ^C EXIT KM. CD OPTIONS LIBRARY LOAD ^G BELL/MODIFY CCL COMMANDS LIBRARY RUN ^H BACK SPACE LINE NUMBERS LIBRARY EXIT ^I HOR. 8-TAB PRECISION LIBRARY SAVE ^K MODIFY NAMES OF FILES ^L FORM FEED PIP/FOTP/DIRECT ^N CR ONLY (FILES) PUSHDOWN LIST ^O BREAK CHAR. VIRTUAL ARRAYS ^P BREAK CHAR. SIZE OF PROGRAMS FILE COMMANDS ^Z END-OF-FILE STRINGS ------------- ^U KILL LINE SUBSCRIPTING _ KILL LINE SUMMARY OF COMMA LINE FEED KEY TABULATOR OPEN INPUT RETURN KEY VARIABLES OPEN OUTPUT * FORMAT FILL SECRET VARIABLES OPEN INPUT " ($)ALT MODE/ESCAPE FUNCTION OVERLAY OPEN OUTPUT " SPACE KEY INTERRUPT HANDLING OUTPUT CLOSE , COMMA(DELIMITER) OPEN ARRAY ; SEMICOLON (") OUTPUT TERMINATE ***** MISCELLANEOUS WORDS AND PHRASES LISTED UNDER MISCELLANEOUS IN THE INDEX BUT NOT GIVEN IN THE 'BULK' PRINT OUT ARE FOUND UNDER THEIR OWN NAMES. 'FILES', FOR EXAMPLE, IS DESCRIBED UNDER 'FILE COMMANDS'. ***** CHANGES FROM FOCAL, 1969 PROGRAMS WRITTEN IN FOCAL, 1969 SHOULD REQUIRE ONLY ONE CHANGE TO RUN UNDER PS/8 FOCAL,1971: THE INPUT DEVICE IS SWITCHED TO THE HIGH SPEED PAPER TAPE READER WITH THE 'OPEN INPUT PTR:' COMMAND AND SWITCHED BACK TO THE TERMINAL WITH 'OPEN INPUT PTR: ,ECHO' INSTEAD OF WITH THE '*' COMMAND OF FOCAL,1969. ***** PROGRAMS WRITTEN IN PS/8 FOCAL,1971 REQUIRE FOLLOWING CHANGES TO RUN UNDER OS/8 FOCAL--1974 A) T # IS NOT THE CR. ONLY COMMAND ANY MORE. B) LIBRARY LIST HAS BEEN DELETED. C) SYNTAX OF O R O, O R I CHANGED TO O O ", O I " EXTRA FEATURES COMPARED TO PS/8 FOCAL ARE: 1) EXTRA LIBRARY FEATURES: DEVICE-INDEPENDENT CHAINING TO OTHER OS/8 PROGRAMS, VIRTUAL NUMERIC ARRAYS, SUBSCRIPTED LIBRARY NAMES. 2) 10 DIGIT PRECISION, AND/OR STANDARD TRIG. FUNC- TIONS, MAY BE DELETED BY CD OPTIONS OR RECALLED BY SPECIAL FUNCTIONS. 3) MODIFY CAN ALSO MODIFY LINE NUMBERS. MODIFY WITHOUT ARGUMENT USES LAST LINE NUMBER 4) TABULATION IS NOW FORWARDS AND BACKWARDS (ALSO NORMAL ^I TAB) 5) 'IF' UNDERSTANDS LOGICAL EXPRESSIONS 'FOR' IS ALSO DECREMENTING 6) NEW BRANCH COMMAND (IF-DO) 7) CHARACTER MANIPULATIONS HANDLED WITH 'FIN()' , 'FOUT()' AND 'FIND()' 8) INTERNAL FULL TTY: HANDLER (PILE-UP, FORM FEEDS, ETC) 9) EXTRA FORMATTING POSSIBILITIES WITH T % COMMAND 10) SEVERAL SPECIAL VARIABLES ARE PROECTED FROM THE 'ERASE' COMMAND --- ONE IS PI, $ IS THE TTY: INPUT BUFFER, VE IS VERSION NUMBER, OTHERS ARE INTERRUPT FLAGS 11) OS/8 FOCAL'S STARTING ADDRESS IS 200 (FIELD 0) CTRL/P AND CTRL/O ARE INTERNAL BREAK CHARACTERS ----------------------------------------------- CTRL/C IS KEYBOARD MONITOR BREAK CHARACTER ------------------------------------------ NOTE: OS/8 FOCAL DATA FILES ARE COMPATIBLE WITH OS/8 EDIT AND OS/8 TECO; HOWEVER, OS/8 FOCAL PROGRAM FILES AND ARRAYS ARE SAVED AS CORE IMAGES. ***** COMMANDS: MOST COMMANDS MUST BE FOLLOWED BY A SPACE *** DIRECT COMMANDS ARE TYPED WITHOUT LINE NUMBERS AND FOCAL EXECUTES THEM AS SOON AS THE RETURN OR THE ALT MODE/ESCAPE BUTTON IS HIT---FOR EXAMPLE: #TYPE 3+4 (CAUSES FOCAL TO TYPE A 7) (OR SEVERAL COMMANDS MAY BE GIVEN IN SEQUENCE:) #SET X=3 #SET Y=2 #TYPE 3+X+Y,! 8.0000 #TYPE X+Y-4$ 1.0000 # *** INDIRECT COMMANDS ARE USED FOR LONGER PROGRAMS. THEY ARE TYPED FOLLOWING LINE NUMBERS AND MAY BE EXECUTED BY A DIRECT 'GO': #2.1 SET X=3 #2.2 SET Y=2 #2.3 TYPE 3+X+Y,! #GO 8.0000 #GO$ 8.0000 # *** THE COMMANDS: EXAMPLES OF EACH ARE GIVEN FOLLOWED BY THE GENERAL FORM IN WHICH: ARE ENCLOSED IN ANGLE BRACKETS. [OPTIONAL TERMS] ARE ENCLOSED IN SQUARE BRACKETS. (COMMENTS) ARE ENCLOSED IN PARENTHESES. A, B, C, X, Y, AND Z ARE VARIABLES. L1, L2 AND L3 ARE LINE NUMBERS. G1 STANDS FOR A GROUP OR LINE NUMBER IN MOST CASES, GROUP AND LINE NUMBERS MAY BE REPLACED BY VARIABLES. *** ELEMENTARY COMMANDS: ASK Y (EXPECTS A VALUE TO BE INPUT FOR Y) A Z (A IS THE ABBREVIATION FOR 'ASK' --- ALL COMMANDS HAVE SINGLE LETTER ABBREVIATIONS) A B2,X,NUMBER A "HOW MANY?", M (TYPES 'HOW MANY' THEN SETS M = TO THE RESPONSE) ASK A,B,C, (ALLOWS THREE VARIABLES TO BE GIVEN VALUES) (SPACE, COMMA OR CARRIAGE RETURN WILL TER- MINATE EACH NUMBER INPUT; TYPE A '_' OR ^U TO ERASE A PARTIALLY TYPED NUMBER --- IT MAY THEN BE RETYPED.) #SET A=PI ALT/ESCAPE LEAVES THE VARIABLE WITH ITS #ASK A$$ 3.1416 FORMER VALUE AND ECHOES IT # (3 COMMAND DECODER OPTIONS PROVIDE AUTOMATIC PRINTING OF A ':', '?' OR BELL, BY THE 'ASK' COMMAND) ** ASK ["PRINT OUT IN QUOTES"] X [,Y,Z] ---------------------------------------------------------- COMMENT SQRT (COMMENTS ARE USED TO TELL ABOUT PROGRAM) CONTINUE (DUMMY LINE) C PRINT ROUTINE ** C (LINES BEGINNING WITH A 'C' WILL BE IGNORED) ---------------------------------------------------------- DO 7.24 (TELLS FOCAL TO EXECUTE LINE 7.24 THEN RETURN D 4.48 TO THE COMMAND FOLLOWING THE 'DO') DO 7$ (EXECUTES GROUP 7, AND STAYS ON THE SAME LINE) D G1;D 7.6 (EXECUTES LINE (OR GROUP) G1 THEN LINE 7.6) ** DO [LINE OR GROUP NUMBER] ---------------------------------------------------------- ERASE 2.17 (DELETES LINE 2.17 FROM INDIRECT PROGRAM) E 3 (DELETES ANY GROUP 3 LINES --- 3.01 THROUGH 3.99) ERASE (ZEROES ALL VARIABLES) ERASE ALL (ERASES ENTIRE INDIRECT PROGRAM) ** ERASE [LINE OR GROUP NUMBER] (ZEROES VARIABLES IF NO NUMBER GIVEN) ---------------------------------------------------------- FOR P=1,7;TYPE 3 (OUTPUTS A '3' SEVEN TIMES) FOR J=1,5;DO 17.1$ (DOES LINE 17.1, FIVE TIMES) F X=2,-2,-8;T X/5,! (OUTPUTS .4 0 -.4 -.8 -1.2 -1.6 FOR Z=1,Y;DO 7 (DOES GROUP 7, Y TIMES) ** FOR X=E1[,E2],E3;[COMMAND TO BE REPEATED] ('FOR' COMMANDS REPEAT AND ADD 1 (OR 'E2') TO 'E1' EACH TIME; THEN GO TO NEXT LINE WHEN 'E1' EXCEEDS 'E3' IF E2 POSITIVE OR WHEN E1 IS LESS THAN E3 WHEN E2 NEGATIVE ---------------------------------------------------------- GO 8.17 (STARTS EXECUTING PROGRAM AT LINE 8.17) GOTO 3.1 (STARTS EXECUTING PROGRAM AT LINE 3.1) GO (STARTS EXECUTING PROGRAM AT LOWEST LINE) G$ (SAME BUT STAYS ON THE SAME LINE) GO ? ('TRACE FEATURE' -- PRINTS PROGRAM DURING EXECUTION) G X (STARTS EXECUTING PROGRAM AT LINE X) ** GO [LINE NUMBER] (STARTS EXECUTING INDIRECT PROGRAM AT LINE L1) ---------------------------------------------------------- I (H-5)1.3,1.5,1.7 ('IF' CHECKS THE VALUE INSIDE THE PARENTHESES) IF (Y)2.7,1.2,L1 (FOCAL GOES TO LINE 2.7,1.2 OR L1 IF Y IS -, 0, OR +) I (B-3)2.8,7.9; (GOES TO NEXT COMMAND IF (B-3) IS POSITIVE) I (Z)2.7;T 21 (IF Z IS LESS THAN 0 --- THEN 2.7; OTHERWISE 'TYPE 21') I (G)2.1,L1,2.4 IF G=0 THEN GOES TO LINE L1) ** IF (E1)L1[,L2,L3] (NEXT EXECUTES LINE L1, L2, OR L3 DE- PENDING ON WHETHER E1 IS -, 0, OR +) ---------------------------------------------------------- ** LOGICAL IF'S #I (A,<,B)1.8;T "<"$< (WHEN A .LT. B THIS TYPES < , # OTHERWISE GOES TO LINE 1.8) I (X,=,0)1.5;T "0" (TYPES '0' WHEN X=0) I (X,>=,Y)6.9,L2 (GOES TO L2 WHEN X .GE. Y,TO 6.9 OTHERWISE) ** IF (E1,REL,E2)L1[,L2] EXECUTE L2 (OR END OF LINE) WHEN CONDITION IS MET. (REL:RELATIONAL OPERATOR: <,>,=,<=,>=,<> <>:.NOT.) ---------------------------------------------------------- 'MODIFY 3.72' FOLLOWED BY A 'RETURN' OR ALT/ESCAPE WILL CAUSE 03.72 TO BE TYPED, TYPING THE LETTER 'X' WILL CAUSE THE LINE TO BE TYPED THROUGH ITS FIRST 'X'. YOU MAY THEN: 1) TYPE IN REST OF REVISED LINE AND HIT 'RETURN' 2) USE 'RUB OUT' TO ERASE SINGLE CHARACTERS OR THE LINE NUMBER (IN THE LATTER CASE RETYPE NEW LINE NUMBER) 3) HIT 'LINE FEED' TO KEEP REMAINDER OF OLD LINE 4) HIT CTRL/K TO GO TO NEXT OCCURRENCE OF 'X' 5) HIT CTRL/BELL TO CHANGE SEARCH CHARACTER; THEN HIT NEW CHARACTER 6) HIT '_' OR ^U TO DELETE LINE OVER TO LEFT MARGIN *MODIFY L1 (LET L1=1.23) 01.23 C ('C' IS THE PARTICULAR SEARCH CHARACTER CHOSEN) ---------------------------------------------------------- Q (ABBREVIATION) *QUIT (TERMINATES PROGRAM EXECUTION) (AND SOMETIMES RETURNS TO THE KM) ---------------------------------------------------------- R (ABBREVIATION) *RETURN (ALLOWS ESCAPE FROM A 'DO LOOP' TO THE COMMAND FOLLOWING THE 'DO' OR 'LIBRARY GOSUB') ---------------------------------------------------------- SET Y=37$ (CAUSES 'Y' TO TAKE THE VALUE 37) S A=110/P+32 (CAUSES 'A' TO ASSUME THE VALUE OF 110/P+32) S Y=Y+1 (SETS THE NEW VALUE OF Y = 1 PLUS OLD VALUE) S Z=$;T Z (PERMITS TYPING VALUE OF TTY: INPUT BUFFER) S #=0 (ONLY WAY TO ZERO PROTECTED VARIABLE '#') *SET Y= ---------------------------------------------------------- TYPE 3 (OUTPUTS A 3 ON THE TELEPRINTER OR OTHER OUTPUT DEVICE) T 3$ 3.000 (EXAMPLE OF THE USE OF ALT/ESCAPE) # T X/Y-1 (OUTPUTS THE VALUE OF THE EXPRESSION X/Y-1) T "A"!"B"!"C"! (OUTPUTS 'A', 'B' AND 'C' IN A VERTICAL ROW) T ! (OUTPUTS A RETURN/LINE FEED) T &,' (TYPES A FORMFEED FOLLOWED BY A LINEFEED) T # (RESETS THE LINE/PAGE COUNTER TO ZERO) T (#) (OUTPUTS VALUE OF INTERRUPT FLAG '#') T "ANS: ",26+5 (OUTPUTS 'ANS: 31') T :8,"/",:8,"\" (OUTPUTS 'X' IN POSITION 8 ON LINE) T $ (OUTPUTS THE SYMBOL TABLE) T %10.09 (SETS THE OUTPUT FORMAT TO ALLOW UP TO 10 DIGITS TO BE PRINTED, OF WHICH 9 MAY BE DECIMAL PLACES) T % (FORMATS OUTPUT IN POWERS-OF-TEN NOTATION) T %+3 (FLOATING OUTPUT WITH 3 SIGNIFICANT PLACES) T %\X ('\' DELETES LEADING SPACE) T %$3.02,9 (TYPES $ 9.00 ) T %*7.02,-33 (TYPES **-33.00 ) (A CD OPTION PROVIDES AUTOMATIC PRINTING OF AN '=' OR ':' BY THE'TYPE' COMMAND) *TYPE [NUMBERS, VARIABLES, EXPRESSIONS, TEXT IN QUOTES &,', !,#,:,$ OR %] ---------------------------------------------------------- WRITE 2.27 (OUTPUTS LINE 2.27 OF THE INDIRECT PROGRAM) W 2 (OUTPUTS GROUP 2) WRITE ALL (OUTPUTS ENTIRE INDIRECT PROGRAM) W (SAME) W X (OUTTPUTS GROUP OR LINE GIVEN BY 'X') *WRITE [GROUP OR LINE NUMBER] (LISTS PROGRAM) ---------------------------------------------------------- *** LIBRARY COMMANDS: LIBRARY [DEVICE:] [LINE NUMBER] *** OS/8 DEVICE NAMES: SYS: SYSTEM DEVICE (RKA0: IN RK05 SYSTEM; DTA0: OR SDA0: IN DECTAPE SYSTEM) DSK: RKB0 IN RK05 SYSTEMS; DECTAPE #1 IN DECTAPE SYSTEMS ('DSK:' IS ASSUMED IF A DEVICE IS NOT SPECIFIED) DTA0: - DTA7: DECTAPE DRIVES (TC08 CONTROLLER) LTA0: - LTA7: LINCTAPE DRIVES MTA0: - MTA7: MAGTAPE DRIVES CDR: CARD READER PTR: HIGH SPEED READER PTP: HIGH SPEED PUNCH LPT: LINE PRINTER BAT: BATCH STREAM INPUT TTY: TERMINAL (MAY BE USED WITH OTHER DEVICES THROUGH 'ECHO') LIBRARY CALL CHISQR (GETS PROGRAM 'CHISQR.FC' FOR USE) L C SDA3:PRGRAM (GETS 'PRGRAM.FC' FROM TD8 DECTAPE #3) L C TEST1 (GETS 'TEST1.FC' FROM DSK:) L C BIGP(X) (GETS BIGP11 IF X=11) *LIBRARY CALL [DEVICE:] ---------------------------------------------------------- LIBRARY DELETE TTEST (DELETES 'TTEST.FC' FROM DSK:) L D SDA7:PROG (DELETES 'PROG.FC' FROM TD8E TAPE #7) L D HOLD.FD (DELETES DATA FILE 'HOLD.FD') L D ARRAY.FA (DELETES ARRAY.FA FROM DSK:, HAS TO BE USED TO CREATE NEW ARRAY OF SAME NAME) * * * THIS COMMAND CLOSES OPEN OUTPUT FILES * * * ---------------------------------------------------------- *LIBRARY DELETE [DEVICE:] (ASSUMES .FC NAME EXTENSION) ---------------------------------------------------------- LIBRARY GOSUB TEXT <13.7> (LINE 13.7 OF 'TEXT' BECOMES A SUBROUTINE WHICH RETURNS TO THE COMMAND FOLLOWING 'GOSUB') (WHEN A 'GOSUB' IS EXECUTED BY A NEW PROGRAM, THE NEW PROGRAM WILL BE SAVED AS 'FOCAL.TM') L G SUMSQR (TREATS ENTIRE 'SUMSQR' PROGRAM AS SUBROUTINE) L G CALC(X) (TREATS GROUP 7 OF 'CALC4.FC' LIKE A 'DO' SUBROUTINE , WHEN X=4 AND Y=7) * * * THIS COMMAND CLOSES OPEN OUTPUT FILES IF GIVEN BY AN UNSAVED VERSION OF A PROGRAM * * * ---------------------------------------------------------- LIBRARY LOAD PROG.SV (OS/8 CHAIN TO PROG.SV ON SYS:) L L FCUSER (CHAINS TO SOME SPECIAL VERSION OF DPF , WE LOSE ALL VARIABLES!) L L CHAN(X) (CHAINS TO CHAN99.SV IF X=99 , 99 IS MAXIMUM NUMBER FOR INDEXES) L L FCARIT (OVERLAYS THE ARITHMETIC FUNCTIONS ON DPF INITIALLY WITHOUT FUNCTIONS) *LIBRARY LOAD [SYS:] (FORCES .SV EXTENSION) ---------------------------------------------------------- LIBRARY RUN JOHN (LOADS 'JOHN.FC' THEN STARTS PROGRAM) L R DTA2:ZONK (RUNS 'ZONK.FC' FROM TC08 TAPE #2) L R POP <22.81> (STARTS 'POP.FC' AT LINE 22.81) * * * PROGRAMS CONTAINING 'RUNS' MUST BE SAVED BEFORE EXECUTION * * * ---------------------------------------------------------- *LIBRARY RUN [DEVICE:] [LINE NUMBER] (TRANSFERS EXECUTION TO NAMED PROGRAM) ---------------------------------------------------------- LIBRARY SAVE PROG (SAVES INDIRECT PROGRAM AS 'PROG.FC') L S SDA6:ZAAP (SAVES 'ZAAP.FC' ON TD8E TAPE #6) L S PRGNAM (SAVES 'PRGNAM.FC' ON DSK:) - - - LINE 0 OF PROGRAM IS CHANGED TO: C-PRGNAM.FC MAR-75 (IF THE PROGRAM WAS SAVED IN MARCH-75) *** OLD 'PRGNAM.FC' IS DELETED WHEN NEW 'PRGNAM.FC' IS SAVED * * * THIS COMMAND CLOSES OPEN OUTPUT FILES * * * *LIBRARY SAVE [DEVICE:] ---------------------------------------------------------- L E (ABBREVIATION) *LIBRARY EXIT (LEAVES FOCAL; RETURNS TO OS/8 MONITOR) ---------------------------------------------------------- *****^C ^C HAS SAME FUNCTION BUT ALSO WORKS IN OS/8 HANDLERS - IT IS THE PREFERRED EXIT *** THESE EXITS CLOSE ALL FILES AND WAIT FOR END OF TTY: *** THE EXPERIENCED PROGRAMMER MAY READ AND WRITE OS/8 COMPATIBLE DATA FILES WITH MANY DEVICES. DPF ASSUMES .FC AND .FD AS NAME EXTENSIONS FOR PROGRAM AND DATA FILES RESPECTIVELY. DATA FILES ARE SAVED IN STANDARD OS/8 ASCII FORMAT AND ARE EDIT AND TECO COMPATIBLE. DPF USES THE .FA EXTENSION FOR VIRTUAL ARRAY FILES, THE NUMBERS ARE STORED IN THESE FILES IN 4-WORD FLOATING POINT. THE TERMINAL (TTY:) IS DPF'S NORMAL INPUT AND OUTPUT DEVICE. THE 'OPEN INPUT' COMMAND PERMITS SELECTING ANOTHER DEVICE FOR INPUT 'OPEN OUTPUT' DOES THE SAME FOR OUTPUT. BE SURE TO CLOSE ONE OUTPUT FILE BEFORE OPENING ANOTHER. ',ECHO' ADDED TO THE INPUT COMMANDS ECHOES THE INPUT DATA ON THE OUTPUT DEVICE. WHEN ADDED TO OUTPUT COMMANDS, IT CAUSES THE OUTPUT TO BE ECHOED ON THE TERMINAL. 'OUTPUT CLOSE' EMPTIES THE OUTPUT BUFFER ONTO THE DEVICE AND SAVES THE FILE IF THE DEVICE IS FILE STRUCTURED (DISK OR MAGNETIC TAPE). THE 'OPEN INPUT TTY:,ECHO' COMMAND WILL RESTORE THE TERMINAL AS THE INPUT DEVICE WITH ECHO. AFTER AN ERROR OCCURS OR 'CTRL/O,P' IS STRUCK, THE TERMINAL IS RESTORED AS BOTH INPUT AND OUTPUT DEVICE. AT THE SAME TIME ALL OUTPUT FILES ARE CLOSED TO PREVENT A LOSS OF INFORMATION. READING AND WRITING CAN BE RESUMED WITH PREVIOUSLY OPENED NON-TTY: DEVICES THROUGH 'OPEN INPUT "' AND 'OPEN OUTPUT "' COMMANDS. NOTE: WHEN WRITING FOCAL DATA FILES, IT IS NECESSARY TO INCLUDE A SPACE, COMMA, CARRIAGE RETURN OR OTHER DELIMITER PRECEDING ANY MINUS SIGNS, OTHERWISE THE NUMBER WILL APPEAR POSITIVE WHEN 'ASKED'. A DELIMITER WILL BE AUTOMATICALLY 'TYPED' IF NOT SPECIFICALLY DELETED WITH ' TYPE %\X ' . OPEN INPUT BLEEP (SWITCHES INPUT TO 'BLEEP.FD' FILE ON DSK:) O I DTA4:RED (OPENS 'RED.FD' FILE ON DECTAPE DRIVE #4) O I TABLE,ECHO (WILL ECHO ON OUTPUT DEVICE WHILE READING 'TABLE.FD' FROM THE DSK:) OPEN INPUT TTY:,ECHO (RESTORES TERMINAL TO NORMAL FUNCTION) O I TTY:,E (ABBREVIATION) * * * CTRL/Z IS THE END-OF-DATA-FILE CHARACTER. ATTEMPTS TO READ PAST IT WILL OUTPUT AN ?EF ERROR AND SWITCH INPUT TO THE TERMINAL. * * * *OPEN INPUT [DEVICE:][FILE NAME][,ECHO] (PREPARES TO READ A FILE) ---------------------------------------------------------- OPEN OUTPUT DK (OPENS 'DK.FD' TO BE WRITTEN ON THE DSK:) O O DTA7: ZZ[17] (OPENS 'ZZ.FD' FILE TO BE WRITTEN ON DECTAPE) (LENGTH.LE.17 BLOCKS) O O DOPE,ECHO (ECHOES ON TTY: WHILE WRITING 'DOPE.FD' ON DSK:) (BE SURE TO GIVE AN 'OUTPUT CLOSE' WHEN DONE) * * * OPEN OUTPUT FILES WILL BE CLOSED IF THE COMMANDS 'LIBRARY SAVE' OR 'LIBRARY DELETE' ARE GIVEN OR IF 'LIBRARY GOSUB' IS GIVEN BY A VERSION OF A PROGRAM THAT HAS NOT BEEN SAVED. * * * * * * FAILURE TO INSERT A DELIMITER BETWEEN NEGATIVE NUMBERS 'TYPED' TO A FILE WILL RESULT IN THEIR BEING READ AS POSITIVE. FEATURES '4,5' OR 'YES' OF THE INITIAL DIALOGUE PROVIDE AUTOMATIC SPACING. * * * *OPEN OUTPUT [DEVICE:][FILE NAME][,ECHO] (PREPARES TO WRITE A FILE) ---------------------------------------------------------- OPEN INPUT " (RESUMES 'ASKING' FOR DATA FROM A PREVIOUSLY OPENED INPUT FILE AFTER USING TTY: INPUT WITH AN 'OPEN INPUT TTY:,ECHO') O I " (ABBREVIATION) O I ",E (SAME PLUS ECHO) *OPEN INPUT "[,ECHO] (RESUMES INPUT FROM NON-TTY:) ---------------------------------------------------------- OPEN OUTPUT " (RESUMES 'TYPING' ON PREVIOUSLY OPENED OUTPUT DEVICE AFTER USING TTY:) O O " (ABBREVIATION) O O ",ECHO (SAME PLUS ECHO) *OPEN RESTORE OUTPUT[,ECHO] (RESUMES OUTPUT TO NON-TTY:) ---------------------------------------------------------- *OUTPUT CLOSE (ENDS FILE WRITING AND SAVES OUTPUT FILE IF DEVICE IS FILE STRUCTURED (DISK OR MAGNETIC TAPE).) * * * ALSO ALL BREAKS ^O,^P,^C CLOSE OPEN FILES. ---------------------------------------------------------- ***** SYMBOLS: *** ARITHMETIC SYMBOLS: EXPONENTIATION [^] (INDICATES AN INTEGER EXPONENT) TYPE 3^2 (OUTPUTS A '9' --- 3 TO THE SECOND POWER) SET X=Y^Z (SETS X EQUAL TO Y RAISED TO THE INTEGRAL Z POWER) TYPE 2^3.5 (OUTPUTS AN '8' --- THE .5 IS DROPPED) MULTIPLICATION [*] TYPE 2*4 (OUTPUTS AN '8') SET X=Y*Z (SETS X EQUAL TO Y TIMES Z) DIVISION [/] TYPE 6/2 (OUTPUTS A '3') SET X=Y/Z (SETS X EQUAL TO Y DIVIDED BY Z) ADDITION [+] TYPE 2+2 (OUTPUTS A '4') SET X=Y+Z (SETS X EQUAL TO Y PLUS Z) SUBTRACTION [-] TYPE 3-X (OUTPUTS THE VALUE OF 3-X) SET X=Y-Z (SETS X EQUAL TO Y MINUS Z) ENCLOSURES (),[], AND <> MAY BE USED INTERCHANGEABLY IN MATCHED PAIRS TO ENCLOSE QUANTITIES WHICH ARE TO BE OPERATED ON AS A UNIT. *** SPECIAL CHARACTERS: RETURN/LINE FEED [!] TYPE !!!!,X,!! (OUTPUTS 4 CARRIAGE RETURN/LINE FEEDS, THE VALUE OF X, AND THEN 2 MORE CARRIAGE RETURN/LINE FEEDS. CARRIAGE RETURN [:] OR ^N SEE WHAT THE ':' DOES IN LINE 10.35 (SEE HOW THE '/' AND THE '\' ARE SUPERIMPOSED) #10.35 TYPE "X=/",:," \",!!!!! #D 10.35 X=X TAB [:X] SEE WHAT THE ':X' DOES IN LINE 11.37 11.37 TYPE "NAME---":25,"ROGER":40,"AGE = ",2*13,:7,"JONES",!! NAME---JONES ROGER AGE = 26.0000 OUTPUT FORMATTER [%] SEE WHAT THE '%' DOES IN LINE 12.30 12.30 SET X=123.456;TYPE %$6.04 X,!;TYPE %*4.02 X,!;T %3.0 X, !;T %+6,X,! $ 123.456 *123.5 124. 1.23456E+02 '%4.02' PERMITS FOUR DIGITS TO BE OUTPUT INCLUDING UP TO TWO DECIMAL PLACES; 'TYPE %' ALONE GIVES POWERS OF TEN NOTATION. 'T %\X' REMOVES THE LEADING SPACE A NON OPERATOR,TERMINATOR,DIGIT WILL BE USED AS LEADING CHAR WHEN IMMEDIATELY FOLLOWING THE '%'. 'T %*X' WILL DO A LEFT FILL WITH STARS. SYMBOL TABLE [$] TYPE $ (OUTPUTS LIST OF DEFINED VARIABLES) QUOTATION MARKS ["] TEXT MAY BE TYPED BY ENCLOSING IT IN QUOTES SEE WHAT THE '"' DOES IN LINE 14.65 14.65 TYPE "THE ANSWER IS ",3+8,!!!!! THE ANSWER IS 11.0000 TRACE [?] THE FIRST TIME DPF READS A '?' (EXCEPT WITHIN QUOTES) IT WILL START OUTPUTTING THE PROGRAM WHILE IT IS EXECUTING IT;THE NEXT TIME IT ENCOUNTERS A '?' IT WILL STOP TYPING OUT THE PROGRAM. SEE WHAT THE '?' DOES TO LINE 15.60 15.60 SET X=3;? SET Y=5;TYPE X/Y,!? SET Y=5;TYPE X/Y, 0.6000! A 'GO ?' COMMAND WILL TRACE THE ENTIRE PROGRAM. POWER OF TEN [E] SEE WHAT THE 'E' DOES TO LINE 6.80 06.80 TYPE 1E1,7E3,1.23E-2,3.76E217,!!!!! 10.0000 7000.00 0.0123 0.376000E+218 RUBOUT KEY WHEN WRITING A PROGRAM, ONE CHARACTER WILL BE ERASED EACH TIME THE RUBOUT KEY IS STRUCK; RUBOUT WILL SHOW AS A '\' --- THUS: 'PLWEA\\\EASE' BECOMES 'PLEASE'. CTRL/C (PRESSING 'CTRL' AND 'C' AT THE SAME TIME) WILL RETURN USER TO THE OS/8 MONITOR AND CLOSE ALL FILES -- THE 'LIBRARY EXIT' COMMAND IS KEPT FOR COMPATIBILITY WITH PS/8 FOCAL,1971. CTRL/P,CTRL/O ARE THE BREAK CHARACTERS. CTRL/G [BELL] (PRESSING 'CTRL' AND 'G' AT THE SAME TIME) USED WITH THE 'MODIFY' COMMAND TO CHANGE THE SEARCH CHARACTER. CTRL/I [TAB] (IS THE HORIZONTAL TAB CODE AND CAN BE USED IN QUOTED TYPE STATEMENTS) K (PRESSING 'CTRL' AND 'K' AT THE SAME TIME) USED WITH 'MODIFY' TO SKIP TO THE NEXT SEARCH CHARACTER. CTRL/P (PRESSING 'CTRL' AND 'P' AT THE SAME TIME) CTRL/O (PRESSING 'CTRL' AND 'O' AT THE SAME TIME) OS/8 FOCAL'S BREAK CHARACTERS --- ENDS PROGRAM EXECUTION AND CAUSES OS/8 FOCAL TO PRINT ITS '*', OR TO RETURN TO THE KM. CTRL/Z (PRESSING 'CTRL' AND 'Z' AT THE SAME TIME) IS THE LAST CHARACTER IN A OS/8 FOCAL DATA FILE. ATTEMPTS TO READ PAST THE END-OF-FILE WILL CAUSE A '?EF' ERROR TO BE TYPED ON THE TERMINAL AND WILL RESTORE THE TERMINAL AS THE INPUT DEVICE. LINE FEED USED WITH THE 'MODIFY' COMMAND TO RETAIN REMAINDER OF MODIFIED LINE. KILL LINE [_] (BACK ARROW) OR ^U WHEN WRITING A PROGRAM, '_' OR ^U DELETES EVERYTHING OVER TO LEFT MARGIN. IN RESPONSE TO 'ASK' , '_' KILLS THE NUMBER BEING ENTERED. RETURN KEY USED WITH THE 'MODIFY' COMMAND TO DELETE REMAINDER OF MODIFIED LINE. 'RETURN' IS A LEGAL SYMBOL FOR SEPARATING DATA PROVIDED TO AN 'ASK' COMMAND. ALT MODE KEY ('ESCAPE' OR 'PREFIX' ON SOME TERMINALS) IN RESPONSE TO AN 'ASK' COMMAND, ALT MODE RETAINS THE PREVIOUS VALUE OF THE VARIABLE, AND ECHOES IT IN THE CURRENT FORMAT. ALSO USED INSTEAD OF RETURN FOR TERMINATING LINE. SPACE KEY IT IS A LEGAL SYMBOL FOR SEPARATING DATA REQUESTED BY AN 'ASK' COMMA [,] IT IS A LEGAL SYMBOL FOR SEPARATING DATA IN TYPE AND ASK. SEE WHAT THE ',' DOES TO LINE 26.40: 26.40 TYPE 2,3,5/6,12^3,!!!! 2.0000 3.0000 0.8333 1728.00 SEMICOLON [;] SEPARATES COMMANDS WHEN PLACED TOGETHER ON ONE LINE SEE WHAT THE ';' DOES TO LINE 27.42: 27.42 SET X=17;TYPE 3*X;SET X=3/7; TYPE " ",X+3,!!!! 51.0000 3.4286 ***** FUNCTIONS: FOR MOST FUNCTIONS, A SAMPLE LINE IS SHOWN AND THEN EXECUTED: FABS( ) ABSOLUTE VALUE EXAMPLE (WRITTEN THEN EXECUTED): 03.40 TYPE FABS(-3),FABS(2),!!!! 3.0000 2.0000 FATN( ) ARCTANGENT ARGUMENT RANGE: 0 223 _ 158 CTRL/SHFT/N 191 ? 253 ALT MODE 159 CTRL/SHFT/O 192 @ 255 RUBOUT FOUT(141) WILL OUTPUT A RETURN/LINE FEED; FOUT(142) WILL OUTPUT A CARRIAGE RETURN ONLY. CODE 143,144 (CTRL/O,P) ARE DPF'S BREAK CHARACTERS. 224 THROUGH 250 ARE LOWER-CASE LETTERS ON SOME TERMINALS. MANY TERMINALS USE SHIFT/K, /L, AND /M FOR '[', '\', AND ']'. ***** MISCELLANEOUS: EXPRESSIONS --- AN EVALUATABLE GROUP OF NUMBERS OR VARIABLES: (2+3*X) OR (22/7) THE FOLLOWING 3 LINE PROGRAM WILL ASK FOR 10 NUMBERS FROM THE READER: 10.60 OPEN INPUT PTR: 10.65 FOR X=1,10;ASK A(X) 10.70 OPEN INPUT TTY:,ECHO;COMMENT --- RESTORES TERMINAL TO NORMAL *** COMMAND DECODER: DPF CALLS THE COMMAND DECODER ONCE AFTER THE .R DPF (OR FOCAL$ IN CCL) COMMAND. THIS PERMITS THE USE UNDER BATCH AND THIS STILL WORKS WITH ONLY 12K (16K IF THE BAT: HANDLER IS USED TO OBTAIN INFORMATION FROM THE BATCH STREAM). THE FORMAT OF THE CD COMMAND STRING IS: (OR CCL) *OUTPUT FILE(.FD)