ASMB,R,L,C HED AUXILIARY COMMANDS FOR RTE-L MEMORY BASED SYSTEM * NAME: COMND * SOURCE: 92070-18076 * RELOC: 92070-16076 * PGMR: M.L.K. * **************************************************************** * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. 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,35 92070-16076 REV.1941 790713 SUP * * GLOBAL DATA * ENT .E.R,C.BUF,CAM.I,CAM.O,ECH,INT.,O.BUF ENT TMP. * * GLOBAL ENTRY POINTS * ENT MSS.,OPEN.,WRITF * * EXTERNAL ROUTINES * EXT .ENTR,EXEC,IFTTY,LOGLU,PARSE,RMPAR,REIO EXT PNAME,BL..,CN..,IO..,LA..,PL..,TM.. EXT TO..,IT..,ON..,SY.. SKP * * INITIALIZATION * COMND JSB RMPAR GET SCHEDULING STRING 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 * LDA CAM.I TEST THE RANGE (1-63) JSB PCHEK OF INPUT LU TRLOG LDA CAM.O ILLEGAL RETURN, USE CONSOLE LU STA CAM.I STORE VALUE OF INPUT JSB IFTTY IS INPUT INTERACTIVE? DEF *+2 DEF CAM.I STA INT. STORE IN INTERACTIVE FLAG LDB A SAVE FLAG IN B LDA CAM.I GET INPUT LU SZB IS IT INTERACTIVE? IOR B400 YES, SET ECHO FLAG STA CAM.I SAVE IN INPUT FLAG ADA B10K ADD IN DOUBLE BUFFER BIT STA CAMII AND SAVE FOR WRITE/READ CALL 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 * * COMMAND LOOP * * READ COMMANDS * CLOOP LDB INT. GET INTERACTIVE FLAG SZB,RSS IS INPUT INTERACTIVE? JMP REED NO, GO READ * JSB REIO YES, WRITE PROMPT AND READ INPUT DEF *+7 FROM INPUT DEVICE DEF .1 DEF CAMII DOUBLE BUFFER WRITE/READ DEF C.BUF INPUT BUFFER DEF .40 INPUT LENGTH DEF PRMPT OUTPUT BUFFER DEF .4 OUTPUT LENGTH JMP RDRTN GO PROCESS INPUT * REED JSB REIO READ FROM INPUT DEVICE DEF *+5 DEF .1 DEF CAM.I USE INPUT DEVICE DEF C.BUF TO COMMAND BUFFER DEF .40 UP TO 40 WORDS RDRTN STB ECH STORE TRANSMISSION LOG 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 * * PARSE THE COMMAND * PARS LDA INT. GET INTERACTIVE FLAG SZA IS INPUT INTERACTIVE? JMP PAR1 YES, SO GO PARSE * LDA C.BUF NO, GET FIRST WORD OF INPUT BUFFER AND B377 AND REMOVE THE PRECEEDING COLON IOR B20K STA C.BUF AND PLACE BACK INTO THE BUFFER * PAR1 LDA ECH GET WORD COUNT ADA ECH DOUBLE IT STA CCNT AND SAVE CHARACTER COUNT JSB PARSE USE SYSTEM'S PARSER DEF *+4 DEF C.BUF INPUT BUFFER DEF CCNT CHARACTER COUNT DEF MRSLT PARSED PARAMETER BUFFER CCA SUBTRACT ONE FROM THE ADA P.CNT PARAMETER COUNT SINCE NOT PASSING STA P.CNT THE COMMAND AS A PARAMETER * * CHANGE PARAMETER TYPE 2 TO 3 LDA N8 SET LOOP COUNTER STA CNT TO 8 LDA DMRLT GET PARSE RESULT BUFFER ADDRESS PARLP LDB A,I GET PARAMETER TYPE CPB .2 IS IT 2? INB YES, INCREMENT IT TO 3 STB A,I STORE BACK INTO BUFFER ADA .4 INCREMENT TO NEXT PARAMETER ISZ CNT INCREMENT THE COUNT JMP PARLP GO DO NEXT PARAMETER * LDB DMRLT GET ADDRESS OF THE FIRST PARAMETER INB POINT TO ACTUAL PARAMETER LDB B,I GET PARAMETER STB OPP STORE AS STOP WORD IN COMMAND TABLE * * GET COMMAND ADDRESS * LDA C.TAB GET COMMAND TABLE ADDRESS CMND? CPB A,I IF COMMAND SAME AS IN TABLE JMP CALL THEN GO SET UP COMMAND ADDRESS (CAD.) ADA .2 SKIP ADDRESS AND POINT TO NEXT COMMAND JMP CMND? CHECK NEXT ENTRY IN TABLE * CALL INA GET POINTER TO COMMAND ADDRESS LDA A,I THEN FETCH COMMAND ADDRESS STA CAD. AND STORE * * CALL ACTION ROUTINE * CLA CLEAR ERROR CODE STA ER TO PASS TO ACTION ROUTINE JSB CAD.,I CALL ACTION ROUTINE DEF CALR DEF P.CNT PARAMETER COUNT DEF P.RAM PARAMETER LIST DEF ER ERROR CODE * CALR LDA ER DID THE ROUTINE PASS BACK SZA AN ERROR? JMP ELOG GO REPORT ERROR LDA INT. GET INTERACTIVE FLAG SZA INPUT INTERACTIVE? JMP EX YES, GO TERMINATE JMP CLOOP NO, READ AGAIN SKP * * COMMAND TABLE * C.TAB DEF *+1 ASC 1,BL DEF BL.. ASC 1,CN DEF CN.. ASC 1,IO DEF IO.. ASC 1,LA DEF LA.. ASC 1,PL DEF PL.. ASC 1,TM DEF TM.. ASC 1,TO DEF TO.. ASC 1,IT DEF IT.. ASC 1,ON DEF ON.. ASC 1,EX DEF EX.. * OPP NOP END OF TABLE DEF SY.. * COMM NOP COMMENTS LDA COMM,I JMP A,I SKP * * ERROR SUBROUTINE * MSER NOP MSS. NOP JSB .ENTR SET UP PARAMETERS DEF MSER LDA MSER,I GET ERROR CODE * ELOG LDB BLNK SET DEFAULT TO POSITIVE SSA POSITIVE OR NEGATIVE? LDB BSIGN NEGATIVE, GET MINUS SIGN STB ESGN SAVE ASCII SIGN SSA NEGATIVE? CMA,INA YES SET POSITIVE CLB CLEAR B FOR DIVIDE DIV .10 DIVIDE BY 10. TWO DIGIT ERRORS ONLY ADB B60 MAKE REMAINDER ASCII ADA B60 MAKE QUOTIENT ASCII ALF,ALF POSITION QUOTIENT TO UPPER HALF IOR B PUT IN SECOND DIGIT STA ERCDE PUT INTO ERROR MESSAGE JSB EXEC WRITE IT OUT DEF *+5 DEF .2 WRITE DEF CAM.O LOG DEVICE DEF ERBUF ERROR MESSAGE DEF .4 LENGTH JMP TRLOG TRANSFER TO LOG DEVICE * ERBUF ASC 2,CMND ESGN NOP SIGN ERCDE NOP ERROR CODE IN ASCII * BLNK ASC 1, BSIGN ASC 1, - SKP * * DUMMY OPEN CALL * ODCB NOP OLU NOP * OPEN. NOP JSB .ENTR DEF ODCB * LDA OLU,I GET PASSED LU SZA,RSS IF ZERO, ITS LEGAL JMP OKOPN SO STORE AND EXIT JSB PCHEK IS IT LEGAL LU? JMP EROPN NO, REPORT ERROR OKOPN STA ODCB,I YES, PUT INTO DCB JMP OPEN.,I RETURN * EROPN LDA N18 ERROR CODE -18 JMP ELOG GO REPORT IT SPC 5 * * 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 SKP * * DUMMY WRITF ROUTINE * WDCB NOP WERR NOP WBUF NOP WLEN NOP WRITF NOP JSB .ENTR DEF WDCB * JSB EXEC DO WRITE DEF *+5 DEF .2 DEF WDCB,I LU IS IN DCB DEF WBUF,I DEF WLEN,I * CLA SET NO ERROR STA WERR,I INTO USER'S ERROR CODE JMP WRITF,I RETURN SKP * * EXIT ACTION ROUTINE * EX.. NOP EX JSB EXEC TERMINATE SAVING RESOURCES DEF *+4 DEF .6 DEF .0 DEF .1 JMP COMND SKP * * CONSTANTS * .0 DEC 0 .1 DEC 1 .2 DEC 2 .4 DEC 4 .6 DEC 6 .10 DEC 10 .40 DEC 40 N8 DEC -8 N18 DEC -18 N64 DEC -64 B60 OCT 60 B72 OCT 72 B200 OCT 200 B377 OCT 377 B400 OCT 400 B10K OCT 10000 B20K OCT 20000 * DMRLT DEF MRSLT * A EQU 0 B EQU 1 SPC 5 * * VARIBLES * CAM.I NOP INPUT DCB (MUST BE FIRST) TMP. NOP LIST LU CAM.O NOP LOG LU INT. NOP INTERACTIVE FLAG .E.R NOP GLOBAL ERROR FLAG * C.BUF BSS 40 INPUT STRING CAD. NOP COMMAND ADDRESS FORM C.TAB MRSLT BSS 4 \ ORDERED COMMAND PARAMETER P.RAM BSS 28 > PARAMETER LIST P.CNT NOP / PARAMETER COUNT ECH NOP INPUT WORD COUNT O.BUF NOP OUTPUT DCB CNT NOP LOOP COUNTER CCNT NOP CHARACTER COUNT ER NOP ERROR CODE FOR ACTION ROUTINES CAMII NOP COMMAND INPUT FOR WRITE/READ REQUEST PRMPT BSS 2 PROMPT BUFFER PRMP3 BSS 1 5TH & 6TH CHARACTERS OCT 20137 * LEN EQU * END COMND