Prev: 23343 Up: Map Next: 23435
23344: Tape Loader: Game
Loads the game header and the code block it names, and resets the Spectrum if either load fails or the header is not a code file. Called from the loader bytes at 23312 and 23320.
Read the game header from tape.
TapeLoader_Game 23344 LD IX,23326 Point IX at the tape header (23326), request 17 bytes, and ask the ROM routine to load rather than verify.
23348 LD DE,17
23351 XOR A
23352 SCF
23353 CALL TapeLoader_LoadBytes Call TapeLoader_LoadBytes to load the next tape block.
Give up unless the header loaded.
23356 LD A,(23343) Reset the Spectrum unless the tape load result (23343) is 1.
23359 DEC A
23360 JP NZ,0
The header must describe a code block.
23363 LD A,(23326) Reset the Spectrum unless the header type at 23326 is 3.
23366 CP 3
23368 JP NZ,0
Load the game block named by the header.
23371 LD IX,(23339) Take the load address from 23339 and the length from 23337, and load that block as data.
23375 LD DE,(23337)
23379 LD A,255
23381 SCF
23382 CALL TapeLoader_LoadBytes Call TapeLoader_LoadBytes to load the next tape block.
Return to BASIC only if the game block loaded.
23385 DI Disable interrupts and reset the Spectrum unless the tape load result (23343) is 1.
23386 LD A,(23343)
23389 DEC A
23390 JP NZ,0
23393 RET Return.
Loads the loading-screen header and then the screen at 16384 and resets the Spectrum if either load fails.
Read a tape header for the loading screen.
TapeLoader_Screen 23394 LD IX,23326 Point IX at the tape header (23326), request 17 bytes, and ask the ROM routine to load rather than verify.
23398 LD DE,17
23401 XOR A
23402 SCF
23403 CALL TapeLoader_LoadBytes Call TapeLoader_LoadBytes to load the next tape block.
Give up unless that header loaded.
23406 LD A,(23343) Reset the Spectrum unless the tape load result (23343) is 1.
23409 DEC A
23410 JP NZ,0
Load the picture into the display file.
23413 LD IX,16384 Point IX at the screen (16384) and load 6912 bytes as data.
23417 LD DE,6912
23420 LD A,255
23422 SCF
23423 CALL TapeLoader_LoadBytes Call TapeLoader_LoadBytes to load the next tape block.
Return only if the screen loaded.
23426 DI Disable interrupts and reset the Spectrum unless the tape load result (23343) is 1.
23427 LD A,(23343)
23430 DEC A
23431 JP NZ,0
23434 RET Return.
Prev: 23343 Up: Map Next: 23435