Path: utzoo!utgpu!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!mailrus!ames!oliveb!amiga!kodiak From: kodiak@amiga.UUCP (Robert R. Burns) Newsgroups: comp.sys.amiga.tech Subject: Re: SDB and tracing through the ROMs Keywords: SDB, BCPL, breakpoint Message-ID: <3228@amiga.UUCP> Date: 30 Dec 88 21:16:38 GMT References: <1988Dec27.223345.29513@ziebmef.uucp> Reply-To: kodiak@tooter.UUCP (Robert Burns) Organization: Commodore-Amiga Inc, Los Gatos CA Lines: 35 In article (Colin Plumb) writes: )00fff1b0: 0000 0000 ori.b #0,d0 )00fff1b4: 0000 038d ori.b #-73,d0 )00fff1b8: 2401 move.l d1,d2 )(more reasonable-looking code) )... )BCPL compiler, anyone? (1.3 kickstart, BTW.) )... )For the technically oriented, I patched rn->RestartSeg to hold 0x7f2d, )0x1fcb4 in the APTR world, and at that address is found: ) )0001fcb4: 003f fc6c ori.b $6c,usp )0001fcb8: 4e71 4e71 nop nop )0001fcbc: 4ef9 00ff f1b4 fmp fff1b4 Well, that *fmp* instruction will get you every time! :-) Seriously: 1. You're looking at a BCPL segment global table. The 0000 0000 is indeed a NULL next pointer, and the 0000 038d is the size of the segment. You have now entered the twilight zone. The reason you're crashing is because BCPL segments are different than any other kind of segment, and the lie about either the next segment pointer, or (more likely) the size of this one caused the crash. Moreover, execution does not start at the first code in the first segment. I honestly don't want to go into more detail lest folks start using the mechanisms involved, because they are structurally flawed and will break if too many people use them. Hope you're not the "knowledge for knowledge's sake" type :-). 2. This mechanism (if you get it to work) will not be supported for 1.4, but I see Steve has already said that. -- Bob Burns, amiga!kodiak _ | /_ _|. _ | Commodore __ |_) _ |_ _ )' |<(_)(_)|(_\|< /\ | ||| _` /\ |_)(_\| )(_\ | | \ Software ___/..\|\/|||__|/..\___ Faith