.TITLE CDRTB DCB,UCB & SCB .IDENT /03/ ; ; modified 9-aug-79 to allow FM#4 to be used for programmable target ; ; modified 25-JUN-79 to use a seperate unit for each addressable ; memory in the Comtal. This includes each colr memory and each ; function and each graphic memory ! ; This will provide a much more transportable system architecture. ; ; modified 28-NOV-78 to allow each graphics line to be address ; instead of being addressed as a blk of 8 lines ; ; modified 11-DEC-78 to use IO.INL as special control function ; code ,= "2400 function code = 5 sub = 0 ; first word of DPB is sent directly to Comtal to alter CRT picture ; ; Modified 3-jan-79 to use ERL=4 to enable errloging from this ; device ! ; ; RSX11M BL22 VERSION 3.1 ; ;IMAGE DISPLAY DEVICE TABLES ; .MCALL DEVDF$,HWDDF$ DEVDF$ HWDDF$ ; LD$CD==1 ;WE ARE A LOADABLE DRIVER. ; ERL=0 .IIF DF E$$DVC,ERL=4 ;enable err logging from this device ; ; ; IMAGE DISPLAY DEVICE CONTROL BLOCK (DCB) ; .IF NDF LD$CD .IFTF $CDDAT::.WORD 0 ;LINK TO NEXT DCB .WORD .CD0 ;LINK TO UCB .ASCII /CD/ ;DEVICE NAME .BYTE 0,16 ;LOW & HIGH UNIT NUMBERS ; user will ASN new names to many units .WORD .CD1-.CD0 ;UCB LENGTH (BYTES) .IFT .WORD $CDTBL ;DRIVER DISPATCH TABLE ADDRESS .IFF .WORD 0 ;0 FOR LOADABLE DRIVER .IFTF ;UPDATED 3-JAN-79 to look like DB:,DK: .WORD 177177 ;LEGAL FUNCTION MASK 0-15 .WORD 170 ;CONTROL FUNCTION MASK 0-15 honor 3,4,5,6 .WORD 0 ;NO-OPED FUNCTION MASK 0-15 .WORD 177000 ;ACP FUNCTION MASK 0-15 ; .WORD 000377 ;LEGAL FUNCTION MASK 16-31 .WORD 000000 ;CONTROL FUNCTION MASK 16-31 .WORD 0 ;NO-OPED FUNCTION MASK 16-31 .WORD 377 ;ACP FUNCTION MASK 16-31 .IF DF L$$DRV .WORD 0 ;ADDRESS OF PARTITION CONTROL BLOCK .ENDC ; ; IMAGE DISPLAY UNIT CONTROL BLOCKS (UCB'S) ; ; ; IMAGE MEMORY #1 ; .IF DF M$$MUP .WORD 0 ;MULTIUSER PROTECTION CODE .IFTF .CD0:: .WORD $CDDAT ;POINTER TO DCB .WORD .-2 ;REDIRECT POINTER .BYTE UC.ALG!UC.NPR!1,US.MNT ;CONTROL FLAGS,UNIT STATUS .BYTE 0,0 ;UNIT #,STATUS EXT. .WORD DV.DIR!DV.MNT!DV.F11 ;CHARACTERISTICS WORD #1 .WORD 0 ;CHARACTERISTICS WORD #2 .WORD 512. ;number of raster lines CHARACTERISTICS WORD #3 .WORD 512. ;bytes per line DEFAULT BUFFER SIZE (BYTES) .WORD $CD0 ;SCB POINTER .WORD 0 ;ATTACH POINTER .WORD 0,0 ;BUFFER ADDRESS .WORD 0 ;BYTE COUNT ; ; ; IMAGE MEMORY #2 ; .IFT .WORD 0 ;MULTIUSER PROTECTION CODE .IFTF .CD1:: .WORD $CDDAT ;POINTER TO DCB .WORD .-2 ;REDIRECT POINTER .BYTE UC.ALG!UC.NPR!1,US.MNT ;CONTROL FLAGS,UNIT STATUS .BYTE 1,0 ;UNIT #,STATUS EXT. .WORD DV.DIR!DV.MNT!DV.F11 ;CHARACTERISTICS WORD #1 .WORD 0 ;CHARACTERISTICS WORD #2 .WORD 512. ;CHARACTERISTICS WORD #3 .WORD 512. ;DEFAULT BUFFER SIZE (BYTES) .WORD $CD0 ;SCB POINTER .WORD 0 ;ATTACH POINTER .WORD 0,0 ;BUFFER ADDRESS .WORD 0 ;BYTE COUNT ; ; ; IMAGE MEMORY #3 ; .IFT .WORD 0 ;MULTIUSER PROTECTION CODE .IFTF .CD2:: .WORD $CDDAT ;POINTER TO DCB .WORD .-2 ;REDIRECT POINTER .BYTE UC.ALG!UC.NPR!1,US.MNT ;CONTROL FLAGS,UNIT STATUS .BYTE 2,US.OFL!0 ;UNIT #,STATUS EXT. .WORD DV.DIR!DV.MNT!DV.F11 ;CHARACTERISTICS WORD #1 .WORD 0 ;CHARACTERISTICS WORD #2 .WORD 512. ;CHARACTERISTICS WORD #3 .WORD 512. ;DEFAULT BUFFER SIZE (BYTES) .WORD $CD0 ;SCB POINTER .WORD 0 ;ATTACH POINTER .WORD 0,0 ;BUFFER ADDRESS .WORD 0 ;BYTE COUNT ; ; ; GRAPHIC MEMORY #1 ; .IFT .WORD 0 ;MULTIUSER PROTECTION CODE .IFTF .CD3:: .WORD $CDDAT ;POINTER TO DCB .WORD .-2 ;REDIRECT POINTER .BYTE UC.ALG!UC.NPR!1,US.MNT ;CONTROL FLAGS,UNIT STATUS .BYTE 3,0 ;UNIT #,STATUS EXT. .WORD DV.DIR!DV.MNT!DV.F11 ;CHARACTERISTICS WORD #1 .WORD 0 ;CHARACTERISTICS WORD #2 .WORD 512. ;number of raster lines CHARACTERISTICS WORD #3 ;512. blks of 64. bytes for 1 graphics memory ;each blk is 1. raster lines of data.Therefore ;user can read/write 1 line minimum. ;there are 512. logical blks per graphics memory ;each a raster line of 512 bits(64bytes) .WORD 64. ;DEFAULT BUFFER SIZE (BYTES) .WORD $CD0 ;SCB POINTER .WORD 0 ;ATTACH POINTER .WORD 0,0 ;BUFFER ADDRESS .WORD 0 ;BYTE COUNT ; ; GRAPHIC MEMORY #2 ; .IFT .WORD 0 ;MULTIUSER PROTECTION CODE .IFTF .CD4:: .WORD $CDDAT ;POINTER TO DCB .WORD .-2 ;REDIRECT POINTER .BYTE UC.ALG!UC.NPR!1,US.MNT ;CONTROL FLAGS,UNIT STATUS .BYTE 4,0 ;UNIT #,STATUS EXT. .WORD DV.DIR!DV.MNT!DV.F11 ;CHARACTERISTICS WORD #1 .WORD 0 ;CHARACTERISTICS WORD #2 .WORD 512. ;number of raster lines CHARACTERISTICS WORD #3 ;512. blks of 64. bytes for 1 graphics memory ;each blk is 1. raster lines of data.Therefore ;user can read/write 1 line minimum. ;there are 512. logical blks per graphics memory ;each a raster line of 512 bits(64bytes) .WORD 64. ;DEFAULT BUFFER SIZE (BYTES) .WORD $CD0 ;SCB POINTER .WORD 0 ;ATTACH POINTER .WORD 0,0 ;BUFFER ADDRESS .WORD 0 ;BYTE COUNT ; ; GRAPHIC MEMORY #3 ; .IFT .WORD 0 ;MULTIUSER PROTECTION CODE .IFTF .CD5:: .WORD $CDDAT ;POINTER TO DCB .WORD .-2 ;REDIRECT POINTER .BYTE UC.ALG!UC.NPR!1,US.MNT ;CONTROL FLAGS,UNIT STATUS .BYTE 5,0 ;UNIT #,STATUS EXT. .WORD DV.DIR!DV.MNT!DV.F11 ;CHARACTERISTICS WORD #1 .WORD 0 ;CHARACTERISTICS WORD #2 .WORD 512. ;number of raster lines CHARACTERISTICS WORD #3 ;512. blks of 64. bytes for 1 graphics memory ;each blk is 1. raster lines of data.Therefore ;user can read/write 1 line minimum. ;there are 512. logical blks per graphics memory ;each a raster line of 512 bits(64bytes) .WORD 64. ;DEFAULT BUFFER SIZE (BYTES) .WORD $CD0 ;SCB POINTER .WORD 0 ;ATTACH POINTER .WORD 0,0 ;BUFFER ADDRESS .WORD 0 ;BYTE COUNT ; ; GRAPHIC MEMORY #4 ; .IFT .WORD 0 ;MULTIUSER PROTECTION CODE .IFTF .CD6:: .WORD $CDDAT ;POINTER TO DCB .WORD .-2 ;REDIRECT POINTER .BYTE UC.ALG!UC.NPR!1,US.MNT ;CONTROL FLAGS,UNIT STATUS .BYTE 6,0 ;UNIT #,STATUS EXT. .WORD DV.DIR!DV.MNT!DV.F11 ;CHARACTERISTICS WORD #1 .WORD 0 ;CHARACTERISTICS WORD #2 .WORD 512. ;number of raster lines CHARACTERISTICS WORD #3 ;512. blks of 64. bytes for 1 graphics memory ;each blk is 1. raster lines of data.Therefore ;user can read/write 1 line minimum. ;there are 512. logical blks per graphics memory ;each a raster line of 512 bits(64bytes) .WORD 64. ;DEFAULT BUFFER SIZE (BYTES) .WORD $CD0 ;SCB POINTER .WORD 0 ;ATTACH POINTER .WORD 0,0 ;BUFFER ADDRESS .WORD 0 ;BYTE COUNT ; ; ; FUNCTION MEMORY #1 ; .IFT .WORD 0 ;MULTIUSER PROTECTION CODE .IFTF .CD7:: .WORD $CDDAT ;POINTER TO DCB .WORD .-2 ;REDIRECT POINTER .BYTE UC.ALG!UC.NPR!1,US.MNT ;CONTROL FLAGS,UNIT STATUS .BYTE 7,0 ;UNIT #,STATUS EXT. .WORD DV.DIR!DV.MNT!DV.F11 ;CHARACTERISTICS WORD #1 .WORD 0 ;CHARACTERISTICS WORD #2 .WORD 1. ;CHARACTERISTICS WORD #3 ;1 blks of 512. bytes each. ;low byte of each word is used hi byte is not. .WORD 512. ;DEFAULT BUFFER SIZE (BYTES) .WORD $CD0 ;SCB POINTER .WORD 0 ;ATTACH POINTER .WORD 0,0 ;BUFFER ADDRESS .WORD 0 ;BYTE COUNT ; ; FUNCTION MEMORY #2 ; .IFT .WORD 0 ;MULTIUSER PROTECTION CODE .IFTF .CD10:: .WORD $CDDAT ;POINTER TO DCB .WORD .-2 ;REDIRECT POINTER .BYTE UC.ALG!UC.NPR!1,US.MNT ;CONTROL FLAGS,UNIT STATUS .BYTE 10,0 ;UNIT #,STATUS EXT. .WORD DV.DIR!DV.MNT!DV.F11 ;CHARACTERISTICS WORD #1 .WORD 0 ;CHARACTERISTICS WORD #2 .WORD 1. ;CHARACTERISTICS WORD #3 ;1 blks of 512. bytes each. ;low byte of each word is used hi byte is not. .WORD 512. ;DEFAULT BUFFER SIZE (BYTES) .WORD $CD0 ;SCB POINTER .WORD 0 ;ATTACH POINTER .WORD 0,0 ;BUFFER ADDRESS .WORD 0 ;BYTE COUNT ; ; FUNCTION MEMORY #3 ; .IFT .WORD 0 ;MULTIUSER PROTECTION CODE .IFTF .CD11:: .WORD $CDDAT ;POINTER TO DCB .WORD .-2 ;REDIRECT POINTER .BYTE UC.ALG!UC.NPR!1,US.MNT ;CONTROL FLAGS,UNIT STATUS .BYTE 11,0 ;UNIT #,STATUS EXT. .WORD DV.DIR!DV.MNT!DV.F11 ;CHARACTERISTICS WORD #1 .WORD 0 ;CHARACTERISTICS WORD #2 .WORD 1. ;CHARACTERISTICS WORD #3 ;1 blks of 512. bytes each. ;low byte of each word is used hi byte is not. .WORD 512. ;DEFAULT BUFFER SIZE (BYTES) .WORD $CD0 ;SCB POINTER .WORD 0 ;ATTACH POINTER .WORD 0,0 ;BUFFER ADDRESS .WORD 0 ;BYTE COUNT ; ; FUNCTION MEMORY #4 -programmable target ; .IFT .WORD 0 ;MULTIUSER PROTECTION CODE .IFTF .CD12:: .WORD $CDDAT ;POINTER TO DCB .WORD .-2 ;REDIRECT POINTER .BYTE UC.ALG!UC.NPR!1,US.MNT ;CONTROL FLAGS,UNIT STATUS .BYTE 12,0 ;UNIT #,STATUS EXT. .WORD DV.DIR!DV.MNT!DV.F11 ;CHARACTERISTICS WORD #1 .WORD 0 ;CHARACTERISTICS WORD #2 .WORD 1. ;CHARACTERISTICS WORD #3 ;1 blks of 32. bytes each. .WORD 32. ;DEFAULT BUFFER SIZE (BYTES) ;this is a 16 x 16 bit square programmable target .WORD $CD0 ;SCB POINTER .WORD 0 ;ATTACH POINTER .WORD 0,0 ;BUFFER ADDRESS .WORD 0 ;BYTE COUNT ; ; COLOR MEMORY #1 = GREEN TABLE ; .IFT .WORD 0 ;MULTIUSER PROTECTION CODE .IFTF .CD13:: .WORD $CDDAT ;POINTER TO DCB .WORD .-2 ;REDIRECT POINTER .BYTE UC.ALG!UC.NPR!1,US.MNT ;CONTROL FLAGS,UNIT STATUS .BYTE 13,0 ;UNIT #,STATUS EXT. .WORD DV.DIR!DV.MNT!DV.F11 ;CHARACTERISTICS WORD #1 .WORD 0 ;CHARACTERISTICS WORD #2 .WORD 1. ;CHARACTERISTICS WORD #3 ;1 blks of 512. bytes each. ;low byte of each word is used hi byte is not. .WORD 512. ;DEFAULT BUFFER SIZE (BYTES) .WORD $CD0 ;SCB POINTER .WORD 0 ;ATTACH POINTER .WORD 0,0 ;BUFFER ADDRESS .WORD 0 ;BYTE COUNT ; ; COLOR MEMORY #2 = RED TABLE ; .IFT .WORD 0 ;MULTIUSER PROTECTION CODE .IFTF .CD14:: .WORD $CDDAT ;POINTER TO DCB .WORD .-2 ;REDIRECT POINTER .BYTE UC.ALG!UC.NPR!1,US.MNT ;CONTROL FLAGS,UNIT STATUS .BYTE 14,0 ;UNIT #,STATUS EXT. .WORD DV.DIR!DV.MNT!DV.F11 ;CHARACTERISTICS WORD #1 .WORD 0 ;CHARACTERISTICS WORD #2 .WORD 1. ;CHARACTERISTICS WORD #3 ;1 blks of 512. bytes each. ;low byte of each word is used hi byte is not. .WORD 512. ;DEFAULT BUFFER SIZE (BYTES) .WORD $CD0 ;SCB POINTER .WORD 0 ;ATTACH POINTER .WORD 0,0 ;BUFFER ADDRESS .WORD 0 ;BYTE COUNT ; ; COLOR MEMORY #3 = BLUE TABLE ; .IFT .WORD 0 ;MULTIUSER PROTECTION CODE .IFTF .CD15:: .WORD $CDDAT ;POINTER TO DCB .WORD .-2 ;REDIRECT POINTER .BYTE UC.ALG!UC.NPR!1,US.MNT ;CONTROL FLAGS,UNIT STATUS .BYTE 15,0 ;UNIT #,STATUS EXT. .WORD DV.DIR!DV.MNT!DV.F11 ;CHARACTERISTICS WORD #1 .WORD 0 ;CHARACTERISTICS WORD #2 .WORD 1. ;CHARACTERISTICS WORD #3 ;1 blks of 512. bytes each. ;low byte of each word is used hi byte is not. .WORD 512. ;DEFAULT BUFFER SIZE (BYTES) .WORD $CD0 ;SCB POINTER .WORD 0 ;ATTACH POINTER .WORD 0,0 ;BUFFER ADDRESS .WORD 0 ;BYTE COUNT ; ; ; DUMMIE MEMORY UNIT= 15 IS SPECIAL FUNCTION UNIT ; .IFT .WORD 0 ;MULTIUSER PROTECTION CODE .IFTF .CD16:: .WORD $CDDAT ;POINTER TO DCB .WORD .-2 ;REDIRECT POINTER .BYTE UC.ALG!UC.NPR!1,US.MNT ;CONTROL FLAGS,UNIT STATUS .BYTE 16,0 ;UNIT #,STATUS EXT. .WORD DV.DIR!DV.MNT!DV.F11 ;CHARACTERISTICS WORD #1 .WORD 0 ;CHARACTERISTICS WORD #2 .WORD 512. ;CHARACTERISTICS WORD #3 .WORD 512. ;DEFAULT BUFFER SIZE (BYTES) .WORD $CD0 ;SCB POINTER .WORD 0 ;ATTACH POINTER .WORD 0,0 ;BUFFER ADDRESS .WORD 0 ;BYTE COUNT ; ; ; ; IMAGE DISPLAY STATUS CONTROL BLOCK (SCB) ; .IF DF E$$DVC!D$$IAG .BYTE 4.,-4. ;S.RCNT=4 regs to capture ;S.ROFF = offset to START from CSR .BLKW 2 ;S.BMSV = saved I/O active bit map & ptr to EMB ;S.BMSK = device I/O active bit mask .ENDC $CD0:: .WORD 0,$CD0 ;DEVICE I/O QUEUE LISTHEAD .BYTE PR5!ERL,374/4 ;PRIORITY!err loging,VECTOR/4 .BYTE 0,2. ;TIMEOUT COUNTER,INITIAL VALUE .BYTE 0,0 ;CONTROLLER*2,CONTROLLER STATUS .WORD 162604 ;CONTROLLER STATUS REGISTER .WORD 0 ;I/O PACKET ADDRESS .WORD 0,0,0,0 ;FORK BLOCK STORAGE .IF DF M$$MGE&L$$DRV .WORD 0 ;RELOCATION BASE .ENDC .IF DF M$$EXT&M$$MGE .WORD U$$MRN ;ADDRESS OF NEXT UMR ON PERIPHERAL PAGE .WORD 2 ;# OF UMRS TO MAP .WORD U$$MHI ;HIGH PART OF UNIBUS ADDRESS .WORD U$$MLO ;LOW PART OF UNIBUS ADDRESS .BLKW 2 ;STORAGE FOR 22-BIT USER BUFFER ADDRESS .ENDC ; $CDEND:: .ENDC ; ; TRAP VECTOR ; .IFT .ASECT .=374 .WORD $CDINT .WORD PR7 ; .ENDC ; .END