Jump to content
IGNORED

Classic99 Updates


Tursi

Recommended Posts

Any program I have ever written uses this fact, but fails on the PC keyboard as the PC keyboard does not line up the keys correctly to pull this off.

 

ESDX on a PC keyboard looks pretty close to ESDX on a TI keyboard, in my opinion:

 

post-12959-0-40849100-1312409354_thumb.jpgpost-12959-0-73981300-1312409362_thumb.jpg

 

The cursor arrow keys are an emulation extension. You aren't required to use them.

 

Nor do they line up like the TI99 keyboard, they are misaligned that way on purpose on a PC, and some PC keyboards are worse then others for WSDX or ESDX.

 

I'm not sure why you keep slipping "W" in there. What on the TI uses W for gaming?

 

As the FCTN key on a TI99 is on the right side you use two hands to steer (i.e. right hand on ESDX and left on FCTN key), this is not necessary on a PC keyboard as we can now use the Arrow keys with out having to hold the FCTN key. Why is it a problem to use the Arrow keys on the PC?

 

Because generally games don't want you to hold FCTN when you press the ESDX keys to move. But it's not a problem anyway, so long as the game handles it. It depends on how the game scans the keyboard. FCTN-E is a different keycode than just plain E in most of the normal scan modes.

 

I would not even mind if I had to hold the FCTN key to use the Arrow keys just like the TI99 but then again the Arrow keys on a PC are on the right side and the FCTN is on the left, opposite of the TI99.

 

In Classic99, the arrow keys automatically send FCTN plus the appropriate key, so I'm not sure I understand what you are discussing here. You can use FCTN+ESDX exactly like on a real TI, and you can use the left ALT key for FCTN all you like.

 

So that is impossible to duplicate the TI99 keyboard on the PC keyboard as your hands become the opposites. The only choice is to use the Arrow keys on the PC keyboard because of this.

 

Completely untrue. Most PC keyboards have two ALT keys, one on each side of the keyboard, both of which map to FCTN, and they all have ESDX keys.

 

Maybe we need a indicator on Classic99 we can turn on to see what bloody keys are set, as right now it is pure guess work as to which meta key is the problem.

 

Or you could just use a different emulator. :) Or you can turn off the PS/2 emulation and treat it entirely like a TI keyboard, with just 48 active keys. You have plenty of options.

Link to comment
Share on other sites

ESDX on a PC keyboard looks pretty close to ESDX on a TI keyboard, in my opinion:

Wish mine were that close, I have small hands and the TI keyboard perfectly fits them with my short fingers, any PC keyboard just sucks for me, I type half as fast as short fingers mean I need to adapt unlike you.

http://store.apple.com/us/product/MB110LL/B

 

The cursor arrow keys are an emulation extension. You aren't required to use them.

[

Yes, but I would like to use them as they are on the keyboard for a reason, this is like avoiding the fire hose for a garden hose. I could, but really what good reason is there for doing that?

(If I write a GPL/XB/Assembly program that uses the arrow keys instead of ESDX is this some kind of crime? I could include both but prefer my arrow keys)

 

Completely untrue. Most PC keyboards have two ALT keys, one on each side of the keyboard, both of which map to FCTN, and they all have ESDX keys.

See above I explained before.

 

Or you could just use a different emulator. :) Or you can turn off the PS/2 emulation and treat it entirely like a TI keyboard, with just 48 active keys. You have plenty of options.

If I want to use the PC arrow keys then I assume I must press the ALT(FCTN) to get the TI99 to behave properly again. Just asking for my option to do what I want to do with out a rewrite of Classic99.

Link to comment
Share on other sites

Or you could just use a different emulator. :) Or you can turn off the PS/2 emulation and treat it entirely like a TI keyboard, with just 48 active keys. You have plenty of options.

Or you could use the real hardware :roll:

 

 

If I could put the TI keyboard on the PC I would love that as a perfect match for my short fingers. Best keyboard in the world ever made for my hands.

 

But I can not use my favorite programs like Imovie or Visual Studio or Itunes or Spotify on the TI. So it is Classic99 and would like to use the PC Arrow keys.

 

By the way I do not have the space to keep the TI set up as I do have buddies over for LAN parties and there is just not enough space or effort to assemble the TI from storage back and forth each week.

Edited by RXB
Link to comment
Share on other sites

Wish mine were that close, I have small hands and the TI keyboard perfectly fits them with my short fingers, any PC keyboard just sucks for me

 

Well, that's an Apple keyboard, and I do see it's spaced a bit differently (or looks to be). Mac's take USB, though, you could try a cheap $7 PC keyboard. :)

 

(If I write a GPL/XB/Assembly program that uses the arrow keys instead of ESDX is this some kind of crime? I could include both but prefer my arrow keys)

 

The problem is that I have no idea what you are getting at anymore - the above statement confuses the heck out of me. Since I'm no longer sure what we're debating on this one I'll just declare defeat! :)

 

If I want to use the PC arrow keys then I assume I must press the ALT(FCTN) to get the TI99 to behave properly again. Just asking for my option to do what I want to do with out a rewrite of Classic99.

 

No, do not press ALT(FCTN) while using the PC cursor arrow keys, the emulator does that automatically. If you run into a combination of keypresses which seems to upset the keyboard state, just press Enter to clear it or do not use the PS/2 emulation. As far as I can tell, that should answer all your questions except the above one about whether using the arrow keys is a crime. :)

 

What I have been suggesting for you is not normal operation. You have done something unusual which has caused an unexpected state, and I offered suggestions for how to clear the unexpected state without having to reset, since I can not reproduce it.

Link to comment
Share on other sites

What I have been suggesting for you is not normal operation. You have done something unusual which has caused an unexpected state, and I offered suggestions for how to clear the unexpected state without having to reset, since I can not reproduce it.

 

You can reproduce it. Load the OPOP object from GPLHOW2I into GRAM 0XC000, pop all the balloons and press FCTN+=.

 

As you suggested, pressing ENTER resolves the problem.

Link to comment
Share on other sites

Just use WASD like modern first person shooters use. The diamond shape arrow keys, while visually correct, is not conducive to gaming (unless you have a seriously dexterous middle finger.) And, the WASD even works on the 99/4A keyboard. My two cents.

 

 

I do not use arrow keys in the diamond shape. It is a upside T shape. The upside down T is pretty much the standard on all keyboards made today for arrow keys.

 

I am not even sure anyone even makes the arrow keys in the old diamond shape anymore for a PC or the Mac. More of a skewed diamond shape.

 

I have 10 keyboards here and none of them use the old Diamonds shape for the arrow keys. Except a really old windows 2.0 keyboard I have but that was for a typewriter style dedicated OS and could run 2.0 also.

 

Besides with the mouse using WASD is stressful on the wrist as you have no where to rest you arm, while the arrow keys on the bottom allow you to rest your wrist on something. Also you need not move your arm to hit the down arrow.

 

There is a posting on gaming about this a few years ago.

Link to comment
Share on other sites

What I have been suggesting for you is not normal operation. You have done something unusual which has caused an unexpected state, and I offered suggestions for how to clear the unexpected state without having to reset, since I can not reproduce it.

 

You can reproduce it. Load the OPOP object from GPLHOW2I into GRAM 0XC000, pop all the balloons and press FCTN+=.

 

As you suggested, pressing ENTER resolves the problem.

 

 

Thanks I have been doing that and the next GPLHOW2 Demo uses the ESDX keys upper or lower case and the arrow keys.

Link to comment
Share on other sites

Tursi

 

I measured the keys on my Apple Keyboard and the PC keyboards I have here, Dell, HP, Compaq, Windows and others. They are all within a millimeter or 2 of each other.

 

The key stoke of the keys on the mac are much less distance up and down and the keys do not angle down when pressed like the PC keyboards bind up if you press the key off center.

 

You can feel the bind in the keys on a PC keyboard if you press it off center. You get what you pay for I guess.

 

On this Mac keyboard if I press the corner of the key it feels the same and does not bind or give a different feel. Take a look at one next time you get a chance. Only $49(LOL I bought mine when it was $139)

Edited by RXB
Link to comment
Share on other sites

You can feel the bind in the keys on a PC keyboard if you press it off center. You get what you pay for I guess.

 

Off topic, but I want to highlight this point. I have this conversation at least once a week with customers who ask, why does a $1500 - $2000 Mac seem to be so much better hardware than PCs? The answer is simple: you simply cannot compare a $300 - $800 PC, which is what people seem to believe you should pay for a PC, to a $1500 - $2000 Mac, which is what people seem to believe you should pay for a Mac.

 

You give me $1500 - $2000 and I can build you a bitchen PC which works as well if not better than an equivalently priced Mac.

 

People often deride gamers who put a couple grand into their rigs (or more -- I have seen some video cards which alone MSRP at $1000,) but they wind up with awesome boxes. Of course, I make fun of them, too, but because I look at their machines and say, damn that would make an awesome server!

 

Same with Mac people, honestly. If you wanna drop that much money on a machine to get good hardware, be blessed, my friend.

Edited by OLD CS1
Link to comment
Share on other sites

You can feel the bind in the keys on a PC keyboard if you press it off center. You get what you pay for I guess.

 

Off topic, but I want to highlight this point. I have this conversation at least once a week with customers who ask, why does a $1500 - $2000 Mac seem to be so much better hardware than PCs? The answer is simple: you simply cannot compare a $300 - $800 PC, which is what people seem to believe you should pay for a PC, to a $1500 - $2000 Mac, which is what people seem to believe you should pay for a Mac.

 

You give me $1500 - $2000 and I can build you a bitchen PC which works as well if not better than an equivalently priced Mac.

 

People often deride gamers who put a couple grand into their rigs (or more -- I have seen some video cards which alone MSRP at $1000,) but they wind up with awesome boxes. Of course, I make fun of them, too, but because I look at their machines and say, damn that would make an awesome server!

 

Same with Mac people, honestly. If you wanna drop that much money on a machine to get good hardware, be blessed, my friend.

 

 

It is a even steven investestment. A PC life span is normally 3 to 4 years before it can not longer run the OS as well as it could from updates. A Mac has a life span on the average of 7 years.

Link to comment
Share on other sites

It is a even steven investestment. A PC life span is normally 3 to 4 years before it can not longer run the OS as well as it could from updates. A Mac has a life span on the average of 7 years.

 

Sounds about right, for a $300-$800 PC. I cannot speak for the Mac side. I did once help a guy migrate from his eight year-old iMac running OS8.something (was all it could run) to a new OSX iMac (2006-ish.) But I can say that, again, a well-built PC machine can do just fine at seven years. And this is a perfect time to get metrics on this as a metric shyte-tonne of customers are not upgrading their five, six, or seven year-old machines due to severe budget constraints. The Dells are not holding up so well, but my custom-built machines are.

 

And, coincidentally enough, I just this week did an experiment to see how a 233MMX with 128MB on a good DFI motherboard would run Windows XP SP3 (233MMX with 64MB was the minimum requirement for XP at release.) Actually ran about as well as the eight year-old iMac with OS8. Sadly, and not kidding one bit about this, better than some of the P4 Dell machines from around the 2004-2006 range I have to maintain. Now, I will admit that I did cheat a little by using a "modern" IDE hard drive with 16MB cache, and next time I try it out I will use a SATA drive on a PCI card.

 

So I stand by it: put good money in PC hardware and you will get a good return.

Link to comment
Share on other sites

What I have been suggesting for you is not normal operation. You have done something unusual which has caused an unexpected state, and I offered suggestions for how to clear the unexpected state without having to reset, since I can not reproduce it.

 

You can reproduce it. Load the OPOP object from GPLHOW2I into GRAM 0XC000, pop all the balloons and press FCTN+=.

 

As you suggested, pressing ENTER resolves the problem.

 

Thank you, Lucien. I'll give that a shot!

Link to comment
Share on other sites

Tursi

 

I measured the keys on my Apple Keyboard and the PC keyboards I have here, Dell, HP, Compaq, Windows and others. They are all within a millimeter or 2 of each other.

 

The key stoke of the keys on the mac are much less distance up and down and the keys do not angle down when pressed like the PC keyboards bind up if you press the key off center.

 

You can feel the bind in the keys on a PC keyboard if you press it off center. You get what you pay for I guess.

 

On this Mac keyboard if I press the corner of the key it feels the same and does not bind or give a different feel. Take a look at one next time you get a chance. Only $49(LOL I bought mine when it was $139)

 

This has nothing to do with Classic99, dude. First you told me that the TI keyboard and the PC keyboard were nothing alike, I disputed that. Now you are apparently chastising me for not knowing the precise layout to the millimetre of the keyboards in your physical possession. I'm sorry to be rude, but I am not really interested, that's outside of my control. :)

Link to comment
Share on other sites

hmm. That's odd. I would assume in that case that the INI was not updated at all. Can you confirm that? (ie: change something else as well and see if it saves or not?

 

For what it's worth, though, I am not actively working on this this month. :)

Link to comment
Share on other sites

It seems I was able to successfully build classic99 from source on a windows 7 machine, using Microsoft Visual C++ 2010 Express.

 

These are the steps I did:

 

*** USE AT YOUR OWN RISK, best to try on a spare PC or something ***

 

1) Downloaded and installed Microsoft Visual C++ 2010 Express

2) Copied classic99 to my harddrive :-)

3) Started Visual C++ Express and did "File -> Open -> Project/Solution", selected classic99.sln in the classic99/src directory

4) Pressed F7 to build the solution

5) Got some error that nasm was not found

6) Downloaded and installed the windows build of nasm 2.09.10

7) Updated the compile.bat file in the 2xSAI folder so that it matches the path where nasm is installed on my machine

8 ) Pressed F7 to build the solution, no more nasm errors.

9) Now got several errors on #include <atlstr.h>

Reason is that this is part of the "Active Template Library" which is not included in Microsoft Visual C++ 2010 Express.

It is included if you buy the full version of Visual C++ 2010.

10) As an alternative download the Windows Driver Kit (WDK) from Microsoft. The ISO also contains the required headers, etc.

Burned the ISO to a CD and ran the setup program KitSetup.exe, I then selected the "Build Environments" checkbox and it installed ok.

11) I then restarted Microsoft Visual C++ 2010 Express, reloaded the solution (3), opened the classic99 project properties and added the

ATL path to the Included Directories and rebuilt the solution (8 ).

13) Now there is an error in the generated Script2.rc, cannot open include file 'afxres.h'

14) Edit script2.rc and replace #include "afxres.h" with:

#include "windows.h"

#define IDC_STATIC -1

15) Rebuild the solution (8 ), now there are some errors because the input file 'dxguid.lib' can't be opened.

16) Download Direct X 9.28.1886 (DXSDK_Feb10.exe) 554MB at Microsoft and install

17) I then restarted Microsoft Visual C++ 2010 Express, reloaded the solution (3), opened the classic99 project properties and added the

"....DirectX SDK (February 2010)\Lib\x86" path to the Library Directories.

18) Rebuild the solution (8 ), now there are some errors because the input file 'atlsd.lib' can't be opened.

19) I then restarted Microsoft Visual C++ 2010 Express, reloaded the solution (3), opened the classic99 project properties and added the

"....WinDDK\xxx\lib\ATL\i386" path to the Library Directories.

20) Rebuild the solution (8 ), this time the built succeeded (with warnings!) and I have a new classic99.exe file in the debug directory.

 

 


1>------ Build started: Project: classic99, Configuration: Debug Win32 ------
1>  Performing Custom Build Tools
1>LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/LTCG' specification
1>  LINK : /LTCG specified but no code generation required; remove /LTCG from the link command line to improve linker performance
1>atlsd.lib(stdafx.obj) : warning LNK4078: multiple 'ATL' sections found with different attributes (40301040)
1>Tiemul.obj : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>tivdp.obj : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>WindowProc.obj : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>makecart.obj : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>mpd.obj : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>ClipboardDisk.obj : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>ClockDisk.obj : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>disk.obj : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>diskclass.obj : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>FiadDisk.obj : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>ImageDisk.obj : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>atlsd.lib(atltrace.obj) : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>atlsd.lib(externs.obj) : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>atlsd.lib(atldebugapi.obj) : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>atlsd.lib(atlstr.obj) : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>atlsd.lib(atlbase.obj) : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>atlsd.lib(stdafx.obj) : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>atlsd.lib(allocate.obj) : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>atlsd.lib(atltracemodulemanager.obj) : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>atlsd.lib(atlfuncs.obj) : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>Tiemul.obj : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>tivdp.obj : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>WindowProc.obj : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>makecart.obj : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>mpd.obj : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>ClipboardDisk.obj : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>ClockDisk.obj : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>disk.obj : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>diskclass.obj : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>FiadDisk.obj : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>ImageDisk.obj : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>atlsd.lib(atltrace.obj) : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>atlsd.lib(externs.obj) : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>atlsd.lib(atldebugapi.obj) : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>atlsd.lib(atlstr.obj) : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>atlsd.lib(atlbase.obj) : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>atlsd.lib(stdafx.obj) : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>atlsd.lib(allocate.obj) : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>atlsd.lib(atltracemodulemanager.obj) : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>atlsd.lib(atlfuncs.obj) : warning LNK4254: section 'ATL' (50000040) merged into '.rdata' (40000040) with different attributes
1>  classic99.vcxproj -> E:\classic99\src\.\Debug\classic99.exe
========== Build: 1 succeeded, 0 failed, 3 up-to-date, 0 skipped ==========

 

 

EIDT: So far the created executable seems to work ok. Tested with PARSEC and even speech is working (as good or bad) as in the offical version :)

Link to comment
Share on other sites

Okay.. I fiddled around a bit with the keyboard testing, and what I see is that the balloon popping thing only reads ALT+E/S/D/X. Which means that for the most part people are using the arrow keys, which have to inject and artificial ALT key. I was able to reproduce it by just using the cursor keys at the TI BASIC prompt as well, but it didn't seem to reproduce when I actually held down Alt.

 

Now that I know how to reproduce the issue, I can actually look at it. ;) The ref-count is probably getting screwed up by the auto-repeat. :)

Edited by Tursi
Link to comment
Share on other sites

I am at a loss to ever get a module to work with Classic99, I use Hexedit to make the file properly and do what the docs say with INI file and never works.

 

 

This is so frustrating to make a module. The only working one I have RXB2001 was made by someone else.

 

You can understand just how exasperating this could be after this long. Help please how do I fix this?

 

Included is the GROM file and my INI file.

FINDME.zip

Link to comment
Share on other sites

There is quite a bit wrong here. And I don't think you can blame me for all of it, some of it looks like you are not paying attention.

 

Let's start with the INI. The UserCart0 is the section of interest:

 

[userCart0]  
name="findme"    
rom6=G9|6000|2000|MODS\RXB6.bin

 

So you want it to appear in the Classic99 menu as 'findme', that's good, and you are saying the file to load is "RXB6.bin", which you will put in the MODS subfolder.

 

Obviously I don't know if you put it in the MODS subfolder, but the file you included in the zip is "findme.bin", not "RXB6.bin".

 

So the first issue you need to correct, is to use the correct filename for the file to load. There's no way for the emulator to guess what file you want. if you had looked at the debug log as I frequently ask you to do, it would have explicitly said:

 

Failed to load 'MODS\RXB6.bin', error 2

 

A quick Google search would tell you that 'error 2' in Windows means "File not found".

 

As a suggestion, ROM entries should start with "rom0", you have "rom6". This is only the order in which the ROMs are loaded.

 

Also, you specified G9 as the bank. The TI OS won't search to bank 9 if banks 0 and 1 are the same, so the cart won't show up in the menu anyway. Did you want it to?

 

Finally, you specified the length as >2000, but the file is only >18FA long. That will work, it will just cause a warning. Beware of entering a length that's too short. You are loading at >6000, I can only assume that you meant to load it as a cartridge.

 

To summarize, the INI should probably be:

 

[userCart0]  
name="findme"    
rom0=G|6000|2000|MODS\findme.bin

 

Make sure "findme.bin" is in the MODS subdirectory of Classic99, or specify a complete path to where it really is.

 

The file itself will not show up in the TI menu either - you can stop now if you don't want it to. But it doesn't have a proper header on it. It starts like this:

 

AA 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
C0 19 04 4C 49 4E 4B C3 25 C0 22 04 4C 4F 41 44

 

The AA indicates a valid header should be present, but all of the entries are >0000, meaning unset. The second line actually contains names like LINK and LOAD, which makes me think that you meant to have some linkages in there. From Thierry's page, the header looks like this:

 

http://nouspikel.group.shef.ac.uk//ti99/headers.htm

 

>0000 -> AA (for standard header) xx (xx is a version number of your choice, less than >80) example: >AA01

>0002 -> xx (number of programs, optional) yy (unused). Example: >0000

>0004 -> pointer to power up list (>0000 if none).

>0006 -> pointer to program list (>0000 if none).

>0008 -> pointer to DSR list (>0000 if none).

>000A -> pointer to subprogram list (>0000 if none).

 

Note that not all fields are supported in all header types - check Thierry's page for details.

 

Hope that helps. This is basic TI stuff, not Classic99 related.

Link to comment
Share on other sites

Tursi I am not trying to blame you for anything. This is what the source was supposed to be.

 

********************************************************************************

* HEADER FOR GROM

GROM >6000

AORG 0

TITLE 'GPLHOW2K FINDME'

BYTE >AA * VALID ID BYTE

BYTE 1 * VERSION NUMBER

BYTE 1 * NUMBER OF PROGRAMS

BYTE 0 * RESERVED

DATA 0 * POWER UP ROUTINE

DATA PNTR * USER ROUTINE

DATA 0 * DSR

DATA 0 * Subroutines

DATA 0 * INTERUPTS

DATA 0 * BASIC ROUTINES

********************************************************************************

DATA 12254 * FINDME FLAG BYTES

********************************************************************************

* LINK FOR NAME AND WHERE PROGRAM STARTS IN GROM

PNTR DATA 0 * LINK TO NEXT ONE

DATA START * START USER PROGRAM

STRI 'GPLHOW2 FIND ME'

********************************************************************************

* START OF PROGRAM

START ALL 32 * CLEAR SCREEN

FMT

ROW 0

COL 7

HTEX '{GPLHOW2K FIND ME}'

ROW 6

COL 5

HTEX 'WHAT EVER BANK I AM'

ROW 8

COL 5

HTEX 'IN I CAN BE FOUND'

ROW 10

COL 5

HTEX 'AND USED FOR LOADING'

ROW 12

COL 5

HTEX 'OR RUNNING A PROGRAM'

ROW 14

COL 5

HTEX 'FROM GROM. SIZE LIMITS'

ROW 16

COL 5

HTEX '40K ARE ONLY LIMIT SO FAR.'

ROW 23

COL 5

HTEX '<PRESS ANY KEY TO RETURN>'

FEND

CLR @>8374 * KEYBOARD 0

LOOP SCAN * GET A KEY

BR LOOP * NO LOOP

RTGR * RETURN TO GROM CALL

********************************************************************************

END

 

This is the source file for Findme, what I want to do is have a GROM module with the normal header and be able to find it with a XML program I wrote to look for it. It looks for the first two bytes after the header at GROM >6010 the XML will search all 16 pages for the flag byte.

 

Then use the SWGR command to go to that module in a page like say GROM page16 and when done use RTGR to return back to the original GROM page that called it. This would allow me to write GPL programs up to 640K in size if I used all 16 pages of GROM.

 

What I want to do in have a module that is not confined by size or by location. This seemed like the perfect solution to the problem.

 

The program I wrote and created with CSAVE somehow turned into another binary file, sorry for the mix up but dang HEXEDITOR just keeps saving the wrong file, sorry for the mix up.

 

Anyone would have to admit the number of steps to create a module and get it to work are not easy and are time consumming. Not blaming you as you never saw this as something anyone would be doing on a continual daily basis.

 

I do not know why the last 4 bytes of a header are not included on Thierry's page, they are in the GPL manual and EA manual though.

 

ROM modules are no where as much work as a conbined GROM module. Thanks for the tips I will keep trying.

Edited by RXB
Link to comment
Share on other sites

I don't think we had a thread for this, so I figured I'd start one, since many people here are using my emulator.

 

11 June 2010

-Add ability to breakpoint on uninitialized memory read (console RAM only for now, no AMS)

-added 3x scaling to the video size menu

-save default scaling size

-Fixed broken continue and Step Over in debugger

-Added cycle counting and hex data to disassembly window

-changed default memory pointers to something more useful than R0

-made changing the filter mode reset the screen scaling size

-debugger now allows changing any memory type from any view window - VDP now has a V prefix, GROM has a G prefix. See docs.

-added memory type enums to the debugger display (code change only)

 

http://harmlesslion.com/software/classic99

 

Hi Tursi .... you probably already are aware, or maybes not, that certain small bugs have crept into Classic99 V359, which

include sprite deformations and corruptions for sprites above number 5 (i think) and also for sound, the noise channel is

not as it was a couple of revisions ago. I've reverted back to a previous update of Classic99 for now. (these issues are

evident in TI Extended BASIC, I have no idea about other languages wether or not the sprites / sound behaves under assembly

is a matter I'll never know about , as I don't have the first clue how to use Assembly!)

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...