File: MULTI8.RA of Tape: Sources/Fortran/os8-f4-3
(Source file text)
/GENERAL MULTI8 BACKGROUND FUNCTIONS / / / VERSION 40A 29-MAY-80 WVDM / / /THE FOLLOWING IS A SET OF 8 MODE (RALF TYPE) /ROUTINES THAT ENABLE MULTI8 BACKGROUND FUNCTIONS /THESE ROUTINES ARE CALLABLE AT THE FORTRAN LEVEL / / CALL MULTI8(OPTION,VALUE1,VALUE2) / /THE FOLLOWING OPTIONS ARE SUPPORTED: / / 0 READ TIME OF DAY (HOURS,MINUTES) / 1 MACHINE (BACKGROUND, TERMINAL) / 2 DISABLE KEYBOARD ECHO (NO VALUES) / 3 ENABLE KEYBOARD ECHO (NO VALUES) / 4 NOT IMPLEMENTED / 5 NOT IMPLEMENTED / 6 SLEEP (NUMBER OF SECONDS,...) / 7 MULTI8 LOGICAL (LOGICAL,...) / 8 CPU TIME (VALUE [.1SECS],...) / 9 NOT IMPLEMENTED / 10 MULTI8 VERSION (VERSION CHAR,EDIT #) / 11 RELEASE !ALL! DEVICES (NO VALUES) / SECT8 MULTI8 BSW=7002 MQA=7501 / BASE 0 STARTD SETX XR0 FLDA% 0,1 /GET PTR TO FUNCTION ARG FSTA 3 STARTF FLDA% 3 /USER ARG TO FAC JLT ERROR /NEGATIVE FUNCTION ? ATX 0 /INTEGER AND PASS TO 8 CODE XTA 0 /FP INTERPRETER FSUB MXFUN /TOO BIG ? JGT ERROR /YES, FATAL STARTD FLDA% 0,2 /GET FIRST EXTRA ARG FSTA 3 /LEAVE 3 POINTING AT ARG FOR END STARTF FLDA% 3 /FIRST EXTRA ARG TO XR4 ATX 4 XTA 0 /GET BACK FUNCTION ALN 7 /*2 STARTD FADD JATAB /ADD BASE OF DISPATCH TABLE FSTA DISPA STARTF DISPA, JA . M8TBL, JA TIME /0: JATAB, JA M8TBL /1: BG&TERM SAME FORMAT AS TIME JA NOECH /2: JA NOECH /3: ECHOON SAME FORMAT AS NOECHO JA ERROR /4: JA ERROR /5: JA TIME /6: SLEEP SAME AS TIME JA M8TES /7: JA MACCR /8: JA ERROR /9: JA TIME /10:VERSION SAME FORMAT AS TIME JA NOECH /11:RELEASE SAME AS NOECH MXFUN, F 11.0 EXTERN #ARGER ERROR, TRAP4 #ARGER / NOECH, TRAP4 GIOT JA GOBAK /NO ARGS / M8TES, TRAP4 M8T8 JA CONT / MACCR, TRAP4 GIOT /MQ IS IN LOW-ORDER XR6 XTA 0 ATX 5 /AC TO HIGH-ORDER XR5 LDX 27,4 /27 TO EXP XR4 FLDA XR4 /NOW GET FP NUMBER FNORM JA CONT2 /GIVE BACK VALUE / TIME, TRAP4 GIOT / ... CONT, XTA 4 /ANSWER IS IN XR4,XR5 CONT2, FSTA% 3 /GIVE ANS TO CALLER (3 STILL SET!) STARTD FLDA% 0,3 /THIRD ARGUMENT FSTA 3 STARTF XTA 5 FSTA% 3 /GIVE BACK THIRD ARG OR RUBBISH GOBAK, FLDA 30 /RTN TO CALLER JAC M8T8, 0 CLA IAC 6254 /SKIP ON MULTI8 CLA DCA XR4 /SET LEFT BYTE DCA XR5 /CLEAR RIGHT BYTE CIF CDF 0 JMP% M8T8 / GIOT, 0 TAD XR4 /GET ARG TO GIOT DCA GARG TAD XR0 6770 JMP .+2 GARG, HLT DCA XR0 /NOW XR0 = GIOT AC TAD XR0 AND M77 DCA XR5 /RIGHT BYTE TAD XR0 BSW AND M77 DCA XR4 /LEFT BYTE MQA DCA XR6 /MQ CONTENTS CIF CDF 0 JMP% GIOT M77, 77 / XR0, 0 /GETS FUNCTION ON INPUT, GIOT AC ON OUTPUT XR1, 1 /FOR ARG1 XR2, 2 /FOR ARG2 XR3, 3 /FOR ARG3 XR4, 0 /GETS LEFT BYTE ALSO: FP EXP XR5, 0 /GETS RIGHT BYTE FP HI XR6, 0 /GETS GIOT MQ FP LO XR7, 26 /FOR MULTIPLYING INTEGER END