/%^"/copy / *c/""/ to disk9%/1. *c/"/ p copy:bed $ ex copy:bed scrat copy:bed -------------------------------------------------------------------------------- You may change two lines in the file above, and convert it into a program which copies FROM deDvice 9 to drive 0, device 8. Check the last three change commands. *d g list:bed *\"/d $ ; Make commands to copy from drive O to drive 9/1 *c/%.%*"/" *c2/"%.%*SEQ/,seq"/ *c2/"%.%*PRG/,prg"/ *c2/"%.%*USR/,usr"/ *c2/"%.%*REL/,rel"/ *c/"%.%*"/%&%& *cnever you have a big update job to do. You can leave off the last two steps (CONFIRM) if you're sure all the files to be copied are on the drive 0 disk. \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\  on it. Check. 3. You may have forgotten to file "list:bed" to drive 0. Check the file. BUG! BUG! BUG! BUG! BUG! 4. BUG: You may have files on drive 1 with the same name as the files to be copied. That's not only a s designed to UPDATE drive 1 by replacing the old files on it with files of the same name from drive 0. It works fine even if there are no such files on drive 1. The first two steps are straightforward. They scratch the old files on drive 1 and copy------------------------------------------------------------------------------- ; Step 1: Scratch all files on disk/1. with the same name (great for updating). *d g list:bed 1d *\"/d $ *c/%.%*"/@ s1:/ *c/"%.%*/ p scrat:bed ex scrat:bed ; Step 2: Revise s , to drive 0. Leave on the BLOCKS FREE line and the disk title line. Our program will delete them for you. 6. PRINT the program SCRCOPY:EXE to drive 0. At this point, you have duplicates of five files on drive 1. We're gonna scratch those  Copying Between Devices If any of you have ever had to copy a long, long list of files to device 9 from device 8--by hand--you know there is no 6809 command either to BACKUP or to COPY an entire disk between devices. With BATCH files, it is a ci no-no, it'll CRASH you for sure! You may avoid that problem in two ways: a. By scratching all files on drive 1 with the same name, automatically, as we'll do below, or b. By using a copy command of the form "copy filename to  the new files to drive 1. You may use these two steps as an indepen- dent program if you are absolutely sure all the files to be copied are on drive 0. If you aren't sure all the files are on drive 0, use the whole program. Steps 3 and 4 check to s crat:bed, still in memory, to become a copy list, $ *c/s1:/c1:*=0:/ p copy:bed *d ex copy:bed ; Step 3: Convert directory of drive 1 to a DELETE command list. di disk/1 to copy:bed <13> <13> <13> <13> *d g copy:bed $ *c/%.%*"/*%/ *c/"%.%*/%/d p copy:bed files from drive 1, copy the entire list of files from drive 0 to drive 1, and then give you a list of the files on list:bed which were NOT copied to drive 1, okay? At the end, you should see on screen the names of the files which are missing--the list inch. We must use the old Waterloo format, however: copy filename,prg to disk9/1.filename,prg and the change commands to do this in the Editor are not simple, or at least weren't until Joe Bostic again came to the rescue with a set of commdisk/1.file- name" -- which will avoid a crash, but won't copy the file. The first alternative is by far the better, for it will update the copy-to disk by copying the file. This we employ below. \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ee what files on the list were NOT copied to drive 1. Joe Bostic whumped up this clever approach. He first gets a directory of drive 1, after copying, and then deletes from our original list all the files we have copied to drive 1. If we failed to copy a*d ; Step 4: Remove all copy commands that were completed. g list:bed $ ex copy:bed scrat copy:bed scrat scrat:bed -------------------------------------------------------------------------------- You're on your own to test SCRCOPY:EXE, but we do sun paragraph 5, above. This capability is no toy: You may attempt to copy a big disk of .asm files using your .cmd file of .b09 files as the index for "list:bed"--only to find that some of the .asm source files aren't copied because they are NOT on tands which change a single filename into a COPY TO format like that above. We worked on it a bit, and found a way to include the necessary PRG, USR, or REL suffixes as well. You must retain, in the file "list:bed", the filetype (PRG, for exam- ple) of th\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ A Scratch-Copy Program We've added a few new commands to this program. We assume you use a direc- tory of a disk without removing either the first line (the name of the disk) or the last liny file, we get a list on screen of the missing, uncopied files. You may well wonder why, in Step 3, we get a directory of disk/1 and then do four Carriage Returns (see the file, below). Well, remember that a directory listing to disk pauses at the ggest a few things for a good demonstration. (The demo is far more complicated than actual use, since we're trying to show why and how the program works.) 1. Get a disk with a fairly large directory in drive 0 (more than 1 screen page). 2. NEW he copy-from disk. You find this out a week later when Sam calls and says "Hey, you didn't send me..." Last, you will find that each step of SCRCOPY:EXE can be filed independently as a separate file. So long as you are careful with your filenames, ye file, just as it appears on a directory. To be consistent, we copy always from drive 0 (device 8) to drive 1 (device 9). Note that the program deletes any line in "list:bed" with no quotes in it: COPYTO9:EXE -------------ne (BLOCKS FREE). You have, of course, edited the list down just to the files you want copied. The command "1d" below deletes the disk name line; the command "*\"/d deletes any line which does not have quotes in it, including BLOCKS FREE. Joe Bostic inveend of each screen. If you don't hit RETURN, you file to disk ONLY the first screen page of that directory.... We add four CRs to make sure we file the longest possible directory for an 8050. 8250 owners may want to add more. If you file SCRCOPY:EXan old, formatted scratch disk in drive 1 with: @ n1:scratch Leave off the id, and it will take about 3 seconds. 3. Use COPY:EXE to copy a list of, say, five of the files which are on drive 0. 4. Then file a directory of drive 0 on drive 0 withou may then EXECUTE any step by itself. The last two steps work nicely as a file called CONFIRM:EXE. The first two steps work fine to scratch and copy, at which point you may stop. We suggest you file SCRCOPY:EXE to your language disk and use it whe------------------------------------------------------------------- *d g list:bed *\"/d $ ; Make commands to copy from drive O to drive 9/1 *c/%.%*"/" *c2/"%.%*SEQ/,seq"/ *c2/"%.%*PRG/,prg"/ *c2/"%.%*USR/,usr"/ *c2/"%.%*REL/,rel"/ *c/"%.%*"/%&%& *cnted the the original version. We use the $ command to get down to the bottom of the screen file so we can watch what happens. You may, incidentally, leave the lines prefaced with a semicolon in the EXE file. Won't hurt a thing. This program iE to disk, be sure to PRINT it! We must convert the <13>'s in the file to real carriage returns. Suggest you now study the program below and see how and why it works. We'll exercise it later. SCRCOPY:EXE The Safe Copying Machine -: di disk list:bed 5. Get list:bed into BEDIT, and add to it three filenames of PHONY files, such as: 12 "never was" SEQ 2 "ain't" PRG 14 "not_there" USR Then refile the amended file as list:bed "george.b09" whatta "temper" he has This is "wonderful" Comments may be anywhere outside of quotation marks. -------------------------------------------------------------------------------- The only requirement is that the fileor on the first line: (You can "put" it, since it has no in it.) .,+8 p scrat:exe SCRAT:EXE The Lazy Scratching Machine -------------------------------------------------------------------------------- *d g list:bedow you make them, they are still EXE files--to be "executed", not read in mED. \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 2. BATCH FILES: First, get a disk without many files on it. Stick it in drive 0. List its----------------------------------------------------------- *d g list:bed $ *c/%.%*"/@ c1:*=0:/ *c/"%.%*/ p copy:bed *d exec copy:bed scrat copy:bed -------------------------------------------------------------------------------- You should have a s :::: BATCH files are limited only by your imagination. Every key on the keyboard may be placed in a PRINTed file; see the list of CONTROL keys in the instruct- ions for BEDIT on this disk. You can move the cursor, delete, backspace, get and put files name start and end within quotation marks, and that there be NO other quotation marks on the line. After you EXECUTE copy:exe, get this tutorial back, so we can play with SCRAT:EXE, which is equally useful. If you've NEWed the disk in drive 1, PF1 t $ *c/%.%*"/@ s0:/ *c/"%.%*/ p scrat:bed *d exec scrat:bed scrat scrat:bed -------------------------------------------------------------------------------- As with COPY:EXE, you should later save SCRAT:EXE to your language disk. Since you will scratc directory to disk with: di disk index The command above will file the "index" on drive 0. Get "index" into the Editor right here and delete all but the first five files. Remove the disk title (the first line) and make sure all the remaini cratch disk in drive 1. We're going to copy the files on "list:bed" to the scratch file with the command below. Don't utter the command following until you read the next few paragraphs! ex copy:exe When you hit RETURN on the command above, control your printer--in short, you can do everything from a EXE file that you yourself can do at the keyboard. There are only three steps in the process: 1) create the "list:bed" file, 2) create an EXE file if you don't have one, and 3) EXECUTE the line below to the command line, and RETURN it: ex copy:exe Go to it. If you have trouble, see the TROUBLES section below. \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 3. How to Use SCRAT:EXE. This h only on drive 0, you can execute SCRAT:EXE directly from the language disk in drive 1, without copying SCRAT:EXE to drive 0. We can't do this, of course, with COPY:EXE since we use drive 1 to copy to. We always must copy COPY:EXE to the disk in drng entries are good files (no BLOCKS FREE allowed!). Don't change any of the entries you leave; all ought to be typical directory listings, and look like the one below: 12 "filetitle" SEQ Now, file the list of five files to drive 0 with: , copy:exe deletes this tutorial, gets the file "list:bed" into mED, deletes all but the filenames, inserts the DOS copy command, and puts the revised file to drive 0 as a working file called "copy:bed". It then EXECUTES copy:bed, copying all files to drhe :exe file. After you hit RETURN on "ex copy:exe" in this tutorial, spend some time creat- ing and EXecuting EXE files. It'll be worth it in time saved for you when you master the use of EXE files. Be sure to copy "copy:exe" to your language disk.command file works in much the same way as COPY:EXE. It will scratch from drive 0 any list of files put to disk as a file named: list:bed. Let's get the old file "list:bed" from drive 0 with: g list:bed, and do it with the screen cursor on the next ive 0. Now, let 'er fly. PF1 the following line to command cursor and RETURN it. ex scrat:exe There are no DOS bugs to afflict SCRAT:EXE. Use it freely. \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ p list:bed [we use :bed to identify data files or lists which will be "executed" by other files]. And be sure to PUT (not PRINT) the file "list:bed to disk. Then look below. File the program between the ------- lines with the screen cursor on the fiive 1, and fini- shes by scratching copy:bed. You need do nothing--except watch. EXECUTE makes SuperPET think you entered the commands in copy:exe at the keyboard. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: WARN You'll find a lot of use for it. It works as well on all .cmd files generated in Development--copying every file on the .cmd file list to drive 1. In fact, COPY:EXE will copy any file or list of files set off by quotation marks in a file named: lisline: (Your file list:bed should insert here) You just copied this list of files from drive 0 to drive 1 with COPY:EXE. Now we'll scratch those files. We won't edit this list, but you certainly can if you don't want all scratched.  POSSIBLE TROUBLES If a command file executes very swiftly (and nothing happens), or if you get a SAY WHAT?, you may find one of several troubles: 1. You PUT a file with a in instead of PRINTing it. It's easy to first line of the file (at *d), with the PUT command (the file has no <> codes in it): .,+8 p copy:exe We have just filed an "execute" file which we'll never have to make again, and which can be used from here on out to copy from dING! There is a DOSBUG which will crash SuperPET if a file with the same filename exists on drive 1, and you're using: c1:*=0:filename. For now, simply NEW the disk in drive 1 with the three-second scratch: @ n1:scratch t:bed. All the entries following will work if put in a "list:bed" file: -------------------------------------------------------------------------------- 12 "file_to_copy" SEQ You may leave comments in the file. include "disk/1.watlib.exp" Before we can scratch: First, take the disk out of drive 1 (it should have on it the files we're going to scratch), and put it in drive 0. Second, file "list:bed", above, to drive 0. Then file SCRAT:EXE (below) to drive 0 with the screen cursnd out. TYPE the file into the Editor: type file:exe If the codes you filed appear on screen as , that's your problem. Get the file into the Editor and PRINT it to disk. 2. The disk in drive 0 may not have the files in "list:bed"rive 0 to drive 1 all the files listed on a file called "list:bed". All you have to do is make the "list:bed" file (which we've done). SuperPET and BEDIT will now do the rest. COPY:EXE : The Lazy Copying Machine --------------------- If you leave off the comma and id, the disk is not formatted, but the BAM and directory are scratched. We'll later show how to avoid this bug easily. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::or: .rith You tell CALC it deals with a decimal entry by using at least ONE decimal point in your entries, like this: (cursor at _) Your Entry: CALC Result after PF4: 456.0/20=_  may be right--or truncated and wrong. .rith Very large numbers will come back in Scientific Notation. Sorry, but we have no cure for that but a 32-bit processor and a math chip. ------------------------------------------------------502 mode and back. One last warning: If you try to use any version of CALC in the monitor, on line 25 of the screen, you get an entry error. Apparently Waterloo routines do not read line 25 of the screen. cape, in both CALC and CALCS! You'll overwri March 8, 1985 TUTORIAL on BATCH FILES, EXECUTE, PRINT, and How to Save Time! :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Let's look first ust PRINT the file to disk: *d [Delete what's in mED and on screen. Normal CR on every line.] g whatfile [Get file "whatfile" from disk 0] 1 [Go to line 1 of the file] <6> [Delete the line with ASCII 6, normal 456.0/20= 22.8000000 12345*1200.0=_ 12345*1200.0= 14814000.0 999.82+423=_ 999.82+413= 1412.82000 .rith You can, of course, use decimal points in both entries. If you use NO decimal po -------------------------- You'll find a tutorial with gobs of examples in the file: calc_tut:e. Don't use CALC in the languages, or in the mED in the languages. You'll crash. CALCS is safe to use anywhere (it doesn't read mED's compressed text) ontrol it. Example: suppose your printer demands the following ASCII codes (in decimal) to change spacing between characters: 27 31 8 . So, you'd execute the following command while the screen cursor ON the <...> line below: . pr printer  at the PRINT command and what it does: 1. PRINTed FILES: You should have a scratch disk in drive 0. On it, PRINT the three lines below with the screen cursor ON the first line, using this command: .,+2 print trial:exe Print a lly output by the ESC key] p whatfile [Put the file back to disk] Why do we PRINT the file? To convert the ASCII 6 from characters to a real Con- trol Code. If the line with <6> in it is taken out, above, we may "put" the file to disk, and it will Eint, CALC thinks it's supposed to CONVERT...and unless it finds a notation ($, %, D or @), will report an entry error. 999/2= [Entry at left gives an Entry Error] 999.0/2 [Works okay] .rith Yes, you can use. Load CALC or BEDCALC, get calc_tut:e on screen, and have some fun. Since CALCS doesn't include Column Sum, start with one of the two versions above. You can disconnect from either CALC or CALCS by pressing SHIFT/ESC. You'll get a message sayi [pr is the accepted abbreviation for PRINT] <27><31><8> Get your printer manual out; we doubt there is a command in it which cannot be sent to that printer from BEDIT. Remember also that you can PRINT these commands to disk from ine<13> Print one more line And what will the file look like? Now, with the screen cursor on this line, GET "trial:exe" from disk: Note that the file comes back double-spaced. To the normal carriage return at the end of eaXECUTE okay (remember there's a CR on each line). Thus there's a simple rule: Never PRINT a file unless it holds an explicit Control or ASCII value in <>. Then you must PRINT it to make the work. The obverse of the rule is: PUT to disk o the floating point routines for integer arithmetic, if you stuff in at least one decimal point: 1000/3.0= You must discard the fraction. .rith You need no D to say these are decimal entries. The decimal point doesng you've quit. When you disconnect, you free up the memory the programs use and reset SuperPET's interrupt routine to normal. The only way to get either program to work again is to load 'em from main menu--AFTER you reset MemEnd_ back to $7fff (MemEnd_ BEDIT, and can COPY them to your printer from disk. We strongly recommend you put a clear suffix on such files, so you won't try to bring them into the editor or mix them up with other files. We suggest the suffix of :exe (for "execute" file). ch line, PRINT adds another. It converts any ASCII code within <> from characters to the true code value. You may print such codes to any device which will accept output--including your printer, as we see below. Here's the tricky part. The only ASCII Cor printer any file which does not have an ASCII code in <>. * * * Any ASCII code may be PRINTed to disk files or to printer. Don't try to get such files back into mED unless you stick to innocent ones like CR, curso that for you. When CALC sees one, it says "Aha! Floating Point!" .rith If you deal with large numbers, beware any result with fewer decimal positions than your entries, for you've exceeded the capacity of SPET's routines: is at $0022. Dump it in the monitor with: >d22, overtype the first two bytes with: 7f ff, and hit RETURN. Then >q the monitor). DON'T try to reset MemEnd_ back to $7fff unless you disconnect with Shift/ Escape, in both CALC and CALCS! You'll overwriA file to set margin on your printer might then be: margin:exe; one to change to expanded type might be: expand:exe. You simply COPY these files from disk to printer. 2. EXE files can also operate SuperPET in your absence--with a little help frntrol which is part of an ordinary file put to disk is the Carriage Return. It ends every line. You therefore do not need to include a CR on any line which you either PUT or PRINT to disk. It's already there. But--that's the only Control Code you get inr-down, cursor-up, etc. A <12>, friend, will clear screen! What can you do with PRINTed files? 1. You can send ANY command sequence to your printer from BEDIT, or can create in BEDIT disk files which can be copied from disk to printer to c Two places One place | | 123456.11*123= 15185101.5 Woops! One decimal place in the answer says "too big!". The answer te the code which services the CALC routines. When you want the memory CALC occupies back, disconnect first! Then reset MemEnd_. If you don't want to fuss with MemEnd_, you don't have to. CALC and CALCS disappear when you shut SPET down or flip to 6om BEDIT's EXECUTE command. Any file you make which is to be "executed" by your printer or by BEDIT's EXECUTE command is an EXE file. Sometimes you will PRINT such files to disk or printer; sometimes you will PUT them (as we discussed above). No matter h a file unless you put one in with <> and PRINT it to disk or printer. Let's illustrate with a file we'll later EXECUTE. Note that each normal Editor command needs no CR following--but when we want anything more than a CR, we must put it in, and we m010 1101 1010 D65434=$_ D65434=$ff9a $424=D_ $424=D 1060 Since spaces end an entry, don't use spaces in one. D505 = $ will fail. You must use a capital D for decimal entrie tion when you press PF4. You don't have to enter it.) Your Entry: CALC Response: $67=@_ $67=@ g D126=@_ D126=@ ~ D65=@_ ROL Left Bracket". Several telecom programs for SPET make available all the character CONTROL keys, which start at ^@ (Nul) and run upward to ^_. To get a specific Control Key, you simply press a key designated as CONTROL and tS=#@ $53 D83 CONTROL KEY value is D26 or $1a CONTROL KEY value is D19 or $13 @# In short, you can get the ASCII code for any key on the keyboard, in- cluding tab, cursor, and other control keys, plus any value that key  r. +-*/ Can you do arithmetic when entries are pure decimal, pure hex, or pure binary? Sure. Try this: D546+D1245= +-*/ Remember that integer division and multiplication won't return fractions, and that results are rounded down to the ne s, and leave all hex entries in lower case. Gee, how can CALC tell $d22 from D22 otherwise?? If you enter hex in upper case, CALC will report an error. %$D CALC stuffs all results into mED text if you are in mED, but makes no per D65=@ A The CONTROL keys also report on screen: $03=@_ $03=@ * ETX:^C (Stop) $19=@_ $19=@ * EM:^Y D27=@_  hen press the character key. You don't send an "A" when you send Control A, but a specific, non-printable CONTROL value. How do you find out what ^A sends? Read on. CHARACTER TO ASCII CODE: To find out what ^A sends, enter the generates in the character CONTROL set. Some keys aren't in that set. For those that aren't, you get no message on line 25, but you still get the ASCII code for the key. Press PF4 on the line below, and then press the "6arest integer. D2/D200 is going to return 0! If you want exact answers, use the floating point routines. +-*/ Integer ADD routines stop at 65535 and warn you if results are larger. +-*/ Subtract routines often return results below 0--in two's cmanent record if you are in the monitor. %$D How does CALC know what to do when you press PF4--Column Sum or Convert? Easy. It first looks to the left of the cursor. If it finds a %, $, or D, preceded by an =, it jumps to the Convert ro D27=@ * ESC:^[ (No Key) @# Unfortunately, the screen in mED won't store the Graphics Characters which CALC generates for the Control Keys. I've subtituted an asterisk (*) above (the graphics show on screen in CALC but won't S command below, with the cursor on "_"; then press PF4. If you think the absence of a character left of the = sign is mad, wait. Press PF4, then look on line 25: Your entry: CALC Response: " key: =#@ You'll find the process simple once you go through the tutorial. Only in the ASCII conversion routines will SHIFT/REPEAT not repeat a CALC answer elsewhere; results aren't stored in mED text. If we domplement. Since most of us don't read two's complement very well, CALC also reports the exact value below zero in hex (easy to convert to decimal). +-*/ The limits on divide, subtract, and multiply routines vary. When an entry or an utine. In the example below, it'll convert, not sum a column: :: 12.34 28.06 ----- $7ae4=$_ (_ marks cuAVE to disk). When CALC encounters a CONTROL character, it can't print a "printable" character, but it can print the graphics which the Control generates and will give you information on that Control. Let's dissect the reply abov =#@_ A=#@ $41 D65 CALC prints a message on screen line 25 asking you to press the key for which you want the ASCII code. When you press the key, the character prints left of = and the id this, the CONTROLS would clear screen, STOP us, DELETE text... -------------------------------------------------------------------------------- 3. INTEGER ARITHMETIC IN ALL NOTATIONS CALC will perform INTEGER arithmeticanswer is bad, you're told what's wrong. You won't be able to multiply $ffff*$ffff, for example, because the 6809 integer routines simply can't handle a number that large (neither can any calculator we own!). Use the floating point routrsor position) -------------------------------------------------------------------------------- 2A. CONVERSION - Character to ASCII or ASCII to Character #@ CALC will tell you anything you want to know about the ASCII character set.e for ASCII code 27, ESCAPE: D27=@ * ESC ^[ (No Key) / | | Graphics char ASCII The ASCII Control The SuperPET key generaASCII code numbers to the right, as above. The "#@" simply mean: gimme the NUMBER (#) in ASCII code (@) for the key I'm gonna press. Which CALC does. And, at the bottom of the screen, you see the following message for "A":  on any notation or combination of notations either in the mED or in the monitor. Results always return in the notation of the rightmost entry: +-*/ Your Entry: CALC Result after PF4: %11101110*D54= ines for big numbers. -------------------------------------------------------------------------------- 4. FLOATING POINT CALC adds, subtracts, multiplies or divides decimal entries, either in the mED or in the monit It also reports which keys do what on SuperPET, including the graphics they generate. @# ASCII CODE TO CHARACTER: You can get the character generated by any ASCII code like this, where the "@" sign means "ASCII": (_ shows cursor posi-ted by 27 Short Title key which generates which generates on SPET screen. ESC. Comments below. the code (if any) What's the carat (^)? It's a standard abbreviation for CONTROL. Above, read "^[" as "CONT CONTROL KEY value is: D1 or $01 #@ You may get the CONTROL Key value for any key from ^@ to ^_ the same way, simply by entering: =#@, pressing PF4, and then the key: Z=#@ $5a D90  %11101110*D54=D 12852 $7d+D2800= $7d+D2800=D 2925 D2800/$28= D2800/$28=$0046 +-*/ These routines were written primarily to make life simpler for the assembly language programme  3 banks of memory, but is any program ever FINISHED? If the source code is desired for this editor it is available on disk. In the USA/Canada, send $10 U.S. for 8050 format to the author, address below, or for 4040 format, to Editor, SuperPET  WHAT IS CALC? WHAT DOES IT DO? I - What Is It? CALC makes a good calculator of SuperPET. There are three versions. All work exactly the same way: CALC -- an interrupt-driven program which sits i LC as you would any other editor from drive 1 at menu :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: III - Where to Use It: CALC: All features of CALC work in the standard microEDITOR, loaded a mbine these operations and their results. 6. You may get both the hex and decimal ASCII code for any key on the board by pressing the key--including all Control keys, such as Run, Stop, the PF keys and cursor keys. Or you can convert t ------- Total lines are okay (_____, too) X Press PF4 with the cursor on X. The column is summed. +-+ CALC rounds totals for you to t Gazette, PO Box 411, Hatteras, N.C., 27943. Joe Bostic EDITOR 2338 E. Bonanza Las Vegas, NV 891 nactive in in high user memory until you need it. It is meant to be used in the monitor or with the Editors (Waterloo's, Toebes' V1.3, Development, or BEDIT). It can crash you if used in the lan- lone from main menu, or with the Editor in Development, or with John Toebes' V1.3 Editor, or with Joe Bostic's BEDIT. All features except Column Sum work in the monitor. Don't use Column Sum in the monitor he ASCII code number to the character it prints (including graphics characters). The CALC programs do any of these things when you press PF4. They will repeat any answer generated, anywhere you put the screen cursor, when you press SHIF he number of decimal places you use, or reports in integers if you enter integers. +-+ Results print into mED text, decimal points aligned, right under the column summed. You don't have to copy anything. +-+ You can reprint any tota01 banks of memory, but is any program ever FINISHED? If the source code is desired for this editor it is available on disk. In the USA/Canada, send $10 U.S. for 8050 format to the author, address below, or for 4040 format, to Editor, SuperPET  guages--so we have an abridged version which is safe to use anywhere: CALCS -- (for CALCSHORT). This is also interrupt-driven but safe to use everywhere. It does all CALC does EXCEPT sum long  (the results are weird!). It should not be used with or in the languages, or with any of the Editors in the languages. CALCS: Use it anywhere. Since Column Sum isn't in it, it is completely safe T/REPEAT. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: V - How CALC Programs Do It: CALC accepts your entries just as you'd enter them on paper with a pencil. There are no "modes." CALC reads the entry and does wh l anywhere in mED with SHIFT/REPEAT, as often as you want. It's great for subtotals and for printing answers in text. +-+ CALC catches missing or misaligned decimal points, missing digits, or character entries. It tells you where the er l get an ENTRY ERROR message. Such numbers are too big to handle. -------------------------------------------------------------------------------- 2. CONVERSION -- Hex, Decimal, Binary CALC will CONVERT hexadecimal, binary, or d  columns of numbers. It works in the monitor also. CALC in BEDIT -- The program is built into Joe Bostic's editor. This version of the editor is called BEDCALC; CALC runs only in the edi  in the monitor and the languages. BEDCALC: Obviously you can use it only within the editor itelf. If you use this version, ignore the instructions below about CALC in the monitor. ::::::::::::::::::::::::::::::::: at the entry says, as we show below: -------------------------------------------------------------------------------- 1. THE ADDING MACHINE (Column Sum) [This feature is not included in CALCS, the short version] +-+ You c ror is, by line, at the bottom of the screen. +-+ Last, it reports how many entries it summed. Got 42 checks to add up? If CALC says it added 41 entries, there's a mistake somewhere. +-+ What do you need to know to use COLUMN SUM? E ecimal numbers to any of the three notations: %$D You tell CALC you want a conversion by simply asking for it--with PF4. (Don't enter the _, below. It simply shows cursor position.) Your Entry (Cursor at _): CALC result after y tor (not in the monitor). All forms of CALC do all common arithmetic for you on screen, and all conver- sions from or to hex, binary, decimal, and the ASCII codes. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: II ::::::::::::::::::::::::::::::::::::::::::::::: IV - What the CALC programs do: 1. Column Sum gives you a smart adding machine--with a tape you can change. [In CALC and BEDCALC only] 2. You may convert hexadecimal, decimal, or binary ins an add/subtract as long a column of entries as the mED will hold, 255 entries at a time (decimal or integer) like this: :: To stop summing, use optional colons. 12567.890 asy. CALC has no modes and needs no instructions from you. Just put the cursor under the rightmost column you want summed--and press PF4. +-+ If you try to enter more than 13 characters (including decimal points and parens, you'lou press PF4: D1234=%_ D1234=%0000 0100 1101 0010 %11100110=D_ %11100110=D 230 %01101110=$_ %01101110=$006e $82da=%_ $82da=%1000 0  - Loading: Load CALC from either drive at main menu: From disk/1: calc From disk/0: disk.calc or calcs or disk.calcs or Load BEDCA tantly to any other notation. 3. You may add, subtract, multiply, or divide hex, decimal, or binary integers in any notation or mixture of notations. 4. You can add, subtract, multiply or divide decimal numbers. 5. You may co  (45.001) You can mark negative numbers with -20.000 parens or a minus sign. CALC reads thru any text or characters............ 546.789 ! go through: bedit_tut:e first. ................................................................................ TYPE (Review a Disk File on Screen) tYPE filename (as in: t disk9/0.example) This will display any SE! CR to Editor commands so that the commands are executed. You may also utter cursor movement, PF, and other "non-character key" commands with EXECUTE, as noted below. This lets you enter and execute a series of commands from disk without having to type !c characters in the specified line range are converted to lowercase letters. If no line range is specified then the current line is the default, and all characters there are converted to lower case. ......................................................!e to get a selective list from the file in memory at any time. It is extremely powerful, useful, and fast--especially when you edit your disk files. NOT will not perform search/replace. It will only find a lines which do NOT contain the specifi! The PRINT command may be terminated with STOP, but the current file- name is NOT used a a default for this command. You MUST specify it completely, as in: pr disk/1.copy.exe. This is a safety precaution to keep you from over- writing normal SEQ ! Q file on screen. You may stop and start scrolling by touching the spacebar. At the end of the file, or when you press STOP to stop reading the file, you are given a command line and the text of the file remains on screen. Any command entry, or a normal! them. The actual file executed is prepared in the same way as any other file for the editor, except for any Control sequences you may wish to in- clude. If your file has no such Control sequences, you simply PUT it to disk, as with any other file. ! .......................... MOVE (designated line(s) to a new location) [line range] mOVE [destination] (as in: 1,10 mo 30) MOVE performs in much the same way as ECHO, except that the source text is deleted from memory afte! ed phrase, or delete all lines which do not. WARNING: You must repeat a NOT search with: +\ or -\, and not with the normal +/ or -/, which repeat only searches other than NOT searches. ...........................................................!files with PRINT files, which would be deadly. EXAMPLE: If the sequence <1><6> is used, when PRINTed it will home the cursor, perform two carriage returns and erase the line the screen cursor is on. Remember that multiple control chara! RETURN will bring you back into the editor. Note: if you try to use the old command: "COPY file- name to terminal", you will get TYPE instead, since it will pause scrolling at your request while old COPY won't. ..........................................! If, however, you want CONTROL commands or PF commands executed within a command file, you must include the necessary CONTROL characters (see PRINT) and PRINT the file to disk so that the CONTROLs are converted from character format to actual CONTROL!r being MOVEd to its new location. ................................................................................ The NOT Search and Delete [line-range] \search-phrase (as in: 12,29\NOT) This is used to find a line !..................... PRINT [line-range] prINT file-name (as in: 1,40 pr example) This is used to print (put) the specified line range but converts any control characters into their respective values. !cters (even if identical) must still be individually surrounded by <>'s. Find below a list of the various controls you may find useful (all values are in decimal): <129> = PF 1 <1> = home <8> = cursor left <130> = PF 2 !...................................... UPPER (case characters) [line range] uPPER (as in: 1,5 u) All alphabetic characters in the specified line range are converted to uppercase letters. If no line range is spe! sequences (you show a cursor-up command in text as <11>; PRINT converts it to a true cursor-up command in the disk file). Always EXECUTE a disk file; not the original copy in the Editor! ........................................................!that does NOT contain a match of the search-phrase. Delimit the end of the command with the normal "\". This command is most useful in eliminating everything but what you want. Example: Suppose you edit a directory to get rid of all BUT .asm files. With !Control characters are specified by enclosing them with "<" and ">". The enclosed characters may either be a decimal number, a hexidecimal number, or the ASCII code. This may be useful when constructing files that are to be EXECUTED (see below). The s! <2> = recover line (RUN) <9> = tab ... <4> = delete character <10> = cursor down <137> = PF 9 <5> = insert space <11> = cursor up <138> = PF 0 <6> = erase to EOL <12> = reprint screen !cified then the current line is the default. \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ You will find an additional article on how to use BATCH files in BEDIT on this disk, in file: "batch_tut:e". Included are full !........................ FREE (memory available) fREE (as in: f RETURN) This will display the number of free bytes of memory available. You will discover that each line of text has an overhead of two bytes and each !manual NOT search, you look for (and delete by hand) all files NOT containing ".asm", as in: \.asm/ The screen cursor will stop on the next line of the file which does NOT contain ".asm". You may also obtain a "selective" list with NO!yntax of this command is the same that of PUT. This command may be used di- rectly from BEDIT to a printer or plotter which requires a sequence of command characters to change format, font, margin, etc. As a simple example, the follow- ing line will prin!<139> = PF . <7> = cursor right <13> = return <27> = ESCAPE You will find a separate tutorial on using PRINT, EXECUTE, and BATCH files on this disk, entitled: batch_tut:e. Suggest you instructions on how to create a batch file and how to use PRINT and EXECUTE with it. If you master the use of batch files, you'll save a lot of time. Even more features could have been added to this editor and still have it fit within the usual!string of 3 to 31 duplicate characters takes only two bytes. ................................................................................ LOWER (case characters) [line range] lOWER (as in: 1,5 l) All alphabeti!T, automatically deleting all files or lines which do NOT contain ".asm", like this: *\.asm/d [The normal DELETE command is combined with NOT search] You very quickly get a directory consisting ONLY of ".asm" files. You may use this featur!t "trial" on three separate lines if you enter: . pr printer, with the screen cursor on the line below: trial <13> trial trial<13> Note: No spaces are allowed within the <>'s: < cr > or < 13> will not work. Use <13> or . "ATALOG is just like the directory command except that it sends to printer or disk a sorted two-column layout, just as it appears on screen. See the discussion above, under Directory, for wild-card directory displays. ....................................."Initializes drive 0, device 8 @ n0:diskname,xx Headers (News) the disk in drive 0. @9 i Initializes both disks on device 9. ................................................................................ " This is a little more useful as it displays more information. INPUT (Or INSERT mode, obtained with "i" at command cursor). In this mode, you now have word-wrap. When you enter a word that is about to run off the right margin, it will be moved to t"changing them. Similarly, the default device and default file-designator extend to the first parameter of the COPY, DIRECTORY, CATALOG and RENAME commands, as in: Default Device: Default File-Designator: Device Filed to: Command: 8/0 " breviation. SEARCH: The search command is now allowed to have a specified line range (e.g. 20,50/text, .,+10/text. The "%~" meta-character is available for all searches. The search command may be started in reverse (from bottom of text up- w" ........................................... DEFAULT (to device) defAULT [device-name] (as in: def disk9/0) To change the default device, specify the device name in the DEFAULT command. If no device is specified, this" ECHO (a line or lines to another part of the editor) [line range] eCHO [destination] (as in: 10,20 e 40) This will take the line range specified and duplicate it, beginning at the location specified as the destination. Do NOT specify two " he next line so that no word is cut in two at the right margin. Just keep typing--and don't hit RETURN--to use this feature of BEDIT. If a "word" is longer than 40 characters, it does not wrap (a line of hyphens, for example, won't wrap). This feature do" example:e 8/1 cop disk/1 8/0 " 8/0 di to dircopy 8/0 Renames example to newname 8/0 ren to newname 8/0 Copies example:e to disk9"ard) if the "|" (shifted "\") is specified as its line range (e.g., |/text). This puts you at end of file and starts the search backward. Do not attempt to continue the search with |/ after the first entry is found! You'll go right back to end of file an" command displays only the current file name. You may NOT default to "printer", "serial", or "ieee4". ................................................................................ DOS COMMANDS (3.0 format) @ [device] [command st"line ranges for the destination (as in 10,20 e 40,50). You'll get an error message. You need specify only the START of the destination. The material ECHOd is not destroyed. You may ECHO by relative location, as in: .,+5 ec +10, as well. If you "es not operate outside of INPUT or INSERT mode. NAME: This will only RENAME the file-designator part of the current file- name: disk/1.example <--- Device + file-designator are FILENAME / \ device "/1 9/1 cop disk9/1 [Ed. What a pleasure not to have to retype those file-designators!] PUT: If just a device is specified as the argument of the PUT command, then the filename will be used with that device, as in the examples above. A"d start the search again! Continue search, as usual, with: -/. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: NEW COMMANDS AND THEIR SYNTAX The actual name of the command may be abbreviated"ring] (as in: @9 d1=0 to backup drive 0 to drive 1, on device 9, or @ c1=0 to copy drive 0 to drive 1 on default device 8.) The "specify no line range, then the current line is the default. The command: e will copy the current line to the next line, opening up a new line on which to echo the line copied. ECHO always copies to the line FOLLOWING the designated destination " file-designator You have a separate DEFAULT command by which you set the default drive. NAME is limited only to a change in file-designator. Filing is much simplified with this arrangement: Some examples: Default Device: Default File-Designator: Dev"ny PUT may now be terminated with the STOP key (those who have accidentally sent a command to reprint a seven-page document to printer now have a way out short of turning SPET off)--just touch the STOP key. You may also STOP "puts" to disk. WARNING:". Below, the initial sequence of lower case letters is the minimum abbreviation of the command. The brackets "[]" enclose optional commands. ................................................................................ CATALOG (a directo"specified command string is sent to the device specified. The command defaults to device 8. Commands are sent to the command channel of the device. If no command string is specified, then the error channel is read and displayed if other than "00, OK,00,0"(if you ECHO to line 40, text begins copying at line 41, for the logic used is the same as that you use to manually insert text or to insert it from a disk file. The new material always inserts BELOW the screen cursor or designated line). ..............."ice Filed to: Command: 8/0 example:e 8/0 p 8/0 " 8/1 p disk/1 8/0 " Printer p printer 8/0 File sa" Don't try employ the old "p disk" command, used in the Waterloo mED to send DOS commands! [In this old format, you entered a DOS command on a line, and at command cursor said: . p disk--which executed the command. All you'll do now is file t"ry in two columns wherever sent) caTALOG [source [to destination] ] [as in: ca disk/1 to ieee4 ca disk/1 (to screen) ca to printer (from default drive)] C"0,0". Capital letters are accepted, but lower case works as well. @ v1 Collects (Validates) the disk in drive 1, device 8 @9 v0 Collects the disk in drive 0, device 9 @ i0 Mounts or !................................................................. EXECUTE (a command file on disk) exECUTE file-name (as in: ex copy.exe) The file is presented to the editor as if you typed in each line; EXE- CUTE adds a"me mat'l as "test" 8/0 p test 8/0 File same mat'l as "do.bak" 8/1 p disk/1.do.bak The statement of a file-designator and a device, as in the last example above, overrides the default filename and device WITHOUT "he current line to the default disk, under the de- fault filename--and tragically replace the whole file with a DOS command!] SCRATCH: The scratch command may now only be abbreviated to 'scrat'. You will get a "Say what?" if you use the old "scr" ab#names, otherwise you will get a 30,SYNTAX ERROR,00,00 message (this is due to the DOS, not BEDIT). Any COPYs confined solely to device 8, device 9, etc., follow this rule. When copying files from one device to another (as from device 8 to 9, we u# of the directory listing you have the option to enter any command while the directory is still on screen (a gift for those of us who cannot remember the exact form of a filename). If you enter no com- mand, you may see the next screen with RETURN; if yo# screen) di disk/1.*7* to printer (to printer) di disk/1.*7* to index (to a disk file "index" on drive 0) The selective directory works the same way for the CAtalog command, from which you get not only a selective directory, #herefore, you use the RUN key immediately after an erroneous delete, your text will be restored "as was." WARNING: If you enter a command, it destroys the editor's memory of the last deleted line--so use RUN before you enter any formal com# sh before. For example, the search string: /%~change%~/ will find every occurrence of "change", as in: " change ", "(change%)", "change*2", "change=2", etc., without affecting words such as "exchange", "changed", or expression such as "exchange=exchange+# se the Waterloo copy programs, which require the DOS format for all files be entered (except for SEQ files), as in: copy test,prg to disk9/0.test,prg. DIRECTORY: The directory command in mED would sometimes scramble the directory when sending it to the# u enter a command, it will be executed and the directory listing stops. If you want to leave the directory listing, enter a period and return it: . RETURN SELECTIVE DIRECTORIES: A most powerful selective directory capability has been implemented with bo# but a SORTED selective directory. You may use the asterisk and question mark as you wish, as in: di ????.asm | ca *.asm | di file* to ieee4 | ca *it*ut* The command at right, above, will display files such as: bedit_tut:e. You may get some log# mand. You get a handy bonus from RUN: it becomes a reverse PF1 key; you can stuff the LAST command given at command cursor into text on the line above the screen cursor. The second bonus: RUN is a one-line MOVE or ECHO command; if you delet#1." Because the new meta accepts a null as a valid part of the search, "change" will be found at either start or end of line, where the prefixed or suffixed null used to require a separate search operation. The new meta makes search/replace in SuperPET a# disk. That has 'mostly' been corrected. BEDIT displays the directory in either of two different formats. In both, you get two columns on the screen. The old DI command gives you a directory in the exact order in which the files appear on disk, i#th the DI and CAtalog commands--even more powerful than that in the DOS. It is best illustrated with examples: ?????.* will show a directory of all five-character filenames ending in a period and followed by any number of characters. Each question#ical but weird results if you use a large number of asterisks. The STOP key does not stop DIrectory or CAtalog output. You get one screen with the command. You may continue with after that screen displays, or end the display with a period: . . Beware: output to disk and printer is controlled in exactly the same way. IF you want a multi-screen directory sent to disk or printer, you MUST press RETURN for each page until the directory listing ceases! Remember this when making EXE files wh#ou are in command mode. //////////////////////////////////////////////////////////////////////////////// Modifications to microEDITOR commands. BYE: This is replaced by the "EXIT" command. No big thing, but if this editor can b#ng routines whenever possible, because they are faster. WARNING: If you attempt to copy a file under a filename which already exists on disk, you will get an error message from the DOS procedures (when used), just as you do from any "g ieee8-15" or other#nction, sorts the directory alphabetically. It also sends directories in two-column format to disk or to printer, sorted. In order to accomplish this, as much of the directory as possible is first read into memory and then sorted and displayed. If there #NY number of ANY characters, or ANY suffix. Suppose we have a set of files of seven different versions of a program. We want to see ONLY the seventh version (program7.asm, program7..b09, program7.lst, etc., and that we renamed the .mod file of "program" #ich call for a directory listing to disk or printer! GET: This will not change the current file name unless the work space is empty. BEDIT defaults, when loaded, to a file-designator of "text:e". You may change this default with the NAME command a#e made to work with mBASIC...hmmmm..... CHANGE: The change command works normally except that the STOP key will stop the change process at any time. This is helpful when the computer seems to have entered a catatonic state during a very time consuming# procedure which uses DOS COPY procedures. You must either COPY with another filename or scratch the file with the duplicate name. When copying files on the same disk device, LEAVE OFF the DOS format specifiers (SEQ, PRG, USR, REL) from the file #is insufficient memory for a complete directory to be read in, then the excess will not be sorted but will be displayed; the old scrambling problem may appear only if BEDIT simultane- ously sends the directory to disk. At the end of each screen#to utility7, which we also want to find. The following command will display a directory of ALL files which contain a 7, however prefixed or suffixed (and will also send the list to printer or to disk, as shown): di disk/1.*7* (to"t command cursor (n newtext:e RETURN assigns a new default file title of "newtext:e"). We avoid changes in file- -designator with GET so you may insert small files from disk without losing the filename of the major file on which you are working. HELP: # change. There is a new metacharacter: %~ (the second character is the tilde, from SHIFT/UP-ARROW). The meta represents "any null, space, or other non-alpha- betic character." With it, you can make universal changes which you could not accompli$%'(0&4 1&4 }i& &|i |^ J M'|^D&9$& D& K9CD& $& i9 iD'z& 砆 o9^̕DE4&D6&|^ / |^D~̕DT+}^& ^D2b9D4̕D2b9̕D42b9D*|-}'$alue is: D%d or $%hiD'$'J&D&o $& -Oo ̞42b9D4@Μ0='45&|^~ oΜ־i0D& '% " &!  %&Ơ 5@9H' 9*$5<================================END OF FILE===================================>4eaP=4bhP=À4eP=À4d4d4d%j&'&Bbd~84'.'/& 1&;_&5M'.'/'-' 4O$5'&4O$&oaO佰$&85C= 4N4m'qoa':' 4$5&jm''佰Nm& B2|d6*@Bo& 4 T5 l':& 4 H5%2b4b4b62b' ~2d9ܦ42b4ܰH2b4½ 2b4 02bܬ4ܾ'O4̱+佟fܲ$(&$'ܦ4̘@ 2b&Dx44d2do佰S'&佝H&׸'ܦ4̘0 2b&0 4ܦ4cl2bcݬ$x'~2d9Out of %2b9TOtob4H' 02b94׸' d4̝w 2b佰4f4b 2b2bOָ2b9: 42z@efB0 -L 0je': o2h9P2@4ܰH2bܦ42b'ܦ4½H2bܦ4ܰQ2b $ܰ4ܦ&ca&o'Ya- . o/@ '<'-')P& a - m&ֹ&jaJ &La &'k& 2 '׺a%$W2b2b'"h.m''0 ohM']' ohܤ4hH2bܦ4ܦ4b62b4ܮ(4f#( O_4ܨ4fl2b'4o(04b4jl2b' ܦ4dH2b&)bo'5040bEbbܮb#$mj&?o".牀0"(0'''4섽G5'%orted: 4'v<&k4 &< ^&040d4b2b50 A& 40佰50 2&"40佰E44d4̚=W2d2b50'Z &><!5 o 2b94$&' 1!O4$*5$&O>&L>+'#-'O$&' 1!O4$!5$&O>& ' 1!O4$$5$&O>&_5]'%* . A 齰 < e   }     C  g    g k h 0  ; v - Dֺ}^&}"' }D'P9}D&ֺ̐4$entries summednries summed%n9"|av~^"}^'D &m}^'D C%&z|"9='|^~lO4 D'$'9%'hz&|^~b D'4$&|^~bz },|^~b$&}/ 04z.,|^~b4z-&|^~b ҆i%&ܤ4̞2b a'\' &S & _m59%S4P=À4bJP=0砬&2c &&o!9oX%TW'm& j9 +o⎞'lm&m'2a9c0a42@4*..4bH2b.oO_2,94% j0b&m&2d}P'̱4P2bbP4d62b׼٩̖4ܨ4̖4h2f'A(0'944&̖04db4n4l2h&&&2b2bob&oom& ܨ4dl2b4dl2b'ܦ4ܨH2bo&Fܦ4dl2b'ܦ4%o1! ]9nulsohstxetxeotenqackbelbshtlfvtffcrsosidledc1dc2dc3dc4naksynetbcanemsubescfsgsrsus4̱+2b4"0Ȁ焽rrP44d2dooP"14 O'0L LP" 5Ȁ焽r&݂ & &݂ &&C3 J)%& bedcalc6.2 BEDIT with CALC in Bank 10 devcalc6.3 The Development Editor. devcalc6.3.map Thought you might need it bedit_instr:e Instructions for bedit_tut:e Tutorial on, with examples &b& &$턟(ݾ0kC2'~̱4̱K2b9 &Gܲ'$$&#-($( M,'$ݶܬݪ½ 9㽗&e *&bb$$ $#ܬ$'C3N RJ& 2d .&< $&<($4$ݬ9$4f$&4e` M/'\'$ ?4$.54'/' \'& $i&c$_2e9a$ $2d9$ݼ.*& <&ݲ( T|& <(ݲ& E'T$ݲ,&<$'>$ &ܲ$^& <콞 && & 2a9o/'\' '/'%&0 m'j9a"(.4:@@FLRX^djpvx|ZğʟП$ݶܬݪP4' %Ā&  0 &o m'9O' 0L'#M'"#14 b4bH2b2b Î_\m& calc_instr:e Instructions on CALC calc_tut:e Tutorial on, with examples batch_tut:e Tutorial and instr on using batch files in BEDIT ($7fff), or 2) Division by 0RESULT EXCEEDS +32767 Decimal. Recompute in Float& b42b2d9ܦ'$/' %&<&'~' ʀ504< o/&<2b94$&'('4$2b4ܨ4dH2d& ' m'4̗!2b94d42b佰ܤ4H2b}' ݭ٩O2b9 ׻׺-F42b̘~$gݬ$ݶܬݪ452b94.,5$&9ܬ4c4&h4fJ2d&bm'0b 2d9`&' b&b Ja2d9o➦o4ܦ4ܨ4dH2db&5m4&Ob2c9}P&P4ܦ~}+\02~/' \'' (&&42d_& P+&<(442d 1-&<&44& iӔǔӔǔӔ̔Δ`Δ̔ӔtӔtӔ̔Ӕ̔ٔ̔ٔ̔ٔ`ٔ̔ٔ̔ٔ̔ٔٔٔ`ٔٔ`ٔٔٔٔٔٔٔ̔ٔ`ٔ̔ٔٔ`Ӕ`FileName/srch/repldestination[FileName] to FileNamedevice-name[date] [time]{tabs}command-stringtextlinerange&Ctransfertr2C'&index:e&bedcalc6.2@(devcalc6.3G$devcalc6.3.map $bedit_instr:ec*bedit_tut:e[ calc_instr:eD1calc_tut:eYbatch_tut:eL.foo(.b&2~2̐ ' &_'罰 &䎐a'.e''l' m'q&22b9O4̐𽰷2b'44O22d2&   9Waterloo microSystems%N%Nselect :%N%N asm%N edit%N linker%N monitor%N quit%N%N '%C' not(2b 'ܤ4H2b$ݲݴ̽ &P4' ' '2b 05ƽ f&~c &'' '' \# ~v5::섽9o⽙$444ܲ$ݬ&tܴ4$42d&mf'_'Xfܴ45&F44ܤH2bd bb& d$ݬ(& bh'&& m'&&'4'5't&X怯f'b' & 1? b 5m&bm' h4h4f2d&bm'0b 2d9`&' b&b Ja2d9o➦o4|ܦ4ܨ4d2db&5m4&Ob2c9̖ ̖4 & 4 Oֺ4ֻ2b(4P4b2b2~dj&bj&'&bd~84'.'/& 1&;_&5M'.'/'-' 4O$5'&4O$&oaO佰$&85C= 44m'qoa':' 4$5&jm''佰m& B2|d@Bo( '444da2d2b~  ~$&&"ֻ'44a2d  Cֻ' $ݶܬݪ~w~w׺$(&"ֻ'44a2d  Cֻ' $ݶܬݪ9()ݾ94 5b/9Oֻ44bT2bл4ܬ- .余itc( valid selection%N%N%N%N &$턟(ݾ=l2'9̱4̱K2b94̱tl2'52& 294ܦ4.2b4m'b4b2b4b4b42b' ~2d9 &Gܲ':$@$&#-($( FM,'$LRݶܬݪX^ ( jݴ$($#52b5ݬj$p2a9o/'\' '/'%&0 m'j9ĞʞО֑ܞ $*06<================================END(9㽙&B *&oa/':5&BrZܲ$&佒bb$$ d$#ܬj$pb4v2b2d9ܦ'$/' %&&'~' ʀ504 o/&2b94$&'('4$|2b4ܨ4d2d& ' m'<(o 4ܮ 4̝2P42bo̟T~ %nCALCS : Copyright 1985, Dick Barnes%nEDITOR : Copyright 1984, Joe Bostic%n%n%d bytes free.%n%nDate: %s%nTime: %s%n%nEnter date/time or press %ndisk.text:e4sѽDo mh(4bJP=0砬&2c &&o!9oX%T2'm& j9 +o⎘]'lm&m'2a9c0a/' \'' (&&42d_& P+&(4d42d 1-&&4d42d .& $&($(   C~wOֻ4ܬ,"0Ȁ׺Oֻ׻44bM2b2b5cC$ݶܬݪ~w9׹~w4$@2b~M]~ZC4ܤH2bֹ 4ֺ4$(& C'Z2c9 $ݶܬݪw5׺׹~$&'('ܤ4$( OF FILE===================================>4eaP=4bhP=À4eP=À4d4d4dK2d2h9ZP=ÀO J*9ֻֻZP=ֺ:0Ȁ & "0Ȁ94&'(' 4b2b 2b9&&&b.#4d('44dL2b52b 94&(d' 'd #ܦ4bJ2b'b0bd&'504 b'P$LRXb2f9b2B46d4dH2bm'm&& Įd'<&60404b4bH2b2bĮb:4oc4g 2b5O dE4EĂP#~:bĉ4d4bH2b2bb4h('}h4̞& 2bm &h4̞( 2b h4̞* 2bh4̞, 2bF 2b9:01$.\ ཰    X ӽ C   i c Z  ߽ )  ۽ 1 T  M ] ཰ (  [ m N(4$ݬ9$4f$&4B`d M/'\'$ ?45$54'/' \'& $i&vc$_2e9ad$ $2d9$ݼ *& &ݲ( T|& (ݲ& Ek'T$ݲ,&$k'>$ &ܲ$^& 콞d && d ܲݴ$ ݼ(@2b$ӽ1w94X4T2b4̔n2b2b9%S]4T2b94̔2b94̔2b94wd4T2b佰Fܤ4H2b}' wݭ٩O2b9 ׻׺Z(, 1!:(-54RݬὙi$9Ӭ, /ܾ9& $/ (':1?& '&'01!&9R' C942@4*..4bH2b.oO_2,9~          B ڽ ཰( 2bb2X9Zܲ':$ݬ$(&R@Fo2~׹ֻZP="ܦ"׺'2Z&~̔4?2b&moj&C aEP-50悌P-] $'' &04ܦ4bH2b5 '0o&нX4^5&$ݶܬݪ 'Y~R$ݶܬݪ &( h   6 2   u       Y O     罰 콰     ڽ * }P&P4ܦ~h4愽$'h0 '0h( _4a$ݬ59ܴ$ 4ܲݴ5ݲ9 & ]9Ƚ!' Ƚ$' O9h'4ƽhT2b9 &9 '9 :2~F 'Am'-$&'#('a'$LRX'p^ ^佞a'2b9a '佞a'2b9 ?&'2b9ܤ(X]F4T2b̕S~$)ݬ$ݶܬݪ42b94.,5$&9ܬ4c4*b-Z Zb//b44fa2d44b2b2b ''-4b4b4a2d2b42b$ݶܬݪ2d9Oֻ4'4b4a2d׹׺5~Oֻ) % Z , ߽ n  >O44>&DP/PbHoLZlbb &۽JobbX4̐U2blbb &~%S %D ܦ42b4ܰH2b4½ 2b4 2bܬ4ܾ'O4̱佛Vܲ$(&\$'ܦ4̑D 2b(R2b9.ƃ$ܴ4ܲ4ܼ2d4'$aa$ݬ@m&2b9ܨ4' /&_' &EӨ_'A%&5^'$' .'~' ʀ*&& v9悆瀯 oܨE& v 54oof'& & fb''m'f怯fja'oa(ho4h' & mb&oƽP_' b''P&2c9h4h4̗W2b2b'h'0.&hh9diskhosth4h4̗W2b2b'4h_' .'\0 O4# ~4f4hK2d5bo o944̗?2b&̗?2b9TOtob4' 2b94׸' d4̗׽ 2) B:^WCAN:^XEM:^YSUB:^ZESC:^[ (No Key)FS:^\GS:^]RS:^^US:^_Delete (Repeat Key)(OFF/RVS Key)̑439ERROR: Enter $ and 1 to 2 digit code, or D plus 1 to 3 digitsj$ Z ߽ ӽ C    _ 4*xܰ4xݰ5ݰܦh) ne not in CALCS)Total Buffer is Empty̑4 2b9檪O14̑g2b9ENTRY ERROR %d line(s) above starting line "ÀOd&D@& =& D' %'$' 390) A E444f2d2bܦ4b2b&)0'ܦ4̒7 2b&$'\ 4ܬh$a̽n'~2d9Aborted: 4'v<&k4 &< ^&040d4b2b50 A& 40佰50 2&"40佰E44d4̓AW2d2b50'Z &><!5 o) 2) Division by 0RESULT EXCEEDS +32767 Decimal. Recompute in Floating PointRESULT IN Two's Complement. Value below zero is: -$%s021#&w =& |0}0'L49='|0~+04̘G4 2b݂'4]&o,55 & O 4̑3$) b佰4f4b 2b2bOָ2b9: 42z@efB0 -L 0je': o2h9P2@4ܰH2bܦ42bt'ܦ4½H2bܦ4ܰQ2b $ܰ4ܦH2b '#P42bt' ' P42b@4H2 ~V4ݼܦ4f2b4Vm'b4b2bb4)4h4̱$W2b2b'"h.m''0 ohM']' ohܤ4hH2bܦ4ܦ4b2b4ܮ(4f#( O_4ܨ4f2b'4o(04b4j2b' ܦ4dH2b&)bY'5040bEbbܮb#$mj&?o".牀0"(0'''4)21}0'L4 &}0'L4 3%&Qz |29='|0~O4 D'$'9%'hz&|0~ D'4$&|0~z },|0~ӆ$&}/ 04z.,|0~4z-&|0~ ҆ %'(0&4 1&4 } & &| |0 J M) 2b94$&' 1!O4$*5$&O>&L>+'#-'O$&' 1!O4$!5$&O>& ' 1!O4$$5$&O>&_5]'o1! ]9nulsohstxetxeotenqackbelbshtlfvtffcrsosidledc1dc2dc3dc4naksynetbcanemsubescfsgsrsus4̱2b4)4 73D8̑92b @- "Op -"b $& b % ", &!b̑39PF瀀P;&. :&09PRESS KEY TO BE CONVERTEDHb4 2b944̘2d9CONTROL KEY value is: D%d or $%h D'$'J&D&)b2b' ~2d9ܼ4ܦ4 2d94d4H2bm&d4ܰH2bd4½ 2b xdm&d4̙Q2bd4ܰQ2b Tdh4h4̱$W2b2b&d4½ 2b ,'' "d4b&4ܰ4dK2do2bd2b9. 4Z'm&m&4Ji4i4i4f2f)섽15' j0b&m&2d}P'̱4P2bbP4d2b׼٩̓4ܨ4̓4h2f'A(0'944&̓04db4n4l2h&&&2b2bob&oom& ܨ4d2b4d2b'ܦ4ܨH2bo&Fܦ4d2)'|04&9$& D&5 93D& $&s 9: 4'z& 砆 o90̑4E4&46&|0 / |04~p̑4T+}0& 042b944̑42b9̑442b94*|-}'̓3̑4T4.&o9H44_' 0D$)"0Ȁ焽rrP44d2dooP"14 O'0L LP" 5Ȁ焽r&݂ & &݂ &佰'rrὰn~ &~Yܦ42bVܦ& ~4ܦ%2b4̔Q2b~Y.V~VH2~Vun2~) $& -O ̛+4 2b944@ΙZ0='45&|0~F oΙ^־ 04& I '% ", &!I  %&Ơ I5@9Hb' 9*$!ș֙ /;M]nÚʚКךNUL:^@SOH:^A (Home)STX:^)b'~2c9Say what?Missing file-name.!Illegal line range.Illegal search string.Search string not found.Search string required.No search string defined.Not a legal default device.%S%S - Lines transferred %D.%DNo line range allowed.%D Occurren)b'ܦ4H2b&&d46f2f&&Oܨ4ܦH2b& d46f2f̓4ܦ4̓4f2f 2db'~M'̓ ̓9]'O_ & 4׼5]94f"0E"0(0h6"0Ȁ焽'h4h4h4f2fP)d 2aO49O4501d$4 40&}4' 454~㎑ 5&90123悆.'$' %' D'J&!.&i }0'L4 }3' 3%&Q|29*')+'%/'!-' .|0~.' $&|0~ 044 Q̑"2b51! .|0~ /.' )Vtܲ$ݬܴܴ4ܲ2b&~nVܮ(4~>'N2~V\2~ 9 _4t>$'.' &~ P$54$>V('ܲ&&ݲܴ('ݴ"2c9/ ,ܴ4b'ܲ)B (Run)ETX:^C (Stop)EOT:^D (Del Key)ENQ:^E (Insert)ACK:^F (ESC Key, EOL)BEL:^G (Curs Rt)BS:^H (Curs Lft)HT:^I (Tab)LF:^J (Curs Down)VT:^K (Curs Up)FF:^L (Clr Scrn)CR:^M (Carr Rtn)SO:^NSI:^ODLE:^PDC1:^QDC2:^RDC3:^SDC4:^TNAK:^USYN:^VET)ces changed.*Memory full.Replacing string too long.%D bytes of free memory.*Illegal destination line.Insufficient free memory.> B q  Z i  c Z ߽  * )  4 = *4b2b2b9' 940d1&o"' "'%# j5'A"&&"'6"'*?& *&'"?'?'ꡄ' '0 'o  59%s%n%s%n%s %s%nOutput fileDirectory& ;#'/'\'@'&la la)$&|0~ 04 Q2b̑"+&_ -& *& ̑4T906BH}0'4~34544"J&5}0'4~45+&"4$4̖b4 2b54~-& 45~*&'44"`%+' 4̖4 2b54~/&B4')b%ݲ$b#$4d4ܲK2dmd'$- "ܲ$ܲ$# $$ݬ½n2e9̰34 ̰64VtZZo4o'("&c $0'm& O45 00 2a5\:/2b~nV$4 2b9ܲݬܲ$$''ܼ 9o⽛>"''*jsrXXXXXlbccXXXXlbcsXXXXlbeqXXXXlbgeXXXXlbgtXXXXlbhiXXXXlbhsXXXXlbleXXXXlbloXXXXlblsXXXXlbltXXXXlbmiXXXXlbneXXXXlbplXXXXlbraXXXXlbrnXXXXlbsrXXXXlbvcXXXXlbvsXXXXldaXXXXXldbXXXXXlddXXXXXldsXXXXXlduXXXXXldxXXXXXldyXXXXXleasXXXXle*a'O4d4̔:W2b2b余O2d9 prINTprINTpUTpUTcHANGE/\dELETEgETiNPUTeCHOmOVEuPPERlOWER#runexitsetUPmonITORtaLKdiRECTORYcaTALOGnAMEdefAULTscratCHrENAMEmouNTcoPYdaTEtiMEtabSEThELPexECUTEfREE@tYPEprINTSaves textA* TUTORIAL ON BEDIT March 6, 1985 1. THE DOS: Put the disk on which BEDIT arrived in drive 0 after you put a write-protect tab on it. Place an unformatted disk in drive 1. If you're read- ing this in the W*  0 &o m'`"';' ccmc& & '0O'L'J0#M'##14 b4bH2b2b_\m&c\O4$42b&$c\4H2b$c:焽2d9Z4cj'B $ j䧠Z& /&)Oj4̒lO'X' 40350 5* (now in drive 0) somewhere safe, put a scratch disk in drive 0, and put another scratch disk in drive 1. We'll use 'em later. Any 3.0 DOS command may be entered in BEDIT just as we did it above. If you want to send a DOS command to a device other t* auXXXXleaxXXXXleayXXXXlslXXXXXlslaXXXXlslbXXXXlsrXXXXXlsraXXXXlsrbXXXXmulXXXXXnegXXXXXnegaXXXXnegbXXXXnopXXXXXoraXXXXXorbXXXXXorccXXXXpshsXXXXpshuXXXXpulsXXXXpuluXXXXrolXXXXXrolaXXXXrolbXXXXrorXXXXXroraXXXXrorbXXXXrtiXXXXXrtsX* lters textSearches for matchSearches for no matchPurge textLoad textAutomatic text entryDuplicate textTransfer textMake upper caseMake lower caseShow line numberRun editorLeave editor & save textSet ACIA chipEnter ML monitorEnter 'PASSTHRO* aterloo Editor, say "bye" and load BEDIT (or BEDCALC) from drive 0 with: disk.bedit (or disk.bedcalc ) The editors in BEDIT and BEDCALC are identical, so from here on out we'll refer to either one as BEDIT. When *  o2a942|(넉hb"!d4fj4hK2d(h(ܴhݴ_2f94(:4bf4bd4f4dK2b2b(h(ܴhݴ2f940hO4'5&  h' '_ 04h4̒l2d'4h04hcH2bh5瀧 _2b546h'Z = ̚2b540omj'/*han 8 (the default), then use the device number with the "@", like this: @9 d1=0 You can enter the DOS commands either in lower case or upper. BEDIT will execute them either way. All the Waterloo DOS commands are available i*XXXXsbcaXXXXsbcbXXXXsexXXXXXstaXXXXXstbXXXXXstdXXXXXstsXXXXXstuXXXXXstxXXXXXstyXXXXXsubaXXXXsubbXXXXsubdXXXXswiXXXXXswi2XXXXswi3XXXXsyncXXXXtfrXXXXXtstXXXXXtstaXXXXtstbXXXXasldXXXXadmitXXXclvXXXXXcpxXXXXXdesXXXXXdexXXXXXdsctXX*UGH' modeOne column directoryTwo column directory (sorted)Rename textRedefine assumed deviceRemove file from diskChange name of file on diskInitialize diskTransfer fileShow/rename date and timeShow time, rename date and timeShow/set tabstopsS*BEDIT is loaded, you may set the time and date by entering, for example: "June 25 85" 10:20:00.00. Dates with any spaces in them must be in quotation marks. Then get this file into BEDIT exactly as you'd get it in the Waterloo Editor, and, from the *gjl42O652& X'0J&M' m'm&m&M'o 'X'o55csXXXXXXccXXXXXXeqXXXXXXneXXXXXXmiXXXXXXltXXXXXXplXXXXXXgtXXXXXXgeXXXXXXhiXXXXXXhsXXXXXXleXXXXXXlsXXXXXXloXXXXXXvcXXXXXXvsXXXXXXabxXXXXXadcaXXXXadcbXXXXaddaXXXXaddbX*n BEDIT as well (COPY, RENAME, and SCRATCH), and are given exactly as they are in the Waterloo mED--with two exceptions: 1) SCRATCH may be abbreviated only to "scrat". Try: scr anyfile at command cursor right now. You'll get a "Say what?" *XXelseXXXXendXXXXXendcXXXXendguessendifXXXendloopXendmXXXXequXXXXXfailXXXXfcbXXXXXfccXXXXXfdbXXXXXguessXXXifXXXXXXifcXXXXXifeqXXXXifgeXXXXifgtXXXXifltXXXXifncXXXXifneXXXXinsXXXXXinxXXXXXloopXXXXlsldXXXXlsrdXXXXmacrXXXXnamXXXXX*how command summaryMacro keyboard entryFree memory availableSend command to diskExamines a filePrints formatted text!,,88O8O8[[ip*keyboard, enter the command to DUPLICATE the disk in drive 0 to drive 1: @ d1=0 The "@" shows you want to use the 3.0 DOS commands. The "d" mean DUPLICATE, and accomplishes the same thing as BACKUP. The destination drive*XXXadddXXXXandaXXXXandbXXXXandccXXXaslXXXXXaslaXXXXaslbXXXXasrXXXXXasraXXXXasrbXXXXbccXXXXXbcsXXXXXbeqXXXXXbgeXXXXXbgtXXXXXbhiXXXXXbhsXXXXXbitaXXXXbitbXXXXbleXXXXXbloXXXXXblsXXXXXbltXXXXXbmiXXXXXbneXXXXXbplXXXXXbraXXXXXbrnXXXX* 2) You no longer need specify the DOS format of your files when you COPY, except when you copy between different devices. Let's take the file, 27 "myprogram" PRG (as it appears on directory) as an example. Here's how you copy from drive to d*optXXXXXoraaXXXXorabXXXXorgXXXXXpageXXXXpsctXXXXquifXXXXrmbXXXXXsecXXXXXseiXXXXXsetXXXXXsevXXXXXstaaXXXXstabXXXXtabXXXXXtapXXXXXtbaXXXXXtpaXXXXXtsxXXXXXtxsXXXXXttlXXXXXuntilXXXxdefXXXXxrefXXXXcallXXXXfcsXXXXXceqXXXXXcneXXXXXj*FileName/srch/repldestination[FileName] to FileNamedevice-name[date] [time]{tabs}command-stringtextlinerange̔N̕ ̗٩ 큌P%_ 큌.%m'[42b] 4h2bfbm'"余'[4 * is always left of the "=" sign. While you read this, the original disk is being duplicated on drive 1. [You'll find a complete summary of all 3.0 DOS commands on this disk in the file: dos_commands:e]. When the backup is completed, store the master disk*XbsrXXXXXbvcXXXXXbvsXXXXXclrXXXXXclraXXXXclrbXXXXcmpaXXXXcmpbXXXXcmpdXXXXcmpsXXXXcmpuXXXXcmpxXXXXcmpyXXXXcomXXXXXcomaXXXXcombXXXXcwaiXXXXdaaXXXXXdecXXXXXdecaXXXXdecbXXXXeoraXXXXeorbXXXXexgXXXXXincXXXXXincaXXXXincbXXXXjmpXXXXX+rive in Waterloo's mED and BEDIT: -------------------------------------------------------------------------------- Waterloo Format: BEDIT Format: cop myprogram,prg to disk/1.myprogram,prg cop myprogram to disk/1.myeqXXXXXjneXXXXXset2XXXXset1XXXXsne1XXXXseq1XXXXsne2XXXXseq2XXXXdoneXXXXjhiXXXXXjloXXXXXpushXXXXpullXXXX  C XXXXifgeXXXXifgtXXXXifltXXXXifncXXXXifneXXXXinsXXXXXinxXXXXXloopXXXXlsldXXXXlsrdXXXXmacrXXXXnamXXXXX*2b余']:./4fH2bE0.턮dm&d"0Ȁ' b0b0&& m&-~'9b' 96     Z   Z $ݶܬݪ P4' %Ā&+e of good cheer. You can get it back. Leave the cursor alone and press SHIFT/RUN. Voila! The Lazarus line is back from the dead! Now, press SHIFT/ RUN again. You duplicate the line of x's! Notice that the x's form on the line above the screen cursor. If,+program -------------------------------------------------------------------------------- Because of internal changes, BEDIT copies files much faster than Waterloo's mED, and in their original format--automatically. Try a COPY command now, in the old+. Last, the RETURN key in BEDIT moves the screen cursor down one line, even when you are in command mode. Hit PF5 and do several RETURNS. \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 4. STOPPING GETS AND PUTS:+u now hit RETURN, the command is executed. You may copy anything from text to command cursor with PF1. Whatever is at the screen cursor is duplicated on line 24. Suppose you start to write a new program line: search$= and yo+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx and stomp on the STOP key quickly after you press RETURN. If you're reasonably fast, you'll find most x's unchanged. \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\+ after you accidentally delete a line, you don't move the cursor, you replace the dead line right where it was with SHIFT/RUN. Obviously, SHIFT/RUN is a sort of ECHO key. Whatever line you delete with PF2 can be repeated as often as you wish, wherev+ Waterloo format (Don't worry about your disk. Nothing will happen to it). cop anyfile,prg to disk/1.anyfile,prg You'll immediately get a "SYNTAX ERROR" message from the unwanted ",prg". Only when copying between different devices (8 + Ever kick off a long printer job in Waterloo's mED and decide you wanted to stop? You can't--unless you turn off SuperPET and lose your file. In BEDIT, any PUT or GET can be stopped with the STOP key--to disk, printer, or any other device. Is your + u wonder if you've used "search$" elsewhere in your program. Put the screen cursor on the line, press PF1, and you're in command mode with the phrase at command cursor. Try it. Then edit the line to read: /search$ (the search command), and press RETURN. +\\\\\\\\\\\\\\\\\\\ 6. A QUICKIE ON ECHO. We must duplicate some lines in the next section, so let's do it the easy way with BEDIT's echo command. Put the screen cursor on the line of y's below, and say at command cursor: e . Do it a couple o+er you wish--for a while. The buffer which holds the line of x's is also the command buffer. Let's see what happens when we give a command at command cursor. Press PF1 to repeat the following line to the command line and RETURN it: /Now press+to 9, for example) must you use the old Waterloo format and include REL, PRG, or USR formats in a COPY com- mand in BEDIT. As with Waterloo's mED, there's a default to SEQ format, which never needs to be specified. As usual, there's a price for this+printer ready? Utter one of the following commands (c'mon, copy the right one to command cursor with PF1 and then hit RETURN). p printer p serial p ieee4 Quickly hit STOP. A few lines will print, and you'll see a message on l+The command executes. If you use complex search or search/replace phrases--or if you want to execute the same command a number of times, PF1 saves a lot of time. \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 3. THE +f times: yyyyyyyyyyyyyyyyyyyyyy [This is line 171] You can echo a line in BEDIT anywhere else on screen, using line range co- mmands. Try these with PF1: 171 e +3 171 e $ 171 e 175 Don't ever give TWO line+ SHIFT Now press SHIFT/RUN. Lo, the command is repeated into text, just above the screen cursor. The line of x's which was in the buffer has been replaced by the command you just issued. If you want to save a line, therefore, better get it back BEF+ convenience. BEDIT will not overcopy an existing file with the same name. You must scratch or rename it before you can COPY. STATUS and ERROR messages appear on line 25 of the screen in BEDIT. They are permanent (for reference) unless you clear lin+ine 25: "Aborted:..." Yes, it works on all disk puts and gets. Try a few. 5. STOPPING CHANGES: Did you ever kick off a CHANGE command, decide it was dead wrong, and find yourself unable to stop it? In BEDIT, STOP stops it. Try it on the three lines +OTHER KEYS: You've probably sworn a dozen times in Waterloo's mED when you tried to home the cursor with HOME--the screen shivers for a while, but the cursor never moves. In BEDIT, HOME indeed homes the cursor. Try it. Second, you now can retrieve t+ ranges for the destination (165 e 172,+3 will fail!). Note the line echoes one line PAST the destination (gee, a GET always inserts one line PAST the screen cursor; ECHO works the same say). Yes, you may ECHO a range of lines, as in: 170,185 e $ [w+ORE you utter any commands at command cursor! Why would you want commands in text? Hmmm. Suppose you've tried some very fancy search/replace commands, and they don't work quite as you want. Want a record of what you tried? SHIFT/RUN saves them to t+e 25 with SHIFT/CLR. You should see a status message there now. Clear it. \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 2. THE KEYPAD: The PF (Shifted Keypad) commands are identical in BEDIT and the Waterloo mED--bu+below with the change command below, transferred with PF1. 159,+2 c*/x/y xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxx+hose horrible mistakes you make in Waterloo's mED when you accidentally hit PF2 and delete a line--forever. Put the screen cursor on the row of x's below, and press PF2: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx B,hich will echo the line range to the end of text]. ECHO is handy when you're making forms, when you duplicate captions or make a table of contents, and when you want to practice search/replace without messing up your file--which is exactly what we'r+ext. Have you worked out a standard search/replace command you want to file? Save it to text with SHIFT/ RUN. Remember that ANY phrase in text can be copied to the command line with PF1. SHIFT/RUN does the exact opposite. The two keys work as a team+t BEDIT adds a new one. Go to line 51 of this file (the copy command for file "anyfile"). Put the screen cursor on it. Touch PF1. Voila! The line is repeated at command cursor, and you automatically go into command mode. If yo, . c*/%~line%~/lone/ line=(liner*23)/aline% linend$=value$(line/liner)+beeline$ In short, in BEDIT, you can safely replace any variable name or word WITHOUT changing any other word which incorporates the change phrase--if you use %~. War,e about to do. \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 7. UNIVERSAL CHANGE: Try to change the following few program lines in the Waterloo mED some day with a single change command, replacing the variable name ,ists all four-character files with a suffix after the period). When you get directories on screen, BEDIT holds the directory for you until you enter a command. If you press RETURN, you get more directory. If you enter a period , you end the , and do it without changing the word "placebo". Let's try it without the new metacharacter to show what happens. First, we try it with a space bounding the ends of " place " (ECHO the "Change Me" line before you try): . c*/ place / noplace / p, EVICES: Ever send a file to printer from Waterloo's mED and then forget the name of your file? You can then type "name " all day at command cursor and get "printer" as the name of that file. BEDIT's file-designator is immortal (well, immortal unt, ning: %~ won't work in replace phrases! [~ is shifted up-arrow.] \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 7. DIRECTORIES: The DI command gives you unsorted directories, in the order in which the disk holds them, "general" with "specific". Do it without changing the words general%, generalization, or generality$--if you can. if general general=generalization+4 generals%=5 generality$=rpt$(" ",generals%) endif Y, directory listing. Or you can enter any DOS com- mand or command to your printer while the directory is STILL on screen. Some improvement over those disappearing directories in Waterloo's EDIT! The STOP key does not stop DIrectory or CAtalog output, lace Change Me placebo Change Me place Doesn't work, does it? At the start of line, "place" has a prefixed null. At the end of line, it has a suffixed null; our change calls for leading and trailing spaces--and nulls ,il you change it). Before we go on, type: n at command cursor: You should get a return on line 25 of: disk.bedit_tut:e, where: / \ "disk" is the device and this is,. Try di RETURN on drive 0. Then do: ca RETURN. Note that CAtalog gives you a sorted directory. Next, try on a disk with a SHORT directory (we're short of memory): di disk index and when the drive light goes out, get file "index" into BEDIT, r,ou cannot do it. A change of: /general/specific/ will change "generals%" and all other words holding "general". WARNING: Because you may easily change this text, all CHANGE examples which follow require you to put the screen cursor on the first line of t,. You get one screen with the command. You may continue with after that screen displays, or end the display with a period: . . Beware: output to disk and printer is controlled in exactly the same way. IF you want a multi-screen directory,aren't spaces! Now, try: . c*/place/noplace What happens? Yup. You change "placebo" to "noplacebo". Delete the bad line with PF2 and ECHO the line again for a good copy. Then try: . c*/%~place%~/noplace/ It works. The meta accepts t, file-designator The two together constitute the "filename", which the "name" command re- retrieves for you. In BEDIT, the default DEVICE is immortal, and always is disk/0 unless you change it. If you want to, enter: default disk/1 <,ight here. Note that it's in one column so you can comment it. Then try the same thing, using: ca disk index. Get THAT into BEDIT here--and note it's in two columns, sorted. Now, delete the "index" files from the screen, either with PF2 or a delete com- ,he text to be changed!!!! [Put screen cursor on the line "if general", above] .,+3 c*/%~general%~/specific/ [Execute this at command cursor] The program, after change, will be that below. Only "general" is changed: if s, sent to disk or printer, you MUST press RETURN for each page until the directory listing ceases! Try the following command to printer with a disk in drive 0 which holds a BIG directory (more than one screen page): ca disk to printer Note well,he prefixed null at start of line; it recognizes the suffixed null at end of line--and changes both occurrences of "place" to "noplace". But "placebo" ends in "bo"--which is not a space, not a null, and most certainly not a non-alpha character. So--"plac,RETURN> (In short form, it's "def disk/1") Note the change is printed on line 25. From here on until you change the default device, it will be drive 1. You may default to any devices except ieee4, printer, or serial. Why? These are FILES, not devi,mand for the line range of the file "index" on screen. Next, try: ca *a* to ieee4 (or printer or serial). You should print to printer a listing of ONLY those files found on disk with an "a" in the title. You also list selectively with ????suffix or ,pecific specific=generalization+4 generals%=5 generality$=rpt$(" ",generals%) endif The metacharacter in the command is new: %~ (the second character is tilde, or shifted up-arrow). It stands for "a null, a , that printer output stops after the first screen page displays. You must RETURN the directory to print the subsequent pages. \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 8. IMMORTAL FILE=DESIGNATORS AND DEFAULT D,ebo" doesn't get changed. Have some fun with these examples. Try to change "line" and only "line" to "lone" without changing any other word containing "...line...". Can you do it without the new meta with only one command? When you give up, try: -ces--and if you could default to them, we'd be right back where we were with Waterloo's mED on remembering disk filenames. Try: def disk9/0. Note that the change is immediately confirmed. Now, change back to whatever default device you want to ,prefix*. The * form represents any number of any characters. You may "sort" your directories easily to specific types, as with: *.asm, which will list only .asm files. You may use the question mark in combination with the asterisk, as in: ????.* (l,space, or any non-alphabetic character." The changed word MUST be bounded by one of these three--a space, a null, or a non-alpha. Why those three meanings? We'll illustrate. In the "Change Me" line below, let's change the word "place" to "noplace"--- SEQ 6 "con1.asm" SEQ 1 "con1.b09" SEQ 23 "convert.asm" SEQ 3 "convert.b09" SEQ How do we get rid of all the files but the .asm's? We use the NOT command, which uses the reverse slashbar -use. Immortal file-designators work the same way. You change them with "n". Try: n trial Again, the change is confirmed on line 25. Try the following commands while the default file-designator is "trial": 1,5 p [note the-************** Commands using absolute line specifiers will work as well. Get the line num- bers for the moved lines with the "#" command, and MOVE all or any part right back where they were (the XXX at right margin is your reference). Then put-: n scratch def disk We'll now put and get some files. Everything we file goes to disk as "scratch". When you "get" stuff from disk, put it between the two following lines by plac- ing the screen cursor on the top line of "::::::::" - nt of free memory appears on line 25. \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 13. TYPE. You can read any SEQ file on disk while there's a file in BEDIT. You used to do this with "cop filename to terminal", (an- "\" to mean NOT. Put the screen cursor ON the first line of the directory above, and utter the following command: .,+7\.asm/d Well, you have a "selective" directory now. We combine the NOT search with the old Delete command, and get - file goes to your default device as "trial" 1,10 p disk/1 [file "trial" is created on drive 1. You do not type "trial"] While you have a file in BEDIT, no "gets" from disk will ever change the immortal filename--which is mighty handy when you - the screen cursor on ***Line 5****... and try: . mo -5 You get the idea. You can move text from anywhere to anywhere else. The lines you MOVE always insert on the first line BELOW the designated destination, just as lines you GET do. \\\\- before you "get". :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 1,20 p [First 20 lines are filed to drive 0 as "scratch-d got double-spacing every time a line of 80 characters printed)--and couldn't stop scrolling! Now there's a better way. Put the copy of the BEDIT disk in drive 1, and say: type disk/1.bedit_tut:e This tutorial will load and print--and will sc-rid of all but .asm files. You may, of course, search for lines NOT containing a desired phrase. Don't try to search/replace with NOT. The logic gets so convoluted it becomes an Editor in itself! \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\-"get" a lot of insert material off disk into a big program or file. You can always find out the default device and file-designator by entering "n " at command cursor. Can you over-ride the default device and file-designator? Sure. You c-\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 11. CHANGING CASE: You can change any line or group of lines from upper to lower case (or vice versa) with the UPPER and LOWER commands. Put the screen cursor on the test li-"] 1,20 p disk/1 [Same lines are filed to drive 1 as "scratch" g [We get "scratch" from drive 0] g disk/1 [We get the same file from drive 0] Note that you NEVER need retype the file-designator, or ti-roll continuously UNTIL--you touch the spacebar. Scrolling stops. Resume reading the file with another touch of the spacebar. If you attempt to use the old "copy filename to terminal", BEDIT will give you TYPE anyway--so you can scroll at will. Try it. -\\\\\\\\\\\\\\\\\\\\\\ 10. MOVING LINES: You may move any line or group of lines anywhere else in text. The original text is deleted when you MOVE it. To move the group of lines below to a new position under the preceding directory list, put the scre-an file this tutorial under any name to any device by simply entering the new filename, as in: p disk10/1.fudge. But the immortal filename does not change, unless 1) you change it, or 2) BEDIT holds no files, in which case the first "get" from disk will -ne below and say: u and then l aaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbb1111111111111111dddddddddd Both commands accept line ranges, as in: .,+5 l, or 24,40 u. \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\-tle of the file. Now, delete the stuff you got between the two lines of colons, above. \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 10. "NOT" SEARCH/DELETE: Suppose we want a list of all the .asm files on a full di-You can STOP reading the file at any time with the STOP key. Then hit RETURN. -------------------------------------------------------------------------------- Well, we're through with BEDIT in general. Now, let's have some fun with BATCH files, EXECU-en cur- sor on the first MOVE line below and say: .,+4 mo -19 [We use relative commands; you probably changed lines] XXX ****Line 1*******These lines we'll mo-set the file-designator (or title) in BEDIT. BEDIT loads with a default designator of "text:e", and a default to drive 0. Don't expect the default DEVICE to change just because you load a file from drive 1. Only you can change the default device. -\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 12. MEMORY AVAILABLE: If your file is getting long, and you're worried about having enough memory, you can always find out how much is left. Ask at the com- mand cursor, with: f The byte cou-sk. We make a copy of the directory with: "di disk index", and get the "index" into BEDIT. We show the start of such a list below: 15 "calcr1.asm" SEQ 2 "calcr1.b09" SEQ 7 "con0.asm" SEQ 1 "con0.b09" TE, and PRINT--which are great time-savers. Delete this file from the screen with *d, and get file: batch_tut:e onto the screen. you attempt to use the old "copy filename to terminal", BEDIT will give you TYPE anyway--so you can scroll at will. Try it. -ve************** ****Line 1*******These lines we'll move************** ****Line 2*******These lines we'll move************** ****Line 3*******These lines we'll move************** ****Line 5*******These lines we'll move- 9. SIMPLIFIED FILING: Because the device and the file-designator are separ- ate in BEDIT, you'll find you usually don't have to retype filenames at the command cursor. Example: Change "name" to read "scratch", and make the default device drive 0, with0 "transfer " tr 2C 2 "index:e" SEQ 99 "bedit_instr:e" SEQ 91 "bedit_tut:e" SEQ 68 "calc_instr:e" SEQ 89 "calc_tut:e" SEQ 76 "batch_tut:e" SEQ 1482 BLOCKS FREE. ies.hlp . scratch disk/1.bedit_instr:e scratch disk/1.bedit_tut:e scratch disk/1.calc_instr:e scratch disk/1.calc_tut:e scratch disk/1.batch_tut:e @ c1:bedit_instr:e=0:bedit_instr:e @ c1:bedit_tut:e=0:bedit_tut:e @ c1:calc_instr:e=0:calc_instr:e @ c1:calc_tut:e=0. 2444 23 X <--Put cursor here, press PF4 Don't use Column Sum in the monitor. CALC reads the Editor's internal text file--NOT the screen. If you try Column Sum in the monitor, you g.ons so CALC won't read them! (To back up to the error, go to Command Mode, and say: -20 . The screen cursor will be on the line of error.) Now try Four, at X. How many characters in the line the ERROR message points at? Change it to 13 chara. it reported (if the answer is 23.9999, and you ENTER only two decimal places, the answer comes back: 24.00R. FP routines do NOT give .999 when you subtract 900.000 from 999.999, but a bit less...) Five Six Seven Eight Nin. II : Integer Arithmetic - Line 295 Part IV : Floating Point Arithmetic - Line 365 Part V : Let's Put it Together - Line 396 Summary : Entry Format Summary - Line 4. to your bank about an error in your account without text getting between the number entries... -------------------------------------------------------------------------------- Next, try the One Column, below, with the cursor first on Y. Note that you. et garbage. 5 Now put the screen cursor on the points marked X in the columns below, and press and RELEASE PF4. Note that CALC reads right through text... :: <--Stopper Colons /........... cters and try again. Still get an error? When you are totally frustrated, remember the bottom number is a decimal entry. The FIRST entry sets the decimal pattern; all numbers above it must have the same number of decimal places. CALC is sometimes infuri.e Ten :: 100 ::: ::: ::::::: :: 200 999.999 99999.99999 99.555 (9999999999.8) 999.999 300 (900.000) (90000.00000) (99.000) 9000000000.22 -------------------------------------------------------------------------------- 100.00 Part I : COLUMN SUM Put the cursor on the line , Press PF4 and release. Notice you get an ENTRY ERROR at bottom of screen,:calc_tut:e @ c1:batch_tut:e=0:batch_tut:e LC calc_tut:e Tutorial on, with examples batch_tut:e Tutorial and instr on using batch files in BEDIT ($7fff), or 2) Division by 0RESULT EXCEEDS +32767 Decimal. Recompute in Float.... .000011 The column at far left has no stopper 100.00 99.999999 colons. Gee, is the total right on that 200.00 (90.000000) column? Add it up! (Now, check the this is text 0.99999.ating, but NEVER wrong...(well, as they say in HMS PINAFORE, hardly ever). Column Five below is offset enough from the left margin so results will print in the proper place. Notice that results are offset to the right on all columns at the left marg..0 (900.000 200 .001 99999.99999 X X 99.999 1200 90000.00000 X X X X Try Column Seven, at X. Note th.. CALC has detected the low end of mED memory, and won't go further. Otherwise, it reads the numbers above the cursor, ignores all text, and sums what it finds, as in: 123.45 12.. Three Four -300.00001 123.56 100.001 .......... 123.56 200.002 text mit: :: 500.0001 (555.555) .9 100.00 just below . 400.00 (1.000000) It got added). Take the stopper colons oooooX :: X off the middle column and press PF4. Woops! See .in. Now, take the stopper colons off Five... Try Six (without stoppers). Yes, you picked up Column Two. You are always told how many entries are summed at the bottom of the screen. Check that message! You may THINK you're summing three numbers and a.e result is truncated. This is your warning that SPET can't handle that large a number of significant digits. The answer is rounded to the number of places shown. Column Nine gives the answer in scientific notation, since the number is too large for.02 Put cursor on X, press PF4: X In the preceding operation, CALC read all lines from X to start of mED text, found only two numbers, and added them. CALC will sum up to 255 Number Entries (not text lines) at one time. If it gets more . 300.00000 12345678901234 555.555 400.00001 overlong line 123.45xx _______ --------- 700.000011 -------- .the lone 5, up above? It has (Erase sum on column at left) no decimal places... You get an ERROR. -------------------------------------------------------------------------------- Why does CALC read through text, and not stop when it sees a .ctually be summing a lot more. Now, try stopper colons on Six. Note the "R" for rounded result. Sometimes this answer is exactly right--and sometimes it isn't. It happens when the answer is a continuous string of "9's", which continue BEYOND the last dig/ any other notation. Column Ten shows that you can work right up against the right margin. Now try Column Eleven, below. Get your subtotals, and move 'em to the right with SHIFT/REPEAT. Then add the subtotals for a Grand Total. You'll find it easies.than that, it tells you. If you want to stop summing on a specific line, put a set of stopper colons above the last number to be summed: :: <-- Stopper colons 456 . X X Z Y X Try colume Two, cursor at X (notice no stopper colons). Then try Three. Gee, you get an ENTRY ERROR at -20 lines. Be warned--don't put digit entries in text unless you use stopper col/o: $9ffff=D $e=D Any hex entry of FIVE digits is too large a number for SuperPET, which handles a maximum of $ffff (65535 decimal). CALC refuses any entry with more than four hex digits, but will convert from one th/t to start summing from the BOTTOM of the column. Your subtotals will overwrite the stopper colons. As you get each total, SHIFT/REPEAT it to the right. When through with subtotals, get the Grand Total for both columns. Eleven Sub/------------ PART IIB - CONVERSION, ASCII to CHARACTER, CHARACTER to ASCII Try these conversions from ASCII code to character, with the cursor at X (the @ sign is shorthand for ASCII): D91=@X $67=@X $20=@xX / 23.0225 lator, and 2) our eraser. -------- --------- Grand Total 12323.0224 12323.0224 -------------------------------------------------------------------------------- PART IIA : CONVERSION O/ se to mean: "Control F". We'll say more later about the Control Keys. After the graphics character, we show the ASCII shorthand for the key (as in EOT for "End of Text"), then the character Control key which generates that code (if you use a program/ rough four hex digits to any other notation. Now, try: Leave in lower case | $7DAA=D and then do $7daa=d CALC c/ total Column :: ::::::::::::: 10000.0000 300.0000 Subtotal :: 999.9999 1000.0000 Subtotal :: 23.0025 .0200 Subtotal / D65=@X The character the code generates always shows at the right of the equation. Note that a space (D32, $20) is represented by a reverse-field blank, or space. How else can we show it? Don't try to enter more than three Decimal digits, o/ F NUMBERS You may CONVERT one notation to another either in the Editor or in the mon- itor. CONVERT reads the screen only. Put the screen cursor on the X's below, and press PF4: (You don't need the X's; we use 'em only to show location.) $7fff/ which implements the character Controls). Last we show the name of the key on the SPET keyboard which generates the Control specified--in parentheses. Sometimes we can't generate the code with a key--so there is no "key" entry, as in: D31=@ /an't tell the difference between the hex digit D and the D we use for decimal notation. Enter all hex digits in lower case! To keep from fooling it- self, CALC converts any lower case d (right of =) to a capital D, as you'll note in the right-hand exampl/ X Grand Total It's easy to erase the original subtotals in Eleven with the REPEAT key; since the colons are gone, you can then total the original Column Eleven at the bottom, and check the Grand Total against the sum of the sub-totals. Cr/r two in hex. Try below. You'll be asked to re-enter. D1000=@ $7ff=@ The CONTROL characters also report: D03=@ $19=@ The Controls will print no "normal" character, of cou/=DX D65535=$X %00110110=X Woops! We didn't tell CALC the notation to use for the right, binary entry! Try: %0011 0110=$ . You must show the notation to convert TO on the right of an equal sign. From here on, we'll leav/ D14=@ D20=@ Now, let's look at reverse field characters: D129=@ D135=@ D139=@ Yup. You get the PF key graphics in the line above. The rest of the reverse field character set shows/e above. Pass on, to: D65534=% D65536=% Entry too big! Yes, you get a sixteen-bit answer, which we spread in groups of four bits so it's easy to read. Don't ask CAL/oss- check is simple this way. See the final form below, after we've done this: Subtotals :: ::::::::::::: 10000.0000 300.0000 The ability /rse, but each does generate a graphics character, some of which are quite useful. Note the line- graphics or "box" characters from the low Controls (the graphics character shows first after "@"). After you get the answers, leave 'em on screen: D0/e the X's out. Try the conversions below: %0110110=D %011011101=D ENTRY ERRORS! Why? Seven bits in the first entry, nine in the second. CALC refuses any binary entry of more or less than eight bits--because any such en/ the same way: D159=@ D165=@ D200=@ $fe=@ $f0=@ While the character set only goes to Decimal 255, you can get what I like to call "resonances" by entering Decimal codes to 999. (The character set starts repeating it/C to convert numbers larger than 65535 or $ffff! In integer routines, that is the largest number we can handle. If the permanent messages on line 25 bother you, you can clear them by any CORRECT operation (every entry into CALC clears the status lin/to subtotal, Subtotal 10300.0000 carry them elsewhere, and 999.9999 then generate grand totals 1000.0000 without retyping was one Subtotal /1=@ D02=@ D03=@ D04=@ D05=@ D06=@ Try 'em all, up to D13. The carat "^" above means "Control"; if it appears in front of "F", read the phra/try is bound to be an error. Well, it isn't easy to count binary entries, so you CAN enter 'em in nybbles of four bits, like this: %0011 1110=D %1111 0100=$ Which makes the job of entering binary a lot easier. Pass on t0self at Decimal 256. Try D256=@ ). Why does this happen? Well, at 256, the B register in SuperPET overflows. It can hold no number lar- ger than 255, so it starts over again at 0. Of what possible use is this? Well, it's not rare to want the/e). The simplest way to clear is by entering: $0=D. In BEDCALC, simply press SHIFT/CLR. Either will clear the status line. Transfer any answer anywhere on screen with SHIFT/REPEAT. --------------------------------------------------------------------/ 1999.9999 of the original motives for 23.0025 writing CALC. We can now .0200 give away 1) the damn calcu- Subtotal 0f "=", see what happens below (cursor at X): $fffe+D1=%X CALC converts decimal 1 to binary notation (of course!). For integer arith- metic, use a plain "=" sign! Next, try some additions. Are the results going to be larger than our0 character value in the B register after a conversion involving the D register. If D holds Decimal 750, what character will you print from the low byte in B? Find out. D750=@ Hex entries, in contrast, are limited to a maximum of $ff=@ Now, let'0es a warning but a right answer: $89*D478= And this, per the warning, is dead wrong: $90*D478= There are no fractions in integer arithmetic, so that 2/10 produces zero. Any division can suffer the same rounding to the next lowest integer: 0 it. How? We disable interrupts AFTER a key is pressed, UNTIL it is released... PF4 the line above, and then hit PF4 again, and hold it down a while.... Nothing will print to screen until both SHIFT and keypad 4 are released! Be light-fingered. Only0 cursor position. CALC goes into floating point calculations when it spies a decimal point left of the equal sign. You need enter no D's to indicate decimal notation. Only one decimal point in one of the entries is needed to specify FP: 1230 upper limit of 65535? (From here on, we leave off X) $eeee+D4598= $ffff+$01= CALC tells us they indeed are too large and that we can't trust the results. You must recalculate in floating point. The 0000 result from the right-h0 s turn the conversion around--and go from Character to ASCII code. Here, we don't enter the character until AFTER we press PF4. Put the cursor on X, below. Press PF4. You are prompted, at the bottom of the screen, to touch a key: =#@X Touc0 D47/D3= $877/$12= $0078*$12= Woops! If we subtract, we can easily get negative answers, as in these examples: $400-$800= D40 in ASCII conversion will SHIFT/REPEAT not print CALC results elsewhere on screen. Nor are the results saved in mED text, as with all other routines. The problem, of course, is the Controls, such as ASCII 12, which would Clear our Screen, or the ESC key,0.4+567= 567+12.0= Results come back signed (a space is positive): 4589.345-8000= 345.678*2.004= We neither truncate nor round the Waterloo FP routine results. Sorry, but you aren't allowed to enter signs0and example actually says that the total is 65536 decimal (when the 6809 adds 1 to its largest possible number, $ffff, it gets zero). Try these two: $ff+D89= D89+$ff= Yes, the numbers are the same and the order is reversed. The 0h the "a" key. An "a" appears left of =; the ASCII codes for "a" appear in both hex and decimal. Don't move the cursor! Press PF4 again, then press "4". Again, don't move the cursor. Press PF4, then the key you want coded. Try some Controls, like Cu00000-D53789= CALC reports the negative answers in two's complement--AND in the true hex value below zero (at screen bottom), since both results are useful. Positive results of subtraction return in their true value, from 65535 down to 0: D65535-0 which would Erase a Line, or DELETE... -------------------------------------------------------------------------------- PART III : INTEGER ARITHMETIC Add and Subtract integer math will work up to a maximum of 65535; Division 0 to prefix the first number, since the error-checking and math routine code would just about double in size. This shouldn't be a painful problem. If you want to do integer arithmetic on large values, stuff a ".0" into one of the entries so CALC know0first example gives results in decimal; the second, in hex. In printing results, CALC defaults to the notation of the right-hand number (the last number entered). You control which number is last entered and hence control the notation of the answer. 0rsor Up, Run, Stop, and Off. Note that the Controls print a graphics character left of =, give the ASCII codes for the key right of =, and THEN show the name of the key on line 25 of the screen. We handle the Control Characters the same way. Pu0D4000= D65536-D4000= D65535-$ffff= Any time you get an ENTRY ERROR in integer arithmetic, you either entered a character, a space, or a too-large number (as in the middle example above). Transfer any answer anywhere on scr0and Multiplication are limited to 32767 maximum. Don't memorize the numbers; CALC warns you if you exceed the limits. The basic 6809 ADD routine is limited to 32767, but we sneaked it up to 65535 with the floating point routines (note the space for a sig0s you want the FP routines: 465536/23.0= 66789.0*120= 64567/45.0= 108000-45.0= As with all other CALC routines, you may transfer a result anywhere on screen with SHIFT/REPEAT. Use no spaces in your entr0 The largest number you can enter in division (as divisor or dividend) is 32767; if you try something larger, CALC tells you of the error: These fail: $8000/$2= D65535/$456= These are okay: $7fff/D89= D32000/%11110t the cursor next to @, below, press PF4, and then touch capital A: =#@ Note you are given the Control Key value for Control A on line 25 of the screen. You can get these values for all Control Keys from ^@ through ^_. Try Z, S, [, ], a0een with SHIFT/REPEAT. -------------------------------------------------------------------------------- PART IV : FLOATING POINT ARITHMETIC Put the cursor on X and press PF4: 123*40.5=X The X, as usual, we use only to mark 0n in all Decimal answers), as below: $fffe+D1=X Note that you DO NOT tell CALC what notation to convert to in Integer Arith- metic! (The plain "=" just left of the cursor tells CALC we want arithmetic.) If you use a notation right o1ies. -------------------------------------------------------------------------------- PART V : LET'S PUT IT TOGETHER The boss wants an estimate on the cost of a three-day trip to Kalamazoo to work with a good client on a serious p0 0111= The results from multiplication can be tricky, so CALC warns you if the results should not be trusted. For large totals, you're safer with floating point. Results of decimal 32767 or less with no error message can be trusted: This giv0nd @: =#@ Now try the PF keys on the =#@ line above. Press PF4, and then any PF key. You get the graphics character for the key and its code--and, at screen bottom, the name of the key. Yes, it works even for our "trigger" key, PF4. Try1Dick Barnes TUTORIAL ON CALC March 15, 1985 Contents: Part I : Column Sum - Line 9, below. Part II : Conversion - Line 139 Part I1roblem. He wants it in writing and he wants you on the next airplane in exactly two hours: Trip Estimate: Totals (Carry with SHIFT/REPEAT) :::::::::::::::::::::::::: Round Tri1 2444 23 X <--Put cursor here, press PF4 Don't use Column Sum in the monitor. CALC reads the Editor's internal text file--NOT the screen. If you try Column Sum in the monitor, you g1the key wanted. INTEGER ARITHMETIC: $1234+D456= (Notation on numbers, then =) FLOATING POINT: 12.34/567= (No notation but one decimal point or more in the numbers themselves) That1 text line? Try to make up an invoice or a list of expenses for the IRS without text lines in it to explain the entries. It's not easy. You often want to read thru text, especially when you sum grand totals from preceding subtotals. Try to write a letter 1 II : Integer Arithmetic - Line 295 Part IV : Floating Point Arithmetic - Line 365 Part V : Let's Put it Together - Line 396 Summary : Entry Format Summary - Line 41 p by Air Motel Meals 9*5.5= 49.5000000 49.5000000 Cab Fares, 3 days Entertainment Long Distance Office Tips Misc ----------- Total Cost to Firm: 1 et garbage. 5 Now put the screen cursor on the points marked X in the columns below, and press and RELEASE PF4. Note that CALC reads right through text... :: <--Stopper Colons /..........1 is simple enough, arranged just about the way you'd enter the stuff on paper with a pencil, in normal arithmetic notation. Don't worry about crashing if you make an error. The error routines in CALC will bail you out. If you enter the monitor from 1to your bank about an error in your account without text getting between the number entries... -------------------------------------------------------------------------------- Next, try the One Column, below, with the cursor first on Y. Note that you122 -------------------------------------------------------------------------------- 100.00 Part I : COLUMN SUM Put the cursor on the line , Press PF4 and release. Notice you get an ENTRY ERROR at bottom of screen1 Cost in $ per day: After you give him the figures, he says "I want a telex conference with you every day. Add that in. And rent a good car, something impressive--no cabs. Be sure to take his wife out if you take him. She's jealous. Hey, and get a su1... .000011 The column at far left has no stopper 100.00 99.999999 colons. Gee, is the total right on that 200.00 (90.000000) column? Add it up! (Now, check the this is text 0.999991mED, and try to enter CALC on line 25 of the screen, it won't work. The Waterloo code does NOT read line 25. Move the cursor up to line 24 or less, and all is okay. -------------------------------------------------------------------------------- 1 sum through the left column in the first example. You will also sum through it with the cursor at Z--but all entries right of the decimal are ignored. [The total is offset right to allow for the sign of the number at left margin.] One Two 1. CALC has detected the low end of mED memory, and won't go further. Otherwise, it reads the numbers above the cursor, ignores all text, and sums what it finds, as in: 123.45 12.1ite, not a crappy room. Gimme the new figures and git!" So... -------------------------------------------------------------------------------- SUMMARY ON ENTRY FORMAT: CALC first looks left of the cursor for a notation symbo19 100.00 just below . 400.00 (1.000000) It got added). Take the stopper colons :: X off the middle column and press PF4. Woops! See  Fini just about the way you'd enter the stuff on paper with a pencil, in normal arithmetic notation. Don't worry about crashing if you make an error. The error routines in CALC will bail you out. If you enter the monitor from 1 Three Four -300.00001 123.56 100.001 .......... 123.56 200.002 text mit: :: 500.0001 (555.555) 102 Put cursor on X, press PF4: X In the preceding operation, CALC read all lines from X to start of mED text, found only two numbers, and added them. CALC will sum up to 255 Number Entries (not text lines) at one time. If it gets more 1l ($, %, D, or @). If none is found, it then looks for an = sign. If that is missing in turn, CALC then tries to column sum. Failing that, it gives up and prints an ERROR. The Column Sum format is so simple we don't repeat it. CONVERSION, digits: 1the lone 5, up above? It has (Erase sum on column at left) no decimal places... You get an ERROR. -------------------------------------------------------------------------------- Why does CALC read through text, and not stop when it sees a 2 X X Z Y X Try colume Two, cursor at X (notice no stopper colons). Then try Three. Gee, you get an ENTRY ERROR at -20 lines. Be warned--don't put digit entries in text unless you use stopper col1 300.00000 12345678901234 555.555 400.00001 overlong line 123.45xx _______ --------- 700.000011 -------- 1than that, it tells you. If you want to stop summing on a specific line, put a set of stopper colons above the last number to be summed: :: <-- Stopper colons 456 1 D234=% (Notation both sides of =) CONVERSION, ASCII to Char: D255=@ (Notation both sides of =) Char to ASCII: =#@ (Character to Number [#] in ASCII [@]) Press PF4, then 2ons so CALC won't read them! (To back up to the error, go to Command Mode, and say: -20 . The screen cursor will be on the line of error.) Now try Four, at X. How many characters in the line the ERROR message points at? Change it to 13 chara2can then total the original Column Eleven at the bottom, and check the Grand Total against the sum of the sub-totals. Cross- check is simple this way. See the final form below, after we've done this: Subtotals 200 X X X X Try Column Seven, at X. Note the result is truncated. This is your warning that SPET can't handle that large a number of significant digits. The answer is rounded to2y! Try: %0011 0110=$ . You must show the notation to convert TO on the right of an equal sign. From here on, we'll leave the X's out. Try the conversions below: %0110110=D %011011101=D ENTRY ERRORS! Why? Seven bits in2 om fooling it- self, CALC converts any lower case d (right of =) to a capital D, as you'll note in the right-hand example above. Pass on, to: D65534=% D65536=% Entry too2 cters and try again. Still get an error? When you are totally frustrated, remember the bottom number is a decimal entry. The FIRST entry sets the decimal pattern; all numbers above it must have the same number of decimal places. CALC is sometimes infuri2 :: ::::::::::::: 10000.0000 300.0000 The ability to subtotal, Subtotal 10300.0000 carry them elsewhere, and 999.9999 2 the number of places shown. Column Nine gives the answer in scientific notation, since the number is too large for any other notation. Column Ten shows that you can work right up against the right margin. Now try Column Eleven, below. Get your2 the first entry, nine in the second. CALC refuses any binary entry of more or less than eight bits--because any such entry is bound to be an error. Well, it isn't easy to count binary entries, so you CAN enter 'em in nybbles of four bits, like this: 2 big! Yes, you get a sixteen-bit answer, which we spread in groups of four bits so it's easy to read. Don't ask CALC to convert numbers larger than 65535 or $ffff! In integer routines, that is the largest number we can handle. If the permanent 2ating, but NEVER wrong...(well, as they say in HMS PINAFORE, hardly ever). Column Five below is offset enough from the left margin so results will print in the proper place. Notice that results are offset to the right on all columns at the left marg2 then generate grand totals 1000.0000 without retyping was one Subtotal 1999.9999 of the original motives for 23.0025 writing CALC. We ca2 subtotals, and move 'em to the right with SHIFT/REPEAT. Then add the subtotals for a Grand Total. You'll find it easiest to start summing from the BOTTOM of the column. Your subtotals will overwrite the stopper colons. As you get each total, SHIFT/REPEA2 %0011 1110=D %1111 0100=$ Which makes the job of entering binary a lot easier. Pass on to: $9ffff=D $e=D Any hex entry of FIVE digits is too large a number for SuperPET, which handles2messages on line 25 bother you, you can clear them by any CORRECT operation (every entry into CALC clears the status line). The simplest way to clear is by entering: $0=D. In BEDCALC, simply press SHIFT/CLR. Either will clear the status line. Transf2in. Now, take the stopper colons off Five... Try Six (without stoppers). Yes, you picked up Column Two. You are always told how many entries are summed at the bottom of the screen. Check that message! You may THINK you're summing three numbers and a2n now .0200 give away 1) the damn calcu- Subtotal 23.0225 lator, and 2) our eraser. -------- --------- Grand Total 12323.0224 12323.0224 ----2T it to the right. When through with subtotals, get the Grand Total for both columns. Eleven Subtotal Column :: ::::::::::::: 10000.0000 300.0000 Subtotal :: 2 a maximum of $ffff (65535 decimal). CALC refuses any entry with more than four hex digits, but will convert from one through four hex digits to any other notation. Now, try: Leave in lower case 2er any answer anywhere on screen with SHIFT/REPEAT. -------------------------------------------------------------------------------- PART IIB - CONVERSION, ASCII to CHARACTER, CHARACTER to ASCII Try these conversions from ASCII code to cha2ctually be summing a lot more. Now, try stopper colons on Six. Five Six Seven Eight Nine Ten :: 100 ::: ::: ::::::: :: 200 999.999 2---------------------------------------------------------------------------- PART IIA : CONVERSION OF NUMBERS You may CONVERT one notation to another either in the Editor or in the mon- itor. CONVERT reads the screen only. Put th2 999.9999 1000.0000 Subtotal :: 23.0025 .0200 Subtotal X Grand Total It's easy to erase the original subtotals in Eleven with the REPEAT key; since the colons are gone, you 2 | $7DAA=D and then do $7daa=d CALC can't tell the difference between the hex digit D and the D we use for decimal notation. Enter all hex digits in lower case! To keep fr3racter, with the cursor at X (the @ sign is shorthand for ASCII): D91=@X $67=@X $20=@X D65=@X The character the code generates always shows at the right of the equation. Note that a space (D32, $20) is represente2 99999.99999 99.555 (9999999999.8) 999.999 300 (900.000) (90000.00000) (99.000) 9000000000.0 (900.000 200 .001 99999.99999 X X 99.999 1200 90000.0002e screen cursor on the X's below, and press PF4: (You don't need the X's; we use 'em only to show location.) $7fff=DX D65535=$X %00110110=X Woops! We didn't tell CALC the notation to use for the right, binary entr3again, then press "4". Again, don't move the cursor. Press PF4, then the key you want coded. Try some Controls, like Cursor Up, Run, Stop, and Off. Note that the Controls print a graphics character left of =, give the ASCII codes for the key right o3d by a reverse-field blank, or space. How else can we show it? Don't try to enter more than three Decimal digits, or two in hex. Try below. You'll be asked to re-enter. D1000=@ $7ff=@ The CONTROL characters a3 PART III : INTEGER ARITHMETIC Add and Subtract integer math will work up to a maximum of 65535; Division and Multiplication are limited to 32767 maximum. Don't memorize the numbers; CALC warns you if you exceed the limits. The basic 6809 AD3 D139=@ Yup. You get the PF key graphics in the line above. The rest of the reverse field character set shows the same way: D159=@ D165=@ D200=@ $fe=@ $f0=@ While the character set only goes to Decimal 253 Try these two: $ff+D89= D89+$ff= Yes, the numbers are the same and the order is reversed. The first example gives results in decimal; the second, in hex. In printing results, CALC defaults to the notation of the right-hand number3 f =, and THEN show the name of the key on line 25 of the screen. We handle the Control Characters the same way. Put the cursor next to @, below, press PF4, and then touch capital A: =#@ Note you are given the Control Key value for 3 lso report: D03=@ $19=@ The Controls will print no "normal" character, of course, but each does generate a graphics character, some of which are quite useful. Note the line- graphics or "box" characters from the3 D routine is limited to 32767, but we sneaked it up to 65535 with the floating point routines (note the space for a sign in all Decimal answers), as below: $fffe+D1=X Note that you DO NOT tell CALC what notation to convert to in Int3 5, you can get what I like to call "resonances" by entering Decimal codes to 999. (The character set starts repeating itself at Decimal 256. Try D256=@ ). Why does this happen? Well, at 256, the B register in SuperPET overflows. It can hold no nu3 (the last number entered). You control which number is last entered and hence control the notation of the answer. The largest number you can enter in division (as divisor or dividend) is 32767; if you try something larger, CALC tells you of the err3Control A on line 25 of the screen. You can get these values for all Control Keys from ^@ through ^_. Try Z, S, [, ], and @: =#@ Now try the PF keys on the =#@ line above. Press PF4, and then any PF key. You get the graphics character f3 low Controls (the graphics character shows first after "@"). After you get the answers, leave 'em on screen: D01=@ D02=@ D03=@ D04=@ D05=@ 3eger Arith- metic! (The plain "=" just left of the cursor tells CALC we want arithmetic.) If you use a notation right of "=", see what happens below (cursor at X): $fffe+D1=%X CALC converts decimal 1 to binary notation (of course!).3mber lar- ger than 255, so it starts over again at 0. Of what possible use is this? Well, it's not rare to want the character value in the B register after a conversion involving the D register. If D holds Decimal 750, what character will you print 3or: These fail: $8000/$2= D65535/$456= These are okay: $7fff/D89= D32000/%1111 0111= The results from multiplication can be tricky, so CALC warns you if the results should not be trusted. For large totals, yo3or the key and its code--and, at screen bottom, the name of the key. Yes, it works even for our "trigger" key, PF4. Try it. How? We disable interrupts AFTER a key is pressed, UNTIL it is released... PF4 the line above, and then hit PF4 again, and hold it3 D06=@ Try 'em all, up to D13. The carat "^" above means "Control"; if it appears in front of "F", read the phrase to mean: "Control F". We'll say more later about the Control Keys. After the graphics character, we show the ASCII shorthand f3 For integer arith- metic, use a plain "=" sign! Next, try some additions. Are the results going to be larger than our upper limit of 65535? (From here on, we leave off X) $eeee+D4598= $ffff+$01= CALC tells us they indeed are 3from the low byte in B? Find out. D750=@ Hex entries, in contrast, are limited to a maximum of $ff=@ Now, let's turn the conversion around--and go from Character to ASCII code. Here, we don't enter the character until AFTER we press PF4. Put th3u're safer with floating point. Results of decimal 32767 or less with no error message can be trusted: This gives a warning but a right answer: $89*D478= And this, per the warning, is dead wrong: $90*D478= There are no fractions in 3 down a while.... Nothing will print to screen until both SHIFT and keypad 4 are released! Be light-fingered. Only in ASCII conversion will SHIFT/REPEAT not print CALC results elsewhere on screen. Nor are the results saved in mED text, as with all o3or the key (as in EOT for "End of Text"), then the character Control key which generates that code (if you use a program which implements the character Controls). Last we show the name of the key on the SPET keyboard which generates the Control specified3too large and that we can't trust the results. You must recalculate in floating point. The 0000 result from the right-hand example actually says that the total is 65536 decimal (when the 6809 adds 1 to its largest possible number, $ffff, it gets zero). 3e cursor on X, below. Press PF4. You are prompted, at the bottom of the screen, to touch a key: =#@ Touch the "a" key. An "a" appears left of =; the ASCII codes for "a" appear in both hex and decimal. Don't move the cursor! Press PF4 4integer arithmetic, so that 2/10 produces zero. Any division can suffer the same rounding to the next lowest integer: D47/D3= $877/$12= $0078*$12= Woops! 3ther routines. The problem, of course, is the Controls, such as ASCII 12, which would Clear our Screen, or the ESC key, which would Erase a Line, or DELETE... -------------------------------------------------------------------------------- 3--in parentheses. Sometimes we can't generate the code with a key--so there is no "key" entry, as in: D31=@ D14=@ D20=@ Now, let's look at reverse field characters: D129=@ D135=@ 4good car, something impressive--no cabs. Be sure to take his wife out if you take him. She's jealous. Hey, and get a suite, not a crappy room. Gimme the new figures and git!" So... -------------------------------------------------------------------------4 If we subtract, we can easily get negative answers, as in these examples: $400-$800= D40000-D53789= CALC reports the negative answers in two's complement--AND in the true hex value below zero (at screen bottom), since 24 or less, and all is okay. This note does not apply to BEDCALC, for the CALC routines won't work in the monitor. -------------------------------------------------------------------------------- Fini notation. Don't worry4l problem. If you want to do integer arithmetic on large values, stuff a ".0" into one of the entries so CALC knows you want the FP routines: 465536/23.0= 66789.0*120= 64567/45.0= 108000-45.0= As w4 ------- SUMMARY ON ENTRY FORMAT: CALC first looks left of the cursor for a notation symbol ($, %, D, or @). If none is found, it then looks for an = sign. If that is missing in turn, CALC then tries to column sum. Failing th4 both results are useful. Positive results of subtraction return in their true value, from 65535 down to 0: D65535-D4000= D65536-D4000= D65535-$ffff= Any time you get an ENTRY ERROR in integer arithmetic, you either entered4 ith all other CALC routines, you may transfer a result anywhere on screen with SHIFT/REPEAT. Use no spaces in your entries. -------------------------------------------------------------------------------- PART V : LET'S PUT IT TOGE4at, it gives up and prints an ERROR. The Column Sum format is so simple we don't repeat it. CONVERSION, digits: D234=% (Notation both sides of =) CONVERSION, ASCII to Char: D255=@ (Notation both sides of =) Char to A4 a character, a space, or a too-large number (as in the middle example above). Transfer any answer anywhere on screen with SHIFT/REPEAT. -------------------------------------------------------------------------------- PART IV : FL4THER The boss wants an estimate on the cost of a three-day trip to Kalamazoo to work with a good client on a serious problem. He wants it in writing and he wants you on the next airplane in exactly two hours: Trip Estimate: 4SCII: =#@ (Character to Number [#] in ASCII [@]) Press PF4, then the key wanted. INTEGER ARITHMETIC: $1234+D456= (Notation on numbers, then =) FLOATING POINT: 12.34/567= (No4OATING POINT ARITHMETIC Put the cursor on X and press PF4: 123*40.5=X The X, as usual, we use only to mark cursor position. CALC goes into floating point calculations when it spies a decimal point left of the equal sign. You need enter no D's4 Totals (Carry with SHIFT/REPEAT) :::::::::::::::::::::::::: Round Trip by Air Motel Meals 9*5.5= 49.5000000 49.5000000 Cab Fares, 3 days Entertainment Long Dist4 notation but one decimal point or more in the numbers themselves) That is simple enough, arranged just about the way you'd enter the stuff on paper with a pencil, in normal arithmetic notation. Don't worry4 to indicate decimal notation. Only one decimal point in one of the entries is needed to specify FP: 123.4+567= 567+12.0= Results come back signed (a space is positive): 4589.345-8000= 345.678*4ance Office Tips Misc ----------- Total Cost to Firm: Cost in $ per day: After you give him the figures, he says "I want a telex conference with you every day. Add that in. And rent a 4 about crashing if you make an error. The error routines in CALC will bail you out. If you enter the monitor from mED, and try to enter CALC on line 25 of the screen, it won't work. The Waterloo code does NOT read line 25. Move the cursor up to line42.004= We neither truncate nor round the Waterloo FP routine results. Sorry, but you aren't allowed to enter signs to prefix the first number, since the error-checking and math routine code would just about double in size. This shouldn't be a painfu