From rrze.uni-erlangen.de!fauern!news.th-darmstadt.de!zib-berlin.de!ceres.fokus.gmd.de!nntp.gmd.de!newsserver.jvnc.net!news.cac.psu.edu!news.pop.psu.edu!hudson.lm.com!godot.cc.duq.edu!newsfeed.pitt.edu!gatech!swrinde!pipex!sunsite.doc.ic.ac.uk!uknet!comlab.ox.ac.uk!elliott Sun Dec 4 12:52:59 1994 Newsgroups: comp.sys.sinclair Path: rrze.uni-erlangen.de!fauern!news.th-darmstadt.de!zib-berlin.de!ceres.fokus.gmd.de!nntp.gmd.de!newsserver.jvnc.net!news.cac.psu.edu!news.pop.psu.edu!hudson.lm.com!godot.cc.duq.edu!newsfeed.pitt.edu!gatech!swrinde!pipex!sunsite.doc.ic.ac.uk!uknet!comlab.ox.ac.uk!elliott From: elliott@teaching.physics.ox.ac.uk (John Elliott) Subject: Re: +2A, +3 difference and RE:snapshots Message-ID: <1994Nov24.192252.16716@inca.comlab.ox.ac.uk> X-Newsreader: TIN [version 1.2 PL0] References: <3air6i$95a@sun.uakom.sk> <3aq6tu$nfg@sun.uakom.sk> Date: 24 Nov 94 19:05:39 GMT Lines: 49 In article <3aq6tu$nfg@sun.uakom.sk>, Iggy (IEC) (eged@decef.elf.stuba.sk) wrote: : |> In my previous article "snapshots" I wrote, that I have some : |> 128 kB games available. But I found out a new fact, what : |> makes me very unhappy: I thought in all the versions of : |> Speccy 128 are in port address for RAM and ROM pages switching : |> (#7ffd) decoded only the 0.th and the 15th bites, but now I found : ^ : sorry, of course bit 1!!! : |> out that isn't true (I think it is not so in +2A,+3). : |> And the emulator from G.Lunter doesn't (probably) emulate +2A and +3, : |> but tests the whole word and not only the two bites. : |> And that's why the 128kB remixes of multilevel games don't work in emulator : |> (the remixes I did) : |> And the 48/128 kB versions go as 48 versions, because in the beginning : |> of the games I tested Speccy 48/128. : |> And I used: : |> LD A,#11 (7th bit is 0) : |> OUT (#FD),A (bit 0 is 0), and instruction OUT (ADR),A : ^ : here again bit 1 : |> uses two bytes-port address: LOWER BYTE-ADR, : |> HIGHER BYTE-A I thought that while OUTing, the high address byte was taken from B. I think the 128 must test the top two bits of the high address byte (A15 and A14), since it also has the ports BFFDh and FFFDh. If the OUT command does use the B register, then essentially you are sending values to a random xxFDh port; on a +3 this could page the memory all over the place or do something horrid to the FDC. FYI, the +3 uses ports: 0FFDh : Centronics 1FFDh : Some ROM paging, all-RAM-mode paging, disc motor & Centronics strobe 2FFDh : FDC status register. 3FFDh : FDC data register. : |> I am sorry, but I will probably not recrack the games... :-)) But someone with a Hex editor could quickly find 3E 11 D3 FD and quickly rewrite it so that there are two variants; one of which forces '48' mode and one of which forces '128' mode. -- John Elliott elliott.teaching@physics.oxford.ac.uk ---------------------------------------------------- BLOODNOK: "But why have you got such a long face?" SEAGOON: "Heavy dentures, Sir!" - The Goon Show :--------------------------------------------------)