Instruction-Manual
for
Synergy-Modulgenerator
Copyright 1997 Christian Schäffner
Table of Contents
1 Description
The program "Synergy-Modulgenerator" creates 32kb-, 64kb or 96kb-modules (one area) for an internal EPROM- or sRAM-expansion or for external EPROM-modules or the external sRAM-card. The program makes a lot of important things to create the burnfiles for th e user. This instruction-manual shows you how to use the "Modulgenerator" with an example (internal modul). Other possibilities are shown in italic letters.
2 What you need
To create modules bigger than 32kB you need a 256kb-RAM-expansion. The program was made for 2 floppy-stations. If you want use a 1551 and a 1541 then use the 1541 as device 9. But the program can also run with only one floppy. I show the differents in the example in italic letters.
An important point is the knowledge about the ROM-banks in the Plus/4. Depent from the modul you want create you will have the banks 5, a or/and f. Bank 5 is only internal in a Plus/4 (sockets for integrated software). If you have a computer with EPROM- or sRAM-expansion you have also the banks a and f internal.
3 Beginning
Before you can start you must select the software you want burn or transfer to the sRAMs. But you must note the following things: You can only use programs wich doesn't load other parts from it from disk: BASIC-programs or machine-code-programs with a basi c-line for start, machine-code-programs with SYS-start at it's first adress, memory-areas without start (datas for F-keys) and complete modules (e.g. originalmodules like Script/+ or the Hungarian Monitor). But you must modify these original-modules. In mo st cases it is enough to delete the CBM-mark. Then you need a little mc-program to start the modules. For Script/+ you can use the »Support« for this. If you want use such originalmodules then please ask me for the special version and the mc-starter-progra m. This problem is very complex, I can't write about all possibility cases.
A further problem are games wich you can load with DLOAD but you must enter a SYS for start. You can't use this games directly. You have 2 cases to solve this problem. At 1st you can add a Basic-Line with the needed SYS-command. But in some cases you destr oy datas from the game. The other way is to add a JMP-command in monitor before the datas of the game (3 bytes). Then you must store the game from monitor. The »modulgenerator« can now handle the game as a program with start at its 1st adress. If you have OS92 or a further version you can see the start- and endadress after load in adresses from $9b (see instructions from OS92).
Now you have selected the programs you will store in the expansion. But you can't store more than 22 programs per area because the moduldirectory hasn't more lines at the screen. Originalmodules get no entry in the directory (but there starter-program)!
Now you need so much diskettes how the expansion has areas. If you create an external (64kb) modul or the internal expansion has only 1 area you will need only one disk. Copy all programs to the 1st diskside, max. 120BLK per bank. (For the internal expansi on you must leave 294 blocks free.) If you aren't sure you can copy more programs, because you can make the finished selection later.
For our example we will create an area for the internal expansion (sRAM or EPROM) with 3 banks. For every further bank you can do it analog, External modules are the same but you haven't the bank 5. In our example will use the »hungarian monitor« as an original modul. You copy all programs to the 1st side of the disk. Leave the backside empty (but format!). If you will use original modules wich need a complete bank (such as script/plus-modul) then copy it to the backside. Rename it that the name begins with "bf0x;" the "bf" stands for burnfile, "0x" means the bank in wich the originalmodule should be loaded. You can't load an original-modul in the same bank as the modulhead. From this reason you can use in the internal expansion only 2 originalmodules in the same area. (One in bank a, the other in bank f.) External you can use only one originalmodul in a 64kb-area or no originalmodul if you have only a 32kb-area. Note: Some original-modules need a special bank for work!
If you have only one floppydrive you must also copy the needed modulhead for your modul to the 1st side of the disk. When you copied all programs to the disk you can load and start the "Modulgenerator".
4 Programstart
Load the "Modulgenerator" normally with DLOAD insert your disk with the programs and start the "Modulgenerator" with RUN. If you use 2 floppydrives load the program from drive 9 (with OS92 comfortable with LOAD). The disk with the programs for your modul i s in drive 8.
After some waiting (in this time the RAM will be erased) you will get the message that the directory is reading. The program searches all programs you have copied to the disk. Now it tries to read the "filedaten". The datas of all programs are stored in this file. Because it is your 1st run with this disk the filedatas aren't present. The program now detects the filedatas (start, end, length) from every file. But if you had have filedatas at disk, at first all programs erased from this list wich are not at disk. Then the program detects all datas from the programs wich are new at disk. So the scanning needs not so much time. But there is a problem: If you copy a new file to disk but it has the same name as an old file the datas for this file aren't detected. So select an other filename for the new file or erase the complete »filedaten«.
Explore the detection of the filedatas. Have all basicprograms the start-adress $1001? (If not, e.g. $4001 if stored in grahic-mode, you can later change this.) Are detected $4000 for all originalmodules? After the detection the new filedatas are write to disk.
5 The modulhead
Now you are asked in wich bank you need the modulhead. If you create an internal area you must always answer with 5. If you create an external expansion you have the possibilities a and f (depends from originalmodules or if you create only a 32kb modul). For the internal expansion now is loaded the modulhead »mk intern« from drive 9 (btw, 8). If you want use an other (selfmade) modulhead for the internal expansion then select an other bank. Now are all modulheads are shown and you can select your modulhead. All modulheads for the internal expansion must start with "mk i" in its name. So the program can detect that it is used in bank 5. For an external modul select the bank for the modulhead. Now all modulheads are shown. Select the modulhead you need (for sRAM-card or EPROM-expansion) with move the cursor with the cursor-keys over the name and press Return. All external modulheads starts with "mk e" in its name. For the example you select 5.
6 Start-message
Insert now the message wich is shown at the screen after reset and the modul was found. The modulhead shows you an example. You can edit it for your own use. The start-key for the internal expansion is always F1. If you create an external modul you can use every other F-key, but standard is F4. Don't forget to write this in this message. Before you confirm you inputs with Return check that all is right. After Return you can't back and must start again.
The next message is the headline from the moduldirectory. With a program-trick you can't leave the input-masks, but don't press Home twice.
If you create an external modul you are now asked for a SYS-adress for start the modul. The best is 3054. Only if you create 2 separatly 32kb-modules in bank a and f and you will use both modules together they must have different SYS-adresses. Otherwise you should use 3054. The "Modulgenerator" now modifies the modulhead with your adress.
Now you can select the F-Key to start you external modul. The best is to accept F4.
After this you get the information at wich adress the modultable starts. This depends from the length of the modulhead.
7 Reserve banks
Now you can reserve banks. Answer for the question with "n". You reserve banks you doesn't need for the modul. For an internal expansion you can reserve one or two banks if you want use an original modul wich needs a complete bank (like Script/Plus). You have copied this original-modules to side two of the disk (see below).
You must also reserve if you want use one small EPROM. When only one bank is activated, the program asks you for the end of the bank. $ffff (standard) is for use of the complete bank. $bfff is for a half bank (known as low-bank) and a 27128-EPROM, $9fff is for the small 2764-EPROMs.
8 Select the programs
Now you come in the selection-menu. You can select the programs from you disk you want store in the modul. Confirm the shown program. Then the list scrolls to the next program. With the cursorkeys you can scoll the list up and down. All selected programs are marked with a star (*). You can delete this programs with the Delete-key from the list. At the left side you can see the free space in the modul (without reserved banks). If you are ready then finish with ESC-key. If you work with only one floppy drive the modulheader is also shown in the list. Don't select it!
9 Further declarations
In this menu you determine the kind of the program, the startkey and the name of it in the moduldirectory. At first you must determine the programtype (Basicprogram, machinecodeprogram, program without start or modul at $4000). In most cases the program finds the right type. A program is a Basicprogram if the load-adress is $1001 or $4001. This program is started with RUN. But if it isn't a Basicprogram you can select an other type with scolling the list with cursor-keys and confirm with Return. For Basic-Programs the start is always set to $1001. That means, that you can't call a basic-program from the modul if the graphic-area is used. Clear the graphicarea before. But I haven't heart from problems. A modul at $4000 are burnfiles (such as hungarian monitor). In most cases this files have the load-adress $4000. Otherwise you can select the right filetype. Only for mc-programs and programs without start you must select the right type. Standard is mc-program.
With an original modul you come directly to the next program after this because it hasn't an start-key and doesn't need a name in the moduldirectory. For this you give the start-program for the original-modul the name of it. For our example the start-program for the original modul from the hungarian monitor get the name "hungarian monitor".
You can select an indivually start-key but you can't use Shift+x and Space because this keys are used for other functions.
The name for the moduldirectory can have more than 16 characters.
Note that all inputs are correct before you confirm with Return. You can't back after you pressed Return! If you make a mistake you must break the program an start again.
10 Load the programs
If you edited all programs you now asked for the bank for the original-modules if you have. For the hungarian monitor enter an "a", because this modul only runs in bank a. After this the loading of the programs starts. At first all original-modules are loaded, then the normal programs. The programs gives the banks automatically to the programs so that you don't loose a byte. If a program is to big for the rest space in a bank it will be continued to an other bank. The program stores the programs from the end of the last bank to the begin of the first bank (only if the modulheader is in bank 5 or a). You can follow the loading, because the program shows you the new names, the RAM-bank an the RAM-adress of the actual loaded program.
11 Store the complete burnfiles
Now you can decide on store the burnfiles or not. This will need much time, but you should do this. Turn now the disk.Enter a name for the burnfiles. The program expands the name with "bf0x;" where x stands for the bank. Now you will see the directory. If there are datas you need you should answer "Clear with format" with a "n". In this case the program ereases all files with "bf0x;" where x stands for used banks. Files for closed banks aren't erased. This is important if an original-modul using a complete bank is stored here by you (like Scrip/Plus). In the other case answer with "y", now the disk will be soft-format.
The storing of the files need much time. You can see wich file is actually saved.
12 Load in reserved bank
If a bank was reserved by you, now you can directly and automatically load one ore two orinal-modules from the disk-backside in the RAM.
13 How to continue with burnfiles
The burnfiles are standing in the RAM now, like the following table shows:
RAM-Bank | for (EP)ROM-Bank |
---|---|
After the Modulgenerator finished you can directly load the EPROM-burner-program or the sRAM-transfer-program.
In the program for the Synergy-EPROM-burner you can directly select the RAM-bank. For the internal-EPROM-expansion use one EPROM for each bank and burn in each 32kb-EPROM-bank one area.
In the sRAM-Transfer-program select "r" as source for the burnfiles. The program automatically uses the right RAM-bank.
14 Glossary
Modul: Program runs in one ore more EPROMs at adress $8000.
Modul: Hardware (cartridge) wich included the EPROMs.
sRAM-Card: Emulator for a modul with EPROMs. You can load the datas directly in the RAM and don't need an EPROM-burner.
Bank: RAM-bank or ROM-bank: A 256kb-plus/4 has 4 RAM-banks with the numbers 0 to 3. The plus/4 has 4 rom-banks named 0 (Basic/Kernal), 5 (internal), a and f (external). This hexadecimal value is the index for a stored value from $fdd0. In each ROM-bank you can use the area $8000-$fbff and $ff40-ffff. The other area is for I/O. OS96 and some original-modules uses the area from $ff40-$ffff.
Area: With the internal sRAM- or EPROM-expansion or the external sRAM-card you get more areas. An area is a combination of all banks (internal) or bank a and f (external). The modulheader controls a complete area. So you can use programs bigger than 32kb (this is one bank). You change the areas with the cursorkeys if the moduldirectory is shown. If you create modules with the "Modulgenerator" you should use for each area an own disk.
Modulgenerator: Program to create a complete modul (better: to create the burnfiles for a complete area).
Modulhead: Program at adress $8000 anounces the modul to the operating system, gives the text to the F-key, controlls the moduldirectory, copies the datas from modul to the RAM, starts external modules (if you have an internal expansion).
Modultable: Includs all datas of each program in the modul: startadress in the modul, startbank, endadress in the modul (or linkadress), adress in RAM, programtype etc.
Burnfile: File with load-adress $4000 for the EPROMer or sRAM-transfer-program. Each ROM-bank has its own burnfile.
Originalmodul: Right name is "burnfile of an original-modul", means a burnfile of an external created modul like games, Script/Plus etc. You need a special starter-program for use with the moduldirectory and you must make some modifications (delete the CBM -mark). But you can also use it as it is.
15 Copyrights
The program "MODULGENERATOR" is programed by me. I have the copyright for it. It's forbidden to make changes or use code for own programs. If you have comments then please contact me. Please don't violate the copyright. It was a hard work to program it an d write this instruction manual.
The modulheaders are freeware. You can write your own modulheaders. See the sourcecodes and descriptions for more informations.
16 Service
If you have problems, questions or if you find an error then please contact me.
Solder/Synergy
c/o Christian Schäffner
Ostendorf 10
38822 Groß Quenstedt
Germany.
e-mail: solder@gmx.net
Groß Quenstedt 1993-1999