home *** CD-ROM | disk | FTP | other *** search
/ ftp.update.uu.se / ftp.update.uu.se.2014.03.zip / ftp.update.uu.se / pub / pdp8 / os278-src.tar.Z / os278-src.tar / batch.pa < prev    next >
Text File  |  1992-09-18  |  35KB  |  1,776 lines

  1. /BATCH.PA OS278 BATCH PROCESSOR
  2. /
  3. /
  4. /
  5. /
  6. /
  7. /
  8. /
  9. /
  10. /
  11. /COPYRIGHT  (C)  1975,1977,1978,1982 BY DIGITAL EQUIPMENT CORPORATION
  12. /
  13. /
  14. /
  15. /
  16. /
  17. /
  18. /
  19. /
  20. /
  21. /
  22. /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
  23. /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
  24. /CORPORATION.  DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
  25. /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
  26. /
  27. /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
  28. /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
  29. /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
  30. /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
  31. /
  32. /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
  33. /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
  34. /DIGITAL.
  35. /
  36. /
  37. /
  38. /
  39. /
  40. /
  41. /
  42. /
  43. /
  44. /
  45.  
  46.  
  47. /ABSTRACT---
  48. /BATCH IS THE INITIALIZING PROGRAM FOR THE OS/8 BATCH
  49. /PROCESSING MONITOR. TO SET UP A BATCH RUN, TYPE
  50. /    }R BATCH
  51. /BATCH WILL CALL THE COMMAND DECODER TO OBTAIN ITS
  52. /PARAMETERS AND INPUT FILE LOCATION.
  53.  
  54.     VERSON=    "B&77
  55.     PATCH=    "3&77^100
  56.  
  57.  
  58. /    BATCH SWITCHES:
  59.  
  60. /C    BATCH FROM CARDS
  61. /E    IGNORE KMON, CD, AND CCL ERRORS
  62. /H    HUSH (SUPPRESSES $JOB, #END, AND ECHOING)
  63. /P    BATCH FROM PAPER TAPE
  64. /Q    QUIET - NO BATCH LOG
  65. /T    FORCE BATCH LOG TO TELETYPE
  66. /U    UNATTENDED
  67. /6    USE 026 CARD CODES (ONLY IF /C)
  68.  
  69.  
  70. /MAINTENANCE RELEASE CHANGES BY S.R. ON 1-AUG-75:
  71.  
  72. /1.    CHANGED VERSION NUMBER TO 6
  73. /2.    INCORPORATED V5A PATCH SEQ # 1 APR-75 DSN
  74. /    ALLOWS BATCH TO PASS ALTMODE TO KBM
  75. /3.    INCORPORATED V5B PATCH SEQ #2 17-JULY-75 WSN
  76. /    SLOWS BATCH DOWN WHEN READING FROM CARDS
  77. /4.    ALLOW BATCH TO IGNORE NULLS FROM BATCH STREAM
  78. /    (PATCH TO BE PUBLISHED IN DSN.)
  79. /5.    SET BATCH SO THAT IT RESTORES OLD SOFTWARE CORESIZE
  80. /    UPON NORMAL TERMINATION.
  81.  
  82. /CHANGES BY S.R. ON 3-FEB-77:
  83.  
  84. /1.    ADDED HUSH SWITCH (/H)
  85. /2.    SAVED REST OF 7777 AROUND BATCH
  86. /3.    FIXED BUG CONCERNING MANUAL HELP NEEDED
  87. /4.    ALLOWED CORE IMAGE TO BE PRESERVED AFTER BATCH TERMINATION
  88.  
  89. /8-DEC-77 CHANGES:
  90.  
  91. /1.    PUT IN SYMBIONT SUPPORT
  92. /2.    LENGTHENED LPT WAIT LOOP (FOR LA180'S)
  93. /3.    MADE /T MUCHO OVERRIDE LPT TEST
  94. /4.    BATCH LPT LOG CONVERTS L.C. TO U.C.
  95. /    TO INHIBIT CONVERSION, PATCH LOC 6400 FROM A -40 TO A 0
  96. /5.    DON''T RESTORE EXTENDED DATE BITS IN 07777
  97. /6.    MORE FIXES TO MANUAL INTERVENTION REQUIRED MESSAGE BUG
  98. /7.    BATCH OUTPUT ROUTINE IGNORES NULLS
  99.  
  100. /    V4 CHANGES:
  101.  
  102. /    CHANGED CBATCH=4571 FOR VERSIONS 3 AND 4
  103. /    CHANGED TTY AND CTRLC TO WORK ON VT278
  104. /    CHANGED VERSION NUMBER TO MATCH V4 SEQUENCE: V "A0"\
  105. /    MODIFIED LPTTST TO PATCH OUTPUT DEVICE FOR VT278 SERIAL DEVICES.
  106. /    REMOVED FORCE TO UPPER CASE FOR BATCH LOG.
  107.  
  108. /05-AUG-82 VB0 CHANGES:
  109.  
  110. /    CHANGED MONITOR PROMPT FROM "." TO ">"
  111. /VB1    CHANGED MONITOR PROMPT FROM ">" TO "}"
  112. /
  113. /09-NOV-82
  114. /
  115. /    VB2 INHIBIT PASSING LINEFEED
  116. /
  117. /VB3 13-FEB-84    Add conditional for TD8 check.
  118. /        This adds 4k to user space.  Min memory req. 12k.
  119. /
  120.  
  121.  
  122. / TD ROM IF TDCHK = 0 don't reserve field 7
  123. /     IF TDCHK = 1 reserve field 7 for ROM option
  124. /     If system is DECmate set TDCHK to 0
  125.  
  126.     TDCHK=0
  127.  
  128. /SYSTEM DEPENDENT PARAMETERS
  129.  
  130.     AMFLAG=17    /ALTMODE FLAG FOR KBM
  131.     CDREC=51    /COMMAND DECODER
  132.     KMREC=7        /KEYBOARD MONITOR
  133.     BUFFER=3000
  134.     JSW=7746    /JOB STATUS WORD
  135.     DCB=7760    /DEVICE CONTROL BLOCK
  136.     MTWO=CLA CLL CMA RAL
  137.     MTHREE=CLA CLL CMA RTL
  138.     SYSTEM=7607
  139.     MPARAM=7643
  140. /********************************************
  141.     KEYMON=403
  142.     BEGLN=1000
  143.     PRINT=200
  144.     XGLINE=1200
  145.     BATCH=35    /REFERS TO KEYBOARD MONITOR!!!!!!!
  146.     BCHGO=46    /THEY MUST!!!!! BE CORRECT!!!!!!
  147.     CBATCH=4571    //V4: (JMS I [SHNDLR) CONTENTS OF "BATCH" IN KEYBOARD
  148.             //MONITOR. USED BY VERTST TO CHECK FOR CORRECT MONITOR
  149. /*******************************************
  150.     CDOVER=326
  151.     CDBEGLN=1200    /CD BUFFER AREA
  152.     ANALYZ=202    /CD ANALYSIS
  153.     TYPE=1367    /ERROR OUTPUT ROUTINE
  154.     CGLINE=1002
  155.     TT=21        /THESE REFER TO CD ASSEMBLY***VOLATILE***
  156.     DVICE=43    /IF CD OR MAIN OS/8 ASSEMBLY CHANGES,
  157.     DEFALT=42        /V3D NOT NEEDED
  158.     LKUPSW=245    /V3D IF CONTENTS=0, IN SPECIAL MODE
  159.     OUTSW=41    /THESE VALUES MUST BE ALTERED ALSO.
  160.     NAMECT=31
  161.     DEV1=33
  162.     RESTRT=676
  163. /********************************************
  164.     ORIGIN=5400
  165.     PSKF=6661    /LE8 IOT'S
  166.     PCLS=6666
  167.     RCRA=6632    /CARD READER IOT'S
  168.     RCSE=6672
  169.     RCSD=6671
  170.     RCSF=6631
  171.     RCRD=6674
  172. /*****************************
  173.     BOSCCL=07777
  174. /BATCH USES CERTAIN SYSTEM WORDS AS FLAGS AND STATUS
  175. /INDICATORS. THEY ARE:
  176.  
  177. /LOC. 07777. THIS IS USED AS THE BATCH IN PROGRESS FLAG.
  178. /BIT 1 IS BATCH IN PROGRESS. (BIP) =1 MEANS BATCH IS ON
  179. /BITS 6-8 HOLD THE FIELD WHERE BATCH IS SITTING
  180. /BIT 10 IS USED BY BAT: TO SIGNAL IT HAS READ A DOLLAR SIGN
  181. /BIT 11 IS USED BY THE COMMAND DECODER TO SIGNAL BATCH NOT THERE
  182.  
  183. /THE JOB STATUS WORD USES BIT 3 AS AN INDICATOR AS TO
  184. /WHETHER THE BATCH MONITOR IS CURRENTLY IN CORE. =1 MEANS
  185. /THAT THE BATCH SYSTEM NEED NOT BE RE-READ.
  186.  
  187. /BOSSW IS A FLAG WORD INTERNAL TO THE BATCH MONITOR.
  188. /IT IS SET UP DURING BATCH INITIALIZATION.
  189. /BIT 0: 1 IF USE OF PTR IS PROHOBITED DURING RUN
  190. /BIT 1: 1 IF LPT OR TTY LISTINGS ARE TO BE SPOOLED
  191. /BIT 2: 1 IF KMON AND CD ERRORS ARE NON-FATAL
  192. /BIT 10: 1 IF LP08 IS OUTPUT DEVICE
  193. /BIT 11: 1 IF OPERATOR IS NOT PRESENT
  194.  
  195. /IF SYS IS INPUT, LOCATIONS 7774 AND 7775 IN THE TOP FIELD
  196. /ARE USED AS POINTERS TO THE CORRECT DATA BLOCK ON THE
  197. /SYSTEM DEVICE. THE BUFFER IS RE-READ WHENEVER THE
  198. /BATCH MONITOR MUST BE RE-READ.
  199.  
  200.     SPLNUM=    7776    /SPOOL SEQUENCE NUMBER
  201.     SYCNT=    7775    /CHARACTER COUNT IN BUFFER
  202.     SYBLKN=    7774    /SYSTEM DEVICE BLOCK NUMBER
  203.  
  204. /IF SPOOLING IS USED, LOC. N7776 IS USED TO HOLD THE
  205. /XX IN 'BTCHXX.TM'.
  206.  
  207. /BATCH INITIALIZER PAGE 0
  208.     *0
  209.  
  210.     VERSON        /HOOK FOR INTERRUPT PROCESSING
  211.     CIF 30
  212.     JMP .-1
  213.  
  214.     *16
  215. XR1,    0
  216. XR2,    0
  217. TEMP,    0
  218. TEMP2,    0
  219. COUNT,    0
  220. BOSCTL,    1101    /CONTROL WORD TO READ/WRITE BOS
  221. CDFTOP,    0
  222. TOPCDF,    HLT        /CDF TO TOP FIELD
  223.     JMP I    CDFTOP
  224. T1,    0
  225. T2,    0
  226.     PAGE
  227. START,    SKP
  228.     JMP    BCHAIN    /IF CHAINED TO
  229.     JMS I (GETCOR    /DETERMINE CORE SIZE; PUT IN 7777
  230. BATASK,    CIF 10
  231.     JMS I    [200
  232.     5
  233.     0211        /.BI ASSUMED EXT
  234.     SKP
  235. BCHAIN,    JMS I    (GETCOR
  236.     DCA I    [BOSSW
  237.     CDF 10
  238.     TAD I    [MPARAM+1
  239.     AND    (4    /GET /V SWITCH
  240.     SNA CLA        /IS IT ON?
  241.     JMP    .+3    /NO
  242.     JMS I    [MESSG
  243.     VERMSG        /PRINT BATCH VERSION NUMBER
  244.     CDF 10
  245.     TAD I    (7620
  246.     DCA    T1    /GET STARTING BLOCK
  247.     TAD I    (7617
  248.     SNA
  249.     JMP    NOTSYS    /NO FILE - BATCH FROM PTR OR CDR
  250.     AND    [17
  251.     TAD    (MPARAM+3    /POINT INTO HANDLER TABLE
  252.     DCA    T2
  253.     TAD I    T2
  254.     CLL
  255.     TAD    [200    /IS THE DEVICE SYS OR CORESIDENT WITH SYS?
  256.     SNL CLA
  257.     JMP I    (INDERR    /NO
  258.     TAD I    T2    /GET DEVICE HANDLER ENTRY POINT
  259.     CDF 0
  260.     DCA I    (SYSINH    /STORE AS BATCH INPUT HANDLER
  261.     JMS    CDFTOP
  262.     TAD    T1
  263.     DCA I    (SYBLKN
  264.     TAD    (-601
  265.     DCA I    (SYCNT    /SET UP PARAMETERS FOR INPUT FILE
  266.     CDF 0
  267.     TAD    (SYSIN-1
  268.     JMP    STODEV    /INPUT DEV = SYS
  269.  
  270. NOTSYS,    TAD I    (MPARAM
  271.     RTL        /GET C FLAG IN SIGN BIT
  272.     SMA CLA
  273.     JMP    NOTCDR
  274.     JMS I    (CHANGE    /SET 026/029 CARD CODE
  275.     TAD    (CDR-1
  276.     JMP    STODEV    /INPUT DEV = CDR
  277. NOTCDR,    TAD I    [MPARAM+1
  278.     AND    (400
  279.     CDF 0
  280.     SNA CLA
  281.     JMP    BATASK    /NO INPUT SPECIFIED
  282.     STL RAR
  283.     DCA I    [BOSSW    /PTR INPUT FLAG
  284.     TAD    (PTR-1
  285. STODEV,    JMS I    (MVINSB    /MOVE THE PROPER ROUTINE INTO THE BATCH MONITOR
  286.     CDF 10
  287.     TAD I    [MPARAM+1
  288.     CDF 0
  289.     AND    (210        /GET /Q AND /U SWITCHES
  290.     CLL RTL
  291.     RTL
  292.     RAL        / /Q INTO LINK
  293.     SZA CLA
  294.     ISZ I    [BOSSW    /SET UNATTENDED BIT IF /U SPECIFIED
  295.     SNL
  296.     JMP    .+3    /NO /Q
  297.     TAD    (NULOUT-TTYOUT    /DEEP-SIX THE BATCH LOG
  298.     JMP NOLPT    /SET LPT MODE SO $MSG WILL ECHO
  299.     CDF 10
  300.     TAD I    [MPARAM+1
  301.     CDF 0
  302.     AND    (20    /CHECK /T SWITCH
  303.     CLL CIA
  304.     SZL CLA
  305.  
  306. //V4: MOVE SOME LITERALS TO PAGE 0 TO MAKE ROOM FOR BOSRAL, THE VT278
  307. //BATCH LOG PRINTING ROUTINE.
  308.  
  309.     JMS I [LPTTST    /OTHERWISE, CHECK OUT FOR LINE PRINTER
  310.             //RETURN AT CALL +1 IF:
  311. NOLPT,    TAD [TTYOUT-BOSLPT    /NO LPT
  312.     TAD [BOSLPT    /PARALLEL LPT;
  313.             //OR +3 WITH "BOSRAL" IF SERIAL.
  314.     DCA I [OUTPUT    /SET OUTPUT DEVICE TO TTY OR LPT OR NULOUT
  315.     TAD I [OUTPUT
  316.     TAD [-BOSLPT
  317.     SNA
  318.     JMP .+3        //FOR PARALLEL LPT ON IOT 66
  319.     TAD [BOSLPT-BOSRAL
  320.     SNA CLA        //FOR SERIAL LPT ON IOT 32
  321.     STL RTL
  322.     TAD I    [BOSSW
  323.     DCA I    [BOSSW    /AND SET FLAG
  324.     CDF 10
  325.     TAD I    [7600
  326.     CDF 0
  327.     SNA
  328.     JMP I    (CONT    /NO SPOOLING
  329.     AND    [17
  330.     DCA    T1
  331.     TAD    T1
  332.     TAD    (DCB-1
  333.     DCA    T2
  334.     CDF 10
  335.     TAD I    T2
  336.     CDF 0
  337.     JMP I    (SPCONT
  338.     PAGE
  339. SPCONT,    SMA CLA
  340.     JMP    BADSPL
  341.     TAD    T1
  342.     DCA I    (SPLDEV
  343.     STL RTR
  344.     TAD I    [BOSSW
  345.     DCA I    [BOSSW
  346. CONT,    JMS I (EOPTN    /CHECK FOR /E SWITCH
  347.     TAD (BATPTR    /SET POINTER TO BATCH.SV
  348.     DCA FILPTR
  349.     CLA IAC        /DO LOOKUP ON SYS
  350.     CIF 10
  351.     JMS I [200
  352. K2,    2
  353. FILPTR,    BATPTR
  354.     0        /WHO CARES ABOUT THE LENGTH?
  355.     JMP NOBACH    /BATCH FILE NOT FOUND
  356.     TAD I K7777    /PUT IN FIELD OF BOS
  357.     AND (70
  358.     TAD (CDF 0
  359.     DCA CDFBOS
  360.     TAD (201
  361.     JMS I [SYS    /READ AND ALTER KEYBOARD MON.
  362.     BUFFER
  363.     KMREC
  364.             /GET RECORD # OF BOS
  365.     JMS I [VERTST    /GET VERSION OF MONITOR
  366.     TAD (EOINIT
  367.     AND (7400
  368.     CLL RTL
  369.     RTL
  370.     RAL
  371.     TAD K2
  372.     TAD FILPTR
  373.     DCA BOSREC    /WE WILL RE-WRITE BOS LATER
  374.     TAD BOSREC    /ALTER KEYBOARD MONITOR
  375.     DCA I (BUFFER+BATCH+3    /RECORD #
  376.     TAD CDFBOS
  377.     AND (70        /ALTER CONTROL WORD
  378.     TAD BOSCTL
  379.     DCA I (BUFFER+BATCH+1
  380.     TAD BOSREC-1
  381.     DCA I (BUFFER+BATCH+2
  382.     CLA CLL CML RTL
  383.     TAD CDFBOS
  384.     DCA I (BCHGO+BUFFER    /JMP TO CORRECT FIELD
  385.     TAD (BOS    /START ADD. OF MONITOR
  386.     DCA I (BCHGO+BUFFER+2    /ENTRY POINT
  387.     TAD (4200    /RE-WRITE KEYBD. MON.
  388.     JMS I [SYS
  389.     BUFFER
  390.     KMREC
  391.     TAD (201    /READ IN COMMAND DECODER
  392.     JMS I [SYS
  393.     BUFFER        /AND INSERT BOS RECORD
  394.     CDREC
  395.     TAD CDFBOS    /NOW FILL IN THE COMMAND DECODER
  396.     DCA I (TT+BUFFER
  397.     TAD (CDBOS
  398.     DCA I (DVICE+BUFFER    /ALLOW CD TO CHECK BATCH VALIDITY
  399.     TAD I (CDBOS
  400.     CIA        /STORE COMPLEMENT ALSO
  401.     DCA I (OUTSW+BUFFER
  402.     CLL CML RTL    /CREATE CIF CDF BATCH
  403.     TAD CDFBOS
  404.     DCA I (NAMECT+BUFFER
  405.     TAD (CDBOS
  406.     DCA I (DEV1+BUFFER
  407.     TAD (4200
  408.     JMS I [SYS    /RE WRITE CD.
  409.     BUFFER
  410.     CDREC
  411.     JMS I (SETH    /SET HUSH IF /H SPECIFIED
  412.     CLA CLL CML RAR
  413.     TAD BOSCTL
  414.     JMS I [SYS    /INPUT POINTERS SET UP.
  415.     ORIGIN&7400
  416. BOSREC,    HLT
  417.     CLA CLL CML RTR    /BATCH IN PROGRESS
  418.     JMS I [INCOR
  419. K7777,    7777
  420.     CLA STL RAR    /4000
  421.     DCA I (DOLFLG    /SET FOR INITIAL $JOB
  422.     JMS I (MOVE    /PUT IMAGE OF BOS INTO HIGH CORE
  423.     ORIGIN-7600
  424.     ORIGIN
  425. CDFBOS,    HLT
  426.     ORIGIN
  427.     TAD    (0160    /SET SPOOL FILENAME TO BTCHA0
  428.     JMS    CDFTOP
  429.     DCA I (SPLNUM
  430. BATRET,    CIF CDF 0
  431.     JMP I [7605
  432.  
  433. NOBACH,    JMS I [MESSG    /BATCH.SV NOT THERE
  434.     NBATCH
  435.     JMP    BATRET
  436. BADSPL,    JMS I [MESSG
  437.     SPLERR
  438.     JMP I (BATASK
  439. INDERR,    JMS I    [MESSG
  440.     NODEV
  441.     JMP I    (BATASK
  442.     PAGE
  443. MESSG,    0        /MESSAGE PRINTING ROUTINE
  444.     CLA
  445.     CDF 0
  446.     JMS I [CRLF    /GENERATE CARRIAGE RET., LINE FEED
  447.     TAD I MESSG    /ADDRESS OF ERROR MESSAGE
  448.     ISZ MESSG    /POINT TO RETURN
  449.     DCA TEMP
  450. MCONT,    TAD I TEMP    /GET TEXT CHARACTERS IN AC
  451.     CLL RTR
  452.     RTR
  453.     RTR
  454.     JMS PCHAR    /PUNCH IT
  455.     TAD I TEMP
  456.     JMS PCHAR    /SECOND OF TWO.
  457.     ISZ TEMP    /NEXT TEXT WORD
  458.     JMP MCONT    /CONTINUE
  459.  
  460. PCHAR,    0        /ROUTINE TO UNPACK AND PRINT TEXT
  461.     AND [77
  462.     SNA        /0 TERMINATES THE LIST
  463.     JMP I MESSG
  464.     TAD (-37    /SEPARATE DIGITS FROM ALPHAS
  465.     SNA
  466.     JMP    PCRLF    /_ IS SPECIAL CHAR
  467.     SPA 
  468.     TAD (100    /MAKE IT ALPHABETIC
  469.     TAD (237
  470.     JMS I (TTYOUT
  471.     JMP I PCHAR
  472.     ZBLOCK 3    //USED TO HAVE A TSF WAIT FOR ASR-TYPES.
  473.  
  474. PCRLF,    JMS I    [CRLF
  475.     JMP I    PCHAR
  476. LZERO=0
  477. GETCOR,    0        /ONCE ONLY ROUTINE TO DETERMINE CORE SIZE
  478.     TAD I (BOSCCL    /GET CORE-SIZE WORD
  479.     RTL        /PUT BATCH IN-PROGRESS BIT IN LINK
  480.     SZL CLA        /ARE WE RUNNING BATCH FROM A BATCH JOB?
  481.     JMP AAA        /YES, DON'T TOUCH ORIGINAL CORE SIZE
  482.     TAD I (BOSCCL    /NO, GET OLD SOFTWARE CORE SIZE
  483.     AND (7177    /BUT DON'T SAVE EXTENDED DATE BITS
  484.     DCA I (OLDCOR    /SAVE CURRENT SOFTWARE CORE SIZE
  485. AAA,    TAD I (BOSCCL    /GET BATCH CTL WD
  486.     AND (70        /IT MIGHT ALREADY CONTAIN THE ANSWER
  487.     SZA
  488.     JMP    STOCOR
  489.     TAD [7607
  490.     DCA LZERO
  491. CHUG,    CDF 10
  492.     TAD K
  493.     DCA I (LZERO
  494. K10,    10
  495.     TAD LZERO
  496.     CIA
  497.     TAD [7607
  498.     SZA CLA
  499.     JMP DUN
  500.     TAD I (LZERO
  501.     NOP
  502.     CIA
  503.     TAD K
  504.     SZA CLA
  505.     JMP DUN
  506.     TAD [10
  507.     TAD CHUG
  508.     DCA CHUG
  509.     ISZ K
  510.     JMP CHUG-2
  511.     CLA CMA
  512. DUN,    CIF CDF 0
  513.     TAD K
  514.     TAD K10
  515.     CLL RTL        /STORE HIGHEST FIELD # INTO 7777
  516.     RAL        / Store Field number 70 - 10
  517. STOCOR,    DCA INCOR
  518.     TAD INCOR    / Get field back
  519.  
  520. IFZERO TDCHK <
  521.     TAD (-20    /Test for at least 12k words of memory
  522.     SPA SNA        / if we don't have it
  523.     JMP NOCORE    / error
  524.     CLL CLA        / otherwise all set
  525.     >
  526.  
  527. IFNZRO TDCHK <
  528.     TAD (-10    /TEST FOR AT LEAST 8 K
  529.     SPA SNA
  530.     JMP NOCORE
  531.     TAD (-60    /LIMIT TO FIELD 6, SO AS NOT
  532.     SNA CLA        /TO DISTURB ROM IN F. 7
  533.     TAD (-10
  534.     TAD INCOR
  535.     DCA INCOR
  536.     >
  537.  
  538.     TAD    INCOR    / Get coresize back
  539.     TAD    (CDF    / and build a cdf
  540.     DCA    TOPCDF
  541.     TAD I (BOSCCL
  542.     AND (7707    /V3D
  543.     TAD INCOR
  544.     DCA I (BOSCCL
  545.     TAD    INCOR
  546.     TAD    (201
  547.     DCA I    (SYCNTL
  548.     TAD    TOPCDF
  549.     DCA I    (BOSCDF
  550.     JMP I GETCOR
  551. NOCORE,    CLA
  552.     JMS I [MESSG
  553.     COR8
  554.     JMP I [7600
  555. K,    -10
  556.  
  557. INCOR,    0        /INCLUSIVE OR ROUTINE. USE THE 
  558.     DCA TEMP    /FOLLOWING:
  559.     TAD I INCOR    /A .OR. B= .NOT. A .AND. B +A
  560.     DCA TEMP2
  561.     TAD TEMP
  562.     CMA
  563.     AND I TEMP2
  564.     TAD TEMP
  565.     DCA I TEMP2
  566.     ISZ INCOR
  567.     JMP I INCOR
  568.     PAGE
  569. PTR,    0        /HI SPEED READER HANDLER
  570.     RDF        /** MOVED TO 5400 IN BATCH FIELD **
  571.     TAD    PCDIF0
  572.     DCA    PTRRET
  573.     JMS I PTRDOL    /CHECK FOR $ INSERTION
  574.     JMP PTRISZ    /YES
  575.     DCA    PTIMER
  576.     JMS I TCTRLC
  577.     RFC
  578. PTM2,    RSF
  579.     JMP PTMER
  580.     TAD PTR200    /FORCE PARITY ON
  581.     RRB
  582. PTRISZ,    ISZ PTR
  583. PTRRET,    HLT
  584.     JMP I PTR
  585. PCDIF0,    CDF CIF 0
  586. TCTRLC,    CTRLC
  587.  
  588. PTMER,    AND I    0
  589.     AND I    0
  590.     ISZ    PTIMER
  591.     JMP PTM2    /TIMES OUT IN 16 MS.
  592.     JMP PTRRET
  593. PTIMER,    0
  594. PTR200,    200
  595. PTRDOL,    GETDOL
  596. /SYS PERFORMS I/O TO SYSTEM DEVICE. THE CALLING SEQUENCE
  597. /CONFORMS TO THAT OF THE STANDARD OS/8 CALL SEQUENCE, EXCEPT
  598. /THAT WE HAVE ONE ERROR RETURN FROM THE ROUTINE, NOT A LOT
  599. /OF SEPARATE ERROR RETURNS.
  600.  
  601. SYS,    0
  602.     DCA SYCTL    /AC HAD CONTROL WORD
  603.     TAD I SYS
  604.     DCA SYBUFF    /BUFFER FOR TRANSFER
  605.     ISZ SYS
  606.     TAD I SYS
  607.     DCA SYREC    /RECORD OF TRANSFER
  608.     ISZ SYS
  609.     CIF 0
  610.     JMS I (SYSTEM
  611. SYCTL,    HLT
  612. SYBUFF,    HLT
  613. SYREC,    HLT
  614.     SKP CLA
  615.     JMP I SYS
  616.     JMS I (PRMESG
  617.     SERMSG
  618.     JMP I    (BATRET
  619.  
  620. BATPTR,    FILENAME    BATCH.SV
  621. CHANGE,    0        /ROUTINE TO ALTER CARD TABLE
  622.     CDF 10
  623.     TAD I (MPARAM+2
  624.     CDF 0
  625.     AND (10        /GET /6 SWITCH
  626.     SZA CLA        /IF IT IS SPECIFIED,
  627.     TAD (C026-C029    /USE DEC 026 CARD CODES,
  628.     TAD (C029    /OTHERWISE USE DEC 029 CODES
  629.     DCA XR1        /ADDDRESS OF CORRECT LIST
  630.     TAD (CLST-1
  631.     DCA XR2        /THE LOCS. THAT GET ALTERED
  632.     TAD [-15
  633.     DCA COUNT    /13 ENTRIES.
  634.     TAD I XR2
  635.     DCA CHPTR
  636.     TAD I XR1
  637.     DCA I CHPTR    /ALTER TABLE IN MONITOR.
  638.     ISZ COUNT
  639.     JMP .-5
  640.     JMP I CHANGE
  641. CHPTR,    0
  642.  
  643. CLST,    CDT+5        /ADDRESSES OF CARD CONVERSION LOCS.
  644.     CDT+6
  645.     CDT+7
  646.     CDT+15
  647.     CDT+16
  648.     CDT+17
  649.     CDT+25
  650.     CDT+26
  651.     CDT+27
  652.     CDT+30
  653.     CDT+35
  654.     CDT+36
  655.     CDT+37
  656.  
  657. C026=.-1
  658.     7735        /CODES FOR 026 CARDS
  659.     4076
  660.     0774;3314;1002;0305;3204;1273;3606;1341;3716;1175
  661.     3401
  662.  
  663. C029=.-1
  664.     3203;4007;3502;7514;0577;3637;0104;1211;3374;0641;7316;3410
  665.     1376
  666.  
  667. SETH,    0        /SET HUSH
  668.     CDF 10
  669.     TAD I (MPARAM    /LOOK AT A-L SWITCHES
  670.     AND (20        /IN PARTICULAR, LOOK AT /H BIT
  671.     CDF 0
  672.     DCA I (HUSH    /SAVE THIS BIT
  673.     JMP I SETH
  674.  
  675.     PAGE
  676. BILEN=    0        /INITIALIZE MAX INPUT ROUTINE LENGTH
  677.  
  678. SYSIN,    0        /INPUT FROM SYSTEM DEVICE
  679.     RDF        /** MOVED INTO 5400 IN BATCH FIELD **
  680.     TAD    SYCDIF
  681.     DCA    SYSRET
  682. SYSIN4,    JMS I SYSDOL    /CHECK FOR $ INSERTION
  683.     JMP SYSISZ    /YES
  684.     TAD BLOK    /RE-READ BUFFER?
  685.     SZA CLA
  686.     JMP SYGETC    /NO. STILL THERE
  687.     TAD I PSYBLKN
  688.     DCA BLOK
  689.     TAD I PSYCNT
  690. IOSYS,    DCA SYCHCN    /RESTORE CHARACTER COUNT
  691.     CIF 0
  692.     JMS I    SYSINH    /READ THE BLOCK
  693. SYCNTL,    0
  694. BTBUF,    ORIGIN-400
  695. BLOK,    0
  696.     JMP I    PSYIERR
  697.     TAD BTBUF    /SET BUFFER POINTER.
  698.     DCA WPTR    /NOW DETERMINE FROM COUNT WHICH WORD
  699.     TAD SYS601    /WAS INTERRUPTED. WHEN AC GOES NEG.,
  700.     TAD SYCHCN    /WE ARE AT PROPER 2 WORD GROUP.
  701. GWDLP,    TAD SYSM3    /THEN WE FORM A JMP TO CORRECT WORD
  702.     SPA
  703.     JMP GEWD
  704.     ISZ WPTR    /SKIP 2 WORDS
  705.     ISZ WPTR
  706.     JMP GWDLP
  707. GEWD,    TAD SYS3    /FORM A JMP CHARX, X=1,2,3
  708.     TAD JMPDOT
  709.     DCA JMPCH    /SET UNPACK SWITCH
  710. SYGETC,    ISZ JMPCH    /NORMAL CHAR. FETCH
  711.     ISZ SYCHCN    /NEED NEW BLOCK?
  712. JMPDOT,    JMP JMPCH    /NO
  713.     ISZ BLOK    /YES. NEXT BLOCK
  714.     TAD SYM601
  715.     JMP IOSYS    /READ IT.
  716. JMPCH,    JMP JMPCH    /3 WAY SWITCH
  717.     JMP ICHAR1    /FIRST OF 3
  718.     JMP ICHAR2    /SECOND
  719.     TAD JMPDOT
  720.     DCA JMPCH    /RESET 3 WAY SWITCH
  721.     JMS I    PCTRLC
  722.     TAD I WPTR    /NOTE THAT WE CAN'T DESTROY WPTR BY
  723.     AND SY7400    /BY DOING ISZ'S UNTIL THE 3RD CHAR.
  724.     CLL RTR        /THAT IS BECAUSE IF WE ARE BROKEN
  725.     RTR        /UP, WE CAN ONLY POINT TO THE 2 WORD
  726.     DCA    SYTEMP    /GROUP AS A WHOLE.
  727.     ISZ WPTR
  728.     TAD I WPTR
  729.     AND SY7400
  730.     BSW
  731.     CLL RTR
  732.     TAD    SYTEMP
  733.     ISZ WPTR    /BUMP TO NEXT GROUP
  734.     JMP CHCOM
  735. ICHAR2,    CLA IAC
  736. ICHAR1,    TAD WPTR
  737.     DCA    SYTEMP    /THIRD CHAR NEEDS WPTR!
  738.     TAD I    SYTEMP
  739. CHCOM,    AND SYS177
  740.     DCA    SYTEMP
  741.     TAD SYCHCN
  742.     DCA I PSYCNT
  743.     TAD BLOK
  744.     DCA I PSYBLKN
  745.     TAD    SYTEMP    /CHECK FOR ^Z
  746.     TAD    M12
  747.     SNA CLA
  748.     JMP    SYSIN4    /LF FOUND
  749.     TAD    SYTEMP
  750. /    SNA        /V3C
  751. /    JMP SYSISZ    /RETURN NULL AS NULL
  752.     TAD SYSM32
  753.     SZA
  754.     JMP CHOUT    /NOPE. OK
  755.     TAD SYEXT    /^Z. DISABLE INPUT
  756.     DCA SYSIN4
  757. SYEXT,    JMP SYSRET
  758. CHOUT,    TAD SYS232
  759. SYSISZ,    ISZ SYSIN
  760. SYSRET,    HLT        /CDF CIF RETURN FIELD
  761.     JMP I SYSIN
  762.  
  763. SYCHCN,    0
  764. WPTR,    0
  765. SYSCHR,
  766. SYTEMP,    0
  767. PSYBLK,    SYBLKN
  768. PSYCNT,    SYCNT
  769. SYSINH,    0    /GETS ADDRESS OF INPUT HANDLER (7607 OR CO-RES)
  770. PSYIER,    SYIERR
  771. SYS601,    601
  772. SYM601,    -601
  773. SYSM3,    -3
  774. SYS3,    3
  775. PCTRLC,    CTRLC
  776. SY7400,    7400
  777. SYS177,    177
  778. SYSM32,    -32
  779. SYS232,    232
  780. SYCDIF,    CDF CIF 0
  781. SYSDOL,    GETDOL
  782. M12,    -12
  783.  
  784.     IFZERO .-SYSIN-BILEN&4000    <BILEN=.+1-SYSIN>
  785.     PAGE
  786. /CARD READER HANDLER. BUFFERS AN ENTIRE CARD IN THE LINE BUFFER.
  787. /ON END OF CARD, WE CAST OUT EXTRANEOUS SPACES IN THE BUFFER
  788.  
  789. CDR,    0
  790.     RDF
  791.     TAD    CCDIF0
  792.     DCA    CDRRET
  793.     JMS I CDRDOL    /CHECK FOR $ INSERTION
  794.     JMP CDRISZ    /YES
  795.     ISZ CHCNT    /STILL CHARACTERS IN BUFFER?
  796.     JMP GETCH    /YES.
  797. NEWCRD,    TAD PLNBUF
  798.     DCA CDRPTR    /NO. READ A NEW CARD
  799. CSLCT,    JMS I    CCTRLC
  800.     RCSE        /SELECT A CARD
  801.     JMP CSLCT
  802. RDNEXC,    DCA CTIMER
  803. RDCOLM,    RCSF        /WAIT FOR DATA
  804.     JMP EOC        /AND CHECK FOR END OF CARD
  805.     RCRA
  806.     CLL RAR        /TRANSLATE INTERNAL INTO ASCII
  807.     TAD PCDT
  808.     DCA CTEMP
  809.     TAD I CTEMP
  810.     SZL        /LEFT OR RIGHT?
  811.     JMP .+4
  812.     RTR;RTR;RTR
  813.     AND CDR77
  814.     TAD CDR240
  815.     ISZ    CDRPTR
  816.     DCA I CDRPTR
  817.     ISZ CHCNT    /CAN'T SKIP
  818. EOC,    RCSD        /CARD DONE?
  819.     JMP TIME    /NO - CHECK TIMEOUT
  820.     TAD CHCNT    /GET REAL NUMBER OF CHARACTERS
  821.     CMA
  822.     DCA CHCNT
  823. CHKSPC,    TAD I    CDRPTR
  824.     TAD CDM240
  825.     SNA CLA
  826.     JMP SPCIG
  827.     ISZ    CDRPTR
  828. CDCR,    TAD CDR215    /INSERT END OF LINE MARKER
  829.     DCA I    CDRPTR
  830.     TAD PLNBUF
  831.     DCA CDRPTR
  832. GETCH,    ISZ    CDRPTR
  833.     TAD I CDRPTR
  834. CDRISZ,    ISZ CDR
  835. CDXIT,    RCRD        /CLEAR CARD DONE FLAG
  836. CDRRET,    HLT
  837.     JMP I CDR
  838.  
  839. SPCIG,    CLA CMA        /BACK UP ONE CHAR
  840.     TAD    CDRPTR
  841.     DCA    CDRPTR
  842.     ISZ CHCNT    /IF SKIP, IT'S A BLANK LINE
  843.     JMP CHKSPC
  844.     JMP CDCR
  845.  
  846. TIME,    AND I 0    /CHECK TIME OUT - FIRST DELAY A WHILE
  847.     TAD CDM240    /V3C
  848.     DCA TIME    /TIME OUT A LOT
  849.     ISZ TIME
  850.     JMP .-1
  851.     ISZ CTIMER
  852.     JMP RDCOLM
  853.     DCA CHCNT
  854.     JMP NEWCRD    /CARD HUNG - WAIT FOR READER READY
  855. CCDIF0,    CDF CIF 0
  856. CHCNT,    -1
  857. PLNBUF,    LINBUF-1
  858. CCTRLC,    CTRLC
  859. PCDT,    CDT
  860. CDR77,    77
  861. CDR240,    240
  862. CDM240,    -240
  863. CDR215,    215
  864. CDRPTR,    0
  865. CTEMP,    0
  866. CTIMER,    0
  867. CDRDOL,    GETDOL
  868.  
  869.     IFZERO    .-CDR-BILEN&4000    <BILEN=.+1-CDR>
  870. LPTTST,    0        //HAS BEEN MODIFIED FOR VT278 PRINTER SUPPORT.
  871.     TAD I (7771    //TO GET THE VT278 BIT IN "OS78" LOCATION.
  872.     AND (4
  873.     SNA CLA        //SO WE CAN HAVE 278 SOFTWARE RUNNING ON OTHER 8S.
  874.     JMP LPTST1    //DO IT THE OLD WAY.
  875.     ISZ LPTTST
  876.     TAD (BOSRAL    //SERIAL PRINT ROUTINE.
  877.     JMP LPTST2    //FOR EXIT AT CALL+3 TO SET "OUTPUT".
  878.  
  879. LPTST1,    TAD    (240
  880.     PCLS        /PRINT AN INNOCUOUS BLANK
  881.     CLA
  882.     ISZ    WAIT
  883.     JMP    .-1    /WAIT A LOT
  884.     PSKF        /WELL?
  885.     JMP I    LPTTST    /NO WAY!
  886.     CLA IAC        /DON'T BE FOOLED - COULD STILL BE AN ANALEX
  887.     6654        /LOAD ANALEX BUFFER
  888.     SNA CLA
  889.     JMP    ANALEX    /IF IOT CLEARED AC, ITS AN ANALEX
  890.     TAD    (215
  891.     PCLS        /CLEAR LINE BUFFER BY PRINTING CR
  892.     PSKF
  893.     JMP    .-1
  894.     CLA
  895. LPTST2,    ISZ    LPTTST
  896.     JMP I    LPTTST    /TAKE SKIP RETURN
  897.  
  898. ANALEX,    6652        /CLEAR FLAGS
  899.     6662        /CLEAR BUFFER
  900.     JMP I    LPTTST    /TAKE NO LPT RETURN
  901.  
  902. WAIT,    0
  903.     PAGE
  904. NBATCH,    TEXT /BATCH.SV NOT FOUND ON SYS:/
  905. COR8,    TEXT /INSUFFICIENT MEMORY FOR BATCH RUN/
  906. BADMON,    TEXT /WRONG MONITOR/
  907. NODEV,    TEXT /DEV NOT IMPLEMENTED_/
  908. SPLERR,    TEXT /ILLEGAL SPOOL DEVICE_/
  909. VERMSG,    TEXT    /BATCH /
  910.     *.-1
  911.     2600+VERSON    /MAKES IT "VB1"
  912.     PATCH+37    /THIS IS THE PATCH LEVEL AND A CRLF INDICATOR
  913. VERTST,    0
  914.     TAD I (BUFFER+BATCH    /SHOULD BE 4571 IN V3 AND V4
  915.     TAD (-CBATCH
  916.     SNA CLA
  917.     JMP I VERTST
  918.     JMS I [MESSG
  919.     BADMON
  920.     JMP I [7600
  921.  
  922. MVINSB,    0
  923.     DCA    XR1    /ADDR OF INPUT ROUTINE
  924.     TAD    (BATIN-1    /ADDR OF PLACE IN BATCH MONITOR
  925.     DCA    XR2
  926.     TAD    (-BILEN
  927.     DCA    BMVCNT
  928.     TAD I    XR1
  929.     DCA I    XR2
  930.     ISZ    BMVCNT
  931.     JMP    .-3    /MOVE ROUTINE UP
  932.     JMP I    MVINSB
  933. BMVCNT,    0
  934.  
  935. EOPTN,    0        /CHECK FOR /E OPTION
  936.     CDF 10
  937.     TAD I (MPARAM
  938.     CDF 0
  939.     AND (200    /ISOLATE E SWITCH
  940.     SNA CLA
  941.     JMP I EOPTN    /NOT ON
  942.     TAD (1000
  943.     JMS I (INCOR    /OR 1000 INTO BOSSW
  944.     BOSSW
  945.     JMP I EOPTN
  946.  
  947.     EOINIT=.
  948.     PAGE
  949.     FIELD 0        /DUMP PAGE 0 LITERALS HERE
  950.     *ORIGIN        /THIS CODE ACTUALLY EXECUTES IN TOP FIELD!
  951.  
  952. BATIN,    ZBLOCK    BILEN    /BATCH INPUT ROUTINE GOES HERE
  953.  
  954. END,    TAD I (HUSH
  955.     SZA CLA
  956.     JMP BKILL    /SUPPRESS #END WHEN HUSHED
  957.     JMS I (PRMESG
  958.     EOBMSG
  959. BKILL,    CDF 10
  960.     STA
  961.     TAD I (7700    /V3D
  962.     DCA I (7700    /ALLOWS CORE IMAGE TO BE PRESERVED ACROSS BATCH
  963.     JMP I (MORKIL
  964.  
  965. SETJSW,    0        /ROUTINE TO SET JOB
  966.     TAD (7377    /STATUS WORD TO INDICATE THAT
  967.     CDF 0        /BATCH IS STILL IN CORE
  968.     AND I (JSW
  969.     TAD (400
  970.     DCA I (JSW
  971.     JMS I (CDFRST    /RESTORE TRUE DATA FIELD
  972.     JMP I SETJSW
  973.  
  974.     PAGE
  975. /THIS IS THE ACTUAL BATCH MONITOR. THIS ENTRY IS FOR THE
  976. /INTERFACE WITH THE KEYBOARD MONITOR.
  977.  
  978. BATVFY,    2214        /** THIS LOCATION IS VERIFIED BY BAT: **
  979.  
  980. BOS,    CDF 0        /SEE IF CD FOUND AN ERROR
  981.     TAD I (BOSCCL    /IF BIT 11 SET, IT DID.
  982.     CLL RAR
  983.     CLA
  984.     TAD I (BOSCCL    /RESTORE IT.
  985.     AND M2        /ERASE IT
  986.     DCA I (BOSCCL
  987.     JMS I (CDFRST    /RESTORE DATA FIELD
  988.     SZL CLA
  989.     JMP    CDERR
  990.     JMS I (KMLINK    /LINK I/O OF BOS AND K.M.
  991. BOSSB,    TAD OUTPUT
  992.     DCA BOUTDV    /SET MESSAGES
  993.     JMS I (GLINE    /READ LINE OF INPUT
  994.     TAD HUSH
  995.     SZA CLA
  996.     JMP BOSRE    /DON'T ECHO LINES WHEN HUSHED
  997.     TAD I (LINBUF
  998.     TAD (-"$
  999.     SNA CLA
  1000.     TAD I (LINBUF+1
  1001.     TAD (-"J    /DON'T ECHO $JOB CARD HERE
  1002.     SNA CLA
  1003.     TAD I (LINBUF+2
  1004.     TAD (-"O
  1005.     SZA CLA
  1006.     JMS I (ECHO    /BUT ECHO ANY OTHER LINE
  1007. BOSRE,    TAD I (LINBUF    /ENTER HERE FROM CD IF KM COMMAND SEEN
  1008.     DCA I (BNAM    /GET THE FIRST CHAR ON THE LINE
  1009.     TAD DOLFLG    /DO WE NEED $?
  1010.     SMA CLA
  1011.     JMP I (NXPRG    /NO. LOOK FOR . OR /
  1012.     TAD I (BNAM    /SEE IF WE HAVE IT
  1013.     TAD (-"$
  1014.     SZA CLA
  1015.     JMP BOSSB    /NOT YET.
  1016.     JMP I (KMDOLR    /SEE IF IT'S $JOB
  1017.  
  1018. CDERR,    JMS I    (PRMESG
  1019.     CDEMSG
  1020.     JMP    BOS
  1021. /HERE TO ECHO $JOB CARD
  1022.  
  1023. DOLECH,    TAD HUSH
  1024.     SZA CLA
  1025.     JMP HUSH2    /DON'T ECHO $JOB WHEN HUSHED
  1026.     TAD (214
  1027.     JMS OUTCHR
  1028.     TAD I (BOSSW
  1029.     CLL RTR        /ECHO A PAGE OF $JOBS TO LPT ONLY
  1030.     SNL CLA        /IS LPT OUTPUT?
  1031.     JMP DOLEC2
  1032.     TAD (-24    //V4: KEEPS THE TAGLINE ABOVE FOLD IN HALF-PAGES.
  1033.     DCA DOLFLG
  1034.     TAD (215
  1035.     JMS OUTCHR    //CHARACTER PRINTERS WILL NEED RESETTING.
  1036.     TAD (212
  1037.     JMS OUTCHR    /SPACE DOWN TO MIDDLE OF PAGE
  1038.     ISZ DOLFLG
  1039.     JMP .-3        /REPLACE NEXT THREE LOCS IF CENTRONIX PRINTER:
  1040.     JMS I (ECHO    /216
  1041.     JMS I (ECHO    /TAD .-1
  1042.     JMS I (ECHO    /JMS OUTCHR    /PRINT LARGE CHARS
  1043.     JMS I (ECHO
  1044. DOLEC2,    TAD (214
  1045.     JMS OUTCHR
  1046.     JMS I (ECHOT    /PUT $JOB TO TTY IF NEEDED
  1047.     JMS I (CRLF
  1048. HUSH2,    DCA DOLFLG
  1049.     JMP BOSSB
  1050.  
  1051. GETDOL,    0        /ROUTINE TO PUT BACK ANY $ READ BY BAT:
  1052.     CDF 0
  1053.     TAD I (BOSCCL    /GET BATCH CONTROL WORD
  1054.     CLL RTR
  1055.     SZL CLA        /TEST BIT 10
  1056.     JMP GOTDOL    /ITS ON - MUST PUT IN A $
  1057.     JMS I (CDFRST    /NO - SET DF TO THIS FIELD
  1058.     ISZ    GETDOL
  1059.     JMP I GETDOL    /TAKE SKIP RETURJ
  1060. GOTDOL,    CLL STA RTL        /7775
  1061.     AND I (BOSCCL
  1062.     DCA I (BOSCCL    /REMOVE THE BIT
  1063.     TAD ("$
  1064.     JMP I GETDOL    /TAKE NON-SKIP RETURN WITH $ IN AC
  1065. GETCOM,    JMS I    (MOVE
  1066.     -112        /PUT BUFFER INTO KEYBOARD MON.
  1067.     LINBUF+1
  1068.     CDF 0
  1069.     BEGLN
  1070.     TAD I (AMODE    /V3C GET BATCH ALTMODE FLAG
  1071.     SZA CLA
  1072.     STL RAL        /SET KBM ALTMODE FLAG IF NECESSARY
  1073.     CIF CDF 0
  1074.     DCA I (AMFLAG    /IT'S IN FIELD 0
  1075.     JMP I .+1    /AND GO PROCESS IT
  1076.     KEYMON+1
  1077. M2,    -2
  1078.  
  1079. OUTCHR,    0
  1080.     JMS I    BOUTDV
  1081.     JMP I    OUTCHR
  1082.  
  1083. BOUTDV,    TTYOUT
  1084. OUTPUT,    0
  1085. DOLFLG,    0        /$ SLEW FLAG - NEGATIVE IF SLEW
  1086. HUSH,    0        /NON-0 MEANS HUSHED (/H)
  1087.     PAGE
  1088. BOSSW,    0        /BATCH STATUS FLAG.
  1089. MSG,    0
  1090.     TAD I (DOLFLG    /IF $JOB SLEW SET, DON'T PAUSE
  1091.     SPA CLA
  1092.     JMP I MSG
  1093.     TAD BOSSW    /NO ECHO IF TTY IS OUTPUT
  1094.     CLL RTR
  1095.     SZL CLA
  1096.     JMS I (ECHOT
  1097.     TAD BOSSW    /IS OPERATOR AVAILABLE?
  1098.     CLL RAR
  1099.     SZL CLA
  1100.     JMP I MSG    /NO. CONTINUE
  1101.     TAD (207
  1102.     JMS I (TTYOUT
  1103.     //V4  KCC        /WAIT A WHILE
  1104.     NOP
  1105.     JMS I (TTY
  1106.     JMP I MSG
  1107.  
  1108. TESTB,    0        /TEST ROUTINE. TEST LIST AGAINST BNAM
  1109.     TAD I TESTB
  1110.     DCA PRMESG    /# ELEMENTS IN LIST
  1111. TSTB2,    ISZ TESTB    /POINT TO ELEMENT
  1112.     TAD I TESTB
  1113.     ISZ TESTB
  1114.     TAD I    (BNAM    /TEST IT
  1115.     SNA CLA
  1116.     JMP TSBOVR    /A MATCH
  1117.     ISZ PRMESG
  1118.     JMP TSTB2
  1119.     ISZ TESTB
  1120.     JMP I TESTB    /NO MATCH
  1121. TSBOVR,    TAD I TESTB
  1122.     DCA TESTB
  1123.     JMP I TESTB
  1124.  
  1125. OLDCOR,    0        /V3C HOLDS OLD SOFTWARE CORE SIZE WORD
  1126.     /        /MUST HAVE ADDRESS .GT. 6000
  1127. PRMESG,    0        /MESSAGE PRINTER
  1128.     DCA TESTB    /SET FOR NO SKIP ON ISZ
  1129.     TAD I PRMESG    /INDEX INTO MESSAGE LIST
  1130.     DCA    PRTEMP
  1131.     JMS I (CRLF
  1132.     TAD    ("#    /BATCH ERROR SIGNAL
  1133.     JMS I (OUTCHR
  1134. PRMSG2,    TAD I    PRTEMP
  1135.     CLL RTR;RTR;RTR
  1136.     JMS PNCH
  1137.     TAD I    PRTEMP
  1138.     JMS PNCH
  1139.     ISZ    PRTEMP
  1140.     JMP PRMSG2    /CYCLE UNTIL A 0
  1141. PNCH,    0
  1142.     AND (77
  1143.     SNA
  1144.     JMP PRTTY    /COULD BE OPTIMIZED
  1145.     TAD    (240
  1146.     AND    (77
  1147.     TAD    (240
  1148.     JMS I (OUTCHR
  1149.     JMP I PNCH
  1150.  
  1151.  
  1152. PRTTY,    JMS I    (CRLF
  1153.     ISZ TESTB    /PUT IT ON TTY, TOO
  1154.     CLA CLL CML RTL    /+2  SKIPPED IF SECOND TIME THROUGH
  1155.     AND BOSSW    /SEE IF LP08 IS OUTPUT
  1156.     SNA 
  1157.     JMP PRMOUT    /ALREADY ON TTY
  1158.     AND TESTB    /CALL WITH AC=1 MEANS NO TTY OUTPUT
  1159.     SZA CLA
  1160.     JMP PRMOUT
  1161.     TAD (TTYOUT
  1162.     DCA I    (BOUTDV    /SET TTY
  1163.     CLA CMA        /SET TESTB TO SKIP
  1164.     JMP PRMESG+1
  1165. PRMOUT,    TAD I (OUTPUT    /RESTORE OUTPUT
  1166.     DCA I    (BOUTDV
  1167.     ISZ PRMESG    /SKIP ARGUMENT
  1168.     JMP I PRMESG
  1169. KMLINK,    0        /LINK BATCH AND KEYBOARD I/O.
  1170.     RIF
  1171.     TAD BCDIF0    /SETUP A JUMP IN KEYBOARD.
  1172.     DCA KMLST
  1173.     TAD KMLST    /AND ANOTHER FOR PRINT ROUTINE
  1174.     DCA KMLST2
  1175.     JMS I (MOVE    /PUT NEW CODE INTO KEYBOARD
  1176.     -3
  1177.     KMLST
  1178.     CDF 0
  1179.     PRINT+1        /THIS IS OUTPUT LINK
  1180.     JMS I (MOVE    /NOW INPUT LINK.
  1181.     -3
  1182.     KMLST2
  1183.     CDF 0
  1184.     XGLINE+1
  1185.     JMP I KMLINK
  1186.  
  1187. /** NEXT 3 WORDS LOAD INTO "PRINT+1" IN KEYBOARD MONITOR **
  1188.  
  1189. KMLST,    CIF CDF 0    /ALTERED AT RUN-TIME
  1190.     PRINT+3&177+5600    /ALLOWS TALKING THRU BATCH
  1191.     BOSPRT
  1192.  
  1193. /** NEXT 3 WORDS LOAD INTO "XGLINE+1" IN KEYBOARD MONITOR **
  1194.  
  1195. KMLST2,    CIF CDF 0
  1196.     XGLINE+3&177+5600    /"JMP I .+1"
  1197.     BOS
  1198.  
  1199. BCDIF0,    CIF CDF 0
  1200. PRTEMP,    0
  1201. NXPRG,    JMS TESTB    /SEE IF WE HAVE > OR /
  1202.     -4
  1203.     -"};GETCOM
  1204.     -"/;BOSSB
  1205.     -"$;KMDOLR
  1206.     -"*;BOSSB    /ERRONEOUS CD CARD.
  1207.     JMP I (KJOB
  1208.     PAGE
  1209. GLINE,    0        /LINE COLLECTION ROUTINE
  1210.     TAD (LINBUF-1
  1211.     DCA GLPTR
  1212. GET,    JMS I (BATIN    /GO TO SPECIFIED INPUT DEVICE
  1213.     JMP EOF        /TIME-OUT OR FATAL
  1214.     DCA BNAM
  1215.     JMS I (TESTB    /TEST FOR SPECIAL CHARS.
  1216.     -5
  1217.     -215;CARROT
  1218.     -212;GET    /IGNORE LINE FEEDS.
  1219.     -214;GET    /IGNORE FORM FEEDS
  1220.     -337;BKAROW    /CD DOESN'T LIKE _, ONLY <
  1221.     -200;GET    /IGNORE BLANKS (NULLS) V3C
  1222.     TAD BNAM
  1223.     SKP
  1224. BKAROW,    TAD ("<
  1225.     ISZ    GLPTR
  1226.     DCA I    GLPTR
  1227.     TAD    GLPTR
  1228.     TAD (-LINBUF-110    /OVERFLOW BUFFER?
  1229.     SPA CLA
  1230.     JMP GET        /NOT YET.
  1231. CARROT,    TAD I    GLPTR    /GET LAST CHAR INPUT
  1232.     TAD    (-244    /$?
  1233.     SZA CLA
  1234.     JMP    NALTMD    /NO
  1235.     TAD I    GLPTR    /GET $
  1236.     SKP
  1237. NALTMD,    ISZ    GLPTR    /BUMP TO NEXT CHAR IF NO ALTMODE
  1238.     DCA    AMODE    /STORE ALTMODE FLAG
  1239.     DCA I    GLPTR    /CLEAR END CHAR IN BUFFER
  1240.     TAD I    (LINBUF
  1241.     SNA CLA        /WAS LINE NULL?
  1242.     JMP    GLINE+1    /YES - IGNORE
  1243.     JMP I GLINE
  1244.  
  1245.     //IF VT278 EVER SUPPORTS CARD READERS, NOP THIS!
  1246. EOF,    KCC        /HANG ON INPUT ACTION
  1247.     JMS I (PRMESG    /INDICATE FAILURE
  1248.     INPMSG
  1249.     JMS I (TTY    /WAIT FOR INPUT
  1250.     JMP GET        /AND RETURN
  1251.  
  1252. AMODE,    0
  1253. GLPTR,    0
  1254. /DOLRD INTERPRETS $ CARDS
  1255.  
  1256. DOLRD,    0
  1257.     TAD (LINBUF    /GET THE NAME OF THE $ COMMAND
  1258.     DCA BLPTR
  1259.     DCA BNAM
  1260. GWRD2,    ISZ    BLPTR
  1261.     TAD I    BLPTR
  1262.     SNA
  1263.     JMP NOCMD    /FUNNY..NOTHING THERE!
  1264.     TAD (-240    /IGNORE LEADING SPACES
  1265.     SNA
  1266.     JMP GWRD2
  1267.     TAD (-240    /NOT A SPACE. TAKE WHATEVER IT IS.
  1268.     AND (77
  1269.     CLL RTL;RTL;RTL
  1270.     DCA BNAM    /KEYBOARD MON. WILL EXAMINE IT.
  1271.     ISZ    BLPTR
  1272.     TAD I    BLPTR
  1273.     AND (77
  1274.     TAD BNAM
  1275.     DCA BNAM
  1276. NOCMD,    TAD BNAM
  1277.     SNA CLA
  1278.     JMP I    (KJOB
  1279.     JMS I (TESTB    /TEST IT
  1280.     -3
  1281.     -0516;END    /$END CARD
  1282.     -1523;MSGST    /$MSG CARD IMAGE
  1283.     -1217;JOB    /$JOB CARD
  1284. DLCRUD,    ISZ DOLRD    /$CRUD
  1285. JOB,    TAD I DOLRD
  1286.     DCA DOLRD
  1287.     JMP I    DOLRD
  1288.  
  1289. MSGST,    JMS I    (MSG    /PRINT MESSAGE
  1290.     JMP    DLCRUD    /TREAT LIKE CRUD
  1291.  
  1292. CDOLLR,    JMS    DOLRD
  1293.     CDKBD        /$JOB
  1294.     CDGET        /$OTHER
  1295.  
  1296. KMDOLR,    JMS    DOLRD
  1297.     DOLECH        /$JOB
  1298.     BOSSB        /$OTHER
  1299.  
  1300. BLPTR,    0
  1301. BNAM,    0
  1302. /HERE FROM CD WHEN DONE TO ANALYZE CD AREA
  1303.  
  1304. CDRENT,    CDF 0
  1305.     TAD I (LKUPSW    /GET THE DEFAULT EXTENSION
  1306.     JMS I (CDFRST    /SET CURRENT DF
  1307.     JMS I (CDSCN    /SCAN CD LINE
  1308.     KCC
  1309.     TCF        /CLEAR FLAGS JUST LIKE CD WOULD
  1310.     CDF CIF 0
  1311.     JMP I (CDOVER+3    /RESUME CD AT TERMINATION CODE
  1312.     PAGE
  1313. LCONV,    -40        /PATCH TO 0 TO ALLOW OUTPUTTING LC TO LPT
  1314.  
  1315. CDT,    0021;2223;2425;2627;3031;3203;4007;3502
  1316.     2017;6364;6566;6770;7172;7514;0577;3637
  1317.     1552;5354;5556;5760;6162;0104;1211;3374
  1318.     0641;4243;4445;4647;5051;7316;3410;1376
  1319.  
  1320. TTYOUT,    0        /TESTS AC FOR FORM FEED
  1321.     TAD (-214
  1322.     SNA
  1323.     JMP TFORM    /GENERATE LINE FEEDS
  1324.     TAD (214
  1325.     JMS TTYPE
  1326.     JMP I TTYOUT
  1327. TFORM,    TAD (-4
  1328.     DCA TCOUNT
  1329.     TAD (212
  1330.     JMS TTYPE
  1331.     ISZ TCOUNT
  1332.     JMP .-3
  1333.     JMP I TTYOUT
  1334. TCOUNT,    0
  1335.  
  1336. NULOUT,    0
  1337.     CLA        /DEEP-SIX THE CHARACTER
  1338.     JMS I (CTRLC
  1339.     JMP I NULOUT
  1340. TTYPE,    0        /TELETYPE OUTPUT STUFF
  1341.     TLS
  1342.     TSF
  1343.     JMP .-1
  1344. X200,    CLA
  1345.     JMS I    (CTRLC
  1346.     JMP I TTYPE
  1347.  
  1348. BOSPRT,    JMS ERHDR    /PRINT MESSAGE
  1349.     CIF CDF 0
  1350.     JMP I (PRINT+10
  1351.  
  1352. CDFRST,    0
  1353. BOSCDF,    HLT
  1354.     JMP I CDFRST
  1355.  
  1356. ERHDR,    0        /ERROR HEADER ROUTINE
  1357.     DCA CDFRST    /SAVE CHARACTER
  1358.     TAD I (DOLFLG    /FIRST ENTRY?
  1359.     SZA CLA
  1360.     JMP .+3        /NO.
  1361.     TAD    ("#    /ERROR PROMPT
  1362.     JMS I (OUTCHR
  1363.     TAD I (BOSSW    /GET BATCH FLAGS WORD
  1364.     CMA
  1365.     AND (1000    /SET $ SLEW FLAG NEGATIVE IF NO /E,
  1366.     STL RTL        /NON-ZERO IN ANY CASE
  1367.     DCA I (DOLFLG
  1368.     TAD CDFRST
  1369.     JMS I (OUTCHR
  1370.     JMP I ERHDR
  1371.  
  1372. CRLF,    0
  1373.     TAD (215
  1374.     JMS I (OUTCHR
  1375.     TAD (212
  1376.     JMS I (OUTCHR
  1377.     JMP I CRLF
  1378.  
  1379. BOSLPT,    0        /BATCH LINE PRINTER ROUTINE
  1380.     AND (177
  1381.     TAD (200
  1382.     PCLS
  1383.     CLA
  1384.     JMS I (CTRLC
  1385.     PSKF
  1386.     JMP .-2
  1387.     JMP I BOSLPT
  1388. MORKIL,    CDF 0
  1389.     TAD I (BOSCCL
  1390.     AND (600    /GET (POSSIBLY NEW) EXTENDED DATE BITS
  1391.     JMS CDFRST
  1392.     TAD I (OLDCOR
  1393.     CIF CDF 0
  1394.     DCA I (BOSCCL    /RESTORE WORD
  1395.     JMP I (7605
  1396. BOSTMP,    0
  1397.  
  1398.     //V4: MOVED HERE FROM CTRLC AREA SO VT278 TYPE LOGIC CAN
  1399.     //EXIST WITH TRADITIONAL 8 LOGIC.
  1400.  
  1401. TTY,    0
  1402.     JMS I (CTRLCK
  1403.     SNA CLA
  1404.     JMP .-2        //NO ACTION AT KEYBOARD--KEEP WAITING.
  1405.     JMP I TTY    //DON'T CARE WHAT WAS INPUT.
  1406.  
  1407.  
  1408.     PAGE
  1409. //PRINTER ROUTINE FOR VT278 SUPPORT.
  1410.  
  1411.     XMTLOD=6336
  1412.     XMTSKP=6331
  1413.     RECLOD=6326
  1414.     RECSKP=6321
  1415.     XOFF="S&77
  1416.  
  1417. BOSRAL,    0
  1418.     DCA BOSRL1    //SAVE THE CHAR WHILE LOOKING FOR XOFF
  1419. BOSRL3,    RECLOD
  1420.     AND (177
  1421.     TAD (-XOFF
  1422.     SNA CLA        //DON'T CARE ABOUT ANYTHING ELSE.
  1423.     JMP BOSRL2    //CHECK FOR ^C WHILE WAITING.
  1424.     TAD BOSRL1
  1425.     XMTLOD        //OK TO OUTPUT.
  1426.     XMTSKP
  1427.     JMP .-1
  1428.     CLA
  1429.     JMP I BOSRAL
  1430. BOSRL2,    JMS I (CTRLC
  1431.     JMP BOSRL3
  1432.  
  1433. BOSRL1,    0
  1434. /ERROR MESSAGES
  1435.  
  1436. CDEMSG,    TEXT /MONITOR OVERLAYED/
  1437. INPMSG,    TEXT /INPUT FAILURE/
  1438. BADMSG,    TEXT /BAD LINE. JOB ABORTED/
  1439. SERMSG,    TEXT /SYS ERROR/
  1440.  
  1441. LINBUF,    ZBLOCK    113
  1442.  
  1443.     PAGE
  1444. BATABT,    JMS I (CDFRST    /THIS CODE IS HERE FOR CCL!
  1445.     TAD I (BOSSW    /GET BATCH SWITCHES
  1446.     CMA
  1447.     AND (1000    /IF /E FLAG IS UP CCL ERRORS ARE NON-FATAL,
  1448.     CLL RTL
  1449.     JMP CDKILX    /OTHERWISE WE SHOULD ABORT BATCH ON THEM
  1450.  
  1451. CDGET,    JMS I (GLINE    /READ INPUT
  1452.     TAD I (HUSH
  1453.     SNA CLA        /DON'T ECHO CD LINES IF HUSHED
  1454.     JMS I (ECHO
  1455.     TAD (LINBUF-1
  1456.     DCA CDGPTR
  1457.     TAD I (DOLFLG    /$JOB FLAG UP?
  1458.     SPA CLA
  1459.     JMP CDKBD    /SLEW UNTIL $JOB
  1460.     ISZ    CDGPTR
  1461.     TAD I CDGPTR
  1462.     DCA I    (BNAM
  1463.     JMS I (TESTB    /TEST PROMPT CHAR.
  1464.     -4
  1465.     -"*;CDLINE    /* IS OK
  1466.     -"/;CDGET    /REMARK
  1467.     -"$;CDOLLR
  1468.     -"};CDKBD    /RECALL KEYBOARD MON.
  1469. KJOB,    JMS I (PRMESG
  1470.     BADMSG        /ILLEGAL CHARACTER
  1471. CDKILL,    STL CLA RAR    /4000
  1472. CDKILX,    DCA I (DOLFLG    /ABORT TO NEXT $JOB
  1473.     JMS I (SETJSW    /MARK BATCH IN CORE
  1474.     CIF CDF 0
  1475.     JMP I .+1
  1476.     7605        /RESTART.
  1477.  
  1478. CDKBD,    CIF    0
  1479.     JMS I    (SYSTEM
  1480.     1000
  1481.     0
  1482.     KMREC
  1483. SYIERR,    SKP CLA
  1484.     JMP    .+4
  1485.     JMS I    (PRMESG
  1486.     SERMSG
  1487.     HLT
  1488.     JMS I (SETJSW    /MARK BATCH IN CORE
  1489.     JMS I (KMLINK    /LINK TO NEW KEYBOARD
  1490.     TAD (BOSRE    /WE WANT TO RETAIN OLD LINE
  1491.     CIF CDF 0
  1492.     DCA I (BCHGO+2
  1493.     JMP I (BEGLN+1
  1494.  
  1495. CDGPTR,    0
  1496. CDLINE,    JMS I (MOVE    /PUT LINE INTO CD
  1497.     -112
  1498.     LINBUF+1
  1499.     CDF 0
  1500.     CDBEGLN
  1501.     TAD I    (AMODE
  1502.     CDF 10
  1503.     SZA CLA        /CHECK WHETHER ALTMODE TERMINATED LINE
  1504.     STL RAR        /IT DID - SET CD ALTMODE FLAG
  1505.     DCA I    (MPARAM-1
  1506.     CIF CDF 0
  1507.     JMP I .+1
  1508.     ANALYZ
  1509.  
  1510. DEVKIL,    JMS I (PRMESG
  1511.     PTRMSG
  1512.     JMP    CDKILL
  1513.  
  1514. HLPMSG,    TEXT /MANUAL HELP NEEDED/
  1515. PTRMSG,    TEXT /ILLEGAL INPUT DEVICE/
  1516. EOBMSG,    TEXT /END BATCH/
  1517. SPLMSG,    TEXT /SPOOL TO FILE /
  1518.     *.-1
  1519. BCHFIL,    TEXT    /BTCHA0/
  1520.     PAGE
  1521. /SUBROUTINE TO ANALYZE CD AREA - ENTER FROM ANY FIELD
  1522. /WITH DEFAULT EXTENSION IN AC
  1523.  
  1524. CDSCN,    0
  1525.     TAD (-5200
  1526.     SZA
  1527.     TAD (5200    /THIS MAY INTRODUCE A BUG WHILE FIXING ONE - STAN -
  1528.     DCA EXT        /SAVE EXTENSION
  1529.     RDF
  1530.     TAD (CDF CIF 0
  1531.     DCA CDSCRT    /SAVE RETURN FIELD
  1532.     TAD (7600
  1533.     DCA CDTEMP    /LOOK AT CD AREA
  1534.     MTHREE
  1535.     DCA CDCNT
  1536. CDSCAN,    JMS I (CDFRST
  1537.     TAD I (BOSSW
  1538.     CLL RTL
  1539.     CDF 10
  1540.     SZL CLA        /IS SPOOLING ENABLED
  1541.     TAD I CDTEMP    /AND IS THERE AN OUTPUT?
  1542.     AND (17
  1543.     SNA
  1544.     JMP NCKSPL    /NO - DON'T LOOK
  1545.     TAD (DCB-1    /CHECK FILE OR NON-FILE STATUS
  1546.     DCA CDTMP2
  1547.     TAD I CDTMP2    /SPOOL NON-FILE DEVICES
  1548.     SPA CLA
  1549.     JMP NCKSPL    /FILE STRUCTURED OUTPUT
  1550.     TAD I CDTEMP
  1551.     AND (7760
  1552.     TAD SPLDEV    /RESET CD AREA
  1553.     DCA I CDTEMP
  1554.     ISZ CDTEMP    /POINT TO FILENAME AREA
  1555.     JMS I    (CDFRST
  1556.     TAD I (SPLNUM
  1557.     AND (11
  1558.     CIA
  1559.     TAD (11
  1560.     SNA CLA
  1561.     TAD (66
  1562.     IAC
  1563.     TAD I (SPLNUM
  1564.     DCA I    (BCHFIL+2
  1565.     JMS I (MOVE
  1566.     -4
  1567.     BCHFIL
  1568.     CDF 10
  1569. CDTEMP,    0        /76XX
  1570.     JMS I (PRMESG    /PRINT FILENAME
  1571.     SPLMSG
  1572.     TAD I    (BCHFIL+2    /SET NEW FILENAME
  1573.     DCA I (SPLNUM
  1574.     CLA CMA
  1575. NCKSPL,    TAD CDTEMP
  1576.     TAD (5
  1577.     DCA CDTEMP
  1578.     TAD EXT
  1579.     SNA CLA
  1580.     JMP CDSCRT    /YES - LOOK NO MORE
  1581.     ISZ CDCNT
  1582.     JMP CDSCAN    /KEEP LOOKING
  1583. CDX1,    TAD (-11    /SCAN INPUT AREA
  1584.     DCA CDCNT
  1585.     TAD (7617
  1586.     DCA CDPTR    /PICK UP MANUAL INPUTS.
  1587. INPSCN,    CDF 10
  1588.     TAD I CDPTR
  1589.     SNA        /ANY INPUTS?
  1590.     JMP CDSCRT    /3 GUESSES!
  1591.     AND (17
  1592.     TAD (DCB-1    /GET DEVICE IDENTIFIER
  1593.     DCA CDTMP2
  1594.     TAD I CDTMP2
  1595.     AND (770
  1596.     JMS I    (CDFRST
  1597.     SNA
  1598.     JMP    RBELL    /TELETYPE INPUT - CHECK OPERATOR
  1599.     TAD    (-10
  1600.     SZA CLA
  1601.     JMP    CDX3    /OK INPUT DEVICE
  1602.     TAD I    (BOSSW
  1603.     SPA CLA        /PTR: INPUT - IS BATCH FROM PTR?
  1604.     JMP I    (DEVKIL    /YES - ILLEGAL
  1605. RBELL,    TAD I (BOSSW    /OPERATOR AVAILABLE?
  1606.     CLL RAR
  1607.     SZL CLA
  1608.     JMP I    (DEVKIL    /NO. ABORT THE JOB
  1609.     TAD (207
  1610.     JMS I (TTYOUT
  1611.     JMS I (PRMESG
  1612.     HLPMSG        /MANUAL INTERVENTION REQUIRED.
  1613.     JMS I (CRLF
  1614.     JMP CDSCRT
  1615. CDX3,    CLA CLL CML RTL
  1616.     TAD CDPTR
  1617.     DCA    CDPTR
  1618.     ISZ CDCNT
  1619.     JMP INPSCN
  1620. CDSCRT,    HLT
  1621.     JMP I CDSCN    /RETURN TO CALLER
  1622.  
  1623. SPLDEV,    0        /GETS SPOOL DEVICE #
  1624. EXT,    0
  1625. CDPTR,    0
  1626. CDCNT,    0
  1627. CDTMP2,    0
  1628.     PAGE
  1629. /THIS ROUTINE IS NOT REFERENCED FROM BATCH-
  1630. /IT PROVIDES A WAY FOR A USER TO OUTPUT MESSAGES
  1631. /TO THE BATCH LOG DEVICE
  1632.  
  1633. BATOUT,    0        /CALLABLE FROM ANY FIELD
  1634.     DCA    CTRLC    /WITH CHARACTER IN AC
  1635.     RDF
  1636.     TAD CDCF0    /GET CDF CIF TO CALLING FIELD
  1637.     DCA BATORT
  1638.     JMS I (CDFRST    /CDF TO CURRENT FIELD
  1639.     TAD CTRLC
  1640.     SZA
  1641.     JMS I (OUTCHR    /OUTPUT THE CHARACTER
  1642. BATORT,    HLT
  1643.     JMP I BATOUT
  1644. /ENTER HERE FROM COMMAND DECODER WHEN CD CALLED
  1645.  
  1646. CDBOS,    RIF        /FILL IN CIF CDF N
  1647.     TAD CDCF0    /TO LINK CD AND BOS
  1648.     DCA CDLST1
  1649.     TAD CDLST1
  1650.     DCA CDLST2
  1651.     TAD CDLST2
  1652.     DCA CDLST3
  1653.     JMS MOVE
  1654. CM3,    -3
  1655.     CDLST1
  1656.     CDF 0
  1657.     TYPE+1        /LINK ERROR PRINTOUT TO BOS
  1658.  
  1659.     JMS MOVE
  1660.     -3
  1661.     CDLST2
  1662. MCDF0,    CDF 0
  1663.     CGLINE        /LINK INPUT TO BOS
  1664.  
  1665.     JMS MOVE
  1666.     -3
  1667.     CDLST3
  1668.     CDF 0
  1669.     CDOVER        /EXIT FROM LINE ANALYSIS
  1670. CDCF0,    CIF CDF 0
  1671.     JMP I    .+1
  1672.     RESTRT+1    /START UP CD
  1673.  
  1674. /** THESE 3 WORDS LOAD INTO "TYPE+1" IN THE COMMAND DECODER **
  1675. CDLST1,    CIF CDF 0
  1676.     TYPE+3&177+5600    /"JMP I .+1"
  1677.     CDPRT
  1678.  
  1679. /** THESE 3 WORDS LOAD INTO "CGLINE" IN THE COMMAND DECODER **
  1680. CDLST2,    CIF CDF 0
  1681.     CGLINE+2&177+5600    /"JMP I .+1"
  1682.     CDGET        /RETURN TO CDGET AFTER ZEROING CD AREA
  1683.  
  1684. /** THESE 3 WORDS LOAD INTO "CDOVER" IN THE COMMAND DECODER **
  1685. CDLST3,    CIF CDF 0
  1686.     CDOVER+2&177+5600    /"JMP I .+1"
  1687.     CDRENT
  1688.     //MODIFIED FOR V4:
  1689.  
  1690. CTRLC,    0
  1691.     JMS CTRLCK
  1692.     CLA
  1693.     JMP I CTRLC    //FOR ALL THOSE LOOKING FOR ^C
  1694.  
  1695. CTRLCK,    0        /CHECK FOR ^C
  1696.     KSF
  1697.     JMP I CTRLCK    //NO FLAG--EXIT. "TTY" DOES THE WAITING.
  1698.     KRB        //V4: KEEP THE KEYBOARD ENABLED
  1699.     AND (177
  1700.     TAD CM3
  1701.     SNA
  1702.     JMP I (BKILL    //ZAP BATCH
  1703.     JMP I CTRLCK
  1704.  
  1705. ECHOT,    0        /ECHOES LINE ON TTY
  1706.     TAD (TTYOUT    /SET TTY AS OUTPUT
  1707.     DCA I    (BOUTDV
  1708.     JMS ECHO    /ECHO IT
  1709.     JMS I (CRLF
  1710.     TAD I (OUTPUT
  1711.     DCA I    (BOUTDV    /RESET OUTPUT
  1712.     JMP I ECHOT
  1713.  
  1714. ECHO,    0        /ECHO INPUT LINE
  1715.     TAD (LINBUF-1
  1716.     DCA EPTR
  1717. ECHO2,    ISZ    EPTR
  1718.     TAD I EPTR
  1719.     SNA
  1720.     JMP ECO3
  1721.     JMS I (OUTCHR
  1722.     JMP ECHO2
  1723. ECO3,    TAD I    (AMODE    /NEED $ PRINTED?
  1724.     SZA
  1725.     JMS I (OUTCHR    /YES
  1726.     JMS I (CRLF
  1727.     JMP I ECHO
  1728.     *7522    //V4: IN CASE SOMEBODY IN PRE-V4 DAYS USED
  1729.         //FIXED LOCATIONS ON THIS PAGE.
  1730.  
  1731. MOVE,    0
  1732.     RDF
  1733.     TAD MCDF0
  1734.     DCA MVIPUT
  1735.     TAD I MOVE
  1736.     DCA MVTMP    /COUNT
  1737.     ISZ MOVE
  1738.     CLA CMA
  1739.     TAD I MOVE
  1740.     DCA MVPT1    /INPUT STUFF
  1741.     ISZ MOVE
  1742.     TAD I MOVE
  1743.     DCA MVOPUT    /OUTPUT FIELD
  1744.     ISZ MOVE
  1745.     CLA CMA
  1746.     TAD I MOVE
  1747.     DCA MVPT2
  1748.     ISZ MOVE
  1749. MVIPUT,    HLT
  1750.     ISZ    MVPT1
  1751.     TAD I    MVPT1
  1752. MVOPUT,    HLT
  1753.     ISZ    MVPT2
  1754.     DCA I    MVPT2
  1755.     ISZ MVTMP
  1756.     JMP MVIPUT
  1757.     JMS I (CDFRST
  1758.     JMP I MOVE
  1759.  
  1760. MVTMP=    CTRLC
  1761.  
  1762. MVPT1,    0
  1763. MVPT2,    0
  1764. EPTR,    0
  1765.  
  1766. CDPRT,    JMS I (ERHDR
  1767.     CIF CDF 0    /LINK BACK TO CD
  1768.     JMP I .+1
  1769.     TYPE+10
  1770.     PAGE
  1771.  
  1772.     FIELD 0
  1773.     *200
  1774.     $$$$$$$$$$
  1775.  
  1776.