From: Andre Cass <proteus@unisys.com.br>
Date: Sat, 31 Aug 96 11:42:20 -0700
To: Tormod.Volden@etud.insa-tlse.fr
Subject: rpl sys terminal source code
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset=us-ascii

* HERE IS A  TERMINAL IN FULL SYS RPL; IS VERY FAST!
* YOU CAN CONNECT TO A REMOTE COMPUTER IF YOU ARE USYING AN EXTERNAL MODEM
* ON THE SERIAL PORT. FOR DIAL JUST DIGIT "AT&P NUMBER ENTER" FOR PULSE
* AND "AT&T NUMBER ENTER" FOR TONE LINE.
* by andrew cass


INCLUDE TLROMID.H
INCLUDE TLEXTDEC.H
*INCLUDE INCLUDES\DISPLAY.H
*INCLUDE INCLUDES\OBJECTS.H
*INCLUDE INCLUDES\MEMORY.H
*INCLUDE INCLUDES\ARRAY.H
*INCLUDE INCLUDES\CONTROL.H
INCLUDE INCLUDES\KEYDEFS.H
INCLUDE INCLUDES\RPL_42.H

DEFINE CRLF 13 #>CHR CHR>$  ( 10 #>CHR CHR$ &$ )
DEFINE CRLF 1 POS$

NULLNAME IOEXEC
::
 INICPORTS
 REFRESHDISP 
 FALSE
 TRUE
 NULL$
 DUP
 3
 { LAM EXIT? LAM USCASE? LAM MESSAGE LAM RECEIVED LAM FONTSIZE }
 BIND
 ID FONT
 DUPTYPEREAL?
 ITE :: COERCE ' LAM FONTSIZE STOLAM ; :: DROP ;
 BEGIN
  ATTN? ITE :: ATTNFLGCLR TRUE ' LAM EXIT? STOLAM ; :: GETTOUCH IT SEND ;
  BEGIN ANYIO? WHILE COLECT$ REPEAT ( IN CASE THAT YOU CAN'T USE XON XOFF 
)
  FORMAT$ PRINT$                    ( THE WHILE LOOP WILL COLECT THE IO )
                                    ( BUFFER BEFORE PRINT ON THE SCREEN )
  LAM EXIT?
  UNTIL
  ABND
  ENDPORTS
  REFRESHDISP
 ; 

NULLNAME UCASE
::
 { 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
   13 89 90 0 8 0 55 56 57 92 0 52 53 54 42 0 49 50 51 45 0 48 46 32 43 }
;

NULLNAME LOCASE
::
 { 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 
115
   116 117 118 119 120 13 121 122 0 8 0 55 56 57 92 0 52 53 54 42 0 49 50 
   51 45 0 48 46 32 43 }
;

NULLNAME INICPORTS
::
 OpenIOPrt
;

NULLNAME ENDPORTS
::
 CLOSEUART
;

NULLNAME ANYBUFFER$?
::
 LAM RECEIVED LEN$ 0 #> 
;

NULLNAME ANYIO?
::
 DOBUFLEN DROP
 DUP %0 %> ITE TRUE :: DROP FALSE ;
;

NULLNAME COLECT$
::
 DOSRECV DROP LAM RECEIVED SWAP&$
 ' LAM RECEIVED STOLAM
;

NULLNAME CUTNL$
::
 LAM MESSAGE CRLFPOS$
 { LAM N }
 BIND
  LAM MESSAGE DUP LAM N #1+ OVELLEN$ SUB$SWAP
  LAM N 1_#1-SUB$
 ABND
;

NULLNAME FORMAT$
::
 LAM MESSAGE LEN$ 21 #> 
 IT :: SCROLL NULL$ ' LAM MESSAGE STOLAM ;
 LAM MESSAGE LAM RECEIVED &$ ' LAM MESSAGE STOLAM
 LAM MESSAGE CRLFPOS$
 DUP 0 #> SWAP 22 #< AND 
 ITE
  ::
   CUTNL$ DUPLEN$ 22 SWAP #- Blank& &$
   ' LAM MESSAGE STOLAM ' LAM RECEIVED STOLAM
   ;
  ::
   LAM MESSAGE LEN$ 22 #> 
   ITE
    ::
      LAM MESSAGE DUP 1 22 SUB$ ' LAM MESSAGE STOLAM
      23 OVERLEN$ SUB$ ' LAM RECEIVED STOLAM
     ;
    ::
      NULL$ ' LAM RECEIVED STOLAM
     ;
   ; 
                          
  ;

NULLNAME PRINT$
::
 LAM FONTSIZE
 ::
  2 #=casedrop :: LAM MESSAGE 8 DISPN ;
  1 #=casedrop :: ZERO 57 LAM MESSAGE $>grob XYGROBDISP ;
  :: DROP LAM MESSAGE 5 BIGDISPN ;
 ;
;

NULLNAME SCROLL
::
 LAM FONTSIZE
 ::
  2#=casedrop :: ZEROZERO HARDBUFF 0 8 131 64 SUBGROB XYGROBDISP ;
  1#=casedrop :: ZEROZERO HARDBUFF 0 7 131 64 SUBGROB XYGROBDISP
                 ZERO 57 35 Blank$ $>grob XYGROBDISP
               ;
  :: DROP ZERO 6 HARDBUFF 0 16 131 56 SUBGROB XYGROBDISP ;
 ;
;

NULLNAME SEND
::
 DUP 50 #<
 ITE
  ::
    LAM UCASE? ITE UCASE LOCASE
    SWAP NTHCOMPDROP #>CHR CHR>$ IXMIT DROP
   ;
  ::
    DROP LAM UCASE? NOT ' LAM UCASE? STOLAM ( ANY SHIFT CHANGES CASE )
   ;
;

 



