A large commit.
[pdp8.git] / sw / src / life / intr.pa
diff --git a/sw/src/life/intr.pa b/sw/src/life/intr.pa
new file mode 100644 (file)
index 0000000..4a3d1e6
--- /dev/null
@@ -0,0 +1,82 @@
+/********************************************************************
+/********************************************************************
+/ INTERRUPT HANDLING
+
+       PAGE
+
+IHAND, DCA     INTAC   / SAVE AC
+       RAR
+       DCA     INTLNK  / AND LINK
+
+       KSF             / SKIP IF KEYBOARD FLAG SET
+       SKP
+       JMP     TTIHAN  / HANDLE TELETYPE INPUT
+       
+       TSF             / SKIP IF PRINTER FLAG SET
+       SKP
+       JMP     TTOHAN  / HANDLE TELETYPE OUTPUT
+       
+       HLT             / OH, AN UNKNOWN INTERRUPT!
+       
+IEND,  CLA CLL         / RESTORE LINK
+       TAD     INTLNK
+       RAL
+       TAD     INTAC   / RESTORE AC
+       ION             / SWITCH ON INTERRUPT AGAIN
+       JMP I   INTR    / RETURN FROM INTERRUPT
+
+/ INTERRUPT TIME BACKUPS OF AC AND LINK
+INTAC, 0               / INTERRUPT BACKUP AC
+INTLNK,        0               / INTERRUPT BACKUP OF LINK
+
+/********************************************************************
+/ TELETYPE INPUT HANDLER
+
+TTIHAN,        
+       KRB             / READ AND CLEAR FLAG
+       AND     K177    / MASK TO 7 BITS - I HATE PARITY!
+       DCA     KBCHAR  / SAVE FOR USE
+       
+       TAD     KBCHAR
+       TAD     CKDMPS
+       SNA
+       JMS I   XDUMPS  / SOURCE DUMP (DEBUG)
+
+       CLA CLL
+       TAD     KBCHAR
+       TAD     CKDMPT
+       SNA
+       JMS I   XDUMPT  / TARGET DUMP (DEBUG)
+       
+       CLA CLL
+       TAD     KBCHAR
+       TAD     CKDUMP
+       SNA
+       JMS I   XDUMP   / NORMAL DUMP
+       
+       CLA CLL
+       TAD     KBCHAR
+       TAD     CKKILL
+       SNA
+       JMP I   XEXIT   
+
+       CLA CLL
+       TAD     KBCHAR
+       TAD     CKHALT
+       SNA
+       HLT
+
+       JMP     IEND
+
+K177,  177
+KBCHAR,        0
+
+/ COMMAND KEYS
+
+CKDUMP,        -104            / D
+CKDMPS,        -123            / S
+CKDMPT,        -124            / T
+
+CKKILL,        -3              / CTRL-C
+CKHALT,        -10             / CTRL-H
+