www-server:/usr/www/docs/Divisions/np1/tamidaq/info/module_macro.txt.v1.1 J11 プログラム内の Module 読み込み用マクロコマンド ver 1.1 21-JAN-1995 ;============================================================================== ; MACRO definitions to read modules. ; Version 1.00 30-JUL-1995 by A. Tamii ; Version 1.10 12-DEC-1995 by A. Tamii (add P1216F) ; Version 1.11 21-JAN-1996 by A. Tamii (correct usages) ;============================================================================== ;****************************************************************************** ; B2351 --- Read BiRa 2351 (NIM-IN) ; ; Usage: B2351 10. ; read B2351 at N=10 ; B2351 10.,r1 ; read B2351 at N=10 and store it to r1 ; ; no waitq ; register destroyed (none) ; ;****************************************************************************** .macro B2351,nn,dd ; BiRa NimIn .narg na$rg f0c mov #,(r5)+ .if eq na$rg-2 .ift nar nn,0,dd mov dd,(r5)+ .iff nars nn,0 .endc ; naf nn,0,9. .endm ;****************************************************************************** ; INTREG --- Read Interrupt Register ; ; Usage: INTREG 10. ; read int. reg. at N=10 ; INTREG 10.,r1 ; read int. reg. at N=10 and store it to r1 ; ; no waitq ; register destroyed (none) ; ;****************************************************************************** .macro INTREG,nn,dd ; Interrupt Register .narg na$rg f0c mov #,(r5)+ .if eq na$rg-2 .ift nar nn,0,dd mov dd,(r5)+ .iff nars nn,0 .endc ; naf nn,0,9. .endm ;****************************************************************************** ; COIN --- Read Coincidence Register ; ; Usage: COIN 10. ; read coin. reg. at N=10 ; COIN 10.,r1 ; read coin. reg. at N=10 and store it to r1 ; ; no waitq ; register destroyed (none) ; ;****************************************************************************** .macro COIN,nn,dd ; Coincidence Register .narg na$rg f0c mov #,(r5)+ .if eq na$rg-2 .ift nar nn,0,dd mov dd,(r5)+ .iff nars nn,0 .endc ; naf nn,0,9. .endm ;****************************************************************************** ; L2551 --- Read LeCroy 2551 (Scaler) ; ; Usage: L2551 10. ; read L2551 at N=10 ch. 0-11 ; L2551 10.,8. ; read L2551 at N=10 ch. 0-7 ; L2551 10.,,<0,1,2,5> ; read L2551 at N=10 ch. 0, 1, 2 and 5 ; ; no waitq ; register destroyed (none) ; ;****************************************************************************** .macro L2551,nn,naa,raa ; LeCroy Scaler .narg na$rg f0c n$aa=12. .if eq na$rg-2 n$aa=naa .endc .if eq na$rg-3 n$aa=0 .irp aa$a, n$aa=n$aa+1 .endm .iftf mov #>,(r5)+ .ift .irp aa$a, narsd nn,aa$a .endm .iff aa$a=0 .rept n$aa narsd nn,aa$a aa$a=aa$a+1 .endm .endc .endm ;****************************************************************************** ; SCLDMY --- Dummy Scaler Read (Value=0xFFFFFFFF) ; ; Usage: SCLDMY ; insert dummy scaler values (12 channels) ; SCLDMY 10. ; insert dummy scaler values (10 channels) ; ; no waitq ; register destroyed (none) ; ;****************************************************************************** .macro SCLDMY naa ; Dummy Scaler .narg na$rg n$aa=12. .iif eq na$rg-1 n$aa=naa .endc mov #>,(r5)+ .rept n$aa*2 mov #177777,(r5)+ .endm .endm ;****************************************************************************** ; L2249 --- Read LeCroy 2249 (ADC) ; ; Usage: L2249 10. ; read L2249 at N=10 ch. 0-11 ; L2249 10.,8. ; read L2249 at N=10 ch. 0-7 ; L2249 10.,,<0,1,2,5> ; read L2249 at N=10 ch. 0, 1, 2 and 5 ; ; waitq 200 ; register destroyed (none) ; ;****************************************************************************** .macro L2249,nn,naa,raa,?lln ; LeCroy ADC waitq nn,0.,8.,200.,lln,RGADC ; Wait Converstion (200*1.5us) .narg na$rg n$aa=12. .if eq na$rg-2 n$aa=naa .endc .if eq na$rg-3 n$aa=0 .irp aa$a, n$aa=n$aa+1 .endm .iftf f0c mov #,(r5)+ .ift .irp aa$a, nars nn,aa$a .endm .iff aa$a=0 .rept n$aa nars nn,aa$a aa$a=aa$a+1 .endm .endc lln: ; naf nn,0,9. .endm ;****************************************************************************** ; L2249L --- Read LeCroy 2249 (ADC) for LAS ; ; Usage: L2249L 10. ; read L2249 at N=10 ch. 0-11 ; L2249L 10.,8. ; read L2249 at N=10 ch. 0-7 ; L2249L 10.,,<0,1,2,5> ; read L2249 at N=10 ch. 0, 1, 2 and 5 ; ; waitq 200 ; register destroyed (none) ; ;****************************************************************************** .macro L2249L,nn,naa,raa,?lln ; LeCroy ADC (LAS) waitq nn,0.,8.,200.,lln,RGADCL ; Wait Converstion (200*1.5us) .narg na$rg n$aa=12. .if eq na$rg-2 n$aa=naa .endc .if eq na$rg-3 n$aa=0 .irp aa$a, n$aa=n$aa+1 .endm .iftf f0c mov #,(r5)+ .ift .irp aa$a, nars nn,aa$a .endm .iff aa$a=0 .rept n$aa nars nn,aa$a aa$a=aa$a+1 .endm .endc lln: ; naf nn,0,9. .endm ;****************************************************************************** ; PADC --- Read Phillips ADC ; ; Usage: PADC 10. ; read ADC at N=10 ch. 0-11 ; PADC 10.,8. ; read ADC at N=10 ch. 0-7 ; PADC 10.,,<0,1,2,5> ; read ADC at N=10 ch. 0, 1, 2 and 5 ; ; no-waitq ; register destroyed (none) ; ;****************************************************************************** .macro PADC,nn,naa,raa .narg na$rg f0c n$aa=12. .if eq na$rg-2 n$aa=naa .endc .if eq na$rg-3 n$aa=0 .irp aa$a, n$aa=n$aa+1 .endm .iftf mov #,(r5)+ .ift .irp aa$a, nars nn,aa$a .endm .iff aa$a=0 .rept n$aa nars nn,aa$a aa$a=aa$a+1 .endm ; naf nn,0,9. .endc .endm ;****************************************************************************** ; HADC --- Read Hosin ADC ; ; Usage: HADC 10. ; read Hosin at N=10 ch. 0-15 ; HADC 10.,8. ; read Hosin at N=10 ch. 0-7 ; HADC 10.,,<0,1,2,5> ; read Hosin at N=10 ch. 0, 1, 2 and 5 ; ; waitq 200 ; register destroyed (none) ; ;****************************************************************************** .macro HADC,nn,naa,raa,?lln ; Hosin ADC waitq nn,0.,8.,200.,lln,RGADC ; Wait Converstion (200*1.5us) .narg na$rg n$aa=15. .if eq na$rg-2 n$aa=naa .endc .if eq na$rg-3 n$aa=0 .irp aa$a, n$aa=n$aa+1 .endm .iftf f0c mov #,(r5)+ .ift .irp aa$a, nars nn,aa$a .endm .iff aa$a=0 .rept n$aa nars nn,aa$a aa$a=aa$a+1 .endm .endc lln: ; naf nn,0,9. .endm ;****************************************************************************** ; PADC --- Read Repic ADC ; ; Usage: RADC 10. ; read Repic ADC at N=10 ch. 0-15 ; RADC 10.,8. ; read Repic ADC at N=10 ch. 0-7 ; RADC 10.,,<0,1,2,5> ; read Repic ADC at N=10 ch. 0, 1, 2 and 5 ; ; waitq 200 ; register destroyed (none) ; ;****************************************************************************** .macro RADC,nn,naa,raa,?lln ; Repic ADC waitq nn,0.,8.,200.,lln,RGADC ; Wait Converstion (200*1.5us) .narg na$rg n$aa=15. .if eq na$rg-2 n$aa=naa .endc .if eq na$rg-3 n$aa=0 .irp aa$a, n$aa=n$aa+1 .endm .iftf f0c mov #,(r5)+ .ift .irp aa$a, nars nn,aa$a .endm .iff aa$a=0 .rept n$aa nars nn,aa$a aa$a=aa$a+1 .endm .endc lln: ; naf nn,0,9. .endm ;****************************************************************************** ; L2228 --- Read LeCroy 2228 (TDC) ; ; Usage: L2228 10. ; read L2228 at N=10 ch. 0-11 ; L2228 10.,8. ; read L2228 at N=10 ch. 0-7 ; L2228 10.,,<0,1,2,5> ; read L2228 at N=10 ch. 0, 1, 2 and 5 ; ; waitq 60 ; register destroyed (none) ; ;****************************************************************************** .macro L2228,nn,naa,raa,?lln ; LeCroy TDC waitq nn,0.,8.,60.,lln,RGTDC ; Wait Converstion (60*1.5us) .narg na$rg n$aa=12. .if eq na$rg-2 n$aa=naa .endc .if eq na$rg-3 n$aa=0 .irp aa$a, n$aa=n$aa+1 .endm .iftf f0c mov #>,(r5)+ .ift .irp aa$a, nars nn,aa$a .endm .iff aa$a=0 .rept n$aa nars nn,aa$a aa$a=aa$a+1 .endm .endc lln: ; naf nn,0,9. .endm ;****************************************************************************** ; L2228L --- Read LeCroy 2228 (TDC) (LAS) ; ; Usage: L2228 10. ; read L2228 at N=10 ch. 0-11 ; L2228 10.,8. ; read L2228 at N=10 ch. 0-7 ; L2228 10.,,<0,1,2,5> ; read L2228 at N=10 ch. 0, 1, 2 and 5 ; ; waitq 60 ; register destroyed (none) ; ;****************************************************************************** .macro L2228L,nn,naa,raa,?lln ; LeCroy TDC LAS waitq nn,0.,8.,60.,lln,RGTDCL ; Wait Converstion (60*1.5us) .narg na$rg n$aa=12. .if eq na$rg-2 n$aa=naa .endc .if eq na$rg-3 n$aa=0 .irp aa$a, n$aa=n$aa+1 .endm .iftf f0c mov #>,(r5)+ .ift .irp aa$a, nars nn,aa$a .endm .iff aa$a=0 .rept n$aa nars nn,aa$a aa$a=aa$a+1 .endm .endc lln: ; naf nn,0,9. .endm ;****************************************************************************** ; PTDC --- Read Phillips TDC ; ; Usage: PTDC 10. ; read TDC at N=10 ch. 0-11 ; PTDC 10.,8. ; read TDC at N=10 ch. 0-7 ; PTDC 10.,,<0,1,2,5> ; read TDC at N=10 ch. 0, 1, 2 and 5 ; ; no-waitq ; register destroyed (none) ; ;****************************************************************************** .macro PTDC,nn,naa,raa ; Phillips TDC .narg na$rg n$aa=12. .if eq na$rg-2 n$aa=naa .endc .if eq na$rg-3 n$aa=0 .irp aa$a, n$aa=n$aa+1 .endm .iftf f0c mov #>,(r5)+ .ift .irp aa$a, nars nn,aa$a .endm .iff aa$a=0 .rept n$aa nars nn,aa$a aa$a=aa$a+1 .endm .endc ; naf nn,0,9. .endm ;****************************************************************************** ; PTDCL --- Read Phillips TDC (LAS) ; ; Usage: PTDCL 10. ; read TDC at N=10 ch. 0-11 ; PTDCL 10.,8. ; read TDC at N=10 ch. 0-7 ; PTDCL 10.,,<0,1,2,5> ; read TDC at N=10 ch. 0, 1, 2 and 5 ; ; no-waitq ; register destroyed (none) ; ;****************************************************************************** .macro PTDCL,nn,naa,raa ; Phillips TDC-LAS .narg na$rg n$aa=12. .if eq na$rg-2 n$aa=naa .endc .if eq na$rg-3 n$aa=0 .irp aa$a, n$aa=n$aa+1 .endm .iftf f0c mov #>,(r5)+ .ift .irp aa$a, nars nn,aa$a .endm .iff aa$a=0 .rept n$aa nars nn,aa$a aa$a=aa$a+1 .endm .endc ; naf nn,0,9. .endm ;****************************************************************************** ; L4299 --- Read LeCroy 4299 ; ; Usage: L4299 10.,v ; read 4299 at N=10 (VDC) ; L4299 10.,m ; read 4299 at N=10 (MWPC) ; ; waitq 1000 ; register destroyed (r0,r1,r2) ; ;****************************************************************************** .macro L4299,nn,type,?l1,?l2,?l3,?ls,?ll,?lln id$n=RGVDCN .iif idn type v id$n=RGVDCN ; VDC data .iif idn type m id$n=RGPCSN ; MWPC data waitq nn,0.,8.,1000.,lln,id$n ; Wait Conversion (1000*1.5usec) f 2 mov #id$n,(r5)+ mov r5,r1 nar nn,0,r2 mov r2,(r5)+ bic #170000,r2 cmp #100,r2 ; if the lenth is g.e. 100 then branch to l1 ble l1 jmp l2 l1: cmp #1000,r2 ; supress the length l.e. 1000 bge l3 mov #1000,r2 l3: mov r2,r0 ash #-6,r0 ; shift right 6 bits (2^6 = 100) ll: .rept 100 nars nn,0 .endm dec r0 beq l2 jmp ll l2: bic #177700,r2 ; get lowest 6 bits neg r2 add #100,r2 ash #2,r2 ; r2 <<= 2 jmp ls(r2) ls: .rept 100 nars nn,0 .endm mov r5,r0 sub r1,r0 asr r0 ; bic #170000,r0 bis r0,-(r1) lln: ; naf nn,0,9. .endm ;****************************************************************************** ; L4299N --- Read LeCroy 4299 (No-WaitQ) ; ; Usage: L4299N 10.,v ; read 4299 at N=10 (VDC) ; L4299N 10.,m ; read 4299 at N=10 (MWPC) ; ; no-waitq ; register destroyed (r0,r1,r2) ; ;****************************************************************************** .macro L4299N,nn,type,?l1,?l2,?l3,?ls,?ll id$n=RGVDCN .iif idn type v id$n=RGVDCN ; VDC data .iif idn type m id$n=RGPCSN ; MWPC data f 2 mov #id$n,(r5)+ mov r5,r1 nar nn,0,r2 mov r2,(r5)+ bic #170000,r2 cmp #100,r2 ; if the lenth is g.e. 100 then branch to l1 ble l1 jmp l2 l1: cmp #1000,r2 ; supress the length l.e. 1000 bge l3 mov #1000,r2 l3: mov r2,r0 ash #-6,r0 ; shift right 6 bits (2^6 = 100) ll: .rept 100 nars nn,0 .endm dec r0 beq l2 jmp ll l2: bic #177700,r2 ; get lowest 6 bits neg r2 add #100,r2 ash #2,r2 ; r2 <<= 2 jmp ls(r2) ls: .rept 100 nars nn,0 .endm mov r5,r0 sub r1,r0 asr r0 ; bic #170000,r0 bis r0,-(r1) ; naf nn,0,9. .endm ;****************************************************************************** ; L4300 --- Read LeCroy 4300B (FERA/FERET) ; ; Usage: L4300 10.,a ; read 4300 at N=10 (FERA-ADC) ; L4300 10.,t ; read 4300 at N=10 (FERET-TDC) ; ; waitq 10 ; register destroyed (r0,r1,r2) ; ;****************************************************************************** .macro L4300,nn,type,?ll,?lln id$n=RGFERA .iif idn type a id$n=RGFERA ; ADC data .iif idn type t id$n=RGFERE ; TDC data waitq nn,0.,8.,10,lln,id$n ; Wait Conversion (10*1.5us) f 2 mov #id$n,(r5)+ mov r5,r1 nar nn,0,r2 mov r2,(r5)+ ash #-9.,r2 ; get (word count<<2) bic #177703,r2 beq ll ; word count = 20 neg r2 add #100,r2 ; 100 = 20<<2 jmp ll(r2) ll: .rept 20 nars nn,0 .endm mov r5,r0 sub r1,r0 asr r0 bis r0,-(r1) lln: ; naf nn,0,9. .endm ;****************************************************************************** ; P1612F --- Read PANTECHNIK 1612F (QDC) ; ; Usage: P1612F 10. ; read 1612F at N=10 ; ; waitq 80 ; register destroyed (r0,r1,r2) ; ;****************************************************************************** .macro P1612F,nn,?q1,?rq1,?rq2,?ll1,?ll2,?lln1,?lln2,?lle waitq nn,0.,8.,80.,lln1 ; Wait Conversion (80*1.5us) f 2 mov #RGPQDC,(r5)+ ; set default region header word mov r5,r1 ; copy region header pointer nar nn,0,r2 ; read header word of the QDC tstq ; test Q response bmi q1 ; if Q=1 jmp lln2 ; end q1: bit #1,r2 ; test the lowest bit of VSN beq rq1 ; read QDC#1 mov #RGPQDC,(r5)+ ; set default region header word mov r5,r1 ; copy region header pointer jmp rq2 ; read QDC#2 rq1: mov r2,(r5)+ ; write header word ash #-9.,r2 ; get (word count<<2) bic #177743,r2 beq ll1 ; word count = 10 (8.) neg r2 add #40,r2 ; 40 = 10<<2 jmp ll1(r2) ll1: .rept 10 nars nn,0 .endm mov r5,r0 sub r1,r0 asr r0 bis r0,-(r1) mov #RGPQDC,(r5)+ ; set default region header word mov r5,r1 ; copy region header pointer nar nn,0,r2 ; read header word of the QDC #2 tstq ; test Q response bmi rq2 ; read qdc 1 jmp lle ; go to end rq2: mov r2,(r5)+ ; write header word ash #-9.,r2 ; get (word count<<2) bic #177743,r2 beq ll2 ; word count = 10 (8.) neg r2 add #40,r2 ; 40 = 10<<2 jmp ll2(r2) ll2: .rept 10 nars nn,0 .endm mov r5,r0 sub r1,r0 asr r0 bis r0,-(r1) br lle lln1: mov #RGPQDC,(r5)+ lln2: mov #RGPQDC,(r5)+ lle: ; naf nn,0,9. .endm ;****************************************************************************** ; P1612N --- Read PANTECHNIK 1612F (QDC) No-WaitQ ; ; Usage: P1612N 10. ; read 1612F at N=10 ; ; no waitq ; register destroyed (r0,r1,r2) ; ;****************************************************************************** .macro P1612N,nn,?q1,?rq1,?rq2,?ll1,?ll2,?lln1,?lln2,?lle f 2 mov #RGPQDC,(r5)+ ; set default region header word mov r5,r1 ; copy region header pointer nar nn,0,r2 ; read header word of the QDC tstq ; test Q response bmi q1 ; if Q=1 jmp lln2 ; end q1: bit #1,r2 ; test the lowest bit of VSN beq rq1 ; read QDC#1 mov #RGPQDC,(r5)+ ; set default region header word mov r5,r1 ; copy region header pointer jmp rq2 ; read QDC#2 rq1: mov r2,(r5)+ ; write header word ash #-9.,r2 ; get (word count<<2) bic #177743,r2 beq ll1 ; word count = 10 (8.) neg r2 add #40,r2 ; 40 = 10<<2 jmp ll1(r2) ll1: .rept 10 nars nn,0 .endm mov r5,r0 sub r1,r0 asr r0 bis r0,-(r1) mov #RGPQDC,(r5)+ ; set default region header word mov r5,r1 ; copy region header pointer nar nn,0,r2 ; read header word of the QDC #2 tstq ; test Q response bmi rq2 ; read qdc 1 jmp lle ; go to end rq2: mov r2,(r5)+ ; write header word ash #-9.,r2 ; get (word count<<2) bic #177743,r2 beq ll2 ; word count = 10 (8.) neg r2 add #40,r2 ; 40 = 10<<2 jmp ll2(r2) ll2: .rept 10 nars nn,0 .endm mov r5,r0 sub r1,r0 asr r0 bis r0,-(r1) br lle lln1: mov #RGPQDC,(r5)+ lln2: mov #RGPQDC,(r5)+ lle: ; naf nn,0,9. .endm ;****************************************************************************** ; P812F --- Read PANTECHNIK 812F (TDC) ; ; Usage: P812F 10. ; read 812F at N=10 ; P812F 10.,jp1 ; read 812F at N=10 and ; if there is no data, jump to jp1 ; ; waitq 80 ; register destroyed (r0,r1,r2) ; ;****************************************************************************** .macro P812F,nn,jp,?rd,?ll,?lln .narg na$rg .if eq na$rg-2 .ift waitq nn,0.,8.,80.,jp,RGPTDC ; Wait Conversion (80*1.5us) .iff waitq nn,0.,8.,80.,lln,RGPTDC ; Wait Conversion (80*1.5us) .endc f 2 mov #RGPTDC,(r5)+ ; set default region header word mov r5,r1 ; copy region header pointer nar nn,0,r2 ; read header word of the TDC tstq ; test Q response bmi rd ; if Q=1 .if eq na$rg-2 .ift jmp jp ; end .iff jmp lln ; end .endc rd: mov r2,(r5)+ ; write header word ash #-9.,r2 ; get (word count<<2) bic #177743,r2 beq ll ; word count = 10 (8.) neg r2 add #40,r2 ; 40 = 10<<2 jmp ll(r2) ll: .rept 10 nars nn,0 .endm mov r5,r0 sub r1,r0 asr r0 bis r0,-(r1) ; br lln lln: ; naf nn,0,9. .endm ;****************************************************************************** ; P812N --- Read PANTECHNIK 812F (TDC) No-WaitQ ; ; Usage: P812N 10. ; read 812F at N=10 ; P812N 10.,jp1 ; read 812F at N=10 and ; if there is no data, jump to jp1 ; ; no waitq ; register destroyed (r0,r1,r2) ; ;****************************************************************************** .macro P812N,nn,jp,?rd,?ll,?lln f 2 mov #RGPTDC,(r5)+ ; set default region header word mov r5,r1 ; copy region header pointer nar nn,0,r2 ; read header word of the TDC tstq ; test Q response bmi rd ; if Q=1 .if eq na$rg-2 .ift jmp jp ; end .iff jmp lln ; end .endc rd: mov r2,(r5)+ ; write header word ash #-9.,r2 ; get (word count<<2) bic #177743,r2 beq ll ; word count = 10 (8.) neg r2 add #40,r2 ; 40 = 10<<2 jmp ll(r2) ll: .rept 10 nars nn,0 .endm mov r5,r0 sub r1,r0 asr r0 bis r0,-(r1) ; br lln lln: ; naf nn,0,9. .endm