Jump to content

diydave

New Members
  • Content Count

    15
  • Joined

  • Last visited

Posts posted by diydave


  1. Got there in the end.  Gave it the full 3BE3 at first but this resulted in an adventure datafile bigger than before (61), which the Adventure Cartridge did not recognise.  After some to-ing and fro-ing, I tweaked the file sized limit to just 30D0.  This enabled the COPY program to load the cassette file and resulted in a DISK Adventure data file the same size (50) as the previous files. This was accepted by the Adventure Cartridge and all is well. 

     

    EURIKA in fact.  I have learned more about the use of  TI Assembly Language in the last few days than I did reading the whole manual nearly 40 years ago!  There, but for Covid sheltering, I might have remained!!

     

    Many thanks

    • Like 3

  2. Thanks. Eventually found some CALL FILES info in the DISK MEMORY instructions (including the 'NEW' warning which I didn't use but got away with!) but your explanation is far more useful.  

    So I have just 83 bytes in hand over the 30C0 limit to load the SI2 data from my Cassette file... hope your 30C0 allowance was generous as timewise SI2 takes about 20% longer to load! 

    Here goes 3BE3. 


  3. Hi mizapf. I'm back again already!  No probs copying Count and Savage Island 1 to DISK but I have found that the Savage Island 2 file, while loading from cassette quite satisfactorily with the Adventure cartridge in place, results in an immediate 'Data Error' message when loading with the 'COPY' program.

     

    Reading between the lines, I suspect this is due to the 30C0 data buffer size issue referred to above.  I shall play with increasing this but in passing am wondering what the limit is?  You say that CALL FILES(3) corresponds to an upper limit of 37D7 (being less than A0D0 + 30C0) but that CALL FILES(1) can accommodate 3B8F. But what is the upper limit for CALL FILES(1)?  Oddly enough I can find no reference to CALL FILES() command in any of my TI BASIC, EXTENDED BASIC or E/A documentation.  Where should I be looking?

    Cheers


  4. Into every life a little luck must fall... it seems I was very fortunate in getting the program to work with The Count' via E/A (and via TI Basic) because it failed with Savage Island.  Fortunately, however, Mizapf's memory came to the rescue with his timely recollection that a CALL FILES(1) was needed (only possible via Basic) to handle what must be  larger Savage Island files.  The Count file must have just neatly fitted below the 37D7 limit.

    Nothing like errors to improve understanding!

    • Like 1

  5. Thanks miz.  Very helpful, though I don't, yet, quite grasp all the implications. Suffice it to say your prog works from E/A as is (notwithstanding the lower max video ram address) so at the  moment its a case of "if it works, don't fix it".

    I shall continue to play with the TI Basic version by way of appreciating these variables and will keep an eye on this forum to see if anybody comes up with a way of measuring those file bytes.  At the moment I am just relieved to find that the Cassette DSR has to complete its operation before the rest of the program continues!

    Cheers.


  6. Don't apologise mizapf... I'm learning fast!  You were clearly a prodigy!

    BINGO! Changing the 22 to 23 in line 29 (thanks H A for explaining the purpose of that section) did the trick and The Count datafile loaded back in when requested by the Adventure Cartridge.  Nothing fundamentally wrong with your early work miz!  Just shows how precise Assembly Language has to be.

     

    For my own education, if you have the time, 

    a) What does changing byte 9 in the PABDAT data (the 'offset') from 60 to 00 actually do to get the prog to run under the different scenarios (TI Basic or E/A)?

    b) Can you elaborate on the '>30C0' issue?   What is that entity actually controlling and what would be the effect of varying it and by how much?

     

    Cheers

    David 

    • Like 2

  7. Thanks H A.  Yes, I thought of that and had an appropriate disk in place before pressing ENTER.  But there was no disk drive action at all on doing so, just a return to TI Basic or E/A. (My subsequent attempts at a save after the program terminated were just experimental to see if anything that had been loaded from CS1 was independently saveable.)

     

    I note that the total length of PAB2 + DSK1.SAV-ISL2  would appear to be 23 bytes if the 'period' in the file name counts as a byte. But line 29 indicates 22 bytes. Could this be an issue?

     

    Could I check for some disk action by taking out the PABDAT and CS1 related lines from the program, leaving just the DISK DSR related lines and running those?

     

    • Like 1
    • Thanks 1

  8. Update 2.  First thanks to all for great help. I am beginning to get to grips with the concepts.

     The Unresolved References error was a typo on my part.  I now have two versions of the assembled program up and running, one from E/A and the other from TI Basic with E/A cartridge in place.  Both correctly load the file from CS1 ending with the usual prompt "Data OK, Press Cassette Stop and then press ENTER."   

    On pressing 'ENTER':-

    If running from TI Basic (cyan screen throughout) it then returns to a standard Basic prompt '>'.

    If running from E/A 'load and run' (colors as in H Auto above) the screen reverts to blue with a 'Press any key to continue' prompt: doing so returns to the normal E/A options screen. (At no point does the disk run).

    Subsequent attempts to 'save' to DISK anything that has been loaded at that point fail in either scenario.

     

    Its almost as though the program has run on and finished while the cassette is loading.... is a 'PAUSE' until the cassette has finished loading required or is this a case of adjusting the 30C0 value referred to above?   I did try and COPY Savage Island to check but this behaved similarly when loading Sav Isl 1 and gave a quick 'Error in Data' if starting the tape at where a second file (Sav Isl 2?) appears to start shortly after Sav Isl 1 finishes. ( I never got as far as part 2 all those years back!!)

     

    Apologies if I am overstaying my welcome but any guidance ideas would be most welcome.

     

    Cheers

    David

    • Like 2

  9. Update.  Found how to insert a line. Gave 'COPY' label its own line and reassembled. No joy but I now don't think the program name is the issue as the  Error Message is now 0D  "Unresolved references".  I note VWTR is referenced but not used in the program. Is that relevant?


  10. Thanks mizapf.  Its going to take my 78 year old brain some time to catch up with your 15 year old one but I am enjoying the challenge!  I am trying your prog out on The Count, writing to 'dsk1.countdat' which has the same word length as your sav-isl2 file so do not expect that to be an issue.  Not at all clear yet about file length (is >30C0 a finishing address?).  I do have an immediate problem you may be able to help with however.  I have assembled your prog without errors and the object file loads back in correctly but when I try to run it, entering COPY, I get a 'program not found' error.  I note the COPY label at line 7 has an LI on the same line... should the program label be on a blank line to stop this?  (I haven't yet found how to get the editor to insert a blank line into the source code to test this; RETURN just acts like Funct DOWN and Funct INSERT seems to affect only individual letters/numbers!)

     

    Other points demonstrating my ignorance... a)Lines 9 and 10 (MOVB *R1+,*R0+) are identical... correct?  I assume this section loads 'CS1' character by character into Workspace?) 

                                                                    b)LI R0,>03AD, line 16 is intentionally not LI R0,>03A0 per lines 12 and 27?  (because the former refers to the Cassette DSR PAB and the latter 2 to the Disk DSR?)

                                                                    c)What length is being defined by 'LI R2,22' in line 29?

    Cheers

    David

    • Like 1

  11. 2 minutes ago, arcadeshopper said:

    Fyi there's a new device out that will resolve this issue easily.   if you are interested..  also allows your TI to natively telnet, "browse the internet" grab files from websites/ftp  etc.. 

    https://www.arcadeshopper.com/wp/the-ti-raspberry-pi-connection/

     

    also I'd be happy to copy my adventures disk and mail them to you if needed.. lmk

     

    Greg 

    Thanks Greg. I'll bear that in mind.

    David


  12. Wow! Am I glad I joined this forum! Great stuff. Many thanks Tursi and Home Automation for your helpful responses.  Yes I do have Editor/Assembler cartridge and will gratefully type in your code, mizapf... thanks so much. 

    I had every intention of mastering TI Assembly Language in the 80's but a young family and the appearance of IBM PC's, DOS and the great DEC microvax systems kind of put the kibosh on that aspiration... the manual remains on its shelf barely opened. Time to dust it off!


  13. Hi.  I have recently unearthed my old TI99/4A and challenged my grandchildren with Scott Adams Adventure games.  They were fascinated but soon lost interest because of the need to frequently reload the data bases from tape!  (Lack of instant gratification!!!) I have a PEB with working disk drive and would like to transfer the data tapes to disk to speed up the data load but cannot find a way to do it with standard TI kit.  The disk drive manual suggests a simple basic program to transfer data from cassette to disk... open a cassette file and a disk file, input a record from the tape, write ('print') record to disk file and loop until done.  Unfortunately it fails at the first line... 100 Open £1: "CS1" (read 'hash' for the £ sign) because Ext Basic requires file parameters before it accepts the command and I have no idea what the cassette file parameters are.. or whether the records are numerical or strings.  Even if I knew, I am not clear how this simple program can synchronise reading the records with the writing unless the whole tape is a single record.   The files are not 'PROGRAM' type because you cannot load them with OLD.

     

    Anybody come across a solution to this? 

     

    David

×
×
  • Create New...