home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / b / krtmac.min < prev    next >
Text File  |  2020-01-01  |  5KB  |  359 lines

  1.     .sbttl    KRTMAC.MIN  Various handy constants and macros
  2.     .ident    "V03.62"
  3.  
  4. ; /62/    31-May-93  Billy Youdelman
  5.  
  6. ;    Brian Nelson  01-Dec-83  13:56:12
  7.  
  8.     .NLIST    BEX
  9.     .LIST    MEB
  10.  
  11.     KRTINC    =    1
  12.  
  13.     .psect    $code    ,ro,i,lcl,rel,con
  14.     .psect    $pdata    ,ro,d,lcl,rel,con
  15.  
  16.     SOH    = 1
  17.     BELL    = 7
  18.     BS    = 10
  19.     TAB    = 11
  20.     LF    = 12
  21.     FF    = 14
  22.     CR    = 15
  23.     CTRL$N    = 16
  24.     CTRL$O    = 17
  25.     XON    = 'Q&37
  26.     ESC    = 33
  27.     SPACE    = 40
  28.     COMMA    = 54
  29.     DEL    = 177
  30.  
  31.     JSW    = 44
  32.     ERRBYT    = 52
  33.  
  34.     P.SPSIZ    = 0
  35.     P.TIME    = 1
  36.     P.NPAD    = 2
  37.     P.PADC    = 3
  38.     P.EOL    = 4
  39.     P.QCTL    = 5
  40.     P.QBIN    = 6
  41.     P.CHKT    = 7
  42.     P.REPT    = 10
  43.     P.CAPAS    = 11
  44.         CAPA.A    = 10
  45.         CAPA.S    = 4
  46.         CAPA.L    = 2
  47.     P.WINDS    = 12
  48.     P.MXL1    = 13
  49.     P.MXL2    = 14
  50.     P.VEND    = 17
  51.  
  52.     LOG$PA    = 1
  53.     LOG$IO    = 10
  54.     LOG$AL    = LOG$PA
  55.     LOG$OP    = 100000
  56.  
  57.     PAR$NO    =: 0
  58.     PAR$OD    =: 1
  59.     PAR$EV    =: 2
  60.     PAR$MA    =: 3
  61.     PAR$SP    =: 4
  62.  
  63.     TERMINAL=: -1
  64.     TEXT    =:  0
  65.     BINARY    =:  1
  66.     DECNAT    =:  2
  67.  
  68.     NOSCOPE    = 0
  69.     TTY    = 1
  70.     VT100    = 2
  71.     VT200    = 3
  72.  
  73.     C.CRLF    = 4
  74.     C.LSPA    = 10
  75.     C.SSPA    = 20
  76.     C.LCUC    = 40
  77.     C.TSPA    = 200
  78.  
  79.     ERBFSIZ    = 120.
  80.  
  81.     LN$MAX    =  80.
  82.     LN$CNT    =   3.
  83.  
  84.     MAXPAK    ==: 94.
  85.     MAXLNG    ==  1920.
  86.     $ALLSIZ    = <MAXLNG+14>&177776
  87.  
  88.  
  89.     .sbttl    Utility macros
  90.  
  91.     .macro    .chksp    arg
  92.     .ntype    $$5    ,arg
  93.     .iif eq <<$$5&7>-6> .error arg <; Illegal use of SP (r6) in call>
  94.     .endm    .chksp
  95.  
  96.     .macro    calls    name    ,arglst
  97.     $$ = 0
  98.       .irp x ,<arglst>
  99.       $$ = $$+1
  100.       .endr
  101.     .if eq $$
  102.     jsr    pc    ,name
  103.     .iff
  104.     push    r5
  105.       .if eq $$-1
  106.       .chksp    arglst
  107.       mov    arglst    ,-(sp)
  108.       mov    sp    ,r5
  109.       jsr    pc    ,name
  110.       tst    (sp)+
  111.       pop    r5
  112.       .iff
  113.       $$2 = $$
  114.         .rept    $$
  115.         $$1 = 0
  116.           .irp x ,<arglst>
  117.           $$1 = $$1+1
  118.             .if eq $$2-$$1
  119.             .chksp    x
  120.             mov    x    ,-(sp)
  121.             .mexit
  122.             .endc
  123.           .endr
  124.         $$2 = $$2-1
  125.         .endr
  126.       mov    sp    ,r5
  127.       jsr    pc    ,name
  128.       .iif eq <$$-2>  cmp    (sp)+    ,(sp)+
  129.       .iif gt <$$-2>  add    #$$*2    ,sp
  130.       pop    r5
  131.       .endc
  132.     .endc
  133.     .endm    calls
  134.  
  135.     .macro    copyz    from ,to ,maxlen
  136.     .if  b    <maxlen>
  137.     clr    -(sp)
  138.     .iff
  139.     mov    maxlen    ,-(sp)
  140.     .endc
  141.     mov    from    ,-(sp)
  142.     mov    to    ,-(sp)
  143.     call    copyz$
  144.     .endm    copyz
  145.  
  146.     .macro    ctl    src ,dst
  147.     clr    -(sp)
  148.     bisb    src    ,@sp
  149.     call    l$xor
  150.     movb    (sp)+    ,dst
  151.     .endm    ctl
  152.  
  153.     .macro    deccvt    val ,buf ,width
  154.     mov    r5    ,-(sp)
  155.     .if  b    <width>
  156.     clr    -(sp)
  157.     .iff
  158.     mov    width    ,-(sp)
  159.     .endc
  160.     mov    val    ,-(sp)
  161.     mov    buf    ,-(sp)
  162.     mov    sp    ,r5
  163.     call    l$cvtnum
  164.     add    #6    ,sp
  165.     mov    (sp)+    ,r5
  166.     .endm    deccvt
  167.  
  168.     .macro    decout    val
  169.     mov    r5    ,-(sp)
  170.     mov    val    ,-(sp)
  171.     mov    sp    ,r5
  172.     call    l$wrdec
  173.     mov    (sp)+    ,r5
  174.     .endm    decout
  175.  
  176.     .macro    direrr    val
  177.     mov    val    ,-(sp)
  178.     call    direr$
  179.     .endm    direrr
  180.  
  181.     .macro    incm64    val
  182.     inc    val
  183.     bic    #^c77    ,val
  184.     .endm    incm64
  185.  
  186.     .macro    indexm    reg
  187.     .ntype    $$$0    ,reg
  188.     .if  ne    $$$0-27
  189.     $$$0 =    <$$$0&177770>/10
  190.     .ift
  191.       .if  ge $$$0-2
  192.       .iif ge <5-$$$0> .error      <; Can't use auto inc/dec mode here>
  193.       .endc
  194.     .endc
  195.     .endm    indexm
  196.  
  197.     .macro    ixor    reg ,dst
  198.     .chksp    reg
  199.     .chksp    dst
  200.     indexm    reg
  201.     indexm    dst
  202.     mov    reg    ,-(sp)
  203.     bic    dst    ,@sp
  204.     bic    reg    ,dst
  205.     bis    (sp)+    ,dst
  206.     .endm    ixor
  207.  
  208.     .macro    message    txt ,docr
  209.     .if  b    <txt>
  210.     .newline
  211.     .iff
  212.     .list me
  213.     .save
  214.     .psect    $pdata
  215.     $$ = .
  216.     .asciz    @txt@
  217.     .even
  218.     .restore
  219.     wrtall    #$$
  220.     .nlist me
  221.     .endc
  222.     .if  nb <txt>
  223.     .iif nb <docr>    .newline
  224.     .endc
  225.     .endm    message
  226.  
  227.     .macro    .newline
  228.     call    l$pcrlf
  229.     .endm    .newline
  230.  
  231.     .macro    octout    val
  232.     calls    l$wroct    ,<val>
  233.     .endm    octout
  234.  
  235.     .macro    pop    reg
  236.     mov    (sp)+    ,reg
  237.     .endm    pop
  238.  
  239.     .macro    prsbuf    dst
  240.     mov    dst    ,r0
  241.     call    prsarg
  242.     .endm    prsbuf
  243.  
  244.     .macro    push    reg
  245.     mov    reg    ,-(sp)
  246.     .endm    push
  247.  
  248.     .macro    rpack    len.a ,pakn.a ,msg.a ,max.len
  249.     sub    #10    ,sp
  250.     mov    sp    ,r1
  251.     calls    rpack$    ,<msg.a,r1,max.len>
  252.     mov    (r1)+    ,len.a
  253.     mov    (r1)+    ,pakn.a
  254.     mov    @r1    ,r1
  255.     add    #10    ,sp
  256.     .endm    rpack
  257.  
  258.     .macro    save    list
  259.     .if  b    <list>
  260.      save    <r0,r1,r2,r3,r4,r5>
  261.     .iff
  262.     .irp    x ,<list>
  263.      mov    x    ,-(sp)
  264.     .endr
  265.     .endc
  266.     .endm    save
  267.  
  268.     .macro    scan    ch ,str
  269.     mov    str    ,-(sp)
  270.     clr    -(sp)
  271.     bisb    ch    ,@sp
  272.     call    scanch
  273.     .endm    scan
  274.  
  275.     .macro    setpar    src ,dst
  276.     movb    src    ,-(sp)
  277.     call    dopari
  278.     movb    (sp)+    ,dst
  279.     .endm    setpar
  280.  
  281.     .macro    spack    type ,pnum ,len ,msg
  282.     .if  b    <len>
  283.     .iif nb    <msg>    .error    <; bad call to SPACK macro>
  284.     calls    spack$    ,<type,pnum,#0,#null>
  285.     .iff
  286.     calls    spack$    ,<type,pnum,len,msg>
  287.     .endc
  288.     .endm    spack
  289.  
  290.     .macro    strcat    dst ,src
  291.     mov    src    ,-(sp)
  292.     mov    dst    ,-(sp)
  293.     jsr    pc    ,strcat
  294.     .endm    strcat
  295.  
  296.     .macro    strcpy    dst ,src
  297.     mov    src    ,-(sp)
  298.     mov    dst    ,-(sp)
  299.     jsr    pc    ,strcpy
  300.     .endm    strcpy
  301.  
  302.     .macro    strlen    string
  303.     mov    string    ,r0
  304.     call    l$len
  305.     .endm    strlen
  306.  
  307.     .macro    textsrc    text
  308.     .if  b    <text>
  309.     clr    getcroutine
  310.     clr    tgetaddr
  311.     .iff
  312.     mov    #tgetcr0,getcroutine
  313.     mov    text    ,tgetaddr
  314.     .endc
  315.     .endm    textsrc
  316.  
  317.     .macro    tochar    src ,dst
  318.     clr    -(sp)
  319.     bisb    src    ,@sp
  320.     add    #40    ,@sp
  321.     movb    (sp)+    ,dst
  322.     .endm    tochar
  323.  
  324.     .macro    unchar    src ,dst
  325.     clr    -(sp)
  326.     bisb    src    ,@sp
  327.     sub    #40    ,@sp
  328.     movb    (sp)+    ,dst
  329.     .endm    unchar
  330.  
  331.     .macro    unsave    list
  332.     .if b <list>
  333.     unsave    <r5,r4,r3,r2,r1,r0>
  334.     .iff
  335.     .irp    x ,<list>
  336.      mov    (sp)+    ,x
  337.     .endr
  338.     .endc
  339.     .endm    unsave
  340.  
  341.     .macro    upcase    s
  342.     mov    s    ,r0
  343.     call    upcase
  344.     .endm    upcase
  345.  
  346.     .macro    upone    s
  347.     mov    s    ,r0
  348.     call    upone
  349.     .endm    upone
  350.  
  351.     .macro    wrtall    arg
  352.     mov    arg    ,-(sp)
  353.     call    wrtall
  354.     .endm    wrtall
  355.  
  356.     .macro    xor    reg ,dst
  357.     ixor    reg    ,dst
  358.     .endm    xor
  359.