BORDER PATTERNS by Ben Machin & Fred O'Rourke from Your Sinclair #26 (February 1988) [files BORDPATT.*] [NOTE: This is unlikely to work on many emulators, because of timing ] [problems, and also because they don't have a border as wide as a real ] [Spectrum in order to show a legible border display. Using WinZ80 with ] [the "wide borders" setting gives some idea of what should appear, ] [although even that is not very good. JimG] I liked this program from Ben and Fred (sounds like a couple of Flint- stones), partly because it was so well presented, and also because it was so frivolous. By well presented I mean that they supplied a tape, hex dump, assembly listing, a page of information about the program, and demo listing. (If all the submissions were as well presented it would make this job so much easier!) The demo program shows border graphic units zooming along above normal screen limits. The routine occupies RAM from 50000-50213 and 64980-65281. [This doesn't tally with the printed listings, which end at 50215 and 65027. JimG] The latter of the two addresses holds the interrupt handler and the vector table, whereas the first area is the border display handler. Borderprint is compatible with the 48K and 128K/+2 Spectrums. It automatically works out which computer it is running on, and modifies itself to run on the slightly faster 128k/+2 processor. POKE 50005, lo-byte of display file start POKE 50006, hi-byte of display file start POKE 50008, (1-64) amount of pixel lines to be printed POKE 50107, (1-255) scroll speed, 255=fast, 1=slow POKE 50141, (1-8) size of chars printed by routine 50131 POKE 50168, (1-7) ink colour of chars POKE 50176, (1-7) paper colour of chars POKE 50212, 0=scroll on, 1=scroll off POKE 50167,237: POKE 50168,95 multicolour chars POKE 50167,62: POKE 50168,0 normal black chars RANDOMIZE USR 50131 when scroll is off captures character at 0,0 RANDOMIZE USR 64980 turns the border display off RANDOMIZE USR 65000 turns the border display on The Basic listing of the demo program below requires a few lines of modification, 'cos as it stands it doesn't load the machine code. Add these lines for full operation: 140 STOP 150 CLEAR 49999 160 LOAD "BLOCK1" CODE 170 LOAD "BLOCK2" CODE 180 GO TO 5 When you save the Basic use SAVE "demo" LINE 150. The reason for this omission was that there was a short program on the tape that loaded the CODE before the Basic demo. I haven't bothered to give you the assembly listing for three reasons: 1) There were no comments anyway; 2) It would have taken up space, and finally; 3) Disassembling code is a good way to learn about it! The authors add this small note: "If this routine is published in Program Pitstop, please mention that readers can use it in their own programs, but not in any commercial or published programs / games. Thank you." Well, thank YOU, Ben and Fred.