home *** CD-ROM | disk | FTP | other *** search
-
- BLANKET
-
- version 1.1 (c) copy right 1989 All Rights Reserved
-
- That's right, this is just another one of those screen
- blanker programs with programmable interval-between-blanking
- and programmable display of messages with date, time, bell,
- length of time the screen is blanking, length of cumulative
- blanking past so far, etc. So why bother? Here is why:
-
- Have you used the new boards/softwares which can display 43
- rows or even 50 rows? If your old screen blanking program
- fails, it's because it's outmoded.
-
- Or have you almost unplugged someone else's computer?
- thinking that the blank screen indicates that the computer
- is not running?
-
- Blanking the screen is great for preventing a screen burn
- out, but it also gives the contra-indication that it's not
- running, especially if there are other machines near-by
- which can mask out the computer's fan.
-
- This program blanks the screen and then displays a moving
- message, either the default, or your's to warning others.
-
- Unlike another program which was written sometime ago, this
- one is not specifically for the PS/2 machines and will work
- with any IBM compatible. An auto-hard-disk park was not
- included in this because most new hard disk drives on the
- market have auto-park on power OFF.
-
- EGA/VGA graphic screen blanking is not supported because of
- the memory requirement but CGA graphic screen blanking is
- supported, even if BIOS indicates that the screen is not in
- a graphic mode.
-
- CHANGES SINCE VERSION 1.0 are very minor
-
- The cursor now moves with the moving prompt.
- There was a report of lock up with Displaywrite v 4.0.
- Unfortunately, we don't have v 4.0, but with v 2.0, it
- works fine. On the possibility that a built-in feature
- called HyperSlice is interferring with v 4.0, a line
- command to turn it OFF was added.
-
- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-
- If you simply type
-
- BLANKET<ntr>
-
- then you get the help list only.
-
- Out of necessity, the help list is abbreviated. You have to
- read this document to appreciate the features in this screen
- blanking program.
-
- (If there is a discrepancy between this document and the
- help in the BLANKET.EXE, then believe in the on-line help
- list. I may have made a boo-boo writing this document.)
-
- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-
- To run this, simply type
-
- BLANKET RUN<ntr>
-
- and end it with an <ENTER> or <ntr> or <cr> or anything
- else you want to call the carriage return. This is a
- memory resident program, but there is no hot key to press.
-
- You must type at least "RU" in "RUN". If you type only "R",
- then BLANKET.EXE will mistake it to mean "R"eserve and will
- expect to find a number following it to indicate the size of
- memory to reserve.
-
- By default, if a monochrome adaptor was active when you ran
- the BLANKET, then the monochrome area will be cleared and
- 4,000 bytes of space is reserved by this program to store the
- monochrome memory area.
-
- If a CGA/EGA/VGA was active in color mode when you ran the
- BLANKET, then the color/graphic area will be cleared and
- 16,000 bytes of space is automatically reserved by this
- program to store the screen.
-
- If you have any of the other parameters described below, you
- don't have to use the "RUN" parameter. In fact, as soon as
- BLANKET.EXE sees "RUN", it does, and ignores anything else
- you may have had on the command line after this.
-
- If you run this program from AUTOEXEC.BAT, you may use this
- feature to add a comment after the "RUN" parameter.
-
- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-
- There is a built-in feature we called HyperSlice. It's not
- used now, so if you have trouble running this program, try
- turning it OFF by
-
- BLANKET H<ntr>
-
- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-
- This program will automatically detect the presence of an
- EGA/VGA versus a CGA versus a monochrome and adjust itself
- accordingly. However there are overrides available in case
- you have a two monitor system and the one you boot this
- program up with may not be the one you will subsequently be
- using afterwards.
-
- To force blanking the color monitor (which may really be
- only an amber/green monitor), type
-
- BLANKET BC<ntr>
-
- This will automatically reserve 16,000 bytes of space to
- store the entire four text pages or a CGA graph.
-
- To force blanking the monochrome monitor, type
-
- BLANKET BM<ntr>
-
- This will automatically reserve 4,000 bytes of space to
- store the monochrome area.
-
- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-
- To force a different number of bytes to be reserved for
- storage than the default, follow the blanking monitor type
- with the "R" parameter like this
-
- BLANKET BC R7<ntr>
-
- This forces a color monitor area to be blanked, but instead
- of the default of 16,000 bytes, this only reserves 7,000
- bytes of space: If you don't use graphics but use an EGA
- with 43 rows modes with your word processor, then you need
- this value to clear the 43 rows.
-
- This parameter "BC" and others may be in either capital or
- small letters. There is no case sensitivity.
-
- If you only have a single monitor, then don't bother with
- the "BC" or "BM" parameter. But if you have a VGA monitor
- and the word processor is set for 50 rows mode, then you
- need to set aside 8,000 bytes like this:
-
- BLANKET R8<ntr>
-
- Of course, if you want to make sure that you don't come back
- to the office on Monday morning to find an etched CGA graph
- on the screen, then use the default to allow 16,000 bytes
- reserved.
-
- If for some reason, you have to reserve, say, 32,000 bytes,
- even though you have only a monochrome monitor, then you can
- type
-
- BLANKET R32<ntr>
-
- to allow 32,000 bytes of the screen to be stored as well.
-
- A WARNING is needed: If you reserve space but then tell
- BLANKET to blank either a monochrome or color in that order
- like this,
-
- BLANKET R32 BM
-
- then the default space of 4,000 bytes will be reserved. Not
- the 32,000 bytes you expected. To have it as you expect,
- reverse the order of the two parameters.
-
- The calculation required for reserving space goes like this
-
- number of rows times number of columns times two rounded up
- to the next thounsand.
-
- or (#rows * #columns * 2 + 999)
- ---------------------------- * 1000
- 1000
-
- For example. If you have the 43 rows mode, then it's
-
- 43 * 80 * 2 = 6880 -> rounded up to 1000 -> 7000 so
- "R7" is needed.
-
- If you found an exotic video card which allows, say
- 132 columns wide by 43 rows, then you need to reserve
-
- 43 * 132 * 2 = 11,352 -> rounded up to 1000 -> 12,000
- so "R12" is needed.
-
- Such calculations are only needed if you want to keep memory
- needs to the minimum to allow this program to reside under
- memory hungry programs.
-
-
- The minimum value allowed is "R4" for 4,000 bytes and the
- maximum value allowed is "R60" for 60,000 bytes of storage.
-
- Now this "R60" seems to be an invitation to try something
- like "BLANKET BM R49<ntr>" to force the blanking of both a
- monochrome adaptor and a color adaptor at the same time,
- right? However, we haven't tested that feature. And
- rumours still linger about dual monitor systems exploding...
- so let's not try that, especially if you have cheap
- non-decoupled, non-isolated monitors.
-
- The EGA/VGA graphic mode memory is bank-switched. This is
- not a limitation by itself, but since it uses from 128kb to
- 256kb of memory to save such a graph, these use far too much
- memory and is not supported here.
-
- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-
- By default, this program will blank the screen if you don't
- type anything for five (5) minutes. To change the default
- to one minute, type
-
- BLANKET T1<ntr>
-
- Valid values are "T1" through "T59" for one minute through
- 59 minutes of no keyboard activity until the screen is blanked.
-
-
- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-
- After the screen blanks, the following message will display:
-
- Blanket ON!
-
- This message will move from the top row to the 25th row and
- will keep moving in this cycle to prevent screen burning under
- it. If you want to replace this message with your own
- display message like "Keep your fingers OFF", type
-
- BLANKET DKeep your fingers OFF<ntr>
-
- Up to 73 characters are accepted for this prompt.
-
- The end of the new display is either a tab character or the
- <ntr> for the end of line. If a tab character is depicted
- by <tab>, then
-
- BLANKET DI am working<tab>T1<ntr>
-
- Will display "I am working" if you did not type anything for
- one minute. But if you forgot to use a tab, then
-
- BLANKET DWorking T2<ntr>
-
- will display "Working T2" after five minutes (the default
- value) of no activity on the keyboard.
-
- PROGRAMMABILITY
-
- After the "D"isplay parameter, till either a <tab> or an
- <ntr>, most of what is on the string list is used as they
- are, except for the regular slash character "/": If certain
- characters follow this character, the two characters are
- taken as subcommands to be interpreted before displaying of
- the message.
-
- /t
-
- This indicates that the present computer system time is to
- be displayed. The time is the twelve hour cycle type with
- "am" and "pm" indicating the morning and afternoon times.
-
- The hour and the minute separated by a colon is displayed.
- The second is not shown, but the display moves at the rate
- of one row per second. (provided that you do not use the
- bell command "/B" too often)
-
- /d
-
- This indicates that the date is to be displayed at this
- location in the string. The date is the American format of
- month-day-year. The month is in full alphabetical form to
- prevent confusion from the European or the Canadian format.
-
- Unlike the time, the date is not updated past midnight.
- This is a bit inconvenient but was necessary to avoid
- locking up many (not all) computers where constantly updated
- date was tried on. Overcoming this limitation required
- slightly more coding which was considered not appropriate in
- a program whose primary purpose is not to show date/time.
- Any opinion?
-
- It's not impossible to reset the date if you left your
- computer and BLANKET.EXE ON since yesterday or over the
- weekend, however. Just try to run another BLANKET.EXE from
- DOS and answer "N" to the prompt to send a new display
- message to the one already in memory:
-
- Every time BLANKET.EXE checks to see if another copy of
- itself is already in memory or not and finds one in memory,
- it will automatically update the date in the one already in
- memory before telling you that it's already in memory.
-
- There is another feature which is more useful, however.
-
- /i
-
- This displays the interval time during which BLANKET.EXE has
- been active so far. This will display time up to 99:59 for
- 99 hours and 59 minutes. You must use the small letter "i".
-
- As long as BLANKET is keeping the screen clear, this value
- will keep on increasing to tell you how long the computer
- was idle since last used. Add the pause time (such as the
- default of "T5" or "T1") and it tells you just when someone
- last typed on the computer.
-
- This interval time is reset back to zero (0:00) everytime
- you go back to your software by typing any key, unlike the
- "/I" subcommand below.
-
- /I
-
- The capital letter "I" (eye, not el "l") shows the total
- cumulative interval times BLANKET.EXE has blanked the screen
- so far. Fractions of minute are truncated off. This shows
- the total interval time ever since BLANKET.EXE was put into
- memory that the screen was blanked. This interval time is
- NOT reset everytime you go back to your software by typing
- any key.
-
- It's major use would be for neo-Scroogeoid bosses who want
- to know how often the computers in the office are idle in a
- working day. But at least it's better than sitting on your
- laurels waiting for Equadorians to reach parity in
- technology, American. Now seriously...
-
- The maximum this will display is up to 99:59 for 99 hours
- and 59 minutes. If you're using someone else's machine and
- expect the computer to be left ON for weeks on end, don't
- use this subcommand.
-
- This value will remain constant for any one blanking period,
- updating itself the next time the screen is blanked.
-
- The "D"isplay subcommands is the only case where there is
- case sensitivity. In other words, whether you use capital
- letters or small letters make a difference in how they are
- interpreted.
-
- /b
-
- The small letter "b" indicates backspace. This erases the
- last character in the string so far. This can be used to
- erase the "am/pm" indication from the time subcommand "/t"
- above or the year from the date subcommand "/d".
-
- /B
-
- The capital letter "B" stands for bell or beep. The string
- will stop displaying at this point and pauses while it beeps
- before continuing to show the rest of the string.
-
- /T
-
- This is a crude form of a tab in that it only generates
- eight spaces irregardless of where in the string this is
- placed. This is used to move your message to the middle or
- to the right side of your screen.
-
- This is for aethetical purposes or to prevent screen burns
- from even the moving message in one location.
-
- //
-
- This sends one regular slash character "/" to the listing.
-
- /:
-
- Since the regular bar character "|" is redirected away by DOS,
- the colon ":" translates to the bar "|" in case of trouble
- and you need it.
-
- /( and /)
-
- Since the less than sign "<" and the greater than sign ">"
- are used for input/output redirection, if you need to have
- them in your message and not the parentheses, then the slash
- followed by the left parenthesis and the right parenthesis
- will substitute for the two characters.
-
- These are useful in EGA/VGA enhanced 25 row modes where you
- can actually tell the difference between a less-than sign
- and a left parenthesis.
-
-
- Any other characters not recognized by the program are
- passed straight as is, so that "/x" becomes "x".
-
-
- For example, assuming that "<tab>" stands for a real tab
- character in the following command string,
-
-
- display a tab or enter ends
- command| |display subcommands.
- | |
- BLANKET d/d /t/Tx/b/B hello<tab>t1<ntr>
- | | | | | | |
- display subcommands here | |pause time in minutes
- |
- regular text for display |
-
- After a pause of one minute "t1" of no keyboard activity, the
- "D"isplay command will display the date "/d" followed by a
- space, the time "/t", followed by eight spaces "/T" and the
- letter "x". But the backspace "/b" will remove the letter
- "x" after it is displayed on screen before there is a bell
- "/B". The string pauses here while the speaker sounds the
- bell. Then the word " hello" displays.
-
- Note that the "D"isplay command can be in capital letter "D"
- or in small letter "d", but the subcommands embedded within
- the display message for the "D"isplay command must be in
- either the respective capital or small letter as required.
-
-
- IS THAT ALL?
-
- No. You can change (program?) the message anytime you want
- by running BLANKET from DOS with the new display message.
-
- If you already have BLANKET in memory, but you run
- BLANKET from DOS again, you will be prompted with a question
- asking you if you want to replace the display message in
- memory with the new one. Type on either the letter "Y" or
- "N" as requested to abort or to send the new display
- message (with any embedded subcommands) to memory,
- respectively. You can type capital or small letters.
-
- So if you ran the program with the above message but then go
- away for lunch, you can now have a new message displaying by
- typing from DOS:
-
- BLANKET DI went to lunch. Back by 1:05<ntr>
-
- Now type "Y" to the prompt asking you if you want this
- message replacing the old one and go for lunch.
-
-
- The moving message is set for about a one second interval.
- But if you have Beeps in the message, this will affect the
- time update. Also, the message is not moved exactly at one
- second interval, due to the way the system timer is set up,
- so the location at which the minute/hour will increment is
- not always 60 steps later.
-
-
- As stated above, the "D"isplay parameter may be in capital
- or small letter, but the displayed message itself is accepted
- just as is, including any embedded subcommands. There is
- no translation of the words to capital or small letters.
-
-
- If you had anything other than the "D"isplay command, such
- as the blanking time value "t1", these values are not
- updated. Only the "D"isplay message and any accompanying
- subcommands are sent to the copy already in memory.
-
-
-
- ----------------------------------------------------------------
- |BLANKET.EXE itself and all programs hence forth will NO LONGER|
- |have a self-wipe feature, or the ability to wipe any and all |
- |other memory resident programs loaded after this program. |
- | (unless I start hearing otherwise) |
- | I thought that it was a neat and a great feature and so a |
- | sub-feature to wipe out any other memory resident program |
- | made by my group was added for a while, but NOONE seems to |
- | want it (or care?). Let alone the ability to wipe out ANY |
- | and ALL TSR programs loaded after this. |
- ----------------------------------------------------------------
-
-
- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-
-
- HOW BLANKET.EXE WORKS
-
- Since there are programs such as LOTUS which display graphs
- without informing BIOS that it's displaying a graph, there
- is no simple way to detect whether to save the screen as
- text or graph. So the simple process of saving a big chunk
- and erasing that area is used.
-
- This may sound crude, but it will allow this program to work
- on CGA or EGA (43 rows mode) or VGA (50 rows mode) or
- monochrome, or even the enhanced EGAs/VGAs with higher
- number of rows and columns.
-
- The program will first see what type of video adaptor you
- have and set itself accordingly, until you override it with
- the line commands such as "BC" to blank color monitor.
-
- Note that the word "color monitor" simply means that you are
- using the CGA card or its emulation in EGA/VGA. It's not
- important if what you really have is a green/amber monitor.
-
- Now it checks to make sure that BLANKET.EXE was not already
- loaded to memory. If it was already loaded to memory, that
- program's date value is updated by this, just in case it
- changed.
-
- If the program is already in memory, it asks you if you did
- this to change the displayed message. Answer yes or no as
- needed. Now this becomes a TSR (terminate but stay
- resident) program.
-
- This program monitors the keyboard to see if anything was
- typed. After it blanks the screen, it will start displaying
- the default or your message. If you don't want any message to
- appear, fill the "D"isplay message parameter above with a
- space or two. The screen is filled with words of nulls
- (chr$(0)), except for where the screen is written with the
- display message, which is given a character attribute of 7
- for white character on black in text mode and cyan on black
- in color graphic mode (assuming that the background is
- black). This sounds crude and unsophisticated but it turned
- out to be the best compromise among different softwares and
- video adaptors tried.
-
- Once the set time passes without any activity on the
- keyboard, the screen is blanked (snow suppression is used on
- CGA or if you specifically requested that more than 32,000
- bytes be reserved for screen storage.)
-
- Now, every second, the default or your "D"isplay message
- with any embedded subcommands are interpreted and displayed
- on screen as needed.
-
- After the screen blanks, try typing just the left/right
- cursors to make the screen come back again to reorient
- yourself. Or just continue typing where you left off. If
- you start paging up/down, you may loose track of what you
- were doing previously. And if your software takes over the
- keyboard interrupts for its own macros, the image
- re-written back to the screen may not reflect what the
- software thinks is supposed to be there. However, this
- will not destroy your text or data. A simple preview mode
- or a page up/down pair will cure any inconsistency.
-
- Both the ADVERTIZ.EXE and BLANKET.EXE programs spring back
- and send the key you type to go back to your software. That
- is, if you turn BLANKET.EXE OFF by typing on the letter "x",
- this letter will be sent to your software.
-
- This program does not support the alternate color palettes
- of the EGA/VGA. It assumes that the defaults are used.
- Why? What if on reading the palettes, no black was
- selected? What if you have an amber monitor and EGA with
- other TSR programs active? The possibilities of unknown
- consequences was too large and the people who need screen
- blankers don't seem to be using the EGA/VGA for those
- purposes.
-
- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-
- CHAT in a HAT
-
- There is one advantage in asking for an update (or purely
- negative criticisms, even) to this or any other program as
- early as possible, instead of asking for it as late as
- possible to avoid bugs in earlier versions: I'm very open to
- new suggestions when they come in early.
-
- By the way, the person who sent me a message about mspool
- slowing down. I'm working on the multi-tasking solution,
- still.
-
- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-
-
- PROMPTS AND MESSAGES
-
- =-=-=
- Unknown parameter on the command line here.
- =-=-=
-
- Something not recognized was found on the line when you ran
- the program. If you ran this program from a batch command
- file, error messages are followed by errorlevel = 1 so that
- you can have your batch file take appropriate actions.
-
- Did you type a regular slash character "/" before the
- commands? Only the "D"isplay command's subcommands need the
- slash. If you use a slash anywhere else, it won't be
- understood.
-
- This is unrelated (my mind wanders when I'm tired) but the
- ADVERTIZ.EXE uses the "E" parameter to edit the pop-up
- advertizement, not the full word "EDIT", which will give you
- this type of error.
-
- =-=-=
- Valid time values are "T1" through "T59" for
- waiting 1 - 59 minutes before blanking the screen
- Default is 5 minutes
- =-=-=
-
- You did not enter a time for inbetween the blanking of the
- screen which was between one and 59 minutes. Anything less
- than a minute is annoying on your eyes and over an hour is
- likely to cause some screen burns anyway.
-
- =-=-=
- Valid memory reserve values are "R4" - "R60" for
- saving 4,000 - 60,000 bytes of video memory
- Default is 4,000 for Mono and 16,000 for Color monitor
- =-=-=
-
- Saving less than 4,000 bytes renders a screen blanker
- useless and over 32,000 bytes really has no merits.
-
- =-=-=
- BLANKET is already in memory.
- Do you want to send the new display message
- to the one in memory? Type Y/N.
- =-=-=
-
- BLANKET.EXE was already in memory when you ran it again.
- However, if you have a new "D"isplay message parameter or
- you want to change it back to the default, the non-memory
- resident BLANKET will transfer it to the memory resident one
- for you. Type "Y" to send the new display message. Type
- "N" to abort it now.
-
- If you had other parameters, such as a new time value before
- the screen is blanked, they are ignored. Only the "D"isplay
- message is sent.
-
- Whether you typed "Y" or "N", the memory resident BLANKET's
- date value was updated, so that "/d" will now display the
- right date in case this is the next day.
-
- =-=-=
- BLANKET is aborting. Bye.
- =-=-=
-
- You typed "N" above to mean "No. I made an error. I did
- not mean to run BLANKET twice".
-
- =-=-=
- New display listing is sent to the memory resident BLANKET.EXE
- =-=-=
-
- You typed "Y" above to mean "Yes. Replace the display
- message to the new one here or back to the default".
-
- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-
-
- All products and names mentioned are Trademarks or
- Registered Trademarks of their respective corporations or
- companies. That includes ours and any associated groups.
-
- All enclosed programs, documents and other files are
- provided AS IS, without any warranty, expressed or implied,
- including but not limited to fitness for a particular
- purpose.
-
- If you find that this does not work in your machine, we
- would like to know exactly what happened. With enough
- information, including where the cursor was, what appeared
- on screen, what other TSR programs you had running, etc, we
- may be able to make it work in your computer as well.
-
- A contribution of $10 US/Canadian is appreciated if you
- find this useful, or $20 for an improved one as it comes out.
- (That's $20 Cdn if you're in Canada and $20 U.S. for U.S &
- others.)
- Unless you specify otherwise, you will get a 5-1/4" 360 kb
- diskette. And if you specify 3-1/2", it will be formatted
- as 720kb on either a 720kb drive or a 1.44Mb drive.
- Your negative criticisms are as welcome as your positive ones.
-
- NAME OF THE PROGRAM:
- BLANKET.EXE
-
- PURPOSE OF THIS PROGRAM:
- Another of those (yawn) screen blanker? This will blank the
- screen whether set for 25 rows, 43 or 50 rows. Or the CGA
- graphic mode. But to prevent someone from pulling the plug,
- thinking that your computer is not running, this can display
- a moving message to prevent such mishaps. The message can
- include the date/time, length of time the screen is blanked
- and was previously blanked, beep, etc.
-
-
- my old forwarding address was
-
- Dr. Masaaki Sawada
- University of Waterloo, Faculty of Science
- Waterloo, Ontario Canada N2L 3G1
-
-
- the new forwarding address (for the moment) is
-
-
- Dr. Masaaki Sawada
- Lady Davis Institute for Medical Research,
- Sir M. B. Davis Jewish General Hospital,
- 3755 Chemin Cote Ste-Catherine,
- Montreal, Quebec,
- Canada H3T 1E2
-
-
- The institute name is given instead of home address(es) to
- lower the chances that any mail is delivered to a wrong
- address (a common occurrence). However, no institute time
- nor equipment was used to write this program or document.
-
-
-
- +-+-+-+-+-+-+-+ SWEATING OVER THE ADDRESSES? +-+-+-+-+-+-+
-
- If you're frustrated by the cumbersome and ever shifting
- addresses, forward to
-
- c/o Dr. Masaaki Sawada
- LCS
- P.O. Box 956
- Outremont, Quebec
- Canada H2V 4R8
-
-
- This doesn't change.
-
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-