A86: Re: Replacement OS


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

A86: Re: Replacement OS




See inside =) Also, see at the very bottom for the memory layout of Katydid,
copied from the "official" doc files =)

On a side note, you want to be certain that the contents of RAM page 2 never
change with a new OS (as they do in your implementation). If you can fulfill
this requirement, the new OS won't go bye-bye when they pop the batteries in
case of crash...

> Programming/Gaming Interface for the TI-86
>
> This is a replacement operation system for the TI-86, which would attempt
to give the
> programmer more space for standard programs, as well at a ton of data
space. Math would
> be pretty much extinguished, so don't count on it being easy to get used
to...

Um where's the data space? I'm assuming that you're counting the unused
parts of pages 1 & 2 as data space, but what if the program is 32kb? Then
what?

> Some basic information (proposed):
>
> [RAM page 0]
> Operating System Data     = $C000 - $C7FF (2kb for ops, shadow regs and
things of that nature)
> Operating System Calls    = $C800 - $E7FF (~8kb for os calls (findpixel,
putsprite, _puts etc)
> Variable Table = $E800 - Stack End (approx 4kb for 256 variables)
> Stack          = $FBFF (going up)   (approx 1kb)
> Video memory 1 = $FC00 - $FFFF

If it's an OS replacement you better allocate room for an IM2 interrupt that
reads the keyboard, etc. Also, what about greyscale?!? Double buffering?!?

> [RAM page 1] (to be loaded into port 5)
> _asm_exec_ram (place of execution) = $4000 - $7FFF
>
> [RAM page 2] (to be loaded into port 6)
> extended execution area if needed  = $8000 - $BFFF (16kb)

Why? Why not just relocate the variables, then you could have 112kb of user
memory...

> [RAM page 3 - 7]
> Standard variable data
>
> Total of 96kb user available memory (same as current TI-86 memory).
> ~6 - 12kb of this could be used to save the current system into a string,
so the new OS could
> be exited back to the TI-OS.

Um, I might be seeing things, but I believe you meant only 80kb user memory
the way you had it set up. A more efficient way to allow switching between
TI-OS & "your OS" is to do something similar to chmasc. Put a restore
program someplace that just reinitializes "your OS" (this program would only
take maybe a hundred bytes). This is the method Katydid uses to allow you to
easily switch to and from TI-OS. Note that Katydid also creates the program
for the user so they don't have to remember the short asm program (C3xxxx).

> This takes the execution area to 32kb of continuous usable space at one
time w/o
> any page swapping.

Right now we have 24kb without page swapping, is this worth 8kb?

> ROM calls that would need to be replaced are numerous:
> (obviously only a partial list)
>
> _putx and _vputx
> _clrScrn and _clrLCD (could be same call actually)
> _HtimesL (_MUL_HL)
> _OPx moving routines
> _FindSym
> _load_ram_ahl
> _disp_ahl
> _get_free_mem
> _get_word_de (there's anoter name for this i think)
> _createstring
> _createprgm
> all abs address data moving routines (or at least the usefull ones)

Why replace the first 3 on your list? They would work just as well on your
new OS the way you have it set up... the only reason is if you were trying
for an "orthodox" OS replacement. Heh.

Katydid is an OS replacement, but it makes sense because it does math, and
it does math better than the TI-OS... yours doesn't seem to have all that
many advantages over TI-OS anyway...

;
; *****************************
; *                           *
; * Documentation for Katydid *
; *                           *
; *****************************
;
; I. RAM Layout
; =============
;
; The RAM is layed out as follows:
; Page 0: interrupt routine, common functions, video buffers, and more.
; Page 1: User memory (16kb total -- plenty for math only)
; Page 2: Miscellaneous items (graphing, linking, possibly jump table)
; Page 3: Numeric functions -- numeric algorithms (variable precision)
; Page 4: Symbolic functions -- simplification, factoring, solving, etc.
; Page 5: Advanced Symbolic -- integration, derivatives, etc.
; Page 6: Plugin (only ONE plugin at a time, accessible via PRGM)
; Page 7: Katydid core routines (equation entry, keyboard logic, etc.)
;
; II. RAM Page 0
; ==============
;
; NOTE: Bit fields are described by the notation {7 6 5 4 3 2 1 0} with any
;       information following the appropriate number.
;
; Start  End  Lngth Description
; ===== ===== =====
=========================================================
; $C000 $C100   257 Interrupt vector table (all contains value $C1)
; $C101 $C140    64 Keyboard buffer, also (IY - $40) through (IY - $01)
; $C141 $C1C0   128 IY Flag Area, (IY + $00) through (IY + $7F)
; $C1C1 $????  ???? Interrupt routine, primary ROM functions, numbers
; $CE00 $CFFF   512 Variable pointers (256 of them, 64 for each slate)
; $D000 $EFFF  8192 A really big temporary area
; $F000 $F3FF  1024 A really big stack
; $F400 $F7FF  1024 Tertiary LCD memory (used for double buffering)
; $F800 $FBFF  1024 Secondary LCD memory (used for grayscale)
; $FC00 $FFFF  1024 Primary LCD memory (sprites may only be drawn here)
;
*snip* =)



Follow-Ups: References: