ASMB,R,L,C HED AUXILIARY COMMANDS FOR RTE-L MEMORY BASED SYSTEM * NAME: COMND * SOURCE: 91750-18049 * RELOC: 91750-16049 * PGMR: JERRY BELDEN * **************************************************************** * (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 COMND,1,90 91750-16049 REV.2013 791003 L SUP * * THIS IS THE DS VERSION OF COMND. IT DOES NOT HAVE THE * ACTION ROUTINES APPENDED TO IT, BUT RATHER PASSES * THE COMMAND STRING TO OPERM. * * * GLOBAL DATA * * * GLOBAL ENTRY POINTS * * * EXTERNAL ROUTINES * EXT EXEC,LOGLU,RMPAR,REIO,CLRQ EXT PNAME,PARSE EXT #ST07,.MVW SKP * GLBLK-START * ****************************************************************** * * * G L O B A L B L O C K REV XXXX 790531 * * * * GLOBAL OFFSETS INTO DS/1000 MESSAGE BUFFERS, USED BY: * * * * REMAT, RFMST, DEXEC, DMESS, FLOAD, POPEN, #MAST * * GET, #SLAV, RQCNV, RPCNV, GRPM, LSTEN, PTOPM * * EXECM, EXECW, OPERM, RFAM1, RFAM2, DLIST, DLIS3 * * * ****************************************************************** * ***!!!!! THE FIRST 7 WORDS (#STR THRU #ENO) MUST BE FIXED !!!!!*** #STR EQU 0 STREAM WORD. #SEQ EQU #STR+1 SEQUENCE NUMBER. #SRC EQU #SEQ+1 SOURCE NODE #. #DST EQU #SRC+1 DEST. NODE #. #EC1 EQU #DST+1 REPLY ECOD1. #EC2 EQU #EC1+1 REPLY ECOD2. #ENO EQU #EC2+1 NUMBER OF NODE REPORTING ERROR. * #ECQ EQU #ENO+1 ERROR CODE QUALIFIER (BITS 4 TO 7) #LVL EQU #ECQ MESSAGE FORMAT LEVEL (BITS 0 TO 3) #MAS EQU #LVL+1 MA "SEND" SEQ. # #MAR EQU #MAS+1 MA "RECV" SEQ. # #MAC EQU #MAR+1 MA "CANCEL" FLAGS #HCT EQU #MAC+1 HOP COUNT #SID EQU #HCT+1 SESSION ID WORD * #EHD EQU #SID LAST ITEM OF HEADER #MHD EQU #EHD+1 MINIMUM HEADER SIZE #REQ EQU #MHD START OF REQUEST SPECIFIC AREA #REP EQU #MHD START OF REPLY SPECIFIC AREA * #MXR EQU #MHD+24 <<< MAXIMUM DS REQ/REPLY BUFFER SIZE >>> #LSZ EQU 2 <<< SIZE OF LOCAL APPENDAGE AREA >>> * ****************************************************************** * * GLBLK-END SKP * OPBLK-START * ****************************************************************** * * * O P R E Q B L O C K REV XXXX 790531 * * * * OFFSETS INTO DS/1000 OPREQ MESSAGE BUFFERS, USED BY: * * * * DMESS, OPERM, RQCNV, RPCNV * * * ****************************************************************** * * OFFSETS INTO OPREQ REQUEST AND REPLY BUFFERS. * #CML EQU #REQ COMMAND LENGTH. #CMS EQU #CML+1 COMMAND STRING. #LGC EQU #CMS+1 LOGON REQUEST CODE #LNL EQU #LGC+1 LENGTH OF USER NAME #LUN EQU #LNL+1 LOGON USER NAME * #RLN EQU #REP REPLY LENGTH. #MSG EQU #RLN+1 REPLY MESSAGE. * * MAXIMUM SIZE OF OPREQ REQUEST/REPLY BUFFER. * #OLW EQU #CMS+20 M A X I M U M S I Z E ! ! ! * * OPBLK-END SKP * * INITIALIZATION * COMND JSB RMPAR GET SCHEDULING PARAMETERS DEF *+2 DEF CAM.I STORE STARTING AT CAM.I * JSB LOGLU GET CONSOLE LU DEF *+2 DEF CAM.O (ACTUALLY A DUMMY PARAMETER) STA CAM.O SET UP LOG LU * LDA TMP. TEST THE RANGE (1-63) JSB PCHEK OF THE LIST LU LDA CAM.O ILLEGAL RETURN, USE CONSOLE LU STA TMP. STORE VALUE OF LIST * * THIS VERSION OF COMND ALLOWS ONLY INTERACTIVE INPUT * TRLOG LDA CAM.O USE CONSOLE LU IOR B104H ECHO FLAG STA CAM.I SAVE IN INPUT FLAG JSB PNAME CALL FOR THE PROGRAM'S NAME DEF *+2 DEF PRMPT FOR USE AS THE PROMPT LDA PRMP3 GET 3RD CHARACTER IOR B72 PUT COLON IN PLACE STA PRMP3 SAVE SKP * * READ COMMAND * JSB REIO YES, WRITE PROMPT AND READ INPUT DEF *+7 FROM INPUT DEVICE DEF .1 DEF CAM.I DOUBLE BUFFER WRITE/READ DEF RQB+#CMS INPUT BUFFER DEF MXLEN INPUT LENGTH DEF PRMPT OUTPUT BUFFER DEF .4 OUTPUT LENGTH * STB ECH STORE TRANSMISSION LOG BLS STB RQB+#CML CHAR. COUNT SZB,RSS NOTHING ENTERED JMP EX NOTHING, EXIT AND B200 CHECK FOR EOF SZA,RSS EOF? JMP PARS NO, GO PARSE THE COMMAND JMP TRLOG EOF, TRANSFER TO LOG DEVICE SKP * * PARSE STRING & TEST FOR APLDR COMMANDS * PARS JSB PARSE USE SYSTEM'S PARSER DEF *+4 DEF RQB+#CMS INPUT BUFFER DEF RQB+#CML CHAR COUNT DEF MRSLT PARSED PARAMETER BUFFER * LDB DMRLT PARSE BUFFER ADDRESS LDA B,I PARAMETER TYPE CPA .2 ASCII ? JMP PAR1 YES, OK PARER LDA IN NO, INPUT ERROR LDB PT JMP RPERR PAR1 INB PICK UP COMMNAND NMEMONIC LDB B,I * CLA INITIALIZE STA PRAM3 LDA TMP. SET UP LIST LU CPB LO"" IF LO, USE CONSOLE LU LDA CAM.O AND B377 ALF STA PRAM1 CLA PRESET FUNCTION * CPB PL"" JMP APLF2 SET UP FOR APLDR PL CPB IO"" JMP APLFX APLDR IO CPB LO"" JMP APLF1 APLDR LO * * CHECK FOR 'SS' COMMAND W/O PARAM. THIS WILL CAUSE * COMND TO SUSPEND ITSELF. * CPB SS"" RSS JMP OPCOM NOT 'SS' LDB DMRLT PARSE BUFFER ADDRESS ADB .4 POINT TO NXT PARAM TYPE LDB B,I SZB ANYTHING THERE ? JMP OPCOM YES, STD REQUEST * JSB EXEC NO, SUSPEND SELF DEF *+2 DEF .7 JMP EX JUST RESTARTED, EXIT FOR NOW SKP * * FIX UP THE REQUEST TO OPERM * OPCOM CCA SET DESTINATION TO LOCAL STA RQB+#DST LDA ECH CALCULATE CLASS READ/WRITE REQUEST LEN. ADA HDLEN STA ECH LDA CAM.O SAVE LOCAL LU STA RQB+#EHD IN LAST WORD OF HEADER * * CODE FOLLOWS TO WRITE REQUEST TO OPERM'S CLASS, DETERMINE * WHETHER OPERM IS DORMANT OR NOT AND HANDLE APPROPRIATELY * LDA #ST07+1 OPERM'S CLASS STA CLAS1 SAVE IT IOR SIGN SET NO-WAIT BIT AND SPECL MASK OUT BITS 13 & 14 STA CLASS SAVE IN REQUEST JSB EXEC DO CLASS READ/WRITE DEF *+8 DEF CLWRT DEF B10K Z-BIT SET DEF RQB ADDR OF START OF MESSAGE DEF .0 NO DATA DEF RQB REQUEST BUFFER DEF ECH REQUEST LENGTH DEF CLASS JMP RPERR ERROR SSA JMP RPER1 NO SAM OR CLASS # * LDA CLAS1 CHECK OPERM AGAIN SZA INITIALIZED ? JMP CALR YES, DONE JSB CLRQ ASSIGN OWNERSHIP DEF *+3 OF CLASS TO US DEF .1 IN CASE WE DEF CLASS GET STOMPED ON JSB EXEC SCHEDULE OPERM WITH WAIT DEF *+4 DEF SCHD DEF OPERM DEF CLASS SCHED PRAM 1 JMP RPERR SCHEDULE ERROR SZA JMP RPER1 OPERM NOT DORMANT CALR JMP EX YES, GO TERMINATE SKP * * ENTER BELOW FOR APLDR COMMANDS * APLFX ADA .4 IO COMMAND = 5 APLF1 INA LO = 1 APLF2 STA PRAM5 PL = 0, SAVE FUNCTION TEMPORARILY IOR PRAM1 SET UP 1ST PARAMETER STA PRAM1 LDA PRAM5 WHICH COMMAND ? CPA .5 JMP APL10 DONE WITH IO COMMAND LDB DMRLT PARSE BUFFER ADDR. ADB .4 POINT TO NEXT PARAM. TYPE SZA JMP APLF5 GO DO 'LO' COMMAND LDA B,I MUST BE PL, GET PRAM TYPE SZA,RSS ANY 2ND PRAM ? JMP APL10 NO, DONE ! CPA .2 ALPHA RSS JMP PARER NO, ERROR ! INB YES LDA B,I STORE IN OPTION PARAM. STA PRAM3 JMP APL10 SKP * * 'LO' PARAMETER SETUP * APLF5 LDA B,I LOOK AT PARAM TYPE * * LOADING FROM A LU NOT ALLOWED ON THE L. MUST BE A * REMOTE DISK FILE * CPA .2 ASCII ? RSS JMP PARER NO, MUST BE LU (NOT ALLOWED) INB MOVE FILENAME TO LDA B SCHEDULE PARAMETERS LDB APRM3 JSB .MVW DEF .3 NOP LDB A A(3RD PRAM TYPE), PARSE BUF INB POINT TO SECURITY CODE LDA B,I STA PRAM2 ADB .4 POINT TO CRN LDA B,I PREPARE TO PLACE EXCESS STA ACRN# PARAMS IN RES ADB .3 NODE # PRAM TYPE LDA B,I CPA .1 SHOULD BE NUMERIC RSS JMP PARER INB LDA B,I PICK UP NODE # STA ACRN#+1 SAVE FILE NODE * SKP * * SCHEDULE APLDR * APL10 JSB EXEC SCHEDULE APLDR W/WAIT DEF *+10 DEF SCHD (NO ABORT BIT SET) DEF APLDR DEF PRAM1 DEF PRAM2 DEF PRAM3 DEF PRAM4 DEF PRAM5 DEF ACRN# STRING BUFFER DEF .2 STRING LENGTH JMP IDER APLDR MISSING SZA JMP BSYER APLDR BUSY JMP EX NO PROBLEM SKP * * EXITS * * ERRORS * * LACK OF SAM, CLASS #S OR OPERM NOT DORMANT * RPER1 LDA EXX LDB EC JMP RPERR * * SCHEDULE ERRORS * IDER LDB ID APLDR MISSING JMP BSY1 * BSYER LDB BS APLDR BUSY BSY1 LDA AP JMP RPERR * * ERROR REPORTING * RPERR STA MSG STB NUM INSERT ERROR CODE LDA CAM.O OUTPUT LU IOR B40K FORCE NON-BUFFERED I/O STA CAM.O JSB EXEC WRITE TO LOCAL DEVICE DEF *+5 DEF .2 DEF CAM.O DEF ERBUF DEF .4 * * EXIT PROGRAM * EX LDA CLAS1 DID WE HAVE TO SZA ALLOCATE A CLASS? JMP EXIT NO ISZ CLAS1 YES, SHOW THAT WE HAVE GIVEN IT BACK JSB CLRQ AND DEF *+3 DO DEF .2 SO DEF CLASS EXIT JSB EXEC TERMINATE SAVING RESOURCES DEF *+4 DEF .6 DEF .0 DEF .1 JMP COMND * * DATA FOR ERROR EXITS * ERBUF ASC 2,CMD MSG NOP NUM NOP EXX ASC 1,EX EC ASC 1,EC IN ASC 1,IN PT ASC 1,PT AP ASC 1,AP ID ASC 1,ID BS ASC 1,BS SKP * * PCHEK - INPUT PARAMETER CHECK OF RANGE * PCHEK NOP LDB A SAVE A SSA IS IT GREATER THAN 0 ? JMP PEXIT NO, ERROR SZA,RSS IS LU ZERO? JMP PEXIT YES, ERROR ADB N64 IS IT GREATER THAN 64 ? SSB ISZ PCHEK NO IT IS OK SO RETURN P+2 PEXIT JMP PCHEK,I * * CONSTANTS * .0 DEC 0 .1 DEC 1 .2 DEC 2 .3 DEC 3 .4 DEC 4 .5 DEC 5 .6 DEC 6 .7 DEC 7 N64 DEC -64 B72 OCT 72 B200 OCT 200 B377 OCT 377 B10K OCT 10000 B104H OCT 10400 B40K OCT 40000 A EQU 0 B EQU 1 * DMRLT DEF MRSLT APRM3 DEF PRAM3 SKP * * VARIBLES * CAM.I NOP INPUT DEVICE LU (MUST BE 1ST) TMP. NOP LIST LU CAM.O NOP OUTPUT DEVICE LU ECH NOP INPUT WORD COUNT PRMPT BSS 2 PROMPT BUFFER PRMP3 BSS 1 5TH & 6TH CHARACTERS OCT 20137 , PRAM1 NOP 1ST APLDR SCHED PRAM PRAM2 NOP 2ND " PRAM3 NOP 3RD " PRAM4 NOP 4TH " PRAM5 NOP 5TH " OCT 20137 * * PARSE BUFFER * MRSLT BSS 4 \ ORDERED COMMAND PARAMETER BSS 28 > PARAMETER LIST NOP / PARAMETER COUNT * * REQUEST BUFFER * RQB DEC 7 STREAM # BSS #OLW SKP * * DATA ADDED FOR DS * SIGN OCT 100000 SIGN BIT SPECL OCT 117777 MASK FOR CLASS ALLOCATE ACRN# BSS 2 CRN & FILE NODE FOR LOAD CLASS NOP OPERM'S CLASS # CLAS1 OCT 1 ZERO IFF COMND ALLOCATED A CLASS CLWRT OCT 100024 CLASS WRITE ICODE SCHD OCT 100011 SCHEDULE W/WAIT ICODE PL"" ASC 1,PL IO"" ASC 1,IO LO"" ASC 1,LO SS"" ASC 1,SS APLDR ASC 3,APLDR OPERM ASC 3,OPERM MXLEN ABS #OLW-#CMS * * HEADER LENGTH + APPENDAGE WORDS + 1 * HDLEN DEF #MHD+#LSZ+1 END COMND