t3.c 851 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include "a.h"
  2. /*
  3. * Section 3 - page control (mostly irrelevant).
  4. */
  5. /* page offset */
  6. void
  7. po(int o)
  8. {
  9. nr(L(".o0"), getnr(L(".o")));
  10. nr(L(".o"), o);
  11. }
  12. void
  13. r_po(int argc, Rune **argv)
  14. {
  15. if(argc == 1){
  16. po(getnr(L(".o0")));
  17. return;
  18. }
  19. if(argv[1][0] == '+')
  20. po(getnr(L(".o"))+evalscale(argv[1]+1, 'v'));
  21. else if(argv[1][0] == '-')
  22. po(getnr(L(".o"))-evalscale(argv[1]+1, 'v'));
  23. else
  24. po(evalscale(argv[1], 'v'));
  25. }
  26. /* .ne - need vertical space */
  27. /* .mk - mark current vertical place */
  28. /* .rt - return upward */
  29. void
  30. t3init(void)
  31. {
  32. nr(L(".o"), eval(L("1i")));
  33. nr(L(".o0"), eval(L("1i")));
  34. nr(L(".p"), eval(L("11i")));
  35. addreq(L("pl"), r_warn, -1);
  36. addreq(L("bp"), r_nop, -1);
  37. addreq(L("pn"), r_warn, -1);
  38. addreq(L("po"), r_po, -1);
  39. addreq(L("ne"), r_nop, -1);
  40. addreq(L("mk"), r_nop, -1);
  41. addreq(L("rt"), r_warn, -1);
  42. }