Jump to content
IGNORED

Atari 800 vs C64


Sharky

Recommended Posts

Anyone knows the "Turbo BASIC" ? This was released in a German magazine in 1985 or 86 and was far better than ATARI BASIC , was used for many programs.

 

The "Keypress"-problem was easy to solve here - just write GET X , and the computer waits until you press a key.

 

And then X has the number of the key pressed.

 

Another advantage of Turbo BASIC is,that it has more free RAM with a disk-drive (34000+ bytes) and is faster.

 

it´s easy to find today.

 

Thimo

 

I don't remember messing with Turbo Basic too much, but I always thought that Basic XL/XE were cool (fantastic languages), and ACTION although I never bothered to program in ACTION.

 

Most of my BBS programming days were in Basic XL/XE. It drove me nuts working on BBS source code in regular basic with it's limit on the number of variables you can create.

 

Basic XL/XE had ways around that.

Link to comment
Share on other sites

No, that shouldn't matter (at least I don't see how it would)...since Basic would still only have the Ram available to it.  I think that I missed something in there :P

 

Just a guess here (it's been years). But don't you have to do some other pokes so the screen handler knows where the new screen is located?

Link to comment
Share on other sites

Possibly...

The ones that I remember are 88/89 (for screen writes)

and DL+4/DL+5 (so the list is pointing at the right area to display)

 

Like I said my memory is very fuzzy but I vaguely remembering the screen handler having certain addresses that it used to control things like the action characters... (tab, ctrl-del, scrolling, clr, etc) and if you didn't poke them properly the screen would act funky like that when putting it in a variable.

 

Just a side note, one of the bad thing about putting a screen in a dimensioned string like that is you cannot just for example say A$(5)="A" and expect the letter A to show up. Didn't Atari's internal character set work differently. Again it's been ages.

Link to comment
Share on other sites

BTW here's a little time-saver for those of you typing in programs in an emulator...

In the emulator, set up the Hard Drive folders by typing alt-h and picking a folder. Next, highlight and copy the online program and paste it into Notepad (don't use Wordpad)...and tack this character to the end of each line › (it looks like >, but really it's character 155...which is the Atari's return character). Save the file to the hard drive folder using the Atari rules for filenames (i.e. filename.ext). Now you can load it into the emulator just by typing ENTER"H:filename.ext" Pretty slick, right? If you have a scanner and a program to convert the pictures to text, you can do the same with magazine type-ins 8)

Link to comment
Share on other sites

Just compare the Atari Basic with the C64 Basic on Cold starts.

 

Atari has 37902 Free

 

and C64 has -26627

 

So if im right, Atari has more Basic memory.   :)

 

No, welcome to the world of bugged BASIC commands... =-)

 

(The FRE command is messed up on the C64, you have to subtract it from another value to work out how much memory there actually is available. From dead, the power up message is right and there are 38911 bytes allocated to BASIC... =-)

Link to comment
Share on other sites

Well...we'll have to give C64 the edge then (by 1k anyway).  But it would pass back to Atari if Dos wasn't needed in memory...since the Commodore drives have that built-in.  So between cassette systems, Atari would edge out C64 by 1k.

 

Only for pure BASIC, a machine code program or data of some form for either BASIC or machine code can still load under the ROM at $a000 and even as far as $cfff. Loading under the VIC-II at $d000 requires custom loaders (at least from disk, i'm 99% sure tape is the same).

Link to comment
Share on other sites

i still write all my PC conversion tools in turbo basic xl, run them in atiar800win + "h:" handler to get the pc harddisc directly... all gfx etc done on pc and then converted in the emulator for atari usages... why?

 

because i do not want to start big visual studio stuff just to convert gfx, sprites etc... and i want to have directly a "WYSIWYG" atari feeling and turbo basic is perfect...

 

even using GW basic, java etc does not speed things up... our coders have a "atari display" emulation module in java so they can check directly their effects in java and then convert later the code into 6502 assembler... but for me it does not make sense as i would have to learn java... (and i hate object orientated languages... ;))

 

maybe i am too retro... ;)

 

heaven/taquart

Link to comment
Share on other sites

No...there are two ways of insuring that the area is placed just after a boundry (I explained one of them in the post with the TEMP$ variables...the other one involves POKEs to the variable table to point it to the right memory area). Once a string is DIMensioned in Atari Basic, it stays put...even if it is empty :) Using the method in the followup program, the important part is to not have any other variables being defined while you are creating the TEMP$'s and P/M$'s (otherwise, you would lose your point of reference). As it is...TEMP2$ (the one that takes up the slack below the nearest boundry) has a very slim chance of being DIMensioned at zero bytes (causing an error). You might need to insert a TRAP statement...but I've never had to.

So TEMP1$ finds out what memory location you are at, and TEMP2$ fills up the memory to the boundry, and the rest fall right into place automatically.

Link to comment
Share on other sites

Oops... :ponder:

Looks like I screwed the pooch a bit on that method too. I forgot to subtract the address FROM a multiple of the boundries :lol: Plus, a length of 1 byte would also need to be subtracted (i.e. the length of TEMP1$). It's probably also better if it is all done on a single line, so I shortened the bariable names). So here's a revised program...you can cut and paste this into Notepad to take advantage of the hard drive function in Atari800Win...don't type the trailing character on each line if you are doing it manually...

 

10 DIM T1$(1),T2$((INT(ADR(T1$)/1024)+1)*1024-ADR(T1$)-1),PM$(384),M$(128),P0$(128),P1$(128),P2$(128),P3$(128)›

20 PM$(1)=CHR$(0):PM$(384)=PM$:PM$(2)=PM$›

30 M$=PM$:P0$=PM$:P1$=PM$:P2$=PM$:P3$=PM$›

40 POKE 54279, ADR(PM$)/256: POKE 53277, 3: POKE 559,46›

 

(Remember not to type the characters if you are keying it in by hand)

 

You could also use single-line DMA by doubling all the values...i.e...

 

10 DIM T1$(1),T2$((INT(ADR(T1$)/2048)+1)*2048-ADR(T1$)-1),PM$(768),M$(256),P0$(256),P1$(256),P2$(256),P3$(256)›

...and changing the last statement to POKE 559,62

Link to comment
Share on other sites

but atari basic + PM sux... as you can not move sprites fast enough in y-directions... so i would prefer turbo basic or an assembler routine for ataribasic. turbo masic has "move src,dest, amount" command which you need to move players around... or you take this assembler routine in 1536 = $600

 

;a=usr(1536,data,dest,resolution)

 

org $600

pla

pla

sta len

pla

sta dest+1

pla

sta dest

pla

sta data+1

pla

sta data

ldy #0

ldx len

loop lda (data),y

sta (dest),y

iny

dex

bpl loop

rts

 

cheers, karolj

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