fixator / vector06cc Goto Github PK
View Code? Open in Web Editor NEWAutomatically exported from code.google.com/p/vector06cc
License: Other
Automatically exported from code.google.com/p/vector06cc
License: Other
VECTOR-06C FPGA REPLICA ~~~~~~~~~~~~~~~~~~~~~~~ This project is an attempt to replicate Vector-06C, a Soviet-era home computer, in FPGA. The primary hardware platform for this project is Altera DE1 development board. CONTENTS * Features * DE1 Thingies * DE1 SRAM Mapping and Starter Kit Utility * Known Problems * Known ROMs That Have Issues * Acknowledgements Features ~~~~~~~~ The following features are implemented: - CPU - Perfect timings matching the original machine in every detail - SRAM is used for everything - 8253 timer - tape i/o (and beeper) - all internal stuff, video modes, palette - PS/2 keyboard - 256K RAM disk - DE1 JTAG interface to JTAG USB API program - Colour composite TV signal output (PAL) DE1 Thingies ~~~~~~~~~~~~ Enjoy the generous blinkenlights from Terasic and svofski! It is important to have switches SW8 and SW9 in "1" position (up). This enables proper CPU clocking. Other switches just change the blinken pattern and only important when you're debugging. KEY0 is master reset, somewhat like BLK+VVOD. KEY1 is manual clock for CPU. Useful only for hardcore debugging. KEY3 is same as BLK+SBR: boot ROM is disabled, RST0 is executed. If KEY3 is held pressed when KEY0 is being pressed, or when Vector-06C image is being programmed into FPGA, boot ROM doesn't work at all. This is useful if you want to preserve SRAM content. DE1 SRAM Mapping ~~~~~~~~~~~~~~~~ DE1 SRAM is addressed by word. This is mapped linearly into bytes, so programs can be uploaded with CII Starter Kit Control Panel software without any modifications. However, addresses should be minded. Normally a .rom file goes to address 0x0100. Translated into word-address, that becomes 0x0080. So when uploading a .rom file to Vector, enter "80" in the SRAM page, "Sequential Write" box. Similarly, RAM disk pages start after first 64K, which is 0x10000, or 0x8000 in words. So, for uploading RAM disk images, use address "8000". RAM disk images can be read Starter Kit Control Panel software and re-uploaded later or used with an emulator as .edd files. Known Problems ~~~~~~~~~~~~~~ 1. Keyboard input gets stuck when some of the ":()*@" characters are entered. This is a problem with PS/2 -> Vector keyboard key/char mapping. I tried to make it as much PS/2 as possible. But since some characters shift/key combination differ, there's more than one direct mapping and this mapping gets stuck. Workaround: always carefully press SHIFT, then ":", then release ":", then release SHIFT. If input gets stuck, unstick it by carefully pressing same character again. Known ROMs That Have Issues ~~~~~~~~~~~~~~~~~~~~~~~~~~~ None. Acknowledgements ~~~~~~~~~~~~~~~~ This project uses work of different people. T80 CPU by Daniel Wallner with fixes from MikeJ of www.fpgaarcade.com is used for KR580WM80A. The code is modified in attempt to make this otherwise excellent CPU cycle-compatible with i8080 and to implement STACK signal in PSW. 82C55 code by MikeJ of www.fpgaarcade.com is used without any modifications. DE1-specific code uses, or may be based upon, samples from Altera DE1 package. Initial 2K bootloader code by Alexander Timoshenko et al. Special thanks to Alexander Timoshenko for documentation and general information about Vector-06C, Dmitry Tselikov for hints and good reference emulator, Roman Panteleev and Artem Navalon for ve27a with debugger. $Id$ Viacheslav Slavinsky http://sensi.org/~svo http://sensi.org/~svo/vector06c
It's permanently in "FF" mode
Original issue reported on code.google.com by [email protected]
on 24 Jan 2008 at 9:57
After displaying animated logo (TEHb), it hangs, permanently looping around
location $0538
Original issue reported on code.google.com by [email protected]
on 28 Jan 2008 at 12:09
When in RUS input mode, the user has to seek for individual keys: russian
characters are effectively arranged in ЯВЕРТЫ mode instead of proper
JCUKEN
layout.
Original issue reported on code.google.com by [email protected]
on 10 Jan 2008 at 4:09
Exolon seems to exercise BCD mode...
Original issue reported on code.google.com by [email protected]
on 17 Jan 2008 at 9:38
EXOLON would show title screen, play music but will not accept keyboard
input for starting the game. Also, border would flicker.
Earlier versions flickered the border as well but keyboard was ok. This can
be the timing issue related to the exact moment when retrace IRQ signal is
generated. However, this moment is verified with M@COLOR demo and should be
quite precise.
Original issue reported on code.google.com by [email protected]
on 17 Dec 2007 at 8:41
potential source of confusion, should be fixed
Original issue reported on code.google.com by [email protected]
on 10 Jan 2008 at 12:53
AY-3 is used by some games and most demos..
Original issue reported on code.google.com by [email protected]
on 18 Dec 2007 at 12:05
Presently the FDC CPU is wasting a lot of time doing nothing but relaying
bytes from SPI data register into the memory buffer. This operation can
easily be implemented in hardware, saving a lot of time.
Original issue reported on code.google.com by [email protected]
on 17 Jan 2008 at 4:31
This may be necessary for some programs that try to detect the presence of
AY.
Original issue reported on code.google.com by [email protected]
on 17 Jan 2008 at 2:20
Underscore can be entered by pressing Shift+Backspace, which is okay but
the awesome way to enter underscore is by pressing Shift+-
Reverse single quote can't be entered.
Tilde character can't be entered.
Original issue reported on code.google.com by [email protected]
on 22 Feb 2008 at 10:30
The original seems to be a latch, reset by nINTE. It shall never occur when
interrupts are disabled. Timing, too.
Original issue reported on code.google.com by [email protected]
on 24 Jan 2008 at 5:27
AX8 core can be used to implement SD card and FAT16 functionality.
Original issue reported on code.google.com by [email protected]
on 18 Dec 2007 at 12:06
ditto
Original issue reported on code.google.com by [email protected]
on 29 Jan 2008 at 11:55
Floppy drives used to be write-enabled.
Original issue reported on code.google.com by [email protected]
on 18 Jan 2008 at 10:14
Probably an OSD-style display like in Minimig.
Fully transparent operation is not necessary, although there seems to be no
obstacles for that.
Variant 1: implement a mini-framebuffer in another SRAM page
Variant 2: implement a character display
It is possible that a character display can be squeezed entirely into M4K:
Minimal character ROM is e.g. 48 characters @ 5 pixels wide (M4K can be
organized in 5-bit wide blocks), 5 pixels high -> 48*5*5 = 1200 bits. This
is probably more economical than doing a similar thing in software.
Original issue reported on code.google.com by [email protected]
on 11 Jan 2008 at 2:22
DE1 has no SD card presence signal. In order to maintain NOTREADY bit, it
should be polled continuously. It should be relatively easy to implement in
the software part.
Original issue reported on code.google.com by [email protected]
on 8 Feb 2008 at 1:17
Compile the project in QII 8.0 WE (sp1)
Try running SkyNet demo: it shows black screen and hangs forever. Same
compiled in 7.1 works flawlessly.
Original issue reported on code.google.com by [email protected]
on 25 Aug 2008 at 11:01
Currently when SRAM is accessed by JTAG, CPU may receive completely wrong
data thus crashing the program. Bus hold should be used to suspend the CPU
during JTAG access.
Original issue reported on code.google.com by [email protected]
on 17 Dec 2007 at 8:39
kon.fdd -- it hangs up
Original issue reported on code.google.com by [email protected]
on 24 Jan 2008 at 9:56
The code for telling VM1 from 8080, as proposed by S.E.S. in "Scaner 5":
lxi h, 0020h
push h
pop psw
push psw
pop h
mvi a, 20h
ana l
jz i8080
vm1:
; vm1
i8080:
; 8080
Original issue reported on code.google.com by [email protected]
on 17 Jan 2008 at 2:09
test code:
mvi a,7
out 15
mvi a,3f
out 14
in 14
; a should contain 3f
Original issue reported on code.google.com by [email protected]
on 28 Jan 2008 at 10:10
Allegedly it's a timer readback problem in the 8253 module.
SSTV software: http://www.sensi.org/~svo/scalar/ware/631/
Original issue reported on code.google.com by [email protected]
on 2 Feb 2009 at 4:13
Work with SDRAM at 120 MHz needs tuning
Original issue reported on code.google.com by ivagorRetrocomp
on 16 Feb 2014 at 3:03
Quartus 6.1, 7.0 produce snowy picture, weird palette.
Quartus 7.1, 7.2 work fine.
Probably palette_ram module can be investigated and different options
tried. For example, it could be converted into a single-clock
non-jtag-accessible unit.
Original issue reported on code.google.com by [email protected]
on 24 Dec 2007 at 2:35
Some plucky sounds can be heard thoroughout the demo. Emulators have strange
sounds too, but in the emulators they appear more regular.
Original issue reported on code.google.com by [email protected]
on 8 Mar 2011 at 2:00
There are some minor differences between 8080 from Z80 that were used to
tell one CPU from another. It is probable that T80 still has some Z80-ish
behaviour even in 8080 mode.
Original issue reported on code.google.com by [email protected]
on 14 Jan 2008 at 12:08
One more question, please.
If it is possible - how to program this wxeda board to boot uploaded firmaware
instead of the default one?
I mean - when i program it via JTAG - everything is ok until i power off the
board. And then the default firmware starts after powering on.
Some sources said that it is impossible, others said it is impossible to do via
JTAG, but possible programming a flash chip on the board... But i have no ideas
if such chip is exists on wxeda board.
Perfectly to have a possibility to load firmware from the SD card, like
Speccy2010 does. But it's seems an initial boot process there initiated by
microcontroller and wxeda board don't have such.
Ideas are welcome! :)
Original issue reported on code.google.com by [email protected]
on 16 Aug 2014 at 5:45
Or at least there's something that prevents ladconf.com from writing
ladder.com config. Debug console is full of STEP commands.
Original issue reported on code.google.com by [email protected]
on 9 Feb 2008 at 2:32
SD card seems doesn't work (at least for me) on the WXEDA board.
1. I just soldered sd card adapter like described here:
http://zx-pk.ru/showthread.php?t=8635&page=31
pin 1 to SD_DAT3
pin 2 to SD_CMD
pin 3 to GND
pin 4 to 3v3
pin 5 to SD_CLK
pin 6 to GND
pin 7 to SD_DAT
pin 8 - N/C
pin 9 - N/C
2. Added lines to code:
set_location_assignment PIN_3 -to SD_DAT3
set_location_assignment PIN_2 -to SD_CMD
set_location_assignment PIN_1 -to SD_CLK
set_location_assignment PIN_141 -to SD_DAT
3. Formatted SD card to fat16
4. Created a VECTOR06 directory with a few *.fdd files
5. When powering wxeda board, i see D5 and D2 blinking, while D4, D3 and D1
continuous on.
When toggling "Scroll Lock" i see a message "INSERT CARD".
Navigation in the menu doesn't work (it always rolling back to DISK menu entry)
In the serial terminal i see just
@
VECTOR-06C FPGA REPLICA
(C)2008-14 VIACHESLAV SLAVINSKY@
;) Please help me debug SD card access. I have ability to use a logic analyzer
to test SPI communications between FPGA and SD card. Probably my SD card is too
slow or something like that.
Original issue reported on code.google.com by [email protected]
on 16 Aug 2014 at 10:54
The "TV" screen part shows black display while it's obvious that it's ought
to be colourful..
The following code:
wire [3:0] paletteram_adr = (retrace|video_palette_wren) ?
video_border_index : coloridx;
gives unjust priority to video_palette_wren for video address selection.
It appears that in the real Vector, there was no such priority and out $0c
would just program whatever colour is currently being displayed. Removing
video_palette_wren also fixes the looks of Black Ice demo.
Original issue reported on code.google.com by [email protected]
on 14 Jan 2008 at 7:28
Depending on the initial state of startup disk, it may create a new hiscore
table, or find/use existing one. Apparently, some clash in fdd emulation
causes code corruption in the game file itself. When run for the second
time, VETKA.COM would start in super-complex mode, attempt to enter
Keyboard menu will hang.
Brief examination shows that memory area around address $2800 is zeroed,
instead of having meaningful code which can be observed if VETKA.COM runs
properly.
Original issue reported on code.google.com by [email protected]
on 29 Aug 2008 at 10:06
A000 must not be 00, it can be any user index.
Original issue reported on code.google.com by [email protected]
on 15 Jan 2008 at 2:01
A timer value will always read as 0 when latched.
Also, if timer operates in lsb-only mode, latch would want to push out 2
values anyway (although this seems to be unimportant).
Original issue reported on code.google.com by [email protected]
on 15 Jan 2008 at 1:52
T80 has it strictly Z80 way: (4,3,4,3,5)
8080 must have: (4,3,3,3,5)
Original issue reported on code.google.com by [email protected]
on 21 Jan 2008 at 12:34
It's seems some references in the vector06cc.qsf are missing, such as:
1) set_global_assignment -name SLD_FILE
"D:/users/svo/projects/chinese-fpga-borat/0-example_test_nios/stp_auto_stripped.
stp" (absolute reference to missing file)
2) set_global_assignment -name QIP_FILE src/wxeda/colorclock.qip (no such file
in the repository)
3) set_global_assignment -name QIP_FILE src/video/multadd.qip (no such file in
the repository)
Could you please fix it ?
Original issue reported on code.google.com by [email protected]
on 14 Aug 2014 at 8:52
Asynchronous SRAM is nice, but many development boards don't have SRAM at all.
Original issue reported on code.google.com by [email protected]
on 19 Dec 2007 at 4:21
[deleted issue]
Use PASCAL80.FDD
start P80 TEST
-> it fails after first pass
If the compiler is copied to EDD first, it completes the pass but only with
variable success if disk write operations are involved.
Original issue reported on code.google.com by [email protected]
on 1 Sep 2008 at 11:11
Depending on the key being pressed, screen scroll position changes.
This happens because this program does not reset the value on the port 3
after keyboard scan is complete. Allegedly, this was not entirely necessary
because the 8255 is supposed to clear its output on mode change.
See this faq on Intel site:
http://www.intel.com/design/archives/periphrl/docs/7190.htm
Original issue reported on code.google.com by [email protected]
on 29 Jan 2008 at 9:30
The only way to press БЛК+ВВОД now is by hitting KEY0 on the dev board,
which is slightly different fromt he original where the computer could be
reset into ROM bootloader from the keyboard.
F11 is a suitable key for that.
Original issue reported on code.google.com by [email protected]
on 18 Dec 2007 at 9:05
Now if compiled without floppy, MicroDOS loaded from ramdisk would wait
forever after displaying initial message.
Original issue reported on code.google.com by [email protected]
on 3 Feb 2008 at 1:25
After big words saying "PRESENTS SPECIAL FOR DEMOSFAN", before the big
banner picture must appear, the demo hangs into permanent black screen. The
CPU may be left in indefinite state, often running obscure pieces in high
memory area.
Original issue reported on code.google.com by [email protected]
on 13 Jan 2008 at 1:09
Now it's not possible to load ROM files from an SD card.
Original issue reported on code.google.com by [email protected]
on 31 Jan 2008 at 1:47
What steps will reproduce the problem?
1.
2.
3.
What is the expected output? What do you see instead?
Please use labels and text to provide additional information.
Original issue reported on code.google.com by [email protected]
on 18 Jan 2008 at 10:11
It's becoming hard to navigate. Now when there will also be .ROM files,
that would become really crowded.
Original issue reported on code.google.com by [email protected]
on 31 Jan 2008 at 1:48
If SHIFT, ":" are pressed, then SHIFT released earlier than ":", the
keyboard controller will get stuck.
It is possible to unstuck the input by carefully pressing SHIFT+: and then
releasing :, then SHIFT. Similar problem exists for some other shifted keys.
Original issue reported on code.google.com by [email protected]
on 17 Dec 2007 at 8:37
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.