-
Attempting to get a NTSC LCD monitor working
10/27/2017 at 00:36 • 0 commentsSo, I got this NTSC LCD monitor that's for a backup camera on Amazon. It was a good price. It seems to be much fussier regarding the video signals than a CRT. I am still working on the FPGA modifications to get the timing right for the LCD monitor.
I added a 2 pin header to select LCD or CRT.
When I get more progress, I'll post something.
-
CHIP-8 is working
09/19/2017 at 03:13 • 0 commentsI keyed in CHIP-8 from the VIP manual and saved it on the SPI flash. Then I tried a couple of CHIP-8 programs. One of the programs is VIP Space Intercept (pg 43 of the manual). It works quite nicely. I have a picture of it up in the gallery. (I'm using my old Apple IIc monitor this time which is why the long persistence of the phosphor is seen) I also tried VIP Wipe Off (pg 42) which also works.
So, I think my VIP ROM re-write is good because it works with CHIP 8 right from the manual. The SPI flash read and write has also been working well. It is "lightning fast" compared to a cassette tape.
I want to check the I/O ports next and then the standard VIP operations will be complete.
-
UT4 Monitor now co-resident
09/04/2017 at 00:26 • 0 commentsSince I had the old RCA UT4 monitor program working with the MicroVIP for initial testing, I was trying to think of a way of keeping it and maybe having some kind of dual-boot scheme.
Well, I figured out a way. There is a push button on the FPGA card that can be used. I made some changes to the FPGA code to boot the UT4 ROM if the button is pressed when coming out of reset. Otherwise, the MicroVIP ROM will boot.
To use UT4, connect a USB to TTL adapter (3.3V), and TeraTerm with a setting of 300bps 7N1. Hold the push button on the FPGA card (near the programming connector) and flip the run switch to RUN. Press <CR> in TeraTerm and the UT4 prompt (*) will appear.
This is a summary of the 3 commands in UT4:
?Maaaa cc = display cc bytes of memory starting at address aaaa
!Maaaa bb [bb]... = write byte, or several bytes starting at address aaaa
$Paaaa = run a program starting at address aaaa with X,P=R0
Note, my 1802 assembler generates listing files (.lst) that are compatible with UT4. So you just send the list file to UT4 with TeraTerm (Send File...) to load a program.
-
Cassette Tape Replacement with SPI Flash
09/04/2017 at 00:15 • 0 commentsFirst off, thanks to those of you who are following and liking this project. This is my first major Hackaday project and I'm very pleased to see it has some interest. THANKS!
UPDATE:
Well, it took some time, but I got the SPI serial flash (Winbond W25Q128F) working. The hardest part was fitting the software within the same confines as the original VIP ROM. I also kept the subroutines in the second page (#8100) at the same addresses to stay compatible with VIP software like CHIP-8.
This version communicates with the flash chip using a 12.5MHz SPI clock. The data transfer is WAY faster than the 1802 bus cycles. So, no polling is needed for SPI transfers. Port 7 is defined for SPI I/O with the Q line connected to the chip select by setting the bits in the control register (Port 5). This is "lightning fast" compared to a cassette tape and with 2MB of space allocated for VIP files it should be enough. (The rest of the flash space (14MB) is being reserved for a future Tiny BASIC file system)
The Q line driving the chip select caused some issues. It would seem to deassert all by itself. In debugging this, I discovered that the Q line is modified by the video interrupt by the tone timer register (R8.0). Originally I had thought I didn't have to turn the video on and off like the original since I wasn't "bit banging" to a tape. Well, with this discovery, I still need to shut the video off to talk to the flash and turn video back on when done.
The entire 4k RAM of the MicroVIP is stored in one of 512 sectors on the serial flash. A unique "file number" is entered into the keypad like a memory address. Up to 512 programs / memory images can be saved this way. The file number can be thought of as the equivalent to a tape counter number. This number needs to be recorded somewhere in a notebook because there is no directory capability. (Just like the original VIP)
To save a memory image to the flash:
Press and hold C, flip to RUN, release C
Enter the desired 4 digit file number (0000-01FF)
Press the F key.
The image will be written to the serial flash under that file number
The last address and byte will be displayed when it is finished. (0FFF XX)
To load a memory image from the flash:
Press and hold C, flip to RUN, release C
Enter the desired 4 digit file number (0000-01FF)
Press the B key.
The image will be loaded from flash to memory.
The last address and byte will be displayed when it is finished. (0FFF XX)
So now, the MicroVIP works like the original VIP of 1977. The same 4 functions are available in the ROM: Memory Read, Memory Write, Flash Read, Flash Write. And since this is 2017, the cassette tape has been replaced by a massive serial flash device.
-
Basic Operation Complete
08/29/2017 at 03:14 • 0 commentsThe basic MicroVIP is working! Here is the status so far:
First, I built up the basic hardware with the VIP feature set (except for the tape interface). There are some features that can be added later. I got the processor, RAM, ROM going using a modified version of the UT4 monitor. I got things working in ModelSim first. Next, I used a USB to TTL serial adapter (3.3V Prolific) to interact with the computer.
With UT4 and the serial port, I was able to do some basic tests. I wrote simple programs to test the hexadecimal keypad. I also could test the speaker.
From there, I added the VIP ROM and video. With some debugging using ModelSim, I got it working in hardware.
So far, it operates as a standard VIP but with only memory read and write working. The speaker does beep with the Q line. The keypad is functional as well as the video output.
Plans:
Next, I want to get the SPI working to use the serial flash as a tape emulator. I'm using a 16MB serial flash because it's very inexpensive ($5) and easy to acquire. I realize for a 1977 type computer that is a near infinite amount of space. I will also modify the VIP ROM software to use the serial flash.
After that, I want to have CHIP-8 in RAM on power up and recreate some of the projects in the VIP manual.
For the future, I'd like to add a Tiny BASIC and an ASCII keyboard interface
Tools needed:
Quartus II 11sp1 (This is the last one to support the Cyclone II)
Altera ModelSim (comes with Quartus)
USB Blaster (or equivalent) I have a Terasic Blaster
Composite Video monitor
+5V Wall Wart (~1W) to power the Cyclone board
USB to TTL cable (3.3V I/O) I'm using the one from Adafruit