ASMB,R,Q,C,N IFN * START RTE CODE HED REMAT 91750-16159 REV 2013 * (C) HEWLETT-PACKARD CO. 1980 NAM REMAT,19,80 91750-16159 REV.2013 800923 XIF * END RTE CODE * IFZ * START RTE-M CODE HED REMAT 91750-16160 REV 2013 * (C) HEWLETT-PACKARD CO. 1980 NAM REMAT,19,80 91750-16160 REV.2013 800923 XIF * END RTE-M CODE SPC 1 ****************************************************************** * * (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. * ****************************************************************** SPC 2 ************************************************ * * NAME: REMAT * SOURCE: 91750-18159 UNL IFN * START RTE CODE LST * RELOC: 91750-16159 UNL XIF * END RTE CODE LST UNL IFZ * START RTE-M CODE LST * RELOC: 91750-16160 UNL XIF * END RTE-M CODE LST * PGMR: JIM HARTSELL, ET AL * ************************************************** * * OPERATOR INTERFACE PROGRAM FOR DS/1000. * * RTE PROGRAM TO PROVIDE VARIOUS OPERATOR ACCESS AND CONTROL * FUNCTIONS BOTH LOCALLY AND AT REMOTE NODES. * * CPU'S ARE ADDRESSED BY USING THE SW(ITCH) COMMAND TO SPECIFY * VALUES FOR NODE1 AND NODE2 TO BE USED IN SUBSEQUENT * OPERATOR COMMANDS. * **************************************************************** UNL IFN * START RTE CODE LST **************************************************************** * * REMAT IS TURNED ON WITH THE FOLLOWING OPERATOR COMMAND: * * *ON,REMAT [,NAMR [,LOGLU [,LISTLU [,SEVERITY CODE]]]] * * WHERE: * * NAMR = LU OF SYSTEM INPUT DEVICE (DEFAULT = 1), OR * A FILE NAMR WHICH PROVIDES ALL INPUT COMMANDS. * * LOGLU = LU OF INTERACTIVE ERROR LOGGING DEVICE. (DEFAULT = * INPUTLU IF INPUTLU IS A CRT OR TTY, ELSE = 1) * * LISTLU = LU OF LIST DEVICE. (DEFAULT = LOGLU) * * SEVERITY CODE = ERROR REPORTING CODE. (DEFAULT = 0) * 0 = ECHO ALL COMMANDS * 1 = INHIBIT COMMAND ECHO * **************************************************************** UNL XIF * END RTE CODE UNL IFZ * START RTE-M CODE LST **************************************************************** * * REMAT IS TURNED ON WITH THE FOLLOWING OPERATOR COMMAND: * * *ON,REMAT [,INPUTLU [,LOGLU [,LISTLU [,SEVERITY CODE]]]] * OR * *ON,REMAT,FI,LE,NM [,LISTLU [,SEVERITY CODE]] * * WHERE: * * INPUTLU = LU OF SYSTEM INPUT DEVICE. (DEFAULT = 1) * * LOGLU = LU OF INTERACTIVE ERROR LOGGING DEVICE. (DEFAULT = * INPUTLU IF INPUTLU IS A CRT OR TTY, ELSE = 1) * * LISTLU = LU OF LIST DEVICE. (DEFAULT = LOGLU) * * SEVERITY CODE = ERROR REPORTING CODE. (DEFAULT = 0) * 0 = ECHO ALL COMMANDS * 1 = INHIBIT COMMAND ECHO * * FILENM = FILE WHICH MAY OPTIONALLY BE SPECIFIED TO PROVIDE * ALL INPUT COMMANDS * ***************************************************************** UNL XIF * END RTE-M CODE LST SPC 2 * SUP ENT REMAT * EXT #RQB,#RMSM,DSERR,RMPAR EXT EXEC,#NODE,$OPSY,D#OPS EXT #NCNT EXT DPOSN EXT DWRIT,DOPEN,DREAD,DLOCF EXT DCLOS,DCRET,DNAME,DPURG EXT DMESS,DMESG,IFBRK EXT #MAST,FCOPY EXT DEXEC,CNUMD,#SWRD EXT REIO,.DFER EXT .SFB,.SBT,.MBT,.MVW,.LBT * * RQB EQU #RQB SKP * GLBLK-START * ****************************************************************** * * * G L O B A L B L O C K REV 2013 791213 * * * * GLOBAL OFFSETS INTO DS/1000 MESSAGE BUFFERS, USED BY: * * * * REMAT, RFMST, DEXEC, DMESS, FLOAD, POPEN, #MAST * * GET, #SLAV, RQCNV, RPCNV, GRPM, DINIT, PTOPM * * EXECM, EXECW, OPERM, RFAM1, RFAM2, DLIST, DLIS3 * * DSTIO, LUMAP, #CMGT, INCNV, OTCNV, RMTIO * * RSM, DLGON, #DISM, #DSSM, #MSSM, #SCSM, #UPSM * ****************************************************************** * ***!!!!! THE ORDER OF THE FIRST 8 WORDS (#STR THRU #LVL) IS * ***!!!!! FIXED BY THE REQUIREMENT THAT THE STREAM, ADDRESSES * ***!!!!! ERROR CODES & LEVEL # ALWAYS BE IN THE SAME PLACE, * ***!!!!! REGARDLESS OF MESSAGE FORMAT. THIS ALSO MAKES * ***!!!!! STORE-AND-FORWARD CODE MUCH SIMPLER. * #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 * RFBLK-START * ****************************************************************** * * * R F A B L O C K REV 2013 791119 * * * * OFFSETS INTO DS/1000 RFA MESSAGE BUFFERS, USED BY: * * * * RFMST, RFAM1, RFAM2, REMAT, RQCNV, RPCNV * * * ****************************************************************** * * OFFSETS INTO RFA REQUEST BUFFERS. * #FCN EQU #REQ RFA FUNCTION CODE. #DCB EQU #FCN+1 DCB/FILENAME AREA. #IRC EQU #DCB+3 DAPOS: IREC #IRB EQU #IRC+1 IRB #XIB EQU #IRC+2 IRB (DXAPO) #IOF EQU #IRB+1 IOFF #XIO EQU #XIB+2 IOFF (DXAPO) #ITR EQU #DCB+3 DCLOS: ITRUN #IC1 EQU #DCB+3 DCONT: ICON1 #IC2 EQU #IC1+1 ICON2 #ICR EQU #DCB+3 DCRET,DNAME,DOPEN,DPURG: ICR(1) #ID EQU #ICR+1 IDSEG #ISC EQU #ID+1 ISECU #SIZ EQU #ISC+1 DCRET: ISIZE(1) #SZ2 EQU #SIZ+1 ISIZE(2) #XRS EQU #SIZ+2 RECSZ (DXCRE) #TYP EQU #SZ2+1 ITYPE #XTY EQU #XRS+2 ITYPE (DXCRE) #NNM EQU #ISC+1 DNAME: NNAME #IOP EQU #ISC+1 DOPEN: IOPTN #NUR EQU #DCB+3 DPOSN: NUR #IR EQU #NUR+1 IR #XIR EQU #NUR+2 IR (DXPOS) #IL EQU #DCB+3 DREAD,DWRIT: IL #NUM EQU #IL+1 NUM #LEN EQU #FCN+1 DSTAT: ILEN #FOR EQU #LEN+1 IFORM #OPT EQU #FOR+1 IOP #NOD EQU #ICR+1 "FLUSH" REQUEST: NODE NUMBER * * OFFSETS INTO RFA REPLY BUFFERS. * #RFD EQU #REP DCRET,DOPEN: RFAMD ENTRY # #JSZ EQU #RFD+1 DCRET: JSIZE (DXCRE) #LOG EQU #REP DREAD: XLOG #REC EQU #REP DLOCF: IREC #RB EQU #REC+1 IRB #XRB EQU #REC+2 IRB (DXLOC) #OFF EQU #RB+1 IOFF #XOF EQU #XRB+2 IOFF (DXLOC) #JSC EQU #OFF+1 JSECT #XJS EQU #XOF+1 JSECT (DXLOC) #JLU EQU #JSC+1 JLU #XJL EQU #XJS+2 JLU (DXLOC) #JTY EQU #JLU+1 JTY #XJT EQU #XJL+1 JTY (DXLOC) #JRC EQU #JTY+1 JREC #XJR EQU #XJT+1 JREC (DXLOC) #IAD EQU #REP DSTAT: IADD * * MAXIMUM SIZE OF RFA REQUEST/REPLY BUFFER. * #RLW EQU #MHD+13 M A X I M U M S I Z E ! ! ! * * RFBLK-END SKP * DXBLK-START * ****************************************************************** * * * D E X E C B L O C K REV 2013 800221 * * * * OFFSETS INTO DS/1000 DEXEC MESSAGE BUFFERS, USED BY: * * * * DEXEC, EXECM, EXECW, RQCNV, RPCNV, FLOAD, REMAT * * * ****************************************************************** * * OFFSETS INTO DEXEC REQUEST BUFFERS. * #ICD EQU #REQ ICODE FOR DEXEC(ALL) #CNW EQU #ICD+1 CONWD FOR DEXEC(1,2,3,13) #CWX EQU #CNW+1 DLUEX EXTENSION FOR DEXEC(1,2,3,13) #BFL EQU #CWX+1 IBUFL FOR DEXEC(1,2) #PM1 EQU #BFL+1 IPRM1 FOR DEXEC(1,2) #PM2 EQU #PM1+1 IPRM2 FOR DEXEC(1,2) #ZOF EQU #PM1 Z-BUFFER OFFSET FOR DEXEC(1,2,3,13) #ZLN EQU #PM2 Z-BUFFER LENGTH FOR DEXEC(1,2,3,13) #PR2 EQU #PM2+1 2ND OPT. PARAMETER FOR DEXEC(3) [RTE-L]. #KEY EQU #PR2+1 KEYWORD(RN) FOR DEXEC(1,2,3) [RTE-L]. #PRM EQU #CWX+1 IPRAM FOR DEXEC(3) #PGN EQU #ICD+1 PRGNM FOR DEXEC(6,9,10,12,23,24,99) #INU EQU #PGN+3 INUMB FOR DEXEC(6) #DPM EQU #INU+1 PARMS FOR DEXEC(6) (5-WORD AREA) #PMS EQU #PGN+3 PARMS FOR DEXEC(9,10,23,24)(5-WORD AREA) #IBF EQU #PMS+5 IBUFR FOR DEXEC(9,10,23,24) #IBL EQU #IBF+1 IBUFL FOR DEXEC(9,10,23,24) #FNO EQU #IBL+1 FNOD FOR DEXEC(9) (APLDR) #RSL EQU #PGN+3 IRESL FOR DEXEC(12) #MPL EQU #RSL+1 MTPLE FOR DEXEC(12) #HRS EQU #MPL+1 IHRS FOR DEXEC(12) #MIN EQU #HRS+1 IMIN FOR DEXEC(12) #SEC EQU #MIN+1 ISECS FOR DEXEC(12) #MSC EQU #SEC+1 MSECS FOR DEXEC(12) #PAR EQU #ICD+1 PARTI FOR DEXEC(25) (PARTITION #) #IST EQU #PGN+3 ISTAT FOR DEXEC(99) * * OFFSETS INTO DEXEC REPLY BUFFERS. * #EQ5 EQU #EC1 EQT 5 FOR DEXEC(1,2,3) #XML EQU #EC2 TRANSMISSION LOG (DEXEC 1,2) #RPM EQU #REP PRAMS FOR DEXEC(9,23) (5-WORD AREA) #TMS EQU #REP MSEC FOR DEXEC(11) #TSC EQU #TMS+1 SEC FOR DEXEC(11) #TMN EQU #TSC+1 MIN FOR DEXEC(11) #THR EQU #TMN+1 HRS FOR DEXEC(11) #TDA EQU #THR+1 DAY FOR DEXEC(11) #TYR EQU #TDA+1 YEAR FOR DEXEC(11) #ST1 EQU #REP ISTA1 FOR DEXEC(13) #ST2 EQU #ST1+1 ISTA2 FOR DEXEC(13) #ST3 EQU #ST2+1 ISTA3 FOR DEXEC(13) #ST4 EQU #ST3+1 ISTA4 FOR DEXEC(13) [RTE-L]. #PAG EQU #REP IPAGE FOR DEXEC(25) #IPN EQU #PAG+1 IPNUM FOR DEXEC(25) #PST EQU #IPN+1 ISTAT FOR DEXEC(25) #KST EQU #REP ISTAT FOR DEXEC(99) * * MAXIMUM SIZE OF DEXEC REQUEST/REPLY BUFFER. * #DLW EQU #MHD+11+#LSZ M A X I M U M S I Z E ! ! ! * * MAXIMUM SIZE OF DEXEC/EXECM DATA BUFFER. * #DBS EQU 512 M A X I M U M S I Z E ! ! ! * * DXBLK-END SKP * PPBLK-START * ****************************************************************** * * * P T O P B L O C K REV 2013 791119 * * * * OFFSETS INTO DS/1000 PTOP MESSAGE BUFFERS, USED BY: * * * * POPEN, PTOPM, GET/ACEPT/REJCT, RQCNV, RPCNV, DINIT, REMAT * * #SCSM * ****************************************************************** * * OFFSETS INTO PTOP REQUEST AND REPLY BUFFERS. * #FCD EQU #REP FUNCTION CODE. #PCB EQU #FCD+1 PCB AREA (3 WORDS). #TAG EQU #PCB+3 TAG AREA (20 WORDS). * * MAXIMUM SIZE OF PTOP REQUEST/REPLY BUFFER. * #PLW EQU #MXR M A X I M U M S I Z E ! ! ! * * PPBLK-END SKP * A EQU 0 B EQU 1 * * INITIALIZE TRANSFER STACK. * REMAT EQU * UNL IFN * START RTE CODE LST LDA $OPSY GET 1ST SCHED PARAM RAR,SLA JMP REMC0 LDA B,I JMP *+3 REMC0 XLA B,I SZA,RSS LDA B1 STA TEMP SAVE IT * JSB EXEC GET SCHEDULE STRING. DEF *+5 DEF D14 DEF B1 DEF INBUF DEF D40 * STB INCNT SAVE # WORDS INPUT. UNL XIF * END RTE CODE LST * UNL IFZ * START RTE-M CODE LST JSB RMPAR GET SCHED PARAMS DEF *+2 DEF P1 UNL XIF * END RTE-M CODE LST * JSB EXEC SET SWAP ONLY WHAT IS NEEDED DEF *+3 DEF D22 DEF B2 LDA $OPSY CONFIGURE DMS INSTRUCTIONS RAR SLA,RSS DMS? JMP REMC2 NO. DLD XLA1 DST DMS1 STORE XLA XPNTR,I REMC2 EQU * LDA STKHD RESET STACK POINTER. STA P.STK CLA,INA SET FIRST STACK ENTRY STA P.STK,I FOR LOGICAL UNIT 1 (DEFAULT). * LDA #NODE GET LOCAL NODE # STA NODE2 DEFAULT NODE2 IS LOCAL STA NODE1 DEFAULT NODE1 IS LOCAL STA DESTX STA TRNOD INIT XFR FILE NODE CLA DEFAULT LU STA TRSEC INIT XFR FILE SECURITY CODE STA TRCRN AND CARTRIDGE REF #. * UNL IFN * START RTE CODE LST * LDB INCNT IF A STRING WAS INPUT, SZB,RSS JMP RMC2A JSB $PARS PARSE SCHEDULE STRING. * LDB CP2 GET INPUT NAMR PARAM FLAG SZB NULL? JMP REMC3 NO RMC2A LDB TEMP YES, RETRIEVE 1ST SCHED PARAM STB P2 AND USE AS DEFAULT. LDB B1 SET PARAM 2 TYPE TO NUMERIC STB CP2 * REMC3 CCA ASSUME INPUT NAMR IS FILENAME CPB B1 IS IT NUMERIC INSTEAD? CLA YES, REVISE ASSUMPTION UNL XIF * END RTE CODE LST UNL IFZ * START RTE-M CODE LST LDA P1 CHECK IF P1 = ASCII PARAM. AND HB377 SZA,RSS JMP STR NO. MUST BE INPUT LU. * * FETCH SCHEDULE PARAMETERS (FL,NA,ME,LIST,SEVERITY). * DLD P1+1 PROTECTION FOR THE FILE SZA,RSS NAME IN THE SCHEDULE PARAMETERS LDA DBBLK SZB,RSS LDB DBBLK DST P1+1 * LDA A.$TR GENERATE "$TR,FLNAME" IN BUFFER. STA INBUF LDA A.TR1 STA INBUF+1 JSB .DFER DEF INBUF+2 DEF P1 * LDA B5 SET COUNT. STA INCNT * CLA SET UP DUMMY SCHEDULE PARAMS STA P1 FOR INPUTLU STA P1+1 AND LOGLU. LDA P1+3 ADJUST POSITION OF LISTLU STA P1+2 AND SEVERITY CODE IN LDA P1+4 SCHEDULE PARAM BUFR. STA P1+3 CCA PREPARE TO SET TRFLG UNL XIF * END RTE-M CODE LST * STR STA TRFLG SET/CLEAR FLAG FOR QUERY SECTION. UNL IFN * START RTE CODE LST SZA INPUT FROM FILE OR LU? JMP STAT FILE * * FETCH SCHEDULE PARAMETERS (LU,LOG,LIST,SEVERITY CODE). * LDA P2 GET LU OF INPUT DEVICE. UNL XIF * END RTE CODE LST UNL IFZ * START RTE-M CODE LST LDA P1 GET LU OF INPUT DEVICE UNL XIF * END RTE-M CODE LST SZA IF NONE OR 1, LEAVE DEFAULT (=1) CPA B1 IN STACK. JMP STAT * STA P.STK,I OVERRIDE DEFAULT INPUT LU * STAT LDA P.STK,I JSB EQTYP CHECK EQ. TYPE OF INPUT LU. STA LUTYP * UNL IFN * START RTE CODE LST LDA P3 GET LU OF LOG DEVICE. UNL XIF * END RTE CODE LST UNL IFZ * START RTE-M CODE LST LDA P1+1 GET LU OF LOG DEVICE UNL XIF * END RTE-M CODE LST LDB CP3 NUMERIC GIVEN? CPB B1 JMP SVLOG YES, USE IT * LDB LUTYP NO, USE INPUTLU CLA,INA IF INTERACTIVE, SZB,RSS ELSE USE 1. LDA P.STK,I GET INPUTLU SVLOG IOR VBIT IN CASE IT'S A PRINTER STA LOGLU SAVE LOGLU * UNL IFN * START RTE CODE LST LDA P4 GET LU OF LIST DEVICE UNL XIF * END RTE CODE LST UNL IFZ * START RTE-M CODE LST LDA P1+2 GET LU OF LIST DEVICE UNL XIF * END RTE-M CODE LST LDB CP4 IF NUMERIC NOT GIVEN, CPB B1 RSS LDA LOGLU USE DEFAULT = LOG LU. STA LSTLU * UNL IFN * START RTE CODE LST LDA P5 SAVE SEVERITY CODE UNL XIF * END RTE CODE LST UNL IFZ * START RTE-M CODE LST LDA P1+3 SAVE SEVERITY CODE UNL XIF * END RTE-M CODE LST STA SEVER * LDA TRFLG GET INPUT FILE FLAG UNL IFN * START RTE CODE LST SZA,RSS SCHEDULED WITH INPUT FILE? JMP QUERY NO UNL XIF * END RTE CODE LST UNL IFZ * START RTE-M CODE LST SZA SCHEDULED WITH INPUT FILE? JMP CHK$ YES, '$TR,FNAME' SIMULATED IN INBUF UNL XIF * END RTE-M CODE LST UNL IFN * START RTE CODE LST * * SCHEDULED TO RUN FROM INPUT FILE. MASSAGE THE PARSE BUFFER * TO STIMULATE A 'TR,FILENAME:SC:CRN' COMMAND WITH DEFAULT NODE #. * LDA CP2 MOVE PARAM2 ENTRY (FILENAME) TO STA CP1 PARAM1 ENTRY (OVERLAYING JSB .DFER "REMAT" FROM "RU,REMAT...." DEF P1 SCHEDULE STRING). DEF P2 * DLD SECU2 ALSO MOVE PARAM2 NAMRS TO DST SECU1 OVERLAY PARAM1 NAMRS. * CLA SIMULATE NULL NODE # STA CP2 PARAM FLAG. JMP M1205 GO TREAT AS A 'TR' COMMAND UNL XIF * END RTE CODE LST * * DISPLAY PROMPT CHARACTER (IF TTY DEVICE). * CONTROL RETURNS HERE WHEN REQUEST PROCESSING COMPLETES. * QUERY LDA P.STK,I CHECK WHETHER CURRENT INPUT STA LUTYP IS FROM A TTY TYPE DEVICE. AND HB377 NON ZERO IF FILE NAME, ELSE LU. SZA JMP REMRD REMOTE FILE. STA BRFLG CLEAR BREAK-FLAG * JSB LCALS SET FOR LOCAL ONLY LDA P.STK,I JSB EQTYP LOCAL LU: CHECK TYPE. JSB LCALC RESET NODE2 PARAMETER STA LUTYP SZA JMP LOCRD LOCAL INPUT LU NOT TTY DEVICE. * LDB "$" SET LOCAL PROMPT ($) LDA #NODE IF BOTH NODE1 AND NODE2 CPA NODE1 ARE LOCAL, ELSE SET RSS REMOTE PROMPT (#). LDB "#" CPA NODE2 RSS LDB "#" STB PRMPT * JSB REIO DISPLAY PROMPT ON TTY DEVICE. DEF *+5 DEF ICOD2 DEF P.STK,I DEF PRMPT PROMPT CHAR DEF B1 JMP RIOAB ERROR RETURN * LDA P.STK,I SET ECHO BIT. IOR B400 RSS * * INPUT OPERATOR REQUEST FROM CURRENT DEVICE OR FILE. * LOCRD LDA P.STK,I SET INPUT LU INTO STA TEMP REIO CALLING SEQ. * CLA CLEAR FIRST WORD OF BUFFER IN STA INBUF CASE THIS IS A "BIT BUCKET" LU. * JSB REIO LOCAL LU. DEF *+5 DEF ICOD1 DEF TEMP DEF INBUF DEF D40 JMP RIOAB ERROR RETURN * STA TEMPM SAVE STATUS WORD. STB INCNT SAVE WORD COUNT. * LDA INBUF IF NOTHING PUT INTO BUFFER SZA,RSS (AS IN CASE OF "BIT BUCKET" LU), JMP OPER CALL IT AN INPUT ERROR. * JSB LCALS SET FOR LOCAL JSB EOFCK CHECK FOR END OF FILE. JMP TRANS GOT IT. JMP ECHO GO ECHO IF NECESSARY. * REMRD JSB IFBRK IF BRFLG IS SET AT DEF *+1 THIS OR ANY PREVIOUS SZA CALL TO IFBRK, THEN STA BRFLG CLEAR IT AND RESET STACK. LDA BRFLG CLB STB BRFLG SZA JMP RESET * JSB DREAD READ RECORD FROM FILE DEF *+6 (OPENED WHEN FIRST TRANSFER DEF TRDCB WAS PERFORMED) DEF IERRR DEF INBUF DEF D40 DEF INCNT ACTUAL WORD COUNT. * JSB ERCHK CHECK FOR ERRORS. * LDA INCNT IF EOF, GENERATE TR REQUEST. INA,SZA JMP BUMP TRANS LDA A.$TR STA INBUF LDA A.$TR+1 STA INBUF+1 LDA B2 STA INCNT JMP ECHO * BUMP LDA P.STK ADA B3 ISZ A,I BUMP RECORD COUNT. * * ECHO THE REQUEST IF NOT INPUT FROM TTY DEVICE. * ECHO LDA LUTYP SZA,RSS JMP CKCNT IT IS A TTY DEVICE. * LDA SEVER INHIBIT ECHO IF CPA B1 SEVERITY CODE = 1. JMP CHK$ * JSB REIO NOT TTY: ECHO. DEF *+5 DEF ICOD2 DEF LOGLU DEF INBUF DEF INCNT JMP RIOER ERROR RETURN * CHK$ LDA INBUF FIRST CHARACTER MUST AND HB377 BE A "$". CPA AS.$ RSS JMP OPER * LDA INBUF BLANK OUT THE "$" SIGN. AND B377 IOR BLANK STA INBUF * CKCNT LDB INCNT IGNORE REQUEST IF NULL. RBL MAKE CHARACTER COUNT. SZB,RSS JMP QUERY * * PARSE THE OPERATOR REQUEST. * JSB $PARS * JMP M0000 CHECK IF PROCESSING NEEDED * * * SEND RTE COMMANDS. * OTHER LDA INCNT CONVERT LENGTH TO BYTES RAL STA INCNT * * HERE FOR SENDING SYSTEM COMMANDS TO THE * CPU AT NODE1. * JSB DMESS SEND COMMAND. DEF *+4 DEF NODE1 DEF INBUF ASCII COMMAND. DEF INCNT COUNT (+POSITIVE BYTES) * INB,SZB "DS" ERROR? JMP RSMSG NO. JSB ERMSG YES. DISPLAY IT AND GET OUT. RSS RSMSG SZA,RSS ANY RESPONSE MESSAGE? JMP QUERY NO. GO GET NEXT COMMAND INPUT. * STA TEMP YES. SAVE COUNT * JSB REIO DISPLAY REPLY MESSAGE. DEF *+5 DEF ICOD2 DEF LOGLU DEF INBUF DEF TEMP JMP RIOER ERROR RETURN * JMP QUERY * * CHECK THE OPERATOR REQUEST CODE AGAINST THE LEGAL * REQUEST CODES AND JUMP TO THE PROPER PROCESSOR. * * TO ADD NEW REQUEST ONE MERELY: * A. ADDS ASCII OPERATION CODE TO TABLE "LDOPC". * B. ADDS PROCESSOR START ADDRESS TO TABLE "LDJMP". * C. ADDS PROCESSOR CODING TO PROCESS THE REQUEST. * M0000 LDB OP FETCH OPERATION CODE. M0001 STB OPP SET STOP FLAG. LDA LDOPC SET OPERATION TABLE POINTER. STA TEMP1 LDA LDJMP SET PROCESSOR JUMP ADDRESS. * M0030 CPB TEMP1,I COMPARE WITH TABLE VALUE. JMP A,I COMPARES. GO DO IT. * ISZ TEMP1 KEEP LOOKING. INA JMP M0030 * LDOPC DEF *+1 OPERATION CODE TABLE ADDRESS. * ASC 1,DL ASC 1,DU EX ASC 1,EX ASC 1,ST ASC 1,SW ASC 1,TE ASC 1,TR ASC 1,LO ASC 1,IO ASC 1,PL ASC 1,LL ASC 1,SL ASC 1,SO ASC 1,RW ASC 1,LC ASC 1,FL ASC 1,PU ASC 1,RN ASC 1,CR ASC 1,LI ASC 1,BC "BROADCAST" ASC 1,CL CARTRIDGE LIST. ASC 1,AT ATTACH TO SESSION. ASC 1,DE DETACH FROM SESSION. ASC 1,XX BLOCK "REMOTE SESSION PSEUDO-OP". OPP NOP OP CODE FOR CURRENT REQ. * LDJMP DEF *+1,I JMP ADDRESS FOR EACH OP CODE. * DEF M0300 ADR FOR DL REQUEST DEF M0400 DU REQUEST. DEF M0500 EX REQUEST. DEF M0900 ST REQUEST. DEF M0990 SW REQUEST. DEF M1000 TE REQUEST. DEF M1200 TR REQUEST DEF M1400 LO REQUEST DEF M1450 IO REQUEST DEF M1500 PL REQUEST DEF M1600 LL REQUEST DEF M1700 SL...SLAVE LIST ROUTINE DEF M1800 SO...SLAVE OFF ROUTINE DEF M2001 RW REQUEST DEF M2100 LC REQUEST DEF M2401 FL REQUEST DEF M2501 PU REQUEST DEF M2550 RN REQUEST DEF M2701 CR REQUEST DEF M2801 LI REQUEST DEF BRCST BR REQUEST DEF M3000 CL REQUEST DEF M3100 AT REQUEST DEF M3200 DE REQUEST DEF OPER BLOCK "REMOTE SESSION PSEUDO-OP". DEF OTHER MUST BE A SYSTEM COMMAND SPC 1 * ERR55 LDA D55 MISSING PARAMETER JMP OPERS * ERR56 LDA D56 ILLEGAL PARAMETER TYPE JMP OPERS * OPER LDA D10 INPUT ERROR: 010 OPERS LDB BLANK MAKE POSITIVE, SET SIGN WORD. SSA,RSS JMP OPER1 LDB MINUS CMA,INA OPER1 STB EMSG+4 STA TEMP * JSB CNUMD CONVERT ERROR CODE TO ASCII. DEF *+3 DEF TEMP DEF INBUF * LDA INBUF+2 STUFF LAST 2 DIGITS INTO MSG. IOR HB20 LEADING BLANK TO ASCII 0. STA EMSG+5 LDA INBUF+1 SET UP SIGN AND AND B377 FIRST DIGIT. IOR EMSG+4 IOR B20 LEADING BLANK TO ASCII ZERO. STA EMSG+4 STORE IN MESSAGE BUFFER. * JSB REIO DISPLAY ERROR MESSAGE. DEF *+5 DEF ICOD2 DEF LOGLU DEF EMSG DEF B6 JMP RIOER ERROR RETURN. JMP RESET GO RESET STACK POINTER, ETC. * MINUS OCT 026400 HB20 OCT 10000 B20 OCT 20 EMSG ASC 6,/REMAT: NNNN * HED REMAT: TR REQUEST. * (C) HEWLETT-PACKARD CO. 1979 * * TR,NAMR [,NODE #] * * TRANSFER CONTROL TO LOCAL LU OR FILE AT NODE #. DEFAULT NODE# * IS LOCAL. NODE # AND NAMR SUBPARAMS CRN & SECURITY CODE MAY BE * SET ONLY ON THE FIRST $TR OF A NESTED GROUP OF $TR COMMANDS. * M1200 LDA CP1 IF TRANSFER IS TO CPA B1 A REMOTE LU, RSS JMP M1202 LDA CP2 SZA,RSS JMP M1202 LDA P2 CPA #NODE RSS JMP OPER IT IS AN INPUT ERROR. * M1202 LDA P.STK,I IF CURRENT INPUT IS FROM A AND HB377 FILE, CLOSE IT. SZA,RSS JMP M1210 * JSB DCLOS DEF *+3 DEF TRDCB DEF IERRR * M1205 CLA STA TOPNF CLEAR TRDCB OPEN FLAG. * M1210 LDA P.STK IF THIS IS THE FIRST $TR CPA STKHD OF A NESTED GROUP, SET FILE RSS NODE, SECURITY CODE AND CRN. JMP IGNOR IF NOT, LEAVE THEM AS THEY ARE. LDA SECU1 STA TRSEC LDA CRN1 STA TRCRN LDB CP2 GET 2ND PARAM FLAG SZB MISSING? JSB INTCK NO. MUST BE NUMERIC LDA #NODE GET DEFAULT NODE (LOCAL) SZB P2 MISSING? LDA P2 NO, USE IT. STA TRNOD SET NODE # * IGNOR EQU * LDA P1 GET PARAM 1. SZA,RSS IF NOT SPECIFIED, CCA SIMULATE "TR,-1". * SSA,RSS NEGATIVE INTEGER? JMP M1220 NO. * * BACK UP THROUGH TRANSFER STACK. * LDB STKHD STB TEMP TEMP = TOP-OF-STACK ADR LDB TRFLG RUNNING FROM SCHEDULE SZB,RSS PARAM FILE? JMP M1215 NO LDB STKHD YES, ADJUST TOS ADR ADB B4 STB TEMP M1215 LDB P.STK TOP OF STACK? BKUP CPB TEMP JMP M1217 YES. SIMULATE "EX" REQUEST. ADB MD4 NO. BACK UP 1 ENTRY. INA,SZA JMP BKUP LOOP TILL DONE. STB P.STK SET NEW STACK ADDRESS. JMP M1250 GO CHECK FOR FILE. * M1217 LDB EX GO SIMULATE "EX" REQUEST JMP M0001 * * ADD NEW CONTROL TO THE TRANSFER STACK. * M1220 LDA P.STK BUMP TO NEXT ENTRY. ADA B4 STA P.STK CPA STKEN RSS JMP M1230 * LDA D13 STACK OVERFLOW. ERROR 013. JMP OPERS * M1230 EQU * LDB P1 STORE LU OR FILE NAME. STB A,I INA LDB P1+1 STB A,I INA LDB P1+2 STB A,I INA CLB,INB SET RECORD NUMBER TO 1. STB A,I * * IF FILE, OPEN AND OPTIONALLY POSITION. * M1250 LDA P.STK,I AND HB377 SZA,RSS JMP QUERY LOCAL LU. GO GET NEXT REQUEST. * JSB DOPEN OPEN THE FILE. DEF *+7 DEF TRDCB DEF IERRR DEF P.STK,I DEF B0 IOPTN DEF TRSEC SECURITY CODE DEF TRCRN ICR ARRAY * LDA IERRR PROCESS ERRORS ONLY IF SSA IERRR IS NEGATIVE. JSB ERCHK ISZ TOPNF SET TRDCB OPEN FLAG. * LDA P.STK POSITIONING REQUIRED? ADA B3 LDB A,I CPB B1 (REC. CNT MORE THAN 1?) JMP QUERY NO. STB TEMP YES. * JSB DPOSN POSITION TO NEXT RECORD. DEF *+5 DEF TRDCB DEF IERRR DEF TEMP NUR GREATER THAN ZERO. DEF TEMP ABSOLUTE RECORD NUMBER. * JSB ERCHK CHECK FOR ERRORS. JMP QUERY * * TRANSFER STACK. * * FOR EACH ENTRY, WORD 1 = INTEGER LU OR * FIRST 2 FNAME CHAR. * WORD 2,3 = REST OF FNAME. * WORD 4 = NEXT RECORD NUMBER. * P.STK NOP STACK POINTER. STKHD DEF *+1 * BSS 32 8 ENTRIES. * STKEN DEF * STACK LWA+1 * TRSEC NOP XFR FILE SECURITY CODE TRCRN BSS 2 XFR FILE ICR ARRAY TRNOD EQU TRCRN+1 HED REMAT: DU REQUEST. * (C) HEWLETT-PACKARD CO. 1979 * * DU,NAMR1,LU [,FORMAT] * * DUMP FROM NAMR1 FILE OR LU AT NODE1 TO LU AT NODE2 * M0400 JSB CKFMT SET UP SUBF, ETC LDB CP1 CPB B1 1ST PARAM NUMERIC? JMP M0450 YES, MUST BE LU * JSB ASCHK NO,MUST BE FILE NAME. LDB CP2 JSB INTCK ERROR IF NO LU2 JSB PTCHK SEE IF LEADER GENERATION NECESSARY LDA NODE1 STA CRN1+1 BUILD ICR ARRAY FOR DOPEN * * OPEN THE FILE AT NODE1 * JSB DOPEN OPEN THE FILE. DEF *+7 DEF UDCB DEF IERRR DEF P1 FILE NAME. DEF B0 OPEN OPTIONS. DEF SECU1 SECURITY CODE. DEF CRN1 ICR ARRAY * LDA IERRR CHECK FOR ERRORS IF IERRR NEG. SSA JSB ERCHK ISZ UOPNF SET UDCB OPEN FLAG. * LDA CP3 GET FORMAT PARAM FLAG SZA GIVEN? JMP M0410 YES, OVERRIDES FILE TYPE * JSB DLOCF NO, GET FILE TYPE INFO DEF *+9 DEF UDCB DEF IERRR DEF TEMP DEF TEMP DEF TEMP DEF TEMP DEF TEMP DEF TYPE1 * LDA IERRR CHECK FOR ERRORS IF IERRR NEG. SSA JSB ERCHK * LDA B100 LDB TYPE1 CPB B5 TYPE 5? STA SUBF YES, SET BINARY BIT CPB B7 TYPE 7? STA SUBF YES, SET BINARY BIT * CLB IF FORMAT IS LDA P3 ASCII, RESET CPA "AS" ASCII/BINARY STB SUBF BIT IN SUBF. * * READ A RECORD FROM NODE1 FILE. * M0410 JSB DREAD READ. DEF *+6 DEF UDCB DEF IERRR DEF INBUF DEF D128 DEF INCNT XMSN LOG. * LDA TYPE1 IF ERROR -12 (EOF) CPA B1 RSS JMP M0411 LDA IERRR ON TYPE 1 FILE, CPA MD12 JMP M0415 GO PROCESS EOF. * M0411 JSB ERCHK CHECK FOR ERRORS. * LDA INCNT SZA,RSS SKIP CHECKSUM FOR JMP M0412 ZERO-LENGTH RECORDS. INA,SZA,RSS CHECK FOR EOF (INCNT=-1) JMP M0415 GOT IT. GO PROCESS. JSB CKSUM DO CHECKSUM IF NECESSARY JMP ERR07 CHECKSUM ERROR RETURN M0412 JSB LUOUT GO OUTPUT THE RECORD RSS BREAK REC'D. TREAT AS EOF JMP M0410 GO READ NEXT RECORD M0415 JSB EOFPR PROCESS EOF JMP M0950 GO CLOSE NODE1 FILE * * DUMP LU1 TO LU2 * M0450 LDB CP2 JSB INTCK ERROR IF NO LU2 JSB PTCHK SEE IF LEADER GENERATION NECESSARY JSB CKTTY SET ECHO BIT IF LU = TTY OR CRT M0460 JSB LUIN INPUT RECORD FROM LU1 JMP M0470 EOF FOUND JSB LUOUT OUTPUT RECORD TO LU2 RSS BREAK FLAG SET. TREAT AS EOF JMP M0460 GO READ NEXT RECORD M0470 JSB EOFPR PROCESS END-OF-FILE JMP QUERY * * SUBROUTINE TO GENERATE LEADER IF LU2 = PAPER TAPE PUNCH * PTCHK NOP LDA P2 GET LU2 JSB EQTYP CPA B2 PAPER TAPE PUNCH? RSS JMP PTCHK,I NO, RETURN LDA B1000 YES, GENERATE LEADER IOR P2 STA TEMP * JSB DEXEC CONTROL DEF *+4 DEF NODE2 DEF ICOD3 CONTROL, NO-ABORT DEF TEMP JMP ASCER ERROR RETURN * JMP PTCHK,I RETURN * * SUBROUTINE TO OUTPUT THE RECORD ON NODE2 LU * * LUOUT NOP LDA SUBF GET SUBFUNCTION AND B100 ISOLATE BINARY/ASCII BIT IOR P2 INCLUDE OUTPUT LU STA TEMP SET UP DEXEC CONWD * JSB DEXEC WRITE. DEF *+6 DEF NODE2 DEF ICOD2 WRITE, NO-ABORT DEF TEMP CONWD DEF INBUF DEF INCNT JMP ASCER ERROR RETURN * JSB IFBRK FIND IF DEF *+1 THE BREAK FLAG SZA,RSS IS SET ISZ LUOUT NO, BUMP RETURN ADR STA BRFLG SAVE BREAK INDICATION JMP LUOUT,I YES. RETURN * * PROCESS END OF FILE CONDITION. * EOFPR NOP LDA P2 GET NODE2 LOGICAL UNIT. JSB EQTYP STA B EQUIPMENT TYPE. * LDA B100 SET DEFAULT TO M.T. DEVICE. CPB B2 XOR B1100 PUNCHED TAPE - TRAILER. CPB D10 IOR B1100 LINE PRINTER - PAGE EJECT. IOR P2 INSERT LOGICAL UNIT. STA TEMP * JSB DEXEC PERFORM I/O CONTROL. DEF *+5 DEF NODE2 DEF ICOD3 CONTROL, NO-ABORT DEF TEMP FORMATTED CONTROL WORD. DEF MD1 USED ONLY FOR LP. JMP ASCER ERROR RETURN * JMP EOFPR,I RETURN HED REMAT: ST REQUEST. * (C) HEWLETT-PACKARD CO. 1979 * * ST,NAMR1,NAMR2 [,FORMAT [,MODE]] * * STORE FROM NAMR1 LU OR FILE AT NODE1 INTO * NAMR2 FILE AT NODE2. MODE = TRANSFER MODE PARAMETER * IN FCOPY CALL (IF NON-ZERO, FILES ARE OPENED AS  * TYPE 1). * M0900 LDA NPRMS # OF PARAMS (INCLUDING CPA B2 COMMAND) = 2? JMP OTHER YES, MUST BE STATUS COMMAND LDA CP1 IOR B1 CPA B3 1ST PARAM ASCII (FILE NAME)? JMP M0960 YES, STORE FILE TO FILE * LDB CP2 NO, STORE LU TO FILE JSB ASCHK ERROR IF NOT A FILE NAME * JSB CKFMT * LDA D10 DEFAULT # BLOCKS TO 10. LDB SIZE2 SZB,RSS STA SIZE2 * LDB CP1 ERROR IF NO LU. JSB INTCK * LDA CRN2 LDB NODE2 DST TEMP BUILD ICR ARRAY FOR DCRET * * * * CREATE THE DISC FILE AT NODE2. * JSB DCRET CREATE FILE. DEF *+8 DEF UDCB DEF IERRR DEF P2 FILE NAME. DEF SIZE2 FILE-SIZE/REC-SIZE (2 WORDS) DEF TYPE2 FILE TYPE DEF SECU2 SECURITY CODE DEF TEMP ICR ARRAY (2 WORDS) * LDA IERRR CHECK FOR ERRORS IF IERRR NEG. SSA JSB ERCHK ISZ UOPNF SET UDCB OPEN FLAG. * JSB CKTTY SET ECHO BIT IF LU = TTY OR CRT M0905 JSB LUIN INPUT RECORD FROM LU JMP M0950 EOF FOUND IN INPUT * * WRITE THE RECORD ON NODE2 DISC FILE. * JSB DWRIT DEF *+5 DEF UDCB DEF IERRR DEF INBUF DEF INCNT * LDA IERRR CHECK FOR ERRORS. SSA JMP ST1 JSB IFBRK NO ERROR, IS BREAK FLAG DEF *+1 SET ? SZA,RSS JMP M0905 NO, GO READ NEXT RECORD. STA BRFLG YES, SAVE BREAK INDICATION * ST1 JSB DPURG ERROR. PURGE FILE. DEF *+6 DEF UDCB DEF TEMP DEF P2 FILE NAME. DEF P3 SECURITY. DEF P4 LABEL. * CLA CLEAR UDCB OPEN FLAG STA UOPNF JSB ERCHK DOES NOT RETURN * * END OF FILE ON INPUT. * M0950 JSB DCLOS CLOSE THE FILE DEF *+3 DEF UDCB DEF IERRR * CLA CLEAR UDCB OPEN FLAG. STA UOPNF * JMP QUERY * * STORE FROM FNAM1 AT NODE1 TO FNAM2 AT NODE2 * M0960 LDA CRN1 BUILD ICR LDB NODE1 ARRAYS FOR DST TEMP1 FCOPY CALL. LDA CRN2 LDB NODE2 DST TEMP2 * JSB DOPEN PRE-OPEN THE SOURCE FILE. DEF *+7 DEF UDCB DEF IERRR DEF P1 FILE NAME. DEF B0 OPTIONS. DEF SECU1 SECURITY. DEF TEMP1 ICR ARRAY. * SSA JMP ERCHK OPEN ERROR. * CLB,INB CPA B6 FILE TYPE 6? STB P4 YES. TELL FCOPY TO OPEN AS TYPE 1. * JSB DCLOS CLOSE THE FILE. DEF *+3 DEF UDCB DEF IERRR SPC 2 JSB FCOPY NOW DO THE COPY. DEF *+12 DEF P1 NODE1 FILE NAME DEF TEMP1 NODE1 CRN ARRAY DEF P2 NODE2 FILE NAME DEF TEMP2 NODE2 CRN ARRAY DEF IERRR DEF SECU1 DEF TYPE2 DEF SIZE2 DEF RSIZ2 DEF P4 XFER MODE DEF SECU2 SPC 3 * * ERROR PROCESSING * LDA IERRR GET ERROR CODE SZA,RSS ANY THING ? JMP QUERY NO, GO BACK * SSA ERROR OR WARNING ? JSB ERCHK SOLID ERROR. GO AWAY. * JSB REIO TELL THE OPERATOR DEF *+5 THAT IT IS ONLY DEF ICOD2 A WARNING DEF LOGLU DEF WRNG DEF D14 JMP RIOER ERROR RETURN * JMP QUERY GO BACK. * * SUBROUTINE TO SET LUTYP OF INPUT DEVICE * CKTTY NOP LDA NODE2 CHANGE NODE2 TO NODE1 STA TEMP TEMPORARILY FOR CALL LDA NODE1 TO EQTYP. STA NODE2 LDA P1 DETERMINE DEVICE TYPE JSB EQTYP OF NODE1 LU. LDB TEMP RESET NODE2 STB NODE2 STA LUTYP SAVE DEVICE TYPE OF NODE1 LU JMP CKTTY,I * * SUBROUTINE TO READ INPUT RECORD FROM NODE1 LU * LUIN NOP M0910 LDA LUTYP IF NODE1 DEVICE IS A TTY, SZA DISPLAY INPUT PROMPT CHAR. JMP M0920 * JSB DEXEC IT IS. DISPLAY PROMPT, BECAUSE DEF *+6 OF PERCEPTIBLE DELAY BETWEEN DEF NODE1 RECORDS DEF ICOD2 WRITE, NO-ABORT DEF P1 NODE1 INPUT DEVICE DEF IPRMP ASCII SLASH, SPACE. DEF MD3 JMP ASCER ERROR RETURN * M0920 LDA SUBF GET SUBFUNCTION IOR P1 INCLUDE INPUT LU STA TEMP SET UP CONWD FOR DEXEC * JSB DEXEC READ THE INPUT RECORD. DEF *+6 DEF NODE1 DEF ICOD1 READ, NO-ABORT DEF TEMP CONWD DEF INBUF DEF D128 JMP ASCER ERROR RETURN * STA TEMPM SAVE STATUS WORD. STB INCNT SAVE WORD COUNT. * * CHECK FOR INPUT END OF FILE AT NODE1 LU * JSB EOFCK EOF? JMP LUIN,I YES, RETURN *+1 LDA INCNT CHECK FOR NULL NON-CARD INPUT. SZA,RSS JMP M0910 NO INPUT (TLOG=0), SO IGNORE JSB CKSUM DO CHECKSUM IF REQ'D JMP ERR07 CHECKSUM ERROR ISZ LUIN JMP LUIN,I RETURN *+2 SPC 2 ERR07 LDA B7 REPORT CHECKSUM ERROR JMP OPERS SPC 2 WRNG ASC 14,WARNING : DEST. FILE RENAMED HED REMAT: LL REQUEST * (C) HEWLETT-PACKARD CO. 1979 * * LL [,LISTLU [,LOGLU]] * * CHANGE THE CURRENT LIST DEVICE AND/OR LOG DEVICE TO THE * PARAMETER VALUES GIVEN. IF NEITHER PARAMETER IS GIVEN, * THE CURRENT LIST AND LOG LU'S ARE DISPLAYED ON THE LOGLU. * M1600 LDA CP1 SZA,RSS PARAM 1 PRESENT? JMP M1650 NO LDA P1 YES, CHANGE LISTLU SZA,RSS CHECK FOR JMP OPER LIST LU IN AND LUMSK RANGE 1-77B. SZA JMP OPER LDA P1 STA LSTLU LDA CP2 SZA,RSS PARAM 2 PRESENT? JMP QUERY NO * M1625 LDA P2 YES, CHANGE CURRENT LOGLU SZA,RSS CHECK FOR JMP OPER LOGLU IN AND LUMSK 1-77B RANGE. SZA JMP OPER LDA P2 GET 2ND PARAM AGAIN IOR VBIT IN CASE IT'S A PRINTER STA LOGLU SAVE LOGLU JMP QUERY * M1650 LDA CP2 SZA PARAM 2 PRESENT? JMP M1625 YES * LDA LSTLU NO. ISOLATE LIST LU. AND B77 STA TEMP * JSB CNUMD CONVERT CURRENT DEF *+3 LISTLU TO ASCII. DEF TEMP DEF LLMSG+4 * LDA LOGLU GET LOGLU AND B77 STRIP V-BIT STA TEMP SET UP CNUMD CALL * JSB CNUMD CONVERT CURRENT DEF *+3 LOGLU TO ASCII. DEF TEMP DEF LLMSG+16 * JSB REIO DISPLAY CURRENT VALUES DEF *+5 OF LISTLU AND LOGLU. DEF ICOD2 DEF LOGLU DEF LLMSG DEF D19 JMP RIOER ERROR RETURN * JMP QUERY SPC 2 LLMSG ASC 19,LISTLU =XXXXXX LOGLU = XXXXXX LUMSK OCT 177700 HED REMAT: RW REQUEST * (C) HEWLETT-PACKARD CO. 1979 * * RW PROCESSOR * * RW,PNAME [,P1 [,P2 [,P3 [,P4 [,P5]]]]] * OR * RW,PNAME [, ] * * SCHEDULE PROGRAM (PNAME) TO RUN AT NODE1 WITH WAIT. * PASSES UP TO 5 OPTIONAL SCHEDULE PARAMETERS * OR A STRING OF UP TO 70 ASCII CHARACTERS * TO THE SCHEDULED PROGRAM. * * M2001 LDB CP1 FIRST PARAM MUST JSB ASCHK BE ASCII. * LDA "R" GET TERM/TEST WORD LDB BUFAD GET INBUF ADR CLE,ELB MAKE IT A BYTE ADR JSB .SFB LOOK FOR "R" IN "RW" INB,RSS FOUND IT. MOVE TO NEXT BYTE JMP OPER NOT FOUND LDA "U" REPLACE "RW" WITH "RU" JSB .SBT * CCB PRE-SET B TO KNOWN VALUE JSB DEXEC REMOTE SCHED-WITH-WAIT DEF *+11 DEF NODE1 DEF I9B11 REQUEST CLONING IF S.M. NODE. DEF P1 PROG NAME DEF P2 UP TO 5 OPTIONAL SCHED-PARAMS DEF P3 DEF P4 DEF P5 DEF P6 DEF INBUF STRING BUFFER ADR DEF INCNT BUFR COUNT * JMP ASCER ERROR RETURN SZA STATUS = 0? JMP ILSTA NO, ILLEGAL STATUS CPB MD1 ANY RETURN PARAMS? JMP QUERY NO, B HAS NOT CHANGED * JSB RMPAR USE RMPAR IN CASE WE'RE DEF *+2 A LARGE BACKGROUND PROGRAM. PRMAD DEF INBUF+23 * LDA PRMAD SAVE ADDRESS OF 1ST RETURN PARAM STA TEMP FOR ASCII/BINARY PARAMS. * LDB BUFAD GET PRINTBUF POINTER LDA MD5 SET COUNTER TO STORE STA TEMP2 PARAMS IN OCTAL FORMAT JSB OCT6 CONVERT & STORE 1 PARAM ISZ TEMP2 BUMP COUNTER JMP *-2 LOOP UNTIL DONE * JSB STBLK STORE JSB STBLK THREE JSB STBLK DOUBLE BLANKS. * LDA MD10 MAKE SURE ORIGINAL PARAMETERS STA TEMP1 ARE ASCII BEFORE DISPLAYING LDB PRMAD THEM AT END OF DISPLAY LINE. RBL RWCHK JSB .LBT IN RANGE 40(8) - 172(8)? ADA MB40 SSA JMP RW02 NO. NOT ASCII. ADA MB133 SSA JMP RW03 ASCII. RW02 LDA LOBLK NOT ASCII. CHANGE TO BLANK. ADB MD1 JSB .SBT RW03 ISZ TEMP1 JMP RWCHK LOOP TILL DONE. * JSB REIO DISPLAY LINE ON LOGLU DEF *+5 DEF ICOD2 DEF LOGLU DEF INBUF DEF D28 JMP RIOER ERROR RETURN * JMP QUERY * ILSTA JSB REIO PRINT "ILLEGAL STATUS" MSG DEF *+5 DEF ICOD2 DEF LOGLU DEF ILMSG DEF B7 JMP RIOER ERROR RETURN * JMP RESET SPC 2 * * SUBROUTINE TO CONVERT TO ASCII & STORE ONE WORD * OCT6 NOP JSB STBLK STORE DOUBLE BLANK LDA TEMP,I GET PARAM ALF AND B17 ISOLATE HIGH 2 DIGITS JSB CVOCT CONVERT 1ST & 2ND DIGITS ALF,ALF RAL,RAL JSB CVOCT CONVERT 2ND & 3RD DIGITS JSB CVOCT CONVERT 4TH & 5TH DIGITS ISZ TEMP BUMP PARAM POINTER JMP OCT6,I SPC 2 CVOCT NOP STA TEMP1 AND B70 ISOLATE LEFT DIGIT ALF,RAL IOR HZERO FORM ASCII DIGIT STA TEMPM SAVE IT LDA TEMP1 GET 2 DIGITS BACK AND B7 ISOLATE RIGHT DIGIT IOR LZERO IOR TEMPM STA B,I INB LDA TEMP,I JMP CVOCT,I SPC 2 STBLK NOP LDA DBBLK STA B,I INB JMP STBLK,I SPC 2 ILMSG ASC 7,ILLEGAL STATUS HED REMAT: LI REQUEST * (C) HEWLETT-PACKARD CO. 1979 SPC 3 * * LI PROCESSOR * * LI,NAMR,LU * * LIST CONTENTS OF NODE1 FILE 'NAMR' * TO A NODE2 LU (DEFAULT = LSTLU). * M2801 LDB CP1 GET 1ST PARAM FLAG JSB ASCHK MUST BE ASCII * LDB CP2 GET 2ND PARAM FLAG SZB LU GIVEN? JSB INTCK YES, MUST BE NUMERIC LDA LSTLU GET DEFAULT LIST LU SZB,RSS LU GIVEN? STA P2 NO, USE DEFAULT * LDA NODE1 STA CRN1+1 FORMAT THE ICR ARRAY * CLA INITIALIZE OPEN OPTIONS. M2802 STA TEMP * JSB DOPEN OPEN THE FILE AT NODE1 DEF *+7 DEF UDCB DEF IERRR DEF P1 NAME DEF TEMP OPTION DEF SECU1 SECURITY DEF CRN1 ICR ARRAY * SSA JSB ERCHK OPEN ERROR * CPA B6 TYPE 6 FILE? RSS JMP M2803 NO. * JSB DCLOS YES. CLOSE FOR RE-OPEN. DEF *+3 DEF UDCB DEF IERRR * LDA B4 SET "OPEN OPTION" PARAM TO JMP M2802 FORCE FILE TO TYPE 1. * M2803 ISZ UOPNF SET UDCB OPEN FLAG LDA B1 STA REC# RESET THE RECORD NUMBER * JSB .DFER STORE THE FILE NAME IN THE TITLE DEF TITL+1 DEF P1 * JSB DLOCF GET THE FILE TYPE AND SIZE TO DEF *+9 INCLUDE IN THE TITLE DEF UDCB DEF IERRR DEF TEMP DEF TEMP DEF TEMP DEF SIZ DEF TEMP DEF TYP * LDA SIZ CONVERT THE NUMBER OF SECTORS INTO CLE,ERA THE NUMBER OF BLOCKS. SEZ INA STA SIZ * LDA AS.M1 GET ASCII "-1" LDB TYP GET FILE TYPE INB,SZB,RSS TYPE = -1 (CTU FILE)? JMP M2805 YES, GO SET "-1" INTO TYP JSB CNUMD NO, CONVERT TYPE DEF *+3 AND NODE TO ASCII DEF TYP AND STUFF INTO TITLE. DEF P3 USE P3 AS TEMP BUFR LDA P3+2 M2805 STA TYP * JSB CNUMD CONVERT SIZE DEF *+3 DEF SIZ DEF P3 DLD P3+1 DST SIZ * JSB CNUMD DEF *+3 DEF NODE1 DEF NOD * JSB DEXEC NOW THE TITLE IS READY, PRINT IT DEF *+6 DEF NODE2 DEF ICOD2 WRITE, NO-ABORT DEF P2 LU DEF TITL DEF D36 LENGTH JMP ASCER ERROR RETURN * LDA P2 PREPARE CONTROL WORD FOR LINE SKIP ADA B1100 STA TEMP * JSB DEXEC DEF *+5 DEF NODE2 DEF ICOD3 CONTROL, NO-ABORT DEF TEMP CONWD DEF B1 SKIP ONE LINE JMP ASCER ERROR RETURN * LOOP JSB DREAD READ A RECORD DEF *+6 DEF UDCB DEF IERRR DEF RECRD BUFFER DEF D128 REQUESTED LENGTH DEF LEN ACTUAL READ LENGTH * LDB LEN CPB MD1 LENGTH = -1 (I.E. EOF) ? JMP DONE YES, OUT CPA MD12 EOF ? (IERR=-12) JMP DONE YES SSA JSB ERCHK READ ERROR * JSB CNUMD CONVERT RECORD NUMBER DEF *+3 TO ASCII AND STUFF DEF REC# INTO PRINT LINE. DEF P3 USE P3 AS TEMP BUFR DLD P3+1 DST HEDR2 * SPC 2 * * THIS ROUTINE WILL SHIFT TO THE RIGHT THE LINE NUMBER * AND REPLACE THE LEADING BLANKS BY ZEROS. * LDA HEDR2+1 GET LAST 2 DIGITS AND B377 ISOLATE LOW DIGIT STA TEMP SAVE FOR LATER LDA HEDR2+1 GET LAST 2 DIGITS AGAIN AND HB377 KEEP UPPER BYTE CPA BLANK IS IT A BLANK? LDA HZERO YES REPLACE BY A HIGH 0 IOR TEMP MERGE WITH LAST DIGIT STA HEDR2+1 SAVE IN HEADER LDA HEDR2 GET FIRST 2 DIGITS AND B377 KEEP LOWER BYTE CPA LOBLK IS IT A BLANK? LDA LZERO YES, REPLACE BY A LOW ZERO STA TEMP SAVE LDA HEDR2 GET FIRST DIGITS AGAIN AND HB377 KEEP UPPER BYTE CPA BLANK IS IT A BLANK? LDA HZERO YES, REPLACE BY A HIGH ZERO IOR TEMP MERGE WITH SECOND DIGIT STA HEDR2 SAVE * LDA LEN ADD 4 TO THE BUFFER ADA B4 LENGTH FOR THE HEADER WORDS STA LEN * JSB DEXEC DEF *+6 DEF NODE2 DEF ICOD2 WRITE, NO-ABORT DEF P2 LU DEF HEDR1 BUFFER DEF LEN LENGTH JMP ASCER ERROR RETURN * ISZ REC# UPDATE THE RECORD NUMBER * JSB IFBRK DO THEY WANT TO STOP ? DEF *+1 SZA,RSS JMP LOOP NO,CONTINUE STA BRFLG YES, SAVE BREAK INDICATOR * DONE JSB DCLOS CLOSE THE FILE DEF *+3 DEF UDCB DEF IERRR * SSA ERROR? JSB ERCHK YES, REPORT IT (WON'T RETURN) * CLA CLEAR UDCB OPEN FLAG STA UOPNF JSB EOFPR PAGE-EJECT IF LP JMP QUERY * * LOCAL STORAGE AND CONSTANTS * AS.M1 ASC 1,-1 LEN NOP HEDR1 OCT 20040 HEDR2 NOP NOP OCT 20040 DOUBLE BLANK * * RECRD BSS 128 * * REC# NOP TITL OCT 20040 REP 3 NOP ASC 5, TYPE: TYP NOP ASC 11, NUMBER OF BLOCKS: SIZ NOP NOP ASC 10, LOCATED AT NODE: NOD NOP NOP NOP * * HED REMAT: DL REQUEST. * (C) HEWLETT-PACKARD CO. 1979 * * DL [,NAMR [,MSECU [,LISTLU]]] * * LIST NODE1 FILE DIRECTORY AT LOCAL LISTLU. * NAMR = NAME, CRN & TYPE FILTER FOR REMOTE DISC * OR FLOPPY BASED SYSTEM, OR LU OF CTU FOR CTU BASED SYSTEM. * M0300 LDB CP1 CHECK P1 TYPE CPB B1 NUMERIC? RSS YES, P1 = CRN OR -LU JMP M0302 NO, MAY BE NAME FILTER JSB .DFER MOVE DASHES TO REQST DEF RQB+#REQ+3 DEF DASHS LDA P1 MOVE CRN OR -LU JMP M0310 TO REQST. * M0302 SZB FILTER SPECIFIED? JMP M0305 YES LDA DBBLK NO. SET FIRST WORD TO BLANKS STA P1 M0305 JSB .DFER MOVE NAME TO REQST DEF RQB+#REQ+3 DEF P1 * LDA TYPE1 TYPE FILTER SPECIFIED? SZA IOR HIBIT YES,SET SIGN BIT STA RQB+#REQ+8 MOVE TYPE FILTER TO REQST * LDA CRN1 MOVE LABEL TO REQST M0310 STA RQB+#REQ+7 * LDA P2 MOVE MASTER SECURITY CODE TO REQST STA RQB+#REQ+6 * LDA LSTLU GET DEFAULT LISTLU LDB CP3 LISTLU PARAM PRESENT? SZB,RSS NO, USE DEFAULT STA P3 * CLA INDICATE NEW REQUEST IN REQST STA RQB+#REQ+2 * M0315 CLA,INA SET IN STREAM TYPE STA RQB+#STR * LDA D34 INDICATE 68 CHAR LINE IN REQST STA RQB+#REQ+1 LDA NODE1 SET NODE IN REQST (REQST IS BEING STA RQB+#DST SENT TO NODE1) * * SEND REQST & PRINT DIRECTORY ON LIST LU * JSB #MAST SEND REQUEST TO NODE1 DEF *+7 DEF CNWD1 NO ABORT. DATA ASSOC WITH REPLY DEF L#REQ REQST LENGTH DEF DLDAT DATA BUFR DEF B0 NO DATA ASSOCIATED WITH REQST DEF D34 INCOMING DATA BUFR LENGTH DEF L#REQ MAX REPLY LENGTH JMP ASCER ERROR RETURN * LDA RQB+#REP NORMAL RETURN. CHECK STATUS SZA,RSS DONE? JMP M0320 NO JSB LCALS FORCE LOCAL NODE FOR EQTYP CALL LDA P3 GET LOCAL LISTLU JSB EQTYP CHECK ITS EQUIPMENT TYPE JSB LCALC RESET NODE CPA D10 IS IT A LINE PRINTER? RSS JMP QUERY NO LDA P3 YES, SET UP EXEC CALL TO IOR B1100 DO A PAGE EJECT. STA TEMP * JSB EXEC LP PAGE EJECT DEF *+4 DEF B3 DEF TEMP DEF MD1 * JMP QUERY * M0320 JSB REIO PRINT A LINE ON LISTLU DEF *+5 DEF ICOD2 WRITE DEF P3 LISTLU DEF DLDAT DEF RQB+#REQ+1 JMP RIOER ERROR RETURN * JSB IFBRK CHECK BREAK FLAG DEF *+1 SZA,RSS IS IT SET? JMP M0315 NO, GET ANOTHER LINE STA BRFLG YES, SAVE BREAK INDICATOR JMP QUERY AND GET NEXT COMMAND. * DLDAT BSS 34 DLIST DATA BUFR DASHS ASC 3,------ L#REQ ABS #REQ+16 SKP HED REMAT: CL REQUEST. * (C) HEWLETT-PACKARD CO. 1979 * * CL [,LISTLU] * * LIST NODE1 CARTRIDGE DIRECTORY AT LOCAL LIST LU * M3000 LDA CP1 CHECK P1 TYPE. SZA CPA B1 NUMERIC LU? RSS YES. JMP ERR56 NO. ERROR. * DLD CP1 MOVE LIST LU DST CP3 FOR 'DL' PROCESSOR. DLD CLFLG SET FILTER =-1; FILTER+1 =0 DST P1 TO INDICATE A CARTRIDGE LIST REQUEST. CLA SEND A CLEAN STA P2 REQUEST BUFFER. JMP M0305 USE THE 'DL' PROCESSOR. * CLFLG OCT -1,0 * HED REMAT: AT REQUEST. * (C) HEWLETT-PACKARD CO. 1979 * * AT,[USER1.GROUP/PASSWORD[,USER2.GROUP/PASSWORD]] * AT,[PASSWORD1[,PASSWORD2]] * * CREATE AND ATTACH TO NON-INTERACTIVE SESSION AT NODE1 AND/OR NODE2. * * M3100 LDB CP1 FIRST PARAM GIVEN? SZB JMP M3102 YES. GO CHECK IF ASCII. LDA CP2 NO. SECOND PARAM GIVEN? SZA (IF NOT, LET ASCHK DO THE WORK) JMP M3105 YES. GO CHECK IF ASCII. M3102 JSB ASCHK CHECK 1ST PARAM ((B)=CP1). M3105 LDB CP2 SECOND PARAM, IF GIVEN, SZB MUST BE ASCII. JSB ASCHK * JSB #RMSM GO TO PROCESSOR ROUTINE. DEF *+7 DEF B1 #RMSM REQUEST CODE. DEF INBUF "AT" COMMAND STRING. DEF INCNT STRING LENGTH, +WORDS. DEF NODE1 DEF NODE2 DEF LOGLU REMAT LOGGING LU. * JMP QUERY HED REMAT: DE REQUEST. * (C) HEWLETT-PACKARD CO. 1979 * * DE[,N1][,N2] * * DETACH FROM AND RELEASE NON-INTERACTIVE SESSION AT NODE1 (N1) * AND/OR NODE2 (N2). * * M3200 LDA CP1 IF FIRST PARAM IS LDB P1 SPECIFIED, IT MUST BE SZA "N1" OR "N2". JSB N1N2 * LDA CP2 LIKEWISE FOR SECOND PARAM. LDB P2 SZA JSB N1N2 (NO RETURN IF ERROR) * JSB #RMSM GO TO PROCESSOR ROUTINE. DEF *+7 DEF B2 #RMSM REQUEST CODE. DEF CP1 PARAM 1 FLAG (PARSE BUFFER). DEF CP2 PARAM 2 FLAG (PARSE BUFFER). DEF NODE1 DEF NODE2 DEF LOGLU REMAT LOGGING LU. * JMP QUERY * * N1N2 NOP CHECK PARAM FOR "N1" OR "N2". CPB "N1" RSS = "N1". CPB "N2" RSS = "N2". JMP OPER NEITHER...ERROR. JMP N1N2,I OK RETURN. * "N1" ASC 1,N1 "N2" ASC 1,N2 HED REMAT: EX REQUEST. * (C) HEWLETT-PACKARD CO. 1979 * * EX PROCESSOR * * TERMINATE THE OPERATOR INTERFACE PROGRAM. * M0500 JSB #RMSM LOG OFF ANY REMOTE SESSIONS. DEF *+2 DEF B0 * JSB REIO DISPLAY TERMINATION MESSAGE DEF *+5 ON LOG DEVICE. DEF ICOD2 DEF LOGLU DEF TRMSG DEF B6 JMP RIOER ERROR RETURN * JSB CLSFL CLOSE OPEN FILES. * JSB EXEC EXIT. DEF *+2 DEF B6 * TRMSG ASC 6, $END REMAT * HED REMAT: SW REQUEST. * (C) HEWLETT-PACKARD CO. 1979 * * SW [,NODE1 [,NODE2 [,SECURITY CODE]]] * OR * SW,LOCAL * OR * SW [,NODE1 [:USER.GROUP/PASS] [,NODE2 [:USER.GROUP/PASS] [,SECUR]]] * * SELECT NODE1 AND/OR NODE2 FOR SUBSEQUENT OPERATOR * REQUESTS. IF NO PARAMETERS ARE GIVEN, DISPLAYS THE * CURRENT VALUES OF NODE1 AND NODE2. 'SW,LOCAL' SETS BOTH * NODES TO THE LOCAL NODE #. THE SECURITY CODE * SET IN 'LSTEN' MUST BE ENTERED IN ORDER TO SWITCH * FROM A LOCAL NODE TO A REMOTE NODE. * M0990 LDA CP1 SEE IF VALUE SUPPLIED SZA IF NOT SUPPLIED, PRINT CURRENT VALUE JMP M0991 SUPPLIED LDA CP2 IS PARAM 2 HERE ? SZA JMP M0991 YES SW MOD * LDA NODE1 NO, CHECK FOR NEG. LU SSA CMA,INA MAKE POSITIVE FOR CNUMD CALL STA TEMP JSB CNUMD SW DISPLAY FUNCTION DEF *+3 DEF TEMP DEF ORNM LDB MSIGN IF NODE1 IS LDA NODE1 NEGATIVE, THEN SSA INSERT MINUS SIGN STB ORNM+1 INTO DISPLAY BUFR. * LDA NODE2 REPEAT FOR NODE2 SSA CMA,INA STA TEMP JSB CNUMD DEF *+3 DEF TEMP DEF DSTNM LDB MSIGN LDA NODE2 SSA STB DSTNM+1 * JSB REIO DISPLAY MESSAGE DEF *+5 DEF ICOD2 DEF LOGLU DEF SWBUF DEF D18 MESSAGE LENGTH JMP RIOER ERROR RETURN * JSB #RMSM DISPLAY ACCOUNT NAMES FOR REMOTE DEF *+7 SESSIONS (IF ANY) AT NODE1 & NODE2. DEF MD1 #RMSM REQUEST CODE. DEF TEMP DUMMY PARAM. DEF TEMP DUMMY PARAM. DEF NODE1 DEF NODE2 DEF LOGLU LOGGING LU. * JMP QUERY GET ANOTHER REQUEST * M0991 JSB #RMSM PERFORM PRE-PROCESSING OF COMMAND FOR DEF *+7 OPTIONAL ACCOUNT-NAME QUALIFIERS ON DEF B3 NODE NUMBERS FOR REMOTE SESSIONS. DEF INBUF COMMAND BUFFER. DEF INCNT COMMAND LEN, +WORDS, ADJUSTED ON RETURN. DEF NODE1 DEF NODE2 DEF LOGLU LOGGING LU. * SZA IF THERE WERE NODE QUALIFIERS, JSB $PARS RE-PARSE CONVERTED SW COMMAND. * LDB CP1 CPB B2 1ST PARAM ASCII? JMP SWALF YES, CHECK FOR "LOCAL" SZB,RSS NO, IS IT MISSING? JMP SW1 YES, GO CHECK 2ND PARAM LDA P1 NO, GET IT CPA #NODE DOES HE WANT NODE1 LOCAL? RSS YES, GO CHECK 2ND PARAM JMP SW2 NO, WANTS REMOTE. CHECK HIM OUT * SW1 LDB CP2 SZB,RSS 2ND PARAM MISSING? JMP M0992 YES, LET HIM DO IT LDA P2 NO, GET IT CPA #NODE DOES HE WANT NODE2 LOCAL? JMP M0992 YES, ALLOW SWITCH SW2 LDA PRMPT NO, CHECK HIM OUT CPA "#" IS HE ALREADY REMOTE? JMP M0992 YES, LET HIM DO WHAT HE WANTS LDB CP3 GET 3RD PARAM FLAG JSB ASCHK IF NOT ASCII, WON'T RETURN LDB P3 GET 3RD PARAM BLF,BLF CMB CPB #SWRD SAME AS SECURITY CODE? RSS YES, ALLOW SWITCH JMP OPER NO, SWITCH NOT ALLOWED M0992 LDA NODE1 DEFAULT LDB CP1 CPB B1 PARAM NUMERIC ? LDA P1 YES, GET IT STA NODE1 SAVE IT LDB NODE2 DEFAULT LDA CP2 GET 2ND PARAM FLG CPA B2 2ND PARAMETER ALPHAMERIC? JMP OPER YES, ERROR CPA B1 NUMERIC? LDB P2 OK GET 2ND PARAM STB NODE2 SAVE IT * JSB #RMSM LOG ON TO ACCOUNT NAMES (IF GIVEN DEF *+2 IN ORIGINAL SW COMMAND). DEF MD2 * JMP QUERY GO BACK FOR NEXT COMMAND * SWALF DLD P1 GET THE FIRST 2 WORDS OF THE ALFAMERIC PARAMETER CPA ALO FIND IF THIS IS A "LOCAL" SWITCH. RSS THAT'S CLOSE ENOUGH JMP OPER FORGET IT LDA #NODE GET THE LOCAL NODE NUMBER AGAIN STA NODE1 SAVE IT IN NODE1 STA NODE2 AND IN NODE2 JMP QUERY GO BACK FOR NEXT COMMAND. * SWBUF ASC 4,NODE1 = ORNM BSS 3 ASC 8, NODE2 = DSTNM BSS 3 ALO ASC 1,LO MSIGN ASC 1, - HED REMAT: TE REQUEST. * (C) HEWLETT-PACKARD CO. 1979 * * TE,-ASCII MESSAGE- PROCESSOR. * * SEND A MESSAGE TO THE NODE1 STATION OPERATOR. * M1000 EQU * JSB TELL1 CALCULATE BUFFER LNTH & ADD LOCAL NODE # JSB DMES1 SEND TO LOCAL NODE DEF NODE1 JMP ASCER REPORT ERROR JMP QUERY RETURN TO CALLER SPC 1 XLA1 XLA XPNTR,I DMS INSTRUCTION FOR SCANNING NRV SPC 2 * "BROADCAST" REQUEST * BRCST NOP REPORT ERROR BUT CONTINUE JSB TELL1 CALCULATE BUFFER LNTH & MOVE LOCAL NODE # DLD #NCNT SET UP BROADCAST LOOP DST XCNTR BRLUP EQU * DMS1 LDA XPNTR,I GET NODE # (XLA XPNTR,I IF DMS) NOP (STORAGE RESERVED FOR XLA IF DMS) CPA #NODE SAME AS LOCAL? JMP BRLED YES, NO NEED TO BROADCAST TO OURSELVES STA XNODE SAVE NODE NUMBER JSB CNUMD CONVERT NODE # TO ASCII DEF *+3 DEF XNODE NODE # DEF BRCM1 MESSAGE JSB EXEC PRINT "BROADCASTING TO " DEF *+5 DEF B2 DEF LOGLU DEF BRCMS DEF BRCML JSB DMES1 SEND TELLOP DEF XNODE JSB ERMSG LOG ERRORS, IF ANY. BRLED EQU * SPC 1 LDA XPNTR ADVANCE ADA NRVSZ NRV STA XPNTR POINTER ISZ XCNTR END OF LOOP? JMP BRLUP NO, CONTINUE IN LOOP JMP QUERY YES, EXIT LOOP. SPC 2 BRCMS ASC 11,BROADCASTING TO NODE# BRCM1 BSS 3 STORAGE FOR NODE # BRCML ABS *-BRCMS SPC 1 XNODE NOP XCNTR NOP BROADCAST LOOP COUNTER XPNTR NOP BROADCAST LOOP POINTER TELL1 NOP LDB CP1 SZB,RSS JMP OPER ERROR 10 IF NO MESSAGE. * CLB FIND THE COMMA IN INBUF. LDA BUFAD STA TEMP * M1010 LDA TEMP,I GET NEXT WORD. AND HB377 ALF,ALF CPA COM JMP M1020 COMMA IN LEFT BYTE. * LDA TEMP,I AND B377 CPA COM JMP M1030 COMMA IN RIGHT BYTE. * ISZ TEMP BUMP TO NEXT WORD. INB COUNT WORDS SKIPPED. JMP M1010 LOOP. * M1020 LDA TEMP,I LEFT. CLEAR COMMA AND B377 STA TEMP,I CMB,INB ADJUST WORD COUNT ADB INCNT STB INCNT CPB D37 IF EXACTLY 72 CHAR MESG, RSS ALLIGN MESSAGE TO WORD JMP M1040 BOUNDARY AND DECREMENT INCNT. LDA TEMP ADA D36 LDA A,I AND B377 CPA LOBLK RSS JMP M1040 LDB TEMP FORM DEST BYTE ADR CLE,ELB LDA B FORM SOURCE BYTE ADR INA JSB .MBT ALLIGN TO WORD BOUNDARY DEF D72 NOP LDA INCNT DECREMENT INCNT ADA MD1 STA INCNT JMP M1040 * M1030 ISZ TEMP RIGHT. BUMP TO NEXT WORD. INB * CMB,INB ADJUST WORD COUNT. ADB INCNT STB INCNT * M1040 EQU * JMP TELL1,I RETURN TO CALLER SPC 2 * SUBROUTINE TO SEND DMESG * JSB DMES1 * DEF * * * DMES1 NOP SUBROUTINE TO SEND DMESG LDA DMES1,I GET DEF TO NODE # STA DMES2 ISZ DMES1 JSB DMESG SEND MESSAGE TO NODE1 DEF *+4 DMES2 NOP ADDRESS OF NODE # DEF TEMP,I BUFFER DEF INCNT LENGTH. SZA,RSS ERROR? TAKE ERROR EXIT ISZ DMES1 NO ERROR, TAKE "GOOD" EXIT JMP DMES1,I RETURN TO CALLER HED REMAT: LO REQUEST * (C) HEWLETT-PACKARD CO. 1979 * * LO PROCESSOR * * LO [,NAMR [,PARTITION # [,# PAGES]]] M-SYSTEMS * LO,NAMR L-SYSTEMS * * LOAD AN ABSOLUTE PROGRAM FROM A NODE1 FILE OR * LOCAL 'LU' (NAMR) TO AN RTE-M OR -L SYSTEM AT NODE2. * DEFAULT FOR NAMR IS LU 4 IN M SYSTEMS. * * IN RTE-L SYSTEMS NAMR IS NOT OPTIONAL AND LOADING * FROM AN LU IS ILLEGAL. * M1400 LDB CP1 GET 1ST PARAM FLAG LDA B4 GET DEFAULT LOCAL LU (=4) SZB,RSS MISSING? STA P1 YES, USE DEFAULT LDA P1 NO, GET THE PARAM SZA,RSS IF ZERO, JMP OPER GIVE ERROR. * JSB .DFER SAVE FILE NAME DEF RQB+#PMS+2 OR LU IN DEF P1 REQUEST BUFFER. * * FORMAT 1ST APLDR SCHED-PARAM & SET INTO REQST BUFR * LDA LOGLU AND B77 SET FUNCTION CODE TO 1 IF BOTH ALF P2 & P3 ARE MISSING OR 0, ELSE TO IOR ICOD1 2. INCLUDE REMOTE BIT & LOGLU. SET LDB P2 INTO REQST BUFR. SZB,RSS LDB P3 SZB INA STA RQB+#PMS * * FORMAT 2ND APLDR SCHED-PARAM & SET INTO REQST BUFR * LDB CP2 GET 2ND PARAM FLAG SZB MISSING? JSB INTCK NO, MUST BE NUMERIC LDA P2 GET PARTITION # PARAM AND B77 ISOLATE LOWER 6 BITS STA TEMP SAVE LDB CP3 GET 3RD PARAM FLAG? SZB MISSING? JSB INTCK NO, MUST BE NUMERIC LDA P3 GET # PAGES PARAM AND B37 ISOLATE LOWER 5 BITS ALF,ALF POSITION TO BITS 10:14 ALS,ALS IOR TEMP INCLUDE PARTITION # STA RQB+#PMS+1 SET INTO REQST BUFR * DLD SECU1 SET SECU CODE & CRN DST RQB+#IBF INTO REQST BUFR. LDA NODE1 SET FILE NODE INTO STA RQB+#IBL+1 REQST BUFR. * LDA NODE2 SET REMOTE RTE-M STA RQB+#DST NODE # INTO REQST BUFR. * JMP M1505 GO FINISH UP & SEND REQST HED REMAT: FL REQUEST * (C) HEWLETT-PACKARD CO. 1979 * * FL(USH) PROCESSOR * * FL,NAMR,NODE # * * CLOSE FILE1 AT NODE1 (PREVIOUSLY SELECTED BY SW * COMMAND) TO ANY USER AT THE GIVEN NODE #. IF * NODE # = -1, CLOSE FILE1 TO USERS AT ALL NODES. * NOTE THAT ALL MAIN PARAMETERS ARE REQUIRED, * PLUS THE NAMR SUBPARAMETER 'CRN'. * THIS COMMAND IS ONLY ALLOWED FROM A TTY-TYPE * INPUT DEVICE. * * M2401 LDA LUTYP INPUT LU MUST BE TTY SZA JMP ERR45 IT IS NOT * LDB CP1 GET 1ST PARAMETER FLAG JSB ASCHK MUST BE ASCII JSB .DFER SET FILE NAME DEF RQB+#DCB INTO REQST BUFR DEF P1 AND INTO MESG JSB .DFER DEF FMSG1+3 DEF P1 * LDA CRN1 GET CRN SUBPARAMETER SZA,RSS GIVEN AND NON-ZERO? JMP OPER NO, GIVE INPUT ERROR STA RQB+#ICR YES, SET INTO REQST BUFR * LDB CP2 GET 2ND PARAM FLAG JSB INTCK MUST BE NUMERIC LDA P2 GET 2ND PARAMETER SSA IS IT POSITIVE? CPA MD1 NO, THEN IT BETTER BE -1 RSS IT IS. OK JMP OPER IT ISN'T. ERROR * STA RQB+#NOD SET P2 INTO REQST BUFR SSA NODE # POSITIVE? JMP M2410 NO JSB CNUMD YES, CONVERT NODE # DEF *+3 DEF P2 NODE # DEF FMSGA+3 LDA .FMGA MOVE NODE # LDB .FMG2 JSB .MVW DEF D8 NOP LDA D27 SET MSG LENGTH STA TEMP FOR REIO CALL JMP M2415 * M2410 LDA .FMGB MOVE "ALL NODES" TO LDB .FMG2 OUTPUT MSG JSB .MVW DEF B7 NOP LDA D26 SET MSG LENGTH STA TEMP FOR REIO CALL * M2415 JSB CNUMD CONVERT NODE1 DEF *+3 DEF NODE1 DEF FMSG1+10 * JSB REIO OUTPUT MESSAGE TO LOGLU DEF *+5 DEF ICOD2 DEF LOGLU DEF FMSG1 DEF TEMP MSG LENGTH JMP RIOER ERROR RETURN * LDA P.STK,I GET INPUT LU IOR B400 INCLUDE ECHO BIT STA TEMP SET CONWD FOR REIO * JSB REIO DEF *+5 DEF ICOD1 DEF TEMP CONWD DEF TEMP+1 INPUT BUFR DEF B1 MAX INPUT LENGTH JMP RIOER ERROR RETURN * LDA TEMP+1 GET INPUT CPA "NO" WAS ANSWER "NO"? JMP QUERY YES, SO GET NEXT COMMAND CPA "YE" WAS ANSWER "YES"? RSS YES, CONTINUE JMP OPER MUST BE "YES" OR "NO". ERROR * LDA B6 SET STREAM, STA RQB+#STR DEST, AND LDA NODE1 FCODE INTO STA RQB+#DST REQST BUFR LDA D13 STA RQB+#FCN * JSB #MAST SEND REQST BUFR TO NODE1 DEF *+7 DEF CNWD1 NO ABORT DEF L#NOD REQST BUFR LENGTH DEF * DUMMY DATA BUFR DEF B0 NO DATA ASSOCIATED WITH REQST DEF B0 NO DATA ASSOCIATED WITH REPLY DEF L#NOD MAX REQST/REPLY LENGTH * JMP ASCER PROCESS ASCII ERROR CODE LDA RQB+#EC2 CHECK NUMERIC CODE STA IERRR IN THE REPLY SSA IF NEGATIVE. JSB ERCHK JSB CNUMD CONVERT # ENTRIES DEF *+3 DEF RQB+#EC2 FLUSHED TO ASCII AND DEF FMSG3+12 SET INTO MESSAGE. * JSB REIO OUTPUT MESSAGE TO LOGLU DEF *+5 DEF ICOD2 DEF LOGLU DEF FMSG3 DEF D15 JMP RIOER ERROR RETURN * JMP QUERY GET NEXT COMMAND * ERR45 LDA D45 REPORT ERROR JMP OPERS SPC 1 FMSG1 ASC 19,CLOSE AT NODE TO USERS AT FMSG2 BSS 8 .FMG2 DEF FMSG2 .FMGA DEF *+1 FMSGA ASC 8, NODE ? _ * .FMGB DEF *+1 ASC 7, ALL NODES? _ * FMSG3 ASC 15,# RFAM ENTRIES FLUSHED = XXXXX "YE" ASC 1,YE "NO" EQU SWBUF ASCII "NO" L#NOD ABS #NOD+1 HED REMAT: PU REQUEST * (C) HEWLETT-PACKARD CO. 1979 * * PU PROCESSOR * * PU,NAMR * * PURGE A FILE 'NAMR' AT NODE1. * * M2501 LDA CP1 GET 1ST PARAM FLAG JSB ASCHK MUST BE ASCII * LDA NODE1 STA CRN1+1 FORMAT THE CRN ARRAY * JSB DPURG PURGE THE FILE DEF *+6 DEF UDCB DEF IERRR DEF P1 FILE NAME DEF SECU1 SECURITY CODE DEF CRN1 CRN ARRAY * SSA JSB ERCHK ANY ERROR ?o JMP QUERY GET NEXT REQUEST HED REMAT: RN REQUEST * (C) HEWLETT-PACKARD CO. 1979 * * RN PROCESSOR * * RN,NAMR,NEW NAME * * RENAME A FILE AT NODE1. * * M2550 LDB CP1 GET 1ST PARAM FLAG JSB ASCHK MUST BE ASCII * LDB CP2 GET 2ND PARAM FLAG JSB ASCHK NEW NAME MUST BE ASCII * LDA NODE1 STA CRN1+1 FORMAT CRN ARRAY * JSB DNAME RENAME THE FILE DEF *+7 DEF UDCB DEF IERRR DEF P1 OLD NAME DEF P2 NEW NAME DEF SECU1 SECURITY CODE DEF CRN1 CRN ARRAY * SSA JSB ERCHK ANY ERROR ? JMP QUERY GET NEXT HED REMAT: CR REQUEST * (C) HEWLETT-PACKARD CO. 1979 * * CR PROCESSOR * * CR,NAMR * * CREATE A FILE AT NODE1. * * M2701 LDB CP1 GET 1ST PARAM FLAG JSB ASCHK MUST BE ASCII * LDA SIZE1 GET # BLOCKS PARAM ADA MD1 ERROR IF <= 0 SSA JMP OPER * LDA CRN1 FORMAT THE LDB NODE1 CRN ARRAY DST TEMP * JSB DCRET CREATE THE FILE DEF *+8 DEF UDCB DEF IERRR DEF P1 NAME DEF SIZE1 # BLOCKS/REC-SIZE (2-WORD ARRAY) DEF TYPE1 TYPE DEF SECU1 ISECU DEF TEMP CRN ARRAY (2 WORDS) * SSA JSB ERCHK * JSB DCLOS CLOSE THIS NEW FILE DEF *+3 DEF UDCB DEF IERRR * SSA JSB ERCHK ERROR JMP QUERY GET NEXT HED REMAT: IO REQUEST * (C) HEWLETT-PACKARD CO. 1979 * * IO REQUEST (L-SERIES ONLY) * * IO (ANY PARAMETERS IGNORED) * * LIST THE SYSTEM I/O CONFIGURATION FROM NODE1 TO THE LIST LU * AT THE LOCAL NODE. * * M1450 LDA LSTLU OUTPUT TO LIST LU. AND B77 ALF POSITION FOR REQUEST. IOR HIBIT REMOTE BIT. IOR B5 I/O FCN CODE FOR APLDR-L. STA RQB+#PMS SET IN REQUEST BUFFER. JMP M1504 SET REMOTE NODE & SCHED APLDR. HED REMAT: PL REQUEST * (C) HEWLETT-PACKARD CO. 1979 * * PL REQUEST * * PL [,LIST LU [,OPT]] M-SYSTEMS (OPT IS INTEGER) * PL [,OPT] L-SYSTEMS (OPT IS ASCII) * * LIST PROGRAM INFO FROM NODE1 TO THE LISTLU (DEFAULT IS LOGLU) * AT THE LOCAL NODE. IN M-SYSTEMS, IF OPT=0, LIST * ALL PROGRAMS, PRIORITIES, & BOUNDS. IF OPT=1, LIST * PARTITIONS & THEIR PROGRAMS, PARTITION SIZE, AND * PAGE #. * * IN L-SYSTEMS, OPT CAN BE ONE OF THE PROGRAM STATUS CODES * DESCRIBED IN THE RTE-L DOCUMENTATION WHICH WILL CAUSE A * SELECTIVE LIST OF ONLY THOSE PROGRAMS WITH THAT STATUS. * THERE ARE 2 ADDITIONAL OPTIONS: 'IT' (LIST TIME-LISTED * PROGRAMS) AND 'MB' (LIST MEMORY BOUNDS OF EACH PROGRAM). * IF NO OPTION IS SPECIFIED, ALL PROGRAMS, THEIR STATUS, * PRIORITY, AND POINT OF SUSPENSION ARE LISTED. * M1500 CLA STA RQB+#PMS+2 LDB CP1 GET TYPE FLAG PRAM #1. CPB B1 NUMERIC? JMP M1502 YES. LDA P1 GET 1ST PARAM. CPB B2 ASCII? STA RQB+#PMS+2 YES. STORE IN REQUEST. JMP M1503 * M1502 LDA P1 GET 1ST PARAM SZA,RSS ZERO OR MISSING? M1503 LDA LSTLU YES, USE DEFAULT LIST LU. AND B77 ALF POSITION LIST LU IOR HIBIT INCLUDE REMOTE-BIT STA RQB+#PMS SET INTO REQST BUFR * LDB CP2 GET 2ND PARAM FLAG SZB MISSING? JSB INTCK NO, MUST BE NUMERIC LDA P2 GET 2ND PARAM STA RQB+#PMS+1 SET INTO REQST BUFR * M1504 LDA NODE1 SET REMOTE NODE # STA RQB+#DST INTO REQST BUFR. * M1505 LDA B3 SET STREAM TYPE STA RQB+#STR INTO REQST BUFR. * LDA D9 SET ICODE TO SCHED- STA RQB+#ICD WITH-WAIT. * JSB .DFER SET "APLDR"  DEF RQB+#PGN INTO REQST BUFR. DEF APNAM SPC 2 * * HERE WE SEND REQST TO SCHEDULE APLDR WITH WAIT * TO DO A DOWN LOAD, PROGRAM LIST, OR IO (L-SERIES). * CONTROL WILL BE RETURN WHEN APLDR IS COMPLETE * JSB #MAST SEND REQUEST TO SPECIFIED NODE DEF *+7 DEF CNWD2 NO ABORT, LONG TIMEOUT DEF L#FN1 REQST LENGTH DEF * DUMMY DATA BUFR DEF B0 NO DATA ASSOCIATED WITH REQST DEF B0 NO DATA ASSOCIATED WITH REPLY DEF L#FN1 MAX REQST/REPLY LENGTH JMP ASCER ERROR RETURN * LDB RQB+#EC2 GET B-REG VALUE FROM REPLY SZB,RSS ANY RETURN PARAMETERS? JMP QUERY NO * LDA RQB+#RPM YES, GET 1ST PARAM CPA HIBIT SPECIAL I/O ERROR INDICATOR? RSS YES, APLDR UNABLE TO PRINT MESSAGE JMP QUERY NO, APLDR PRINTED ALL MESSAGES DLD RQB+#RPM+1 GET 2ND TWO RETURN PARAMS (ASCII JMP ASCER ERROR CODE) AND DISPLAY. SPC 3 APNAM ASC 3,APLDR L#FN1 ABS #FNO+1 HED REMAT: SL REQUEST * (C) HEWLETT-PACKARD CO. 1979 * * SLAVE PROGRAM LIST REQUEST * SLIST (,LIST LU) * * LIST ALL PTOP SLAVE PROGRAMS AT NODE1 * ON THE LOCAL LIST LU * * * M1700 LDA CP1 SEE IF LIST LU SUPPLIED LDB LSTLU GET DEFAULT CPA B1 IF TYPE=1 USE SUPPLIED RSS YES...DON'T USE DEFAULT STB P1 SAVE FOR PRINTING LDA DBBLK GET SPACE WORD STA CP3 SAVE FOR NAME MOVE * LDA B7 "SL" FUNCTION CODE JSB PTPSB GO FORMAT REQUEST AND CALL #MAST DEC 128 DATA BUFFER SIZE * JSB REIO PRINT HEADER MESSAGE DEF *+5 DEF ICOD2 DEF P1 DEF HDMSG DEF D10 JMP RIOER ERROR RETURN * LDA BUFAD GET READ BUFFER ADDRESS LDB 0,I 1ST WORD HAS # OF ENTRIES CMB,INB,SZB,RSS JMP LPFOR NO ENTRIES STB COUNT SET LOOP COUNTER INA POINT TO 1ST NAME * RDLOP STA RTEMP SET NAME BUFFER POINTER * JSB .DFER MOVE NAME TO PRINT AREA DEF P3 RTEMP NOP * JSB REIO WRITE OUT LINE DEF *+5 DEF ICOD2 DEF P1 WRITE LU DEF CP3 DEF MD7 7 CHARACTERS JMP RIOER ERROR RETURN * LDA RTEMP ADA B3 GET TO NEXT ENTRY ISZ COUNT BUMP COUNTER JMP RDLOP GET NEXT ENTRY * LPFOR JSB LCALS SEE IF IT IS THE LINE-PRINTER LDA P1 GET LU JSB EQTYP GET EQT TYPE JSB LCALC CPA D10 LP? RSS YES JMP QUERY NO LDA P1 IOR B1100 OR IN CONTROL WORD STA P1 * JSB EXEC DO A PAGE EJECT DEF *+4 DEF B3 DEF P1 DEF MD1 * JMP QUERY AND RETURN FOR NEXT ENTRY SPC 1 COUNT NOP HDMSG ASC 10, ACTIVE SLAVE PROGS HED REMAT: SO REQUEST * (C) HEWLETT-PACKARD CO. 1979 * * SO REQUEST * SO [,PNAME] * * TERMINATES A PTOP SLAVE PROGRAM AT NODE1. IF NO * PROGRAM IS SPECIFIED, TERMINATES ALL CURRENT * PTOP SLAVES AT THE NODE1 CPU. * M1800 JSB .DFER MOVE NAME INTO REQUEST DEF RQB+#PCB DEF P1 * LDA B6 "SO" IS PTOP FUNCTION 6 JSB PTPSB FORMAT REQUEST AND CALL #MAST DEC 0 NO DATA BUFFER * JMP QUERY RETURN SPC 4 * * THIS SUBROUTINE IS USED IN COMMON FOR "SO" AND "SL". IT * FORMATS THE PTOP REQUEST AND CALLS #MAST TO SEND THE * REQUEST AND GET THE REPLY (AND DATA). * PTPSB NOP STA RQB+#FCD SAVE PTOP FUNCTION CODE LDA B4 STA RQB+#STR SET STREAM TYPE (4) LDA NODE1 STA RQB+#DST SET REQST DESTINATION NODE CLA STA RQB+#EC1 INITIALIZE ERROR FIELDS STA RQB+#ENO * JSB #MAST SEND REQ (& RCV DATA IF SL) DEF *+7 DEF CNWD1 NO ABORT DEF L#PCB 17 WORD REQUEST DEF INBUF DEF B0 NO DATA ASSOCIATED WITH REQST DEF PTPSB,I INCOMING DATA BUFR LENGTH DEF L#PCB JMP ASCER #MAST DETECTED ERROR * ISZ PTPSB JMP PTPSB,I RETURN * L#PCB ABS #PCB+3 * * HED REMAT: LC REQUEST * (C) HEWLETT-PACKARD CO. 1979 * * $LC * * DISPLAY LOCAL NODE # ON LOGLU. * * M2100 LDA #NODE GET LOCAL NODE # STA P3 SAVE IT TEMPORARILY JSB CNUMD CONVERT TO ASCII DEF *+3 DEF P3 DEF PRMG1 * JSB REIO SEND MESSAGE DEF *+5 DEF ICOD2 DEF LOGLU DEF PRBUF DEF D10 JMP RIOER ERROR RETURN * JMP QUERY GO BACK FOR MORE INPUT SPC 2 * * PRBUF ASC 7,LOCAL NODE = PRMG1 ASC 3, XXXXX HED REMAT: SUBROUTINES * (C) HEWLETT-PACKARD CO. 1979 * * SUBROUTINE TO CALCULATE ACTUAL CHECKSUM AND COMPARE * IT TO THE CHECKSUM IN THE INPUT RECORD. RETURNS *+1 * IF ERROR DETECTED, ELSE *+2. EXPECTS RECORD TO BE IN * 'INBUF', AND 'CSFLG' TO BE SET AS FOLLOWS: 0=NO CHECKSUM, * "BR"=BINARY RELOCATABLE RECORD, "AB"=ABSOLUTE RECORD. * CKSUM NOP LDA CSFLG SZA,RSS CHECKSUM REQUIRED? JMP CK4 NO * LDA INBUF CHECK RECORD LENGTH ALF,ALF IN WORD 1. STA RLEN CMA,INA ADA B377 SSA OK? JMP CKSUM,I NO, TAKE ERROR RETURN (*+1) * LDA INBUF+1 START CALCULATED CKSUM STA CSCAL WITH WORD 2. * LDA MD1 CALCULATE OFFSET OF -1 LDB CSFLG FOR BR, +1 FOR BA CPB "BR" BR? JMP CK1 NO LDA B1 YES, SET OFFSET TO +1 LDB CSCAL AND ADD WORD 3 TO CKSUM ADB INBUF+2 STB CSCAL * CK1 ADA RLEN COMPUTE LAST WORD ADR = ADA BUFAD RECORD LENGTH + BUFR ADR STA BPLST + OFFSET. * INA SAVE CHECKSUM FROM INPUT LDA A,I RECORD (LAST WORD IF BA, LDB CSFLG WORD 3 IF BR) IN CPB "BR" 'CSINP'. LDA INBUF+2 STA CSINP * * CALCULATED CHECKSUM 'CSCAL' SO FAR CONTAINS THE SUM * OF WORD 2 AND, IF BR FORMAT, WORD 3. NOW ADD WORDS * 4 THRU THE LAST DATA WORD (ADR=BPLST) AND COMPARE * WITH CHECKSUM FROM INPUT RECORD, 'CSINP'. * LDB BUFAD INITIALIZE B = WORD 4 ADR ADB B3 * CK2 LDA B DOES BUFR POINTER EXCEED CMA,INA ADR OF LAST WORD? ADA BPLST SSA JMP CK3 YES, CHECKSUM COMPLETE LDA CSCAL NO, ADD THE ADA B,I CURRENT WORD, STA CSCAL BUMP POINTER INB AND LOOP. JMP CK2 * CK3 LDA CSCAL IF CALCULATED CHECKSUM CPA CSINP = INPUT RECORD CHECKSUM, CK4 ISZ CKSUM RETURN *+2, JMP CKSUM,I ELSE *+1. * * RLEN NOP RECORD LENGTH CSCAL NOP CALCULATED CHECKSUM CSINP NOP INPUT CHECKSUM BPLST NOP PNTR TO LAST DATA WORD SPC 2 * * SUBROUTINE TO CHECK FORMAT PARAMETER OF $DU AND * $ST COMMANDS TO SEE IF CHECKSUM IS REQUIRED, AND * TO SET THE PROPER FILE TYPE PARAMS FOR THE FILE * TO BE CREATED IN $ST. * CKFMT NOP LDA B400 SET ECHO BIT STA SUBF CLA CLEAR THE STA CSFLG CHECKSUM FLAG. LDA CP3 GET FORMAT PARAM FLAG SZA,RSS PRESENT? JMP CKF01 NO * LDB P3 YES, GET FORMAT PARAM CPB "AS" ASCII? JMP CKF01 YES LDA B300 NO, SET CONTROL BITS STA SUBF V AND M. * CPB "BR" BR FORMAT? RSS YES JMP TRYBN NO STB CSFLG SET CHECKSUM FLAG LDA TYPE2 GET PARAM 2 FILE TYPE SZA,RSS GIVEN? LDA B5 NO, DEFAULT TO TYPE 5 STA TYPE2 JMP CKF01 * TRYBN CPB "BN" BN FORMAT? JMP CKF01 YES, V & M BITS ALREADY SET * CPB "BA" BA FORMAT? RSS YES JMP OPER NO, ILLEGAL FORMAT PARAM STA CSFLG SET CHECKSUM FLAG LDA TYPE2 SZA,RSS TYPE GIVEN? LDA B7 NO, DEFAULT TO TYPE 7 STA TYPE2 LDA B2300 STA SUBF * CKF01 LDA TYPE2 IF TYPE NOT GIVEN, SZA,RSS DEFAULT TO TYPE 3. LDA B3 STA TYPE2 JMP CKFMT,I SPC 2 * * SUBROUTINE TO TEST FOR END OF FILE ON LOCAL DEVICES. * * TEMPM = EQT STATUS WORD. * INCNT = EQT WORD COUNT. * LUTYP = EQUIPMENT TYPE. * JSB EOFCK * EOF RETURN * NORMAL RETURN * EOFCK NOP CLE LDA LUTYP EOF DEPENDS ON DEVICE. SZA,RSS JMP EOF1 TTY. CPA B1 JMP EOF1 PHOTOREADER. CPA D9 JMP EOF4 CARD READER. CPA D13 JMP EOF4 MARK SENSE. CCE DEFAULT TO MAG TAPE. * EOF1 LDA TEMPM GET STATUS WORD. ALF,ALF SEZ,RSS IF E=1, CHECK BIT 7. JMP EOF2 SSA JMP EOF3 EOF2 RAL,RAL CHECK BIT 5. SSA,RSS JMP EOF5 NO EOF. * EOF3 LDA LUTYP END OF FILE. SZA IF TTY, OUTPUT CAR. RET. JMP EOFND * JSB DEXEC DEF *+6 DEF #NODE LOCAL NODE DEF ICOD2 WRITE, NO-ABORT DEF P.STK,I LU DEF CR DEF B1 JMP ASCER ERROR RETURN * JMP EOFND * EOF4 LDA INCNT CHECK FOR BLANK CARD. SZA EOF5 ISZ EOFCK EOFND JSB LCALC CLEAR IF LOCAL JMP EOFCK,I * * SUBROUTINE TO CHECK FOR ASCII OR NAMR PARAMETER. ENTER * WITH (B) = PARAM FLAG. IF PARAM OK, RETURNS WITH * REGISTERS UNCHANGED. WILL NOT RETURN IF ERROR FOUND. * ASCHK NOP (B) = PRAMS FLAG WORD SZB,RSS JMP ERR55 IF NOT THERE OR CPB B1 IF NUMERIC, JMP ERR56 GIVE ERROR. JMP ASCHK,I * * SUBROUTINE TO CHECK INTEGER PARAMS. ENTER WITH (B) = PARAM * FLAG. IF PARAM NUMERIC, RETURNS WITH REGISTERS UNCHANGED. * WILL NOT RETURN IF ERROR FOUND. * INTCK NOP SZB,RSS JMP ERR55 ERROR 55 IF MISSING. CPB B1 PARAM NUMERIC? JMP INTCK,I YES, RETURN JMP ERR56 ERROR 56 IF NOT NUMERIC. * * SUBROUTINE TO FIND EQUIPMENT TYPE OF AN LU AT NODE2 * EQTYP NOP (A) = LU. STA TEMP1 ADA MD1 IF LU=1 (SYSTEM CONSOLE), SZA,RSS THEN EQUIP-TYPE CODE MUST JMP EQTYP,I BE 0, SO RETURN WITH A=0. * JSB DEXEC REMOTE STATUS CALL DEF *+7 DEF NODE2 DEF ICD13 STATUS, NO-ABORT DEF TEMP1 ICNWD DEF TEMP2 EQT5 RETURNED HERE DEF TEMP2+1 EQT4 RETURNED HERE DEF SUBCH SUBCHANNEL INFO RETURNED HERE JMP EQTYE ERROR RETURN * LDA TEMP2 ALF,ALF AND B77 STA TEMP2 CPA B5 DVR05? JMP SUBC? YES CPA B7 DVR07? JMP SUBC? YES JMP EQTYP,I NO, RETURN. A = EQUIP-TYPE * SUBC? CLA IF REMOTE OP SYSTEM LDB D#OPS IS RTE-L, CPB $RTEL THERE IS NO SUB-CHANNEL. JMP EQTYP,I LDA SUBCH GET 3RD STATUS WORD AND B17 ISOLATE SUBCHAN # SZA IF SUBCHAN=0, RETURN LDA TEMP2 WITH A=0, ELSE A=DVR TYPE. JMP EQTYP,I * EQTYE JSB ERMSG CANNOT CONTINUE IF ERROR JMP ABORT ON DEXEC STATUS CALL. * $RTEL DEC -31 SUBCH NOP SUBCHANNEL # SPC 1 * * SUBROUTINE TO FORCE NODE2 LU TO LOCAL * CALLING SEQUENCE * JSB LCALS * NORMAL RETURN * LCALS NOP LDA #NODE GET LOCAL NODE # LDB NODE2 STA NODE2 STORE LOCAL # STB DESTX SAVE THE REAL ONE JMP LCALS,I AND RETURN SPC 1 DESTX NOP SPC 1 * * SUBROUTINE TO RESET NODE2 LU * CALLING SEQUENCE * JSB LCALC * NORMAL RETURN * LCALC NOP LDB DESTX FETCH THE OLD ONE STB NODE2 RESTORE NODE2 JMP LCALC,I AND RETURN SPC 1 * * SUBROUTINE TO PROCESS ERRORS IN RFA CALLS. * ERCHK NOP LDA IERRR CAN BE POS. OR NEG. SZA,RSS JMP ERCHK,I NO ERROR. * ASCER JSB ERMSG DISPLAY ASCII ERROR MESSAGE. * RESET LDA STKHD RESET STACK POINTER STA P.STK CLA RESET XFR FILE STA TRCRN VARIABLES TO STA TRSEC DEFAULTS. LDA #NODE STA TRNOD * JSB CLSFL CLOSE FILES CURRENTLY OPEN. * LDA TRFLG IF RUNNING FROM SCHEDULE- SZA PARAM COMMAND FILE, JMP ABORT PRINT MESSAGE AND EXIT. * JSB LCALS SET FOR LOCAL EQT CHECK LDA P.STK,I GET INPUT LU JSB EQTYP GET IT'S EQUIP-TYPE CODE JSB LCALC RESET NODE2 SZA,RSS TTY DEVICE? JMP QUERY YES * ABORT JSB CLSFL CLOSE FILES CURRENTLY OPEN * JSB EXEC TERMINATE SELF DEF *+4 DEF B6 DEF B0 DEF B3 * * SUBROUTINE TO CLOSE THE COMMAND FILE OPEN TO TRDCB, * OR USER FILE OPEN TO UDCB IF EITHER OR BOTH ARE OPEN. * CLSFL NOP LDA TOPNF SZA,RSS TRANSFER FILE OPEN? JMP CLOS2 NO * JSB DCLOS YES, CLOSE IT DEF *+3 DEF TRDCB DEF IERRR * CLOS2 LDA UOPNF SZA,RSS USER FILE OPEN? JMP CLOS3 NO * JSB DCLOS YES, CLOSE IT DEF *+3 DEF UDCB DEF IERRR * CLOS3 CLA STA TOPNF CLEAR OPEN FLAGS. STA UOPNF JMP CLSFL,I RETURN. SPC 2 * * SUBROUTINE TO OUTPUT ASCII ERROR MESSAGE. * ERMSG NOP JSB DSERR CALL ROUTINE TO RETURN DS DEF *+2 ERROR PARAMETERS. DEF ASERM+4 * JSB REIO DISPLAY RETURNED DSERR BUFFER. DEF *+5 DEF ICOD2 WRITE DEF LOGLU DEF ASERM DEF D28 NOP ERROR RETURN * JMP ERMSG,I RETURN. * ASERM ASC 4,/REMAT: BSS 24 BUFFER FOR "DSERR". SPC 5 RIOER CLE RSS RIOAB CCE STA ASERM+4 STB ASERM+5 * JSB REIO DISPLAY "IOXX" ERROR. DEF *+5 DEF ICOD2 DEF LOGLU DEF ASERM DEF B6 NOP * SEZ JMP ABORT JMP QUERY SKP * * BELOW SUBROUTINE IS SPECIAL VERSION OF "$PARS". IS IS UNPRIVILEGED * AND WILL ALSO HANDLE UP TO 2 "NAMR" FILE FORMATS. * $PARS NOP LDB INCNT BLS CMB,SSB,RSS JMP $PARS,I GET OUT IF NEGATIVE COUNT STB ICNT SAVE NEG. CHARACTER COUNT LDA BUFAD RAL STA IBPNT SAVE BUFFER BYTE ADDRESS LDA SUBLA STA NAMRP INITIALIZE SUBPARAMETER ADDR LDB PBUFA GET PARSING BUFFER ADDRESS STB PARSA LDA MD39 STA $TEMP CLA STA 1,I INITIALIZE PARSING BUFFER TO ZEROES INB ISZ $TEMP JMP *-3 * * PROCESS A NEW FIELD NXFLD LDB NPOSA SAVE INITIAL BYTE ADDR OF FIELD CLA NXFL2 STA NMSET MODIFY INSTRUCTION STB $TEMP CLA STA OVAL INITIALIZE OCTAL ACCUMULATION STA FCNT INITIALIZE COUNT OF BYTES/FIELD STA VAL SET CURRENT RUNNING NUMERIC VALUE * JSB GETC GET 1ST CHARACTER IN FIELD JMP NULL NULL FIELD DETECTED STA FIRST SAVE IT CCB ADB IBPNT STB $TEMP,I CPA NEG "-"? JMP NXTPN * NXTN ADA N60 SUBTRACT "0" SSA JMP ASCII TOO LOW TO BE NUMERIC STA $TEMP ADA MD10 SSA,RSS JMP ASCII TOO HIGH TO BE NUMERIC LDA OVAL ALF,RAR OCTAL VALUE * 8 IOR $TEMP + NEW CHARACTER STA OVAL LDA VAL MPY D10 DECIMAL VALUE * 10 ADA $TEMP + NEW DIGIT STA VAL * NXTPN JSB GETC GET ANOTHER DIGIT JMP NMDON END OF FIELD CPA COLON COLON FOUND? RSS YES JMP NXTP1 NO LDB FIRST GET FIRST CHAR IN FIELD CPB NEG NEGATIVE SIGN? RSS YES JMP NXTP1 NO LDB VAL IS VALUE SZB,RSS ZERO? JMP NXTA1 YES, TREAT AS ASCII * NXTP1 CPA ASCB ="B"? RSSI RSS YES JMP NXTN PROCESS CHARACTER * JSB GETC GOT A "B", SEE IF END OF FIELD RSS IT IS, SKIP JMP ASCII TREAT AS ASCII LDB FIRST CPB NEG NEGATIVE SIGN? JMP *+3 YES, TREAT AS ASCII LDB OVAL USE OCTAL VALUE JMP NMSET * LDB NMSET SZB DOING A NAMR SUBPARAMETER? JMP SUBA2 YES JMP ENDA NO, WRAP-UP ASCII FIELD * NULL LDA DLIMF NAMR DELIMITER? SZA JMP ENDS1 YES, NULL NAMR FILED JMP ENDCK NO, NULL PARAMETER FIELD * NMDON LDA FIRST GET FIRST CHAR IN FIELD LDB VAL GET VALUE OF FIELD CPA NEG FIRST CHAR = NEGATIVE SIGN? RSS YES JMP NMSET NO SZB,RSS IS THE VALUE ZERO? JMP ENDA YES, TREAT AS ASCII CMB,INB NO, NEGATE VALUE * NMSET NOP THIS HAS RSS IF A NAMR PARAMETER JMP NONSB STORE PARAMETER * DONE PROCESSING THIS NAMR SUBPARAMETER STB SUBAD,I SAVE SUBPARAMETER IN NAMR BUFFER * ENDS1 ISZ SUBAD UPDATE NAMR PARAMETER POINTER LDA B3 STA PARSA,I SET TYPE TO 3 ENDS2 LDB XCNT GET SIZE OF FILE NAME LDA DLIMF NAMR DELIMITER FOUND? SZA,RSS JMP ENDAS NO, WRAP UP PARAMETER LDA SUBAD CPA NAMRP ROOM FOR MORE? RSS NO JMP DOSUB YES, SET-UP FOR NAMR PROCESSING JSB GETC GET ANOTHER CHARACTER JMP ENDS2 CHECK DELIMITER JMP *-2 KEEP LOOKING FOR A DELIMITER * NONSB CLA,INA SET TYPE TO NUMERIC PARSA EQU *+1 DST * SET TYPE AND VALUE * ENDCK ISZ CNTAD,I BUMP PARAMETER COUNT LDB CNTAD,I CPB B7 COMMAND + 6 PARAMETERS PARSED? JMP $PARS,I YES, EXIT LDA SUBPA CPB B1 HAS COMMAND BEEN PARSED? STA NAMRP YES, SET ADR OF 1ST NAMR BUFR ADA B5 CPB B2 HAS 1ST PARAM BEEN PARSED? STA NAMRP YES, SET ADR OF 2ND NAMR BUFR LDA PARSA ADA B4 POINT TO NEXT PARSING FIELD STA PARSA JMP NXFLD PARSE NEXT FIELD * ASCII LDA NMSET SZA DOING NAMR PARAMETERS? JMP SUBAS YES * NXTAS JSB GETC KEEP LOOKING FOR END OF FIELD JMP ENDA JUMP WHEN FOUND NXTA1 LDB NAMRP CPA COLON COLON FOUND? CPB SUBLA YES, MORE NAMR'S ALLOWED? JMP NXTAS NO, DON'T PROCESS NAMR'S * STB SUBAD SET RUNNING POINTER CCB ADB FCNT COMPUTE SIZE OF FILE NAME STB XCNT AND SAVE FOR LATER * DOSUB EQU * GET CURRENT BYTE POSITION LDB MPOSA AND SAVE IT LDA RSSI MODIFY INSTRUCTION TO "RSS" JMP NXFL2 PROCESS SUBPARAMETER FIELD * ENDA LDA B2 STA PARSA,I SET TYPE TO ASCII LDB FCNT FIELD CHAR COUNT * ENDAS ADB MD6 STB FCNT SAVE COUNT FOR POSSIBLE FILLER BLANKS CCE,SSB,RSS SKIP IF ASCII FIELD < 6 CHARS CLB,CLE SET FOR MOVE 6 CHARACTERS ADB B6 STB $TEMP LDA NPOS "FROM" BYTE POINTER LDB PARSA INB RBL "TO" BYTE POINTER JSB .MBT MOVE UP TO 6 CHARACTERS TO PARSE BUFFER DEF $TEMP NOP SEZ,RSS AT LEAST 6? JMP ENDCK YES LDA LOBLK NO, FILL WITH BLANKS JSB .SBT ISZ FCNT JMP *-2 DO ANOTHER JMP ENDCK ALL PADDED * * PROCESS AN ASCII NAMR PARAMETER SUBAS JSB GETC RSS SKIP IF DELIMITER FOUND JMP *-2 IGNORE THE REST SUBA2 LDB MPOS ADDR OF 1ST CHAR JSB .LBT GET IT ALF,ALF PUT IN LHW STA SUBAD,I JSB .LBT GET 2ND CHARACTER ADB MD1 POINT TO CHAR JUST FETCHED. CPB IBPNT IS IT PAST END OF STRING? LDA LOBLK YES, RHW = BLANK IOR SUBAD,I STA SUBAD,I SAVE ASCII NAMR PARAMETER JMP ENDS1 NOW SEE IF MORE NAMR PARAMETERS * * SUBROUTINE TO GET NEXT CHARACTER FROM BUFFER TO BE PARSED * GETC NOP LDA ICNT CLE,SSA,RSS ENTIRE INPUT BUFFER PARSED? JMP $PARS,I YES, RETURN TO CALLER LDB IBPNT GET BYTE ADDR OF INPUT BUFFER RSS ISZ FCNT BUMP BYTE/FIELD COUNT GETC2 ISZ ICNT BUMP TOTAL COUNT RSS JMP GETEX RETURN IF END OF BUFFER JSB .LBT GET NEXT BYTE CPA LOBLK BLANK? JMP GETC2 YES, IGNORE STB IBPNT LDB NMSET CPA COLON NAMR DELIMITER? SZB,RSS YES, SKIP IF DOING NAMR PARAMETERS CLE,RSS NO CCE,RSS E REG = 1 WHEN ":" FOUND (AFTER 1ST ONE) CPA COM COMMA FOUND? JMP GETEX YES, END OF FIELD ISZ FCNT BUMP BYTE/FIELD COUNT ISZ GETC GETEX CLB PUT E-REG INTO A FLAG WORD. ELB STB DLIMF JMP GETC,I RETURN WITH CHARACTER IN A REG * DLIMF NOP HED REMAT: DATA AREA * (C) HEWLETT-PACKARD CO. 1979 * * PARAMETER STORAGE AREA. DO NOT CHANGE ORDER OF * LABELS FROM 'PRAMS' THRU 'NAMR2'. * PRAMS NOP FLAG WORD. OP BSS 3 OPERATION CODE. CP1 NOP PARAM FLAG (0=NO, 1=#, 2=ASC, 3=NAMR) P1 REP 3 PARAM 1 (UP TO 6 CHARACTERS). NOP CP2 NOP P2 REP 3 NOP CP3 NOP P3 REP 3 NOP CP4 NOP P4 REP 3 NOP CP5 NOP P5 REP 3 NOP CP6 NOP P6 REP 3 NOP NPRMS BSS 1 # OF PRAMS NAMR1 BSS 5 PARAM1 SUBPARAMS NAMR2 BSS 5 PARAM2 SUBPARAMS * SECU1 EQU NAMR1+0 CRN1 EQU NAMR1+1 TYPE1 EQU NAMR1+2 SIZE1 EQU NAMR1+3 SECU2 EQU NAMR2+0 CRN2 EQU NAMR2+1 TYPE2 EQU NAMR2+2 SIZE2 EQU NAMR2+3 RSIZ2 EQU NAMR2+4 * N60 OCT -60 B0 OCT 0 B1 OCT 1 B2 OCT 2 B3 OCT 3 B4 OCT 4 B5 OCT 5 B6 OCT 6 B7 OCT 7 B17 OCT 17 B37 OCT 37 B70 OCT 70 B77 OCT 77 B100 OCT 100 B300 OCT 300 B377 OCT 377 B400 OCT 400 B1000 OCT 1000 B1100 OCT 1100 B2300 OCT 2300 LZERO OCT 60 LOW ZERO HZERO OCT 30000 HIGH ZERO HB377 OCT 177400 HIBIT OCT 100000 MB40 OCT -40 MB133 OCT -133 MD1 DEC -1 MD2 DEC -2 MD3 DEC -3 MD4 DEC -4 MD5 DEC -5 MD6 DEC -6 MD7 DEC -7 MD10 DEC -10 MD12 DEC -12 MD39 DEC -39 D8 DEC 8 D9 DEC 9 D10 DEC 10 D13 DEC 13 D14 DEC 14 D15 DEC 15 D18 DEC 18 D19 DEC 19 D22 DEC 22 D26 DEC 26 D27 DEC 27 D28 DEC 28 D34 DEC 34 D36 DEC 36 D37 DEC 37 D40 DEC 40 D45 DEC 45 D55 DEC 55 D56 DEC 56 D72 DEC 72 D128 DEC 128 VBIT EQU D128 V-BIT (BIT 7) FOR CONWD NPOSA DEF NPOS MPOSA DEF MPOS SUBF NOP IBPNT NOP FCNT NOP ICNT NOP XCNT NOP MPOS NOP NPOS NOP SUBAD NOP NAMRP NOP FIRST NOP VAL NOP OVAL NOP LOBLK OCT 40 CNTAD DEF NPRMS SUBPA DEF NAMR1 SUBLA DEF NAMR2+5 NEG OCT 55 COLON OCT 72 ASCB OCT 102 TOPNF NOP TRDCB OPEN FLAG UOPNF NOP UDCB OPEN FLAG $TEMP NOP TEMPORARY FOR $PARS TEMPM NOP TEMP BSS 2 TEMP1 BSS 2 TEMP2 BSS 2 INCNT NOP # WORDS IN INPUT REQUEST. LUTYP NOP EQ. TYPE OF INPUT DEVICE. LOGLU NOP LU OF LOG DEVICE. LSTLU NOP LU OF LIST DEVICE. SEVER NOP SEVERITY CODE. NODE2 NOP NODE1 NOP PRMPT NOP LOCAL/REMOTE PROMPT CHAR CSFLG NOP CHECKSUM FLAG BRFLG NOP BREAK FLAG A.$TR ASC 2,$TR A.TR1 ASC 2,R,1 AS.$ OCT 022000 IERRR BSS 2 "$" ASC 1,$_ LOCAL PROMPT CHARACTER "#" ASC 1,#_ REMOTE PROMPT CHARACTER "AS" ASC 1,AS "R" OCT 122 "U" OCT 125 "BR" ASC 1,BR "BN" ASC 1,BN "BA" ASC 1,BA IPRMP ASC 2,/ _ PROMPT FOR $ST AND $DU BLANK OCT 020000 DBBLK OCT 20040 CR OCT 6400 COM OCT 54 ASCII COMMA ICOD1 OCT 100001 ICOD2 OCT 100002 ICOD3 OCT 100003 I9B11 OCT 104011 ICD13 OCT 100015 CNWD1 EQU HIBIT #MAST CONWD. NO ABORT CNWD2 OCT 140000 #MAST CONWD (NO ABORT, LONG TIMEOUT) TRFLG NOP PBUFA DEF PRAMS BUFAD DEF INBUF INBUF EQU RECRD INPUT BUFFER (128 WORDS) UDCB BSS 4 USER DATA CONTROL BLOCK TRDCB BSS 4 TR FILE DATA CONTROL BLOCK * * DEFINE NRV * * NRVSZ EQU B3 BSS 0 * END REMAT