home *** CD-ROM | disk | FTP | other *** search
- OK folks, as was mentioned in my previous binary posting, here's a new (and
- very likely to be the last) version of my Line Editor (now V1.01). If anybody
- has any criticisms, bug reports, praise or general moaning about this program,
- then e-mail them to me QUICK, because this project is about to go on the
- shelf indefinitely (well, I've done as much to it as I can think of at the
- moment...).
- What do people think about setting up a newsgroup specifically for the
- Archimedes ? I think eunet.micro.acorn doesn't really stand out as much as
- comp.sys.archimedes...If the Atari ST, Amiga, Mac and IBM PC can have
- newsgroups (and at least 2 of each) named after them, then why not allow the
- Archimedes the same privilege ?
- One final note : I think I've worked out why Archimedes binaries never get
- posted to eunet.micro.acorn - the serial cable is a SWINE to get right AND you
- have to run the RS423 driver fix module AND Arthur Kermit DOESN'T set the
- data/stop bits when you change the parity...no wonder people have trouble...
-
- Richard K. Lloyd, ****** This is a VAX 11/780 running VAX/VMS V4.5 ******
- Computer Science Dept., * JANET : SQRKL@UK.AC.LIV.CSVAX *
- Liverpool University, * UUCP : {backbone}!mcvax!ukc!mupsy!liv-cs!SQRKL *
- Merseyside, England, * Internet : SQRKL%csvax.liv.ac.uk@cunyvm.cuny.edu *
- Great Britain. *******************************************************
-
- "My opinions and those of the University of Liverpool are completely unrelated,
- so I'M THE CULPRIT if you feel offended by the above message - I just can't
- help moaning about Atari STs, PCs or clones, U**X, C, IBM mainframes, the list
- is endless..."
-
- -------------------------- Start of LineEdDoc file --------------------------
-
- Documentation for Line Editor Module V1.01
- ------------------------------------------
-
- ************************* Very boring Copyright Notice **********************
- * *
- * All program code is the copyright of Richard K. Lloyd and the 'borrowing' *
- * any part of it without the permission of the author is prohibited. *
- * *
- *******************************************************************************
-
- If you are passing on the Line Editor to your friends, please include this
- short text file (which I've called LineEdDoc).
-
- The Line Editor is installed by typing *LineEditor. If there isn't enough RMA
- workspace available, then the installation will fail. To remedy this, you can :
-
- 1) Type *GOS, which permits extra RMA space to be claimed because there is no
- application (e.g. BASIC) active or
-
- 2) *RMKILL or *RMCLEAR unwanted RAM-based modules or
-
- 3) *UNPLUG unwanted ROM-based modules or
-
- 4) Use *Configure RMASize to allocate more space to the RMA or
-
- 5) Use *Configure EdSize to reduce the workspace needed by the Line Editor or
-
- 6) Use *FX 162,37,<lines> and *FX 162,38,<pages> if you can't activate the
- the Line Editor due to lack of space in the RMA (this is the 'last resort'
- mechanism - only to be used if all else fails).
-
- If you still can't install the Line Editor after all that, then either you
- have inordinately large *Configure SpriteSize/ScreenSize etc. settings or you
- only have a 512K RAM A305, though God knows why you have - there's only 100K
- free after booting !
-
- All the help you need can be obtained by typing *Help LineEditor once the Line
- Editor has installed correctly. This short document just describes any unusal
- features of the Line Editor.
-
- Because the Line Editor traps the OS_ReadLine vector, the following will be
- intercepted :
-
- a) BASIC's immediate command mode (prompted by a ">").
- b) BASIC's INPUT and INPUT LINE statements.
- c) Arthur Supervisor's line input (default prompt is a "*").
- d) Any ARM code or 6502-emulated code that calls OSWORD 0.
- e) Any ARM code that calls OS_ReadLine (a bit obvious this one...).
-
- There is a (now nice) piece of logic in the Line Editor code that will purge
- the oldest commands if the command history is almost full. If a line is typed
- in which already duplicates one in the command history, then the latter is
- removed and the duplicate line is put in the last command history slot.
-
- The command history size (in pages = 256 bytes) and the number of lines
- remembered may be saved to battery-backed RAM by use of the *Configure EdSize
- and *Configure EdLines commands. If you are running the Line Editor for the
- first time then 4 pages and 20 lines are the default values. The two
- battery-backed RAM locations used are 37 and 38 (decimal) which are mid-way
- through the area designated 'User' battery-backed RAM in the Reference Manual.
-
- Try this with RMASize 4 and default language 4 (BASIC) : Type *GOS,
- *RMLoad Clares Toolkit v1.01, enter BASIC, soft reset (just press RESET only)
- and then type *RMTIDY - you get an 'Address exception' !! Ho ho ho ho - my Line Editor re-activates correctly if you do the same thing...
-
- Bad News : Serious Arthur (1.20) Supervisor input bug
- -----------------------------------------------------
-
- During the development of this (hopefully useful) program, I stumbled across a
- rather amazing bug. Enter the Arthur Supervisor mode by typing *GOS. Fill the
- input buffer by, say, holding down a key until you get a beep. Press RETURN
- and - bingo - A FATAL SYSTEM CRASH ! The memory is filled with (I think) the
- string you typed, the screen goes blank and sometimes strange noises emanate
- from the speaker...a CTRL-BREAK or RESET rescues the situation, but bang goes
- any program you had in memory at the time.
-
- Good News : The Line Editor fixes the above bug
- -----------------------------------------------
-
- Further investigation has shown that if a full line is entered, then the
- terminating carriage return overflows onto command line parsing workspace -
- technofreaks might like to know that the error is a pretty clumsy one...
- a length of 240 bytes is specified, but the buffer at &9C8 is exactly 240 bytes
- long - wrong !! It should be 241 bytes long to allow for the carriage return.
- The bug is fixed by reducing the line length of the Arthur Supervisor input
- routine by 1 byte. This applies to Arthur 1.20 only.
-
- Revision History of the Line Editor
- -----------------------------------
-
- Pre-release Version V1.0
- ------------------------
-
- * 'Normal' ARM code program that was *RUN and resided at &8E000 (I think -
- it was 'hackable' because the code was relocatable even then).
-
- * Very minor bug - if a line wrapped onto a second or later line, then moving
- the cursor back onto the first line and pressing RETURN would result in just
- a CR-LF being output at the cursor position - hence bringing up the next
- prompt (e.g. BASIC's ">" or Arthur's "*") on the wrong line.
-
- * The location of command history buffer (and the program itself) was suspect
- in the extreme - just plonked straight after the Line Editor program itself.
-
- Version 1.00
- ------------
-
- * First version released into the Public Domain via the NEWS system and thus
- set a precedent for being the first EVER Archimedes binary posted up to the
- eunet.micro.acorn newsgroup. The big question is : will it be the ONLY ONE
- EVER ? C'mon all you budding ARM (or even BASIC...) programmers out there
- who are reading eunet.micro.acorn - post your stuff up NOW...
-
- * Written, for the first time, as a relocatable module (much more useful !),
- so now doesn't encroach on application workspace.
-
- * Used two bytes of battery-backed RAM to store its configuration.
-
- * *Help, *Configure and *Status now fully supported.
-
- * New command *EdStatus added to display currently active configuration.
-
- * Very minor bug in Pre-release Version fixed (cursor now goes to the end of
- the input line before a CR-LF is output).
-
- * Cleaned up some slight errors in the *Help LineEditor text.
-
- * Fixed Arthur Supervisor bug (documented above).
-
- Version 1.01
- ------------
-
- * Command history buffer management much improved. You can now get down to
- '0 bytes free' in the *EdStatus command - something you couldn't do in V1.00.
- The bytes free has now been 'pluralised' i.e. it says 'There is 1 byte free'.
-
- * Overtype mode added for people who like using it (who does ?). The default
- mode for each line is insert mode and you have to press Insert to get into
- overtype mode...which is the way it should be.
-
- * Character read routine now uses INKEY(0) instead of GET because I needed to
- scan (using INKEY(-62)) for the INSERT key, which NEVER returns an ASCII
- code from GET...
-
- * Line Editor now beeps (wow !) if the current line is at its maximum length
- and further characters are typed.
-
- * Ctrl-Cursor Up and Ctrl-Cursor Down commands added - they display the oldest
- and newest command lines respectively. Yes, I confess, this is a poor
- solution to the problem of *RECALL [<numbered history line>] (VAX/VMS has a
- RECALL command which isn't put into the history buffer - I don't think this
- can be done with my Line Editor).
-
- Future Improvements to Line Editor V1.01
- ----------------------------------------
-
- * Can't think of anything offhand - all known bugs have been ironed out (even
- the new ones introduced when I added overtype mode !). I'm always open to
- (polite) suggestions, though...see below.
-
- A dozen Archimedes moans
- ------------------------
-
- I reckon the Archimedes is the best machine I've ever used for programming,
- but I felt that it's a bit ropey in some areas :
-
- 1) The BASIC Editor has some strange ideas about line splitting. Why can't it
- just split or join at the cursor postion when RETURN or DELETE is pressed
- instead of having to mess around with Shift-f1 or Ctrl-f1 ?
-
- 2) It's tortuous to delete the whole of a single line in the BASIC Editor -
- Ctrl-D f12 !!!! Yuck.
-
- 3) The APPEND command (Shift-f2) in the BASIC Editor ALWAYS appends to the END
- of the program - it would be more useful to insert the file at the current
- line the cursor is on. I'd imagine you'd have to call it INCLUDE though.
-
- 4) Acorn should rethink their WIMP environment from scratch - it's a disgusting
- cross between horrible Microsoft Windows and the even worse DR GEM.
-
- 5) Forget a 3-buttoned mouse (it's also far too light...I'm tempted to put some
- lead weights in it) - you only need one (have Apple copyrighted the idea ?).
-
- 6) Why do all RAM-based modules disappear on a hard reset ? Good old Sideways
- RAM on the BBC Micro never had this problem and it was nowhere as clever as
- the relocatable module system.
-
- 7) Why can't the 6502 emulator run utility (i.e. non-language) ROMS ? It can't
- be too difficult to emulate the BBC Micro paged ROM system...
-
- 8) Why is floppy drive 0 on the RIGHT of the machine instead of the left ?
- Yes, you CAN change this by fiddling around inside the case, but you
- shouldn't have to.
-
- 9) Why doesn't the BASIC V assembler understand floating-point opcodes ?
-
- 10) Why is the shielding on an Archimedes so bad ? Any size of mains spike
- causes an 'Unknown IRQ' error on the Archimedes, but not on any other of
- my machines. A mains spike also occasionally sets the real-time clock to
- the year 2151 !!! Anyone else had this problem ?
-
- 11) When *RUNning files with no file type, R14 (or the stack for the matter)
- is not setup ready for a MOV PC,R14 - why not ? Yes, I know about the
- 'Utility' type, but you have to a *SetType AND code must be relocatable.
-
- 12) Why are the MS-DOS emulator and the Acorn Linker both (at least partly)
- written in Modula-2 ? ArcWriter and Lisp are written in BCPL of all things
- and ANSI C is written in...ANSI C !!
-
- Where to find me to report bugs or improvements to the Line Editor
- ------------------------------------------------------------------
-
- JANET e-mail (from one yoghurt carton to the next
- Snail Mail one in, oh, 25 retries over a 3-day period...)
- ---------- -------------------------------------------------
- Richard K. Lloyd, Until October 1988 at the latest : sqrkl@uk.ac.liv.csvax
- 1, Banks Road, At any time : rkl@uk.ac.liv.cs.mva
- Lower Heswall,
- Wirral,
- Merseyside.