home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / SIMTEL / CPMUG / CPMUG025.ARK / LETTER.ASM < prev    next >
Assembly Source File  |  1984-04-29  |  4KB  |  227 lines

  1. ;     ===================================
  2. ;    : L E T T E R    V3.3   7/13/78   :
  3. ;    :     R.C. Minnick                :
  4. ;    :        Box 306                  :
  5. ;    :   Ouray, Colorado 81427         :
  6. ;     ===================================
  7. ;
  8. ; CREATES FILES LLXXX.TEX & EEXXX.TEX FROM
  9. ; NAMES.DAT ACCORDING TO PARAMETER FIELD #2;
  10. ; WHERE LLXXX IS A LETTER FILE & EEXXX IS AN
  11. ; ENVELOPE FILE FOR TEXT EDITOR PROCESSING.
  12. ;
  13. ; EXAMPLE:  LETTER 7,MI5,3    -    GENERATES
  14. ; FILES EEMI5.TEX  AND  LLMI5.TEX.
  15. ;
  16. ; FIRST PARM (0-9) SPECIFIES HEAD (RETURN ADDRESS),
  17. ; WHERE 0-4 PUTS HEADING AT RIGHT & 5-9 CENTERS IT.
  18. ;
  19. ; SECOND PARM (LETTER-LETTER-DIGIT) SPECIFIES NAME
  20. ; AND SALUTATION.
  21. ;
  22. ; THIRD PARAMETER (0-9) SPECIFIES TAIL (CONCLUSION).
  23. ;
  24.     ORG    100H
  25.     MACLIB    SEQIO
  26.     MACLIB    MACRO
  27.     MACLIB    MYMAC
  28.     MACLIB    NCOMPARE
  29.     MACLIB    DOWHILE
  30.     MACLIB    WHEN
  31. ;
  32. CR    EQU    0DH
  33. LF    EQU    0AH
  34. ;
  35.     LXI    SP,STACK
  36. ;
  37. ; GET HEAD PARM & STORE
  38. ;
  39.     FINDPAR
  40.     JC    ERROR1        ;DID NOT FIND IT
  41.     MOV    A,C
  42.     DCR    A
  43.     JNZ    ERROR1        ;NOT LENGTH 1
  44.     MOVE    ,PARM1        ;SAVE IT
  45. ;
  46. ; GET BODY PARM & SAVE
  47. ;
  48.     FINDPAR
  49.     JC    ERROR2        ;DID NOT FIND
  50.     MOV    A,C
  51.     CPI    3
  52.     JNZ    ERROR2        ;NOT LENGTH 3
  53.     MOVE    ,PARM2        ;SAVE
  54. ;
  55. ; GET TAIL PARM & SAVE
  56. ;
  57.     FINDPAR
  58.     JC    ERROR3        ;DID NOT FIND
  59.     MOV    A,C
  60.     DCR    A
  61.     JNZ    ERROR3        ;NOT LENGTH 1
  62.     MOVE    ,PARM3
  63. ;
  64. ; SET UP FILES
  65. ;
  66.     FILE    INFILE,NAME,,NAMES,DAT,1000
  67.     FILE    OUTFILE,LTR,,LL,TEX
  68.     FILE    OUTFILE,ENV,,EE,TEX
  69. ;
  70. ; FIND HEAD IN NAMES & STORE IN LTR & ENV
  71. ;
  72.     ;FIRST REF TO PUTSTR NEEDS <<>> FOR PARM PASS-THROUGH
  73.     PUTSTR    LTR,<<'.LL63',CR,LF,'.PO13',CR,LF,'.PL60',CR,LF>>
  74.     PUTSTR    ENV,<'.MT1',CR,LF,'.HM0',CR,LF,'.PO5',CR,LF,'.PL20',CR,LF>
  75.     PUTSTR    ENV,<'.MB0',CR,LF,'.OP',CR,LF>
  76.     WHEN    PARM1,LSS,35H
  77.       PUTSTR    LTR,<'.IN39',CR,LF>
  78.     ENDW
  79.     WHEN    PARM1,GEQ,35H
  80.       PUTSTR    LTR,<'.CE',CR,LF>
  81.       PUTSTR    ENV,<'.LL24',CR,LF,'.CE',CR,LF>
  82.       LDA    PARM1
  83.       SUI    5
  84.       STA    PARM1
  85.       STA    CENTER        ;CENTERING FLAG (FF=OFF)
  86.     ENDW
  87.     MFILE    NAME,PARM1,2
  88.     JNZ    ERROR1        ;FOR EOF
  89.     MFILE    NAME,CRLF,2
  90.     JNZ    ERROR1
  91.     STA    X        ;TO ZERO IT
  92.     DOWHILE    X,NEQ,%'['
  93.       GET    NAME
  94.       STA    X
  95.       WHEN    X,NEQ,%'['
  96.         LDA    X
  97.         PUT    LTR
  98.         LDA    X
  99.         PUT    ENV
  100.         WHEN    X,EQL,%LF
  101.           LDA    CENTER
  102.           CPI    0FFH
  103.           JNZ    PASS1
  104.           PUTSTR    LTR,<'.BR',CR,LF>
  105.           PUTSTR    ENV,<'.BR',CR,LF>
  106. PASS1:          LDA    CENTER
  107.           CPI    0FFH
  108.           JZ    PASS2
  109.               PUTSTR    LTR,<'.CE',CR,LF>
  110.           PUTSTR    ENV,<'.CE',CR,LF>
  111. PASS2:        ENDW
  112.       ENDW
  113.     ENDDO
  114. ;
  115. ; FIND BODY IN NAMES & STORE IN LTR & ENV
  116. ;
  117.     PUTSTR    LTR,<'XX',CR,LF,'.QI',CR,LF,'.SP2',CR,LF>
  118.     PUTSTR    ENV,<CR,LF,'.SP6',CR,LF>
  119.     WHEN    CENTER,NEQ,0FFH
  120.       PUTSTR    ENV,<'.LL73',CR,LF,'.CE',CR,LF>
  121.       PUTSTR    LTR,<'.SP3',CR,LF>
  122.     ENDW
  123.     WHEN    CENTER,EQL,0FFH
  124.       PUTSTR    ENV,<'.IN30',CR,LF>
  125.     ENDW
  126.     MFILE    NAME,PARM2,4
  127.     JNZ    ERROR2        ;FOR EOF
  128.     MFILE    NAME,CRLF,2
  129.     JNZ    ERROR2
  130.     STA    X        ;TO ZERO IT
  131.     DOWHILE    X,NEQ,%'['    ;UNTIL SALUT START
  132.       GET    NAME
  133.       STA    X
  134.       WHEN    X,NEQ,%'['
  135.         LDA    X
  136.         PUT    LTR
  137.         LDA    X
  138.         PUT    ENV
  139.       ENDW
  140.       WHEN    X,EQL,%LF
  141.         PUTSTR    LTR,<'.BR',CR,LF>
  142.         LDA        CENTER
  143.         CPI        0FFH
  144.         JNZ        PASS3
  145.             PUTSTR    ENV,<'.BR',CR,LF>
  146. PASS3:        LDA        CENTER
  147.         CPI        0FFH
  148.         JZ        PASS4
  149.             PUTSTR    ENV,<'.CE',CR,LF>
  150. PASS4:      ENDW
  151.     ENDDO
  152. ; SALUTATION FOUND
  153.     PUTSTR    LTR,<'.SP2',CR,LF>
  154.     WHEN    CENTER,NEQ,0FFH
  155.       PUTSTR    ENV,<CR,LF>
  156.     ENDW
  157.     DOWHILE    X,NEQ,%']'
  158.       GET    NAME
  159.       STA    X
  160.       WHEN    X,NEQ,%']'
  161.         LDA    X
  162.         PUT    LTR
  163.       ENDW
  164.     ENDDO
  165. ;
  166. ; SKIP REST OF BODY FIELDS IN NAMES
  167. ; [ZZ9] IS UNUSED DUMMY
  168. ;
  169.     MFILE    NAME,'[ZZ9]'
  170.     JNZ    ERROR2        ;FOR EOF
  171. ;
  172. ; FIND TAIL IN NAMES & STORE IN LTR
  173. ;
  174.     PUTSTR    LTR,<CR,LF,'YY',CR,LF,'.SP2',CR,LF,'.IN39',CR,LF>
  175.     MFILE    NAME,PARM3,2
  176.     JNZ    ERROR3
  177.     MFILE    NAME,CRLF,2
  178.     JNZ    ERROR3
  179.     DOWHILE    X,NEQ,%'['
  180.       GET    NAME
  181.       STA    X
  182.       WHEN    X,NEQ,%'['
  183.         LDA    X
  184.         PUT    LTR
  185.       ENDW
  186.     ENDDO
  187. ;
  188. ; CLOSE FILES, RENAME & EXIT
  189. ;
  190. DONE3:    FINIS    <LTR,ENV>
  191.     ADDNAM    LTR,PARM2,3
  192.     ADDNAM    ENV,PARM2,3
  193.     JMP    0
  194. ;
  195. ; ERRORS
  196. ;
  197. ERROR1:    PRINT
  198.     PRINT    'PARAMETER 1'
  199.     JMP    ERROR
  200. ERROR2:    PRINT
  201.     PRINT    'PARAMETER 2'
  202.     JMP    ERROR
  203. ERROR3:    PRINT
  204.     PRINT    'PARAMETER 3'
  205. ERROR:    PRINT    <' ERROR',CR,LF>
  206.     JMP    0
  207. ;
  208. ; PARAMETER STORAGE
  209. ;
  210. PARM1:    DS    1
  211.     DB    ']'
  212. PARM2:    DS    3
  213.     DB    ']'
  214. PARM3:    DS    1
  215.     DB    ']'
  216. X:    DB    0        ;DOWHILE VARIABLE
  217. CRLF:    DW    0A0DH
  218. CENTER:    DB    0FFH        ;CENTERING FLAG - 0FFH=OFF
  219. ;
  220. ; STACK
  221. ;
  222.     DS    64
  223. STACK:
  224. BUFFERS:
  225. MEMSIZE    EQU    BUFFERS+@NXTB    ;PROGRAM SIZE
  226.     END
  227.