ASMB,R,L,C HED REMAC - 91705-16109 * (C) HEWLETT PACKARD CO. 1977 NAM REMAC,1,80 91705-16109 REV 1713 770324 SPC 1 ****************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976. 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 * * REMAC * SOURCE: 91705-18109 * BINARY: 91705-16109 * JIM HARTSELL * JULY 30, 1974 * * RTE-C SATELLITE PROGRAM TO PROVIDE OPERATOR ACCESS * TO THE CENTRAL STATION FOR VARIOUS CONTROL FUNCTIONS. * ENT REMAC * EXT EXEC EXT DOPEN,DREAD,DCLOS,DPOSN EXT DCRET,DWRIT,DPURG,DNAME EXT DEXEC,%DLST,DMESG,%RMCN EXT $MESS,$TYPE,$LIBR,$LIBX EXT %PRMB,%TMOT * A EQU 0 B EQU 1 OPEN EQU DOPEN READF EQU DREAD CLOSE EQU DCLOS POSNT EQU DPOSN CREAT EQU DCRET WRITF EQU DWRIT PURGE EQU DPURG NAMF EQU DNAME * * INITIALIZE TRANSFER STACK. * REMAC STB TEMP SAVE ADDR OF SCHEDULE PARAMS. LDA STKHD RESET STACK POINTER. STA P.STK CLA,INA SET FIRST STACK ENTRY STA P.STK,I FOR LOGICAL UNIT 1 (DEFAULT). STA MODE RESET MODE TO LOCAL. * LDA TEMP,I CHECK IF P1 = ASCII PARAM. AND HB377 SZA,RSS JMP STR NO. MUST BE INPUT LU. * * FETCH SCHEDULE PARAMETERS (FL,NA,ME,SEVERITY,LIST). * LDA A.$TR GENERATE "$TR,FLNAME" IN BUFFER. STA INBUF LDA A.TR1 STA INBUF+1 LDA TEMP,I STA INBUF+2 ISZ TEMP LDA TEMP,I STA INBUF+3 ISZ TEMP LDA TEMP,I STA INBUF+4 ISZ TEMP * LDA B5 SET COUNT. STA INCNT * LDA TEMP,I SET UP DUMMY SCHEDULE PARAMS. STA ALTBK+3 SEVERITY CODE. ISZ TEMP LDA TEMP,I STA ALTBK+2 LIST LU. * LDA DFALT POINT TO DUMMY PARAMS. STA TEMP * STR STA TRFLG SET/CLEAR FLAG FOR QUERY SECTION. * * FETCH SCHEDULE PARAMETERS (LU,LOG,LIST,SEVERITY CODE). * LDA TEMP,I GET LU OF INPUT DEVICE. SZA,RSS JMP STAT IF NONE, USE DEFAULT. CPA B1 IGNORE IF = 1. JMP STAT * LDB P.STK PUT SPECIFIED LU INTO ADB B4 TRANSFER STACK. STB P.STK STA P.STK,I * STAT LDA P.STK,I CLB,INB FORCE LOCAL MODE. JSB EQTYP CHECK EQ. TYPE OF INPUT LU. STA LUTYP * ISZ TEMP LDA TEMP,I GET LU OF LOG DEVICE. SZA JMP SVLOG * DEFLT LDB LUTYP CLA,INA EITHER LU 1 OR SZB,RSS LDA P.STK,I INPUT LU IF TTY DEVICE. SVLOG STA LOGLU * ISZ TEMP LDA TEMP,I GET LU OF LIST DEVICE, SZA,RSS LDA B6 OR USE DEFAULT = 6. STA LSTLU * ISZ TEMP LDA TEMP,I SAVE SEVERITY CODE. STA SEVER * LDA TRFLG IF SCHEDULED WITH FILE NAME, SZA ALREADY HAVE TR SIMULATED. JMP CHK$ * * DISPLAY PROMPT CHARACTER (IF TTY DEVICE). * CONTROL RETURNS HERE WHEN REQUEST PROCESSING COMPLETES. * QUERY LDA P.STK,I CHECK WHETHER CURRENT INPUT STA TEMP STA LUTYP IS FROM A TTY TYPE DEVICE. AND HB377 NON ZERO IF FILE NAME, ELSE LU. SZA JMP REMRD REMOTE FILE. * LDA P.STK,I CLB,INB FORCE LOCAL MODE. JSB EQTYP LOCAL LU: CHECK TYPE. STA LUTYP SZA JMP LOCRD LOCAL LU NOT TTY DEVICE. * JSB EXEC DISPLAY PROMPT ON TTY DEVICE. DEF *+5 DEF B2 DEF P.STK,I DEF PROMP DEF B1 * LDA P.STK,I SET ECHO BIT. IOR B400 STA TEMP * * INPUT OPERATOR REQUEST FROM CURRENT DEVICE OR FILE. * LOCRD JSB EXEC LOCAL SATELLITE LU. DEF *+5 DEF B1 DEF TEMP DEF INBUF DEF D40 * STA TEMP SAVE STATUS WORD. STB INCNT SAVE WORD COUNT. CLA,INA FORCE LOCAL MODE. JSB EOFCK CHECK FOR END OF FILE. JMP TRANS GOT IT. JMP ECHO GO ECHO IF NECCESSARY. * REMRD JSB READF CENTRAL STATION FILE. DEF *+6 (OPENED WHEN FIRST TRANSFER DEF IDCB WAS PERFORMED) DEF IERR 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 EXEC NOT TTY: ECHO. DEF *+5 DEF B2 DEF LOGLU DEF INBUF DEF INCNT * 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. * LDA BUFAD (A) = BUFAD, (B) = INCNT. JSB $PARS DEF PRAMS PARAMETER BUFFER ADDRESS. JMP M0000 TRY FOR REMAC COMMAND FIRST. * * LOCAL OR CENTRAL RTE COMMAND. * OTHER LDA INCNT SET UP +CHAR COUNT. RAL STA TEMP * LDA MODE IF LOCAL MODE, SEND COMMAND SZA TO RTE-C. JMP LCRTE * * SEND CENTRAL RTE COMMANDS. * JSB %RMCN SEND COMMAND TO CENTRAL. DEF *+3 DEF TEMP # CHARACTERS. DEF INBUF ASCII COMMAND. * STA IERR SAVE ERROR STATUS SSA SKIP IF NO ERROR JMP ERFND GIVE ERROR MSG * LDA TEMP RETURN MESSAGE? SZA,RSS JMP QUERY NO * SSA MAKE SURE LEN IS POSITIVE. JMP OPER * DSPLA CMA,INA NEGATE CHAR COUNT. STA TEMP * JSB EXEC DISPLAY REPLY MESSAGE. DEF *+5 DEF B2 DEF LOGLU DEF INBUF DEF TEMP * JMP QUERY * * PASS COMMAND TO LOCAL RTE-C. * LCRTE JSB JOB PROCESS COMMAND. * SZA IF CHAR CNT NON-ZERO, JMP DSPLA GO DISPLAY REPLY MESSAGE, JMP QUERY ELSE GO PROMPT. * * 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. STB OPP SET STOP FLAG. LDA LDOPC SET OPERATION TABLE POINTER. STA TEMP1 LDA LDJMP SET PROCESSOR JUMP ADDRESS. STA TEMP2 * M0030 CPB TEMP1,I COMPARE WITH TABLE VALUE. JMP TEMP2,I COMPARES. GO DO IT. * ISZ TEMP1 KEEP LOOKING. ISZ TEMP2 JMP M0030 * LDOPC DEF *+1 OPERATION CODE TABLE ADDRESS. * ASC 6,CLCRDLDUEXPU ASC 7,RESTSWTETCTR$$ OPP NOP OP CODE FOR CURRENT REQ. * LDJMP DEF *+1,I JMP ADDRESS FOR EACH OP CODE. DEF M0100 CL REQUEST. DEF M0200 CR REQUEST. DEF M0300 DL REQUEST. DEF M0400 DU REQUEST. DEF M0500 EX REQUEST. DEF M0700 PU REQUEST. DEF M0800 RE REQUEST. DEF M0900 ST REQUEST. DEF M0990 SW REQUEST. DEF M1000 TE REQUEST. DEF M1100 TC REQUEST. DEF M1200 TR REQUEST. DEF M1300 $$ REQUEST. DEF OTHER ASSUME RTE OPER COMMAND. * OPER LDA D10 INPUT ERROR: 010 OPERS STA IERR JSB ERCHK WON'T RETURN. SKP * * SUBR TO PASS COMMAND TO RTE-C AS IF ENTERED LOCALLY. * JOB NOP JSB $LIBR NOP LDA JOB LDB HERE SZB,RSS JMP THERE CLA JSB $LIBX DEF *+1 DEF EXIT THERE STA RTN LDB 1735B SZB JMP EXIT1 STA HERE STA JOB LDA BUFAD STA PNTR1 LDA TYPE SSA,RSS JMP *+3 ELA,CLE,ERA LDA A,I ADA MD22 REFERENCES $TYPE-22 IN SCHEDULER STA PNTR2 FOR INPUT MESSAGE BUFFER. LDA INCNT LDB 0 CMA,INA ADB MD22 SSB JMP *+4 OK IF NOT > 22 WORDS LDA K44 ELSE SET BACK TO 22 STA TEMP LDA MD22 STA CNTR JSB XFER LDB TEMP JSB $MESS SZA,RSS JMP EXIT LDB A,I STB SAVE ADB MD1 BRS STB CNTR INA STA PNTR1 LDA BUFAD STA PNTR2 JSB XFER LDA SAVE CMA,INA EXIT CLB STB HERE EXIT1 JSB $LIBX DEF RTN XFER NOP LOOP1 LDA PNTR1,I STA PNTR2,I ISZ PNTR1 ISZ PNTR2 ISZ CNTR JMP LOOP1 JMP XFER,I RTN NOP HERE NOP TYPE DEF $TYPE K44 DEC 44 PNTR1 BSS 1 PNTR2 BSS 1 CNTR BSS 1 SAVE BSS 1 HED REMAC: CL REQUEST * (C) HEWLETT PACKARD CO. 1976 * * CL,FLNAME * * CLOSE A FILE AT THE CENTRAL STATION. * M0100 LDB CP1 ERROR IF NO FILE NAME. JSB ASCHK * JSB CLOSE CLOSE THE FILE. DEF *+3 NOTE: IN THE RTE-C SATELLITE, DEF P1 THE DCB MUST CONTAIN THE FILE DEF IERR NAME. * JSB ERCHK CHECK FOR ERRORS. * JMP QUERY HED REMAC: CR REQUEST * (C) HEWLETT PACKARD CO. 1976 * * CR,FLNAME,SECURITY,LABEL,TYPE,#BLOCKS,RECSIZE * * CREATE A DISC FILE AT THE CENTRAL STATION. * M0200 LDB CP1 ERROR IF NO NAME. JSB ASCHK * LDA B3 DEFAULT FILE TYPE TO 3. LDB P4 SZB,RSS STA P4 * LDA D10 DEFAULT # BLOCKS TO 10. LDB P5 SZB,RSS STA P5 LDA P6 SET UP SIZE ARRAY. STA P5+1 * JSB CREAT CREATE THE FILE. DEF *+8 DEF UDCB DEF IERR DEF P1 FILE NAME. DEF P5 # BLOCKS, RECSIZE. DEF P4 FILE TYPE. DEF P2 SECURITY CODE. DEF P3 LABEL. * LDA IERR CHECK FOR ERRORS IF IERR NEG. SSA JSB ERCHK * JMP QUERY HED REMAC: DL REQUEST * (C) HEWLETT PACKARD CO. 1976 * * DL,FILTER,SECURITY,LABEL,TYPE,LISTLU * * LIST CENTRAL STATION FILE DIRECTORY. * M0300 LDB CP1 FILTER SPECIFIED? SZB JMP M0305 * LDA BLANK NO. SET FIRST WORD TO BLANKS. IOR B40 STA P1 JMP M0310 * M0305 LDA D56 SPECIFIED. ASCII? ADB MD2 SZB JMP OPERS NO. ERROR 56. M0310 STB TEMP CLEAR NREQ FLAG. * LDA P4 SET SIGN BIT IF SZA FILE TYPE SPECIFIED. IOR HIBIT STA P4 * CLA,INA CHECK FOR LIST LU. LDB CP5 SZB,RSS SET DEFAULT = 1 IF NOT GIVEN. STA P5 * * REQUEST PRINT LINE FROM CENTRAL STATION. * M0320 JSB %DLST DEF *+11 DEF INBUF BUFFER. DEF D40 MAX. LEN. DEF P1 FILTER. DEF P2 SECURITY. DEF P3 LABEL. DEF P4 TYPE. DEF TEMP NREQ FLAG. DEF TEMP1 STATUS. DEF IERR ERROR CODE. DEF INCNT # VALID DATA WORDS. * LDA TEMP1 DO WE HAVE A PRINT LINE? SZA JMP QUERY NO, ALL DONE. * LDA %PRMB SAVE DLIST REPLY BUFFER. STA TEMP1 LDA SRPLY STA TEMP2 JSB MOV25 * JSB DEXEC DISPLAY PRINT LINE. DEF *+6 DEF MODE DEF B2 RCODE. DEF P5 LU. DEF INBUF DEF INCNT * CLA,INA STA TEMP * LDA SRPLY RESTORE DLIST REPLY BUFFER. STA TEMP1 LDA %PRMB STA TEMP2 JSB MOV25 * JMP M0320 * * MOVE 25 WORDS * MOV25 NOP LDB MD25 LOOP LDA TEMP1,I STA TEMP2,I ISZ TEMP1 ISZ TEMP2 INB,SZB JMP LOOP JMP MOV25,I HED REMAC: DU REQUEST * (C) HEWLETT PACKARD CO. 1976 * * DU,FLNAME,LU,SECURITY,LABEL * * DUMP CENTRAL FILE ON SATELLITE LOGICAL INIT. * M0400 LDB CP1 ERROR IF NO FILE NAME. JSB ASCHK LDB CP2 ERROR IF NO LU. JSB INTCK * LDA P2 TEST FOR PT PUNCH. LDB MODE JSB EQTYP CPA B2 JMP M0402 IT IS A PUNCH. * LDB A LDA P2 IF LINE PRINTER, SET V-BIT IN IOR VBIT CONTROL WORD TO INHIBIT COL. 1 CPB D10 CARRIAGE CONTROL. STA P2 JMP M0405 * M0402 LDA B1000 GENERATE LEADER IOR P2 STA TEMP * JSB DEXEC DEF *+4 DEF MODE DEF B3 DEF TEMP * * OPEN THE CENTRAL FILE. * M0405 JSB OPEN OPEN THE FILE. DEF *+7 DEF UDCB DEF IERR DEF P1 FILE NAME. DEF B0 OPEN OPTIONS. DEF P3 SECURITY CODE. DEF P4 LABEL. * LDB P2 IF FILE TYPE 5(RELOC) ADB B100 OR 7 (ABS), SET FOR CPA B5 BINARY OUTPUT. JMP *+2 CPA B7 STB P2 * LDA IERR CHECK FOR ERRORS IF IERR NEG. SSA JSB ERCHK LDA OPNFL SET UDCB OPEN FLAG. ELA,CLE,ERA IOR HIBIT STA OPNFL * * READ A RECORD FROM CENTRAL FILE. * M0410 JSB READF READ. DEF *+6 DEF UDCB DEF IERR DEF INBUF DEF D128 DEF INCNT XMSN LOG. * JSB ERCHK CHECK FOR ERRORS. * LDA INCNT CHECK FOR EOF. INA SZA,RSS JMP M0420 GOT IT. GO PROCESS. * * OUTPUT THE RECORD ON SATELLITE LOGICAL INIT. * JSB DEXEC DEF *+6 DEF MODE DEF B2 DEF P2 LU. DEF INBUF DEF INCNT * JMP M0410 GO GET NEXT RECORD. * * PROCESS END OF FILE CONDITION. * M0420 LDA P2 GET LOGICAL UNIT. AND B77 STA P2 LDB MODE 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 MODE DEF B3 DEF TEMP FORMATTED CONTROL WORD. DEF MD1 USED ONLY FOR LP. * JMP M0950 GO CLOSE FILE. HED REMAC: EX REQUEST * (C) HEWLETT PACKARD CO. 1976 * * EX PROCESSOR * * TERMINATE THE OPERATOR INTERFACE PROGRAM. * M0500 JSB EXEC DISPLAY TERMINATION MESSAGE DEF *+5 ON LOG DEVICE. DEF B2 DEF LOGLU DEF TRMSG DEF B6 * JSB CLSFL CLOSE OPEN FILES. * JSB EXEC EXIT. DEF *+2 DEF B6 * TRMSG ASC 6, $END REMAC HED REMAC: PU REQUEST * (C) HEWLETT PACKARD CO. 1976 * * PU,FLNAME,SECURITY,LABEL * * PURGE A CENTRAL STATION FILE. * M0700 LDB CP1 ERROR IF NO FILE NAME. JSB ASCHK * JSB PURGE PURGE THE FILE. DEF *+6 DEF UDCB DEF IERR DEF P1 FILE NAME. DEF P2 SECURITY CODE. DEF P3 LABEL. * LDA IERR SSA JSB ERCHK CHECK FOR ERRORS. JMP QUERY HED REMAC: RE REQUEST * (C) HEWLETT PACKARD CO. 1976 * * RE,OLDNAM,NEWNAM,SECURITY,LABEL * * RENAME A FILE AT THE CENTRAL STATION. * M0800 LDB CP1 ERROR IF NO FILE NAMES. JSB ASCHK LDB CP2 JSB ASCHK * JSB NAMF RENAME THE FILE. DEF *+7 DEF UDCB DEF IERR DEF P1 OLD FILE NAME. DEF P2 NEW FILE NAME. DEF P3 SECURITY. DEF P4 LABEL. * JSB ERCHK CHECK FOR ERRORS. * JMP QUERY HED REMAC: ST REQUEST * (C) HEWLETT PACKARD CO. 1976 * * ST,LU,FLNAME,SECURITY,LABEL,TYPE,#BLOCKS,RECSIZE * * STORE FROM SATELLITE LU ONTO CENTRAL DISC FILE. * M0900 LDB CP2 CHECK SECOND PARAM. SZB,RSS IF NOT GIVEN, ASSUME JMP OTHER RTE STATUS COMMAND. * LDB CP2 ERROR IF FILE NAME JSB ASCHK PARAM NOT ASCII. * LDA B3 DEFAULT FILE TYPE TO 3. LDB P5 SZB,RSS STA P5 * LDA D56 ERROR IF NEGATIVE # BLOCKS. LDB P6 SSB JMP OPERS LDA D10 DEFAULT # BLOCKS TO 10. SZB,RSS STA P6 * LDB CP1 ERROR IF NO LU. JSB INTCK * * CREATE THE CENTRAL DISC FILE. * JSB CREAT CREATE FILE. DEF *+8 DEF UDCB DEF IERR DEF P2 FILE NAME. DEF P6 # BLOCKS. DEF P5 FILE TYPE. DEF P3 SECURITY CODE. DEF P4 LABEL. * LDA IERR CHECK FOR ERRORS IF IERR NEG. SSA JSB ERCHK LDA OPNFL SET UDCB OPEN FLAG. ELA,CLE,ERA IOR HIBIT STA OPNFL * * READ INPUT FROM SATELLITE LOGICAL UNIT. * LDA P1 DETERMINE DEVICE TYPE. LDB MODE JSB EQTYP STA LUTYP SAVE DEVICE TYPE. SZA IF TTY, JMP M0905 LDA P1 SET ECHO BIT. IOR B400 STA P1 JMP M0910 * M0905 LDA P1 IF FILE TYPE 5 OR 7, IOR B300 SET V AND M BITS. LDB P5 CPB B5 JMP *+3 IOR B2000 IF 7, SET HONESTY BIT. CPB B7 STA P1 * M0910 LDA LUTYP IF 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 MODE DEF B2 RECORDS. DEF B1 DEF IPRMP ASCII SLASH, SPACE. DEF MD3 * M0920 JSB DEXEC READ THE INPUT RECORD. DEF *+6 DEF MODE DEF B1 DEF P1 LOGICAL UNIT. DEF INBUF DEF D128 * STA TEMP SAVE STATUS WORD. STB INCNT SAVE WORD COUNT. * * CHECK FOR INPUT END OF FILE. * LDA MODE SET UP MODE. JSB EOFCK JMP M0950 GOT IT. LDA INCNT IGNORE NULL NON-CARD INPUT. SZA,RSS JMP M0910 * * WRITE THE RECORD ON CENTRAL DISC FILE. * JSB WRITF DEF *+5 DEF UDCB DEF IERR DEF INBUF DEF INCNT * LDA IERR CHECK FOR ERRORS. SSA,RSS JMP M0910 NONE. GO READ NEXT RECORD. * JSB PURGE ERROR. PURGE FILE. DEF *+6 DEF UDCB DEF TEMP DEF P2 FILE NAME. DEF P3 SECURITY. DEF P4 LABEL. * LDA OPNFL OUTPUT ERROR MESSAGE. ELA,CLE,ERA STA OPNFL JSB ERCHK * * END OF FILE ON INPUT. * M0950 JSB CLOSE CLOSE THE CENTRAL FILE. DEF *+3 DEF UDCB DEF IERR * LDA OPNFL CLEAR UDCB OPEN FLAG. ELA,CLE,ERA STA OPNFL * JMP QUERY