FPGA TS2068
12 messages · 2015-11-10 → 2016-05-16 · Yahoo Group era · View archive on archive.org
Participants: jburrell7, Jeff Burrell, Eduardo Fuentes, Louis Florit, Adam Trionfo, david
Preserved from the Timex/Sinclair 2068 Yahoo Group (2001–2019), which is no longer online. Text reproduced from the archive.org archive; email addresses masked.
Messages
1. FPGA TS2068
jburrell7 · 10 Nov 2015 09:32:10 -
I have a working version of a TS2068 residing on a Terasic DE1 board. The hardware consists of:
512KB of SRAM, 4MB of flash, 8MB of SDRAM, TS2068 video with an additional 64 column mode with full attributes, sound (thanks to Mike Stirling's spectrum emulator), a 80X25 text mode terminal (thanks to Grant Searle's Multicomp), and an SD card interface (again, thanks to Grant).
The MAIN and EXROM code resides in the flash and the SRAM is being used for program storage. The TS video is in a 16K dual port RAM internal to the FPGA, so there is no contention between the video and the Z80. This may be a problem for some software that relies on the pausing of the Z80 when the video is being accessed.
So far only the most basic of functionality is working, but I can enter a simple program via a PS2 keyboard and the emulator seems to be responding properly. I have not yet tried accessing the SDRAM, but the flash and SRAM interfaces seem to be working well. I decided not to implement the original banking scheme since it is rather convoluted. Instead all of the TS banks (main, dock and EXROM) have eight 16 bit chunk registers that form the upper address bits to allow accessing the full 12.5MB+ of memory space.
I am trying to decide the best way of implementing the SD card as a drive. I would like to use FAT16, but I have found out that the default cluster size for a 2GB card is 32K which is really wasteful. Any suggestions here would be welcomed.
At some point I would like to add a RTC, ethernet, and second VGA port for dual monitor capability. First, though, is to get the basic functionality working.
I am out of town right now, but I can post some photos next week if anyone wants to see them.
2. Re: [ts2068] FPGA TS2068
Louis Florit · Tue, 10 Nov 2015 14:48
Wow, this is really neat work. How much time did you spend to get this
done? You would have enough space on a SD card to load every single
application ever written for the TS2068...
On Tue, Nov 10, 2015 at 9:32 AM, [email] [ts2068] <
[email]> wrote:
>
>
> I have a working version of a TS2068 residing on a Terasic DE1 board. The
> hardware consists of:
>
> 512KB of SRAM, 4MB of flash, 8MB of SDRAM, TS2068 video with an additional
> 64 column mode with full attributes, sound (thanks to Mike Stirling's
> spectrum emulator), a 80X25 text mode terminal (thanks to Grant Searle's
> Multicomp), and an SD card interface (again, thanks to Grant).
>
>
> The MAIN and EXROM code resides in the flash and the SRAM is being used
> for program storage. The TS video is in a 16K dual port RAM internal to the
> FPGA, so there is no contention between the video and the Z80. This may be
> a problem for some software that relies on the pausing of the Z80 when the
> video is being accessed.
>
>
> So far only the most basic of functionality is working, but I can enter a
> simple program via a PS2 keyboard and the emulator seems to be responding
> properly. I have not yet tried accessing the SDRAM, but the flash and SRAM
> interfaces seem to be working well. I decided not to implement the original
> banking scheme since it is rather convoluted. Instead all of the TS banks
> (main, dock and EXROM) have eight 16 bit chunk registers that form the
> upper address bits to allow accessing the full 12.5MB+ of memory space.
>
>
> I am trying to decide the best way of implementing the SD card as a drive.
> I would like to use FAT16, but I have found out that the default cluster
> size for a 2GB card is 32K which is really wasteful. Any suggestions here
> would be welcomed.
>
>
> At some point I would like to add a RTC, ethernet, and second VGA port for
> dual monitor capability. First, though, is to get the basic functionality
> working.
>
>
> I am out of town right now, but I can post some photos next week if anyone
> wants to see them.
>
>
>
>
--
Louis Florit - :(){ :|:& };:
3. Re: [ts2068] FPGA TS2068
jburrell7 · 10 Nov 2015 15:00:47 -
I have been plunking away at this for about 3 years, but have not had any time to get it all working until now. I started from scratch and got it coded and working in about a week.
4. Re: FPGA TS2068
jburrell7 · 04 May 2016 09:51:59 -
I have not been able to give this project all of the attention I would like, but I now have a program running on my Windows 7 PC that allows loading and saving standard TAP/TZX files to/from my FPGA using a 56.7K serial link. I tried 115.2K but the FPGA could not keep up. I am not sure where the problem is because 115.2K should (just) meet the timing with a 3.528MHz clock. In any case, the upload/download is plenty fast enough for my needs at the moment (9K bytes in about 4 seconds).
I did this my modifying the EXROM to hijack the low level R_TAPE and W_TAPE subroutines that in/output the pulses to the tape. Unfortunately, this method will only work for files saved as standard TAP files, so programs using special loaders will not be usable. Besides, I am not too enamoured with the tectonic speed of tape loads and saves.
This method will not work with a stock 2068 because I have moved the new EXROM to my bankswitched RAM to minimize changes to the EXROM and allow for dedicated serial buffers. Once I am more comfortable with how the EXROM and HOME banks interact, I will try removing this restriction by burning the code into ROM and banking in the necessary buffer memory.
More debugging will be needed because the MERGE function (and I suppose VERIFY as well) is broken. The result of trying to MERGE is interesting, but causes the machine to crash.
I have been able to run the PD.TXZ, BASIC64.TAP, Zeus Assembler, and Psion Flight Simulator. Flight Simulator does not want to respond to the arrow keys to turn the airplane, so I think more work will be needed on the FPGA. I tried loading Frogger but it terminates after the first section is loaded. Trashman loads the sign-on screen, but then crashes when the loader is loading. Obviously, more work will be needed.
The next steps will be to:
1. Debug the MERGE problem. I think I will disable verify since the serial routines are fairly robust and minimize the possibility of garbage being saved to the pseudotapes.
2. Flash the modified EXROM so I don't need to keep downloading it.
3. Modify a spectrum 48K ROM to use the new serial tape routines and add it to the boot list.
4. Add ULAPlus functionality for better video modes (https://sites.google.com/site/ulaplus/home)
5. Look into adding OpenSE basic to the boot screen.
6. Add an option on the boot screen to load DOCK files from the pseudo tapes and start to them.
Eventually, I want to get a PCB made to allow interfacing joysticks and other peripherals.
5. Re: [ts2068] Re: FPGA TS2068
Eduardo Fuentes · Sat, 7 May 2016 23:35:
Very good work!!!Keep going.Do you have some pictures?
De: "[email] [ts2068]" <[email]>
Para: [email]
Enviado: Miércoles, 4 de mayo, 2016 13:51:59
Asunto: [ts2068] Re: FPGA TS2068
I have not been able to give this project all of the attention I would like, but I now have a program running on my Windows 7 PC that allows loading and saving standard TAP/TZX files to/from my FPGA using a 56.7K serial link. I tried 115.2K but the FPGA could not keep up. I am not sure where the problem is because 115.2K should (just) meet the timing with a 3.528MHz clock. In any case, the upload/download is plenty fast enough for my needs at the moment (9K bytes in about 4 seconds).
I did this my modifying the EXROM to hijack the low level R_TAPE and W_TAPE subroutines that in/output the pulses to the tape. Unfortunately, this method will only work for files saved as standard TAP files, so programs using special loaders will not be usable. Besides, I am not too enamoured with the tectonic speed of tape loads and saves.
This method will not work with a stock 2068 because I have moved the new EXROM to my bankswitched RAM to minimize changes to the EXROM and allow for dedicated serial buffers. Once I am more comfortable with how the EXROM and HOME banks interact, I will try removing this restriction by burning the code into ROM and banking in the necessary buffer memory.
More debugging will be needed because the MERGE function (and I suppose VERIFY as well) is broken. The result of trying to MERGE is interesting, but causes the machine to crash.
I have been able to run the PD.TXZ, BASIC64.TAP, Zeus Assembler, and Psion Flight Simulator. Flight Simulator does not want to respond to the arrow keys to turn the airplane, so I think more work will be needed on the FPGA. I tried loading Frogger but it terminates after the first section is loaded. Trashman loads the sign-on screen, but then crashes when the loader is loading. Obviously, more work will be needed.
The next steps will be to:1. Debug the MERGE problem. I think I will disable verify since the serial routines are fairly robust and minimize the possibility of garbage being saved to the pseudotapes.2. Flash the modified EXROM so I don't need to keep downloading it.3. Modify a spectrum 48K ROM to use the new serial tape routines and add it to the boot list.4. Add ULAPlus functionality for better video modes (https://sites.google.com/site/ulaplus/home)5. Look into adding OpenSE basic to the boot screen.6. Add an option on the boot screen to load DOCK files from the pseudo tapes and start to them.
Eventually, I want to get a PCB made to allow interfacing joysticks and other peripherals.
#yiv0191755908 -- #yiv0191755908ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv0191755908 #yiv0191755908ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv0191755908 #yiv0191755908ygrp-mkp #yiv0191755908hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv0191755908 #yiv0191755908ygrp-mkp #yiv0191755908ads {margin-bottom:10px;}#yiv0191755908 #yiv0191755908ygrp-mkp .yiv0191755908ad {padding:0 0;}#yiv0191755908 #yiv0191755908ygrp-mkp .yiv0191755908ad p {margin:0;}#yiv0191755908 #yiv0191755908ygrp-mkp .yiv0191755908ad a {color:#0000ff;text-decoration:none;}#yiv0191755908 #yiv0191755908ygrp-sponsor #yiv0191755908ygrp-lc {font-family:Arial;}#yiv0191755908 #yiv0191755908ygrp-sponsor #yiv0191755908ygrp-lc #yiv0191755908hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv0191755908 #yiv0191755908ygrp-sponsor #yiv0191755908ygrp-lc .yiv0191755908ad {margin-bottom:10px;padding:0 0;}#yiv0191755908 #yiv0191755908actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv0191755908 #yiv0191755908activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv0191755908 #yiv0191755908activity span {font-weight:700;}#yiv0191755908 #yiv0191755908activity span:first-child {text-transform:uppercase;}#yiv0191755908 #yiv0191755908activity span a {color:#5085b6;text-decoration:none;}#yiv0191755908 #yiv0191755908activity span span {color:#ff7900;}#yiv0191755908 #yiv0191755908activity span .yiv0191755908underline {text-decoration:underline;}#yiv0191755908 .yiv0191755908attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv0191755908 .yiv0191755908attach div a {text-decoration:none;}#yiv0191755908 .yiv0191755908attach img {border:none;padding-right:5px;}#yiv0191755908 .yiv0191755908attach label {display:block;margin-bottom:5px;}#yiv0191755908 .yiv0191755908attach label a {text-decoration:none;}#yiv0191755908 blockquote {margin:0 0 0 4px;}#yiv0191755908 .yiv0191755908bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv0191755908 .yiv0191755908bold a {text-decoration:none;}#yiv0191755908 dd.yiv0191755908last p a {font-family:Verdana;font-weight:700;}#yiv0191755908 dd.yiv0191755908last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv0191755908 dd.yiv0191755908last p span.yiv0191755908yshortcuts {margin-right:0;}#yiv0191755908 div.yiv0191755908attach-table div div a {text-decoration:none;}#yiv0191755908 div.yiv0191755908attach-table {width:400px;}#yiv0191755908 div.yiv0191755908file-title a, #yiv0191755908 div.yiv0191755908file-title a:active, #yiv0191755908 div.yiv0191755908file-title a:hover, #yiv0191755908 div.yiv0191755908file-title a:visited {text-decoration:none;}#yiv0191755908 div.yiv0191755908photo-title a, #yiv0191755908 div.yiv0191755908photo-title a:active, #yiv0191755908 div.yiv0191755908photo-title a:hover, #yiv0191755908 div.yiv0191755908photo-title a:visited {text-decoration:none;}#yiv0191755908 div#yiv0191755908ygrp-mlmsg #yiv0191755908ygrp-msg p a span.yiv0191755908yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv0191755908 .yiv0191755908green {color:#628c2a;}#yiv0191755908 .yiv0191755908MsoNormal {margin:0 0 0 0;}#yiv0191755908 o {font-size:0;}#yiv0191755908 #yiv0191755908photos div {float:left;width:72px;}#yiv0191755908 #yiv0191755908photos div div {border:1px solid #666666;height:62px;overflow:hidden;width:62px;}#yiv0191755908 #yiv0191755908photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv0191755908 #yiv0191755908reco-category {font-size:77%;}#yiv0191755908 #yiv0191755908reco-desc {font-size:77%;}#yiv0191755908 .yiv0191755908replbq {margin:4px;}#yiv0191755908 #yiv0191755908ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv0191755908 #yiv0191755908ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv0191755908 #yiv0191755908ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv0191755908 #yiv0191755908ygrp-mlmsg select, #yiv0191755908 input, #yiv0191755908 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv0191755908 #yiv0191755908ygrp-mlmsg pre, #yiv0191755908 code {font:115% monospace;}#yiv0191755908 #yiv0191755908ygrp-mlmsg * {line-height:1.22em;}#yiv0191755908 #yiv0191755908ygrp-mlmsg #yiv0191755908logo {padding-bottom:10px;}#yiv0191755908 #yiv0191755908ygrp-msg p a {font-family:Verdana;}#yiv0191755908 #yiv0191755908ygrp-msg p#yiv0191755908attach-count span {color:#1E66AE;font-weight:700;}#yiv0191755908 #yiv0191755908ygrp-reco #yiv0191755908reco-head {color:#ff7900;font-weight:700;}#yiv0191755908 #yiv0191755908ygrp-reco {margin-bottom:20px;padding:0px;}#yiv0191755908 #yiv0191755908ygrp-sponsor #yiv0191755908ov li a {font-size:130%;text-decoration:none;}#yiv0191755908 #yiv0191755908ygrp-sponsor #yiv0191755908ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv0191755908 #yiv0191755908ygrp-sponsor #yiv0191755908ov ul {margin:0;padding:0 0 0 8px;}#yiv0191755908 #yiv0191755908ygrp-text {font-family:Georgia;}#yiv0191755908 #yiv0191755908ygrp-text p {margin:0 0 1em 0;}#yiv0191755908 #yiv0191755908ygrp-text tt {font-size:120%;}#yiv0191755908 #yiv0191755908ygrp-vital ul li:last-child {border-right:none !important;}#yiv0191755908
6. Re: [ts2068] Re: FPGA TS2068
Jeff Burrell · Fri, 13 May 2016 17:00
Eduardo,Here is a link to a brief YouTube video that shows the progress of the project.
https://www.youtube.com/watch?v=jB9OW3kfsqs
On Saturday, May 7, 2016 7:20 PM, "Eduardo Fuentes [email] [ts2068]" <[email]> wrote:
Very good work!!!Keep going.Do you have some pictures?
De: "[email] [ts2068]" <[email]>
Para: [email]
Enviado: Miércoles, 4 de mayo, 2016 13:51:59
Asunto: [ts2068] Re: FPGA TS2068
I have not been able to give this project all of the attention I would like, but I now have a program running on my Windows 7 PC that allows loading and saving standard TAP/TZX files to/from my FPGA using a 56.7K serial link. I tried 115.2K but the FPGA could not keep up. I am not sure where the problem is because 115.2K should (just) meet the timing with a 3.528MHz clock. In any case, the upload/download is plenty fast enough for my needs at the moment (9K bytes in about 4 seconds).
I did this my modifying the EXROM to hijack the low level R_TAPE and W_TAPE subroutines that in/output the pulses to the tape. Unfortunately, this method will only work for files saved as standard TAP files, so programs using special loaders will not be usable. Besides, I am not too enamoured with the tectonic speed of tape loads and saves.
This method will not work with a stock 2068 because I have moved the new EXROM to my bankswitched RAM to minimize changes to the EXROM and allow for dedicated serial buffers. Once I am more comfortable with how the EXROM and HOME banks interact, I will try removing this restriction by burning the code into ROM and banking in the necessary buffer memory.
More debugging will be needed because the MERGE function (and I suppose VERIFY as well) is broken. The result of trying to MERGE is interesting, but causes the machine to crash.
I have been able to run the PD.TXZ, BASIC64.TAP, Zeus Assembler, and Psion Flight Simulator. Flight Simulator does not want to respond to the arrow keys to turn the airplane, so I think more work will be needed on the FPGA. I tried loading Frogger but it terminates after the first section is loaded. Trashman loads the sign-on screen, but then crashes when the loader is loading. Obviously, more work will be needed.
The next steps will be to:1. Debug the MERGE problem. I think I will disable verify since the serial routines are fairly robust and minimize the possibility of garbage being saved to the pseudotapes.2. Flash the modified EXROM so I don't need to keep downloading it.3. Modify a spectrum 48K ROM to use the new serial tape routines and add it to the boot list.4. Add ULAPlus functionality for better video modes (https://sites.google.com/site/ulaplus/home)5. Look into adding OpenSE basic to the boot screen.6. Add an option on the boot screen to load DOCK files from the pseudo tapes and start to them.
Eventually, I want to get a PCB made to allow interfacing joysticks and other peripherals.
#yiv8519322738 #yiv8519322738 -- #yiv8519322738ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv8519322738 #yiv8519322738ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv8519322738 #yiv8519322738ygrp-mkp #yiv8519322738hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv8519322738 #yiv8519322738ygrp-mkp #yiv8519322738ads {margin-bottom:10px;}#yiv8519322738 #yiv8519322738ygrp-mkp .yiv8519322738ad {padding:0 0;}#yiv8519322738 #yiv8519322738ygrp-mkp .yiv8519322738ad p {margin:0;}#yiv8519322738 #yiv8519322738ygrp-mkp .yiv8519322738ad a {color:#0000ff;text-decoration:none;}#yiv8519322738 #yiv8519322738ygrp-sponsor #yiv8519322738ygrp-lc {font-family:Arial;}#yiv8519322738 #yiv8519322738ygrp-sponsor #yiv8519322738ygrp-lc #yiv8519322738hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv8519322738 #yiv8519322738ygrp-sponsor #yiv8519322738ygrp-lc .yiv8519322738ad {margin-bottom:10px;padding:0 0;}#yiv8519322738 #yiv8519322738actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv8519322738 #yiv8519322738activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv8519322738 #yiv8519322738activity span {font-weight:700;}#yiv8519322738 #yiv8519322738activity span:first-child {text-transform:uppercase;}#yiv8519322738 #yiv8519322738activity span a {color:#5085b6;text-decoration:none;}#yiv8519322738 #yiv8519322738activity span span {color:#ff7900;}#yiv8519322738 #yiv8519322738activity span .yiv8519322738underline {text-decoration:underline;}#yiv8519322738 .yiv8519322738attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv8519322738 .yiv8519322738attach div a {text-decoration:none;}#yiv8519322738 .yiv8519322738attach img {border:none;padding-right:5px;}#yiv8519322738 .yiv8519322738attach label {display:block;margin-bottom:5px;}#yiv8519322738 .yiv8519322738attach label a {text-decoration:none;}#yiv8519322738 blockquote {margin:0 0 0 4px;}#yiv8519322738 .yiv8519322738bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv8519322738 .yiv8519322738bold a {text-decoration:none;}#yiv8519322738 dd.yiv8519322738last p a {font-family:Verdana;font-weight:700;}#yiv8519322738 dd.yiv8519322738last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv8519322738 dd.yiv8519322738last p span.yiv8519322738yshortcuts {margin-right:0;}#yiv8519322738 div.yiv8519322738attach-table div div a {text-decoration:none;}#yiv8519322738 div.yiv8519322738attach-table {width:400px;}#yiv8519322738 div.yiv8519322738file-title a, #yiv8519322738 div.yiv8519322738file-title a:active, #yiv8519322738 div.yiv8519322738file-title a:hover, #yiv8519322738 div.yiv8519322738file-title a:visited {text-decoration:none;}#yiv8519322738 div.yiv8519322738photo-title a, #yiv8519322738 div.yiv8519322738photo-title a:active, #yiv8519322738 div.yiv8519322738photo-title a:hover, #yiv8519322738 div.yiv8519322738photo-title a:visited {text-decoration:none;}#yiv8519322738 div#yiv8519322738ygrp-mlmsg #yiv8519322738ygrp-msg p a span.yiv8519322738yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv8519322738 .yiv8519322738green {color:#628c2a;}#yiv8519322738 .yiv8519322738MsoNormal {margin:0 0 0 0;}#yiv8519322738 o {font-size:0;}#yiv8519322738 #yiv8519322738photos div {float:left;width:72px;}#yiv8519322738 #yiv8519322738photos div div {border:1px solid #666666;height:62px;overflow:hidden;width:62px;}#yiv8519322738 #yiv8519322738photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv8519322738 #yiv8519322738reco-category {font-size:77%;}#yiv8519322738 #yiv8519322738reco-desc {font-size:77%;}#yiv8519322738 .yiv8519322738replbq {margin:4px;}#yiv8519322738 #yiv8519322738ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv8519322738 #yiv8519322738ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv8519322738 #yiv8519322738ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv8519322738 #yiv8519322738ygrp-mlmsg select, #yiv8519322738 input, #yiv8519322738 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv8519322738 #yiv8519322738ygrp-mlmsg pre, #yiv8519322738 code {font:115% monospace;}#yiv8519322738 #yiv8519322738ygrp-mlmsg * {line-height:1.22em;}#yiv8519322738 #yiv8519322738ygrp-mlmsg #yiv8519322738logo {padding-bottom:10px;}#yiv8519322738 #yiv8519322738ygrp-msg p a {font-family:Verdana;}#yiv8519322738 #yiv8519322738ygrp-msg p#yiv8519322738attach-count span {color:#1E66AE;font-weight:700;}#yiv8519322738 #yiv8519322738ygrp-reco #yiv8519322738reco-head {color:#ff7900;font-weight:700;}#yiv8519322738 #yiv8519322738ygrp-reco {margin-bottom:20px;padding:0px;}#yiv8519322738 #yiv8519322738ygrp-sponsor #yiv8519322738ov li a {font-size:130%;text-decoration:none;}#yiv8519322738 #yiv8519322738ygrp-sponsor #yiv8519322738ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv8519322738 #yiv8519322738ygrp-sponsor #yiv8519322738ov ul {margin:0;padding:0 0 0 8px;}#yiv8519322738 #yiv8519322738ygrp-text {font-family:Georgia;}#yiv8519322738 #yiv8519322738ygrp-text p {margin:0 0 1em 0;}#yiv8519322738 #yiv8519322738ygrp-text tt {font-size:120%;}#yiv8519322738 #yiv8519322738ygrp-vital ul li:last-child {border-right:none !important;}#yiv8519322738
7. Re: [ts2068] Re: FPGA TS2068
Adam Trionfo · Fri, 13 May 2016 20:46
>>
Here is a link to a brief YouTube video that shows the progress of the project.
>>
Nice video. Thanks for sharing your project with us. I like that you played Frogger. I haven't actually played this on the T/S 2068 (I've played the ZX81 version though). Does your FPGA support that cartridge port yet? If it does, then I'd love to see a game running.
Adam
8. Re: [ts2068] Re: FPGA TS2068
Jeff Burrell · Sat, 14 May 2016 01:18
Adam,I can run cartridges, but I wrap some assembler code around the .DCK file and download it into RAM on the FPGA board and then run it from there. I have successfully run several cartridge games and utilities that way.
On Friday, May 13, 2016 5:19 PM, "Adam Trionfo [email] [ts2068]" <[email]> wrote:
>>Here is a link to a brief YouTube video that shows the progress of the project.>>
Nice video. Thanks for sharing your project with us. I like that you played Frogger. I haven't actually played this on the T/S 2068 (I've played the ZX81 version though). Does your FPGA support that cartridge port yet? If it does, then I'd love to see a game running.
Adam
#yiv3793224313 #yiv3793224313 -- #yiv3793224313ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv3793224313 #yiv3793224313ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv3793224313 #yiv3793224313ygrp-mkp #yiv3793224313hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv3793224313 #yiv3793224313ygrp-mkp #yiv3793224313ads {margin-bottom:10px;}#yiv3793224313 #yiv3793224313ygrp-mkp .yiv3793224313ad {padding:0 0;}#yiv3793224313 #yiv3793224313ygrp-mkp .yiv3793224313ad p {margin:0;}#yiv3793224313 #yiv3793224313ygrp-mkp .yiv3793224313ad a {color:#0000ff;text-decoration:none;}#yiv3793224313 #yiv3793224313ygrp-sponsor #yiv3793224313ygrp-lc {font-family:Arial;}#yiv3793224313 #yiv3793224313ygrp-sponsor #yiv3793224313ygrp-lc #yiv3793224313hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv3793224313 #yiv3793224313ygrp-sponsor #yiv3793224313ygrp-lc .yiv3793224313ad {margin-bottom:10px;padding:0 0;}#yiv3793224313 #yiv3793224313actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv3793224313 #yiv3793224313activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv3793224313 #yiv3793224313activity span {font-weight:700;}#yiv3793224313 #yiv3793224313activity span:first-child {text-transform:uppercase;}#yiv3793224313 #yiv3793224313activity span a {color:#5085b6;text-decoration:none;}#yiv3793224313 #yiv3793224313activity span span {color:#ff7900;}#yiv3793224313 #yiv3793224313activity span .yiv3793224313underline {text-decoration:underline;}#yiv3793224313 .yiv3793224313attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv3793224313 .yiv3793224313attach div a {text-decoration:none;}#yiv3793224313 .yiv3793224313attach img {border:none;padding-right:5px;}#yiv3793224313 .yiv3793224313attach label {display:block;margin-bottom:5px;}#yiv3793224313 .yiv3793224313attach label a {text-decoration:none;}#yiv3793224313 blockquote {margin:0 0 0 4px;}#yiv3793224313 .yiv3793224313bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv3793224313 .yiv3793224313bold a {text-decoration:none;}#yiv3793224313 dd.yiv3793224313last p a {font-family:Verdana;font-weight:700;}#yiv3793224313 dd.yiv3793224313last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv3793224313 dd.yiv3793224313last p span.yiv3793224313yshortcuts {margin-right:0;}#yiv3793224313 div.yiv3793224313attach-table div div a {text-decoration:none;}#yiv3793224313 div.yiv3793224313attach-table {width:400px;}#yiv3793224313 div.yiv3793224313file-title a, #yiv3793224313 div.yiv3793224313file-title a:active, #yiv3793224313 div.yiv3793224313file-title a:hover, #yiv3793224313 div.yiv3793224313file-title a:visited {text-decoration:none;}#yiv3793224313 div.yiv3793224313photo-title a, #yiv3793224313 div.yiv3793224313photo-title a:active, #yiv3793224313 div.yiv3793224313photo-title a:hover, #yiv3793224313 div.yiv3793224313photo-title a:visited {text-decoration:none;}#yiv3793224313 div#yiv3793224313ygrp-mlmsg #yiv3793224313ygrp-msg p a span.yiv3793224313yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv3793224313 .yiv3793224313green {color:#628c2a;}#yiv3793224313 .yiv3793224313MsoNormal {margin:0 0 0 0;}#yiv3793224313 o {font-size:0;}#yiv3793224313 #yiv3793224313photos div {float:left;width:72px;}#yiv3793224313 #yiv3793224313photos div div {border:1px solid #666666;height:62px;overflow:hidden;width:62px;}#yiv3793224313 #yiv3793224313photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv3793224313 #yiv3793224313reco-category {font-size:77%;}#yiv3793224313 #yiv3793224313reco-desc {font-size:77%;}#yiv3793224313 .yiv3793224313replbq {margin:4px;}#yiv3793224313 #yiv3793224313ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv3793224313 #yiv3793224313ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv3793224313 #yiv3793224313ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv3793224313 #yiv3793224313ygrp-mlmsg select, #yiv3793224313 input, #yiv3793224313 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv3793224313 #yiv3793224313ygrp-mlmsg pre, #yiv3793224313 code {font:115% monospace;}#yiv3793224313 #yiv3793224313ygrp-mlmsg * {line-height:1.22em;}#yiv3793224313 #yiv3793224313ygrp-mlmsg #yiv3793224313logo {padding-bottom:10px;}#yiv3793224313 #yiv3793224313ygrp-msg p a {font-family:Verdana;}#yiv3793224313 #yiv3793224313ygrp-msg p#yiv3793224313attach-count span {color:#1E66AE;font-weight:700;}#yiv3793224313 #yiv3793224313ygrp-reco #yiv3793224313reco-head {color:#ff7900;font-weight:700;}#yiv3793224313 #yiv3793224313ygrp-reco {margin-bottom:20px;padding:0px;}#yiv3793224313 #yiv3793224313ygrp-sponsor #yiv3793224313ov li a {font-size:130%;text-decoration:none;}#yiv3793224313 #yiv3793224313ygrp-sponsor #yiv3793224313ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv3793224313 #yiv3793224313ygrp-sponsor #yiv3793224313ov ul {margin:0;padding:0 0 0 8px;}#yiv3793224313 #yiv3793224313ygrp-text {font-family:Georgia;}#yiv3793224313 #yiv3793224313ygrp-text p {margin:0 0 1em 0;}#yiv3793224313 #yiv3793224313ygrp-text tt {font-size:120%;}#yiv3793224313 #yiv3793224313ygrp-vital ul li:last-child {border-right:none !important;}#yiv3793224313
9. Re: [ts2068] Re: FPGA TS2068
jburrell7 · 14 May 2016 17:40:17 -
I have gotten the ADC in the DE1 codec to work now so I can load TAP and TZX files after they have been converted to WAV files by TZX2WAV. I am still having some trouble with the emulator keyboard: Manic Miner does not respond to keyboard inputs.
10. Re: [ts2068] Re: FPGA TS2068
Jeff Burrell · Sun, 15 May 2016 13:05
I finally figured out that bad logic in my Kempston and TS2068 joystick interfaces was causing the keyboard problems in Flight Simulator an Manic Miner. Both programs were receiving data indicating that ALL of the joystick inputs were active. With that fixed I can download the programs and they are working just fine.
11. Re: FPGA TS2068
david · 16 May 2016 02:55:40 -
Very cool, Jeff. I just boosted the view count on your video :)
David
12. Re: [ts2068] Re: FPGA TS2068
Eduardo Fuentes · Mon, 16 May 2016 13:49
Jeff,Again, excellent work!!!
I think this is the first FPGA project specifically designed to the 2068.
De: "Jeff Burrell [email] [ts2068]" <[email]>
Para: [email]
Enviado: Viernes, 13 de mayo, 2016 14:00:41
Asunto: Re: [ts2068] Re: FPGA TS2068
Eduardo,Here is a link to a brief YouTube video that shows the progress of the project.
https://www.youtube.com/watch?v=jB9OW3kfsqs
On Saturday, May 7, 2016 7:20 PM, "Eduardo Fuentes [email] [ts2068]" <[email]> wrote:
Very good work!!!Keep going.Do you have some pictures?
De: "[email] [ts2068]" <[email]>
Para: [email]
Enviado: Miércoles, 4 de mayo, 2016 13:51:59
Asunto: [ts2068] Re: FPGA TS2068
I have not been able to give this project all of the attention I would like, but I now have a program running on my Windows 7 PC that allows loading and saving standard TAP/TZX files to/from my FPGA using a 56.7K serial link. I tried 115.2K but the FPGA could not keep up. I am not sure where the problem is because 115.2K should (just) meet the timing with a 3.528MHz clock. In any case, the upload/download is plenty fast enough for my needs at the moment (9K bytes in about 4 seconds).
I did this my modifying the EXROM to hijack the low level R_TAPE and W_TAPE subroutines that in/output the pulses to the tape. Unfortunately, this method will only work for files saved as standard TAP files, so programs using special loaders will not be usable. Besides, I am not too enamoured with the tectonic speed of tape loads and saves.
This method will not work with a stock 2068 because I have moved the new EXROM to my bankswitched RAM to minimize changes to the EXROM and allow for dedicated serial buffers. Once I am more comfortable with how the EXROM and HOME banks interact, I will try removing this restriction by burning the code into ROM and banking in the necessary buffer memory.
More debugging will be needed because the MERGE function (and I suppose VERIFY as well) is broken. The result of trying to MERGE is interesting, but causes the machine to crash.
I have been able to run the PD.TXZ, BASIC64.TAP, Zeus Assembler, and Psion Flight Simulator. Flight Simulator does not want to respond to the arrow keys to turn the airplane, so I think more work will be needed on the FPGA. I tried loading Frogger but it terminates after the first section is loaded. Trashman loads the sign-on screen, but then crashes when the loader is loading. Obviously, more work will be needed.
The next steps will be to:1. Debug the MERGE problem. I think I will disable verify since the serial routines are fairly robust and minimize the possibility of garbage being saved to the pseudotapes.2. Flash the modified EXROM so I don't need to keep downloading it.3. Modify a spectrum 48K ROM to use the new serial tape routines and add it to the boot list.4. Add ULAPlus functionality for better video modes (https://sites.google.com/site/ulaplus/home)5. Look into adding OpenSE basic to the boot screen.6. Add an option on the boot screen to load DOCK files from the pseudo tapes and start to them.
Eventually, I want to get a PCB made to allow interfacing joysticks and other peripherals.
#yiv6233487990 #yiv6233487990 -- #yiv6233487990ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv6233487990 #yiv6233487990ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv6233487990 #yiv6233487990ygrp-mkp #yiv6233487990hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv6233487990 #yiv6233487990ygrp-mkp #yiv6233487990ads {margin-bottom:10px;}#yiv6233487990 #yiv6233487990ygrp-mkp .yiv6233487990ad {padding:0 0;}#yiv6233487990 #yiv6233487990ygrp-mkp .yiv6233487990ad p {margin:0;}#yiv6233487990 #yiv6233487990ygrp-mkp .yiv6233487990ad a {color:#0000ff;text-decoration:none;}#yiv6233487990 #yiv6233487990ygrp-sponsor #yiv6233487990ygrp-lc {font-family:Arial;}#yiv6233487990 #yiv6233487990ygrp-sponsor #yiv6233487990ygrp-lc #yiv6233487990hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv6233487990 #yiv6233487990ygrp-sponsor #yiv6233487990ygrp-lc .yiv6233487990ad {margin-bottom:10px;padding:0 0;}#yiv6233487990 #yiv6233487990actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv6233487990 #yiv6233487990activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv6233487990 #yiv6233487990activity span {font-weight:700;}#yiv6233487990 #yiv6233487990activity span:first-child {text-transform:uppercase;}#yiv6233487990 #yiv6233487990activity span a {color:#5085b6;text-decoration:none;}#yiv6233487990 #yiv6233487990activity span span {color:#ff7900;}#yiv6233487990 #yiv6233487990activity span .yiv6233487990underline {text-decoration:underline;}#yiv6233487990 .yiv6233487990attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv6233487990 .yiv6233487990attach div a {text-decoration:none;}#yiv6233487990 .yiv6233487990attach img {border:none;padding-right:5px;}#yiv6233487990 .yiv6233487990attach label {display:block;margin-bottom:5px;}#yiv6233487990 .yiv6233487990attach label a {text-decoration:none;}#yiv6233487990 blockquote {margin:0 0 0 4px;}#yiv6233487990 .yiv6233487990bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv6233487990 .yiv6233487990bold a {text-decoration:none;}#yiv6233487990 dd.yiv6233487990last p a {font-family:Verdana;font-weight:700;}#yiv6233487990 dd.yiv6233487990last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv6233487990 dd.yiv6233487990last p span.yiv6233487990yshortcuts {margin-right:0;}#yiv6233487990 div.yiv6233487990attach-table div div a {text-decoration:none;}#yiv6233487990 div.yiv6233487990attach-table {width:400px;}#yiv6233487990 div.yiv6233487990file-title a, #yiv6233487990 div.yiv6233487990file-title a:active, #yiv6233487990 div.yiv6233487990file-title a:hover, #yiv6233487990 div.yiv6233487990file-title a:visited {text-decoration:none;}#yiv6233487990 div.yiv6233487990photo-title a, #yiv6233487990 div.yiv6233487990photo-title a:active, #yiv6233487990 div.yiv6233487990photo-title a:hover, #yiv6233487990 div.yiv6233487990photo-title a:visited {text-decoration:none;}#yiv6233487990 div#yiv6233487990ygrp-mlmsg #yiv6233487990ygrp-msg p a span.yiv6233487990yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv6233487990 .yiv6233487990green {color:#628c2a;}#yiv6233487990 .yiv6233487990MsoNormal {margin:0 0 0 0;}#yiv6233487990 o {font-size:0;}#yiv6233487990 #yiv6233487990photos div {float:left;width:72px;}#yiv6233487990 #yiv6233487990photos div div {border:1px solid #666666;height:62px;overflow:hidden;width:62px;}#yiv6233487990 #yiv6233487990photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv6233487990 #yiv6233487990reco-category {font-size:77%;}#yiv6233487990 #yiv6233487990reco-desc {font-size:77%;}#yiv6233487990 .yiv6233487990replbq {margin:4px;}#yiv6233487990 #yiv6233487990ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv6233487990 #yiv6233487990ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv6233487990 #yiv6233487990ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv6233487990 #yiv6233487990ygrp-mlmsg select, #yiv6233487990 input, #yiv6233487990 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv6233487990 #yiv6233487990ygrp-mlmsg pre, #yiv6233487990 code {font:115% monospace;}#yiv6233487990 #yiv6233487990ygrp-mlmsg * {line-height:1.22em;}#yiv6233487990 #yiv6233487990ygrp-mlmsg #yiv6233487990logo {padding-bottom:10px;}#yiv6233487990 #yiv6233487990ygrp-msg p a {font-family:Verdana;}#yiv6233487990 #yiv6233487990ygrp-msg p#yiv6233487990attach-count span {color:#1E66AE;font-weight:700;}#yiv6233487990 #yiv6233487990ygrp-reco #yiv6233487990reco-head {color:#ff7900;font-weight:700;}#yiv6233487990 #yiv6233487990ygrp-reco {margin-bottom:20px;padding:0px;}#yiv6233487990 #yiv6233487990ygrp-sponsor #yiv6233487990ov li a {font-size:130%;text-decoration:none;}#yiv6233487990 #yiv6233487990ygrp-sponsor #yiv6233487990ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv6233487990 #yiv6233487990ygrp-sponsor #yiv6233487990ov ul {margin:0;padding:0 0 0 8px;}#yiv6233487990 #yiv6233487990ygrp-text {font-family:Georgia;}#yiv6233487990 #yiv6233487990ygrp-text p {margin:0 0 1em 0;}#yiv6233487990 #yiv6233487990ygrp-text tt {font-size:120%;}#yiv6233487990 #yiv6233487990ygrp-vital ul li:last-child {border-right:none !important;}#yiv6233487990
Indexed under
TS2068 / TC2068 · Hardware projects & new boards · Spectrum emulation & software