By Gavin Jones


Issue 30

Nov/Dec 87

Next Article >>

<< Prev Article



A neat little utility from Gavin Jones that will give you instant information on your keyboard status

SEE23 is basically an extension of the Atari's already powerful E: device. The name means 'Screen Editor Extension version 2.3' and the program will add information to the normal Graphics 0 screen to let you know the status of various keys and in addition will allow you to use a joystick for quick movement of the cursor, including a 'home' facility similar to that found on many other machines.

The status line at the top of the screen will tell you whether the machine is in Caps, Control or lower case, whether the text is in inverse and whether the start/stop flag (CONTROL-1) is on. The joystick will enable the cursor to be moved anywhere and the fire button will return it to the top of the left most column on screen.


So how do you get it running? Firstly you should type in the BASIC listing using TYPO 3 to check it as you go, and then SAVE this listing to disk. Get a fresh disk with DOS written to it, put it in drive 1, and run the SEE23 listing. This will write an AUTORUN.SYS file to your disk and this disk can then be used to re-boot. You will see the screen change colour and SEE23 will be up and running.


The program reconfigures the system in four ways. Firstly it sets up a new Graphics 0 display list which, instead of having three 112 (8 blank scan lines) instructions at the top of the screen, has one 112, one 96 (7 blank scan lines), one 2 (Graphics 0 line) and one 0 (1 blank scan line). Secondly, it sets up a VBI to handle the cursor movement, the detection of upper/lower case etc. and to update the status line. Thirdly the DOSINI pointer is altered so that all RESETs are trapped to re-initialise SEE23. Finally LOMEM is raised to protect the program.


During the VBI the Display List pointers are changed to point to the new display list which is used to create the extra line. I believe that this is the easiest way to do it, certainly much easier than re-writing the E: handler but, obviously, if the user issues a graphics call, e.g. GR. 8, he will only be in this mode until the next VBI approx 1/50th of a second! To solve this I thought that as location 87 contains the BASIC mode number, all I have to do is check location 87 and if it is equal to 0, change the Display List, otherwise leave it alone. It turns out however that this location is always set to 0 during the VBI (either that or my code is naff!) so it wouldn't work. The solution I came up with was to look at the Display List and see if it contained an Antic mode 2 two lines down the screen. If it did, I would change the screen otherwise I would assume that the screen was not GR. 0 and so leave it alone.

There might of course be a problem with a custom written Display List as, sometimes, the display will get corrupted but this doesn't matter too much as, if you are using a custom Display List, you probably won't want SEE23 running anyway and all you have to do is press OPTION and RESET together, re-run your program and it will work fine.

DOS is a major problem. I had two choices about where to place SEE23. I could have placed it at the top of RAM, and have it trashed by a GR.8 call, or I could put it at the bottom of RAM and get it trashed by DOS! I chose that latter so my code starts at $1F00 and changes the LOMEM pointer to point just after it. If you call DOS however, while the program is running it will crash the machine as DOS overwrites the VBI code but there is, fortunately, a way round this. If you hold down OPTION and press RESET the SEE23 program will turn itself off and you can go to DOS as many times as you like. To get back to SEE23 type X =USR(7936) and press RESET.


The status line will show the effect of the Caps, Inverse and CNTROL-1 keys. Play around with them to see the effect.

The joystick moves the cursor and the fire button will 'home' the cursor to top left. On the 400/800 machines you will hear an awful buzzing sound from the console speaker and the cursor may disappear sometimes. This is not a program fault, it happens because the K: handler is making a click using STA CONSOL and STA WSYNCs. STA WSYNC waits for a horizontal sync, so if you move the cursor past the line waiting to be drawn, the cursor seems to disappear. On the XL/XE machine the problem is solved by turning off the key click.

If you get fed up with the new screen colour, pressing START and RESET will return the colours to the normal default.

To go to DOS, turn off SEE23 by pressing OPTION and RESET. If you want to boot up directly to DOS, hold the OPTION key down until after the 'raspberry' sound and this will prevent the program from ever being activated.

AtariLister - requires Java