> procedure Subst; > begin > writeln('Here we are!'); > repeat until false; > end;
Lol now I understand why you placed repeat until false; lol Without it it crashes :D hmmm Probably no way to recover from it... hmmm Or is there ? Hmm maybe there is :) Storing the CS and IP and then later going back... But euhm that would be cheating... Since it has to call/end the interrupt... Hmm no it's not cheating. WOW very interesting indeed I thought you did it like this: asm mov CS, blabla mov IP, blabla end But now I see !!! You are actually using the parameters: CS := blabla; :) IP := blabla; :) That proofs it works :D And recovering from it should work as well :D CS := OLDCS; IP := OLDIP No lol that's not possible var OLDCS : word; OLDIP : word; > procedure Subst; > begin > writeln('Here we are!'); CS := OLDCS; // this ofcourse cant work since parameter is not available here. unless maybe it is pushed or so i dont know. IP := OLDIP; mov CS,OLDCS // cant work mov CS,ax // cant work invalid combination > end; Shit :) I still wonder if there is a way to make it recover... Euhmmmm this is very funny. Those interrupt parameters actually allow something which otherwise isn't allowed ?! Hmm. :) > > procedure TimerHandler(Flags, CS, IP, AX, BX, CX, DX, SI, DI, DS, ES, BP: > Word); interrupt; > begin > inc(count); > asm > pushf; > end; > Int8Save; > { Uncomment the following 2 lines and see what happens. } OLDCS := CS; OLDIP := IP; > { > CS := Seg(Subst); > IP := Ofs(Subst); > } > end; > > begin > GetIntVec(8, @Int8Save); > SetIntVec(8, Addr(TimerHandler)); > writeln('Press ANYKEY to exit'); > repeat > write(count, ' '#13); > until Keypressed; > SetIntVec(8, @Int8Save); > end. > > Skybuck. > > > > _______________________________________________ > fpc-pascal maillist - [EMAIL PROTECTED] > http://lists.freepascal.org/mailman/listinfo/fpc-pascal _______________________________________________ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal