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 / STOICITP.STC < prev    next >
Text File  |  1984-04-29  |  2KB  |  78 lines

  1.  
  2.  
  3. % ***************************************************************************
  4. % ** COPYRIGHT (C) MASSACHUSETTS INSTITUTE OF TECHNOLOGY AND HARVARD       **
  5. % ** UNIVERSITY, BIOMEDICAL ENGINEERING CENTER 1977.  ALL RIGHTS RESERVED. **
  6. % ***************************************************************************
  7.  
  8. % STOIC INTERRUPT HANDLER
  9. % J. SACHS 2/8/77
  10.  
  11. RADIX @ HEX
  12.  
  13. 80 'INTERRUPT-TABLE ARRAY
  14.  
  15. % DEFINE INTERRUPT HANDLER FOR RESTART 7
  16. . ASSEMBLER<
  17.   PSW PUSH,  B PUSH,  D PUSH,  H PUSH,  0 IN,  CMA,  A ADD,
  18.   A L MOV,  0 H MVI,  INTERRUPT-TABLE 80 - D LXI,  D DAD,
  19.   M E MOV,  H INX,  M D MOV,  XCHG,  PCHL,  >
  20. 2016 !
  21.  
  22. % DEFINE DISMISS ENTRY
  23. . ASSEMBLER< DEFINITIONS
  24.   H POP,  D POP,  B POP,  PSW POP,  EI,  RET,
  25. > DEFINITIONS
  26. 'DISMISS CONSTANT
  27.  
  28. % ADDR DEVC INTERRUPT
  29. % STORES AN INTERRUPT ROUTINE ADDRESS IN THE INTERRUPT TABLE
  30. % ADDR IS ADDR OF INTERRUPT ROUTINE
  31. % DEVC IS DEVICE CODE OF DEVICE
  32. 'INTERRUPT : 0C0 - 2* INTERRUPT-TABLE + ! ;
  33.  
  34. % REDEFINE WRCI TO SAVE AND RESTORE RESTART ADDRESSES
  35. 0C 'RESTART-SAVE ARRAY
  36. 'WRCI : 2000 RESTART-SAVE 18 MVBYTES WRCI RESTART-SAVE 2000 18 MVBYTES ;
  37.  
  38. % DEFINE KEYBOARD CIRCULAR BUFFER AND VARIABLES
  39. 40 'TTISZ CONSTANT    % CIRCULAR BUFFER SIZE (IN BYTES)
  40. TTISZ 2/ 'TTIBF ARRAY    % CIRCULAR BUFFER
  41. TTISZ 'TTIC VARIABLE    % INPUT COUNT
  42. 0 'TTOC VARIABLE    % OUTPUT COUNT
  43. TTIBF 'TTIP VARIABLE    % INPUT PTR
  44. TTIBF 'TTOP VARIABLE    % OUTPUT PTR
  45.  
  46. % KEYBOARD INTERRUPT SERVICE ROUTINE
  47. . ASSEMBLER<
  48.   0E003 LDA,  7F ANI,  1 CPI,  () ABORT JZ,  A B MOV,  TTIC LHLD,
  49.   H A MOV,  L ORA,  DISMISS JZ,  H DCX,  TTIC SHLD,  TTIP LHLD,
  50.   B M MOV,  H INX,  TTIBF TTISZ + MINUS D LXI,  XCHG,  D DAD,
  51.   IFNC,  TTIBF D LXI,  THEN,  XCHG,  TTIP SHLD,  TTOC LHLD,  H INX,
  52.   TTOC SHLD,  DISMISS JMP,  >
  53. 0E0 INTERRUPT
  54.  
  55. % TTY INPUT ROUTINE (PROCESSES ^A)
  56. . ASSEMBLER<
  57.   .  TTOC LHLD,  H A MOV,  L ORA,  JZ,  H DCX,  TTOC SHLD,  TTOP LHLD,
  58.   M A MOV,  H INX,  TTIBF TTISZ + MINUS D LXI,  XCHG,  D DAD,  IFNC,
  59.   TTIBF D LXI,  THEN,  XCHG,  TTOP SHLD,  TTIC LHLD,  H INX,  TTIC SHLD,
  60.   RET,  >
  61. (TTYIN) !
  62.  
  63. % SET UP ABORT ROUTINE TO ENABLE INTERRUPTS, AND KEYBOARD INTERRUPTS
  64. % AND INITIALIZE THE KEYBOARD BUFFER
  65. . ASSEMBLER<
  66.   TTISZ H LXI,  TTIC SHLD,  0 H LXI,  TTOC SHLD,  TTIBF H LXI,  TTIP SHLD,
  67.   TTOP SHLD,  EI,  40 A MVI,  0E001 STA,  RET,  >
  68. (ABORT) !
  69.  
  70. RADIX !
  71.  
  72. % RETURN BY ACTIVATING ABORT
  73. ABORT
  74.  
  75.  
  76.  
  77. ***EOF***
  78.