STORE/RECALL for SEDORIC

Everything related to BASIC version 1.x (Oric 1 and Atmos) or HYPERBASIC (Telestrat).
Don't hesitate to give your small program samples, technical insights, or questions...
Post Reply
User avatar
Hialmar
Flight Lieutenant
Posts: 318
Joined: Tue Mar 04, 2014 11:25 am
Location: Toulouse, France
Contact:

STORE/RECALL for SEDORIC

Post by Hialmar » Fri Apr 25, 2014 1:59 pm

Hi,

For Maximus' game, I would need to find a solution to recode STORE and RECALL for SEDORIC.
I.e. I want to save an array (and only one array) on the disk and then reload it.

So basically I would need to find the start and end addresses of a Basic array.

Is there a way to do that ?

My first idea is to compute the size of each array and then find them in between ( #9E) and ( #A0) – 1.

However, this wouldn't work with string arrays.

Edit: I have looked at the ROM disassembly for both routines. I think I will do something similar and with this:
http://forum.defence-force.org/viewtopic.php?t=222
I should be able to save data on the sedoric disk.
Hialmar
CEO and Silicium member.

User avatar
Hialmar
Flight Lieutenant
Posts: 318
Joined: Tue Mar 04, 2014 11:25 am
Location: Toulouse, France
Contact:

Re: STORE/RECALL for SEDORIC

Post by Hialmar » Fri Apr 25, 2014 3:01 pm

Ah I think I found a better solution here:
http://www.defence-force.org/computing/ ... htm#chap_6

I'll try this.
Hialmar
CEO and Silicium member.

User avatar
Hialmar
Flight Lieutenant
Posts: 318
Joined: Tue Mar 04, 2014 11:25 am
Location: Toulouse, France
Contact:

Re: STORE/RECALL for SEDORIC

Post by Hialmar » Fri Apr 25, 2014 3:32 pm

Well there is something strange.

Here is my program:

Code: Select all

   1 PRINT "CRETAB"                     
   10 DIM A%(10,10)                     
   15 DIM B%(25)                        
   20 FOR I=0 TO 10                     
   25 FOR J=0 TO 10                     
   30 A%(I,J)=I*J                       
   40 NEXT J,I                          
   60 FOR I=0 TO 25                     
   70 B%(I)=16                          
   75 NEXT                              
   80 OPEN S,"DATA.DAT",0                
   90 PUT 0,10                          
   100 PUT 0,10                         
   110 FOR I=0 TO 10                    
   120 FOR J=0 TO 10                    
   130 PUT 0,A%(I,J)                    
   140 NEXT J,I                         
   150 CLOSE 0                          
I'm creating two numeric arrays, filling them with some data, then I open a file called data.dat, I write the two sizes of the matrix, write the matrix data and close the file.

Each time I run it I get a: ?FILE NOT OPEN ERROR IN 90

I have tried to execute the code interactively and I can save data correctly and load it without any problem.

Code: Select all

                              
  OPEN S,"DATA.TAB",0                   
                                        
  Ready                                                            
  PUT 0,10                              
                                        
  Ready                                 
  CLOSE                                 
                                        
  Ready                                 
  OPEN S,"DATA.TAB",0                   
                                        
  Ready                                 
  TAKE 0,A                              
                                        
  Ready                                 
  PRINT A                               
   10                                   
                                        
  Ready
It's the program that creates this error.
Hialmar
CEO and Silicium member.

User avatar
Dbug
Site Admin
Posts: 2389
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: STORE/RECALL for SEDORIC

Post by Dbug » Fri Apr 25, 2014 6:17 pm

I would help if I had any idea of how this whole thing work :)
Back in the days already I did not like STORE/RECALL on tapes!

Do you really need BASIC type arrays, can't you just use memory buffers and use PEEK/DEEK/POKE/DOKE to access data?

User avatar
Hialmar
Flight Lieutenant
Posts: 318
Joined: Tue Mar 04, 2014 11:25 am
Location: Toulouse, France
Contact:

Re: STORE/RECALL for SEDORIC

Post by Hialmar » Fri Apr 25, 2014 6:23 pm

It would be the best solution indeed but we would need to rewrite the whole programs...

Anyway, Danymou on the CEO forum found out that we apparently need to open the file at the beginning of the program.

Edit: I changed the explanation. Zodiac said that this is because the Sedoric allocates a buffer for IO and this must be done before declarations of other variables.

Here are the modified programs (save and load) in case it's useful for someone else:

Code: Select all

   1 PRINT "CRETAB"                     
   5 OPEN S,"DATA.DAT",0                
   10 DIM A%(10,10)                     
   15 DIM B%(25)                        
   20 FOR I=0 TO 10                     
   25 FOR J=0 TO 10                     
   30 A%(I,J)=I*J                       
   40 NEXT J,I                          
   60 FOR I=0 TO 25                     
   70 B%(I)=16                          
   75 NEXT                              
   85 WAIT 100                          
   90 PUT 0,10                          
   100 PUT 0,10                         
   110 FOR I=0 TO 10                    
   120 FOR J=0 TO 10                    
   130 PUT 0,A%(I,J)                    
   140 NEXT J,I                         
   150 CLOSE 0                          

Code: Select all

                                   
   1 PRINT "LOATAB"                     
   5 OPEN S,"DATA.DAT",0                
   10 DIM A%(10,10)                     
   15 DIM B%(25)                        
   90 TAKE 0,A                          
   100 TAKE 0,B                         
   110 FOR I=0 TO A                     
   120 FOR J=0 TO B                     
   130 TAKE 0,A%(I,J)                   
   135 PRINT A%(I,J)                    
   140 NEXT J,I                         
   150 CLOSE 0
Hialmar
CEO and Silicium member.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest