FANCO-16 v9 / ASMODEUS

Type to enter commands; on a touch screen, tap the screen or ⌨. Arrow keys move the guest cursor; Enter runs the current screen line.

dir lists all binaries, dir piano searches, more shows the next page and load 107 loads a program. Reset returns to ASMODEUS. /v9/?load+107 types load 107 and Enter at startup.

Instructions such as mov a, 42 are assembled inside the guest at 1000 and executed with an appended HCF. Numbers are hexadecimal.

All versions and pages · CPU and machine · SIREN sound · Assembler manual · Sources: ASMODEUS, 103, 107 · Fonts: Inter (OFL), IBM Plex Mono (OFL) · Abuse reports: see the maintainer's email on GitHub

Prototype syntax

mov moves a word; movb (or mov.b) moves a byte. Use *$7000 or [$7000] for a memory address, and *x or [x] for the address held in a register. For byte moves, register operands use their low byte. Memory-to-memory moves are not supported. stb $10f, 69 starts the default sound. stb/stw store a byte/word; ldb a, $7000/ldw a, $7000 load one. These accept bare addresses or registers holding addresses. ldb clears the destination register's high byte; movb preserves it.

All existing v9 CPU instructions are available, including byte ALU operations, signed math, all conditional branches, lea, in/out, sleep, blit, and sys load/sys present. Use .lo/.hi for byte registers, and .b/.w for instruction width. Numbers can be signed decimal or hexadecimal with 0x or $.

Memory operands include [x+12], [x-12], [x++], and [--x]. Calls and jumps also accept registers and memory operands. reti is assembled without immediate execution. Use ; for a comment. No labels, expressions or directives yet. See the assembler manual for details.

Branches can bypass the appended HCF. Reset restarts the machine and discards your session. The writable monitor, character cells, and font live in guest RAM.

IRQs stay enabled at the prompt. From Reset, enter these lines for a sawtooth A4 every second (60 BPM). The first line also plays a note immediately; the envelope setup makes it decay to silence. The handler changes no general registers.

stb $10f, 69
reti
stw $105, 8
stw $20, $1000
stw $22, 1

The envelope has a 2 ms attack, 300 ms decay and zero sustain. Use stw $22, 2 for 120 BPM, or stw $22, 0 to stop the timer.