6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Thu Nov 14, 2024 7:05 am

All times are UTC




Post new topic Reply to topic  [ 297 posts ]  Go to page Previous  1 ... 3, 4, 5, 6, 7, 8, 9 ... 20  Next
Author Message
 Post subject:
PostPosted: Thu May 14, 2009 12:25 am 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
Thanks Tony for responding, maybe we need to do a google translation on the Polish instruction manual.

Daryl, I will have to take you up on your offer if me idea doesnt work.

First, my original intent was to use the original Commodore 64 character set, in tribute to that fine machine which I have done other projects on many years ago.

Today, at work I thought, hey, what if I take that character ROM out of the C-64, and read the data off of the 901225 ROM. I was looking yesterday for someone with an image or at least the data I could type in manually... Man, sometimes I am slow, I know. Bear with me...

So now I have to see if the Genius programmer will read the ROM, I'm sure it will, I just need to find out which kind of ROM it is... edit:[ I did find this info(http://symlink.dk/nostalgia/c64/rom/), turns out the ROM is archaic, and I am not interested in making an adapter so I need to look for an image file...]. Re-edit:[Found the image files, now I just need to make the software work on my test character, then plug in the image data.]


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Thu May 14, 2009 6:30 am 
Offline
User avatar

Joined: Fri Aug 30, 2002 1:09 am
Posts: 8540
Location: Southern California
.
How about making it do the DOS/ANSI character set, so you get a lot of special characters including Greek ones we use in engineering all the time, ±½°, §6.2.2, a², arrows, scroll bars, and the characters that allow you to draw smooth boxes and diagrams. The DOS/ANSI characters are all that's used to generate these screens:

Image

Image

It's not a graphical user interface, but tiled, point-and-click, with dynamic window re-sizing, scroll bars, drop-down menus, radio buttons in dialog boxes, etc., with minimized windows showing along the bottom, done entirely with DOS/ANSI characters-- no graphics. I had about 30 files open at once when I took these pictures.

On a slightly different but related note, the small intelligent character LCDs' common controller ICs let you have 8 custom dot combinations in the display at once. In a 6502 project I did in the late 1980's, we had to squeeze as much as possible into a 16-character one-line LCD, so we had dozens of custom combinations, including .1, .2, .3, etc. in a single character position, some having as many as three letters in a diagonal arrangement in one character position of 5x8 dots. Since we would never need very many at once (there were only 16 character positions, so there's no way we would need 40 or 50 custom charcters at once), I made the display routine watch for the specials that I represented with values above $7F, and when it found one, see if it's already loaded into one of the fake ASCII places 00 to 08 for custom characters in the chart, and if not, look up the next available place in the chart and load it up with the appropriate dot combination. Then the fake ASCII value would be fed to the LCD and the dot combination assigned to that value would show up.


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Sat May 16, 2009 12:10 am 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
Garth, good idea on the engineering character's like degrees F and C and 1/2, etc., I will need them displaying automotive data when this project comes to fruition, so at this point, I think a mix of C64 Letters, numbers and common symbols, together with some of the DOS/ANSI char set special characters will be a fine mix.

Still working on getting correct data to the display with software mod's and display control settings...


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Sun May 17, 2009 11:14 pm 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
Ok, I finally figured this out. Sent 2 consecutive 8 bit color data successfully, and the software worked as expected thanks to the MK 6502 assembler.

Gonna require just abit of some software presentation here, IF there's no objections, which I will reveal in about a week. Over this time period, I'll update my past schematics on my past posts..

I thought I had a hardware problem but it wound up being a software delay issue (Maybe a hardware problem?, putting the delay in the right spot was the key, I will show an explanation and pics in the next few posts). I did make this hardware modification (shown below) to generate the /RD and /WR, which seemed much easier than generating a 6800 series (E)nable signal. Initially I just tied this line logic level high, as I had no intent to read from the device.

Thanks to Gene Zumchak, even though it's from an old Compute! magazine from 1980, (I think I saw this logic somewhere in the original MOS manuals as well...)

He showed how to generate 80xx series /WR and /RD signals from the 6502 R/W and 02 signals. Notice though the 6502 R/W is inverted. (... this did not make it work, but hopefully, I will be able to read from the display with this logic setup).

A clip from: http://www.atarimagazines.com/computeii ... page17.php
Image

Here's the Display interface:
Image


Last edited by ElEctric_EyE on Thu May 21, 2009 4:25 pm, edited 10 times in total.

Top
 Profile  
Reply with quote  
 Post subject: A
PostPosted: Sun May 17, 2009 11:35 pm 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
Finally have it working, character "C"...Image

I'm at the end of my rope tonight, will post more info tomorrow...


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Wed May 20, 2009 5:07 pm 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
Past few days I've spent on writing some code for displaying multiple characters, up to the point of $ff horizontal, so this pic has 32 characters. I've not had much time to search out ansi/dos character images, but the searches i have done have come upt negative. This project will only need 255 characters max. I got the Uppercase letters, numbers, and "shift" numbers, and lowercase letters. I still have room for 128 more are least, I'll spend more time on filling it up later.

The 'M' and the 'W' look shorted 1 bit, I'll look into that. Probably something real simple...

Image

_________________
65Org16:https://github.com/ElEctric-EyE/verilog-6502


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Wed May 20, 2009 6:09 pm 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
Still working on the character plot subroutine. Turns out posting data on this site has made me check myself and I have found errors after posting. Sorry for the heavy editing in some posts, it is the result of rechecking my data and the desire for it to be 100% correct.


Last edited by ElEctric_EyE on Thu May 21, 2009 3:02 pm, edited 1 time in total.

Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Wed May 20, 2009 7:05 pm 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
I'll post the display init, and clearscreen subroutine here in a few, these I am sure are 100%...

Display init:

Image

Clear screen:

Image


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Sat May 30, 2009 9:32 pm 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
Ok, it's been awhile, so I thought I'd update the thread at least once a week. I've been working on the software part of the project, so far being mainly graphics routines. Keep in mind, the screens I've posted of the display are being plotted one pixel at a time. In fact everything is done one pixel at a time, there are no built in functions with the FSA506 controller. Still I am finding this project very rewarding, challenging, even frustrating at times...

I need to complete a few more graphic subroutines, then I will be onto the next phase of the project; hooking up the 'F269's 16-bit counter to a cars' fuel injector driver and displaying it. I anticipate being at that point in a few weeks.

As a side note, from other unrelated posts I've read on the 6502 forums recently, I wish I could delve into some Atmel controllers like 8Bit uses or even the propeller chip to acheive alot of the "front end" counting and a/d functions that I will need. I got my eye on them for sure. Maybe in the future...

Here is my list of software goals which is presently keeping me occupied:

Clear Screen
Plot Character
Draw Line
Draw Box
Init Screen
Draw Wave

The first two are complete. I am presently working on the Draw Line subroutine... The Draw Box will come very easily after that. The last will be the Draw Wave, which will be reading data from an 8-bit A/D converter as an input reference and will use the Draw Line routine, probably won't take much time either. We will see at this point if the 65C02 will be fast enough for displaying just 1 cylinder.

See you next week: Live Long and Prosper! :)


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Sun May 31, 2009 4:15 am 
Offline

Joined: Fri Jun 27, 2003 8:12 am
Posts: 618
Location: Meadowbrook
For your init segment, I know my own programming iss the bull n the china shop method, but what do you think about a data table loop with 2 fields, the address and byte value,m and simply step through it? A nice advantage, it will take less room and can make for an easier reading code, methinks...

_________________
"My biggest dream in life? Building black plywood Habitrails"


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Sun May 31, 2009 11:09 pm 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
Ah yes, I am trying to apply the KISS principle ATM. Some of the registers don't end in $ff. So I would have to have multiple loops if you get what I mean...

Also, I am having a rather persistent problem that, when I figure it out, I will post it here, but so far I know it has to either do with hardware timing or the terminate byte (i.e. #$80, $a000)...

_________________
65Org16:https://github.com/ElEctric-EyE/verilog-6502


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Mon Jun 01, 2009 2:31 pm 
Offline

Joined: Fri Jun 27, 2003 8:12 am
Posts: 618
Location: Meadowbrook
Not necessarily. If you set up multiple fields for the address and data byte, it makes it easy, so you end up with a data field llike:

.byte $0a00, $ff
.byte $0a00 $00
.byte $05ff $40

and so on. This also makes it easy as heck to read your sequences to the display I had revamped my pinball in using that format for displaying, so going to town there :)

_________________
"My biggest dream in life? Building black plywood Habitrails"


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Tue Jun 02, 2009 11:18 pm 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
Ah ok, you're talking about a macro command within the assembler. I've successfully used the .ascii macro to easily make character strings...

I'll try your suggestion tomorrow to make the data table.

_________________
65Org16:https://github.com/ElEctric-EyE/verilog-6502


Top
 Profile  
Reply with quote  
 Post subject: Happy Birthday USA
PostPosted: Sat Jul 04, 2009 2:01 pm 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
Happy Birthday USA!

New job has limited my hours to spend of this project unfortunately, and HDD crashed on my laptop. Luckily I've learned from the past and always make a backup on my server when I make progress, so no setbacks there. Also new HDD was only $60 for 3x the size @160GB. Thank you ebay.

Still working on Draw Line routine...

Keep you posted, have a good weekend all!

_________________
65Org16:https://github.com/ElEctric-EyE/verilog-6502


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Sat Jul 18, 2009 11:01 pm 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
I hope someone can help me here. I found out after VERY extensive testing that I need a delay in between loading the Display data and storing the Display data, each and every single time. In my previous posts I was loading registers like this:

LDA #$00 ; Load register $00
STA $A000 ;
LDA #$80 ; Send #$80
STA $A001 ; Store it in register $00

Now I realize I need to do this to make it communicate properly:

LDA #$00
LDX #$01 ;
a DEX ;Delay
BNE a ;
STA $A000

LDA #$80
LDX #$01 ;
b DEX ;Delay
BNE b ;
STA $A001


Does this look like any kind of hardware problem to you guys? (I am not so good with timing issues, but this is a fairly simple project)

Also, can I make a macro that will insert this delay every time I write the registers so I don't have to manually type in the delay every single time?

_________________
65Org16:https://github.com/ElEctric-EyE/verilog-6502


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 297 posts ]  Go to page Previous  1 ... 3, 4, 5, 6, 7, 8, 9 ... 20  Next

All times are UTC


Who is online

Users browsing this forum: No registered users and 8 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to: