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

  1.     .title    KRTUTL.MIN  Rename, delete, copy, paksta, etc..
  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:KRTDEF.MIN"
  11.     .iif ndf  MSG$DA  .error    <; .include for IN:KRTDEF.MIN failed>
  12.  
  13.     .mcall    .CSISPC    ,.DELETE,.RENAME
  14.  
  15.  
  16.     .psect    $code
  17.     .sbttl    The real work of RENAME
  18.  
  19. rename::save    <r2,r3>
  20.     call    check2
  21.     tst    r0
  22.     bne    120$
  23.     clr    r1
  24.     mov    #renlst    ,r3
  25.     mov    #srcnam    ,r0
  26.     call    docsi
  27.     bcs    120$
  28.     mov    #filnam    ,r0
  29.     call    docsi
  30.     bcs    120$
  31.     mov    renlst    ,r0
  32.     calls    fetch    ,<r0>
  33.     tst    r0
  34.     bne    120$
  35.     .rename    #rtwork,#lun.in,#renlst
  36.     bcc    110$
  37.     movb    @#errbyt,r0
  38.     asl    r0
  39.     mov    renerr(r0),r0
  40.     br    120$
  41.  
  42. 110$:    mov    #1    ,r1
  43.     clr    r0
  44. 120$:    unsave    <r3,r2>
  45.     return
  46.  
  47.     .save
  48.     .psect    rendat    ,rw,d,lcl,rel,con
  49. renlst:    .word    0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0
  50.     .restore
  51.  
  52.  
  53.     .sbttl    The real work of DELETE
  54.     .enabl    lsb
  55.  
  56. delete::save    <r3>
  57.     call    check1
  58.     tst    r0
  59.     bne    120$
  60.     mov    #renlst    ,r3
  61.     mov    #srcnam,r0
  62.     call    docsi
  63.     bcs    120$
  64.     mov    renlst    ,r0
  65.     calls    fetch    ,<r0>
  66.     tst    r0
  67.     bne    120$
  68.     .delete    #rtwork,#lun.ou,#renlst
  69.     bcc    110$
  70.     movb    @#errbyt,r0
  71.     asl    r0
  72.     mov    renerr(r0),r0
  73.     br    120$
  74.  
  75. 110$:    clr    r0
  76. 120$:    unsave    <r3>
  77.     return
  78.  
  79.  
  80.     .sbttl    The real work of COPY
  81.     .enabl    lsb
  82.  
  83.     PROT    = 100000
  84.  
  85. copy::    save    <r2,r3,r4>
  86.     clr    r2
  87.     call    check2
  88.     tst    r0
  89.     bne    1$
  90.     calls    open    ,<#srcnam,#lun.in,#binary>
  91.     tst    r0
  92.     beq    2$
  93. 1$:    br    120$
  94.  
  95. 2$:    mov    #lun.out,r0
  96.     asl    r0
  97.     mov    lokdate    ,date.a(r0)
  98.     clr    prot.a(r0)
  99.     bit    #prot    ,lokstat
  100.     beq    3$
  101.     inc    prot.a(r0)
  102.  
  103. 3$:    mov    #lun.in    ,r1
  104.     asl    r1
  105.     mov    sizof(r1),at$len
  106.     calls    create    ,<#filnam,#lun.out,#binary>
  107.     tst    r0
  108.     bne    purge
  109.  
  110. 9$:    mov    #1000    ,r3
  111. 10$:    calls    getc    ,<#lun.in>
  112.     tst    r0
  113.     bne    inerr
  114.     calls    putc    ,<r1,#lun.ou>
  115.     tst    r0
  116.     bne    outerr
  117.     sob    r3    ,10$
  118.     inc    r2
  119.     br    9$
  120.  
  121. inerr:    cmp    r0    ,#er$eof
  122.     bne    purge
  123.     calls    close    ,<#lun.ou>
  124.     save    <r0>
  125.     beq    33$
  126.     br    31$
  127.  
  128. outerr:    cmp    r0    ,#er$eof
  129.     bne    purge
  130.     mov    #er$ful    ,r0
  131.  
  132. purge:    save    <r0>
  133.     calls    close    ,<#lun.ou>
  134. 31$:    calls    delete    ,<#filnam>
  135. 33$:    calls    close    ,<#lun.in>
  136.     unsave    <r0>
  137.  
  138. 120$:    mov    r2    ,r1
  139.     unsave    <r4,r3,r2>
  140.     return
  141.  
  142.     .dsabl    lsb
  143.  
  144.  
  145.     .sbttl    Parse device and file name
  146.  
  147. docsi:    save    <r1>
  148.     sub    #40.*2    ,sp
  149.     mov    sp    ,r1
  150.  
  151. 310$:    movb    (r0)+    ,(r1)+
  152.     bne    310$
  153.     movb    #'=    ,-1(r1)
  154.     clrb    @r1
  155.     mov    sp    ,r1
  156.     .csispc    r1,#defext,r1
  157.     mov    r1    ,sp
  158.     bcs    320$
  159.     mov    (r1)+    ,(r3)+
  160.     mov    (r1)+    ,(r3)+
  161.     mov    (r1)+    ,(r3)+
  162.     mov    (r1)+    ,(r3)+
  163.     add    #40.*2    ,sp
  164.     clc
  165.     br    330$
  166.  
  167. 320$:    movb    @#errbyt,r0
  168.     asl    r0
  169.     mov    csierr(r0),r0
  170.     add    #40.*2    ,sp
  171.     sec
  172. 330$:    unsave    <r1>
  173.     return
  174.  
  175.     .save
  176.     .psect    rendat    ,rw,d,lcl,rel,con
  177. defext:    .word    0 ,0 ,0 ,0
  178.     .restore
  179.  
  180.  
  181.     .sbttl    Check file name(s)
  182.     .enabl    lsb
  183.  
  184. check2:    calls    fparse    ,<2(r5),#filnam>
  185.     tst    r0
  186.     bne    120$
  187.     calls    iswild    ,<#filnam>
  188.     tst    r0
  189.     bne    120$
  190. check1:    calls    fparse    ,<@r5,#srcnam>
  191.     tst    r0
  192.     bne    120$
  193.     calls    iswild    ,<#srcnam>
  194. 120$:    return
  195.  
  196.     .dsabl    lsb
  197.  
  198.  
  199.     .sbttl    Calculate time used to send last packet
  200.     .enabl    lsb
  201.  
  202. paksta::mov    r2    ,-(sp)
  203.     mov    #130$    ,r2
  204. 30$:    call    101$
  205.     mov    (sp)+    ,r2
  206.     call    101$
  207.     mov    #140$    ,r2
  208.     call    101$
  209.     scan    state    ,#150$
  210.     asl    r0
  211.     mov    160$(r0),r2
  212. 101$:    movb    (r2)+    ,(r1)+
  213.     bne    101$
  214.     dec    r1
  215.     return
  216.  
  217.     .save
  218.     .psect    $pdata
  219. 130$:    .ascii    <cr><lf><cr><lf>
  220. 140$:    .asciz    " = STA."
  221.  
  222. 150$:    .byte    STA.ABO,STA.BRK,STA.COM,STA.DAT,STA.FIL
  223.     .byte    STA.ATR    ,STA.INI,STA.RIN,STA.SIN,STA.TYP,STA.EOF
  224.     .byte    0
  225.     .even
  226. 160$:    .word    999$
  227.     .word    710$    ,720$    ,730$    ,740$    ,750$
  228.     .word    760$    ,770$    ,780$    ,790$    ,800$    ,810$
  229.  
  230. 710$:    .asciz    "ABO  Abort"
  231. 720$:    .asciz    "BRK  Break Link"
  232. 730$:    .asciz    "COM  Transaction Complete"
  233. 740$:    .asciz    "DAT  Data"
  234. 750$:    .asciz    "FIL  File Name"
  235. 760$:    .asciz    "ATR  Attributes"
  236. 770$:    .asciz    "INI  Server Init"
  237. 780$:    .asciz    "RIN  Receive Init"
  238. 790$:    .asciz    "SIN  Send Init"
  239. 800$:    .asciz    "TYP  Extended Reply"
  240. 810$:    .asciz    "EOF  End of File"
  241. 999$:    .asciz    "BAD  Unknown State"
  242.     .even
  243.     .restore
  244.  
  245.     .dsabl    lsb
  246.  
  247.     .end
  248.