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 / cd.pa < prev    next >
Text File  |  1992-09-18  |  29KB  |  1,725 lines

  1. /CD.PA FOR OS278
  2.  
  3. /ADAPTED FROM:
  4. /8    COMMAND DECODER FOR OS/8 MONITOR
  5. /
  6. /
  7. /
  8. /
  9. /
  10. /
  11. /
  12. /
  13. /
  14. /COPYRIGHT  (C)  1974, 1975, 1977, 1982 BY DIGITAL EQUIPMENT CORPORATION
  15. /
  16. /
  17. /
  18. /
  19. /
  20. /
  21. /
  22. /
  23. /
  24. /
  25. /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
  26. /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
  27. /CORPORATION.  DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
  28. /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
  29. /
  30. /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
  31. /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
  32. /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
  33. /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
  34. /
  35. /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
  36. /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
  37. /DIGITAL.
  38. /
  39. /
  40. /
  41. /
  42. /
  43. /
  44. /
  45. /
  46. /
  47. /
  48. /APRIL 1977        RL/EF/HJ/SR
  49.  
  50. /ABSTRACT--
  51. /COMMAND DECODER (CD) ACCEPTS TTY INPUT AND INTERPRETS
  52. /THAT INPUT AS A LIST OF OPTIONS AND FILE SPECIFICATIONS
  53. /FOR OS/8 CUSPS. TABLES ARE SETUP INDICATING THE SPECIFIED
  54. /FILES AND OPTIONS.
  55. /THIS VERSION OF CD IS CAPABLE OF RUNNING OS/8 BATCH.
  56. /MODIFICATIONS TO INITIALIZATION CODE HAVE BEEN MADE TO
  57. /ALLOW THIS.
  58.  
  59.  
  60.     DCB=7760
  61.     SHNDLR=7607
  62.     USERFG=40    /LOCATION IN MAIN OS/8 ASSEMBLY - VOLATILE
  63.     T1=41    /DITTO
  64.     MCDREC=51    /ALSO PRETTY VOLATILE
  65.     MOFILE=7600
  66.     MIFILE=7617
  67.     MPARAM=7643
  68.     FIELD 0    /JUSTINCASE
  69.  
  70.     CDVERSION="B&77^100+62
  71.     ODTVERSION="B&77^100+60
  72.  
  73. /V3 CHANGES TO CD:
  74.  
  75. /1. FIXED LOTS OF BUGS
  76. /    A:B:C IS ILLEGAL
  77. /    15-BIT = OPTION DOESN'T DESTROY ALTMODE BIT
  78. /2.    ADDED ? SUPPORT IN SPECIAL MODE
  79. /3.    ALLOWED SPECIAL MODE UNDER BATCH
  80. /4.    REMOVED DCC CODE
  81. /5.    ^U, RO TO BOL, AND LF ALL REPRINT *
  82. /6.    VERSION # AT LOC ZERO
  83. /7.    DON'T LOAD HANDLERS FOR OUTPUT DEVICE
  84. /8.    CHANGED _ TO < STANDARD
  85.  
  86. /V3 CHANGES TO ODT
  87.  
  88. /1.    REMOVED DCC CODE
  89. /2.    FIXED CORE SIZE ROUTINE
  90. /3.    ALLOWED SOFTWARE CORE SIZE
  91. /4.    MODIFIED 'GO' COMMAND SO THAT IT DOESN'T RESTORE TRAP
  92. /    LOCATION TO UNMODIFIED VALUE
  93. /5.    FIXED BUG RE: JMS'S OUT OF FIELD WITH MAGIC LOCATION SET
  94. /6.    TURN OFF INTERRUPTS ON BREAKPOINT
  95.  
  96. /CHANGES AFTER FIELD TEST RELEASE:
  97.  
  98. /1.    FIXED BUG RE FILE LENGTHS GT 2047 BLOCKS
  99.  
  100. /MAINTENANCE RELEASE:
  101.  
  102. /    NO CHANGES
  103.  
  104. /V3D CHANGES:
  105.  
  106. /CHANGED FORMAT OF VERSION NUMBERS
  107.  
  108. /V4 CHANGES TO CD: CHANGED TTY ROUTINES TO WORK ON A VT278
  109.  
  110. /V4 CHANGES TO ODT: MODIFIED TO WORK ON A VT278. WHEN IN 278 MODE DOES
  111. /NOT USE KT8A EXTENDED MEMORY INSTRUCTIONS. (ILLEGAL ON A VT278)
  112.  
  113. /OS278 CHANGES
  114. /VB1  (VB0 INITIAL OS278 VERSION)
  115. /INSTALLED DSN 73.03.01 CD FIX FOR RUNNING UNDER BATCH
  116. /VB2
  117. /04-JAN-83    ADDED LOWER CASE INPUT ABILITY
  118.     *200
  119. CD,    JMP I NUMBER    /EXECUTED IN SYSGEN
  120. NUM,    JMP I T
  121. ANALYZ,    TAD [BEGLN-1
  122.     DCA XR
  123.     TAD I XR
  124.     SNA
  125.     JMP NOBKAR
  126.     TAD [-"<
  127.     SZA CLA
  128.     JMP .-5
  129.     CLA CMA
  130. NOBKAR,    DCA OUTSW
  131.     TAD [BEGLN-1
  132.     DCA LXR
  133. BEGGRP,    TAD OUTSW
  134.     SNA CLA
  135.     TAD BEGDIF        /DIFF BETWEEN INPUT & OUTPUT AREAS
  136.     TAD [MOFILE-1
  137.     DCA CLXR
  138.     STA
  139.     DCA DVFLAG
  140.     DCA DEV1
  141. FILLP1,    DCA DEV2
  142. FILLP,    JMS I [GNAME
  143.     TAD ["A-":        /AC CONTAINED DELIM - "A
  144.     SNA CLA
  145.     JMP DEVNAM
  146.     JMS I [ASSIGN
  147.     TAD OUTSW
  148.     SNA CLA
  149.     TAD LIMDIF        /DIFF BETWWEN END OF OUTPUT & INPUT AREAS
  150.     TAD OUTLIM        /END OF OUTPUT AREA
  151.     TAD CLXR
  152.     SMA CLA
  153.     JMP CDER1
  154.     TAD OUTSW
  155.     SNA CLA
  156. LKUPSW,    JMP INFILE        /ZEROED IF IN "SPECIAL DECODE" MODE
  157.     CDF 10
  158.     TAD DVICE
  159.     DCA I CLXR
  160.     TAD NAME1
  161.     DCA I CLXR
  162.     TAD NAME2
  163.     DCA I CLXR
  164.     TAD NAME3
  165.     DCA I CLXR
  166.     TAD NAME4
  167. CDSKP,    SKP
  168. INFILE,    JMS I [LOOKUP
  169.     DCA I CLXR
  170. DLOOK,    CDF 0
  171.     STA
  172.     DCA DVFLAG
  173.     TAD DELIM
  174.     SNA
  175.     JMP CDOVER
  176.     TAD [-"[
  177.     SNA
  178.     JMP I [OLENGT
  179.     TAD ["[-",
  180.     SNA
  181.     JMP FILLP
  182.     TAD [",-"<
  183.     SNA
  184.     JMP BKAROW
  185.     TAD ["<-"=
  186.     SZA CLA
  187.     JMP I [CDER2
  188. EQUAL,    DCA NUMFUJ
  189.     JMS NUMBER
  190.     DCA I [MPARAM+3
  191.     CLA CLL CML RAR
  192.     AND I [MPARAM-1    /PRESERVE  ALTMODE
  193.     TAD HIORD
  194.     DCA I [MPARAM-1
  195.     JMP DLOOK
  196. BKAROW,    ISZ OUTSW
  197.     JMP I [CDER2
  198.     JMP BEGGRP
  199. DEVNAM,    TAD NAME1
  200.     DCA DEV1
  201.     ISZ DVFLAG
  202.     JMP I [CDER2    /CATCHES A:B:
  203.     TAD NAME2
  204.     JMP FILLP1
  205. CDOVER,    TLS        /V4: JUST ENABLE THE "PRINTER"
  206.     KCC        /*FIX FOR DSN 73.03.01
  207.     NOP            //V3: TSF
  208.                 //V3: JMP .-1    /LET PRINTER QUIET DOWN
  209.                 //V3: TCF    /AND CLEAR FLAG
  210.     CDF CIF 10
  211.     TAD TMONIT
  212.     DCA I [200    /RESTORE "MONITO"
  213.     TAD TUSRFG
  214.     DCA I [USERFG    /RESTORE "USER FLAG"
  215. /*    KCC        /V4:  SERVES AS KEYBOARD ENABLE TO VT278, JUST IN CASE
  216.     TAD TFPUTX    /LOAD "USER CALLING FIELD" INTO AC
  217.     JMP I CD    /RETURN - MONITOR RESTORES CORE IF NECESSARY
  218. /*    NOP        /V4:  PLACE HOLDER. OS/8 CODE IS VERY POSITION 
  219.             /     SENSITIVE!
  220.  
  221. NUMBER,    4000    /USED BY SYSGEN
  222.     TAD CDSKP
  223.     DCA NUMADD    /SET NUMADD TO EITHER "SKP" OR "TAD NUM"
  224.     DCA HIORD
  225. NUMLP,    DCA NUM
  226.     JMS NUMTST    /INTO PAGE 0 FOR RANGE TEST
  227.     SNL
  228.     JMP EONUM
  229.     DCA T
  230.     CLA CLL CMA RTL
  231.     DCA DELIM
  232.     TAD NUM
  233. ROTLP,    CLL RAL
  234.     DCA NUMX
  235.     TAD HIORD
  236.     RAL
  237.     SPA
  238.     JMP I [CDER2
  239.     DCA HIORD
  240.     TAD NUMX
  241.     ISZ DELIM
  242.     JMP ROTLP
  243. NUMADD,    TAD NUM        /SKP IF OCTAL
  244.     TAD NUM
  245.     TAD T
  246.     JMP NUMLP
  247. EONUM,    TAD ["0
  248.     DCA DELIM
  249.     TAD NUM
  250.     CDF 10
  251.     JMP I NUMBER
  252. CDER1,    JMS I [PRMESG
  253.     TEXT    /TOO MANY FILES/
  254.  
  255.  
  256.     IFZERO .&400 <*400>
  257. ASSIGN,    0
  258.     TAD CLXR
  259.     AND DVFLAG
  260.     TAD OUTLIM
  261.     SMA SZA CLA    /CHECK FOR OUTPUT OR FIRST INPUT
  262.     JMP ASNORM    /IF DEVICE WAS SPECIFIC, OR IF WE ARE ON THE INPUT SIDE,
  263.             /PROCEED NORMALLY
  264.     TAD NAME1
  265.     SNA CLA
  266.     JMP ASGNST
  267.     TAD DFLTNM+1
  268.     DCA DEV2
  269.     TAD DFLTNM
  270.     DCA DEV1
  271. ASNORM,    TAD DEV1
  272.     DCA AS+1
  273.     TAD DEV2
  274.     DCA AS+2
  275.     TAD OUTSW
  276.     SNA CLA        /DON'T LOAD HANDLER IF WE ARE ON OUTPUT SIDE OF "_"
  277.     TAD NAME1
  278. SPKLG1,    SNA CLA        /OR IF THERE IS NO FILE NAME TO LOOK UP
  279.     TAD GETHND    /GETHND=11 NORMALLY, 0 IF IN "SPECIAL DECODE" MODE
  280.     IAC
  281.     DCA AS
  282.     TAD [1401    /ALLOW TWO PAGE HANDLERS
  283.     DCA ASADR
  284.     CIF 10
  285.     JMS I [200
  286. AS,    0
  287.     0
  288.     0
  289. ASADR,    1401
  290.     JMP I [CDER0
  291.     TAD AS+2
  292. ASGNST,    DCA DVICE
  293.     JMP I ASSIGN
  294. GNAME,    0
  295.     DCA NAME1
  296.     DCA NAME2
  297.     DCA NAME3
  298.     DCA NAME4
  299.     TAD [NAME1
  300.     DCA NMBASE
  301.     CLA CMA
  302.     DCA PERDSW
  303.     DCA NAMECT
  304. GTNMLP,    JMS I [GCH
  305.     DCA DELIM
  306.     TAD DELIM
  307.     TAD [-"?
  308.     SZA
  309.     TAD ["?-"*
  310.     SNA
  311. STARSW,    JMP I [CDER2    /"JMP STARNM" IF "SPECIAL DECODE" MODE
  312.     TAD ["*-".
  313.     SNA CLA
  314.     JMP PERIOD
  315.     JMS I [DECODE
  316.     JMP I GNAME
  317. STARNM,    CLA        /THIS CODE HANDLES *'S AND ?'S CORRECTLY
  318.     TAD DELIM
  319.     AND [77
  320.     DCA DELIM
  321.     TAD NAMECT
  322.     TAD [-6
  323.     SMA CLA
  324.     JMP GTNMLP
  325.     TAD NAMECT
  326.     CLL RAR
  327.     TAD NMBASE
  328.     DCA TT
  329.     TAD DELIM
  330.     SZL
  331.     JMP .+4
  332.     RTL
  333.     RTL
  334.     RTL
  335.     TAD I TT
  336.     DCA I TT
  337.     ISZ NAMECT
  338.     JMP GTNMLP
  339. PERIOD,    TAD NAME1
  340.     SZA CLA
  341.     ISZ PERDSW
  342.     JMP I [CDER2
  343.     ISZ NMBASE
  344.     TAD [4
  345.     JMP GTNMLP-1
  346. LOOKUP,    0
  347.     DCA LNAME
  348.     TAD NAME1
  349.     SNA CLA
  350.     JMP LKUPST
  351.     JMP EXT1
  352. LKUPLP,    DCA LNAME
  353.     TAD AS+2
  354.     CIF 10
  355.     JMS I [200
  356.     2
  357. LNAME,    0    /NAME1
  358. LENGTH,    0
  359.     JMP LFAILD
  360.     TAD LENGTH
  361.     CLL
  362.     TAD [400
  363.     SNL
  364.     CLA
  365.     CLL RTL
  366.     RTL
  367.     AND [7760
  368. LKUPST,    CDF 10
  369.     TAD DVICE
  370.     DCA I CLXR
  371.     TAD LNAME
  372.     JMP I LOOKUP
  373. LFAILD,    TAD NAMECT
  374.     SNA CLA        /WAS THERE AN EXPLICIT EXTENSION?
  375.     TAD DEFALT    /NO - WAS THERE A DEFAULT EXTENSION?
  376.     SNA CLA
  377.     JMP I [CDER3    /YES OR NO - FILE NOT FOUND
  378.     ISZ NAMECT    /NO AND YES - SET FLAG TO FAIL NEXT TIME
  379.     JMP EXT2    /ZERO OUT THE EXTENSION AND TRY AGAIN
  380. CDER3,    JMS I [PRNAME
  381.     JMS I [PRMESG
  382.     TEXT    / NOT FOUND/
  383.  
  384.  
  385.  
  386.     IFZERO .+200&1000 <*600>
  387.     0        /V3 [FREE LOC]
  388. SLSHCH,    0
  389. /V3    SNA
  390. /V3    JMP I [CDER2
  391.     DCA DELIM
  392.     TAD [MPARAM-1
  393.     DCA T
  394.     JMS I [DECODE
  395.     JMP I [CDER2
  396.     SZL
  397.     TAD [32
  398.     CMA STL    /THE FOLLOWING TURNS ON THE CORRECT OPTION BIT
  399.     DCA TT
  400. SLSHLP,    SZL
  401.     ISZ T
  402.     RAR
  403.     SNL
  404.     ISZ TT
  405.     JMP SLSHLP
  406.     DCA TT
  407.     CDF 10
  408.     TAD TT
  409.     CMA
  410.     AND I T
  411.     TAD TT
  412.     DCA I T
  413.     CDF 0
  414.     JMP I SLSHCH
  415. DECODE,    0
  416.     TAD DELIM
  417.     TAD [-"9-1
  418.     CLL
  419.     TAD ["9+1-"0
  420.     SZL
  421.     JMP DCDYES
  422.     TAD ["0-"Z-1
  423.     CLL CML
  424.     TAD ["Z-"A+1
  425.     SNL
  426. DCDYES,    ISZ DECODE
  427.     JMP I DECODE
  428. CDER0,    TAD DEV1
  429.     JMS I [PRWD
  430.     TAD DEV2
  431.     JMS I [PRWD
  432.     JMS I [PRMESG
  433.     TEXT    / DOES NOT EXIST/
  434.  
  435.  
  436.  
  437. RESTRT,    JMS I [CRLF
  438.     CDF 10
  439.     TAD [MOFILE-1
  440.     DCA XR
  441.     TAD [-47
  442.     DCA T
  443.     DCA I XR    /ZERO OUT THE COMMAND DECODER OUTPUT AREA
  444.     ISZ T
  445.     JMP .-2
  446.     CDF 0
  447.     JMP I [GLINE
  448. GCH,    0
  449.     TAD I LXR
  450.     TAD [-240
  451.     SNA
  452.     JMP GCH+1
  453.     TAD [240-"/
  454.     SNA
  455.     JMP SLASH
  456.     TAD ["/-"(
  457.     SNA
  458.     JMP OPENP
  459.     TAD ["(
  460.     JMP I GCH
  461. SLASH,    TAD I LXR
  462.     JMS I [SLSHCH
  463.     JMP GCH+1
  464. OPENP,    TAD I LXR
  465.     TAD [-")
  466.     SNA
  467.     JMP GCH+1
  468.     TAD [")
  469.     JMS I [SLSHCH
  470.     JMP OPENP
  471. OLENGT,    TAD OUTSW
  472.     AND NAME1    /[N] IS ONLY LEGAL ON THE OUTPUT SIDE OF THE "_"
  473.     SNA CLA        /AND ONLY AFTER A FILE NAME
  474.     JMP I [CDER2
  475.     TAD [-4
  476.     TAD CLXR
  477.     DCA NMBASE
  478.     CLA CLL CML RTL
  479.     DCA NUMFUJ    /SET "NUMBER" TO ACCEPT DIGITS 8 AND 9
  480.     TAD OLFUDJ    /LOAD FUDGE SO THAT "NUMBER" WILL BE DECIMAL
  481.     JMS I [NUMBER
  482.     CLL RTL
  483.     RTL
  484.     AND [7760
  485.     TAD I NMBASE
  486.     DCA I NMBASE
  487.     CDF 0
  488.     TAD DELIM
  489.     TAD [-"]    /IS THERE A CLOSING BRACKET?
  490.     SNA        /IF NOT, "DLOOK" ROUTINE WILL DETECT IT
  491.     JMS I [GCH
  492.     DCA DELIM
  493.     JMP I [DLOOK
  494. OLFUDJ,    NUM&177+1570
  495.  
  496. CDER2,    CLA
  497.     JMS I [PRMESG
  498.     TEXT    /ILLEGAL SYNTAX/
  499.  
  500.  
  501.     IFZERO .&1000 <*1000>
  502.     /TELETYPE INPUT ROUTINE FOR COMMAND DECODER
  503. GLINE,    TAD (252    /SETS 1177=252 FOR * IN MESSAGE
  504.     JMS I PRINT
  505.     DCA RBFLAG
  506.     TAD [BEGLN-1
  507.     DCA LXR
  508.  
  509.     /V4 CHANGES FOR VT278 SUPPORT:
  510.  
  511. CHLOOP,    KCC    /RENABLES KEYBOARD
  512.                 //V3: CHLOOP,    6031        /KSF
  513.     KSF            //        JMP CHLOOP
  514.     JMP .-1            //        TAD [200
  515.     TAD [200        //        6034        /KRS
  516.     KRS            //        DCA NAME1
  517.     DCA NAME1        //        6032        /KCC
  518.     TAD [SPADR-1
  519.     DCA XR
  520. DSPCHL,    TAD I XR
  521. K7440,    SZA
  522.     TAD NAME1
  523.     SNA CLA
  524.     JMP I XR
  525.     JMP DSPCHL
  526. SPADR,    -225;JMP CTRLU
  527.     -215;JMP CARRET
  528.     -377;JMP RUBOUT
  529.             //LOCATIONS MARKED + GET CHANGED BY SET TTY SCOPE.
  530.     -221;JMP CHLOOP    /Ignore ^Q
  531.     -223;JMP CHLOOP    /Ignore ^S
  532.     -233;JMP ALTMOD
  533.     -200;JMP CHLOOP
  534.     -217;JMP CHLOOP    /^O
  535.      -"_;JMP LESSTN
  536.     -212;JMP CHLOOP    /Ignore LF
  537.     -203;JMP CTRLC    /MUST BE LAST - SEE CLRLIN CODE
  538.     0
  539.     JMS PRNT
  540. CINSRT,    TAD NAME1
  541.     DCA I LXR
  542.     TAD LXR
  543.     TAD [-EOBUFR+2
  544.     SPA CLA
  545.     JMP CHLOOP
  546.     JMS CRLF
  547.     JMP I [CDER2
  548.  
  549. CARRET,    JMS CRLF
  550. CLFINI,    DCA I LXR
  551.     JMP I [ANALYZ
  552. LESSTN,    JMS PRNT
  553.     TAD ["<
  554.     JMP CINSRT+1
  555. CTRLC,
  556. CTRLU,    TAD [336
  557.     JMS I PRINT
  558.     TAD NAME1
  559.     TAD [100
  560. CLRLIN,    JMS I PRINT
  561.     JMS CRLF
  562.     TAD I XR
  563.     SZA CLA
  564.     JMP GLINE
  565.     CDF 10
  566.     CLA CMA
  567.     DCA I [7700
  568.     NOP        //V3: NO NEED TO WAIT IN V4.    TSF
  569.     NOP        //                JMP .-1
  570.     JMP I [7605    /7605=CDF CIF 10
  571. CRLF,    0
  572.     TAD [215
  573.     DCA NAME1
  574.     JMS PRNT
  575.     TAD [212
  576.     JMS I PRINT
  577.     JMP I CRLF
  578. ALTMOD,    TAD [244
  579.     DCA NAME1
  580.     CLA CLL CML RAR
  581.     CDF 10
  582.     DCA I [MPARAM-1
  583.     CDF 0
  584.     JMS PRNT
  585.     JMP CLFINI
  586.  
  587.  
  588. /*** LOCATIONS ON THIS PAGE ARE MODIFIED BY SET
  589. /SEE SET FOR DETAILS.  DO NOT CHANGE.
  590.  
  591. RUBOUT,    TAD LXR
  592.     TAD [1-BEGLN
  593.     SNA CLA
  594.     JMP RBSPCL
  595.     TAD [334    //+ GET MODIFIED BY SET TTY SCOPE
  596.     ISZ RBFLAG    //+
  597.     JMS I PRINT
  598.     CLA CMA        //+
  599.     DCA RBFLAG    //+
  600.     TAD LXR
  601.     DCA T
  602.     TAD I T        //+  END OF LOCS MODIFIED IN CD BY SET TTY SCOPE.
  603.     JMS I PRINT
  604. LBCKUP,    CLA CMA
  605.     TAD LXR
  606.     JMP CHLOOP-1
  607. RBSPCL,    ISZ RBFLAG
  608.     JMP CLRLIN+1
  609.     TAD [334
  610.     JMP CLRLIN
  611.  
  612. PRNT,    0
  613.     TAD NAME1    /GET CHARACTER
  614.     JMS I PRINT    /ECHO CHARACTER
  615.     TAD NAME1    /CONVERT CHARACTER TO UPPERCASE
  616.     TAD K7440
  617.     SMA
  618.     TAD (7740
  619.     TAD [340
  620.     DCA NAME1    /SAVE IT
  621.     JMP I PRNT
  622.  
  623.     IFNZRO RUBOUT-1131 <_ERROR_>
  624.     *1200        /INITIALIZATION - STORED OVER BY LINE BUFFER
  625.     BEGLN=.        /LINE BUFFER
  626. CDINIT,    DCA TFPUTX
  627.     CDF 10
  628.     CLA IAC
  629.     TAD I [200
  630.     DCA TMONIT    /SAVE AWAY MONITOR CALL ADDRESS SINCE WE CALL
  631.     TAD I [USERFG    /THE MONITOR RECURSIVELY, LIKEWISE SAVE
  632.     DCA TUSRFG    /THE "USER FLAG" AND THE FIELD WE WERE CALLED FROM
  633.     TAD I [T1    /FETCH THE USERS ARGUMENT
  634.     DCA DEFALT    /STORE IN THE DEFAULT EXTENSION WORD
  635.     DCA I [7    /ZERO "DIRECTORY SEGMENT IN CORE" KEY
  636.     CDF 0
  637.     CIF 10
  638.     JMS I [200
  639.     13        /RESET ALL HANDLERS
  640.     0        /BUT NOT OUTPUT FILES
  641.     TAD DEFALT
  642.     TAD M5200
  643.     SZA CLA        /IS THIS A REQUEST FOR A "SPECIAL DECODE"?
  644.     JMP CDCONT    /NO
  645.     TAD ALTLIM
  646.     DCA OUTLIM    /YES - SET UP ALL THE PROPER LOCATIONS
  647.     TAD ALTDF1
  648.     DCA LIMDIF    /TO YIELD 1 OUTPUT FILE AND 5 INPUT FILES
  649.     TAD ALTDF2
  650.     DCA BEGDIF    /ALL OF WHICH ARE 5-WORD <DEVICE,NAME> ENTRIES
  651.     DCA I PLKUPS
  652.     TAD STARJM
  653.     DCA I PSTARS    /AND ALLOW * AS A FILE OR EXTENSION NAME
  654.     DCA DEFALT    /NO DEFAULT EXTENSION IN "SPECIAL" MODE
  655.     TAD CCLA    /STOPS FETCHES IN SPECIAL MODE
  656.     DCA I PSPKG1    /NO HANDLER FETCHES NECESSARY EITHER SINCE NO LOOKUPS
  657. CDCONT,    TAD I PRWD    /SEE IF BATCH FLAG IS UP
  658.     RAL
  659.     SPA CLA        /IF YES, GO TO PAGE0 CODE
  660.     JMP TT        /TT ETC. IS ONCE-ONLY CODE
  661.     JMP I CDRST
  662.  
  663.  
  664. CDRST,    RESTRT+1
  665.         /CONSTANTS NECESSARY TO SUPPORT "SPECIAL DECODE" MODE
  666. M5200,    -5200
  667. ALTLIM,    1-MOFILE-5
  668. ALTDF1,    MOFILE+5-MPARAM+5
  669. ALTDF2,    5
  670. PLKUPS,    LKUPSW
  671. STARJM,    STARNM&177+5200        /"JMP STARNM"
  672. PSTARS,    STARSW
  673. CCLA,    CLA
  674. PSPKG1,    SPKLG1
  675.  
  676.  
  677.     *1314
  678.     EOBUFR=.
  679. PRMESG,    0
  680.     TAD I PRMESG
  681.     JMS PRWD
  682.     TAD I PRMESG
  683.     ISZ PRMESG
  684.     AND [77
  685.     SZA CLA
  686.     JMP PRMESG+1
  687.     JMP I [RESTRT
  688. PRWD,    7777
  689.     DCA T
  690.     TAD T
  691.     RTR
  692.     RTR
  693.     RTR
  694.     JMS PCHAR
  695.     TAD T
  696.     JMS PCHAR
  697.     JMP I PRWD
  698. PCHAR,    0
  699.     AND [77
  700.     SNA
  701.     JMP I PCHAR    /IGNORE NULLS
  702.     TAD [240
  703.     AND [77
  704.     TAD [240
  705.     JMS TYPE
  706.     JMP I PCHAR
  707. PRNAME,    0
  708.     TAD NAME1
  709.     JMS PRWD
  710.     TAD NAME2
  711.     JMS PRWD
  712.     TAD NAME3
  713.     JMS PRWD
  714.     TAD NAME4
  715.     SNA CLA
  716.     JMP I PRNAME
  717.     TAD [256
  718.     JMS PCHAR
  719.     TAD NAME4
  720.     JMS PRWD
  721.     JMP I PRNAME
  722. TYPE,    0
  723.     TLS    /V4: CANNOT START WITH TSF.    //V3:    JMP .+3
  724.     TSF
  725.     JMP .-1
  726.     NOP    /NOP PRESERVES POSITIONS    //V3:    TLS
  727.     CLA
  728.     NOP                    //    TAD [7000
  729.     NOP                    //    DCA TYPE+1
  730. TYPRET,    JMP I TYPE
  731.     IFNZRO TYPRET-1377 <BATCHX,ZQWE>
  732.  
  733.  
  734.     *4001    /PROG TO WRITE CD AND ODT ONTO NEW SYSTEM DEVICE
  735.         /4000=JMS SYSSWP TO SWAP PGS 6600 AND 7600
  736.     TAD I (7777    /SET TO PROPER RECORD FOR FIELD 1 STUFF
  737.     DCA F1STUF
  738.     JMS I SYSHND
  739.     4600
  740.     0
  741.     MCDREC
  742.     JMP CERR
  743.     JMS I SYSHND
  744.     5011
  745.     0
  746.     ODTREC
  747.     JMP CERR
  748.     JMS I SYSHND
  749.     0110        /READ IN UPPER PG 7600
  750.     7600
  751. F1STUF,    0
  752.     JMP CERR
  753.     JMP I .+1
  754.     7605        /START HER UP
  755. CERR,    TAD .+3
  756.     DCA 4001
  757.     JMP 4000    /RESWAP AND HALT
  758.     HLT
  759. SYSHND,    7607
  760.     PAGE
  761.     *0
  762.     CDVERSION
  763.     HLT        /POWER FAIL RESTART PROTECTION
  764. NUMTST,    7777
  765.     JMS I [GCH
  766.     CMA
  767.     TAD NUMFUJ
  768.     TAD ["8        /TEST INPUT CHARACTER FOR RANGE
  769.     CLL CMA        /0-7 IF NUMFUJ=0
  770.     TAD [10        /0-9 IF NUMFUJ=2
  771.     TAD NUMFUJ
  772.     JMP I NUMTST
  773.     *15
  774. LXR,    0
  775. XR,    0
  776. CLXR,    0
  777. T,    CDINIT
  778. TT,    CDF 0        /***GETS SET TO CDF BATCH
  779. HIORD,    TAD I DVICE    /CHECK TO SEE IF BOS IS REALLY THERE
  780. NUMX,    TAD OUTSW    /IF NOT, SIGNAL ERROR
  781. RBFLAG,    SNA CLA
  782. NAME1,    JMP NAMECT    /IT'S O.K.....PROBABLY!
  783. NAME2,    CDF 0        /BAD. SIGNAL ERROR TO MONITOR
  784. NAME3,    ISZ I NUMTST
  785. NAME4,    JMP I [7605    /AND RESTART BATCH MONITOR
  786. NAMECT,    CIF CDF 0    /*****GETS ALTERED******
  787. NMBASE,    JMP I .+1    /START UP IN CD AREA OF BATCH
  788. DEV1,    RESTRT+1    /***GETS ADDRESS OF CD AREA
  789. DEV2,    0
  790. PERDSW,    0
  791. NUMFUJ,    0
  792. DVFLAG,    0
  793. DELIM,    0
  794. OUTSW,    0
  795. DEFALT,    0
  796. DVICE,    0
  797. DFLTNM,    0423;1300    /DSK
  798. BEGDIF,    MIFILE-MOFILE
  799. LIMDIF,    MIFILE-MPARAM+2
  800. OUTLIM,    1-MIFILE
  801. GETHND,    11
  802. TMONIT,    0
  803. TUSRFG,    0
  804. TFPUTX,    0
  805. EXT1,    TAD NAME4
  806.     DCA NAMECT    /REMEMBER TYPED EXTENSION
  807.     TAD NAMECT
  808.     SNA
  809.     TAD DEFALT    /SUBSTITUTE DEFAULT IF ZERO
  810. EXT2,    DCA NAME4
  811.     TAD [NAME1
  812.     JMP I .+1
  813.     LKUPLP
  814. PRINT,    TYPE
  815.     FIELD 1
  816.  
  817. EJECT ODT V4 (OS78)
  818.  
  819.  
  820.     /LOADS INTO FIELD 1 NOW, BUT LOADS & EXECUTES IN FIELD 0
  821.     /DEFINITIONS OF MONITOR SYMBOLS - VOLATILE!
  822.     ODTREC=60
  823.     UDNAME=7741
  824.     MREAD=7757
  825.     MGET=7667
  826.     KMREC=7
  827.     MTEMP=27
  828.     MARG1=7740
  829.     JSBITS=7746
  830.     LXM=6200        /EXTENDED MEMORY REGISTER LOAD
  831.     RXM=6230        /EXTENDED MEMORY REGISTER READ
  832.     RACA=6175        /EXTENDED MEMORY BIT MANIPULATION
  833.     RACB=6176        /"                              "
  834.     RACC=6177        /"                "
  835.     *200
  836. READ,    JMS I [OCRLF
  837. READ5,    DCA WORD
  838.     DCA WORD+1
  839.     TAD [-7        / SET CHARACTER LIMIT
  840.     DCA TOTE
  841. REA,    KSF        /CHARACTER INPUT
  842.     JMP .-1
  843.     JMS I [CTCTST    /CONTROL 'C' TEST
  844.     TAD (203
  845.     DCA TEMP    /STORE CHARACTERS
  846.     KCC
  847.     TAD TEMP
  848.     JMS I [TYPN    /ECHO INPUT CHARACTERS
  849.     TAD TABL1A    /SET UP COMMAND TABLE SEARCH
  850.     DCA 10
  851. CHFLP,    TAD I 10    /CHARACTER I.D.
  852.     SPA
  853.     JMP SEX        /NO COMMAND -NUMERIC INPUT
  854.     CIA
  855.     TAD TEMP
  856.     SZA CLA
  857.     JMP CHFLP    /NOT THIS ONE-TRY NEXT ONE
  858.     TAD 10        /THIS IS THE COMMAND
  859.     TAD TABL2A    /SET UP JUMP TO COMMAND SUBROUTINE
  860.     DCA TEMP
  861.     TAD I TEMP
  862.     DCA TEMP
  863.     TAD WORD
  864.     JMS I [XLODE    /BANK AND FIELD ADJUSTMENT
  865.     DCA WORD
  866.     JMP FLDTST    /SEE IF FIELD SETTING IS LEGAL
  867. CTRC,    JMS I [DUMP    /CONTROL 'C'
  868. MOD5,    LXM        /DISABLE KT8A. //V4: GETS CLA FROM SET SYS VT278
  869.     JMP I [7605
  870. TABL1=.        /COMMAND TABLE
  871.     240        /SPACE
  872.     212        /LINE FEED
  873.     215        /CR
  874.     257        /SLASH
  875.     302        /B
  876.     307        /G
  877.     273        /;
  878.     303        /C
  879.     327        /W
  880.     336        /^
  881.     315        /M
  882.     301        /A
  883.     314        /L
  884.     304        /D
  885.     337        /<-ARROW
  886.     306        /F
  887.     377        /RUBOUT
  888.     253        /+
  889.     255        /-
  890.     -270        /USED - SEE "SEX"
  891. EXAM,    JMS TOTTST    /SLASH SUBROUTINE-LOCATION EXAMINATION
  892.     JMP EX2
  893.     TAD WORD    /FIELD
  894.     DCA CAD
  895.     TAD WORD+1    /ADDRESS
  896.     DCA CAD+1
  897. EX2,    JMS LOAD    /GET LOCATION CONTENTS
  898.     CAD
  899.     JMS I [PNUM    /ECHO CONTENTS 
  900.     DCA SHUT
  901.     JMP READ5
  902. SEX,    TAD TEMP    /ADDRESS & FIELD ADJUSTMENT
  903.     CLL
  904.     TAD [10        /TEST FOR NUMBER
  905.     SNL
  906.     JMP NO
  907.     DCA TEMP
  908.     CLA CLL CMA RTL
  909.     DCA CRL
  910. SROT,    TAD WORD+1    /FIELD & ADDRESS PROCESSING
  911.     CLL RAL
  912.     DCA WORD+1
  913.     TAD WORD
  914.     RAL
  915.     DCA WORD    /FIELD AND BANK STORAGE
  916.     ISZ CRL
  917.     JMP SROT
  918.     TAD WORD+1
  919.     TAD TEMP
  920.     DCA WORD+1    /ADDRESS STORAGE
  921.     ISZ TOTE    /TEST FOR TOO MANY CHARACTERS
  922.     JMP REA
  923. NO,    CLA        /UNACCEPTABLE INPUT ECHOS ?
  924.     TAD [277
  925.     JMS I [TYPN
  926.     JMP READ
  927. CRL,    0        
  928.     JMS TOTTST
  929.     JMP I CRL
  930.     TAD WORD+1
  931.     ISZ SHUT
  932.     JMS I [STORE
  933.     CAD
  934.     CLA
  935.     JMP I CRL
  936. CRL1,    JMS CRL        /CARRAIGE RETURN
  937.     JMP READ
  938. CRL2,    TAD [215    /LINE FEED
  939.     JMS I [TYPN
  940.     JMS CRL
  941.     JMS I [TYPN
  942.     ISZ CAD+1
  943. TABL1A,    TABL1-1
  944. UPAR3,    JMS I [TYPD
  945.     CAD
  946.     TAD [257
  947.     JMS I [TYPN
  948.     JMP EX2
  949. OPIN,    JMS CRL        /BKARROW/UNDERLINE
  950.     JMS LOAD
  951.     CAD
  952.     DCA CAD+1
  953.     TAD INDFLD
  954.     JMS I [XLODE
  955.     DCA CAD
  956. UPAR2,    JMS I [OCRLF
  957.     JMP UPAR3
  958. SEMI,    JMS CRL        /SEMI COLON
  959.     ISZ CAD+1
  960. TABL2A,    TABL2-TABL1
  961.     JMP READ5
  962.     *400
  963. /NOTE THAT LOCATIONS BURP,BURP+1 GET ALTERED AFTER BRKTST
  964. /IS EXECUTED. THEY BECOME: CDF 10; TAD I [MARG1
  965. BURP,    JMP I .+1    /RETURN FROM BREAKPOINT -GO REDETERMINE CORE SIZE
  966.     BRKTST        /TO MAKE ILLEGAL FIELD GIVE ?
  967.     DCA SAC
  968.     /IOF    /COMMENTED OUT FOR HIGH GROUND SUPPORT
  969.     TAD I [MTRAD        /RESTABLISH ADDRESS,FIELD,ETC.
  970.     DCA TRAD
  971.     TAD I [MTRAD1        /THESE ARE ALL 
  972.     DCA TRAD+1
  973.     TAD I [MKEEP        /BREAKPOINT PARAMETERS
  974.     DCA KEEP
  975.     TAD I [MPUNN        /
  976.     DCA PUNN
  977.     CLA IAC
  978.     AND I (7700
  979.     DCA LINK
  980.     TAD I (7700
  981.     CDF 0
  982.     JMS I [T174    /BANK AND FIELD MANIPULATION
  983.     TAD DATFLD
  984.     DCA INDFLD
  985.     TAD [KMREC
  986.     CDF 10
  987.     DCA I (MGET+4
  988.     CLA CLL CMA RAL
  989.     AND I [MGET+2
  990.     DCA I [MGET+2    /REMOVE LOW-ORDER BIT FROM CONTROL WORD
  991.     CDF 0
  992.     TAD KEEP
  993.     JMS I [STORE
  994.     TRAD
  995.     TAD TRAD+1
  996.     IAC
  997.     DCA GAME+1        /ESTABLISH CONTINUE PARAMETERS
  998.     TAD TRAD
  999.     DCA GAME
  1000.     TAD KEEP
  1001.     DCA INST
  1002.     JMS IOTTST
  1003.     SKP
  1004.     JMP JMPLIP
  1005.     TAD TRAD
  1006.     DCA CAD            /ESTABLISH EXAM PARAMETERS
  1007.     TAD TRAD+1
  1008.     DCA CAD+1
  1009.     JMS I [EFFADR
  1010.     TAD CAD
  1011.     DCA FROG
  1012.     TAD CAD+1
  1013.     DCA FROG+1
  1014. JMPLIP,    JMS I [CTCTST
  1015.     CLA
  1016.     JMP I (LIP
  1017. CTCTST,    0        /CONTROL 'C' TEST
  1018.     TAD [200
  1019.     KRS        /CALLING ROUTINE MUST ENABLE KEYBOARD WITH KCC OR KRB!
  1020.     TAD (-203
  1021.     SNA
  1022.     JMP I [CTRC
  1023.     JMP I CTCTST
  1024.  
  1025. OCRLF,    0        /CARRAIGE RETURN-LINE FEED
  1026.     TAD [215
  1027.     JMS I [TYPN
  1028.     TAD [212
  1029.     JMS I [TYPN
  1030.     CLA CMA
  1031.     DCA SHUT
  1032.     JMP I OCRLF
  1033. TRAP,    JMS TOTTST    /ESTABLISHES BREAKPOINT
  1034.     TAD [SHNDLR
  1035.     TAD WORD+1
  1036.     DCA TRAD+1    /ADDRESS
  1037.     TAD WORD
  1038.     DCA TRAD    /FIELD
  1039.     TAD [7000
  1040.     DCA I [SHNDLR
  1041.     TAD [4
  1042.     DCA WORD+1
  1043.     TAD [UDNAME-MPUNN-1
  1044.     DCA TEMP
  1045.     TAD [BRKCOD-1    /MOVE UP RETURN CODE
  1046.     DCA 10
  1047.     TAD [UDNAME-1
  1048.     DCA 11
  1049.     TAD I 10
  1050.     CDF 10
  1051.     DCA I 11
  1052.     CDF 0
  1053.     ISZ TEMP
  1054.     JMP .-5
  1055.     TAD I [JSBITS
  1056.     RTR
  1057.     SZL CLA
  1058.     TAD [5
  1059.     CDF 10
  1060.     TAD I [J7600
  1061.     DCA I [J7600    /CHANGE JMP 7600 TO JMP 7605 IF ODT AREA NOT USED
  1062.     CDF 0
  1063.     TAD I [JSBITS
  1064.     DCA JSTEMP        /SAVE JSBITS BEFORE SETTING BRKPT
  1065.     TAD [CIF 10
  1066.     JMS I [STORE
  1067.     WORD
  1068.     ISZ WORD+1
  1069.     TAD [JMP I 6    /STORE RETURN JMP
  1070.     JMS I [STORE
  1071.     WORD
  1072.     ISZ WORD+1
  1073.     TAD DNAME
  1074.     JMS I [STORE
  1075.     WORD
  1076.     TAD JSTEMP
  1077.     DCA I [JSBITS        /RESTORE JSBITS
  1078.     JMP I [READ
  1079. SUBT,    CML
  1080. ADD,    TAD WORD+1    /MODIFY CURRENT LOCATION POINTER
  1081.     SNA
  1082.     IAC        /1 IS DEFAULT VALUE
  1083.     SZL        /+ OR -?
  1084.     CIA        /-
  1085.     TAD CAD+1
  1086.     DCA CAD+1
  1087.     JMP I [UPAR2    /AND DISPLAY LOC AND CONTENTS
  1088.     *600        /MONITOR ENTERS ODT HERE
  1089. LIP,    HLT        /ERROR. AT INIT, THE CODE AT 600
  1090.     JMP I .+1    /IS CHANGED TO: ISZ PUNN;
  1091. TTYTST,    INIT        /JMP XCONT; TSF
  1092.     JMP TTYOFF
  1093. LIPTYP,    JMS I [TYPD
  1094.     TRAD
  1095.     TAD P250
  1096.     JMS I [TYPN
  1097.     TAD LINK
  1098.     TAD [260
  1099.     JMS I [TYPN
  1100.     TAD [273
  1101.     JMS I [TYPN
  1102.     TAD SAC
  1103.     JMS I [PNUM
  1104.     JMP I [READ
  1105. JUMP,    JMS TOTTST    /TEST FOR 'G' WITH NO ADDRESS
  1106.     JMP I PNO
  1107.     TAD WORD
  1108.     DCA GAME
  1109.     TAD WORD+1
  1110.     DCA GAME+1
  1111.     TAD WORD
  1112.     JMS I [T174    /FIELD ADJUSTMENT -STORED IN DATFLD
  1113.     TAD [7000
  1114.     DCA INST
  1115.     DCA SAC
  1116.     DCA LINK
  1117.     JMP CONTX
  1118. CONTIN,    
  1119.  
  1120.     TAD WORD+1    / 'C'-CONTINUE COMMAND
  1121.     CIA
  1122.     SNA
  1123. CONTX,    CMA
  1124.     DCA PUNN
  1125.     DCA I [7607    /IN CASE THERE WAS NO BREAKPOINT
  1126.     JMS LOAD    /V3
  1127.     TRAD        /V3
  1128.     DCA KEEP    /V3
  1129.     JMS I [OCRLF
  1130. XCONT,    TAD [JMP 4
  1131.     JMS I [STORE
  1132.     TRAD
  1133.     CDF 10
  1134.     TAD TRAD
  1135.     DCA I [MTRAD
  1136.     TAD TRAD+1
  1137.     DCA I [MTRAD1
  1138.     TAD KEEP
  1139.     DCA I [MKEEP
  1140.     TAD PUNN
  1141.     DCA I [MPUNN
  1142.     CDF 0
  1143.     TAD EXTEMP
  1144. MOD6,    LXM        //V4: GETS CLA FROM SET SYS VT278. FIXED LOCATION
  1145.     JMS I [SIM    /SIMULATE THE BRKPOINTED INST HERE
  1146.     TAD LINK    /SAVE LINK
  1147.     DCA I [MLINK    /ESTABLISH RETURN CODE---MXXXX'S
  1148.     TAD SAC        /SAVE AC
  1149.     DCA I [MAC
  1150.     TAD GAME    /ESTABLISH START CDF
  1151.     TAD [CIF 0
  1152.     DCA I [MSTCDF
  1153.     TAD DATFLD    /ESTABLISH 'B' CDF
  1154.     JMS I [XLODE
  1155.     TAD [CDF 0
  1156.     DCA I [MCDF
  1157.     TAD GAME+1    /ESTABLISH START ADDRESS
  1158.     DCA I [MSTADR
  1159.     JMS I [DUMP
  1160.     TAD I [JSBITS
  1161.     RTR
  1162.     SZL CLA
  1163.     JMP I [MSWITC
  1164.     JMP I [MREAD    /EXECUTION TIME
  1165. UPAR1,    JMS I [CRL    /UP-ARROW COMMAND- CLOSE LOCATION
  1166.     JMS I [EFFADR
  1167.     JMP I [UPAR2    /PRINT REFERENCED LOCATION CONTENTS
  1168. EFFADR,    0        /USE CONTENTS AS MRI
  1169.     JMS LOAD
  1170.     CAD
  1171.     AND [177    /ISOLATE LOCATION REFERENCED
  1172.     DCA TEMP
  1173.     JMS LOAD
  1174.     CAD
  1175.     AND [200    /IS IT 'THIS PAGE'?
  1176. P250,    SNA CLA
  1177.     JMP .+3
  1178.     TAD CAD+1
  1179.     AND [7600
  1180.     TAD TEMP
  1181.     DCA TEMP
  1182.     JMS LOAD
  1183.     CAD
  1184.     AND T400    /IS IT INDIRECT-TEST '400' BIT
  1185.     SNA CLA
  1186.     JMP NOIND
  1187.     TAD TEMP
  1188.     DCA CAD+1
  1189.     JMS LOAD
  1190.     CAD
  1191.     DCA TEMP
  1192.     TAD CAD+1
  1193.     AND P7770    /IS IT AUTO-INDEXED?
  1194.     TAD P7770
  1195.     SZA CLA
  1196.     JMP NOAUTO
  1197.     ISZ TEMP
  1198. P7770,    7770        /COVERS ISZ....
  1199.     TAD TEMP
  1200.     JMS I [STORE
  1201.     CAD
  1202. NOAUTO,    TAD INDFLD    /NO INDEXING
  1203.     JMS I [XLODE
  1204.     DCA CAD
  1205. NOIND,    TAD TEMP    /NOT INDIRECT
  1206.     DCA CAD+1
  1207.     JMP I EFFADR
  1208. TTYOFF,            /WASTE SOME TIME
  1209.     JMS IOTTST
  1210. T400,    AND I 0
  1211.     ISZ NOUGHT
  1212.     JMP TTYTST
  1213.     JMP LIPTYP    /IF THE TTY FLAG ISN'T UP NOW, IT'LL NEVER GO UP
  1214. TABL2=.        /COMMAND TABLE SUBROUTINE INFO
  1215.     REA        /IGNORE BLANKS
  1216.     CRL2
  1217.     CRL1
  1218.     EXAM
  1219.     TRAP
  1220.     JUMP
  1221.     SEMI
  1222.     CONTIN
  1223.     WSER
  1224.     UPAR1
  1225.     MASKX
  1226.     ACX
  1227.     LINKX
  1228.     DATF
  1229.     OPIN
  1230.     INDF
  1231.     RBOUT
  1232.     ADD
  1233.     SUBT
  1234. IFZERO 1000&. <*1000>
  1235. PNUM,    0        /PRINTS CONTENTS OF ADDRESS LOCATION
  1236.     DCA PUNN    /OR ADDRESS...ITSELF
  1237.     TAD [-4
  1238.     DCA TEMP
  1239. PN2,    TAD PUNN
  1240.     RTL
  1241.     RAL
  1242.     DCA PUNN
  1243.     TAD PUNN
  1244.     RAL
  1245.     AND [7
  1246.     TAD [260
  1247.     JMS I [TYPN
  1248.     ISZ TEMP
  1249.     JMP PN2
  1250.     TAD [240
  1251.     JMS I [TYPN
  1252.     JMP I PNUM
  1253. TYPD,    0        /PRINTS BANK AND FIELD OF ACCESSED LOC.
  1254.     TAD I TYPD
  1255.     DCA TEMP
  1256.     TAD I TEMP
  1257.     JMS I TYPDXX
  1258.     JMS I [TYPN    /TYPE BANK
  1259.     TAD NWD         
  1260.     JMS I [TYPN    /TYPE FIELD
  1261.     TAD I TEMP
  1262.     JMS I [PNUM    /PRINT ADDRESS
  1263.     ISZ TYPD
  1264.     JMP I TYPD
  1265. TYPDXX,    TYPDX
  1266. TYPN,    0        /PRINTS CHARACTERS PREPARED BY TYPD;PNUM,ETC.
  1267.     TLS
  1268.     TSF
  1269.     JMP .-1
  1270.     CLA
  1271.     KSF        //V4: KEEP THE LOGIC FOR REA, CTCTST, AND TYPN INTACT
  1272.     JMP I TYPN    //FOR VT278. ^O WILL MAKE 2 PASSES THROUGH HERE. THE
  1273.     JMS I [CTCTST    //SECOND PASS MUST NOT FIND KEYBOARD DATA AVAILABLE FLAG!
  1274.     TAD [-14
  1275.     SZA CLA
  1276.     JMP I TYPN
  1277.     KCC
  1278.     JMP I [READ    /FOUND ^O. STOP OUTPUT AND RESTART ODT.
  1279.  
  1280. WSER,    JMS I [OCRLF    / 'W'---WORD SEARCH
  1281.     TAD LIMLO
  1282.     DCA CKT+1    /ESTABLISH LOWER LIMIT
  1283.     TAD INDFLD
  1284.     JMS I [XLODE    /ADJUST WORD SEARCH BANK AND FIELD
  1285.     DCA CKT
  1286. WSER1,    JMS LOAD
  1287.     CKT
  1288.     AND MASK    /SEARCH MASK
  1289.     CIA
  1290.     TAD WORD+1
  1291.     SZA CLA
  1292.     JMP WSER2
  1293.     JMS I [TYPD    /WORD FOUND GO TYPE IT
  1294.     CKT
  1295.     TAD [257
  1296.     JMS I [TYPN
  1297.     JMS LOAD
  1298.     CKT
  1299.     JMS I [PNUM
  1300.     JMS I [OCRLF
  1301. WSER2,    TAD CKT+1    /TEST NEXT LOCATION
  1302.     CIA
  1303.     TAD LIMHI    /IF IT ISN'T ABOVE THE LIMIT
  1304.     SNA CLA
  1305.     JMP I [READ    /OVER LIMIT GO GET NEXT COMMAND
  1306.     ISZ CKT+1
  1307.     JMP WSER1    /SEARCH NEXT LOCATION
  1308.  
  1309. ACX,    TAD [SAC-LINK    / 'A' COMMAND
  1310. LINKX,    TAD [LINK-MASK    / 'L' COMMAND
  1311. MASKX,    TAD [MASK-INDFLD    / 'M' COMMAND
  1312. INDF,    TAD [INDFLD-DATFLD        /'F' COMMAND
  1313. DATF,    TAD [DATFLD    / 'D' COMMAND
  1314.     DCA WORD+1
  1315.     CLA CMA
  1316.     DCA WORD
  1317.     DCA TOTE
  1318.     TAD [257
  1319.     JMS I [TYPN
  1320.     JMP I [EXAM
  1321. BRKCOD=.        /RETURN CODE --- FROM 'G','C' COMMANDS
  1322.     NOPUNC
  1323.     *UDNAME        /STORED IN UPPER FIELD ZERO
  1324.     ENPUNC
  1325.  
  1326.     DCA MARG1
  1327.     RAL
  1328.     RDF
  1329.     DCA 7700
  1330.     TAD PODT
  1331.     DCA MGET+4
  1332.     ISZ MGET+2    /DON'T REVERSE TAPE MOTION TO PICK UP ODT
  1333.     CDF CIF 0
  1334. J7600,    JMP 7600
  1335. PODT,    ODTREC
  1336. P7603,    7603
  1337. MTRAD,    0
  1338. MTRAD1,    0
  1339. MKEEP,    0
  1340. MPUNN,    0
  1341.  
  1342.     NOPUNC
  1343.     *BRKCOD+MPUNN-UDNAME+1
  1344.     ENPUNC
  1345.  
  1346. DUMP,    0        /SUBROUTINE TO STORE ADJUSTED CODE
  1347.     TAD STOFLG    /LT
  1348.     SNA CLA
  1349.     JMP I DUMP
  1350.     JMS I [SHNDLR
  1351.     4200
  1352.     1400
  1353. GREC,    0        /SET BY GETADR
  1354.     HLT
  1355.     DCA STOFLG
  1356.     JMP I DUMP
  1357.  
  1358. RBOUT,    TAD [277    /RUBOUT COMMAND
  1359.     JMS I [TYPN
  1360.     TAD [240
  1361.     JMS I [TYPN
  1362.     JMP I REDE5
  1363.     IFNZRO .-1200&4000 <*1200>
  1364. SIM,    0        /SIMULATES BREAKPOINTED INST
  1365.     JMS IOTTST
  1366.     JMS LOAD
  1367.     FROG
  1368.     DCA TEMP
  1369.     JMS I [DUMP
  1370.     DCA I [GREC
  1371.     JMS I [SHNDLR    /DUE TO 128K CODE -SIM IS LOADED INTO 1600
  1372.     0100
  1373. SIMXT,    1600
  1374.     64
  1375.     HLT
  1376.     JMS I SIMXT
  1377.     JMS I [STORE
  1378.     FROG
  1379.     JMP I SIM
  1380. XLODE,    0        /TRANSFORMS 'ABCDE' TO 'ACDEB0' FOR CDF
  1381.     DCA NWD
  1382.     TAD TEMP    /TEST FOR GO COMMAND
  1383.     CIA        /A 'GO' ABOVE 32K REQUIRES SETTING EXTEMP
  1384.     TAD TJUMP    /FOR LXM ENABLE
  1385.     SNA CLA
  1386.     TAD (30
  1387.     AND NWD
  1388.     SNA CLA 
  1389.     JMP LT32K
  1390.     TAD [7000
  1391.     DCA EXTEMP
  1392. LT32K,    TAD NWD        /TRANFORMATION IS HERE
  1393.     AND (17
  1394.     TAD (7770
  1395.     SPA
  1396.     TAD (17
  1397.     TAD [7771
  1398.     TAD NWD
  1399.     CLL RTL
  1400.     JMP I XLODE
  1401.  
  1402. T174,    0        /TRANSFORMS 174 TO 37
  1403.     CLL RTR
  1404.     RAR
  1405.     AND (17
  1406.     TAD [10
  1407.     AND [7767    /... 0027 ARE THE RELEVANT BITS IN 7767
  1408.     SZL
  1409.     TAD [10
  1410.     DCA DATFLD
  1411.     JMP I T174
  1412. TYPDX,    0        /PROCESSES BANK & FIELD FOR PRINTING
  1413.     SPA        /ADJUSTMENT FOR LINE FEED AFTER
  1414.     CLA        /REFERENCE TO M,D,F,ETC. COMMANDS
  1415.     CLL RTR
  1416.     RAR
  1417.     DCA T174
  1418.     TAD T174
  1419.     AND [7
  1420.     TAD [260
  1421.     DCA NWD
  1422.     TAD T174
  1423.     AND [10
  1424.     SZL
  1425.     TAD [4
  1426.     CLL RTR
  1427.     TAD [260
  1428.     ISZ TEMP
  1429.     JMP I TYPDX
  1430.  
  1431.  
  1432. STORE,    0        /SUBROUTINE TO ADJUST CODE
  1433.     DCA LOAD
  1434.     TAD I STORE
  1435.     JMS I [GETADR
  1436.     ISZ STOFLG    /INDICATE THAT WE'RE CHANGING THIS RECORD
  1437.     TAD LOAD
  1438.     DCA I ADR
  1439.     CDF 0
  1440.     ISZ STORE
  1441.     JMP I STORE
  1442. GETADR,    0        /GETS ADDRESS....
  1443.     DCA ADR
  1444.     TAD I ADR
  1445.     DCA FADR
  1446.     ISZ ADR
  1447.     TAD I ADR
  1448.     DCA ADR
  1449.     TAD FADR
  1450.     SNA        /ONLY NEED TO FOOL WITH ADDRESS IF IT'S IN FIELD 0
  1451.     JMP CKADR
  1452.     SPA
  1453.     CLA
  1454.     TAD [CDF 0
  1455.     DCA .+1
  1456. FADR,    0
  1457.     ISZ GETADR
  1458.     JMP I GETADR
  1459. CKADR,    TAD ADR        /MANIPULATES FIELD 0 OF ODT'D PROGRAM
  1460.     RAL        /ACCESSES IT IN LOCS 1400-1777
  1461.     SZL SPA CLA    /
  1462.     JMP FADR+1
  1463.     CLA CLL CMA RTL
  1464.     AND I [JSBITS
  1465.     DCA I [JSBITS    /MODIFY THE JSW TO INDICATE ODT AREA VIOLATION
  1466.     TAD ADR
  1467.     CLL RTL
  1468.     RTL
  1469.     RAL
  1470.     AND [7        /CALCULATE BLOCK OF STORAGE
  1471.     TAD [MTEMP+4
  1472.     DCA GIREC
  1473.     TAD I [GREC    /MAYBE IT'S ALREADY IN CORE
  1474.     CIA
  1475.     TAD GIREC
  1476.     SNA CLA
  1477.     JMP NOREAD    /IT IS!!
  1478.     JMS I [DUMP    /MAYBE... ...IT ISN'T
  1479.     JMS I [SHNDLR    /LOADS RELEVANT PROGRAM CODE
  1480.     0200
  1481. G1400,    1400
  1482. GIREC,    0
  1483.     HLT
  1484.     TAD GIREC
  1485.     DCA I [GREC
  1486. NOREAD,    TAD ADR        /ADJUST THE ADDRESS FOR PROPER ACCESS
  1487.     AND (377
  1488.     TAD G1400
  1489.     DCA ADR
  1490.     JMP I GETADR
  1491.  
  1492.  
  1493.     *1400
  1494.     /INITIALIZATION CODE TO SET UP THE "MREAD" AREA IN FIELD 0
  1495.     /WITH THE ODT CODE TO START UP A PROGRAM
  1496.  
  1497. INIT,    TAD I 10
  1498.     DCA I 11
  1499.     ISZ TEMP
  1500.     JMP .-3
  1501.     JMS CORE    /DETERMINE CORE FIELD SIZE
  1502.     KRB        //V4: CANNOT WAIT FOR TTY FLAG IN VT278.  V3: TSF
  1503.     CLA CLL        //ENSURE KEYBOARD AVAILABLE INSTEAD.          JMP .-1
  1504.     JMP I [READ
  1505.  
  1506. BRKTST,    JMS CORE    /GET CORE SIZE NOW THAT WE WERE
  1507.     TAD KLIP
  1508.     DCA I PLIP    /SETUP LOCATIONS AT 600
  1509.     TAD KLIP+1
  1510.     DCA I PLIP+1
  1511.     TAD KLIP+2
  1512.     DCA I PLIP+2
  1513.     TAD KCDF10    /JUST BREAKPOINTED IN. THEN RESTORE
  1514.     DCA I BURPO    /LOCS AT BURP SO WE NEVER COME BACK
  1515.     TAD KCDF10+1    /HERE AGAIN UNTIL WE'RE SWAPPED
  1516.     DCA I BURP2
  1517.     JMP I BURPO
  1518. KCDF10,    CDF 10
  1519.     TAD I [MARG1    /SIMULATE LOCS AT BURP
  1520. BURPO,    BURP
  1521. BURP2,    BURP+1
  1522. RSTCOD=.        /RESTORES ODT AFTER 'C','G' COMMANDS
  1523.     NOPUNC
  1524.     *MREAD-1
  1525.     ENPUNC
  1526.  
  1527.     SHNDLR
  1528.     JMS I .-1
  1529.     1000
  1530.     0
  1531.     MTEMP+4
  1532.     HLT
  1533. MSWITC,    TAD MLINK
  1534.     CLL RAR
  1535.     TAD MAC
  1536. MCDF,    CDF 0        /CDF OF PREVIOUS BRKPOINTED INST
  1537.     JMP MSTCDF
  1538. MAC,    0        /SAVED AC
  1539. MLINK,    0        /LIKEWISE LINK
  1540. MSTCDF,    CIF 0        /START CDF
  1541.     JMP I .+1
  1542. MSTADR,    0        /START ADDRESS
  1543.  
  1544.     NOPUNC
  1545.     *RSTCOD+MSTADR-MREAD+2
  1546.     ENPUNC
  1547. CORE,    0        /DETERMINES AVAILABLE CORE
  1548. MOD7,    RXM        /READ AND STORE EXT MEM INFO. //V4: GETS NOP FROM
  1549.                         //SET SYS VT278
  1550.     DCA EXTEMP
  1551.     TAD [7000
  1552. MOD8,    LXM        /SETS LXM FOR ODT PURPOSES. //V4: GETS CLA FROM SET SYS VT278
  1553.     CLA
  1554.     CDF 0
  1555.     TAD I M1    /FIELD INFO STORED IN 7777(IF AVAILABLE)
  1556.     AND COR70
  1557.     CLL RTR
  1558.     RAR
  1559.     SZA        /HAS CORE SIZE BEEN SET?
  1560.     JMP USERCR    /VERILY
  1561. COR0,    CDF 0
  1562.     TAD CORSIZ    /GET FIELD TO TEST
  1563.             /JMS I [XLODE GETS A CLL RTL;RAL FROM SET SYS VT278
  1564.     JMS I [XLODE    /EXTENDED MEMORY BANK&FIELD ADJUSTMENT
  1565.     NOP
  1566.     TAD COREX
  1567.     DCA .+1        /SET UP CDF TO FIELD
  1568. COR1,    CDF    
  1569.     TAD I CORLOC    /SAVE CURRENT CONTENTS
  1570. COR2,    NOP
  1571.     DCA COR1
  1572.     TAD COR2
  1573.     DCA I CORLOC
  1574. COR70,    70        /ACTS AS NOP
  1575.     TAD I CORLOC    /TRY TO READ BACK 7000
  1576. CORX,    7400
  1577.     TAD CORX
  1578.     TAD CORV
  1579.     SZA CLA
  1580.     JMP COREX    /NON-EXISTENT FIELD EXIT
  1581.     TAD COR1    /RESTORES CONTENTS DESTROYED
  1582.     DCA I CORLOC
  1583.     ISZ CORSIZ    /TRY NEXT HIGHER FIELD
  1584.     JMP COR0
  1585.  
  1586. COREX,    CDF 0        /STORE AWAY LAST REAL FIELD IN 'ZERO'
  1587.     TAD CORSIZ
  1588.     TAD M1
  1589. USERCR,    CIA
  1590.     DCA ZERO
  1591.     JMP I CORE
  1592. CORLOC,    CORX
  1593. CORV,    1400
  1594. M1,    -1
  1595. CORSIZ,    1
  1596. KLIP,    ISZ PUNN
  1597.     XCONT&177+5200
  1598.     TSF
  1599. PLIP,    LIP
  1600.     LIP+1
  1601.     LIP+2
  1602.  
  1603.     *1600
  1604. SIMX,    0        /SIMULATES BREAKPOINTED INST
  1605.     TAD TEMP
  1606.     DCA 0
  1607.     JMS IOTTST    /IS IT AN IOT?
  1608.     TAD T777
  1609.     CMA
  1610.     AND INST
  1611.     RAL
  1612.     CML
  1613.     SNL SMA        /IS IT A JMS OR A JMP?
  1614.     JMP JMSJMP
  1615.     CML RAR
  1616.     DCA SOPR    /STORE INST IN SOPR
  1617.     TAD DATFLD    /PREPARE CDF
  1618.     JMS I [XLODE
  1619.     TAD [CDF 0
  1620.     DCA .+1
  1621.     HLT
  1622.     TAD LINK    /AND LINK
  1623.     CLL RAR
  1624.     TAD SAC        /AND AC
  1625. SOPR,    HLT        /EXECUTE INSTRUCTION
  1626.     SKP
  1627.     ISZ GAME+1
  1628.     DCA SAC        /RESAVE AC,LINK,DATFLD
  1629.     RAL
  1630.     DCA LINK
  1631.     RDF
  1632.     JMS I [T174
  1633.     CDF CIF 0
  1634. EOSIM,    TAD 0        /PREPARE TO RETURN
  1635.     CIA        /HAS LOC 0 BEEN CHANGED?BY A TAD...DCA...ISZ...
  1636.     TAD TEMP
  1637. EOTST,    SNA CLA        /IF SO,THEN...
  1638.     JMP .+3
  1639.     TAD 0        /...DO A STORE(ON RETURN TO SIM)
  1640.     JMP I SIMX
  1641.     ISZ SIMX
  1642.     JMP I SIMX
  1643. JMSJMP,    RTL        /PROCESS JMP,JMS
  1644.     SZL CLA
  1645.     JMP JMPX
  1646.     TAD TRAD
  1647.     DCA FROG
  1648.     TAD GAME+1
  1649.     DCA 0
  1650.     CLA IAC CLL
  1651. JMPX,    TAD FROG+1
  1652.     DCA GAME+1
  1653.     CML RAL        /PUT -LINK IN AC (0 IF JMP, 1 IF JMS)
  1654.     JMP EOTST
  1655. T777,    777
  1656.  
  1657.     *0
  1658. ZERO,    ODTVERSION
  1659.     /HLT        /IN CASE BKPT WITH INTER ON
  1660.     CIF 30        /SYMBIONT CODE
  1661.     JMP .-1
  1662. PUNN,    0
  1663.     *4        /PAGE 0 LITERALS AND CELLS
  1664.     CIF 10        /PROTOTYPE BREAKPOINT
  1665.     JMP I 6        /USED BY PROGRAMS WITH JSBITS(10)=1
  1666. DNAME,    UDNAME        /WHEN ODT IS RELOADED ON A BREAKPOINT
  1667.  
  1668.     *7
  1669. EXTEMP,    0
  1670.     RSTCOD-1
  1671.     MREAD-2
  1672.     *12
  1673. TOTE,    0
  1674. KEEP,    0
  1675. INST,    0
  1676. SHUT,    -1
  1677. TRAD,    0;SHNDLR
  1678. WORD,    0;0
  1679. LINK,    0
  1680. SAC,    0
  1681. CAD,    0;0
  1682. CKT,    0;0
  1683. GAME,    0;0
  1684. FROG,    0;0
  1685. TEMP,    MREAD-MSTADR-2
  1686. JSTEMP,    0
  1687. DATFLD,    0
  1688. INDFLD,    0
  1689. MASK,    7777
  1690. LIMLO,    0
  1691. LIMHI,    7577
  1692. ADR,    0
  1693. FLDTST,    TAD ZERO        /LOC. 0 HAS LAST REAL CORE FIELD
  1694.     TAD NWD        /IF USER TRIES TO ADDRESS NON-
  1695.     SMA SZA CLA        /EXISTENT CORE, A ? RETURNS
  1696.     JMP I PNO
  1697.     JMP I TEMP    /HE'S OK.
  1698. PNO,    NO
  1699. TOTTST,    0        /TEST FOR COMMAND WITHOUT ADDRESS
  1700.     TAD TOTE
  1701.     TAD [7
  1702.     SZA CLA
  1703.     ISZ TOTTST
  1704.     JMP I TOTTST
  1705. STOFLG,    0
  1706. NWD,    0
  1707. TJUMP,    JUMP
  1708. NOUGHT,    0
  1709. LOAD,    0        /SUBROUTINE TO LOAD PROGRAM CODE
  1710.     TAD I LOAD
  1711.     JMS I [GETADR
  1712. REDE5,    READ5
  1713.     TAD I ADR    /RETURNS ADDRESS CONTENTS IN AC
  1714.     CDF 0
  1715.     ISZ LOAD
  1716.     JMP I LOAD
  1717. IOTTST,    0        /TEST FOR ISOLATING I/O
  1718.     CLA CLL CML RTR
  1719.     TAD INST
  1720.     SZL CLA
  1721.     ISZ IOTTST
  1722.     JMP I IOTTST
  1723.     $
  1724.  
  1725.