SIO99 Posted April 18, 2012 Share Posted April 18, 2012 I've never owned an Atari 8 bit computer (or any other Atari computer), but it was one of the computers I was considering to be my first computer years ago. I wanted to learn to program games and applications. If things had been slightly different, then I'd have got an Atari, instead of the dreaded Commodore 64, which used a dialect of BASIC ported from earlier Commodore computers. These computers had no colour, no graphics, and no sound, which meant that the Commodore 64 had no commands for these facilities either! My Dad was paying for the computer, so that meant he had the final say, although he was actually only lending me the money! He phoned a shop and spoke to an assistant who told him “The Commodore is a better one than the Atari” and that was that! He was also impressed by the name Commodore Business Machines and the Commodore background in business, compared with Atari's background in games. We sold the Commodore 64 after about 11 months, with some books for about half the price of the computer, cassette deck and books together, after I found out how crap the BASIC was, that I could only use one channel sound from BASIC, and it only had 38K from BASIC, with no way of using 64K, not even from Machine Code. It certainly didn't encourage me to learn Assembly Language just to start doing simple things like drawing a line across the screen. Obviously, there was no market for Commodore 64 programs written in an extended BASIC, because these extended BASICs were Copyright and not many users had copies of them. BTW, I'm currently bidding on 3 Atari 8 bit computers on eBay, although 2 of these come without any storage device. The Commodore 64 BASIC required programmers to memorise lots of 5 figure memory locations to use with the PEEK and POKE commands. During my recent investigations into Atari BASIC programming, I've found out that there are no commands for player missile graphics (or sprites), but instead you have to use PEEK and POKE. One or two listings I've seen made me think “OMG it looks as bad as a Commodore 64 program!” I don't know if any commands for this were added with the Atari XE range. I've read one or more documents on an emulators DVD and collected the following important memory locations which programmers should memorise. Perhaps there are a lot more than these, or perhaps not. A good memory system is as follows. Various letters stand for certain numbers. Sometimes you have a choice of letter to use, which is usually a choice between voiced and unvoiced consonants (e.g. d and t, or g and k). Here's a list of what I mean. 0 – S, soft C, or Z 1 – T or D 2 – N 3 – M 4 – R 5 – L 6 – J, CH, or SH 7 – G or K 8 – F or V 9 – P or B An easy way of remembering these letters is the list of words tea, Noah, May, ray, law, jaw, key, fee, pea. Using these letters, you can make up words or phrases to help you remember numbers. Here's how this technique can be applied to important Atari memory locations. It helps if they conjure up an unusual or outlandish scene. ATARI MEMORY LOCATIONS FOR PLAYER MISSILE GRAPHICS (SPRITES) 53248 Lemon roof (imagine a roof covered with slices of lemon, Horizontal Position Register for Player 0 HPOSP0) 53249 Lemon rap (imagine a rapper is juggling lemons while rapping, Horizontal Position Register for Player 1 HPOSP1) 53250 Lemon lace (imagine a shoelace made of lemon peel, Horizontal Position Register for Player 2 HPOSP2) 53251 Lemon Lad (imagine a boy superhero with a lemon emblem on his chest, Horizontal Position Register for Player 3 HPOSP3) 53277 – Lemon cake (Graphics Control Register GRACTL, POKE with 1 for missiles only, 2 for players only, 3 for players and missiles) 54279 – Lure on cob (start of Player Missile Graphics memory area, imagine a corn on the cob with something placed on top which is designed to lure a pest into a trap) Finally, can someone think up some good words to remember the last three numbers below? PLAYER COLOUR Player Location 0 704 (kisser) 1 705 (????) 2 706 (????) 3 707 (????) I compiled this list of memory locations for Player Missile Graphics, because it seems that's the only really important facility without dedicated commands. Perhaps someone would like to list some other important memory locations which are needed for some other facilities, then we can think up some good words or phrases to remember them by. I think the most likely facility may be for setting up custom graphics screens which mix different GRAPHICS modes on the same screen. I read about this memory system before getting a Commodore 64, but I must have thought there were too many numbers to remember. Even switching to a graphics screen required a few lines of BASIC including lots of POKEs! Quote Link to comment Share on other sites More sharing options...
Bryan Posted April 18, 2012 Share Posted April 18, 2012 Interesting. I just use a equate file. 1 Quote Link to comment Share on other sites More sharing options...
Rybags Posted April 18, 2012 Share Posted April 18, 2012 You don't need to remember a lot of hardware registers, they're usually in sets. $D000 - player positions, followed by missiles. $D012 - PM0 colour, followed by other 3 players then 5 playfield regs. $D201/2 - Audf1/Audc1 paired then 3 more pairs for the other channels. But as Bryan said, equates if using Assembler. For Basic, I can't think of much worse than variable names that don't relate in any way to the function being performed. Quote Link to comment Share on other sites More sharing options...
Grevle Posted April 18, 2012 Share Posted April 18, 2012 To get Player missile to move at a usable speed In Basic when moving vertically (up and down) its best to store player data in strings because string handling is fast in atari basic or Turbo Basic Xl. The book "player missile graphics in basic" has information on how to use strings for player missile data. The book can be downloaded in Pdf file from www.Atarimania.com Regards. Jan. Quote Link to comment Share on other sites More sharing options...
SIO99 Posted April 18, 2012 Author Share Posted April 18, 2012 Interesting. I just use a equate file. Great! Please copy and paste a copy of the equate file here. Quote Link to comment Share on other sites More sharing options...
Fox-1 / mnx Posted April 19, 2012 Share Posted April 19, 2012 You asked for it :-) It's not that useful as many use their own equates. This is just a short one I used a while ago. (the question marks are inverse ATASCII characters that won't translate right) 10 ; ?????????????????????????????? 20 ; |????????????????????????????| 30 ; ?????????????????????????????? 40 ; last update: 19-Feb-2000 50 ; 60 ; SAVE#D:MACFOX.M65 70 ; ________________ 80 ; ???????????????? 90 ; 0100 IOCB0 = $0340 ; #0 E: 0110 IOCB1 = $0350 ; #1 0120 IOCB2 = $0360 ; #1 0130 IOCB3 = $0370 ; #3 0140 IOCB4 = $0380 ; #4 0150 IOCB5 = $0390 ; #5 0160 IOCB6 = $03A0 ; #6 S: 0170 IOCB7 = $03B0 ; #7 lprint 0180 ; ___________________ 0190 ; 0200 ;???????? X=Chan.*16 0210 ; 0220 ;0=$00, 2=$20, 5=$50, etc.. 0230 ; 0240 ICDNO = $0341 ;Device# 0250 ICCOM = $0342 ;Command 0260 ICSTA = $0343 ;Recent Status 0270 ICBADR = $0344 ;Filename/Buf. 0280 ICPUT = $0346 ;Put-byte -1 0290 ICBLEN = $0348 ;Buffer-Lenght 0300 ICAUX1 = $034A ;Aux-byte 1 0310 ICAUX2 = $034B ;Aux-byte 2 0320 ICAUX3 = $034C ;Aux-byte 3 0330 ICAUX4 = $034D ;Aux-byte 4 0340 ICAUX5 = $034E ;Aux-byte 5 0350 ICAUX6 = $034F ;Aux-byte 6 0360 ; ___________________ 0370 ; ??????????????????? 0380 ; 0390 COPEN = 3 ;Open 0400 CGET = 5 ;Get Text 0410 CBGET = 7 ;Get Binary 0420 CPUT = 9 ;Put Text 0430 CBPUT = 11 ;Put Binary 0440 CCLOSE = 12 ;Close Channel 0450 CSTATUS = 13 ;Get Status 0460 CRENAME = 32 ;Rename File 0470 CERASE = 33 ;Erase File 0480 CLOCK = 34 ;Lock Disk 0490 CPROTECT = 35 ;Protect 0500 CUNPROTECT = 36 ;UnProtect 0510 CPOINT = 37 ;Point 0520 CNOTE = 38 ;Note 0530 CGETLEN = 39 ;Get Filelenght 0540 CBLOAD = 40 ;Load Binary 0550 CBSAVE = 41 ;Save Binary 0560 CCREDIR = 42 ;Make Directory 0570 CDELDIR = 43 ;Remove Dir. 0580 CCWD = 44 ;Change Dir. 0590 CBOOT = 45 ;Make Bootfile 0600 CUNLOCK = 46 ;UnLock Disk 0610 CAINIT = 47 ;Format DOS 2.5 0620 ; _________________ 0630 ; ????????????????? 0640 ; 0650 AREAD = 4 ;Open Input 0660 AWRITE = 8 ;Open Output 0670 AUPDATE = 12 ;Open Update 0680 AAPPEND = 9 ;Open Append 0690 ADIR = 6 ;Open Directory 0700 AREADDIR = 20 ;RawDir as file 0710 AUPDATEDIR = 24 ;Update RawDir 0720 AOPENSUB = 36 ;Read SubDir 0730 ; 0740 ; __________________ 0750 ; ?????????????????? 0760 COMTAB = $0A 0770 DOSINI = $0C 0780 ATT = $4D 0790 LMARG = $52 0800 RMARG = $53 0810 SPARTA = $53 0820 YPOS = $54 0830 XPOS = $55 0840 EOL = $9B 0850 SDLIST = $0230 0860 SDLINT = $0200 0870 PADDLE0 = $0270 0880 PADDLE1 = $0271 0890 PADDLE2 = $0272 0900 PADDLE3 = $0273 0910 STICK0 = $0278 0920 STICK1 = $0279 0930 STRIG0 = $0284 0940 STRIG1 = $0285 0950 COL0 = $02C4 0960 COL1 = $02C5 0970 COL2 = $02C6 0980 COL3 = $02C7 0990 COL4 = $02C8 1000 KRPDEL = $02D9 1010 KEYREP = $02DA 1020 DMA = $022F 1030 HLPFLG = $02DC 1040 MEMTOP = $02E5 ;Hi-Mem. Pointer 1050 MEMLO = $02E7 ;Lo-Mem. Pointer 1060 CURSOR = $02F0 1070 CHBAS = $02F4 ;Font-Start 1080 KEY = $02FC ;Read Keypress 1090 DOS = $0700 ; 1100 VERSION = $0701 ;Sparta-Version 1110 COLOR0 = $D016 1120 COLOR1 = $D017 1130 COLOR2 = $D018 1140 COLOR3 = $D019 1150 COLOR4 = $D01A 1160 CONSOL = $D01F ;Function-Keys 1170 RANDOM = $D20A ;Random Number 1180 PIA = $D301 1190 WSYNC = $D40A 1200 NMIEN = $D40E 1210 CIOV = $E456 1220 SIOV = $E459 1230 VPRINT = $FFD8 1240 VKEYON = $FFDB Quote Link to comment Share on other sites More sharing options...
+JAC! Posted April 19, 2012 Share Posted April 19, 2012 (edited) Here's mine. Contains some more than above and and more comments. Well, and decimal numbers for BASIC lovers :-) SystemEquates.zip Edited April 19, 2012 by JAC! 1 Quote Link to comment Share on other sites More sharing options...
Gury Posted June 3, 2014 Share Posted June 3, 2014 Hej JAC! Fantastic job with your memory map equates. I also like decimal numbers on the right and all English descriptions. No need for any other editing of my own memory map. A question... Would you allow me to use it in Effectus project as equates, because it is really well put together. You will absolutely be credited in my project. Greetings Quote Link to comment Share on other sites More sharing options...
a8isa1 Posted June 3, 2014 Share Posted June 3, 2014 A while back I stumbled upon these equates by Freddy Offenga and Christian Groessler complete with some history information. http://pastebin.com/5pXBkaiz -SteveS Quote Link to comment Share on other sites More sharing options...
Gury Posted June 3, 2014 Share Posted June 3, 2014 Great stuff Quote Link to comment Share on other sites More sharing options...
+JAC! Posted June 3, 2014 Share Posted June 3, 2014 (edited) Hi, sure, see http://www.wudsn.com/index.php/ide/installation for the direct links to the versions I keep updated http://www.wudsn.com/productions/atari800/ide/SystemEquates.asm Edited June 3, 2014 by JAC! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.