Interrupt system implemented, some new programs.
This commit is contained in:
@@ -29,6 +29,9 @@ printHello | printHello.asm | run | -
|
||||
32bitFibonacci | Fibonacci/32bitFibonacci.asm | run | - | -
|
||||
8bitSieve | primeSieve/8bitSieve.asm | run | - | -
|
||||
16bitSegmentedSieve | primeSieve/16bitSegmentedSieve.asm | run | - | -
|
||||
# The four pointer rewrite. It emits exactly the same primes as the line above, which
|
||||
# is the whole point of keeping both: the pair is a direct before and after.
|
||||
16bitSegmentedSieveModern | primeSieve/16bitSegmentedSieveModern.asm | run | - | -
|
||||
mathTest | testPrograms/mathTest.asm | run | - | -
|
||||
printTest | testPrograms/printTest.asm | run | - | -
|
||||
int16print | Libraries/int16print.asm | run | - | -
|
||||
@@ -38,6 +41,47 @@ dataPointerTest | testPrograms/dataPointerTest.asm | run | -
|
||||
twoPointerCopy | testPrograms/twoPointerCopy.asm | run | - | -
|
||||
pointerTableTest | testPrograms/pointerTableTest.asm | run | - | -
|
||||
staticTableTest | testPrograms/staticTableTest.asm | run | - | -
|
||||
dispatchTest | testPrograms/dispatchTest.asm | run | - | -
|
||||
|
||||
# ---- Moving an ALU result back into an operand register ----
|
||||
moveQTest | testPrograms/moveQTest.asm | run | - | -
|
||||
|
||||
# ---- Moving the cursor along ----
|
||||
paddingTest | testPrograms/paddingTest.asm | run | - | -
|
||||
|
||||
# ---- Finding the Stack ----
|
||||
stackPointerTest | testPrograms/stackPointerTest.asm | run | - | -
|
||||
|
||||
# ---- The Interrupt Flag ----
|
||||
# Nothing reads the flag yet. This checks that setting and clearing it leaves
|
||||
# the registers and the Carry Flag it shares a byte with untouched.
|
||||
interruptFlagTest | testPrograms/interruptFlagTest.asm | run | - | -
|
||||
|
||||
# ---- Vectors laid down by the assembler ----
|
||||
# These are the interrupt path end to end. Until #Vectors existed, none of them could
|
||||
# be written as a source file at all, because nothing could install a handler.
|
||||
vectorTest | testPrograms/vectorTest.asm | run | - | -
|
||||
deviceTest | testPrograms/deviceTest.asm | run | - | -
|
||||
faultResumeTest | testPrograms/faultResumeTest.asm | run | - | -
|
||||
# The worked example out of the Assembler Manual, so the manual cannot go stale.
|
||||
interruptExample | testPrograms/interruptExample.asm | run | - | -
|
||||
|
||||
# ---- Holding a device off, and then letting it through ----
|
||||
# Faults on purpose. The fault is the proof that the line was answered, and where it
|
||||
# lands in the output is the proof of when.
|
||||
maskTest | testPrograms/maskTest.asm | run | - | -
|
||||
|
||||
# ---- Dispatching through a vector with nothing in it ----
|
||||
# Also meant to fault. Until the assembler can lay a vector table down, every entry
|
||||
# reads as zero, so this is the only half of the interrupt path a source file can
|
||||
# reach on its own. The round trip through a handler is covered by hand built
|
||||
# binaries until #Vectors arrives.
|
||||
swiFaultTest | testPrograms/swiFaultTest.asm | run | - | -
|
||||
|
||||
# ---- Meeting a byte that is not an instruction ----
|
||||
# This one is meant to fault. It checks the CPU stops, says what it found and
|
||||
# where, and exits non zero, rather than stepping over it and carrying on.
|
||||
faultTest | testPrograms/faultTest.asm | run | - | -
|
||||
|
||||
# ---- Programs driven by console input ----
|
||||
inputTest | inputTest.asm | run | inputTest.in | -
|
||||
@@ -48,6 +92,12 @@ replCalculator | replCalculator.asm | run | replCalcu
|
||||
# 3,000,000 cycles is about fourteen generations of the glider, which puts
|
||||
# evolveBoard and its pointer juggling through its paces many times over.
|
||||
16x16Life | gameOfLife/16x16Life.asm | run | - | 3000000
|
||||
# The four pointer rewrite, on the same budget so the two can be compared directly.
|
||||
# Note that this cannot show a speed difference: frameDelay is 255 by 255 and swamps
|
||||
# the simulation, so both versions render the same fourteen generations and produce
|
||||
# identical bytes. What it checks is that the rewrite still evolves the board the same
|
||||
# way, which is what a regression test is for.
|
||||
16x16LifeModern | gameOfLife/16x16LifeModern.asm | run | - | 3000000
|
||||
|
||||
# ---- Libraries: no entry point, so only check that they assemble ----
|
||||
lib-int8 | Libraries/int8.asm | assemble | - | -
|
||||
@@ -55,6 +105,18 @@ lib-int16 | Libraries/int16.asm | assemble | -
|
||||
lib-int32 | Libraries/int32.asm | assemble | - | -
|
||||
lib-math | Libraries/math.asm | assemble | - | -
|
||||
|
||||
# ---- Deliberately broken, to check the assembler still diagnoses them ----
|
||||
# These are not programs anyone meant to run. Each one contains a single mistake
|
||||
# that the assembler used to accept quietly, and is here so that it cannot start
|
||||
# being accepted quietly again.
|
||||
diagDuplicateLabel | testPrograms/diagnostics/duplicateLabel.asm | xfail | - | -
|
||||
diagBareInclude | testPrograms/diagnostics/bareInclude.asm | xfail | - | -
|
||||
diagUnknownVector | testPrograms/diagnostics/unknownVector.asm | xfail | - | -
|
||||
diagDuplicateVector | testPrograms/diagnostics/duplicateVector.asm | xfail | - | -
|
||||
diagBareSWI | testPrograms/diagnostics/bareSWI.asm | xfail | - | -
|
||||
diagAlignOutside | testPrograms/diagnostics/alignOutside.asm | xfail | - | -
|
||||
diagBareAlign | testPrograms/diagnostics/bareAlign.asm | xfail | - | -
|
||||
|
||||
# ---- Known breakages, recorded rather than ignored ----
|
||||
# print.asm branches to 'start', which only the including program defines.
|
||||
lib-print | Libraries/print.asm | xfail | - | -
|
||||
|
||||
Reference in New Issue
Block a user