//MXALTIO overlay for calls to AltIO get "streams.d" get "altofilesys.d" external [ //system OpenFile; Wss; Wns; Resets; Closes; Puts; Zero; CallSwat fpComCm; Allocate //Midas CmdAbortAct; CmdAbort; QuitCmdOverlay; CreateAction WsMarkA; CmdCommentStream; CallAltIO; FormMenu FormCmdmenuText; CmdMDFS; CFileStream; CFOutStream OverlayZone; ReadAllRegs; SaveRcdFile //Defined here ArgsAltIO; CallingAltIO ] static [ // Actions AltDoItAct; ALTACT; AltVec; AltFlag; CallingAltIO ] manifest [ NAltItems = 5 ] let ArgsAltIO() = valof [ CallingAltIO = false ALTACT = Allocate(OverlayZone,2*NAltItems+1) AltVec = ALTACT+NAltItems; Zero(AltVec,NAltItems) AltFlag = table [ $B; $S; $R; $P; $H ] DefAlt("Boot-MExec",0); DefAlt("RunTenex",1) DefAlt("Reset-Memory",2); DefAlt("Protect",3) DefAlt("Dont-Go",4) AltDoItAct = CreateAction("Do-It",lv AltDoIt,0) CmdAbortAct = CreateAction("Abort",lv CmdAbort,0,0,$C-100B) resultis AltIOMenu ] and DefAlt(menuS,vecX,Flag) be [ ALTACT!vecX = CreateAction(menuS,lv DoAltItem,vecX) ] and AltIOMenu(S,Nix) be [ Resets(CmdCommentStream) Wss(CmdCommentStream,"AltIO.run") WsMarkA(CmdAbortAct) for I = 0 to NAltItems-1 do [ test AltVec!I eq 0 ifso WsMarkA(ALTACT!I) ifnot [ Puts(CmdCommentStream,$/); Puts(CmdCommentStream,AltFlag!I) ] ] WsMarkA(AltDoItAct) ] and DoAltItem(S,garb,MBUnion,vecX) be [ AltVec!vecX = AltFlag!vecX; FormMenu(CmdMDFS,FormCmdmenuText) ] and AltDoIt(S,garb,MBUnion,Nix) be [ let F = OpenFile("Com.CM",ksTypeWriteOnly,charItem,verLatest,fpComCm) if F eq 0 then CallSwat() Wss(F,"AltIO.run") for I = 0 to NAltItems-1 do [ if AltVec!I ne 0 do [ Puts(F,$/); Puts(F,AltFlag!I) ] ] Puts(F,$ ); Closes(F) SaveRcdFile() //Write out extra symbol blocks CallingAltIO = true if CFileStream ne 0 do [ Closes(CFileStream); CFileStream = 0 ] if CFOutStream ne 0 do [ Closes(CFOutStream); CFOutStream = 0 ] QuitCmdOverlay() ]