click{{ Spectrum Utility Routines Compendium }}click
Any BASIC routines not already included in TAP files can be loaded using the TXT2Emu program which is also included in this archive.

** Transferring a 3DCK C64 .d64 file to a Spectrum .dsk file
** Sorting an array
** Rotate a 3x3 array through 90 degrees
** Saving time populating large arrays
** Compact a string array
** What's the deal with hash tables, anyway?
** Bit operations in BASIC: AND,XOR,OR,BIT,RES,SET,CPL
** Simple BIT,RES,SET in BASIC
** Lempel-Ziv compression routine (draft)
** Lempel-Ziv compression routine (final)
** Lempel-Ziv compression concepts
** Kobrahsoft DB1 - getting it to work
** Display file addressing; Screen slicing
** Addressing bottom 4 lines of display
** Joining & splitting BASIC lines
** Editing strings with INPUT LINE
** INKEY$: No Key / Any Key
** INKEY$: use with caution
** Changing the colour of the INPUT line
** INKEY$ timings
** Keyboard scanning routine
** ON ERROR ... REPEAT ... all models
** Locating the GO SUB stack
** Break from GO SUB (assembler version)
** Break from GO SUB (BASIC version)
** Enhanced RETURN (in BASIC)
** Passing parameters to subroutines
** CLEAR does not RESTORE the DATA pointer
** PUTRAM - Move RAMTOP without side effects
** How To Write A Program
** A Miscellany of Dangerous Tips
** UNTIL ... DO and WHILE ... DO loops
** Pathfinding in Networks/Mazes
** Learning Z80 assembler - useful links
** Adding extra commands to BASIC
** Renumbering routines
** Detecting the ZX Interface 1 ROM version
** Paging memory on the 48k Spectrum
** Converting .Z80 to .TAP
** Countdown Timer
** Calculate the BEEP pitch
** Get the starting address of a game
** A painter (enclose & fill) routine
** Check if two rectangles intersect
** Jelly-Vision!
** Passing parameters to machine code
** Assembler listings with OpCodes in a distinct column
** Timing calculator extension to Z80 OpCodes spreadsheet
** BASIC commands which can include a USR call
** Machine code optimisation
** Testing recursive functions
** Number base 2 through 10 conversion
** Number base 10 to 2 conversion
** Number base 2 through 36 conversion
** Calculating percentages
** Updating BASIC variables from assembler
** Unravelling the Spectrum's floating point number format
** Exponentiation of negative numbers
** Using the ROM's FP calculator's memory area
** Calculating an expression to give a target number
** Z80 math routines
** Full 16*16-digit BASIC multiplication
** Print a large binary integer as a decimal
** Switching 48k/128k modes within a BASIC program
** A 128k routine to put tokens in strings
** Which 128k Spectrum is this?
** How to check the whole memory on a +2 grey
** Problem with PRINT #stream on +128k
** BEEP durations and PLAY equivalents
** Spectrum 128k programming tutorials
** Editing shortcut keys for the Spectrum 128k
** +3 CAT to string
** +3 BASIC DOS_Demo
** File comparator
** 128k+3 RAM paging from BASIC
** +3e Streams & Channels
** RAM used by +3DOS
** Running the +3 self-test program without the magic word
** +3e Load & Run from assembler
** Converting commercial disk games to use standard BASIC loaders
** Drawing perspective grids in BASIC
** More on storing mazes (Genesis of BOB)
** BOB the Screen Builder
** Overlaid square grid
** Increasing the number of UDGs
** Extracting pictures from GAC & PAWS
** Make 8x UDGs from attribute blocks
** Drawing UDGs at different scales
** Scrolling a map
** Scroll one column
** Plot coordinates for Spectrum character set
** Graphics Extractor
** Simple horizontal scroll
** Drawing ellipses
** Vertical downward character WrapScroll
** UDG collision detection
** Sprites in +3 BASIC
** GUI in Sinclair BASIC
** 3D line drawing
** Large sprites
** Machine code sprites and graphics for the ZX Spectrum
** Plotting and rotating wireframe graphics
** Revealing a hidden picture
** Fractal graphics
** Plotting in the lower screen
** Colour clash comments
** Erasing the screen
** Next pixel down
** Mini scroll routine
** Using SCREEN$ from assembler
** Colour considerations when plotting from assembler
** Plotting an energy bar
** Scrolling by 2 pixels
** Number Padding Function
** Procrustean Printing
** Printing text with condensed print controls
** Printing 64 column text from BASIC
** A neat little BASIC trick for TALL letters
** Proportional Print Routine
** Printing a listing
** Printing text at any position/size
** Quick BASIC RAM copy
** Writing Faster BASIC
** RAMdisk functions
** Constraining a list of RND numbers
** RND commands
** Using RND in machine code
** Some alternatives to RND
** Random point screen fill
** Relocating machine code
** Getting PC into HL
** Which BASIC commands/functions affect FRAMES?
** System Flag Variables
** The $028e KEY_SCAN routine
** Spectrum 48k ROM routines
** SAVE-ing SCREEN$ & BASIC as one file
** SAVE-ing without waiting for a keypress
** LOAD-ing without displaying the filename
** Saving BASIC programs in a stack
** Using the ROM's tape routines from assembler
** Force Auto-RUN after LOAD
** Using MERGE in a BASIC program
** Recovering BASIC from a faulty tape
** Why no 'Avalon' loading screen?
** Calculating free memory
** How much space does a number take?
** Making Room
** Unused RAM check
** Calculating FN memory usage
** Storing machine code in a BASIC program
** Inserting binary code into ZX Spin assembler
** Embedding/Concealing static data in BASIC
** Insert a REM of a given length into a BASIC program
** String DEF FNs
** Find-Fill-Copy functions for BASIC
** Bytes to String
** Screen2String
** STR$ bug fix
** SCREEN$ bug fix
** Converting programs from TAP to DSK
** Converting bootstrap loaders to standard loaders
** TXT2EMU (load BASIC text into an emulator)
** TXT2EMU truncate REM enhancement
** Input Validation
** Finding a variable in VARS
** Indirect Variable Assignment
** Undefine function
** Using the DEFADD area for extra variables
** DumpVARS (listing variables during runtime)