Jump to content

Photo

Playground


132 replies to this topic

#101 Ksarul OFFLINE  

Ksarul

    River Patroller

  • 4,126 posts

Posted Sun Nov 22, 2015 6:50 AM

Nice use of the Playground. . .



#102 senior_falcon OFFLINE  

senior_falcon

    Dragonstomper

  • Topic Starter
  • 908 posts
  • Location:Lansing, NY, USA

Posted Sun Nov 22, 2015 7:00 PM

@Lee and Dragonstomper I am truly amazed by your skills and tenacity towards Gazoo's challenge. I am so glad that he could see his last challenge accomplished thanks to your help. I think that what you 3 did is holywood material. Was software your hobby or did you work as software developers during your life? You seem to be pros,  

I'm all for making a movie of this story. Just for realism I would like to play myself, and there should be a hot young  starlet written into the script as my romantic companion.  Hollywood, here I come!!

Writing software has been a hobby of mine since the mid 1980's.  I am self taught and have always used the TI99. My lack of training means I'm too dumb to know that something can't be done, and so I just persist until I can find a way to do it.



#103 --- Ω --- OFFLINE  

--- Ω ---

    .....................

  • 10,360 posts
  • TI-99/4A Fanatic
  • Location:In the den playing with my FinalGROM 99!

Posted Sun Nov 22, 2015 7:07 PM

I'm all for making a movie of this story. Just for realism I would like to play myself, and there should be a hot young  starlet written into the script as my romantic companion.  

 

 

Like Mila? 

mila3.jpg



#104 senior_falcon OFFLINE  

senior_falcon

    Dragonstomper

  • Topic Starter
  • 908 posts
  • Location:Lansing, NY, USA

Posted Sun Nov 22, 2015 7:13 PM

 

Hi all,let me introduce myself i was the pround owner of a ti when was twelve,
34 years ago,I'm from Paris,that's why my english is so poor apologize,and you could
be sure that PARIS WILL LIVE.
I wrote this piece of s... because PLAYGROUND was the prog that always wanted to have.
It's basicaly a simple assembler disassembler in playgroung env.
ALL Values are in Hex ,OP codes and commands DATA,END,NEW,AORG,OLD CS1
Let me know what you think about this.

Moije, the entire civilized world stands with the French people in this sad time.

Your english is nothing to apologize for - it is perfectly understandable.  Now if you really wanted to have some fun I could post a letter using my one year of French that I barely passed 50 years ago, but it would not be nice to subject you to such torture!

Can you upload your program all assembled and ready to RUN in BASIC, and also any instructions needed to use the program.  This looks interesting and it is really nice to see someone actually doing something with my program.



#105 moije OFFLINE  

moije

    Combat Commando

  • 7 posts

Posted Mon Nov 23, 2015 9:04 AM

Thank you senior_falcon for your support and congratulations for writting this code.

Now I'm not sure what path to take:

a)

 try to write a real assembler dedicated to PG

 with labels and counting bytes

 or control structures like C/Pascal

b)

 make a RAM emulator from VDP(emulate a 9900 in a ti99!)

 at run time

 or compiled

what do you think BIG KIDS?

I'm really not convinced of my skills for those tasks...


Edited by moije, Mon Nov 23, 2015 9:08 AM.


#106 senior_falcon OFFLINE  

senior_falcon

    Dragonstomper

  • Topic Starter
  • 908 posts
  • Location:Lansing, NY, USA

Posted Tue Nov 24, 2015 8:09 PM

Hi Moije:

It looks very interesting, but so far I have not been able to test out your program.  The BASIC program you included will load but hangs immediately when it is run.  I have no idea how to load a WAV file.  I tried to assemble your source code but every line starts at the first column which makes the assembler very unhappy, and I didn't feel like going through all 1000+ lines to insert spaces or tabs.

Your use of POP is very interesting.  Can you post more information on how this is accomplished. (And don't worry about your English skills!)

Thanks, Harry



#107 moije OFFLINE  

moije

    Combat Commando

  • 7 posts

Posted Wed Nov 25, 2015 12:33 AM

Sorry I correct the post now it should assemble.

I tried the fiad file with classic99 and the wav file with mess.

In mess there is a bug you must type "run" not "RUN" don't

know why????

Ok i understand,my idea was to use this to make

small utilities from XB to SB like merge,peek,poke,sprite,motion,charpat,magnify

with only the loader no page but know i can see that it must use scroll to start

isn't it senior_falcon?


Edited by moije, Wed Nov 25, 2015 6:11 AM.


#108 senior_falcon OFFLINE  

senior_falcon

    Dragonstomper

  • Topic Starter
  • 908 posts
  • Location:Lansing, NY, USA

Posted Fri Nov 27, 2015 9:57 PM

OK, now the source code assembles without error.  But it still doesn't run - I think that is because you have made some changes to the loader to allow a stack.  As it turns out, KDA runs but not every time.  Sometimes it hangs and sometimes it works fine.  I will dig a little deeper into your code to see what you have done.  Your use of a stack seems very useful but it will take me some time to figure out your technique for this.  I have finally found someone who uses fewer comments than I do! Of course, if you had used comments they would probably be in French, so they wouldn't help me anyway.



#109 moije OFFLINE  

moije

    Combat Commando

  • 7 posts

Posted Sat Nov 28, 2015 12:48 AM

As I said the problem is with the interrupt we can't know when it will occcur.

We can restore the original user interrupt but then no possibility to bypass the scroll or the clearscreen.

And so no utility that could return to basic without changing the screen.

For comments in my code,it would take me a realy long time to write them in English.

I know it's very hard to understand assembly without comments,if you want I can try but i'm not sure to continue thru that way:

Assembler;

Ram emu

When I wrote the dsrlnk I found that it uses >83D0 and >83D2 and I wanted to keep the code small

not to reproduce routines like nibble to bin,word to bin,print nibble,print word 

I decided to emu the intel 8086 stack and for furter devel. maybe C like structures as It was designed for

stack based cpus.

ex:

 mov bp,sp       MOV R9,R8

 sub sp,4          AI R9,-4

 mov [sp+2],ax MOV R0,@2(R9)

 mov ax,           LI R0,

...                     do something

 mov sp,bp       MOV R8,R9

 ret                   BL @RET

                        DATA POP 

again from i386 call far ptr that is push segment push offset call seg:off pop offset pop seg

to create sub stack push page push offset.

 

We people from France and You people from USA have a lot in common,we realy appreciate

what you have done and what you are doing for us and Liberty,thanks again.

But this is not the place for that so it will be my last reference to politic in this blog.


Edited by moije, Sat Nov 28, 2015 4:42 AM.


#110 senior_falcon OFFLINE  

senior_falcon

    Dragonstomper

  • Topic Starter
  • 908 posts
  • Location:Lansing, NY, USA

Posted Sat Nov 28, 2015 12:13 PM

Saint Exupery's "Letter to an American" just about says it all. If you have not read this it can be found here:

http://www.sheilaomalley.com/?p=3066

 

You write about returning to BASIC.  Since the scratchpad is overwritten by the playground loader I do not see how you could return.  If you mean that you do not want to modify anything in the VDP before the assembly program takes over, then I think that can be done.  I have disassembled your loader and now will be able to see what is going on.



#111 moije OFFLINE  

moije

    Combat Commando

  • 7 posts

Posted Sat Nov 28, 2015 1:47 PM

This one is more stable but need the interrupt.

The loader itself just overwrites the gpl part of the pad not the basic part >834A is the fac.


Edited by moije, Sat Nov 26, 2016 10:48 PM.


#112 senior_falcon OFFLINE  

senior_falcon

    Dragonstomper

  • Topic Starter
  • 908 posts
  • Location:Lansing, NY, USA

Posted Fri Dec 11, 2015 9:13 AM

I have made a couple of improvements to your modified loader so that it handles the stack pointer differently.  I will test this weekend (hopefully) and then post here.



#113 senior_falcon OFFLINE  

senior_falcon

    Dragonstomper

  • Topic Starter
  • 908 posts
  • Location:Lansing, NY, USA

Posted Sat Dec 12, 2015 9:02 PM

 As written, Playground tricks BASIC into loading code into the scratchpad with an OPEN statement using a string of over 128 bytes in length.  3 things are done in the code that is loaded:

1 -  >27E3 is put on the GPL stack.  This routine clears the screen, loads the standard character set (upper and lower case), sets the colors.

2 -   >4D00 is put on the GPL stack.  This scrolls the screen.  This does nothing useful, except that scroll in BASIC is slow and you are guaranteed to get an interrupt while scrolling.

3 - sets >83C4 to point to an interrupt routine to look at the gpl stack pointer.  Once this routine sees that the TI is doing a scroll it clears the interrupt hook at >83C4 and turns control over to the playground loader starting at >834A where some more initializing is done before going to the page loader.

 

@moije: I understand what you did to modify the pageloader so that you could use a stack for multiple levels of subroutines.  What I do not understand is the reason you modified other parts of MAKEBX.  Is there something about your program that requires it to be initialized differently?

I have modified the pageloader so you do not require INCT R9 before BL @NEXT and have slimmed down the POP subroutine by 2 words.



#114 Davvel OFFLINE  

Davvel

    Chopper Commander

  • 248 posts
  • Married
  • Location:Malta

Posted Sun Nov 20, 2016 11:21 AM

Can anyone explain, in simple terms, how Playground manages to escape from the Sandbox? What is the trigger that makes it execute an assembly language program and back to basic? 

 

Thanks.



#115 Asmusr OFFLINE  

Asmusr

    River Patroller

  • 2,422 posts
  • Location:Denmark

Posted Sun Nov 20, 2016 3:10 PM

Can anyone explain, in simple terms, how Playground manages to escape from the Sandbox? What is the trigger that makes it execute an assembly language program and back to basic? 

 

Thanks.

 

In simple terms the trick is to ask BASIC to open a file with a long (> 128 characters) filename. Because of a bug in the firmware this filename ends up being copied into scratchpad RAM where it overwrites the return address of one of the subroutine calls involved in opening the file. By carefully constructing the filename you can therefore make the subroutine return to an address of your choice. This address can point to machine code you have embedded in the filename, which will then be executed.

 

I hope I got that right. The full explanation is here:

http://atariage.com/...11#entry2849894



#116 Davvel OFFLINE  

Davvel

    Chopper Commander

  • 248 posts
  • Married
  • Location:Malta

Posted Sun Nov 20, 2016 3:25 PM

 

In simple terms the trick is to ask BASIC to open a file with a long (> 128 characters) filename. Because of a bug in the firmware this filename ends up being copied into scratchpad RAM where it overwrites the return address of one of the subroutine calls involved in opening the file. By carefully constructing the filename you can therefore make the subroutine return to an address of your choice. This address can point to machine code you have embedded in the filename, which will then be executed.

 

I hope I got that right. The full explanation is here:

http://atariage.com/...11#entry2849894

 

Thanks Rasmus, this is exactly what I was looking for.



#117 senior_falcon OFFLINE  

senior_falcon

    Dragonstomper

  • Topic Starter
  • 908 posts
  • Location:Lansing, NY, USA

Posted Sun Nov 20, 2016 8:49 PM

Can anyone explain, in simple terms, how Playground manages to escape from the Sandbox? What is the trigger that makes it execute an assembly language program and back to basic? 

 

Thanks.

Couple of points:

You cannot return to BASIC.  More than half the scratchpad is overwritten and there is no way (at least that I can think of) to figure out where you were in the BASIC.

James' method had to ask what the console version was.  Turns out you can just put the address of the assembly code in >83C4 and let the interrupt routine start the program.



#118 moije OFFLINE  

moije

    Combat Commando

  • 7 posts

Posted Mon Jul 17, 2017 1:51 PM

For big kids only!

My Kid Kit.

 

 
Ked
Spoiler
 

Attached Files


Edited by moije, Mon Jul 17, 2017 9:46 PM.


#119 RickyDean ONLINE  

RickyDean

    Dragonstomper

  • 644 posts

Posted Mon Jul 17, 2017 3:13 PM

For big kids only!

My Kid Kit.

I'm getting this when clicking "

Sorry, you don't have permission for that!"

#120 Sinphaltimus OFFLINE  

Sinphaltimus

    Stargunner

  • 1,920 posts
  • Distracted at the Keyboard
  • Location:Poconos, PA

Posted Mon Jul 17, 2017 5:23 PM

 

I'm getting this when clicking "

Sorry, you don't have permission for that!"

 

Same here..

 

Sorry, you don't have permission for that!

 

[#10171]

You do not have permission to view this attachment.


Need Help?



#121 arcadeshopper OFFLINE  

arcadeshopper

    River Patroller

  • 2,468 posts
  • Location:Portland, Oregon USA

Posted Wed Jul 19, 2017 2:30 PM

you have to be logged in to dl attachments?  I got it fine just now



#122 Tursi OFFLINE  

Tursi

    River Patroller

  • 4,746 posts
  • HarmlessLion
  • Location:BUR

Posted Fri Jul 21, 2017 1:02 AM

I was getting that same error yesterday, and I verified I was logged in. It worked just now, so transient error, I guess.

#123 kommissar OFFLINE  

kommissar

    Combat Commando

  • 2 posts

Posted Sat Aug 19, 2017 9:24 PM

I just noticed playground a couple months ago after downloading a newer copy of classic99.  Amazing!!  Congratulations to James Abbatiello and Harry Wilhelm.  What a difference this would have made 35 years ago.

 

I tinkered with the loader a little bit to make a program that could be typed in by hand, and here is the result - the Mini-Memory Module lines demonstration program for TI Basic on a bare console.

 

If anyone is interested I'll upload the source code later. 

 

 

Attached Files



#124 senior_falcon OFFLINE  

senior_falcon

    Dragonstomper

  • Topic Starter
  • 908 posts
  • Location:Lansing, NY, USA

Posted Sun Aug 20, 2017 8:54 AM

That is amazing!  I would never have dreamed that something like this could be typed in from the keyboard.  How did you manage to do that?

 

(edit) The thing I don't understand is how you deal with ASCII values that cannot be entered from the keyboard.  I have some ideas but they seem kind of cumbersome.

Something that can be typed in like this would have been a big hit in Compute! magazine back in the 1980's.  And don't forget, it can be saved to cassette!


Edited by senior_falcon, Sun Aug 20, 2017 2:14 PM.


#125 Tursi OFFLINE  

Tursi

    River Patroller

  • 4,746 posts
  • HarmlessLion
  • Location:BUR

Posted Sun Aug 20, 2017 9:12 PM

I just noticed playground a couple months ago after downloading a newer copy of classic99.  Amazing!!  Congratulations to James Abbatiello and Harry Wilhelm.  What a difference this would have made 35 years ago.

 

I tinkered with the loader a little bit to make a program that could be typed in by hand, and here is the result - the Mini-Memory Module lines demonstration program for TI Basic on a bare console.

 

If anyone is interested I'll upload the source code later. 

 

 

 

Finally got a chance to run this... just so bloody amazing. :) Well done!






0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users