;;;MODIFICATION HISTORY
;;;
;;; 15 NOV 75 OBTAINED FROM DEC (KLDCP REV 7)
;;; 15 NOV 75 CONVERTED TO PALX FORMAT
;;;
.SBTTL *PRM11* DECSYSTEM10 PDP-11 PROGRAM/SUBROUTINE PARAMETERS, 4-AUG-75
;PROGRAM CONTROL SWITCHES
ABORT==100000 ;ABORT AT PROGRAM PASS COMPLETION
RSTART==40000 ;RESTART TEST
TOTALS==20000 ;PRINT TEST TOTALS
NOPNT==10000 ;INHIBIT ALL PRINT OUT (EXCEPT FORCED)
PNTLPT==4000 ;PRINT ON LINE-PRINTER
DING==2000 ;RING TTY BELL ON ERROR
LOOPER==1000 ;LOOP ON ERROR
ERSTOP==400 ;HALT ON ERROR
PALERS==200 ;PRINT ALL ERRORS
RELIAB==100 ;RELIABILITY RUN MODE
TXTINH==40 ;TEXT INHIBIT
INHPAG==20 ;INHIBIT PAGING (PDP-10)
MODDVC==10 ;MODIFY DEVICE CODE (PDP-10)
INHCSH==4 ;INHIBIT CACHE (PDP-10)
OPRSEL==2 ;OPERATOR SELECTION
CHAIN==1 ;CHAIN CONTROL SWITCH
;OPERATOR DEFINITION - SUBROUTINE CALLS
.SBTTL EMT DEFS
FATAL= EMT!0 ;FATAL PROGRAMMING ERROR.
ERRHLT= EMT!1 ;PROGRAM HALT, ONLY IF "ERSTOP" SWITCH SET
PRGHLT= EMT!2 ;PROGRAM HALT, DON'T CHECK SWITCH
RUNLP= EMT!3 ;CONSOLE IDLE RUN LOOP
DFLEGAL=EMT!226 ;DIAGNOSTIC FUNCTION LEGALITY CHECK
;TELETYPE INPUT DEFINITIONS
; *** CALL SEQUENCE ***
; TT----
; RETURN, C BIT SET FOR NO/ERROR RESPONSE
TTILIN= EMT!4 ;READ TTY LINE INPUT INTO BUFFER
TTILNW= EMT!224 ;READ TTY LINE INPUT, WAIT FOREVER
TTICCL= EMT!225 ;PROCESS TTY INPUT FROM INDIRECT CCL BUFFER
TTICHR= EMT!5 ;INPUT A CHARACTER FROM BUFFER
TTBACK= EMT!144 ;BACKUP INPUT POINTER
TTLOOK= EMT!6 ;LOOK FOR A TTY INPUT
TTIOCT= EMT!7 ;INPUT AN OCTAL NUMBER FROM BUFFER
TTCOCT= EMT!10 ;INPUT & CHECK OCTAL, RTN IF OK
TTOCTE= EMT!200 ;INPUT EVEN OCTAL NUMBER
TTIDEC= EMT!11 ;INPUT A DECIMAL NUMBER FROM BUFFER
TTIYES= EMT!12 ;ASK YES-NO, N BIT ON NO, C BIT SET ON ERROR
TTALTM= EMT!13 ;ALT-MODE CHECK, C BIT SET IF NON-ALT-MODE
TTI36= EMT!14 ;READ 36 DIGIT NUMBER FROM BUFFER
TTIBRK= EMT!15 ;GET NUMBER INPUT BREAK CHARACTER
TTISDL= EMT!16 ;SPACE DELETE, C BIT SET ON NON-NUMBER
TTISDO= EMT!17 ;SPACE DELETE & OCTAL INPUT, RTN IF OK
TTIS36= EMT!20 ;SPACE DELETE & 36BIT INPUT, RTN IF OK
TTICRA= EMT!21 ;INPUT C-RAM ADDRESS
TTITRM= EMT!22 ;CHECK INPUT TERMINATOR, RTN IF OK
TTBTRM= EMT!23 ;BACKUP, THEN "
TTERM= EMT!201 ;NUMBER TERMINATION CHECK, C BIT SET IF ERROR
TTPINI= EMT!217 ;INITIALIZE INPUT & OUTPUT BUFFER POINTERS
;TELETYPE OUTPUT DEFINITIONS
; *** CALL SEQUENCE ***
; MOV ARG,R0 ;IF CALL REQUIRES AN ARGUMENT
; P-----
PNTAL= EMT!24 ;PRINT ASCII LINE, ADDRESS IN R0
$PMSG= EMT!25 ;PRINT MESSAGE, TRAILING PARAMETER
$PMSGR= EMT!26 ;PRINT MESSAGE, CONDITIONAL ON "RPTFLG"
PNTCHR= EMT!27 ;PRINT ASCII CHARACTER IN R0
PNTCI= EMT!214 ;PRINT CHAR IMMEDIATE, TRAILING CHARS
PNTNBR= EMT!30 ;PRINT NUMBER
PCRLF= EMT!31 ;PRINT CR-LF
PSPACE= EMT!32 ;PRINT A SPACE
PSLASH= EMT!33 ;PRINT A SLASH
PCOMMA= EMT!34 ;PRINT A COMMA
PTAB= EMT!227 ;PRINT A TAB
PNTOCT= EMT!35 ;PRINT OCTAL NUMBER IN R0
PNTOCS= EMT!36 ;PRINT OCTAL IN R0, SUPPRESS LEADING ZEROS
PNTDEC= EMT!37 ;PRINT DECIMAL NUMBER IN R0
PNT18= EMT!40 ;PRINT LOWER 18 OF 36 BIT NUMBER
PNT23= EMT!41 ;PRINT LOWER 23 BITS OF 36 BIT NUMBER
PNT22= EMT!41 ; " OLD PNT23 "
PNT36= EMT!42 ;PRINT 36 BIT NUMBER, ADDRESS IN R0
PNT36B= EMT!134 ;PRINT 36 BIT NUMBER IN BINARY
PNTADR= EMT!137 ;PRINT PDP-10 ADDRESS
PFORCE= EMT!43 ;SET FORCED PRINTOUT FLAG
PNORML= EMT!44 ;CLEAR FORCED PRINTOUT FLAG
PBELL= EMT!45 ;DING THE TTY BELL
PNTODC= EMT!46 ;PRINT SPECIFIED OCTAL DIGITS
PNTODT= EMT!47 ;PRINT SPECIFIED DIGITS, TRAILING PARAMETER
PRINTT= EMT!151 ;PRINT, TTY OUTPUT
PTTY= EMT!152 ;PRINT, TTY DRIVER
PLPT= EMT!153 ;PRINT, LPT DRIVER
PLDBUF= EMT!154 ;PRINT, LOAD BUFFER
PNTBAK= EMT!177 ;PRINT, BACKUP OUTPUT INSERTION POINTER
PNTRST= EMT!215 ;PRINT, OUTPUT POINTERS RESET
;MISCELLANEOUS FUNCTIONS
REGSAV= EMT!50 ;SAVE R0 THROUGH R5
REGRST= EMT!51 ;RESTORE R0 THROUGH R5
SHIFTR= EMT!53 ;SHIFT R0 RIGHT, TRAILING PARAMETER
SHIFTL= EMT!54 ;SHIFT R0 LEFT, TRAILING PARAMETER
PROL36= EMT!146 ;ROTATE LEFT 36 BITS
SETFLG= EMT!55 ;SET -1 TO FLAG, TRAILING PARAMETER
MULTPY= EMT!72 ;MULTIPLY
TDELAY= EMT!56 ;SMALL DELAY
SWITCH= EMT!57 ;READ THE SWITCH REGISTER, RETURNED IN R0
SWTSAM= EMT!60 ;RETURN PRESENT STORED SWITCHES IN R0
EOP= EMT!61 ;END OF PASS ROUTINE, RETURNS IF NOT COMPLETED
ERREOP= EMT!62 ;ERROR END OF PASS
EOPSET= EMT!63 ;SET END OF PASS PRINTOUT INTERVAL
;DEVICE ROUTINES
NAMEXT= EMT!206 ;FILE NAME.EXT PROCESS
DTAFILE=EMT!207 ;DECTAPE FILE SELECTION
RPFILE= EMT!210 ;RP04 FILE SELECTION
R50UPK= EMT!155 ;RAD50 TO ASCII UNPACK
ASCR50= EMT!165 ;ASCII TO RAD50 CONVERSION
DTINIT= EMT!156 ;DECTAPE INITIALIZATION
RPINIT= EMT!157 ;RP04 INITIALIZATION
RPLOAD= EMT!166 ;RP04 LOAD PACK
DVDATA= EMT!160 ;DEVICE DATA BLOCK READ
DTRDFL= EMT!211 ;DECTAPE READ FILE
DTWTFL= EMT!212 ;DECTAPE WRITE FILE
DTBASE= EMT!213 ;RETURN DECTAPE PARAMETER BASE ADDRESS
DTREAD= EMT!161 ;DECTAPE READ
DTWRT= EMT!205 ;DECTAPE WRITE
RPFIND= EMT!167 ;RP04 FIND FILE
RPLKUP= EMT!170 ;RP04 FILE DIRECTORY LOOKUP
RPRDFL= EMT!171 ;RP04 READ FILE
RPWRFL= EMT!172 ;RP04 WRITE FILE
RPREAD= EMT!162 ;RP04 READ
RPWRIT= EMT!173 ;RP04 WRITE
RPADDR= EMT!174 ;RP04 ADDRESS CALCULATION
RPBASE= EMT!175 ;RETURN RP04 PARAMETER BLOCK BASE ADDRESS
RPERROR=EMT!237 ;RP04 ERROR REPORTER
DVFRAM= EMT!163 ;DEVICE DATA FRAME READ
DVWRD= EMT!164 ;DEVICE WORD READ
RXFILE= EMT!230 ;RX11/RX01 FLOPPY FILE SELECTION
RXINIT= EMT!231 ; FLOPPY INITIALIZATION
RXRDFL= EMT!232 ; FLOPPY READ FILE
RXWTFL= EMT!233 ; FLOPPY WRITE FILE
RXBASE= EMT!234 ; FLOPPY PARAMETER BLOCK BASE ADDRESS
RXREAD= EMT!235 ; FLOPPY READ
RXWRT= EMT!236 ; FLOPPY WRITE
;COMMUNICATION ROUTINES
COMCMD= EMT!220 ;COMMUNICATIONS COMMAND
COMRTRY=EMT!221 ;COMMUNICATIONS COMMAND RETRY
COMENQ= EMT!222 ;COMMUNICATIONS ENQUIRY
COMEOT= EMT!223 ;COMMUNICATIONS END OF TRANSMISSION
COMLIN= EMT!64 ;COMMUNICATIONS LINE INPUT
COMSND= EMT!65 ;COMMUNICATIONS LINE OUTPUT
COMACK= EMT!66 ;COMMUNICATIONS ACKNOWLEDGE
COMNAK= EMT!67 ;COMMUNICATIONS NEGATIVE ACKNOWLEDGE
COMCLR= EMT!70 ;COMMUNICATIONS CLEAR
COMCTL= EMT!71 ;COMMUNICATIONS CONTROL SEQUENCE
;KL10 ROUTINES
WCRAM= EMT!73 ;WRITE IN TO C-RAM
RCRAM= EMT!74 ;READ THE C-RAM
WWADR= EMT!75 ;WRITE C-RAM ADDRESS
MICNUL= EMT!203 ;C-RAM FILL WITH 0'S
MICFIL= EMT!204 ;C-RAM FILL WITH 1'S
MRESET= EMT!76 ;MASTER RESET
TENSW= EMT!145 ;PDP-10 SWITCHES
TENSP= EMT!77 ;TURN OFF TEN RUNNING
TENCHR= EMT!176 ;PDP-10 LAST TYPED CHARACTER
SM= EMT!100 ;START MACHINE
EXCT= EMT!101 ;EXECUTE PDP10 INSTR, REQUIRES SM
LODAR= EMT!102 ;SPECIAL AR LOAD FOR EXCT AND MBOX TEST
SETMPH= EMT!147 ;SET M-BOX PHASE
ECLOK= EMT!135 ;E BOX CLOCK
ESYNC= EMT!136 ;E BOX SYNC
EXAM= EMT!103 ;EXAMINE 10 MEMORY
EXAMT= EMT!104 ;EXAMINE 10 MEMORY, TRAILING PARAMETERS
DPOS= EMT!105 ;DEPOSIT INTO 10 MEMORY
DPOST= EMT!106 ;DEPOSIT INTO 10 MEMORY, TRAILING PARAMETERS
DPOSVR= EMT!107 ;DEPOSIT AND VERIFY 10 MEMORY
DPOSVT= EMT!110 ;DEPOSIT AND VERIFY 10 MEMORY, TRAILING PARAMETERS
D10MON= EMT!111 ;DEPOSIT -1 INTO 10 FLAG WORD
D10ZRO= EMT!112 ;PDP-10 MEMORY ZERO
CMPR36= EMT!52 ;COMPARE 5 BYTE 36-BIT WORD
DTEBAS= EMT!113 ;RETURN DTE20 BASE ADDRESS
DFXCT= EMT!114 ;DIAGNOSTIC FUNCTION EXECUTE
DFXCTT= EMT!115 ;DF EXECUTE, TRAILING PARAMETER
DFRD= EMT!116 ;DIAGNOSTIC FUNCTION READ
DFRDT= EMT!140 ;DF READ, TRAILING PARAMETER
DFRDMV= EMT!117 ;DIAGNOSTIC FUNCTION READ & MOVE
DFWRT= EMT!120 ;DIAGNOSTIC FUNCTION WRITE
DFWRTT= EMT!141 ;DF WRITE, TRAILING PARAMETERS
DFWIR= EMT!121 ;DIAGNOSTIC FUNCTION WRITE IR
DFSCLK= EMT!122 ;DIAGNOSTIC FUNCTION, SINGLE STEP CLOCK
DFPC= EMT!123 ;DIAGNOSTIC FUNCTION READ PC
DFVMA= EMT!124 ;DIAGNOSTIC FUNCTION READ VMA
DFADB= EMT!125 ;DIAGNOSTIC FUNCTION READ ADDRESS BREAK
DFVMAH= EMT!150 ;DIAGNOSTIC FUNCTION READ VMA HELD
RDRAM= EMT!126 ;READ D-RAM
WDRAM= EMT!127 ;WRITE D-RAM
DRAMAD= EMT!130 ;SELECT D-RAM ADDRESS
CLKPRM= EMT!202 ;RETURN ADDRESS OF "CLKDFL" WORD
BURST= EMT!131 ;BURST M-BOX CLOCK
PNTCPU= EMT!132 ;PRINT CPU, C-RAM & REGISTERS
PNTCRM= EMT!142 ;PRINT C-RAM, LOGICAL FIELD FORMAT
PNTDRM= EMT!143 ;PRINT D-RAM, LOGICAL FIELD FORMAT
PRGCMD= EMT!133 ;PROGRAM COMMAND
PRGNPT= EMT!216 ;PROGRAM COMMAND, NO PRINT
.SBTTL MACRO DEFS
.IIF P2, $$CLIT==$$LITT ;LITERAL STORAGE ASSIGNMENT
.IELSE $$CLIT==2000 ;DOESN'T MATTER ON PASS 1 BUT HAS TO BE DEFINED
.MACRO PMSG $ARG
$PMSG
$$CLIT
; .NLIST SRC
$$CLC==.
.=$$CLIT
.ASCIZ $ARG
$$CLIT==.
.=$$CLC
; .LIST SRC
.ENDM
.MACRO PMSGR $ARG
$PMSGR
$$CLIT
; .NLIST SRC
$$CLC==.
.=$$CLIT
.ASCIZ $ARG
$$CLIT==.
.=$$CLC
; .LIST SRC
.ENDM
.MACRO PNTMSG $ARG
MOV #$$CLIT,R0
PNTAL
; .NLIST SRC
$$CLC==.
.=$$CLIT
.ASCIZ $ARG
.EVEN
$$CLIT==.
.=$$CLC
; .LIST SRC
.ENDM
.MACRO EXIT
JMP $EXIT
.ENDM
.MACRO EXITSKP
JMP $EXITS
.ENDM
.MACRO EXITERR
JMP $EXITE
.ENDM
;BASIC MACROS
.MACRO PUSH A
; .NLIST SRC
.IRP B,
MOV B,-(SP) ;PUSH B ON STACK
.ENDM
; .LIST SRC
.ENDM
.MACRO POP A
; .NLIST SRC
.IRP B,
MOV (SP)+,B ;POP STACK INTO B
.ENDM
; .LIST SRC
.ENDM
.MACRO MULT SOURCE,REG
PUSH SOURCE
PUSH REG
MULTPY
POP REG
.NTYPE X,REG
.IF EQ X&1
.IFT
POP REG+1
.IFF
INC SP
INC SP
.ENDC
.ENDM
.MACRO .LIT $LTAG,$LARG
$$CLC==.
.=$$CLIT
.EVEN
$LTAG=.
.IIF B <$LARG>,0
.IIF NB <$LARG>,$LARG
.EVEN
$$CLIT==.
.=$$CLC
.ENDM
.MACRO SL REG,NUM
; .NLIST SRC
.IF GT NUM-7
.IFT
SWAB REG
.REPT NUM-8.
ASL REG
.ENDR
.IFF
.REPT NUM
ASL REG
.ENDR
.ENDC
; .LIST SRC
.ENDM
.MACRO SR REG,NUM
; .NLIST SRC
.IF GT NUM-7
.IFT
SWAB REG
.REPT NUM-8.
ASR REG
.ENDR
.IFF
.REPT NUM
ASR REG
.ENDR
.ENDC
; .LIST SRC
.ENDM
.MACRO EXOR REG,DESTIN,SCRTCH
.IF NB SCRTCH
.IFT
MOV REG,SCRTCH
BIC DESTIN,SCRTCH
BIC REG,DESTIN
BIS SCRTCH,DESTIN
.IFF
MOV REG,-(SP)
BIC DESTIN,(SP)
BIC REG,DESTIN
BIS (SP)+,DESTIN
.ENDC
.ENDM
;STANDARD PROGRAM ASSIGNMENTS
.IIF NDF STACK,STACK=157776 ;INITIAL STACK POINTER
.IIF NDF CONSOL,CONSOL=100000 ;CONSOLE START ADDRESS
CBIT==1 ;CARRY BIT
NBIT==10 ;NEGATIVE BIT
ZBIT==4 ;ZERO BIT
VBIT==2 ;OVERFLOW BIT
TBIT==20 ;TRAP BIT
;REGISTER DEFINITIONS
R0= %0 ;GENERAL REGISTERS
R1= %1
R2= %2
R3= %3
R4= %4
R5= %5
R6= %6
SP= %6 ;STACK POINTER
PC= %7 ;PROGRAM COUNTER
;PDP11/40 STANDARD TRAP VECTOR ASSIGNMENTS
RESVED==0 ;RESERVED
ERRVEC==4 ;TIME OUT, BUS ERROR
RESVEC==10 ;RESERVED INSTRUCTION
TRTVEC==14 ;BREAK POINT VECTOR
IOTVEC==20 ;IOT TRAP VECTOR
PWRVEC==24 ;POWER FAIL TRAP VECTOR
EMTVEC==30 ;EMT TRAP VECTOR
TRAPVEC==34 ;"TRAP" TRAP VECTOR
TKVEC==60 ;TTY KEYBOARD VECTOR
TPVEC==64 ;TTY PRINTER VECTOR
TA11==260 ;CASSETTE TAPE READER
TC11==214 ;DECTAPE VECTOR
TBITVEC==14
BPTVEC==14
;PDP11/40 STANDARD ADDRESS ASSIGNMENTS
PS=177776 ;CPU STATUS
STKLMT=177774 ;STACK LIMIT
SWR=177570 ;CONSOLE SWITCH REGISTER
TTODBR=177566 ;TTY OUT DBR
TTOCSR=177564 ;TTY OUT CSR
TTIDBR=177562 ;TTY IN DBR
TTICSR=177560 ;TTY IN CSR
XORCR=174200
XORSR=174202
;BIT ASSIGNMENTS
BIT00==1
BIT0==BIT00
BIT01==2
BIT1==BIT01
BIT02==4
BIT2==BIT02
BIT03==10
BIT3==BIT03
BIT04==20
BIT4==BIT04
BIT05==40
BIT5==BIT05
BIT06==100
BIT6==BIT06
BIT07==200
BIT7==BIT07
BIT08==400
BIT8==BIT08
BIT09==1000
BIT9==BIT09
BIT10==2000
BIT11==4000
BIT12==10000
BIT13==20000
BIT14==40000
BIT15==100000
;PRIORITY ASSIGNMENTS
PR0==000
PR1==040
PR2==100
PR3==140
PR4==200
PR5==240
PR6==300
PR7==340
;CHARACTERS USED
MSWCHR==377 ; MONITOR TO "KLDCP" SWITCH CHAR, HACKED BY BREAK
TEXTERM=0 ; TERMINATES TEXT
TAB==11 ; TAB
CNTRLI==11 ; CONTROL-I (TAB)
LF==12 ; LINE FEED
VT==13 ; VERTICAL TAB
FF==14 ; FORM FEED
CR==15 ; CARRIAGE RETURN
BELL==7 ; BELL
BLANK==40 ; BLANK (SPACE)
SPACE==40 ; SPACE
COMMA==54 ; COMMA
SLASH==57 ; SLASH
BKSLH==134 ; BACK SLASH
BKARW==137 ; BACK ARROW
XOFF==023 ; X-OFF (CONTROL S)
XON==021 ; X-ON (CONTROL Q)
CNTRLO==017 ; CONTROL O
CNTRLU==025 ; CONTROL U
CNTRLA==001 ; CONTROL A
CNTRLC==003 ; CONTROL C
CNTRLD==004 ; CONTROL D
CNTRLK==013 ; CONTROL K
CNTRLL==14 ; CONTROL L
CNTRLR==022 ; CONTROL R
CNTRLT==024 ; CONTROL T
CNTRLX==030 ; CONTROL X
CNTRLZ==032 ; CONTROL Z
RUBOUT==177 ; RUB OUT
ALTMOD==33 ; ALTMODE
ETB==27 ; END OF TRANSMISSION BLOCK (CONTROL W)
NULL==026 ; NULL FILLER CHAR
SYN==001 ; COMMUNICATIONS SYNC CHAR (CONTROL A)
;.NLIST
.IF DF DTEASB
;.LIST
.SBTTL DTE20 DEVICE REGISTER AND BIT DEFINITIONS, 4-JUNE-75
DTEADR=174400 ;ADDRESS OF (FIRST) DTE20 DEVICE REGISTER BLOCK
DTESIZ==000040 ;SPACING BETWEEN CONSECUTIVE DTE20'S
DTEMAX==4 ;MAXIMUM NUMBER OF DTE20'S ON ONE PDP-11
DTESZS==5 ;SHIFT TO CONVERT DTE ADDRESS TO DTE #
.IF DF DTEDEF
;OFFSETS FROM THE BASE OF THE DTE20 DEVICE REGISTER BLOCK
;TO SPECIFIC 10/11 INTERFACE RAM LOCATIONS AND REGISTERS.
; THE FIRST 12 REGISTERS ARE NOT INITIALIZED BY "INIT" (BECAUSE THEY ARE IN RAMS)
DLYCNT==00 ;DELAY COUNT (ADDRESS XXXX00)
DEXWD3==02 ;DEPOSIT OR EXAMINE WORD 3 (ADDRESS XXXX02)
DEXWD2==04 ;DEPOSIT OR EXAMINE WORD 2 (ADDRESS XXXX04)
DEXWD1==06 ;DEPOSIT OR EXAMINE WORD 1 (ADDRESS XXXX06)
TENAD1==10 ;10 ADDRESS WORD 1 FOR DEX (ADDRESS XXXX10)
TENAD2==12 ;10 ADDRESS WORD 2 FOR DEX (ADDRESS XXXX12)
TO10BC==14 ;TO10 BYTE COUNT (ADDRESS XXXX14)
TO11BC==16 ;TO11 BYTE COUNT (ADDRESS XXXX16)
TO10AD==20 ;TO10 PDP11 MEMORY ADDRESS (ADDRESS XXXX20)
TO11AD==22 ;TO11 PDP11 MEMORY ADDRESS (ADDRESS XXXX22)
TO10DT==24 ;TO10 PDP11 DATA WORD (ADDRESS XXXX24)
TO11DT==26 ;TO11 PDP11 DATA WORD (ADDRESS XXXX26)
; THE LAST 4 REGISTERS ARE INITIALIZED BY "INIT" (BECAUSE THEY ARE IN FLIP-FLOPS)
DIAG1==30 ;DIAGNOSTIC WORD 1 (ADDRESS XXXX30)
DIAG2==32 ;DIAGNOSTIC WORD 2 (ADDRESS XXXX32)
STATUS==34 ;10/11 INTERFACE STATUS WORD (ADDRESS XXXX34)
DIAG3==36 ;DIAGNOSTIC WORD 3 (ADDRESS XXXX36)
.ENDC
; THE FOLLOWING ARE THE ADDRESSES OF THE DTE20 INTERRUPT VECTORS
DTEIV0==774 ;INTERRUPT VECTOR FOR DTE20 #0
DTEIV1==770 ;INTERRUPT VECTOR FOR DTE20 #1
DTEIV2==764 ;INTERRUPT VECTOR FOR DTE20 #2
DTEIV3==760 ;INTERRUPT VECTOR FOR DTE20 #3
;BIT ASSIGNMENTS FOR 10/11 INTERFACE REGISTERS
;BIT ASSIGNMENTS FOR TENAD1
PHYS==BIT15 ;EXAMINE/DEP PHYSICAL ADDRESS
USEVIR==BIT14!BIT13 ;EX/DP USER VIRTUAL ADDRESS
XUPT==BIT14 ;EX/DP VIA USER PROCESS TABLE
EXVIRT==BIT13 ;EX/DP EXEC VIRTUAL ADDRESS
DEP==BIT12 ;MODE BIT FOR DEPOSIT (0=EXAMINE)
PRTOFF==BIT11 ;PROTECT OFF
XEPT==0 ;EX/DP VIA EXEC PROCESS TABLE
;BIT ASSIGNMENTS FOR TO11BC
INT10==BIT15 ;SET DONE AND INTERRUPT BOTH 10 AND 11
ZSTOP==BIT14 ;STOP ON NULL (ZERO) CHARACTER
BYTE2==BIT13 ;TWO EIGHT BIT BYTES PER WORD
TO11BM==BIT13 ;TO-11 BYTE MODE
;BIT ASSIGNMENTS FOR DIAG1 (WRITE)
DS00==BIT15 ;DIAGNOSTIC STATUS
DS01==BIT14 ; "
DS02==BIT13 ; "
DS03==BIT12 ; "
DS04==BIT11 ; "
DS05==BIT10 ; "
DS06==BIT9 ; "
DFUNC==BIT7 ;DOING DIAGNOSTIC FUNCTION (DFRD,DFWRT,DFXCT)
PULSE==BIT4!BIT5 ;SINGLE PULSE THE 10/11 CLOCK (ALSO SETS
;10/11 DIAGNOSTIC MODE)
DCOMST==BIT0 ;DIAGNOSTIC COMMAND START
DCSRT==BIT0 ;DIAGNOSTIC COMMAND START (NEW NAME FOR DCOMST)
DSEND==BIT2 ;SEND THE EBUS DURING DIAGNOSTIC FUNCTION
DIKL10==BIT3 ;KL10 DIAGNOSTIC MODE
D1011==BIT5 ;10/11 INTERFACE DIAGNOSTIC MODE
;BIT ASSIGNMENTS FOR DIAG1 (READ)
TO10==BIT7 ;INTERFACE MAJOR STATE = TO10 TRANSFER
DEX==BIT8 ; " " " = DEPOSIT OR EXAMINE
TO11==BIT6 ; " " " = TO11 TRANSFER
VEC04==BIT4 ;VECTOR INTERRUPT ADDRESS BIT 4
VEC03==BIT3 ; " " " " 3
VEC02==BIT2 ; " " " " 2
HALTLP==BIT9 ;EBOX IS IN HALT LOOP
KLRUN==BIT10 ;RUN FLOP, KL IS EXECUTING INSTRUCTIONS
ERRSTP==BIT11 ;EBOX CLOCK STOPPED DUE TO ERROR
;BIT ASSIGNMENTS FOR DIAG2 (WRITE)
EDONES==BIT14 ;SET EBUS DONE
DRESET==BIT6 ;PERFORM DIAGNOSTIC CLEAR
;BIT ASSIGNMENTS FOR DIAG2 (READ)
;BIT ASSIGNMENTS FOR DIAG3 (WRITE)
SCD==BIT5 ;SHIFT CAPTURED DATA (PARITY ERROR DATA)
CDD==BIT4 ;CLEAR DUPE & DURE ERROR FLAGS
WEP==BIT3 ;WRITE EVEN (BAD) PARITY
CNUPE==BIT1 ;CLEAR NUPE
TO10BM==BIT0 ;TO-10 TRANSFER BYTES FROM THE 11
;BIT ASSIGNMENTS FOR DIAG3 (READ)
RFMAD0==BIT15 ;RFM ADDRESS BIT 0
RFMAD1==BIT14 ; " " " 1
RFMAD2==BIT13 ; " " " 2
RFMAD3==BIT12 ; " " " 3
;BIT ASSIGNMENTS FOR DIAG3 (READ)
SWSLFT==BIT15 ;SWAP SELECT LEFT
CAB08==BIT14 ;CAPTURED UNIBUS ADDRESS BIT 08
DUPE==BIT4 ;DATO UNIBUS PARITY ERROR
DURE==BIT2 ;DATO UNIBUS RECIEVER ERROR
NUPE==BIT1 ;NPR UNIBUS PARITY ERROR
UPECD==BIT13!BIT12!BIT11!BIT10!BIT9 ;UNIBUS PARITY ERR, CAPTURED DATA
;BIT ASSIGNMENTS FOR STATUS (WRITE)
DON10S==BIT15 ;SET TO10 DONE
DON10C==BIT14 ;CLEAR TO10 DONE
ERR10S==BIT13 ;SET TO10 ERROR
ERR10C==BIT12 ;CLEAR TO10 ERROR
INT11S==BIT11 ;SET 10 REQ INTERRUPT (INTERRUPTS 11)
INT11C==BIT10 ;CLEAR 10 REQ INTERRUPT (REMOVES INTERRUPT TO 11)
PERCLR==BIT9 ;CLEAR -11 MEMORY PARITY ERROR
INT10S==BIT8 ;SET REQUEST 10 INTERRUPT (INTERRUPTS 10)
DON11S==BIT7 ;SET TO11 DONE
DON11C==BIT6 ;CLEAR TO11 DONE
INTRON==BIT5 ;ENABLE DTE20 TO INTERRUPT THE 11
EBUSPC==BIT4 ;CLEAR EBUS PARITY ERROR
INTROF==BIT3 ;DISABLE THE DTE20 11-INTERRUPTS
EBUSPS==BIT2 ;SET EBUS PARITY ERROR
ERR11S==BIT1 ;SET TO11 ERROR
ERR11C==BIT0 ;CLEAR TO11 ERROR
;BIT ASSIGNMENTS FOR STATUS (READ)
TO10DN==BIT15 ;TO10 DONE
TO10ER==BIT13 ;TO 10 ERROR (NPR TIMEOUT OR BUS ERROR)
RAMIS0==BIT12 ;DATA OUT OF DTE RAM IS ALL 0S (RFM=0)
TO11DB==BIT11 ;10 REQUESTING 11 INTERRUPT (DOORBELL FROM 10)
DXWRD1==BIT10 ;DEPOSIT OR EXAMINE WORD ONE
D11MPE==BIT9 ;-11 MEMORY PARITY ERROR
TO10DB==BIT8 ;REQUEST 10 INTERRUPT (DOORBELL FROM 11)
TO11DN==BIT7 ;TO11 DONE
EBSEL==BIT6 ;E BUFFER SELECT
NULSTP==BIT5 ;NULL STOP
BPARER==BIT4 ;EBUS PARITY ERROR
RM==BIT3 ;THIS DTE20 IN RESTRICTED MODE
DEXDON==BIT2 ;DEPOSIT OR EXAMINE DONE
TO11ER==BIT1 ;TO 11 ERROR (NPR TIMEOUT OR BUS ERROR)
INTSON==BIT0 ;INTERRUPTS ON, DTE20 ENABLED TO INTERRUPT 11
;CLOCK CONTROL FUNCTIONS
STPCLK==000 ; STOP CLOCK
STRCLK==001 ; START CLOCK
SSCLK==002 ; SINGLE STEP THE MBOX CLOCK
SECLK==003 ; SINGLE STEP EBOX CLOCK
CECLK==004 ; CONDITIONAL EBOX CLOCK
CLRMR==006 ; CLEAR MR RESET
SETMR==007 ; SET MR RESET
BRCLK==005 ; BURST THE CLOCK
;CLOCK LOAD FUNCTIONS
LDBRR==42 ; LOAD BURST REGISTER RIGHT HALF
LDBRL==43 ; LOAD BURST REGISTER LEFT HALF
LDSEL==44 ; LOAD SOURCE AND RATE SELECTS
LDDIS==45 ; LOAD EBOX CLOCK DISTRIBUTION REGISTER
LDCHK1==46 ; LOAD PARITY CHECK REGISTER (ENABLE BAD PARITY STOP)
LDCHK2==47 ; LOAD EBOX INTERNAL CHECK REGISTER
;DRAM FUNCTIONS
LDRAM1==60 ; LOAD A & B FIELDS EVEN
LDRAM2==61 ; LOAD A & B FIELDS ODD
LDRAM3==62 ; LOAD COMMON J1-J4
LDRJEV==63 ; LOAD PARITY & J8-J10 EVEN
LDRJOD==64 ; LOAD PARITY & J8-J10 ODD
DRAMAB==133 ; READ D-RAM A & B
DRJ710==135 ; READ D-RAM J7-J10
DRJ1.4==134 ; READ D-RAM J1-J4
;IR DRAM CONTROL
DISIOJ==65 ; DISABLE 7XX & JRST=254
DISACF==66 ; DISABLE THE IR AC'C
ENIOJA==67 ; ENABLE 7XX, JRST=254 & IR AC'S
;CRAM FUNCTIONS
LCRAM1==57 ; LOAD C-RAM DATA
LCRAM2==56
LCRAM3==55
LCRAM4==54
LCRAM5==53
LCRDAL==52 ; LOAD CRAM ADDRESS LEFT (00-04)
LCRDAR==51 ; LOAD CRAM ADDRESS RIGHT (05-10)
RCRAM1==147 ; READ C-RAM DATA
RCRAM2==146
RCRAM3==145
RCRAM4==144
RCSPEC==141 ; READ C-RAM SPEC
;MISC CONTROL FUNCTIONS
IRLOAD==14 ; LOAD THE IR FROM AD
DRLTCH==15 ; LOAD D-RAM LATCHES
CLRRUN==10 ; CLEAR RUN FLIP-FLOP
SETRUN==11 ; SET RUN FLIP-FLOP
CONBUT==12 ; THE CONTINUE BUTTON
LDAR==77 ; LOAD THE AR
;MBOX CONTROL FUNCTIONS
LDMBXA==71 ; LOAD MEMORY TO CACHE SELECTOR
LDCHAN==70 ; LOAD CHANNEL DIAGNOSTIC CONDITIONS
;PI CONTROL FUNCTIONS
READ0==100 ; PI (READ STATUS 0)
READ1==101 ; PI (READ STATUS 1)
READ2==102 ; PI (READ STATUS 2)
READ3==103 ; PI (READ STATUS 3)
;DATA PATH CONTROL FUNCTIONS
DPAR==120 ; AR
DPBR==121 ; BR
DPMQ==122 ; MQ
DPFM==123 ; FM
DPFMA==114 ; FM ADR
DPBRX==124 ; BRX
DPARX==125 ; ARX
DPADX==126 ; ADX
DPAD==127 ; AD
DPPC==153 ; PC
DPVMA==157 ; VMA
DPVMHD==157 ; VMA HELD
DPADB==153 ; ADDRESS BREAK
DPERG==167 ; E-BUS REGISTER
DPFE==132 ; FE 05-09
DPFE1==133 ; FE 00-04
DPSC==130 ; SC 05-09
DPSC1==131 ; SC 00-04
.SBTTL KL10 EBOX MACRO DEFINITIONS, 4-JUNE-75
;MACRO TO TURN 36 BIT WORDS INTO 5 UPSIDE DOWN BYTES
.MACRO WD36 A,B,C
.NLIST SRC
.BYTE <377&C>,<</400>!<*20>>,</20>
.BYTE ,</400>
.LIST SRC
.ENDM
;PDP10 CPU INSTRUCTION MACRO. TAKES 5 ARGUMENTS AS IN NORMAL
;10 CODE. 5 FIELDS MUST BE PRESENT (4 FIELD SEPARATORS)
;BUT THE AD,AC,I, AND XR FIELDS MAY BE LEFT BLANK AND IF SO,
;WILL ASSEMBLE AS ZERO. THE OP FIELD MUST NOT BE LEFT BLANK.
.MACRO I10 OP,CAC,CI,CAD,CXR
ADH==0
ADL==0
.IF NB CAD
.IRPC AD1,CAD
.IIF GE ,ADH==ADL/10000
ADL==10*+AD1
.ENDM
.ENDC
.IIF B CAC,AC==0
.IIF NB CAC,AC==CAC
.IIF B CI,I==0
.IIF NB CI,I==CI
.IIF B CXR,XR==0
.IIF NB CXR,XR==CXR
.NLIST SRC
.BYTE ,<!>,>+>
.BYTE >,
.LIST SRC
.ENDM I10
CRMSIZ==2777 ;# C-RAM WORDS
;MACRO TO GENERATE A RIGHT JUSTIFIED 3-BYTE VALUE
;FOR A 22-BIT ARGUMENT
.MACRO WD22 AD
ADH==0
ADL==0
.IRPC AD1,AD
.IIF GE ,ADH==<10*ADH>+
ADL==10*+AD1
.ENDM
.NLIST SRC
.BYTE ,<!>,
.LIST SRC
.ENDM WD22
;PDP10 I/O INSTRUCTION MACRO. TAKES 5 ARGUMENT AS NOTED ABOVE
;IN THE DESCRIPTION OF THE I10 MACRO. THE 8 I/O OP CODES ARE
;DEFINED AS ARE DEVICE CODES APR, PI, PAG, AND CCA.
.MACRO IO10 OP,DV,CI,AD,CXR
.IIF B CI,I==0
.IIF NB CI,I==CI
.IIF B CXR,XR==0
.IIF NB CXR,XR==CXR
BLKO==2
DATAO==3
BLKI==0
DATAI==1
CONO==4
CONI==5
CONSZ==6
CONSO==7
APR==0
PI==4
PAG==10
CCA==14
ADH==0
ADL==0
.IRPC AD1,AD
.IIF GE ,ADH==ADL/10000
ADL==10*+AD1
.ENDM
.NLIST SRC
.BYTE ,<!>,>+>
.BYTE >,
.LIST SRC
.ENDM IO10
;THIS IS A MACRO TO WAIT FOR A DONE FLAG
.MACRO WFZERO BITSEL
MOV #2500.,-(SP) ;SET TIMEOUT CNT
91$: BIT #BITSEL,@.DIAG1 ;TEST BIT
BEQ 92$ ;LEAVE IF BIT ZERO(OK)
DEC (SP) ;DECREMENT CNT
BNE 91$ ;CONTINUE LOOP
TST RPTFLG ;OTHERWISE TIME OUT
BNE 92$
JSR R1,$DFTIM
92$: TST (SP)+ ;RESET STACK & CONTINUE
.ENDM
;THIS MACRO IS A WAIT FOR FLAG MACRO.
;IT WAITS FOR A TEST BIT TO GO TO ONE
;FROM A ZERO
.MACRO WFONE BITSEL
MOV #2500.,-(SP) ;SET TIMEOUT CNT
93$: BIT #BITSEL,@.STDTE ;TEST BIT
BNE 94$ ;LEAVE IF NOW A ONE(OK)
DEC (SP) ;DECREMENT CNT
BNE 93$ ;CONTINUE LOOP
TST RPTFLG ;OTHERWISE TIME OUT
BNE 94$
JSR R1,$DFTIM
94$: TST (SP)+ ;RESET STACK
.ENDM
.NLIST
.ENDC ; DTEASB
.LIST
.NLIST
.IF DF DTEBBD
.LIST
.SBTTL *BBD* DTE20 DEVICE REGISTER AND BIT DEFINITIONS, 2-JAN-75
DTEADR=164000 ;ADDRESS OF (FIRST) DTE20 DEVICE REGISTER BLOCK
DTESIZ==000040 ;SPACING BETWEEN CONSECUTIVE DTE20'S
DTEMAX==4 ;MAXIMUM NUMBER OF DTE20'S ON ONE PDP-11
DTESZS==5 ;SHIFT TO CONVERT DTE ADDRESS TO DTE #
.IF DF DTEDEF
;OFFSETS FROM THE BASE OF THE DTE20 DEVICE REGISTER BLOCK
;TO SPECIFIC 10/11 INTERFACE RAM LOCATIONS AND REGISTERS.
; THE FIRST 12 REGISTERS ARE NOT INITIALIZED BY "INIT" (BECAUSE THEY ARE IN RAMS)
DLYCNT==00 ;DELAY COUNT (ADDRESS XXXX00)
DEXWD1==02 ;DEPOSIT OR EXAMINE WORD 1 (ADDRESS XXXX02)
DEXWD2==04 ;DEPOSIT OR EXAMINE WORD 2 (ADDRESS XXXX04)
DEXWD3==06 ;DEPOSIT OR EXAMINE WORD 3 (ADDRESS XXXX06)
TENAD1==10 ;10 ADDRESS WORD 1 FOR DEX (ADDRESS XXXX10)
TENAD2==12 ;10 ADDRESS WORD 2 FOR DEX (ADDRESS XXXX12)
TO10BC==14 ;TO10 BYTE COUNT (ADDRESS XXXX14)
TO11BC==16 ;TO11 BYTE COUNT (ADDRESS XXXX16)
TO10AD==20 ;TO10 PDP11 MEMORY ADDRESS (ADDRESS XXXX20)
TO11AD==22 ;TO11 PDP11 MEMORY ADDRESS (ADDRESS XXXX22)
TO10DT==24 ;TO10 PDP11 DATA WORD (ADDRESS XXXX24)
TO11DT==26 ;TO11 PDP11 DATA WORD (ADDRESS XXXX26)
; THE LAST 4 REGISTERS ARE INITIALIZED BY "INIT" (BECAUSE THEY ARE IN FLIP-FLOPS)
DIAG1==30 ;DIAGNOSTIC WORD 1 (ADDRESS XXXX30)
DIAG2==32 ;DIAGNOSTIC WORD 2 (ADDRESS XXXX32)
STATUS==34 ;10/11 INTERFACE STATUS WORD (ADDRESS XXXX34)
DIAG3==36 ;DIAGNOSTIC WORD 3 (ADDRESS XXXX36)
.ENDC
; THE FOLLOWING ARE THE ADDRESSES OF THE DTE20 INTERRUPT VECTORS
DTEIV0==170 ;INTERRUPT VECTOR FOR DTE20 #0
DTEIV1==174 ;INTERRUPT VECTOR FOR DTE20 #1
DTEIV2==270 ;INTERRUPT VECTOR FOR DTE20 #2
DTEIV3==274 ;INTERRUPT VECTOR FOR DTE20 #3
; THE FOLLOWING MACRO (DTEVEC) DYNAMICLY COMPUTES THE INTERRUPT
; VECTOR ADDRESS ASSOCIATED WITH A PARTICULAR DTE20.
; THE FIRST ARGUMENT (DTEDRB) IS A REGISTER OR MEMORY LOCATION
; WHICH CONTAINS THE BASE ADDRESS OF THE DEVICE REGISTER BLOCK
; FOR A PARTICULAR DTE20.
; THE SECOND ARGUMENT (DTEIVB) IS A REGISTER OR MEMORY LOCATION
; INTO WHICH THIS MACRO WILL STORE THE BASE ADDRESS OF THE INTERRUPT
; VECTOR ASSOCIATED WITH THE SAME DTE20.
.MACRO DTEVEC DTEDRB,DTEIVB,?LABEL
MOVB DTEDRB,DTEIVB
.NTYPE DTE$T0,DTEIVB
.IF NE DTE$T0&70 ;IS "DTEIVB" A REGISTER?
.IFT
CLRB DTEIVB+1
.ENDC
ADD #DTEIV0,DTEIVB ;THIS MACRO DEPENDS ON THE BIT
BIT #DTESIZ,DTEIVB ;PATTERNS IN THE DEVICE REGISTER
BNE LABEL ;ADDRESSES AND INTERRUPT VECTOR
SUB #DTESIZ+DTEIV0-DTEIV1,DTEIVB ;ADDRESSES.
LABEL:
.ENDM DTEVEC
;BIT ASSIGNMENTS FOR 10/11 INTERFACE REGISTERS
;BIT ASSIGNMENTS FOR TENAD1
DEP==BIT15 ;MODE BIT FOR DEPOSIT (0=EXAMINE)
F1==BIT7 ;HIGH ORDER BIT OF FAST AC BLOCK
F2==BIT6 ;LOW " " " " " "
;BIT ASSIGNMENTS FOR TO10BC
INT11==BIT15 ;SET DONE AND INTERRUPT BOTH 10 AND 11
;BIT ASSIGNMENTS FOR TO11BC
INT10==BIT15 ;SET DONE AND INTERRUPT BOTH 10 AND 11
ZSTOP==BIT14 ;STOP ON NULL (ZERO) CHARACTER
;BIT ASSIGNMENTS FOR TO10AD AND TO11AD
BYTE2==BIT0 ;TWO EIGHT-BIT BYTES PER WORD
;BIT ASSIGNMENTS FOR DIAG1 (WRITE)
DPULSE==BIT7 ;PULSE THE KL10 CLOCK
PULSE==BIT4!BIT0 ;SINGLE PULSE THE 10/11 CLOCK (ALSO SETS
;10/11 DIAGNOSTIC MODE)
DBUSEN==BIT3 ;DIAGNOSTIC BUS ENABLE
DCSRT==BIT3 ;DIAGNOSTIC COMMAND START (NEW NAME FOR DBUSEN)
DSEND==BIT2 ;SEND THE EBUS DURING DIAGNOSTIC FUNCTION
DIKL10==BIT1 ;KL10 DIAGNOSTIC MODE
D1011==BIT0 ;10/11 INTERFACE DIAGNOSTIC MODE
;BIT ASSIGNMENTS FOR DIAG1 (READ)
TO10==BIT7 ;INTERFACE MAJOR STATE == TO10 TRANSFER
DEX==BIT6 ; " " " == DEPOSIT OR EXAMINE
TO11==BIT5 ; " " " == TO11 TRANSFER
VEC04==BIT4 ;VECTOR INTERRUPT ADDRESS BIT 4
VEC03==BIT3 ; " " " " 3
VEC02==BIT2 ; " " " " 2
;BIT ASSIGNMENTS FOR DIAG2 (WRITE)
EDONES==BIT14 ;SET EBUS DONE
STHOLD==BIT7 ;STAY IN CURRENT MAJOR STATE
CLEAR==BIT6 ;PERFORM DIAGNOSTIC CLEAR
;BIT ASSIGNMENTS FOR DIAG2 (READ)
;BIT ASSIGNMENTS FOR DIAG3 (READ)
RAMIS0==BIT7 ;RFM==0 (ALL ZEROES COMING OUT OF RAM)
RFMAD0==BIT1 ;RFM ADDRESS BIT 0
RFMAD1==BIT8 ; " " " 1
RFMAD2==BIT9 ; " " " 2
RFMAD3==BIT10 ; " " " 3
;BIT ASSIGNMENTS FOR STATUS (WRITE)
DON10S==BIT15 ;SET TO10 DONE
DON10C==BIT14 ;CLEAR TO10 DONE
ERR10S==BIT13 ;SET TO10 ERROR
ERR10C==BIT12 ;CLEAR TO10 ERROR
INT11S==BIT11 ;SET 10 REQ INTERRUPT (INTERRUPTS 11)
INT11C==BIT10 ;CLEAR 10 REQ INTERRUPT (REMOVES INTERRUPT TO 11)
PERCLR==BIT9 ;CLEAR -11 MEMORY PARITY ERROR
INT10S==BIT8 ;SET REQUEST 10 INTERRUPT (INTERRUPTS 10)
DON11S==BIT7 ;SET TO11 DONE
DON11C==BIT6 ;CLEAR TO11 DONE
ERR11S==BIT1 ;SET TO11 ERROR
ERR11C==BIT0 ;CLEAR TO11 ERROR
;BIT ASSIGNMENTS FOR STATUS (READ)
TO10DN==BIT15 ;TO10 DONE
PI10OF==BIT14 ;THIS DTE20 IS NOT TRYING TO INTERRUPT THE -10
TO10ER==BIT13 ;TO 10 ERROR (NPR TIMEOUT OR BUS ERROR)
INTR11==BIT12 ;11 INTERRUPT PENDING
DOOR10==BIT11 ;10 REQUESTING 11 INTERRUPT (DOORBELL FROM 10)
DXWRD1==BIT10 ;DEPOSIT OR EXAMINE WORD ONE
PARERR==BIT9 ;-11 MEMORY PARITY ERROR
DOOR11==BIT8 ;REQUEST 10 INTERRUPT (DOORBELL FROM 11)
TO11DN==BIT7 ;TO11 DONE
EBSEL==BIT6 ;E BUFFER SELECT
NULSTP==BIT5 ;NULL STOP
DEAD10==BIT4 ;KL10 STOPPED
DBUSON==BIT3 ;DIAGNOSTIC BUS ENABLED
DEXDON==BIT2 ;DEPOSIT OR EXAMINE DONE
TO11ER==BIT1 ;TO 11 ERROR (NPR TIMEOUT OR BUS ERROR)
; FUNCTION SELECT CODES
STPCLK==010 ; STOP CLOCK
STRCLK==011 ; START CLOCK
SSCLK==014 ; SINGLE STEP THE CLOCK
CLRMR==016 ; CLEAR MR RESET
SETMR==017 ; SET MR RESET
BRCLK==015 ; BURST THE CLOCK
LDCLK==012 ; LOAD CLOCK BURST COUNTER & RATE
CLKCND==101 ; READ CLOCK CONDITION
LDRAM1==030 ; LOAD D-RAM DATA
LDRAM2==031
LDRAM3==032
RDRAMA==131 ; READ D-RAM ADDRESS
RDRAM1==132 ; READ D-RAM DATA
RDRAM2==133
DRAMAB==132 ; D-RAM A & B
DRAMJ==133 ; D-RAM J
LCRAM1==040 ; LOAD C-RAM DATA
LCRAM2==041
LCRAM3==042
LCRAM4==043
LCRAM5==044
LCRAMA==047 ; LOAD C-RAM ADDRESS
RCRAM1==140 ; READ C-RAM DATA AND ADDRESS
RCRAM2==141 ; READ C-RAM DATA
RCRAM3==142
RCRAM4==143
RELCTR==000 ; RELINQUISH CONTROL OF THE TRANSLATOR
DIAGRD==001 ; SET TRANSLATOR IN 10 TO 11 DIRECTION
DIAGLD==002 ; SET TRANSLATOR IN 11 TO 10 DIRECTION
IRLOAD==003 ; ENABLE LOADING OF THE AR & IR REGISTERS
DRLTCH==005 ; LOAD D-RAM LATCHES
CLRRUN==007 ; CLEAR RUN FLIP-FLOP
SETRUN==006 ; SET RUN FLIP-FLOP
CONBUT==004 ; THE CONTINUE BUTTON
READ0==110 ; PI (READ STATUS 0)
READ1==111 ; PI (READ STATUS 1)
READ2==112 ; PI (READ STATUS 2)
READ3==113 ; PI (READ STATUS 3)
DPAR==120 ; AR (DATA PATH)
DPBR==121 ; BR
DPMQ==122 ; MQ
DPFM==123 ; FM
DPBRX==124 ; BRX
DPARX==125 ; ARX
DPADX==126 ; ADX
DPAD==127 ; AD
DPFE==133 ; FE
DPSC==131 ; SC
DPERG==157 ; E-BUS REGISTER
RDPCH==130 ; READ PC 18-26
RDPCL==131 ; READ PC 27-35
RDVMAH==132 ; READ VMA 18-26
RDVMAL==133 ; READ VMA 27-35
MCHLTLP==42 ; U CODE HALT LOOP ADDRESS
.SBTTL *BBD* KL10 EBOX MACRO DEFINITIONS, 4-MAR-75
;MACRO TO TURN 36 BIT WORDS INTO 5 UPSIDE DOWN BYTES
.MACRO WD36 A,B,C
.NLIST SRC
.BYTE <377&C>,<</400>!<*20>>,</20>
.BYTE ,</400>
.LIST SRC
.ENDM
;PDP10 CPU INSTRUCTION MACRO. TAKES 5 ARGUMENTS AS IN NORMAL
;10 CODE. 5 FIELDS MUST BE PRESENT (4 FIELD SEPARATORS)
;BUT THE AD,AC,I, AND XR FIELDS MAY BE LEFT BLANK AND IF SO,
;WILL ASSEMBLE AS ZERO. THE OP FIELD MUST NOT BE LEFT BLANK.
.MACRO I10 OP,CAC,CI,CAD,CXR
ADH==0
ADL==0
.IF NB CAD
.IRPC AD1,CAD
.IIF GE ,ADH==ADL/10000
ADL==10*+AD1
.ENDM
.ENDC
.IIF B CAC,AC==0
.IIF NB CAC,AC==CAC
.IIF B CI,I==0
.IIF NB CI,I==CI
.IIF B CXR,XR==0
.IIF NB CXR,XR==CXR
.NLIST SRC
.BYTE ,<!>,>+>
.BYTE >,
.LIST SRC
.ENDM I10
;MACRO TO GENERATE A RIGHT JUSTIFIED 3-BYTE VALUE
;FOR A 22-BIT ARGUMENT
.MACRO WD22 AD
ADH==0
ADL==0
.IRPC AD1,AD
.IIF GE ,ADH==<10*ADH>+
ADL==10*+AD1
.ENDM
.NLIST SRC
.BYTE ,<!>,
.LIST SRC
.ENDM WD22
;PDP10 I/O INSTRUCTION MACRO. TAKES 5 ARGUMENT AS NOTED ABOVE
;IN THE DESCRIPTION OF THE I10 MACRO. THE 8 I/O OP CODES ARE
;DEFINED AS ARE DEVICE CODES APR, PI, PAG, AND CCA.
.MACRO IO10 OP,DV,CI,AD,CXR
.IIF B CI,I==0
.IIF NB CI,I==CI
.IIF B CXR,XR==0
.IIF NB CXR,XR==CXR
BLKO==2
DATAO==3
BLKI==0
DATAI==1
CONO==4
CONI==5
CONSZ==6
CONSO==7
APR==0
PI==4
PAG==10
CCA==14
ADH==0
ADL==0
.IRPC AD1,AD
.IIF GE ,ADH==ADL/10000
ADL==10*+AD1
.ENDM
.NLIST SRC
.BYTE ,<!>,>+>
.BYTE >,
.LIST SRC
.ENDM IO10
;THIS IS A MACRO TO WAIT FOR A DONE FLAG
.MACRO WFZERO BITSEL
MOV #2500.,-(SP) ;SET TIMEOUT CNT
91$: BIT #BITSEL,@.DIAG1 ;TEST BIT
BEQ 92$ ;LEAVE IF BIT ZERO(OK)
DEC (SP) ;DECREMENT CNT
BNE 91$ ;CONTINUE LOOP
TST RPTFLG ;OTHERWISE TIME OUT
BNE 92$
JSR R1,$DFTIM
92$: TST (SP)+ ;RESET STACK & CONTINUE
.ENDM
;THIS MACRO IS A WAIT FOR FLAG MACRO.
;IT WAITS FOR A TEST BIT TO GO TO ONE
;FROM A ZERO
.MACRO WFONE BITSEL
MOV #2500.,-(SP) ;SET TIMEOUT CNT
93$: BIT #BITSEL,@.STDTE ;TEST BIT
BNE 94$ ;LEAVE IF NOW A ONE(OK)
DEC (SP) ;DECREMENT CNT
BNE 93$ ;CONTINUE LOOP
TST RPTFLG ;OTHERWISE TIME OUT
BNE 94$
JSR R1,$DFTIM
94$: TST (SP)+ ;RESET STACK
.ENDM
.NLIST
.ENDC ; DTEBBD
.LIST
.NLIST
.IF DF DVASB
.LIST
.SBTTL DEVICE SYMBOL DEFINITIONS, 4-JUNE-75
; PRIORITY LEVELS FOR SERVICE ROUTINES.
TPILEV==PR6 ; TERMINAL PRIORITY LEVEL
NXMPIL==PR7 ; "NON-X-MEM" PRIORITY LEVEL
DHRPS==TPILEV ; DH11 RECEIVER PRIORITY
DHTPS==DHRPS ; DH11 TRANSMITTER
DLRPS==DHRPS ; DL11
DLTPS==DLRPS
KWLPS==DHRPS ; KW11 PRIORITY LEVEL
NXMPS==NXMPIL ; "NON-X-MEM" PRIORITY LEVEL
; BIT DEFINITIONS FOR THE PARAMETER WORD.
PDHDNS==11 ; DH11 DEVICE NUMBER SHIFT
PDHDNM==7000 ; DH11 DEVICE NUMBER MASK
PDHLNS==4 ; DH11 LINE NUMBER SHIFT
PDHLNM==360 ; DH11 LINE NUMBER MASK
PDHLSS==0 ; DH11 LINE SPEED SHIFT
PDHLSM==17 ; DH11 LINE SPEED MASK
PDLFCS==PDHLNS ; DL11 FILLER CLASS SHIFT
PDLFCM==PDHLNS ; DL11 FILLER CLASS MASK
; OTHER DEVICES.
DP11BA==174770 ; DP11 DEVICE REGISTERS BASE ADDRESS
DP11RS==10 ; DP11 DEVICE REGISTER SIZE
DP11VS==10 ; DP11 INTERRUPT VECTOR SIZE
DM11BA==170500 ; DM11 DEVICE REGISTER BASE ADDRESS
DM11RS==10 ; DM11 DEVICE REGISTER SIZE
DM11VS==4 ; DM11 INTERRUPT VECTOR SIZE
DR11BA==167770 ; DR11 DEVICE REGISTER BASE ADDRESS
DR11RS==10 ; DR11 DEVICE REGISTER SIZE
DR11VS==10 ; DR11 INTERRUPT VECTOR SIZE
.NLIST
.ENDC ;DVASB
.LIST
.NLIST
.IF DF KWASB
.LIST
.SBTTL KW11 DEVICE REGISTERS AND BIT DEFINITIONS, 4-JUNE-75
KWLIV==100 ; VECTOR ADDRESS
KWLKS=177546 ; LINE CLOCK STATUS DEVICE ADDRESS
KWLKE==100 ; LINE CLOCK INTERRUPT ENABLE BIT
.SBTTL MM11 DEVICE REGISTERS AND BIT ASSIGNMENTS, 4-JUNE-75
MMLPIV==114 ;VECTOR ADDRESS
MMLPBA=172100 ;1ST MM11-LP DEVICE ADDRESS
MMLPEA=172136 ;LAST MM11-LP DEVICE ADDRESS
MMERRF==BIT15 ;ERROR FLAG
MMADDM==7740 ;ADDRESS MASK
MMADDS==5 ;ADDRESS SHIFT
MMWWP==BIT2 ;WRITE WRONG PARITY
MMPIE==BIT0 ;PARITY INTERRUPT ENABLE
.NLIST
.ENDC ;KWASB
.LIST
.NLIST
.IF DF DLASB
.LIST
.SBTTL DL11 DEVICE REGISTERS AND BIT DEFINITIONS, 4-JUNE-75
DLRIV==60 ; RECEIVER VECTOR ADDRESS
DLTIV==DLRIV+4 ; TRANSMITTER VECTOR ADDRESS
DLBA=177560 ; BASE FOR DEVICE ADDRESSES
DLRCSR==0 ; RECEIVER STATUS REGISTER
DLRBUF==2 ; RECEIVER BUFFER REGISTER
DLXCSR==4 ; TRANSMITTER STATUS REGISTER
DLXBUF==6 ; TRANSMITTER BUFFER REGISTER
; BIT DEFINITIONS FOR "DLRCSR"- RECEIVER CONTROL STATUS REGISTER.
DLDSC==BIT15 ; DATA STATUS CHANGE
DLRI==BIT14 ; RING INDICATOR
DLCTS==BIT13 ; CLEAR TO SEND
DLCD==BIT12 ; CARRIER DETECT
DLRA==BIT11 ; RECEIVER ACTIVE
DLSRD==BIT10 ; SECONDARY RECEIVED DATA
DLRD==BIT7 ; RECEIVER DONE
DLRIE==BIT6 ; RECEIVER INTERRUPT ENABLE
DLDIE==BIT5 ; DATA SET INTERRUPT ENABLE
DLSTD==BIT3 ; SECONDARY TRANSMITTED DATA
DLRTS==BIT2 ; REQUEST TO SEND
DLDTR==BIT1 ; DATA TERMINAL READY
DLRE==BIT0 ; READER ENABLE
; BIT DEFINITIONS FOR "DLRBUF"- RECEIVER BUFFER.
DLERR==BIT15 ; ERROR
DLORE==BIT14 ; OVERRUN ERROR
DLFE==BIT13 ; FRAMING ERROR
DLRDPE==BIT12 ; RECEIVED DATA PARITY ERROR
DLRDS==0 ; RECEIVED DATA SHIFT
DLRDM==377 ; RECEIVED DATA MASK
; BIT DEFINITIONS FOR "DLXCSR"- TRANSMITTER CONTROL STATUS REGISTER.
DLTR==BIT7 ; TRANSMITTER READY
DLTIE==BIT6 ; TRANSMITTER INTERRUPT ENABLE
DLMAIN==BIT2 ; MAINTENANCE
DLBRK==BIT0 ; BREAK
; BIT DEFINITIONS FOR "DLXBUF"- TRANSMITTER BUFFER.
DLTDS==0 ; TRANSMITTER DATA SHIFT
DLTDM==377 ; TRANSMITTER DATA MASK
.NLIST
.ENDC ;DLASB
.LIST
.NLIST
.IF DF DHASB
.LIST
.SBTTL DH11 DEVICE REGISTERS AND BIT DEFINITIONS, 4-JUNE-75
DHIVBA==300 ; INTERRUPT VECTOR BASE ADDRESS
DHRIV==0 ; RECEIVER VECTOR ADDRESS
DHTIV==DHRIV+4 ; TRANSMITTER VECTOR ADDRESS
DHBA==160020 ; BASE FOR DEVICE ADDRESSES
DHSCR==0 ; SYSTEM CONTROL REGISTER
DHNRCR==2 ; NEXT RECEIVER CHARACTER REGISTER
DHLPR==4 ; LINE PARAMETER REGISTER
DHCAR==6 ; CURRENT ADDRESS REGISTER
DHBCR==10 ; BYTE COUNT REGISTER
DHBAR==12 ; TRANSMIT BUFFER ACTIVE REGISTER
DHTBR==14 ; TRANSMIT BREAK REGISTER
DHSSR==16 ; SILO STATUS REGISTER
; BIT DEFINITIONS FOR "DHSCR"- STATUS CONTROL REGISTER.
DHTI==BIT15 ; TRANSMITTER INTERRUPT
DHSI==BIT14 ; STORAGE INTERRUPT
DHTNIE==BIT13 ; TRANSMITTER AND NON-X-MEM INTERRUPT ENABLE
DHSIE==BIT12 ; STORAGE INTERRUPT ENABLE
DHMC==BIT11 ; MASTER CLEAR
DHNXM==BIT10 ; NON-X-MEM
DHMAIN==BIT9 ; MAINTENANCE
DHCNXM==BIT8 ; CLEAR NON-X-MEM BIT
DHRI==BIT7 ; RECEIVER INTERRUPT
DHRIE==BIT6 ; RECEIVER INTERRUPT ENABLE
DHMES==4 ; MEMORY EXTENSION SHIFT
DHMEM==60 ; MEMORY EXTENSION MASK
DHLSS==0 ; LINE SELECTION SHIFT
DHLSM==17 ; LINE SELECTION MASK
; BIT DEFINITIONS FOR "DHNRCR"- NEXT RECEIVER CHARACTER REGISTER.
DHDP==BIT15 ; DATA PRESENT
DHORE==BIT14 ; OVERRUN ERROR
DHFE==BIT13 ; FRAMING ERROR
DHRDPE==BIT12 ; RECEIVER DATA PARITY ERROR
DHRLNS==10 ; RECEIVER LINE NUMBER SHIFT
DHRLNM==7400 ; RECEIVER LINE NUMBER MASK
DHRDS==0 ; RECEIVER DATA SHIFT
DHRDM==377 ; RECEIVER DATA MASK
; BIT DEFINITIONS FOR "DHLPR"- LINE PARAMETER REGISTER.
DHAEE==BIT15 ; AUTO-ECHO ENABLE
DHHD==BIT14 ; HALF-DUPLEX
DHTSS==12 ; TRANSMITTER SPEED SHIFT
DHTSM==36000 ; TRANSMITTER SPEED MASK
DHRSS==6 ; RECEIVER SPEED SHIFT
DHRSM==1700 ; RECEIVER SPEED MASK
DHEP==BIT5 ; EVEN PARITY
DHPE==BIT4 ; PARITY ENABLE
DHTSB==BIT2 ; TWO STOP BITS
DHCLS==0 ; CHARACTER LENGTH SHIFT
DHCLM==3 ; CHARACTER LENGTH MASK
DHCL5==0 ; CHARACTER LENGTH - 5 BITS
DHCL6==1 ; CHARACTER LENGTH - 6 BITS
DHCL7==2 ; CHARACTER LENGTH - 7 BITS
DHCL8==3 ; CHARACTER LENGTH - 8 BITS
; BIT DEFINITIONS FOR "DHSSR"- SILO STATUS REGISTER.
DHSFLS==10 ; SILO FILL LEVEL SHIFT
DHSFLM==37400 ; SILO FILL LEVEL MASK
DHREMS==6 ; READ EXTENDED MEMORY SHIFT
DHREMM==300 ; READ EXTENDED MEMORY MASK
DHSALS==0 ; SILO ALARM LEVEL SHIFT
DHSALM==77 ; SILO ALARM LEVEL MASK
.NLIST
.ENDC ;DHASB
.LIST
.NLIST
.IF DF TAASB
.LIST
.SBTTL TA11 (CASSETTE) DEVICE REGISTER AND BIT DEFINITIONS, 4-JUNE-75
TACS=177500 ;CONTROL AND STATUS REGISTER
TADB=TACS+2 ;DATA BUFFER REGISTER
TAIV==260 ;INTERRUPT VECTOR
; BIT ASSIGNMENTS WITHIN THE CONTROL AND STATUS REGISTER
TAGO==1 ;GO = START OPERATION
TAFUNC==16 ;"FUNCTION TO BE PERFORMED" FIELD
TAWFG==0*2 ;"WRITE FILE GAP" FUNCTION
TAWRIT==1*2 ;"WRITE DATA" FUNCTION
TAREAD==2*2 ;"READ DATA" FUNCTION
TASRF==3*2 ;"SPACE REVERSE FILE" FUNCTION
TASRB==4*2 ;"SPACE REVERSE BLOCK (RECORD)" FUNCTION
TASFF==5*2 ;"SPACE FORWARD FILE" FUNCTION
TASFB==6*2 ;"SPACE REVERSE BLOCK (RECORD)" FUNCTION
TAREWD==7*2 ;"REWIND" FUNCTION
TAILBS==20 ;INITIATE LAST BYTE SEQUENCE
TAREDY==40 ;READY
TAINTE==100 ;INTERRUPT ENABLE
TARQST==200 ;TRANSFER REQUEST
TAUNIT==400 ;UNIT SELECTION
TAOFFL==1000 ;UNIT OFF LINE
TATERR==2000 ;TIMING ERROR (LOST DATA)
TAFGAP==4000 ;FILE GAP
TALOCK==10000 ;WRITE LOCKED
TALEAD==20000 ;CLEAR LEADER
TABCHK==40000 ;BLOCK CHECK (BAD CRC AFTER READ)
TAEROR==100000 ;ERROR (ERROR SUMMARY BIT)
.NLIST
.ENDC ;TAASB
.LIST
.NLIST
.IF DF RXASB
.LIST
.SBTTL RX11/RX01 (FLOPPY) REGISTERS AND BIT DEFINITIONS, 22-JULY-75
;RX11 STANDARD DEVICE ADDRESSES
RXCS=177170 ;COMMAND STATUS REGISTER
RXDB=177172 ;DATA BUFFER REGISTER
RXSA=177172 ;SECTOR ADDRESS REGISTER
RXTA=177172 ;TRACK ADDRESS REGISTER
RXES=177172 ;ERROR STATUS REGISTER
RXIV==264 ;INTERRUPT VECTOR ADDRESS
;RX11 FUNCTION CODES
RXFBUF==0 ;FILL BUFFER
RXEBUF==2 ;EMPTY BUFFER
RXWSEC==4 ;WRITE SECTOR
RXRSEC==6 ;READ SECTOR
RXRSTAT=12 ;READ STATUS
RXWDDS==14 ;WRITE DELETED DATA SECTOR
RXRERR==16 ;READ ERROR REGISTER
;RX11 COMMAND AND STATUS REGISTER BIT DEFINITIONS
RXGO==1 ;GO
RXU1==20 ;RX01 UNIT # 1
RXDONE==40 ;DONE
RXIE==100 ;INTERRUPT ENABLE
RXTREQ==200 ;TRANSFER REQUEST
RXINI==40000 ;INITIALIZE
RXERROR==100000 ;ERROR
;RX11 ERROR STATUS REGISTER BIT DEFINITIONS
RXCRCE==1 ;CRC ERROR
RXPARE==2 ;PARITY ERROR
RXIDONE==4 ;INITIALIZE DONE
RXDDD==100 ;DELETED DATA DETECTED
RXDRDY==200 ;DRIVE READY
.NLIST
.ENDC ;RXASB
.LIST
.NLIST
.IF DF TCASB
.LIST
.SBTTL TC11 (DECTAPE) DEVICE REGISTERS AND BIT DEFINITIONS, 4-JUNE-75
;DECTAPE PARAMETERS
TCILO==BIT12 ;ILLEGAL OPERATION
TCSELE==BIT11 ;SELECTION ERROR
TCIE==BIT6 ;INTERRUPT ENABLE
TCDO==BIT0 ;DO OPERATION
TCRDATA==BIT2 ;READ DATA
TCWDATA==BIT3+BIT2 ;WRITE DATA
TCRNUM==BIT1 ;READ BLOCK NUMBER
TCREV==BIT11 ;REVERSE DIRECTION
TCPAR==BIT14 ;PARITY ERROR
TCBLKM==BIT10 ;BLOCK MISSED
TCDATM==BIT9 ;DATA MISSED
TCMTE==BIT13 ;MARK TRACK ERROR
TCERR==BIT15 ;DECTAPE ERROR
TCRDY==BIT7 ;READY
TCSOFT==TCPAR+TCBLKM+TCDATM+TCMTE
TCST=177340 ;STATUS REGISTER
TCCM=177342 ;COMMAND REGISTER
TCCM1=177343 ;COMMAND UPPER BYTE
TCWC=177344 ;WORD COUNT REGISTER
TCBA=177346 ;BUS MEMORY ADDRESS
TCDT=177350 ;DATA REGISTER
.NLIST
.ENDC ;TCASB
.LIST
.NLIST
.IF DF RPASB
.LIST
.SBTTL RH11/RP04 REGISTER AND BIT DEFINITIONS, 4-JUNE-75
BLKSIZ==256. ;DISK BLOCK SIZE (IN 16-BIT WORDS)
IFESIZ==3 ;INDEX FILE ENTRY SIZE (IN 16-BIT WORDS)
FDESIZ==16. ;FILE DIRECTORY ENTRY SIZE (IN 16-BIT WORDS)
RPCS1==0 ;OFFSET TO RH11/RP04 CONTROL & STATUS REGISTER 1
RPTRE==BIT14 ;"TRANSFER ERROR" BIT IN RPCS1
RPMCPE==BIT13 ;"MASSBUS CONTROL BUS PARITY ERROR" BIT IN RPCS1
RPDVA==BIT11 ;"DRIVE AVAILABLE" BIT IN RPCS1
RPRDY==BIT7 ;"CONTROLLER READY" BIT IN RPCS1
RPPRST==21 ;READ-IN PRESET FUNCTION IN RPCS1
RPPACK==23 ;PACK ACKNOWLEDGE (SET VV) FUNCTION IN RPCS1
RPWTFN==61 ;WRITE DATA FUNCTION IN RPCS1
RPRDFN==71 ;READ DATA FUNCTION IN RPCS1
RPWC==2 ;OFFSET TO RH11/RP04 WORD COUNT REGISTER
RPBA==4 ;OFFSET TO RH11/RP04 UNIBUS ADDRESS REGISTER
RPDA==6 ;OFFSET TO RH11/RP04 TRACK & SECTOR ADDRESS REGISTER
RPCS2==10 ;OFFSET TO RH11/RP04 CONTROL & STATUS REGISTER 2
RPCLR==BIT5 ;"CONTROLLER (AND MASSBUS) CLEAR" BIT IN RPCS2
RPDS==12 ;OFFSET TO RH11/RP04 DRIVE STATUS REGISTER
RPATA==BIT15 ;"ATTENTION ACTIVE" BIT IN RPDS
RPERR==BIT14 ;"COMPOSITE ERROR" BIT IN RPDS
RPMOL==BIT12 ;"MEDIUM ON-LINE" BIT IN RPDS
RPDPR==BIT8 ;"DRIVE PRESENT" BIT IN RPDS
RPDRY==BIT7 ;"DRIVE READY" BIT IN RPDS
RPVV==BIT6 ;"VOLUME VALID" BIT IN RPDS
RPOF==32 ;OFFSET TO RH11/RP04 OFFSET REGISTER (CONTAINING FMT22)
RPFMT==BIT12 ;"FMT22" (16-BIT WORDS) BIT IN RPOF
RPECI==BIT11 ;"ERROR CORRECTION CODE INHIBIT" BIT IN RPOF
RPDC==34 ;OFFSET TO RH11/RP04 DESIRED CYLINDER REGISTER
.NLIST
.ENDC ;RPASB
.LIST
.NLIST
.IF DF LPASB
.LIST
.SBTTL LP20 REGISTER AND BIT DEFINITIONS, 27-JUNE-75
LP20A=177440 ;LP20 1ST CONTROLLER ADDRESS
LP20B=177460 ;LP20 2ND CONTROLLER ADDRESS
LPAVEC==210 ;LP20A INTERRUPT VECTOR
LPBVEC==200 ;LP20B INTERRUPT VECTOR
LPCSRA==0 ;OFFSET TO LP20 PRIMARY STATUS REGISTER
LPERR==BIT15 ;"ERROR" BIT IN LPCSRA
LPPZRO==BIT14 ;"PAGZRO" BIT IN LPCSRA
LPUCHR==BIT13 ;"UNDCHR" BIT IN LPCSRA
LPVRDY==BIT12 ;"UNDCHR" BIT IN LPCSRA
LPONLN==BIT11 ;"ONLINE" BIT IN LPCSRA
LPDELH==BIT10 ;"DELHLD" BIT IN LPCSRA
LPLINI==BIT9 ;"LOINIT" BIT IN LPCSRA
LPRERR==BIT8 ;"RSTERR" BIT IN LPCSRA
LPDONE==BIT7 ;"DONE" BIT IN LPCSRA
LPIENB==BIT6 ;"INTENB" BIT IN LPCSRA
LPBA17==BIT5 ;"BUSA17" BIT IN LPCSRA
LPBA16==BIT4 ;"BUSA16" BIT IN LPCSRA
LPVLOD==BIT3 ;"VFULOD" BIT IN LPCSRA
LPTMOD==BIT2 ;"TSTMOD" BIT IN LPCSRA
LPPENB==BIT1 ;"PARENB" BIT IN LPCSRA
LPGO==BIT0 ;"GO" BIT IN LPCSRA
LPCSRB==2 ;OFFSET TO LP20 ERROR AND TEST REGISTER
LPTPBT==BIT12 ;"LPTPBT" BIT IN LPCSRB
LPT02==BIT10 ;"TEST02" BIT IN LPCSRB
LPT01==BIT9 ;"TEST01" BIT IN LPCSRB
LPT00==BIT8 ;"TEST00" BIT IN LPCSRB
LPOFFL==BIT7 ;"OFFLIN" BIT IN LPCSRB
LPVERR==BIT6 ;"VFUERR" BIT IN LPCSRB
LPTPAR==BIT5 ;"LPTPAR" BIT IN LPCSRB
LPMPAR==BIT4 ;"MEMPAR" BIT IN LPCSRB
LPRPAR==BIT3 ;"RAMPAR" BIT IN LPCSRB
LPSYNT==BIT2 ;"SYNTIM" BIT IN LPCSRB
LPDEMT==BIT1 ;"DEMTIM" BIT IN LPCSRB
LPGOER==BIT0 ;"GOERR" BIT IN LPCSRB
LPBSAD==4 ;OFFSET TO LP20 DMA BUS ADDRESS REGISTER
LPBCTR==6 ;OFFSET TO LP20 DMA BYTE COUNTER REGISTER
LPPCTR==10 ;OFFSET TO LP20 PAGE COUNTER REGISTER
LPRAMD==12 ;OFFSET TO LP20 RAM DATA REGISTER
LPCBUF==14 ;OFFSET TO LP20 CHAR BUFFER REGISTER (BYTE)
LPCCTR==15 ;OFFSET TO LP20 COLUMN COUNTER REGISTER (BYTE)
LPCKSM==16 ;OFFSET TO LP20 CHECKSUM REGISTER (BYTE)
LPPDAT==17 ;OFFSET TO LP20 PRINTER DATA REGISTER (BYTE)
.NLIST
.ENDC ;LPASB
.LIST