; ; PROGRAM DEVPAT.MAC ; TO OVERWRITE CODE IN SCOMM, ROUTINE $$FDEV TO ENABLE ; INDIVIDUAL REDIRECTION OF THE SY DEVICE FOR REALTIME ; AS WELL AS TIME-SHARING TASKS. THE DEFAULT DEVICE ; INFORMATION FOR NON-TCP CONTROLLED TASKS IS IN THE ; PUD FOR THE TI AT OFFSET U.LBH. IT IS THE PUD ADDRESS ; OF THE DEFAULT DEVICE. ; ; THE TI PUD WILL HAVE TO BE FILLED IN FOR THE TIME ; BEING BY A SEPARATE TASK (SDV), POTENTIALLY ALLOWING ; DIFFERENT DEFAULT DEVICES FOR TCP AND NON-TCP TASKS. ; THIS TASK SHOULD BE RUN AT HIGH PRIORITY DURING INITIAL ; SYSTEM STARTUP TO PATCH EXEC. IF CONTEXT SWITCHING IS ; THOUGHT TO BE A PROBLEM, CODE SHOULD BE MODIFIED TO ; INHIBIT TASK SWITCHING. ; ; FOR IAS VERSION 3.2 THE ..FDEV CODE HAS BEEN MOVED TO BE PART OF THE ; EXEC AND IS NOT IN SCOMM. WE MUST THEREFORE DO THINGS DIFFERENTLY, ; MAPPING PAR/PDR3 TO THE PORTION OF THE EXEC IN QUESTION, AND MOVING ; THINGS THAT WAY ; ; PD4KRW=77406 ;A 4K READ/WRITE PAGE DESCRIPTOR SCMSBS=25172 ;THE EXEC ADRESS OF THE EXEC MODULE SCMSBS, ;(OBTAIN THIS FROM A MAP OF THE EXEC) SCMAP3=SCMSBS+40000 ;THIS MAPS TO SCMSBS VIA PAR/PDR3 EXEPDA=206 ;VALUE OF PAGE ADDRESS REGISTER 1 AS ;OBTAINED FROM A CRASH OR FROM KERNAL ;LOCATION 172342/KNL .MCALL EXIT$S,CALL ; START: MOV #PD4KRW,-(SP) ;PUSH NEW PDR MOV #EXEPDA,-(SP) ;PUSH NEW PAR CALL ..SPD3 ;SWAP PAR/PDR 3 MOV #SCMAP3,R0 ;GET START ADDRESS OF SCMSBS MODULE ADD #PATCH,R0 ;ADD THE OFFSET TO THE PATCH AREA SUB #1000,R0 ;ACCOUNT FOR EFFECT OF STACK MOV #PATCH,R1 ;GET ADDRESS OF PATCH CODE MOV #PATSIZ,R2 ;GET SIZE OF PATCH ASR R2 ;CONVERT TO NUMBER OF WORDS 1$: MOV (R1)+,(R0)+ ;HEAD 'EM UP AND SOB R2,1$ ;MOVE 'EM OUT EXIT$S CODSIZ=.-START ;FIGURE HOME MUCH OFFSET DUE TO ABOVE ; .PAGE ; ; ; TO ENABLE DEBUGGING, THE PC IS SET TO MATCH WHAT THE PC ; IS FOR ..FDEV FROM AN ORC LISTING. THIS WILL HAVE NO EFFECT ON ; THE PATCH, SINCE IT ONLY DOES RELATIVE (BRANCHING) ADDRESSING ; THIS LETS US EDIT OUT THE MAJOR PORTION OF THE (NOW IN EXEC NOT ; SCOMM) ROUTINE SCMSBS. ; .=.+1776 ;PC NOW EQUAL TO SCOMM ADDRESS OF ..FDEV .=.-CODSIZ ;SUB CODSIZ TO ALLOW FOR ABOVE CODE ; ; SCMSBS OBJECT TO MACRO CONVERSION V01.1 20-MAY-85 14:01 .ENABLE LSB .$FDEV:: MOV R5,-(SP) MOV R4,-(SP) TST R0 BEQ 2072$ JSR PC,2266$ BCC 2260$ MOV A.TI(R0),R5 BIT #,U.C1(R5) BNE 2072$ ADD #U.LA,R5 2034$: MOV (R5),R5 BEQ 2072$ CMP L.LDN(R5),(SP) BNE 2034$ CMP L.LDU(R5),2(SP) BNE 2034$ MOV L.PDN(R5),(SP) MOV L.PDU(R5),2(SP) BR 2132$ 2072$: MOV #$LABPT,R5 2076$: MOV (R5),R5 BEQ 2132$ CMP L.LDN(R5),(SP) BNE 2076$ CMP L.LDU(R5),2(SP) BNE 2076$ MOV L.PDN(R5),(SP) MOV L.PDU(R5),2(SP) 2132$: JSR PC,2266$ BCC 2260$ CMP (SP),#47524 BEQ 2154$ CMP (SP),#44524 BNE 2162$ 2154$: MOV #1,R5 BR 2260$ 2162$: CMP (SP),#53117 BNE 2216$ MOV A.TD(R0),R5 MOVB S.DI(R5),R5 BIC #177400,R5 MUL #U.SZ,R5 ADD .PUDBA,R5 BR 2260$ 2216$: MOV .PUDBA,R5 2222$: CMP U.DN(R5),(SP) BNE 2240$ CMPB U.UN(R5),2(SP) BEQ 2260$ 2240$: ADD #U.SZ,R5 CMP R5,.PUDEA BCS 2222$ CMP (SP)+,(SP)+ SEC RTS PC 2260$: CMP (SP)+,(SP)+ CLR R4 RTS PC 2266$: CMP 2(SP),#54523 BNE 2342$ ; BIT #AF.IA,A.TF(R0) ; BEQ 2342$ ; TST A.JN(R0) ;THIS IS THE PATCH ITSELF PATCH=. ;DEFINE START OF PATCH CODE MOV A.TI(R0),R4 ;GET TI PUD POINTER MOV U.LBH(R4),R5 ;GET DEFAULT DEVICE PUD ADDRESS BNE 2336$ ;BRANCH IF DEF PUD ADDRESS THERE BR 2342$ ;OTHERWISE LOOK FOR SY PATSIZ=.-PATCH ;CALC SIZE OF PATCH AREA ; THE REST OF THIS CODE IS NOT OVERWRITTEN, BUT IS HERE SO ; BRANCH INSTRUCTION GET THE RIGHT VALUES BEQ 2342$ MOV A.TI(R0),R4 MOV U.ACP(R4),R4 ADD #I.SY,R4 JSR PC,2354$ BEQ 2342$ 2336$: CLC ;ADDED ADDRESS LABLE FOR SUCCESS RETURN RTS PC 2342$: SEC RTS PC .$PIAS:: 2346$: MOV R0,-(SP) CLR R0 BR 2360$ .$GIAS:: 2354$: MOV R0,-(SP) MOV SP,R0 2360$: CLR -(SP) ;END OF NECESSARY PART OF SCMSBS .END START