home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / b / krtmin.pre < prev    next >
Text File  |  2020-01-01  |  7KB  |  486 lines

  1.     .title    KRTMIN.PRE  Prefix file for building KRTHLP.MIN
  2.     .ident    "V03.62"
  3.  
  4. ; /62/    31-May-93  Billy Youdelman
  5.  
  6. ;    Copyright 1986 Brian Nelson
  7.  
  8.     .include "IN:KRTMAC.MIN"
  9.     .iif ndf  KRTINC  .error    <; .include for IN:KRTMAC.MIN failed>
  10.  
  11.     .mcall    .RCTRLO
  12.  
  13.     CVTARG    = C.CRLF ! C.LSPA ! C.SSPA ! C.LCUC ! C.TSPA
  14.  
  15.  
  16.     .sbttl    Local data
  17.  
  18.     .psect    $pdata
  19. bugtxt:    .asciz    "Upgrades"
  20. dbldash:.asciz    " --"
  21. fill7:    .byte    cr ,lf ,40 ,40 ,40 ,40 ,40 ,40
  22. filler:    .byte    40 ,0
  23. p2lp$:    .asciz    "LP:KRTHLP.OUT"
  24. ptopic:    .asciz    " Select topic, please: "
  25.     .even
  26. sub.0:    .word    sub.2 ,sub.3 ,sub.4
  27.  
  28.     .psect    $rwdata    ,rw,d,lcl,rel,con
  29. backlev:.word    0
  30. backup:    .word    0
  31. hlpbuf:    .blkb    200
  32. htopic:    .blkb    200
  33. idxdmp:    .word    0
  34. prbuff:    .blkb    200
  35. prmptd:    .word    0
  36. rmsidx:    .word    0
  37. sub.2:    .blkb    100
  38. sub.3:    .blkb    100
  39. sub.4:    .blkb    100
  40. subwild:.word    0
  41. topics:    .word    0 ,0 ,0 ,0 ,0 ,0 ,0 ,0
  42. topbuf:    .blkb    200
  43. toplev:    .word    0
  44. ttbuff:    .blkb    200
  45. wild:    .word    0
  46.  
  47.  
  48.     .psect    $code
  49.     .sbttl    HELP main_loop
  50.     .enabl    lsb
  51.  
  52. c$bug::    strcpy    argbuf    ,#bugtxt
  53.     br    c$help
  54.  
  55. prihlp::tst    outopn
  56.     beq    1$
  57.     mov    #er$lby    ,r0
  58.     br    2$
  59.  
  60. 1$:    calls    create    ,<#p2lp$,#lun.ou,#text>
  61.     tst    r0
  62.     beq    3$
  63. 2$:    direrr    r0
  64.     return
  65.  
  66. 3$:    mov    sp    ,outopn
  67.     mov    #lun.ou    ,xprint
  68.  
  69. c$help::call    hlpopn
  70.     tst    r0
  71.     beq    9$
  72.     jmp    99$
  73.  
  74. 9$:    upcase    argbuf
  75.     clr    prmptd
  76.     clr    subwild
  77.  
  78. 10$:    clr    idxdmp
  79.     clr    wild
  80.     clr    topics
  81.     clrb    prbuff
  82.     mov    #hlphead,rmsidx
  83.     mov    argbuf    ,r5
  84.     tstb    @r5
  85.     beq    60$
  86.     call    parse
  87.     call    hfind
  88.     tst    r0
  89.     beq    20$
  90.     dec    r0
  91.     beq    50$
  92.     mov    sp    ,wild
  93. 20$:    call    hprint
  94.     br    70$
  95.  
  96. 50$:    message    < Help not found for the requested topic>,cr
  97.     mov    backup    ,rmsidx
  98.     beq    55$
  99.     mov    backlev    ,toplev
  100.     clr    backup
  101.     clr    idxdmp
  102.     clr    wild
  103.     br    20$
  104. 55$:    clr    topics
  105.     clrb    prbuff
  106.     clrb    hlpbuf
  107.     mov    #hlphead,rmsidx
  108. 60$:    .newline
  109.     mov    #'1    ,-(sp)
  110.     call    hindex
  111.  
  112. 70$:    tst    idxdmp
  113.     beq    99$
  114.     mov    #prbuff    ,r3
  115.     mov    argbuf    ,r4
  116.     mov    #topics    ,r5
  117.     clrb    @r4
  118. 75$:    mov    (r5)+    ,r2
  119.     beq    80$
  120.     cmpb    (r2)    ,#'*
  121.     beq    100$
  122.     strcat    r4    ,r2
  123.     strcat    r4    ,#filler
  124.     br    75$
  125. 80$:    tstb    @r3
  126.     beq    88$
  127.     strcat    r3    ,#dbldash
  128. 88$:    strcat    r3    ,#ptopic
  129.     clr    subwild
  130.     .rctrlo
  131.     .newline
  132.     calls    readcmd    ,<#ttbuff,r3>
  133.     tst    r0
  134.     bne    100$
  135.     calls    cvt$$    ,<#ttbuff,r1,#cvtarg>
  136.     tst    r0
  137.     beq    99$
  138.     clrb    ttbuff(r0)
  139.     cmpb    ttbuff    ,#'*
  140.     bne    89$
  141.     mov    sp    ,subwild
  142. 89$:    strcat    r4    ,#ttbuff
  143.     mov    sp    ,prmptd
  144.     jmp    10$
  145.  
  146. 99$:    clr    r0
  147. 100$:    save    <r0>
  148.     tst    outopn
  149.     beq    110$
  150.     calls    close    ,<#lun.ou>
  151.     clr    outopn
  152. 110$:    clr    xprint
  153.     calls    close    ,<#lun.in>
  154.     clr    inopn
  155.     unsave    <r0>
  156.     return
  157.  
  158.     .dsabl    lsb
  159.  
  160.  
  161.     .sbttl    Parse command line
  162.  
  163. parse:    save    <r3,r4,r5>
  164.     mov    #topbuf    ,r4
  165.     mov    #topics    ,r3
  166.     clr    @r3
  167.  
  168. 10$:    tstb    @r5
  169.     beq    100$
  170.     cmpb    @r5    ,#space
  171.     bne    15$
  172.     inc    r5
  173.     br    10$
  174. 15$:    mov    r4    ,(r3)+
  175.     clr    @r3
  176. 20$:    tstb    @r5
  177.     beq    30$
  178.     cmpb    @r5    ,#space
  179.     beq    30$
  180.     movb    (r5)+    ,(r4)+
  181.     br    20$
  182. 30$:    clrb    (r4)+
  183.     br    10$
  184. 100$:    unsave    <r5,r4,r3>
  185.     return
  186.  
  187.  
  188.     .sbttl    Find the topic in the help file
  189.  
  190. hfind:    save    <r2,r3,r4,r5>
  191.     mov    #topics    ,r5
  192.     mov    #'1    ,r2
  193.     clrb    htopic
  194.     mov    #hlphead,r4
  195.  
  196. 10$:    tst    @r5
  197.     beq    100$
  198.     mov    @r4    ,r1
  199.     beq    90$
  200.     cmpb    @r1    ,r2
  201.     blo    90$
  202.     bne    80$
  203.  
  204.     inc    r1
  205.     inc    r1
  206.     mov    (r5)    ,r3
  207.     cmpb    (r3)    ,#'*
  208.     beq    85$
  209.  
  210. 50$:    tstb    (r3)
  211.     beq    70$
  212.     tstb    (r1)
  213.     beq    80$
  214.     movb    (r1)+    ,r0
  215.     cmpb    r0    ,#'a!40
  216.     blo    55$
  217.     cmpb    r0    ,#'z!40
  218.     bhi    55$
  219.     bicb    #40    ,r0
  220. 55$:    cmpb    (r3)+    ,r0
  221.     beq    50$
  222.     br    80$
  223.  
  224. 70$:    mov    r2    ,backlev
  225.     mov    r4    ,backup
  226.     inc    r2
  227.     tst    (r5)+
  228.     mov    @r4    ,r1
  229.     inc    r1
  230.     strcat    #htopic    ,r1
  231.     clr    prmptd
  232. 80$:    add    #6    ,r4
  233.     br    10$
  234.  
  235. 85$:    tstb    htopic
  236.     beq    88$
  237.     tst    prmptd
  238.     bne    88$
  239.     tst    subwild
  240.     bne    88$
  241.     save    <r1>
  242.     mov    backup    ,rmsidx
  243.     mov    backlev    ,toplev
  244.     clr    wild
  245.     call    hprint
  246.     .newline
  247.     mov    sp    ,wild
  248.     unsave    <r1>
  249. 88$:    dec    r1
  250.     strcpy    #hlpbuf    ,r1
  251.     mov    r2    ,toplev
  252.     mov    #2    ,r0
  253.     br    107$
  254.  
  255. 90$:    mov    #1    ,r0
  256.     mov    #hlphead,rmsidx
  257.     clr    @r5
  258.     br    110$
  259.  
  260. 100$:    mov    r2    ,toplev
  261.     dec    toplev
  262.     clr    r0
  263.     sub    #6    ,r4
  264.  
  265. 107$:    mov    r4    ,rmsidx
  266.     clr    backup
  267. 110$:    unsave    <r5,r4,r3,r2>
  268.     return
  269.  
  270.  
  271.     .sbttl    Print help text found by HFIND
  272.  
  273. hprint:    save    <r2,r3,r4>
  274.     clrb    sub.2
  275.     clrb    sub.3
  276.     clrb    sub.4
  277.     clr    r2
  278.     strcpy    #ttbuff    ,#htopic
  279.     strcpy    #prbuff    ,r0
  280.     mov    #hlpbuf    ,r4
  281.     tst    wild
  282.     beq    29$
  283.     .newline
  284.     strcat    #ttbuff    ,r4
  285.     wrtall    r0
  286.     .newline
  287.     clrb    (r0)
  288.  
  289. 29$:    call    preset
  290.     bcc    30$
  291. 9999$:    jmp    100$
  292.  
  293. 30$:    calls    getrec    ,<r4,#lun.in,#176>
  294.     tst    r0
  295.     bne    9999$
  296.     clrb    hlpbuf(r1)
  297.     cmpb    (r4)    ,#space
  298.     blos    60$
  299.     add    #6    ,rmsidx
  300.     cmpb    (r4)    ,toplev
  301.     blo    90$
  302.     beq    50$
  303.     mov    rmsidx    ,r3
  304.     cmpb    (r4)    ,r2
  305.     ble    40$
  306.     movb    (r4)    ,r0
  307.     sub    #'0+2    ,r0
  308.     blt    37$
  309.     asl    r0
  310.     strcpy    sub.0(r0),#errtxt
  311.  
  312. 37$:    movb    (r4)    ,r0
  313.     mov    r0    ,-(sp)
  314.     call    hindex
  315.     tst    wild
  316.     beq    80$
  317.     .newline
  318.  
  319. 40$:    mov    r3    ,rmsidx
  320.     call    preset
  321.     bcs    100$
  322.  
  323. 50$:    tst    wild
  324.     beq    90$
  325.     movb    (r4)    ,r0
  326.     sub    #'0+1    ,r0
  327.     blt    57$
  328.     beq    51$
  329.     dec    r0
  330.     beq    53$
  331.     dec    r0
  332.     beq    55$
  333.     br    57$
  334. 51$:    clrb    sub.2
  335. 53$:    clrb    sub.3
  336. 55$:    clrb    sub.4
  337.  
  338. 57$:    movb    (r4)    ,r2
  339.     clrb    (r4)
  340.     strcpy    #ttbuff    ,#htopic
  341.     strcat    r0    ,#sub.2
  342.     strcat    r0    ,#sub.3
  343.     strcat    r0    ,#sub.4
  344.     mov    @rmsidx    ,r1
  345.     inc    r1
  346.     strcat    r0    ,r1
  347.     strcpy    #errtxt    ,r1
  348.  
  349. 60$:    tstb    ttbuff
  350.     beq    70$
  351.     .newline
  352.     wrtall    #ttbuff
  353.     tst    wild
  354.     bne    69$
  355.     .newline
  356. 69$:    clrb    ttbuff
  357. 70$:    tstb    (r4)
  358.     beq    75$
  359.     wrtall    r4
  360. 75$:    .newline
  361.     jmp    30$
  362.  
  363. 80$:    mov    #1    ,r0
  364.     br    100$
  365. 90$:    clr    r0
  366. 100$:    unsave    <r4,r3,r2>
  367.     return
  368.  
  369.  
  370.     .sbttl    Preset an I/O channel to an exact block and offset
  371.  
  372. preset:    mov    rmsidx    ,r0
  373.     calls    prewind    ,<#lun.in,2(r0),4(r0)>
  374.     rts    pc
  375.  
  376.  
  377.     .sbttl    Print index
  378.     .enabl    lsb
  379.  
  380. hindex:    save    <r2,r4,r5>
  381.     mov    sp    ,idxdmp
  382.     clr    -(sp)
  383.     clr    -(sp)
  384.     mov    sp    ,r5
  385.     movb    2+<5*2>(sp),2(r5)
  386.     cmpb    2(r5)    ,#'1
  387.     bhi    10$
  388.     clrb    hlpbuf
  389. 10$:    message    <    Additional information is available on:>,cr
  390.     wrtall    #fill7
  391.     mov    #4    ,(r5)
  392.     mov    rmsidx    ,r4
  393.  
  394. 30$:    mov    @r4    ,r1
  395.     beq    305$
  396.  
  397.     cmpb    @r1    ,2(r5)
  398.     bhi    507$
  399.     blo    305$
  400.  
  401. 300$:    inc    r1
  402.     inc    r1
  403. 301$:    strlen    r1
  404.     mov    r0    ,r2
  405. 302$:    sub    #18.    ,r2
  406.     neg    r2
  407.     bgt    303$
  408.     neg    r2
  409.     dec    (r5)
  410.     bne    302$
  411.     wrtall    #fill7
  412.     mov    #4    ,(r5)
  413.     br    301$
  414. 303$:    wrtall    r1
  415.     dec    (r5)
  416.     beq    505$
  417.     mov    #space    ,r0
  418. 503$:    call    writ1ch
  419.     sob    r2    ,503$
  420.     br    507$
  421. 505$:    wrtall    #fill7
  422.     mov    #4    ,(r5)
  423. 507$:    add    #6    ,r4
  424.     br    30$
  425.  
  426. 305$:    cmp    #4    ,(r5)
  427.     beq    88$
  428.     .newline
  429. 88$:    clr    r0
  430.  
  431.     mov    r4    ,rmsidx
  432.     cmp    (sp)+    ,(sp)+
  433.     unsave    <r5,r4,r2>
  434.     mov    (sp)+    ,(sp)
  435.     return
  436.  
  437.     .dsabl    lsb
  438.  
  439.  
  440.     .sbttl    Open the help file
  441.     .enabl    lsb
  442.  
  443. hlpopn:    mov    #rtname    ,r3
  444. 20$:    tst    @r3
  445.     beq    70$
  446.     calls    fparse    ,<@r3,#srcnam>
  447.     calls    open    ,<#srcnam,#lun.in,#text>
  448.     tst    r0
  449.     bne    40$
  450.  
  451.     mov    #hlpbuf    ,r4
  452.     calls    getrec    ,<r4,#lun.in,#176>
  453.     tst    r0
  454.     bne    35$
  455.     clrb    hlpbuf(r1)
  456.     strlen    #hident
  457.     calls    instr    ,<r4,r1,#hident,r0>
  458.     tst    r0
  459.     bne    99$
  460. 35$:    message    <?KRTMIN-W->
  461.     wrtall    #srcnam
  462.     message    < is an incorrect version>,cr
  463. 39$:    calls    close    ,<#lun.in>
  464. 40$:    tst    (r3)+
  465.     br    20$
  466.  
  467. 70$:    message    <Can't find KRTMIN.HLP on SY or DK>,cr
  468.     mov    #er$fnf    ,r0
  469.     br    100$
  470. 99$:    mov    sp    ,inopn
  471.     clr    r0
  472. 100$:    return
  473.  
  474.     .dsabl    lsb
  475.  
  476.     .save
  477.     .psect    $pdata
  478. rtname:    .word    3$ ,4$ ,0
  479. 3$:    .asciz    "SY:KRTMIN.HLP"
  480. 4$:    .asciz    "DK:KRTMIN.HLP"
  481.     .even
  482.  
  483.  
  484.     .sbttl    Fake RMS for help text file under RT-11
  485.  
  486.