jgerrie wrote:Pippa
The crown is mine!
What does these POKEs do? You say you don't know much about the MC-10 but it seems that you have figured out how to reset the RESTORE point for use by the READ command. Have I got that right? If so, this is a very useful set of POKEs.
75 RD=PEEK(173)+256*PEEK(174):FOR I=1TO5*NR:READ J:NEXT:OD=PEEK(173)+256*PEEK(174)
5110 POKE174,INT(RD/256):POKE173,RD-256*PEEK(174):FORI=1TO R:READ N,E,S,W,M:NEXT
Thanks so much.
Jim
Yes. Those addresses hold the READ/DATA pointer. The original program made heavy use of the BBC's
RESTORE line-number command, but that doesn't seem to work on the MC-10, so I had to use an ugly kludge to get round it.
With hindsight, it might've been simpler to just read everything into an array, but I wanted to follow the original program as closely as possible, to reduce the chance of mistakes! Luckily the emulator came with a complete ROM disassembly amongst the documentation, so it was easy to find the READ/DATA pointer. (Just open the file, hit ctrl-F and search for "data" until I found the right one!)
RD=PEEK(173)+256*PEEK(174) stores the start of room data. I then use a FOR/NEXT loop to READ through all the room data, then
OD=PEEK(173)+256*PEEK(174) stores the start of the object data. These get POKEd back later when I need to read the room data or object data again.
(I don't know whether the MC-10's processor stores addresses big byte first or little byte first, but it turned out that didn't matter because even if I'm peeking them the wrong way round, it gets cancelled out when I poke them back the same way round again later!)