0 ASCII DATA [TLIST ] 3
1 ASCII PROG [Util Menu] 30
2 ASCII DATA [Advitm ] 10
3 BINARY DATA 29
4 ASCII PROGRAM SECRET 26
5 ASCII DATA [492Scope ] 18
6 BINARY DATA [4924 dupe] 33
7 ASCII PROG [Bubl Sort] 30
8 ASCII PROG [TapeHeadr] 11
9 ASCII PROG [AlphaSort] 14
10 ASCII PROG [QuickSort] 12
11 ASCII PROG [TLIST EXT] 15
12 LAST 3
I downloaded version 38 and tried MARK and SAVE which worked.
But looking at your MARK code, I don't think the Tape Emulator should automatically find the LAST file.
The way Tek BASIC works - you need to first find the file you want to use to MARK, then execute the MARK command which will start at that file that you did a FIND and MARK one or more new ones based on the number of files requested, then a new LAST file is created after the last MARKed file.
You are warned in the documentation - that MARKing at an existing file will replace that file and you will also lose access to all subsequent files.
Obviously an issue with our current Tape Emulator is the lack of TLIST command - so I had to know which file was the LAST file before testing your MARK command. Your code automatically started with the LAST file - but I still have no way of knowing what file(s) were created as Tek BASIC does not report that.
I believe we should go back to secondary address 19 for the 'new' TLIST and use secondary address 9 for the change directory command which aligns with the published uses for secondary commands.
I propose the 'new' TLIST would use the INPUT@5,19:A$ format and require PRI@5,9:"directory" command be the preceding command.
To make this work with an INPUT command - the Tape Emulator would return one filename string in filenumber numeric order with each INPUT@5,19:A$ command.
The 'TLIST' code in the menu program would print A$, then check character 8 for an "L", if not found, continue with another INPUT command.
Example 'TLIST' program for Utilities: (tape emulator responses to each INPUT@5,19:A$ in 'code' section)
610 PRINT@5,9:"UTILITIES"
620 INPUT@5,19:A$
630 PRINT A$
640 IF SEG(A$,8,1)<>"L" THEN 620
650 ENDCode: [Select]0 ASCII DATA [TLIST ] 3
1 ASCII PROG [Util Menu] 30
2 ASCII DATA [Advitm ] 10
3 BINARY DATA 29
4 ASCII PROGRAM SECRET 26
5 ASCII DATA [492Scope ] 18
6 BINARY DATA [4924 dupe] 33
7 ASCII PROG [Bubl Sort] 30
8 ASCII PROG [TapeHeadr] 11
9 ASCII PROG [AlphaSort] 14
10 ASCII PROG [QuickSort] 12
11 ASCII PROG [TLIST EXT] 15
12 LAST 3
We should be able to use part of my original ContinuedDev program TLIST which iterated through each filenumber in sequence - since the SdFAT order is not filename sequential.
One advantage of this 19 command returning a single file header at a time - is it could also be used after a FIND command to return the header for THAT file.
Maybe there is no need to restrict the prior command to an INPUT@5,19:A$ command? The filename (header) of the current file is a global variable in Tape Emulator.
If the program intent is to do a TLIST - then perform the DIRECTORY COMMAND, then TLIST to get file 1 to the LAST file headers. If after the directory command there is no filename (NULL filename), then a subsequent TLIST would do a FIND 1 to get the header and subsequent additional TLIST would FIND incremental headers.
Ok, fair enough, but I also just had the thought that any process that alters the file names could also update the file 0? This would include MARK, SAVE where the file is changed from NEW to ASCII PROG and KILL.
BTW, by what process are files changed to ASCII DATA or BINARY DATA? Is it when a NEW file is written to by INPUT or WRITE? What about BINARY PROG?
gc_0x7B_h: received parameter: 7
searchForFile: searching /GAMES/...
searchForFile: found file 7
searchForFile: done.
stgc_0x7B_h: found: 7 ASCII PROG [HILBERT ] 3
stgc_0x7B_h: type: P
Executing secondary address command: 64
stgc_0x64_h: started OLD/APPEND handler...
stgc_0x64_h: reading /GAMES/7 ASCII PROG [HILBERT ] 3...
Good to hear that you 4052 is up and running again!
I have downloaded your new ZIP (v6) containing the SD card programs.
I also ran your modifier Hibert program. It loaded much quicker and shows 19kb of memory available when the program is loaded. I couldn't list the program as the after line xxx I got an error telling me the line was too long, however the program ran and drew the matrix.
It also has a problem with the CD(old 19 or new 9) command in the folder menu programs - it gives error 69 most of the time.
If I RUN at that line number (like I do for the INPUT command hangs) it typically completes that command and continues.
Some of my problems with input are still around timing - but I now have Adventure working on my 4052!
I found some Commodore 64 characters with ASCII values above 127 in my data files - I posted the new SD card image 7 on Store.
MEMORY IS FULL IN LINE 16 - MESSAGE NUMBER 39
I just tried to run your program file no. 53 in "Adventure". Unfortunately it didn't run. I got the following:Code: [Select]MEMORY IS FULL IN LINE 16 - MESSAGE NUMBER 39
I ran MEM and it returned 308. There was evidently insufficient space to DIM the variables in that statement. That seemed odd considering the file is 21kb long. I deleted the program from memory and MEM returned 30699. I then loaded up the file and it returned 8963. After another run I got the same as above.
I then tried file 51 which created files 0-9 but stopped on file 10. The output is shown in the photo. Yes, the PRINT command is present and was added in version 05.34. It writes to files marked 'DATA'. It will require amending to further distinguish between files of type ASCII DATA and type BINARY DATA.
Support has been added for CALL "BSAVE" and CALL "BOLD" The command CALL "BSAVE" requires the Binary Program Loader cartridge on the 4052 and writes to files of type type NEW or BINARY PROGRAM. In the same way that SAVEing to NEW renames the file to ASCII PROG, BSAVE renames a NEW file to BINARY PROG. The counterpart, CALL "BOLD" reads from type BINARY PROGRAM.
Detection of IFC to clear the interface to idle state has also been added.I am holding fire on uploading it until I have had the chance to fully analyse the information in your latest post and LA traces. Thank you for the providing the details.
SRQ - this seems very odd. I am now using the same adapter board and SRQ goes HIGH on mine and stays HIGH on all the traces. When you read the LA trace was anything else connected? BTW, the layout I created uses direct writing to Arduino ports to change pin states but doesn't use interrupts.
Thank you for providing the traces and details of your captures. I have uploaded 0.05.40 so you can test whether the IFC handling works and helps at all, however once I have more fully analysed the details in your post (e.g. the CD issue), there may be other amendments.
I tried your new version on my 4054A - no difference.
Typing INIT hangs the 4054A and Tape Emulator.
Label >Time usec Time msec DATA DATA ASCII ATN NDAC NFRD EOI DAV REN IFC
Base > Relative Absolute Hex Hex Bin Bina Bina Bin Bin Bin Bin
__________ _______ ________ ____ ___ ____ ___ ____ ____ ___ ___ ___ ___
-4 505.4 0.505 82 7D 0 0 1 1 1 0 0
-3 8 0.505 00 FF 0 0 1 1 1 0 0
-2 40 0.505 20 DF 0 0 1 1 1 0 0
-1 8 0.505 A0 5F 0 0 1 1 1 0 0
0 2.008 0.507 A0 5F 0 0 1 1 0 0 0
1 78.74 0.586 A0 5F UNT 0 0 0 1 0 0 0
2 11.45 0.598 A0 5F 0 1 0 1 0 0 0
3 104 0.598 A0 5F 0 1 0 1 1 0 0
4 23.35 0.621 A0 5F 0 0 0 1 1 0 0
5 30.46 0.652 A0 5F 0 0 1 1 1 0 0
6 245.1 0.897 00 FF 0 0 1 1 1 0 0
7 40 0.897 58 A7 0 0 1 1 1 0 0
8 8 0.897 DA 25 0 0 1 1 1 0 0
9 2.176 0.899 DA 25 0 0 1 1 0 0 0
10 111.9 1.011 DA 25 PRI 5 L 0 0 0 1 0 0 0
11 11.44 1.022 DA 25 0 1 0 1 0 0 0
12 104 1.022 DA 25 0 1 0 1 1 0 0
13 23.36 1.046 DA 25 0 0 0 1 1 0 0
14 29.90 1.076 DA 25 0 0 1 1 1 0 0
15 214.5 1.290 CA 35 0 0 1 1 1 0 0
16 8 1.290 00 FF 0 0 1 1 1 0 0
17 48 1.290 80 7F 0 0 1 1 1 0 0
18 8 1.290 84 7B 0 0 1 1 1 0 0
19 2.048 1.292 84 7B 0 0 1 1 0 0 0
20 38.56 1.331 84 7B FIND 0 0 0 1 0 0 0
21 11.44 1.342 84 7B 0 1 0 1 0 0 0
22 104 1.342 84 7B 0 1 0 1 1 0 0
23 23.36 1.366 84 7B 0 0 0 1 1 0 0
24 30.58 1.396 84 7B 0 0 1 1 1 0 0
25 284.6 1.681 84 7B 1 0 1 1 1 0 0
26 80.70 1.762 84 7B 1 0 0 1 1 0 0
27 385.1 2.147 80 7F 1 0 0 1 1 0 0
28 8 2.147 00 FF 1 0 0 1 1 0 0
29 40 2.147 DF 20 1 0 0 1 1 0 1
30 40 2.147 FF 00 1 0 0 1 1 0 1
31 8 2.147 FF 00 1 0 0 1 1 0 1
32 8 2.147 DF 20 1 0 0 1 1 0 1
33 18.00 20.147 DF 20 1 0 1 1 1 0 1
34 136 20.147 DF 20 1 0 1 1 0 0 1
35 23.64 20.171 DF 20 1 0 0 1 0 0 1
36 11.44 20.182 DF 20 1 1 0 1 0 0 1
37 104 20.182 DF 20 1 1 0 1 1 0 1
38 31.11 20.213 DF 20 1 0 0 1 1 0 1
39 188.4 20.402 DF 20 1 0 1 1 1 0 1
40 75.22 20.477 D7 28 1 0 1 1 1 0 1
41 8 20.477 00 FF 1 0 1 1 1 1 0
42 8 20.477 00 FF 1 0 1 1 1 0 0
43 40 20.477 80 7F 1 0 1 1 1 0 0
44 8 20.477 CD 32 1 0 1 1 1 0 1
45 24 20.477 CF 30 1 0 1 1 1 0 1
46 8 20.477 FF 00 1 0 1 1 1 1 1
47 8 20.477 DF 20 1 0 1 1 1 1 1
48 8 20.477 CD 32 1 0 1 1 1 1 1
49 8 20.477 CD 32 1 0 1 1 1 0 1
50 8 20.477 CD 32 1 0 1 1 1 0 1
51 1.120 20.478 CD 32 1 0 1 1 0 0 1
52 68.59 20.547 CD 32 2 1 0 0 1 0 0 1
53 11.44 20.558 CD 32 1 1 0 1 0 0 1
54 104 20.558 CD 32 1 1 0 1 1 0 1
55 8.176 20.566 CD 32 1 1 0 0 1 0 1
56 8 20.566 80 7F 1 1 0 0 1 0 0
57 8 20.566 00 FF 1 1 0 0 1 0 0
58 40 20.566 70 8F 1 1 0 0 1 0 0
59 8 20.566 F2 0D 1 1 0 0 1 0 0
60 24 20.566 FB 04 1 1 0 0 1 0 1
61 8 20.566 FF 00 1 1 0 0 1 1 1
62 8 20.566 FF 00 1 1 0 1 1 1 1