The QNICE Processor Pages

 

Introduction

The QNICE processor is a successor of the NICE processor - it is a 16 bit processor with only 17 instructions and four addressing modes. In addition to this QNICE features a register set of 2056 registers (2048 + 8), a feature which greatly simplifies subroutines and context switches.

QNICE is an ongoing project - its initial phase which ran during 2006 has been completed, so the architecture and instruction will not be subject to changes anymore. The processor design described in the documentation listed below can serve as the starting point of a subsequent implementation in hardware.

Due to some rather personal reasons I will begin a QNICE implementation using mainly TTL circuitry in 2007 while a friend of mine might be able to think about a FPGA-based implementation. :-)

Documentation
Resources
  • A C based emulator for the QNICE architecture may be found as a source file here: qnice.c. The whole simulator consists of only 871 lines of C code and is very portable. Currently it only supports a very simplified UART-simulation allowing the output of characters to stdout from within QNICE machine code.
  • Thanks to Thomas Kratz, there exists a Perl based assembler for the QNICE architecture which is available here (please note that the extension ".pl" has been changed to ".perl" since the webserver will not transmit files ending with ".pl" - the same holds true for ".pm" which has been changed to ".perl_pm"):
    • qcmd.perl: The command line interface to the assmbler. If called without arguments it will print some explanatory lines. A normal assembly will look like this:

                  perl qcmd.pl -s test.asm -b test.bin -l test.lis
                 

    • qnice.perl_pm: The assembler itself as a Perl module which is used by qcmd.pl mentioned above.
    • If you are running Windows, you might want to use this completely packaged stand alone assembler which does not even require a locally installed Perl on your machine: QCMD.EXE
  • Some sample programs:
    • sum.asm: Calculate the sum of all integers between 1 and 0x1000.
    • iotest4.asm: A rather sketchy collection of i/o routines (currently only output) which might serve as a starting point for writing a simple monitor system for QNICE.

ulmann@vaxman.de

webmaster@vaxman.de

04-JAN-2007