home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / VMUNZIP.ZIP / APRINT.BAL next >
Encoding:
Text File  |  1989-08-05  |  18.7 KB  |  235 lines

  1. * THIS PROGRAM IS DESIGNED TO PRINT FILES TO YOUR CMS VIRTUAL PRINTER.  APR00010
  2. * IT ASSUMES THAT THE FILE TO BE PRINTED IS IN STANDARD 7-BIT ASCII.    APR00020
  3. * THIS PROGRAM CANNOT PRINT IBM PC GRAPHICS.                            APR00030
  4. * THIS PROGRAM CANNOT INTERPRET ANY PRINTER CONTROL CHARACTERS OTHER    APR00040
  5. * THAN CARRIAGE RETURN, LINE FEED AND FORM FEED. ALL OTHER CONTROL      APR00050
  6. * CHARACTERS WILL BE REPLACED WITH A BLANK. IN PARTICULAR, THIS MEANS   APR00060
  7. * THAT THE BACKSPACE CHARACTER CANNOT BE USED FOR EITHER UNDERLINING    APR00070
  8. * OR OVERSTRIKING.                                                      APR00080
  9. *                                                                       APR00090
  10. * THIS PROGRAM IS COPYRIGHT (C) 1989 BY JOHN A. MCKOWN                  APR00100
  11. * YOU MAY USE THIS PROGRAM AND ANY MODIFICATIONS THERETO FOR            APR00110
  12. * ANY PURPOSE SO LONG AS YOU DO NOT CHARGE FOR THE CODE. YOU            APR00120
  13. * MAY CHARGE A SMALL HANDLING FEE FOR MEDIA, POSTAGE, ETC. SAID         APR00130
  14. * FEE MAY NOT BE GREATER THAN $5.00 MORE THAN THE COST OF MATERIALS.    APR00140
  15. *                                                                       APR00150
  16. * THIS PROGRAM WAS WRITTEN AND TESTED ON VM/HPO 4.2 USING ASSEMBLER H   APR00160
  17. * IT MAY BE ASSEMBLED WITH EITHER THE HASM OR ASSEMBLE COMMAND          APR00170
  18. *                                                                       APR00180
  19. * SHOULD YOU DESIRE TO SAVE THE OUTPUT FROM THIS COMMAND TO A DISK      APR00190
  20. * FILE, YOU CAN DO SO AS FOLLOWS:                                       APR00200
  21. * 1. SP PRT * NOCONT   CLOSE                                            APR00210
  22. * 2. APRINT FILENAME FILETYPE FILEMODE                                  APR00220
  23. * 3. DEPRINT FILENAME FILETYPE                                          APR00230
  24. *                                                                       APR00240
  25. * E.G. YOU HAVE A FILE ON YOUR 'A' DISK WITH THE NAME 'TEMP FILE1 A'.   APR00250
  26. * THIS FILE IS IN ASCII FORMAT. ISSUE THE FOLLOWING THREE COMMANDS      APR00260
  27. * SP PRT * NOCONT CLOSE                                                 APR00270
  28. * APRINT TEMP FILE1 A                                                   APR00280
  29. * DEPRINT TEMP PRINT                                                    APR00290
  30. *                                                                       APR00300
  31. R0       EQU   0                                                        APR00310
  32. R1       EQU   1                                                        APR00320
  33. R2       EQU   2                                                        APR00330
  34. R3       EQU   3                                                        APR00340
  35. R4       EQU   4                                                        APR00350
  36. R5       EQU   5                                                        APR00360
  37. R6       EQU   6                                                        APR00370
  38. R7       EQU   7                                                        APR00380
  39. R8       EQU   8                                                        APR00390
  40. R9       EQU   9                                                        APR00400
  41. R10      EQU   10                                                       APR00410
  42. R11      EQU   11                                                       APR00420
  43. R12      EQU   12                                                       APR00430
  44. R13      EQU   13                                                       APR00440
  45. R14      EQU   14                                                       APR00450
  46. R15      EQU   15                                                       APR00460
  47. APRINT   CSECT                                                          APR00470
  48. *                                                                       APR00480
  49. APRINT   CSECT                                                          APR00490
  50.          USING *,R11                                                    APR00500
  51.          SAVE  (14,12),,APRINT                                          APR00510
  52.          LR    R11,R15                                                  APR00520
  53.          CNOP  0,4                                                      APR00530
  54.          BAL   R1,*+76                                                  APR00540
  55.          DC    18A(0)                                                   APR00550
  56.          ST    R13,4(,R1)                                               APR00560
  57.          ST    R1,8(,R13)                                               APR00570
  58.          LR    R13,R1                                                   APR00580
  59.          B     GO                                                       APR00590
  60. GOBACK   DS    0H                                                       APR00600
  61.          LINEDIT TEXT='SP PRT CLOSE',                                  XAPR00610
  62.                DOT=NO,                                                 XAPR00620
  63.                DISP=CPCOMM                                              APR00630
  64.          L     R13,4(,R13)                                              APR00640
  65.          XC    8(4,R13),8(R13)                                          APR00650
  66.          RETURN (14,12),T,RC=0                                          APR00660
  67.          LTORG *                                                        APR00670
  68. GO       DS    0H                                                       APR00680
  69.          L     R1,4(,R13)                                               APR00690
  70.          L     R1,24(,R1)                                               APR00700
  71.          CLI   8(R1),X'FF'        FENCE?                                APR00710
  72.          BE    ERROR1             YES, NO NAME                          APR00720
  73.          MVC   FNAME,8(R1)        MOVE IN FILE NAME                     APR00730
  74.          CLI   16(R1),X'FF'       FENCE?                                APR00740
  75.          BE    OK1                YES, OK DEFAULT FILETYPE TO ASCII     APR00750
  76.          MVC   FTYPE,16(R1)       MOVE IN FILE TYPE                     APR00760
  77.          CLI   24(R1),X'FF'       FENCE?                                APR00770
  78.          BE    OK1                YES, USE DEFAULT FILE MODE OF *       APR00780
  79.          CLI   26(R1),C' '                                              APR00790
  80.          BNE   ERROR2                                                   APR00800
  81. OK1      DS    0H                                                       APR00810
  82.          FSSTATE FSCB=MYFSCB,FORM=E,ERROR=ERROR3                        APR00820
  83.          ST    R1,MYFST                                                 APR00830
  84.          MVC   FMODE(2),24(R1)                                          APR00840
  85.          L     R2,32(,R1)         GET LRECL                             APR00850
  86.          LA    R2,7(,R2)                                                APR00860
  87.          SRL   R2,3               GET CLOSE MULT OF 8 >= LRECL          APR00870
  88.          ST    R2,BUFSIZE                                               APR00880
  89.          LR    R0,R2                                                    APR00890
  90.          DMSFREE DWORDS=(0),ERR=ERROR5                                  APR00900
  91.          ST    R1,BUFFER@                                               APR00910
  92.          ST    R1,CBUFF@                                                APR00920
  93.          LR    R3,R1                                                    APR00930
  94.          FSOPEN FSCB=MYFSCB,FORM=E,ERROR=ERROR4,BUFFER=(3)              APR00940
  95.          LA    R4,LINEBUF+1                                             APR00950
  96.          ST    R4,LINEBUF@                                              APR00960
  97.          LINEDIT TEXT='SP PRT CLOSE',                                  XAPR00970
  98.                DOT=NO,                                                 XAPR00980
  99.                DISP=CPCOMM                                              APR00990
  100. DOREAD   DS    0H                                                       APR01000
  101.          FSREAD FSCB=MYFSCB,FORM=E,ERROR=EOF                            APR01010
  102.          ST    R0,NUMBYTES                                              APR01020
  103.          LR    R2,R0                                                    APR01030
  104.          L     R3,BUFFER@                                               APR01040
  105. XLATE    DS    0H                                                       APR01050
  106.          NI    0(R3),X'7F'        KILL HIGH BIT                         APR01060
  107.          CLI   0(R3),X'20'        TEST FOR CNTL CHAR                    APR01070
  108.          BL    CTLCHAR                                                  APR01080
  109. STORCHAR DS    0H                                                       APR01090
  110.          SLR   R9,R9                                                    APR01100
  111.          IC    R9,0(,R3)                                                APR01110
  112.          IC    R9,XLATETAB(R9)                                          APR01120
  113.          STC   R9,0(,R4)                                                APR01130
  114.          LA    R4,1(,R4)                                                APR01140
  115.          CL    R4,=A(LINEBUF+L'LINEBUF)                                 APR01150
  116.          BNL   SEGMENT                                                  APR01160
  117.          ST    R4,LINEBUF@                                              APR01170
  118.          MVI   SEENCR,0                                                 APR01180
  119. XLATEC   DS    0H                                                       APR01190
  120.          BCT   R2,XLATE                                                 APR01200
  121.          B     DOREAD                                                   APR01210
  122. CTLCHAR  DS    0H                                                       APR01220
  123.          CLI   0(R3),X'0A'        LINEFEED?                             APR01230
  124.          BE    LF                                                       APR01240
  125.          CLI   0(R3),X'0D'        CARRIAGE RETURN?                      APR01250
  126.          BE    CR                                                       APR01260
  127.          CLI   0(R3),X'0C'        FORM FEED?                            APR01270
  128.          BE    FF                                                       APR01280
  129.          MVI   0(R3),X'20'                                              APR01290
  130.          B     STORCHAR                                                 APR01300
  131. LF       DS    0H                                                       APR01310
  132.          CLI   SEENCR,1                                                 APR01320
  133.          MVI   SEENCR,0                                                 APR01330
  134.          BE    XLATEC                                                   APR01340
  135. PUTL     DS    0H                                                       APR01350
  136.          SL    R4,=A(LINEBUF)                                           APR01360
  137.          PRINTL LINEBUF,(4)                                             APR01370
  138.          MVI   LINEBUF,C' '                                             APR01380
  139.          MVC   LINEBUF+1(L'LINEBUF-1),LINEBUF                           APR01390
  140.          LA    R4,LINEBUF+1                                             APR01400
  141.          ST    R4,LINEBUF@                                              APR01410
  142.          B     XLATEC                                                   APR01420
  143. CR       DS    0H                                                       APR01430
  144.          MVI   SEENCR,1                                                 APR01440
  145.          B     PUTL                                                     APR01450
  146. FF       DS    0H                                                       APR01460
  147.          MVI   SEENCR,0                                                 APR01470
  148.          SL    R4,=A(LINEBUF)                                           APR01480
  149.          PRINTL LINEBUF,(4)                                             APR01490
  150.          MVI   LINEBUF,C' '                                             APR01500
  151.          MVC   LINEBUF+1(L'LINEBUF-1),LINEBUF                           APR01510
  152.          LA    R4,LINEBUF+1                                             APR01520
  153.          ST    R4,LINEBUF@                                              APR01530
  154.          MVI   LINEBUF+0,C'1'                                           APR01540
  155.          B     XLATEC                                                   APR01550
  156. SEGMENT  DS    0H                                                       APR01560
  157.          LINEDIT TEXT='NOTICE - LINE EXCEEDED 133 CHARACTERS.'          APR01570
  158.          LINEDIT TEXT='LINE SEGMENTED INTO MULTIPLE LINES.'             APR01580
  159.          B     PUTL                                                     APR01590
  160. ERROR1   DS    0H                                                       APR01600
  161.          LINEDIT TEXT='NO FILE NAME SPECIFIED.'                         APR01610
  162.          B     GOBACK                                                   APR01620
  163. ERROR2   DS    0H                                                       APR01630
  164.          LINEDIT TEXT='INVALID FILE MODE SPECIFIED.'                    APR01640
  165.          B     GOBACK                                                   APR01650
  166. ERROR3   DS    0H                                                       APR01660
  167.          C     R15,=F'20'                                               APR01670
  168.          BE    ERROR3A                                                  APR01680
  169.          C     R15,=F'24'                                               APR01690
  170.          BE    ERROR2                                                   APR01700
  171.          C     R15,=F'28'                                               APR01710
  172.          BE    ERROR3B                                                  APR01720
  173.          C     R15,=F'36'                                               APR01730
  174.          BE    ERROR3C                                                  APR01740
  175.          LR    R10,R15                                                  APR01750
  176.          LINEDIT TEXT='INVALID RETURN CODE FROM FSSTATE=...',          XAPR01760
  177.                SUB=(DEC,(10))                                           APR01770
  178.          B     GOBACK                                                   APR01780
  179. ERROR3A  DS    0H                                                       APR01790
  180.          LINEDIT TEXT='INVALID CHARACTER IN FILEID'                     APR01800
  181.          B     GOBACK                                                   APR01810
  182. ERROR3B  DS    0H                                                       APR01820
  183.          LINEDIT TEXT='FILE NOT FOUND'                                  APR01830
  184.          B     GOBACK                                                   APR01840
  185. ERROR3C  DS    0H                                                       APR01850
  186.          LINEDIT TEXT='DISK NOT ACCESSED'                               APR01860
  187.          B     GOBACK                                                   APR01870
  188.          SPACE                                                          APR01880
  189. ERROR4   DS    0H                                                       APR01890
  190.          LR    R10,R15                                                  APR01900
  191.          LINEDIT TEXT='FSOPEN RC=...',SUB=(DEC,(10))                    APR01910
  192.          B     GOBACK                                                   APR01920
  193. ERROR5   DS    0H                                                       APR01930
  194.          LR    R10,R15                                                  APR01940
  195.          LINEDIT TEXT='DMSFREE RC=...',SUB=(DEC,(10))                   APR01950
  196.          B     GOBACK                                                   APR01960
  197. EOF      DS    0H                                                       APR01970
  198.          C     R15,=F'12'                                               APR01980
  199.          BE    GOBACK                                                   APR01990
  200.          LR    R10,R15                                                  APR02000
  201.          LINEDIT TEXT='FSREAD RC=...',SUB=(DEC,(10))                    APR02010
  202.          B     GOBACK                                                   APR02020
  203. LINEBUF@ DC    A(0)                                                     APR02030
  204. BUFSIZE  DC    F'0'                                                     APR02040
  205. BUFFER@  DC    A(0)                                                     APR02050
  206. CBUFF@   DC    A(0)                                                     APR02060
  207. NUMBYTES DC    F'0'                                                     APR02070
  208. MYFST    DC    A(0)                                                     APR02080
  209. MYFSCB   FSCB  'X ASCII *',FORM=E                                       APR02090
  210. FNAME    EQU   MYFSCB+8,8,C'C'                                          APR02100
  211. FTYPE    EQU   MYFSCB+16,8,C'C'                                         APR02110
  212. FMODE    EQU   MYFSCB+24,2,C'C'                                         APR02120
  213. LINEBUF  DC    CL133'1'                                                 APR02130
  214. SEENCR   DC    X'00'                                                    APR02140
  215.          LTORG                                                          APR02150
  216. XLATETAB EQU   *                                                        APR02160
  217. *                 0 1 2 3 4 5 6 7 8 9 A B C D E F                       APR02170
  218.          DC    X'00010203372D2E2F1605250B0C0D0E0F' 0                    APR02180
  219.          DC    X'101112133C3D322618193F271C1D1E1F' 1                    APR02190
  220.          DC    X'405A7F7B5B6C507D4D5D5C4E6B604B61' 2             A29569 APR02200
  221.          DC    X'F0F1F2F3F4F5F6F7F8F97A5E4C7E6E6F' 3                    APR02210
  222.          DC    X'7CC1C2C3C4C5C6C7C8C9D1D2D3D4D5D6' 4                    APR02220
  223.          DC    X'D7D8D9E2E3E4E5E6E7E8E9ADE0BD5F6D' 5             A29569 APR02230
  224.          DC    X'79818283848586878889919293949596' 6             A29569 APR02240
  225.          DC    X'979899A2A3A4A5A6A7A8A98B4F9BA107' 7             A29569 APR02250
  226.          DC    X'00010203372D2E2F1605250B0C0D0E0F' 8                    APR02260
  227.          DC    X'101112133C3D322618193F271C1D1E1F' 9                    APR02270
  228.          DC    X'405A7F7B5B6C507D4D5D5C4E6B604B61' A             A29569 APR02280
  229.          DC    X'F0F1F2F3F4F5F6F7F8F97A5E4C7E6E6F' B                    APR02290
  230.          DC    X'7CC1C2C3C4C5C6C7C8C9D1D2D3D4D5D6' C                    APR02300
  231.          DC    X'D7D8D9E2E3E4E5E6E7E8E9ADE0BD5F6D' D             A29569 APR02310
  232.          DC    X'79818283848586878889919293949596' E             A29569 APR02320
  233.          DC    X'979899A2A3A4A5A6A7A8A98B4F9BA107' F             A29569 APR02330
  234.          END   APRINT                                                   APR02340
  235.