ASMB,R,Q,C * * NAME: IT.. * SOURCE: 92071-18101 * RELOC: 92071-1X101 * PGMR: C.H.W.,DJN * * **************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * **************************************************************** * * NAM IT..,7 92071-1X101 REV.2041 800707 * * * * ACTION SUBROUTINE TO EXECUTE THE "IT" OPERATOR COMMAND * * COMMAND SYNTAX: * IT,NAME(,RES,MULT,HR,MIN,SEC,MSEC) OR * IT,NAME(,RES,MULT,-OFFSET) * RESPONSE IS: * (NAME): R=(RES) M =(MULT) HR:MIN:SEC:MSEC * * ENT IT.. * EXT EXEC,$LIBR,$LIBX,$NAMX,CAM.O EXT CNOPT,$SJS1,.XLA * * IT.. NOP LDA IT.. INA LDB 0,I STB NUMBA SAVE ADDR OF # PRAMS INA 2ND PARAMETER IS THE PARSE BUFFER ADDR LDB 0,I GET IT INB POINT TO PARAMETERS STB TMPAD INA LDA 0,I STA ERRTN SAVE ADDR OF ERROR PARAM LDA IT..,I STA IT.. SAVE RETURN ADDR * LDA NUMBA,I GET # OF PARAMS CPA .1 "IT,NAME" ENTERED? JMP IT.50 YES, DISPLAY ONLY CMA STA CNTR - # OF PARAMS LDA DEFXX STA CALL+1 STORE DEF*N+1 IN EXEC CALL ADB .4 LDA 1,I GET PASSED "RES" CPA RESAS "OF"? CLA YES CPA RESAS+1 "MS"? CLA,INA YES CPA RESAS+2 "SC"? LDA .2 YES CPA RESAS+3 "MN"? LDA .3 YES CPA RESAS+4 "HR"? LDA .4 YES STA 1,I NUMERIC RES VALUE * IT.05 LDB TMPAD ADDR OF PARSED PARAMS LDA N8 STA TOTCT MAX PARAMS ALLOWED * IT.10 ISZ CNTR MORE PARAMS ENTERED JMP STORA YES, GO STORE NEXT ADDRESS * DLD ENDI CCE,RSS & CLE DST CALL+1,I STORE ABORT RETURN CODE CHK LDB CALL+1 INB CLA,RSS STA 1,I CLEAR UNUSED AREA INB ISZ TOTCT JMP *-3 * CALL JSB EXEC CALL EXEC(12,----) DEF * MODIFIED ABOVE DEF K12N NO ABORT BSS 9 SEZ ABORTIVE ERROR? JMP ERRXX YES SKP * * FORMAT & DISPLAY THE "IT" INFORMATION * IT.50 LDB TMPAD ADB .2 ADDR OF PGM NAME (3RD WD) LDA 1,I GET 5TH CHARACTER AND B1774 CLEAR RHW IOR B40 RHW=BLANK STA M.NAM+2 STORE IN MSG DLD * GET NAME CHARS 1-4 TMPAD EQU *-1 CPA .0 CALLING PROGRAM'S NAME? JMP RTN YES, DON'T PRINT ANYTHING DST M.NAM STORE IN MSG JSB $LIBR GO PRIVILEGED NOP JSB $SJS1 GET ITS ID SEG ADDR DEF $NAMX DEF M.NAM SZB,RSS WAS IT FOUND? JMP ER14 NO, NAME ERROR ADB .17 POINT TO RES/MULT IN ID SEGMENT +17 JSB .XLA GET RES DEF 1,I STA REMU SAVE LOCALLY TO IMPROVE SPEED INB GET LOW ORDER EXECUTION TIME JSB .XLA FROM THE ID DEF 1,I STA LOEX SAVE FOR LATER INB GET HIGH ORDER EXECUTION TIME JSB .XLA DEF 1,I STA HIEX SAVE FOR LATER JSB $LIBX HAVE A STATIC PICTURE NOW, SO DEF *+1 WE CAN GO NON PRIVILEDGED DEF *+1 LDA REMU RESOLUTION WORD ALF,RAR RIGHT JUSTIFY IT AND .7 ISOLATE IT ADA ASRES ADDR INTO ASCII CONV.TABLE LDA 0,I GET MS,SC,MN, OR HR STA M.RES STORE IN MSG LDA REMU GET MULT AND B7777 ISOLATE IT CLB DIV .100 SEPARATE HIGH TWO DIGITS SZA,RSS ARE HIGH 2 DIGITS ZERO? JMP IT.70 YES STB M.MUL+1 SAVE LOW JSB DECIM CONVERT HIGH TO ASCII STA M.MUL STORE IN MSG LDA M.MUL+1 GET LOW JSB DECIM CONVERT TO ASCII IOR .01B ENSURE NUMERIC JMP IT.75 * IT.70 LDA BLANK STA M.MUL BLANK-OUT HIGH 2 DIGITS LDA 1 GET LOW DIGITS JSB DECIM CONVERT TO ASCII IT.75 STA M.MUL+1 STORE LOW ORDER DIGITS IN MSG LDA LOEX GET LOW ORDER EXECUTION TIME LDB HIEX GET HIGH ORDER EXECUTION TIME ADA PRS1 ADD POSITIVE 24 HRS. SEZ TO GET A POSITIVE INB TIME ADB PRS2 DIV .6000 DIVIDE BY 6000 STA VALX SAVE MIN/HR ASR 16 POSITION B (SEC/10MS) FOR DIVIDE DIV .100 DIVIDE BY 100 TO GET SEC/10MS STB M.MSC SAVE 10'S OF MSECS JSB DECIM CONVERT SECONDS TO ASCII STA M.SEC & STORE IN MSG LDA M.MSC JSB DECIM CONVERT 10'S OF MSECS TO ASCII LDB ASC0C "0:" RRR 8 FORM ":MM0" DST M.MSC STORE MILLISECS IN ASCII CLB SET UP FOR DIVIDE LDA VALX FETCH MIN/HR DIV .60 SEPERATE STB M.MIN SAVE MINUTES CPA .24 HOUR ROLL-OVER CLA JSB DECIM CONVERT HOURS TO ASCII STA M.HR & SAVE IN MESSAGE LDA M.MIN GET MINUTES JSB DECIM CONVERT TO ASCII LDB ASCCL GET "::" RRR 8 FORMAT ":XX:" DST M.MIN STORE INTO MSG * JSB CNOPT WRITE RESPONSE LINE DEF *+5 DEF .2 DEF CAM.O DEF MSGBF DEF MSGLN RTN JMP IT..,I RETURN * * * DECIM NOP CLB DIV .10 SZA,RSS LDA B20 SUPPRESS LEADING ZERO ALF,CLE,ALF IOR 1 MERGE 2 DIGITS XOR ASC00 FORM ASCII NUMERICS JMP DECIM,I * STORA STB CALL+1,I STORE PRAM ADDR IN CALL ADB .4 POINT TO NEXT PARAMETER ISZ CALL+1 BUMP THE DEF *+N+1 ISZ TOTCT TOO MANY PARAMS? JMP IT.10 NO, CONTINUE * ERRXX CPB ASC02 ILLEGAL PARAMETER? (SC02) JMP ER56 YES JMP ILNAM OTHERWISE RETURN ILLEGAL NAME * ER14 JSB $LIBX WAS PRIVILEDGED WHEN JUMPED HERE DEF *+1 DEF *+1 ILNAM LDA .14 RETURN ILLEGAL NAME JMP RTNER EXIT TO ERROR RETURN * ER56 LDA .56 PARAMETER ERROR RTNER STA ERRTN,I RETURN TO CALLER JMP IT..,I EXIT ACTION ROUTINE * * * DATA AREA * NUMBA NOP ERRTN NOP VALX NOP TOTCT NOP CNTR NOP HIEX NOP LOEX NOP REMU NOP * .0 DEC 0 .1 DEC 1 .2 DEC 2 .3 DEC 3 .4 DEC 4 .7 DEC 7 .10 DEC 10 .14 DEC 14 .17 DEC 17 .24 DEC 24 .56 DEC 56 .60 DEC 60 .100 DEC 100 .6000 DEC 6000 B20 OCT 20 B40 OCT 40 .01B OCT 010000 PRS1 OCT 153000 PRS2 OCT 203 B7777 OCT 7777 B1774 OCT 177400 K12N OCT 100014 N8 DEC -8 ASC00 ASC 1,00 ASC0C ASC 1,0: ASC02 ASC 1,02 ASCCL ASC 1,:: * DEFXX DEF CALL+3 ASRES DEF RESAS RESAS ASC 5,OFMSSCMNHR ENDI CCE,RSS CLE MUST FOLLOW ERRI * MSGBF EQU * M.NAM BSS 3 ASC 2, R= M.RES NOP BLANK ASC 2, M= M.MUL DEC 0,0 ASC 1, M.HR NOP M.MIN DEC 0,0 M.SEC NOP M.MSC DEC 0,0 MSGLN ABS *-MSGBF * * END