os9@cbdkc1.UUCP (06/19/87)
OS-9 Discussions Friday, June 19th 1987 Volume 3 : Issue 14 Today's Topics: OS9 BBS's/Forums OS-9 UG OS/9 and Unix/UniPlus+ Correction to Docs Missing Documentation YASE (Yet Another Screen Editor) -------------------------------------------------------------------------- Date: 3 Jun 87 22:49:51 GMT From: pete@wlbr.UUCP (Pete Lyall) Subject: OS9 BBS's/Forums Keywords: OS9 COMPUSERVE DELPHI BIX BBS Organization: Eaton IMS, Westlake Village, CA =================================================================== I am posting this to the NET for Kevin Darling, who has no direct USENET access. Pete =================================================================== Date: 02-Jun-87 22:29 PDT ------------------------------ From: Kevin Darling [73117,1375] > In: OS-9 Discussions Volume 3 : Issue 4, From: ihnp4!ihwpt!knudsen, Subject: > Which BBS's support OS9? > > Mike writes: > > Delphi has the advantage of being cheaper (especially at 1200 baud, no > surcharge), and being officially supported by Rainbow magazine. All the > Rainbow editors and staffers are on Delphi almost every night, including Kevin > Darling, Steve Bjork, and Marty Goodman. (Of course CIS has its heavy hitters > too, like Pete Lyall and others.) Thanks for the mention, Mike! However, in no way am I a Rainbow staffer, and in fact, I cruise by Delphi simply to pass on info and help that they might otherwise NEVER see or know of. The CIS (CompuServe) OS9 forum is quite simply the only spot for a true OS9er to be. It's been the place for years, and it's where you'll find the most info, source code, quality subjects and messages, and people. Delphi has only Greg Law, the SysOp (who still comes to CIS). CIS has the likes of Carl Kreider, Pete Lyall, Greg Morse, James Jones, Dave Kaleita, George Brickner and so many other software/hardware people that I can't name them all. You can find Frank Hogg and others there. You'll also find that some Tandy and MW employees are on (unofficially, alas!), but they do listen and I've seen suggestions implemented. Delphi is what I'd call a "backwater forum". Most of it's tiny data library originally came from the CIS OS9 forum. Many of the questions I've seen there (and on UseNet) have been or could have been answered on CIS up to months ago. For example, the complete set of display codes for the CC3 L-II windows was posted there (by me) back on Christmas. Yes, Delphi is cheaper right now at 1200. CIS has nighttime rates 24 hours a day. Delphi might be easier reading for an OS9 novice. CIS might have better responses and info. And on and on. The crux answer is: you get what you pay for in this case. Mike, you are right about not splitting up OS9 between too many forums. We do of course need these outposts (like Bix, Delphi) to get the word out. However, in this case, the word should be, "go to CompuServe's OS9 forum". Thanks for listening. - Kevin Darling (OS9 UG Secretary) -- Pete Lyall Usenet: {trwrb, scgvaxd, ihnp4, voder, vortex}!wlbr!pete Compuserve: 76703,4230 (OS9 Forum Sysop) OS9 (home): (805)-985-0632 (24hr./1200 baud) Phone: (818)-706-5693 (work 9-5 PST) EATON Corp, IMSD, 31717 La Tienda Dr., Westlake Village, Ca. 91359 ---------------------------------------------------------------------- Date: Fri, 12 Jun 87 00:32:27 EDT ------------------------------ From: belmonte@svax.cs.cornell.edu (Matthew Belmonte) Subject: OS-9 UG John, I have a question about the OS-9 UG I thought you might be able to answer. I sent in a cheque last November and heard nothing until March, when I received a letter saying that my membership started in February. I just got an apology for the slow handling from William W. Turner III. He mentions that by now I should have received my May 1987 MOTD. I have *never* received a MOTD. Has there been a hiatus in the publication of MOTD lately? My address changed on May 23, and the post office won't forward un-enveloped, non-first-class mailings. Does MOTD match these criteria? (i.e., Is it sitting in a mail room rotting right now?) These questions and more I have just sent off by snail-mail to Mr. Turner, but I'm asking you because I thought that this way maybe I'll be able to figure things out before next year. Thanks in advance. Matthew Belmonte [I believe MOTD is not sent out first class so indeed it would not be forwarded UNLESS you indicated to the post office that you would accept forwarding charges for ALL material. I'd call MOTD back to let them know my new address. (or write) - JDD] Date: 10 Jun 87 08:52:12 GMT ------------------------------ From: Nigel Horne <njh@root.co.uk> Subject: OS/9 and Unix/UniPlus+ Keywords: comparison summary Organization: Root Computers Ltd., London, England Following up my submission in digest volume 3 issue 4 requesting information in the differences btw UniPlus+ and OS/9, this is what I received. >Does anyone have a (preferably objective) comparison between >OS/9 (release 2.0 I guess) and UniPlus+/Unix? > >I'd rather not have flames/really subjective NIH attitudes, >just *facts* to allow me to compare. > >If enough interest is generated I'll post, of course. <From: jag@scmhcx.uucp> I just read your posting on the net about OS/9 Unisoft/Unix. Unfortunatly I do not know any thing about OS/9, however we have worked with Unisoft through two ports of System V. I enjoy working with Unisoft's port of Unix. If you have talked with them, their marketing, and heard that their applications are larger than any of their competitors we are the reason for that statement. We also were one of their first ports to the Mc68020. I will not bore you with any tales of horror or success. Because I do not know anything about OS/9 I can only enhance the Unisoft side of the discussion. If I can be of any help drop me e-mail, I am willing to type at length with you. <From: witters@fluke.uucp> I've used fairly old versions of both OS/9 and UNIPLUS UNIX. I'd say that OS/9 is good for embedded systems where the user doesn't see the operating system. However, UNIPLUS UNIX is better if you want something for developing application software. Here is a brief summary of some reasons why I believe this to be true. OS/9 doesn't support search paths. All executable programs must reside in a single "execution directory". This is dangerous for multi-user systems because any user can wipe out the system utilities. UNIPLUS UNIX supports search paths. Executable programs may reside in any directory. Both OS/9 and UNIPLUS UNIX are multi-user operating systems. UNIPLUS UNIX has a much better set of tools for developing software. They provide many of the Berkeley 4.2 enhancements (i.e. VI, AWK, GREP, SED, CSH, etc.) The version of OS/9 I used didn't have any of these. OS/9 provides a C compiler and a line oriented text editor for developing software, and that's all. OS/9 is a multi-tasking real time operating system. UNIPLUS Unix is multi-tasking, but not a real time operating system. It is easy to add device drivers to OS/9. I never tried adding device drivers to UNIPLUS UNIX, but I suspect it is difficult at best, and perhaps not possible without buying source code from UNIPLUS. Both OS/9 and UNIPLUS UNIX support tree structured file systems. You can "lock" an application program into memory with OS/9 so it won't get swapped out. This is handy for real time applications. UNIPLUS UNIX generally requires memory mapping hardware. OS/9 doesn't require memory mapping hardware, but can use it if it is provided. It is possible to put OS/9 and application software for OS/9 in ROM (Read Only Memory). I'm not sure if it is possible to do this with UNIPLUS UNIX, but I suspect it isn't. Here at FLUKE we have been developing application software for OS/9 using UNIX based mini-computers and workstations. OS/9 is used as an embedded operating system in equipment we sell. The people writing the application software only use OS/9 to run the software they've written. The users of the equipment never come in contact with OS/9. They only see the application program we provide which runs under OS/9. If you want more information you can try contacting the following gentleman. He used to work here and he used both UNIX and OS/9. James K. Peckol University of Aberdeen Department of Engineering King's College Aberdeen AB9 2UE Scotland Telephone: 011 44 224 480241 ext. 5498 this is the telephone for C.T. Sprackeln head of EE. I hope this helps. To summarize, OS/9 is ideal for dedicated embedded application software for small computers. However, UNIPLUS UNIX is a much better environment for developing software. <From: jejones@mcrware.uucp> Like Mr. Daleske said on comp.os.os9, the big question is: what do you want to do? If you have need for a large relational database, well, I'm afraid nobody's ported INGRES, Informix, and so forth to OS-9 that I know of, etc. so on that sort of basis one's choice may be made for one. If you wish comparisons purely as operating systems, then it might be best to just sit down with the appropriate manuals, possibly combined with talking to or visiting users. You might wish to talk to some of the British companies that distribute OS-9 or sell hardware on which OS-9 runs; the ones I've heard of would be Vivaway and Cumana Ltd. Addresses etc.: Vivaway Software House Luton, Bedfordshire LU2 0HN phone: 0582-405511 telex: 825115 Cumana Ltd. Pines Trading Estate Broad Street Guilford, Surrey (I don't have the postal code--sorry!) phone: 483-503-121 telex: 851-859-380 It occurs to me that you might not have seen the comp.os.os9 digest which contained a copy of your query and John Daleske's comments, so I append his comments to this message. <I've eliminated repeating my comments since they are in the digest. -JDD> -Nigel -- Nigel Horne, Divisional Director, Root Technical Systems. <njh@root.co.uk> G1ITH Fax: (01) 726 8158 Phone: +44 1 606 7799 Telex: 885995 ROOT G BT Gold: CQQ173 Date: Tue, 16 Jun 87 03:00:30 EDT ------------------------------ From: mnetor!lsuc!jimomura This is Jim Tittsler's utility to read a TOS disk under Atari ST OS-9 68K. It was written mainly for his own usage so don't be critical about it not doing things "your way." As it is it reads files from the root directory in Drive A: Cheers! -- Jim O. [Note, this note included a fairly large arc format file. I'll ask that if you want it, I will send it to you directly. - JDD ] Date: Wed, 17 Jun 87 11:47:56 EDT ------------------------------ From: mnetor!lsuc!jimomura Subject: Correction to Docs In the documentation file to 'tosrd' I left out that LF is automatically removed from files during the copying. Use the '-b' switch to copy a binary file intact. Cheers! -- Jim O. Date: 18 Jun 87 15:16:34 GMT ------------------------------ From: mdk@cblpf.ATT.COM (Michael D King) Subject: Missing Documentation Organization: AT&T Bell Laboratories - Columbus Keywords: OS9 Is anyone else out there angry that Tandy refuses to support the Color Computer properly? This has gone on long enough! I feel that we should make ourselves known to John Roach and the rest of the board members at Tandy and convince them the CoCo deserves to have proper support. This started over a year ago when I tried to get help with Disk Scripsit. I was writing short stories and most of them were over 12 pages long (12 pages was about the limit of memory for my CoCoII). In order to print these things out, I had to spool them together, but when I printed them they had a great big blank space between the two parts, and the page numbers reset to page 1. I called all the Computer Centers in Columbus and not one of the "salespeople" knew the answer. In fact the standard response was, "I *DON'T KNOW ANYTHING* about the Color Computer, maybe you should try ...." Finally, someone suggested ATSO (Area Training and Support), when I called there, the guy I spoke to LAUGHED at me!!! He said, "Since the Color Computer is SOOOOO user-friendly, we don't have any support staff to handle it. I mean, we can't afford to have a person sit around here all day waiting for a question to come in." Then he gave me a toll number to call in Texas. Not even toll-free!! I was fuming! At the time I was out of work and trying to write to bring in a little money to pay for the luxuries: food, rent, clothing. I couldn't afford a toll call to Texas. So I wrote a letter to Bernie Appel. Well, ol' Bernie had one of his flunkies give me a call and explain to me that it just isn't monetarily feasible to staff CoCo support around the country, could he have one of the people in Computer Assistance give me a call? So, a lady from assistance called me that afternoon. (This was almost hysterical.) She couldn't answer my question, but she did give me a 3 minute sales pitch on the virtues of Telewriter-64, Elite-Word, and VIP which I could order through express-order software! The vitriol has risen again because I recently purchased the OS9 - Level2 and the documentation was missing the command pages for MODPATCH and MONTYPE. I called computer assistance to see if they planned to send out updates to the documentation to resolve these problems. The person I spoke to said that they had an info sheet and that she would send it to me, (by the way, it isn't very helpful.) But the most important thing she said was that they NEVER sent out ANY updates for any CoCo software. Why bother sending in the software registration cards? Sorry to go on so long about this, but I feel it is an important issue. I really love the Color Computer. I think it is one of the best on the market. We represent a large part of Tandy's profit base and they treat us like an overbearing relative: they put up with us, but they don't need us. Let me know if anyone else has had problems like these. Maybe if enough data can be collected, we can force Tandy to change the way they treat us. Mike King ..!cbosgd!cblpf!mdk DISCLAIMER:The opinions expressed are my own, not anyone else's. Got It? Date: 19 Jun 87 12:16:34 GMT ------------------------------ From: Kurt Leibezeit Subject: YASE (Yet Another Screen Editor) [NOTE: I have included ONLY the documentation for YASE. I have the entire distribution in cpio format and shar format for distribution. I am currently working to include the binaries for shar distribution in S-record format. Send a note to me requesting the sources if you want them. - JDD] YY YY AA SSSSSSSSSS EEEEEEEEEE YY YY AA AA SS EE YY YY AA AA SS EE YY AAAAAAAAAA SSSSSSSSSS EEEEEEEE YY AA AA SS EE YY AA AA SSSSSSSSSS EEEEEEEEEE (Yet Another Screen Editor) Everyone should try their hand at writing an editor once. I've always wanted to, and when I saw that Donald Krantz' and James Stanley's 68000 assembly language tutorial used an editor as a teaching example I went right to the checkout counter with the book. Talk about impulse buying! In the past month I've spent a lot of time keying in and studying the code, and it has been well worth it. For those who wish to avoid the hassle of entering 3500+ lines of code, I am placing my porting work in the public domain. YASE is a small, fast, Wordstar-like programming editor. The full name of the book it appears in is "68000 Assembly Language - Techniques for Building Programs," and it is published in softcover by Addison-Wesley. The book is a good reference as well as a 68000 assembly language primer, and it is especially useful for someone with assembly language experience on other, older processors. It differs from many of other 68k assembly language books in that it includes several large programming projects as examples; most other books just give short example fragments that do multiple-precision arithmetic, or add an item to an ordered list. In addition to YASE, Krantz' book has working programs that perform bit-mapped graphics and device interrupt servicing. The book does have one drawback. The programs were written for the CP/M-68K operating system, a primitive single-user, single-tasking executive patterned after that relic of the 70's, CP/M-80. As a result, all the programs use absolute addressing modes in some places. This is not too hard to fix, though. YASE has almost all the features of Wordstar in non-document mode, and it includes some nifty windowing commands that are a significant improvement over Wordstar. For those unfamiliar with Wordstar, I have provided a brief description of its philosophy and features in Appendix A. I hope you enjoy using (and possibly modifying) YASE. I would welcome your comments, bug reports, and suggestions. I plan to support this software in a limited way under OS-9/68000, primarily through the OS-9 User Group. You can reach me at Kurt Liebezeit 505 W. Springfield Champaign, IL 61820 (217) 359-9859 Unfortunately, I will be moving in the near future, and this address will not be valid after June 1987. After June, please contact me through my parent's address: Kurt Liebezeit c/o M. K. Liebezeit 56 White Oak Circle St. Charles, IL 60174 You might wish to thank Donald Krantz for placing YASE in the public domain. Two years ago he wrote an article on XMODEM protocols in Dr. Dobb's Journal, and at that time his address was Donald Krantz 2845 42nd Ave. South Minneapolis, MN 55406 Enjoy! Kurt Liebezeit May 8th, 1987 APPENDIX A YASE OPERATION To start YASE you just type its name. This edition of the program does not accept any command line arguments, and it will prompt you for the name of a file to edit. If you are creating a new file, just type in the name you will want the file to have when it is stored. YASE will tell you that the file could not be found, but you will be given an empty window on the screen to enter text into. If you are editing an existing file, YASE will read the file into the buffer and place the cursor at the beginning for you. YASE is essentially a modeless editor. You don't have to switch between a cursor movement mode and an insert/overwrite mode. YASE accomplishes this by using control key sequences as editor commands; non-control key sequences are assumed to be intended for insertion into the file. This is in direct contrast to editors like OS-9's SCRED which require you to explicitly enter and exit insert mode. YASE is capable of editing multiple files at once. It does this by dedicating a window to each file that is "open." Each window has a border; on terminals that support it you can make YASE use line graphics characters to draw the window outline. At any given time one window is actively being edited. Each window behaves just as though it were a little peephole on the file that is associated with that window: you can move around the file, insert text, delete text, and save your work. There are also some commands to manipulate windows. YASE doesn't have any of the document editing features of Wordstar document mode: it won't reformat paragraphs, or perform word wrap, etc. YASE has some other limitations as well. It is memory-based, and cannot edit files larger than its buffer size (set for 32k in the distribution copy). You can set the file buffer size at assembly time to any value up to 64k, but no higher. Another limitation of YASE is that does not scroll the screen, but rather repaints the window when the cursor moves to a part of the file that is not within the current view. This slows down YASE's update rate, but there is no way to make scrolling work with arbitrarily sized windows. YASE has the following cursor control commands (^S means hold down the control key while striking the S key): ^S Move the cursor one character to the left. If at the start of a line, move to the end of the previous line. ^D Move the cursor one character to the right. If at the end of a line move the cursor to the start of the next line. ^E Move the cursor up one line. YASE will attempt to keep the cursor at the same column number. YASE always behaves in a predictable way; regardless of whether you got to the present column by inserting or cursor movement commands, YASE always tries to go to the nearest column above the one you are on. This is a difference from SCRED. ^X Moves the cursor down a line. Obeys the same conventions for cursor columns as ^E. Notice that the four basic cursor movement commands form a diamond pattern under your left hand. The remaining cursor movement commands for moving by word and page build on this convention; these keys are further from the the center of the diamond, and they move the cursor further. ^A Move left one word. Leaves the cursor on the start of the word. ^F Move right one word. Leaves the cursor on the start of the word. ^R Moves the cursor up by one less than the number of lines in a window. If the active window has five lines, ^R will move the cursor up by four lines. YASE will try and keep the cursor on the same column. ^C Move the cursor down by the number of lines in the active window. Again, YASE tries to keep the cursor on the same column. There are also some other, non-cursor-movement single keystroke commands: RETURN Terminates a line and moves the cursor to the end of the next line. TAB Moves the cursor to the next tab stop. Tab stops are fixed, and may be set to any power of two when you customize YASE. The distribution copy has tab stops at multiples of four columns. ^L Repeats the last find (^QF) of replace (^QA) command. See the summary of Quick commands later in this appendix. ^P ^P is the literal prefix that causes the next character you type to go directly into the file. This enables you to insert unprintable characters such as form feeds into the file. Control characters in the text are displayed as a circumflex followed by an uppercase ASCII character. ^V YASE is always in one of two modes: "insert on" and "insert off." ^V toggles between the modes. In insert mode, new characters push text ahead of the cursor; when insert is off, new characters replace characters in the file. Also, when insert is off YASE will extend a line rather than overwrite the carriage return. ^N Opens a new line by inserting a carriage return. This pushes down text that is below and to the right of the cursor. ^T Deletes one word to the right of the cursor. ^Y Deletes the entire line that the cursor is on, and pulls up any lines that follow. BACKSP The backspace key performs the same action that the cursor-left (^S) key does - backspace is non-destructive. DELETE The delete key, which is usually ignored under OS-9, actually is a delete-left character key. This is consistent with Wordstar, but can cause confusion when you switch back and forth between YASE and the OS-9/68k shell. In addition to the single-keystroke commands that we have reviewed, YASE also has many double-keystroke commands. These are grouped according to function. The functional groups are: Quick commands to move through and find text quickly; Block commands to deal with blocks of text as a unit; and finally Window commands to manipulate the windowing interface. The Quick commands all begin with ^Q (hold the control key down while typing Q), and they include: ^QR Move the cursor to the top (beginning) of the buffer. ^QC Move the cursor to the bottom (end) of the buffer. ^QF Search for a text string. YASE will prompt you for an unambiguous search string, and will position the cursor on the beginning of the first occurrence after the cursor. You may use the literal prefix ^P to enter unprintable characters into the search string. The maximum length of the search text is limited to 80 chars. ^QA Search for a text string, and replace. Works just like ^QF, except that it also prompts you for replacement text string. Note that you can repeat a ^QF or ^QA with the same search and replace text by using ^L. ^QB Move the cursor to the start of a previously marked block. See the block commands. ^QK Moves the cursor to the end marker of a block. YASE supports operations on blocks of text in much the same way that Wordstar does. Before you can perform a block move, copy, or delete you must set the block start and end markers. Only a single block may be defined at any given time, but the block may be as large as you wish. All block copies, moves, and and deletes write the marked text to a scratch buffer called the paste buffer; YASE has an added command called the paste command that inserts the current contents of the paste buffer into the text. This enables you to delete a block from one place, and then issue repeated paste command to insert copies of the deleted text into various places in the file. This also allows you to move text between files: mark the text in file 1, delete it in file 1 (which also puts a copy of the deleted text in the paste buffer), make file2 active in another window, and then issue a paste command in file2. Also included in the block functions are commands that you must use to save your current work buffer to disk, end and save the editing session, or even abandon all the changes made since the last save. All the block commands are prefixed by ^K. YASE's block commands have two very significant limitations, though: the block markers are not shown anywhere on the screen, and any modification (insert, delete, or overwrite) erases the block start and end markers. This means that once you mark a block you better do something with it before making any other changes to the file. ^KB Sets the current cursor location as the start of a block. ^KK Sets the current cursor location as the end of a block. Note the the block end marker must be set farther from the start of the file than the block start marker, or YASE will complain. ^KC Copies the marked block to the current cursor position. The text is also copied into the paste buffer. ^KV Moves the marked block of text from its marked position to the cursor position. The text is also copied into the paste buffer. ^KP Inserts the contents of the paste buffer at the cursor location. ^KY Deletes the marked block. The marked block is removed from the file and the deleted text is placed in the paste buffer. The cursor position is unchanged. ^KW Writes the marked block to a disk file. YASE will prompt you for the name of the file that the text is to be stored in. ^KR Read in an entire file and insert the contents at the cursor position. YASE will prompt you for the name of the file to be read in. ^KX Tells YASE that you are done editing the file in the current window. YASE will delete the old copy on the disk, then write the contents of the memory buffer to the disk to become the new version. Note that the current version of YASE does not make a backup. If there are no other windows open YASE will exit. ^KD Same as ^KX. ^KQ Abandons (quits) the file being edited. If you have made changes to the file YASE will ask for confirmation, otherwise it just quits. If there are no other windows open YASE will exit. ^KS Saves a copy of the file just as ^KX, but returns to editing instead of exiting. If you are paranoid or working with flaky hardware/software you should use this command often. Window commands are a new feature that YASE adds to Wordstar's command set, and you access them by typing ^W as a prefix. ^WP Pops a new window to edit another file. The editor will prompt you for a filename, and then it will draw another window on top of the one you are currently editing with the new file in the new window. The old window is unchanged, but it will no longer be active until you exit the new window, or rotate windows using the ^WR command. ^WR Rotates the windows on the screen and refreshes the display. The bottom editing window is brought to the top, and it becomes the active editing window. If you have several windows on the screen you can cycle through them by using ^WR repeatedly. The content of the paste buffer is unchanged, and this makes it possible to transfer text between windows. ^WE This command, along with its companion command ^WX, allows you to reposition the currently active window. When you press ^WE, the cursor will be placed on the upper left corner of the active window; you can then use the standard cursor movement commands to move the cursor around the screen. When you have the cursor where you want it, you press the return key. This tells YASE that the cursor is where you want the upper left hand corner of the active window to be. It will then redraw the screen to make the window the right size. YASE will allow you to make windows as small as one line high, but it will not make any window narrower than 12 columns. Note that YASE does not redraw the window border until you hit the return key - it doesn't drag or "rubber-band" the border. YASE responds to the following keys when resizing windows: ^E Move the cursor up one line. ^X Move the cursor down one line. ^R Move the cursor to the top of the display, just below the command window. ^C Move the cursor to the bottom of the display. ^S Move the cursor one position to the left. ^D Move the cursor one position to the right. ^A Move the cursor to the far left-most column. ^F Move the cursor to the far right-most column. RETURN Marks the current cursor position, redraws the screen with the new window size, and returns to editing. ^WX Works the same as ^WE, but this time it repositions the lower right hand corner of the active window. You use the same cursor movement keys as above. APPENDIX B CUSTOMIZATION INSTRUCTIONS You should find the following files in this release of YASE: case.a crt.a cursor.h edit.h edit0.a edit1.a edit2.a edit3.a edit4.a errors.a exec.a group1.a group2.a group3.a lineed.a makefile printf.a vscreen.a window.a yase.doc In addition, you may have one or more executable files included in your release distribution. If you received this via a medium that does not support object code, you can generate an executable version by simply typing $ make yase and OS-9's make utility will generate an executable file. The file should have a CRC of $7FD174. If you run into problems, it will probably be because the makefile assumes that l68 will find the library sys.l on device /dd. Just edit the makefile entry for linking yase so that it will find sys.l in the right place. As shipped, YASE should work with most any terminal that uses standard clear- screen and cursor addressing. You may wish to customize YASE, however, to take advantage of special features of your terminal such as line graphics for window borders. All the customization changes that you should ever need to make will be in two files, cursor.h and crt.a; customization changes involve changing data in the VSECT portion of crt.a, and definitions at the top of cursor.h. I would like to explain how YASE expects data in the strings of the VSECT before discussing the customization process in detail. YASE expects strings with the same structure that the old Wordstar editor used: if your terminal expects a two byte sequence $1B,$25 (ESC %) to turn off graphics, you would put the length of the sequence (2) in a byte at the proper label, followed by the bytes of the sequence itself. Thus for this example we would see this entry in the VSECT: graphic_off_seq dc.b 2,$1B,$25 Please note that r68 will not accept spaces between operands; they must be squeezed together as shown. If you put a space in, r68 treats the rest of the line as a comment. Also, if your terminal doesn't support a string you must at least have a single zero byte at the label. Here are the detailed instructions for customizing YASE: 1. Set screen size in file cursor.h using definitions for lines and cols. The default is 24 by 80. You actually get to use one less than the number of columns on the screen because YASE has to keep some terminals from scrolling when writing to the last column. 2. You might need to set up the way YASE addresses (moves) the cursor. If your terminal's cursor addressing sequence is row then column (the default), you can leave ROW_THEN_COL set to 1 in cursor.h. Most terminals use <ESC><=><row+$20><col+$20>, so this usually won't need changing. If your terminal is different, you'll need to set the lead-in string (which is <ESC><=> in the default case) in the VSECT section of crt.a. Then you must set the offset value to be added to the row and column numbers in definition CURSOR_OFFSET in file cursor.h. Finally, set ROW_THEN_COL in cursor.h to zero if your terminal expects the column before the row. 3. You may also need to set up the way that YASE performs a clear screen operation. Most terminals accept $1A (control-Z) as a clear screen character. If yours is different, change the string in file crt.a. 4. If the clear screen operation also homes the cursor to the upper left corner of the screen, leave CLS_HOMES in cursor.h defined non-zero. If you aren't sure you can set it to zero with no ill effect. 5. Now you must decide how you want YASE to draw the borders of the windows. The distribution copy uses plus signs, minus signs, and vertical bars to draw borders; this should work on any terminal, but it isn't very spiffy. If your terminal supports line graphics, you can put the character codes in the definitions in cursor.h for UL_COR etc. If the graphics character codes are greater than 128 and thus can't be confused with file data chars, you are done. On the other hand, if you have a terminal like the Qume QVT-101 which uses ordinary characters in a special mode to draw graphics, you have to be tricky. Put the characters in the UL_COR, etc. just like before but set the high (eighth) bit using a construction like 'a'!$80 . Then set definition GRAPHIC_7BIT to 1 (non-zero) so that YASE will know that it has to reset the high bit before sending out the char to the terminal. Finally, go to file crt.a and edit the strings so that they contain the data necessary to turn graphics mode on and off. You can check out the QVT-101 example files to see how all this is done. 6. If you wish, you can use YASE's terminal init and deinit strings in the VSECT part of crt.a to assign and deassign function keys, or set special screen widths, or whatever. 7. You may wish to increase or decrease YASE's buffer size by changing the definition for BUF_SIZE at the top of file cursor.h. Note that YASE always requests storage for at least one edit buffer AND one paste buffer. The default buffer size in this release is 32k, which means YASE requests 32k for a paste buffer plus 32k for every open file window. Since there is always at least one file being edited, YASE takes up 64k+ of data storage. APPENDIX C CHANGES MADE TO YASE FOR EDITION #1 I am listing here all the changes that I have made in YASE in this first release. One major change that I have made involved changing absolute data references to register indirect with offset. I also had to change the way the case() function worked, since it performed an absolute indirect jump; instead I used a macro in edit.h to make all case jump destinations relative to the jump point in the case() function. One other place I had to change was the error table; instead of absolute addresses, I made the table entry contain offsets relative to the start of the error table. Of course, OS-9's I/O calls are very different from CP/M-68k, and I rewrote the code in crt.a and edit1.a to use OS-9 I/O. Luckily, OS-9's I/O is a lot cleaner than CP/M-68k's, and I was able to eliminate all the code in file fileprim.a - you won't find that file in this release. I used direct calls in edit1.a. I tried to make the terminal routines generic enough for you to just change the data in the VSECT in crt.a; you shouldn't need to mess with the code that reads the strings. I also added functions for turning on and turning off line graphics for drawing borders. One thing that you should know is that I used the eighth (high) bit of bytes to define graphics characters; putc treats chars with the eighth bit set as graphics characters, and turns on graphics mode before sending them to the screen. I did this because my terminal, a QVT-101, uses ordinary a's and j's, etc. to draw lines in graphics mode, and I didn't want the virtual screen handler to be confused by an "a" that was actually a graphics char. There are also some functions for initializing and deinitializing the terminal in crt.a. One big departure from the code in the book is the way YASE handles memory allocation. In the CP/M-68k world it was safe to assume that the program would have all the system memory - there are no other programs competing with YASE for memory. Under OS-9 YASE works a bit differently. YASE asks the operating system for memory using F$SRqMem each time it needs a buffer, and it returns memory to the operating system each time it done with a buffer. This means that OS-9 YASE has a used list, but no free list. One thing about the source code in the book bothered me a lot: Donald used a lot of hard-coded constants in some places. I have tried to make everything symbolic. Buffer size, tab size, screen jump increment, border chars, screen size, and even command key definitions are defined in file cursor.h - that way if you really want 8 column tabs you just change the file and re-assemble. By the way, all the customization you should ever need to do is in two files: cursor.h has some definitions, and crt.a has some terminal strings. I have found only a single bona fide bug in the code from the book, and a minor one at that. The delete char right command (^G) could mess up the current line count if you deleted a blank line. I fixed it by detecting if the char being deleted was a newline. I have used YASE extensively in the two weeks since I got it debugged, and I haven't found any other bugs. This document was prepared with YASE, of course. APPENDIX D ENHANCEMENT SUGGESTIONS There are just a few words I would like to say about future enhancements to YASE. To start with, you should be aware of some the design choices inherent in its organization. One of YASE's basic principles is that the routines that manipulate the buffer do NOT communicate with the routines that paint the screen. This means that after every keystroke YASE calls align_scr() to get the cursor within the vertical confines of the window, and then it calls prtscr() to repaint the ENTIRE screen. Of course, the virtual screen interface ensures that only changes are actually sent to the terminal, but there are still a couple of tight loops that need to run as fast as possible to keep YASE responsive. I would be especially wary of adding code to either one of the routines I mentioned. You might wish to purchase the book before attempting anything major. This becomes a problem when one considers ways to handle the block marker problem. Currently YASE does not highlight a block in any way, and it erases the block markers whenever you make a new change in the file. Unfortunately, most of the schemes for highlighting the block and/or making block markers move with file changes involve tests within those tight loops. You don't want to be checking for the start of a marked block when printing the screen, since that will only slow things down. You can run into a similar problem if you plan to make YASE into a virtual memory editor capable of editing files larger than the memory buffer. Most virtual memory schemes for editors involve more complicated data structures, and it will take more time to pull data out of the structures. So, what does it make sense to change? Here are my suggestions. I plan to at least attempt these changes, so you if you aren't really into hacking up the code (in a good sense, that is) you might consider contacting me to see what the current status is. Currently, when YASE writes a file to disk it first deletes any old file by the filename selected, and then creates a new file. This is somewhat risky; a better idea would be to erase a backup, rename the original to make it a backup, then save the edit buffer with the file name selected. Another nice touch would be to add command line arguments. YASE should be able to read a buffer size specification off the command line, as well as read an arbitrary number of files into windows in preparation for editing. Error reporting in the current version is adequate but not great. It would be nice if YASE used OS-9's error codes and error messages to greater advantage. In the book the authors mention that the find and replace command doesn't check to make sure that there is room in the buffer for the replacement text. It would be nice if this routine were as bullet-proof as the rest of the code. YASE lacks one of Wordstar's useful Quick commands: ^QY, which deletes from the cursor column to the end of the line. It shouldn't be too hard to add, since no changes to the data structure's design or display routines would be needed. One of the enhancements I plan to work on concerns YASE's ability to adapt to different terminals automatically. It would be nice if it could read OS-9's termset file to get the info it needs. One final feature that would be nice would be the ability to execute a shell command. It really isn't feasible to direct shell output to a window, so instead one would simply set the cursor to the bottom line of the screen and let the shell take off. If you make changes to YASE, please release your new version to the public. And by all means, please document changes thoroughly! The job's not over till the paperwork's done... ------------------------------------- The views expressed in OS-9 Discussions are those of the individual authors only. Copies of digests are available by mail request. ------ Moderator: John Daleske cbosgd!cbdkc1!daleske daleske@cbdkc1.ATT.COM Submissions should go to: cbosgd!os9 os9@cbosgd.ATT.COM Comments to the moderator cbosgd!os9-request os9-request@cbosgd.ATT.COM ********************* End of OS-9 Discussions *********************