Jump to content
IGNORED

Classic99 Updates


Tursi

Recommended Posts

You could have different classic99.ini files. Rename as you need them.

 

Or you could have different directories, each with a Classic99 installation (footprint is (can be) relatively small).

...

 

Thanks, those are great ideas. I can say I never once opened up the c99 ini. I should probably read the docs for it as well. That might very well be all I need.

...

 

You could set up a single “profile” or “ini” folder under “Classic99” and each time you change Classic99 parameters (FIAD folders, DSK images, current cartridge, ...), exit Classic99 and copy “classic99.ini” to a new or existing INI file in the “profile” folder, with a name that will remind you of its configuration. You could then set up a Windows script file (batch file) that you would run to allow you to choose which configuration profile to copy to the Classic99 folder before the script starts Classic99.

 

...lee

  • Like 4
Link to comment
Share on other sites

 

 

You could set up a single “profile” or “ini” folder under “Classic99” and each time you change Classic99 parameters (FIAD folders, DSK images, current cartridge, ...), exit Classic99 and copy “classic99.ini” to a new or existing INI file in the “profile” folder, with a name that will remind you of its configuration. You could then set up a Windows script file (batch file) that you would run to allow you to choose which configuration profile to copy to the Classic99 folder before the script starts Classic99.

 

...lee

 

 

Brilliant Lee! Sorry I've gotten lazy. I certainly can do that and it would definitely achieve the same goal I had in mind. Thanks for jump starting my brain towards a reasonable solution to my feature request. Still, I don't think having this as part of c99's functionality is a bad thing, but now I have a work around to develop for myself. :) Assuming I can get this done over the weekend, I'll share of course.

 

EDIT: Also, I can probably automate a lot more. Like have C99 launch from the script so when I close c99 the script will continue, asking for a file name for the new ini before copying and renaming. :) :) :)

Edited by Sinphaltimus
  • Like 2
Link to comment
Share on other sites

Brilliant Lee! Sorry I've gotten lazy. I certainly can do that and it would definitely achieve the same goal I had in mind. Thanks for jump starting my brain towards a reasonable solution to my feature request. Still, I don't think having this as part of c99's functionality is a bad thing, but now I have a work around to develop for myself. :) Assuming I can get this done over the weekend, I'll share of course.

EDIT: Also, I can probably automate a lot more. Like have C99 launch from the script so when I close c99 the script will continue, asking for a file name for the new ini before copying and renaming. :) :) :)

 

I had thought of launching Classic99 from the script, but not asking about saving a profile after exit from Classic99. That last step might get cumbersome, though.

 

...lee

Link to comment
Share on other sites

Ok, thanks Tursi, Programs are from floppy disks in EA3, EA5 or XB until now, anyway i'll try this :)

 

EDIT:

Oh yeah... i tried and it working nice at least in XB i solved the problem ! ;)

 

To make an Editor/Assembler version, copy to a new entry and change the "O" line: rom1=O|0000|0002|Select EA

 

The numbers there select a built-in cartridge, numbered starting at 0. The first "0000" means the first group, which is 'Apps', and the "0002" selects the third entry (counting from 0), which is Editor/Assembler. The tag at the end is ignored but I fill it in so /I/ remember what it was. ;)

  • Like 3
Link to comment
Share on other sites

Hi Mike.

 

Just wanted to poke you about the "profiles" request. So many new games and programs coming out, so many times I have to changes DSK1 to something else either FIAD or DSK when I'm not done using the previous configuration.

I keep wishing for profiles, but not yet...

Or did I miss them being added somewhere along the line?

I don't want to be a pain in the arse lol. I wish I had the skill necessary to help or create a third party utility to fill this empty hole in my heart. ;)

 

So along those lines, I know there is a way for folks to capture and save the VDP/ram/rom/grom etc.. in the TI emulation or something like that using the debugger. A sort of "Save State" function is what I'm thinking. But does that or could that also save DSKx assignments in c99? And what cart is inserted? And what system is selected? and what features (in c99) are enabled? Because if so, then I already have what I need. I just need to learn how to use it and save each State, with a descriptive filename. In other words, can it save the state of classic99 or does it only save the state of the emulated TI internals?

 

You're not forgotten, it's just not a small task. I switch disks and carts a lot too. ;)

 

Save state is a bigger issue the way it's written and is more likely something that will be considered in the rewrite.

  • Like 3
Link to comment
Share on other sites

 

 

You could set up a single “profile” or “ini” folder under “Classic99” and each time you change Classic99 parameters (FIAD folders, DSK images, current cartridge, ...), exit Classic99 and copy “classic99.ini” to a new or existing INI file in the “profile” folder, with a name that will remind you of its configuration. You could then set up a Windows script file (batch file) that you would run to allow you to choose which configuration profile to copy to the Classic99 folder before the script starts Classic99.

 

...lee

 

You'd just have to remember that you're overwriting it, so that if you make changes, those changes will poof. ;)

  • Like 1
Link to comment
Share on other sites

Since my configuration of Classic99 is stable, I just plug my .ini file into each new version when I install it. So, unless Tursi does something with the kernel, it boots the same every time.

 

I'm a big fan of backwards compatibility, and if I ever can, I try to always make the configuration file backwards compatible (even if it's just reading the old settings and writing the new ones ;) )

  • Like 2
Link to comment
Share on other sites

 

You're not forgotten, it's just not a small task. I switch disks and carts a lot too. ;)

 

Save state is a bigger issue the way it's written and is more likely something that will be considered in the rewrite.

 

 

What if it were only a load, save As and save function for ini files? and then reset the emulator (like when changing systems)?

 

I hate to sound like I'm over simplifying a complex alteration to code. But I think in its simplest form, it's a grand enhancement.

 

I'm going to give a custom script a shot (batch file or something, maybe I'll learn some powershell along the way), I'm already over thinking it and close to hyperventilating - (JUST KIDDING LOL) - However; the thought of maintaining a long list of ini files using a dos type menu system is making me nervous and excited at the same time.

  • Like 1
Link to comment
Share on other sites

  • 2 months later...

Classic99 399a is running at 75 FPS on my Windows 10 laptop in Normal CPU mode and it seems to be running too fast (faster than MAME/JS99er). If I change to CPU Overdrive I get 62 FPS and a rather flickering screen. If if change back to Normal and enable 50 Hz I get the correct 50 FPS. Does anyone else have these issues?

Link to comment
Share on other sites

How are you measuring the 75 fps? If it's not the built-in FPS display, trying turning that on. I'm curious if Classic99 knows it's running fast. ;) (Video->Show FPS)

 

Is your laptop running power saving modes? I don't know if Classic99 keeps up with changing CPU speeds.

 

I've had people report strange speeds on laptops before, that's why I wonder about power saving modes.

Link to comment
Share on other sites

How are you measuring the 75 fps? If it's not the built-in FPS display, trying turning that on. I'm curious if Classic99 knows it's running fast. ;) (Video->Show FPS)

 

Is your laptop running power saving modes? I don't know if Classic99 keeps up with changing CPU speeds.

 

I've had people report strange speeds on laptops before, that's why I wonder about power saving modes.

 

 

I can confirm using the built-in FPS display. As well, sometimes CPU Overdrive falls to around 30 FPS. This is on my Core-i7 laptop. Tested on battery and charging.

Link to comment
Share on other sites

I have noticed that when using CPU overdrive for extended periods of time in calculation-intensive programs (several hours), Classic99 eventually crashes. This has happened on several different systems...

Also why am I getting IO ERROR 02 with this line with a FIAD disk as DSK1?

OPEN #1:"DSK1.ERRLST",INTERNAL,APPEND
Link to comment
Share on other sites

Tursi, the 75 FPS is using the built in display. It varies all the time and can be higher than 75 but also lower than 60. The computer/CPU definitely has power saving modes and variable speeds. Actually it seems that when I start some other CPU intensive app and the computer "wakes up" then FPS in Classic99 also rises.

Link to comment
Share on other sites

CPU Overdrive is a best-effort thing. All it does is allocate a lot more cycles to the CPU per execution burst and remove the sleep between bursts (or make it much shorter, I need to check). It doesn't guarantee it can actually hit that performance... although this is first I've heard in a long, long time about it not doing so. (System Maximum, on the other hand, almost never does the right thing...)

 

Still, it shouldn't crash. But all other bets are off in the current system.

 

Timing isn't it's strong point. There's a lot I'd like to do but most of it starts with ripping that architecture right out. ;) But since it does it's frame throttling by counting cycles over a burst of time - which can actually be very long (especially if the system is working on other CPU intensive apps) varying CPU speeds will definitely mess with it.

 

Internally, it uses the performance counters which are directly tied to the speed of the CPU to determine how much time has elapsed. Each time it wakes up, it queries the counter and asks for the current frequency of the counter. This works fine when the counter is steady or changing slowly, but in an aggressive power saving mode the frequency when Classic99 checks can be very different from the average frequency over the period being measured, especially with the short samples in use.

 

There are better (far better) APIs available now - but at the time of Windows 98 this seems the best compromise between performance and load. There's no immediate fix I'm afraid, though you can try boosting Classic99's CPU priority so it gets command when it wants command. ;)

  • Like 1
Link to comment
Share on other sites

 

I have noticed that when using CPU overdrive for extended periods of time in calculation-intensive programs (several hours), Classic99 eventually crashes. This has happened on several different systems...
Also why am I getting IO ERROR 02 with this line with a FIAD disk as DSK1?

OPEN #1:"DSK1.ERRLST",INTERNAL,APPEND

 

I haven't seen that crash, I'd need to reproduce it. Can you share the calculation intensive program in question?

 

As for the disk error -- any time you get any disk error you don't understand, look at the debug log. Classic99 usually prints a message explaining why it returned the code it did. There's not much I can tell you without either that debug log or the file in question, except that "02" means "open failed", cause "bad attribute".

 

You aren't specifying the file type (Internal/Display, Variable/Fixed, record size), maybe the FIAD defaults don't match an existing file?

Edited by Tursi
Link to comment
Share on other sites

62 FPS on the internal counter is actually the norm, I just noticed that comment. It'll run between 60 and 62 but tries for 62. That was based on a weekend-long test comparing a real TI against an F18A against Classic99 against MESS, counting interrupts. ;) (I'm still not completely convinced, but it convinced me at the time.)

Link to comment
Share on other sites

I haven't seen that crash, I'd need to reproduce it. Can you share the calculation intensive program in question?

 

As for the disk error -- any time you get any disk error you don't understand, look at the debug log. Classic99 usually prints a message explaining why it returned the code it did. There's not much I can tell you without either that debug log or the file in question, except that "02" means "open failed", cause "bad attribute".

 

You aren't specifying the file type (Internal/Display, Variable/Fixed, record size), maybe the FIAD defaults don't match an existing file?

 

The system log shows this: "Incorrect file type: 0/DF128 (real) vs 130/IV0 (requested)" which is even more mystifying. I have a fresh Classic99 install with the default .ini file. I should not have to specify anything other than INTERNAL and UPDATE since they are not the defaults. VARIABLE should be assumed...

Here's the code listing:

100 RANDOMIZE
110 OPTION BASE 1
120 CALL CLEAR
130 N=50 ! Number of medial neurons
140 F=12 ! Number of input factors + 1
150 DIM SYN1(12,50),SYN2(50,2),MEDIN(50),MEDOUT(50),INP(12),OUT(2),TARGET(2),TERROR(2),SIGMA(50),SIGMOID(50)
160 RATE=0.001
170 DELTA=0
180 COUNT=0
190 INP(F)=1
200 PRINT "INITIALIZING INPUT SYNAPSES"
210 FOR I=1 TO N
220 FOR J=1 TO F
230 SYN1(J,I)=0.1*RND
240 NEXT J
250 NEXT I
260 PRINT "INITIALIZING OUTPUT SYNAPSES"
270 PRINT
280 FOR I=1 TO 2
290 FOR J=1 TO N
300 SYN2(J,I)=0.1*RND
310 NEXT J
320 NEXT I
330 FOR I=1 TO F-1
340 READ INP(I)
350 NEXT I
360 READ TARG1
370 READ TARG2
380 IF TARG1=1 OR TARG2>0 THEN TARGET(1)=1::TARGET(2)=0 ELSE TARGET(1)=0::TARGET(2)=1
390 IF INP(1)=0 THEN 850
400 COUNT=COUNT+1
410 PRINT "PROCESSING RECORD# ";COUNT
420 FOR I=1 TO N
430 TEMP=MEDIN(I)
440 MEDIN(I)=0
450 FOR J=1 TO F
460 MEDIN(I)=MEDIN(I)+SYN1(J,I)*INP(J) ! Summate all inputs for each medial neuron
470 NEXT J
480 IF MEDIN(I)<10E-12 THEN MEDIN(I)=TEMP
490 MEDOUT(I)=1/(1-EXP(-MEDIN(I))) ! Normalize medial neurons output
500 NEXT I
510 FOR I=1 TO 2
520 OUT(I)=0
530 FOR J=1 TO N
540 OUT(I)=OUT(I)+SYN2(J,I)*MEDOUT(J) ! Summate all inputs to each output neuron
550 NEXT J
560 TERROR(I)=TARGET(I)-OUT(I) ! Calculate output error
570 PRINT "OUT:";OUT(I);" TARGET:";TARGET(I);" ERROR:";TERROR(I)::PRINT
580 NEXT I
590 AERROR=SQR(TERROR(1)^2+TERROR(2)^2)
600 TOTERR=TOTERR+AERROR
610 IF INT(COUNT/10)=COUNT/10 THEN PRINT "AVERAGE ERROR:";TOTERR/10 ELSE 640
620 OPEN #1:"DSK1.ERRLST",INTERNAL,UPDATE
630 PRINT #1:TOTERR/10::TOTERR=0::CLOSE #1
640 PRINT
650 FOR I=1 TO 2
660 FOR J=1 TO N
670 SYN2(J,I)=SYN2(J,I)+RATE*MEDOUT(J)*TERROR(I)
680 NEXT J
690 NEXT I
700 FOR I=1 TO N
710 SIGMA(I)=0
720 FOR J=1 TO 2
730 SIGMA(I)=SIGMA(I)+TERROR(J)*SYN2(I,J)
740 NEXT J
750 IF MEDIN(I)>10E48 THEN MEDIN(I)=TEMP
760 SIGMOID(I)=MEDIN(I)*(1-MEDIN(I))
770 NEXT I
780 FOR I=1 TO F-1
790 FOR J=1 TO N
800 DELTA=RATE*SIGMOID(J)*SIGMA(J)*INP(I)
810 SYN1(I,J)=SYN1(I,J)+DELTA
820 NEXT J
830 NEXT I
840 GOTO 330
850 PRINT
860 PRINT "NEURAL NET TRAINING DONE!"
870 PRINT
880 RESTORE 920
890 GOTO 330
900 CALL KEY(0,K,S)
910 IF S=0 THEN 900 ELSE RETURN
920 DATA 14,2,1,3.8,4,23,2,5,0,0,1,0,1
930 DATA 14,1,1,3.1,1,53,2,1,0,1,0,0,0
940 DATA 5,1,1,3.1,5,24,1,2,0,0,0,0,0
950 DATA 7,2,3,4.0,1,30,1,0,0,0,0,0,1
960 DATA 13,2,1,3.3,5,83,2,0,0,0,0,1,3
970 DATA 71,2,1,3.4,7,35,1,0,0,0,0,0,2
980 DATA 6,1,1,2.6,4,40,2,3,5,1,0,0,0
990 DATA 79,1,2,5.9,3,6,1,0,0,1,0,0,0
1000 DATA 23,1,1,4.2,3,37,2,2,0,0,0,0,0
1010 DATA 18,1,2,2.2,6,18,2,0,0,0,1,0,0
1020 DATA 7,2,3,4.0,1,30,1,0,0,0,0,0,1
1030 DATA 13,2,1,3.3,5,83,2,0,0,0,0,1,3
1040 DATA 71,2,1,3.4,7,35,1,0,0,0,0,0,2
1050 DATA 40,2,1,3.4,1,99,2,0,0,0,0,0,0
1060 DATA 35,1,1,2.4,4,56,3,3,0,0,1,0,0
1070 DATA 22,1,1,2.6,4,87,3,0,0,1,1,0,3
1080 DATA 7,1,1,2.9,4,24,2,2,1,1,0,0,0
1090 DATA 19,2,1,3.3,4,65,1,4,0,0,0,0,3
1100 DATA 4,1,1,2.9,2,25,2,0,0,0,1,0,0
1110 DATA 15,1,1,1.5,2,127,1,2,0,1,0,0,1
1120 DATA 61,1,1,5.4,2,116,2,0,0,0,0,0,0
1130 DATA 15,1,1,4.0,2,112,1,0,0,0,0,0,0
1140 DATA 8,2,1,3.9,2,74,1,1,0,0,1,0,0
1150 DATA 4,1,1,3.2,4,36,1,3,1,0,0,0,0
1160 DATA 49,1,1,3.1,2,43,2,0,6,0,0,0,0
1170 DATA 16,1,1,3.8,3,25,2,1,0,1,0,0,1
1180 DATA 6,2,3,2.2,3,43,1,1,5,0,1,0,0
1190 DATA 50,1,1,3.4,5,35,2,0,6,0,1,0,0
1200 DATA 8,1,1,3.0,5,87,1,1,1,0,1,0,0
1210 DATA 11,1,1,2.5,4,45,2,1,0,1,1,0,0
1220 DATA 7,2,3,4.0,1,30,1,0,0,0,0,0,1
1230 DATA 13,2,1,3.3,5,83,2,0,0,0,0,1,3
1240 DATA 71,2,1,3.4,7,35,1,0,0,0,0,0,2
1250 DATA 11,1,1,5.8,3,32,2,2,0,0,1,0,0
1260 DATA 14,1,1,2.6,2,33,2,0,1,0,0,0,0
1270 DATA 7,2,3,4.0,1,30,1,0,0,0,0,0,1
1280 DATA 13,2,1,3.3,5,83,2,0,0,0,0,1,3
1290 DATA 71,2,1,3.4,7,35,1,0,0,0,0,0,2
1300 DATA 9,2,1,4.2,2,80,1,0,0,0,0,0,0
1310 DATA 16,1,1,4.1,4,44,2,1,0,0,1,0,0
1320 DATA 24,1,1,2.8,5,82,1,0,0,0,1,0,0
1330 DATA 37,1,1,4.5,3,62,2,2,0,0,0,0,0
1340 DATA 25,2,1,2.2,6,28,3,4,0,1,1,0,3
1350 DATA 23,1,1,2.5,2,28,3,0,0,0,1,0,0
1360 DATA 62,1,1,4.4,5,23,1,0,1,0,1,0,2
1370 DATA 14,2,1,2.8,4,33,2,0,0,0,0,0,0
1380 DATA 7,2,3,4.0,1,30,1,0,0,0,0,0,1
1390 DATA 13,2,1,3.3,5,83,2,0,0,0,0,1,3
1400 DATA 71,2,1,3.4,7,35,1,0,0,0,0,0,2
1410 DATA 101,1,1,4.5,2,58,2,0,0,0,0,0,0
1420 DATA 11,1,1,5.1,3,20,1,1,0,0,1,0,0
1430 DATA 103,2,5,5.1,3,42,2,0,0,0,1,0,0
1440 DATA 51,1,6,2.0,4,40,2,2,0,0,1,0,0
1450 DATA 24,2,1,5.6,1,21,2,0,0,0,0,0,0
1460 DATA 84,1,1,4.3,1,22,2,0,0,0,0,0,0
1470 DATA 66,1,1,2.7,2,26,2,0,0,0,0,0,0
1480 DATA 7,2,3,4.0,1,30,1,0,0,0,0,0,1
1490 DATA 13,2,1,3.3,5,83,2,0,0,0,0,1,3
1500 DATA 71,2,1,3.4,7,35,1,0,0,0,0,0,2
1510 DATA 10,1,1,2.3,3,28,2,0,0,0,0,0,0
1520 DATA 12,2,1,4.7,3,40,1,1,3,0,1,0,1
1530 DATA 42,1,1,2.5,2,42,2,3,0,1,0,0,0
1540 DATA 17,2,1,5.4,3,40,3,2,0,0,1,0,0
1550 DATA 14,1,1,3.2,4,36,1,0,0,0,1,0,0
1560 DATA 7,2,3,4.0,1,30,1,0,0,0,0,0,1
1570 DATA 13,2,1,3.3,5,83,2,0,0,0,0,1,3
1580 DATA 71,2,1,3.4,7,35,1,0,0,0,0,0,2
1590 DATA 19,2,1,2.1,5,46,2,1,0,1,0,0,0
1600 DATA 19,1,1,3.0,0,64,1,0,0,0,0,0,0
1610 DATA 10,1,1,2.7,2,38,2,2,0,0,0,0,0
1620 DATA 124,2,1,3.3,2,54,2,0,0,1,1,0,0
1630 DATA 138,1,1,2.6,3,22,1,0,0,0,0,0,0
1640 DATA 7,2,3,4.0,1,30,1,0,0,0,0,0,1
1650 DATA 13,2,1,3.3,5,83,2,0,0,0,0,1,3
1660 DATA 71,2,1,3.4,7,35,1,0,0,0,0,0,2
1670 DATA 93,1,1,4.7,1,32,2,0,0,0,1,0,0
1680 DATA 25,2,1,3.8,2,19,2,2,0,0,1,0,0
1690 DATA 17,1,1,3.0,3,27,2,2,0,0,0,0,0
1700 DATA 7,2,3,4.0,1,30,1,0,0,0,0,0,1
1710 DATA 13,2,1,3.3,5,83,2,0,0,0,0,1,3
1720 DATA 71,2,1,3.4,7,35,1,0,0,0,0,0,2
1730 DATA 23,1,1,5.3,3,81,2,1,0,0,1,0,0
1740 DATA 20,1,1,2.7,4,23,2,0,0,0,1,0,1
1750 DATA 27,1,1,2.9,3,39,2,0,0,1,0,0,0
1760 DATA 40,1,1,3.5,2,64,2,0,0,0,1,0,0
1770 DATA 14,1,0,3.0,4,17,3,5,0,0,0,0,0
1780 DATA 7,2,3,4.0,1,30,1,0,0,0,0,0,1
1790 DATA 13,2,1,3.3,5,83,2,0,0,0,0,1,3
1800 DATA 71,2,1,3.4,7,35,1,0,0,0,0,0,2
1810 DATA 29,2,2,2.8,2,30,2,2,0,0,1,0,0
1820 DATA 29,2,1,3.4,3,41,2,2,0,0,1,0,0
1830 DATA 21,1,1,3.5,2,44,2,4,0,0,0,0,0
1840 DATA 21,1,1,2.7,4,17,3,3,1,0,0,0,0
1850 DATA 7,2,3,4.0,1,30,1,0,0,0,0,0,1
1860 DATA 13,2,1,3.3,5,83,2,0,0,0,0,1,3
1870 DATA 71,2,1,3.4,7,35,1,0,0,0,0,0,2
1880 DATA 17,2,2,6.6,2,63,2,2,6,0,0,0,0
1890 DATA 82,1,1,2.0,5,19,2,2,1,1,0,0,2
1900 DATA 73,1,1,2.5,2,69,2,3,0,0,0,0,0
1910 DATA 8,1,1,4.6,2,41,2,0,0,0,0,0,0
1920 DATA 61,1,1,4.2,2,19,2,0,0,0,0,0,0
1930 DATA 24,1,2,4.1,2,41,2,0,0,0,1,0,0
1940 DATA 7,2,3,4.0,1,30,1,0,0,0,0,0,1
1950 DATA 13,2,1,3.3,5,83,2,0,0,0,0,1,3
1960 DATA 71,2,1,3.4,7,35,1,0,0,0,0,0,2
1970 DATA 13,1,1,3.5,2,181,2,0,0,1,0,0,0
1980 DATA 18,1,1,3.8,3,28,2,3,0,0,1,0,0
1990 DATA 2,1,1,2.7,2,71,2,0,0,0,0,0,0
2000 DATA 5,1,1,1.7,2,16,1,0,0,0,1,0,1
2010 DATA 42,1,1,2.2,2,38,2,3,0,1,1,0,0
2020 DATA 17,1,1,4.9,3,41,2,1,7,0,0,1,0
2030 DATA 20,2,1,4.4,2,43,2,0,6,0,0,0,0
2040 DATA 7,2,3,4.0,1,30,1,0,0,0,0,0,1
2050 DATA 13,2,1,3.3,5,83,2,0,0,0,0,1,3
2060 DATA 71,2,1,3.4,7,35,1,0,0,0,0,0,2
2070 DATA 52,1,1,5.4,3,33,3,0,0,1,0,0,0
2080 DATA 19,1,1,3.1,3,51,1,2,0,0,0,0,0
2090 DATA 21,2,7,3.1,3,37,2,0,5,0,0,0,3
2100 DATA 15,1,1,5.5,3,80,3,1,0,0,1,0,0
2110 DATA 16,2,1,2.8,3,22,2,3,0,0,0,0,0
2120 DATA 18,2,1,5.4,2,29,2,0,0,0,1,0,0
2130 DATA 7,2,3,4.0,1,30,1,0,0,0,0,0,1
2140 DATA 13,2,1,3.3,5,83,2,0,0,0,0,1,3
2150 DATA 71,2,1,3.4,7,35,1,0,0,0,0,0,2
2160 DATA 4,1,8,3.1,4,129,2,3,0,0,1,0,0
2170 DATA 12,1,1,2.4,3,24,2,0,0,0,0,0,0
2180 DATA 22,1,1,2.3,3,43,1,1,0,1,0,0,0
2190 DATA 11,1,1,4.1,2,26,2,1,0,1,0,0,0
2200 DATA 31,2,2,3.1,3,33,2,2,0,0,1,0,0
2210 DATA 69,2,0,2.8,1,45,0,1,0,0,1,0,0
2220 DATA 7,2,3,4.0,1,30,1,0,0,0,0,0,1
2230 DATA 13,2,1,3.3,5,83,2,0,0,0,0,1,3
2240 DATA 71,2,1,3.4,7,35,1,0,0,0,0,0,2
2250 DATA 17,1,1,3.2,3,40,1,0,0,0,0,0,0
2260 DATA 82,1,1,2.6,2,16,3,1,0,0,0,0,0
2270 DATA 26,1,1,3.0,2,24,2,0,0,1,0,0,0
2280 DATA 7,2,3,4.0,1,30,1,0,0,0,0,0,1
2290 DATA 13,2,1,3.3,5,83,2,0,0,0,0,1,3
2300 DATA 71,2,1,3.4,7,35,1,0,0,0,0,0,2
2310 DATA 4,1,1,3.6,2,25,2,0,0,0,1,0,0
2320 DATA 18,1,1,3.5,4,18,2,2,0,1,1,0,0
2330 DATA 33,2,1,3.4,2,61,1,0,0,0,0,0,0
2340 DATA 7,2,3,4.0,1,30,1,0,0,0,0,0,1
2350 DATA 13,2,1,3.3,5,83,2,0,0,0,0,1,3
2360 DATA 71,2,1,3.4,7,35,1,0,0,0,0,0,2
2370 DATA 11,2,1,3.1,3,34,2,0,0,0,0,0,0
2380 DATA 23,2,3,2.5,3,9,2,3,0,0,0,0,1
2390 DATA 16,1,1,2.4,2,96,2,2,0,0,0,0,0
2400 DATA 59,1,1,2.2,3,13,2,2,6,0,1,0,1
2410 DATA 44,1,1,4.2,3,43,2,1,0,0,0,0,0
2420 DATA 15,1,1,3.1,2,21,2,1,0,0,0,0,0
2430 DATA 15,2,1,2.9,2,58,2,4,0,1,1,0,2
2440 DATA 62,2,1,3.5,3,20,2,0,6,0,0,0,0
2450 DATA 110,1,1,4.6,2,15,1,0,0,0,0,0,0
2460 DATA 17,2,1,3.7,3,9,2,2,0,1,0,0,0
2470 DATA 7,1,1,3.9,1,60,2,3,0,0,0,0,1
2480 DATA 5,1,1,4.3,3,128,1,2,0,0,0,0,0
2490 DATA 81,1,1,3.8,2,67,2,4,0,0,0,0,0
2500 DATA 7,2,3,4.0,1,30,1,0,0,0,0,0,1
2510 DATA 13,2,1,3.3,5,83,2,0,0,0,0,1,3
2520 DATA 71,2,1,3.4,7,35,1,0,0,0,0,0,2
2530 DATA 14,2,1,3.4,3,49,1,2,0,0,1,0,0
2540 DATA 43,1,6,5.1,1,74,1,1,6,0,0,0,0
2550 DATA 16,1,1,2.5,3,34,2,2,0,0,1,0,0
2560 DATA 7,2,3,4.0,1,30,1,0,0,0,0,0,1
2570 DATA 13,2,1,3.3,5,83,2,0,0,0,0,1,3
2580 DATA 71,2,1,3.4,7,35,1,0,0,0,0,0,2
2590 DATA 9,1,1,3.8,3,105,2,3,0,0,1,0,0
2600 DATA 26,2,1,6.7,3,39,2,4,0,1,1,0,0
2610 DATA 19,2,1,5.6,3,83,3,4,0,0,0,0,1
2620 DATA 16,1,1,3.1,1,22,2,3,0,0,1,0,0
2630 DATA 7,2,3,4.0,1,30,1,0,0,0,0,0,1
2640 DATA 13,2,1,3.3,5,83,2,0,0,0,0,1,3
2650 DATA 71,2,1,3.4,7,35,1,0,0,0,0,0,2
2660 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0
 

Incidentally, that's one of the programs that eventually crashes Classic99 in Overdrive mode after a few hours of running. On the other hand, I have ran it for a couple of days straight in normal mode with no issues. The file issue is a new addition so I can save the neural net error rate to disk for later review.

  • Like 1
Link to comment
Share on other sites

EDIT: So adding VARIABLE 80 to the file OPEN statement on line 620 solved the issue. These should be defaults though, shouldn't they?

Yea that is the Extended Basic default mode that should not crash on real iron.

 

Then again it could be a memory leak in Windows or a loss of memory due to no re-allocations.

Link to comment
Share on other sites

Hey! I've been using Classic99 heavily. Thanks for an awesome tool!

 

I've been evaluating all the disks I scan with Kryoflux, and doing a lot of FORTH development.

 

1. I use Paste a lot to paste into the FORTH prompt. Can I request a keyboard shortcut for Paste? (ctrl-V or something not to interfere with the 4A keyboard)

 

2. My wishlist would also include a Copy function that grabs the VDP screen table with line breaks. I guess I could get that from a VDP dump...

 

3. I messed with the CLIP device as a replacement for RS232 in the FORTH SWCH word. The SWCH word redirects character I/O to a file (user variable ALTOUT can be any PAB). However FORTH then writes 1 char per record. CLIP adds a newline after each record, so it's a tall skinny file with 4 blank lines where FORTH sends a CRLF to the printer. I cleaned it up with a script, but it seems convoluted. Does Classic99 have a RS232 DSR somewhere?

  • Like 1
Link to comment
Share on other sites

 

 

"Incorrect file type: 0/DF128 (real) vs 130/IV0 (requested)" which is even more mystifying

 

It may be a little hard to read at first glance, but it's telling you exactly why it returned error 2. The "real" file is a DF128 (display, fixed, 128 byte records), and you tried to open it as an IV0 (internal, variable, no specified record size). These are incompatible settings and so the file open request failed. (The numbers before the types are the bytes from the file header and are displayed to help ensure I parsed them correctly).

 

That adding VARIABLE 80 made it work is strange though, since that shouldn't change the disk file's detection, and IV80 is still not a DF128... Are you sure it's the exact same file? Can you show me the log (all relevant lines) opening with and without the VARIABLE 80?

 

If the file is not supposed to be DF128, there should be a nearby line (above) explaining how Classic99 detected it.

 

I'll try your program on Overdrive under the debugger when I get home and see if I can catch the crash. Again, it's all timing, maybe I missed a lock somewhere.

Link to comment
Share on other sites

1. I use Paste a lot to paste into the FORTH prompt. Can I request a keyboard shortcut for Paste? (ctrl-V or something not to interfere with the 4A keyboard)

2. My wishlist would also include a Copy function that grabs the VDP screen table with line breaks. I guess I could get that from a VDP dump...

Of mixed minds here... I've wanted both of those too... but I don't know about using Control since that is a valid TI key (the TI /can/ see a Control-V... it was just almost never used).

 

Will consider. But it will be a while before any new features get in there.

 

3. I messed with the CLIP device as a replacement for RS232 in the FORTH SWCH word. The SWCH word redirects character I/O to a file (user variable ALTOUT can be any PAB). However FORTH then writes 1 char per record. CLIP adds a newline after each record, so it's a tall skinny file with 4 blank lines where FORTH sends a CRLF to the printer. I cleaned it up with a script, but it seems convoluted. Does Classic99 have a RS232 DSR somewhere?

No... nothing yet. But why not write to a disk file instead? I guess you'd still have to post process since the Windows text file mode would do the same thing as CLIP does (Classic99 assumes a record is a line ;) ).

Link to comment
Share on other sites

Ah, I see the problem with the file append... you were trying to create a new file using append, and Classic99 didn't pass back correctly that the file didn't exist. That was an important datapoint. ;) The file didn't exist, so the program for some reason fell into the "PC file" mode and considered it DF128. ;)

 

Apparently you're either the first person to create a file in Classic99 with APPEND or nobody has ever told me. ;)

  • Like 2
Link to comment
Share on other sites

Of mixed minds here... I've wanted both of those too... but I don't know about using Control since that is a valid TI key (the TI /can/ see a Control-V... it was just almost never used).

 

Will consider. But it will be a while before any new features get in there.

 

Please do not change that. That would break the “forward-word-tab” function of the TI Forth and fbForth block editors.

 

...lee

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...