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

  1.     .title    KRTST1.MIN  SET command overlay one
  2.     .ident    "V03.62"
  3.  
  4. ; /62/    31-May-93  Billy Youdelman
  5.  
  6. ;    Copyright 1984 Change Software, Inc.
  7.  
  8.     .include "IN:KRTMAC.MIN"
  9.     .iif ndf  KRTINC  .error    <; .include for IN:KRTMAC.MIN failed>
  10.     .include "IN:KRTCDF.MIN"
  11.     .iif ndf  KRTCDF  .error     <; .include for IN:KRTCDF.MIN failed>
  12.  
  13.     $CMGLOB    = 0
  14.  
  15.  
  16.     .psect    $code
  17.     .sbttl    SET BLOCK_CHECK_TYPE
  18.     .enabl    lsb
  19.  
  20. set$bl::upcase    argbuf
  21.     calls    getcm0    ,<argbuf,#blklst>
  22.     tst    r0
  23.     bmi    110$
  24.     tst    wasnul
  25.     bne    110$
  26.     jsr    pc    ,@r1
  27.     mov    r1    ,setchkt
  28.     movb    r1    ,senpar+p.chkt
  29.     tst    infomsg
  30.     beq    100$
  31.     message    <You may need to SET BLO >
  32.     movb    r1    ,r0
  33.     call    writ1char
  34.     message    < on the other Kermit>,cr
  35. 100$:    clr    r0
  36. 110$:    return
  37.  
  38.     .dsabl    lsb
  39.  
  40.     command    blklst    ,1_CHARACTER_CHECKSUM    ,1    ,sbl$1
  41.     command    blklst    ,2_CHARACTER_CHECKSUM    ,1    ,sbl$2
  42.     command    blklst    ,3_CHARACTER_CRC_CCITT    ,1    ,sbl$3
  43.     command    blklst    ,CRC_CCITT        ,1    ,sbl$3
  44.     command    blklst
  45.  
  46. sbl$1:    movb    #'1    ,r1
  47.     return
  48.  
  49. sbl$2:    movb    #'2    ,r1
  50.     return
  51.  
  52. sbl$3:    movb    #'3    ,r1
  53.     return
  54.  
  55.  
  56.     .sbttl    SET FILE_TYPE
  57.     .enabl    lsb
  58.  
  59. set$fi::upcase    argbuf
  60.     calls    getcm0    ,<argbuf,#setfil>
  61.     tst    r0
  62.     bmi    10$
  63.     tst    wasnul
  64.     bne    10$
  65.     jsr    pc    ,@r1
  66. 10$:    return
  67.  
  68.     command    setfil    ,ASCII        ,2    ,sf$asc
  69.     command    setfil    ,AUTOMATIC    ,2    ,sf$aut
  70.     command    setfil    ,BINARY        ,1    ,sf$bin
  71.     command    setfil    ,CREATE_SIZE    ,2    ,srt$cr    ,<Blocks: >
  72.     command    setfil    ,CSI_PARSING    ,2    ,srt$cs
  73.     command    setfil    ,DEC_MULTINATIONAL,1    ,sf$dec
  74.     command    setfil    ,FIXED        ,1    ,sf$bin
  75.     command    setfil    ,IMAGE        ,1    ,sf$bin
  76.     command    setfil    ,NOPROTECT    ,3    ,sf$sup
  77.     command    setfil    ,NOREPLACE    ,2    ,sf$nos
  78.     command    setfil    ,NOVOLUME_VERIFY,3    ,srt$nv
  79.     command    setfil    ,PROTECT    ,1    ,sf$nos
  80.     command    setfil    ,REPLACE    ,1    ,sf$sup
  81.     command    setfil    ,TEXT        ,2    ,sf$asc
  82.     command    setfil    ,TYPE        ,2    ,sf$typ
  83.     command    setfil    ,VOLUME_VERIFY    ,1    ,srt$vo
  84.     command    setfil
  85.  
  86. sf$typ:    mov    argpnt    ,r0
  87. 20$:    tstb    @r0
  88.     beq    90$
  89.     cmpb    (r0)+    ,#space
  90.     bne    20$
  91.     mov    r0    ,argpnt
  92.     calls    getcm0    ,<r0,#setfil>
  93.     tst    r0
  94.     bmi    99$
  95.     tst    wasnul
  96.     bne    99$
  97.     jmp    @r1
  98. 90$:    mov    #er$bad    ,r0
  99. 99$:    return
  100.  
  101. sf$asc:    mov    #text    ,$image
  102.     clr    doauto
  103.     tst    infomsg
  104.     beq    100$
  105.     message    <ASCII text mode set>,cr
  106.     br    100$
  107.  
  108. sf$bin:    mov    #binary    ,$image
  109.     clr    doauto
  110.     tst    infomsg
  111.     beq    100$
  112.     message    <Binary mode set>,cr
  113.     call    xbin
  114.     br    100$
  115.  
  116. sf$dec:    mov    #decnat    ,$image
  117.     clr    doauto
  118.     tst    infomsg
  119.     beq    100$
  120.     message    <DEC_Multinational mode set>,cr
  121.     call    xbin
  122.     br    100$
  123.  
  124. sf$aut:    mov    sp    ,doauto
  125.     mov    #text    ,$image
  126.     tst    infomsg
  127.     beq    100$
  128.     message    <Auto ASCII/Binary mode set>,cr
  129.     call    xbin
  130.     br    100$
  131.  
  132. sf$sup:    clr    filprot
  133.     br    100$
  134.  
  135. sf$nos:    mov    sp    ,filprot
  136.     br    100$
  137.  
  138. xbin:    tst    parity
  139.     beq    100$
  140.     message    <Caution: Binary files will require 8-bit prefixing>,cr
  141. 100$:    clr    r0
  142.     return
  143.  
  144. srt$cr:    mov    argpnt    ,r1
  145. 112$:    tstb    @r1
  146.     beq    111$
  147.     cmpb    (r1)+    ,#space
  148.     bne    112$
  149.     calls    l$val    ,<r1>
  150.     tst    r0
  151.     bne    111$
  152.     mov    r1    ,en$siz
  153.     br    120$
  154. 111$:    mov    #er$bad    ,r0
  155. 120$:    return
  156.  
  157. srt$vo:    mov    sp    ,rtvol
  158.     clr    r0
  159.     return
  160.  
  161. srt$nv:    clr    rtvol
  162.     clr    r0
  163.     return
  164.  
  165. srt$cs:    mov    argpnt    ,r0
  166. 210$:    tstb    @r0
  167.     beq    290$
  168.     cmpb    (r0)+    ,#space
  169.     bne    210$
  170.     calls    getcm0    ,<r0,#cstype>
  171.     tst    r0
  172.     bmi    300$
  173.     tst    wasnul
  174.     bne    300$
  175.     jsr    pc    ,@r1
  176.     clr    r0
  177.     br    300$
  178. 290$:    mov    #er$bad    ,r0
  179. 300$:    return
  180.  
  181.     command    cstype    ,EMULATED    ,1    ,scs$em
  182.     command    cstype    ,REAL        ,1    ,scs$re
  183.     command    cstype
  184.  
  185. scs$re:    clr    csi.fake
  186.     return
  187.  
  188. scs$em:    mov    sp    ,csi.fake
  189.     return
  190.  
  191.     .dsabl    lsb
  192.  
  193.  
  194.     .sbttl    SET BINARY_TYPE
  195.     .enabl    lsb
  196.  
  197. set$bi::save    <r1,r2,r3>
  198.     strlen    bintyp
  199.     cmp    r0    ,#120.
  200.     ble    1$
  201.     mov    #er$bnl    ,r0
  202.     br    100$
  203. 1$:    sub    #100    ,sp
  204.     mov    sp    ,r3
  205.     clrb    @r3
  206.     upcase    argbuf
  207.     mov    argbuf    ,r2
  208.     cmpb    @r2    ,#'.
  209.     beq    10$
  210.     movb    #'.    ,(r3)+
  211.     clrb    @r3
  212. 10$:    mov    sp    ,r3
  213.     strcat    r3    ,r2
  214.     strlen    r3
  215.     mov    #4    ,r1
  216.     sub    r0    ,r1
  217.     beq    20$
  218.     bgt    11$
  219.     mov    #er$one    ,r0
  220.     br    99$
  221.  
  222. 11$:    mov    r3    ,r2
  223.     add    r0    ,r2
  224. 13$:    movb    #space    ,(r2)+
  225.     sob    r1    ,13$
  226.     clrb    @r2
  227. 20$:    mov    sp    ,r3
  228. 30$:    strcat    bintyp    ,r3
  229.     tst    infomsg
  230.     beq    90$
  231.     message    <The BINARY_TYPE list has been appended>,cr
  232. 90$:    clr    r0
  233. 99$:    add    #100    ,sp
  234. 100$:    unsave    <r3,r2,r1>
  235.     return
  236.  
  237.     .dsabl    lsb
  238.  
  239.  
  240.     .sbttl    ASSIGN, CWD, HOME
  241.     .enabl    lsb
  242.  
  243. c$assign::scan    #space    ,argbuf
  244.     tst    r0
  245.     beq    90$
  246.     add    argbuf    ,r0
  247.     clrb    -(r0)
  248.     tstb    (r0)+
  249.     bicb    #40    ,@r0
  250.     cmpb    (r0)+    ,#'D
  251.     bne    90$
  252.     bicb    #40    ,@r0
  253.     cmpb    (r0)+    ,#'K
  254.     bne    90$
  255.     tstb    @r0
  256.     beq    c$cwd
  257.     cmpb    (r0)+    ,#':
  258.     bne    90$
  259.     tstb    @r0
  260.     beq    c$cwd
  261.  
  262. 90$:    mov    #er$ass    ,r0
  263.     br    36$
  264.  
  265. c$cwd::    strlen    argbuf
  266.     cmp    r0    ,#4
  267.     ble    31$
  268. 30$:    mov    #er$dev    ,r0
  269.     br    36$
  270.  
  271. 31$:    add    argbuf    ,r0
  272.     cmpb    -(r0)    ,#':
  273.     beq    32$
  274.     inc    r0
  275.     movb    #':    ,(r0)+
  276.     clrb    (r0)
  277.  
  278. 32$:    upcase    argbuf
  279.     calls    fparse,<argbuf,#spare1>
  280.     tst    r0
  281.     beq    10$
  282.  
  283. 36$:    direrr    r0
  284.     br    100$
  285.  
  286. 10$:    copyz    #spare1    ,#defdir,#5
  287. 100$:    clr    r0
  288.     return
  289.  
  290.     .dsabl    lsb
  291.  
  292.  
  293.     .sbttl    SET HOME
  294.  
  295. set$ho::upcase    argbuf
  296.     strlen    argbuf
  297.     add    argbuf    ,r0
  298.     cmpb    -1(r0)    ,#':
  299.     beq    37$
  300.     movb    #':    ,(r0)+
  301.     clrb    @r0
  302.  
  303. 37$:    sub    argbuf    ,r0
  304.     cmp    r0    ,#4
  305.     ble    39$
  306.     mov    #er$iln    ,r0
  307.     return
  308.  
  309. 39$:    copyz    argbuf    ,#dkname,#5
  310. 100$:    clr    r0
  311.     return
  312.  
  313.  
  314.     .sbttl    SET SEND, RECEIVE
  315.     .enabl    lsb
  316.  
  317. set$rc::mov    #reclst    ,r3
  318.     br    200$
  319. set$sn::mov    #senlst    ,r3
  320. 200$:    upcase    argbuf
  321.     calls    getcm0    ,<argbuf,r3>
  322.     tst    r0
  323.     bmi    300$
  324.     tst    wasnul
  325.     bne    300$
  326. 220$:    calls    getcm1    ,<argbuf,r3,r0>
  327.     tst    r0
  328.     bmi    300$
  329.     jsr    pc    ,@r1
  330. 300$:    return
  331.  
  332.     .dsabl    lsb
  333.  
  334.     command reclst    ,PACKET_LENGTH    ,1    ,str$pl    ,<Value: >
  335.     command reclst    ,START_OF_PACKET,1    ,str$so    ,<Octal 1-36: >
  336.     command    reclst    ,TIME_OUT    ,1    ,str$ti    ,<Seconds: >
  337.     command reclst
  338.  
  339.     command    senlst    ,NOXON        ,1    ,sts$nx
  340.     command    senlst    ,PACKET_LENGTH    ,3    ,sts$pl    ,<Value: >
  341.     command    senlst    ,PADCHARACTER    ,4    ,sts$pd    ,<Octal value: >
  342.     command    senlst    ,PADDING    ,4    ,sts$pn    ,<Number: >
  343.     command senlst    ,START_OF_PACKET,1    ,sts$so    ,<Octal 1-36: >
  344.     command    senlst    ,TIME_OUT    ,1    ,sts$ti    ,<Seconds: >
  345.     command    senlst    ,XON        ,1    ,sts$xo
  346.     command    senlst
  347.  
  348. sts$so:    call    setsop
  349.     tst    r0
  350.     bne    100$
  351.     mov    r1    ,sensop
  352. 100$:    return
  353.  
  354. str$so:    call    setsop
  355.     tst    r0
  356.     bne    100$
  357.     mov    r1    ,recsop
  358. 100$:    return
  359.  
  360. set$so::call    setsop
  361.     tst    r0
  362.     bne    100$
  363.     mov    r1    ,sensop
  364.     mov    r1    ,recsop
  365. 100$:    return
  366.  
  367. setsop:    calls    octval    ,<argbuf>
  368.     tst    r0
  369.     bne    90$
  370.     tst    r1
  371.     ble    90$
  372.     cmp    r1    ,#36
  373.     ble    100$
  374. 90$:    mov    #er$oct    ,r0
  375. 100$:    return
  376.  
  377. str$ti:    call    settim
  378.     tst    r0
  379.     bne    100$
  380.     mov    r1    ,rectim
  381. 100$:    return
  382.  
  383. sts$ti:    call    settim
  384.     tst    r0
  385.     bne    100$
  386.     mov    r1    ,sentim
  387. 100$:    return
  388.  
  389. settim:    calls    l$val    ,<argbuf>
  390.     tst    r0
  391.     bne    110$
  392.     tst    r1
  393.     blt    110$
  394.     cmp    r1    ,#maxpak
  395.     bgt    110$
  396.     return
  397. 110$:    mov    #er$tim    ,r0
  398.     return
  399.  
  400. sts$xo:    mov    sp    ,prexon
  401.     clr    r0
  402.     return
  403.  
  404. sts$nx:    clr    prexon
  405.     clr    r0
  406.     return
  407.  
  408.     .enabl    lsb
  409.  
  410. sts$pl:    calls    l$val    ,<argbuf>
  411.     tst    r0
  412.     bne    1$
  413.     cmp    r1    ,#20.
  414.     blt    2$
  415.     cmp    r1    ,#maxpak
  416.     ble    101$
  417.     call    st$.pl
  418. 101$:    mov    r1    ,senlen
  419.     br    90$
  420.  
  421. str$pl:    calls    l$val    ,<argbuf>
  422.     tst    r0
  423.     bne    1$
  424.     cmp    r1    ,#maxpak
  425.     bgt    str.pl
  426.     cmp    r1    ,#20.
  427.     blt    2$
  428.     movb    r1    ,senpar+p.spsiz
  429.     clrb    senpar+p.mxl1
  430.     clrb    senpar+p.mxl2
  431.     clr    reclng
  432.     clr    dolong
  433.     br    90$
  434.  
  435. 1$:    mov    #er$bad    ,r0
  436.     return
  437. 2$:    mov    #er$txp    ,r0
  438.     return
  439.  
  440. str.pl:    call    st$.pl
  441.     mov    r1    ,reclng
  442.     mov    sp    ,dolong
  443.     clr    r0
  444.     div    #95.    ,r0
  445.     movb    r0    ,senpar+p.mxl1
  446.     movb    r1    ,senpar+p.mxl2
  447. 90$:    clr    r0
  448. 100$:    return
  449.  
  450. st$.pl:    cmp    r1    ,#maxlng
  451.     blos    16$
  452.     mov    #maxlng    ,r1
  453.     tst    infomsg
  454.     beq    16$
  455.     message    <Packet length truncated to buffer maximum of >
  456.     mov    r1    ,r0
  457.     call    L10266
  458.     message    <. bytes>,cr
  459. 16$:    cmp    r1    ,#maxpak
  460.     blos    20$
  461.     tst    infomsg
  462.     beq    20$
  463.     message    <Caution: Data may be lost at speeds greater than 2400>,cr
  464. 20$:    cmpb    setchkt    ,#'3
  465.     beq    30$
  466.     tst    infomsg
  467.     beq    30$
  468.     message    <Remember to SET BLO 3 for long_packets>,cr
  469. 30$:    return
  470.  
  471.     .dsabl    lsb
  472.  
  473.  
  474.     .sbttl    SET END_OF_LINE
  475.  
  476. set$eo::call    setsop
  477.     tst    r0
  478.     bne    100$
  479.     movb    r1    ,senpar+p.eol
  480. 100$:    return
  481.  
  482.  
  483.     .sbttl    SET PAUSE
  484.  
  485. set$ps::calls    l$val    ,<argbuf>
  486.     tst    r0
  487.     beq    10$
  488.     mov    #er$bad    ,r0
  489.     br    100$
  490. 10$:    mov    r1    ,pauset
  491. 100$:    return
  492.  
  493.  
  494.     .sbttl    SET DELAY
  495.  
  496. set$dl::calls    l$val    ,<argbuf>
  497.     tst    r0
  498.     beq    10$
  499.     mov    #er$bad    ,r0
  500.     br    100$
  501. 10$:    mov    r1    ,sendly
  502. 100$:    return
  503.  
  504.  
  505.     .sbttl    SET SEND PADDING, PADCHARACTER
  506.     .enabl    lsb
  507.  
  508. sts$pd::calls    octval    ,<argbuf>
  509.     tst    r0
  510.     bne    5$
  511.     movb    r1    ,senpar+p.padc
  512.     return
  513.  
  514. sts$pn::calls    l$val    ,<argbuf>
  515.     tst    r0
  516.     beq    10$
  517. 5$:    mov    #er$bad    ,r0
  518.     br    100$
  519. 10$:    mov    r1    ,senpar+p.npad
  520. 100$:    return
  521.  
  522.     .dsabl    lsb
  523.  
  524.  
  525.     .sbttl    SET ATTRIBUTES, LONG_PACKETS
  526.  
  527. set$at::upcase    argbuf
  528.     calls    getcm0    ,<argbuf,#onoff>
  529.     tst    r0
  530.     bmi    110$
  531.     tst    wasnul
  532.     bne    110$
  533.     jsr    pc    ,@r1
  534.     mov    r0    ,doattr
  535.     clr    r0
  536. 110$:    return
  537.  
  538. set$lp::upcase    argbuf
  539.     calls    getcm0    ,<argbuf,#onoff>
  540.     tst    r0
  541.     bmi    110$
  542.     tst    wasnul
  543.     bne    110$
  544.     jsr    pc    ,@r1
  545.     mov    r0    ,dolong
  546.     beq    100$
  547.     mov    argbuf    ,r0
  548.     movb    #'3    ,(r0)+
  549.     clrb    @r0
  550.     call    set$bl
  551.     mov    #maxlng    ,r1
  552.     mov    r1    ,senlen
  553.     call    str.pl
  554. 100$:    clr    r0
  555. 110$:    return
  556.  
  557.     command    onoff    ,OFF    ,2    ,s$of
  558.     command    onoff    ,ON    ,2    ,s$on
  559.     command    onoff
  560.  
  561. s$of:    clr    r0
  562.     return
  563.  
  564. s$on:    mov    sp    ,r0
  565.     return
  566.  
  567. st$nat::clr    doattr
  568.     clr    r0
  569.     return
  570.  
  571. st$nlp::clr    dolong
  572.     clr    senlng
  573.     cmp    senlen    ,#maxpak
  574.     ble    200$
  575.     mov    #maxpak    ,senlen
  576. 200$:    clr    r0
  577.     return
  578.  
  579.  
  580.     .sbttl    SET PROMPT
  581.  
  582. set$pr::call    skipit
  583.     copyz    argbuf    ,#prompt,#31.
  584.     clr    r0
  585.     return
  586.  
  587.  
  588.     .sbttl    SET REPEAT
  589.  
  590. set$rp::upcase    argbuf
  591.     calls    getcm0    ,<argbuf,#relst>
  592.     tst    r0
  593.     bmi    110$
  594.     tst    wasnul
  595.     bne    110$
  596.     jsr    pc    ,@r1
  597.     clr    r0
  598. 110$:    return
  599.  
  600.     command    relst    ,OFF    ,2    ,rep$of
  601.     command    relst    ,ON    ,2    ,rep$on
  602.     command    relst
  603.  
  604. set$nrp::clr    r0
  605. rep$of:    clr    setrpt
  606.     return
  607.  
  608. rep$on:    mov    sp    ,setrpt
  609.     return
  610.  
  611.  
  612.     .sbttl    SET TERMINAL
  613.  
  614. set$tt::upcase    argbuf
  615.     calls    getcm0    ,<argbuf,#ttlst>
  616.     tst    r0
  617.     bmi    110$
  618.     tst    wasnul
  619.     bne    110$
  620.     jsr    pc    ,@r1
  621.     clr    r0
  622. 110$:    return
  623.  
  624.     command    ttlst    ,NOQUIET,3    ,svt$nq
  625.     command    ttlst    ,NOSCOPE,3    ,svt$ns
  626.     command    ttlst    ,QUIET    ,1    ,svt$qu
  627.     command    ttlst    ,SCOPE    ,1    ,svt$vt
  628.     command    ttlst    ,TTY    ,1    ,svt$tt
  629.     command    ttlst    ,VT100    ,3    ,svt$vt
  630.     command    ttlst    ,VT101    ,3    ,svt$vt
  631.     command    ttlst    ,VT102    ,3    ,svt$vt
  632.     command    ttlst    ,VT200    ,3    ,svt$22
  633.     command    ttlst    ,VT220    ,3    ,svt$22
  634.     command    ttlst
  635.  
  636.     .enabl    lsb
  637.  
  638. svt$ns:    mov    #noscope,r0
  639.     br    3$
  640. svt$tt:    mov    #tty    ,r0
  641. 3$:    mov    r0    ,vttype
  642.     return
  643.  
  644.     .dsabl    lsb
  645.  
  646. svt$vt:    mov    #vt100    ,vttype
  647.     return
  648.  
  649. svt$22:    mov    #vt200    ,vttype
  650.     return
  651.  
  652. svt$qu:    clr    qu.ini
  653.     clr    infomsg
  654.     return
  655.  
  656. svt$nq:    mov    sp    ,qu.ini
  657.     mov    sp    ,infomsg
  658.     tst    sy.ini
  659.     beq    100$
  660.     .newline
  661. 100$:    return
  662.  
  663.  
  664.     .sbttl    Clear a VT-100's screen
  665.     .enabl    lsb
  666.  
  667. c$cls::    movb    #'l!40    ,nrm.rev
  668.     br    10$
  669. c$clx::    movb    #'h!40    ,nrm.rev
  670. 10$:    wrtall    #clstxt
  671.     clr    r0
  672.     return
  673.  
  674.     .save
  675.     .psect    $rwdata    ,rw,d,lcl,rel,con
  676. clstxt:    .ascii    <esc>"<"
  677.     .ascii    <esc>"[?1l"
  678.     .ascii    <esc>"[?3l"
  679.     .ascii    <esc>"[?4l"
  680.     .ascii    <esc>"[?5"
  681. nrm.rev:.byte    0
  682.     .ascii    <esc>"[?6l"
  683.     .ascii    <esc>"[?7h"
  684.     .ascii    <esc>"[?8h"
  685.     .ascii    <esc>"(B"
  686.     .ascii    <ctrl$o>
  687.     .ascii    <esc>"[1;24r"
  688.     .ascii    <esc>"[J"
  689.     .ascii    <esc>"[m"
  690.     .ascii    <esc>"[q"
  691.     .ascii    <esc>"[v"
  692.     .ascii    <esc>">"
  693.     .byte    0
  694.     .even
  695.     .restore
  696.  
  697.     .dsabl    lsb
  698.  
  699.     .end
  700.