DOCUMENTATION (DOCUME.WU) LARS PALMER AB HASSLE FACK 431 20 MOLNDAL 1 SWEDEN PAGE RALF ROUTINES FILSIZ 1 ICHAR ICHAR,OCHAR,FOCHAR,TSTCHAR 1 REGIST CMDOPT,DBI,DBOC,DBOS,DBCLR IOT,IOTB (ADAPTED FROM R.PHELPS) 2 BITS 3 MACROS 3 DATE PROGRAM 4 DIRECTORY SYSTEM 5 PAGE 1 FILSIZ THE ROUTINE FILSIZ ALLOWS THE FORTRAN PROGRAMMER TO FIND THE SIZE OF ANY FILE DEFINED TO THE RUN TIME SYSTEM. THIS IS SPECIALLY USEFUL IN LABORATORY TYPE APPLICATIONS, AS IT CAN BE EXTREMELY ANNOYING IF THE PROGRAM SUDDENLY STOPS WITH A "FILE OVERFLOW" AFTER SAMPLING FOR A LONG PERIOD OF TIME. IF THE FILE SIZE IS AVAILABLE TO THE PROGRAM, IT IS POSSIBLE TO CHECK THAT THE FILE IS LARGE ENOUGH BEFORE SAMPLING STARTS. SETTING A = FILSIZ(N) RETURNS THE SIZE OF FILE N WHETHER THE FILE IS A TENTATIVE OR A PERMANENT FILE. IF DEVICE N IS ASSOCIATED WITH AN INTERNAL HANDLER, FILSIZ IS SET TO 0.25 SO THAT THIS INFORMATION ALSO CAN BE PICKED UP BY THE ROUTINE. FILSIZ WILL ONLY WORK WITH FRTS VERSION 3. ICHAR THE SUBROUTINE ICHAR WITH THE ENTRY POINTS ICHAR, OCHAR AND FOCHAR CAN BE USED FOR INPUTTING AND OUTPUTTING ONE CHARACTER FUNCTIONS FROM THE FORTRAN SYSTEM. IT IS USEFUL FOR OUTPUTTING THINGS LIKE CURSOR MOVEMENT COMMANDS ON THE CRT TERMINALS AND FOR INPUTTING SPECIFIC CONTROL CHARACTERS IN AN ONE-CHARACTER-AT-A-TIME INPUT MODE. THE CALLS ARE: CALL ICHAR(I6,A1), OCHAR(I6,A1) AND FOCHAR(I6,A1) WITH THE ARGUMENTS BEING I6 THE REQUIRED VARIABLE IN DECIMAL SEVEN BIT ASCII CODE AND A1 IN THE A1 FORTRAN CODE. ON INPUT, BOTH I6 AND A1 ARE SUPPLIED. ON OUTPUT, IF I6 IS ZERO, A1 IS USED. IF BOTH I6 AND A1 ARE ZERO, A CARRIAGE RETURN LINE FEED IS OUTPUT. A CALL TO FOCHAR WILL SEND 6 FILLER CHARACTERS AFTER THE REQUIRED OUTPUT CHARACTER. FOCHAR IS ONLY INCLUDED IF THE CONDITIONAL PARAMETER FILL IS NON-ZERO. TSTCHAR THIS ENTRY POINT IS CALLED WITH THE SAME ARGUMENTS AS ICHAR. IT HOWEVER CHECKS THE PENDING CHARACTER IN THE FRTS BUFFER. THIS MEANS THAT IT IS POSSIBLE TO PUT A PROGRAM IN A CONTINUOUS LOOP, CALL ICHAR AND CHECK IF I6 IS DIFFERENT FROM ZERO. IF THERE IS NO CHARACTER IN THE BUFFER, I6 WILL RETURN AS ZERO. THEREFORE, IT IS POSSIBLE TO STRIKE ANY CHARACTER ON THE KEYBOARD WHILE THE PROGRAM IS EXECUTING, PICK IT UP WITH ICHAR AND USE THE CHARACTER AS A SWITCH FOR FURTHER EXECUTION. PAGE 2 REGIST THIS FILE CONTAINS SUBROUTINES TO THE FORTRAN SYSTEM COMPROMIZING THREE GROUPS OF ROUTINES: A)CALL CMDOPT(I,J). THIS ROUTINE REQUIRES A PATCH TO THE FORTRAN RUN TIME SYSTEM. THIS PATCH IS AVAILABLE IN THE FILE FRTSX.PA WHICH ALSO IS ON THE TAPE. THE ROUTINE CMDOPT WITH THE ARGUMENT I EQUAL TO 0 - 11 WILL INTO J FETCH A 0 OR A 1 DEPENDING ON IF THE SWITCH A - L RESPECTIVELY WAS SET ON THE LAST LINE IN A CALL TO FRTS, E.G. R FRTS *ABC.LD/A/K$ WILL ON CALLING CMDOPT WITH A EQUAL TO 0 OR 10 SET J TO 1, ANY OTHER CALL IT WILL BE SET TO 0. B)THE ROUTINES DBI(I,J), DBOC(I), DBOS(I) AND DBCLR WORK ON THE DIGITAL I/O REGISTER ON THE 8E. DBI(I,J) WILL FETCH BIT I INTO J AND CLEAR IT IN THE HARDWARE REGISTER. DBOC(I) WILL CLEAR BIT I, DBOS(I) WILL SET BIT I AND DBCLR WILL CLEAR THE WHOLE REGISTER. THESE ROUTINES ARE FUNCTIONALLY THE SAME AS THE ROUTINES SUPPLIED BY DEC FOR THE PDP-12 REGISTERS. C)THE ROUTINES IOT AND IOTB (ADAPTED FROM ROUTINES WRITTEN BY ROBERT PHELPS). BOTH THESE ROUTINES HAVE SIMILAR CHARACTERISTICS AND ALLOW A FORTRAN PROGRAM TO ISSUE RANDOM IOTS, E.G. CALL IOT(3972,A) WILL READ SWITCH REGISTERS INTO A. THEY ARE CALLED WITH TWO ARGUMENTS: CALL IOT(X,N) CALL IOTB(X,N) WHERE X IS DECIMAL VALUE OF AN PDP-8 INSTRUCTION AND N IS THE VALUE OF THE AC BEFORE THE INSTRUCTION IS EXECUTED AND AFTER ON RETURNING TO THE PROGRAM. THE DIFFERENCE LIES IN HOW N IS COMMUNICATED TO THE PDP-8 CPU. CALLING IOT, N IS COMMUNICATED AS AN FORTRAN NUMBER, FIXED AND PLACED IN THE AC. AFTER EXECUTING X, THE AC IS FLOATED AND RETURNED TO FORTRAN. IN IOTB, N IS TREATED AS A BITWISE INFORMATION. ON CALLING, BITS 1 - 12 OF THE FORTRAN WORD ARE PLACED IN THE AC. ON RETURNING, BITS 13 - 24 ARE SET TO THE VALUE OF THE AC AND RETURNED TO THE FORTRAN WORD. OTHER BITS ARE UNCHANGED AND NOT LOOKED AT. BY COMBINING THIS WITH CALLS TO BITS, IT IS POSSIBLE TO SET CLEAR INDIVIDUAL BITS IN OUTPUT REGISTERS. PAGE 3 BITS THE ROUTINES BGET(X,J,L) AND BPUT(X,J,L) ARE ANALOGOUS TO THE CGET AND CPUT ROUTINES IN THE FORTRAN LIBRARY BUT THEY WORK ON INDIVIDUAL BITS IN THE WORD X. BPUT WILL SET BIT NUMBER J IN X TO 0 OR 1 DEPENDING ON THE VALUE OF L. BGET WILL SET L TO 0 OR 1 DEPENDING ON THE VALUE OF BIT J IN X. J MUST BE 1 - 36 OR AN ARGUMENT ERROR RESULTS. THIS ROUTINE IS VERY USEFUL WHEN A LARGE NUMBER OF LOGICAL VARIABLES ARE USED IN ONE PROGRAM. MACROS THE USAGE OF TECO MACROS IS A VERY POWERFUL FEATURE OF THE OS/8 SYSTEM. MANY SUCH USEFUL MACROS CAN BE CREATED, BUT ARE OF COURSE USUALLY NOT SUFFICIENTLY VALUABLE TO SUBMIT THEM TO THE DECUS LIBRARY ONE AT A TIME. THIS TAPE CONTAINS SEVERAL SUCH MACROS WITH A SHORT DESCRIPTION INCLUDED HERE. YOU MUST OF COURSE HAVE THE EXTENDED 0S/8 SYSTEM TO RUN THEM, I.E. TECO. TO RUN THE DATE PROGRAM YOU MUST ALSO HAVE THE OS/8 BASIC SYSTEM. LIST.TE THIS IS A SIMPLE MACRO USED WITH THE SYNTAX MUNG LIST, TEMP WHERE TEMP IS A DIRECTORY LISTING FILE CREATED BY DIRECTORY COMMAND. IT WILL ON DEVICE LPT LIST THE FILES GIVEN IN THE DIRECTORY (THE FILES MUST COME FROM DSK DEVICE). THE FILE NAME TOGETHER WITH ITS DIRECTORY INFORMATION IS INCLUDED IN THE LISTING. IT ALSO HAS THE ADVANTAGE OVER A SEPARATE LIST COMMAND, AS NOT SO MANY FORM FEEDS ARE OUTPUT. FILES.TE THIS IS A RATHER USEFUL MACRO. IT CONTAINS THE CENTRAL PART OF THE PREVIOUS MACRO. IT WILL TAKE A DIRECTORY FILE CREATED BY THE DIRECTORY COMMAND AND THEN CALL A SECOND MACRO, FOR EACH OF THE FILES WITH THE FILE NAMES AVAILABLE IN SEPARATE Q-REGISTERS. LIST THE MACRO FOR FURTHER DETAILS. PAGE 4 FORM.TE THIS IS A MACRO WHICH CAN BE UTILIZED AND CALLED BY THE PREVIOUS MACRO. IT WILL TAKE AS ITS INPUT A FORTRAN SOURCE FILE AND CONVERT IT INTO THE OS/8 FORMAT, I.E. IT WILL REMOVE SPACES AND THE BEGINNING OF LINES CONVERTING THEM TO TAB CHARACTERS. THIS CAN, IN SOME CASES, SAVE UP TO ABOUT 20 % OF THE INPUT FILE SIZE. DATE.BA THIS IS A BASIC PROGRAM WHICH CAN BE UTILIZED TO CREATE A DATE.SV PROGRAM FOR THE NORMAL USAGE IN THE OS/8 SYSTEM (AS DOCUMENTED IN THE OS/8 HANDBOOK SUCH A PROGRAM IS CALLED WHEN DATE ARGUMENT IS GIVEN TO THE CCL). THE BASIC PROGRAM IS FIRST COMPILED WITH THE /C/K SWITCHES AND THE PROGRAM IS THEN SAVED ON THE SYSTEM DEVICE. EACH TIME DATE WITHOUT ARGUMENT IS GIVEN TO CCL, THE DATE.SV PROGRAM WILL WRITE A TECO MACRO CALLED TODAY.TE. THIS MACRO CAN THEN BE USED WITH THE SYNTAX MUNG TODAY,FILENAME OR MUNG TODAY, X;FILENAME. AN EB WILL BE DONE ON THE FILE FILENAME AND AT THE SAME TIME TODAY'S DATE WILL BE INSERTED AS THE FIRST LINE OF THE FILE. IN THE DEFAULT CASE (THE FIRST SYNTAX GIVEN), THE FILE IS DEFAULTED TO A .FT FILE AND THE FIRST LINE IS INSERTED AS A FORTRAN COMMENT LINE WITH A 'C' AS ITS FIRST CHARACTER. THE FILE CAN BE ANY FILE, IF AN EXPLICIT EXTENSION IS GIVEN. THE COMMENT CHARACTER CAN BE ANY CHARACTER USING THE SECOND SYNTAX, I.E. IF A LETTER IS GIVEN IMMEDIATELY AFTER THE COMMA FOLLOWED BY ';', THIS LETTER IS INSERTED AS THE COMMENT CHARACTER. TO INSERT THE / (ASSEMBLER COMMENT CHARACTER), IT IS NECESSARY TO USE THE BACKSLASH AS THE SLASH IS INTERPRETED BY CCL AS A CCL OPTION CHARACTER. THE BACKSLASH IS, HOWEVER, CHANGED BY THE MACRO INTO THE ASSEMBLER COMMENT SLASH. THE MACRO ALSO SUPPORTS A MECHANISM TO FIND AND CHANGE THE DATE LINE EVEN IF IT SHOULD NOT BE THE FIRST LINE IN THE FILE. THE MACRO INSERTS ^N (CONTROL N) INTO THE HEADING LINE TO GIVE LARGE LETTERS ON AN LS8E EXCEPT IF THE COMMENT CHARACTER IS \ AS PAL8 LINES BECOME TOO LONG. LIST THE BASIC PROGRAM FOR FURTHER DETAILS. PAGE 5 THE DIRECTORY MACROS AND BATCH FILES. FROM MCINTYRE AT SMALL COMPUTER LAB, A VERY USEFUL SORT PROGRAM IS AVAILABLE. USING THIS SORT PROGRAM, IT IS POSSIBLE TO CREATE A RATHER HANDY SYSTEM OF DOCUMENTING AND MAINTAINING A COMPLETE COMPOSITE DIRECTORY OF THE WHOLE OF YOUR OS/8 MEDIA LIBRARY. THE DIRECTORY BATCH WHICH IS ON THE TAPE, IF STARTED WITH THE DIRECTORY BASIC PROGRAM ALSO ON DSK, WILL ASK YOU FOR A NAME OF THE DEVICE TO BE DIRECTORY LISTED AND THE DEVICE. THE DIRECTORY LISTING IS THEN PUT ON DSK. THESE DIRECTORY LISTINGS ARE MERGED USING EXPIP (DECUS 8-600) INTO ONE FILE WHICH THEN USING THE BATCH FILE DIRLIS.BI IS LISTED SORTED IN THREE WAYS, FIRSTLY BY DEVICE, SECONDLY BY FILENAME AND THIRDLY BY EXTENSION.