ASMB,R,Q,C * * NAME: CN.. * SOURCE: 92071-18099 * RELOC: 92071-1X099 * 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 CN..,7 92071-1X099 REV.2041 800806 * * * * * ACTION SUBROUTINE TO EXECUTE THE "CN" OPERATOR COMMAND * THIS ROUTINE PERFORMS AN I/O CONTROL REQUEST * (EXEC,3,..) TO THE DESIGNATED DEVICE FOR ALL * FUNCTIONS EXCEPT "PR" AND "AB". ON "PR", THE * DEVICE PRIORITY IN DVT WORD 20 IS MODIFIED * DIRECTLY. ON "AB", IF THE DEVICE CURRENTLY HAS * A REQUEST AT THE HEAD OF ITS INITIATION LIST (DVT * WORD 2) THE ROUTINE "$ABRQ" IN "RTIOL" IS CALLED * DIRECTLY TO ABORT THE REQUEST. THIS WILL INITIATE * THE ABORT CALL AND RTIOL WILL IMMEDIATELY RETURN * TO "CN..". * * COMMAND SYNTAX: * CN,LU,FUNC(,OPTN1,OPTN2,OPTN3,OPTN4) * * ENT CN.. * EXT EXEC,$LIBR,$LIBX,$ABRQ EXT $LUT#,$LUTA,.XLA,.XSA,$SJS0 * * CN.. NOP JSB .XLA GET LUT ADDRESS DEF $LUTA STA LUTA SAVE LOCALLY FOR ADDS JSB .XLA GET NUMBER OF LUS DEF $LUT# STA LUT# SAVE LOCALLY FOR ADDS LDA CN.. ADA .2 2ND PARAMETER IS THE PARSE BUFFER ADDR LDB 0,I GET IT STB TMPAD INA LDA 0,I STA ERRTN SAVE ADDR OF ERROR PARAM LDA CN..,I STA CN.. SAVE RETURN ADDR * INB POINT TO LU PARAMETER LDA 1,I GET IT STA LU * VERIFY ENTERED LU SZA CMA,SSA,INA,RSS JMP ER56 ERROR IF LU <1 ADA LUT# MAX LU - ENTERED LU CMA,SSA,RSS ENTERED > MAX? JMP ER56 YES, PARAMETER ERROR ADA LUT# A NOW = LU-1 ADA LUTA JSB .XLA GET LUT CONTENTS FOR LU DEF 0,I SZA,RSS ASSIGNED? JMP CN..,I NO, EXIT STA OPTNS SAVE DVT ADDRESS ADB .3 POINT TO FUNC PARAMETER TYPE STB FUNCA LDB 1,I GET TYPE ISZ FUNCA POINT TO VALUE LDA FUNCA,I GET IT CPB .3 WAS IT ENTERED IN ASCII? JMP *+3 YES AND B77 USE ONLY 5-0 JMP CN.30 * LDB OPTNS GET DVT ADDRESS CPA ASCPR "PR"? JMP PRIOR YES, CHANGE DEVICE PRIORITY CPA ASCAB "AB"? JMP ABORT YES LDB CNVTA ADDR OF ASCII FUNCTIONS CN.10 LDA 1,I INB POINT TO OCTAL EQUIVALENT CPA FUNCA,I IS THIS THE ENTERED FUNCTION JMP CN.20 YES INB NO, POINT TO NEXT FUNCTION SZA END OF TABLE? JMP CN.10 NO JMP ER56 YES, INCORRECT FUNC CODE * CN.20 LDA 1,I GET FUNC CODE OCTAL EQUIVALENT * CN.30 LDB TMPAD ADB .9 ADDR OF 1ST OPT. PARAM STB OPTNS STORE IN EXEC CALL ADB .4 ADDR OF 2ND STB OPTNS+1 ADB .4 ADDR OF 3RD STB OPTNS+2 ADB .4 ADDR OF 4TH STB OPTNS+3 CPA .9 FORM CONTROL? JMP FORMS YES * CN.40 LSL 6 FUNC CODE INTO BITS 11-6 IOR LU INCLUDE ENTERED LU STA LU STORE FOR EXEC CALL * JSB EXEC ISSUE THE CONTROL REQUEST! DEF *+7 DEF K3N NO ABORT DEF LU OPTNS BSS 4 MODIFIED ABOVE JMP ER56 GIVE ERROR IF ABORT RETURN JMP CN..,I RETURN SPC 3 * DOING FORMS CONTROL, IF DEFAULTED PARAMETER, USE -2 FORMS ADB N13 LDB 1,I GET TYPE OF 1ST OPT PRAM LDA N2 SZB,RSS DEFAULTED? STA OPTNS,I YES, DO A TOP-OF-FORM LDA .9 GET FORM CTL VALUE AGAIN JMP CN.40 SET LU & DO IT SPC 3 * CHANGE DEVICE IFT QUEUEING PRIORITY PRIOR ADB .19 STB TMPAD POINT TO DVT20 LDB FUNCA ADB .4 LDA 1,I GET NEW PRIORITY AND B77 CPA 1,I PRIO > 63? RSS NO JMP ER56 ERROR, TOO LARGE JSB $LIBR GO PRIVILEDGED NOP JSB .XLA DEF TMPAD,I AND B1777 IOR 1,I SET NEW PRIO IN DVT WD 20 JSB .XSA MODIFY DVT TABLE DEF TMPAD,I JMP PVEX SPC 3 * ABORT REQUEST AT HEAD OF DVT FOR LU ABORT ISZ OPTNS POINT TO DVT2 * JSB $LIBR LOWER FENCE NOP JSB .XLA GET ADDR OF HEAD DEF OPTNS,I ELA,CLE,ERA CLEAR "Q" BIT CPA .0 ANYTHING QUEUED? JMP PVEX NO, SO EXIT JSB $SJS0 YES, ABORT REQUEST, B HAS DVT ADDR DEF $ABRQ PVEX JSB $LIBX RAISE FENCE & EXIT DEF CN.. * * ER56 LDA .56 56 = BAD PARAMETER STA ERRTN,I RETURN ERROR VALUE JMP CN..,I AND RETURN * * * DATA AREA * LUTA NOP LUT# NOP TMPAD NOP ERRTN NOP LU NOP FUNCA NOP * .0 DEC 0 .19 DEC 19 .56 DEC 56 B77 OCT 77 B1777 OCT 177700 K3N OCT 100003 N2 DEC -2 N13 DEC -13 ASCPR ASC 1,PR ASCAB ASC 1,AB * CNVTA DEF *+1 ASC 1,AD NEW DEVICE ADDRESS OCT 24 ASC 1,BF BACK SPACE FILE OCT 14 ASC 1,BR BACKSPACE RECORD .2 OCT 2 ASC 1,DP SET DRIVER PARAMETERS OCT 24 ASC 1,EO WRITE END-OF-FILE OCT 1 ASC 1,FF FORWARD SPACE FILE OCT 13 ASC 1,FR FORWARD SPACE RECORD .3 OCT 3 ASC 1,LE PAPER TAPE LEADER OCT 10 ASC 1,RW REWIND MAGNETIC TAPE .4 OCT 4 ASC 1,TO TOP-OF-FORM .9 OCT 11 DEC 0 END OF TABLE * END