Interrupt system implemented, some new programs.

This commit is contained in:
Anachronaut
2026-08-15 00:44:13 -04:00
parent 638b68b25c
commit 6d1966d500
79 changed files with 2778 additions and 88 deletions
@@ -0,0 +1,45 @@
; Tests SIF and CIF, the Interrupt Flag.
;
; Nothing reads the Interrupt Flag yet, so what this proves is that the two
; instructions decode, execute, and leave everything else exactly as they found
; it. The Carry Flag is the part worth checking, because it lives in the same
; Status register and a careless mask would take it out.
;
; Correct output is:
; OKC
#Program
start:
; Load two registers, run the new instructions across them, and prove that
; nothing moved.
INIA 0d79 ; 'O'
INIB 0d75 ; 'K'
SIF
CIF
SIF
OUTA 0x00 ; Still 'O'.
OUTB 0x00 ; Still 'K'.
; Now set the Carry Flag, and work the Interrupt Flag around it.
CCF
INIA 0xFF
INIB 0x01
ADD ; Q = 0, and the Carry Flag is set.
SIF
CIF
BRC carryHeld
; Falling through here means one flag trampled the other.
INIA 0d88 ; 'X'
OUTA 0x00
INIA 0x0A
OUTA 0x00
HALT
carryHeld:
INIA 0d67 ; 'C'
OUTA 0x00
INIA 0x0A
OUTA 0x00
HALT