Jasper Spectrum Emulator

Sorry, this browser is not Java(tm) enabled.

It either cannot run Java(tm) applets, or the running of applets is currently disabled in your browser.

 BASIC 

 EDIT               F1
 CAPS LOCK          F2
 LEFT               F5,SHIFT+LEFT
 DOWN               F6,SHIFT+DOWN
 UP                 F7,SHIFT+UP
 RIGHT              F8,SHIFT+RIGHT

 GRAPHICS MODE      F9
 E MODE             TAB
 CAPS SHIFT         CONTROL
 SYMBOL SHIFT       ALT,META

 PAUSE/LOAD URL     ESC,HOME
 RESET SPECTRUM     END

SpecMap1

This program was written in the 1980s and published on Outlet magazine, Issue 25. It allows you to peer into your Spectrum's memory and see exactly what it is up to. The short machine code routine is at 65280 and I left a clear 256 bytes below that so that the routine and the User Definable Graphics could be seen. Below that is the gosub stack end-marker and an active gosub stack as I have called the machine code from within a recursive Basic subroutine. That's at line 256 so the gosub stack has a pleasing hatched appearance. If it had been line 257 then the gosub stack would have been solid black. Below the gosub stack is the less regular machine stack. This is collapsed every time a new return line and statement is pushed on the gosub stack. (three bytes)

At the opposite end of free memory is a small calculator stack and below this the variables area. There is a variable a$ that holds the value INKEY$. If you can't quite make it out, press a key. Now you should be able to see the variable. When you release the key, the other variables slide down to take it's place.

At the top of the screen area there are three solid lines that represent the attribute file. Below this is a single white line - the empty printer buffer. Next are the system variables and then channels and the program which is largely just a series of print statements.

The System Variables don't occupy a complete line and you may see some of them twinkling . These are ERR_SP just under the letter A. This points to an item at the base of the machine stack and as the machine stack is in freefall, the address low byte occasionally holds zero. You may also see one of the FRAMES counters occasionally hold a zero and if you see all three change together, well, I've found it's best to keep these things to oneself.

If you hold that key down again then you will see some movement at the start of the system variables. This is the keymaps accepting your key. Now press another key and then remove your finger from the first. Did you see the maps change over?

The rest, string slicing, array dimensioning, is up to you but here is an interesting one.

Press Q then BREAK.
Add to the loop at the end

242 PRINT #3;"A";

The semicolons are important and, when you restart the program with RUN, you will see the printer buffer working. Instead of "A" try CHR$(128+(15*RND)) and you'll see the mosaic characters being built in the system variables area.

Hint: click on the speed bar if you're in a hurry to see how big the gosub stack can get.


From the top of the Hill