Tape Utility Routines ===================== Machine code source ------------------- TapeBuffer=&5BEF ORG 23300 .L23300:JP TapeInfo ; Entry for TapeInfo .L23303 ; Entry for TapeLoad .TapeLoad LD IX,(TapeBuffer+13) ; Load address LD DE,(TapeBuffer+11) ; File length LD A,&FF ; &FF=Data Block .TapeJump SCF ; CS=load JP &0556 ; Jump to LD_BYTES .TapeInfo LD IX,TapeBuffer ; IX=>buffer to load header LD DE,17 ; DE=header length XOR A ; &00=Header block JR TapeJump ; Jump to load via LD_BYTES In Basic -------- REM Create the machine code: FOR a=23300 TO 23326:READ b:POKE a,b:NEXT a DATA 195,21,91,221,42,252,91,237,91,250,91,62,255,55 DATA 195,86,5,221,33,239,91,17,17,0,175,24,242 REM Load next file header: LET bc=USR 23300 REM Load next data block to address in header: LET bc=USR 23303 REM Load next data block to 'start' address POKE 23549,INT(start/256) POKE 23548,start-256*PEEK23549 LET bc=USR 23303