Jump to content

danwinslow's Photo

danwinslow

Member Since 9 Mar 2005
OFFLINE Last Active Today, 7:38 AM

#4188998 Atari 800 - 96KB and 3Bit Full-View 80 Card

Posted by danwinslow on Wed Jan 2, 2019 12:33 PM

OMG what a score! Congrats. That bit 3 is extremely rare. Does it work?




#4188996 How can I start programming?

Posted by danwinslow on Wed Jan 2, 2019 12:31 PM

Be aware that this is not an easy goal, even if you already have programming experience. Aside from Karl's question above -

Have you searched for threads about 'how to program 2600' here? There are many such threads.

It's too big of a subject area to just say 'please help'. There are also other online resources about programming for the 2600.




#4153583 Fallout 76

Posted by danwinslow on Fri Nov 9, 2018 8:19 AM

I didn't care for it, and I don't think it will be particularly successful. Bethesda doesn't seem to really understand what most people (I think) loved about the earlier fallouts. Even fallout 4, which I liked well enough but didn't love, suffered from it.

Here's the deal -

 

I don't want to build things. I don't want to play civ. I don't want fancy decorations or to play dress-up with armor colors or hair/face/body editing. I don't want bouncy colorful happy-time emoticons. I don't want to have to deal with some 12 year old trying to kill me or even just having to listen to him or have him wave and show me stupid emoticons. I don't want to have to cook and/or make routine things. I don't want an open-world multiplayer Farmville. I don't want a battle-royal that keeps replaying in a cartoon-style world.

 

What I DO want is story immersion, yet to still have open-world freedom. I want to shoot naughty things and blow lots of things up.I want to feel like the decisions I make make a real difference in the story line. I want to have goals to help people that mean something. I want good plots and lots of good side quests. I want interaction with NPCs, including the decision to just shoot them and to experience the consequences thereof. I want a dirty, gritty world that looks like a nuclear strategic war happened. I want story continuity. I want to be pressed hard to scavenge and explore for survival. 

 

So,as a lot of people like me feel, New Vegas was the pinnacle of Fallout greatness. Fallout 4 was OK, but they had started the process of dropping things like faction systems and skill advancements. The story lines were actually pretty good, but really it totally did not matter what you did in NPC conversations other than maybe shorten steps via charisma checks. Faction had no real meaning other than at the very highest story level. It had a good weapon and engagement system, but they dropped some mechanics around weapon repair, and yet oddly kept them for power armor. I hated that so much work went into the stupid 'let's build outposts and beds and paintings and walls and pictures and lets have to deal with directing a bunch of mindless NPCs to dig carrots' that could have gone into things like a meaningful faction system and a conversation system that was more than 'pick an aggressive or cynical or sarcastic or sympathetic response but don't worry because it won't really matter'.

 

Fallout 76 is too pretty, too cartoony, too simplistic. It's Fortnite with a Fallout-like skin on. There seems to be essentially no actual story line except some lame stuff about 'find the overseer' and popup quests. It's only 25 years after the bombs fell but already you see the full range of canon entities like the brotherhood and super-mutants where they do not exist in the timeline. I could theoretically see a multiplayer Fallout but it would have to be on totally different terms. This just feels like they are trying to skip having to do the hard work of story creation, voice acting, and complex quest trees and have us 'create our own adventure'. They tried to do online multiplayer, and also tried to keep some of the single player fallout feel, but those two things are incompatible and they wound up doing neither well.

 

BAH I say, BAH. You kids GET OFF MY LAWN!




#4123879 CC65 VBLANK and DLI

Posted by danwinslow on Sat Sep 29, 2018 4:55 PM

while ( *( (unsigned char *)(0xD40B))) might work too.

But I'm confused - if you are drawing graphics in a normal way, outside of the vertical blanks, then you are by definition not going to be drawing them while the vb is happening, so there's no point in waiting. Any cycles your program gets are always 'after the Vblank', right?  Unless the goal is to draw a complete screen before the next vblank happens...?

Anyway, I don't really understand what he's trying to do, so I'm probably off base.

 

Sanny - I didn't really give him a solution, just showed some examples of how to use a little bit of inline assembler to handle interrupts. He's asking for something else i think.




#4123725 CC65 VBLANK and DLI

Posted by danwinslow on Sat Sep 29, 2018 12:59 PM

A parameter-less C function (void func(void) ) is indistinguishable from an assembler call. If you set up a vbi() function and put it's address into the vbi pointers and do the other necessary settings for a VBI setup, your routine will be called each vblank. You do need to jump back correctly, and that requires an asm("RTI") and stuff, but its pretty easy to use the asm() functions in C.

 

You can hook dli's too, but I am not sure how you would save the regs you need without asm. See the below functions. Using the asm() stuff in C is pretty easy if all you do is save regs, set a few things, and return.

#define DLIST  *((unsigned int *)560)
#define LMS_MASK 0x40
#define DLI_MASK 0x80
#define JVB      0x41
#define JMP      0x01
#define SCAN_GR0 0x02
#define SCAN_GR4 0x04

unsigned char color_save;
unsigned char bloo=(7 << 4 )+1;
unsigned char noo=(7 << 4 )+15;
char dl[256];

void dli0( void )
{

asm("     PHA      "); //save a

//chain to next DLI
asm("     LDA #<_dli1");
asm("     STA $0200");
asm("     LDA #>_dli1");
asm("     STA $0201");

//save color
asm("     LDA $2c6       ");
asm("     STA _color_save");

//load up color
asm("     LDA #1    ");
    asm("     STA $D40A "); // wsync
    asm("     STA $D018 ");

//restore a
asm("     PLA      ");
asm("     RTI      ");
}

void dli1( void )
{

asm("     PHA      "); //save a

//load up color
asm("     LDA #3   ");
asm("     STA $D40A"); // wsync
asm("     STA $D018 ");

//chain to next DLI
asm("     LDA #<_dli2");
asm("     STA $0200");
asm("     LDA #>_dli2");
asm("     STA $0201");

//restore a
asm("     PLA      ");
asm("     RTI      ");
}

void dli2( void )
{

asm("     PHA      "); //save a

asm("     LDA #7   ");
asm("     STA $D40A"); // wsync
asm("     STA $D018 ");

//chain to next DLI
asm("     LDA #<_dli3");
asm("     STA $0200");
asm("     LDA #>_dli3");
asm("     STA $0201");

//restore a
asm("     PLA      ");
asm("     RTI      ");
}

void dli3( void )
{

asm("     PHA      "); //save a

//load up color
asm("     LDA _color_save");
asm("     STA $D40A "); // wsync
    asm("     STA $2c6  ");
asm("     STA $D018 ");

//chain to next DLI
asm("     LDA #<_dli0");
asm("     STA $0200");
asm("     LDA #>_dli0");
asm("     STA $0201");

//restore a
asm("     PLA      ");
asm("     RTI      ");
}

void setup_dli_chain( void )
{
  *(unsigned int  *)(0x0200)=&dli0;
  *(unsigned char *)(0xD40E)=*(unsigned char *)(0xD40E) | 0x80;
}

unsigned int next;

void build_dl( void )
{
int sl=0;

dl[sl++]=0x70;
dl[sl++]=0x70;
//dl[sl++]=0x70;
dl[sl++]=SCAN_GR0 | LMS_MASK;
dl[sl++]=(int)&screen1 & 0xFF;
dl[sl++]=((int)(&screen1) & 0xFF00) >>8;
dl[sl++]=0;

    dl[sl++]=SCAN_GR0;
    dl[sl++]=SCAN_GR0;
    //dl[sl+0]=SCAN_GR0;
    //dl[sl+1]=JMP;
//next=(unsigned int)&dl[sl+4];
//dl[sl+2]=( next & 0xFF );
//dl[sl+3]=( (next >> 8 ) & 0xFF );
//sl+=4;

dl[sl++]=SCAN_GR0;
dl[sl++]=SCAN_GR0;
dl[sl++]=SCAN_GR0;
dl[sl++]=SCAN_GR0;
dl[sl++]=SCAN_GR0;
dl[sl++]=SCAN_GR0;
dl[sl++]=SCAN_GR0;
dl[sl++]=SCAN_GR0 | DLI_MASK;
dl[sl++]=SCAN_GR0 | DLI_MASK;
dl[sl++]=SCAN_GR0 | DLI_MASK;
dl[sl++]=SCAN_GR0 | DLI_MASK;
dl[sl++]=SCAN_GR0;
dl[sl++]=SCAN_GR0;
dl[sl++]=SCAN_GR0;
dl[sl++]=SCAN_GR0;
dl[sl++]=SCAN_GR0;
dl[sl++]=SCAN_GR0;
dl[sl++]=SCAN_GR0;
dl[sl++]=SCAN_GR0;
dl[sl++]=SCAN_GR0;
dl[sl++]=SCAN_GR0;
dl[sl++]=SCAN_GR0;
    dl[sl++]=JVB;
dl[sl++]=(int)&dl & 0xFF;           ;
dl[sl++]=((int)(&dl) & 0xFF00) >>8; ;
}


void activate_dls ( void )
{
  //set screen
  *(unsigned int *)(88)=&screen1;
  //kill antic by storing 0 into $22f
  *(unsigned char *)(0x22F)=0;
  //Then store the address of the new display list into $230 and $231 (low then high).
  DLIST=&dl;
  //Lastly, turn ANTIC back on with a $22 into SDMCTL.
  *(unsigned char *)(0x22F)=0x22;
}



#4120156 CC65 and display list

Posted by danwinslow on Mon Sep 24, 2018 3:13 PM

Yaron - I was in exactly the same place as you a couple of years ago. Then I decided to get over my config phobia and I just started working with it and learning. It makes sense once you get used to it, and it makes serious development MUCH easier in the long run. Well worth the effort. I wound up using it to define overlays and EXT ram loadable stuff and all kinds of things. Well worth the time investment.




#4109243 New Atari Console that Ataribox?

Posted by danwinslow on Sun Sep 9, 2018 7:16 AM

 

Did you have a bad Taco or something?  ;-)

Hah, no, that was a line of Burroughs 3500 OS command. See, WAY up above in post #12727  pacman said something about a burroughs mainframe. So, naturally I thought if I posted like 20 posts later it would make perfect sense, and all of the ex-Burroughs computer programmers here would have a hearty chortle.




#4081722 Atari/Sinclair/Timex 'collection'

Posted by danwinslow on Sun Jul 29, 2018 2:21 PM

Hi Folks.

So, as I continue to divest my 8-bit stuff, I find I have a large amount of stuff that probably isn't worth the effort selling on Ebay, but I hate to throw away as trash. I took a shot at this a while back, but I stalled out. This time I'd like to just list by general content the stuff, and ask if anyone might be interested in paying postage and getting it otherwise free. Stuff like:

 

1. I have about 25 mixed 800xl/1200xl's, and about 10 or so 130xe's - I think some work but some may not and if they do work all have some problem like bad RAM, bad display, bad keyboard, etc. The case conditions are mostly fairly good, some are kind of dusty. The XL's are so heavy it's expensive to mail, I bet I am looking at about 100 pounds worth in total.  I don't really feel like cleaning them and mailing them out one by one, so if someone wants a bulk lot of them for local pickup let me know. I'm in Omaha Nebraska. I am willing to bulk mail but like I said it'll be expensive.

 

2. I have a giant box full of Sinclair/Timex stuff, 4-5 TS1000's, a couple 2068's, a couple zx80's, a printer, a bunch of different memory packs from 16-64k, memotech keyboards, weird boards I have no idea about, etc. Also up for free local pickup or mail with postage paid.

 

Or, if you'd be interested in taking the whole Atari and/or Sinclair piles, just let me know and I'll get a weight and a shipping estimate. Still free, just pay shipping. 

 

3. I have about 6 1050's and an 810 or two and an Indus. No SIO cables, but the drives look good and work as far as I know. Also free bulk pickup or if you want to get it mailed bulk let me know.

 

4. 50 or so mixed Atari cartridges, no rares as far as I know, also free for pickup or mail if postage paid.

 

If you are interested in one of the options, let me know and I will give you exact item counts and give you a postage amount.

 

 

Thanks,

Dan




#3999512 Some new (not really) hardware made by tfhh

Posted by danwinslow on Mon Apr 2, 2018 8:19 PM

Ah so, Prima. Das geht, danke schon.




#3942831 8bit-Slicks: Promo Video

Posted by danwinslow on Tue Jan 23, 2018 11:36 AM

Do you plan to produce another batch soon?
If the game is received as well as I hope, you may get quite a few inquiries...

For Altirra setup, see: http://8bit-slicks.c...with-dragoncart

I was mostly the money, Mark Dusko was the actual hardware guy. He has his design up on his website, though. I am sure he would have no problem if someone wanted to make another run. I have not heard from him in some time, but his atariage handle is puppetmark. I would imagine that dropcheck or one of the other folks still producing boards would be able to handle it. I think a pass-through cart would be much better, and/or a PBI device. The CS8900A is hard to source in 5 volts. Lots of people seem to think that a 'all in one' with its own TCP stack is the way to go, but unless it has a memory mapped transfer bus it won't work very well. SIO is not capable of handling it. And, as you've seen, a dedicated single purpose stack is very doable on the eight bits, especially to support UDP.




#3904256 TS1000/ZX81 fanboys?

Posted by danwinslow on Mon Dec 4, 2017 2:34 PM

My very first computer was a zx80. I wrote my very first program on it too, a BASIC version of "Lunar Lander" with an 'M' for the lander and a landscape of periods and dashes. Makes me mist up just thinking about it.

 

Fast forward to now - alongside all my atari stuff I have a giant box filled with Sinclair/Timex stuff.




#3881366 Does anyone use Pascal anymore?

Posted by danwinslow on Wed Nov 1, 2017 10:51 AM

If you mean in the modern development industry, then no, nobody really uses it for new development. There are nooks and crannies doing legacy maintenance that might have some pascal, but it would less than 1% of the market, probably much less.


  • jhd likes this


#3850665 Is the 8 bit uninspiring?

Posted by danwinslow on Mon Sep 18, 2017 8:29 AM

Wow, this is the most successful trolling I've seen in a while. OP is winning by a mile, not because they are right, but because you guys are all excited about it.




#3849692 Is Java any benefit to programming for the 2600?

Posted by danwinslow on Sat Sep 16, 2017 5:18 PM

 

C is worse as a beginner language than Java in that C will give you a gun and let you shoot yourself in the foot and not give you much indication what you did wrong other than "segmentation fault" or some such error.   Plus if you want to work with strings..   Java is much easier there.    

 

I like and use C a lot.   It is powerful, but the price of that is it will not hold your hand in any way. 

 

Yes Java is OO, but when you are just learning, you can put everything in a single class and it will behave similarly to a non-OO language.   

 

I get it, but I don't agree. It's not about what's easy or safe, it's about understanding. I've been a professional developer for almost 40 years, and this is my opinion.




#3848765 Is Java any benefit to programming for the 2600?

Posted by danwinslow on Fri Sep 15, 2017 9:43 AM

Yeah, I expected someone to say this. You're not wrong in fact, but I personally feel like Java and the other OO languages can put a burden of extra complexity in when all you are doing is just to try and learn programming basics, especially when your stated target is 2600 programming. I figured BASIC would be a good way to prepare for Batari. BASIC has this rep for 'spaghetti code' but let me assure you you can freely create pasta in any language, and people often do. Using a language that doesn't prevent you from doing it in fact is a good way to learn the importance of certain hygienic programming practices. Use of goto is not in and of itself bad, and there are situations even in modern languages where it is an appropriate choice.

 

Actually, I always recommend plan ANSI C as the proper introductory language for a serious computer education. If you learn C well, you will learn everything you'll ever need to know and stuff that most people don't ever know, and you will appreciate the modern languages much better.