
I. CBM - Command Bar Menue         CBM.TXT         Version 1.8.7 - 2015.08.10
==========================         -------

1. Introduction
---------------
You need an interface for your application? Some framework? You found it! :-D
CBM provides a text/semigraphical Menu-System for FutureOS. You can use Mice,
Joysticks or Cursor keys and Copy to browse through PULL DOWN MENUes etc. And
in addition hot keys can be used. CBM can be used as a menue-system for EVERY
program, so you haven't to code it all again. Further, different programs can
use the same look, which makes them similar and more easy to be used.

CBM knows your mother language (FutureOS configuration). That way it displays
all dialogues in your mother language.  In the current version of CBM you can
use English, French, German, Nederlands and Spanish. (Ask for your language).
If you want to change the language just go to Options, then to Language. Then
change your language there. Or use the tool "ConfigOS" to change the ROM.

You have to add your own program code to the "CBM.MAX" source code. And adapt
the source files for your own program / purpose. Then just have fun with it.

Only few functions are implemented, because every thinkable program will use
the same functions lightly different. Ask for help everytime!

The following functions are implemented as default:
(Just change some texts for your own programs)

Submenu File
------------
<L>oad          Hotkey: l or L  ---  To load a file
<S>ave          Hotkey: s or S  ---  To save a file
L<o>ad Blk.     Hotkey: o or O  ---  To load a block of text or data
Save <B>lk.     Hotkey: b or B  ---  To save a block of text or data
Re<a>d DIRs     Hotkey: a or A  ---  Reads the DIRs of all tagged drives
<C>lose         Hotkey: c or C  ---  Saves the data and quits this app.
<I>mport        Hotkey: i or I  ---  Import text or data
<E>xport        Hotkey: e or E  ---  Export data or text
<Q>uit          Hotkey: q or Q  ---  Quit this application

Submenu Process
---------------
C<a>ll OS       Hotkey: a or A  ---  Call the Desktop, return with the OK icon

Submenu Options
---------------
<M>ode          Hotkey: m or M  ---  Select the screen MODE 0-3
<C>olour        Hotkey: c or C  ---  Select color for Pen, Paper or Border
<L>anguage      Hotkey: l or L  ---  Select your desired language

Submenu Help
------------
<H>elp          Hotkey: h or H  ---  Show a help screen
<M>enue         Hotkey: m or M  ---  Shows help about this surface
-$<$>$-         Hotkey: $ or 4  ---  Tells how to spend money to YOU
.w<w>w.         Hotkey: w or W  ---  Tells where to find you in the internet

The Submenues: "<U>ser Func 1" and "<M)enue User 2" are dummies.  Your program
decides what should be written there and what you have to do with it. Normally
you will implement the special functions of your application into them.

All the source code is provided!!! The file "CBM.MAX" contains the main program
CBM and the files "CBM-LNG1.MAX" and "CBM-LNG2.MAX" contains language dependent
tables and text. The file "CBM-SUB.MAX" contain menue and sub functions.

To have a look at the CBM just start the file  "-ComBarMenu"  under FutureOS.
This is just the pure menue-system without any program. You see how it works.

It should be easy to add functions and text (in all languages) if you have a
look at the source code. Z80 knowledge and the knowledge of some facts about
FutureOS are an advantage. Else ask for help!

If you want to use CBM and you need help, just mailto: FutureSoft@gmx.de
I really look forward to help you with your own programs!

2. Files
--------
"- Start .CBM": This file is a demonstration of the command-bar-menue alone.

"CBM     .MAX": The source code of the program itself. You can add your own
                program-code here, to use CBM.
                This file link "CBM-LNG1.MAX" and "CBM-LNG2.MAX" when you
                assemble CBM.MAX with the MAXAM assembler o.e.

"CBM-LNG1.MAX": This file contains text (only English, French, German, Spanish)
                which should be displayed through CBM and your program-code.

"CBM-LNG2.MAX": That file contains text (Dutch). Other languages can be added.

"CBM     .TXT": Equates usually to this file ;-)










3. Memory-Map
-------------
&0000-&0AFF: Program-Code of CBM itself. But you can use the REStarts 1-7 at
             the beginning of the program (look at "CBM.MAX"). But don't use
             RST 0, which is a cold boot for CBM / your application itself.

&0D00-&37FF: Nearly 11 KB SPACE for YOUR own application. More RAM after &8000.

&3800-&3FFF: Charset for all 256 characters. Either a copy of the lower ROM or
             your own. Place your personal character set here if you want to.

&4000-&7AFF: Tables and texts for all supported languages. You have to add the
             texts for your own program here, please support English at least.

&7B00-&7FFF: About 1 KB free space for your application, f.e. texts and tables.

&8000-&80FF: These routines are needed here for calling OS functions.
             They must be located between &8000 and &9FFF.

&8100-&9FFF: Main SPACE for YOUR application code or what ever you need. :-)

&A000-&B7FF: System buffers of FutureOS. If you want to use it, take a look
             at the manual. Your application can go up to &AFFF and use the
             space between &B000 and &B7FF for buffers.

4. How to implement own functions?
----------------------------------
4.1 Implement the code
----------------------
Place your applicatins source code in file "CBM.MAX" before the character set,
the "DS &4000-$,&C9" instruction. And / Or place it between &8000 and &9FFF.

To access your code, you have to bend the vectors/pointers of the tables after
the labels "T1_PF1" and "T1_PF2". But you can also implement your own program-
functions in the tables after the labels:  "T1_FIL" , "T1_PRC" , "T1_OPT"  and
"T1_HLP". You just have to insert the target-address/label of your own target-
routine after the DW instruction.

4.2 Implement the text
----------------------
The text(s) of your own program have to be implemented in the source-code-files
"CBM-LNG1.MAX" and "CBM-LNG2.MAX".
To implement text for your own program-functions just rename the dummies after
the following labels:

For English...: "F1E_00", "F1E_01".."F1E_05" or "F2E_00", "F2E_01".."F2E_05".
For German....: "F1_00" , "F1_01"..."F1_05"  or "F2_00" , "F2_01"..."F2_05".
For French....: "F1F_00", "F1F_01".."F1F_05" or "F2F_00", "F2F_01".."F2F_05".
For Spanish...: "F1S_00", "F1S_01".."F1S_05" or "F2S_00", "F2S_01".."F2S_05".
For Nederlands: "F1N_00", "F1N_01".."F1N_05" or "F2N_00", "F2N_01".."F2N_05".
But surely you can use and alter all other menues too! Maybe you have to adapt
the sizes of the windows. You can do that by altering the width of a window in
the source of "CBM-LNG1.MAX" and "CBM-LNG2.MAX".


5. Assembler
------------
Use the MAXAM assembler (or something compatible) to assemble the source file
"CBM.MAX". This file automatically loads and links the two language files.
















6. Version
----------
Actual version: 1.8.7 from 2015-08-10 with Eng, Ger, Fra, Ned, Spa. support.

7. Updates
----------
since 1.8.7: Devices can be selected (A-M) and their DIRectories can be read
             without the need to return to the Desktop. This file overworked
             Restart restaurates SP save. File selector ESC makes warmstart.
since 1.8.0: Hot keys for YES/NO file question
since 1.7.1: Hot keys added
since 1.6.2: X-Menue added, more functionality
since 1.5.3: Debugging, File-Selector more error prone
since 1.4.4: File-Select-Menue implemented
since 1.3.5: Spanish Language interface has been added
since 1.3.0: some cosmetic changes; added function 'Call OS'










8. Credits
----------
Merci beaucoup, Thank you very much, Merce nachad and Muchas gracias are going
to the following sceners:

- SID ................. for the .....French language interface!
- CPC Freak Belgium ... for the ......Dutch language interface!
- Miguel Sky .......... for the ...Spanisch language interface!


9. Last message
---------------
Keep our CPC working! Work on CPC! Enjoy life with your CPC :-D

Bye, TFM of FutureSoft









