Jump to content
IGNORED

Software 80 Columns


Eric Rousseau

Recommended Posts

On 9/17/2022 at 10:33 PM, scottinNH said:

Oh. I infer this sounds doable from CC65 then, that's good to know.

 

Unfortunately I don't know enough about the Atari platform (or C) to work out how, exactly. I don't even know all the things I don't know, lol/

 

I'll get there eventually, but right now I'm only competent enough to take the simple happy-path to something (like a library).

----

I'm starting to port some of David Ahl's Basic Computer Games into CC65-friendly (but not Atari-specific) code. See other thread.

 

 

 

I don't really understand what you are asking, but I'm not sure if anyone else jumped in to answer.

 

I used to program in CC65, and even wrote in 80 column support into a couple games - none are released - I just mean I have demos of writing partial games, and engines that draw characters to the screen.

 

As far as I know, if you are doing a plain text game - which I never did, I was always in a graphics mode of some kind - but in that case you can use the E: device - and just ask the user if they are using 80 columns or 40 columns.

 

Or, you can program for an 80 column device like a VBXE - which is one of the methods I used.

Or you just write your own software driver, which is the other method.

 

Othe people here are more experienced than me, but a pattern I do repeatedly in my programs, is I just have an area of memory that holds - a pattern for say a player, or a pattern that represents a character to be drawn on the screen, or a software sprite to be drawn on the screen.  Then I just use lookup tables, and copy the pattern to the screen video memory.

 

It's that simple - not really anything else to it.   Now, if you need to implement a driver with scrolling and other stuff - more complex, but I just always wrote to specific areas, cleared the screen, if needed, and so on.  

 

ah - maybe I'm starting a controversy...I don't know...but as far as I know - it isn't built into CC65 as a library - I mean, maybe it is, and I never heard about it - so don't take my word for it.

 

But what I found is over and over again - examples abound for how you write to the screen, so I just used those examples and incorporated them into my programs.

 

 

  • Like 1
Link to comment
Share on other sites

On 9/17/2022 at 10:33 PM, scottinNH said:

Oh. I infer this sounds doable from CC65 then, that's good to know.

 

Unfortunately I don't know enough about the Atari platform (or C) to work out how, exactly. I don't even know all the things I don't know, lol/

 

I'll get there eventually, but right now I'm only competent enough to take the simple happy-path to something (like a library).

----

I'm starting to port some of David Ahl's Basic Computer Games into CC65-friendly (but not Atari-specific) code. See other thread.

 

 

To expand on my earlier answer, even though I switched from CC65 to kickC, and even though this is some other graphics mode - the same principle applies.

 

export char letterA[8]= kickasm {{
.byte $AA, $9A, $66, $66, $56, $66, $66, $66 //A
}};
export char letterB[8]= kickasm {{
.byte $AA, $5A, $66, $66, $5A, $66, $66, $5A //B
}};
export char letterC[8]= kickasm {{
.byte $AA, $9A, $66, $6A, $6A, $6A, $66, $9A //C
}};

 

First I am defining the characterset.

 

Then I am making up a table for it.

 

char letterTblL[91] = kickasm {{
.byte <blank, <blank, <blank, <blank, <blank, <blank, <blank, <blank
.byte <blank, <blank, <blank, <blank, <blank, <blank, <blank, <blank
.byte <blank, <blank, <blank, <blank, <blank, <blank, <blank, <blank
.byte <blank, <blank, <blank, <blank, <blank, <blank, <blank, <blank
.byte <blank
.byte <blank, <blank, <blank, <blank, <blank, <blank, <blank, <blank, <blank, <blank, <blank, <blank
.byte <neg
.byte <blank, <blank
.byte <number0, <number1, <number2, <number3, <number4, <number5, <number6, <number7, <number8,<number9
.byte <blank, <blank, <blank, <blank, <blank, <blank, <blank
.byte <letterA
.byte <letterB
.byte <letterC

 

etc. and so on

 

And then I use the characterset, and lookup table, to copy to the screen area:

 

void gprint(char charL, char charH, const char *msg) {
int i;
charX = charL; //0x53;
//charH #$88
 
for (char character = *msg; character != 0; character = *++msg)
{


 
asm {
 
ldx character
lda letterTblL, x
sta MSGL
lda letterTblH, x
sta MSGH
 
lda charX
inc charX
sta SHPMOL
lda charH
sta SHPMOH
 
ldy #$00 // COUNTER
NUM0: lda (MSGL),y
sta (SHPMOL),y
 
clc
lda SHPMOL
adc #39
sta SHPMOL
bcc ok
inc SHPMOH
ok:
iny
cpy #$8
bcc NUM0
}
}
 
}

 

Now - if I have completely misunderstood the question - my apologies.  I don't know what people are asking half the time around here.

 

But - anyway, I got a sense you were trying to write out 80 characters.  The Atari only has 40 characters.  The software mode is just to use half a character - or in bitmap mode 3pixels and a space pixel - to fit 80 characters within 320 pixels.

 

 

  • Like 1
Link to comment
Share on other sites

  • 7 months later...

Ouf ! Many messages since my last visit !

 

Here is one option that I wish I had used in 1985 with my 800XL: A real 80 columns televideo terminal connected in RS-232 to the Atari !

I remember the 300 Bauds MPP Modem that connected to the joystick port supported real RS-232 protocol if I remember correctly.

Except in was TTL Level (0v-5v) not real RS-232 (+25v -25v).

But with a converter, it would allow the 800XL to connect to the terminal via the joystick port at 300 bauds using software encoding... up to 450 baud I think.

But now that I know that the Pokey chip uses 19,200 bauds or higher (38,400) with it's peripherals and SpartaDos, I would be curious to connect the 800XL serial port to the terminal.

With a little modification to Synassembler wich use GETCH and OUTCH we could user Synassembler with a real 80 columns terminal at 19,200 bauds.

Yes I know, the full screen editor won't work unless modified to work in VT-100.

 

It would be like the XEP-80 but with a clean sharp terminal screen.

 

Now that I have money to buy everything I wish i had when I was young, unfortunately it's too late !

The need is gone, the curiosity is gone, the thrill is gone, and even if I have a big windows 10 computer with terabytes of storage, speed and GPU power, 

it's still not the same....

 

Ok, enough crying... 

 

;-)

 

 

 

 

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...