FreeBSD termcap has:

dm2500|datamedia2500|2500|datamedia 2500:\
        :do=^J:al=15^P\n^X^]^X^]:le=^H:bs:ce=^W:cl=^^^^\177:\
        :cm=^L%r%n%.%.:co#80:dc=10*^P\b^X^]:dl=10*^P^Z^X^]:\
        :dm=^P:ed=^X^]:ei=10\377\377^X^]:ho=^B:ic=10*^P^\^X^]:\
        :im=^P:li#24:nc:nd=^\:pc=\377:so@=^N:se=^X^]:up=^Z:

(whatever THAT means!)

And in english (from an old copy of ITS TECO):

IFN DM2500,[
SUBTTL DM2500
 
DM25TB: 2000+24.,,79.
        (%TOERS+%TOMVB+%TOMVU+%TOLWR+%TOLID+%TOCID+%TOFCI)
        CALL DMCPS
        CALL DMCEOL
        CALL DMCEOL             ;CLOSEST WE CAN COME
        CALL DMCLRS
REPEAT 3, NOP
        CALL DMINSL
        CALL DMDELL
        CALL DMINSC
        CALL DMDELC
        CALL DMRST
 
DMCPS:  JUMPE B,[MOVEI A,^B     ;HOME IS EASY
                  PBOUT
                  RET]
        MOVEI A,^L              ;ELSE ^L<HPOS#140><VPOS#140>
        PBOUT
        HRRZ A,B
        XORI A,"`
        PBOUT
        HLRZ A,B
        XORI A,"`
DMCP2:  PBOUT
        RET
 
DMCEOL: MOVEI A,^W
        JRST DMCP2
 
DMCLRS: MOVEI A,^^
        PBOUT                           ;[
DMRST:  MOVEI A,^]                      ;RESTORE ROLL MODE
        JRST DMCP2
 
DMINSL: SAVE C
        SAVE B
        CALL DMINS1                     ;POSITION RIGHT AND ENTER I/D MODE
        MOVEI A,30.                     ;COMPUTE AMOUNT OF FILL NEEDED
        SUBI A,(BP)                     ;((30.-(BP))*OSPEED-2400.)/14400.
        SKIPN B,OSPEED                  ;SPEED OF OUTPUT
         MOVEI B,9600.                  ;ASSUME MAX IF UNKNOWN
        IMULI B,(A)
        SUBI B,2400.
        IDIVI B,14400.                  ;MAGIC NUMBER IN B
DMINS2: MOVEI A,^J                      ;INSERT A LINE
        PBOUT
        MOVEI A,177                     ;FILL CHARACTER
        SKIPE C,B                       ;GET NUMBER OF FILL CHARS NEEDED
         PBOUT
        SOJG C,.-1                      ;OUTPUT THAT MANY
        SOJG Q,DMINS2                   ;REPEAT FOR NUMBER OF LINES REQUESTED
        REST B
DMINS3: REST C
        MOVEI A,^X
        JRST DMCP2
 
DMDELL: SAVE C
        CALL DMINS1
DMDEL2: MOVEI A,^Z                      ;DELETE A LINE
        PBOUT
        MOVEI A,177                     ;ONE FILL CHAR
        SKIPE C,OSPEED
         CAIL C,9600.
         PBOUT                          ;ONLY FOR 9600 BAUD OR MORE THOUGH
        SOJG Q,DMDEL2
        JRST DMINS3
 
DMINS1: HRROI A,[.BYTE 7 ? ^L ? "` ? 0]
        PSOUT
        MOVEI A,140(BP)
        PBOUT
        MOVEI A,^P
        PBOUT
        RET

DMINSC: SAVE C
        HRROI A,[.BYTE 7 ? ^P ? ^\ ? ^X ? 0]
        SKIPE C,OSPEED
         CAIL C,9600.           ;IF AT 9600 OR MORE,
         HRROI A,[.BYTE 7 ? ^P ? 40 ? 177 ? ^X ? ^H ? 40 ? ^H]  ;USE HAIRY ONE
        PSOUT
        REST C
        SOJG Q,DMINSC
        RET
 
DMDELC: HRROI A,[.BYTE 7 ? ^P ? ^H ? 0]
        PSOUT
        SAVE C
        MOVEI A,177
        SKIPE C,OSPEED
         CAIL C,9600.           ;IF AT 9600 OR MORE,
         PBOUT                  ;NEED ONE FILL CHAR
        JRST DMINS3
]       ;DM2500

Reply via email to