File SLIMMT.

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

/SLIM MAINTENANCE PROGRAM
/
/SLIMMT
/
/W.S.STEWART, COMPUTER INTERFACE SYSTEMS, INC.
/
/
/THIS IS A DIAGNOSTIC AND TEST PROGRAM FOR THE CIS
/SLIM BOARD.
/
/
/****************OPERATING INSTRUCTIONS*****************
/
/	MOUNT JUMPER ON BOARD BEFORE STARTING
/
/	STARTING ADDRESS = 200
/	SWITCH 0 = 0	CONTINUE TO NEXT CHANNEL ON ERROR
/	SWITCH 0 = 1	HALT ON ERROR
/	SWITCH 1 = 1	CYCLE ON TEST IF ERROR
/	SWITCH 2 = 1	SUPPRESS ERROR PRINTOUT
/
/	TO USE PROGRAM WITHOUT USING SWITCH REG,
/	PUT SKP IN LOCATION LASE+1 AND SET UP 
/	LOCATION SWREG AS ABOVE.
/
/*******************************************************
/
/
/********************ERROR PRINTOUTS********************
/
/CHAN   P   CHAN  DATA  DATA  DATA MESSAGE
/NBR  COUNT ERROR ERROR XMIT  RCVD  TEXT
/ X   XXXX  XXXX  XXXX  XXXX  XXXX  XXX---X
/
/NOTE:	PRINTOUT GROUPS WITHOUT MEANING ARE PRINTED
/	XXXX.  NO MORE GROUPS ARE PRINTED AFTER
/	THE LAST MEANINGFUL GROUP.
/
/
/*******************************************************
/
/
/*******************************************************
/
/THE BITS PER WORD MASKS IN LOCS 130-137 MUST BE SET
/TO CORRESPOND TO BIT STRAPPING ON BOARD UNDER TEST.
/
/*******************************************************
	EJECT
/
/DEVICE CODES AND MICROINSTRUCTIONS
/
	MQL=7421
	MQF=7701
	MQA=7501
	ACL=7701
	CLC=7340
	CAF=6007
	SP1=7301
	EJECT
/
/PAGE ZERO
/
	FIELD 0
	*1
	JMP I	.+1
INTVEC,	0
/
/POINTERS AND COUNTERS, ETC.
/
	*20
CHNO,	0		
WATE1,	0
WATE2,	0
TCNT,	0
TEMP,	0
PTEMP,	0
TEMP2,	0
BUFFLG,	0
BUFLOC,	0
INPB,	0
OUTB,	0
POSFLG,	0
POINT,	0
HWD,	0
CHANCT,	0
OLOC,	0
CHCNT,	0
EFLG,	0
EFLG2,	0
MSKPNT,	0
K377,	377
K7,	7
	EJECT
/
/IOT HANDLERS
/
	SXX0=JMS .
	0
IOT0,	0
	JMP I	.-2
	SXX1=JMS .
	0
IOT1,	0
	JMP I	.-2
	ISZ	.-3
	JMP I	.-4
	SXX2=JMS .
	0
IOT2,	0
	JMP I	.-2
	SXX3=JMS .
	0
IOT3,	0
	JMP I	.-2
	SXX4=JMS .
	0
IOT4,	0
	JMP I	.-2
	SXX5=JMS .
	0
IOT5,	0
	JMP I	.-2
	SXX6=JMS .
	0
IOT6,	0
	JMP I	.-2
	SXX7=JMS .
	0
IOT7,	0
	JMP I	.-2
	EJECT
/
/ERROR VECTORS
/
	ERROR1=JMS I .
	ERR1
	ERROR2=JMS I .
	ERR2
	ERROR3=JMS I .
	ERR3
	ERROR4=JMS I .
	ERR4
	ERROR5=JMS I .
	ERR5
	ERROR6=JMS I .
	ERR6
	ERROR7=JMS I .
	ERR7
	ERROR8=JMS I .
	ERR8
	ERROR9=JMS I .
	ERR9
	OCONV=JMS I .
	OCTL
	LINE=JMS I .
	PRTLN
	EJECT
/
/BITS PER WORD MASKS
/
	*130
BPW,	377
	377
	377
	377
	377
	377
	377
	377
	EJECT
/
/PAGE ZERO SUBROUTINES
/
	CHECK=JMS .
CK,	0
	DCA	RCHNO
	TAD	CHNO
	AND	K7
	CIA
	TAD	RCHNO
	SZA CLA
	ERROR3
	JMP I	CK
RCHNO,	0
/
/CONTROL C CHECKER
/
	CTRLC=JMS .
CTC,	0
	KSF
	JMP I	CTC
	KRB
	TAD	M203
	SZA CLA
	JMP I	CTC
EXIT,	JMP I	.+1
	7600
M203,	-203
/
/SWITCH READER
/
	LASX=JMS .
LASE,	0
	LAS		/MAKE SKIP TO DEACTIVATE
	DCA	SWREG	/SWITCH REGISTER
	TAD	SWREG
	JMP I	LASE
SWREG,	0
/
/SWITCH 1 TEST
/
	SW1=JMS .
SW1A,	0
	JMS	LASE
	RTL
	SNL CLA
	ISZ	SW1A
	JMP I	SW1A

/ /PAGE ONE - CONTROL PROGRAMS / *200 / /MAIN PROGRAM LOGIC / JMS INIT /INITIALIZE FOR TEST REGO, DCA EFLG /CLEAR ERROR FLAG JMS WRTTST /DO WRITE TEST SW1 JMP .-2 /CYCLE IF SW 1 UP JMS INTTST /DO INTERRUPT TEST SW1 JMP .-2 JMS IOTCHK /DO IOT CHECK SW1 JMP .-2 TAD (-10 DCA CHANCT MQL LP, JMS CHAN /TEST A CHANNEL SW1 JMP .-2 ISZ CHNO ISZ CHANCT JMP LP TAD EFLG /SEE IF ERRORS HAD OCCURRED SZA CLA JMP BADEND TAD (ENDMSG JMS PRINT JMP REGO BADEND, TAD (BADMSG JMS PRINT TAD (CRLF JMS PRINT JMP REGO EJECT / /INITIALIZE SUBROUTINE / INIT, 0 6007 TAD (CRLF JMS PRINT TAD (INTXT JMS PRINT KSF JMP .-1 KRB JMS OTEST JMP .-4 RTL CLL RTL RTL DCA TEMP KSF JMP .-1 KRB JMS OTEST JMP .-4 RTL CLL RAL TAD TEMP DCA TEMP TAD (CRLF JMS PRINT TAD TEMP TAD (6000 /MAKE IOT DCA IOT0 TAD IOT0 IAC DCA IOT1 TAD IOT1 IAC DCA IOT2 TAD IOT2 IAC DCA IOT3 TAD IOT3 IAC DCA IOT4 TAD IOT4 IAC DCA IOT5 TAD IOT5 IAC DCA IOT6 TAD IOT6 IAC DCA IOT7 JMP I INIT OTEST, 0 DCA TEMP2 TAD TEMP2 TAD (-260 SPA JMP I OTEST TAD (-10 SMA CLA JMP I OTEST ISZ OTEST TAD TEMP2 TLS TSF JMP .-1 AND K7 JMP I OTEST / /LITERALS *0
/ /PAGE 2 - BASIC CHANNEL TEST / *400 / /BASIC CHANNEL TEST - ENTER WITH CHAN NR IN AC / CHAN, 0 TAD (PATERN /INITIALIZE DCA INPB TAD (PATERN DCA OUTB TAD (-10 DCA ICNT TAD (-10 DCA OCNT TAD (-10 DCA WCNT TAD (-1000 DCA TCNT TAD (-20 DCA WATE2 TAD CHNO AND (7 TAD (BPW DCA MSKPNT DCA EFLG2 TAD CHNO SXX5 /INITIALIZE CHANNEL SKAP, SXX1 /AND WAIT FOR INTERRUPT JMP WATE TAD (-20 DCA WATE2 SXX2 RAR CLL SZL /IS IT WRITE JMP WRITE /YES / /READ INTERRUPT / CHECK /CHANNEL # CLC /RESET WORD COUNT TAD WCNT DCA WCNT SXX3 /READ DATA DCA TEMP /SAVE IT TAD TEMP AND (7400 /LOOK AT ERROR BITS SZA ERROR1 TAD I INPB /GET DATA IT SHOULD BE AND I MSKPNT /LOOK ONLY AT PERMITTED BITS CIA TAD TEMP /COMPARE WITH RECEIVED DATA SZA CLA /WE GET RIGHT WORD ERROR2 /NO ISZ INPB /BUMP POINTERS ISZ ICNT JMP SKAP /AND GO TAD (PATERN /RESET PATTERN POINTERS DCA INPB TAD (-7 DCA ICNT TAD EFLG2 SZA CLA JMP CHAN1 /SWITCH 1 WAS SET ACL /SHOW SOME ACTIVITY IN MQ IAC MQL ISZ TCNT /THROUGH WITH TEST JMP SKAP /NO CHAN1, CAF JMP I CHAN /EXIT / /WAS A WRITE INTERRUPT / WRITE, CHECK /CHANNEL # TAD I OUTB /GET WORD SXX4 ISZ WCNT /ARE WE READING DATA SKP /YES ERROR7 /NO ISZ OUTB /BUMP POINTERS ISZ OCNT JMP SKAP /AND GO TAD (PATERN DCA OUTB TAD (-7 DCA OCNT JMP SKAP / /WAIT LOOP / WATE, ISZ WATE1 JMP WATE3 ISZ WATE2 JMP WATE3 ERROR4 WATE3, CTRLC JMP SKAP / /GARBAGE / ICNT, 0 OCNT, 0 WCNT, 0 PATERN, 252 125 0 377 252 125 1 200 / /LITERALS *0
/ /PAGE 3 - WRITE AND INTERRUPT TEST / *600 / /6XX6 TEST / WRTTST, 0 CAF /CLEAR BOARD TAD (ERR6+1 /SETUP INTERRUPT ERROR EXIT DCA INTVEC DCA CHNO IAC SXX0 /ENABLE INTERRUPTS CLA ION WRTLP, TAD CHNO AND K7 SXX6 /ACTIVATE CHANNEL SXX2 /GET CHANNEL WE DONE IT TO RAR CLL IOF SNL /IT MUST BE WRITE ERROR8 /IT WASN'T CHECK /CHANNEL # SXX7 /NOW CLEAR SITUATION CTRLC ISZ CHNO /COUNT JMP WRTLP /AND CONTINUE SXX0 /DISABLE INTERRUPTS JMP I WRTTST /DONE EJECT / /INTERRUPT TEST / INTTST, 0 TAD (RETURN DCA INTVEC /SET UP INTERRUPT VECTOR SP1 /ENABLE INTERRUPTS SXX0 CLA TAD CHNO AND K7 SXX5 /SET UP FOR WRITE INTERRUPT ION TAD (-30 DCA TCNT /TIMEOUT TO SEE THAT ISZ TCNT /INTERRUPT OCCURS JMP .-1 ERROR5 /NO INTERRUPT RETURN, CTRLC SXX2 /INTERRUPT - GET CHANNEL NUMBER RAR CLL SNL /MUST BE WRITE ERROR8 CHECK /CHANNEL # TAD (ERR6+1 /RESET INTERRUPT VECTOR DCA INTVEC SXX0 /CLEAR INTERRUPT ENABLE ION TAD (-30 DCA TCNT /WAIT TO SEE IF INTERRUPT OCCURS ISZ TCNT JMP .-1 IOF SXX7 /CLEAR THE INTERRUPT ISZ CHNO /COUNT THE OPERATION JMP INTTST+1 JMP I INTTST /DONE EJECT / /PRINTX SUBROUTINE / PRINTX, 0 DCA PRINTZ CLC DCA EFLG /SET ERROR FLAG CLC DCA EFLG2 LASX AND (1000 SZA CLA JMP I PRINTX TAD PRINTZ JMS PRINT JMP I PRINTX PRINTZ, 0 CLA EJECT / /CHECK OTHER IOT CODES / IOTCHK, 0 TAD (6055 DCA TSTIOT TSTIOT, 0 /DO AN IOT 5 TAD (-5 DCA TEMP TST2, SXX1 /SKIP IF INTERRUPT JMP TST1 /NO INTERRUPT ERROR9 /SKIP - NOT GOOD JMP TST3 TST1, CTRLC ISZ TEMP JMP TST2 TST3, 6007 /CLEAR ANYTHING THERE TAD TSTIOT TAD (10 DCA TSTIOT TAD TSTIOT CIA TAD IOT5 /DONT TEST ONE THATS GOOD SNA CLA JMP TST3 TAD TSTIOT AND (770 SZA CLA JMP TSTIOT JMP I IOTCHK / /LITERALS *0
/ /PAGE 4 - PRINT SUBROUTINES / *1000 / /PRINT A LINE OF TEXT / PRTLN, 0 JMS CHNBUF TAD (CHNNBR JMS PRINTX PRTLN2, TAD I PRTLN ISZ PRTLN SNA /ANYTHING THERE JMP PRTLN1 /NO, DONE JMS PRINTX /YES, PRINT IT JMP PRTLN2 /AND CONTINUE PRTLN1, TAD (CRLF JMS PRINTX LASX RAL SNL CLA /SEE IF BIT 0 SET JMP .+3 TAD PTEMP HLT CLA ISZ PTEMP JMP I PTEMP / /PUT CHANNEL NBR AND P COUNTER IN BUFFER / CHNBUF, 0 TAD CHNO AND K7 IAC /MAKE INTO RIGHT NUMBER TAD (4060 DCA CHNNBR OCONV PTEMP PCOUNT JMP I CHNBUF EJECT / /PUT CORE LOCATION IN ASCII BUFFER / OCTL, 0 TAD I OCTL /GET WORD POINTER DCA OLOC TAD I OLOC /GET WORD DCA OLOC ISZ OCTL TAD I OCTL /GET BUFFER POINTER DCA BUFLOC DCA BUFFLG ISZ OCTL TAD (-4 /SET UP COUNT DCA CHCNT OCT1, TAD OLOC RTL CLL RAL DCA OLOC /MANEUVER WORD AROUND TAD OLOC RAL /LINK GETS IN WAY AND K7 TAD (60 /MAKE PACKED ASCII ISZ BUFFLG /WE ON LH SIDE OF WORD JMP PUT1 /YES TAD I BUFLOC /NO, BUILD WORD DCA I BUFLOC ISZ BUFLOC JMP PUT2 /AND EXIT PUT1, RTL CLL /PUT ON LH SIDE RTL RTL AND (7700 DCA I BUFLOC /AND STORE CLC DCA BUFFLG /SET RH FLAG PUT2, ISZ CHCNT /WE DONE JMP OCT1 /NO JMP I OCTL /YES EJECT / /PRINT BUFFER / PRINT, 0 DCA POINT /STORE POINTER DCA HWD PR2, TAD I POINT /GET CHAR ISZ HWD /WE ON LH SIDE OF WORD JMP PR4 /YES ISZ POINT /NO, INCREMENT POINTER PR1, AND (77 SNA JMP PR3 /BUFFER DONE MQL MQF TAD (-37 SNA /IS IT LINE FEED JMP LF /YES TAD (-4 SNA CLA /IS IT CARRIAGE RETURN JMP CR /YES MQF AND (40 SNA CLA TAD (100 TAD (200 MQA JMP PR5 LF, TAD (212 JMP PR5 CR, TAD (215 PR5, TLS /PRINT IT TSF JMP .-1 CLA JMP PR2 /AND DO ANOTHER PR4, CLC DCA HWD /SET HALFWORD FLAG TAD I POINT /GET WORD RTR RTR RTR JMP PR1 PR3, TCF /CLEAR FLAG JMP I PRINT EJECT / /LITERALS *0
/ /PAGE 5 - ERROR ROUTINES / *1200 / /RECEIVED DATA ERROR FLAG / ERR1, 0 DCA TEMP2 /SAVE ERROR BITS CLC TAD ERR1 DCA PTEMP /SAVE P COUNT OCONV TEMP2 DATERR TAD TEMP AND K377 DCA TEMP OCONV TEMP RCVWD TAD I INPB DCA TEMP OCONV TEMP XMITWD LINE XBUF DATERR XMITWD RCVWD ERR1T 0 / /RECEIVED DATA CONTENT ERROR / ERR2, 0 CLC TAD ERR2 DCA PTEMP TAD I INPB AND I MSKPNT DCA TEMP2 OCONV TEMP2 XMITWD OCONV TEMP RCVWD LINE XBUF XBUF XMITWD RCVWD ERR2T 0 EJECT / /CHANNEL NUMBER ERROR / ERR3, 0 CLC TAD CK DCA PTEMP OCONV RCHNO CHNERR LINE CHNERR ERR3T 0 / /TIMEOUT ERROR / ERR4, 0 CLC TAD ERR4 DCA PTEMP LINE ERR4T 0 / /INTERRUPT NOT RECEIVED / ERR5, 0 CLC TAD ERR5 DCA PTEMP LINE ERR5T 0 EJECT / /SPURIOUS ERROR RECEIVED / ERR6, 0 CTRLC /CHECK IF THIS ONE FIRST TAD 0 DCA PTEMP LINE ERR6T 0 / /NO DATA RECEIVED / ERR7, 0 CLC TAD ERR7 DCA PTEMP LINE ERR7T 0 / /SPURIOUS ERROR FLAG RECEIVED / ERR8, 0 CLC TAD ERR8 DCA PTEMP LINE ERR8T 0 / /BAD IOT CODE RECOGNIZED / ERR9, 0 CLC TAD ERR9 DCA PTEMP OCONV TSTIOT CHNERR LINE CHNERR ERR9T 0 EJECT / /BUFFERS / CHNNBR, 4040 4040 4040 PCOUNT, 4040 4040 4040 4000 CHNERR, 4040 4040 4040 4000 DATERR, 4040 4040 4040 4000 XMITWD, 4040 4040 4040 4000 RCVWD, 4040 4040 4040 4000 XBUF, 3030 3030 4040 4000 EJECT / /TEXT / ERR1T, TEXT !RECEIVE ERROR FLAG ! ERR2T, TEXT !RECEIVED DATA IN ERROR ! ERR3T, TEXT !CHANNEL NUMBER IN ERROR! ERR4T, TEXT !TIMEOUT - NO FLAG RECEIVED ! EJECT ERR5T, TEXT !INTERRUPT NOT RECEIVED ! ERR6T, TEXT !SPURIOUS INTERRUPT RECEIVED! ERR7T, TEXT !NO DATA RECEIVED ! ERR8T, TEXT !SPURIOUS READ FLAG RECEIVED! EJECT ERR9T, TEXT !WRONG IOT CODE RECOGNIZED! INTXT, TEXT !TYPE DEVICE CODE ! ENDMSG, TEXT !GOOD BOARD! CRLF, 4337 0 BADMSG, TEXT !BAD BOARD! / /END OF PROGRAM $



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