text:
Apple Pie Protein Smoothie
Pretty sure that this may become your new favorite way to eat that apple-a-day.
It tastes just like your grandmother's apple pie, yet it's made with healthy, whole ingredients. It's quick and easy to make in just 5 minutes, yet full of nutrients that will keep you going for hours. It tastes creamy and decadent and sweet, yet it's naturally-sweetened (and also naturally gluten-free!). It's seasonal. It's affordable. It's kid-friendly.
It's something I am completely and totally hooked on right now.
It's an apple pie protein smoothie.
First, can we talk about apple pie for a minute? I mean, what's not to love about it?
Sweet, crisp, juicy apples…tossed with that perfect blend of cinnamon and spices…baked into a thick and decadently filling…enfolded by a rich, buttery crust?
Well, nix the crust and all of the unnecessary sugar, and it turns out that the ingredients at the heart of an apple pie actually make for a pretty stellar smoothie. And once you add in some almond milk for protein, and a little frozen banana to make it nice and thick, I promise that you won't even miss the crust.
Simply toss a few apples, some frozen banana slices, Greek yogurt, almond milk and classic apple pie spices into a blender.
And then within seconds, this comforting treat will be ready to go. It's sweet (but not too sweet), thick, creamy, perfectly spiced, and full of protein that will keep you going for hours. It's basically the best. And I'm pretty sure it would make grandma proud. ;)
So blend up one for yourself and enjoy!
Apple Pie Protein Smoothie
This delicious apple pie smoothie tastes just like apple pie, yet it's made healthy with good-for-you ingredients. And it's naturally sweetened and gluten-free.
- 2 large red apples (I used fuji), cored
- 1 frozen banana
- 1 cup ice
- 1 cup unsweetened almond milk
- 1/2 cup Greek yogurt
- 1 teaspoon ground cinnamon
- pinch of ground nutmeg
- pinch of ground ginger
- tiny pinch of ground cloves
- (optional: 1-2 pitted dates or 1-2 teaspoons honey, to sweeten if needed)
Add all ingredients to a blender. Pulse until combined and smooth. Taste and add sweetener if needed, pulsing to combine.
Serve immediately. Sprinkle the top of each smoothie with a pinch of cinnamon if desired.
If you make this recipe, be sure to snap a photo and hashtag it #gimmesomeoven. I'd love to see what you cook!
Leave a Reply
51 comments on "Apple Pie Protein Smoothie"
Mmmm… this smoothie looks uh-may-zing, and the best part is that I have all of the ingredients on hand!
I'm such a sucker for apple pie – this is a great recipe! How beautiful is that red apple? Love!
How did you know that I prefer my pie in a health, drinkable form?! Love that you used Greek yogurt in this for an extra protein PUNCH to keep me full until Lunch! Pinned!
So I am not usually a smoothie person, but THISSSS might have converted me. You'll always get me with the pie name :)
I'll take one of these asap! I have made what feels like hundreds of smoothies over the past year, but never with an apple. Pinned!
Um, I would gladly take this smoothie over your hands! Look delicious and healthy, too! Also, are you getting ready for AUSTIN?!!!!!
OK, making this, like, yesterday. There are two types of people in this world: those who think apple pie is something you eat on Thanksgiving, and those who think apple pie should be eaten year round in many forms. I am one of the latter. Swoon!
YUM. I am on a major smoothie kick right now (and have been for the last few months so I don't know if I can refer to it as a "kick", rather more of a habit). I just bought some apples, so I'll be making this tomorrow morning. I think I'll replace the Greek yogurt with vanilla protein powder (because that is what I have) and throw in a tablespoon of chia seeds for good measure. Thanks for the inspiration!
Wait, you're tellin' me that you can have apple pie anytime?? HORRAY!! My belly and my hips love this recipe!
YUM! Only you, Ali, could make a brown smoothie incredibly, irresistibly mouthwatering. I'm dying for apple pie in a glass stat!
Love the pictures, looks absolutely amazing!
Another awesome smoothie recipe. Apple pie flavors in a smoothie sounds delicious!
I make a smoothie every morning and usually follow the same recipe. This one looks awesome and totally different from my usual. Def trying this! http://www.getchaglowon.com
Delicious and healthy!!
looks amazing. do you have any recommendations for a substitution i can use in place of bananas? i'm allergic. thanks!
Sounds amazing! Apple pie is still in season, right?
It looks amazzzingggggg! So delicious! Need to try this recipe.
Yep, I'm sure this will become my new favourite way to have an apple-a-day – all that protein in a smoothie which tastes like apple pie is my idea of heaven!
Yum! This is one of my new faves. I normally add some chia seeds as well as bran :)
Definitely making this soon – I like how you can get in a little bit of protein from the Greek yogurt.
I want this for breakfast tomorrow morning! Sounds so delicious.
umm yeah this is going to be my daughter's after school snack. yum!
Ali, this smoothie looks amazing!!
what if you don't like bananas? whats a good substitute???
I'm really looking forward to trying this one. I love the concept of an apple pie smoothie but have been disappointed in the ones I've tried before.
This is delicious! I just made it. I love the apple pie flavor without the calories. Santa and the elves are enjoying it, too. It goes well with the apple cookies I made this morning.
Oh my gosh! I tried this smoothie and it is AMAZING! I was pretty skeptical about the taste because I thought their is no way a healthy smoothie can taste like an apple pie. But when I tried this smoothie OMG it changed my mind!
What a great way to enjoy holiday comfort food without the extra calories! What a guilt free pleasure
Plain or vanilla yogurt?
Sooo good! I love the spices in it. Definately going in my rotation. Thank you!
I made it and it was sooooo good. I love ginger so I added a lil' bit mor ginger, but other than that I followed the instructions and I terned out purfectly.
Pinning this, it's a great quick breakfast – an E (low fat, moderate carbs) for Trim Healthy Mama :) I bet it would be yummy too, and have more of a milkshake-y texture, with cottage cheese instead of the yogurt! Sounds weird, ends up delicious.
However, I am so confused at people referring to almond milk as a great protein source (second smoothie recipe I've seen this week that says this!). *Almonds* have plenty of protein. Almond milk has very little nutritional content at all, it's mostly water, with 1g or less protein per cup. Whole dairy milk has 8g. The 1/2 c. Greek yogurt here has ~11g.
How many smoothies, or how many ounces does this yield?
Made this just now. Was easy. Loved it. Cold, spicy, apple. Thanks for the recipe!
Have made this this morning and already looking forward to tomorrow's one! I did change it just slightly: i left out the yogurt and, since i can only handle a cold smoothie in summer, i warmed up the milk (yes, boiled it, eek!) and substituted the ice with a little more milk. With a teaspoon of honey, this was the most wonderful comforting drink i've had in a while. So autumny as well. Thanks for sharing the recipe with us! :)
Looks great but Greek yogurt = not vegan. Please update tags.
Can I make big batches of this and freeze the smoothies?
Thank you so much for posting this recipe! I have been making green smoothies and other healthy smoothies everyday now to replace 1 or 2 meals. I feel so much more energized and healthy! This recipe is AWESOME!!!


text:
Jameel McClain finished last season on injured reserve with a spinal cord contusion, but there's reason to believe the Baltimore Ravens' starting inside linebacker will be ready to play in 2013.
Two NFL sources with knowledge of the situation told Aaron Wilson of The Baltimore Sun on Saturday that McClain's recovery has been "positive" since suffering the injury during a loss to the Washington Redskins in December.
"All is progressing well with Jameel," one source said. "The injury requires rest."
McClain told the newspaper during Super Bowl week that doctors are moving cautiously and that they plan to put him through additional testing during the offseason.
McClain was a stout performer in 2012 after signing a three-year, $10.5 million contract in March. He said he feels no lingering pain in his neck or back since the injury, and McClain hopes that will encourage doctors to clear him in time for next season.
Follow Marc Sessler on Twitter @MarcSesslerNFL.

subset: commoncrawl


text:
With AO and OIWFS
You are here
ANNOUNCEMENT: January 2013 - OIWFS is not currently available due to a faulty sensor.
For each new instrument that is used with ALTAIR, an extensive model is generated at a range of elevations and rotator angles to remove the flexure between the Telescope-ALTAIR-Instrument system. While this model is very good at removing the vast majority of the system flexure, it is not perfect. The accuracy of the flexure compensation depends upon the deviation of the model from the true flexure for a given elevation and position of the rotator. Hence, some elevations/rotator positions have very accurate flexure compensation, while others deviate from the model. The typical flexure residuals for the NIFS+ALTAIR flexure model are small, ~0."10 to 0."15 RMS. However, when observing for long exposure sets for NIFS frames it is desirable to remove as much of the residual flexure as possible.
The NIFS instrument is equipped with an infrared On-Instrument Wavefront Sensor (OIWFS), which has the following technical properties:
- Wavelength range: 0.95-2.5 microns (Z through K-band spectroscopy)
- 2" diameter FOV
- Steerable over 180" diameter field centered on NIFS
- Image scale: 0."17/pixel
- Filters: J, H & K
- Detector: 1024x1024 HgCdTe HAWAII detector
Purpose of the OIWFS
Historically, the infrared OIWFSs were supposed to provide fast tip/tilt guiding in sky regions that did nothave a suitable optical wavefront sensor star for PWFS1 or PWFS2.However, unlike these scenarios for the NIRI and GNIRS OIWFSs, the NIFS OIWFS has been commissioned to be used solely in conjunction with ALTAIR adaptive optics and will only be used to provide slow flexure corrections.
The NIFS OIWFS can be used to remove as much of the residual 0.10-0.15"/hour from the NIFS+ALTAIR flexure model as possible. This allows for longer on-source observations of a science target with little residual flexure movement of the object. The performance of the NIFS+ALTAIR+OIWFS system has proven to be especially useful when taking observations with a bright star centered behind an occulting disk (seebelow figures). This mode may also help with precise re-centering of the science field following telescope motions (e.g. after a large offset and when a focal plane mask is being used).
When to use the OIWFS
Faint objects: If possible, the OIWFS should be used for long exposures (>∼300sec), to avoid smearing of the image by flexure during the integration. In particular, the OIWFS may be most useful for deep integrations where the science target or a reference source is not visible in a single exposure. By using the OIWFS, you can be more certain that the (invisible) target has remained in the same position in the NIFS field (modulo pointing offsets or dither patterns) during an observation sequence. This can be useful to allow accurate co-adding of exposures using the offset information directly, since you do not have a reliable reference source in each individual exposure.
Coronography: In this case, the OIWFS is critical to maintain the absolute position of the object in the NIFS field, behind the occulting disk. Note, however, that the OIWFS star cannot be on-axis.
The benefits of using an OIWFS star - less flexure movement of target
|ALTAIR Only: NIFS + ALTAIR Observation with the 0."5 occulting disk, first image after acquisition is shown on the left. NIFS + ALTAIR Occulting Disk Observation, image 2 (on right) taken 30 minutes later, showing ~60mas of flexure movement since the beginning of the observation set.
|ALTAIR+OIWFS: NIFS + ALTAIR + OIWFS Observation with the 0."5 occulting disk, first image after acquisition is shown on the left. On the right, an image taken 30 minutes later is shown. The ALTAIR+OIWFS guide configuration has resulted in very little flexure of the star behind the occulting disk during the observation set.
Accessible Field of View for OIWFS
The OIWFS is physically located below the NIFS pick-off arm, which vignettes a 25.4 arcsecond diameter circular region around the NIFS field centre, as well as a rectangular strip of 25.4 arcsecond width extending to the edge of the OIWFS field. This vignetted region is displayed as a red 'horseshoe' in the OT display tool. The vignetted region lies within the outer edge of this horseshoe.
When using ALTAIR without the field lens: In this case, the effective field of view of the OIWFS is limited to a 60" radius around the NIFS field centre. Due to the nature of the AO correction, stars will be elongated within the accessible field of the OIWFS, which may affect the OIWFS performance. For best flexure correction with OIWFS, it is recommended to use the field lens if a suitable guide source exists.
When using ALTAIR with the field lens: The ALTAIR field lens only corrects within an approximately 30" radius of the NIFS field. Furthermore, there is a vignetted region just outside this 30" limit due to the field lens mounting, but this vignetting is not well characterised, and is not represented in the OT overlays. OIWFS stars used outside the field lens limit will be elongated, and will not provide useful corrections. Therefore, when using the field lens, you must select an OIWFS star that is inside the 30" field lens limit.
Required Guide Star Characteristics: See the table on the main guiding options page for useful guide star separations and brightnesses for ALTAIR and the NIFS OIWFS. Note that the performance of the OIWFS also degrades as the distance between the OIWFS and AO guide sources increases, due to anisoplanatism.


text:
Outside auditors warned the state early this year that conditions at the Baltimore jail had deteriorated to the point that the complex had become dangerous, allowing some inmates access to chemicals in a janitorial closet while others scrawled graffiti on the walls.
The state released the results of the investigation Thursday, as officials continued to face questions about a corruption scandal at the Baltimore City Detention Center. Completed in February, the audit pointed to lax oversight of staff as a primary driver of problems at the jail.
Rick Binetti, a Department of Public Safety and Correctional Services spokesman, said many issues raised in the audit have been or are being addressed. The department has outlined a number of staffing changes to improve security.
Corrections Secretary Gary D. Maynard said at a legislative hearing Thursday that he wants to shut down the detention center, which dates back to before the Civil War, and replace it with a new facility. But he said that would be a challenge given the space constraints at the existing site on Eager Street.
Maynard had asked for the audit during a federal investigation at the facility that resulted in the indictment of two dozen people, including inmates and corrections officers accused of participating in a smuggling scheme orchestrated by the Black Guerrilla Family gang. Binetti said the audit was unrelated and that the secretary has routinely requested similar inquiries.
The audit was performed by members of the National Institute of Corrections, a federal agency that provides technical assistance to jails and prisons around the country.
No standard structure is in place at the city jail for security checks or for how often they are conducted, the audit said. Many security gates are operated manually and have no electronic controls. Officers have a poor understanding of inmates' civil rights, and holding cells are "uniformly dirty."
It found that graffiti in some cells is so thick that the walls appear muraled, full of overlapping street-art taggings. Some hallway walls have simply been painted black to hide the dirt and graffiti. Hand-written signs and outdated staff memos litter the walls. And toilet paper has been crammed into nearly all the air vents at the central booking facility — a condition that neither auditors nor corrections officials explained.
The audit also faulted record-keeping at the jail. Correctional officers in the male and female detention centers, central booking and other jail facilities kept hand-written records of critical inmate movements, sometimes in erasable pencil, the audit found.
The Baltimore Sun requested the audit in a public records request shortly after the federal indictments were handed down. The audit's findings cover a wide range of operations at the city jail facilities, many of which focus on staffing procedures.
The chain of supervision was skewed as some corrections officers were named corporals after one year on the job, a system that the audit said left Baltimore's jail system with a "top heavy" workforce and "a lack of accountability that hinders day to day operation of the jail system."
"Excessive layers of administration and superfluous supervisors must be eliminated in order to improve efficiency and enhance accountability," wrote David M. Parrish and Timothy P. Ryan, the auditors.
The documents said staff left janitorial closets unlocked at the jail and surrounding facilities, giving inmates unsupervised access to potentially dangerous materials. Binetti said the closets have since been secured.
Maynard began rolling out solutions to the documented problems shortly after the audit was completed, Binetti said, and more changes are on the way.
"He's a big believer in third-party audits as a management tool," Binetti said. "A different set of eyes looking at operations can help point an institution in the right direction."
Binetti said Maynard has formed a group that will come up with new staff conduct guidelines. The team also is reviewing how officers compile and record where they were stationed, their supervisory duties and information about inmate searches.
A new front-entrance policy is already in place with more restrictions on what correctional officers are permitted to bring into the facility, he said.
The state also has moved to upgrade the security camera system and replace many that the department found broken at the facility in the wake of the indictment. Binetti said 144 of 231 cameras in the detention center were either completely broken or had some other problem, such as a cracked screen.
Also in the works are discussions with union officials about restructuring corrections officers' ranks and hours. The audit calls for the system to refine ranks but leave pay untouched.
Union members have called for better staffing, more training and expanded background checks of applicants.
"No one depends more on the integrity of a correctional officer for their personal safety than a fellow officer," said Glenard S. Middleton Sr., head of Council 67 of the American Federation of State, County and Municipal Employees.
Union members "look forward" to working with correctional and elected officials "to review every facet of our work to improve and protect public safety for all," he said in said in a statement after the legislative hearing on Maryland corrections issues.
Baltimore Sun reporter Ian Duncan contributed to this article.


text:
OK guys, we are officially out of ideas for sports. Nobody is allowed to come up with any more sports. There are too many sports.
The video above, featuring Urijah Faber, the leader of MMA's Team Alpha Male (yes, really) appears to be a viral advertisement for... something or other. We're sure we'll find out what the product is sooner or later—probably cameras that you can strap to your head, or an energy drink, or something else that's very alpha. At any rate, it introduces the concept of Full Contact Skydiving, which mixes skydiving and mixed martial arts and is thus the sum of at least five or six terrible ideas. We're all for people putting wacky spins on MMA, but this shit right here—which, viral advertisement or no, at least seems to feature actual guys actually grappling while actually falling out of a damn plane—is just too much.
[Uproxx | Fox Sports | Complex | MMA Junkie | Bleacher Report | Nerdist | MMA Weekly | Fansided]


text:
2010, that is…
Yeah, 2010…actually not a typo. For years we've posted a year-end wrap-up of what we'd been up to the previous twelve months (you can pour over a few of those here). They've tended to be drawn-out semi-comedic affairs that were long on "we bought a computer" sort of news and short of any announcement of real recording (not counting a band-ful of false starts, laughably optimistically documented here or here, both from four years ago now, for ex.).
So it's sort of funny that the first year we didn't tie up in similar style was the end of 2010. Funny because that July – July 16th, 2010 to be exact – we actually did finally, for real, no poop, start recording a next record (readable in more detail here and here) and even more shockingly, have actually kept working pretty steadily since then. Yep, that's 2 1/2 years of straight work almost to the day as I type this, sitting in a parked car with a napping also-2-1/2-year-old outside the Prospect Park Zoo. That's a lot of time. Better be good, boyos.
Now, we didn't do the year-summ at the time because in one sense, this is/has become/has always been a very part-time venture esp. now that we're all officially married-with-heirs and most of us have careers and stuff.
At the same time, once under way, recording work does get done pretty much every day for whatever hours can be shoehorned in. And like any good life-ruining all-consuming hobby, it devours most available free time, thought, milk money etc. Friendships languish, exercise routines are abandoned, grand-children reach maturity and leave the house while we tinker away making H-O gauge albums in the basement dressed in period costume (note: it wasn't period costume when we went down there). Personal & band correspondence & news tends to get continually shuffled back to the bottom of the to-do list. And band year-end reports get delayed for years on end.
But specifically, from that weekend in July, 2010 on through the rest of that year, we tended to either be assembling & tracking Kevin's songs (i.e. tracking drums) at his house when Jerry came up or tweaking & overdubbing the bejesus outta those same Kev songs when Jerry wasn't attending. And Charles began assembling demos of his own musical crap parade at his Brooklyn home-cum-electronic-wonder-lair. Two-and-a-half years on, we're now calling those demos 'album tracks'.
Next thing you know, it's the end of the year and the next next thing you know, it's two years after that. At the current rate, we're maybe a few months out from ear trumpets and easing ourselves into the Muppet balcony.
Anyway, not like it matters whether we generate recording updates on a rigorous every-12-months schedule or not, but for the interested, like most bands and your cool uncle w/ a blog nowadays, we do tend to hit up the modern social media with smaller news & updates, and a lot more often. Feel free to join in the slough of despond and hilarity at our places of Facebook and Twitterly business.
We'll post a quick 2011 wrap-up (which summarizes neatly as "12 more months of the same") later this week and then where we're at w/ 2012 under our belt after that…
Then again, I seem to have just made a deadline / prediction / plan using standard units of your human time, so take even that with a some salt.
Until then, thanks as always,
the wrens


text:
Shrubs are the foundation plants of the landscape--they're what connects the lawn at ground level to the trees above our heads. They fill the space in between and serve as anchors for foundation plantings around the house. Often they are overlooked or chosen simply because they will top out at a particular size, or because they can be trimmed into a hedge. They're not always chosen for their spectacular blooms or the pizzazz they can add to the garden, which is a shame. If you choose shrubs wisely you can enjoy as colorful flowers all summer long from shrubs as you can from flowering annuals.
And--bonus--you don't have to re-plant shrubs every year!
To get the most bang for your buck, plant reblooming shrubs. Here are some of our favorites.
Reblooming Shrubs from ShrubSource
Lo & Behold® Blue Chip Buddleia
This is one of our favorite little shrubs. You can plant it as a border plant in landscape beds or as a specimen plant in the perennial garden. Lo & Behold® Blue Chip Buddleia is small enough to serve as a thriller plant in a large container, or as a stand-alone specimen in a smaller container. It blooms continuously throughout the summer, attracts butterflies and hummingbirds, and is deer-resistant.
You can enjoy azalea blooms throughout the entire season with Bloom-A-Thon® Lavender Azaleas planted in your shrub border or landscape bed. These shrubs have evergreen foliage and bloom on old growth. You can lightly prune after flowering, but they are rather compact in their growth habits so they need little pruning.
These are the perfect plants for your shade gardens. They need some sunlight, but prefer not to bake in hot afternoon sun.
Let's Dance® Rhapsody Blue Hydrangea
Let's Dance® Rhapsody Blue Hydrangea blooms with huge pom poms of flowers on a compact plant. The flowers are naturally pink but can be turned blue by lowering the pH of the soil. This Bigleaf Hydrangea blooms on new and old growth, so it's virtually impossible to cut off the flowers.
It also ensures that you'll enjoy big and beautiful flowers throughout the summer and into fall.
Sonic Bloom™ Pearl Weigela is a gorgeous flowering specimen plant that blooms from early spring through frost. Weigela plants are another shrub that is underutilized in the landscape, and it's a shame because few other flowering shrubs provide such a showy bloom for so long.
This fast-growing, trouble-free shrub can be pruned back after the first spring bloom to control size and encourage re-blooming.
Bloomerang® Dark Purple Syringa
Bloomerang® Dark Purple Syringa is a re-blooming lilac. Yes-you read that correctly! You can now enjoy the fragrance and beauty of lilacs all summer long. This lilac has a compact growth habit, topping out at 4-5 feet in height, so every garden has room for one (or three)!


text:
Your Personal Luxury Concierge
MileagePlus Cruise Awards is pleased to offer the exclusive and complimentary services of a personal concierge with the reservation of your Avalon Waterways luxury cruise.
To reach a personal concierge and complete your luxury cruise reservation, please call 1-800-811-37751-800-811-3775 between the hours of 9AM to 9PM Monday through Friday, 9AM to 6PM Saturday through Sunday eastern standard time or simply fill out the form below to request a consultation.
Reference ID:
Avalon Envision
- Roth (Nuremberg), Germany
- Regensburg, Germany
- Passau, Germany
- Melk, Austria
- Vienna, Austria
- Budapest, Hungary
Request a Consultation
From booking to boarding and beyond, a personal concierge's expert knowledge can help guide you in planning the luxury cruise of your dreams.
Please fill out the form and a concierge will contact you.
1-800-811-37751-800-811-3775 9AM to 9PM Monday through Friday, 9AM to 6PM Saturday through Sunday eastern standard time


text:
Control crash diagnostic strategy and RAM display
The present invention is a pair of counters associated with the control elements in a complex control system, in particular, counters associated with the intelligent processors in a multiprocessor control. Preferably, the counters are maintained in nonvolatile memory and one of the counters for each remote records software crashes experienced in both standby and run mode. The other counter records total software crashes during normal machine operation. These counters provide information on the location and type of software crashes.In another aspect of the invention, a procedure is provided for the Tech Rep to force the machine into a software crash. The Tech Rep can then interrogate the content of RAM locations before the RAM locations are initialized by the machine reset. The contents of various RAM locations can be selectively displayed for diagnosis.
Latest Xerox Corporation Patents:
- Location tracking system for networked print devices in an environment
- Method and apparatus for determining an ultraviolet (UV) cure level
- Bearing based leveling assembly for three-dimensional object printing
- System and method for adjusting operation of a transfer assist blade drive train with reference to printing operational parameters
The invention relates to a multiprocessor electronic control, and in particular, to software crash diagnostic strategy in a multiprocessor control and also the display of the contents of RAM locations for diagnostic purposes.
For further information relating to this application, reference is made to the following companion U.S. patent applications filed concurrently herewith to the common assignee U.S. Ser. No. 420,965, Remote Process Crash Recovery; U.S. Ser. No. 420,988, Process Scheduler in an Electronic Control; U.S. Ser. No. 420,991, Distributed Processing Environment Fault Isolation; U.S. Ser. No. 420,992, Common Control in Multiple Processors By Chaining Tasks; U.S. Ser. No. 420,993, Virtual Machine Control; U.S. Ser. No. 420,994, Task Control Manager; U.S. Ser. No. 420,995, Control System Job Recovery After a Malfunction; U.S. Ser. No. 420,999, Separate Resetting of Processors in a Multiprocessor Control; U.S. Ser. No. 421,006, Filtered Inputs; U.S. Ser. No. 421,007, Multiprocessor Control Synchronization and Instruction Downloading; U.S. Ser. No. 421,008, Multiprocessor Memory Map; U.S. Ser. No. 421,009, Changing Portions of Control in a ROM Based System; U.S. Ser. No. 421,010, Race Control Suspension; U.S. Ser. No. 421,011, Control Fault Detection for Machine Recovery and Diagnostics Prior to Malfunction; and U.S. Ser. No. 421,016, Single Point Microprocessor Reset.
In a complex electronic control system, there is a large number of software problems that can cause the control system to temporarily malfunction. The name typically given to this class of problems is a software "crash". Usually it is not obvious why the system initially crashed because the problem does not seem to reoccur after initialization. Also, it is very difficult to tell what portion of the control system malfunctioned since the whole system is generally initialized or reset. Since the problem oftens occurs at long and random intervals, the service representative is usually not at the machine at the time of the problem.
It would be desirable, therefore, to provide an electronic control system that remembers software crash information and to be able to save this information for diagnostic purposes.
A control system software crash means that the system is not functioning correctly and that the system must be reset and RAMs reinitialized before operation can be resumed. However, various RAM locations often contain information valuable for diagnostics. During reset, this information is lost.
It would be desirable, therefore, if the system had the means to prevent the destruction of the contents of RAM locations. It would also be desirable to be able to read out or display the contents of these RAM locations before reset and reinitialization after a software crash.
It is an object of the present invention, therefore, to provide a new and improved control system, in particular, a control system that can save transient information, in particular, information on software crashes. It is a further object of the present invention to provide a control that can provide a history of crash information relates to portions of the control in which the crash occurred. It is still another object of the present invention, therefore, to provide a new and improved control system to prevent the destruction of the contents of RAM locations and to be able to display the contents of RAM locations having valuable diagnostic information before the reset of the system after a software crash.
Further advantages of the present invention will become apparent as the following description proceeds, and the features characterizing the invention will be pointed out with particularity in the claims annexed to and forming a part of this specification.
Briefly, the present invention is a pair of counters associated with the control elements in a complex control system, in particular, counters associated with the intelligent processors in a multiprocessor control. Preferably, the counters are maintained in nonvolatile memory and one of the counters for each remote records software crashes experienced in both standby and run mode. The other counter records total software crashes during normal machine operation. These counters provide information on the location and type of software crashes.
In another aspect of the invention, a procedure is provided for the Tech Rep to force the machine into a software crash display routine if there is a crash. The Tech Rep can then interrogate the content of RAM locations before the RAM locations are initialized by the machine reset. The contents of various RAM locations can be selectively displayed for diagnosis.
For a better understanding of the present invention, reference may be had to the accompanying drawings wherein the same reference numerals have been applied to like parts and wherein:
FIG. 1 is an elevational view of a reproduction machine typical of the type of machine or process that can be controlled in accordance with the present invention;
FIG. 2 is a block diagram of the control boards for controlling the machine of FIG. 1;
FIG. 3 illustrates some of the basic timing signals used in control of the machine illustrated in FIG. 1;
FIG. 4 is an illustration of the levels of machine recovery and diagnostics upon detection of a software crash;
FIG. 5 is an isometric view of the machine configuration of FIG. 1 showing the control panel and the display control remote panel;
FIG. 6 shows the power up and run time crash counters on each of the control boards in FIG. 2;
FIG. 7 is an illustration of the relationship of addresses and Task Control Buffer data in displaying RAM contents;
FIG. 8 is a schematic for resetting the control boards in a multiprocessor system;
FIG. 9 is a schematic for selective resetting of a particular control board in a multiprocessor system; and
FIGS. 10a-10e show in more detail the resetting as illustrated in FIG. 9.
With reference to FIG. 1, there is shown an electrophotographic printing or reproduction machine employing a belt 10 having a photoconductive surface. Belt 10 moves in the direction of arrow 12 to advance successive portions of the photoconductive surface through various processing stations, starting with a charging station including a corona generating device 14. The corona generating device charges the photoconductive surface to a relatively high substantially uniform potential.
The charged portion of the photoconductive surface is then advanced through an imaging station. At the imaging station, a document handling unit 15 positions an original document 16 facedown over exposure system 17. The exposure system 17 includes lamp 20 illuminating the document 16 positioned on transparent platen 18. The light rays reflected from document 16 are transmitted through lens 22. Lens 22 focuses the light image of original document 16 onto the charged portion of the photoconductive surface of belt 10 to selectively dissipate the charge. This records an electrostatic latent image on the photoconductive surface corresponding to the informational areas contained within the original document.
Platen 18 is mounted movably and arranged to move in the direction of arrows 24 to adjust the magnification of the original document being reproduced. Lens 22 moves in synchronism therewith so as to focus the light image of original document 16 onto the charged portion of the photoconductive surface of belt 10.
Document handling unit 15 sequentially feeds documents from a holding tray, in seriatim, to platen 18. The document handling unit recirculates documents back to the stack supported on the tray. Thereafter, belt 10 advances the electrostatic latent image recorded on the photoconductive surface to a development station.
At the development station a pair of magentic brush developer rollers 26 and 28 advance a developer material into contact with the electrostatic latent image. The latent image attracts toner particles from the carrier granules of the developer material to form a toner powder image on the photoconductive surface of belt 10.
After the electrostatic latent image recorded on the photoconductive surface of belt 10 is developed, belt 10 advances the toner powder image to the transfer station. At the transfer station a copy sheet is moved into contact with the toner powder image. The transfer station includes a corona generating device 30 which sprays ions onto the backside of the copy sheet. This attracts the toner powder image from the photoconductive surface of belt 10 to the sheet.
The copy sheets are fed from a selected one of trays 34 or 36 to the transfer station. After transfer, conveyor 32 advances the sheet to a fusing station. The fusing station includes a fuser assembly for permanently affixing the transferred powder image to the copy sheet. Preferably, fuser assembly 40 includes a heated fuser roller 42 and backup roller 44 with the sheet passing between fuser roller 42 and backup roller 44 with the powder image contacting fuser roller 42.
After fusing, conveyor 46 transports the sheets to gate 48 which functions as an inverter selector. Depending upon the position of gate 48, the copy sheets will either be deflected into a sheet inverter 50 or bypass sheet inverter 50 and be fed directly onto a second gate 52. Decision gate 52 deflects the sheet directly into an output tray 54 or deflects the sheet into a transport path which carries them on without inversion to a third gate 56. Gate 56 either passes the sheets directly on without inversion into the output path of the copier, or deflects the sheets into a duplex inverter roll transport 58. Inverting transport 58 inverts and stacks the sheets to be duplexed in a duplex tray 60. Duplex tray 60 provides intermediate or buffer storage for those sheets which have been printed on one side for printing on the opposite side.
In order to complete duplex copying, the previously simplexed sheets in tray 60 are fed seriatim by bottom feeder 62 back to the transfer station for transfer of the toner powder image to the opposed side of the sheet. Conveyers 64 and 66 advance the sheet along a path which produces a sheet inversion. The duplex sheets are then fed through the same path as the previously simplexed sheets to be stacked in tray 54 for subsequent removal by the printing machine operator.
Invariably after the copy sheet is separated from the photoconductive surface of belt 10, some residual particles remain adhering to belt 10. These residual particles are removed from the photoconductive surface thereof at a cleaning station. The cleaning station includes a rotatably mounted brush 68 in contact with the photoconductive surface of belt 10.
A controller 38 and control panel 86 are also illustrated in FIG. 1. The controller 38 as represented by dotted lines is electrically connected to various components of the printing machine.
With reference to FIG. 2, there is shown in further detail the controller 38 illustrated in FIG. 1. In particular, there is shown a Central Processing Master (CPM) control board 70 for communicating information to and from all the other control boards, in particular the Paper Handling Remote (PHR) control board 72 controlling the operation of the paper handling subsystems such as paper feed, registration and output transports.
Other control boards are the Xerographic Remote (XER) control board 74 for monitoring and controlling the xerographic process, in particular the analog signals, the Marking and Imaging Remote (MIR) control board 76 for controlling the operation of the optics and xerographic subsystems, in particular the digital signals. A Display Control Remote (DCR) control board 78 is also connected to the CPM control board 70 providing operation and diagnostic information on both an alphanumeric and liquid crystal display. Interconnecting the control boards is a shared communication line 80, preferably a shielded coaxial cable or twisted pair with suitable communication protocol similar to that used in a Xerox Ethernet.RTM. type communication system. For a more detailed explanation of an Ethernet.RTM. type Communication System, reference is made to pending applications D/78108, U.S. Ser. No. 205,809; D/78108Q2, U.S. Ser. No. 205,822 and D/78108Q3, U.S. Ser. No. 205,821, all filed Nov. 10, 1980 and incorporated herein as references.
Other control boards can be interconnected to the shared communication line 80 as required. For example, a Recirculating Document Handling Remote (RDHR) control board 82 (Shown in phantom) can be provided to control the operation of a recirculating document handler. There can also be provided a not shown Semi-Automatic Document Handler Remote (SADHR) control board to control the operation of a semi-automatic document handler, one or more not shown Sorter Output Remote (SOR) control boards to control the operation of one or more sorters, and a not shown Finisher Output Remote (FOR) control board to control the operation of a stacker and stitcher.
Each of the controller boards preferably includes an Intel 8085 microprocessor with suitable Random Access Memory (RAM) and Read Only Memory (ROM). Also interconnected to the CPM control board is a Master Memory Board (MMB) 84 with suitable ROMs to control normal machine operation and a control panel board 86 for entering job selections and diagnostic programs. Also contained in the CPM board 70 is suitable nonvolatile memory. All of the control boards other than the CPM control board are generally referred to as remote control boards.
In a preferred embodiment, the control panel board 86 is directly connected to the CPM control board 70 over a 70 line wire and the memory board 84 is connected to the CPM control board 70 over a 36 line wire. Preferably, the Master Memory Board 84 contains 56K byte memory and the CPM control board 70 includes 2K ROM, 6K RAM, and a 512 byte nonvolatile memory. The PHR control board 72 includes 1K RAM and 4K ROM and handles 29 inputs and 28 outputs. The XER control board 74 handles up to 24 analog inputs and provides 12 analog output signals and 8 digital output signals and includes 4K ROM and 1K RAM. The MIR board 76 handles 13 inputs and 17 outputs and has 4K ROM and 1K RAM.
As illustrated, the PHR, XER and MIR boards receive various switch and sensor information from the printing machine and provide various drive and activation signals, such as to clutches, motors and lamps in the operation of the printing machine. It should be understood that the control of various types of machines and processes are contemplated within the scope of this invention.
A master timing signal, called the timing reset or Pitch Reset (PR) signal, as shown in FIG. 2, is generated by PHR board 72 and used by the CPM, PHR, MIR and XER control boards 70, 72, 74 and 76. With reference to FIG. 3, the Pitch Reset (PR) signal is generated in response to a sensed registration finger. Two registration fingers 90a, 90b on conveyor or registration transport 66 activate a not shown suitable sensor to produce the registration finger or pitch reset signal. The registration finger or pitch reset signal is conveyed to suitable control logic on the Paper Handler Remote control board 72. In addition, a Machine Clock signal (MCLK) is conveyed to the Paper Handling Remote 72 via the CPM remote board 70 to the same control logic.
In response to the MCLK signal, the timing reset pitch reset signal is conveyed to the CPM board 70 and the XER and the MIR remotes 74, 76. The machine clock signal is generated by a timing disk 92 or machine clock sensor connected to the main drive of the machine. The clock sensor signal allows the remote control boards to receive actual machine speed timing information.
The timing disk 92 rotation generates 1,000 machine clock pulses every second. A registration finger sensed signal occurs once for every registration finger sensed signal as shown in FIG. 3. A belt hole pulse is also provided to synchronize the seam on the photoreceptor belt 10 with the transfer station to assure that images are not projected onto the seam of the photoreceptor belt.
In any complex control system, there is always a large number of machine problems, either software or hardware, that can cause the control system to temporarily malfunction. The name typically given to this class of problems, which requires the system to be reset, is the term "crash". Usually, it is not obvious why the control system malfunctioned or crashed because the problem does not seem to reoccur after the system has been reset or initialized.
However, in accordance with one feature of the present invention, by careful investigation of the types of failures that occur in a tested system causing malfunctions, in particular crashes, it is possible to develop a list of key operations to be monitored. The monitoring of these key operations can indicate either an immediate problem or a condition that would lead to a severe control problem. It is possible to check a sufficient number of these key operations and yet maintain system performance and adequate machine or process control. Appendix A is a sample list of key performance parameters which can be monitored.
As an extreme case of the type of software malfunction to be avoided, assume that the command to "turn off fuser" is garbled, lost or never executed. There is then a real danger of stressing the operation of the fuser with possible severe machine malfunction. Various benchmarks to monitor to be able to avoid this type of control failure are available.
For example, these benchmarks include monitoring that the number of tasks or procedures to be completed by the control system is not beyond the capacity of the control system to respond. Another benchmark would be to determine that the communication system has more than the expected number of requests to be made and would be forced to drop or ignore further requests. In general, any complex control system has numerous limits. When these limits are exceeded either because of a malfunction, software error, or because of the nondeterministic nature of real time control, the control system is in danger of erroneous operation. In prior systems, one of the following actions happen:
(1) Tables were prematurely overwritten causing information to be lost, thus causing erroneous operation of the control system.
(2) Requests were delayed until the table information had caught up. An example of this is a magnetic tape drive controller. Since this is typically a noncritical application, all write requests can be suspended almost indefinitely. In a real time control system, most events must be performed within a specific time window or misoperation will result. Indefinite suspension of operations obviously jeopardizes the timely completion of some operations.
In accordance with another feature of the present invention, once a fault has been detected, the recognition of the fault can provide valuable control information. With reference to the diagram illustrated in FIG. 4, here is illustrated the response to a fault detection. Fault information is recorded and available for Tech Rep diagnostics or to maintain machine operation. After the crash or fault detection (block 100), there is merely the isolation of the fault to a particular control board (block 102). This information is recorded in nonvolatile memory for later use by the Tech Rep.
There is also the automatic recording of the history of faults in suitable counters related to the various control boards as illustrated in block 104. This history of faults in each particular control board is much more valuable then merely identifying the board causing a crash after a particular crash since it is vital for the Tech Rep to know the pattern of where crashes are occurring.
The next step is to monitor a crash display enable flag in nonvolatile memory (block 105). If the flag is not set, the control will proceed with a control board reset procedure (block 106). If the flag is set, the machine enters a crash display routine (block 107). The crash display enable flag or location in nonvolatile memory is set by the Tech Rep to place the machine in the display mode. Once in the display mode, the Tech Rep can examine RAM, nonvolatile memory, and other registers to provide valuable diagnostic information.
It is undesirable for the operator to be required to power up the machine after a software crash. Therefore, after the fault detection, an automatic hardware reset procedure will reset all the control boards of the machine and the machine will be allowed to resume operation. This is shown in block 106. All control boards will be reset regardless of which particular board or boards caused the crash.
In a second level of machine operation response, block 108, only the particular control board causing the crash or fault will be reset. This eliminates the need to re-initialize those control boards not causing the crash. It enables the saving of status and operating information in the board RAMs that would have been lost during reset. These first two levels are basically hardware reset procedures to recover from a crash unnoticed by the operator.
In a third level of machine response, block 110, the fault is in one of the control boards and that particular control board fails reset. That is, there is a hardware failure related to the particular control board causing the crash. However, if it is a noncritical hardware component, that is, if the failed component is not crucial to machine operation or control, machine operation can continue either unaffected or only slightly degraded.
For example, if the failed control board controls a display that is not essential to the operation of the machine, the control board and display can be ignored by the rest of the control system until the control board has recovered. Machine operation can continue without the use of the device controlled by the failed board. Generally, this situation would be noticed by the operator since the display would be blank for a few seconds until it had recovered.
The final level of machine operation response, block 112, is the indication of a crash or failure of a control board that cannot be reset and it is critical to the machine operation. This can be termed a critical hardware failure. At this point the machine must be stopped and corrective action taken such as a jam clearance. At this particular level, in response to the software crash or malfunction, the machine can be cleared and totally recovered. That is, the parameters of the interrupted job remain intact. These parameters are saved and restored for the machine to continue on with the job in progress at the point of the malfunction. It should be noted that each of the levels of response is a further feature of the present invention and will be described in more detail.
According to one feature of the present invention, various errors and faults are recorded by the CPM board 70 (FIG. 4, block 100). These faults are conveyed by the CPM board to the control panel 86 for display. With reference to FIG. 5, a preferred embodiment of control panel 86 is illustrated. There is also shown a display panel 120. The control panel 86 is electrically coupled to the CPM board. The display panel 120 is electrically coupled to the DCR remote control board 78.
The control panel 86 allows an operator to select copy size (button 122), copy contrast (button 124), number of copies to be made (keys 126), and the simplex or duplex mode (button 128). Also included on panel 86 are a start button 130, a stop button 132, an eight character 7 segment display 134, a three character 7 segment display 136, and a job interrupt button 138. The displays 134, 136 provide the operator and Tech Rep with various operating and diagnostic information.
The display panel 120 informs the operator of the status of the machine and can be used to prompt the operator to take corrective action in the event of a fault in machine operation. The display panel 120 includes a flip chart 140, a Liquid Crystal Display (LCD) 142, an alphanumeric display 144 and a "Power ON" button 146.
In the event of a software crash, a coarse code is provided, giving the reason for the crash. This coarse code will be automatically displayed on the control panel 86 on display 134 if the machine has been so programmed by the Tech Rep in NUM; i.e. the crash display flag is enabled. The coarse codes generally identify the particular control board that failed.
A fine code is used to indicate in more detail the cause of the failure of a particular control board. The fine code is obtained by pressing the stop key 132 and looking at the right most two digits on the display 134 on the control panel 86. Preferably, the fine code (error code) will be displayed in hexadecimal on the control panel 86. As an alternative, a decimal value of the fault code is found in nonvolatile memory using a diagnostics procedures.
Typical of coarse codes would be X'1F' or decimal 31 indicating a CPM board 70 fault. That is, an error occurred on the CPM board 70. The fine code is then used for the specific error. Another example of a coarse code would be X'5F' or decimal 95 indicating no acknowledgement from the XER board 74. That is, the CPM board 70 sent a message to the XER board 74 and after three retransmissions of the message, the XER board failed to acknowledge receiving any of them.
Other coarse codes would be to indicate that the CPM board 70 sent a message to the MIR board 76 or to the DCR board 78, and after three retransmissions of the message, the DCR or the MIR board failed to acknowledge receiving any message. Still other coarse codes are to indicate that the CPM board tried to communicate with an unidentified processor, or that the MMB board 84, for example, failed a background checksum. It should be noted that many other codes are available. Those listed are merely exemplary.
The coarse code and a fine code together describe the failure. Thus, if the coarse code is X'5F' and the fine code is X'0A', the XER board 74 failed and the specific failure was a timer failure. Various other Fine Crash Codes are listed in Appendix A.
The first level of the Tech Rep response to a fault indication, block 102 as shown in FIG. 4, is to isolate the particular control board having the fault. This information is recorded in nonvolatile memory.
In accordance with another feature of the present invention, one of the control boards, in particular, the CPM control board 70, is designated as the master. All the other processors or control boards report their faults to the master. In other words, failures to communicate over the shared line by a particular remote control board or failure, such as a timer failure on a particular remote board, generates an error signal conveyed to the CPM board.
When the CPM control board 70 receives a fault message, it will record the type of fault and the source of the message in suitable memory locations, preferably in nonvolatile memory. This data is preserved for Tech Rep diagnostics. It will also time stamp the fault so that the first fault message is identified. That is, the CPM board will check Machine Clock pulses and record the count along with the error message.
Next, the master or CPM board 70 will transmit a message to itself. That is, the CPM board 70 will transmit a message to itself that simulates a message being received by the CPM board over the shared communication line. This will verify whether the master's communication channel is valid, in particular to verify the CPM board's receiver circuitry. This is done to identify the case that the remote control board sent a valid response, but the CPM board did not receive it. In this case, the master or CPM board 70 will be identified as being faulty.
This provides the means to collect fault information as a remote control board begins to fail. It is particularly valuable in identifying the first of a possibly linked series of subsystem failures that can be traced to the first board to send a fault message.
In accordance with another feature of the present invention, each controller board has designated counters or storage locations in nonvolatile memory. These counters enable the control system to record the fault history of each control board. This is the second level of diagnostics shown as block 104 in FIG. 4. Each of the control boards has one counter designated in nonvolatile memory to record instances of malfunctions or crashes. Another counter records instances of machine crashes during machine run or operation.
Distinguishing between power up and run provides fault history to draw various conclusions about the operation and type of malfunction. With reference to FIG. 6, there is illustrated associated with each of the control boards, specifically the CPM, RDH, MIR, XER, DCR, and PHR, boards, a pair of counters. The counters are illustrated as being on the various control boards. However, in a preferred embodiment, all counters are located in nonvolatile memory on the CPM board 70. Since crashes can be reset and the machine can then run again, there will probably be several crashes before the Tech Rep actually services the machine. Counter 1 is associated with each of the control boards to record crashes for that particular control board during both standby and machine run. Counter 2, although illustrated for each control board, in the preferred embodiment is actually only one counter to record all instances of crashes during machine run only. It is a cumulative count of crashes for all boards.
The Tech Rep preferably only clears those nonvolatile memory locations associated with control boards having problems corrected by the Tech Rep. In this manner, the system can be used to record problems only occurring on an infrequent basis then the control can record and have available problems that it had even if only on a very infrequent basis. It is possible to distinguish intermittent control board problems from intermittent problems that are not associated with the control boards, such as noise. Nonboard problems such as noise and software design errors are usually caused during machine running.
For example, a failure during both power up and machine run is a good indication of board failure. The board failure could be either the board itself or, under rare circumstances, the software associated with the board. However, suppose there is no failure noted during power up and the control board self test, but a problem, even though intermittent, is observed during run. This is a strong indication of noise or some intermittent running problem. That is, nonboard problems are usually caused by noise from some machine component when it is running.
If there is no indication of failure for a particular board during standby, there is a very low probability that that particular board itself is bad. A failure only during run would likely indicate noise. It should be noted that fault recording (block 104, FIG. 4) need not necessarily occur before the reset of the control boards. It could occur, for example, after reset and restoration of parameters, i.e. after block 112.
A control system software crash means that the system is not functioning correctly. The usual response is to reset or re-initialize the system. In other words, various registers are cleared, in particular various Random Access Memory locations are re-initialized. In most cases the problem causing the software crash will disappear during the re-initialization and will not effect the system. If the system only has an automatic reset mechanism, memory will be initialized and valuable diagnostic information residing in RAM is lost after reset. In short, RAM locations often contain information on the nature and type of a particular software crash.
In accordance with another aspect of the present invention, there is an automatic reset disable feature. This feature allows a Tech Rep to place the machine into the crash display mode if a crash occurred. Preferably, the automatic reset is disabled through a suitable switch. For the Tech Rep, forcing the system software to crash can be a valuable diagnostic tool. For example, if the Tech Rep suspects a software problem, he can force the machine to software crash and then interrogate various RAM locations for crash related information.
Typical of the sequence of events that might occur, the CPM board 70 may have an incorrect value in memory. It may be that the system can reset and ignore the problem temporarily. However, the problem may occur relatively frequently. Suspecting a problem, the Tech Rep will begin to isolate the cause. The Tech Rep will first verify the operation of the microprocessors and the RAM controls. The Tech Rep can then force the machine into a software crash and display the contents of RAM. The display of the RAM contents will occur after the reset of all the boards except the CPM board 70.
In a preferred embodiment, the Tech Rep, using a special routine, sets a predetermined nonvolatile memory location to a certain value. This causes a display of software crash if a crash occurs. If a crash occurs, the display 134 on control panel 86 will show the word "error" on the lefthand side of the display 134. Various two digit code numbers on the right of the display represent the processor board where the failure occurred.
With the word "error" displayed, the Tech Rep has the capability to read the content of RAM locations. Certain control panel buttons then provide the Tech Rep with certain capabilities. For example, with the stop print 132 button initially pushed, the control panel display 134 will show the location of the address of the crash code on the left with the contents of that location on the right. The location is correctly defined as "E1E0". Further actuation of this button will increment the lower byte addresses, displaying the new location and its contents.
Further actuation of the job interrupt button 138 will increment the higher byte addresses, displaying the new location and its contents. For example, if the address or the display is currently "E000", actuating this button will cause the address to increment to "E100". Whenever the "clear" key C is pushed, the crash display will be terminated, coarse and fine code memory locations in nonvolatile memory are cleared and a self test initiated.
As an example of RAM diagnostics, the error 1F/81 indicates an invalid activation address on the CPM board. This error results from a task trying to execute in an area of memory not intended for execution (for example, input/output ports, vector address area, RAM and nonvolatile memory). The error occurs as a task is about to jump to its next instruction. This means that the task must have already put the bad address in its Task Control Buffer before the execution was attempted.
Much of the time, noise is the culprit for an 1F/81 error caused by loosely connected input connectors. However, this error also be caused by software. The following procedure is used to identify the source.
First, the Tech Rep fills out the Task Control Buffer (TCB) information for the currently running task. The Task Control Buffer (TCB) is a RAM table that merely contains information relative to a particular task that is being executed. Such information includes data and priority information for relationships to other tasks. The currently running task is found in $CURRENT.sub.-- ID which is at address F361.
From this information, the Tech Rep can make certain judgements. In particular, he can predict if the problem is noise and check the connectors, or if the values that he reads are within a certain range, it might indicate a software problem. As an example of how the Tech Rep relates various address locations with various information reference is made to FIG. 7.
Each task receives its parameters in a stack called the correspondence or byte stack. A pointer to the first element in the stack is found in the Task Control Buffer (TCB) table or pointer starting at EEA0. To get the pointer of task X, look at memory location EEA0+X. This pointer is the least significant value of the address of the first element in the stack. The most significant byte of the address is hexadecimal address `EE`. Thus, to get the element that X points to, look at location EE00+the contents of EE00+X. This will contain the pointer to the next element of the list, or zero if this is the last element. The contents of memory location EF00+X contains the data for that element of the stack. For example, the correspondence stack (2, 11, 1D, 96, 1, A, A) (top to bottom) might look as shown in FIG. 7 if it were the stack for task 12.
Each task also has a word stack, which is used for saving information while the task is running. It uses the same format as the correspondence stack, except that there are two data fields (one for the least significant byte of the word, and one for the most significant byte). Typically, there will be only one or two entries on the stack. The address for the TCB word stack pointer starts at EFA0, and the stack is located at F9XX, FAXX and FBXX. The crash counter and crash display routines are illustrated in Appendix D.
Again, will reference to FIG. 4, there are shown the various levels of machine recovery upon detecting a software crash. A concern with a multiprocessor control system is to synchronize all the processors of the system. This is particularly important whenever a system abnormality or software crash occurs.
In accordance with another feature of the present invention, one of the processors or control boards is given the role of a master control from the standpoint of simultaneously resetting the other controller boards, FIG. 4, block 106. When a system abnormality or software crash occurs, the master control issues a global reset signal. This signal goes automatically to each of the other processors or control boards in the system.
The global reset signal will resynchronize the other processors or control boards in the system back to a normal state of operation. Since many of the abnormalities and system software crashes are transient, the multiprocessor system is reset and the system continues to function without requiring any manual power up or other resetting. In a preferred embodiment, the CPM control board 70 is given the role of master control for resetting the other control boards.
With reference to FIG. 8, there is shown reset circuitry on the CPM control board 70. The reset circuitry provides suitable reset signals to the PHR, XER, MIR, DCR and RDHR, control boards 72, 74, 76, 78 and 82. The reset circuitry holds the other control boards reset during the normal power up and power down operations. This allows the CPM control board 70 to insure its proper operation before it allows the other control boards in the system to start their normal operation. Thus, if the CPM board detects its own operational problem, it can hold the remaining control boards in a safe condition.
The reset control includes an 8085 reset signal from the Intel 8085 microprocessor on the CPM control board 70. The 8085 signal, set to 0, is fed to a buffer B to gate the transistor driver T. The transistor T provides a suitable reset signal simultaneously to each of the control boards through suitable resistor networks.
In particular, the transistor T is shown providing the RST$PHR, RST$RDHR, RST$DCR, RST$MIR, and RST$XER signals. Preferably, a reset signal spare (SPR) is provided for any additional control boards that may be added to the system.
In a second level of hardware reset circuitry, FIG. 4, block 108, the master controller (CPM board 70) in the multiprocessor system provides for the selective resetting of the other individual control boards in the system. Thus, any type of abnormal operation in any one of the processors or control boards, will not force all the other control boards to be reset. Resetting all the control boards may cause the control boards to unnecessarily lose status and operating information.
It is possible, therefore, if a system problem occurs, to reset one remote control board without losing valuable status information in other control boards. The master controller need only look to the crashed remote control board to determine proper function of the system.
With reference to FIG. 9, there is shown the CPM control board 70 with reset lines to the PHR board 72, the XER board 74, the MIR board 76, the DCR board 78 and the RDHR board 82. There is also illustrated individual reset circuitry for each of the reset lines. In particular, reset circuitry 140 on CPM control board 70 controls the reset of the PHR control board 72, reset circuitry 142 controls the reset of the DCR control board 78, and reset circuitry 144 controls the reset of the RDHR control board 82. In addition, reset circuitry 146 controls the resetting of the MIR control board 76 and reset circuitry 148 controls the resetting of the XER control board 74.
These separate reset lines are independent of the shared line 80 interconnecting the various control boards. There is also illustrated a spare control board that could be suitably interconnected to additional reset circuitry. The reset circuitry 140, 142, 144, 146 and 148 is shown in more detail in FIGS. 10a through 10e.
In particular, FIG. 10a illustrates the reset circuitry 140 on CPM board 70. The reset circuitry includes the Intel 8085 reset signal to buffer B, in turn driving transistor drive T to provide a separate reset signal RST$PHR to the PHR control board 72. Reset circuitry 142 as shown in FIG. 10b includes the 8085 reset signal to a separate buffer B, in turn driving its own transistor driver T to provide a separate reset signal RST$CDR to the DCR control board 78. Similarly, separate reset circuitry shown in FIGS. 10c, 10d and 10e provides suitable separate reset signals to the RDHR, MIR and XER boards 82, 76 and 74.
A problem can occur where a remote control board processor prevents the board from responding back to the CPM control board that it is functioning normally. The CPM control board then resets this one remote control board individually. If the remote control board is not functioning properly, the CPM board can hold the one remote board in reset. In addition, it should be noted that there are various resetting and self test procedures initiated at machine start up. There is an automatic self test to check the control logic circuitry on the control boards. During the automatic self test, any fault that is detected is displayed by suitably mounted LEDs.
There are three major checks, namely the check of the CPM and MMB boards 70, 84, the remote board tests, and shared communication line 80 test. During the test of the CPM and the MMB boards 70, 84, the status of a not shown low voltage power supply is checked as well as the continuity of the connection between the control panel 86 and the CPM board 70.
Also, during this test, the CPM board 70 writes information into a small portion of the nonvolatile memory. Thus, when the copier power is on, the low voltage power supply is conveying power to the nonvolatile memory 88 and charging the battery. When the copier is switched off, the nonvolatile memory is relying on the battery to hold its contents.
During the tests, the information in ROM in the CPM board 70 that is written into the nonvolatile memory is compared. If the two memories do not match, a battery fault status code is declared. Also, the CPM board 70 writes a small portion of information into nonvolatile memory and then reads the same information. If the information is not matched, a nonvolatile memory fault code is declared.
After the CPM and MMB board tests have begun, the CPM board 70 conveys a reset signal to all the remote control boards 72, 74, 76, 78, and 82 to start the self test of each of the remotes. When the reset is received from the CPM board 70, each remote simultaneously starts its own self test checking for a remote control board processor fault, an input circuit fault or an output circuit fault.
A processor or control board fault is declared when a remote control board cannot communicate with the CPM board 70. That is, the control logic on the remote control board cannot perform its basic test of its hardware devices. There is also a DC input self test to verify operation of the DC input circuitry on all the remotes and a DC output self test to verify the DC output circuits on all the remote control boards.
Finally, there is shared communication line 80 test to test the shared communication line logic on the CPM board 70, the shared communication logic on the remote control boards and the shared communication logic cable. The CPM board 70 attempts to send and receive a signal to and from each of the remotes in sequence. When the CPM board 70 successfully sends and receives signals from the remote control boards, the CPM board 70, the remote control boards and the shared communication line 80 are verified.
In accordance with another feature of the present invention, the failure of a remote control board to reset does not necessarily inhibit machine operation (block 110 of FIG. 4). In particular, if the particular control board failing reset is not critical to the overall machine operation, the machine continues operation. The machine continues operation even though the particular board is not operational. The DCR control board 78 is an example of a control board that is not crucial to machine operation.
When a Display Control Remote (DCR) board 78 crash occurs two alternatives are available. In one embodiment, a flag or crash enable byte is set in nonvolatile memory. The application software will monitor the flag to determine if it is necessary to go to crash display routine for the Tech Rep or not. This is done by the CPM board 70 looking at the crash enable byte in nonvoltile memory.
If the crash enable byte is set, that is, no go to crash display routine for the Tech Rep, the CPM board 70 will reset all remotes, including DCR and goes to crash display routine with a message "Error 8F".
If in the recovery mode, there is still a DCR power up reset procedure. After completion of a DCR self test, the CPM board will attempt to communicate with the DCR board 78 by polling the DCR board. If the communication is successful, the CPM board 70 will send for DCR board status and allow normal communication to the DCR. If the communication is not completed, no further communication will be allowed to the DCR board and the machine will continue to run as though the DCR does not exist.
In a preferred embodiment, however, there is no crash enable byte to be monitored. There always is an automatic attempt to recover the DCR board after a software crash during machine run. In general, in the preferred embodiment, the DCR operating system will send status messages to the CPM board for the following two conditions:
(1) At power up (or whenever DCR gets reset) after the DCR has passed self test.
(2) At a software crash, whenever a fatal fault is detected on the DCR board.
The DCR recovery strategy follows the following sequence:
(1) There is an indication that the DCR board is dead. There is then a request from the CPM board 70 to the DCR board 78.
(2) The CPM board 70 reads or acknowledges that the DCR board is dead.
(3) The CPM board attempts to reset the DCR board.
(4) After a delay of five seconds, there is a test to see if the DCR board has recovered.
(5) If the DCR board has not recovered, the system will try again. Messages will not be lost from the system as they will be retained in the CPM RAM and be annexed to an initialized package when the DCR is eventually recovered.
For example, if there is a critical faulty component on the DCR board 78, that has not intermittently failed, the DCR board may never be reset the messages will never be displayed. However, there may be noise related crashes that will cause the display to indicate a fault. These causes may be transient and ultimately the DCR board will recover.
Therefore, even though for each message request to the DCR board, it was determined that the DCR was dead, ultimately the DCR board may be recovered. At this time, the system will initialize and update all messages that were initially lost. In particular, the messages that had been saved in the CPM RAM will finally be dumped into the DCR board RAM table. The DCR will then display the most valid or current message to the display.
Of course, if the DCR board 78 cannot be recovered, the machine will continue to run and the DCR board will remain blank. The DCR recovery procedure is shown in Appendix B.
The final level in machine recovery is to completely restore the interrupted job after a critical software crash or failure. This type of crash recovery can be considered full job recovery after a system crash. The machine resets itself, and with some operator intervention, job integrity is preserved (FIG. 4, block 112).
In one embodiment, in response to software crash or malfunction, one of the processors of a multiprocessor control again assumes the roll of the master controller. In particular, the CPM board 70 is the master controller. At the time of the crash, a software flag, typically a bit in the memory could be monitored. This flag would indicate to the CPM board 70 that there should be no destruction of the contents of the random access memories. This monitoring would be done prior to any initiation or reset sequence of the control boards.
In particular, the CPM board 70 would indicate to itself not to destroy the contents of RAM location that contained the necessary parameters. These would be the parameters needed to place the CPM board and the other control boards into the same state as before the occurrence of the crash. In other words, the CPM board 70 would reset the other control boards using the standard diagnostic and checking procedures, but would retain the information in RAM locations necessary to recover the other control boards with the appropriate information in tact.
The primary purpose of crash recovery, however, is to maintain job integrity by saving the essential variables to be able to continue the job after the crash. The essential variables are such things as the selected information from the control panel such as quantity selected, magnification ratio, two-sided copying and copy quality. Other essential information is state and status information of the machine at the time of the crash. The most reliable means to preserve this information is to store these variables in nonvolatile memory rather than RAM and to continually update the information in nonvolatile memory as it changes.
In a preferred embodiment, therefore, all the control boards automatically perform job recovery and all key information is continually updated in nonvolatile memory. By way of example, if the machine is in the print state or paper has reached the fuser area, after a crash, an E10 fault will be declared. This instructs the operator to clear the entire papar path.
Once this fault is cleared, the job progresses according to the following re-initialization procedure. If a recirculating handler is in the system, then the RDHR control board 82 receives a fault signal from the CPM control board 70 that there is a crash. The RDHR control board 82 then immediately declares a fault, A10, that instructs the operator to remove and reorder the documents in the document handler.
By this time, the CPM board 70 Operating System has reset and reinitialized all the remote control boards, in particular clearing all of the information stored in RAM. Next, the Operating System restores the relevant variables in the nonvolatile memory 88 on the CPM board 70 to the appropriate RAM locations on the remote boards. In particular, the CPM board 70 updates the control panel 86 with the job selected parameters at the time of the crash and restores the remote control board status.
For example, the RDHR board 82 is told the number of originals in a set and the CPM board 70 instructs the RDHR board 82 to cycle the sheets until the correct sheet is on the platen. Other restored information would be, for example, the number of sheets already delivered to a sorter, along with the bin number to start additional sorting if necessary. Note that in a preferred embodiment, there are approximately 116 variables deemed necessary to be used for crash recovery and automatically updated in nonvolatile memory as required.
If a software crash occurs in a standby mode, the machine is reset and the control panel is refreshed unchanged. If stop print has been pushed and the machine has cycled down, recovery is identical. If a software crash occurs in the middle of the second job during a job interrupt, crash recovery is identical to a noninterrupt job. In particular, the second job continues where it left off as if no software crash occured. After completion of the second job, the interrupted job with its variables stored in nonvolatile memory continues from where it was interrupted.
With reference to the code Appendix C, there is shown the software recovery procedure. If, however, crash recovery is selected, statements 142-147, a crash recovery flag, in particular a byte of memory in RAM and the CPM is set. Then, if there is a recirculating document handler, the RDHR control is informed of a software crash. After an E10 fault has been declared and if a crash is in the interrupt mode, the interrupt light is turned on. In addition, the selected job before the crash is restored. In particular, there is an update of a seven segment LED display 134 including quantity flashed and the number of copies selected, statements 804-816.
There is also a re-initialization of the remote control boards. That is, the appropriate variables stored in nonvolatile memory on the CPM board are downloaded to the appropriate RAM locations in the remotes, statements 817-827.
While there has been illustrated and described what is at present considered to be a preferred embodiment of the present invention, it will be appreciated that numerous changes and modifications are likely to occur to those skilled in the art, and it is intended in the appended claims to cover all those changes and modifications which fall within the true spirit and scope of the present invention.
APPENDIX A ______________________________________ DEC HEX MESSAGE AND DESCRlPTlON ______________________________________ FINE CODES FOR CPM 131 X`83` No More TCBS A task made a request to START/FOR/CALL a local task or to FORK/CALL a remote task and there were no TCBs left for the new task. 133 X`85` Attempt To Release A Free TCB A request was made to release a TCB to the list of unused TCBs and that TCB was already released. 134 X`86` Invalid Task ID In Conditioner An attempt was made to access a condi- tion variable in a task whose RTID was not within the proper range. 140 X`8C` Empty Corres Buffer An O.S. Instruction routine tried to retrieve a correspondence byte from an empty correspondence buffer. 141 X`8D` Empty Control Buffer An O.S. Instruction routine tried to retrieve a control word from an empty control stack. 150 X`96` Join Corres Buf Not Empty On End When a forked task hits its END state- ment, it will swap correspondence with its Parent. If the Parent's correspondence stack is not empty at the time, the Child will try to end with a non-empty stack. This is usually caused by passing the wrong number of arguments to the Parent. 152 X`98` No Task To Join The current task requested to JOIN to a nonexistant task. 153 X`99` Unexpected OS Will Executed An O.S. task that should not have had a Will somehow tried to execute its Will. This can be caused by CANCELLING an O.S. task by mistake 158 X`9E` SCH Enter Task Already Scheduled An attempt was made to enter a task that was already entered. 156 X`9C` SCH Enter Invalid Priority The value in $PRIORITY VALUE was not valid when the enter was performed. 160 X`A0` SCH Start Invalid Priority The Parent's priority was invalid and that would make the Child's priority invalid too. 163 X`A3` SCH Release Task Not Scheduled Tried to release a task that is not spooled or queued. 165 X`A5` SCH Free Invalid Priority Tried to free a task whose priority entry is invalid. 170 X`AA` SCH VIP Activate ERR Tried to activate a task that was not set up to be activated. 180 X`B4` Timer Duration Too Large 182 X`B6` Timer Still Active Tried to start a timer that's already active. 186 X`BA` MSG Too Long An attempt was made to send a message longer than 16 total bytes across the bus. This includes 3 bytes of header, 2-3 bytes of task information, one byte length, and correspondence. Thus, you can only pass 10-11 bytes of correspondence to a remote task. 187 X`BB` Bad Dest ID The transmit routines have generated a bad destination ID. 188 X`BD` Xmitter Fails Reset The hardware in the transmitter isn't functioning properly. 189 X`BD` RCVR Fails Reset The hardware in the receiver isn't functioning properly. 198 X`C6 Invalid OS Instruction Executed An attempt to execute an undefined O.S. instruction was attempted FlNE CODES FOR I/O CONTROL BOARDS 2 X`02` Invalid TCB Status The TCB just retrieved has an invalid status tag. 3 X`03` Invalid Timer Status The timer that just expired is neither a machine or real-time timer. 4 X`04` No Ack This I/O Control Board sent a message and did not receive an acknowledgement of that message. 5 X`05` Backlog Full I/O control Board's transmitter backlog is full (i.e. it cannot queue any more messages for transmission. 10 X`0A` SCC Real Time Timer Failure A "Real-Time" timer did not respond within the specified amount of time. 131 X`83` No More TCB's The maximum number of active tasks allowed in this IOP were exceeded. This might be caused by performing too many downloads to the IOP. FINE CODES FOR DCR CONTROL BOARD 132 X`84` Invalid Vector Address A task executed an O.S. Instruction and its next 8085 Instruction to execute was not in the proper range. 134 X`86` Invalid Task ID In Conditioner An attempt was made to access a condi- tion variable in a task whose RTID was not within the proper range. 208 X`D0` Bad Chaining RTID A chaining RTID with an invalid value was encountered. 209 X`D1` Bad Chaining STCB A chaining STCB with an invalid value was encountered. 210 X`D2` Bad CTID In STCB Table A CTID with an invalid value was encountered in the STCB table. 130 X`82` No More Free Space An attempt was made to allocate a corre- spondence byte or control word from its free space and the free space was exhausted. 145 X`91` Exceeded Maximum Number Of Events A task requested to start an Event and there was no room left in the Event tables for it. 150 X`96` Join Corres Buf Not Empty on End When a forked task hits its END state- ment, it will swap correspondence with its Parent. If the Parent's correspondence stack is not empty at that time, the Child will try to end with a non-empty stack. This is usually caused by passing the wrong number of arguments to the Parent. 151 X`97` End Corres Buf Not Empty On End A task reached its END statement and its correspondence buffer was not all used. This is usually caused by passing more parameters to the routine than it expected. 152 X`98` No Task To Join Too The current task requested to Join to a non-existant task. 154 X`9A` Tried To Retrieve From An Empty Buffer A task was expecting more parameters than it was passed. ______________________________________ ##SPC1##
1. In a multiprocessor machine control having a plurality of processors for controlling the components of the machine to produce a result during operation of the machine and a plurality of random access memory (RAM) locations corresponding to the processors, said RAM locations storing digital information representing the status of the machine, said RAM locations periodically being reset during operation of the machine, a diagnostic method for accessing said status information relating to one of the processors including the steps of
- (a) maintaining status information in a RAM location corresponding to said one of the processors,
- (b) manually entering the diagnostic mode,
- (c) resetting all the processors except said one of the processors,
- (d) accessing the contents of said RAM locations corresponding to said one of the processors prior to reset of said one of the processors,
- (e) displaying the contents of said RAM locations whereby the machine may be diagnosed, and
- (f) resetting the processors after displaying the contents of the RAM locations.
2. A control for a system having a plurality of system operating components, said operating components operating and, cooperating with one another to produce a result in a run mode, said control comprising:
- a plurality of control devices for controlling the operation of the operating components, each of the control devices controlling a portion of the operating components and having
- means for generating indications of the operation of the control devices,
- an associated counter for storing indications of the operation of the associated control device, each of the counters including
- a run segment electrically connected to a portion of the operating components for maintaining indications of operation of the associated control device during the system run mode,
- a standby segment electrically connected to a portion of the operating components for maintaining indications of operation of the control device during the system standby mode,
- circuitry electrically connected to the control devices for storing said indications of operation of each of the control devices in the associated counter; and
- a display for presenting the operation status of a selected one of the control devices in response to the indications of operation stored in the run and standby segments of the associated counter whereby the operation of the control can be diagnosed.
3. The control of claim 2 wherein the control devices are processors and the counters are locations in non-volatile memory.
4. In a machine operating in a standby mode and a run mode and having a plurality of operating stations, and a control having a plurality of processors, each of the processors for controlling the operation of a portion of the operating stations, each of the processors having an associated storage for storing indications of the operation of the associated processor and a display for presenting the contents of the storage, each associated storage having a first portion associated with the standby mode and a second portion associated with the run mode, the method of monitoring the operation of the machine including the steps of
- generating an indication of the status of each of the processors,
- operating in the run and standby modes,
- storing an indication of the status of each of the processors in the first portion of the associated storage during machine operation in the standby mode;
- storing an indication of the status of each of the processors in the second portion of the associated during the machine run mode, and determining the status of a selected one of the control devices in response to the information status stored in the associated storage first portion and second portion whereby the machine operating status can be determined.
5. In a system having a plurality of operating elements operating in both a system standby and a system run mode, a control comprising
- a plurality of processors for controlling the operation of the operating elements, each of the processors controlling a portion of the operating elements and having an associated non-volatile memory for storing indications of the operation of the associated processors, each of the associated non-volatile memories including a first counter portion for storing indications of operation of the associated processor during system standby and a second counter portion for storing indications of operation of the associated processor during system run,
- means for generating an indication of the status of each of the processors,
- circuitry for storing an indication of the status of each of the processors in the associated non-volatile memory, and
- a display for presenting the status of a selected one of the processors in response to the information status stored in the associated memory whereby the operation of the control system can be diagnosed.
|October 1971
|Watson et al.
|October 1972
|Beyers et al.
|September 1973
|Kurtzberg et al.
|January 1974
|Hauck et al.
|April 1974
|Zucker et al.
|May 1974
|Hauck et al.
|October 1975
|February 10, 1976
|August 31, 1976
|Barton et al.
|September 28, 1976
|Faber et al.
|September 28, 1976
|Faber et al.
|August 23, 1977
|Bachman et al.
|September 13, 1977
|Callahan et al.
|December 20, 1977
|Schubeler et al.
|April 11, 1978
|Dafond et al.
|July 4, 1978
|October 31, 1978
|October 31, 1978
|Dean et al.
|January 9, 1979
|February 6, 1979
|Toke et al.
|July 24, 1979
|October 1979
|Daughton et al.
|January 29, 1980
|April 22, 1980
|Borgerson et al.
|July 29, 1980
|Bunyard et al.
|August 26, 1980
|Kober et al.
|September 23, 1980
|October 7, 1980
|October 14, 1980
|Bernhard et al.
|October 21, 1980
|Gilliland et al.
|February 24, 1981
|February 24, 1981
|Taylor et al.
|December 1, 1981
|December 29, 1981
|February 9, 1982
|Armstrong et al.
|May 4, 1982
|August 3, 1982
|Shimizu et al.
|August 31, 1982
|Paredes et al.
|September 6, 1983
|Blahut et al.
|December 27, 1983
|Shiozaki et al.
|June 5, 1984
|Suzuki et al.
|June 26, 1984
|Henneberger et al.
|June 26, 1984
|October 16, 1984
|Furuichi et al.
|November 1978
|May 1979
|September 1974
Type: Grant
Filed: Sep 21, 1982
Date of Patent: Sep 26, 1989
Assignee: Xerox Corporation (Stamford, CT)
Inventors: Randy Sherry (Rochester, NY), Anthony M. Federico (West Webster, NY), Tuan A. Nguyen (Webster, NY)
Primary Examiner: Michael R. Fleming
Attorney: Ronald F. Chapuran
Application Number: 6/421,615
International Classification: G06F 1106;


text:
tikalat wrote:http://www.vogons.org/viewtopic.php?p=296379#p296379
Patch to integrate MUNT library into svn-daum (May 2013)
1) Download MUNT 1.2 source. Apply munt-master-savestate.diff
- Add partial limits
- Add mt32ram dump / load
1a) Compile as static library
- mt32emu_stat.lib
2) Download ykhwong's May 2013 build. Apply daum-savestate.diff
- Removes MUNT files. Treat as external lib
- Copy new MUNT header files
- Run MUNT through MIDI savestate code
- Rework MIDI save / load
--- new features: NRPN
--- bug fixes: controller 79h (RPN), correct MIDI / sysex status, other noticeable problems
2a) Add mt32emu_stat.lib to linker
2b) Compile and run
Not fully tested. Works rather well so far.
That shouldn't happen. ^^
Wow, thanks. I will try it.


text:
Homeowners: This is the Public view of the website. Members-only information is hidden until you Login.
Please enter the email address for your account. A verification code will be sent to you. Once you have received the verification code, you will be able to choose a new password for your account.