Skip to content

Commit 083448e

Browse files
committed
RELEASE V1.5
2 parents 5100a7d + 4cefe63 commit 083448e

38 files changed

+5586
-132
lines changed

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ assembler/qasm
1414
assembler/qasm2rom
1515
register_file.sym
1616
emulator/qnice
17+
emulator/qnice-vga
18+
emulator/qnice.js
19+
emulator/qnice.html
20+
emulator/qnice.wasm
21+
emulator/qnice.data
22+
emulator/qnice_disk.img
1723
*.bin
1824
*.lis
1925
*.out

README.md

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,10 @@ Getting Started
2626
---------------
2727

2828
If you do have FPGA hardware, then read on to learn how to get started. If
29-
you don't, then you might want to use the emulator to experience QNICE.
30-
31-
Switch to the [VGA Emulator Branch](https://github.com/sy2002/QNICE-FPGA/tree/develop-vga-emu)
32-
to use the emulator without hardware and have a look at the README.md in
33-
that branch to learn more.
29+
you don't, then you might want to use the emulator to experience QNICE:
30+
[Try it online](https://qnice-fpga.com/emulator.html) or have a look at
31+
[emulator/README.md](emulator/README.md) to learn how to build and run your
32+
own emulator.
3433

3534
Get started using actual FPGA hardware:
3635

@@ -45,7 +44,8 @@ Get started using actual FPGA hardware:
4544
the fact, that there is an underlying git repository.)
4645

4746
* Hardware: Currently, we develop QNICE-FPGA on a Nexys 4 DDR development
48-
board, so if you own one, the fastest way of getting started is to
47+
board. Nexys updated and renamed it to Nexys A7.
48+
So, if you own one of those, the fastest way of getting started is to
4949
download the bitstream file `dist_kit/qnice-v141.bit` on a microSD card or
5050
a USB stick, insert it into the Nexys board and set the jumpers to read the
5151
FPGA configuration from the SD card or USB stick. Do not copy more than one
@@ -54,7 +54,7 @@ Get started using actual FPGA hardware:
5454
copies, so that the Nexys board does not accidentally read the `*.bit` from
5555
your trash instead of the recent one.
5656

57-
* If you do not own a Nexys 4 DDR board, then use your VHDL development
57+
* If you do not own a Nexys 4 DDR or A7 board, then use your VHDL development
5858
environment to synthesize QNICE-FPGA. The root file for the system
5959
is `vhdl/env1.vhdl`. Make sure that you connect at least the IO pins
6060
for PS2, VGA, UART and the two switches. In the file `nexys4ddr/env1.ucf`
@@ -303,10 +303,12 @@ Acknowledgements
303303
304304
* [sy2002](http://www.sy2002.de): Creator and maintainer of QNICE-FPGA:
305305
hardware development (VHDL), FAT32 library, additional Monitor libraries and
306-
functions, Q-TRIS, additional QNICE specific vbcc toolchain.
306+
functions, Q-TRIS, additional QNICE specific vbcc toolchain,
307+
VGA and WebAssembly versions of the emulator.
307308
308309
* [vaxman](http://www.vaxman.de): Inventor of the [QNICE ISA](http://qnice.sourceforge.net):
309-
system architect, assembler, emulator, Monitor and Monitor libraries, tools.
310+
system architect, assembler, original POSIX version of the emulator,
311+
Monitor and Monitor libraries, tools.
310312
311313
* [Volker Barthelmann](http://www.compilers.de): vbcc compiler system,
312314
QNICE specific vbcc backend incl. standard C library.

TODO.txt

Lines changed: 43 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -102,17 +102,52 @@ ASSEMBLER STANDARD LIBs (WITHIN MONITOR):
102102

103103
EMULATOR:
104104

105-
* Emulate the VGA output and the USB keyboard (maybe using something like
106-
LIBSDL? SFML? GLFW?). Optimally, the whole thing would by totally
107-
dynamically loaded so that the emulator continues to run on text only
108-
systems and on systems that don't have a multimedia library installed.
109-
If this does not work, then we should just work with #defines within
110-
the Emulator's code and compile two versions, like "qnice" and "qnice_vga".
105+
* Use defines from ../dist_kit/sysdef.h instead of redefining them in qnice.c
106+
107+
* Test, if compilation and running works under Linux (e.g. Ubuntu)
108+
109+
* Test, if compilation and running works under Windows
110+
111+
* Emulate all VGA register commands
112+
113+
* WASM: Investigate if switching the WebGL context to high performance mode
114+
makes sense; currently we run on the low performance mode on most browsers,
115+
which means on Mac Books that the low performance GPU is used. Currently it
116+
looks like this works absolutely well enough, but nevertheless investigating
117+
this topic might be worth a try.
118+
+ Reference Emscripten Changelog.md: 1.39.9 searcch for #10505
119+
+ https://www.khronos.org/registry/webgl/specs/latest/1.0/
120+
and search for "powerPreference"
121+
122+
* macOS only: Make file option for creating a installable/clickable Mac
123+
executable (learn how to do that first and also how to sign). Maybe the
124+
demo disk image from qnice-fpga.com should also be mounted there by default
125+
(but still other images should be mountable, too)
126+
127+
* U.S. keyboard support
128+
129+
* Homogeneous code style like vaxmans original style
130+
(pointers, indentation, etc.) => try to find and use a coding style
131+
modification tool and throughly check that no bugs are introduced
132+
133+
* Better support for window resizing: offer some presets incl. aspect ratios
134+
(see above) using Q> commands and maybe additionally also using ALT+<key>
135+
combinations or a small "windowed menu" building on the speed regulator
136+
window "system" . Optionally, as a bonus: Research menu items in SDL and
137+
offer this via menus (seems to need very platformm specific code;
138+
plugins/open source available?)
139+
140+
* Improve the Full Screen mode by allowing various aspect ratios such as
141+
1.8:1 which is optimal for Q-TRIS, or standards like 4:3 and 16:9.
142+
143+
* Support High-DPI Mode (needs to be signed on Mac?)
111144

112145

113146
NATIVE TOOLCHAIN: ASSEMBLER:
114147

115-
<currently no TODOs>
148+
* Get rid of hardcoded gcc in the assembler/asm script for precompiling.
149+
Use tools/detect.include. But this needs thorough testing, if for example
150+
the precompiler invokation works the same in clang vs. gcc.
116151

117152

118153
VBCC TOOLCHAIN: C COMPILER:
@@ -156,7 +191,7 @@ DEMOS:
156191

157192
* Forth Interpreter
158193

159-
* VGA Textmode games: Snake, Pac Man, 2048
194+
* VGA Textmode games: BreakOut, Snake, Pac Man, 2048
160195

161196

162197
DOCUMENTATION:

VERSIONS.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
Version 1.5 March, 22 2020
2+
==============================
3+
4+
This version greatly enhances the capabilities and the stability of the
5+
emulator. Detailed description: emulator/README.md
6+
7+
* qnice-vga: VGA screen and PS/2 keyboard emulation
8+
* qnice-wasm: WebAssembly/WebGL version that runs in the web browser
9+
110
Version 1.41 December, 30 2016
211
=================================
312

doc/emumount.txt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ For macOS:
2424
Here is an example, how you can add the folders "test_programs" and "qbin"
2525
from the QNICE-FPGA root folder to a newly created raw image file.
2626

27-
2827
1. hdiutil create -megabytes 33 -fs MS-DOS -fsargs "-F 32" -volname myimage -srcfolder qbin -srcfolder test_programs -o myimage.dmg
2928

3029
2. hdiutil convert myimage.dmg -format UDTO -o myimage
@@ -35,6 +34,12 @@ IMPORTANT: hdiutil is only able to create FAT32 images, when the size of the
3534
image (the "-megabytes" parameter) is larger than 32, so we use 33 in the
3635
above-mentioned example.
3736

37+
IMPORTANT: In 2016, above-mentioned step (1) worked on my then current macOS
38+
and machine. In 2020, step (1) strangely enough led to 100% CPU usage without
39+
any file being created. Workaround: Remove the two "-srcfolder" statements,
40+
let hdiutil create an empty DMG and then mount it using Finder. Then manually
41+
copy the files you need. Then unmount and proceed with step (2).
42+
3843
Creating a raw image file from an existing device
3944
-------------------------------------------------
4045

@@ -59,7 +64,7 @@ to do it on a Mac:
5964
Mounting a raw image file
6065
-------------------------
6166

62-
Use the new command like parameter -a to mount a far image file:
67+
Use the new command line parameter -a to mount a raw image file:
6368

6469
./qnice -a <raw image file>
6570

@@ -99,3 +104,4 @@ Example of how to do it on a Mac:
99104

100105

101106
written by sy2002 in December 2016
107+
latest update by sy2002 in February 2020

doc/github/vgaemu.jpg

680 KB
Loading

doc/requirements.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Minimum requirements to work with QNICE-FPGA:
2+
3+
* bash
4+
* CC or GCC
5+
* perl
6+
* If you want to synthesize your own bitstream (.bit): Xilinx ISE
7+

0 commit comments

Comments
 (0)