home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / SIMTEL / CPMUG / CPMUG023.ARK / INTRRUPT.DOC < prev    next >
Text File  |  1984-04-29  |  2KB  |  63 lines

  1.  
  2.  
  3.  
  4. ***************************************************************************
  5. ** COPYRIGHT (C) MASSACHUSETTS INSTITUTE OF TECHNOLOGY AND HARVARD       **
  6. ** UNIVERSITY, BIOMEDICAL ENGINEERING CENTER 1977.  ALL RIGHTS RESERVED. **
  7. ***************************************************************************
  8.  
  9. THE STOIC INTERRUPT HANDLER
  10. J. SACHS 2/2/77
  11.  
  12.     INTERRUPT SERVICE ROUTINES MUST BE WRITTEN IN
  13. ASSEMBLER.  THE FOLLOWING PROCEDURE MAY BE USED TO DEFINE
  14. AN INTERRUPT SERVICE ROUTINE:
  15.  
  16. FOR DEVICES INTERRUPTING VIA RST 7:
  17.  
  18. . ASSEMBLER<
  19.     .
  20.     .
  21.     .
  22.  
  23. DISMISS JMP, >
  24. DEVC INTERRPUT
  25.  
  26.     THIS LEAVES A POINTER ON THE STACK TO AN
  27. INTERRUPT ROUTINE WHICH TERMINATES IN A JMP DISMISS.
  28. THE ADDRESS AND DEVICE CODE ("DEVC") ARE THEN USED
  29. AS ARGUMENTS TO "INTERRUPT" WHICH STORES THE INTERRUPT
  30. SERVICE ROUTINE ADDRESS IN THE INTERRUPT DISPATCH TABLE.
  31. THE STOIC INTERRUPT HANDLER SAVES AND RESTORES ALL ACTIVE
  32. REGISTERS.
  33.  
  34. NORMALLY, AN INTERRUPT SERVICE ROUTINE WILL EITHER PLACE
  35. DATA INTO A CIRCULAR BUFFER, REMOVE DATA FROM A CIRCULAR
  36. BUFFER OR MODIFY FLAGS.
  37.  
  38.     TO SERVICE AN INTERRUPT HAVING ITS OWN RESTART,
  39. THE FOLLOWING SEQUENCE IS USED:
  40.  
  41. . ASSEMBLER<
  42. PSW PUSH,  B PUSH,  D PUSH,  H PUSH,
  43.     .
  44.     .
  45.     .
  46. DISMISS JMP, >
  47. 2001 RESTART# 3 * + !
  48.  
  49. WHERE RESTART# IS THE RESTART NUMBER.
  50.  
  51. WHEN THE INTERRUPT HANDLER IS LOADED, "RDCI" AND "WRCI"
  52. WILL SAVE AND RESTORE THE RESTART LOCATIONS (2000 TO 2018 HEX).
  53. IN ADDITION, THE TTY KEYBOARD IS RUN UNDER INTERRUPTS, WITH
  54. A CIRCULAR BUFFER (SIZE GIVEN BY "TTISZ").  TYPING (CONTROL A)
  55. WILL CAUSE AN UNCONDITIONAL JUMP TO "ABORT".  "ABORT" IS
  56. MODIFIED TO ENABLE INTERRUPTS AND KEYBOARD INTERRUPTS AND TO
  57. RESET THE KEYBOARD CIRCULAR BUFFER.
  58.  
  59.  
  60.  
  61. ***EOF***
  62.  
  63.