BASH11M BASH11M IS A PROGRAM TO DYNAMICALLY PATCH THE IN MEMORY RSX11M OR RSX11M PLUS EXECUTIVE (ASSEMBLY OPTION) TO PERMIT TASKS TO BE RUN IN PREVIOUS KERNEL MODE MEMORY MAPPING. TASKS WILL ONLY RUN IN THIS MODE (AS OPPOSED TO THE NORMAL PREVIOUS USER MODE) WHEN THEIR INITIAL PSW IS ZAPPED ON DISK AFTER INSTALLATION OF THE TASK, OR WHEN THEY DECLARE AN AST AND MODIFY THE STORED PSW ON THE STACK DURING AN AST BY DOING A "BIC #30000,4(SP)" INSTRUCTION WITH THE STACK IN THE NORMAL POSITION FOR AN ASTX$ CALL. OTHERWISE THEY RUN IN CURRENT MODE USER, PREVIOUS MODE USER AS USUAL. THE BENEFITS OF PREVIOUS KERNEL MODE ARE GREAT. THIS MODE ALLOWS THE MTPI/MFPI OR MTPD/MFPD INSTRUCTIONS TO HAVE PEEK OR POKE ACCESS TO ANYWHERE IN KERNEL SPACE, WHICH INCLUDES THE I/O PAGE AND HENCE ALL APRS, SO A TASK CAN QUICKLY MAP A GLOBAL AREA ANYWHERE IN THE MACHINE, MODIFY DATA THERE, AND RETURN TO NORMAL. IT SHOULD BE OBVIOUS TO SYSTEM MANAGERS THAT THIS POWER CAN BE EXACTLY AS DANGEROUS AS HAVING A COMMON IN THE I/O PAGE THAT NONPRIVILEGED TASKS CAN MAP TO, SINCE IN EITHER CASE NONPRIVILEGED USERS CAN MAKE THEMSELVES PRIVILEGED, MAP ANYWHERE, ETC. EVEN SO, WHERE MORE ADDRESS SPACE IS NEEDED, THIS SYSTEM WILL ALLOW ONE TO HAVE IT WITH VERY LITTLE SPEED PENALTY. TO USE THE SYSTEM, BUILD BASH11M AND RUN IT ONCE. THIS WILL PATCH RSX (BASH11M CAN BE BUILT TO UNPATCH RSX AGAIN IF DESIRED; ERRORS WILL JUST BASH LOCATIONS 0 OR 2) SO THE REST OF THE SYSTEM CAN BE USED. RSX CAN RUN NORMALLY IN THIS STATE INDEFINITELY; ON OUR SYSTEM, STARTUP.CMD RUNS BASH11M FOR US, WITHOUT DIFFICULTY. NOW YOU CAN ZAP THE DISK HEADERS OF YOUR TASK USING DDT, ZAP, OR YOUR FAVORITE DISK PATCHER AFTER INSTALLING TASKS THAT MUST USE PREVIOUS KERNEL MODE MAPPING. INSTALL SETS THE INITIAL PSW TO BOTH CURRENT AND PREVIOUS MODES USER, SO YOU CANNOT JUST RUN A TASK AND HAVE IT BE AUTO INSTALLED AND RUN PREVIOUS KERNEL MODE. (THE FACT THAT INSTALL IS A PRIVILEGED OPERATION GIVES A LITTLE PROTECTION). YOU DON'T REALLY NEED THE BASH11M PATCHES IF YOUR TASK HAS NO ASTS; ON RSX11M, RSX11M+, AND IAS THE TASK KEEPS ITS INITIAL PSW AS FOUND FROM DISK AND CAN BE RUN IN PREVIOUS KERNEL TO YOUR HEART'S CONTENT. THE PATCHES MERELY LET AST EXITS (AND SSTS) LEAVE THE TASK IN THAT MODE. THIS IS TRUE FOR IAS V3.0, V3.1, RSX11M V3.2 AND EARLIER AND RSX11M+ V1 ANYWAY; IT MAY OR MAY NOT BE TRUE FOR LATER VERSIONS. (FOR THE HACKERS, ALL YOU NEED TO DO IS USE THIS FACT TO DO THE PATCHES IN RSX AND YOU CAN RUN IN PREVIOUS KERNEL EVEN IF BASH11M IS NOT RUN...) THEN TO KEEP THE USE OF PREVIOUS KERNEL ORDERLY, I RECOMMEND USING THE ALTWND ROUTINE TO HANDLE DATA "ANYWHERE". IT WILL HANDLE THE MAPPING, CONTEXT SAVE/RESTORE, AND SO FORTH WHILE ALLOWING USER SUBROUTINES ACCESS TO DATA AS THEY NEED IT. (IT SHOULD BE NOTED THAT IN RSX11M ONE MAY RUN IN PREVIOUS SUPERVISOR MODE AND ACCESS DATA STRUCTURES MAPPED BY SUPERVISOR APRS TOO.) I HAVE INCLUDED A LITLE ROUTINE THAT PUTS A TASK INTO PREVIOUS KERNEL MODE (WORKS BY SETTING UP A MARKTIME AST AND ZAPS THE PSW ON THE STACK INSIDE THE AST) SO TASKS NEED NOT BE INSTALLED TO USE THE MAPPING MODE. NOTE IT WON'T WORK UNLESS BASH11M HAS BEEN RUN (THOUGH IN RSX11M+ IT WILL PUT YOU INTO PREVIOUS SUPERVISOR MODE - PROBABLY WITH PDRS ALL 0 THOUGH I HAVEN'T INVESTIGATED). CALL THE ROUTINE WHEN YOU START UP. IT IS IN THE ALTWND FILE. PREVIOUS-MODE MAPPING IS MAINLY FOR RELATIVELY EXPERIENCED SYSTEM HACKERS. I RECOMMEND THAT ANYONE WRITING FOR IT (EVEN WITH THE ALTWND ROUTINE) BE CAREFUL LEST HE CRASH RSX. CHECK YOUR ALTWND SUBROUTINES ESPECIALLY TO BE SURE THE STACK IS IN THE SAME PLACE AT EXIT AS AT ENTRY SINCE YOU RUN ANYTHING THERE AT PRIORITY 7 AND IF THE OLD PAR, PDR, AND PSW ARE GARBAGED, THE SYSTEM CAN GO BANANAS VERY EASILY - AND NOBODY WILL SOLVE THE SYSTEM CRASH FOR YOU; YOU'LL HAVE TO DO IT YOURSELF. FOR THOSE INTERESTED IN PERFORMING A REMAP QUICKLY THAT CAN STAY AROUND AND NOT FORCE YOU TO USE PRIORITY 7 TO AVOID CONTEXT SWITCHES, EXAMINE MXWDMG.MAC IN THE [312,315] AREA OF THE DECUS RSX SIG TAPES. IT MAKES ASSUMPTIONS OF NO CHECKPOINTING (AND MAYBE NO SHUFFLING) AND 4K PDRS, BUT BASHES 1 WORD INSIDE THE RSX KERNEL SPACE FOR THE WINDOW OFFSET AND THE APR TOGETHER, SO THE NEW MAPPING WILL REMAIN IN EFFECT AFTER A CONTEXT SWITCH. IT SHOULD BE SEVERAL TIMES FASTER THAN AN RSX MAP. IT ASSUMES I/O PAGE MAPPING TO SET UP PREVIOUS KERNEL MAPPING, BUT IF PREVIOUS KERNEL MAPPING IS ALREADY IN EFFECT, THE CODE TO SET IT UP VIA THE I/O PAGE CAN BE OMITTED.