A86: Re: Re: TI86all.inc / proposed standard file format


[Prev][Next][Index][Thread]

A86: Re: Re: TI86all.inc / proposed standard file format




Crapola. I keep doing that. Sorry everyone.

Just a note of interest, the co-founder of Texas Instruments went to my
school. I thought that that was kinda neat.

Anyways, I know that there was a proposed file format at one point in the
past, but it was since dropped (I don't know why.) I found some stuff off
Dan Eble's site on it, so its basically rephrasing it.

I would like to repropose it:

.dw magic           ; special number which indicates this is indeed an
"Special" file.
.db "ABCD"       ; type (see below)
.db Special        ; zero if no icon/title, bit 0 set if there's an icon,
bit 1 set if there's a title
.db Title              ; If the special byte indicates it, there would be a
zero-terminated string there
.db Icon data     ; if there's an icon, begin data

Types:

They would have to be case-sensitive to save time and space. Four bytes is
more than enough space to define a type. It could even be done with two, if
organized correctly. Certain ones should be reserved to begin with. For
instance "Text" should only mean TI-86 ASCII text. Version numbers would be
included with those types.
Mario 86 version 2.0 would be able to read "M86a" files and "M86b" files
("a" denoting the version of the format.) I think that generally people tend
to stick with a similar format between different versions of things, but
still, it might be a useful tip.

Passing files to programs:

This would be accomplished by storing data about the program at some
agreed-upon place. For the sake of argument, make it TEXT_MEM for now. So
when the file was selected, this would be written to TEXT_MEM

.dw Magic number
.db "Prgmname",0  ; where prgmname is, the actual name
.db "Type" ; the type of the file
.dw abs address ; absolute pointer to the file

When the program ran, it would check TEXT_MEM (or wherever) for the
existence of the magic num and act accordingly.


Associations Registry:

There are two ways for the shell to know which Program to put the datafiles
under. The first one would be to have a central registry located in a
seperate file (Maybe Registry.86s or whatever.) Any shell that's compatible
would look up the registry by loading the file into temp memory.
Alternatively, a registry entry could be located in the header of each
program. The registry entries could have a format like this:
.db number of entries
.db "Type" ;(4 bytes)
.db "Program",0 ; (2-9 bytes) -- the program to run for the type
.db "Program",0; (2-9 bytes) -- secondary program
.. etc
.db 0 -- indicates the end of the entry
.. and so on

A central registry would deal with conflicts much better, as the previous
entry would simply be written over. Typically, not more than one program
would deal with a certain type, but there would be a couple of cases, as in
TextViewers or Level Editors. If the program listed was called "NULL" the
file wouldn't run any program. Perhaps this would be good for files of type
"Pref" (preferences) or some such thing. If the program was called "EXEC,"
the file would be directly executed by the shell (as in the case with "A85
", "A83 ", or "A82 " (Assembly-85, 83, and 82, respectively) files. If
Shellmakers wanted to get real ambitious, files of type "SCmd" (Shell
Command) and program "EXEC" would run specific shell functions like
"Shutdown", "Password protect","Contrast changer", etc. This would allow for
making shells more modular.


Name:

To identify programs that support this functionality, some sort of
certification would need to be created. Something akin to the "Designed for
Windows 95" campaign, but less evil. Maybe "'86-'98" or "File86 compatible"
or something along those lines. Any ideas? And of course, a nifty logo is
required

Advantages:

**It's standardized, so therefore files could be managed from any shell the
same way.
**Shells could be able to launch both programs and specific files associated
with the program.
The data on the calculator could be arranged more logically. A shell could
look like this:

Whatever Shell v0.001
* ZTETRIS.A85
+JOLTIMA.A86
+Vertigo86 v0.94 by Matthew Shepcar
- Mario86 v2.1 by Bill Nagel
  *SMB 3 World 1.M86a
  *Crazy World.M86b
  *SMB 1 World 1-3.M86a
+SimCommunity 2000 by Kirk Meyer
- MEdit v1.0 by Bill Nagel
  *SMB 3 World 1.M86a
  *Crazy World.M86b
  *SMB 1 World 1-3.M86a
- Notepad86
  *PHYSICS.ntpd
  *Asm86.ntpd
  *Joke.Text
*DUCKHUNT.A83

When the user presses [enter] on a program name, the + menu unfolds to show
the files, otherwise they are hidden.

** Since the sections of each program which let the user select the strings
would become redundant,
the code could be eliminated, saving some space.

** You would be able to see everything important that's on your calculator
in one organized list.

** Fast access to your files. (Not that the file choosers are slow now, but
hey.)

** Net result should yield less than 1K cost.

** Shells written for it could be either non-graphical or graphical, but
would only have to be slightly larger
   (500 bytes??)

** Functions of shells which aren't wanted could be removed.

** More?

Disadvantages:

** Adds about 6 bytes to files, 12 bytes per registry entry.

** Programs would need to be slightly rewritten for File86 Compatibility

** Shells would have to support it

** In the shell implementation shown above, less programs can be shown per
screen, although
it is possible to do it so that only programs are shown until the user
presses +, at which time a list of files appears. You would lose no screen
real estate that way.

** Cluttered shells if everything's open

** More?

Anyways, that's just an idea and is very definitely a rough draft. This can
be just as easily applied to any other linkable calc as the 86, its just
that space is less of a constraint on the 86 than other calcs.

So.. hope its not a stupid idea, I guess it kinda fizzled before, but I
think it could work and tie in some of the OS-like features some people have
been wanting.

Could this possibly be posted as an article on TiCalc to see what other
people think?

Thanks!
_________________________________________________
Stephen Horne -- HorneS@rpi.edu -- www.wickedquality.com

:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
:quitplease :quitnow :leave ^X^C ^C ^D ^Z ^Q QUITDAMMIT
_________________________________________________