Historical use of "traps"

Mike Grim grimwm at gmail.com
Thu Jun 9 11:19:35 PDT 2005


Oliver Fromme wrote:
Matthew Dillon <dillon at xxxxxxxxxxxxxxxxxxxx> wrote:
 > Oliver Fromme wrote:
 > :On the Commodore PET2001 [*], which was a BASIC computer
 > :based on the 6502, the break pointer pointed to a hex
 > :monitor contained on ROM.  So it was possible to enter
 > :the hex monitor by typing the BASIC command "SYS <n>"
 > :where <n> was an address known to contain 0x00.
 > :Typically used as in "POKE1024,0:SYS1024".
 > 
 >    What, don't you remember the two-button-salute?  The little 
 >    two-button gizmo you could wire into the machine to generate an NMI
 >    that broke you into the machine language monitor ?

I knew about it, but the PET2001 in question belonged to
the school, and I (being just a schoolboy) was definitely
now allowed to wire anything into the machine.
Though I remember, several computers later, on the C64,
I built a "reset button" from an eraser and a paperclip,
which shortened two pins on the userport.  That was my
own C64, though, so I wouldn't get killed if I fried it
(which I didn't, even though I ocasionally hit the wrong
pins).
 >    Sometimes I wish I could do that (more easily) on a PC.  PCs
 >    have NMIs, but they are not real NMIs, and its a !@#$#@$ to
 >    hook them up.
I have read about (relatively simple) ways to generate an
NMI by sticking a paperclip or screwdriver into an ISA slot
or PCI slot.  I refrained from trying that myself, though.
(I can look up the article which explained it, if you're
interested.)
 >    Actually what I really want is a PCI card that allows me to run GDB
 >    from another box without having to do any code interfacing at all.
I was under the impression that the firewire console access
offered something like that, i.e. reading and writing RAM
locations directly from the IEEE1394 controller without any
need for a driver.  At least the FreeBSD manpage sounds
like that (but I've never used it, so I might misunderstand
how it works).
Best regards
   Oliver
Thanks for the feedback.  Reading a bit more from chapter 3 of "Design 
and Implementation of 4.4BSD", I'm fairly sure "trap" means something 
along the lines of "trapping the kernel to force it to do something."  I 
guess interrupt vectors and what-not are setup to handle these 
situations?  I know interrupts are actually separate from a trap, but is 
a similar convention used to know which code to execute during a 
hardware trap that is now transferring over to the kernel?

Thanks.





More information about the Users mailing list