File SMELL.PA (PAL assembler source file)

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

/SMEAT CHECKOUT
/DEFINE INSTRUCTIONS NOT INCLUDED IN PAL8 ASSEMBLER
FIXMRI FADD=1000
FIXMRI FSUB=2000
FIXMRI FMPY=3000
FIXMRI FDIV=4000
FIXMRI FGET=5000
FIXMRI FMUL=3000
FIXMRI FPUT=6000
FNOR=7000
FEXT=0
FNORM=7000
CLZE=6130	/CLEAR CLOCK ENABLE PER AC
CLSK=6131	/SKIP ON CLOCK INTERRUPT
CLDE=6132	/SET CLOCK ENABLE PER AC
CLAB=6133	/AC TO CLOCK BUFFER
CLEN=6134	/LOAD CLOCK ENABLE REGISTER
CLSA=6135	/CLOCK STATUS TO AC
CLBA=6136	/CLOCK BUFFER TO AC
CLCA=6137	/CLOCK COUNTER TO AC
/INSTRUCTION DEFINITIONS FOR AD CONVERTER
ADSF=6531	/SKIP ON AD DONE FLAG
ADRB=6532	/READ AD BUFFER
		/AND CLEAR AD FLAG
ADCV=6534	/CLEARS AD FLAG AND INITIATES A CONVERSION
ADSC=6535	/SELECT MULTIPLEXER CHANNEL AND GAIN  
		/CLEARS AD FLAG AND INITIATES A CONVERSION
ADRC=6536	/JAM XFER AD TO AC,CLR FLAG,START CONVERSION
ADSR=6537	/PUT AC IN MUX REGISTER,CLR AC,PUTS AD BUFFER
		/IN AC, START ANOTHER CONVERSION
GTF=6004	/GET FLAGS
SPI=6045	/SKIP ON TELETYPE INTERRUPT
MQL=7421	/LOAD MQ FROM AC, CLEAR AC
SWP=7521	/SWAP MQ AND AC
SKON=6000	/SKIP IF INTERRUPT IS ON
SPF=6040	/SET TTO FLAG
RTF=6005	/RESTORE FLAGS
CLOSE=6142
OPEN=6141
BSW=7002
MOUTH=6151
SPROCT=6152
CAF=6007
EJECT
*0
	0000
	JMP I SERV
SERV,600
EXIT,XIT














*63
PRINT,MESAGE
SAMPLE,AD
ACPTR,140
FLGPTR,150
MQPTR,160
PCPTR,170
EJECT
*200
	CAF		/CLEAR FLAGS
	TLS
	CLA CLL CMA
	CLZE
	CLA
	CDF 10
	TAD K6041
	DCA I K7345
	TAD K5345
	DCA I K7346
	CDF 0
	TAD TIMER
	CIA
	CLAB
	TAD K3577
	DCA 10
	TAD K4000
	DCA T2
	DCA I 10	/CLEAR DATA AREA
	ISZ T2
	JMP .-2
	TAD MAN
	JMS I PRINT
	JMS FOUR
	SUBJEC		/GET SUBJEC
	CLA CLL
	TAD TSTPRT
	JMS I PRINT
	JMS FOUR
	TEST
CAIR,JMS CABAIR
	CLA
	TAD ACCPT
	JMS I PRINT
	JMS LISN
	TAD M316
	SNA
	JMP CAIR
CDF 10
	TAD K3410
	DCA I K7345
	TAD K5744
	DCA I K7346
	CDF 0
	TAD SSTARP
	JMS I PRINT
	TAD HDRPT
	JMS I PRINT
	CLA
	DCA VAVVE
	DCA NVAVVE
	TAD CLOCK
	CLDE
STLOOP,KSF
	JMP CLK
	KRB
	TAD M323
	SNA
	JMP I TESTST
CLK,	CLSA
	SKP
	JMS I MSC40
	JMP STLOOP
TIMER,4704
K3577,3577
K4000,4000
MAN,SUBMSG
SUBJEC,5767
TSTPRT,TSTMSG
TEST,7573
K3410,3410
K7345,7345
K5744,5744
K7346,7346
K6041,6041
K5345,5345
ACCPT,ACCMSG
M316,-316
SSTARP,STARMG
HDRPT,HDRMSG
CLOCK,5510
T2,0





FOUR,JMP .
TAD I FOUR
	DCA EN
	ISZ FOUR
	TAD I EN
	DCA EN
	JMS LISN1
	DCA I EN
	ISZ EN
	JMS LISN1
	DCA I EN
	ISZ EN
	JMS LISN1
	DCA I EN
	ISZ EN
	JMS LISN1
	DCA I EN
	JMP I FOUR
LISN1,0
	KSF
	JMP .-1
	KRB
	TLS
	JMP I LISN1
	EN,0

*1000 MESAGE,JMP . DCA LTRPTR TAD I LTRPTR BSW JMS DECODE TAD I LTRPTR JMS DECODE ISZ LTRPTR JMP MESAGE+2 DECODE,JMP . AND C77 SNA /RIGHT HALF=0? JMP I MESAGE TAD M37 SNA JMP CRLF SPA TAD CS100 TAD C237 JMS TYPER JMP I DECODE CRLF,CLA CLL TAD C215 JMS TYPER CLA CLL TAD C212 JMS TYPER JMP I DECODE TYPER,JMP . TSF JMP .-1 TLS CLA JMP I TYPER C77,77 M37,-37 CS100,100 C237,237 C215,215 C212,212 LTRPTR,0 AD,JMP . ADSC JMP AROUND CLA CMA DCA ON JMP WT AROUND,CLA DCA ON WT,ADSF JMP .-1 ADRB DCA TEMP1 TAD ON SZA JMP OUT TAD TEMP1 JMP I AD OUT,CLA TAD TEMP1 ION JMP I AD ON, 0 TEMP1, 0000 SUBMSG,TEXT Z_SUBJECT CODE_Z TSTMSG,TEXT Z _TEST CODE_Z STARMG,TEXT Z_TYPE S TO START_Z
*600 /THIS IS THE INTERRUPT SERVICE ROUTINE DCA I ACPTR /SAVE AC GTF /GET FLAGS AND FIELDS DCA I FLGPTR SWP /GET MQ DCA I MQPTR /SAVE IT TAD 0 /GET RETURN DCA I PCPTR /SAVE IT ISZ ACPTR ISZ FLGPTR ISZ MQPTR ISZ PCPTR DTSF /DECTAPE FLAG SKP /NO JMP DECSRV /YES, FIX IT CLSK /CLOCK? SKP JMP CLKSRV /YES, FIX IT 6161 /IS IT A HEART BEAT SKP JMP HTINT SPI /TTO? SKP /NO JMP TTO /YES,FIX IT KSF /KEYBOARD? JMP XIT /NO-FAKE INTERRUPT-EXIT JMP KYBD XIT, IOF /TURN OFF INTERRUPT TO GO TO NEXT LOWER CLA TAD OUTFLG SNA JMP NOTYPE CLA TAD TTRDY SNA JMS I YESTYP NOTYPE, CLA CMA TAD ACPTR DCA ACPTR CLA CMA TAD FLGPTR DCA FLGPTR CLA CMA CLL TAD MQPTR DCA MQPTR CLA CLL CMA TAD PCPTR DCA PCPTR TAD I MQPTR MQL /LOAD MQ TAD I PCPTR DCA OUTADD TAD I ACPTR DCA ACDUM TAD I FLGPTR /GET FLAGS RTF /RESTORE THEM CLA TAD ACDUM JMP I OUTADD OUTADD, 0000 CLKSRV,CLA /ROUTINE TO SERVICE CLOCK CLSA SMA /IS OVERFLOW SET JMP XIT /NO ISZ TIME /KEEP TRACK OF TOTAL TIME ISZ PEREND /END OF A STEP SKP /NO JMS I TIMND /YES GO STORE PERIOD VALUES ISZ WLTIM SKP /NOT TIME TO SAMPLE WORK LOAD JMS I WLP CLA CLL /THE ORDER OF THE ABOVE WILL PROBABLY /HAVE TO BE CHANGED TO MAKE THE ROUTINE WORK IN /THE PROPER MANNER TAD PROTFG SNA JMP I COP JMP I O2P TIMND, TIMEND WLP, WL COP, CO O2P, O2 ACDUM, 0 DECSRV, 6762 JMP XIT TTO, TCF CLA CLL DCA TTRDY JMP XIT KYBD, KRB TAD M244 SNA HLT JMP XIT M244, -244 YESTYP, OUTWRT HTINT, 6164 ISZ HTBTS JMP XIT JMP XIT
/THIS IS THE ROUTINE TO MONITOR SPIROMETER POSITION AND TO /GET THE NECESSARY SAMPLES *1200 O2, CLA CLL TAD SPIRO /ADD SPIRO CHANNEL AND GAIN JMS I SAMPLE /GO SAMPLE IT DCA POS /SAVE IT TAD POS TAD THRESH /ADD NEGATIVE OF THRESHHOLD SPA /ABOVE THRESH? JMP BELOW /NO CLA CLL TAD VALVE /IS VALVE OPEN? SNA JMP THERE /NO CLA /YES TAD SAMFLG /HAVE WE SAMPLED? SNA JMP I EXIT /YES JMP SAM /NO,GO SAMPLE I IS TIME THERE, CLA CLL JMS MOVED /SEE IF SPIROMETER HAS MOVED POSPTR SMA JMP LVE JMS MOVED POSPTR+1 SMA JMP LVE JMS MOVED POSPTR+2 SMA JMP LVE CLA CLL TAD KVALVE DCA VALVE TAD KSAMFG DCA SAMFLG TAD KSAMET DCA SAMET TAD POS DCA SPMAX OPEN JMP I EXIT MOVED, 0000 CLA CLL TAD I MOVED DCA MOVED1 TAD I MOVED1 ISZ MOVED CIA /SUMS POSITION-PREV POS TAD POS /-THRESH TO CHECH TAD POSTHR /FOR STOP JMP I MOVED MOVED1, 0000 LVE, CLA CLL TAD POSPTR+1 DCA POSPTR+2 TAD POSPTR DCA POSPTR+1 TAD POS DCA POSPTR JMP I EXIT SAM, ISZ SAMET /TIME TO SAMPLE JMP I EXIT /NO SAMNTR, CLA ISZ RR DCA SAMFLG TAD SAMO2 JMS I SAMPLE DCA FO2 TAD SAMCO2 JMS I SAMPLE DCA FCO2 TAD SAMN2 JMS I SAMPLE DCA FN2 CLA CMA DCA I FGASPT JMP I EXIT FGASPT, FGASFG BELOW, CLA CLL TAD VALVE SNA JMP I EXIT CLOSE CLA DCA VALVE DCA POSPTR DCA POSPTR+1 DCA POSPTR+2 TAD SAMFLG SNA JMP I EXIT JMP SAMNTR SPIRO, 0006 /SPIROMETER AD CTRL WD POS, 0000 THRESH,-15 /BE OPENED SAMO2, 0100 /AD CTRL WD FOR O2 FO2, 0000 /SAMPLED O2 VALUE SAMCO2, 0204 /AD CTRL WD CO2 FCO2, 0000 /SAMPLED CO2 SAMN2, 0102 /AD CTRL WD FOR N2 FN2, 0000 /SAMPLED N2 POSTHR,-1 KSAMET, -12 /WAIT 12 INTERVALS TO SAM GASES SAMET, 0000 /TIME TO SAMPLE? KSAMFG, 1111 SAMFLG, 0000 /HAVE WE SAMPLED? KVALVE, 1111 VALVE, 0000 /IS VALVE OPEN POSPTR, 0 0 0 SPMAX, 0000 EJECT *1400 MESAGE, 0000 DCA LTRPTR TAD I LTRPTR BSW JMS DECODE /PRINT LEFT HALF TAD I LTRPTR /GET AGAIN JMS DECODE /PRINT RIGHT HALF ISZ LTRPTR /INCREMENT POINTER JMP MESAGE+2 DECODE, 0000 AND C77 SNA /RIGHT HALF=0? JMP I MESAGE /YES TAD M37 /ADD MINUS 37 SNA /EQUAL? JMP CRLF /YES SPA /NO,GREATER THAN 37 TAD CS100 /NO,ASCII CHARACTER IS 3XX TAD C237 /FORM ASCII CHARACTER JMS TYPER JMP I DECODE CRLF, CLA CLL TAD C215 JMS TYPER CLA CLL TAD C212 JMS TYPER JMP I DECODE TYPER, 0 TSF JMP .-1 TLS CLA JMP I TYPER C77, 77 M37, -37 CS100, 100 C237, 237 C215, 215 C212, 212 LTRPTR, 0



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