01 June 1990

The content below is simply a reformatting of text as published decades ago by 9640 NEWS. The opinions and views expressed are not my (Jedimatt42) own. The content is published here to preserve and make accessible the technical data contained within.

Taken from the disk distributions archived at http://ftp.whtech.com/Geneve/9640 News disks v1-3/pc99 disks/

-README

Well folks, it's finally here. I am sorry it took so long, but under the TEXT-ARK file (see NEWS6), a further explanation is available. I hope you will enjoy this issue. This issue contains quite a bit of MDOS source code (and GPL 80 column code) and quite a few utilities. Two Abasic programs are available (use V2.99A). Also, a WINDOW's driver for single tasks is present. I haven't fully tested the single task driver, but should provide for future WINDOW's programs that I and others develop. If it does have bugs (driver not fully tested), I will release to Networks and here the updated version. Also HIMIX3 is available. A program from Argentina providing quite a bit of graphics (you draw) and the possibility of printing 160 columns of text per line on your printer.

There is even a utility, depending upon your system configuration, that can speed some computer applications up by up to 25 %. Anyways, thanks for your support, and look forward to more programs soon.

Beery Miller

-README2

I went through checking out all of the programs and utilities and have discovered the WIN-DRIVE program has a problem when using with BOXER. It previously tested o.k., but somewhere a glitch appeared in the file and I need to redevelop the source code. BOXER still works fine with WINDOWS, it is just that the quick driver I developed wasn't properly backed up prior to my move and I need to recreate the driver. Next issue, a 1 task Driver will be released to support any WINDOW's developed applications. Sorry for the 'inconvenience'..... Beery

NEWS6

9640 NEWS

Vol 2, #1

Well, it looks like 9640 News has survived the first round of issues and is looking forward to pretty good support for Volume #2. Several good programs are being developed with either release in 9640 News, or possibly released as a commercial product of 9640 News. In the coming issues, you will begin to see some exceptional utilities being developed for WINDOWS and so forth when all subscribers saw a pre-release copy of WINDOWS in the last issue.

PLEASE TAKE NOTICE. I HAVE A NEW ADDRESS AS I HAVE JUST MOVED.

For several reasons (mostly postal workers cramming my small mailbox), I have set up a PO Box to handle ALL computer related mail. It is as follows:

      Beery Miller / 9640 News
      P.O. Box 752465
      Memphis, TN 38175-2465

With the luck of the postal service that I have had, I would not guarantee that mail would be forwarded properly if sent to my old address. For those wanting to know, I have purchased a new house and now have the capabilities of having my own 'office room' to myself. I can still be reached at 901-368-1169 as Bell South allowed me to keep my same phone number (at a modest fee of $1 per month). I would also like at this time to say in advance when the next issue of 9640 NEWS might appear. Look for it definitely before the Chicago Fair, and hopefully much much sooner. The reason I say that it may be a little bit longer than normal compared to delivery of Volume #1 is of several reasons listed below.

1) Just moved, and need to finish two rooms that were uncompleted upstairs of my new house. Unless I can get a reasonable offer, I am going to do the work myself.

2) My wife went to day-shift and now I can spend more time with my wife in the evenings, whereas before she worked nights and I had extensive computer time available.

3) New software arriving a little slower, and 'news' of fixes, etc have either been answered, or the later versions of the operating system have been 'debugged'.

I hope you all can understand. I will continue to deliver all issues as promised, and I also want to make each issue worthy of your acceptance. Now, you can enjoy this issue and those to follow.

Now on to the News and Reviews......

My biggest project has been finally released as most subscribers learned thru postcards if you were located in the U.S. or Canada. It was called WINDOWS and has made numerous leaps and bounds since the pre-release copy. It has already been tested running 6 copies of ABASIC at the same time, and at the present, has been updated to V1.01 (along with a mod in the Driver). The update was necessary (but not required) as a table in MDOS that uses the drive letter G as an assignment caused problems when the driver was used. If you never referenced a drive by the letter G, you never saw the problem. If you wish to receive the update, mail your original disk (you may make a backup copy of your original) to me with $2.00 return postage (and mail to P.O. Box 752465, Memphis, TN 38175-2465, please mail all correspondence to this new address to prevent postal errors, and to prevent crimped diskettes), and I will send a updated copy out. Unless some unknown bug was to develop in the driver again, the driver included with WINDOWS (of Version 1.01) should be setting a standard for all to follow (I would highly recommend that everyone that has already purchased WINDOWS to update to Version 1.01 as the mouse driver with Version 1.00 will most likely NOT be compatible with mouse driver software). Chris Bobbitt and myself have been discussing the possible inclusion of a driver with the Asgard Mouse, but at present, everything is still in the air. If you want to see a mouse driver for the Asgard Mouse, you must 'suggest' to Chris Bobbitt that you want one and Bruce and I will do what we can in helping the Asgard Mouse enter a new dimension on the Geneve / MDOS side.

I should also mention that WINDOWS has had several other enhancements over those previously demonstrated in the pre-release copy. Keyboard interface to the pointer has now been activated (for those with good mouse traps...... no mice). WINDOWS also has the support of toggling to MDOS and WINDOWS at will. You no longer need to reboot WINDOWS to go to MDOS to perform some mundane activity. Many many other features have been either improved or added since the last version. I should also mention that the pre-release version of WINDOWS will most likely not work with any advanced WINDOW programs. Several supporting sections of code that were transparent in the new XOP were debugged, along with support added for those users with only 40 column monitors (thanks Clint Pulley for the suggestion).

If you have questions regarding WINDOWS, feel free to write, or call me here in Memphis, Tennessee. I am in the process of moving down the road a couple of miles, so you will need to use Information to locate my phone number (1-901-555-1212). I welcome any calls, preferably Monday thru Thursday, 7 pm to 10 pm EST. Unfortunately, I am unable to accept collect calls or to return them. If you call earlier than 7pm, you will probably reach an answering machine as I disconnect it when I get home.

A product announcement of WINDOWS (and other programs) will appear under a section called ADS and will contain all necessary ordering information. I should also like to say, that with the advent of WINDOWS, programs that I write will be WINDOWS compatible. In the very near future, I will be releasing a programmer's package consisting of object code utilities that can be assembled with your own source code to permit toggling to MDOS and back from your program, code to handle keyboard input if you have WINDOWS installed or not, code to handle text displays if you have WINDOWS installed or not, and a host of other utilities. These object libraries are intended for the programmer to provide support for those WINDOWS and for those less fortunate that have not purchased WINDOWS yet. For those that have, you will be able to multi-task (and/or see better utilities being developed). Please write if you are interested in this package as I will send out a postcard to those interested when it is ready.

I have developed a short utility (and included the source code) to a program that will show some amazing results to some people. Those people that have added the extra 32K of fast memory to the Geneve board will see up to a 25 % increase in speed of the Geneve operating system. On speed trials of printing text to the screen with the TYPE command from MDOS (this only works from MDOS), a file that would have taken 186 seconds to be displayed, was displayed in around 135 seconds. What did I do? I developed a short utility that MOVES MDOS around in Memory to the 0-Wait memory (actually, only the XOP's) that will now run faster. The biggest visible difference will be the VDP speed that can be seen immediately. If you do not have the 32K fast memory, then you may/may not see any difference in speed (note, this utility is not compatible with V1.00 of WINDOWS, but is compatible with V1.01). This utility has it's advantages and disadvantages. Since the tables have all been moved, about 80K of memory has been used for this increase in speed. Also, since the tables have been moved (and they were never intended too), attempting a second warm boot (sometimes one warm reboot), the system will freeze and require a cold reboot. This utility was developed by myself primarily for one purpose...to see if the MEMEX developed by Ron Walters and Bud Mills would provide much improvement when 0 wait state is enabled. I can report back now that I can see already a 25 percent increase in speed, and most of my code is still in 1 wait state. Rough calculations suggest to me that a full 0 wait system will cut the running time of programs down to nearly half unless they are very disk intensive. I already have the 504K Memex, and when Bud Mills releases the 0 wait mods, mine will be one of the first shipped. I highly recommend the MEMEX to every individual. I have had several subscribers write and say that they purchased the MEMEX from my review and that they were more than pleased with the product. Look for Bud Mills ad in the ADS section as I suspect it will be ready by the time this newsletter goes out (there may also be a full review in this issue if I receive mine too).

Well, what else has happened on the front. Tom Freeman has just released an update to his BUGGER for the Geneve, now compatible in both 4A and MDOS mode. Tom's BUGGER, is very similar to the DEBUG we saw available for the 4A many years ago, with many many improvements. One of the biggest improvements, is that the BUGGER now uses a terminal to talk to the Geneve so that no screen displays are interrupted or disturbed and permits one to monitor each step of the running program. This is extremely handy for debugging those graphic programs that require pixel control or control of specific routines that normally could have become corrupted.

Tom also has another available, for the Geneve and the 4A user. A program called HardBack that permits one to backup one hard drive to another larger hard drive. Typical backup times have been about 40 minutes for 10 megs. This has been quite an achievement on Tom's part to make it both 4A and 9640 compatible due to the Geneve's HFDC problems that exist while in GPL mode. Way to go Tom!!!

While we are on the topic of programs that make use of the Geneve in one way or the other, I should mention Spell-It by Asgard Software. Of spelling checkers for the TI community, this ranks as number one that is available, and is compatible with the Geneve.... mostly. The Myarc HFDC still has problems in GPL mode, and Spell-It does locate some of those problems. I have found that if I copy my Spell-It files to a RAMDISK (Horizon, or internal), then run Spell-It, I have no problems. It adds a little more time, but it should be something easily worked out with a new update to the operating system, as I understand their is no problem with it on a 4A. Contact Asgard Software for more information. (P.S., it located a number of mistakes in my news file and I am very thankful for the development of the program, plus it also runs in 80 columns).

This year, I have been fortunate enough to meet quite a few of my subscribers and fellow 9640'ers having attended the TI Fest West, the Lima Conference, TICOFF, and last November the Chicago Fair (does anyone know if a date has been set for it this year, or if it will go on?). Having been across the country, I have been able to see some software being developed for the 9640 that has not been released to date, and to also to hear about projects under development. I will make a classification for the following software as one of the following two categories:

Category 1 - Working software/hardware close to release

1) My-Term, Lou Phillips demonstrated this program to me at TICOFF and appears to be a very impressive program. It runs directly from MDOS and seemed to be working, though it was not tested with a modem. No release date was given, as Lou did say it still had some bugs to be worked out. From my understanding, the author of the program is the same person that started to do GEME and returned the code back to Myarc (unfortunately, I don't remember the author's name). I should iterate that this is a program someone 'apparently' is writing with Myarc's graces and would sometime be sold by Myarc, but I have no additional information.

2) DISK UTILITIES, by John Birdwell, is very much a reality and is close approaching a release date. Recent conversations with John suggest it will 'currently' be compatible with version 1.14 of MDOS and will require an update to MDOS to be workable in a hard drive enviroment. I have personally tested a HFDC sector editor which appears to be a derivative from his DISK UTILITIES and it was very very nice. It should also be noted that it will be 40/80 column compatible.

3) TRIAD 9640, a program written for the GPL side that I have seen once in a private demonstration with Peter Hoddie, and can attest that it will most likely replace TELCO and My-Word for many users. Many, many new features will be available as the author is grabbing all the available memory he can get his hands on for this program. The third feature is a disk manager, very similar to DM1000 supporting both the floppy and hard drive enviroment.

Category 2 - Projects being worked on, but may or may not become available.

1) C Compiler, yep, that's it, another one, by a different author. I am not going to publicly say who the author is, but I finally located a person working on a version that could when finished compile Full C code and transport it to the Geneve. If the author wants to step forward, please just say so. Originally, I was lead to believe Paul Charlton or Peter Hoddie had this program in the works, but it is not them, but another individual that does have the potential as I have seen some of his work.

2) MDOS Harddrive Backup Utility, by Al Beard has had some work done, using I would assume 9640 Fortran (now up to V4.3, it's a must buy program if you are a structured programmer) that has a ways to go. Al even hinted at WINDOWS compatibility, so I have my fingers crossed.

3) VIDEO RAM CARD, by Ron Walters, which 'could' provide several megabytes of video ram to the Geneve with the possibility of viewing several thousand (1000) frames a second. He is toying with the idea now, but if he sits down with it, he said it could be completed in a month.

4) VIDEO DIGITIZER, by Ron Walters, which does exists and works as a prototype card. After the development of the MEMEX and it's completion, Ron was going to decrease the size of the card so that it could fit in a normal slot by developing some PALS that would replace many of the many chips that it would require. Availability of the card on a commercial basis would be dependent upon a large enough demand from Geneve owners. With a recent conversation, Ron said he had fully turned over the MEMEX 2 meg card to Bud and had started the redesign of the card to incorporate additional features. Hardware wise, I would say that in 2 months (not Myarc time), he should have the design and running board working (he's pretty good at these kind of things).

I would like to take this time to say a few words on Ron's behalf. I have never met the man, only chatted with him on the phone and can say he knows his stuff. Having met several of his close friends, they say he is the FOREMOST authority in video imaging in the WORLD. Ron owns the patents and developed the necessary circuitry that enabled the CAT SCAN units to work as they do. If Ron had not been around, No CAT SCAN units would have ever been sold. Ron has an extensive background in mathematics and have been told that we may see some higher math evolve from some of his 'transformations, theories, etc'. I have also been told that of all the computers that are available, the GENEVE is his favorite, and easiest (Myarc may have made some mistakes in their hardware, and are slow in their software development, but their design was good). Ron has bought a IBM 386 and software, so that he could custom design chips for the 9640 (and his other projects). Due to a previous health condition several years ago (Legionaire's disease), he has Cronic Fatique Syndrome, which means he tires very easily with excitement (thus we don't see him at TI Faires) and has his ups/downs more often than many other people. What Ron can do in an hour of work, most people in his field would take weeks. His foresight into problems and diagnosis is remarkable. Most of Ron's developments have been really for his own needs. He needed more Geneve memory, so he built it. He needed the Geneve faster, he modified it. He needed video digitization, he made it. He needed more video RAM, he's working on it. Ron has even mentioned that if MDOS was modified slightly, the Geneve could support up to 512 Megabytes of ram (don't get his confused with 512 K ram, this is 1000 times more memory), but he doesn't need that much memory.......... yet... If one sat down and thought about it, he could possibly have the capability to record a 111 hour movie if each frame occupied 64K of video information (at 15 to 20 frames per second). Now that is talking memory.

Now that I have digressed, it's time to continue, but if you have the time, applaud his efforts. He has many achievements behind him, and many many more to come.

5) Thermonuclear War - Let's put it this way, from what I have picked up in my mail, I should be receiving a copy pretty soon. This should be a program all to it's own and make no guarantees as to what it can/can't do yet. Watch for an announcement in next issue. I received it in a beta version right before mailing. One word for it.... AWESOME!!

6) My-Term - A program from the author of the unfinished GEME that looked very impressive when Lou demonstrated it to me at the TICOFF. This was definitely a MDOS program and had many advanced features. I was unfortunately not able to ascertain that file transfers, etc were functional, or that it could handle the modem correctly, but what was shown, pop down menu's, toggling to MDOS (similar to WINDOWS), etc seemed pretty impressive.

Category 3 - Wish List of Many, but no known author working on it's development

1) MDOS Un/Ark Archiver - The foremost authority on Archivers, Barry Boone, has hinted if he had the time, but most likely will keep his interests in the 4A community, although we have been blessed with a few of his programs.

2) MDOS Press - Only dreams of a few 'remaining' believers (You may want to seriously consider The Printer's Apprentice by McCann Software as it is very impressive and could handle most of your needs).

3) TI-Base (80 Columns) - This is one of the biggest wish lists of many many people. If an 80 column version (MDOS or 4A) were to become available, I would suggest that EVERY GENEVE owner rush out and buy a copy (even 40 columns is good, but 80 is better and could produce more sales in the long haul).

4) GEME - Myarc will probably (99 %) never release this program. The source code was minimal that was written, but had potential (my WINDOWS 9640 should take it's place (grin)) as Myarc knew the machine better than anyone else.

5) My-Pro-Word - Never even started by Myarc.

Checking the software list of Freeware and Public domain programs has been very small. Most of the 'new' programs have either been patches to various operating systems, or programs written by Clint Pulley. Let's start with some of Clint's programs and then I will follow up with the various patches.

Clint's biggest program is QDE V2.1, that now permits one to work on two documents at the same time (toggling between the two in memory) and the ability to invoke to a limited degree the Command Line Interpreter (very much like WINDOWS V1.0+ can do, except a little more limited).

Clint also has a couple of other programs. The first is a game call COREWAR, and I must say it takes a lot of strategy to play this game. It is nice seeing programs being ported over, but unfortunately for this type of game, (it requires two people), I don't have anyone in my area that could play and/or challenge.

Clint also has another utility, that follows a name of DIFF/ARK that permits one from MDOS to compare text files and locate differences that may exist in various context. This is more than a sector compare, as this program can discriminate between an added line(s) and not record differences if line 80 (file 1) did not match line 80 (file 2), but matched line 84 (file 2). Quite an achievement.

Several other patches have been made available. Three patches are available that permit the following.

FIXRAMDISK (author Jeff White) permits one to utilize more memory than what MDOS allocates when you partition a RAMDISK from an AUTOEXEC file. Gains may be from 2 to 32 (?) sectors, depending upon your ramdisk size, and/or memory expansion capabilities.

SETDSK V1.1 (author Bruce Hellstrom) permits one to use 80 track diskettes with the CorComp and Myarc Disk Controllers, regardless if you don't have the 80 track eproms. Note: Version 1.0 was only compatible with one of the two different versions of 0.96H and was not compatible with version 0.97. Version 1.1 is compatible with all versions of MDOS.

HFDC Patch (author Rejean Felton, assistance by Bruce Hellstrom and Jeff White), permits the up/downloading to the HFDC when used as a floppy controller (highly suggested if using the HFDC for floppy support to use Version 0.97H) and to also use Archiver on the floppy.

FONTDOS (author John Johnson), allows one to load their selective font into MDOS for the characters (CHARA1 file).

Now, here's something that may explain why some things have been, a personal opinion..........

Let me first say that I have no affiliation with Myarc or any of it's representatives. Now that I have said that, let me say that I am satisfied with my Geneve.

What you are about to read has only been communicated in 'small' circles until recently when Lou Phillips 'publicly' discussed it at the TICOFF and should explain why Myarc (and Lou Phillips) have had numerous ups and downs.

We are all human and many of us must follow our conscious, to satisfy our personal dreams. Their was this couple, in 1984 that wanted a child. Unfortunately, they were unable to conceive a child that they both wanted very very much. After accepting that they could not conceive their own child, they sought the next step,.... adoption. Six years passed, promises being broken, the 'baby' room being prepared anew on each occasion, only to have a broken heart. All during this time, people had their expectatins of Myarc running slow or dragging their feet. This couple was Lou Phillips and his wife. Near the beginning of June, speaking with Lou at his home (via phone) and having learned at the TICOFF of his dreams and possible adoption, Lou said his wife was in Brazil trying to make the final arrangements and should be home shortly. It is the 3rd of July as I write this, and I don't know if his dream was fullfilled yet, but I have my fingers crossed for Lou and his wife.

Speaking for myself, I think of only one thing when I think of Lou Phillips ...... he is only human ....... like everyone else. There comes a time when a person must fullfill that dream or do everything in their means to satisfy it, or they don't feel that sense of personal satisfaction. We all (or most of us) have been down that road at one time or another. You now know Lou's road, and perhaps when you become frustrated over something not working, or just so so, you will remember some words he has told me, "I am trying the best I can." If something doesn't get mailed to you as promised, or returned as promptly, remember Myarc is not much more than a one man outfit (not more than 3 or 4, excluding programmers at remote locations).

These were my opinions, and don't represent those of anyone else. This was For Your Information.

NEWS IN THE FREEWARE AREA

As I search my list to locate new programs that have emerged from the last issue, one program may interest a few (it interested me). That was SMALLTALK, a BBS running from MDOS mode on the 9640. It is a program that included the source code (modified from the respective 4A source code) with a simple message base capability and XMODEM up/downloading. I did not fully test the board with another user online, but it appeared to be functional, despite what 'may' have been some memory management coding problems in MDOS. This should signal to others, that MDOS could very well support an extremely nice BBS program as the foundation has been laid now with the XMODEM calls, message base, and RS232 problems worked out (I am assuming the routines were bug-less).

Memtest, by Ron Walters, has been update to Version 1.1 with the following enhancements. Ron has improved the page mapping report, and MEMTEST will now identify page>BC as a speech card page and bypass what appears to be lockups on the Geneve external Bus so that if the Rave Speech is present, no hangup occurs. Myself, I use this program quite a bit to see how some of my memory mapping routines are laid out and stored. Any programmer should have this program if they are doing memory intensive programming.

ANOTHER FREEWARE AUTHOR ENTERS THE COMMERCIAL MARKET

Well, many of you have seen the progress of XHI in the last issues of 9640 News, and in issue number 5, you also saw a program called MAL, that was being written by the same author that was a 'My-Art' clone, but ran from GPL mode and supported 80 column devices. Guess what? The author of the program (XHI) received so little feedback from U.S. users that he felt compelled to go the commercial route when Asgard Software contacted him and set up an agreement. I can't blame the man, if it were me, and I spent an extensive amout of time (as I did with WINDOWS, and will continue to do so), I think I would need to see some type of $$$ reward for my efforts. I urge all subscribers and non subscribers that a few dollars in the mail, a letter, or something to thank them for their efforts is very much needed when someone writes a program. It is many times the difference between Freeware or Commercial software and/or if they decide to continue to write software for the computer (and or make it available to others).

As it is now, the My-Art clone, renamed to YAPP is a SUPERB program compared to My-Art (and I have something like a versin .48). Mouse access to filenames (even on the hard drive) is available, along with other enhancements. Unfortunately, the author has requested that I not make any updates to MAL/YAPP available in any future issues of 9640 News. Please support the authors of programs in 9640 News, if it be letters or $$$. Something is better than nothing. (P.S. this is not related here, but let me make a suggestion that I have heard many authors 'beef' about. If you are using a freeware program, don't request modifications/changes/enhancements without some kind of gratuity. Most authors will 'file' your request away and never give it a second thought. I have seen and heard this happen time and time again).

CONTEST

Well, the few people that included software in the last issue of 9640 News, must still be waiting for the decision of the contest on the best program. To date, I have received three votes (Note: none of these were from the author of their respective program).

They were:

      Editor (from MDOS)   1 vote
      PTU    (from GPL)    1 vote
      MAL    (from GPL)    1 vote

In about a 5 month span, this has been long enough. I have decided to do the following and make all three authors a winner, with a free copy of WINDOWS 9640. Since the monitor would have had current compatibility problems in Europe, I will hold on to it for 'hopefully' a more responsive issue. I hope all three authors like the following arrangement since a single tie-breaker vote would have doubled someone's lead.

A New HFDC in the works

A new company is evolving that has reportedly developed a new hard and floppy disk controller. Geneve owners should be extremely careful before they consider purchasing such a card (flyers should be reaching user groups soon) as MDOS may not support a 3rd party HFDC, especially on the floppy side of the controller. This is not to say that it won't support it (MDOS may be versatile enough to use it), but it is very chancy at present (and future on the Geneve). There should be no problems on the 4A side of the system as it should work as advertised ( I spoke with the designer/author of the card at the LIMA Conference, and it was skepticism as to it's compatibility with the 9640, now or later).

What about Myarc's HFDC?

Presently, Myarc is having problems delivering the HFDC to distributors. They had one batch of cards 100+ that had numerous defects from the manufacture that failed to run Quality control checks on the cards, so I can imagine this is part of the problem. I do know that Jeff Guide of TI Net services said they were going to individually test each card before shipping to make sure there weren't any unexpected problems before the customer received it. At present, nobody knows when the cards will be delivered. Your guess is as good as mine.

What's the Latest Software for the Geneve?

Currently the latest versions of the operating system is Version 0.97H for MDOS/HFDC users, and Version 1.14F for floppy users. GPL remains at Version 1.04. My-Word remains at Version 1.22 (I still use Version 1.21 as the official Myarc Version) and MDM5 continues to hold at V1.29.

UTILITIES

Some of the behind the screen work I have been doing, and will appear in the next issue(s) of 9640 News (and elsewhere) have been related to the MEMEX 2 meg expansion.

I have written several utilitiess for the 2 meg card that have been in the 'blind'. All of these utilities were written to isolate MDOS problems that could occur when the full 2 megs of memory were added to the Geneve and set to run at 0 wait state. I would like to say that the MEMEX is bug-less, as the utilities were written mostly to 'identify' what could happen. Here is what I have learned and had a helping had in doing.

With the full 2 meg MEMEX mod, you will receive a modified V0.98 eprom that by-passes a GENEVE 'bug' with this much memory that allows you to boot the system at full 0 wait system (the operating system is also located in 0 wait memory).

I also wrote another utility to 'test' the speed of the potential 0 wait operating system, and the utility will be released in the next issue of 9640 News (unless you see notice elsewhere). What this little utility can/will do, is for systems that have a minimal 32K added fast ram, permit the operating system to run faster. This is done by moving portions of the operating system around. I can report already that speed increases of 25 % are easily gained. The reason for holding out on this utility till the next issue has been the discovery of an operating system 'bug' that did not account for this new memory if the full system was not 0 wait. What happened, was that MDOS thought some memory was fast memory when it was actually slow, and vice versa, so the program did not show increases in speed in certain system configurations. This will be solved in the 'final' program so that even someone with no memory expansion, to someone with up to a 1.5 meg expansion system can benefit. The operating system causes no bugs to appear with any program, it just doesn't know the speed that it is running correctly, and has NO affect on software.

I have also done some other work on working with TIMODE and the GPL Interpreter to make it more flexible. As it is, it is NOT flexible in the GPL segment of the GPL Interpreter with it's memory mapping. For most intrinsic purposes, consider those GPL pages used to permanent pages and can not be remapped. If programmers want further explanation, feel free to contact me, as it could be an article in itself detailing some of the internal structure of the TIMODE segment.

I would like to point out that thru the limitations of the GPL Interpreter and Myarc's gate array mapping scheme, the MEMEX Expansion (above 504K expansion cards), will have a TURBO switch(s) available. These switches (which can mount onto the front of the PEB with velcro tape) will permit one to toggle 0/1 wait state and TIMODE/RESET/MDOS thru discussions with Ron Walters and Bud Mills. This is due to a restrictive operating system/gate array/GPL Interpreter that did not ever forsee 2 megs of memory on a GENEVE actually working.

I would like to point out that I am actively pursuing this extra memory for several utilities that will utilize and require it to be present. Those utilities I develop for myself will be also released, as by next issue, I hope to finally remove my CorComp disk controller for good and not rely on Hyper Copy for my newsletter copying. The utility I have in mind, would allow one to read in an entire disk (SS/SD thru DS/QD) and copy out to unformatted disks in the same format repeatedly non-stop. Similar to HyperCopy, but would be disk controller non-specific which would have a slightly slower disk copying speed, but would work with the HFDC. This would be WINDOWS compatible.

BUG FIX FOR MDOS 0.97H

A bug fix for MDOS Version 0.97H only that corrects the mode 40/80 problem has now been fixed by Barry Boone. Using a sector editor, search for the following string

      0200 1A00 0420 2AE2 06A0 4590 4292 045B

and replace with

      0200 1A00 0420 2AE2 06A0 4590 4292 1030

That solves the problem and in source code format, does the following. MOV @SAVRTN,R11 B *R11 instead of just a B *R11.

Apparently Myarc in their Video XOP's, corrupted some return registers that was not discovered earlier in the debugging state.

      -------------------------------------------------------------------
      Note: the following message was taken from the Delphi Message base
      and was unaltered.  The fix listed below comes from Rejean Felton of
      Canada for the following patch to MDOS Version 0.97H (ONLY!!) and
      provides a temporary solution to the bug that has been seen with TPA
      and other programs with printing displays from MDOS.  Thanks Rejean!!
      -------------------------------------------------------------------

TPA BUG FIX

By Rejean Felton

After a discussion tonight with Paul Charlton, we've finally manage to find why TPA is not printing correctly with M-Dos 0.97H. Seems that the program doesn't set bit 7 of the flag byte at open time. I've been able to have TPA print correctly after changing 0.97H code to 0.96H code but this is not the way M-Dos is supposed to work. This modification to M-Dos works but also prevent M-Dos to work as it's supposed to. However, it doesn't create any bugs so, for those who are interested, here's what should be done and where in order to have TPA works correctly.

On page >0C, starting at address >0188, you currently have the following sequence:

      >D020 >A1CE >1304 >D020 >A205 >1101 >101F >06A0 >63C6 >C160 >6014 
      >C165 >6054

If you replace it with:

      >06A0 >63C6 >C160 >6014 >C165 >6054 >D020 >A1CE >1304 >D020 >A205
      >1101 >1019 

It'll makes TPA print correctly but M-Dos won't take care ofbit 7 of the flag byte. I guess there should be a way to patch TPA so it'll work with any M-Dos version but I don't know where it should be located.

If someone's in connection with Mike McCann, it would be a good idea to provide him this information so he can correct TPA.

Hope it'll be usefull to someone. Rejean Felton

[Editor's Note: Recent conversations on DELPHI have indicated that there have been various 'documentations' on this bit 7. Some documents have eluded that it should be set, some say just the opposite. This lead to the TPA 'problem' experienced by many. This also brings up another point that Paul Charlton has repeated time and time again, and I will 're-iterate' it again for those that have not seen his comments. When you think you have 'located' a bug, find a way to reproduce it reliably. When you have done this, then remove ALL patches from your operating system (and don't use a modified operating system) and provide a step by step approach from a cold boot on how to reproduce the system error. Include a printout of your AUTOEXEC file as you use it, and include a detailed list of all installed equipment in your Geneve system with manufacturers and eprom version numbers. If you have developed a program that contains the bug, include it and send it to Paul Charlton. If you developed TPA, send Paul TPA, if you developed WINDOWS 9640, send Paul WINDOWS 9640. He must be able to reproduce the problem. In the case of TPA, Paul did not have TPA and all debugging on his part (hours upon hours) were 'wasted' as he came to learn it was from TPA, and not MDOS.]

TI Net Services NEWS announcement

TI Net Services with Jim Horn and Jeff Guide have just made an official release that they are returning all orders received for the HFDC. Myarc failed to attempt any contact with TI-Net Services in the past month and continued to blame the slow release on "No Cables". HFDC's are still available with Triton if I am not mistaken, but at a higher rate.

Caution with Myarc (not TI Net Services) should be emphasized at this point. If they don't produce the HFDC's shortly (let's say by the Chicago Fair), then they were not able to even 'financially' cover production costs of the HFDC and are in more serious trouble than I even suspected. Right now, I am saying 'BE CAREFUL' before you take that next step. Their 'lack of production capability' causes concern in my mind.

QUESTIONS

  1. (From Martin Zeddies) Do you know a way to make a reset of the computer system with "C99" ? We are searching a way to jump back to the GENEVE title screen (the MYARC-swan) with an C-command.

Reply: As far as I know, some assembly code would be required. You would need to make sure your program is NOT running in the first page of ram in the memory map at >F110 and then load the first page of the EPROM into >F110 and do a BLWP @0

No error checking is provided to see if your program lies in the first page

 MOVB   @HEXF8,@>F110
 BLWP   @0

I think the page is >F8 and I 'think' this will work. It is untested.

  1. (From Martin Zeddies) Do you know a way how we can check the pressing of the FCTN,CRTL and SHIFT (left and right one separate)keys of the GENEVE keyboard ? Also we are looking for a way to check the NUMLOCK,SYS REQ,SCROLL LOCK,END and HOME key on the keyboard.

It is extremely difficult to tell you in a short message how to do this. My suggestion to you is to locate a copy of Bruce Hellstrom's memory viewer/editor for MDOS and page into memory the first >20 pages and look at only the upper >200 bytes. When you have this program running, in one of the pages in the upper >200 bytes you can type while the program is running and see (PHYSICALLY), the keys being entered into the buffer. To this, the keys are returned in their 'raw code' format with a press/release code with it. There are obvious pointers when you locate the page with Bruce's program being updated and you can trace the keys on the board and by using a pointer trace the keys location. It is extremely difficult, but Bruce did deduce such a method that I did implemented within WINDOWS 9640. A followup article could occur (extremely long) to explain it in more detail if someone desires. -Editor

  1. (From Martin Zeddies) The trigonometric functions of "c99" works but the do not consider the sign of the mathematical function in the value of the angle. How can help ?

I have no idea. Sorry I couldn't help on this one. -Editor

  1. (From Martin Zeddies) In the wide world of IBM-systems you can use various commands off the DOS inside the "C-language" because there exist special libraries for this purpose.How can give us the needed information to write libraries to do this on the GENEVE also ? Have anyone such libraries may be only to test if this is possible ?

Martin, there is only one 'utility' with some tricky code (The MDOS Command line Intrepeter) that I know of that can be implemented from another program. This is extremely difficult and requires 50+ lines of code and some proper page mapping. An alternate route of using the CLI, is one I published in the last issue in a 'multi-tasking' state. Simply require your program to wait for a 'weird' key press before it is implement.

Actually, MDOS has many many libraries to it. The XOP's are equivalent to the libraries in the IBM world and the documentation is widely available on those utilities. - Editor

  1. (From Martin Zeddies) Do you know the step we have to observe when we like to write a c-program which we start in MDOS and which need parameter to run? We find no way because the XOP-command of the 9995-CPU only allow to start programs with- out parameter transfer. But there must be a way to pass parameter over to the C-program because Clint-Pulleys ROFF file print program can work with parameters in the "MDOS command call line".

Look in Mike Dodd's articles in Micropendium about 1 - 2 years ago and a detailed section of code was provided that allowed for file parameters to be passed. Actually, in C-Code, it is identical (same c code) in the way it is implemented from MicroSoft C. The same code will pull the parameters from the command line interpreter. - Editor

6) (From Martin Zeddies) The newest version of DISKUTILIES I know is version 4.12 of the program and this one and all the others before this one can not loaded with EXEC when my own experience.

So Berry do you know a an MDOS version of DISK UTILITIES or version of this program which could be load with EXEC ?

Martin, there does exist an update to DSKU released that does not use the GPL calls that mess up EXEC. Myself, on the occasion I have used it, version 4.0a is what I have and it seems not to have problems. Don't know what to say, as most functions should be compatible, if not all in your version. - Editor

7) (from Martin Zeddies) On the board of the HFDC-Card some hardware freaks found IC-chips which they do not know.The overprintings of this chips named them:

                     SMC   9216
                     SMC   9223
                     SMC   9226
                     SMC   9234

Do you know what chips that are ? Which electronic function the have ?

Afraid I don't know the answers? Anyone else? - Editor

8) (From Martin Zeddies) Do you know a firm in the USA where we can order spare parts for the MYARC GENEVE 9640 and the HFDC controller card.It is much expensive to send the cards by airmail back to MYARC for repair.I think it is much cheaper to order the spare parts you need to make the repair by myself.

I don't know of anyone other than Myarc making repairs, other than to replace heat sinks that may have went bad that local users have done themselves.

9) (From Martin Zeddies) Do you know anyone who have hardware informations about the GENEVE and the chips on it board ? Do you know anyone who have draw a circuit diagram of the GENEVE ?

Martin, the answer to that is Yes, I do know of someone, but unfortunately they could probably not release the info for propietary reasons (they had some help). I doubt 'much' help would be gained in a circuit diagram as the gate array is the key to EVERYTHING and nobody I know of is in a position to release that info.

10) (From Martin Zeddies) Do you know a way to use the following periphery-cards in the GENEVE ?

  512 RAM-Disk of Corcomp                      NO
  Triple Tech-Card of Corcomp       I thought speech/buffer were working?
  128K RAM-Disk of Foundation                  NO
  USCD-Pascal-Card of Texas Instruments        NO

11) (From Martin Zeddies) Surely you know that the memory area between >F100 and >F107 is used,while the GENEVE runs under MDOS, as the keyboard interface to the system. Do you have nearer informations about the memory locations of this area ?

The only information I learned from this area was from Bruce Hellstrom's Memory Viewer which reported raw key codes, but even knowing what I knew about the operating system, I could make no use for the keyboard from this area.

12) (From Martin Zeddies) In the last week I recieved a letter of an GENEVE-USER from Germany which contains a set of MYWORD-EXTERNAL informaations by J.P.Hoodie.In the des- cription of the file stands that the EXTERNALs will work with MY-WORD Version 1.21 and higher.My problem is that the highest issue of MYWORD I found up to now in Germany is 1.2C !!! I try to start the EXTERNAL in this program but the system crashed down and only a new power up bring it back to life.I don't know if you have a copy of MY-WORD 1.21 or another version which runs EXTERNALs from J.P.Hoodie but if You have I want pleasure you to send me a copy of the newer version. Thanks !

You should find a copy in your next issue that arrives. If it doesn't, let me know and I will send you another copy.

13) (From Martin Zeddies) I use an HORIZON 8-BIT-RAMDISK as 'DSK7.' to start my system with this device because it works much faster than starting from floppy.My problem is that I can not handle files on this device from MDOS.(I test it with MDOS 1.14,1.14F and 0.95H.) If I try to ERASE a file nothing happend.There is no ECHO-message in MDOS after the ERASE had worked and nothing changed on the RAMDISK. Do you know why ? If I try to format the RAMDISK and like to see a directory of the empty device I get a NO DEVICE error. Do you know why ?

Martin, yes I know why, although I think MDOS 0.97H that I already sent you should solve that problem. The reason why is that Paul Charlton was adding some hooks (apparently both in floppy and HFDC versions) for the EMULATE and DSK1 feature. I think this problem resolved itself the later HFDC versions of MDOS. - Editor

14) (From Martin Zeddies) Is there a way to jump from GPL-Mode back to the MYARC-GPL-Interpreter title screen without pressing the CRTL-SHIFT-SHIFT key combination ?

Not as far as I know as it is part of the Geneve Hardware if I am not mistaken.

15) (From Martin Zeddies) Is there a possibilty to program a routine which checks if the CAPS or the CAPS-lock key is pressed (or is active) at the moment ?

Nope, not yet, but you could check to see what hex range the incoming character might be to make a determination if necessary. It is 'possible', and you might want to see the earlier question regarding the keyboard and checking for specific keys.

16) (From Martin Zeddies) When the MYARC-GPL-Interpreter is loading it loads the ROM and GROM Memory (ROM adress >0000 - >1FFF and GROM >1FFF - >5FFF) with at this time.You can active this memory area when you press FCTN-3 in the GPL-Interpreter main menue.Now the question: Where the GPL-Interpreter found the information where the ROM and GROM areas are located in the big memory of the MYARC-GENEVE computer system?

This information is designed within the Gate Array and thru the first GPL file. It can't be changed, or TIMODE WILL NOT WORK PROPERLY. I HAVE DONE EXTENSIVE TESTS IN THIS AREA BEFORE SOME SWITCHES WERE ADDED TO THE GENEVEMOD FOR THE MEMEX as some TIMODE problems developed in an early stage of the game.

17) (From Martin Zeddies) The CALL DIR(X) uses the actual directory.This directory was used at last to load a file from the GPL-Interpreter. Anyone knows the way CALL DIR use to get this information ?

All these questions comeing from the Vienna TI and MYARC User group !!!

Martin, afraid I don't know the answer to the above question. Probably related to the Master DSR and it's internal program support, but I am only guessing.

18)(From Martin Zeddies) A strange effect in the GENEVE simulated TI-BASIC was found by Michael Zapf - another german subscripter of the 9640NEWS. Try the following:

CALL INIT
CALL LOAD(-6,1,2)
CALL PEEK(-6,A,B)
PRINT A,B

On Michael and on my system appears "2 2" and NOT "1 2". I feel very strange in this point.And you ?

Or try the following which should be test the working of the RAM banking under TI-BASIC :

CALL INIT
CALL LOAD(-32768+3,6)  REM (>8003)
CALL LOAD(24576,123)   REM (>6000)
CALL LOAD(-32768+3,7)  REM go to another RAMbank
CALL PEEK(24576,A)
PRINT A

On Michaels and my my GENEVE appears now "123".Do you know why ?

THE FOLLOWING QUESTIONS ARE FROM RONALD A. SANDERS

Question 1) I have just also received .96H of DOS and want to know if I install this do I need to reset the dip switches on the HFDCC to the >1100 address and will this give me the full DSK1. emulation?

Answer: V0.96 and V0.97 do not give DSK1 emulation yet. Next version of MDOS should. V0.97 with some patches that are available, should allow you to permanently remove your older floppy disk controller.

Question 2) I have heard several stories about changing the eprom chip on the Geneve card to give true quad density formationg...is this really necess

Answer: Changing the eprom on the Geneve or the HFDC will not affect the 80 track drive capacity (i.e. 720 K disk). A patch file that auto configures to MDOS is available by Bruce Hellstrom that permits DOS to handle 80 track diskettes on any floppy drive (80 track drives) with ANY controller. No eprom is necessary.

Question 3) If people want to install the hard drive in the PEB along wilth the 3.5, and have all the cards in place why not do as I did and install a IBM clone power supply? (Yes it did take a few minor modifications, but what desn't anymore)

Answer: Good idea for those mechanically inclined.

Question 4) Since you said something about using Corcomp cards have you used Ultra copy and compared this to HyperCopy?

Answer: Ultracopy is fine, but requires a disk to be read each time a copy is made. HyperCopy, you only need to do this once with multiple copies (such as required for this newsletter).

Question 5) The article on memory expansion; there was mention (if I remember correctly) about maybe being able to some time in the future expanding the on board memory to 8 Mb. do you personally think that this will happen and if so will there be a use for this much memory on the Geneve?

Answer: Actually, 512 MegaBytes is available, much more than 8 Mb, but even at 8, it will be a long time before we see anything need that much memory. Very doubtful, it would be easier to write overlay code... similar to Telco ..... and support more people. 8 Mb could become EXPENSIVE ($2000 +)

Question 6) Will software be leaning that strong to the GGENPROG program? Is this the next step in the line of getting the "final" product working?

Answer: Actually, MDOS is being compiled with GenPROG from Paul Charlton as Paul developed a program to ease his repetitive tasks. Getting a final product rests with Myarc (Paul's code is finished, he is only adding additional code where he wants to 'spiff' things up).

Question 7) What about crossing the line on other types of computers (heaven forbid) and making some of the software work: such as IBM, Apple, Amiga?

Answer: This could be closer than you think. In two weeks, I may be compiling code from an IBM and running on a 9640. Waiting for the source to arrive in the mail (from Florida airport.... now figure that one out). Will report more next issue, but it is already working.

Question 8) Now to touch on an outlying subject: I use Telco and seem to do OK, except when I try to use this on a celluar phone and things seem to go a little haywire ...any ideas?

Answer: To much noise in the line.

Question 9) Frame Grabber--- What I really want, and am wondering if this is the answer, is to be able to operate a hand scanner such as Logitech's Scan Man?

Answer: Frame Grabber would be able to provide it, but about 2 to 3 times the cost of the Scan Man, but MEGA times more power. Hopefully, come 3 months down the road, a protocard running will be displayed to some individuals (myself hopefully).

Question 10) Concerning MEMEX cards; as I have already memtioned, my Geneve has been modified to run on 12V and 5V only (no voltage regulators as I have had converstion with Lou who only said it would work but at my own risk), do I need to contact Bud Mills about customizing a card for this system or should I contact Ron Walters? Yes the 9640 News did influence my decision about getting a memory card for the Geneve!

Answer: Contact Bud who can handle all of the necessary work as the mods should not be complicated..... if it can be done. Bud will probably get hold of Ron if he needs additional info.

Question 11) When is the next issue of 9640 News going to be out? I haven't been able to put this one down until I finished.

Answer: If you are reading this, it is in your computer right now.

Question 12) I have a 3.5" Mitsubishi 1.44 M drive that I can't seem to get but 360 K, even when the jumpers are changed as per instructions. any idea what I am doing wrong?

Answer: I doubt you will ever get 1.44 M, probably only 720K, which you must have a floppy controller with either the appropriate EPROM, or Bruce Hellstrom's patch to access more than 360 K.

Question 13) I have found, I think, a program that will not load under EXEC that will load under EA 5...Catlib If it should work give me an idea of what I may be doing wrong also if you have a catalog program that you perfer?

Answer: Actually, I don't use a catalog program anymore. And to tell you the truth, my diskette library is shrinking as I am getting rid of illegal software. Someone that I really respected, Tom Freeman, was hurt when he learned I had an illegal copy of software of his and since then my software library has been under a major overhaul. Thanks Tom.

Question 14) Has everyone seen the overlays for the Geneve by Joseph Cavalieri? If not then check them out (especially for new users). The overlay has the commonly used function keys for TELCO, ADVANCED BASIC, TI MULTIPLAN, TI WRITER, E/A, and BASIC.

Answer: I have a set, and they are indeed FANTASTIC.

Question 15) I can not seem to get the GETKEY program to load from the hard drive, everything else on the EXEC disk seems to work fine, have I missed something?

Answer: Bad file??? All it is supposed to do is accept a key and pass it into the command line buffer. Are you sure of it's use? It would look like almost nothing happened when you would run the program.

ADS

T and J Software is pleased to announce the following program for the TI 99/4A and the Geneve 9640.

HARDBACK

HARDBACK will back up your hard drive to another hard drive in one pass, thus eliminating the annoying and time consuming disk-swapping in previous backup programs. The entire tree structure is preserved, as are all time/date stamps. You may perform the backup at any directory level - all files at that level as well as any lower level subdirec- tories and their files will be included. The backup may also be directed TO any subdirectory, existing or not, thus allowing you to backup more than one drive to a larger capa- city drive. Hardcopy of the tree structure and all files is optional. The tree structure at any level may also be output to hard copy without backing up. The file list of any subdirectory may be examined on screen or directed to any device, also without backing up. An additional option at any point is to examine/backup only modified files, and at all times these are indicated as such. If your drive is large enough you may also backup to a new subdirectory on the same drive.

The cost of the program is $15.00, P & H included. As a special offer to 9640 NEWS subscribers only, a $1.00 discount is offered.

Still available from T and J Software: (for 9640 only)

THE Bugger

The ultimate debugger for use on the 9640. THE Bugger runs in either MDOS or GPL Mode, and includes all standard debugging commands plus disassembly, three kinds of single step, special informational breakpoints, monitoring of task workspaces, and access to any 9640 memory page. Completely relocatable in memory (absolute address versions also inclu- ded). Does not change screen or video modes since it oper- ates out of the RS232/2 port. A second computer or terminal is required. Hardcopy of all output to the terminal is available through the RS232/1 port or the PIO port of the host computer. For serious programming work on the 9640, THE Bugger is a must.

DISkASSEMBLER Ver. 2

With DISkASSEMBLER you can take nearly any program on a disk and with little effort turn it into a source listing, complete with up to 1800 labels. External REF lists can be incororated into the printout. Will also disassemble any 9640 memory page. DISkASSEMBLER is a great tool for learn- ing about tricks in existing software, and for making changes in programs. The detailed manual from Ver. 1 for the TI 99/4A is included, as well as an extensive supplement for the new features of Ver. 2.

Cost of these programs is $18.50 for THE Bugger, and $22.95 for DISkASSEMBLER, P & H included. 9640 NEWS sub- scribers may deduct $1.50.

Send orders to:

           T and J Software
           515 Alma Real Drive
           Pacific Palisades, CA 90272

CA residents please add 6.75% sales tax.

  HORIZON RAMDISK    MEMEX    P-GRAM+
---------------------------------------
HORIZON BARE BOARD, Manual + ROS  $45
 Zero K Kit= parts, Board, Manual,
            ROS 8.14 less Memory  $105
 NEW 128k Kit with NEW 128k chips $165
  256k Kit = $225    384k Kit = $285
  512k Kit = $365  One Meg Kit = $585
K   |          800k      |$465.00 |
I   |Add 128k Boot above |$ 90.00 |
T   | 256/800 PHOENIX    |$620.00 |
S   | NEW RAMBO MOD      |$ 45.00 |
----+--------------------+--------+----
    |P-GRAM kit  72k     |$150.00 |
    |NEW P-GRAM+ kit 192k|$240.00 |
    | CLOCK for P-GRAM's |$ 20.00 |
    |  KITS Incl ALL PARTS Needed |
----+--------------------+--------+----
 Pre-Built READY TO RUN ADD $30.00|
==================================+----
  MEMEX  NEW for the GENEVE ONLY  |
   MEMory EXpansion available NOW |
    | MEMEX  504k        |$245.00 |
    | MEMEX  504k+GENMOD |$345.00 |
    | MEMEX 1008k+GENMOD |$395.00 |
    | MEMEX 1512k+GENMOD |$445.00 |
    | MEMEX 2016k+GENMOD |$495.00 |
    |  Note to use a MEMEX over   |
    | 504k requires a GENEVE mod. |
=======================================
 Deduct 5% IF you are purchasing  |
  5 or More of the above Items--> |____
---------------------------------------
   | Upgrade old 180k to |        |
   | 256k w/instructions | $45.00 |
   |32/16 Console Mem Mod|        |
   |with Super cart      | $45.00 |
---+---------------------+--------+----
                      Item total  $
  Ohio Residents add 6% sales tax |
                     -------------+----
Shipping OverSeas ADD $ 7 Surface |
                  or  $15 AirMail |
  ( Small packages $5.00 by air)  +----
                                  |
                  AMOUNT ENCLOSED $____
HORIZON RAMDISK prices may change
if memory costs go UP...
Shipping included within U.S. and Canada
   AmEX + MasterCard + Visa  ADD %10
Call to 419-385-5946 or Send your order
                 to: Bud Mills Services
                      166 Dartmouth Dr.
                       Toledo Oh 43614
FROM:
 Name:__________________________________

 Address:_______________________________

 City______________State______Zip_______

 Please include Phone#______________






 Call TI-COMM BBS on 419 385 7484
 for current prices or information
 300 Baud,7bit,e / 1200,8,n / 2400,8,n

PRODUCT ANNOUNCEMENT

TI NET Product Services is pleased to announce the availability of two new games for the Geneve 9640 computer from the publisher of 9640 News Diskazine.

BARRICADE

BARRICADE, is the first Advanced Basic Game written to use the graphic potentials of the Geneve 9640. It's a game centered around a three dimensional pit requiring objects to be moved along the 4 sides of the walls until they reach the bottom. Points are calculated based on the number of consecutive objects in rows/columns at the end of the game. Watch out for those Killer Blocks!!!!! Note BARRICADE requires MDOS 1.14F or 0.96H or higher and Advanced Basic 2.99a

TETRIS

Tetris is similar to the other fairware releases of the game for the 9640 and TI-99/4A, but it goes further than any of of the programs. Superior graphics is now available as Tetris uses the 9640's High Resolution Graphics. Multi-lingual support is available within Tetris. Use the Configure screen to set your default parameters for English, German, or Spanish. Other options are provided for direction of object rotation, speed, type of monitor (color or monochrome), nnd much more!

Also available from TI NET Product Services is the highly successful 9640 NEWS disk-magazine by Beery Miller.

9640 NEWS is the first disk-magazine devoted entirely to the Geneve 9640 and it's specific hardware and software. Reviews of Geneve specific software, hardware, along with tidbits of information relating to the architecture of the 9640 are routinely discussed. Also included in each issue of "9640 NEWS" is new software never before seen from games, data bases, and utilities. Editorials, question/answer sections, bug reports and anything related to the 9640.

9640 NEWS costs $25.00 per volume for U.S. delivery, $30.00 outside the U.S. Each volume consists of 5 issues. Volume one is available in its entirety with volume two now being issued. Specify what volume(s) you would like to receive.

Barricade and Tetris is available for $15.00 (includes shipping and handling)

To order Barricade, Tetris and 9640 NEWS send your check or money order (U.S. funds) to:

Beery W. Miller 5455 Marina Cove #1 Memphis, TN 38115

Credit card orders for all products may be placed in the TI NET Electronic Shopping area on Delphi or by calling the TI NET Product Services at 1-800-736- 4951 24 hours a day or send your orders to P.O. Box 244, Lorton, VA 22079.

TI NET Product Services accepts Visa, MasterCard, and American Express credit cards. A 10% credit card surcharge will be added to your total order.

PRODUCT ANNOUNCEMENT

TI NET Product Services is pleased to announce the availability of the Mouse Driver Programmer's Development Kit.

Now add mouse support to your Mdos programs with a minimal of effort utilizing Bruce Hellstrom's Mouse Driver software.

This is the same driver some of you may have seen in action with Beery Miller's Windows 9640 program.

What you get -

The Mouse Driver is an interrupt driven utility that takes care of all the hassles of adding mouse support to an Mdos program. Once loaded from the command line, the Driver becomes a part of the Mdos interrupt routine and will remain loaded until the computer is turned off or a cold boot is done. The driver once activated controls all functions of the mouse including updating the sprite pointer continuously. It even has a flashing text cursor for text video modes that don't allow sprites. The programmer interfaces with the Driver through registers located in execution page 7. There is no need for your program to loop to keep everything current, it's all done for you. A must for any serious programmer. It's available for $12.95 plus shipping/handling from either of the following 3 places:

   Bruce Hellstrom                 Beery Miller / 9640 News
   7055 N. Sepulveda Blvd. #5      P.O. Box 752465
   Van Nuys, CA. 91405             Memphis, TN.  38175-2465

Questions can be directed to myself or Beery Miller here on Delphi, BLHELLSTROM or 9640NEWS or you can call me at (818) 782-2307

Credit card orders for all products may be placed in the TI NET Electronic Shopping area on Delphi or by calling the TI NET Product Services at 1-800-736- 4951 24 hours a day or send your orders to P.O. Box 244, Lorton, VA 22079.

TI NET Product Services accepts Visa, MasterCard, and American Express credit cards. A 10% credit card surcharge will be added to your total order.

PRODUCT ANNOUNCEMENT

TI NET Product Services is pleased to announce the availability of WINDOWS 9640 for the Geneve 9640 computer from the publisher of 9640 News Diskazine.

WINDOWS 9640

(c) 1989, 1990 by Beery Miller and 9640 News

WINDOWS 9640 has broken the barrier for multi-tasking on the Geneve 9640. It is now possible to run more than one program simultaneously with another with YOU maintaining control of the operating system. WINDOWS 9640 provides background utilities that are available to any program (accessed via XOP's for the programmer's information with documented support). WINDOWS has been successfully tested running three copies of Advanced Basic simultaneously with each ABASIC copy running it's program (some restrictions do apply as explained below).

WINDOWS 9640 provides a host of additional utilities immediately available such as formatting a disk with verification off, cloning, sweeping a disk, or any other MDOS feature at the touch of a MOUSE button. The ability to toggle between any running MDOS application to a window of the MDOS command line interpreter and back to the application is immediately available. You may select up to 7 additional programs (8 counting WINDOWS) that can run at the same time. The option is up to you depending upon your system configurations.

An additional feature has been added to WINDOWS to promote a host of new utilities. The first mouse driver, written by Bruce Hellstrom, that installs and becomes a resident portion of the operating system, just as WINDOWS is capable of doing, provides independent use of the mouse across various programs.

WINDOWS does have limitations as some programmers have followed nonstandard programming protocols. Any new programs that follow protocols set forth by WINDOWS will allow complete control over all video display and keyboard input that previously was not possible. This is accomplished using new MDOS routines called XOP's to the assembly language programmer. If your not an A/L programmer, WINDOWS will still permit a host of features as many programs are already available that will run under WINDOWS with only minor difficulty if any difficulty at all.

WINDOWS 9640 now has added additional support for the keyboard if you do not own a mouse, but the use of the MOUSE is highly suggested. Support for composite or RGB monitors is now available using 40 or 80 columns. The miniuum system requirements are a monitor and a Geneve. A mouse is highly suggested, and additional memory via the MEMEX provides the capability to have additional programs resident in memory.

As promised, subscribers to 9640 NEWS will be receiving WINDOWS 9640 at a discount from the normal $25.00 price. Subscribers will receive their personalized copy for $15.00

Please specify which package below you would like to order:

Package A) WINDOWS 9640, $15.00, current subscribers of 9640 News.

Package B) WINDOWS 9640, $25.00, non-subscribers of 9640 News.

Package C) WINDOWS 9640 and the first 5 issues of 9640 News (retail price of 9640 News, 5 disks, is $25.00) for $40.00

Shipping: Price includes shipping in U.S. and Canada. All others, add $4.00.

Order today, and be on your way to reaching the potential of the Geneve.

To order WINDOWS 9640, send your check or money order (U.S. funds) to:

Beery W. Miller, 5455 Marina Cove #1, Memphis, TN 38115.

Credit card orders may be mailed to:

TI NET Product Services, P.O. Box 244, Lorton, VA 22199, or call their 24 hour product order line: 1-800-736-4951 (U.S. and Canada)

Credit Cards orders may also be placed in the Electronic Shopping Area on TI NET/Delphi and by sending and Email message on CompuServe to 74405,1207.

TI NET Product Services accepts Visa, MasterCard, and American Express credit cards. A 10% credit card surcharge will be added to your total order.

AL-MDOS

Assembly Introduction on the 9640

Part 1

I have been asked to start an area relating to programming in Assembly Language on the MDOS side of the Geneve. Sitting down and trying to find a good starting point for the novice, and for the advanced programmer is going to be difficult. This article will give a 'layout' of the Geneve and some of it's differences from programming on the 4A.

To begin with, as you should already know, the Geneve has 512K of RAM onboard, but it is not all directly addressable at any point of time. Due to the 16 bit addressing that the 4A/9640 is limited too, we only have at one point of time, 64K of 'visible' RAM. The additional RAM must be mapped in with utilities that are memory resident to the operating system called XOP's. It is possible to forcibly map memory into a program, but you will not be guaranteed that problems will not happen.

The Geneve, being a 16 bit computer, has a maximum limitation (at present), of addressing 256 8K pages. Each page is numbered from 0 to 255, or >00 to >FF. On a normal system, pages >00 to >3F are available with a 512K system. There are 4 additional pages for the 32K 0 wait memory, but this will be discussed later. Of these 64 pages, about 25%+ is used for the operating system.

When a program is loaded from the CLI (command line interpreter), the program loads at >0400 and up. As each 8K boundary is passed, MDOS allocates an additional page mapped into the mapper for the program to reside. This page that is allocated, iS a 'free' page, not being used by any other MDOS task, or operation. At the upper end of memory, >E000 to >FFFF resides a default scratch pad page of memory, page >13. It is highly suggested that you request your own page of memory, as the scratch pad page 'can' be used by other routines. At this point, you have as much memory available as was the size of your program. No additional memory for workspaces that are outside of the typical 'SFIRST' and 'SLAST' are available yet, only until you allocate the memory yourself.

This is where a discussion of memory mapping becomes necessary to go any further. Beginning at >F110, and continuing to >F117 for a total length of 8 bytes, are the mapper registers for each 8K bank from >0000 to >FFFF. It should be stated here that the TMS 9995 contains some on board RAM above >F000 (not >F000 thru >FFFF, just some RAM) and some ports for various devices (keyboard, video, expansion, etc).

The mapper ports are as follows:

      >0000 to >1FFF  is >F110 register
      >2000 to >3FFF  is >F111 register
      >4000 to >5FFF  is >F112 register
      >6000 to >7FFF  is >F113 register
      >8000 to >9FFF  is >F114 register
      >A000 to >BFFF  is >F115 register
      >C000 to >DFFF  is >F116 register
      >E000 to >FFFF  is >F117 register

It is highly suggested until you 'learn' some internal operations of the 9995 chip, that you do not use memory from >F060 to >FFFF. Much of it is available, but there are some locations that should not be used due to the internal architecture of the system.

Now, it is time for us to 'see' some code that I will pull from a program that I have written. Comments will be added when necessary to explain what is happening.

SFIRST    B    @MAIN3    *first instruction, which will be located at >0400 when

*assembled.  Now let's go to our first instruction at MAIN3

*the following are some data tables.


UTIL      DATA 9
ERROR     BLWP @0
EIGHT     DATA 8
ONE       DATA 1
FOUR      DATA 4
HEX0458   DATA >0458
MAPPER    EQU  >F110
LIBPAG    EQU  >2000
MDOS      EQU  >0000        blwp @mdos to return to mdos
DOSWSP    EQU  >F020          WAS >F000
FIVE
KBD       DATA 5
MMG       DATA 7
VID
SIX       DATA 6
KEYRTN    DATA 0
HEX0
ZERO
H00       DATA 0
THREE     DATA 3

NOMEM  DATA >0D,>0A
       TEXT 'Not enough memory, task aborting...'
       BYTE >0D,>0A,0
NOMEMLN  EQU $-NOMEM
       EVEN
*
PGETBL BSS 10


* the following code uses some memory resident routines, called XOP's to locate
* free memory within the computer to use without the programmer guessing what
* pages are internal to the operating system or being used by another program.

MAIN1
MAIN3  LI   R0,1         *Begin setting up for extra memory
       LI   R1,7         *Request 7 pages

* we could have used LI  R1,30 which would have requested 30 pages of memory
* if it were available.  We couldn't map this much memory in at one time, but
* using the mapper registers, we would have a table of available pages to use
* and then mapped them into where we desired.


       LI   R2,1         *Local page #1, begin at >2000....>0000 to >1FFF
*                         already is used, it holds this code
       CLR  R3           *Slow RAM, SETO 3 would let us use fast ram if it were
*                         available
       XOP  @MMG,0       *Ask system for the RAM...with the memory resident sub
       ABS  R0           *Check for errors
       JEQ  GATMEM       *If none, then go to GOTMEM
       LI   R0,>27       *memory resident routine to display text
       LI   R1,NOMEM     *here, it holds info if we don't have enough memory
       LI   R2,NOMEMLN   *length of string, or CLR R2 if string nul terminated
       XOP  @VID,0       *use memory resident routine to display text
       BLWP @MDOS        *Warm Reboot of MDOS


GATMEM LI   R0,4         *Get mmgt page map.
       LI   R1,PGETBL    *Put it at pgetbl
       LI   R2,8         *Pgetbl is 8 words wide

* If we had elected to use 30 pages from the cited above side comment, then
* LI   R2,30 would have been used.  You would then have needed to make sure
* that the table PGETBL that would then contain these pages have room to hold 30
* bytes of information (i.e PGETBL BSS 30) and then referenced them from
* PGETBL when we wanted to map something new in.


       XOP  @MMG,0       *
*                        GATMEM call has returned into PGETBL our available
*                        list of free memory to use, and map in.



STARTMEUP66
       MOVB @PGETBL+1,@>F111              lets map our memory in
       MOV  @PGETBL+2,@>F112              into our mapper registers
       MOV  @PGETBL+4,@>F114
       MOV  @PGETBL+6,@>F116
* We don't need to map memory at >F110 as any program we run will have this
* mapped in for us, else we wouldn't be running a program in the first place


       LWPI DOSWSP                        let's load our workspaces

       LI   R0,0                         uses subroutine (XOP) to set us up
       LI   R1,1                         in 80 column mode
       XOP  @VID,0

          BLWP @0        Exit and return to MDOS


       END

The above code has gotten us through the memory allocation that is necessary for any program to run. If you look at the program, the subroutines that I have used, you may think I pulled them out of thin air. Not true as COMPUSERVE, GENIE, and DELPHI maintain the update lists of memory resident subroutines. You will also be able to find these in possibly your local user group library, or BBS, or I also maintain a slightly older list in my AL/MDOS diskette that was mentioned in Vol #1. There is also another source, that being Paul Charlton's GenPROG that contains information on almost all of the necessary subroutines, except for VIDEO and KEYBOARD at present. I highly suggest that you locate a source of this information. Assembly language programming is much easier on the 9640, than the 4A. For example, that last routine before the BLWP @0 above required only 3 lines of code to set up 80 column text mode. In the 4A mode, this could have easily required 30 lines + of code to initialize everything properly.

This is a start, and if you have additinal suggestions on directions to go, please advise, otherwise I will pick the direction in the next issue. Beery Miller

GENEVEMOD

INFORMATION ABOUT THE GENMOD INSTRUCTIONS

The instructions are provided to all purchasers of MEMEX cards.

When the MEMEX card was first introduced, we knew that additional address lines had to be added on the Geneve 9640 card. What we didn't know was that the Gate Array only enabled the external DATA Buffer for the first 512 of external memory. To add the address lines is easy but to add the proper Data Buffer required a small printed circuit card be added to the back side of the Gate Array Socket. This mini-card contained a custom PLD (programmable Logic Device) and picked up the needed signals from the Gate Array inputs and provided the outputs to the External Bus & Data Buffer. This step allowed use of 1.5 meg on the Memex along with the On Board 512k for a total of 2 Meg (all at 1 wait state). The next step was to enable the zero wait state capability of the Memex and turn off the On Board 512 to allow the full 2 meg to run on the Memex. A second PLD was added to the mini board to provide the necessary clock signals and control for turning on the last 504k of the Memex and the zero wait state feature. A modified Eprom is required to allow a revised memory check on Boot Up when the GENMOD is installed.

Further testing of the Geneve with 2 meg external revealed that TI MODE was not operational. Another unknown design quirk of the Geneve. Grom emulation is performed within the gate array directly to the On Board Memory Bus and is not accessible to our modification. To overcome this problem we can only provide a switch that will turn on the On Board memory for the TI Mode use (switch will also reset the computer). The Memex will still provide the 1.5 meg at Zero Wait while in TI Mode and if the program execution is too fast then you can turn off the TURBO mode to slow the program down. The Turbo switch can be changed at ANY time during any program execution. The GENMOD provides for 2 external front panel switches with indicator lights. Each switch has a lite (on) to indicate the Geneve Memory is on or the Zero wait state is on.

If the switch box is unplugged, the GenMod will default to Zero wait state with the Geneve Memory turned on at one wait state and up to 1.5 meg (or as equipped) of MEMEX memory turned on at Zero wait state.

Removal of the switch and the MEMEX card does not inhibit the Geneve operation since the Geneve will default to a standard Geneve. This last feature may be useful in isolating a hardware problem if one would occur.

Impelmentation of the GenMod does require that ALL cards in the P-Box do a decode of the AMA, AMB, AMC address lines as defined in the original TI specifications. This decode is required because of the address scheme used by the Geneve and any of the other cards in the P-Box. Conflicts with cards that do not decode the AMA, AMB, and AMC will occur because those cards will respond when certain memory addresses are exercised. NOTE: The Memex bus arbitration feature still protects the system from hardware damage. The power up memory check dictates that ALL cards decode the AMA, AMB, and AMC lines when the GenMod is installed.

A list of "Illegal" cards requiring the AMA, AMB, AMC Decode modification follows:

 All Horizon Ramdisks
 All CorComp Controller and RS232 cards
 Some of the "early" Myarc floppy controller cards (DDCC-1)
 The first "25" of the Rave Speech cards.

The Decode modification instructions for any of these cards is enclosed as part of this package.

Purchase of the GENMOD will include the following list of provided materialsf:

For the GENEVE 9640 card

1 Mini board assembly with regulator & reset
1 Switch box w/cable
1 MEMEX Eprom to replace GENEVE Eprom
1 74F245 (for use if U4 is socketed)
1 1k ohm pull-up resistor for the 2nd 32k chip if needed.

For the MEMEX card
1 74F245 IC
4 74F257 IC's
1 74F244 IC
4 Resistor packs

Current instructions for the GENeve MODification. The instructions are drawn to give you a picture of actual placement of the componints and wiring. Four trace cuts are required and are also graphically drawn to enable you to make the proper cuts. The cut locations are carefully selected to allow restoration of the GENEVE to an unmodified state if you need to do that.

[ The above notes should fill in some gaps for those requiring additional information on the GENEVEMOD for the Geneve 9640 ONLY!!! - Editor]

HIMIX-DOCS


BUENOS AIRES 24 / 01 / 1990 Dear BERRY This day I recibed your disk dated 12/01/90, thank you very much. I find in a demo program, that in the register 9 set PAL or NTSC . Well, all my first programs(mixpicture001,colornum)for the GENEVE use equal init and have in VDP R9=>8982, can to be R9=>8980 ? . I change this value, but in my monitor(monocromo) no make diferent. Please, look with a sectoreditor the first sector of my programs, you find the data of the VDP registers are >800E,>81E3,>823F,>85F7,>863E,>8700,>8982,>8B03,>8C00,>8D00,>xxxx(use graficmod) >8004,>8170,>8213,>840A,>87F1,>8982,>832F,>8A01,>8E01,>xxxx,>xxxx(use text80) >8000,>8170,>8210,>840A,>87F1,>8900,>832F,>8A01,>8E01,>xxxx,>xxxx(use text40) search what value in what register must be set, and write me if you found. --THIS COMMENT ABOVE CORRECTS HIMIX3, TETRIS, MIXPICTURE, AND any other programs that fall under this category that were written by Klaus. Look in the first sector of these and 'future' programs for >8982 and replace all occurences with >8980 and it should solve all graphic problems -- HIMIX3 KEYS: F = Filenames input 4 filenames and printername L1=loadfilename screen 1 S1=savefilename screen 1 L2=loadfilename screen 2 S2=savefilename screen 3 escape=exit ^C = Clear screen ^=control key press simultaneos with 'C' clear present screen U = Message UP/DOWN change appears text message T = Typewriter can write 160 caracter per line ENTER = next screen esc = exit L = load picture (MYART-format) in the present screen S = save the present screen (MYART-format) prevois set names with 'F' C = Copy you can copy a part of screen to screen 1 or 2 procedure: On first appears a sprite, this is the left upper corner move with arrow keys to position what you like, then press enter. Now appear the sprite of the right down corner, move it and press enter. Now appear the question on the message line, if you will copy to screen 1 or 2. Press 1 or 2. Now appears the left upper corner of the destination, move it and press enter. Ready. In any moment pressing esc=abort P = Print present screen ^P = Print 2 screens (control&P) arrows = Scroll Options: one screen only two screens how to be one around (circular) or not (cutting) this options select on the message line arrows move 1 pixel 8,6,4,2 move 8 pixels esc = exit 1 = pressing 1 appears screen 1 2 = / 2 / / 2 G = Grafikmode -- In this mode you can paint with select color points and lines. POINT - draw points prevois press P LINE - first L press = point source secound L press = make line STEP - move the arrow on the screen steeping the pixels according to the value select with keys 5 and 6 SPEED - fast and low - select with keys 7 and 8 COLOR - keys + and - select color for drawing E = color/print equal as in MIXPICTURE v002 V = version W = Work with slides First you must load in screen 1 a data image. HIMSET3 and HIMSET4 are file of this type. With this part of program you can copy or tranfer littles drawings or letters to the position indicate the cursor. The data image files you can make with the MYART How? : 1. def. SLIDE - I named SLIDE a space between two helplines-2 and a line(row) of pixels on(united) upper 2. The first line of the image is not used, I use for count. 3. The 2nd line is the data of this image and slides. Is parted in varios sectors: 1.sector = value of height of images(slides) = space between 2 helplines-2. In HIMSET4 this value is 19. 19 pixels on (united) 2.sector = number of row of the first helpline. HIMSET4 = 14 3.sector = number ascii of the first slide. HIMSET4 = 32 = space example: If you put 65 (ascii of the letter A) when you press A the first slide appears in the position of the cursor. 4.sector = how much slides exist HIMSET4 = 29 The space between sectors is not important. Other advices: The wide of the slides is better if are even. The helplines must beginning and ending on the border. The space between the helplines must to be equal. The color 0 and 1 are background = you can use color 2 to F for paint. $ = Two screens simultaneos on If you are in screen 2 and press shift(2) then apears the other screen at same time. # = Two screens simultaneos off Klaus

MEMEX-REV

MEMEX 2 Meg 0 Wait Option

I have just received the MEMEX 0 Wait option (GENMOD) and have boosted my memory from 1 meg to a full 2 Meg on the MEMEX. My comments and reactions to the mod are detailed below. A portion of this 'mini review' was uploaded as a message to Marc Levine detailing my comments.

For the Newcomers to the MEMEX option, it is a card developed by Ron Walters and marketed by Bud Mills. It is a Geneve specific card permitting the expansion of RAM from as little as 504K to as much as a full 2 megs at eithe 0 or 1 wait state. Expanion of memory above 504K requires a mod to the Geneve called the GENMOD that permits 0/1 wait state capacity and TIMODE correction circuitry so the computer will run in the GPL enviroment if you use GPL programs.

The GENEVE/MEMEX is indeed functional in TIMODE. Ron and Bud (Bud has just signed up on here somewhere, Delphi) have went to GREAT lengths to find a solution to the TIMODE problem. The TIMODE problem is integrated within the Gate array and is 'unpatchable', unless someone went to lots and lots of trouble to redesign the Gate array, and then paid for the chip which would not be cheap as labor would have to be 'included' in it's cost. Ron has designed a circuit that allows you to manually select 0/1 wait state @ 2 meg 0 wait state OR 1.5 meg 0/1 wait state and 0.5 meg 1 wait state for TIMODE. Bud has went and developed an extremely nice box that mounts with tape to the PEBox to provide both TURBO and TIMODE switches.

 TURBO.....0/1 wait state, can also set TIMODE 1.5 meg to 1 wait state for
           all RAM at 1 wait state.
 TIMODE...off 2.0 meg 0 wait state, no TIMODE
       ...on  1.5 meg 0/1 wait state, 0.5 meg 1 wait state, TIMODE accessible.
               (Provided you have the memory)

When the switch is thrown to the TI-MODE On status, a reboot of the operating system is automatically done to enable the onboard Geneve ram that is then used at 1 wait state for TIMODE (except that memory that TIMODE normally uses at 0 wait state in the Geneve).

A user considering the full expansion has the following decisions he (or she) must consider:

1) If they do not own a HFDC or a RAMDISK with SYSTEM/SYS on it, they will be faced with a 30 second reboot time.

Solution:

a) Purchase the MEMEX with 1.5 meg Ram and GENMOD and not worry about the the reboot problem as it won't exist.

b) Purchase the MEMEX with 2.0 meg Ram and GENMOD and live with it.

c) I have a possible software solution I am toying with and report on later. If it works, I will give it to Bud and let him distribute it with the MEMEX as a utility program.

2) Who will make the modifications....

Solution:

a) You or a friend can.

b) Bud can, under certain restrictions (and cost) and you must contact him to do the work.

I did the work myself, and have the following observations. Any current owner of a MEMEX should probably contact Bud. It is an extremely delicate procedure as you are required to solder a board to the reverse side of the Geneve on the Gate array pins. Not easy, but the design of the board does not cause great difficulty. It is probably easier than stacking and soldering ram chips on a horizon (mine are 3 high on the HRD. You are also required to cut 4 traces on the Geneve and remove a voltage regulator from the board and replace it with a new one (with heat sink provided) and make various solder connections.

The biggest reason I say Bud should be contacted is the following reason. If your board doesn't work the first time, verifying connections to the gate array is difficult. You must work on both sides of the board with extremely small connections on the gate array to check with an ohm meter. Secondly, Bud knows his stuff and is probably neater than anyone with solder after all the HRD boards he has built and knows WHERE to look for a bad solder joint when one is present. Your odds are with Bud.

My MEMEX has successfully tested out good with the full two meg wait state memory. As a beta tester (solder and board tester) I went thru the docs identifying problems that the beginner to the experienced person may come across and there were a few, but not many.

As far as timing is concerned on the MEMEX, I have these thoughts after doing the beta work. It is probably NOT in your best interest to purchase the RAM chips from a party outside of Bud Mills. The ram chips need to respond together as a 'team' and if you purchase the wrong speed ram chip, it could very well not be compatible with the MEMEX. It has even also been seen that some manufacturer's specs do not have as 'tight' of specifications as others which could result in some timing problems. If you purchase from Bud Mills, you will be guaranteed to receive the appropriate chips.

The reason I made the above statement, was a reflection on the MEMEX's design. Ron designed the card to QUALITY PARTS, and not 'equivalent' chips. He wanted a card that would operate at 100 %, and not 75 % of capacity, and we have a card at 100 % of it's running capacity. Even when the Geneve is running at 1 wait state, the MEMEX is running at twice the speed, but is sitting idle until something is needed, and then it emulates the 1 wait state feature. You get QUALITY with the MEMEX when you properly install it.

I also would like to add another comment or two. If you were as impressed with the MEMEX 504K as I was, you will DEFINITELY be impressed with the expansion to 2.0 megs. Ron has done some excellent work in designing the boards, and Bud has done some terrific work in putting it together. The TURBO/TIMODE switch was prepared in an extremely nice housing (with LED's) that looks fine attached to the PEBox.

My personal opinion of the card, is FANTASTIC !!! With the extra memory that I have on the card, I will soon begin writing some utilities to USE all of that memory, plus make more expanded uses of WINDOWS with it.

Please consult the ADS file for information on ordering your card. You will DEFINITELY be pleased.

CHARDEF


* LARGO=135 LINEAS * PARTE CHARDEF DEFCHA DATA >0020,>0000,>1824,>2418 0 DATA >0000,>3F20,>2724,>2424 1 DATA >0000,>FF00,>FF00,>0000 2 DATA >0000,>FC04,>E424,>2424 3 DATA >2424,>2424,>2424,>2424 4 DATA >2424,>2720,>3F00,>0000 5 DATA >2424,>E404,>FC00,>0000 6 DATA >0020,>001C,>0408,>1010 7 DATA >0020,>0018,>2418,>2418 8 DATA >0020,>0018,>241C,>0408 9 DATA >2020,>3800,>1C10,>1C10 10 DATA >0040,>0020,>2038,>2438 11 DATA >0070,>5070,>4854,>1C14 12 DATA >0070,>4070,>001C,>1010 13 DATA >0020,>0018,>243C,>2018 14 DATA >0040,>0814,>101C,>1010 14 DATA >0040,>4040,>1824,>2418 16 DATA >0020,>2020,>2808,>0808 17 DATA >0040,>4058,>2408,>103C 18 DATA >0040,>4058,>2408,>2418 19 DATA >0040,>4054,>141C,>0404 20 DATA >0040,>405C,>1018,>0418 21 DATA >0040,>4048,>1038,>2418 22 DATA >0040,>405C,>0408,>1010 23 DATA >0040,>4058,>2418,>2418 24 DATA >0040,>4058,>241C,>0408 25 DATA >0040,>4040,>1824,>3C24 26 DATA >0040,>4050,>10C0,>141C 27 DATA >0040,>4040,>1C10,>101C 28 DATA >0040,>4444,>041C,>141C 29 DATA >007C,>4444,>4444,>7C00 30 DATA >0040,>4C50,>101C,>1010 31 DATA >0000,>0000,>0000,>0000 32 DATA >1010,>1010,>1000,>1000 33 DATA >2828,>2800,>0000,>0000 34 DATA >2828,>7C28,>7C28,>2800 35 DATA >3854,>5038,>1454,>3800 36 DATA >6064,>0810,>204C,>0C00 37 DATA >2050,>5020,>5448,>3400 38 DATA >0808,>1000,>0000,>0000 39 DATA >0810,>2020,>2010,>0800 40 DATA >2010,>0808,>0810,>2000 41 DATA >0028,>107C,>1028,>0000 42 DATA >0010,>107C,>1010,>0000 43 DATA >0000,>0000,>3010,>2000 44 DATA >0000,>007C,>0000,>0000 45 DATA >0000,>0000,>0030,>3000 46 DATA >0004,>0810,>2040,>0000 47 DATA >3844,>4444,>4444,>3800 48 DATA >1030,>1010,>1010,>3800 49 DATA >3844,>0408,>1020,>7C00 50 DATA >3844,>0418,>0444,>3800 51 DATA >0818,>2848,>7C08,>0800 52 DATA >7C40,>7804,>4444,>3800 53 DATA >1820,>4078,>4444,>3800 54 DATA >7C04,>0810,>2020,>2000 55 DATA >3844,>4438,>4444,>3800 56 DATA >3844,>443C,>0408,>3000 57 DATA >0030,>3000,>3030,>0000 58 DATA >0030,>3000,>3010,>2000 59 DATA >0810,>207E,>2010,>0800 60 DATA >0000,>7C00,>7C00,>0000 61 DATA >2010,>087C,>0810,>2000 62 DATA >3844,>0408,>1000,>1000 63 DATA >3844,>5C54,>5C40,>3800 64 DATA >3844,>447C,>4444,>4400 65 DATA >7824,>2438,>2424,>7800 66 DATA >3844,>4040,>4044,>3800 67 DATA >7824,>2424,>2424,>7800 68 DATA >7C40,>4078,>4040,>7C00 69 DATA >7C40,>4078,>4040,>4000 70 DATA >3C40,>405C,>4444,>3800 71 DATA >4444,>447C,>4444,>4400 72 DATA >3810,>1010,>1010,>3800 73 DATA >0404,>0404,>0444,>3800 74 DATA >4448,>5060,>5048,>4400 75 DATA >4040,>4040,>4040,>7C00 76 DATA >446C,>5454,>4444,>4400 77 DATA >4464,>6454,>4C4C,>4400 78 DATA >7C44,>4444,>4444,>7C00 79 O DATA >7844,>4478,>4040,>4000 80 P DATA >3844,>4444,>5448,>3400 81 DATA >7844,>4478,>5048,>4400 82 DATA >3844,>4038,>0444,>3800 83 DATA >7C10,>1010,>1010,>1000 84 DATA >4444,>4444,>4444,>3800 85 DATA >4444,>4428,>2810,>1000 86 DATA >4444,>4454,>5454,>2800 87 DATA >4444,>2810,>2844,>4400 88 DATA >4444,>2810,>1010,>1000 89 DATA >7C04,>0810,>2040,>7C00 90 DATA >3C20,>2020,>2020,>3C00 91 DATA >5834,>0064,>544C,>4400 92 DATA >3C04,>0404,>0404,>3C00 93 DATA >0010,>3854,>1010,>1000 94 DATA >0000,>0000,>0000,>FF00 95 DATA >8040,>2010,>0000,>0000 96 DATA >0000,>3848,>4848,>3400 97 DATA >6020,>3824,>2424,>7800 98 DATA >0000,>3840,>4040,>3800 99 DATA >0C08,>3848,>4848,>3C00 100 DATA >0000,>3844,>7C40,>3C00 101 DATA >1824,>2070,>2020,>2000 102 DATA >0000,>3C44,>3C04,>3800 103 DATA >6020,>2834,>2424,>2400 104 DATA >1000,>7010,>1010,>7C00 105 DATA >0800,>1808,>0848,>3000 106 DATA >2020,>2428,>3028,>2400 107 DATA >3010,>1010,>1010,>7C00 108 DATA >0000,>6854,>5454,>5400 109 DATA >0000,>5824,>2424,>2400 110 DATA >0000,>3844,>4444,>3800 111 DATA >0000,>7824,>3820,>2000 112 DATA >0000,>3048,>3808,>0C00 113 DATA >0000,>5824,>2020,>2000 114 DATA >0000,>3C40,>3804,>7800 115 DATA >2020,>7820,>2024,>1800 116 DATA >0000,>4848,>4848,>3400 117 DATA >0000,>4444,>2828,>1000 118 DATA >0000,>D454,>5454,>2800 119 DATA >0000,>4428,>1028,>4400 120 DATA >0000,>4444,>3C04,>7800 121 DATA >0000,>7C08,>1020,>7C00 122 DATA >0010,>1010,>5438,>1000 123 DATA >1010,>1000,>1010,>1000 124 DATA >3008,>0804,>0808,>3000 125 DATA >0000,>2054,>0800,>0000 126 DATA >0000,>0000,>0000,>0000 127 DEL * * * * 135 LINEAS

COL-NOTES

COLORNUM

Color Num appeared in the last issue of 9640 News. It involved text scrolling horizontally and vertically on the screen. In this issue, the source code to the program is provided. It should be noted here that COLORNUM was written the 'hard' way. Much of the VDP access is via the ports, not by XOP libraries. There is always more than one way to 'skin' a cat.

COLNUM1-S


START MOV R11,@SAVE B @ANFANG SAVE DATA 0 WSP1 EQU >F000 FIVE DATA 5 SIX DATA 6 SEVEN DATA 7 OCHO DATA 8 DT DATA 0,0,0,0,0,0,0,0,0,0 H0001 DATA >0001 H0100 DATA >0100 HFF BYTE >FF TEC DATA 0 BANDIR DATA >5000 EVEN ANFANG LWPI WSP1 LIMI 0 LI R0,1 LI R1,2 LI R2,1 LI R3,0 XOP @SEVEN,0 LI R0,4 LI R1,DT LI R2,>000A XOP @SEVEN,0 MOVB @DT+1,@>F111 MOV @DT+2,@>F112 MOV @DT+4,@>F114 MOV @DT+6,@>F116 GRDATA DATA >0004 GRMODE LI R0,0 MOV @GRDATA,R1 XOP @SIX,0 B @CONVER *-------- MASXX A @H0100,@BANCO1 B @BANDA MENOS S @H0100,@BANCO1 B @BANDA *------------ VTEC DATA >FF00,>9B00,>0800,>0900,>0A00,>0B00 DATA >0600,>0700,>2B00,>2D00 DTEC DATA BANDA,FINAL,LINKS,RECHT,UNTEN,OBENX DATA CLEAR,F10XX,MASXX,MENOS NTEC DATA DTEC-VTEC TECLA LIMI 0 LI R0,5 XOP @FIVE,0 JNE TEC3 ANDI R1,>FF00 CLR R5 TEC1 C R1,@VTEC(R5) JEQ TEC2 INCT R5 C R5,@NTEC JNE TEC1 MOV R1,@TEC TEC3 B @BANDA TEC2 MOV @DTEC(R5),R11 RT * --------------------------------- MOD11 LI R3,MODO2 LI R4,14 F2 MOVB *R3+,R2 SWPB R2 MOVB *R3+,R2 MOVB R2,@>F10A SWPB R2 MOVB R2,@>F10A DEC R4 JNE F2 B @TECLA * ---------------------- MODO2 DATA >800E,>81E0,>8200,>830E,>8401,>8A00,>8E04 DATA >8902,>87F1,>8D00,>8C00,>8B00,>8506,>8600 MODO1 DATA >800E,>8160,>8982,>823F,>85F7,>8B03,>863E DATA >8700,>8C00,>8D00,>81E2,>8E07 *---------------------------------------- SPDAT1 DATA >0000,>0000 DATA >D800,>0000 SPCOL1 DATA >0000,>010F,>0F0F,>0F0F,>0F0F,>0F0F,>0F01,>0000 SPPAT1 DATA >0000,>00FF,>8080,>8080,>8080,>8080,>FF00,>0000 DATA >0000,>0080,>8080,>8080,>8080,>8080,>8000,>0000 F6SPR LI R3,MODO1 LI R4,12 F1 MOVB *R3+,R2 SWPB R2 MOVB *R3+,R2 MOVB R2,@>F10A SWPB R2 MOVB R2,@>F10A DEC R4 JNE F1 MOV @POSSPR,@SPDAT1 LI R3,32 SPBORR LI R0,>3A00 LI R1,>D800 LI R2,2 SP*4+2 F33 BL @VMBW DEC R3 JEQ F22 AI R0,>0004 JMP F33 F22 LI R0,>3A00 LI R1,SPDAT1 LI R2,6 SP*4+2 BL @VMBW LI R0,>3800 LI R1,SPCOL1 LI R2,16 SP*16 BL @VMBW LI R0,>3000 LI R1,SPPAT1 LI R2,32 SP*32 BL @VMBW B @CLEAR * ----------------------- VMBW ORI R0,>4000 SWPB R0 MOVB R0,@>F102 SWPB R0 MOVB R0,@>F102 MOV R2,R2 JEQ VM3 VM2 MOVB *R1+,@>F100 DEC R2 JNE VM2 VM1 B *R11 VM3 MOVB R1,@>F100 B *R11 * ----------------------- VMBR SWPB R0 MOVB R0,@>F102 SWPB R0 MOVB R0,@>F102 MOV R2,R2 JEQ VR1 VR2 MOVB @>F100,*R1+ DEC R2 JNE VR2 VR1 B *R11 *--------------------------- VWTR SWPB R0 MOVB R0,@>F10A SWPB R0 MOVB R0,@>F10A B *R11 *--------------------------- CLEAR LI R0,>8E04 BL @VWTR LI R5,>D3FF CLR R1 CLR R0 CLR R2 BL @VMBW CL3 MOVB R1,@>F100 DEC R5 JNE CL3 BL @LETRA1 BL @LETRA * -------------------- F10XX LI R7,>8E05 F3 MOV R7,R0 BL @VWTR CLR R1 COLOR NEGRO F111 LI R5,>4000 cantidad CLR R0 dir iniz F108 LI R6,>0800 F106 LI R4,8 F105 LI R3,8 F101 CLR R2 BL @VMBW DEC R5 JEQ FSAL end DEC R6 JNE F102 AI R0,>0700 next fila char LI R6,>0800 cont ancho c/color F102 DEC R3 JEQ F103 AI R0,>0100 +1 fila pixel JMP F101 F103 DEC R4 cont filas JEQ F104 AI R0,>F900 fila -8 INC R0 pos pant +1 JMP F105 F104 AI R1,>0100 AI R0,>F900 INC R0 JMP F106 FSAL B @TECLA *--------------------- FINAL LI R0,0 LI R1,>0001 XOP @SIX,0 LI R1,DEFCHA+760 LI R2,32 LI R3,95 LI R0,>0024 XOP @SIX,0 BLWP @>0000 *--------------------------------- POSSPR DATA >3B00 OBENX MOV @POSSPR,R8 CI R8,>3F00 JLE MOVRT AI R8,>F800 JMP MOVSP UNTEN MOV @POSSPR,R8 CI R8,>6C00 JHE MOVRT AI R8,>0800 JMP MOVSP LINKS MOV @POSSPR,R8 AI R8,-8 MOVB @POSSPR,R8 JMP MOVSP RECHT MOV @POSSPR,R8 AI R8,>0008 MOVB @POSSPR,R8 JMP MOVSP MOVSP LI R0,>8E07 BL @VWTR CI R8,>83FF JLE MVSP1 AI R8,>FF00 MVSP1 MOV R8,@POSSPR LI R0,>3A00 LI R1,POSSPR LI R2,2 BL @VMBW BL @VAL CLR R1 CLR R0 CLR R2 MOV @POOOS,R1 BLOCK LI R3,>1000 BL @VMBW MVSP2 DEC R3 JEQ MVSP3 MOVB R1,@>F100 JMP MVSP2 MVSP3 LI R3,9 LI R2,BANCO2+2 FONDO SCROLL MVSP4 MOVB R1,*R2+ AI R1,>2000 DEC R3 JNE MVSP4 BL @LETRA B @TECLA MOVRT MOV R8,@POSSPR BL @LETRA B @TECLA *------------------------ TL55 BSS 320 40 LETRAS*8BYTES WPALL DATA WPAL1 DIR TEXTO TERM 0 DATA WPAL2,WPAL3,WPAL4,0 WPAL DATA WPAL3,WPAL4,0 WPAL5 DATA >8E04,>0030,20,>FF00 TEXT 'Klaus Detlev Gebecke' WPAL7 DATA >8E04,>1024,23,>FF00 TEXT 'Buenos Aires, Argentina' WPAL8 DATA >8E04,>2058,10,>FF00 TEXT 'Julio 1989' WPAL1 DATA >8E06,>1020,7,>FF00 SECTOR,POS,nLETRAS,COLOR F/B TEXT 'H E X A' WPAL2 DATA >8E06,>10A0,7,>FF00 IF COLOR FONDO=01 THEN TEXT 'D E C I' TRANSPARENTE WPAL3 DATA >8E06,>2028,4,>FF00 SCOR1 TEXT ' >00' WPAL4 DATA >8E06,>20A8,5,>FF00 SCOR2 TEXT ' 000 ' PLEN DATA 0 PCOL DATA 0 PPAL DATA 0 *------------------------------- LETRA1 MOV R11,@LETRA-2 LI R10,WPALL JMP PPP6 DATA 0 DIR RT LETRA MOV R11,@LETRA-2 LI R10,WPAL PPP6 MOV *R10,*R10 IF 0 SALIDA JEQ PPPSAL CLR R7 LI R3,TL55 BUFFER MOV *R10,R2 MOV *R2,R0 SECTOR BL @VWTR INCT R2 MOV *R2,R0 INCT R2 MOV *R2,@PLEN INCT R2 MOV *R2,@PCOL INCT R2 MOV R2,@PPAL PP3 LI R6,DEFCHA CLR R5 MOV @PPAL,R4 A R7,R4 MOVB *R4,R5 SWPB R5 SLA R5,3 A R5,R6 LI R4,8 PP1 MOVB *R6+,*R3+ DEC R4 JNE PP1 INC R7 C R7,@PLEN JEQ PP2 JMP PP3 PP2 SLA R7,3 CLR R6 PP9 LI R9,8 PP8 MOVB @TL55(R6),R5 LI R8,8 PP7 SLA R5,1 JOC PP4 CB @H0001+1,@PCOL+1 JEQ PP555 MOVB @PCOL+1,R1 JMP PP5 PP4 MOVB @PCOL,R1 PP5 CLR R2 BL @VMBW PP555 INC R0 DEC R8 JNE PP7 AI R0,>00F8 INC R6 DEC R7 JEQ PP6 DEC R9 JNE PP8 AI R0,>F808 JMP PP9 PP6 INCT R10 JMP PPP6 PPPSAL MOV @LETRA-2,R11 RT *------------------- CLRV1 TEXT ' 000' SDIEZ BYTE >3A SCERO BYTE >30 H3B DATA >3B00 CADHEX TEXT '0123456789ABCDEF' POOOS DATA 0 VAL CLR R3 MOV @POSSPR,R2 S @H3B,R2 - POS SPRITE MOVB R2,R3 R3=>xx00 SLA R3,2 R3 *4 ANDI R2,>00FF >00xx SLA R2,8 >xx00 SRL R2,3 DIV/8 A R3,R2 MOV R2,@POOOS COLOR P/BLOCK MOV R2,R4 PARA DECIMAL SRL R2,4 R2=>0nn0 MOVB R2,R3 SRL R3,8 MOVB @CADHEX(R3),@SCOR1+2 ANDI R2,>00F0 SRL R2,4 MOVB @CADHEX(R2),@SCOR1+3 *DECIMAL SRL R4,8 MOV @CLRV1,@SCOR2 MOV @CLRV1+2,@SCOR2+2 MOV R4,R4 JEQ SCOR7 SCOR6 LI R5,3 SCOR4 AB @H0100,@SCOR2(R5) CB @SCOR2(R5),@SDIEZ JNE SCOR3 MOVB @SCERO,@SCOR2(R5) DEC R5 JMP SCOR4 SCOR3 DEC R4 JNE SCOR6 SCOR7 RT *------------------ DIBUFF DATA >5000 H0800 DATA >0800 H2200 DATA >2200 BANCO1 DATA >FFFF COLOR FRENTE BANCO2 DATA >0000,>6181,>A1C1,>E1A1,>0000 COLOR FONDO BANCO3 DATA >0000 DDIINN DATA >3040 DDDMIN DATA >0840 0E40 DDDMAX DATA >1340 DDDFLG DATA 1 BANDA LI R0,>8E04 BL @VWTR BAN11 INC @BANDIR C @SCTEX8,@BANDIR JNE BAN12 MOV @DIBUFF,@BANDIR *~~~~~~~~~~~~~~~~~~~~~~~~~~ BAN12 MOV @DDDFLG,@DDDFLG JEQ BAN10 IF 0 THEN INCREMENT S @H0100,@DDIINN C @DDDMIN,@DDIINN JNE BAN8 CLR @DDDFLG JMP BAN8 BAN10 A @H0100,@DDIINN C @DDDMAX,@DDIINN JNE BAN8 INC @DDDFLG *~~~~~~~~~~~~~~~~~~~~ BAN8 MOV @DDIINN,R0 MOV @BANDIR,R6 LI R7,>007F LARGO DE LA BARRA BAN7 MOVB *R6+,R5 DEC R7 JEQ BANSAL LI R8,10 CONT BITS DEL BYTE +1 ANTES +1 DESPUES NEGRO CLR R1 JMP BAN5 BAN6 SLA R5,1 SHIFT 1 BIT JOC BAN4 ES UN 1 GOTO BAN4 = PON COLOR DE FRENTE MOVB @BANCO2(R8),R1 ES UN 0 PON COLOR FONDO JMP BAN5 BAN4 MOVB @BANCO1,R1 BAN5 SWPB R0 MOVB R0,@>F102 SWPB R0 SINGL BYTE WRITE MOVB R0,@>F102 MOVB R1,@>F100 AI R0,>0100 +1 LINEA DEC R8 JNE BAN6 S @H0A00,R0 INC R0 JMP BAN7 BANSAL B @TECLA H0A00 DATA >0A00 *--------------------- SCTEXT TEXT ' ' TEXT 'THIS IS A LITTLE DEMO FOR THE GENEVE 9640' TEXT ' COMPUTER * PROGRAMED JULY 1989 * ' TEXT ' FOR SOURCE CODE SEND A DISKETTE TO : ' TEXT ' KLAUS DETLEV GEBECKE * BLANCO ENCALAD' TEXT 'A 5271 * 1431 BUENOS AIRES * ' TEXT 'ARGENTINA *** YOU CAN WRITE ' TEXT 'IN GERMAN , SPANISH OR ENGLISH *' TEXT ' USE ARROW KEYS FOR SELECT COLOR * ' TEXT '<ESC> RETURN TO DOS * + OR -' TEXT ' CHANGE FOREGROUND OF THIS TEXT *' TEXT ' ' SCTEXF TEXT ' ' SCTEXC DATA SCTEXF-SCTEXT = CANT BYTES TEXT SCTEX8 DATA 0 *------------------------ DEFBAN DATA >082A,>1C2A,>0800,0,>0008,>083E,>0808,0 *+ DATA >0000,>0A0C,>0000,0,>0008,>0808,>0808,0 ,- DATA >0000,>0606,>0000,0,0,0,0,0 ./ DATA >7E81,>8181,>7E00,0 0 DATA >0041,>FF01,>0000,0,>4385,>8991,>6100,0 2 DATA >4281,>9191,>6E00,0,>1828,>48FF,>0800,0 4 DATA >E2A1,>A1A1,>9E00,0,>3E51,>9111,>0E00,0 6 DATA >8087,>8890,>E000,0,>6E91,>9191,>6E00,0 8 DATA >6091,>9294,>7800,0,>0000,>1414,>0000,0 9: DATA >0000,>0202,>0000,0 DATA 0,0,0,0,0,0,0,0,0,0 DATA 0,0,0,0,0,0,0,0,0,0 DATA >3F48,>8848,>3F00,0,>81FF,>9191,>6E00,0 B DATA >7E81,>8181,>4200,0,>81FF,>8181,>7E00,0 D DATA >FF91,>9191,>8100,0,>FF90,>9090,>8000,0 F DATA >7E81,>8989,>4E00,0,>FF10,>1010,>FF00,0 H DATA >0081,>FF81,>0000,0,>0281,>8181,>FE00,0 J DATA >FF18,>2442,>8100,0,>FF01,>0101,>0100,0 L DATA >FF40,>2040,>FF00,0,>FF60,>1806,>FF00,0 N DATA >FF81,>8181,>FF00,0,>FF90,>9090,>6000,0 P DATA >7E81,>8582,>7D00,0,>FF98,>9492,>6100,0 R DATA >6191,>9191,>8E00,0,>8080,>FF80,>8000,0 T DATA >FE01,>0101,>FE00,0,>E01C,>031C,>E000,0 V DATA >FE01,>1E01,>FE00,0,>C324,>1824,>C300,0 X DATA >C030,>1F30,>C000,0,>8187,>99E1,>8100,0 Z *------------------------------- CONVER LI R2,DEFBAN LI R3,>5000 BUFFER LI R4,SCTEXT MOV @SCTEXC,R5 CANTIDAD CONV2 MOVB *R4+,R6 >XX00 SRL R6,8 >00XX CI R6,>0020 JNE CONV3 LI R6,>0040 CONV3 AI R6,-42 SLA R6,3 X 8 BYTES DE DEF A R2,R6 LI R7,8 8BYTES MOVER CONV1 MOVB *R6+,*R3+ DEC R7 JNE CONV1 DEC R5 JNE CONV2 MOV @SCTEXC,R0 FIN TEXTO SLA R0,3 *8 AI R0,>5000 DIR DATOS MOV R0,@SCTEX8 B @F6SPR *-------------------------------- COPY "DSK6.CHARDEF" END

DODOC/D

          DISK ORGANIZER Vers. 1.5
          ========================


                           lauff{hig nur auf GENEVE 9640
                        }berpr}ft ab MDOS 1.14 und GPL 1.04
     
     
                 D I E S E S    P R O G R A M M    W I R D    A L S

                      F A I R W A R E    V E R B R E I T E T .
        

                                     
                                     
                                     
          Bedienungsanleitung f}r


          a) Programmfunktionen

          b) Erstellung der Dateien








                            (C) Copyright Oktober 1989

                  Idee, Programm und Adaptierung :
                                        STEININGER Reinhold
                                        Kleinw|rt 39
                                        A-4030 Linz
                                        \sterreich


                  Ausf}hrungstips und Gestaltung
                                        SCHWALM Josef
                                        Smolagasse 4/8/3
                                        A-1220 Wien
                                        \sterreich
       ===============
       
       MYARC, MDOS, GENEVE und 9640 sind eingetragene Warenzeichen von
       MYARC Inc.  in Basking Ridge, New Jersey, USA.
       
       IBM ist ein eingetragenes Warenzeichen der International Business
       Machines Inc.  
       
       Im Zusammenhang mit dieser Software und dieser Anleitung wird
       keine ausdr}ckliche oder stillschweigende Garantie gew{hrt. Auch
       wird keinerlei Verantwortung f}r irgendwelche Neben- bzw.
       Folgesch{den, die aus der Benutzung dieses Programms entstehen,
       }bernommen. Weiters gibt es auch keine Garantie auf v|llige
       Fehlerfreiheit dieser Software.
       
       Diese Software f}r den GENEVE 9640 wurde mit dem Softwarepaket C99
       V4.1 (c) 1989 von Clint Pulley erstellt. Wenn auch Sie diese
       fantastische Programmiersprache n}tzen, die Clint Pulley f}r den
       GENEVE 9640 geschaffen hat, so vergessen auch Sie bitte nicht an
       Ihn den FAIRWAREBETRAG von US$ 20 zu senden, denn da~ dem GENEVE
       9640 ein Erfolg zukommen wird, braucht er Programmierer wie Clint
       Pulley.
       
       Auch dieses Menueprogramm wird auf Fairwarebasis verbreitet. Daher
       bitte ich Sie, wenn Sie dieses Programm n}tzlich finden und Sie es
       daher verwenden, 70 oeS oder 5 U$ oder 10 DM mittels EURO-SCHECK
       an STEININGER Reinhold, Kleinw|rt 39, A- 4030 Linz, \sterreich
       oder an SCHWALM Josef, Smolagasse 4/8/3, A- 1220 Wien, \sterreich
       zu senden.  

       Alle diejenigen, die diese kleine Aufmerksamkeit auch durchf}hren,
       werden in eine Liste aufgenommen, anhand derer dann m|gliche wei-
       tere Updates -^gegen Ersatz der jeweiligen Spesen (Disk, Porto und
       Verpackung)^- verbreitet werden.  
                            
     
       
                                Besten Dank im voraus,

                                STEININGER Reinhold - SCHWALM Josef

     Disk Organizer Vers. 1.5

        Inhaltsverzeichnis
        ==================
       
       
       (A) Programmfunktionen ........................................ 2
           1. Allgemeines ............................................ 2
           2. Installation ........................................... 2
           3. N|tige Dateien ......................................... 2
           4. Auswahlm|glichkeiten ................................... 3
           5. Allgemeine Bildschirmanzeigen .......................... 3
           6. Programmablauf ......................................... 3

       (B) Erstellen der Dateien ..................................... 4
           1. Allgemeines ............................................ 4
           2. Konfigurationsfiles .................................... 4
           3. Menuefiles ........ .................................... 5

       (C) Inkompatibilit{ten mit anderen Programmen ................. 6

       (D) Versionsnummer und Copyrights ............................. 6 

       (A) Programmfunktionen
       ======================

       1. Allgemeines
       
       Der DISK-ORGANIZER entstand, um eine M|glichkeit zu schaffen, Pro-
       gramme f}r die beiden Modi des GENEVE 9640 bequem mittels Menue
       ausw{hlen und laden zu k|nnen. Diese Menueprogramme sind in der
       IBM-Welt weit verbreitet und daher fand ich, da~ dies auch f}r den
       GENEVE 9640 ein Mu~ w{re. 

       Dies konnte jedoch erst dann realisiert werden, als MYARC die M|g-
       lichkeit einer freien Festlegung der AUTOEXEC-Datei geschaffen
       hatte.  F}r alle, die es noch nicht wissen: Man kann von der
       Kommandozeile bzw. aus jedem BATCH-File den GENEVE 9640 neu star-
       ten indem man einfach ein "&&" eingibt. Dies hat ein R}cksetzen
       aller Parameter, wie z.B. L|schen der Ramdisk, zur Folge. Wenn man
       jedoch das "&&" vor ein BATCH-File setzt, so wird der Rechner neu
       gestartet und dieses File als neues AUTOEXEC-File angesehen.

       Als Programmiersprache bot sich C99 V4.1 ((c)1989 Clint Pulley)
       f|rmlich an, um ein kompaktes Programm mit umfassenden M|glich-
       keiten zu schaffen.
       
       2. Installation
       
       AUTOEXEC   : F}r den DISK-ORGANIZER ist kein besonderes AUTOEXEC-
                    File notwendig. Empfehlenswert (und auch am k}rzesten,
                    mehr ist nicht notwendig) ist: 
             
                    ECHO OFF
                    PATCH PFILE114
                    DO DOSMENU GPLMENU CONFIG_DOS CONFIG_GPL EXE
                    &EXE
       
       PATCH      : ein C99-Programm von Clint Pulley, das mittels eines
                    DIS/VAR 80 - Files Fehler im MDOS korrigiert.
                    PFILE114 ist dieses File f}r MDOS V1.14.
       
       DO         : ist der DISK-ORGANIZER.

       CONFIG_DOS : Konfigurationsfile f}r MDOS-Mode.

       CONFIG_GPL : Konfigurationsfile f}r GPL-Mode.

       DOSMENU    : Menue-Konfigurationsfile f}r MDOS-Mode.

       GPLMENU    : Menue-Konfigurationsfile f}r GPL-Mode.

       EXE        : erzeugtes DIS/VAR 80-File. 
       
       &EXE       : als Autoexec-File startet den GENEVE 9640 neu.
     


       Die angef}hrten Namen m}ssen nat}rlich nicht eingehalten werden,
       wobei noch zu erw{hnen w{re, da~ auf einer Diskette auch mehrere
       Konfigurationsfiles und Menuefiles vorhanden sein k|nnen.
     

       3. N|tige Dateien 
       
       Um den DISK-ORGANIZER betreiben zu k|nnen, sind zum Programm, wie
       schon erw{hnt, zus{tzlich noch f}nf DIS/VAR 80 - Files n|tig. Dies
       sind:

           -- die beiden Konfigurationsfiles f}r den MDOS-Mode und den
              GPL-Mode,
           -- die Menuefiles f}r MDOS und GPL und last but not least 
           -- das aus Teilen der vorangegangenen Files gebildete neue
              "AUTOEXEC"-File.  

       Auf die Erstellung dieser Dateien wird dann im zweiten Teil dieser
       Anleitung genauer eingegangen.

       Die ersten vier Dateien m}ssen auf jeden Fall w{hrend des gesamten
       Programmablaufs auf Disketten in den Laufwerken des Systems zur
       Verf}gung stehen.
       

       ACHTUNG:
       
       Um den Programmcode m|glichst kompakt zu halten, wird software-
       m{~ig nicht }berpr}ft, ob die Menuefiles und die Konfigurations-
       files auf der Diskette und/oder in korrektem Zustand vorhanden
       sind. Wenn dies nicht der Fall ist, gibt es keine korrekte Pro-
       grammfunktion und ein Absturz des GENEVE 9640 kann nicht ausge-
       schlossen werden.  

       4. Auswahlm|glichkeiten
     
       In allen Auswahllisten kann durch Dr}cken der neben dem Menuepunkt
       stehenden Zahl oder durch Bewegung des roten Farbbbalkens mittels
       der Cursortasten (bzw. ALT X oder ALT E) und anschlie~endem
       Dr}cken der ENTER-Taste das jeweilige Programm geladen werden.

       Ein Ausstieg ins MDOS vom MDOS-Mode bzw. GPL-Mode ist nur mittels
       'F7' nach Anwahl des entsprechenden Modes m|glich. Wenn man einen
       Mode ausgew{hlt hat, kommt man nur durch Bet{tigen der Taste 'ESC'
       auf die MODE-Auswahlliste zur}ck.
     
       5. Allgemeine Bildschirmanzeigen
     
       Am Schirm finden Sie, zus{tzlich zum 
          -- Menuetitel und den maximal neun Menuepunkten pro Seite, noch
          -- die aktuelle Systemzeit,
          -- das aktuelle Systemdatum in europ{ischer Form,
          -- die aktuelle Menueseite und
          -- die h|chste anw{hlbare Menueseite des selektierten Modes,
             sowie den Hinweis,
          -- mit welchen Tasten Sie in den Menueseiten bl{ttern k|nnen.
       
       6. Programmablauf
     
       Nach dem Programmstart erscheint eine Wahlm|glichkeit zwischen
       MDOS- und GPL-Mode. Nach Anwahl eines Modes, wird dann die
       Auswahlliste des entsprechenden Bereiches am Schirm ausgegeben.
       Wenn im angew{hlten Rechnermode mehrere Menue-Seiten vorhanden
       sind, so werden die aktuelle Seite und die h|chste Seitennummer am
       Schirm rechts oben angezeigt. Zwischen den Seiten ist dann ein
       Bl{ttern mittels "Pg Dn" und "Pg Up" (bzw. F4 und F6) m|glich. 
       
       Beim ausgew{hlten Menuepunkt ist der Titel rot unterlegt. Nach
       Anwahl eines Programmes erfolgt das Kopieren des g}ltigen
       Konfigurationsfiles des ausgew{hlten Modes; daran angeschlossen
       werden die BATCH-Kommandos, die f}r das selektierte Programm im
       g}ltigen Menuefile gefunden werden.  Anschlie~end erfolgt ein
       Neustart des Rechners mit diesem neu erzeugten File.
       
       Mittels F7 ist ein Ausstieg ins MDOS m|glich, wenn die Frage
       "CONFIRM EXIT TO MDOS" mit "Y"es beantwortet wird. Im MDOS gilt
       dann der Mode, von welchem der Ausstieg aus dem DISK-ORGANIZER
       erfolgte.  
       
       Mittels der Taste 'ESC' kann man auf die MODE-Auswahlliste
       zur}ckgehen und neu ausw{hlen.
     
     
       (B) Erstellen der Dateien
       =========================
      
       1. Allgemeines
       
       Zum Erstellen der vier zum DISK-ORGANIZER geh|rigen Files kann man
       jeden Editor, der ein DIS/VAR 80 - File erzeugt, (wie z.B den
       TI-Editor des E/A-Paketes, den TI-Writer Editor, MY-Word oder QDE)
       verwenden. 
     
       
       2.  Konfigurationsfiles
       
       In den Konfigurationsfiles wird festgelegt, mit welchen Attributen
       der GENEVE 9640 neu gestartet wird. Nachfolgend finden Sie je ein
       Beispiel f}r MDOS-Mode und GPL-Mode :
       
       a) MDOS-Mode
       
          CLS                        Bildschirm l|schen
          ECHO OFF                   Keine Kommandos anzeigen
          RAMDISK 180                180 kByte Ramdisk anlegen
          ASSIGN C=DSK5:             Ramdisk als Laufwerk C festlegen
          SPOOL 16                   16 kByte Druckerspooler anlegen
          PROMPT $n\$p$g             MDOS-Prompt ver{ndern
          PATH A:;B:;C:;             Suchpfad f}r Laufwerk A,B und C
          MODE PIO:70,8              Parallele Schnittstelle konfigurieren
       
       b) GPL-Mode
       
          CLS                        Bildschirm l|schen
          ECHO OFF                   Keine Kommandos anzeigen
          PROMPT $n\$p$g             MDOS-Prompt ver{ndern
          MODE PIO:70,8              Parallele Schnittstelle konfigurieren
          TIMODE                     TI-Mode setzen
          RAMDISK 120                120 kByte Ramdisk anlegen
          ASSIGN C=DSK5:             Ramdisk als Laufwerk C festlegen
          PATH A:;B:;C:;             Suchpfad f}r Laufwerk A,B und C
     
       
       Diese beiden Files finden Sie auch auf der Diskette unter dem
       Namen CONFIG_DOS und CONFIG_GPL.

       3. Menuefiles
       
       In den Menuefiles wird festgelegt :
          -- wieviele Seiten maximal aufgerufen werden k|nnen,
          -- an welcher Position im Menuefile die einzelen Seiten
             beginnen,
          -- wieviele Menuepunkte pro Seite existieren (max. neun),
          -- wieviele BATCH-Kommandos f}r jeden einzelnen Menuepunkt
             ausgef}hrt werden sollen,
          -- wie die einzelnen Seiten hei~en,
          -- wie jeder Menuepunkt hei~t und
          -- welche BATCH-Kommandos f}r jeden einzelnen Menuepunkt
             ausgef}hrt werden.  

       Nachfolgend finden Sie wieder je ein Beispiel f}r ein Menue f}r
       den MDOS-Mode und GPL-Mode :
       
       a) MDOS-Menue
       
          2                          2 Menueseiten
          2                          1. Seite beginnt zwei Zeilen weiter
          10                         2. Seite beginnt 10 Zeilen weiter
          3,1,1,2                    3 Menuepunkte, 1,1 und 2 BATCH-Komm.
          Myarc-MDOS Menu            Seitentitel der 1.Seite
          Advanced Basic IV          1. Menuepunkt
          DSK.SYSTEM.BASIC1          1 Batchkommando
          Myart V1.4                 2. Menuepunkt
          DSK.MYART.MYART            1 Batchkommando
          Hyper-Copy Corcomp         3. Menuepunkt
          DSK.SYSTEM.HC-CC           2 Batchkommandos
          &&AUTOEXEC
          1,1                        1 Menuepunkt mit 1 Batchbefehl
          Utilities                  Seitentitel der 2.Seite
          Archiver 3.02              1. Menuepunkt
          TRUN01 ARC3                1 Batchkommando
       
       b) GPL-Menue
       
          1                          1 Menueseite
          1                          1.Seite beginnt eine Zeile weiter
          6,1,1,1,1,1,1              6 Menuepkte. mit je einem BATCH-Komm.
          Texas Instruments GPL-Menu Seitentitel der einzigen Seite
          GPL-Interpreter V1.04      1. Menuepunkt
          GPL                        1 Batchkommando
          Disk-Manager V4.0          2. Menuepunkt
          GPL DM40G                  1 Batchkommando
          Editor-Assembler V6.5A     3. Menuepunkt
          GPL EA6                    1 Batchkommando
          TI-Editor-Assembler Modul  4. Menuepunkt
          GPL EA                     1 Batchkommando
          MECHATRONIC Extended Basic 5. Menuepunkt
          GPL XB                     1 Batchkommando
          Mini Memory 2              6. Menuepunkt
          GPL MM2                    1 Batchkommando
     
       
       Diese beiden Files finden Sie auch wieder auf der Diskette unter
       den Namen DOSMENU und GPLMENU. 

       (C) Inkompatibilit{t mit Programmen
       ===================================
        
       Der DISK-ORGANIZER Vers. 1.5 hat keinerlei bekannte Kompatibili-
       t{tsprobleme.
       
       
       (D) Versionsnummer und Copyrights
       =================================

       Zu diesem Manual geh|rt der DISK-ORGANIZER Vers. 1.5.  Programm und
       Manual werden auf FAIRWARE-Basis verbreitet.  Programm und Manual
       stehen unter Copyright (c) Oktober 1989 von 

           STEININGER Reinhold       und       SCHWALM Josef
           Kleinw|rt 39                        Smolagasse 4/8/3
           A-4030 Linz                         A-1220 Wien
           \sterreich                          \sterreich
     
       Weitere Hinweise zu anderen Copyrights finden Sie auch auf der
       zweiten Seite dieses Manuals.  

       Versionsnummer und Vermerke zum Copyright stehen auch auf der
       ersten Auswahlliste des DISK-ORGANIZERS.

&EXE

ECHO OFF
PROMPT $n\$p$g
TIMODE
MODE RS232/1:9600,E,7,1
RAMDISK 128
SPOOL 16
ASSIGN E=DSK5:
ASSIGN G=DSK7:
PATH E:;G:;A:;B:;
MODE F5
MODE B16
ECHO ON
CLS

ECHO EXIT TO MDOS

AUTOEXEC

ECHO OFF
DO DOSMENU GPLMENU CONFIG_DOS CONFIG_GPL &EXE
&&EXE

CONFIG_DOS

ECHO OFF
PROMPT $n\$p$g
MODE RS232/1:9600,E,7,1
RAMDISK 128
SPOOL 16
ASSIGN E=DSK5:
ASSIGN G=DSK7:
PATH E:;G:;A:;B:;
MODE F5
MODE B16
ECHO ON
CLS

CONFIG_GPL

ECHO OFF
PROMPT $n\$p$g
TIMODE
MODE RS232/1:9600,E,7,1
RAMDISK 128
SPOOL 16
ASSIGN E=DSK5:
ASSIGN G=DSK7:
PATH E:;G:;A:;B:;
MODE F5
MODE B16
ECHO ON
CLS


DO-INFO

    ========================================================================
    =                                                 Martin Zeddies       =
    =                                                 Hauptstra~e 26       =
    =                                                 3180 Wolfsburg 22    =
    =                                                 ==== ------------    =
    ========================================================================
    
                                             Reislingen,den 30.Mai 1990



       Hello Berry !

       With on this disk you get the newest version of the great DISK
       ORGANIZER program from the Vienna GENEVE user group of Austria.
          The actual program version is 1.6 and you can start the program
       under MDOS 1.14F and can handle it with a MOUSE.
          
          A week ago I phoned with one of the authors of this great
       software and he told me that they working on an editor for the
       CONFIG_DOS,CONFIG_GPL and DOSMENU,GPLMENU files which you need on
       the disk with the DO program file.
          
          The greatest problem is that they do not find the time to write
       the additions for the program but I heard a lot of good ideas for
       the DISK ORGANIZER while I phoned with Mr. Josef Schwalm.
          
          When you like to try the program with your own software you have
       surely to modify the files DOSMENU and GPLMENU !
          
          I think that you have get an older version of the DISK ORGANIZER
       and in the documents you will find the information what you have to
       do to optimize the files to your software.
          
          
                                  Sincerely

                                             Martin Zeddies

DOSMENU

3
3
10
25
3,1,1,1
MDOS - Grafikprogramme
Myart V1.4
DSK.MENU3.MYART
Picture Transfer
DSK.MENU3.PICT
Mixpicture V0.01
DSK.MENU3.MIXPIC
7,1,1,1,1,1,1,1
MDOS - Utilities
Hypercopy-CorComp
DSK.MENU3.HC-CC
Austria-Copy V1.00
DSK.MENU3.COPYW
Disk Report Utility V2.5
DSK.MENU3.REPORT
FileZap V1.5
DSK.MENU3.FILEZAP
Archiver V3.02
DSK.MENU3.TRUN01 ARC3
Disassembler / Memory Editor V1.2
DSK.MENU3.BHDMV
Set Printer Modes
DSK.MENU3.PRSET
2,1,1
MDOS - Prog. Sprachen
MYBASIC V2.99A
DSK.MENU3.BASIC1
FORTH
DSK1.FORTH

GPLMENU

3
3
20
29
8,1,1,1,1,1,1,1,1
Texas Instruments GPL-Menu
GPL-Interpreter V1.04  + TI-Basic
G1
GPL-Interpreter V1.04  + Mouse Menu V2.3
GPL
Editor Assembler       + Mouse Menu V2.3
GPL EA
Editor Assembler V6.5a + Mouse Menu V2.3
GPL EA6
XBasic Mechatronic     + Mouse Menu V2.3
GPL XB
Mini Memory 2          + Mouse Menu V2.3
GPL MM2
Manager 1000 V4.0      + Mouse Menu V2.3
GPL B:DM40
GPL + Mouse Menu + EA6.5a + COPY RAMDISK
COPYGPL
4,1,1,1,1
Utilities GPL/EA5 - MDOS
Archiver             V3.03
EXEC DSK.MENU2.ARC3
Birdwell Utilities   V4.12
EXEC DSK.MENU2.UTIL1
Disk-Manager 1000    V4.0
EXEC DSK.MENU2.MGR1
My-Word              V1.22
DSK.MYWORD.EXEC MW
2,1,1
Games GPL/EA5 - MDOS
St. Nick
EXEC DSK2.ST-NICK
Solitaire
EXEC DSK2.SOLITAIRE

MENUDOCS

The 'menu' program allows you an easy way to select and run the 5 programs listed. All software listed must be provided by the user, but if you are unable to obtain them, I will provide them if you send me a disk and mailer with return postage. NOT-MYTERM and MYART multi-task with the 'menu', that is upon program exit, the 'menu' will come back up. The other 3 do not multi-task properly, but this can be overcome by creating a batch file to reboot the menu. I set up a single letter batch files from MDOS as follows:

   COPY CON M


   CLS
   ECHO
   ECHO loading..
   ECHO
   MENU

When selecting DOS Editor(9640 NEWS VOL 1 #5), FILEZAP 1.5 or Advanced Basic 2.99A, the program selected will load and the 'menu' will come back up.., simply hit ESC and the selected program is there. I currently use DSK9 for everything, but you can change that to suit yourself. This is done by using a sector editor and editing the next to the last sector in MENV. You will notice that all filenames are 3 letters long, you must use this format when setting up your copies of these programs from whichever device you choose to run from. On the Horizon Ramdisk I am using I have on there MENU,MENV, EDI,EDJ(DOS Editor) NMT,NMU(NOT-MYTERM), etc. Once everything is set up properly, you should have no problems. The 2 function key selections are self explanatory and both work fine. If you have any problems I can be reached at my home address or on GEnie mail at G.HIGGS or on DELPHI mail at GHIGGS. Enjoy..

BOXER-DOCS

BOXER

Boxer is a simple demo program either requiring WINDOWS 9640, or the WIN-DRIVE program archived separately here in 9640 News, Vol 2 #1.

This program, along with source code is intended to promote WINDOWS developed code with some utilities that I commonly use to obtain graphics control of the Geneve.

To Run Boxer,

      1) Load WINDOWS or WIN-DRIVE
      2) Either at MDOS prompt, or LOAD Task option, load BOXER from the
         respective drive.

Enjoy!!!

Note: On a full 2 meg 0 wait expansion system, the 'windows' appear in about 1/2 the time. VDP speed is greatly enhanced with the 0 wait state option and additional memory.

BOXES

SFIRST    B    @MAIN3
ELEVEN    DATA 11
HFD       DATA >FD00
UTIL      DATA 9
ERROR     BLWP @0
EIGHT     DATA 8
ONE       DATA 1
FOUR      DATA 4
HEX0458   DATA >0458
MAPPER    EQU  >F110
INKEYBUFF EQU  >E100       KEYIN BUFFER IN HIGH RAM
LIBPAG    EQU  >2000
MDOS      EQU  >0000        blwp @mdos to return to mdos
DOSWSP    EQU  >F020          WAS >F000
HEX40     DATA 40
HEXFFFF   DATA >FFFF
HEXFF05   DATA >FF05
FIVE
KBD       DATA 5
MMG       DATA 7
VID
SIX       DATA 6
KEYSET    DATA >1234
KEYRTN    DATA 0
HEX0
ZERO
H00       DATA 0
THREE     DATA 3

NOMEM  DATA >0D,>0A
       TEXT 'Not enough memory, task aborting...'
       BYTE >0D,>0A,0
NOMEMLN  EQU $-NOMEM
       EVEN
*
PGETBL BSS 10
MAIN1
MAIN3  LI   R0,1         *Begin setting up for extra memory
       LI   R1,7         *Request 7 pages
       LI   R2,1         *Local page #1
       CLR  R3           *Slow RAM is OK since it's disk access
       XOP  @MMG,0       *Ask system for the RAM...
       ABS  R0           *Check for errors
       JEQ  GATMEM       *If none, then go to GOTMEM
       LI   R0,>27
       LI   R1,NOMEM
       LI   R2,NOMEMLN
       XOP  @VID,0
       BLWP @MDOS        *Warm Reboot of MDOS
GATMEM LI   R0,4         *Get mmgt page map.
       LI   R1,PGETBL    *Put it at pgetbl
       LI   R2,20        *Pgetbl is 10 words wide
       XOP  @MMG,0       *

STARTMEUP66
       MOVB @PGETBL+1,@>F111              lets map our memory in
       MOV  @PGETBL+2,@>F112
       MOV  @PGETBL+4,@>F114
       MOV  @PGETBL+6,@>F116


       LWPI DOSWSP                        let's load our workspaces

       LI   R0,0
       XOP  @ELEVEN,0

       LI   R0,0
       LI   R1,8
       XOP  @VID,0

TEXTDISPLAY

       LI   R0,>08
       MOV  @MENU1MARGIN,R1
       MOV  @MENU1MARGIN+2,R2
       MOV  @MENU1MARGIN+4,R3
       MOV  @MENU1MARGIN+6,R4
       MOV  @COLOR1,R5
       XOP  @ELEVEN,0
       BL   @TTYOUT
       DATA MENU1,0

       LI   R0,>08
       MOV  @MENU2MARGIN,R1
       MOV  @MENU2MARGIN+2,R2
       MOV  @MENU2MARGIN+4,R3
       MOV  @MENU2MARGIN+6,R4
       MOV  @COLOR2,R5
       XOP  @ELEVEN,0
       BL   @TTYOUT
       DATA MENU2,0

       LI   R0,>08
       MOV  @MENU3MARGIN,R1
       MOV  @MENU3MARGIN+2,R2
       MOV  @MENU3MARGIN+4,R3
       MOV  @MENU3MARGIN+6,R4
       MOV  @COLOR3,R5
       XOP  @ELEVEN,0
       BL   @TTYOUT
       DATA MENU3,0

       LI   R0,>08
       MOV  @MENU4MARGIN,R1
       MOV  @MENU4MARGIN+2,R2
       MOV  @MENU4MARGIN+4,R3
       MOV  @MENU4MARGIN+6,R4
       MOV  @COLOR4,R5
       XOP  @ELEVEN,0
       BL   @TTYOUT
       DATA MENU4,0

       LI   R0,>08
       MOV  @MENU5MARGIN,R1
       MOV  @MENU5MARGIN+2,R2
       MOV  @MENU5MARGIN+4,R3
       MOV  @MENU5MARGIN+6,R4
       MOV  @COLOR5,R5
       XOP  @ELEVEN,0
       BL   @TTYOUT
       DATA MENU5,0

       LI   R0,>08
       MOV  @MENU6MARGIN,R1
       MOV  @MENU6MARGIN+2,R2
       MOV  @MENU6MARGIN+4,R3
       MOV  @MENU6MARGIN+6,R4
       MOV  @COLOR6,R5
       XOP  @ELEVEN,0
       BL   @TTYOUT
       DATA MENU6,0

       LI   R0,>08
       MOV  @MENU7MARGIN,R1
       MOV  @MENU7MARGIN+2,R2
       MOV  @MENU7MARGIN+4,R3
       MOV  @MENU7MARGIN+6,R4
       MOV  @COLOR7,R5
       XOP  @ELEVEN,0
       BL   @TTYOUT
       DATA MENU7,0

       LI   R0,>08
       MOV  @MENU8MARGIN,R1
       MOV  @MENU8MARGIN+2,R2
       MOV  @MENU8MARGIN+4,R3
       MOV  @MENU8MARGIN+6,R4
       MOV  @COLOR8,R5
       XOP  @ELEVEN,0
       BL   @TTYOUT
       DATA MENU8,0

       LI   R0,>08
       MOV  @MENU9MARGIN,R1
       MOV  @MENU9MARGIN+2,R2
       MOV  @MENU9MARGIN+4,R3
       MOV  @MENU9MARGIN+6,R4
       MOV  @COLOR9,R5
       XOP  @ELEVEN,0
       BL   @TTYOUT
       DATA MENU9,0

       LI   R0,>08
       MOV  @MENUAMARGIN,R1
       MOV  @MENUAMARGIN+2,R2
       MOV  @MENUAMARGIN+4,R3
       MOV  @MENUAMARGIN+6,R4
       MOV  @COLORA,R5
       XOP  @ELEVEN,0
       BL   @TTYOUT
       DATA MENUA,0

       LI   R0,>08
       MOV  @MENUBMARGIN,R1
       MOV  @MENUBMARGIN+2,R2
       MOV  @MENUBMARGIN+4,R3
       MOV  @MENUBMARGIN+6,R4
       MOV  @COLORB,R5
       XOP  @ELEVEN,0
       BL   @TTYOUT
       DATA MENUB,0

       LI   R0,>08
       MOV  @MENUCMARGIN,R1
       MOV  @MENUCMARGIN+2,R2
       MOV  @MENUCMARGIN+4,R3
       MOV  @MENUCMARGIN+6,R4
       MOV  @COLORC,R5
       XOP  @ELEVEN,0
       BL   @TTYOUT
       DATA MENUC,0

       DEC  @COUNTER
       MOV  @COUNTER,R0
       MOV  R0,R0
       JEQ  EXITROUTINE


       LI   R0,>19
       LI   R1,120
       LI   R2,5
       LI   R3,5
       LI   R4,210
       LI   R5,500
       LI   R6,0
       CLR  R7
       XOP  @SIX,0





       B    @TEXTDISPLAY




EXITROUTINE
       LI   R0,>03           *let's define our window to the full screen
       LI   R1,0             *so that when we exit, if no other programs are
       LI   R2,0             *present, we have GMODE 6, full screen display.
       LI   R3,24
       LI   R4,79
       XOP  @ELEVEN,0

       LI   R0,2             *use windows for key accept,
       LI   R1,0             *when any key pressed, we resume execution
       XOP  @ELEVEN,0

       LI   R0,7
       XOP  @ELEVEN,0

       LI   R0,0
       LI   R1,1
       XOP  @SIX,0

       BLWP @0
COUNTER DATA 4


MENU1MARGIN DATA 10,10,120,80
MENU1       TEXT ' Menu 1'
            BYTE >0D,>0A,0
            EVEN
COLOR1      DATA >1234

MENU2MARGIN DATA 20,20,130,90
MENU2       TEXT ' Menu 2'
            BYTE >0D,>0A,0
            EVEN
COLOR2      DATA >2345

MENU3MARGIN DATA 30,30,140,100
MENU3       TEXT ' Menu 3'
            BYTE >0D,>0A,0
            EVEN
COLOR3      DATA >3456

MENU4MARGIN DATA 40,40,150,110
MENU4       TEXT ' Menu 4'
            BYTE >0D,>0A,0
            EVEN
COLOR4      DATA >4567

MENU5MARGIN DATA 50,50,160,120
MENU5       TEXT ' Menu 5'
            BYTE >0D,>0A,0
            EVEN
COLOR5      DATA >5678

MENU6MARGIN DATA 60,60,170,130
MENU6       TEXT ' Menu 6'
            BYTE >0D,>0A,0
            EVEN
COLOR6      DATA >6789

MENU7MARGIN DATA 70,70,180,140
MENU7       TEXT ' Menu 7'
            BYTE >0D,>0A,0
            EVEN
COLOR7      DATA >789A

MENU8MARGIN DATA 80,80,190,150
MENU8       TEXT ' Menu 8'
            BYTE >0D,>0A,0
            EVEN
COLOR8      DATA >89AB

MENU9MARGIN DATA 90,90,200,160
MENU9       TEXT ' Menu 9'
            BYTE >0D,>0A,0
            EVEN
COLOR9      DATA >9ABC

MENUAMARGIN DATA 100,100,210,170
MENUA       TEXT ' Menu A'
            BYTE >0D,>0A,0
            EVEN
COLORA      DATA >ABCD

MENUBMARGIN DATA 110,110,220,180
MENUB       TEXT ' Menu B'
            BYTE >0D,>0A,0
            EVEN
COLORB      DATA >BCDE

MENUCMARGIN DATA 120,120,230,190
MENUC       TEXT ' Menu C'
            BYTE >0D,>0A,>0D,>0A
            TEXT ' By B. Miller'
            BYTE >0D,>0A
            TEXT ' for 9640 News'
            BYTE >0D,>0A,0
            EVEN
COLORC      DATA >DEF0


**********************************************
**** TTYOUT STRING ROUTINE FOR WINDOWS *******
**********************************************
* Usage BL   @TTYOUT                         *
*       DATA STRING,STRINGLENGTH             *
*                 (or zero, full null term)  *
**********************************************

TTYSTRRTN DATA 0
TTYOUT
TTYSTR LI   R1,>E400     *String Buffer for WINDOWS display
       MOV  *R11+,R2     *pointer to string
       MOV  *R11+,R3     *string length
       MOV  R11,@TTYSTRRTN   *return address
       MOV  R3,R3        *Null terminated string?
       JEQ  TTYS2        *Yes, copy until NULL is found
TTYS1  MOVB *R2+,*R1+    *Repeat  Move source byte to target
       DEC  R3           *Until R3 bytes have been moved
       JEQ  TCOPY        *When done, exit routine
       JMP  TTYS1        *Else continue
TTYS2
       CLR  R0           *R0 <- 0
TTYS3  MOVB *R2+,R0      *Move byte into r0
       MOV  R0,R0        *Is byte a NULL?
       JEQ  TTYS4        *If yes, jump to TTYS4
       MOVB R0,*R1+      *Else move byte to target & inc target address
       JMP  TTYS3        *Loop again
TTYS4  MOVB R0,*R1+      *Move the NULL char
TCOPY
       LI   R0,>01       *display the string
       XOP  @ELEVEN,0    * of WINDOWS's display routines
       MOV  @TTYSTRRTN,R11    *restore our return address
       B    *R11         *return

**************************************************************************
       END

!ASM

ASM A:PTUS,A:PTUO,,ROC
ASM A:\S\EAUTILS,A:\O\EAUTILO,,ROC
ASM A:\S\INPUTS,A:\O\INPUTO,,ROC
ASM A:\S\DIOS,A:\O\DIOO,,ROC
ASM A:\S\TMODE2S,A:\O\TMODE2O,,ROC

!LINK

BLOCK >A000,>BFFA
ADD A:PTUO
ADD A:\O\EAUTILO
ADD A:\O\INPUTO
ADD A:\O\DIOO
ADD A:\O\TMODE2O
STAT

DIOS

* DIOS
* BUD WRIGHT
* UPDATED: 11-26-89
*
        DEF SETRC,EMIT,SCROLL,DSPLY
        DEF SCRDAT,ROW,COL
        REF VMBW,VSBW,VMBR,VSBR,KSCAN

ROW     BYTE 1
COL     BYTE 1
MINROW  BYTE 1
MAXROW  BYTE 26
MINCOL  BYTE 1
MAXCOL  BYTE 80
MINCHR  BYTE 32
MAXCHR  BYTE 129
OFFSET  BYTE 0
        EVEN
*
UTLWS   BSS 32
*
* BLWP @DSPLY
* BYTE ROW,COL
* DATA CPU ADD OF STRING, TERMINATED WITH 0
*
DSPLY  DATA EMITWS,$+2
       MOVB *R14+,R5
       SRL R5,8
       MOVB *R14+,R6
       SRL R6,8
       MOV *R14+,R3

DSPLY1 BL @CNVRT
       CLR R1
       MOVB *R3+,R1
       JEQ DSPLY2
       BLWP @VSBW
       INC R6
       BL @CHK1
       JMP DSPLY1
DSPLY2 RTWP
*
SCRDAT  DATA 80,25,80,-80,160,80*25
*
* BLWP @SETRC
* BYTE mR,MR,mC,MC
*
SETRC   DATA UTLWS,$+2
        MOVB *R14,@MINROW
        MOVB *R14+,R0
        SRL R0,8
        MOV @SCRDAT+4,R9        COULD BE SET BY MODE COMMAND
        MPY R0,R9
        MOV R10,@SCRDAT         1ST ROW SCROLL COMMAND
        MOVB *R14,@MAXROW
        MOVB *R14+,R0
        SRL R0,8                MAKE A WORD
        MOVB @MINROW,R1
        SRL R1,8                MAKE A WORD
        S R1,R0                 FIND # OF ROWS IN WINDOW
        MOV R0,@SCRDAT+2        PUT IN SCROLL TABLE
        MOVB *R14+,@MINCOL
        MOV @SCRDAT+4,R0
        NEG R0                  MAKE NEGATIVE NUMBER
        MOV R0,@SCRDAT+6        PUT IN SCROLL TABLE
        MOV @SCRDAT+4,R0
        SLA R0,1                MAX COL*2
        MOV R0,@SCRDAT+8
        MOVB *R14+,@MAXCOL
        MOVB @MAXROW,R0
        SRL R0,8
        DEC R0
        MOV @SCRDAT+4,R9
        MPY R0,R9               FIND LAST COL
        MOV R10,@SCRDAT+10      PUT IN SCRL TABLE
        MOVB @MINROW,@ROW
        MOVB @MINCOL,@COL       CURSOR START
        RTWP
*
* BLWP @SCROLL
*
LNBUFF  BSS 80                  BUFFER FOR FAST SCROLL
SCROLL  DATA UTLWS,$+2
        MOV @SCRDAT,R0          1ST ROW+1
        MOV @SCRDAT+2,R3        # OF ROWS TO SCROLL
        MOV @SCRDAT+4,R2        MODE
        LI R1,LNBUFF
SCRL1   BLWP @VMBR
        A @SCRDAT+6,R0          UP TWO ROWS
        BLWP @VMBW              WRITE IT
        A @SCRDAT+8,R0          DOWN TWO ROWS
        DEC R3                  LAST ROW?
        JNE SCRL1
        MOV @SCRDAT+10,R0       LAST ROW ADD
        LI R1,>2000             SPACE CHR
SCRL2   BLWP @VSBW              CLEAR LAST ROW IN WINDOW
        INC R0
        DEC R2
        JNE SCRL2
        RTWP
*
* R1=MSB BYTE TO WRITE
* BLWP @EMIT
*
EMITWS  BSS 32
EMIT    DATA EMITWS,$+2
        CLR R1
        MOVB @2(R13),R1
        MOVB @ROW,R5
        SRL R5,8
        MOVB @COL,R6
        SRL R6,8
        CB R1,@MINCHR
        JL CONTL1
        CB R1,@MAXCHR
        JHE CONTL2
        BL @CNVRT
        AB @OFFSET,R1
        BLWP @VSBW
        INC R6
EMIT2   BL @CHK1
        MOVB @EMITWS+11,@ROW
        MOVB @EMITWS+13,@COL
CONTL2  RTWP

CONTL1  SRL R1,8
        SLA R1,1
        LI R2,CODES
        A R1,R2
        MOV *R2,R2
        BL *R2
        JMP EMIT2

CODES   DATA NUL,SOH,STX,ETX,EOT,ENQ,ACK
        DATA BEL,BS,HT,LF,VT,FF,CR,SO,SI
        DATA DLE,DC1,DC2,DC3,DC4,NAK,SYN
        DATA ETB,CAN,EM,SUB,ESC,FS,GS,RS,US
* 0-31 CHARACTERS

NUL
SOH
STX
ETX
EOT
ENQ
ACK
SO
SI
DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US
BEL     LI R0,SDATA
BEL1    MOVB *R0+,R2
        SRL R2,8
        JEQ BELOUT
BEL2    MOVB *R0+,@>8400
        DEC R2
        JNE BEL2
        MOVB *R0+,R1
        SRL R1,8
        JEQ BELOUT
BEL3    LI R2,>0800
BEL4    DEC R2
        JNE BEL4
        DEC R1
        JNE BEL3
        JMP BEL1
BELOUT  RT

SDATA   BYTE >03,>9F,>E4,>F2,5
        BYTE >02,>E4,>F0,12
        BYTE >02,>E4,>F2,10
        BYTE >02,>E4,>F4,8
        BYTE >02,>E4,>F6,6
        BYTE >02,>E4,>F8,4
        BYTE >02,>E4,>FA,2
        BYTE >01,>FF,0
        EVEN

BS      MOV R11,R7
        BL @CNVRT
        LI R1,>2000
        AB @OFFSET,R1
        BLWP @VSBW
        DEC R6
        B *R7

HT      INC R6
        RT

CR      MOVB @MINCOL,@EMITWS+13
        RT

LF
VT      INC R5
        RT

FF      MOVB @MINROW,@EMITWS+11
        MOVB @MINCOL,@EMITWS+13
        MOVB @MINROW,R0
        SRL R0,8
        DEC R0
        MOV @SCRDAT+4,R9
        MPY R0,R9
        MOV R10,R0                  1ST VDP ADD
        LI R1,>2000
        AB @OFFSET,R1
        MOV @SCRDAT+2,R2
        INC R2
        MOV @SCRDAT+4,R9
        MPY R2,R9
        MOV R10,R2                  # OF BYTES
FF1     BLWP @VSBW
        INC R0
        DEC R2
        JNE FF1
        RT

CHK1    MOV R11,R10
        CB @EMITWS+13,@MAXCOL
        JLE CHK2
        INC R5
        MOVB @MINCOL,@EMITWS+13
        JMP CHK3
CHK2    CB @EMITWS+13,@MINCOL
        JHE CHK3
        DEC R5
        MOVB @MAXCOL,@EMITWS+13
        JMP CHK4
CHK3    CB @EMITWS+11,@MAXROW
        JLE CHK4
        MOVB @MAXROW,@EMITWS+11
        BLWP @SCROLL
        JMP CHK5
CHK4    CB @EMITWS+11,@MINROW
        JHE CHK5
        MOVB @MINROW,@EMITWS+11
CHK5    B *R10

CNVRT   MOV R5,R0
        DEC R0
        MOV @SCRDAT+4,R9
        MPY R0,R9
        MOV R10,R0
        A R6,R0
        DEC R0
        RT
*

EAUTILS

* EAUTILS
******************************************
*      UTILITIES AS IN EDITOR/ASSEMBLER  *
*                                        *
*      REFERENCE EDITOR/ASSEMBLER MANUAL *
*      FOR CALLING CONVENTIONS           *
******************************************
*
****EQUATES USED BY DSR, GPL, & XML LINKS
*
SCLEN  EQU  >8355
SCNAME EQU  >8356
CRULST EQU  >83D0
SADDR  EQU  >83D2
XMLTAB EQU  >0CFA
SUBSTK EQU  >8373
*
*
****WORKSPACE DECLARATIONS
****SOME OVERLAP BETWEEN GENERAL UTILITY
****WORKSPACE AND DSRLNK WORKSPACE
*
UTILWS DATA 0,0,0        WORKSPACE FOR SOME OF THE ROUTINES
R2LB   EQU  UTILWS+5
DSRLWS DATA 0,0,0,0,0    DSRLNK WORKSPACE
TYPE   DATA 0,0,0,0,0,0,0,0,0,0,0
*
****DATA
*
C100   DATA >0064        100
H2000  EQU  $
H20    DATA >2000        BLANK, NULL
DECMAL TEXT '.'          PERIOD
HAA    BYTE >AA          VALIDATION BYTE
*
****BLWP VECTORS
*
        DEF GPLLNK,XMLLNK,KSCAN,VSBW,VMBW
        DEF VSBR,VMBR,VWTR,DSRLNK

GPLLNK EQU  $
       DATA UTILWS
       DATA GLENTR
XMLLNK EQU  $
       DATA UTILWS
       DATA XMLENT
KSCAN  EQU  $
       DATA UTILWS
       DATA KSENTR
VSBW   EQU  $
       DATA UTILWS
       DATA VSBWEN
VMBW   EQU  $
       DATA UTILWS
       DATA VMBWEN
VSBR   EQU  $
       DATA UTILWS
       DATA VSBREN
VMBR   EQU  $
       DATA UTILWS
       DATA VMBREN
VWTR   EQU  $
       DATA UTILWS
       DATA VWTREN
DSRLNK EQU  $
       DATA DSRLWS
       DATA DLENTR
*
****GPL LINK ROUTINE
*
GLENTR EQU  $
       LI   R3,>0300     START SCAN @GROM >300
GLEN0  LIMI 0            DISABLE INTERRUPTS
       MOVB R3,@>9C02    SET HI BYTE
       SWPB R3
       MOVB R3,@>9C02    SET LO BYTE
       SWPB R3
       CLR  R4
       MOVB @>9800,R4    GET GROM DATA
       CI   R4,>0F00     >0F?
       JNE  GLEN1           NO
       MOVB @>9800,R4       YES, CK NEXT BYTE
       CI   R4,>F000     >F0?
       JEQ  GLEN2           YES, FOUND XML INSTR
GLEN1  INC  R3              NO, TRY NEXT
       JMP  GLEN0
GLEN2  MOVB @SUBSTK,R1   GET CURRENT SUBR STACK PTR
       SRL  R1,8         PUT IN LO BYTE
       AI   R1,>8302     ADD PAD OFFSET
       MOV  R3,*R1       STORE XML ADDR
       SWPB R1           PUT STACK OFFSET IN HI BYTE
       MOVB R1,@SUBSTK   UPDATE STACK PTR
       MOV  *R14+,R0     GET GPL ROUTINE ADDRESS
       MOVB R0,@>9C02    SET HI BYTE
       SWPB R0
       MOVB R0,@>9C02    SET LO BYTE
       LI   R0,GLEN3     GET RETURN ADDR
       MOV  R0,@>8300    SAVE IT
       LWPI >83E0        SWITCH TO GPLWS
       B    @>006A       EXECUTE GPL CODE
GLEN3  LIMI 2            RESTORE INTERRUPTS ON RETURN
       LWPI UTILWS       RESTORE OUR WORKSPACE
       RTWP              RETURN TO USER
*
****XML LINK ROUTINE
*
XMLENT EQU  $
       LIMI 0            DISABLE INTERRUPTS
       MOV  *R14+,@>83E2   SAVE ARG TO GPLWS R1
       LWPI >83E0        SWITCH TO GPLWS
       MOV  R11,@UTILWS+22   SAVE GLPWS R11
       MOV  R1,R2        COPY ARGUMENT
       CI   R1,>8000     DIRECT ARG?
       JH   XML1
       SRL  R1,12        MOVE ARG TO LO NIBBLE
       SLA  R1,1         MULT BY 2 (2 BYTES PER ENTRY)
       SLA  R2,4         MOVE TABLE ADDR TO UPPER NIBBLE
       SRL  R2,11        ADJUST TO LSB/DIV BY 8
       A    @XMLTAB(R1),R2   GET BR ADDR POINTER
       MOV  *R2,R2       GET ROUTINE ADDR
XML1   BL   *R2          GO TO ROUTINE
       LWPI UTILWS       RESTORE WORKSPACE
       MOV  R11,@>83F6   RESTORE GPLWS R11
       RTWP              RETURN TO USER
*
****KEY SCAN ROUTINE
*
KSENTR EQU  $
       LWPI >83E0        USE GPLWS
       MOV  R11,@UTILWS+22   SAVE GPLWS R11
       BL   @>000E       SCAN KEYBOARD
       LWPI UTILWS       RESTORE WORKSPACE
       MOV  R11,@>83F6   RESTORE R11
       RTWP              RETURN TO USER
*
***VDP SINGLE BYTE WRITE
*
VSBWEN EQU  $
       BL   @WADR        SET VDP WRITE ADDR
       MOVB @2(R13),@>8C00   WRITE BYTE TO VDP
       RTWP
*
****VDP MULTIPLE BYTE WRITE
*
VMBWEN EQU  $
       BL   @WADR        SET VDP WRITE ADDR
       MOV  @2(R13),R1   GET ADDR OF DATA
       MOV  @4(R13),R2   GET # BYTES
VMBWL  MOVB *R1+,@>8C00  XFER DATA TO VDP
       DEC  R2
       JNE  VMBWL
       RTWP
*
****VDP SINGLE BYTE READ
*
VSBREN EQU  $
       BL   @RADR        SET VDP READ ADDR
       MOVB @>8800,@2(R13)   READ BYTE FROM VDP
       RTWP
*
****VDP MULTIPLE BYTE READ
*
VMBREN EQU  $
       BL   @RADR        SET VDP READ ADDR
       MOV  @2(R13),R1   GET BUFFER ADDR
       MOV  @4(R13),R2   GET # BYTES
VMBRL  MOVB @>8800,*R1+  XFER DATA FROM VDP
       DEC  R2
       JNE  VMBRL
       RTWP
*
****VDP WRITE REGISTERS
*
VWTREN EQU  $
       MOV  *R13,R1      GET REG # & VALUE
       ORI  R1,>8000     MERGE IN REG CONTROL BIT
       SWPB R1
       MOVB R1,@>8C02    WRITE LO BYTE FIRST
       SWPB R1
       MOVB R1,@>8C02    THEN HI BYTE
       RTWP
*
****SET VDP READ/WRITE ADDRESS
*
WADR   EQU  $
       MOV  *R13,R2      GET VDP ADDRESS
       ORI  R2,>4000     MERGE WRITE BIT
       JMP  RADR2
RADR   EQU  $
       MOV  *R13,R2      GET VDP ADDRESS
RADR2  SWPB R2
       MOVB R2,@>8C02    WRITE LO BYTE FIRST
       SWPB R2
       MOVB R2,@>8C02    THEN HI BYTE
       RT
*
****DSR LINK ROUTINE
*
SAVCRU DATA 0
SAVENT DATA 0
SAVLEN DATA 0
SAVPAB DATA 0
SAVVER DATA 0
NAMBUF BSS  8
*
DLENTR EQU  $
       MOV  *R14+,R5     GET PGM TYPE FOR LINK
       SZCB @H20,R15     RESET EQUAL BIT
       MOV  @SCNAME,R0   GET PTR TO PAB
       MOV  R0,R9        SAVE PTR
       AI   R9,>FFF8     ADJUST TO FLAG
       BLWP @VSBR        READ DEVICE NAME LENGTH
       MOVB R1,R3        COPY IT
       SRL  R3,8         MAKE IT LO BYTER
       SETO R4           INIT COUNTER
       LI   R2,NAMBUF    POINT TO BUFFER
LNK$LP INC  R0           POINT TO NEXT CHAR OF NAME
       INC  R4           INCR CHAR COUNTER
       C    R4,R3        END OF NAME?
       JEQ  LNK$LN         YES
       BLWP @VSBR        READ CURR CHAR
       MOVB R1,*R2+      MOVE INTO BUFFER
       CB   R1,@DECMAL   IS IT A PERIOD?
       JNE  LNK$LP         NO
LNK$LN MOV  R4,R4        SEE IF 0 LENGTH
       JEQ  LNKERR         YES, ERROR
       CI   R4,>0007     SEE IF LENGTH MORE THAN 7 CHARS
       JGT  LNKERR         YES, ERROR
       CLR  @CRULST
       MOV  R4,@SCLEN-1  SAVE NAME LENGTH FOR SEARCH
       MOV  R4,@SAVLEN   SAVE IT HERE TOO
       INC  R4           ADJUST FOR PERIOD
       A    R4,@SCNAME   POINT TO POSITION AFTER NAME
       MOV  @SCNAME,@SAVPAB   SAVE POINTER TO NAME
SROM   LWPI >83E0        USE GPLWS
       CLR  R1           VERSION FOUND OF DSR
       LI   R12,>0F00    INIT CRU ADDR
NOROM  MOV  R12,R12      ANYTHING TO TURN OFF?
       JEQ  NOOFF           NO
       SBZ  0            YES, TURN OFF
NOOFF  AI   R12,>0100    NEXT ROM TO TURN ON
       CLR  @CRULST      CLEAR IN CASE WE ARE DONE
       CI   R12,>2000    SEE IF DONE
       JEQ  NODSR          YES, NO DSR MATCH
       MOV  R12,@CRULST  SAVE ADDR OF NEXT CRU
       SBO  0            TURN ON ROM
       LI   R2,>4000     START AT BEGINNING OF ROM
       CB   *R2,@HAA     CHECK FOR A VALID ROM
       JNE  NOROM           NO ROM HERE
       A    @TYPE,R2     GO TO FIRST POINTER
       JMP  SGO2
SGO    MOV  @SADDR,R2    CONTINUE WHERE WE LEFT OFF
       SBO  0            TURN ROM BACK ON
SGO2   MOV  *R2,R2       IS ADDR A ZERO (END OF LINK)
       JEQ  NOROM          YES, NO PROGRAMS TO CHECK
       MOV  R2,@SADDR    REMEMBER WHERE TO GO NEXT
       INCT R2           GO TO ENTRY POINT
       MOV  *R2+,R9      GET ENTRY ADDR JUST IN CASE
       MOVB @SCLEN,R5    GET LENGTH AS COUNTER
       JEQ  NAME2           IF ZERO, DO NOT CHECK
       CB   R5,*R2+      SEE IF LENGTH MATCHES
       JNE  SGO             NO, TRY NEXT
       SRL  R5,8         YES, MOVE TO LO BYTE AS COUNTER
       LI   R6,NAMBUF    POINT TO BUFFER
NAME1  CB   *R6+,*R2+    COMPARE BUFFER WITH ROM
       JNE  SGO             TRY NEXT IF NO MATCH
       DEC  R5           LOOP TIL FULL LENGTH CHECKED
       JNE  NAME1
NAME2  INC  R1           NEXT VERSION FOUND
       MOV  R1,@SAVVER   SAVE VERSION
       MOV  R9,@SAVENT   SAVE ENTRY ADDR
       MOV  R12,@SAVCRU  SAVE CRU
       BL   *R9          GO RUN ROUTINE
       JMP  SGO          ERROR RETURN
       SBZ  0            TURN OFF ROM IF GOOD RETURN
       LWPI DSRLWS       RESTORE WORKSPACE
       MOV  R9,R0        POINT TO FLAG IN PAB
       BLWP @VSBR        READ FLAG
       SRL  R1,13        JUST KEEP ERROR BITS
       JNE  IOERR          HANDLE ERROR
       RTWP
NODSR  LWPI DSRLWS       NO DSR, RESTORE WORKSPACE
LNKERR CLR  R1           CLEAR FLAG FOR ERROR 0
IOERR  SWPB R1           PUT ERROR IN HI BYTE
       MOVB R1,*R13      STORE ERROR FLAGS IN CALLERS R0
       SOCB @H20,R15     SET EQUAL BIT TO INDICATE ERROR
       RTWP
*

INPUTS

* INPUTS
* MODIFIED BY: BUD WRIGHT

        DEF INPUT,INPUTH
        REF VSBR,VSBW,KSCAN,VWTR

*INPUT SUBROUTINE by Don Cook
*    This subroutine is similar to the Extended Basic
*ACCEPT AT routine. Enter the screen location and length
*as DATA values after the BLWP @INPUT statement.
* e.g. BLWP @INPUT
*      DATA VDP ADD
*      DATA 10  # OF CHARS
*    This will accept and display up to 10 key values
*starting at screen row 2 column 3. Pressing ENTER, FCTN-E,
*or FCTN-X will return you to the main program. If the
*ENTER key is pressed, the EQUAL status bit is set. The
*FCTN-X and FCTN-E keys set or resets the GT status bit.
*Therefore, by using JEQ, JLT or JGT statements, you may
*branch to an appropriate subroutine.
HEXWS BSS 32
INPUT DATA HEXWS,S1GVL1  Allows input of any alphanumeric value
INPUTH DATA HEXWS,S1GVL2 Allows input of only HEX values
************************
*CLEAR (FCTN 4) Routine*
************************
S1CLRR MOV R12,R0        Start at LHS
************************
*ERASE (FCTN 3) Routine*
************************
S1ERS  MOV @TEMPA,R0      Tempory storage of VDP location
       LI R1,>2000             ASCII 32 (blank)
       MOV @TEMPB,R2
S1ERS1 BLWP @VSBW        Show blank
       INC R0                  Next screen location
       DEC R2                  RHS limit?
       JNE S1ERS1
       MOV @TEMPA,R0
       JMP S1IRST
**********************
*AID (FCTN 7) Routine*
**********************
S1TAB  AI R0,4            Move right 4 spaces
       C R0,R5                 Past RHS limit?
       JLT S1IRST
**************************
*PROCEED (FCTN 6) Routine*
**************************
S1PRCD MOV R5,R0         Move to RHS limit
       JMP S1IRST
***********************
*REDO (FCTN 8) Routine*
***********************
S1REDO AI R0,-4          Move left 4 spaces
       C R0,R12                Past LHS limit?
       JGT S1IRST
************************
*BEGIN (FCTN 5) Routine*
************************
S1BEGN MOV R12,R0        Move to LHS limit
       JMP S1IRST
S1GVL2 LI R6,KEYWS+20    Key limits : anything goes!
       JMP S1GVAL
TEMPA  DATA 0
TEMPB  DATA 0
S1GVL1 LI R6,KEYWS+18    Key limits : 0-9, A-F only
S1GVAL MOV *R14+,R0      Get screen start location
       MOV R0,@TEMPA
       MOV R0,R12              Store LHS limit
       MOV *R14+,R5            Get length of input
       MOV R5,@TEMPB
       A  R0,R5                : Calculate
       DEC R5                  : RHS limit
       CLR R15                 Reset status
S1IRST CLR R9            Reset insert mode flag
S1GET  BLWP @KEY          Flash cursor and get key value
       MOVB @>8375,R7          Get key value
       MOV R6,R1
       CB  R7,*R1+             Key value less than ASCII 32?
       JL  S1EDIT
       MOVB *R1,*R1            No key value checks?
       JEQ S1ICHK
S1ACHK MOVB *R1,*R1      Last key value check?
       JEQ S1GET
       CB R7,*R1+              Key value lower than low limit?
       JL S1GET
       CB R7,*R1+              Key value greater than high limit?
       JH S1ACHK
S1ICHK MOV R9,R9         Insert mode?
       JEQ S1PUT
       BLWP @INSERT            Move characters over to insert
S1PUT  MOVB R7,R1         Get key value
       BLWP @VSBW              Show on screen
       C  R0,R5                RHS limit?
       JEQ S1GET
       INC R0                  Move to next screen location
       JMP S1GET
*************************
*DELETE (FCTN 1) Routine*
*************************
S1DEL  BLWP @DELETE       Delete character
       JMP S1IRST
*************************
*INSERT (FCTN 2) Routine*
*************************
S1INS  SETO R9            Set insert flag
       JMP S1GET
******************************
*RIGHT ARROW (FCTN D) Routine*
******************************
S1RGT  C R0,R5            RHS limit?
       JEQ S1IRST
       INC R0                  Move to next screen position
       JMP S1IRST
*****************************
*LEFT ARROW (FCTN S) Routine*
*****************************
S1LFT  C R0,R12           LHS limit?
       JEQ S1IRST
       DEC R0                  Move one screen position left
       JMP S1IRST
S1EDIT SRL R7,7          Get key value from 1-15
       MOV @S1(R7),R7          Get branch subroutine
S1     B *R7
       DATA S1TAB,S1CLRR,S1DEL,S1INS,S1QUIT,S1REDO,S1ERS
       DATA S1LFT,S1RGT,S1DWN,S1UP,S1PRCD,S1RTN,S1BEGN,S1BACK
*****************************
*ARROW DOWN (FCTN X) Routine*
*****************************
S1DWN  DEC R15
       JMP S1RTN
***************************
*ARROW UP (FCTN E) Routine*
***************************
S1UP   INC R15
S1RTN  MOV R15,R15        : Status will be  EQU for ENTER
       STST R15                :                 GT  for FCTN E
S1RT   RTWP                :                 LT  for FCTN X
*******************
*Insert Subroutine*
*******************
INSERT DATA KEYWS,S1I
S1I    MOV @10(R13),R0      Start at RHS (R5 calling routine)
S1IM   C R0,*R13           LHS limit? (R0 calling routine)
       JEQ S1RT
       DEC R0                  Next screen location
       BLWP @VSBR              : Shift screen
       INC R0                  : value one
       BLWP @VSBW              : position right
       DEC R0                  Reset screen location
       JMP S1IM
*******************
*Delete Subroutine*
*******************
DELETE DATA KEYWS,S1D
S1D    MOV *R13,R0          Get screen location
       INC R0                  Move forward one screen space
S1DM   BLWP @VSBR          Get ASCII value there
       DEC R0                  Move back one
       C R0,@10(R13)           RHS limit? (R5 calling routine)
       JEQ S1P32
       BLWP @VSBW              Show ASCII value on screen
       INCT R0                 Next screen location
       JMP S1DM
S1P32  MOVB R9,R1         Get ASCII 32 (blank)(R9=>2000)
       BLWP @VSBW              Put blank at RHS
       RTWP
***********************
*QUIT (FCTN =) Routine*
***********************
S1QUIT JMP S1BACK
***********************
*BACK (FCTN 9) Routine*
***********************
S1BACK LI R0,>0D00
       BLWP @VWTR
       LWPI >83E0
       LIMI 2
       BLWP @>0000
**********************************
*Set up for KEYWS register values*
**********************************
KEYWS BSS 10
****** R5, R6, R7,  R8,   R9,   R10,  R11,  R12
 DATA 1000,750,2500,>FF1E,>2000,>2030,>3941,>4600
 BSS 6
****************
*Key Subroutine*
****************
ZERO   DATA 0
KEY    DATA KEYWS,S1KEY
S1KEY  MOV *R13,R0        Get screen location
       BLWP @VSBR              Get Alpha value at that location
       MOVB R1,R2
       SWPB R1                 Put Alpha value to LSB
       MOVB @KEYWS+17,R1       Put cursor value to MSB
       JMP S1SHOW
S1CRSR SWPB R1           Swap cursor/alpha value
S1SHOW BLWP @VSBW        Show cursor/alpha value
       MOV R7,R3               Delay for cursor blink
S1LKEY DEC R3
       JEQ S1CRSR              Time to swap cursor/alpha?
*                              LIMI 0
       CLR @>8374
       BLWP @KSCAN             Scan keyboard
*                              LIMI 2
       CB @>8375,R8            Key pressed? (R8=>FF1E)
       JEQ S1LKEY
       DEC R4
       JEQ S1DLY1              Delay for key repeat finished?
       CB @>837C,@ZERO         Same key pressed?(R6=>0064)
       JEQ S1LKEY
       MOV R5,R4               Long delay for first key repeat
       JMP S1DLY2
S1DLY1 MOV R6,R4         Short delay for key repeat
S1DLY2 MOV R2,R1         Get alpha value
       BLWP @VSBW              Show alpha value
       RTWP

PTUS

* PTUS version 2
* BUD WRIGHT
* 09-08-89,11-26-89

        DEF PTU,DELAY
        REF INPUT,TMODE2,DSPLY,SETRC,EMIT
        REF VWTR,VSBW,VMBW,VSBR,VMBR,DSRLNK

        B @PTU

MREG    BSS 32

VBUFF   EQU >1800
VBUFF2  EQU VBUFF+>100
PABL    EQU 50
VPAB    EQU >1A00
VPAB2   EQU VPAB+PABL

CPAB    BYTE 0
        BYTE 0
        DATA VBUFF
        BYTE 0
        BYTE 0
        DATA 0
        BYTE 0
FLEN    BYTE 40
        BSS 40
        EVEN

CPAB2   BYTE 0
        BYTE 0
        DATA VBUFF2
        BYTE 80
        BYTE 80
        DATA 0
        BYTE 0
FLEN2   BYTE 40
        BSS 40
        EVEN
*
OPEN    BYTE 0
CLOSE   BYTE 1
READ    BYTE 2
WRITE   BYTE 3

CATHD   BYTE >0D
DV80HD  BYTE >12
STRBUF  BYTE 80
        BSS 80
        EVEN
TXT01
 TEXT 'To make any use out of this program, you must have a copy of Picture'
 BYTE 0
TXT02
 TEXT 'Transfer by: Paul Charlton, a few disks with graphic files on them and'
 BYTE 0
TXT03
 TEXT 'of course a 9640. The program creates a Script or Control file (DV80)'
 BYTE 0
TXT04
 TEXT 'that can be used with Picture Transfer, that allows viewing of every'
 BYTE 0
TXT05
 TEXT 'picture on the disk. PTU is a Public Domain program, but if you feel'
 BYTE 0
TXT06
 TEXT 'this program is worth a few bucks, send your contributions to any of'
 BYTE 0
TXT07
 TEXT 'the other Fairware authors of your choice! Comments can be fowarded to'
 BYTE 0
TXT08
 TEXT 'TIABS (BBS) 614-442-1852, 24hrs. Written by: Bud Wright.'
 BYTE 0
 EVEN

TXT1    TEXT 'PTU Version 2.0, 12-01-89, By: Bud Wright'
        BYTE 0
TXT2    TEXT '       Enter pathname: DSK1.'
        BYTE 0
TXT3    TEXT 'Enter script filename: DSK1.SCRIPT'
        BYTE 0
TXT4    TEXT '   Enter pause (0-99): 20'
        BYTE 0
        EVEN

TXTTAB  DATA 2*256,1*256,TXT1
        DATA 4*256,3*256,TXT01
        DATA 5*256,3*256,TXT02
        DATA 6*256,3*256,TXT03
        DATA 7*256,3*256,TXT04
        DATA 8*256,3*256,TXT05
        DATA 9*256,3*256,TXT06
        DATA 10*256,3*256,TXT07
        DATA 11*256,3*256,TXT08
        DATA 13*256,1*256,TXT2
        DATA 15*256,1*256,TXT3
        DATA 17*256,1*256,TXT4

PTU     LIMI 0
        LWPI MREG

        BLWP @TMODE2

        LI R0,>0A00+10
        LI R1,>FF00
        LI R2,5
PTU01   BLWP @VSBW
        INC R0
        DEC R2
        JNE PTU01
        LI R1,>8000
        BLWP @VSBW

        BLWP @SETRC
        BYTE 1,26,1,80

        LI R0,TXTTAB
        LI R2,12
PTUA    MOVB *R0,@PTUB
        INCT R0
        MOVB *R0,@PTUB+1
        INCT R0
        MOV *R0+,@PTUC
        BLWP @DSPLY
PTUB    BYTE 0,0
PTUC    DATA 0
        DEC R2
        JNE PTUA

INPUT1  BLWP @INPUT
        DATA 12*80+23
        DATA 40
        JGT INPUT1

        BLWP @PARSE
        DATA 12*80+23
        DATA CPAB+10
        DATA 40

INPUT2  BLWP @INPUT
        DATA 14*80+23
        DATA 40
        JGT INPUT1

        BLWP @PARSE
        DATA 14*80+23
        DATA CPAB2+10
        DATA 40

        BLWP @INPUT
        DATA 16*80+23
        DATA 2
        JGT INPUT2

        LI R0,16*80+23
        BLWP @VSBR
        MOVB R1,@STR3+7
        INC R0
        BLWP @VSBR
        MOVB R1,@STR3+8
*
        BLWP @SETRC
        BYTE 19,26,1,80

        MOVB @OPEN,@CPAB       OPEN #1:FN$,RELATIVE,INTERNAL,INPUT
        CLR @CPAB+6            REC #0
        MOVB @CATHD,@CPAB+1
        BL @DO

        MOVB @OPEN,@CPAB2      OPEN #2:FN$,DISPLAY,VARIABLE 80
        MOVB @DV80HD,@CPAB2+1
        BL @DO2

        LI R0,VBUFF2
        LI R1,STR0
        MOVB *R1+,R2
        MOVB R2,@CPAB2+5
        SRL R2,8
        MOV R2,R6
        BLWP @VMBW
        MOVB @WRITE,@CPAB2
        BL @DO2

        MOV R6,R2
        LI R0,VBUFF2
DIS0    BLWP @VSBR
        BLWP @EMIT
        INC R0
        DEC R2
        JNE DIS0
        LI R1,>0D0A
        BLWP @EMIT
        SWPB R1
        BLWP @EMIT

        MOVB @READ,@CPAB       INPUT #1,REC 0
        BL @DO
        CLR R8

MAKEP1  INC @CPAB+6            INC REC
        BL @DO                 INPUT #1,REC 1:A$

        LI R0,VBUFF
        CLR R1
        BLWP @VSBR
        MOV R1,R7
        JEQ EOF
        INC R8

        CLR R6
        LI R0,VBUFF2
        LI R1,STR1
        MOVB *R1+,R2
        AB R2,R6
        SRL R2,8
        BLWP @VMBW

        A R2,R0
        LI R1,FLEN
        MOVB *R1+,R2
        AB R2,R6
        SRL R2,8
        BLWP @VMBW

        A R2,R0
        AB R7,R6
        SRL R7,8
        LI R4,VBUFF+1
        MOV R0,R5
MAKEP2  MOV R4,R0
        BLWP @VSBR
        MOV R5,R0
        BLWP @VSBW
        INC R4
        INC R5
        DEC R7
        JNE MAKEP2
        MOVB R6,@CPAB2+5
        MOVB @WRITE,@CPAB2
        BL @DO2

        MOVB R6,R2
        SRL R2,8
        LI R0,VBUFF2
DIS1    BLWP @VSBR
        BLWP @EMIT
        INC R0
        DEC R2
        JNE DIS1
        LI R1,>0D0A
        BLWP @EMIT
        SWPB R1
        BLWP @EMIT

        LI R0,VBUFF2
        LI R1,STR2
        MOVB *R1+,R2
        MOVB R2,@CPAB2+5
        SRL R2,8
        MOV R2,R6
        BLWP @VMBW
        BL @DO2

        MOV R6,R2
        LI R0,VBUFF2
DIS2    BLWP @VSBR
        BLWP @EMIT
        INC R0
        DEC R2
        JNE DIS2
        LI R1,>0D0A
        BLWP @EMIT
        SWPB R1
        BLWP @EMIT

        LI R0,VBUFF2
        LI R1,STR3
        MOVB *R1+,R2
        MOVB R2,@CPAB2+5
        SRL R2,8
        MOV R2,R6
        BLWP @VMBW
        BL @DO2

        MOV R6,R2
        LI R0,VBUFF2
DIS3    BLWP @VSBR
        BLWP @EMIT
        INC R0
        DEC R2
        JNE DIS3
        LI R1,>0D0A
        BLWP @EMIT
        SWPB R1
        BLWP @EMIT

        CI R8,127
        JNE GOMAK1
        JMP EOF
GOMAK1  B @MAKEP1
*
EOF     MOVB @CLOSE,@CPAB
        BL @DO

        MOVB @CLOSE,@CPAB2
        BL @DO2

        LI R1,>0A07
        BLWP @EMIT
        SWPB R1
        BLWP @EMIT

        BLWP @DSPLY
        BYTE 26,1
        DATA NOTHER

        BLWP @INPUT
        DATA 25*80+27
        DATA 1

        LI R1,'  '
        LI R0,25*80+27
        BLWP @VSBR
        CI R1,'Y '
        JEQ AGAIN
        CI R1,'y '
        JEQ AGAIN
        JMP OVER

AGAIN   LI R1,>0C00
        BLWP @EMIT
        B @INPUT1

OVER    LI R0,>0D00            TURN OFF BLINKING!!
        BLWP @VWTR
        LWPI >83E0
        LIMI 2
        BLWP @>0000

NOTHER  TEXT 'You want to run PTU again? N'
        BYTE 0
        EVEN

STR0    BYTE 5
        TEXT 'ERASE'
STR1    BYTE 4
        TEXT 'USE '
STR2    BYTE 2
        TEXT 'DI'
STR3    BYTE 8
        TEXT 'PAUSE 20'
        EVEN

DO      LI R0,VPAB
        LI R1,CPAB
        LI R2,PABL
        BLWP @VMBW
        AI R0,9
        MOV R0,@>8356
        SB @>837C,@>837C
        BLWP @DSRLNK
        DATA 8
        LI R0,VPAB+1
DOA     BLWP @VSBR
        ANDI R1,>E000
        JEQ DOOK
        BLWP @DSPLY
        BYTE 26,1
        DATA FILERR
        BLWP @DELAY
        DATA 25
        B @OVER
*
DOOK    RT

FILERR  TEXT 'A file error has occurred...'
        BYTE 0
        EVEN

DO2     LI R0,VPAB2
        LI R1,CPAB2
        LI R2,PABL
        BLWP @VMBW
        AI R0,9
        MOV R0,@>8356
        SB @>837C,@>837C
        BLWP @DSRLNK
        DATA 8
        LI R0,VPAB2+1
        JMP DOA

UTILWS  BSS 32
CMOVE   DATA UTILWS,$+2
        MOV *R13,R0
        MOV @2(R13),R1
        MOV @4(R13),R2
CMOVE1  MOVB *R0+,*R1+
        DEC R2
        JNE CMOVE1
        RTWP
*
* BLWP @PARSE
* DATA VDP ADDRESS
* DATA CPU ADDRESS
* DATA MAX # OF BYTES
*
PARSE   DATA UTILWS,$+2
        MOV *R14+,R0
        MOV *R14+,R3
        MOV R3,R4
        DEC R4
        MOV *R14+,R5
        CLR R2
PARSE1  CLR R1
        BLWP @VSBR
        CI R1,>2000
        JEQ PARSE2
        MOVB R1,*R3+
        INC R2
        INC R0
        DEC R5
        JNE PARSE1
PARSE2  SWPB R2
        MOVB R2,*R4
        RTWP
*
DELAY   DATA UTILWS,$+2
        MOV *R14+,R0
DELAY1  SETO R1
DELAY2  DEC R1
        JNE DELAY2
        DEC R0
        JNE DELAY1
        RTWP

        END

TMODE2S

* 9640 SCREEN MODES
* BUD WRIGHT
* TMODE2S

        DEF TMODE2
        REF SCRDAT
        REF VWTR,VSBW,VMBW,VMBR,VSBR
*
TMWS    BSS 32
PATTAB  BSS >800
PATFLG  DATA 0

COPYPAT MOV @PATFLG,@PATFLG
        JNE COPYOUT
        LI R0,>0800
        LI R1,PATTAB
        LI R2,>0800
        BLWP @VMBR
        SETO @PATFLG
COPYOUT RT
*
* BLWP @TMODE2     (80 COLUMN)
*
TMODE2  DATA TMWS,$+2
        LI R0,80
        LI R1,SCRDAT
        AI R1,4
        MOV R0,*R1

        BL @COPYPAT

        LI R0,>0130
        BLWP @VWTR
        LI R0,>0004
        BLWP @VWTR
        LI R0,>0980
        BLWP @VWTR
        LI R0,>0402         >1000 PAT DES TABLE
        BLWP @VWTR
        LI R0,>0203         >0000 SCRN TABLE 2160 CHRS 26.5 LINES
        BLWP @VWTR
        LI R0,>032F         >0A00 COLTAB FOR BLINK
        BLWP @VWTR
        LI R0,>0A00         MSB COLORTAB
        BLWP @VWTR
        LI R0,>071A         TEXT COLORS
        BLWP @VWTR
        LI R0,>0CA1         BLINK COLORS
        BLWP @VWTR
        LI R0,>0D33         BLINK RATE
        BLWP @VWTR
*
* LOAD CHR TABLE            0000h  +---------------------------+
        LI R0,>1000                |  screen table             |
        LI R1,PATTAB        0870h  +---------------------------+
        LI R2,>0800         0a00h  +---------------------------+
        BLWP @VMBW                 |  color table  (blinking)  |
* CLEAR SCREEN              0b0eh  +---------------------------+
        LI R0,>0000         1000h  +---------------------------+
        LI R1,>2000                |  pattern description      |
        LI R2,2160          1800h  +---------------------------+
TMODE2B BLWP @VSBW
        INC R0
        DEC R2
        JNE TMODE2B
* CLEAR COLTAB FOR BLINKING
        LI R0,>0A00
        LI R1,>0000
        LI R2,>10E
TMODE2C BLWP @VSBW
        INC R0
        DEC R2
        JNE TMODE2C

        LI R0,>0170
        BLWP @VWTR
        SWPB R0
        MOVB R0,@>83D4
        RTWP
*

VDP+192K

HOW TO EXPAND YOUR GENEVE TO 192k VDP RAM

Another hardware project for your favourite computer

by Alexander Hulpke

This article is ment to show, how to install additional 64k of VDP RAM (expansion RAM) on your Geneve. This RAM can NOT be used to display, but only as an quickly accessible interrim storage. Some programs, for example my YAPP painting program, make use of this RAM, that is standard on the Mechatronic 80 Zeichen Karte and easyly upgradable on the DIJIT AVPC.

RNING--WARNING---WARNING---WARNING---WARNING---WARNING---WARNING---WARN

This Project requires soldering and handling of CMOS Memory chips. You should attempt it ONLY if you are experienced in working with computer hardware. This project is not for beginners. You should have done something similar yet, for example the 32k static RAM addition. I will not describe the handling and pin counting fully, if you are experienced, you'll have no problem with it. If you are not sure, wheteher you are able to do it, ask a friend with experience to do it. Mistakes may do irreversible damage to your computer !

RNING--WARNING---WARNING---WARNING---WARNING---WARNING---WARNING---WARN

Read the description fully first, before starting !

This operation requires :

Costs: I paid for two chips 40DM (approx. 25-30$). By now, the price should be lower!

What to do:


=-=-=-= PIN 16 (CAS) I v 9938 < =-=-=-=-=-=-=-=-= I > 50464 I =-=-=-=-=-=-= =-=-=-=-=-=-=-=-= x PIN 61

Otherwise check the working of the VDP RAM with the checking program. Load the VDPTEST program with EA3, Name START. It will run about 1 minute and display afterwards the results. All tests should issue "passed", otherwise recheck your work !

Move all persons you replaced in the room again, and show them your masterwork!

Be aware, that you can acces the new RAM ONLY by changing VDP R45. Also in G6/G7 mode only every SECOND Byte is used! See 9938 manual for details. Enjoy 64k Expansion RAM! Your done.

VDPTEST/T

* VDP RAM CHECK
* (C) 1990 BY ALEXANDER HULPKE

       DEF  START

TEWO   EQU  >5AA5
TEWO2  EQU  >A55A

MYWS   BSS  32
BLWS   BSS  32
BANKAD DATA 0
TEBU   BSS  40

TITEL  TEXT '9938 VDP RAM check by A.H.'

CHKTXT TEXT 'Test '
TENUM  TEXT 'x '

PASTXT TEXT 'passed'
FAITXT TEXT 'failed'

WHOTXT TEXT 'finished-press CTRL-SHFT-SHFT'

       EVEN

VDPRD  EQU  >8800
VDPWD  EQU  >8C00
VDPWA  EQU  >8C02

*                        Verbesserte Support-Routinen
*                        fuer 128k VDP-Ram
VSBW   DATA BLWS,VSBW1
VMBW   DATA BLWS,VMBW1
VSBR   DATA BLWS,VSBR1
VMBR   DATA BLWS,VMBR1
VWTR   DATA BLWS,VWTR1
*
VSBW1  BL   @VWAUB
       MOVB 1,@VDPWD     Byte schreiben
       RTWP
*
VMBW1  BL   @VWAUB
VMWL   MOVB *1+,@VDPWD   Bytes schreiben
       DEC  2
       JNE  VMWL
       RTWP
*
VSBR1  BL   @VRAUB
G      MOVB @VDPRD,@2(13)   Byte lesen
       RTWP
*
VMBR1  BL   @VRAUB
VMRL   MOVB @VDPRD,*1+    Bytes lesen
       DEC  2
       JNE  VMRL
       RTWP
*
VWAUB  LI   2,>4000      Bit fuer VDP-Write
       JMP  VAUB
VRAUB  CLR  2
VAUB
       MOV *13,0
       MOV 0,1
       ANDI 1,>3FFF      GUELTIGE BITS MASKIEREN
       SRL  0,6          BANK WAEHLEN
       ANDI 0,>0300
       AB   @BANKAD,0    Bank Offset addieren
       MOVB 0,@VDPWA
       LI   0,>8E00
       MOVB 0,@VDPWA
       SOC  2,1
       MOVB @BLWS+3,@VDPWA    ADRESSE SCHREIBEN
       MOVB 1,@VDPWA
       MOV  @2(13),1     R1&
       MOV  @4(13),2     R2 uebertragen
       RT
*
VWTR1  MOV  *13,0
       MOVB @1(13),@VDPWA
       ORI  0,>8000
       MOVB 0,@VDPWA
       RTWP

START
       LWPI MYWS
       CLR  @BANKAD
       CLR  0
       LI   1,ENTE
       LI   2,16384
       BLWP @VMBR
*
       LI   0,>000E
       BLWP @VWTR
       LI   0,>0100
       BLWP @VWTR

       LI   3,>0400
*
       LI   9,TEBU

       LI   13,2
BETELO
       LI   4,TEWO
       CLR  5
       CLR  6
       BL   @TEST
*
       CLR  4
       LI   5,TEWO2
       BL    @TEST

       CLR  5
       LI   6,TEWO
       BL   @TEST

       LI   0,>000A
       BLWP @VWTR
       DEC  13
       JNE  BETELO

       LI   0,>0E00
       BLWP @VWTR
       LI   0,>0000
       BLWP @VWTR

       CLR  @BANKAD
       CLR  0
       LI   1,ENTE
       LI   2,16384
       BLWP @VMBW

       LI   0,>01E0
       BLWP @VWTR

       LI   0,3
       LI   1,TITEL
       LI   2,26
       BLWP @VMBW

       LI   0,65
       CLR  8
       LI   9,TEBU
       LI   3,18
MESSLO
       LI   1,83
       S    3,1
       SLA  1,8
       MOVB 1,@TENUM
       LI   1,CHKTXT
       LI   2,7
       BLWP @VMBW

       LI   1,FAITXT
       MOV  *9+,4
       JEQ  FAILED
       LI   1,PASTXT
       INC  8
FAILED LI   2,6
WRILO  MOVB *1+,@VDPWD
       DEC  2
       JNE  WRILO
       AI   0,32
       DEC  3
       JNE  MESSLO

       AI   0,64
       LI   1,WHOTXT
       LI   2,29
       BLWP @VMBW

       LIMI 2
FINI   JMP  $
*
TEST   MOV  11,10
       CLR  @BANKAD
       LI   0,>1000
       MOV  4,1
       LI   2,61440   65536-4096
       BL   @CLRBA
*
       MOVB 3,@BANKAD
       CLR  0
       MOV  5,1
       CLR  2
       BL   @CLRBA
*
       LI   0,>2D40
       BLWP @VWTR
       CLR  0
       MOV  6,1
       CLR  2
       BL   @HLRBA
       LI   0,>2D00
       BLWP @VWTR
*
* JETZT TESTEN

       CLR  @BANKAD
       LI   0,>1000
       LI   2,61440
       MOV  4,7
       BL   @CHECK

       MOV  3,@BANKAD
       CLR  0
       MOV  5,7
       CLR  2
       BL   @CHECK

       LI   0,>2D40
       BLWP @VWTR
       CLR  0
       MOV  6,7
       CLR  2
       BL   @HHECK
       LI   0,>2D00
       BLWP @VWTR
*
       B    *10
*
CLRBA  BLWP @VSBW
       DEC  2
CLILO  SWPB 1
       MOVB 1,@VDPWD
       DEC  2
       JNE  CLILO
       RT
*
CHECK  CLR  8
       BLWP @VSBR
       CB   7,1
       JNE  AU
       DEC  2
CHELO  SWPB 7
       CB   @VDPRD,7
       JNE  AU
       DEC  2
       JNE  CHELO
       SETO 8
AU     MOV  8,*9+
       RT
*
HLRBA  BLWP @VSBW        SAVE FOR HI BANKS
       MOVB 1,@VDPWD
       DEC  2
HLILO  SWPB 1
       MOVB 1,@VDPWD
       MOVB 1,@VDPWD
       DEC  2
       JNE  HLILO
       RT
*
HHECK  CLR  8
       BLWP @VSBR
       MOVB @VDPRD,1
       CB   7,1
       JNE  HU
       DEC  2
HHELO  SWPB 7
       MOVB @VDPRD,0
       CB   @VDPRD,7
       JNE  HU
       DEC  2
       JNE  HHELO
       SETO 8
HU     MOV  8,*9+
       RT
*
ENTE   END