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 
                                                                                                                                                                                                                                        