perm filename INTFAC.LSI[1,VDS] blob
sn#285168 filedate 1977-05-21 generic text, type C, neo UTF8
COMMENT ā VALID 00007 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 INTFAC.LSI IS THE INTERFACE TEST PROGRAM FOR USE WITH AN LSI-11 AND
C00004 00003 DACMDE =0
C00005 00004 START: RESET
C00007 00005 ISADC: MOV #COM6,SG
C00009 00006 GETNUM: JSR PC,TYPSTR
C00011 00007 BRK: .BYTE 1,2,4,10,20,40,100,0
C00013 ENDMK
Cā;
;INTFAC.LSI IS THE INTERFACE TEST PROGRAM FOR USE WITH AN LSI-11 AND
;THE VICARM INTERFACE. IT USES THE ARM CLOCK WHICH RUNS AT 5ms. IT IS
;SIMILAR TO INTFAC.PAL EXECPT WRITTEN FOR THE VICARM LSI-11 COMPUTER.
.TITLE INTFAC
.GLOBL START,NOCOMA,BADNUM
.GLOBL TICKLE,TYPSTR,CRLF,LINOUT,PRTINT,GETINT,INSTR
R0 =%0
R1 =%1
R2 =%2
R3 =%3
R4 =%4
R5 =%5
SG =%5
SP =%6
PC =%7
NOCOMA =0
BADNUM =0
CLKTRP =100
DRATRP =310
DRBTRP =314
DR11S =167760
DR11O =167762
DR11I =167764
LOCK =200
UNLOCK =000
.ASECT
.=4
.WORD .+2,HALT
.WORD .+2,HALT
.WORD .+2,HALT
.WORD .+2,HALT
.WORD .+2,HALT
.WORD .+2,HALT
.WORD .+2,HALT
.=CLKTRP+2
RTI
.=CLKTRP
CLKTRP+2
.CSECT
DACMDE =0
BRKMDE =1
ADCMDE =2
STTMDE =3
ADCENB =100
ADCDNE =200
STTENB =40
STTREQ =100000
PANIC =200
ISON =100
TOUCH0 =1
TOUCH1 =2
ARMDNE =37400
HNDDNE =40000
ARMBRK =77
HNDBRK =100
NOINTG =200
ENABLE =400
ONINTG =1000
LOWTOL =10000
HITHND =20000
CURRNT =10000
START: RESET
MTPS #LOCK
MOV #START,SP
MOV #CLKSER,@#CLKTRP
MOV #LOCK,@#CLKTRP+2
MOV #COM1,SG
JSR PC,GETNUM
BNE ISADC
DACSEC: CLR @#DR11S
MOV #COM2,SG
JSR PC,GETNUM
MOVB BRK(R0),R1
BIS #ENABLE,R1
MOV R1,@#BRKMSK
MOVB DNE(R0),R1
SWAB R1
MOV R1,@#DNEMSK
ASH #13.,R0
MOV R0,R3
MOV #COM3,SG
JSR PC,GETNUM
BEQ ISCUR
MOV #1,@#STPDNE
MOV #COM11,SG
JSR PC,GETNUM
BNE WILCHK
BR .+6
ISCUR: BIS #10000,R3
CLR @#STPDNE
WILCHK: MOV R3,@#DACCHN
MOV #COM4,SG
JSR PC,GETNUM
MOV R0,@#DACDC
MOV #COM5,SG
JSR PC,GETNUM
MOV R0,@#DACCHG
CLR @#COUNT
CLR @#PDAC
CLR @#PTIME
MTPS #UNLOCK
CLKWT: TST @#DNEMSK
BEQ DACDNE
JSR PC,TICKLE
BCC CLKWT
DACDNE: MTPS #LOCK
HALT
ISADC: MOV #COM6,SG
JSR PC,GETNUM
MOV R0,@#TYPADC
MOV #COM8,SG
JSR PC,GETNUM
BIC #177740,R0
MOV R0,@#ADCCHN
MOV #COM7,SG
JSR PC,GETNUM
CMP #32.,R0
BGE .+6
MOV #32.,R0
TST R0
BGT .+6
MOV #1,R0
ADD @#ADCCHN,R0
DEC R0
MOV R0,@#MAXCHN
MOV #ADCMDE,@#DR11S
TST @#TYPADC
BEQ ADCSTR
MOV #TOPCLR,SG
JSR PC,TYPSTR
ADCSTR: MOV @#ADCCHN,R3
MOV #SPACER,R4
TST @#TYPADC
BEQ ADCLP
JSR PC,CRLF
CMP @#MAXCHN,@#ADCCHN
BEQ ADCLP
MOV #TOP,SG
JSR PC,TYPSTR
ADCLP: MOV R3,@#DR11O
MOV #100.,R1
WAITLP: BIT #ADCDNE,@#DR11S
BNE ADCFIN
DEC R1
BGE WAITLP
MOV #COM9,SG
JSR PC,LINOUT
BR ADCLDN
ADCFIN: MOV DR11I,R0
TST TYPADC
BEQ TSTDNE
MOV #IOBUF,SG
JSR PC,PRTINT
MOV #IOBUF,SG
JSR PC,TYPSTR
MOV R4,SG
MOV (SG)+,R4
JSR PC,TYPSTR
TSTDNE: JSR PC,TICKLE
BCS ADCLDN
INC R3
CMP @#MAXCHN,R3
BLT ADCSTR
BR ADCLP
ADCLDN: HALT
GETNUM: JSR PC,TYPSTR
MOV #IOBUF,SG
JSR PC,INSTR
JSR PC,GETINT
MOV #COM13,SG
BCS GETNUM
TST R0
RTS PC
CLKSER: TST @#DNEMSK
BNE .+4
RTI
MOV @#DACDC,R0
ADD @#PDAC,R0
MOV R0,R1
BGE .+4
NEG R1
CMP #4000,R1
BGE VALOK
MOV @#DACDC,R0
MOV @#DACCHG,@#PDAC
NEG @#PDAC
VALOK: BIC #170000,R0
BIS @#DACCHN,R0
CLR @#DR11S
MOV R0,@#DR11O
ADD @#DACCHG,@#PDAC
TST @#PTIME
BNE CHKDNE
MOV #1,@#DR11S
MOV @#BRKMSK,@#DR11O
INC @#PTIME
RTI
CHKDNE: MOV #STTMDE,@#DR11S
MOV @#DR11I,R0
BIT #PANIC,R0
BEQ STPIT
TST @#STPDNE
BNE .+4
RTI
BIT @#DNEMSK,R0
BNE INRNGE
CLR @#COUNT
RTI
INRNGE: INC @#COUNT
CMP #3,@#COUNT
BLE .+4
RTI
STPIT: CLR @#DNEMSK
MOV #BRKMDE,@#DR11S
CLR @#DR11O
RTI
BRK: .BYTE 1,2,4,10,20,40,100,0
DNE: .BYTE 1,2,4,10,20,40,100,0
BRKMSK: 0
DNEMSK: 0
STPDNE: 0
DACCHN: 0
DACDC: 0
DACCHG: 0
PDAC: 0
COUNT: 0
PTIME: 0
TYPADC: 0
INDX: 0
ADCCHN: 0
MAXCHN: 0
COM1: .ASCII /DAC OR ADC(0:1) = /
.BYTE 0
COM2: .ASCII /DAC NUMBER (0:7) = /
.BYTE 0
COM3: .ASCII /CURRENT OR POSITION MODE (0:1) = /
.BYTE 0
COM11: .ASCII /CHECK DONE BIT (0=NO,1=YES) = /
.BYTE 0
COM4: .ASCII /DAC DC VALUE (-2048 : 2047) = /
.BYTE 0
COM5: .ASCII /DAC CHANGE EVERY 5 MSEC = /
.BYTE 0
COM6: .ASCII /TYPE ADC READINGS (0:1)? = /
.BYTE 0
COM7: .ASCII /NUMBER OF CHANNELS TO PRINT (1:32) = /
.BYTE 0
COM8: .ASCII /ADC CHANNEL (0:31) = /
.BYTE 0
COM9: .ASCII /**ERROR** NO ADC DONE SIGNALED/
.BYTE 0
COM13: .ASCII /**ILLEGAL NUMBER**, TRY AGAIN = /
.BYTE 0
TOP: .BYTE 10,10,10,10,10,0
TOPCLR: .BYTE 14,14,14,14,14,14,14,14,0
.EVEN
SPACER: SPACE2
.ASCII /* /
.BYTE 0
SPACE1: SPACE2
.ASCII / /
.BYTE 0
SPACE2: SPACE3
.ASCII / /
.BYTE 0
SPACE3: SPACE4
.ASCII /