Search the Community
Showing results for tags 'basic'.
-
NEW RELEASE: LINEJEWELS (0.6) - FIRST RELEASE (BUG FOUND - UPDATED VERSION COMING SOON) so the task was to create somehow of an action game for crossplatform 8-bit. means running on as many old 8bit platforms in basic as possible. the outcome: LINE JEWELS a one key "be jeweled". you have the choice to set the stone in one line and make 3+ or even 2 * 3+ and get the points. you have 50 lines to get as much points as possible. it runs now on C64, ATARI XL, MS-DOS (GW-BASIC), AMSTRAD CPC & BBC MICRO) the code is the same for all platforms except the GetKeyPressed-routine 😞 and the rnd function .-( it was quite a big work to get all together. so you can't use of course graphical commands or even cls. so everything is made with print and print ;. there is so much things that are different in these basics .-( it is a nightmare. even handling of string is different (thanks to atari), others have low memory, others don't have : and and and if you are interesting in the basic-code (one file for all versions) running on C64,AtariXL,MS-DOS(GW), AMSTRAD, MICRO BBC) .-) There can be errors in the code (in the case of atari the concat of strings). Just go over the errors. the code should run. 1 REM LINE JEWELS - CROSS 8BIT PORTABLE BASIC GAME 2 REM NEO LISTING/TYPE IN 8BIT GAME --- 3 REM C64_ VICE - F10 - IMPORT | PET_ WWW.MASSWERK.AT/PET/ 4 REM AMSTRAD (CPC)_ ARNDOLD (AUTOTYPE) 5 REM MICROBBC_ BBCMIC.RO/ MSX_ WEBMSX.ORG (OPTION+B) 6 REM ATARI 800XL_ WWW.ATARIMAC.COM/INDEX.PHP 7 REM ------------- COPY FROM HERE ------------------- 8 DIM F$(50):DIM A$(50):DIM AC$(50):DIM CH$(50):DIM MO$(50) 9 DIM RE$(50):DIM L$(50):DIM DX$(50):DIM OB$(50):DIM N$(50) 10 LET A$="" 11 F$="#X.O" 12 MC=0 13 CH$="" 14 LET HC = 420 15 LET AC$="" 16 VE = 0.6 17 DIM GT(10,100) 28 GOTO 70 39 REM SETTINGS 40 A$="" 41 A=0 42 CH=0 43 IF MC=2 THEN GOTO 51 44 IF MC=3 THEN GOTO 56 45 IF MC=4 THEN GOTO 58 46 REM C64-BASIC 47 A = PEEK(197) 48 IF A=10 THEN A$="A": GOTO 69 49 IF A=13 THEN A$="S": GOTO 69 50 GOTO 69 51 REM ATARI 800XL 52 CH=PEEK(764):POKE 764,255:IF CH=255 THEN GOTO 69 53 IF CH=63 THEN A$="A":GOTO 69 54 IF CH=62 THEN A$="S":GOTO 69 55 GOTO 69 56 REM MICRO BBC 57 A$=INKEY$(0):GOTO 69 58 REM GW-BASIC, MSX, AMSTRAD (ATTENTION UPPERCASE) 59 A$=INKEY$ 69 GOTO 1320 70 REM GO ON 80 SP = 60 95 TS = 0 97 REM BASIC DARTHMOUTH > 64 - ONLY 2BYTE VAR NAMES! 100 GOSUB 5000 101 OB$ = "#XO." 102 PRINT "<#><.><O><O>" 103 PRINT "<#><O><O><X><X>" 104 PRINT "" 105 PRINT "LINEJEWELS - ONE BUTTON JEWLERY ";VE 106 PRINT "" 117 PRINT "ONE SOURCE FOR ALL OF THEM" 118 PRINT "NEO LISTING / TYPE-IN 8BIT-GAME" 111 PRINT "BY CHLUDENS.CH (EXPER. ARCHEOLOGY)" 112 PRINT "GREETINGS R. WERNER, S. HOELTGEN" 113 PRINT "USAGE: <S> SET STONE " 114 PRINT " <A> ONE FORWARD" 115 PRINT "TODO : CREATE 3+ LINES" 116 PRINT " WITH THE DIAMONDS ";OB$ 117 PRINT "HIGHSCORE: ";HC 128 REM PRINT " ";CHR$(7);CHR$(7);CHR$(7) 130 PRINT " " 131 PRINT "COMPUTER: 1:C64 2:ATARI 800XL " 132 PRINT " 3:MICRO BBC " 133 PRINT " 4:MSDOS(GW),MSX,AMSTRAD " 134 INPUT MC 135 PRINT "" 136 PRINT "" 137 PRINT "GET RICH! " 138 PRINT "(NO CHANCE IF ARE NOT YET)" 139 PRINT "" 500 SC = 0 510 LI = 0 520 X = 0 530 AC$ = "#" 540 REM 1000 REM NEXT LINE 1001 GOSUB 6000 1002 AC$ = CH$ 1005 X = 0 1006 MO$ = "INTERACTIVE" 1007 RE$ = "" 1008 REM IF SC<10000 THEN PRINT ;" "; 1009 IF SC<1000 THEN PRINT ;" "; 1010 IF SC<100 THEN PRINT ;" "; 1011 IF SC <10 THEN PRINT ;" "; 1012 L$ = "" 1013 IF LI>40 THEN L$=" " 1015 PRINT STR$(SC);" !";L$;STR$(50-LI);"! ";AC$;" ! "; 1100 GOSUB 6000 1110 REM 1119 KP = 0 1120 IF LI<2 THEN MO$ = "FORWARD" 1190 IF MO$<>"INTERACTIVE" THEN GOTO 1410 1199 H = 0 1200 REM --- CHECK KEYS AND PAUSE --- 1300 REM . 1305 REM . 1310 GOTO 40 1320 IF A$="S" THEN CH$ = AC$ 1330 IF A$="S" THEN MO$ = "ENDLINE" 1332 IF A$="S" THEN RE$ = " >" 1333 IF A$="S" THEN KP = 1 1334 IF A$="S" THEN GOTO 1410 1335 IF A$="A" THEN GOTO 1410 1336 IF A$="s" THEN CH$ = AC$ 1337 IF A$="s" THEN MO$ = "ENDLINE" 1338 IF A$="s" THEN RE$ = " >" 1339 IF A$="s" THEN KP = 1 1340 IF A$="s" THEN GOTO 1410 1341 IF A$="a" THEN GOTO 1410 1351 H = H + 1 1352 SP = (50 - LI)/2 1360 IF H<SP THEN GOTO 1200 1410 PRINT CH$; 1411 LET FV = 0 1412 GOSUB 7000 1418 REM ---- 1420 GT(X,LI)=FV 1425 IF KP = 0 THEN GOTO 2000 1430 REM CHECK ALL - VERTICAL - HORIZONTAL ETC 1431 TS = 0 1432 FOR Q=0 TO 3 1433 VX = 0 1434 REM TS=0 1435 VY = -1 1436 GOSUB 7000 1438 IF Q=3 THEN VY = 0 1439 IF Q=3 THEN VX = -1 1440 CO = 0 1441 IF Q=1 THEN VX = -1 1442 IF Q=2 THEN VX = 1 1443 SX = X 1444 SY = LI 1445 SX = SX + VX 1446 SY = SY + VY 1447 CO = CO + 1 1460 IF SX<0 THEN GOTO 1500 1461 IF SY<0 THEN GOTO 1500 1462 IF SX>10 THEN GOTO 1500 1470 IF GT(SX,SY)=FV THEN GOTO 1445 1500 REM 1510 REM RE$ = RE$ + "";CO 1511 DX$ = "!" 1512 IF Q=1 THEN DX$ = "!" 1513 IF Q=2 THEN DX$ = "/" 1514 IF Q=3 THEN DX$ = "-" 1520 IF CO>2 THEN TS = TS + (CO*10) 1521 IF MC=2 THEN IF CO>2 THEN RE$(LEN(RE$)+1)= STR$(CO) 1522 IF MC=2 THEN IF CO>2 THEN RE$(LEN(RE$)+1)= DX$:GOTO 1524 1523 IF CO>2 THEN RE$ = RE$ + "" + STR$(CO) + ""+DX$ 1524 REM IF MC<>2 THEN IF CO>2 THEN PRINT CHR$(7); 1600 NEXT Q 2000 X = X + 1 2010 REM 2020 REM 2400 IF X<10 THEN GOTO 1100 2405 SC = SC + TS 2406 IF MC=2 THEN IF TS>0 THEN RE$(LEN(RE$)+1)=STR$(TS):GOTO 2410 2407 IF TS>0 THEN RE$ = RE$ + " +" + STR$(TS) 2410 IF RE$<>"" THEN PRINT RE$; 2500 PRINT " " 2510 LI = LI + 1 2520 IF LI>49 THEN GOTO 7050 2600 REM 3900 GOTO 1000 4000 END 5000 REM CLS 5010 FOR T=0 TO 40 5020 PRINT " " 5030 NEXT T 5040 RETURN 6000 REM GET NEXT CHAR 6001 C = RND(4) 6002 IF C=0 THEN GOTO 6007 6003 IF C=1 THEN GOTO 6007 6004 IF C=2 THEN GOTO 6007 6005 IF C=3 THEN GOTO 6007 6006 C = INT(RND(1)*4) 6007 REM C64 ETC 6020 CH$ = "#" 6030 IF C=1 THEN CH$ = "X" 6040 IF C=2 THEN CH$ = "O" 6050 IF C=3 THEN CH$ = "." 6060 RETURN 7000 REM GET FIELD VALUE FROM CH$ 7009 FV = 0 7010 IF CH$="X" THEN FV = 1 7020 IF CH$="O" THEN FV = 2 7030 IF CH$="." THEN FV = 3 7040 RETURN 7050 PRINT " " 7055 PRINT "END OF THE GAME" 7060 IF SC<HC THEN GOTO 7065 7061 PRINT "" 7062 PRINT "NEW HIGHSCORE! ";SC 7063 HC=SC 7065 PRINT " " 7070 PRINT "ANOTHER TRY? Y | N" 7080 INPUT N$ 7090 IF N$="Y" THEN GOTO 500
- 4 replies
-
- 2
-
- basic games
- basic
-
(and 1 more)
Tagged with:
-
Hi! After a little exchange with @drac030 about the version of TBXL that I hacked for @mr-atari and now included with LiteDOS, I decided to cleanup the sources and automate the relocatable generation. And then, I spent a little time to fix the most notable bugs and finally do a proper release. The source is available from https://github.com/dmsc/turbo-dis and the binaries can be downloadd from https://github.com/dmsc/turbo-dis/releases/tag/v2021.11.06. Also, the source can conditionally assemble to the original version published on HappyComputer, all original code is there. Note that I don't have plans on working on this on the future, but if anyone wants to modify it further - there are a lot of optimization potential there - you can take from there. Now, copied from the README file over github: Fixed Bugs This version has fixes for a few interpreter bugs present in all standard TurboBasic XL versions: When adding or deleting lines when inside a FOR loop, the runtime stack is not correctly adjusted, for example this program: 10 ? "START" 20 FOR J=0 TO 10 25 ? "J=";J 30 IF J=5 THEN DEL 10,10 40 NEXT J 50 END The interpreter exits the FOR on the iteration 5, instead of counting up to 10. A bug with the parsing of IF statements without ENDIF, the end of statement is incorrectly checked. This is an example program: 10 ? 1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1:? 1;1;1;1;1;1;1;1;1;1;;;;;;:IF 1 20 ENDIF If you remove one ";", the program runs correctly, but as shown it prints "ERROR 12". In the PRINT statement, if the last token printed ends in $12 or $15, for example a CONTROL-R or CONTROL-U character on a string, the interpreter omits the new-line at the end, as it incorrectly assumes that the statement ended in a "," or ";". This program shows the problematic statements: 20 ? "LINE 1:x" : REM Ok, prints a new-line at end 30 ? "LINE 1:─" : REM BUG, does not print the new-line 40 ? "LINE 1:▄" : REM BUG, same as above 60 ? "LINE 1:";1.23456713 : REM OK, prints a new-line at end 50 ? "LINE 1:";1.23456712 : REM BUG, does not print the new-line 70 ? "LINE 1:";1.23456715 : REM BUG, same as above Detection of PAL/NTSC. The original TurboBasic XL assumes PAL ANTIC for the TIME$ function and the TIME$= statement, this means only 50 jiffies per second, so the functions return an incorrect value in NTSC computers. This version includes code at startup that counts the number of scan-lines in a screen to detects the ANTIC type. If NTSC is detected the code is changed to return the correct values assuming 60 jiffies per second. Note that both values are not exact, the real values are 49.86 and 59.92 jiffies per second in PAL and NTSC respectively, but for the intended usage the given values are close enough. Relocation This TBXL version relocates itself to the lowest address posible, by reading MEMLO and copying the code at low address to just above the value. This gives more memory to the BASIC programs, depending on the DOS version. This currently works for any MEMLO address lower than $3000. Have Fun! turbo-basic-20211106.zip tbasic.atr
- 31 replies
-
- 27
-
Since morelenmir has a sticky for providing Windows-users with tools to help developers create their masterpiece for us Atari users I thought it might be sort of nice if, along with it, those same developers, be they beginners or experts, have access to all the documentation known to exist to help them out. I agree that nothing is better than having the actual book in front of your eyes while programming (or learning to) but, in some cases, those books are difficult to come across. With that being said, I would to offer a possible sticky that builds upon the development software morelenmir has started. Download those tools or use a REAL Atari...then come to this thread to find the books that will take you on an adventure in getting your feet wet. That is the intentions of this post. ASSEMBLY LANGUAGE Assembly Language Programming for the Atari Computers (PDF) - Source: Atari Mania (www.atarimania.com) Atari 130XE Machine Language for the Absolute Beginner (PDF) - Source: Atari Mania (www.atarimania.com) De Re Atari (PDF) - Source: Atari Mania (www.atarimania.com) Mapping The Atari Revised Edition (PDF) - Source: Atari Mania (www.atarimania.com) Machine Language for Beginners (PDF) - Source: Atari Mania (www.atarimania.com) BASIC LANGUAGE Atari BASIC (PDF) - Source: Atari Mania (www.atarimania.com) Atari BASIC XL Edition (PDF) - Source: Atari Mania (www.atarimania.com) As long as AtariAge Mods will allow edits to be made to this post I will add to the list once I finish reviewing a few other books I have. The PDF's will open up to another TAB in your browser and, once fully loaded, can be saved to your computer for future reference. I hope that this helps others wanting to learn, or improve, their programming skills and techniques.
- 47 replies
-
- 8
-
- Atari Books
- BASIC
-
(and 1 more)
Tagged with:
-
Sorry for making another thread, I've been having a hard time learning programming. Long story short, I've tried Pico-8 with little success (made two shitty prototypes) in the past, but I also have a hard time retaining and remember that knowledge. I would love to learn a language that I can remember and translate, such as BASIC and C for instance, but again, I've had issues trying to retain information because I've got other unrelated projects as well. So, what is the best way to learn quickly and retain for more than a week's worth of time?
- 14 replies
-
- programming
- basic
-
(and 4 more)
Tagged with:
-
While pondering the problem of two different programs that would produce the same LIST output over in the Web99 thread, I thought that you may enjoy another programming challenge for a lazy weekend. (Sorry if this has been posted on AA before, as it's no new idea at all, but I couldn't find anything using the search function ...) Goal: Write a TI BASIC program that, when run, prints itself. In other words, LIST and RUN should produce exactly the same result. This kind of program is commonly called a quine. Here's my first entry (try it for yourself first, though): In some sense, it's the easy way out, as I'm using DATA. Can you come up with a different version, in particular one without DATA? BTW, if you want to feel really humbled just have a look at this quine or this quine. This guy is way, way beyond my league. (Coincidentally, his name handle is mame, but it's not related to MAME in any way.)
-
Remember the TI-IUG? they had a magazine and a cassette exchange. I submitted a lot of games to them, back in the day. I found the IUG archive on whtech.com and download and fixed up a few of the ones I did. Awari Eagle 1 Stock Market Othello Star Trek You can download them from my Atariage blog http://atariage.com/forums/blog/528/entry-15370-some-of-my-ti-99-from-ti-99-iug/ enjoy
-
Hi all! Finally I published the new FastBasic 4.5 release!! From the 4.5 beta, I added: - The "ADR()" function and the "&" operator now allow taking the address of a variable, so this code will print 123: " A = 1 : DPOKE &A, 123 : ? A ". - The "EXEC" statement can be abbreviated to a "@", this makes calling procedures more natural, this will also print 123: " PROC Test A : ? A : ENDPROC : @Test 123 " This in addition to the added features of the 4.5 beta: - Parameters for the PROC/EXEC, see the test-release docs, - Arbitrary characters in string constants by using the hex value, like: PRINT "Hello"$9B"World", - Added PAUSE without a parameter, this is the same as PAUSE 0, "wait for vsync", - PROC has a shorter abbreviation: PR., - The parser is more robust to syntax errors, I discovered some erroneous inputs that could slow down the parser a lot. Many improvements to the editor: - Much faster COPY/PASTE operations, - Restores left-margin value on exit to DOS, - Remove P/M graphics when returning to the editor from user programs. And improvements to the cross-compiler: - Better error messages from some syntax errors, and fixes in parsing of big numbers. - Check for PROC and EXEC parameters mismatch. - An option to write an expanded and indented listing from an abbreviated listing, "-l" After a lot of optimizations, I managed to keep the integer IDE at 8192 bytes and the floating-point IDE at 9457 bytes. EDIT: Current release is 4.5.2, adds a few bugfixes and minor optimizations, now the integer IDE is 8166 bytes. As always, you can download the ATR, the manual and the cross-compiler from github: https://github.com/dmsc/fastbasic/releases/ Have Fun!
- 110 replies
-
- 20
-
Ok, i have been working on this for a month or so in the evenings / night after work and i think its coming along nicely now in the current version i have tried to include most of the features of the original atari 2600 game: 8 levels 8 speeds 8 different point amounts for collecting the bombs in the bucket this version does not follow the same bomb dropping as the atari 2600, i decided to spice it up a little and use some degree of randomness (based on the x position of the bomber and the x position of the player for the seed some features are not included as yet, the item that most concerns me is the extra life every 1000 points, i may be over thinking this quite substantially but to me right now this seems to be very complicated. you cant check dead on 1000 / 2000 etc because if your at 995 then earn 10 points you are at 1005 and the check will not catch it. using greater than would cause a new life to be added every program loop if the score higher than 1000 which is not wanted i tried to use: if (score / new_life_points) = cint(score / new_life_points), this caused its own issues, mainly because the jaguar as i understand it does not take kindly to decimal numbers and in my tests 995/1000 although should equal 0.995, the jaguar decides it equals 0. Nice!!! this option is however thinking about it no good because it still only basically gives you if score = 1000. so for the moment im at a loss on that one, if anyone has any ideas let me know moving on, there are only two sound samples integrated currently, the explosion sound and a splash sound all sprites are 16 colours i hope to work on this beautifying it somewhat in the future, as i am quite enjoying actually making something useful for the jaguar things to do: new life every 1000 change bombers face to smile at 10000 add rotary support, which I don't think can be tested in VJ add title / options / game over screens achievements - i am undecided on this one yet add a selection of bombs to use add a selection of buckets to use probably a load of things I haven't listed thanks goes to: CJ / GGN / SH3 for continued abuse comments and help and putting up with my stupid questions at times which has lead to the creation of this spaghetti bowl of bad code if anyone has any useful criticism, please post it here, i shall be keeping an eye on the thread to see what people think of this Kaboom.abs
- 35 replies
-
- 12
-
Converting a program and it uses the 'mod' function. i know it is not in Atari basic and i don't know how to adapt it to Atari. clip from program: 390 IF D >= 0 THEN 400 X = X + (D - 2 MOD 2) 410 Y = Y + (D - 1 MOD 2) 420 MAZE(X + Y * MAZEWIDTH) = 1 430 X = X + (D - 2 MOD 2) 440 Y = Y + (D - 1 MOD 2) 450 MAZE(X + Y * MAZEWIDTH) = 1
-
One of the most interesting copy protection techniques I came across was on the Atari Microsoft Basic disk. You booted this disk and it automatically loaded into Microsoft Basic. If you then typed a DOS command, you were taken to the usual DOS menu where you could see an AUTORUN.SYS file. But if you copied the AUTORUN.SYS file to another disk, it wouldn't load into Microsoft Basic. It started to load but then simply performed a system reset. It turns out that the clever programmers at Atari created a hidden directory on the disk. Normally, the directory is found on sector $169 and runs for 8 sectors. On the Microsoft Basic disk, there is another directory at $179. This directory points to the real AUTORUN.SYS file which loads when the disk is booted. At address $1082 in the Disk Operating System there is a byte which points to the directory sector. The value of this byte is usually $69. But in the Microsoft Basic version, the byte is $79 which allows DOS to use the hidden directory and load the proper AUTORUN.SYS. As the AUTORUN.SYS loads, one of the final things it does it to place a $69 back into address $1082. Now DOS is pointing to its normal directory which points to a bogus version of AUTORUN.SYS. To copy the correct AUTORUN.SYS to another disk, you could write a basic program which poked $1082 with $79. Then open AUTORUN.SYS for input. Poke $1082 with $69 to reset DOS back to its normal value, and open an output file on another disk. Now simply read and write bytes until end of file. Poke $1082 with $79, issue a close on the first file, poke $1082 with $69 and issue a close for file 2 and voila!, you have a copy of Microsoft Basic that loads properly. Copy Microsoft Basic.atr
- 37 replies
-
- 6
-
- copy
- protection
-
(and 2 more)
Tagged with:
-
I'd like to introduce my latest project: Altirra Extended BASIC, a Turbo-Basic XL compatible interpreter implemented in a banked MaxFlash 1Mbit cartridge. Often when I need to do testing on the physical hardware I just end up using BASIC when the speed and control of assembly isn't needed, as I can just type in the program instead of hooking up the tether to upload one. Problem is, Atari BASIC is missing useful features like hex values, and the Altirra BASIC cartridge is packed like a can of sardines, so I couldn't add anything substantial there. Thus, the idea came to take Altirra BASIC and split it across cartridge banks so that it could be expanded. At the same time, experience had shown that much of the BASIC XL subset wasn't that useful due to the small pool of people who had used it and could run it, but with the extra space I could implement a far more expansive and available language: Turbo-Basic XL. Therefore, once I had gotten the interpreter reorganized into a banked cart, it was then possible to begin reversing TBXL's token format and reimplementing the extended language. Details: Uses a MaxFlash 1Mbit (128KB) cartridge. I chose this cartridge type because of its address-based banking mechanism, which turned out to be faster than data-based banking. Figuring out a usable long jump mechanism was a big obstable to getting this off the ground. Also, I have one of these carts and it's fairly widely emulated in the mega-carts. Currently 7 8K banks are used, 6 of which are split with a 4K shared bank and a 4K variable bank, and the last one being a special full bank for the help system. Half the cartridge is thus currently unused. Unlike Turbo-Basic XL, Altirra Extended BASIC does not occupy memory at MEMLO or memory under the OS ROM. This means that its memory layout is closer to Atari BASIC and it will run on a 400/800, even with 16K. Some TBXL programs are incompatible because they hardcode addresses in the $A000-BFFF range which Altirra Extended BASIC occupies. ATXBasic is binary compatible with Turbo-Basic XL 1.5 save files. However, this means that it is not binary compatible with Altirra BASIC's BASIC XL subset. Conflicting token values, couldn't do both. Some statements like LOMEM have been relocated to new token values above TBXL's. The AltirraOS math routines have been hoisted into the cartridge and reworked for speed. They are not necessarily as fast as TBXL's yet -- haven't touched division or transcendentals yet -- but it should be in competitive range overall. The OS math pack is not used so results are consistent between OSes. I implemented as much of the Turbo-Basic XL language as I could find documented or tokens for, and tried to match TBXL's behavior when it diverged from Atari BASIC, such as the ON statement. One deliberate incompatibility: TIME$ uses the accurate frame rates for NTSC and PAL, no way I was going to use hardcoded 50.0Hz. There is also a built-in help system, which I plan to fill out QBasic-style -- mainly because I am tired of turning away from the Atari to look up OS and hardware addresses. Writing the help directly is a pain, though, so it only has two pages right now. Need to write a help compiler. Preliminary docs are attached, though I still need to edit some old stuff from Altirra BASIC that needs to be changed. All that being said, I could use help testing the TBXL subset. I have a large collection of Atari BASIC programs and have already gotten my classic test suite working (Nazz, SpyPlane, Quadrato, Escape from Epsilon, Valiant, Jenny of the Prairie, etc.) but I have very few TBXL programs. I'd like to get the TBXL subset more solid before jumping into more optimizations or adding more commands, and with Altirra BASIC the community was very good at pointing stuff I didn't know about Atari BASIC. One lengthy TBXL program I've gotten running is Rocket Rescue -- that was fun to fix (PAINT leaks, ugh). atxbasic.bin atxbasic.pdf
- 76 replies
-
- 25
-
'Clear for Action in the age of Sailing' is a game of strategy pitting you against the computer in a pitched naval battle in the age of the great sail battleships of the 18th century. Originally ported to the TI-99 by Walid Maalouli from the TRS-80 I have now ported thst 99 version over to the Geneve. This is a really terrific program and I have made some modifications to better run on the Geneve and take advantage of it's features. The program is now one large program. Malllouli had to break up the program to get it fit on the 99, on the Geneve there is more than enough memory to fir the whole program at once. Also switched some of the menus to 80 column and added more info in the program. there's a run-able version on a single DSK1 that runs from A: and, if you have Geneve MAME package download from my site https://ti99resources.wordpress.com/emulation/, a set of HDs you can just replace the SOFTWARE files with the new SOFTWARE files and execute ABGAMES at the Geneve prompt for the menu to run CFA. To change to run from another source change the variable on line 100 to the new default SAVEFILE area. Lot's of fun and challenging. enjoy CFA10a-UPDATED.zip
-
UPDATE: DEBUGGED VERSION C10A AS DOWNLOAD has version for DSK1 and if you have Geneve MAME package download from my site https://ti99resources.wordpress.com/emulation/ you can just replace the SOFTWARE files with the new SOFTWARE files and execute ABGAMES at the Geneve prompt for the menu to run CFA, ------------------------------------------------------------- 'Clear for Action in the age of Sailing' is a game of strategy pitting you against the computer in a pitched naval battle in the age of the great sail battleships of the 18th century. Originally ported to the TI-99 by Walid Maalouli from the TRS-80 I have now ported thst 99 version over to the Geneve. This is a really terrific program and I have made some modifications to better run on the Geneve and take advantage of it's features. The program is now one large program. Malllouli had to break up the program to get it fit on the 99, on the Geneve there is more than enough memory to fir the whole program at once. Also switched some of the menus to 80 column and added more info in the program. I have the program on the disk to run from a HD. to change to run from disk change the variable on line 100 to the default SAVEFILE area. enjoy CFA10a-UPDATED.zip
- 34 replies
-
- 16
-
So I came across this video by 8-bit Show and Tell on Youtube and I thought it would be interesting to recreate that on the TI, so I did I could not get the pattern to work initially, until I figured out that the line length had to be Odd, not Even, for reasons that are unclear to me. That said, I'm not terribly happy with my code, and I was wondering if there is a way to optimize it somehow... 10 CALL CLEAR :: RANDOMIZE 20 CALL SCREEN(10) 30 CALL COLOR(1,7,10,2,9,10) 40 CALL CHAR(33,"FF7F3F1F0F07030180C0E0F0F8FCFEFF") 50 CALL CHAR(40,"FFFEFCF8F0E0C0800103070F1F3F7FFF") 60 B=B=0 70 FOR I=1 TO 27 :: B=B=0 80 Z=INT(RND+0.5) 90 IF Z=0 THEN CH=33 ELSE CH=40 100 IF B=-1 THEN IF Z=0 THEN CH=34 ELSE CH=41 110 IF I=27 THEN PRINT CHR$(CH)ELSE PRINT CHR$(CH); 120 NEXT I 130 GOTO 70
- 39 replies
-
- 5
-
- graphics
- extended basic
-
(and 1 more)
Tagged with:
-
this is going to be a short blog. @9640News & @InsaneMultitasker has just released the latest version of Geneve Advanced BASIC v 4.08. They cleaned up the last of the bugs and I had a small part of editing the manual. Here is the download. Enjoy. NOTE: Recently I found some with the commands concerning SPRITE usage. CALL DISTANCE gives bad values and CALL SPRITE will error out sometimes with a 'bad value' in the X & Y values even when they are good. ABASIC-408.zip
-
Welcome to this programming forum where you can find help and collaborate. This group is exclusively based on atari 2600 or vcs programming
-
altirra 4.01 Altirra 4.01 questions OK here?
yetanothertroll posted a topic in Atari 8-Bit Computers
Are questions about Phaeron's excellent Altirra emulator OK in here? I'm having trouble pasting text into the Atari LOGO programming language, either through the pointy clicky or the Alt+Shift+V shortcut. It works fine with Atari BASIC. Also from printing from within LOGO, or more specifically, SAVE "P: as the LOGO reference manuals suggest to dump the workspace to the printer, so I can copy it into a plain Windows text file. I'm sure it's pilot error on my part, but after chasing my tail for too long I decided to punt and SAVE "C: to the cassette device and then whip up a script to extract text from .CAS files. LOGO's such a memory hog that I'm trying to avoid sacrificing even 1KB to load a disk or host device driver, so, cassettes. Interestingly enough, when I attempt to paste text into LOGO, then give up and boot ATARIBAS.ROM without first shutting down Altirra, the text immediately pastes into BASIC, as if the pastes were waiting in a queue that LOGO doesn't read. If I try to paste into LOGO, then do a Warm Reset, Cold Reset, or Cold Reset (Computer Only) LOGO does read and display one character from the paste queue each time I reset. Any clues as to what's going on? Maybe LOGO interacts with the keyboard as a game might and polls a register instead of doing a blocking read? Thanks! -
The game "OPERATION SEA WOLF" looks to be missing lines. The games comes from "Computer & Video Games - Yearbook 1985" Did a search here and it dos not look to be present. The scan was really bad, I know there are a few lines that are bad. As it is now, it is missing data for some sounds. Dos anyone have a good copy/scan of it or a complete listing of the game? https://archive.org/details/ComputerAndVideoGamesYearbook1985/page/n127/mode/2up
-
COMPUTEs_Programmers_Reference_Guide_to_the_TI-99_4A_1983 - C.Regena How the Program Works Naturally, some characters were defined in order to create the screen display in this program. Character 97, a, is fe-defined as an open square, 0 , and Character 98, b, is defined as a filled square, • (lines 200-210). When the 8x8 grid is drawn on the screen, it is done by printing the string "aaaaaaaa" eight times (lines 420-440). The character codes as they will appear on the screen are READ in as DATA (lines 120-170). The string array H$(O,l) through H$(lS,1) holds the sixteen patterns of blank (" a") or filled-in ("b" ) squares. The string array H$(0,2) through H$(15,2) holds the corresponding code number or letter as you would use it in your programs later. The flashing cursor is red so that you can tell where you are on the pattern you are designing (lines 180-190). CALL GCHAR(X,Y,C) determines what character number C is at row X and column Y (line 480).
- 29 replies
-
- 1
-
- basic
- extended basic
-
(and 1 more)
Tagged with:
-
Found this excellent BASIC programming tutorial for the ZX-81 - Awesome presentation and observations illustrate the fun of 80's programming in 1K of BASIC on the ZX81 inspiring creativity with a clearly illustrated walk through building a complete Pong game with tips and tricks for optimizing program size and reducing flicker.
-
Hi all, I think that the Atari 5200 is under-represented in the BASIC 10-liners competition, so here is a new easy way to write games for the console: Just released a new beta version of FastBasic, with one big addition: With the help of @vitoco, the PC compiler now supports the Atari 5200! You can read the details in the manual at https://github.com/dmsc/fastbasic/blob/master/a5200.md , and the compiler usage in https://github.com/dmsc/fastbasic/blob/master/compiler/USAGE.md Basically, the Atari 5200 target supports: - All the integer and string functions, including compatible STICK() and STRIG(). - Graphic modes 0, 1, 2, 7 to 13 and 15, with PLOT and DRAWTO support. - DLI and P/M. - PRINT to screen and GET for reading the Atari 5200 keypads. To implement the Atari 5200 support, there are a lot of changes to the compiler under the hood, now the compiler supports multiple targets, and the old "integer only" and "floating-point" compilers are simply different targets now, the targets currently implemented are: Atari 8-bit computers binary loadable files (XEX, with and without floating point), Atari 8-bit computers Cartridge images (CAR, with and without floating point) and the new Atari 5200 Cartridge images (BIN). Also, for advanced users, now the language can be extended without modifying the compiler sources, by writing new target files, there is an example in the compiler manual for writing a new statement and a new function, see https://github.com/dmsc/fastbasic/blob/master/compiler/USAGE.md#extending-the-language There is a few new language extensions: - TAB() function inside PRINT, moves to a column multiple of a number. - DIM can be used to declare normal variables (like "DIM X$, Z"), the variables are automatically initialized to 0 or empty strings. - The comma in prints now uses the TAB function internally, so it behaves more consistently in screen output (but in a different way that Atari BASIC). Well, you can download all the usual files from Github: https://github.com/dmsc/fastbasic/releases/tag/v4.6-beta Attached is a test program, the "joyas" game ported to the Atari 5200 Have Fun! EDIT: final 4.6 version is released: joyas.bas joyas.bin
- 35 replies
-
- 18
-
Hi! I managed to decode Personal Record Keeping to its original Basic Source Code Program. It was done using Web99. I cheated a little to find the startaddress and the endaddress of the LineTable and the startaddress and endaddress of the Basic Program Lines but it's impressive that the binary can be actually decoded. Also the line length doesn't seem to be there at the beginning of each line when compared to a standard binary for a basic program. But i simply read each line til the next 0x00. Once I get Web99 to find the 4 addresses by itsself, the tool will be able to show you the Basic Code of all Command Modules that have been programmed in Basic Language. I worked with the phm3013g.bin file (unzip the .rpk or use the attached file) where I discovered some "HCHAR" in its hexcode with the right tokens infront and afterwards, so I thought, hey this has to be decodable in some way to Basic. After accomplishing it I figured I made it more complicated then necessary since I worked with a GROM dump that had random data in the last 2K of each 8K GROM. Further the 8K blocks on the phm3013g.bin file have a different sort order than the PC99 dumps. I should have started with the PC99 files from the start, as they give you a much cleaner picture. phm3013.grm = phm3013g.bin 0x6000 - 0x77ff = LineNumber Table phm30131.grm= phm3013g.bin 0x4000 - 0x57ff = BASIC Program Lines phm30132.grm= phm3013g.bin 0x2000 - 0x37ff = BASIC Program Lines phm30133.grm= phm3013g.bin 0x0000 - 0x17ff = some other data, probaby the GPL subprograms that RPK provides to TI Basic. It could be that it's incomplete or I got something wrong. Also interesting is the use of special chars for some variables or even Subprogram Names. I had to manually replace a "LineBreak" character as Subprogram name to fix the formatting of the Source Code. Maybe the preferred to have single line characters for variables/subprograms and to save memory and they run out of standard chars. Each TI Basic program files defines the beginning of the Line Number Table in Bytes 2/3 of its binary. The End of the Table in Bytes 4/5. Both Addresses actually point you to a VDP memory. Since we are running the program from cartridge ROM, not VDP, these pointers must be different here. I still need to find those two pointers in such a Grom dump. Any help would be appreciated. In the end I would love to be able to visualize any Basic Source Code, a cartridge contains, and even decode the GPL to GPL Source. Would love to tweak around with Car Wars for example. phm3013g.bin personal_record_keeping_pc99dump.zip personalrecordkeeping-decoded2basic.txt
-
From the BASIC tenliners contest's home page Ready, set, go!!!!
-
Hi! After the long beta period, FastBasic version 4.6 is out! Over the last beta, there are many bug-fixes and optimizations, and also there is a new COLOR() function to PRINT, so you can easily alter the text color in graphics modes 1 and 2: GR.1 : X = 123 ? #6, X ? #6, COLOR(32) X+1 ? #6, COLOR(128) X+2 ? #6, COLOR(160) X+3 This also works in graphics 0, but the only available option is using COLOR(128) to print in inverse video. As always, you can download the ATR, the manual and the cross-compiler from github: https://github.com/dmsc/fastbasic/releases/tag/v4.6 . This is the full list of changes from version 4.5: FastBasic 4.6: The Atari 5200 release! A new major feature: now the FastBasic PC compiler can produce Atari 5200 cartridge images. This version uses a new PC compiler, rewritten to support multiple targets with one binary, you can specify the target with the new option -t:, the available targets are: atari-fp: produces Atari 800 XEX programs, with support for floating-point. atari-int: the old "integer only" version, produces Atari 800 XEX programs that don't use the floating-point package. a5200: produces cartridges for the Atari 5200 atari-cart: the same as atari-fp, but producing cartridge images for the Atari 800. atari-cart-int: the same as atari-int, but producing cartridge images for the Atari 800. Read more about the Atari 5200 port in https://github.com/dmsc/fastbasic/blob/master/a5200.md New language additions There are now PRINT functions that allows formatting the output for PRINT command: TAB() function, moves to a column multiple of a number. RTAB() function to right-align the next argument to a specified column. COLOR() function to specify the text color (or inverse mode) of the text, see #47. DIM can be used to declare normal variables (like DIM X$, Z), the variables are automatically initialized to 0 or empty strings. DATA statements can be placed in ROM instead of RAM (useful for Atari 800 cartridges or Atari 5200). Allows writing to more than one register in a DLI, see #45 Changes in the runtime The comma in prints now uses the TAB function internally, so it behaves more consistently in screen output (but in a different way that Atari BASIC). MOVE and -MOVE are faster, using code in zero-page. Fixes crash when setting DLI, #49 More size optimizations, integer IDE is still less than 8kB of size. Changes to the cross-compiler Rewritten to allow multiple targets by configuration files. Allows building Windows version native and ports the cross-compiler test-suite to Windows. Prints better compiler error messages. Allows defining symbols for the linker and passing arbitrary arguments. Have Fun!
-
Running Atari 2600 programs on my NTSC C64! This is a Cross Compiler for the C64 that runs Atari 2600 programs written in Assembly and BASIC (SuperCharger BASIC and Flashback BASIC) with no changes to the BASIC or Assembly code. This is accomplished by abstracting the Atari 2600 virtual machine RUNTIME including a soft ANTIC blitter like Atari home computers bringing display list technology to the Commodore 64! Double the fun of racing the beam with the classic Television Threading Model on the Commodore 64 allows game loops that repeat 30 or 60 times per second with full screen animation each frame creating faster action scenes than are usually seen with the C64 design. The rich BASIC provides graphics and sound support and a camera object for panning around the virtual world, or with abstract Assembly programming (ASDK api). The next version will add color and audio support, check out some of the Atari 2600 BASIC and Assembly games that will be supported online here: http://relationalframework.com/Atari2600gamesonline.htm The Commodore 64 and the Atari 2600 Video Computer System are the two most popular retro computer consoles, write programs that run on both! Details: The soft blitter, camera object and display lists are running and functional, I dropped the compiled Atari 2600 BASIC Assembly code and the bitmap right into the 64 Framework and it ran the same in the abstracted VM on my Commodore 64. I can cross compile some of the BASIC at this point and am adding the RUNTIME subsystems that are missing. Adding sprites, sound and color next... the Tracker/Sequencer for the TIA chiptunes is going to be tremendous fun on the 6581! C64 Extra tile detail: The VM abstracts each 1 bit textured phat tile the TIA draws into 4 characters on the VIC-II text screen allowing both tiled patterns and background patterns to be drawn, I chose the same graphic for the 4 background tile quadrants in the demo. There's inspiring concept innovation with prior art if a prototype was ever produced!
- 12 replies
-
- 4