File NUMKILL

Directory of image this file is from
This file as a plain text file

*20
/// NUMKILL
	 
/WILL ZERO OUT DESIRED ENTRIES IS A NUMFILE.
/ENTRIES ARE NUMBERED FROM START OF DATA SECTION.
/WILL ALSO ZERO OUT FURTHER SECTIONS OF DATA
/DEPENDING ON ANSWERS TO NUMBER OF
/ITERATIONS AND REPETITION PERIOD 
/QUERIES.
	 
/ENTRIES TO BE OMITTED ARE IN THE FORMAT
/N,M,P,Q (CR)
	 
/EACH OMIT LINE CORRESPONDS TO ONE INPUT FILE.
	 
/AN ENTRY OF 1000 AS A SINGLE ENTRY ON A LINE
/CAUSES THE CORRESPONDING FILE ON THE INPUT
/LIST TO BE RESTORED WITHOUT MODIFICATION.
	 
/TTY CODE FOR ENTRIES LIST.
/  E - TERMINATE LIST
/  CR- TERMINATE LIST
/  A - RESTART LIST
/  B - BAKUP ONE ENTRY
	 
/PROGRAM CORE MAP:
/ DF 2 -------- FILE NAMES
/ DF 5, QN7 --- PBLOCK
/ DF6 --------- NUMFILE DATA
/ DF 7-37 ----- ENTRIES
	 
/PROGRAM LIMITS:
/ 25K AVAILABLE FOR ENTRIES TO DELETE.
/ THUS THIS IS VIRTUALLY UNLIMITED AT 1024
/ ENTRIES PER DF.
/ MAX OF 511 FILE NAMES.
/ MAX OF 40(10) ASCII CHARACTERS IN
/ EACH LINE OF ENTRY LIST INPUT.
	 
	REPCK=2376
	LMODE
	SEGMNT 5
	*20
	 
D0,	
BEG,	LIF 4
	MESOUT
	 MNAM		/NUMKILL
	 
D1,	LIF 4
	MESOUT
	 MWARN		/DESTRUCT WARNING
	 
D2,	LIF 4
	INUNITS
	 
D3,	LIF 4
	OUTUNITS
	 
D4,	LIF 4
	INTRACT
	 CJ4
	 M4		/NUM ITERATIONS
CJ4,	T4
	J4
	 
J4,	JMP BEG		/CR
	JMP .+1		/NUM
	COM
	STC NUMREP
	 
D5,	LIF 4
	INTRACT
	 CJ5
	 M5		/REP PERIOD
CJ5,	T4
	J5
	 
J5,	JMP BEG		/CR
	JMP .+1		/NUM
	MUL I
	3
	STA I
PERIOD,	0
	 
D6,	LIF 4
	MESOUT
	 M6		/ENTRIES TO DELETE
	 
/SETUP PNTR & DFS FOR ENTRIES INPUT.
	SET I 2
	2000		/ENTRY PNTR
	LDA I
	LDF 7
	STA
	LSNDF
	STC TKNDF
	 
/ASK FOR ENTRIES.
D7,	LIF 4
	INTRACT
	 CJ7
	 M7		/:
CJ7,	T7
	J7
T7,	A		/RESTART LIST
	B		/BAKUP 1 ENTRY
	E		/TERMINATOR
T4,	0
	 
J7,	JMP D8		/CR
	JMP D6		/A
	JMP BAKUP	/B
	JMP D8		/E
	JMP GOTONE	/NUM
	 
GOTONE,	SET I 4
	4\INBUF-1	/TAKE PNTR
	SET I 10
	-50		/40 CHARACTERS
	SET I 5
	4\BUFIN-1	/PUT PNTR
	 
NXTIN,	LDF 4
	LDH I 4
	SHD I
	5600		/PERIOD
	 JMP TAKIN	/GOOD
	SHD I
	5400		/COMMA
	 JMP TAKIN	/GOOD
	SHD I
	4500		/CR
	 JMP LASTIN	/END
	STH I 5
	XSK I 10
	JMP NXTIN
TOOMNI,	LIF 4
	MESOUT
	 MXS		/TO MNI CHAR
	JMP D6
	 
/ROUTINE TO TAKE IN A CHARACTER FROM BUFIN
/AND STORE IN DF2.
TAKIN,	STH I 5
	XSK I 10
	SKP
	 JMP TOOMNI
	INPUT
	BUFIN
TKNDF,	0		/STARTS AS DF7
	FIX
	FAC
	ISTOR1
	4\2
	JMP QDELDF	/? CHANGE DF
	JMP NXTIN-2
/END TAKIN.
	 
/ROUTINE TO HANDLE CR TERMINATOR.
LASTIN,	STH I 5
	XSK I 10
	SKP
	 JMP TOOMNI
	INPUT
	BUFIN
LSNDF,	0		/STARTS AS DF7
	FIX
	FAC
	ISTOR1
	4\2
	JMP QDELDF	/? CHANGE DF
/NOW PUT DOWN -0 TERMINATOR.
	CLR
	COM
	STA 2
INC2,	XSK I 2
	NOP
	JMP D7
/END LASTIN.
	 
/ROUTINE TO CHECK & CHANGE DF IF ENTER
/NEW ONE.
QDELDF,	CLR
	ADD 2
	SAE I
	2000
	 JMP 0		/LEAVE, NO CHANGE
	LDA		/INCREMENT DF
	TKNDF
	ADD KP1
	STA
	LSNDF
	STC TKNDF
	JMP 0		/LEAVE, MODIFIED
/END QDELDF.
	 
	 
/ROUTINE TO BAKUP ONE ENTRY.
BAKUP,	JMP DEC2
	JMP DEC2
	 
	LDA		/SET DF
	TKNDF
	STC .+1
	0
	 
	LDA 2		/BAKUP TO LAST
	SAE I		/TERMINATOR.
	-0
	JMP BAKUP+1
	JMP INC2
	 
DEC2,	CLR
	ADD 2
	ADA I
KM1,	-1
	BSE I
	2000
	STC 2
	 
	XSK 2		/CHECK FOR BOUNDRY
	 JMP 0		/NOCROSS
	LDA		/CROSS
	TKNDF
	ADD KM1
	STA
	LSNDF
	STC TKNDF
	JMP 0
/END BAKUP & DEC2.
	 
/ROUTINE TO ASK FOR FILES.
D8,	LIF 4
	MESOUT
	 M8		/FILES TO CHANGE
	 
	LIF 4
	TABSET
	 0
	 LDF 2
	 2000		/PNTR
	 1000		/512 ENTRIES MAX
	 
D9,	LIF 4
	INTABLE
	 0
	 
	LIF 4
	TABINI
	 0
	 
/NOW SETUP WORDS.
	LDF 4
	LDA I
	7105
	STA
	WORD1		/PBLOCK
	LDA I
	4406
	STA
	WORD2		/DATA
	 
/NOW SETUP POINTER & DF.
	SET I 2
	3777
	LDA I
	LDF 6		/BECOMES DF7
	STA
	SKPDF
	STC DLTDF
	 
/NOW GET A FILE.
ONEGET,	LIF 4
	TABGET
	 0
	 JMP DUN	/EOF
	 JMP MISING	/NOT FOUND
	JMP DELETE	/DO DELETION
PSTOR,	JMP RESTOR	/REPLACE FILE
	JMP ONEGET	/RECYCLE
	 
DUN,	LIF 4
	DEASS
	LIF 4
	STOP		/RTRN TO SYSTEM
	 
MISING,	LIF 4
	MESOUT
	 MISS		/MISSING FILES
	JMP BEG
/END FILE HANDLER.
	 
	 
/ROUTINE TO DO ACTUAL DATA DELETION.
DELETE,	SET 3
	0
	SET I 10
NUMREP,	0
MRDEL,	JMP QDFDEL	/? CHANGE DF
DLTDF,	0		/STARTS AS DF7
	LDA I 2
	 
/A TERMINATOR?
	SAE I
	-0
	SKP
	 JMP 3		/END
	 
/A SKIP ENTRY?
	SAE I
	1750		/1000(10)
	SKP
	 JMP SKPOVR
	 
/GOOD VALUE.
	MUL I
	3
	ADA I
KP2000,	2000
	STC DELADR
DELIT,	LOAD
	IGNR
	LDF 6
	STORE
DELADR,	0
	XSK I 10
	SKP
	 JMP MRDEL-2	/GET NXT ENTRY
	 
/DELETE SAME ENTRY NEXT PERIOD.
	ADD DELADR
	ADD PERIOD
	STC DELADR
	JMP DELIT
	 
/HANDLE CASE WHERE 1000 WAS ENTERED FROM KBD
/WHICH SIGNIFIES CURRENT FILE ON INPUT
/LIST IS TO BE BYPASSED WITHOUT
/MODIFICATION.
SKPOVR,	JMP QDFDEL	/? CHANGE DF
SKPDF,	0		/STARTS AS DF7
	LDA I 2		/BUMP 2 
	SAE I
	-0		/SHUD BE THIS
	 HLT		/ERROR ***
	JMP PSTOR	/RESTORE FILE ANYWAY
	 
IGNR,	3737
	3737
	3737
	 
/ROUTINE TO CHECK FOR END OF CURRENT DF
/& IF FOUND, BUMP DF.
QDFDEL, XSK 2		/? END OF DF
	 JMP 0		/NO, LEAVE
	LDA		/YES, MODIFY
	DLTDF
	ADD KP1
	STA
	SKPDF
	STC DLTDF
	JMP 0		/LEAVE, MODIFIED
KP1,	1
/END QDFDEL.
/END DELETE.
	 
	 
/ROUTINE TO RESTORE MODIFIED FILE.
RESTOR,	SET 3
	0
	JMP NORPLQ
STOR,	LIF 4
	MSTORIT
	 JMP FULTAP
	JMP RPLQ
	JMP 3		/LEAVE
	 
FULTAP,	LIF 4
	MESOUT
	MER		/ERROR
	JMP BEG
	 
/ROUTINES TO REPLACE & RESTORE THE FILE
/REPLACE QUESTION IN DECODE.
NORPLQ,	LDF 4
	LDA I
	JMP 0
	STA
	REPCK
	JMP 0
RPLQ,	LDF 4
	LDA I
	ADD 0
	STA
	REPCK
	JMP 0
/END NORPLQ & RPLQ.
/END RESTOR.
	
	 
/MESSAGES.
MNAM,	TEXT %NUMKILL %
	4543
MWARN,	TEXT %PERMANENTLY MODIFIES NAMED FILES%
	4543
M4,	TEXT %NUMBER OF ITERATIONS: %
M5,	TEXT %REPETITION PERIOD:%
M6,	TEXT %ENTRIES TO DELETE %
	4543
M7,	TEXT %: %
M8,	TEXT %FILES TO BE MODIFIED%
	4543
MXS,	TEXT %KBD BUFFER EXCEDED%
	4543
MISS,	TEXT %MISSING FILES %
MER,	TEXT %ERROR %
	4543
/END MESSAGES.
	 
/ASCII BUFFER.
BUFIN,	0
	0
	0
AAEND5,	0
	 
/END PROGRAM.
	 
/PBLOCK FOLLOWS.
	NOLIST
//PBLOCK
/COMMAND DECODER ASSIGNMENTS
/
/
	STOP=JMP 20
	SCAN=JMP 21
	STRSCN=JMP 21
	INUNIT=JMP 22
	STORIT=JMP 23
	GETFIL=JMP 24
	GETFST=JMP 24
	GETNAM=JMP 25
	GETNXT=JMP 25
	DIRINI=JMP 26
	DIRLST=JMP 27
	ASSIGN=JMP 30
	DEASS=JMP 31
	OUTUNIT=JMP 32
	LODBLK=JMP 33
	RUNBLK=JMP 34
	FIND=JMP 35
	CALL=JMP 37
	UNCALL=JMP 40
	RUNPRG=JMP 41
	INTRACT=JMP 42
	MESOUT=JMP 43
	DISK=JMP 44
	TABSET=JMP 45
	INTABLE=JMP 46
	MISSNG=JMP 47
	TABGET=JMP 50
	TABPUT=JMP 51
	TABZER=JMP 52
	MAKDIL=JMP 53
	TABINI=JMP 54
	MGETNAM=JMP 55
	MGETFIL=JMP 56
	MSTORIT=JMP 57
/
/COMMAND LOCATIONS.
/
	FILNAM=2320
	WORD1=2323
	WORD2=2324
	INBUF=2325
/COMMAND NUMBERS.
	YES=17
	NO=20
	SAMPL=21
	TABLE=22
	GO=23
	NEXT=24
	CU=25
	CONT=26
	ALL=27
	AVG=30
	A=31
	B=32
	C=33
	D=34
	E=35
/EXEC3 ASSIGNMENTS
/
	OPR=500
	IOF=6002
	ION=6001
	EXC=1710
	REXC=540
	RLSW=514
	RRSW=515
/FLOATING POINT DEFINITIONS.
/
	FAC=0
	STARTE=740
	FSUB=741
	FMUL=742
	FDIV=743
	LOAD=744
	STORE=745
	SETWRD=746
	INPUT=747
	OUTPUT=750
	ISTOR1=751
	SQRT=752
	DFLOAT=753
	SFLOAT=754
	FIX=755
	FADD=756
	ISTOR2=757
	STARTF=760
	FCOMP=761
	FZER=762
	FAPO=763
	FAZE=764
	RECIP=765
	NEXTIN=766
/PBLOCK
/FEB 74.
	LIST
///END NUMKILL
/SEPT 76
/FHD



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search