**************************************› * *› * BINARY & BASIC MENU/LOADER *› * *› * Copyright (c) 1987 *› * By Mike Apocourastos, *› * UNISOFT Systems *› **› NOTE # 1 'BINBASME.OBJ' IS ON THIS › OL' HACKERS NEWSLETTR DISK! › *› NOTE # 2: The files which are to be› displayed must be protected-Supporting› files like Character Sets, Screens and› other data files as well as DOS & DUP› may clutter the display unnecessarily.› By locking the main files the unwanted› unlocked files stay hidden. Go to DOS› and use [ F ] key to LOCK programs so› that they will show up when program is› run!› Pressing the 1-8 keys will display› the files on the drive corresponding› to the appropriate drive number.› Reading the directory of a drive a› SECOND TIME, will REMOVE the› restriction of the locked files, and› display the whole directory until the› directory of another drive is read.› **************************************› * *› * This program is the property of*› *the author, and it may not b sold*› *without his written consent. *› * However, it may be duplicated*› *and freely exchanged, providing that*› *all notices are left intact. *› * *› **************************************› * *› * Donations (not mandatory) are*› *most welcomed. For complete source*› *listings, donations, comments and*› *recommendations, write to: *› * *› * Mike Apocourastos *› * 84 Lissington Drive, S.W. *› * Calgary, Alberta. *› * T3E-5E3 - CANADA *› * >>>>or call<<<< *› * *› * CALTARI Users Group BBS *› * (403) 285-3382 *› * *› **************************************›› LONG AGO›› In the older days of ATARI, the› closest thing to an automatic load› were these handy little programs which› could run a basic or binary file.›› STEP 2› The next step, was to add a routine› to offer the user a choice of programs› to run. Useful as they were, these› programs had a major drawback. They› could only load one type of files› only. Basic or binary.›› IMPROVEMENTS› This program is a further extension› of these utilities. Its major feature› is the capability of running a file› regardless of type. There are also› additional features to make its use as› easy as possible.›› FAST MACHINE LANGUAGE› The utility is 100% machine› language, and it may be binary loaded› or renamed to AUTORUN.SYS for› automatic execution. The state of the› internal cartridge is of no› importance, meaning that the computer› may be booted without pressing the› [OPTION] key.›› The MENU› The files which are to be displayed› must be protected. Supporting files› like character sets, screens and other› data files as well as DOS and DUP may› clutter the display unnecessarily. By› locking the main files the unwanted› files stay hidden.› Pressing the 1-8 keys will display› the files on the drive corresponding› to the appropriate drive number.› Reading the directory of a drive a› second time, will remove the› restriction of the locked files, and› display the whole directory until the› directory of another drive is read.› This is not as confusing as it sounds.› In short, every time the directory of› a new drive is read, only the locked› files will show.›› DISPLAY› Twenty six files may be displayed› at the same time, each assigned a› letter from A to Z. When there are› more than 26 files in the directory,› the program prompts the user to press› the space bar for 26 more.›› SpartaDos› SpartaDos users may use the› underline [_] character to separate› words in a filename. This character is› displayed as a space on the menu,› providing the user with a better› looking directory. Users without› SpartaDos may use the [?] character to› accomplish the same. However, a disk› utility will have to be used in› renaming a file with this character.›› BACK TO DOS› Finally, the escape key will cause› the program to return to DOS, where› DUP.SYS may be loaded.›› FILE SELECTION› Selection of a file is accomplished› by pressing the corresponding letter.› Detection of the file type (Basic or› binary) turns the cartridge on or off,› and the loading process is continued.› Certain programs are hybrid. They› consist of a machine language program,› which in turn loads and runs a basic› file. To keep BASIC from being turned› off when such files are loaded, one of› the console keys must be pressed when› the selection is being made.›› The LOADING process.› There are two independent loaders› in this program. A binary loader, and› a basic loader.›› BASIC LOAD› The principal behind the basic› loading process is a little tricky.› The BASIC editor works by GETting a› user input, and acting upon it. To› make it do the same thing without user› interaction, the GET routine is› changed and the input is aquired from› the buffer instead of the keyboard.›› BINARY LOAD› Unlike other utilities which depend› on DOS for loading binary files, this› has its own. It enables it to be› operational regardless of the DOS in› use. And since this part of the› routine occupies memory normally left› alone by others, it should load› virtually any binary file.› **› TECHNICAL INFORMATION› This program is actually four› utilities in one. Each of the parts› may be used independently, and may be› used in other programs.› When the menu is entered, the› contents of the accumulator are saved.› A non-zero number signifies that the› locked file option is to be used. A› zero enables the program to display› all files.› The cartridge is controlled by› manipulating memory location 54017› ($D301), as well as the basic flag at› 1016 ($03F8) and the cartridge state› at location 6. A problem however› arises when the routine is used with› version 2.x of SpartaDos. It seems› that due to its nature, this DOS does› not allow outside interference. Every› time the cartridge state is reversed,› DOS resets it. Therefore, the routine› also modifies the locations where the› state of the cartridge is saved in› SpartaDos 2.x.› In using the basic and binary› loaders, the file must be closed and› the name buffer must hold a legal› filename. The files must be have the› legal headers. ($00 $00 for basic, $FF› $FF for binary) It does not matter› where these routines reside, but the› binary loader may conflict with a› loading file. An answer to this› problem, is to place the utility in› the stack, at $0100 providing that the› pointer doesn't venture too low.› When a basic file is about to be› loaded, the GET pointer of the editor› is forced to point to a routine which› simulates a keyboard input. The string› RUN "Dx:FILENAME.EXT" is passed over› to the editor one character at the› time, and a carriage return causes the› original GET address to be reinstated.› With a command in its buffer, the› editor will proceed to execute it.› The binary file load is completely› different. Each segment is loaded› separately, while the INIT vector is› monitored. When this vector contains a› valid address, (anything over $00)› control of the processor is passed› over to the routine pointed by this› vector for another program execution.› When the routine exits, control is› passed back to this here, and the› loading process is continued until the› vector is loaded again, or there are› no more segments to load. At this time› the RUN vector is examined, and› control is once again passed. At the› absence of valid contents, the first› memory location loaded assumes› control.›› SHORT AND SWEET› The utility uses 10 single density› sectors on the disk, making it an› efficient alternative to DUP.SYS or› typing whole filenames.› **************************************›