home *** CD-ROM | disk | FTP | other *** search
- ; ===================================
- ; : L E T T E R V3.3 7/13/78 :
- ; : R.C. Minnick :
- ; : Box 306 :
- ; : Ouray, Colorado 81427 :
- ; ===================================
- ;
- ; CREATES FILES LLXXX.TEX & EEXXX.TEX FROM
- ; NAMES.DAT ACCORDING TO PARAMETER FIELD #2;
- ; WHERE LLXXX IS A LETTER FILE & EEXXX IS AN
- ; ENVELOPE FILE FOR TEXT EDITOR PROCESSING.
- ;
- ; EXAMPLE: LETTER 7,MI5,3 - GENERATES
- ; FILES EEMI5.TEX AND LLMI5.TEX.
- ;
- ; FIRST PARM (0-9) SPECIFIES HEAD (RETURN ADDRESS),
- ; WHERE 0-4 PUTS HEADING AT RIGHT & 5-9 CENTERS IT.
- ;
- ; SECOND PARM (LETTER-LETTER-DIGIT) SPECIFIES NAME
- ; AND SALUTATION.
- ;
- ; THIRD PARAMETER (0-9) SPECIFIES TAIL (CONCLUSION).
- ;
- ORG 100H
- MACLIB SEQIO
- MACLIB MACRO
- MACLIB MYMAC
- MACLIB NCOMPARE
- MACLIB DOWHILE
- MACLIB WHEN
- ;
- CR EQU 0DH
- LF EQU 0AH
- ;
- LXI SP,STACK
- ;
- ; GET HEAD PARM & STORE
- ;
- FINDPAR
- JC ERROR1 ;DID NOT FIND IT
- MOV A,C
- DCR A
- JNZ ERROR1 ;NOT LENGTH 1
- MOVE ,PARM1 ;SAVE IT
- ;
- ; GET BODY PARM & SAVE
- ;
- FINDPAR
- JC ERROR2 ;DID NOT FIND
- MOV A,C
- CPI 3
- JNZ ERROR2 ;NOT LENGTH 3
- MOVE ,PARM2 ;SAVE
- ;
- ; GET TAIL PARM & SAVE
- ;
- FINDPAR
- JC ERROR3 ;DID NOT FIND
- MOV A,C
- DCR A
- JNZ ERROR3 ;NOT LENGTH 1
- MOVE ,PARM3
- ;
- ; SET UP FILES
- ;
- FILE INFILE,NAME,,NAMES,DAT,1000
- FILE OUTFILE,LTR,,LL,TEX
- FILE OUTFILE,ENV,,EE,TEX
- ;
- ; FIND HEAD IN NAMES & STORE IN LTR & ENV
- ;
- ;FIRST REF TO PUTSTR NEEDS <<>> FOR PARM PASS-THROUGH
- PUTSTR LTR,<<'.LL63',CR,LF,'.PO13',CR,LF,'.PL60',CR,LF>>
- PUTSTR ENV,<'.MT1',CR,LF,'.HM0',CR,LF,'.PO5',CR,LF,'.PL20',CR,LF>
- PUTSTR ENV,<'.MB0',CR,LF,'.OP',CR,LF>
- WHEN PARM1,LSS,35H
- PUTSTR LTR,<'.IN39',CR,LF>
- ENDW
- WHEN PARM1,GEQ,35H
- PUTSTR LTR,<'.CE',CR,LF>
- PUTSTR ENV,<'.LL24',CR,LF,'.CE',CR,LF>
- LDA PARM1
- SUI 5
- STA PARM1
- STA CENTER ;CENTERING FLAG (FF=OFF)
- ENDW
- MFILE NAME,PARM1,2
- JNZ ERROR1 ;FOR EOF
- MFILE NAME,CRLF,2
- JNZ ERROR1
- STA X ;TO ZERO IT
- DOWHILE X,NEQ,%'['
- GET NAME
- STA X
- WHEN X,NEQ,%'['
- LDA X
- PUT LTR
- LDA X
- PUT ENV
- WHEN X,EQL,%LF
- LDA CENTER
- CPI 0FFH
- JNZ PASS1
- PUTSTR LTR,<'.BR',CR,LF>
- PUTSTR ENV,<'.BR',CR,LF>
- PASS1: LDA CENTER
- CPI 0FFH
- JZ PASS2
- PUTSTR LTR,<'.CE',CR,LF>
- PUTSTR ENV,<'.CE',CR,LF>
- PASS2: ENDW
- ENDW
- ENDDO
- ;
- ; FIND BODY IN NAMES & STORE IN LTR & ENV
- ;
- PUTSTR LTR,<'XX',CR,LF,'.QI',CR,LF,'.SP2',CR,LF>
- PUTSTR ENV,<CR,LF,'.SP6',CR,LF>
- WHEN CENTER,NEQ,0FFH
- PUTSTR ENV,<'.LL73',CR,LF,'.CE',CR,LF>
- PUTSTR LTR,<'.SP3',CR,LF>
- ENDW
- WHEN CENTER,EQL,0FFH
- PUTSTR ENV,<'.IN30',CR,LF>
- ENDW
- MFILE NAME,PARM2,4
- JNZ ERROR2 ;FOR EOF
- MFILE NAME,CRLF,2
- JNZ ERROR2
- STA X ;TO ZERO IT
- DOWHILE X,NEQ,%'[' ;UNTIL SALUT START
- GET NAME
- STA X
- WHEN X,NEQ,%'['
- LDA X
- PUT LTR
- LDA X
- PUT ENV
- ENDW
- WHEN X,EQL,%LF
- PUTSTR LTR,<'.BR',CR,LF>
- LDA CENTER
- CPI 0FFH
- JNZ PASS3
- PUTSTR ENV,<'.BR',CR,LF>
- PASS3: LDA CENTER
- CPI 0FFH
- JZ PASS4
- PUTSTR ENV,<'.CE',CR,LF>
- PASS4: ENDW
- ENDDO
- ; SALUTATION FOUND
- PUTSTR LTR,<'.SP2',CR,LF>
- WHEN CENTER,NEQ,0FFH
- PUTSTR ENV,<CR,LF>
- ENDW
- DOWHILE X,NEQ,%']'
- GET NAME
- STA X
- WHEN X,NEQ,%']'
- LDA X
- PUT LTR
- ENDW
- ENDDO
- ;
- ; SKIP REST OF BODY FIELDS IN NAMES
- ; [ZZ9] IS UNUSED DUMMY
- ;
- MFILE NAME,'[ZZ9]'
- JNZ ERROR2 ;FOR EOF
- ;
- ; FIND TAIL IN NAMES & STORE IN LTR
- ;
- PUTSTR LTR,<CR,LF,'YY',CR,LF,'.SP2',CR,LF,'.IN39',CR,LF>
- MFILE NAME,PARM3,2
- JNZ ERROR3
- MFILE NAME,CRLF,2
- JNZ ERROR3
- DOWHILE X,NEQ,%'['
- GET NAME
- STA X
- WHEN X,NEQ,%'['
- LDA X
- PUT LTR
- ENDW
- ENDDO
- ;
- ; CLOSE FILES, RENAME & EXIT
- ;
- DONE3: FINIS <LTR,ENV>
- ADDNAM LTR,PARM2,3
- ADDNAM ENV,PARM2,3
- JMP 0
- ;
- ; ERRORS
- ;
- ERROR1: PRINT
- PRINT 'PARAMETER 1'
- JMP ERROR
- ERROR2: PRINT
- PRINT 'PARAMETER 2'
- JMP ERROR
- ERROR3: PRINT
- PRINT 'PARAMETER 3'
- ERROR: PRINT <' ERROR',CR,LF>
- JMP 0
- ;
- ; PARAMETER STORAGE
- ;
- PARM1: DS 1
- DB ']'
- PARM2: DS 3
- DB ']'
- PARM3: DS 1
- DB ']'
- X: DB 0 ;DOWHILE VARIABLE
- CRLF: DW 0A0DH
- CENTER: DB 0FFH ;CENTERING FLAG - 0FFH=OFF
- ;
- ; STACK
- ;
- DS 64
- STACK:
- BUFFERS:
- MEMSIZE EQU BUFFERS+@NXTB ;PROGRAM SIZE
- END
-