 BPO      SPACE  4,10
**        BPO - BEGIN PRIORITY OUTPUT.
*
*         SAVE SCREEN POSITION AND ISSUE FUNCTION TO TELL THE
*         CONSOLE TO DO THE SAME. PROCESS THE SCREEN SELECT.
*
*         EXIT   TO *SMPX* IF PREVIOUS OUTPUT INCOMPLETE.
*                TO *CKQ* IF FUNCTION ACTED UPON.
*
*         RESETS RTNP.  TO   PCO.
*
*         CALLS  TCD.
*
*         USES   BP.


 BPO      BSS    0
          LDM    SCMT+CHRC.
          ZJN    BPO1        IF MUX IS FREE
          LJM    SMPX        RETURN

 BPO1     LDM    SCMT+XPOS.
          STM    SCMT+SAVE.  SAVE CURRENT X POSITION
          LDM    SCMT+YPOS.
          STM    SCMT+SAVE.+1  SAVE CURRENT Y POSITION
          LDM    SCMT+SCRN.
          STM    SCMT+SAVE.+2  SAVE SCREEN OFFSET
          LDM    SCMT+CMOV.
          STM    SCMT+SAVE.+3  SAVE POSITION CHANGED FLAG
          LDC    PCO         PRIORITY CHANNEL OUTPUT
          STI    PT          INTO RTNP.
          LDN    0#1F
          STIAO  BP          ADD TO CHARACTER QUEUE
          LDML   SCMT+DATA.
          RJM    TCD         TRANSLATE CHANNEL DATA
          LJM    CKQ         UPDATE CHARACTER QUEUE AND RETURN
 PCO      SPACE  4,10
**        PCO - PRIORITY CHANNEL OUTPUT.
*
*         TRANSLATE CHANNEL DATA FOR THE CONSOLE UNTIL A NON-PRIORITY
*         FUNCTION IS FOUND WHEN IT RESTORES THE SCREEN POSITION
*         AND ISSUES A FUNCTION TO TELL THE CONSOLE TO DO THE SAME.
*
*         EXIT   TO *SMPX* IF CHARACTERS TO BE OUTPUT.
*                TO *TFN* IF VALID FUNCTION FOUND.
*
*         USES   BP.
*
*         CALLS  TCD.


 PCO      BSS    0           PRIORITY CHANNEL OUTPUT
          LDM    SCMT+CHRC.
          ZJN    PCO0        IF MUX IS FREE
          LJM    SMPX        RETURN

 PCO0     LDM    SCMT+NCCH.  ADJUST CHANNEL NUMBER
          STD    T0
          LMC    TSJMI
          STML   PCO1
          LDD    T0
          LMC    EJMI
          STM    PCOB
          LDD    T0
          LMC    IANI
          STM    PCOC
 PCO1     FSJM   SMPX,CH     IF CHANNEL NOT FREE
 PCOB     EJM    SMPX,CH     IF NO DATA ON CHANNEL
 PCOC     IAN    CH
          STML   SCMT+TEMP.  SAVE CHANNEL DATA
          SHN    21-17
          MJN    PCO3        IF 7000 FUNCTION
 PCO2     LDML   SCMT+TEMP.  PROCESS CHANNEL DATA
          RJM    TCD         TRANSLATE CHANNEL DATA
          LDD    BP          CURRENT CHARACTER BUFFER POSITION
          SBD    BA
          ZJN    PCO1        IF NO CHARACTERS TO OUTPUT
          LJM    CKQ         PLACE CHARACTERS INTO OUTPUT AND RETURN

 PCO3     SHN    21-14-21+17
          MJN    PCO4        IF SPECIAL FUNCTION
          SHN    21-6-21+14
          MJN    PCO2        IF PRIORITY FUNCTION
          LDM    SCMT+SAVE.  RESTORE POSITIONING INFORMATION
          STM    SCMT+XPOS.
          LDM    SCMT+SAVE.+1
          STM    SCMT+YPOS.
          LDM    SCMT+SAVE.+2
          STM    SCMT+SCRN.
          LDM    SCMT+SAVE.+3
          STM    SCMT+CMOV.
          LDN    0#1A        GET TERMINAL OUT OF PRIORITY OPERATION
          STIAO  BP
          LDC    PCO4        NEED TO OUTPUT END PRIORITY
          STI    PT
          LJM    CKQ         OUTPUT FUNCTION AND RETURN

 PCO4     LDM    SCMT+CHRC.  TEST IF OUTPUT IS DONE
          ZJN    PCO5        IF FINISHED
          LJM    SMPX        ELSE RETURN

 PCO5     LDML   SCMT+TEMP.
          SHN    21-17
          LJM    TFN         TRANSLATE FUNCTION
 TAD      SPACE  4,10
**        TAD - TRANSLATE ASCII TO DISPLAY.
*
*         ENTRY  (A) = ASCII CHARACTER.
*
*         EXIT   (A) = DISPLAY CODE TRANSLATION.
*
*         USES   T2.


 TAD1     LDC    100

 TAD      SUBR               ENTRY/EXIT
          LPC    0#7F        IGNORE PARITY
          ZJN    TADX        NOTHING TO TRANSLATE
          SBN    0#08
          MJN    TAD1        IF ILLEGAL CHARACTER
          STD    T2
          SBN    0#40-0#08
          MJN    TAD2
          LPN    37          IGNORE UPPER/LOWER CASE
          UJN    TADX        RETURN

 TAD2     LDM    ATDC,T2     FETCH SPECIAL CHARACTER
          UJN    TADX        RETURN
 TCD      SPACE  4,10
**        TCD - TRANSLATE CHANNEL DATA.
*
*         ENTRY  (A) = CHANNEL DATA.
*
*         EXIT   (BP) = ADVANCED FOR EACH CHARACTER TO BE OUTPUT.
*
*         USES   BP, T2.
*
*         CALLS  SCP.


 TCD1     LDC    100         SET BIAS FOR SPECIAL CHARACTER TRANSLATION
          STM    SCMT+TTOF.
          LJM    TCDX        RETURN

 TCD2     SHN    0-4
          STD    T2
          SHN    21-17-0+4
          MJN    TCD4        IF SCREEN SELECT
          RJM    SCP         SET CURSOR POSITION
          LDM    VKXF,T2
          ZJN    TCD3        IF NO FUNCTION
          STIAO  BP
 TCD3     LDD    T2
          SBN    5
          ZJN    TCD1        IF SPECIAL CHARACTER NEXT
          LJM    TCDX        RETURN

 TCD4     SHN    6-12-21+17
          LPC    0#40
          STM    SCMT+SCRN.
          LDN    4
          STM    SCMT+YPOS.  RESET CURSOR TO UPPER PAGE
          LJM    TCD8        SET CURSOR MOVED AND RETURN

 TCD5     ADC    -10000+7000
          PJN    TCD2        IF SPECIAL FUNCTION
          ADN    10000-7764
          PJN    TCD6        IF ABOVE SCREEN
          LMC    -1          COMPLEMENT
          SHN    -1          DIVIDE BY 2
          STD    T3          DIVIDE BY 5
          SHN    1
          ADD    T3
          SHN    2
          ADD    T3
          SHN    22-6
          STD    T0
          SHN    6+2
          SBD    T3
          ADD    T0
 TCD6     SHN    -10
          STM    SCMT+YPOS.  SET Y COORDINATE
          UJN    TCD8        RETURN

 TCD7     STD    T3          SAVE POSSIBLE X COORDINATE
          ADC    -7000+6000
          PJN    TCD5        IF NOT AN X COORDINATE
          LDD    T3          GET X COORDINATE
          SHN    -3
          STM    SCMT+XPOS.
 TCD8     AOM    SCMT+CMOV.

 TCD      SUBR               ENTRY/EXIT
          STML   SCMT+TEMP.
          ADC    -6000
          PJN    TCD7        IF FUNCTION
          RJM    SCP         SET CURSOR POSITION
          LDM    SCMT+TEMP.
          SHN    -6          DECODE UPPER CHARACTER
          STD    T2
          LDM    DCTA,T2
          STIAO  BP
          LDM    SCMT+TEMP.  DECODE LOWER CHARACTER
          LPN    77
          ADM    SCMT+TTOF.  OFFSET FOR SPECIAL CHARACTERS
          STD    T2
          LDM    DCTA,T2
          STIAO  BP
          LDN    0           CLEAR TABLE OFFSET
          STM    SCMT+TTOF.
          LDN    2           INCREMENT X POSITION
          RAM    SCMT+XPOS.
          LJM    TCDX        RETURN
 TFN      SPACE  4,10
**        TFN - TRANSLATE FUNCTION.
*
*         ENTRY  (A) = CHANNEL DATA SHIFTED 21-17.
*
*         USES   T2, T3.
*
*         CALLS  RMT.


 TFN      BSS    0           ENTRY
          SHN    21-14+17-21
          PJP    TFN3        IF CC545 TYPE FUNCTION
          SHN    0-4+14-21
          LPN    3           PICK OUT SUB FUNCTION
          SBN    1
          NJN    TFN1        IF NOT UPDATE MODE FUNCTION
          STM    SCMT+DATA.  CLEAR OLD FUNCTION
          LDM    SCMT+NCCH.  ADJUST CHANNEL NUMBER
          LMC    IAMI
          STM    TFNA
          LDN    2
 TFNA     IAM    T2,CH       READ IN ADDRESS OF TABLE
          CALL   RMT         RESET MODE TABLE

 TFN1     SBN    2-1
          NJN    TFN2        IF NOT GET OFF CHANNEL
          LDM    SCMT+NCCH.  ADJUST CHANNEL NUMBER
          LMC    SCFI
          STM    TFNB
 TFNB     SCF    SMPX,CH
 TFN2     LJM    CKQ         RETURN

 TFN3     SHN    21-10+14-21
          PJN    TFN4        IF NOT INPUT FUNCTION
          LDN    S.WFK
          UJN    TFN6        CALL NEW FUNCTION

 TFN4     SHN    21-6-21+10
          MJN    TFN5        IF PRIORITY OUTPUT
          LDN    S.NIO
          UJN    TFN6        SET NORMAL OUTPUT

 TFN5     LDN    S.PIO
 TFN6     ADM    SCMT+RTNL.  SET ROUTINE INDEX
          STD    T2
          LDI    T2          FETCH NEW ROUTINE ADDRESS
          STI    PT          SET IN RTNP.
          STD    T3
          LDML   SCMT+TEMP.
          STML   SCMT+DATA.  SAVE POSSIBLE OUTPUT FUNCTION
          LJM    0,T3        CALL NEW FUNCTION
 ATDC     SPACE  4,10
**        ATDC - ASCII TO DISPLAY CODE TRANSLATION TABLE.


 ATDC     BSS    0
          DATA   061,100,100,100,100,060,100,100     0#08 - 0#0F
          DATA   100,100,100,100,100,055,100,100     0#10 - 0#17
          DATA   100,053,100,100,100,100,100,061     0#18 - 0#1F
          DATA   062,000,000,000,053,000,000,000     0#20 - 0#27
          DATA   051,052,047,045,056,046,057,050     0#28 - 0#2F
          DATA   033,034,035,036,037,040,041,042     0#30 - 0#37
          DATA   043,044,063,000,000,054,000,000     0#38 - 0#3F
 DCTA     SPACE  4,10
**        DCTA - DISPLAY CODE TO ASCII TRANSLATION TABLE.


 DCTA     BSS    0

*         NORMAL CHARACTERS - *TTOF.* = 0.

          DATA   0#00,0#41,0#42,0#43,0#44,0#45,0#46,0#47      00 - 07
          DATA   0#48,0#49,0#4A,0#4B,0#4C,0#4D,0#4E,0#4F      10 - 17
          DATA   0#50,0#51,0#52,0#53,0#54,0#55,0#56,0#57      20 - 27
          DATA   0#58,0#59,0#5A,0#30,0#31,0#32,0#33,0#34      30 - 37
          DATA   0#35,0#36,0#37,0#38,0#39,0#2B,0#2D,0#2A      40 - 47
          DATA   0#2F,0#28,0#29,0#20,0#3D,0#20,0#2C,0#2E      50 - 57
          DATA   0#00,0#00,0#00,0#00,0#00,0#00,0#00,0#00      60 - 67
          DATA   0#00,0#00,0#00,0#00,0#00,0#00,0#00,0#00      70 - 77

*         SPECIAL CHARACTERS - *TTOF.* = 100.

          DATA   0#3A,0#41,0#42,0#43,0#44,0#45,0#46,0#47      00 - 07
          DATA   0#48,0#49,0#4A,0#4B,0#4C,0#4D,0#4E,0#4F      10 - 17
          DATA   0#50,0#51,0#52,0#53,0#54,0#55,0#56,0#57      20 - 27
          DATA   0#58,0#59,0#5A,0#30,0#31,0#32,0#33,0#34      30 - 37
          DATA   0#35,0#36,0#37,0#38,0#39,0#2B,0#2D,0#2A      40 - 47
          DATA   0#2F,0#28,0#29,0#24,0#3D,0#20,0#2C,0#2E      50 - 57
          DATA   0#23,0#5B,0#5D,0#25,0#22,0#5F,0#21,0#26      60 - 67
          DATA   0#27,0#3F,0#3C,0#3E,0#40,0#5C,0#5E,0#3B      70 - 77
 VKXF     SPACE  4,10
**        VKXF - TRANSLATION TABLE OF SPECIAL FUNCTIONS TO THE CONSOLE.


 VKXF     BSS    0
          DATA   0#1B,0#18   400, 401
          DATA   0#19,0#17   402, 403
          DATA   0#04,0#00   404, 405
          DATA   0#01,0#03   406, 407
          DATA   0#06,0#15   410, 411
          DATA   0#0E,0#0F   412, 413
          DATA   0#1C,0#1D   414, 415
          DATA   0#10,0#14   416, 417
          DATA   0           420
