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 / rx2a.pa < prev    next >
Text File  |  1992-09-18  |  12KB  |  448 lines

  1. /RX NON-SYSTEM HANDLER, GENERAL CONTROLLER TYPE
  2. /FLOPPY DISK HANDLER FOR OS/8 FOR FIRST RX02 DRIVE PAIR.
  3. /
  4. /
  5. /
  6. /
  7. /
  8. /
  9. /
  10. /
  11. /COPYRIGHT  (C)  1978, 1982, 1984 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. /DEFINITIONS OF RX8/E IOT'S
  47.  
  48. RXVER=    0263    /VERSION = B3
  49.  
  50. NOCHK=    0    / 0 = Don't check for ctrl c, 1 = check for ctrl c
  51.  
  52. DEVCOD=    750    /DEVICECODE
  53. SEL=    6000+DEVCOD    /SELECT DRIVE PAIR
  54. LCD=    6001+DEVCOD    /LOAD COMMAND REGISTER
  55. XDR=    6002+DEVCOD    /TRANSFER DATA REGISTER
  56. STR=    6003+DEVCOD    /SKIP ON TRANSFER REQUEST FLAG, CLEAR FLAG
  57. SER=    6004+DEVCOD    /SKIP ON ERROR FLAG, CLEAR FLAG
  58. SDN=    6005+DEVCOD    /SKIP ON DONE FLAG, CLEAR FLAG
  59. INTR=    6006+DEVCOD    /INTERRUPT ENABLE/DISABLE
  60. INIT=    6007+DEVCOD    /INITIALIZE CONTROLLER AND RECALIBRATE DRIVES
  61.  
  62.  
  63. /NOTES ON THIS HANDLER:
  64.  
  65. /THIS HANDLER READS AND WRITES THE DISK IN "12-BIT" MODE, IN WHICH
  66. /ONLY 6 BITS OF EVERY 8-BIT BYTE ARE USED. AN RX01 CARTRIDGE
  67. /CONTAINS 494 OS/8 BLOCKS UNDER THIS METHOD
  68.  
  69. /TO MAXIMIZE SPEED ON THE DEVICE, THE HANDLER READS AND WRITES RX01 DATA
  70. /ON A TRACK WITH A TWO-WAY INTERLEAVE - I.E. RECORDS 1-26 ON A TRACK
  71. /ARE WRITTEN IN THE SEQUENCE:
  72. /  1,3,5,7,9,11,13,15,17,19,21,23,25,2,4,6,8,10,12,14,16,18,20,22,24,26
  73.  
  74. /DOUBLE DENSITY MEDIA ARE WRITTEN IN A THREE WAY INTERLEAVE
  75. /  1,4,7,10,13,16,19,22,25,2,5,8,11,14,17,20,23,26,3,6,9,12,15,18,21,24
  76.  
  77. /TRACK-SECTOR COMPUTATION IS DONE I/O TO/FROM THE SILO
  78.  
  79. AC4000=CLL CLA CML RAR        /SET AC TO 4000
  80. AC7776=CLL CLA CMA RAL        /SET AC TO 7776
  81. AC0002=CLL CLA CML RTL        /SET AC TO 0002
  82. AC7775=CLL CLA CMA RTL        /SET AC TO 7775
  83. /
  84. /BUILD DATA
  85.     *0
  86. /
  87.     -2        /TWO ENTRY POINTS
  88.     DEVICE    RX2A    /DEVICE GROUP NAME
  89.     DEVICE    RX20    /ENTRY POINT NAME
  90.     4320        /CODE FOR MULTI-RX
  91.     RX20&177+4000    /ENTRY POINT OFFSET
  92.     0
  93.     0
  94.     DEVICE    RX2A    /DEVICE GROUP NAME
  95.     DEVICE    RX21    /ENTRY POINT NAME
  96.     4320
  97.     RX21&177+4000    /ENTRY POINT OFFSET
  98.     0
  99.     0
  100.     *200
  101. /
  102. /
  103. /  INIT CODE
  104. /
  105. POINT,    HLT        /ADDR OF SECOND PAGE AT INIT TIME
  106. UNIT,    JMS I    POINT    /GO TO SECOND PAGE TO INIT
  107. /
  108. /  LIST OF VECTORS TO SECOND PAGE
  109. /
  110. LQUO,    QUO-.        /LQUO MUST LEAD OFF LIST
  111. LRETRY,    RETRY-.
  112. LREC,    REC-.
  113. LSIZE,    SIZE-.
  114. LREMD,    REMD-.
  115. LFN,    FN-.
  116. LSELCT,    SELECT-.
  117. LDENSW,    DENSW-.
  118. LENTRY,    ENTRY-.
  119.  
  120. VCOUNT=LQUO-.        /FALLS THRU TO WHICH, HERE IS VECTOR COUNT
  121. /
  122. /  COME HERE FROM ZOO
  123. /
  124. /  PROCESS ENTRY POINT, DEVICE TYPE
  125. /
  126. WHICH,    AC4000        /SELECT FIRST DRIVE PAIR DMII=4000, DMI=0
  127.     SEL
  128.     SDN        /CLEAR DONE FLAG
  129.     NOP
  130.     SER        /CLEAR ANY ERROR CONDITIONS
  131.     NOP
  132.     AC7775        /SET RETRY COUNTER
  133.     DCA I    LRETRY
  134.     TAD I    ZOO    /GET UNIT NUMBER*20+402
  135.     DCA    UNIT    /HOLD FOR LATER
  136.     ISZ    ZOO    /MOVE TO TYPE CODE
  137.     TAD I    ZOO    /HAS THIS DRIVE BEED INIT'ED
  138. L7700,    SMA CLA        /SKIP IF NO
  139.     JMP    NORMAL    /GO TO NORMAL PATH
  140. RSTART,    JMP    BOUNCE    /HOP OVER ENTRY POINTS
  141. /
  142. /
  143. /
  144.     IFZERO    .&177-33&4000    <_ERROR_>
  145. /
  146. /  ENTRY POINTS ARE AT 32,36
  147. /
  148.     *.&7600+32
  149. /
  150. RX20,    RXVER
  151.     JMS    ZOO    /COMMON ENTRY ROUTINE
  152.     402        /UNIT 0, 402 FOR CONVENIENCE
  153.     -1        /MINUS SAYS STILL HAVE TO INIT IT;
  154. /            /SINGLE=0, DOUBLE=20, QUAD=22
  155. RX21,    0
  156.     JMS    ZOO
  157. L422,    422        /20 SAYS UNIT 1, 402 FOR CONVENIENCE
  158. DOOR,    JMP    WHICH    /INIT TIME LITERAL (MUST BE MINUS)
  159. /            /GETS SAME TYPE CODE AS OTHER ENTRY POINT
  160. /
  161. /  REST OF SET UP CODE
  162. /
  163. BOUNCE,    TAD    L10    /MAKE A READ STATUS CODE
  164.     TAD    UNIT
  165.     LCD
  166.     SDN
  167.     JMP    .-1
  168.     XDR        /GET STATUS WORD
  169.     AND    L32    /KEEP DENSITY ERROR; DOUBLE; QUAD
  170.     TAD    L10    /SINGLE=10;SING/DOUB=40;DOUB=20;QUAD=22
  171.     AND    L422    /SINGLE=0;SING/DOUB=0;DOUB=20;QUAD=22
  172.     DCA I    ZOO    /PLACE TYPE CODE, THREE LOC.'S AFTER ENTRY POINT
  173.     SER
  174. L10,    10
  175. NORMAL,    TAD I    ZOO    /FETCH BACK TYPE CODE
  176.     SZA CLA        /SKIP IF A SINGLE DENSITY
  177.     TAD    L7700    /DOUBLE
  178.     TAD    L7700    /SINGLE=7700, DOUBLE=7600
  179.     DCA I    LDENSW    /PLACE FOR LOOP CONTROL
  180.     TAD I    ZOO
  181.     CLL RTR        /PUT QUAD BIT TO LINK
  182.     SNA CLA        /SKIP IF DOUBLE OR QUAD
  183.     TAD    L1734    /SINGLE
  184.     TAD    L4110    /D&Q=4110, S=6044
  185.     SNL        /SKIP ON QUAD, IT'S OK RIGHT NOW
  186.     CLL CML RAR    /SINGLE AND DOUBLE DIVIDE BY 2
  187.     DCA I    LSIZE    /S=7022, D=6044, Q=4110
  188.     TAD I    LDENSW    /7700 IF SINGLE, 7600 IF DOUBLE
  189.     CLL CMA RTL    /375 IF SINGLE, 775 IF DOUBLE
  190.     AND    UNIT    /VOILA, 400*DOUBLE  +  20*UNIT
  191.     DCA I    LFN    /PLACE INTO FUNCTION CONTROL WORD
  192.     AC7775        /BACK UP ZOO TO FETCH CALLING ADDR
  193.     TAD    ZOO
  194.     DCA    T1    /HOLD TEMPORARY
  195.     TAD I    T1    /HERE IS CALLING ADDR
  196. CLLFLD,    HLT        /PUT CDF TO CALLING FIELD HERE
  197.     JMS I    LENTRY    /GO TO SECOND PAGE, LEAVING POINTER TO DIVSUB
  198. /
  199. /  DIVSUB SUBROUTINE !!MUST!! FOLLOW IMMEDIATELY
  200. /
  201. /
  202. /  DIVSUB
  203. /
  204. /  CALL TO SET UP TRACK, SECTOR, FROM OVERALL SECTOR #
  205. /  ALSO, SET UNIT WITH HEAD COMMAND IF WE ARE ON TO SECOND SIDE
  206. /
  207. /  CALL WITH AC <0 IF IT IS REALLY AN ERROR RETRY
  208. /  CALL WITH AC >=0 IF CALL TO DIVSUB
  209. /
  210. DIVSUB,    0
  211.     CDF    0    /AND DATA FIELD MUST BE TO HERE
  212.     SPA CLA        /SKIP IF REALLY A DIVIDE REQUEST
  213.     JMP    RSTART    /NO, IT WAS AN ERROR RETRY!!
  214.     DCA I    LQUO    /CLEAR DIVIDE QUOTIENT
  215.     TAD I    ZOO    /IS IT A TWO HEADER
  216.     RTR        /PUT QUAD BIT TO LINK
  217.     SNL CLA        /SKIP IF YES
  218.     JMP    SHUNT    /NO, GO DO DIVIDE
  219.     TAD I    LREC    /WHICH RECORD ARE WE WORKING ON
  220.     TAD    LM3670    /NUMBER OF SECTORS ON FIRST SIDE
  221.     SZL CLA        /SKIP IF SECOND SIDED IT
  222.     JMP    SHUNT    /NO, JUST REGULAR
  223.     TAD I    LFN    /FORCE HEAD BIT ON
  224.     AND    L422    /KEEP DOUBLE, UNIT, READ-WRITE
  225.     TAD    L1000    /ADD IN SECOND SIDE
  226.     DCA I    LFN
  227.     TAD    LM3670    /BUT DECREASE RECORD NUMBER
  228. SHUNT,    TAD I    LREC    /THIS FOR TRACK-SECTOR
  229. DIVLOO,    ISZ I    LQUO    /MAIN DIIVIDIE LOOP
  230.     TAD    LM32    /DIVIDE BY 26 TO GET TRACK
  231.     SMA        /SKIP IF DONE
  232.     JMP    DIVLOO
  233.     TAD    L32    /REMAINDER 0-25
  234.     DCA    T1    /HOLD IT IN TEMPORARY
  235.     TAD I    ZOO    /SINGLE DENSITY
  236.     SZA CLA        /SKIP IF YES
  237.     TAD     T1    /MULTIPLY BY THREE FOR DOUBLE
  238.     TAD     T1    /AND BY TWO FOR SINGLE
  239.     TAD     T1
  240.     CLL IAC        /LINK CLEAR FOR FINAL TEST; +1 TO START AT 1 NOT 0
  241.     TAD    LM32    /DIVIDE BY 26 TO GET SECTOR
  242.     SMA SZA        /SKIP IF DONE
  243.     JMP    .-2
  244.     TAD    L32    /RESTORE POSITIVE VALUE TO BE SECTOR
  245.     DCA I    LREMD    /WHEW, BUT WATCH IT, A FINAL CORRECTION COMING!
  246.     RAL        /IF LINK=0 AND SINGLE: 2,4,6,8,10,12,14,16... SERIES
  247.     TAD I    ZOO    /BUT WE HAVE 1,3,5,7,9,11,13,15... SO WE MUST INCREMENT!
  248.     SNA CLA        /SKIP IF SOME OTHER CASE
  249.     ISZ I    LREMD    /NOW HAVE IT 2,4,6,8,10,12,14,16...
  250.     JMP I    DIVSUB    /OUT
  251. /
  252. /
  253. L416,    416    /SOME LITERALS
  254. L32,    32
  255. L1000,    1000
  256. LM32,    -32
  257. L1734,    1734
  258. L4110,
  259. LM3670,    -3670
  260. /
  261. /
  262. /
  263.     *.&7600+167    /FORCE TO END OF PAGE
  264. /  ZOO  SUBROUTINE
  265. /
  266. /  TO SET UP ENTRY POINT PROCESSING, AND INIT CODE
  267. /
  268. ZOO,    0        /ADDR OF 'HIT' ENTRY POINT +2 COMES HERE
  269.     CLA        /FOR SAFETY
  270.     RDF        /SAVE CALLERS FIELD SETTING
  271.     TAD    LCDF0    /ADD IN CDF 0
  272.     DCA    CLLFLD    /RESET WHEN GOING TO I/O SUB
  273. LCDF0,    CDF 0        /DATA FIELD HERE FOR INDIRECTS
  274. CLOSE,    TAD    DOOR    /CLOSE DOOR TO ONCE ONLY CODE (JMP WHICH
  275. T1,    DCA    CLOSE    /USE ONCE-ONLY FOR TEMPORARY LOCATION
  276.     JMS    POINT    /LEAVE ADDR OF SECOND PAGE
  277. /
  278. /
  279. /  VARIABLES, ALSO INIT CODE LIVES HERE
  280. /
  281. /
  282. BUF,    0        /POINTER TO CALLER'S BUFFER
  283. RETRY,    0        /RETRY COUNT
  284. SIZE,    0        /SIZE OF DEVICE
  285. SYS,    0        /POINTER TO CALL
  286. QUO,    0        /DIVIDE QUOTIENT, WHICH IS TRACK NUMBER
  287. REC,    0        /SECTOR NUMBER OF FLOPPY
  288. BC,    0        /CONTROL COUNT, WORDS TO TRANSFER
  289. FN,    0        /0 FOR WRITE; 2 FOR READ; HEAD, DENSITY, UNIT
  290. DENSW,    0        /7700 IF SINGLE DENSITY, 7600 IF DOUBLE DENSITY
  291. ENTRY,    0        /ENTRY POINT, LEAVE ADDR OF DIVSUB HERE
  292. /
  293.     IFNZRO    .&177-10&4000    <_ERROR>    /ENOUGH ROOM FOR INIT?
  294. /
  295.     *.&7600
  296. /
  297. /  INIT TIME:  FILL VECTOR TABLE
  298. /
  299. THERE,    0        /FILLED BY JMS, POINTS TO VECTOR
  300. ILOOP,    TAD    THERE    /POINTER IS ALSO OFFSET!
  301.     TAD I    THERE    /MAKING VECTOR
  302.     DCA I    THERE
  303.     ISZ    THERE    /MOVE TO NEXT VECTOR
  304.     ISZ    FLPWC    /CONTROL COUNT ON THIS PAGE
  305.     JMP    ILOOP
  306.     JMP I    THERE    /BACK TO FIRST PAGE
  307. /
  308. /  IO SUBROUTINE
  309. /
  310. /  ENTRY POINT AT END OF LAST LISTING PAGE
  311. /
  312. /
  313.     *ENTRY+1    /RESUME RUNTIME CODE
  314. /
  315.     DCA    SYS    /POINTER TO ARG'S, EXIT
  316.     RDF        /DATA FIELD OF USER CALL
  317.     TAD    (CDF CIF 0    /MAKE CDF CIF TO CALLER'S FIELD
  318.     DCA    EXFLD    /SET UP FOR CALL
  319.     AC4000        /SET LINK=0, AC=4000
  320.     TAD I    SYS    /CARRY READ-WRITE BIT TO LINK
  321.     AND    L70    /KEEP FIELD FOR BUFFER
  322.     TAD    LLCDF0    /MAKE CDF TO BUFFER FIELD
  323.     DCA    BUFCDF    /PLACE INTO I/O LOOP
  324.     CML RTL        /MAKE FUNCTION CODE, 0=WRITE, 2=READ
  325.     TAD    FN    /START-UP CODE HAS SET HEAD, DENSITY, UNIT ETC.
  326.     DCA    FN
  327.     TAD I    SYS    /MAKE LOOP CONTROL COUNT
  328.     RAL
  329.     AND    L7600
  330.     CIA        /0 FOR WHOLE FIELD
  331.     DCA    BC    /MINUS TOTAL NUMBER OF WORDS
  332.     ISZ    SYS    /NEXT
  333.     TAD I    SYS    /IS BUFFER ADDRESS
  334.     DCA    BUF
  335.     ISZ    SYS    /NEXT
  336.     TAD    L175    /CARRY WITH DENSW IF SINGLE DENSITY
  337.     TAD    DENSW    /BLOCK # TO SECTOR #
  338.     SMA CLA        /SKIP IF DOUBLE, MULTIPLY BY 2
  339.     TAD I    SYS    /SINGLE, MULTIPLY BY FOUR
  340.     TAD I    SYS    /SKIP ON ILLEGAL NEGATIVE BLOCK #, FORCE LINK ON LATER
  341.     ISZ    SYS    /MOVE POINTER TO ERROR EXIT
  342.     CLL RAL
  343.     DCA    REC    /SAVE SECTOR NUMBER
  344.     SZL        /SKIP IF LEGAL BLOCK #
  345.     JMP    ERREX    /FORCE SIZING OF DISK TO RETURN SIZE IN AC
  346.     JMS I    ENTRY    /CALL DIVISION SUBROUTINE OTHER PAGE
  347.     TAD    FN    /SPLIT READ AND WRITE
  348.     RTR        /READ-WRITE BIT TO LINK
  349.     SZL CLA        /WRITE SKIPS
  350.     JMP    STREAD    /READ GOES TO START IN MIDDLE OF LOOP
  351. /            /WRITE FALLS THRU TO NEXT LISTING PAGE
  352. /WRITE FALLS THRU TO THIS LOOP
  353. /
  354. /  TOP OF MAIN LOOP
  355. /
  356. TOP,    TAD    FN    /SET SILO TO LOAD-UNLOAD
  357.     LCD        /COMMAND TO CONTROLLER
  358.     TAD    DENSW    /MAKE SILO LOOP COUNT, S=7700, D=7600
  359.     DCA    FLPWC    /LDCMD ENTRY SAFE TEMPORARY
  360. BUFCDF,    HLT        /CDF TO BUFFER FIELD PLACED HERE
  361. TRLOOP,    JMS    WAIT    /WAIT FOR STR
  362.     SKP
  363.     JMP    ERRSET
  364.     TAD I    BUF    /IN CASE WRITE, FETCH A WORD
  365.     XDR        /TO OR FROM AC
  366.     DCA I    BUF    /PLACE WORD FOR READ, WRITE REPLACES SAME
  367.     ISZ    BUF    /MOVE BUFFER POINTER, (MAY SKIP)
  368. REMD,    0        /DIVIDE REMAINDER, WHICH IS SECTOR NUMBER
  369.     ISZ    FLPWC    /DONE YET
  370.     JMP    TRLOOP
  371.     JMS    WAIT    /WAIT FOR DONE
  372.     JMP    ERRSET
  373.     TAD    DENSW    /ADDING 77 (SINGLE) 177 (DOUBLE)
  374.     CMA        /ONCE WE CMA, THAT IS
  375.     TAD    BC    /LOOP CONTROL TO FINISH READ
  376.     SNA
  377.     JMP    OKEX    /OK, DONE
  378.     DCA    BC    /REPLACE AND KEEP GOING
  379. /
  380. /  MIDDLE OF MAIN LOOP
  381. /
  382. STREAD,    CLA CLL IAC RTL    /KNOWN TO BE A 78, SO THIS WORKS! FOR LITERAL 4
  383.     TAD    FN    /TURNING SILO COMMAND INTO READ-WRITE COMMAND
  384.     LCD        /I/O COMMAND TO CONTROLLER
  385.     JMS    WAIT    /WAIT FOR STR
  386.     SKP
  387.     JMP    ERRSET
  388.     TAD    REMD    /PRECOMPUTED SECTOR #
  389.     XDR
  390. L7600,    7600        /CLEAR AC, AND IS LITERAL
  391.     JMS    WAIT    /WAIT FOR STR
  392.     SKP
  393.     JMP    ERRSET
  394.     TAD    QUO    /TRACK #
  395.     XDR        /TRACK # IS ALWAYS NON0 !!
  396.     ISZ    REC    /MOVE TO NEXT RECORD NUMBER
  397.     JMS I    ENTRY    /DO TRACK SECTOR FOR NEXT OPERATION
  398.     JMS    WAIT    /WAIT FOR DONE
  399.     JMP    ERRSET
  400.     ISZ    BC    /CHECK FOR WRITE EXIT
  401.     JMP    TOP    /STILL MORE
  402. OKEX,    ISZ    SYS    /KICK TO OK EXIT
  403.     SKP
  404. ERREX,    TAD    SIZE    /RETURN -SIZE OF DEVICE
  405. SELBAK,    DCA    REMD
  406.     JMS    SELECT    /AC NOW 0 TO FORCE SELECT OF FIRST PAIR
  407.     TAD    REMD
  408. EXFLD,    HLT        /CDF CIF TO CALLER
  409.     JMP I    SYS    /OUT
  410. WAIT,    0
  411.     STR
  412.     SKP
  413.     JMP I    WAIT    /IF XFER FLAG IS SET RETURN TO CALLER +1
  414.     SDN        /TEST DONE FLAG
  415.     JMP    WAIT+1    /LOOP UNTIL STR OR SDN SETS
  416.     ISZ    WAIT    /DONE SET, SET UP RETURN TO CALLER +2
  417.     SER        /CHECK FOR AN ERROR
  418.     JMP    MONCHK    /NO ERROR, CHECK K.B.
  419. ERRSET,    AC4000
  420.         ISZ     RETRY   /TRY THREE TIMES?
  421.         JMS I   ENTRY   /NO, AC NEGATIVE SAYS RETRY NOT DIVIDE!!
  422.         JMP     SELBAK  /SELECT BACK TO FIRST PAIR
  423.  
  424. MONCHK,    CLL CLA
  425.  
  426. IFNZRO    NOCHK < KSF    /IS K.B. FLAG SET >
  427. IFZERO    NOCHK < NOP              >
  428.  
  429.     JMP I    WAIT    /NO, RETURN TO CALLER
  430.     KRB        /YES, GET THE CHARACTER
  431.     TAD    LM3    /AND CHECK FOR CTRL C
  432.     SZA CLA
  433.     JMP I    WAIT    /NO CTRL C FOUND RETURN TO CALLER
  434.     JMS    SELECT
  435. LLCDF0,    CDF 0        /CTRL C FOUND RETURN TO SYSTEM
  436.     JMP I    L7600
  437.  
  438. FLPWC=.
  439. SELECT, VCOUNT
  440.     SEL
  441.     SDN
  442. L70,    70
  443. L175,    175
  444.     JMP I    SELECT
  445. LM3,    -3
  446.         PAGE
  447.  
  448.