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 >
Wrap
Assembly Source File
|
1984-04-29
|
4KB
|
227 lines
; ===================================
; : 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