Jump to content
IGNORED

7800 Development


kamakazi

Recommended Posts

While I was reading Dan's blog about the "hidden" control register in the 7800, he mentioned the purpose of the HALT command. I figured that I would share what information I have on the HALT command here. What it means or how to use it I have no idea just yet...maybe someone will know or figure it out. This is taken from the "Cartridge Slot" section of the paperwork I've aquired.

 

"The cartridge slot is larger for 7800 mode cartridges. The additional lines are: three (3) address lines (now all 16 address lines appear on the cartridge connector); the READ/WRITE line, so that RAM may be added to any cartridge very simply; the phase 2 clock line in order to add another microprocesor on the cartridge and have it synchronized with the existing Sally chip; an audio line so that one may mix in audio signals generated on the cartridge; a composite video line, so that external video signals may be included; and the HALT line, to enable the cartridge to distinguish MARIA ROM accesses from SALLY ROM accesses."

 

This is all the information I have on the HALT command as of right now.

Link to comment
Share on other sites

2nd, the person supporting me is sending me actual Atari documentation on programming the 7800...and what I learn I would like to start another thread to post what I've learned (with some secrets kept for myself LOL). I was trying to find any and all information I could find surrounding development for the 7800. If anyone out there including those that have already posted, find or know anything about programming the 7800, please pass on the information.

 

Thanx in advance for the information.

 

The documents you posted earlier in this thread have pretty much everything you need to know to program the 7800. I noticed the links are broken to those files now, but they can be found at other places.

 

The 7800 is definitely an interesting console to program. I wrote a 7800 emulator back in 1999 and even though this gave me a pretty good understanding of the hardware I just couldn't understand how to use that hardware to actually produce game graphics. The breakthrough for me came when I realized that you need to create a layer between the game logic and the hardware. For example to handle the sprites in a game you would create a table in RAM that holds the information for each sprite including things like the x and y position, index to the image to display, the animation frame, etc. You would then call a routine in your graphics engine that would translate the data in that table into the actual display list entries.

 

In this way you can build pretty much any type of graphics engine you want on top of the raw video hardware.

 

Dan

Link to comment
Share on other sites

Another interesting thing, Dan, is what the MARIA chip is really capable of. I've been told that it can display like a background image made in a paint program. Not too sure myself cause I haven't been able to try it yet. MARIA also does some things that I thought was pretty cool...wrap around and automatic erasing. If I'm not mistaken from what I've read, the 7800 with MARIA should be able to automatically do a background scroll without the programmer having to correct for wrap around...right? Also, the programmer shouldn't have to worry about erasing graphics that move or don't move each frame rate right?

 

If some of the links are broken, I'm sorry. I'll have to find the time to fix it.

 

If you say all I'll ever need to program the 7800 is already here...then I'm set. I'll be learning Assembly as I go as well so who knows what I'll come up with.

 

I do have a question to any programmer's familiar to assembly. I've never used POKE or PEEK in BASIC, therefore I've always let BASIC control the memory addresses for me. Do you have to tell assembly where to store information (like graphics (obviously), scores, etc) or can assembly do it for you? I do have a memory chart to the 7800, I just wanted to know if I have to tell assembly where it can store things. And how do I address each memory location or individual pages?

Link to comment
Share on other sites

Noticed something interesting in that new link I posted to the Atari Documents at Whimsey.com...the picture of the original 7800 devcard actually has the 2 74LS244 ICs hard-wired on the backside of the card. Interesting. Is it possible that this was a prototype?

Link to comment
Share on other sites

This is all the information I have on the HALT command as of right now.

 

There isn't a halt "command" as such. The processor in the 7800 has a HALT signal which suspends its operation during MARIA memory fetches. I'm not sure if any cartridges ever made use of it, but in theory a cartridge could make use of the HALT signal to distinguish between processor and MARIA fetches, thus allowing the MARIA and 6502 to use an area of address space for different purposes. I think a delay circuit would be necessary on the HALT signal, though, since the CPU will run for a few cycles after HALT is asserted. I've never looked at the actual timing, though.

 

BTW, as an example of what could be done via creative use of HALT, a cartridge could be constructed so that bits 0-5 and 8-13 of 16K of RAM would be swapped on MARIA accesses. This would allow a 256-pixel-wide 4-color high-resolution screen to be mapped very nicely (from the CPU perspective) with one column per memory page, and row data reading down linearly. Just the ticket if one is trying to implement TEMPEST.

Edited by supercat
Link to comment
Share on other sites

Noticed something interesting in that new link I posted to the Atari Documents at Whimsey.com...the picture of the original 7800 devcard actually has the 2 74LS244 ICs hard-wired on the backside of the card. Interesting. Is it possible that this was a prototype?

 

Yes, it is, Rev 0 instead of Rev 1. Though, considering how few were made in total you could almost say they are all protos.

 

Mitch

Link to comment
Share on other sites

Another interesting thing, Dan, is what the MARIA chip is really capable of. I've been told that it can display like a background image made in a paint program. Not too sure myself cause I haven't been able to try it yet. MARIA also does some things that I thought was pretty cool...wrap around and automatic erasing. If I'm not mistaken from what I've read, the 7800 with MARIA should be able to automatically do a background scroll without the programmer having to correct for wrap around...right? Also, the programmer shouldn't have to worry about erasing graphics that move or don't move each frame rate right?

 

Yes, you if you setup the display correctly you could display a full screen bitmapped image. Take a look at the title screen for Scarpyard Dog for example. Yes, you never really have to worry about erasing graphics. Each graphic "object" that Maria renders is drawn independantly to the screen so they can all freely be moved over each other without one destroying the other.

 

 

I do have a question to any programmer's familiar to assembly. I've never used POKE or PEEK in BASIC, therefore I've always let BASIC control the memory addresses for me. Do you have to tell assembly where to store information (like graphics (obviously), scores, etc) or can assembly do it for you?

 

Yes, and no. You do have to do a lot more manual memory management then you do in Basic, but the assembler will do some of it for you. You need to at least define where different blocks of memory start. So for example if I have a bunch of variables I need to store you could use this assembler directive to start the region:

 

org $40

 

This tells the assembler to start this region at address $40. Then you can define the variables like this:

 

xpos	ds.b	1		  
ypos	ds.b	1				
temp   ds.b	1

 

This will assign one byte for each of those variables. You don't need to worry about the exact address of each one, you just refer to it by name. So to store the accumulator in xpos you would just do:

 

sta xpos

 

The assembler will take care of putting in the correct address.

 

Now on a larger scale there is a lot of work involved with deciding where to put things in memory, especially when programming the 7800. You are going to have to manage the Display List List, the individual display lists, the graphics data, as well as the variables used in your program. With the limited RAM in the 7800 this can get a little tricky.

 

Dan

Edited by DanBoris
Link to comment
Share on other sites

Thanks DAN...once again, you're the man! I know it sounds like I'm asking a lot and not doing or showing much as far as what I've come up with...I'm still waiting on the rest of the hardware to arrive and I have yet to find a Devcard or parts to build one. I did find a devcard, but it's costly. I guess a small price to pay for that added extra advantage over using emulators.

 

At least I'll have a foot on some small ground to learn with. I'd be happy just to get the 7800 to say "Hi!". I also feel that the 7800 never got the chance to show off what it could really do. Either that or I didn't see it.

 

Any other information I'm missing or the do's and don'ts would now be appreciated as I'm expecting the 520ST to arrive anytime now.

 

Thanks to all who have been here to help and as soon as I learn the 7800, I will post some good ways to start on here...hopefully with helps from the friends I've made on this post.

Link to comment
Share on other sites

Ok, I'm using my ST now to start programming the 7800. I need some newbie help. Granted, I read the Assembly Language For Atari Computers book but are still puzzled.

 

Where on earth do I start to store stuff in memory and how. I have the artwork already laid out and completed but I don't know how to convert it or if I need to. The artwork program is Art & Film Director by Epyx.

 

I understand the 6502 somewhat, it's MARIA I don't quite get the idea of yet. Is there a certain size that the artwork has to be?

Link to comment
Share on other sites

Ok, I'm using my ST now to start programming the 7800. I need some newbie help. Granted, I read the Assembly Language For Atari Computers book but are still puzzled.

 

Where on earth do I start to store stuff in memory and how. I have the artwork already laid out and completed but I don't know how to convert it or if I need to. The artwork program is Art & Film Director by Epyx.

 

I understand the 6502 somewhat, it's MARIA I don't quite get the idea of yet. Is there a certain size that the artwork has to be?

Yes, the 7800 is not easy to understand. Of course there is a certain size the artwork has to be. You need to learn all about how the 7800 color works, the graphics modes and how they work and how the display lists and display lists lists work. Do not confuse any other use of display list on any computer with the 7800 display list. GCC did a terrible thing by using the term 'display list.'

 

There is a graphics program for creating graphics on the 7800 for the ST but it SUCKS. It looks like it was thrown together in a weekend. It is a modification of the ST program NEOchrome. I've played around with it a bit but haven't gotton far with it. It's crashes on some occasions and has very little tools (if any) for creating artwork. AtariGraphics for the Atari 8-bit drawing pad is far better than this and that's saying a lot. I did go throw it to try to find what it does but it's hard since there is no documentation for it. Even in the program it says hit the help key for help and it does nothing when you hit it.

 

Here's what I have so far.

 

 

 

Finally got the 7800 Graphics program on an ST disk and have been playing with it a bit. Here's what I got so far.

 

Here's the original link that Curt Vendal posted it.

 

 

 

Atari 7800 Animation Workstation V.1.0

James St. Louis 1989



Control-Q 	= Quit
Control-W 	= Write File
Control-R 	= Read File
Control-H 	= Gives Neochrone Header Info
Control-A 	= Atari ST ASCII Character Set
Control-D 	= Define Animation Parameters
Control-C 	= Breaks out of program
Control-N 	= Load Neochrome file
Shift-C   	= Change Color Registers.
			0 = Background + Border
			1
			2
			3
			4
			5		
			
"-" = Saves picture as 'backup.pic'

Mouse Controls

0  = Text
1  = Line
2  = Fill
3  = Plot
4  = Draw
5  = Regs
6  = Shape
7  = Animate
8  = Rectangle
9  = Disk I/O
10 = Pick Color




The program is really buggy. For example, if you don't type the exact file name of a picture the program will crash. It looks like James St. Louis tthrow this together in a day. My guess is that it was done very early on the ST's release to get something out to the 7800 programmers to use. The graphics tools are as about as crude as you can get. Most Atari 8-bit programs can do what this program can do. I've been trying to figure out if this program really has any use for modern day 7800 programmers. Hopefully it has some kind of graphics data output that I haven't discovered yet. About the only thing I see useful is that it restricts the artist to stay within the 7800 graphics/color capability. My guess is that someone could whip something up in an afternoon with a modern day programming language that does the same as this program.

 

 

 

I really have to say though you are really making it hard on yourself by using the ST to develop a 7800 program. You really should read the stuff that Pacmanplus and others have written about 7800 programming and just use a cross compiler to at least get your feet wet. You are going to spend so much time wrestling with the ST stuff that it will take you a lot longer just to get to the point of getting a pixel on the screen of the 7800.

 

Either way, I wish you luck. If there is anything I can help you with or at least lead you into the right direction, just ask.

 

Allan

Edited by Allan
Link to comment
Share on other sites

Allan,

 

I chose to go the ST route to program the 7800 for one simple reason...it requires and programs a real 7800 instead of using an emulator which I never could find a good one.

 

Right now, all I need help with is what's the size limit a character can be? e.g.; 8x8, 16x8? I really can't do much more artwork not knowing this. The ST is a very nice computer and the Art & Film Director program I'm using is really nice and has lots of tools, and seems to be using one of the screen sizes the 7800 uses (320x200)...with 8 palettes to choose from, each holding 15 colors each (I know the 7800 allows only 3 colors each).

 

For right now, I just need to know the size limits of characters/sprites the 7800 will allow.

 

Thankx. BTW, to me it's much easier to use what Atari used (a text editor and MADMAC assembler), then send the compiled program to the 7800 directly to see the effects. I never found a working 7800 emulator that supported everything that the 7800 had.

Link to comment
Share on other sites

Allan,

 

I chose to go the ST route to program the 7800 for one simple reason...it requires and programs a real 7800 instead of using an emulator which I never could find a good one.

 

A cross-compiler on a PC/Mac does the same thing. It's getting the binary to a real 7800 that is the problem. Like Pacmanplus said if you can get a CuttleCart 2 that will make your life a lot easier. A development card is your second best route. Another way is to get yourself an eprom burner and an eprom eraser with a whole bunch of eproms. If you socket a 7800 cart board, you can use that to write your game and then try each version on a real 7800. This is unfortunetly the slowest way but it might be the cheapest way if that's an issue.

 

The Cuttlecart 2 is really nice because you can use the serial output of the cart to send each new version of your program to the CC2 quickly to see if it works.

 

Allan

Link to comment
Share on other sites

On the 7800 a single character can be anywhere from 1 to 16 lines high, and 1 or 2 bytes wide where each byte can be either 2, 4, or 8 pixels wide depending on the graphics mode you are using. So a character could be 2, 4, 8 or 16 pixels wide.

 

As for "sprites", all the graphics the 7800 generates could technically be considered sprites since no one object will interfere with any other object. Because of this you could generate a sprite of pretty much any size.

 

I think using a combination of real hardware and emulators for development gives you the best of both worlds. You really need the real hardware to be sure things will actually work, but the emulator is more convenient and in the case of MESS, which is the emulator I use, it give you access to a really nice debugger.

 

Dan

Link to comment
Share on other sites

Thanks Dan. I'm happy with the way I plan to program the 7800. Be nice if I could find a eprom burner for my ST...but trying to build a Devcard also gives me something to do and if it works when finished, I'll have a piece of hardware that I can be proud of. Who knows, I may try to make more so others can order them. Just a thought.

 

Instead of the Devcard being plugged directly into the cartridge port...I plan on having a cartridge that requires a connection cable...it just looks to easy for that thing to break off into the console if it was ever accidentally hit or dropped. It's in the works...just locating the ICs is my only other problem.

 

Back to the sprites though, I can have upto 16x16 sprites pretty much right? What about screen mode 320?

Link to comment
Share on other sites

Help again. The program I thought I was going to be able to use doesn't allow me to save in .asm format. If you could tell me of a simple text editor for the ST that will fit on a 360k floppy (off the internet), then please list some of those programs.

 

The program I was going to use wasn't even worth the plastic it was printed on! Please, names of good text editors?

Link to comment
Share on other sites

The guy that is selling that eprom burner used to develop for Atari as well as be an Atari Service Center. I contacted him personally and found some information I've been looking for! Finally...here is a link to the much sought after (by me) MADMAC assembler as well as the FULL TOS Development Kit (MADMAC resides on disk 3).

 

ATARI TOS DEVELOPMENT KIT SOFTWARE (5 DISKS)

 

Click on DEV SOFTWARE in the list on the left of the screen. And at the top of the screen, click the top item. This will start a download of a zipped form of the kit. There are 5 seperate disks. I also need to add this for those using STs and need a way to get these downloads from an IBM PC to an actual Atari formatted diskette (360k or 720k).

 

Here's the link to the site:

 

Floppy Image Program

 

To use this program...first download and install the fdrawcmd link. Then download Floppy Image. Simply click on the links to download both.

 

Once you install fdrawcmd...you won't have to again. Now, what I did was have my ST format the disks, then I would place the disks in the IBM with downloaded ST images (with this program, it will read/write to them). For those of use using 360k drives, most images I noticed took less than 360k, but must have been copied to a 720k floppy before being uploaded to the internet. To get these files on a 360k floppy, and after loading up the Floppy Image program, click on the Disk Icon labeled A. Then click on File Transfer under Floppy to Image. A window will pop up with the heading "ST file browse, extract & add".

 

Before you start transfering files, I suggest you create a folder using a name that will help you identify the program contained in it. To do this, type a name in the white rectangular box just under NEW FOLDER, then click on NEW FOLDER. You must obay ALL Atari rules when creating a new folder. I suggest this cause the first file you write to the disk no matter what it is (other than a folder) for some reason will NOT be recognized by the ST.

 

Now, click on ADD FILES. Where ever it is you keep or downloaded the ST images to on your PC's hard drive, go there. Once you get to the image you want, click on the FILE TYPE at the bottom and select ALL FILES. Move your mouse pointer on the first file BUT DON'T CLICK IT! While holding down the SHIFT key, press END. If all files are highlighted, left click your mouse. All files should now start copying to the disk.

 

The above method can be time consuming, but is about the only sure way I found to put disks of 720k containing a 360k image on a 360k disk. For those who have a 720k disk drive, I suggest having the ST format it first. In the upper-right hand corner of Floppy Image's Main Menu is an icon labeled "Open Image File". It will look and list in the directory you are currently in for any ST or MSA files.

 

When you find the one you want on your PC's hard drive, open it. Insert a disk formatted to the size of the image into your PCs drive, then click on IMAGE TO FLOPPY icon. It's that simple!

 

To aid others looking for other kinds of software, even though this topic is for 7800 development purposes, here's some links to trusted sites:

 

ST ROMS Site 1

 

ST ROMS Site 2

 

On a side note...some of the image files may be missing or have been edited for emulator use...making them bigger in size than they originally were. These may, or may not, work on your ST.

 

Hope this information is a step in the right direction. A name of a simple text editor would be nice.

Link to comment
Share on other sites

  • 3 weeks later...
The guy that is selling that eprom burner used to develop for Atari as well as be an Atari Service Center. I contacted him personally and found some information I've been looking for! Finally...here is a link to the much sought after (by me) MADMAC assembler as well as the FULL TOS Development Kit (MADMAC resides on disk 3).

Did he tell you what he worked on for Atari?

 

Allan

Link to comment
Share on other sites

Actually Alan, he didn't. Even met the guy in person to pick up some ICs he had that I needed to build my own Devcard. He also had a Falcon that refused to come on...not suprising...had a 286 CPU upgrade.

 

Kept going on about working in another popular company...Novak i think. Anyway, thanks for the links.

 

I really couldn't get him to tell me much about his Atari life...must not have been a very good one for him. Had tons of Atari specific processors as well as some 6502s, 6507s and others. Plan on making another trip soon.

 

Thanks again!

Link to comment
Share on other sites

  • 1 month later...

Hey Guys!

 

Sorry for the lack of posting. Since the last post, I've moved from Arkansas to Iowa with my fiance. I still haven't managed to find a 7800 system, but the ST and I are getting along great and I'm still working on a few game ideas for the 7800 eventhough they are on paper.

 

Just thought I'd update everyone on how the development was coming along. Slow, that's for sure, but still promising.

Link to comment
Share on other sites

Would someone do me a favor? I'm getting confused on the Branching methods in assembly. Could someone explain them to me, and if possible, in BASIC terms?

 

I'm reading the book, ASSEMBLY LANGUAGE FOR ATARI COMPUTERS and am having some success in 6502 coding. But the branching methods are giving me trouble. Thanks in advance!

 

Also, if possible, and if I can get together a 7800 Devcard, would anyone else be interested if these can be produced on a regular basis? Just thought I'd ask.

Link to comment
Share on other sites

Would someone do me a favor? I'm getting confused on the Branching methods in assembly. Could someone explain them to me, and if possible, in BASIC terms?

 

I'm reading the book, ASSEMBLY LANGUAGE FOR ATARI COMPUTERS and am having some success in 6502 coding. But the branching methods are giving me trouble. Thanks in advance!

 

Also, if possible, and if I can get together a 7800 Devcard, would anyone else be interested if these can be produced on a regular basis? Just thought I'd ask.

 

Do you mean the instructions like BNE, BEQ, etc? What about them is giving you trouble?

 

Dan

Link to comment
Share on other sites

The problem they are giving me is the simple fact that I can't seem to understand how or when to use them.

 

The book I've been reading to learn 6502 Assembly Language had done a great job of putting main ASSEMBLY LANGUAGE keywords into BASIC terminology I can understand. For example, the Load and Store commands were shown in both Assembly and BASIC sample codes. (POKE=STA, PEEK=LDA for example). And yes, Dan, THOSE commands.

 

There were no examples of the Branch commands so I could better understand when or how to use them. Remember...I'm used to BASIC on various systems...if there is some BASIC code that could be used to show and example of what the BRANCH commands do would help me out greatly.

 

Also, another question again. How in GOD's name do you load a saved artwork file for the 7800 in ASSEMBLY LANGUAGE? In BASIC, I always had three tools, QUICKBASIC 4.5 for all my codework, B.W.S.B. (Bells, Whistles & Sound Boards) for QUICKBASIC and EDRAW for all artwork. EDRAW save artwork in BASIC native format. I'm now using Art & Film Director and a 0.5 version of NeoChrome. I really like Art & Film better though.

 

Thanks DAN & Allen for all your help. One only learns from asking. I just wish there was a teacher out there that could teach me. I could read all day long and never learn a thing...show me how it's done and watch out!! That's how I learn.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...