File INDXST.

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

/INDEX SET-UP PROGRAM: DESIGNED TO CREATE INDEX
/BLOCKS FOR RASBOL TYPE INDEXED SEQUENTIAL FILES
/          
/THESE ARE THE PROGRAM DATA AREAS
/          
FIELD 0
*6200
KEYTAB,	ZBLOCK 400
DBKKNT,	0
DBKNUM,	0
KEYKNT,	0
IBKKNT,	0
IBKNUM,	0
FILINF,	ZBLOCK 11
RBDATA,	ZBLOCK 2
WBDATA,	ZBLOCK 2
/          
/           
/THE MAIN PROGRAM BEGINS HERE BY SETTING TABS
/ON THE TERMINET AND INITIALISING WORK AREAS
/          
FIELD 1
*0000
START,	PRINTC 01	;215
	PRINTC 01	;33
	PRINTC 01	;62
	LOADIM	;12
	STORE1 01	;OPENFL+1
TBSTLP,	PRINTC 01	;33
	PRINTC 01	;61
	PRINTC 12	;240
	DECGOZ 10	;.+4	;OPENFL+1
	GOTO	;TBSTLP
	PRINTC 01	;33
	PRINTC 01	;61
	FILL	;-1	;KEYTAB	;400
/          
/THE FILE INFORMATION IS NOW INPUT
/          
INLP,	FILL	;0	;DBKKNT	;22
	PRINT 15	;TEXT '_^FINISHED?  '
	YESNO	;.+3
	GOTO	;JOBEND
	PRINT 14	;TEXT '__^DEVICE = '
	TYPTEX 01	;OPENFL+1	;4
	PRINT 16	;TEXT '_^FILE NAME = '
	TYPTEX 01	;OPENFL+3	;6
	PRINT 16	;TEXT '_^EXTENSION = '
	TYPTEX 01	;OPENFL+6	;2
/          
/INFORMATION INPUT IS NOW VERIFIED
/          
	PRINT 14	;TEXT '_^CORRECT?  '
	YESNO	;INLP
/          
/IF INFORMATION IS CORRECT, FILE INDEX IS CREATED
/          
OPENFL,	OPEN	;DEVICE     	;FILENAME       .  	;FILINF
	GOIF	;.+2	;OPENER
	GOTO	;LPSET
OPENER,	PRINT 20	;TEXT '_^ERROR OPENING '
	GOTO	;PRFLNM
/          
/THE PROGRAM LOOP IS NOW SET UP
/          
LPSET,	LOAD1	;FILINF+10
	ADD1	;FILINF+3
	STORE1	;DBKKNT
	LOADX1	;FILINF+7
	MULTX1 02
	MOVE 11	;INSTAB	;FETKEY	;2
	LOAD1	;FILINF+1
	ADD1	;FILINF+3
	STORE1	;DBKNUM
	CLEARW	;KEYKNT
	LOAD1	;FILINF+3
	NEGATE
	STORE1	;IBKKNT
	LOAD1	;FILINF+1
	STORE1	;IBKNUM
	LOAD1	;FILINF
	STORE1	;RBDATA
	STORE1	;WBDATA
/          
/THIS SECTION OF THE PROGRAM READS A DATA
/BLOCK AND STORES THE FIRST KEY IN A TABLE
/          
RDBKLP,	LOAD1	;DBKNUM
	STORE1	;RBDATA+1
	LOAD2	;RBDATA
	READAB
FETKEY,	NOP	;NOP
	LOADX1	;KEYKNT
	MULTX1 3
STOKEY,	STORE	;KEYTAB
	INCREM	;KEYKNT
	LOAD1	;KEYKNT
	SUBTIM	;125
	GOIF	;WINDXB	;.+1
RBLCON,	INCREM	;DBKNUM
	INCGOZ	;WINDXB	;DBKKNT
	GOTO	;RDBKLP
/          
/THIS IS A TABLE OF FETCH INSTRUCTIONS
/          
INSTAB,	GOTO	;KEYERR
	LOAD1	;XAREA+1
	LOAD2	;XAREA+1
	LOAD	;XAREA+1
/          
/THIS SECTION OF THE PROGRAM WRITES AN INDEX BLOCK AWAY
/          
WINDXB,	LOAD1	;IBKNUM
	STORE1	;WBDATA+1
	MOVE	;KEYTAB	;XAREA	;400
	LOAD2	;WBDATA
	WRITAB
	INCREM	;IBKNUM
	INCGOZ	;ERTEST	;IBKKNT
	CLEARW	;KEYKNT
	FILL	;-1	;KEYTAB	;400
	GOIFZO	;SETEND	;DBKKNT
	GOTO	;RBLCON
/          
/THIS SECTION OF THE PROGRAM TESTS THE INDEX FOR OVERFLOW
/          
ERTEST,	GOIFZO	;SETEND	;DBKKNT
	PRINT 24	;TEXT '_^INDEX OVERFLOW IN '
PRFLNM,	PRINTX 01	;OPENFL+1	;4
	PRINTC 01	;":
	PRINTX 01	;OPENFL+3	;6
	PRINTC 01	;".
	PRINTX 01	;OPENFL+6	;2
	PRINT 02	;TEXT '__'
	GOTO	;INLP
/          
/THIS EXIT IS TAKEN IF A KEY LENGTH OF ZERO IS FOUND
/          
KEYERR,	PRINT 22	;TEXT '_^KEY LENGTH 0 IN '
	GOTO	;PRFLNM
/          
/THIS IS THE EXIT FOR A CORRECT SET-UP
/          
SETEND,	PRINT 24	;TEXT '_^INDEX CREATED FOR '
	GOTO	;PRFLNM
/          
/THE PROGRAM FINISHES HERE
/          
JOBEND,	PRINT 15	;TEXT '__^END OF JOB'
	EXIT
$



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