home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpm / list / ep-src.ark / NEWOUTL.MAC < prev    next >
Text File  |  1988-05-21  |  4KB  |  286 lines

  1.  
  2.  
  3.     include    BDSYM.EQU
  4.     include    EPDATA
  5.  
  6.     .request MISC1
  7.  
  8.     .comment    `
  9. functions NEWINLINE, NEWOUTLINE
  10.  
  11.  
  12. /************************************************/
  13. /************************************************/
  14. newinline()
  15. {
  16.     inpoint = scrncol = allmode = 0;
  17. }            `
  18.  
  19. newinline::
  20.     lxi    h,val + 54*('P'-'@') + 2*('T'-'@')
  21.     mov    a,m
  22.     mvi    m,0
  23.     ora    a
  24.     jz    .nil0
  25.     mvi    a,0ah
  26.     call    termput##
  27. .nil0:
  28.     lxi    h,bkaft
  29.     mov    a,m
  30.     mvi    m,0
  31.     ora    a
  32.     jz    .nil1
  33.     mvi    a,1
  34.     sta    brkflag
  35.     call    prtsbuf##
  36. .nil1:
  37.  
  38.     lxi    h,0
  39.     lda    val + 54*('U'-'@') + 2*('B'-'@')
  40.     ora    a
  41.     jnz    $+6
  42.     shld    allmode
  43.     mov    a,l
  44.     sta    scrncol
  45.     shld    inpoint
  46.     ret
  47.  
  48.     .comment    `
  49. /************************************************/
  50. /************************************************/
  51. newoutline()
  52. {
  53.     glen = outpoint = 0;
  54.  
  55.     if (nc)    llength = (ll + gu)/nc - ir - gu;
  56.     else    llength = ll - ir;
  57.  
  58.     if (cc < 2 || !nc) epsflag = grfflag = tallflag = duplflag = FALSE;
  59.  
  60.     lindent[cc] = in + val['I'-'@']['L'-'@'] - val['U'-'@']['N'-'@'];
  61.     val['I'-'@']['L'-'@']    = val['U'-'@']['N'-'@'] = 0;
  62.  
  63.     brkflag = FALSE;
  64.     if (ro) {paperup(ro);    ro = 0; }
  65.     if (nf) {newfonts();    nf = 0; }
  66.     if (val['S'-'@']['A'-'@'])
  67.     {    savei(val['S'-'@']['A'-'@']);
  68.         val['S'-'@']['A'-'@'] = 0;
  69.     }
  70.     if (val['R'-'@']['E'-'@'])
  71.     {    loadi(val['R'-'@']['E'-'@']);
  72.         val['R'-'@']['E'-'@'] = 0;
  73.     }
  74. }            `
  75.  
  76. newoutline::
  77.     push    b    ;BC not used yet
  78.  
  79.     lhld    outpoint
  80.     lda    cc
  81.     cpi    2
  82.     jnc    $+10
  83.     mov    a,h
  84.     ora    l
  85.     mvi    a,newlin
  86.     cnz    termput##
  87.  
  88. ;    glen = outpoint = 0;
  89.  
  90.     lxi    h,0
  91.     shld    outpoint
  92.     shld    glen
  93.  
  94. ;
  95. ;    if (nc)    llength = (ll + gu)/nc - ir - gu;
  96.     lda    nc
  97.     ora    a
  98.     jz    .noi1
  99.  
  100.     lhld    ll
  101.     xchg
  102.     lhld    val + 54*('G'-'@') + 2*('U'-'@')
  103.     dad    d
  104.  
  105.     xchg
  106.     lhld    nc
  107.     call    usdiv
  108.  
  109.     xchg
  110.     lhld    ir
  111.     call    cmh
  112.     dad    d
  113.  
  114.     xchg
  115.     lhld    val + 54*('G'-'@') + 2*('U'-'@')
  116.     call    cmh
  117.     dad    d
  118.  
  119.     shld    llength
  120.     jmp    .noi2
  121.  
  122. ;    else    llength = ll - ir;
  123. .noi1:    lhld    ll
  124.     lda    nospec
  125.     ora    a
  126.     jnz    .noiw
  127.     xchg
  128.     lhld    ir
  129.     call    cmh
  130.     dad    d
  131. .noiw:    shld    llength
  132.  
  133. ;
  134. ;    if (cc < 2 || !nc) epsflag = grfflag = tallflag = duplflag = FALSE;
  135. .noi2:    lda    cc
  136.     cpi    2
  137.     jc    .noi3
  138.  
  139.     lda    nc
  140.     ora    a
  141.     jnz    .noi4
  142.  
  143. .noi3:    xra    a
  144.     sta    duplflag
  145.     sta    tallflag
  146.     sta    grfflag
  147.     sta    epsflag
  148.  
  149. ;
  150. ;    lindent[cc] = in + val['I'-'@']['L'-'@'] - val['U'-'@']['N'-'@'];
  151. .noi4:
  152. ;process offset
  153.     lhld    val + 54*('O'-'@') + 2*('F'-'@')
  154.     mov    a,h
  155.     ora    l
  156.     jz    .noi4a
  157.     lda    nospec
  158.     ora    a
  159.     jnz    .noi4a
  160.     shld    val + 54*('I'-'@') + 2*('N'-'@')
  161.     shld    val + 54*('U'-'@') + 2*('N'-'@')
  162.     lxi    h,0
  163.     shld    val + 54*('O'-'@') + 2*('F'-'@')
  164.  
  165. .noi4a:
  166.     lxi    h,mcinok
  167.     mov    a,m
  168.     mvi    m,0ffh
  169.  
  170.     lhld    cc
  171.     ana    l
  172.     jnz    .noi4z
  173.  
  174.     dad    h
  175.     lxi    d,lindent
  176.     dad    d
  177.     push    h
  178.  
  179.     lhld    val + 54*('I'-'@') + 2*('N'-'@')
  180.  
  181.     xchg
  182. ;paragraph indent
  183.     lhld    val + 54*('P'-'@') + 2*('I'-'@')
  184.     lda    val + 54*('P'-'@') + 2*('P'-'@')
  185.     ora    a
  186.     jnz    .noi4b
  187.     lhld    val + 54*('H'-'@') + 2*('I'-'@')
  188. .noi4b:    dad    d
  189.  
  190.     xchg
  191.     lhld    val + 54*('I'-'@') + 2*('L'-'@')
  192.     dad    d
  193.  
  194.     xchg
  195.     lhld    val + 54*('U'-'@') + 2*('N'-'@')
  196.     call    cmh
  197.     dad    d
  198.  
  199.     xchg
  200.     pop    h
  201.  
  202. ;if Left-Adjust or doing heading/footing, no indentation
  203.     lda    val + 54*('L'-'@') + 2*('A'-'@')
  204.     ora    a
  205.     jnz    .noi4y
  206.     lda    nospec
  207.     ora    a
  208.     jz    .noi4x
  209. .noi4y:    lxi    d,0
  210. .noi4x:    mov    m,e
  211.     inx    h
  212.     mov    m,d
  213. .noi4z:
  214. ;    val['I'-'@']['L'-'@']    = val['U'-'@']['N'-'@'] = 0;
  215. ;    lxi    h,0
  216. ;    shld    val + 54*('U'-'@') + 2*('N'-'@')
  217. ;    shld    val + 54*('I'-'@') + 2*('L'-'@')
  218. ;
  219. ;    brkflag = FALSE;
  220.     xra    a
  221.     sta    brkflag
  222.     sta    nexttab
  223. ;unmark frplace
  224.     dcr    a
  225.     sta    frplace+1
  226.  
  227. ;    if (ro) {paperup(ro);    ro = 0; }
  228.     lhld    val + 54*('R'-'@') + 2*('O'-'@')
  229.     mov    a,h
  230.     ora    l
  231.     jz    .noi5
  232.  
  233.     push    h
  234.     call    paperup##
  235.     pop    d
  236. ;    call    ejct##
  237.     lxi    h,0
  238.     shld    val + 54*('R'-'@') + 2*('O'-'@')
  239.  
  240. ;    if (nf) {newfonts();    nf = 0; }
  241. .noi5:    lhld    val + 54*('N'-'@') + 2*('F'-'@')
  242.     mov    a,h
  243.     ora    l
  244.     jz    .noi6
  245.  
  246.     call    newfonts##
  247.     lxi    h,0
  248.     shld    val + 54*('N'-'@') + 2*('F'-'@')
  249.  
  250. ;    if (val['S'-'@']['A'-'@'])
  251. .noi6:    lhld    val + 54*('S'-'@') + 2*('A'-'@')
  252.     mov    a,h
  253.     ora    l
  254.     jz    .noi7
  255.  
  256. ;    {    savei(val['S'-'@']['A'-'@']);
  257. ;        val['S'-'@']['A'-'@'] = 0;
  258. ;    }
  259.     push    h
  260.     call    savei##
  261.     pop    d
  262.     lxi    h,0
  263.     shld    val + 54*('S'-'@') + 2*('A'-'@')
  264.  
  265. ;    if (val['R'-'@']['E'-'@'])
  266. .noi7:    lhld    val + 54*('R'-'@') + 2*('E'-'@')
  267.     mov    a,h
  268.     ora    l
  269.     jz    .noi8
  270.  
  271. ;    {    loadi(val['R'-'@']['E'-'@']);
  272. ;        val['R'-'@']['E'-'@'] = 0;
  273. ;    }
  274.     push    h
  275.     call    loadi##
  276.     pop    d
  277.     lxi    h,0
  278.     shld    val + 54*('R'-'@') + 2*('E'-'@')
  279.  
  280. ;}
  281. .noi8:    pop    b
  282.     ret
  283.  
  284.     end
  285.  
  286.