home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol240 / eprint.zsm < prev    next >
Encoding:
Text File  |  1986-02-13  |  7.1 KB  |  570 lines

  1.     ;EPRINT EX CP/MUGUK VOL 8
  2.     ;
  3.     ORG    00100H
  4. X0000    EQU    00000H
  5. Y0001    EQU    00001H
  6. X0005    EQU    00005H
  7. Y0006    EQU    00006H
  8. Y005C    EQU    0005CH
  9. Y005D    EQU    0005DH
  10. Y06D0    EQU    006D0H
  11. Y06D2    EQU    006D2H
  12. Y06D4    EQU    006D4H
  13. Y06D6    EQU    006D6H
  14.     CALL    A0140
  15.     DEFB    'Epsom MX-80 '
  16.     DEFB    'File Print Utility '
  17.     DEFB    'V1.0',0DH,0AH
  18.     DEFB    '$ (C) '
  19.     DEFB    'Phil Wheeler '
  20.     DEFB    '1981 '
  21. A0140:    POP    DE
  22.     LD    C,9
  23.     CALL    X0005
  24.     LD    SP,006F5H
  25.     LD    A,(Y005D)
  26.     CP    ' '
  27.     JP    NZ,A02C2    ;NO FILENAME
  28.     CALL    A0570
  29.     DEFB    007H    ;BELL
  30.     DEFB    'Syntax '
  31.     DEFB    'error.'
  32.     DEFB    ' Use:',0DH,0AH
  33.     DEFB    'EPRINT '
  34.     DEFB    'file1/sw1/sw2 '
  35.     DEFB    'file2/etc '
  36.     DEFB    '...',0DH,0AH
  37.     DEFB    'Where '
  38.     DEFB    'filenames '
  39.     DEFB    'may be '
  40.     DEFB    'ambiguous',0DH,0AH
  41.     DEFB    '/P - Print '
  42.     DEFB    'filename '
  43.     DEFB    'on each page',0DH,0AH
  44.     DEFB    '/I - Ignore '
  45.     DEFB    'embedded '
  46.     DEFB    'form feeds',0DH,0AH
  47.     DEFB    '/A - inhibit '
  48.     DEFB    'Auto page '
  49.     DEFB    'feeds',0DH,0AH
  50.     DEFB    '/E - Emphasized '
  51.     DEFB    'print mode',0DH,0AH
  52.     DEFB    '/D - Double '
  53.     DEFB    'print mode',0DH,0AH
  54.     DEFB    '/C - Condensed '
  55.     DEFB    'print mode',0DH,0AH
  56.     DEFB    '/R - Reset '
  57.     DEFB    'print mode',0DH,0AH
  58.     DEFB    '/F - inhibit '
  59.     DEFB    'FF at end of file',0DH,0AH
  60.     DEFB    'Each switch '
  61.     DEFB    'stays in effect '
  62.     DEFB    'until change'
  63.     DEFB    'd'+080H
  64.     JP    X0000
  65. ;
  66. A02C2:    LD    HL,(Y0006)
  67.     LD    DE,00085H
  68.     AND    A
  69.     SBC    HL,DE
  70.     LD    (Y06D0),HL    ;SET RAMTOP
  71.     CALL    A05C5
  72.     DEFB    018H    ;CANCELS CONDENSED MODE
  73.     DEFB    00DH
  74.     DEFB    01BH
  75.     DEFB    044H    ;DEFINE TAB
  76.     DEFB    008H    ;8 SPACES
  77.     DEFB    010H    ;16 SPACES ETC
  78.     DEFB    018H
  79.     DEFB    020H
  80.     DEFB    028H
  81.     DEFB    030H
  82.     DEFB    038H
  83.     DEFB    040H
  84.     DEFB    048H
  85.     DEFB    080H
  86. A02DF:    LD    IX,D0649
  87.     LD    HL,(D0647)
  88.     LD    A,(HL)
  89.     AND    A
  90.     JP    Z,X0000
  91.     CP    020H
  92.     JR    NZ,A02F5
  93.     INC    HL
  94.     LD    (D0647),HL
  95.     JR    A02DF
  96. ;
  97. A02F5:    CALL    A0461
  98.     CALL    A0405
  99. A02FB:    LD    HL,(D064C)
  100.     LD    DE,(D064E)
  101.     CALL    A05D1
  102.     JR    Z,A02DF
  103.     LD    DE,0005CH
  104.     LD    BC,0000CH
  105.     LDIR
  106.     LD    (D064C),HL
  107.     LD    B,015H
  108.     XOR    A
  109. A0315:    LD    (DE),A
  110.     INC    DE
  111.     DJNZ    A0315
  112.     CALL    A05DB
  113.     JR    C,A035F
  114.     CALL    A05F1
  115.     CP    01AH
  116.     JR    Z,A034E
  117.     PUSH    AF
  118.     CALL    A0570
  119.     DEFB    'Printing'
  120.     DEFB    ' '+080H
  121.     CALL    A0538
  122.     XOR    A
  123.     LD    (D064A),A
  124.     CALL    A038D
  125.     POP    AF
  126.     CP    00CH
  127.     CALL    NZ,A0364
  128. A0342:    CALL    A05F1
  129.     CP    01AH
  130.     JR    Z,A034E
  131.     CALL    A0364
  132.     JR    A0342
  133. ;
  134. A034E:    BIT    3,(IX+000H)
  135.     JR    NZ,A0358
  136.     CALL    A05C5
  137.     ADC    A,H
  138. A0358:    CALL    A0570
  139.     DEC    C
  140.     ADC    A,D
  141.     JR    A02FB
  142. ;
  143. A035F:    CALL    A044B
  144.     JR    A02FB
  145. ;
  146. A0364:    CP    00CH
  147.     JR    Z,A0383
  148.     CP    00AH    ;LF
  149.     JP    NZ,A057C
  150.     LD    A,(D064B)
  151.     INC    A
  152.     LD    (D064B),A    ;INCREMENT LINE COUNT
  153.     CP    03FH    ;IS IT>63
  154.     JR    C,A037E
  155.     BIT    2,(IX+000H)
  156.     JR    Z,A0388
  157. A037E:    LD    A,00AH    ;LF
  158.     JP    A057C
  159. ;
  160. A0383:    BIT    1,(IX+000H)
  161.     RET    NZ
  162. A0388:    LD    A,00CH
  163.     CALL    A057C
  164. A038D:    LD    A,(D064A)
  165.     INC    A
  166.     LD    (D064A),A    ;INCREMENT PAGE NUMBER
  167.     XOR    A
  168.     LD    (D064B),A
  169.     BIT    0,(IX+000H)
  170.     RET    Z    ;NO HEADERS
  171.     CALL    A05C5    ;PRINT HEADER
  172.     DEFB    'File'
  173.     DEFB    ':'+080H
  174.     LD    HL,0005DH
  175.     LD    B,008H
  176.     CALL    A03FB
  177.     CALL    A05C5
  178.     XOR    (HL)
  179.     LD    B,003H
  180.     CALL    A03FB
  181.     CALL    A05C5
  182.     DEFB    '  Page'
  183.     DEFB    ' '+080H
  184.     LD    A,(D064A)
  185.     LD    E,A
  186.     LD    C,000H
  187.     LD    D,064H
  188.     CALL    A03E3
  189.     LD    D,00AH
  190.     CALL    A03E3
  191.     LD    A,E
  192.     ADD    A,030H
  193.     CALL    A057C
  194.     CALL    A05C5
  195.     DEC    C
  196.     LD    A,(BC)
  197.     DEC    C
  198.     ADC    A,D
  199.     LD    A,002H
  200.     LD    (D064B),A
  201.     RET
  202. ;
  203. A03E3:    LD    B,030H
  204.     LD    A,E
  205.     JR    A03E9
  206. ;
  207. A03E8:    INC    B
  208. A03E9:    SUB    D
  209.     JR    NC,A03E8
  210.     ADD    A,D
  211.     LD    E,A
  212.     LD    A,B
  213.     CP    030H
  214.     JR    NZ,A03F6
  215.     LD    A,C
  216.     AND    A
  217.     RET    Z
  218. A03F6:    INC    C
  219.     LD    A,B
  220.     JP    A057C
  221. ;
  222. A03FB:    LD    A,(HL)
  223.     INC    HL
  224.     CP    021H
  225.     CALL    NC,A057C
  226.     DJNZ    A03FB
  227.     RET
  228. ;
  229. A0405:    LD    DE,T0650
  230.     LD    C,01AH
  231.     CALL    X0005    ;SET DMA
  232.     LD    HL,006F5H
  233.     LD    (D064C),HL
  234.     LD    (D064E),HL
  235.     LD    C,011H    ;SEARCH FIRST
  236.     LD    DE,0005CH
  237.     CALL    X0005
  238.     CP    0FFH
  239.     JR    Z,A044B
  240. A0422:    ADD    A,A
  241.     ADD    A,A
  242.     ADD    A,A
  243.     ADD    A,A
  244.     ADD    A,A
  245.     LD    HL,T0650
  246.     CALL    A05D6
  247.     LD    A,(Y005C)
  248.     LD    (HL),A
  249.     LD    DE,(D064E)
  250.     LD    BC,0000CH
  251.     LDIR            ;MOVE FILENAME
  252.     LD    (D064E),DE
  253.     LD    C,012H        ;SEARCH NEXT
  254.     LD    DE,0005CH
  255.     CALL    X0005
  256.     CP    0FFH
  257.     JR    NZ,A0422
  258.     RET
  259. ;
  260. A044B:    CALL    A0570
  261.     DEFB    'No file -'
  262.     DEFB    ' '+080H
  263.     CALL    A0538
  264.     CALL    A0570
  265.     DEFB    00DH
  266.     DEFB    08AH
  267.     RET
  268. ;
  269. A0461:    LD    DE,0005CH
  270.     XOR    A
  271.     LD    B,00CH
  272. A0467:    LD    (DE),A
  273.     INC    DE
  274.     LD    A,020H
  275.     DJNZ    A0467
  276. A046D:    LD    DE,0005DH
  277.     LD    B,008H
  278. A0472:    CALL    A04BD
  279.     RET    Z
  280.     CP    03AH
  281.     JR    NZ,A0485
  282.     DEC    DE
  283.     LD    A,(DE)
  284.     DEC    A
  285.     AND    00FH
  286.     INC    A
  287.     LD    (Y005C),A
  288.     JR    A046D
  289. ;
  290. A0485:    CP    02EH
  291.     JR    Z,A0496
  292.     CP    02AH
  293.     JR    Z,A0493
  294.     LD    (DE),A
  295.     INC    DE
  296.     DJNZ    A0472
  297.     JR    A0496
  298. ;
  299. A0493:    CALL    A04B6
  300. A0496:    LD    B,003H
  301.     LD    DE,00065H
  302. A049B:    CALL    A04BD
  303.     RET    Z
  304.     CP    02EH
  305.     JR    Z,A049B
  306.     CP    02AH
  307.     JR    Z,A04B1
  308.     LD    (DE),A
  309.     INC    DE
  310.     DJNZ    A049B
  311. A04AB:    CALL    A04BD
  312.     JR    NZ,A04AB
  313.     RET
  314. ;
  315. A04B1:    CALL    A04B6
  316.     JR    A04AB
  317. ;
  318. A04B6:    LD    A,03FH
  319.     LD    (DE),A
  320.     INC    DE
  321.     DJNZ    A04B6
  322.     RET
  323. ;
  324. A04BD:    LD    HL,(D0647)
  325.     LD    A,(HL)
  326.     AND    A
  327.     RET    Z
  328.     CP    ' '
  329.     RET    Z
  330.     INC    HL
  331.     LD    (D0647),HL
  332.     CP    '/'
  333.     RET    NZ
  334.     LD    A,(HL)
  335.     INC    HL
  336.     LD    (D0647),HL
  337.     CP    'P'    ;PRINT FILENAME ON EACH PAGE
  338.     JR    NZ,A04E0
  339.     LD    A,(D0649)
  340.     XOR    001H
  341.     LD    (D0649),A
  342.     JR    A04BD
  343. ;
  344. A04E0:    CP    'I'    ;IGNORE FF?
  345.     JR    NZ,A04EE
  346.     LD    A,(D0649)
  347.     XOR    002H
  348.     LD    (D0649),A
  349.     JR    A04BD
  350. ;
  351. A04EE:    CP    'A'    ;INHIBIT AUTO PAGE?
  352.     JR    NZ,A04FC
  353.     LD    A,(D0649)
  354.     XOR    004H
  355.     LD    (D0649),A
  356.     JR    A04BD
  357. ;
  358. A04FC:    CP    'C'    ;CONDENSED
  359.     JR    NZ,A0506
  360.     CALL    A05C5
  361.     DEFB    08FH    ;CONDENSED MODE
  362.     JR    A04BD
  363. ;
  364. A0506:    CP    'D'    ;DOUBLE
  365.     JR    NZ,A0511
  366.     CALL    A05C5
  367.     DEFB    01BH
  368.     DEFB    0C7H    ;"G" DOUBLE STRIKE MODE
  369.     JR    A04BD
  370. ;
  371. A0511:    CP    'E'    ;EMPHASIZED
  372.     JR    NZ,A051C
  373.     CALL    A05C5
  374.     DEFB    01BH
  375.     DEFB    0C5H    ;EMPASIZED MODE
  376.     JR    A04BD
  377. ;
  378. A051C:    CP    'R'    ;RESET
  379.     JR    NZ,A052A
  380.     CALL    A05C5
  381.     DEFB    012H    ;CANCEL CONDENSED MODE
  382.     DEFB    01BH
  383.     DEFB    046H    ;CANCEL EMPHASIZED MODE
  384.     DEFB    01BH
  385.     DEFB    0C8H    ;CANCEL DOUBLE STRIKE MODE
  386.     JR    A04BD
  387. ;
  388. A052A:    CP    'F'    ;NO FORM FEED
  389.     JR    NZ,A04BD
  390.     LD    A,(D0649)
  391.     XOR    008H
  392.     LD    (D0649),A
  393.     JR    A04BD
  394. ;
  395. A0538:    LD    A,(Y005C)
  396.     AND    A
  397.     JR    Z,A0547
  398.     ADD    A,040H
  399.     CALL    A055F
  400.     CALL    A0570
  401.     CP    D
  402. A0547:    LD    HL,0005DH
  403.     LD    B,008H
  404.     CALL    A0555
  405.     CALL    A0570
  406.     XOR    (HL)
  407.     LD    B,003H
  408. A0555:    LD    A,(HL)
  409.     INC    HL
  410.     CP    021H
  411.     CALL    NC,A055F
  412.     DJNZ    A0555
  413.     RET
  414. ;
  415. A055F:    PUSH    AF
  416.     PUSH    BC
  417.     PUSH    DE
  418.     PUSH    HL
  419.     AND    07FH
  420.     LD    E,A
  421.     LD    C,002H
  422.     CALL    X0005
  423.     POP    HL
  424.     POP    DE
  425.     POP    BC
  426.     POP    AF
  427.     RET
  428. ;
  429. A0570:    EX    (SP),HL
  430. A0571:    LD    A,(HL)
  431.     INC    HL
  432.     CALL    A055F
  433.     BIT    7,A
  434.     JR    Z,A0571
  435.     EX    (SP),HL
  436.     RET
  437. ;
  438. A057C:    PUSH    AF
  439.     PUSH    BC
  440.     PUSH    DE
  441.     PUSH    HL
  442.     PUSH    AF
  443. A0581:    LD    C,00BH    ;KYBD STATUS
  444.     CALL    X0005
  445.     AND    A
  446.     JR    Z,A05A9
  447.     LD    C,001H    ;INPUT KYBD
  448.     CALL    X0005
  449.     AND    07FH
  450.     CP    003H    ;CTL C
  451.     JR    NZ,A05A9
  452.     CALL    A0570
  453.     DEFB    00DH
  454.     DEFB    00AH
  455.     DEFB    '** Aborted *'
  456.     DEFB    '*'+080H
  457.     JP    X0000
  458. ;
  459. A05A9:    LD    HL,(Y0001)
  460.     LD    DE,0002AH
  461.     ADD    HL,DE
  462.     CALL    A05C4
  463.     AND    A
  464.     JR    Z,A0581
  465.     POP    AF
  466.     AND    07FH
  467.     LD    E,A
  468.     LD    C,005H
  469.     CALL    X0005
  470.     POP    HL
  471.     POP    DE
  472.     POP    BC
  473.     POP    AF
  474.     RET
  475. ;
  476. A05C4:    JP    (HL)
  477. ;
  478. A05C5:    EX    (SP),HL
  479. A05C6:    LD    A,(HL)
  480.     CALL    A057C
  481.     INC    HL
  482.     BIT    7,A
  483.     JR    Z,A05C6
  484.     EX    (SP),HL
  485.     RET
  486. ;
  487. A05D1:    AND    A
  488.     SBC    HL,DE
  489.     ADD    HL,DE
  490.     RET
  491. ;
  492. A05D6:    ADD    A,L
  493.     LD    L,A
  494.     RET    NC
  495.     INC    H
  496.     RET
  497. ;
  498. A05DB:    LD    DE,0005CH
  499.     LD    C,00FH
  500.     CALL    X0005    ;OPEN FILE
  501.     INC    A
  502.     SCF
  503.     RET    Z
  504.     LD    HL,0
  505.     LD    (Y06D4),HL
  506.     XOR    A
  507.     LD    (Y06D6),A
  508.     RET
  509. ;
  510. A05F1:    PUSH    BC
  511.     PUSH    HL
  512.     LD    HL,(Y06D2)
  513.     LD    BC,(Y06D4)
  514.     LD    A,B
  515.     OR    C
  516.     CALL    Z,A060D
  517.     LD    A,(HL)
  518.     CPI
  519.     AND    A
  520.     LD    (Y06D2),HL
  521.     LD    (Y06D4),BC
  522. A060A:    POP    HL
  523.     POP    BC
  524.     RET
  525. ;
  526. A060D:    LD    A,(Y06D6)
  527.     AND    A
  528.     SCF
  529.     LD    A,01AH
  530.     JR    NZ,A060A
  531.     LD    DE,(D064E)
  532. A061A:    PUSH    BC
  533.     PUSH    DE
  534.     LD    C,01AH
  535.     CALL    X0005    ;SET DMA
  536.     LD    DE,0005CH
  537.     LD    C,014H
  538.     CALL    X0005    ;READ SEQ
  539.     POP    DE
  540.     POP    BC
  541.     LD    (Y06D6),A
  542.     AND    A
  543.     JR    NZ,A0643
  544.     LD    HL,00080H
  545.     PUSH    HL
  546.     ADD    HL,DE
  547.     EX    DE,HL
  548.     POP    HL
  549.     ADD    HL,BC
  550.     LD    B,H
  551.     LD    C,L
  552.     LD    HL,(Y06D0)
  553.     AND    A
  554.     SBC    HL,DE
  555.     JR    NC,A061A
  556. A0643:    LD    HL,(D064E)
  557.     RET
  558. ;
  559. D0647:    DEFB    081H
  560.     DEFB    000H
  561. D0649:    DEFB    000H
  562. D064A:    DEFB    000H
  563. D064B:    DEFB    000H
  564. D064C:    DEFB    000H
  565.     DEFB    000H
  566. D064E:    DEFB    000H
  567.     DEFB    000H
  568. T0650:    DEFB    000H
  569.     END
  570.