Jump to content

Fredrik Öhrström

Members
  • Posts

    72
  • Joined

  • Last visited

Profile Information

  • Gender
    Male
  • Location
    Sweden

Recent Profile Visitors

4,322 profile views

Fredrik Öhrström's Achievements

Star Raider

Star Raider (3/9)

82

Reputation

  1. Try this: Add line 1 and 2 below to your program. Run and there is an error message and you have jumped from x basic to ti basic. 1 !@P- 2 CALL COLOR However this does not work if you have the memory extension connected.
  2. Heh! I can confirm it does work! Paste the first program for standard ti994a into nivelleringslikaren editor and download basic.bin. Put it on an empty dsk: imgtool put v9t9 sandbox.dsk basic.bin ESC mame ti99_4a -window -ioport peb -ioport:peb:slot8 bwg -flop1 sandbox.dsk OLD DSK1.ESC RUN Bam! An animated Hello World runs over the screen! 😁 You can even list the program before you run it.
  3. Now come to think about it, the sandbox escape described here is just a string after open, and with the current editor we can generate any string. I used binary string values for my compressed Holidays demo some years ago. I took the first example program here and genereated three ti994a_basic compatible programs: https://forums.atariage.com/topic/162941-assembly-on-the-994a/page/11/?tab=comments#comment-2849894 And unrolled three strings: ... for standard TI994a 100 OPEN #1:"\x03\x75\x80\xA8\xA5\xAC\xAC\xAF\x8C\x80\xB7\xAF\xB2\xAC\xA4\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x82\x02\x00\x02\xF4\x02\x0B\x40\x00\x06\x00\x13\xFA\xD0\x6F\xFC\x00\x0A\x11\x17\xFC\xD7\xE0\x83\xF7\x02\x02\x83\x4C\xD7\xCB\x05\x8B\xD0\x72\x13\xF2\xDB\xC1\xFF\xFE\x10\xFB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" ... for alt TI994a 100 OPEN #1:"\x03\x72\x80\xA8\xA5\xAC\xAC\xAF\x8C\x80\xB7\xAF\xB2\xAC\xA4\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x82\x02\x00\x02\xF4\x02\x0B\x40\x00\x06\x00\x13\xFA\xD0\x6F\xFC\x00\x0A\x11\x17\xFC\xD7\xE0\x83\xF7\x02\x02\x83\x4C\xD7\xCB\x05\x8B\xD0\x72\x13\xF2\xDB\xC1\xFF\xFE\x10\xFB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" ... for v2.2 TI994a 100 OPEN #1:"\x03\x4e\x80\xA8\xA5\xAC\xAC\xAF\x8C\x80\xB7\xAF\xB2\xAC\xA4\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x82\x02\x00\x02\xF4\x02\x0B\x40\x00\x06\x00\x13\xFA\xD0\x6F\xFC\x00\x0A\x11\x17\xFC\xD7\xE0\x83\xF7\x02\x02\x83\x4C\xD7\xCB\x05\x8B\xD0\x72\x13\xF2\xDB\xC1\xFF\xFE\x10\xFB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" Anyone care to test if the generated program escapes the sandbox?
  4. Yes @Retrospect! I noticed that it is possible to generate code that crashes in weird ways. I could add some cool hacking features, if you give me a hint of what we would like todo. 1) Is it possible to specify the loading address for the basic program in memory? Then we could create a basic program that loads into a nice image directly (unless we have a memory expansion?). 2) I can compress the program by re-using line number to content pointers, to further compress the program? Or execute parts of a previous line? 3) The line lenghts are already ignored! Woho! 4) Put some hard coded bytes somewhere in the program block, just because. So that we can write the Basic sandbox escape in this editor.
  5. Very nice! Compiles quickly and runs great!
  6. Many thanks! Is there some example assembler somewhere on how to read the tipi mouse?
  7. What are the options for connecting a mouse to a TI 99/4A ? Any method that is more common than the others? Thanks!
  8. You can also try the generated tape sounds from this page: http://nivelleringslikaren.eu/ti994a_basic
  9. I am glad you like the game! Actually the game's name is, as you say ChampioMax, but as an in-game joke, I made the game make a spelling error when it starts. It initially prints ChampioMask (mask means worm in swedish) and write "FÖRLÅT, FEL" which means (sorry, wrong) and then corrects it to ChampioMax.
  10. If you need a reference sound you can try http://nivelleringslikaren.eu/ti994a_basic/ The sound volume in your tv/monitor should be approx the same for the tape sound as the beeps when the machine is turned on.
  11. I believe the 9900 cpu is a bit stupid, it will always perform a read before a write.
  12. The linked VDP routine is just a blwp into the ROM routines. The actual code is: LI R0,xxxx LI R1,yyyy LI R2,zzzz BLWP >wwww B *R11 Then each subroutine, patches this code! ? With particular values for x,y,z and w suitable for VMBW,VMBR,PEEKV and POOKV. Then there is simple test case: Line 30: fill screen memory with a pattern. Line 40: Use VMBR to copy 768 VDP bytes into console expansion memory at 9478. Line 60: fill screen with a different pattern. Line 70: Use VMBW to copy the screen into offset 10246. Loop 80-90: Copy the two saved screens into the VDP memory using vmbw, flipping back and forth. The flip is quick, since the ROM routine is pretty quick, at least in comparison to the basic CALL VMBW, which is sloooow, and of course the LOADS to patch the code takes time as well as the actual LINK call. But I have forgotten why I do a CALL POKEV(-30971,0) maybe I set some color?
  13. In 1988 I wrote a CALL LOAD/LINK implementations of VMBW, VMBR,POKEV and PEEKV for normal Extended Basic + Memory expansion. You can read the X-basic program on page 9 in this pdf: http://nivelleringslikaren.eu/nittinian/nittinian_1988_nr3.pdf
×
×
  • Create New...