mirror of
https://github.com/PDP-10/stacken.git
synced 2026-03-06 19:11:04 +00:00
377 lines
6.9 KiB
Plaintext
377 lines
6.9 KiB
Plaintext
TITLE DBUSY -- Count number of disk UNITS BUSY
|
|
|
|
;COPYRIGHT (C) 1979,1980 BY DIGITAL EQUIPMENT CORPORATION,
|
|
;MAYNARD, MASS.
|
|
;
|
|
;
|
|
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
|
|
;ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
|
|
;INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
|
|
;COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
|
|
;OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
|
|
;TRANSFERRED.
|
|
;
|
|
;THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
|
|
;AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
|
|
;CORPORATION.
|
|
;
|
|
;DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
|
|
;SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
|
|
|
|
;Assembly instructions: .LOAD DBUSY
|
|
|
|
SEARCH MACTEN,UUOSYM,SNUP
|
|
.REQUIRE SNUP
|
|
SALL
|
|
|
|
DEFINE COMAND<
|
|
XX "A",<PUSHJ P,SETALL>
|
|
XX "C",<PUSHJ P,COM.C>
|
|
XX "H",<PUSHJ P,HELP>
|
|
XX "N",<PUSHJ P,SET.RN>
|
|
XX "P",<PUSHJ P,SET.RP>
|
|
XX "R",<PUSHJ P,REFRESH>
|
|
XX "V",<PUSHJ P,SETHPQ>
|
|
XX " ",<PUSHJ P,DATDMP>
|
|
XX "<",<PUSHJ P,SLOWER>
|
|
XX ">",<PUSHJ P,FASTER>
|
|
XX 4,<PUSHJ P,TODDT>
|
|
XX 32,<JRST CONTRZ>
|
|
>
|
|
|
|
DEFINE COUNT(HISTO)<
|
|
CAIL %T1,HSTLEN-1 ;IN RANGE?
|
|
MOVEI %T1,HSTLEN-1 ;NO, USE DEFAULT CASE
|
|
ADD %T1,%R ;RELOCATE OFFSET
|
|
AOS HISTO(%T1) ;HISTOGRAM IT
|
|
>
|
|
|
|
ESC==33
|
|
DEFINE HOME<
|
|
OUTCHR [ESC]
|
|
OUTCHR ["H"]
|
|
>
|
|
DEFINE CLEAR<
|
|
OUTCHR [ESC]
|
|
OUTCHR ["J"]
|
|
>
|
|
DEFINE MOVETO(XP,YP)<
|
|
OUTCHR [ESC]
|
|
OUTCHR ["Y"]
|
|
PUSH P,SECRET
|
|
MOVE SECRET,YP
|
|
ADDI SECRET," "
|
|
OUTCHR SECRET
|
|
MOVE SECRET,XP
|
|
ADDI SECRET," "
|
|
OUTCHR SECRET
|
|
POP P,SECRET
|
|
>
|
|
DEFINE OBYTE(LIST)<IRP LIST,<
|
|
MOVEI T0,LIST
|
|
IDPB T0,T4>
|
|
>
|
|
DEFINE ODEC(WID)<
|
|
SETZB T0,T2
|
|
MOVE T3,[SETZ WID]
|
|
EXTEND T0,[CVTBDO "0"
|
|
" "]
|
|
HALT
|
|
>
|
|
|
|
HSTLEN==20
|
|
NL==10
|
|
|
|
D==1 ; Disk output channel
|
|
IDDNUM==^D<5*6> ; .2 * seconds between screen updates (initial value)
|
|
T0=0
|
|
T1=T0+1
|
|
T2=T1+1
|
|
T3=T2+1
|
|
T4=T3+1
|
|
P1=T4+1
|
|
P2=6
|
|
P3=7
|
|
C=10
|
|
HACK=12
|
|
SECRET=HACK+1
|
|
|
|
MONREF <CHN0CB,.CHSYS,CHNQUL,UNISTS,UNISYS,UNIQUL>
|
|
MONREF <UNYKTP,PCOD,TCOD,TWCOD,TYPRP,TYPRN>
|
|
BRKPNT APRSU1,COLECT
|
|
|
|
DBUSY: JFCL
|
|
RESET
|
|
MOVE P,[-20,,PDL]
|
|
PUSHJ P,ZAPTOT
|
|
SETOM U.TYPE
|
|
SETZM HI.PRI
|
|
MOVEI T1,IDDNUM
|
|
MOVEM T1,DDNUM
|
|
|
|
MOVE T1,[%LDUNI]
|
|
GETTAB T1,
|
|
FATL <GETTAB failure for %LDUNI>
|
|
HLRZM T1,UNIT.P
|
|
PUSHJ P,GETINF##
|
|
REBREAK:PUSHJ P,SCREEN
|
|
PUSHJ P,XWRSNP##
|
|
SETZM COUNTR
|
|
FOO: SOSGE COUNTR
|
|
FOOBAR: PUSHJ P,DATDMP
|
|
SOSL T1,HI.PRI
|
|
JRST CHKV
|
|
FOO3A: SKPINC
|
|
JRST [MOVEI T1,^D200
|
|
HRLI T1,(HB.RTC) ; OR CHARACTER
|
|
HIBER T1,
|
|
JFCL
|
|
SKIPGE HI.PRI
|
|
JRST FOO
|
|
JRST FOOBAR]
|
|
INCHRW T1
|
|
CAIL T1,"a"
|
|
SUBI T1,40
|
|
MOVSI T2,-COMLEN
|
|
CLOOP: CAMN T1,COMTAB(T2)
|
|
XCT COMINS(T2)
|
|
AOBJN T2,CLOOP
|
|
HOME
|
|
MOVETO ([1],[^D22])
|
|
OUTSTR [BYTE (7)ESC,"K",0,0,0]
|
|
JRST FOO ;END OF COMMAND
|
|
|
|
CHKV: JUMPN T1,FOO3A
|
|
HOME
|
|
CLEAR
|
|
PUSHJ P,DATDMP
|
|
CHKV3: HPQ T1, ; TO HPQ 0
|
|
JFCL
|
|
JRST FOO
|
|
|
|
CONTRZ: HOME
|
|
CLEAR
|
|
REMBRK ;REMOVE BREAKPOINTS
|
|
RESET
|
|
EXIT 1,
|
|
HALT .
|
|
JRST REBREAK
|
|
|
|
SETALL: SETOM T1
|
|
JRST SETANY
|
|
SET.RN: SKIPA T1,TYPRN
|
|
SET.RP: MOVE T1,TYPRP
|
|
SETANY: MOVEM T1,U.TYPE
|
|
PUSHJ P,ZAPTOT
|
|
PUSHJ P,SCREEN
|
|
MOVEI T1,1
|
|
SLEEP T1, ; Get some data
|
|
PJRST DATDMP
|
|
|
|
TODDT: HRRZ T1,.JBDDT##
|
|
JUMPN T1,(T1)
|
|
OUTSTR [ASCIZ /? No DDT
|
|
/]
|
|
MOVEI T1,^D200
|
|
HIBER T1,
|
|
JFCL
|
|
POPJ P,
|
|
|
|
REFRESH:PUSHJ P,SCREEN
|
|
PJRST DATDMP
|
|
|
|
FASTER: MOVE T1,DDNUM
|
|
LSH T1,1
|
|
TRO T1,1
|
|
IDIVI T1,3
|
|
MOVEM T1,DDNUM
|
|
MOVEM T1,COUNTR
|
|
POPJ P,
|
|
|
|
SLOWER: MOVE T1,DDNUM
|
|
IMULI T1,3
|
|
ADDI T1,1
|
|
LSH T1,-1
|
|
MOVEM T1,DDNUM
|
|
POPJ P,
|
|
|
|
SETHPQ: SKIPLE HI.PRI
|
|
JRST [SETZB T1,HI.PRI
|
|
JRST CHKV3]
|
|
MOVEI T1,1
|
|
HPQ T1,
|
|
JFCL
|
|
MOVEI T1,^D100
|
|
MOVEM T1,HI.PRI
|
|
POPJ P,
|
|
|
|
COM.C: PUSHJ P,ZAPTOT
|
|
PJRST DATDMP
|
|
|
|
HELP: MOVSI T2,-COMLEN
|
|
OUTSTR [ASCIZ /
|
|
One of: /]
|
|
HLOOP: MOVE T1,COMTAB(T2)
|
|
CAIGE T1,40
|
|
OUTCHR ["^"]
|
|
CAIGE T1,40
|
|
ADDI T1,"A"-1
|
|
OUTCHR T1
|
|
OUTCHR [","]
|
|
AOBJN T2,HLOOP
|
|
OUTSTR [ASCIZ / no carriage return needed./]
|
|
HOME
|
|
OUTSTR [BYTE(7)15,12,0,0,0]
|
|
POPJ P,
|
|
|
|
DATDMP: HOME
|
|
MOVETO ([^D4],[^D00])
|
|
OUTSTR [ASCIZ /Position count/]
|
|
PUSHJ P,TYPTYP
|
|
MOVE P1,[-NL,,PHISTO]
|
|
PUSHJ P,DUMPIT
|
|
MOVETO ([^D4],[^D11])
|
|
OUTSTR [ASCIZ /Transfer count/]
|
|
PUSHJ P,TYPTYP
|
|
MOVE P1,[-NL,,THISTO]
|
|
PUSHJ P,DUMPIT
|
|
OUTSTR [BYTE(7)15,12,12,"!",33,"K",0]
|
|
MOVE T1,DDNUM
|
|
MOVEM T1,COUNTR
|
|
POPJ P,
|
|
|
|
TYPTYP: OUTSTR [ASCIZ / (/]
|
|
MOVE T1,[ASCIZ /???)/]
|
|
SKIPGE T2,U.TYPE
|
|
MOVE T1,[ASCIZ /All)/]
|
|
CAMN T2,TYPRP
|
|
MOVE T1,[ASCIZ /RPx)/]
|
|
CAMN T2,TYPRN
|
|
MOVE T1,[ASCIZ /RNx)/]
|
|
OUTSTR T1
|
|
OUTSTR [BYTE(7)15,12,0,0,0]
|
|
POPJ P,
|
|
|
|
DUMPIT: SETZB P2,P3 ; ZERO TOTAL
|
|
PUSH P,P1
|
|
DTOTAL: ADD P3,(P1)
|
|
AOBJN P1,DTOTAL
|
|
POP P,P1
|
|
DLOOP: MOVE T3,[LINE,,LINE+1]
|
|
SETZM LINE
|
|
BLT T3,LINEND
|
|
MOVE T4,[POINT 7,LINE]
|
|
OBYTE <15,12>
|
|
MOVE T1,P2
|
|
ODEC 2
|
|
OBYTE <" "," ">
|
|
MOVE T1,(P1)
|
|
ODEC 7
|
|
OBYTE <" "," ">
|
|
MOVE T1,(P1)
|
|
IMULI T1,^D100
|
|
IDIV T1,P3 ; P3/ TOTAL
|
|
PUSH P,T1
|
|
ODEC 3
|
|
OBYTE <"%"," ">
|
|
POP P,T1
|
|
JUMPE T1,ELINE
|
|
CAILE T1,^D60
|
|
MOVEI T1,^D60
|
|
STARS: OBYTE <"*">
|
|
SOJG T1,STARS
|
|
ELINE: OBYTE <ESC,"K",0>
|
|
OUTSTR LINE
|
|
AOS P2
|
|
AOBJN P1,DLOOP
|
|
POPJ P,
|
|
|
|
ZAPTOT: MOVE T1,[PHISTO,,PHISTO+1]
|
|
SETZM PHISTO
|
|
BLT T1,PHISTO+HSTLEN
|
|
MOVE T1,[THISTO,,THISTO+1]
|
|
SETZM THISTO
|
|
BLT T1,THISTO+HSTLEN
|
|
POPJ P,
|
|
|
|
SCREEN: HOME
|
|
CLEAR
|
|
POPJ P,
|
|
|
|
;HERE IN EXEC MODE ON A CLOCK TICK (CH7)
|
|
|
|
COLECT: PUSH %P,%T1
|
|
PUSH %P,%T2
|
|
PUSH %P,%T3
|
|
PUSH %P,%T4
|
|
PUSH %P,%U
|
|
MOVE %U,UNIT.P(%R) ; ADDRESS OF 1ST UNIT
|
|
SETZB %T1,%T4
|
|
DO.PQ1: LDB %T2,@UNYKTP(%R) ; GET UNIT TYPE
|
|
SKIPL U.TYPE(%R) ; ALL OK?
|
|
CAMN %T2,U.TYPE(%R) ; OR RIGHT UNIT?
|
|
CAIA ; YES
|
|
JRST DO.NXT(%R)
|
|
MOVE %T3,%U ; T3/ UDB BASE ADDRESS
|
|
ADD %T3,UNISTS(%R) ; T3/ XXXXCB+UNISTS
|
|
MOVE %T3,(%T3) ; GET STATUS FOR THIS UDB
|
|
CAMN %T3,PCOD(%R) ;UNIT POSITIONING?
|
|
AOS %T1 ;EWE-BETCHA
|
|
; CAME %T3,TWCOD(%R) ;TRANSFER WAIT?
|
|
CAMN %T3,TCOD(%R) ;OR ACTIVE?
|
|
AOS %T4 ;YES, COUNT IT
|
|
MOVE %T3,UNIQUL(%R)
|
|
ADD %T3,%U
|
|
; ADD %T1,(%T3) ;PLUS LENGTH OF POSITION QUEUE
|
|
DO.NXT: ADD %U,UNISYS(%R)
|
|
HLRZ %U,(%U)
|
|
JUMPN %U,DO.PQ1(%R)
|
|
COUNT (PHISTO) ;SO MUCH FOR P'S
|
|
MOVE %T1,%T4
|
|
JRST DO.CH9(%R)
|
|
|
|
DO.CHN: MOVE %T2,CHN0CB(%R)
|
|
SETZM %T1
|
|
DO.CH1: SKIPL (%T2) ; WORD 0 = -1 ?
|
|
AOS %T1 ; NO--FILE IN T STATE
|
|
MOVE %T3,CHNQUL(%R)
|
|
ADD %T3,%T2 ; T3/ CHNQUL(THIS CHN DB)
|
|
ADD %T1,(%T3) ; T1/ TWQ ACTIVITY
|
|
MOVE %T3,.CHSYS(%R)
|
|
ADD %T2,%T3
|
|
HLRZ %T2,(%T2) ; T2/ NEXT CHN DB
|
|
JUMPN %T2,DO.CH1(%R)
|
|
DO.CH9: COUNT (THISTO)
|
|
POP %P,%U
|
|
POP %P,%T4
|
|
POP %P,%T3 ;DONE, RESTORE ACS
|
|
POP %P,%T2
|
|
POP %P,%T1
|
|
POPJ %P,
|
|
|
|
PDL: BLOCK 20 ;PDL
|
|
BLOCK 10 ;ABJECT PARANOIA
|
|
PHISTO: BLOCK HSTLEN+1 ;FIRST WORD TO GO TO OUTPUT FILE
|
|
BLOCK 10 ;DITTO
|
|
THISTO: BLOCK HSTLEN+1
|
|
BLOCK 10 ;DATTO
|
|
U.TYPE: EXP -1
|
|
HI.PRI: EXP 0
|
|
UNIT.P: EXP 444444
|
|
COUNTR: BLOCK 1
|
|
LINE: BLOCK ^D30
|
|
LINEND: BLOCK 1
|
|
DDNUM: EXP 0
|
|
|
|
DEFINE XX(AA,BB)<
|
|
EXP AA
|
|
>
|
|
COMTAB: COMAND
|
|
COMLEN=.-COMTAB
|
|
|
|
DEFINE XX(AA,BB)<
|
|
BB
|
|
>
|
|
COMINS: COMAND
|
|
END DBUSY
|