Jump to content
GDMike

What hardware do you want in 2021?

Recommended Posts

Well, we need a developer.

http://www.stuartconner.me.uk/ti/ti.htm#internet_web_browser

With the first two URL formats above where a host name is given, if using a serial port version of the browser, the browser accesses a script on a web page on the server 64.037.052.172 (which hosts my site www.stuartconner.me.uk) to resolve the specified host name to its IP address.

The URL in a hyperlink on a page can specify either a host name or an IP address.

Supported Tags

The tags supported are listed in the table below. Note that the tags are CASE sensitive. Example usage of the more complex tags is given in later sections.

Tag                                                                               Description

<99ml>Indicates start of page. All text before this tag is ignored.

</99ml>Indicates end of page. All text after this tag is ignored.

<p>Indicates start of a paragraph. All text outside <p></p> tags is treated as a comment and ignored.

</p>Indicates end of a paragraph. The following text is rendered starting on the next line on the screen.

<br>Line break. The following text is rendered starting on the next line on the screen.

<a:(URL)>Specifies a hyperlink for the text following the tag.

</a>Indicates end of hyperlink text.

<arect:AA:BB:CC:DD:(URL)>Defines a rectangular link area defined in pixels. AA, BB, CC and DD are upper-case hex values. If the <Return> key or <Fire> button is pressed, then if the screen pointer X position (in pixels, relative to the top left of the screen) is between the values AA and BB (inclusive) and the screen pointer Y position is between the values CC and DD (inclusive), then the link is invoked, and the specified URL is called with “?x=(pointer X position in hex)&y=(pointer Y position in hex)” appended to the URL (or "&x=..." if the link URL already contains a "?"). (Note that the screen pointer moves in steps of 2 pixels.)

<u>Underlines the text following the tag.

</u>Indicates end of underline text.

<clr:(foreground colour code)(background colour code)>Render the characters following the tag in the specified colours. The colour code definitions are given below.

Characters are 6 pixels wide so are not aligned with the 8-pixel blocks used by the VDP for colour control. Controlling text colour on a paragraph by paragraph basis will work. If trying to change text colour mid-paragraph, the results will depend on whether the start/end characters are exactly aligned with the edge of an 8-pixel block.

</clr>Revert back to normal colours (black on grey).

<cdef:(character code in hex):(hex character def)>Redefine the specified character. Characters in the range >00 to >FF are supported.

The default character definitions are automatically reloaded when browsing to a new page.

Characters have to be defined BEFORE they are used. The same characters can be redefined several times on the same page - define each with the pattern needed before using them.

The default character definitions are:

- Character >00 is a special character used internally and should not be redefined.
- Character >01 is a special character used internally and should not be redefined on a page that uses input fields.
- Character >0A is defined as a Line Feed character.
- Character >0D is defined as a Carriage Return character.
- Characters >0E - >18 are defined with table drawing characters, as follows:
   - Character >0E - ┏ top left corner
   - Character >0F - ━ horizontal line
   - Character >10 - ┳ top join
   - Character >11 - ┓ top right corner
   - Character >12 - ┃ vertical line
   - Character >13 - ┣ left vertical join
   - Character >14 - ╋ centre join
   - Character >15 - ┫ right vertical join
   - Character >16 - ┗ bottom left corner
   - Character >17 - ┻ bottom join
   - Character >18 - ┛ bottom right corner
- Characters >20 - >7E are defined as the normal ASCII character set.
- Character >7F is defined as a solid block.
- (All other characters are defined as blank)

<chr_lt>Displays the '<' character (this 'alias' is needed in order to be able to display tags on the screen as text).

<chr:(character code in hex)>Displays the specified character.

<8pchr:(character code in hex):(character position in hex, 2 bytes)>Render all 8 pixel columns of the specified character at the specified position. The position is based on the screen divided into 8*8 tiles, so positions are numbered from 0 (top left) to 767 (bottom right). This tag is provided for plotting graphics where the character rendering is exactly aligned with the VDP colour table.

<8pclr:(character colour in hex, 8 bytes)>Defines the colours used for characters rendered using the <8pchr> tag. Each byte of the colour code specifies the colour of one row of the 8x8 character. The first nibble of each byte specifies the foreground colour, and the second byte specifies the background colour. The colour code definitions are given below.

The default foreground and background colours are both transparent.

Note that the colour information is loaded to VDP RAM as the tags are processed, so colour changes to the currently displayed page might be seen as a new page is rendered.

<ptrclr:(sprite colour code)>Changes the colour of the sprite pointer. The sprite colour code is two hex characters, the first of which must be 0 and the second the required sprite colour according to the colour code definitions given below.

<noscroll>Disables the keyboard scroll keys on a web page. This is intended for web pages designed for display as a single page and using the <8pchr> and/or <arect> tags which don't work as intended if the page is scrolled down.

<noclearscreen>Disables clearing the screen when rendering a new web page. This enables one web page to update the screen rendered by the previous web page (so for example one web page could draw half a complex graphic on the screen and a second web page draw the other half).

<loadpage:(URL)>Displays the screen rendered so far then loads the specified web page.

<updatescreen>Displays the screen rendered by the tags processed so far, then continues processing tags on the page.

<startrenderline:(line number in hex, 2 bytes)>
(browser v9.4 onwards)Specifies which line of the web page to display at the top of the screen when the page is initially displayed. As an example, if the tag is <startrenderline:0012>, the 18th line of the web page is initially displayed at the top of the screen. An example use of this tag is for a message page where the most recent message is initially displayed, and the user can then scroll up the page to see older messages.

<input:(foreground colour code)(background colour code):(tag ID)>Defines the start of a text input field. When the user clicks on an input field, they can type into the field, terminating input by pressing <Enter>. When the user then clicks on a submit field 'button', the tag ID and entered value of each input field on the page are appended as parameters to the end of the URL specified by the <submit> tag. The tag ID must be an alphanumeric string and can be up to 96 characters long.

The foreground and background colour control enables the field to easily be made a different colour to the surrounding text to make the field itself and the field length prominent.

</input>Defines the end of an input field. The field length is determined by the number of characters between the <input> and </input> tags. These characters may be spaces or some sort of text prompt. With the <input> tag, these characters are not a default field value - the reported field value is an empty string unless the user types a value into the field.

<input-dv:(foreground colour code)(background colour code):(num characters):(tag ID)>
(browser v9.3 onwards)Same as the <input> tag but the (num characters) parameter (one hex byte) specifies the number of characters between the <input-dv> and </input-dv> tags to use as a default field value. This is the field value reported unless the user types a different value into the field.

</input-dv>
(browser v9.3 onwards)Defines the end of an input-dv field.

<pwd:(foreground colour code)(background colour code):(tag ID)>
(browser v9.3 onwards)Same as the <input> tag but any non-space characters typed into the field are displayed as asterisks, to obscure entered information such as a password.

</pwd>
(browser v9.3 onwards)Defines the end of a password field.

<submit:(foreground colour code)(background colour code):(URL)>Defines the start of a submit field 'button'. The text between the <submit> and </submit> tags is displayed as the button caption. When the user clicks on the button, the tag ID and value of each input, input-dv and password field on the page are appended as a parameter to the end of the URL specified by the <submit> field. The total length of the URL is limited to 100 characters, so only a small number of fairly short fields can be used. The URL is added to the URL history.

The foreground and background colour control enables the button to easily be made a different colour to the surrounding text to make it prominent.

</submit>Defines the end of a submit field.

<submit-nh:(foreground colour code)(background colour code):(URL)>Same as the <submit> tag but the URL is not added to the URL history and the 100-character URL length limit does not apply. This allows far longer input fields to be used.

<cookie:(cookie value)>
(browser v9.3 onwards)Stores a cookie value to be associated with the host name from which the page was downloaded. Cookie details are stored in a COOKIES file on the TIPI disk, and so are persistent across browser sessions. The cookie value is included in the HTTP request header for all future page requests to the same host.

<timeout:(period):(URL)>Loads a new page (or refreshes the current page) when no user input (keyboard or joystick movement) is made for the timeout period. The timeout period, in seconds, is specified as one hex byte. For example, a value '14' gives a timeout period of 20 seconds. The URL specifies the page to go to, and can be the same URL as the current page to refresh the page, or a different URL to go to a different page.

The timeout period should be fairly accurate for a conventional TI-99/4A with the 32K RAM on the 8-bit bus and normal wait states. For a TI with the 32K RAM on the 16-bus, the actual timeout period will be approx 10-20% less than the specified value.

<favs>
(browser v9.3 onwards)Defines the start of a hyperlink that displays the user's favourites file.

</favs>
(browser v9.3 onwards)Defines the end of a favourites hyperlink.

<tone:(duration):(volume):(frequency index)>Plays a tone on the speaker. The tone duration, in units of 1/10th of a second, is specified as one hex byte. Volume is in the range 00 (minimum volume (silence)) to 0F (maximum volume). The frequency is specified as the index value in the frequency table below. For example, the tag <tone:1E:0F:18> plays 'middle A' (440 Hz) at full volume for 3 seconds.
 

NoteFrequencyIndex         NoteFrequencyIndex

A  
A#
B  
C  
C#
D  
D#
E  
F  
F#
G  
G#
A  
A#
B  
C  
C#
D  
D#
E  
F  
F#
G  
G#
A  
A#
B  
C  
C#
D  
D#110.00 Hz
116.54 Hz
123.47 Hz
130.81 Hz
138.59 Hz
146.83 Hz
155.56 Hz
164.81 Hz
174.61 Hz
185.00 Hz
196.00 Hz
207.65 Hz
220.00 Hz
233.08 Hz
246.94 Hz
261.63 Hz
277.18 Hz
293.66 Hz
311.13 Hz
329.63 Hz
349.23 Hz
369.99 Hz
392.00 Hz
415.30 Hz
440.00 Hz
466.16 Hz
493.88 Hz
523.25 Hz
554.37 Hz
587.33 Hz
622.25 Hz00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E E  
F  
F#
G  
G#
A  
A#
B  
C  
C#
D  
D#
E  
F  
F#
G  
G#
A  
A#
B  
C  
C#
D  
D#
E  
F  
F#
G  
G#
A  
A#659.25 Hz
698.46 Hz
739.99 Hz
783.99 Hz
830.61 Hz
880.00 Hz
932.33 Hz
987.77 Hz
1046.50 Hz
1108.73 Hz
1174.66 Hz
1244.51 Hz
1318.51 Hz
1396.91 Hz
1479.98 Hz
1567.98 Hz
1661.22 Hz
1760.00 Hz
1864.65 Hz
1975.53 Hz
2093.00 Hz
2217.46 Hz
2349.32 Hz
2489.01 Hz
2637.02 Hz
2793.83 Hz
2959.96 Hz
3135.96 Hz
3322.44 Hz
3520.00 Hz
3729.31 Hz1F
20
21
22
23
24
25
26
27
28
29
2A
2B
2C
2D
2E
2F
30
31
32
33
34
35
36
37
38
39
3A
3B
3C
3D

Colour Codes

The colour codes used by the <clr>, <8pclr>, <ptrclr>, <input>, <input-dv>, <pwd> and <submit> tags are as follows:

0 - Transparent8 - Medium Red

1 - Black9 - Light Red

2 - Medium Green    A - Dark Yellow

3 - Light GreenB - Light Yellow

4 - Dark BlueC - Dark Green

5 - Light BlueD - Magenta

6 - Dark RedE - Grey

7 - CyanF - White                   (Note: A-F must be upper-case)

Text Character Definitions

The diagram below shows some example text character patterns. Each character is 6 pixels wide - the right-most 2 columns in the 8-pixel character block are not used. To define these patterns for characters >80 and >81, use the following <cdef> tags:

<cdef:80:0038443008443800>
<cdef:81:0038101010103800>

These characters can then be used in text displayed using the <p></p> tags. The <chr> tag can be used to specify a particular character code to display. The <clr> tag enables the text colour to be specified - each character has a single foreground colour and a single background colour. See the web page listing below for examples.

Displaying Graphics

Although 'graphics' could be displayed by defining and displaying text characters (as shown by the TI logo in the example web page listing and screenshot below), using the <8pchr> and <8pclr> tags provides more flexibility and colour control.

Using the <8pchr> tag, all 8 pixel columns of a character definition are displayed. To define the patterns below for characters >A0 and >A1, use the following <cdef> tags:

<cdef:A0:8040201008040201>
<cdef:A1:8142241818244281>

When using the <8pchr> tag, each character is displayed at a specified position. The position is based on the screen divided into 8*8 tiles, so positions are numbered from 0 (top left) to 767 (bottom right) - 24 rows of 32 tiles. To display the two characters above as the first two characters on row 3 of the screen:

<8pchr:A0:0040>
<8pchr:A1:0041>

Note that the character code must be exactly two upper-case hex digits and the character position must be exactly four upper-case hex digits.

To set the colour for a character, use the <8pclr> tag, where the colour is specified by 8 bytes. Each byte of the colour code specifies the colour of one row of the 8x8 character. The first nibble of each byte specifies the foreground colour, and the second byte specifies the background colour. The colour specified by an <8pclr> tag is stored for use by all following <8pchr> tags until changed by another <8pclr> tag. The default foreground and background colours for displaying characters using the <8pchr> tag are both transparent. The following example displays the two characters above, the first character as dark red on light yellow, and the second character as a rainbow effect on a black background.

<8pclr:6B6B6B6B6B6B6B6B><8pchr:A0:0040>
<8pclr:21416181A1C1E1F1><8pchr:A1:0041>

Characters displayed using <8pchr> tags can be mixed with text displayed using the <p></p> tags. If displayed in the same position on the screen, whichever tags occur later in the web page source overwrite those that occur earlier in the page source.

As characters displayed using the <8pchr> tag are displayed at fixed positions on the screen, they cannot be scrolled. Consider including the <noscroll> tag on a page where <8pchr> tags are used to disable the keyboard scroll keys.

If wanting to display a very complex graphic, the 13,024 byte (from v8.2 onwards) web page size limitation might be an issue. This can be worked around by drawing part of the screen on one page, using the <loadpage> tag at the end of that page to automatically load a second page, including the <noclearscreen> tag at the top of the second page and continuing to draw the graphic. Obviously though there will be a delay while the second page loads.  The same technique can be used for simple animation by drawing a main graphic then automatically loading a further sequence of pages to draw updates over that graphic. An example <loadpage> tag is:

<loadpage:www.stuartconnerdownloads.me.uk/tibrowser/elite_2.htm>

Hyperlinks Over Graphics

The <a></a> tags enable hyperlinks over text displayed with the <p></p> tags. To place hyperlinks over graphics, use the <arect> tag, which has the format <arect:AA:BB:CC:DD:(URL)>. AA, BB, CC and DD are upper-case hex values which define a rectangular area of pixels relative to the top left of the screen. If the <Return> key or <Fire> button is pressed, then if the screen pointer X position (in pixels, relative to the top left of the screen) is between the values AA and BB (inclusive) and the screen pointer Y position is between the values CC and DD (inclusive), then the link is invoked, and the specified URL is called with "?x=(pointer X position in hex)&y=(pointer Y position in hex)" appended to the URL (or "&x=..." if the link URL already contains a "?"). (Note that the screen pointer moves in steps of 2 pixels.)

Looking at the part of the page below, to place a hyperlink over the black cross, AA has the value 8, BB has the value 16, CC is 16 and DD is 24. With these values in hex, this gives the following <arect> tag:

<arect:08:10:10:18:www.stuartconnerdownloads...>

Many <arect> tags can be used on a page. If any of the hyperlink areas overlap, clicking on an overlapping area selects the first of the overlapping hyperlinks defined in the web page source.

As the pointer position is appended to the hyperlink URL when the hyperlink is selected, this information can be further processed if required by a script on the linked page. For example, if hyperlinks are required over a chess board graphic, rather than defining one hyperlink per chess board square, define one hyperlink over the complete board then process the pointer information returned in the hyperlink URL to determine which square the pointer was over.

Page Timeout

The page timeout feature loads a new page (or refreshes the current page) when no user input (keyboard or joystick movement) is made for the timeout period. The page listing for the screenshot below includes an example page timeout tag.

The <timeout> tag specifies a timeout period (of between 0 and 255 seconds, expressed as one hex byte) and a URL. The program calls the specified URL when no user input is made for the timeout period. The URL can be the same URL as the current page to refresh the page, or a different URL to go to a different page. The timeout period should be fairly accurate for a conventional TI-99/4A with the 32K RAM on the 8-bit bus and normal wait states. For a TI with the 32K RAM on the 16-bus, the actual timeout period will be approx 10-20% less than the specified value.

Note that with a long web page where the user has to scroll down to see the entire page, the <timeout> tag only takes effect if the tag is in the code for the section of the page currently displayed, or in a 'higher' area of the page. If the user has not yet scrolled down far enough to view the section of the page that contains the <timeout> tag, the tag has no effect. This feature can be used to design a page that automatically refreshes if the user is viewing the end of the page, but stops refreshing if the user then scrolls up to view earlier content.

Text Input Fields and Submit 'Button'

Text input fields and a submit 'button' enable interactive web sites to request information from the user. The screenshot below and the corresponding page listing below that illustrate the use of these features.

Browser versions up to and including v9.2 support just one type of input field, defined by a pair of <input></input> tags. The <input> tag specifies the field colour and a unique (on that page) tag ID. When the user clicks on an input field, they can type into the field, terminating input by pressing <Enter>. The field length is determined by the number of characters between the <input> and </input> tags. These characters may be spaces or some sort of text prompt. Note that these characters are not a default field value - the reported field value is considered to be blank until the user types a value into the field.

Browser version v9.3 onwards supports two additional types of input field:

Input field defined by a pair of <input-dv></input-dv> tags. This is the same as an input field defined by a pair of <input></input> tags but the <input-dv> tag includes an extra parameter (one hex byte) that specifies the number of characters between the tags to use as a default field value. This field value is returned unless the user types a different value into the field. This type of field is useful when redisplaying a form that the user has already filled in but which contains some sort of error or invalid value.

Password field defined by a pair of <pwd></pwd> tags. This is the same as an input field defined by a pair of <input></input> tags but all characters typed into the field are displayed as asterisks. The actual entered field value is returned as a parameter in the URL specified by the <submit> tag.

A submit 'button' is defined by a pair of <submit></submit> tags or <submit-nh></submit> tags. The <submit(-nh)> tag specifies the field colour and a URL. The text between the <submit(-nh)> and </submit> tags is displayed as the button caption.

With the <submit> tag, when the user clicks on a submit field 'button', the tag ID and value of each input, input-dv and password field on the page are appended as parameters to the end of the URL specified by the <submit> tag. Looking at the example below, if the user types the text "Stuart" into the first field and "Conner" into the second field then clicks the Submit button, the program calls the URL "www.somesite.com?fn=Stuart&ln=Conner". Note that when appending the input field values to the URL, any "<space>", "#", "&", ";", "=" or "?" characters are encoded into their "%xx" equivalents. The total length of the URL is limited to 100 characters, so only a small number of fairly short input fields can be used. The URL is added to the URL history.

To work around the 100-character URL length limit when a larger number of fields or longer fields are needed, use the <submit-nh> tag. This supports a total URL length of many hundreds of characters (the exact number depends on what else is on the page), but the URL is not added to the URL history.

Two further points when using the input field and submit tags:

Leave at least one space between the end of an input field and any text that follows it.

If you type text in an input field and then scroll up/down, the text you typed will still be displayed in the field, but it won’t be recognised correctly if you then try to edit the field again or click a submit 'button'. Therefore, design pages that use input fields and a submit 'button' such that everything fits on a single screen, and include the <noscroll> tag at the top of the page to prevent page scrolling.

<99ml>
<p><br>Enter·first·name:·<input:1A:fn>(first·name)······· </input></p>
<p><br>Enter·last·name:··<input:1A:ln>(last·name)········ </input></p>
<p><br><br>·········<submit:1C:www.somesite.com>Submit</submit></p>
<timeout:3C:www.someothersite.com>
</99ml>

If redisplaying the page and the two field values are already known, input-dv fields can be used instead to specify default field values so that the user does not have to enter them again:

<p><br>Enter·first·name:·<input-dv:1A:06:fn>Stuart············· </input-dv></p>
<p><br>Enter·last·name:··<input-dv:1A:06:ln>Conner············· </input-dv></p>

To include a password field:

<p><br>Enter·password:·<pwd:1A:pw>········· </pwd></p>

User-Agent Parameter

When making HTTP GET calls, the browser identifies itself with a User-Agent parameter in the HTTP request header.

For browser versions before v9.0, the User-Agent parameter value is just "TI".

For browser version v9.0 onwards, the User-Agent parameter value is "TI" suffixed by the browser version number (so the latest version is "TI09.4").

The User-Agent parameter enables a web page script to see it is talking to the TI browser and to format a page accordingly. Corey Anderson's www.myti99.com website uses the parameter to serve different versions of the site according to whether it is accessed from a PC or TI.

Cookies

Browser v9.3 onwards supports a cookie mechanism implemented through the <cookie> tag. This tag specifies a cookie value to be associated with the host name from which the page was downloaded. Cookie details are stored in a COOKIES file on the TIPI disk, and so are persistent across browser sessions.

The cookie value is included in the HTTP request header for all future page requests to the same host. So if the page cookie_test.htm downloaded from www.stuartconner.me.uk contains the tag <cookie:some_cookie_value>, then all future HTTP page requests to www.stuartconner.me.uk will contain the parameter "Cookie: www.stuartconner.me.uk=some_cookie_value" in the HTTP request header.

Two further points when using cookies:

The length of host name plus the cookie value must be less than or equal to 78 characters. The browser does not check the length, but the cookie will not work properly if this length limit is exceeded. Rather than using a long cookie value, consider using the cookie to hold a unique token that identifies the user's data on the server.

The cookie value must not contain a space character or any control character (no characters with an ASCII code equal to or less than >20).

Moved pages, invalid URLs and Server Errors

Browser versions up to and including v9.2 will only display pages where the HTTP response code is 200 (OK).

Browser version v9.3 onwards will display pages where the HTTP response code is 200 (OK) or 301 (new permanent URI). In addition, the browser will also display pages where the HTTP response code is 404 (page not found) or 500 (internal server error) as long as the error page includes content within <99ml></99ml> tags. This enables a server administrator to set up browser-compatible error pages for these response codes.

Example Web Page Listing

The following listing displays the example web page below which uses many of the supported tags. Space characters in the listing have been replaced with a small dot to aid legibility.

<99ml>

Character·definitions·for·TI·logo.
<cdef:01:7CC0C0C0C0C0C0C0>
<cdef:02:C0485454486020C0>
<cdef:03:0000000000003048>
<cdef:04:FC80C04060381C0C>
<cdef:05:C408080C000000B0>
<cdef:06:981818D858585840>
<cdef:07:E82828E884848488>
<cdef:08:F84C040400000000>
<cdef:09:24180084C4703C00>
<cdef:0A:3040800000808000>

Character·definition·for·bullet.
<cdef:0B:0000003030000000>

Colour·bar.
<p><br><clr:16>····<clr:13>····<clr:11>····<clr:1D>····<clr:14>····<clr:12>····<clr:18>····<clr:15>····<clr:19>····<clr:16>···</clr></p>

Blank·line·in·cyan.
<p><clr:17>·······································</clr></p>

TI·Logo·and·title·in·cyan.
<p><clr:17>··<chr:01><chr:02><chr:03>·<chr:0E><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:11></clr></p>
<p><clr:17>·<chr:04><chr:05><chr:06><chr:07>·<chr:12>··TEXAS·INSTRUMENTS·COMPUTERS··<chr:12></clr></p>
<p><clr:17>··<chr:08><chr:09><chr:0A>·<chr:16><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:0F><chr:18></clr></p>

Blank·line·in·cyan.
<p><clr:17>·······································</clr></p>

Colour·bar.
<p><clr:16>····<clr:13>····<clr:11>····<clr:1D>····<clr:14>····<clr:12>····<clr:18>····<clr:15>····<clr:19>····<clr:16>···</clr><br><br></p>

Menu.
<p><chr:0B>·Click·<a:www.stuartconner.me.uk/tibrowser/z_ti_test_2.htm>here</a>·for·a·short·history·of·the<br>··TI-99/4A.<br></p>

<p><chr:0B>·Click·<a:www.stuartconner.me.uk/tibrowser/z_ti_test_3.htm>here</a>·for·the·pinout·of·the<br>··TMS9900·processor.</p>

</99ml>

Edited by GDMike
  • Like 1

Share this post


Link to post
Share on other sites

OK - here we go. Here's one more site in <99ml> format:

ti99-stuart.thumb.jpg.8d0d4a6af6eae7f116cdab4101c3a0d0.jpg

Now I got it up and running - I have to come up with an own plan for the content ;-)

Btw: Stuart's documentation is awesome. Thanks a lot!

  • Like 3
  • Thanks 2

Share this post


Link to post
Share on other sites

Does the hardware have to be used on the 99?

 

I really would like a newer 3D printer with a bigger, self-leveling bed, and twin nozzles. (that way I could use PVA filament for supports and the like.)

Share this post


Link to post
Share on other sites

My preference is for something totally compatible with original hardware and software that allows me to more easily use it. No mods to the original hardware. My greatest need would be a plug in peripheral with an SDHC slot that would allow me to use memory cards as a "standard" TI floppy drive (or several), using the usual TI software disk access. Floppy drives and disks are pretty near end of life by now.

This would probably need a power supply as some cards can be greedy - so let's be super positive and also put in there a 32k ram expansion and a speech synth....  that's would do me VERY nicely.

Beware of not supporting the bigger SDHC cards though as the smaller ones are getting hard to buy- and some don't work with the FG99 at all.

Printer and video output is going to be a future problem as modern hardware does not like the low specs of our computer- but many of the TI dot matrix printers still work fine although you do need an RS232 peripheral of some sort.  The low video resolution and refresh rate is a difficulty.

s

  • Like 1

Share this post


Link to post
Share on other sites
1 hour ago, blackbox said:

My preference is for something totally compatible with original hardware and software that allows me to more easily use it. No mods to the original hardware. My greatest need would be a plug in peripheral with an SDHC slot that would allow me to use memory cards as a "standard" TI floppy drive (or several), using the usual TI software disk access. Floppy drives and disks are pretty near end of life by now.

This would probably need a power supply as some cards can be greedy - so let's be super positive and also put in there a 32k ram expansion and a speech synth....  that's would do me VERY nicely.

Beware of not supporting the bigger SDHC cards though as the smaller ones are getting hard to buy- and some don't work with the FG99 at all.

Printer and video output is going to be a future problem as modern hardware does not like the low specs of our computer- but many of the TI dot matrix printers still work fine although you do need an RS232 peripheral of some sort.  The low video resolution and refresh rate is a difficulty.

s

Slightly off topic, but stores in my local area do not carry any cards under 4GB. A sign of the times i reckon.

Share this post


Link to post
Share on other sites

I like the idea someone mentioned earlier about using the button on joystick #2 as a second button for #1, that opens up all kinds of possibilities and people seldom use #2 anyway!

 

As far as what hardware I'd like? The Geneve 2020 is the big thing I'm waiting on, I'm sure I've said all this before but there's been a lot of really cool developments in retro computing and arcade game hardware in recent years but the G2020 is the big thing I'm holding out for. For me I want something that can sit on my desk without taking ridiculous space, have a remote keyboard, share the same monitor as my other computers, be able to hold pretty much any and all software ever developed for the TI on a single SD and have perfect backward compatibility so I can take trips down memory lane whenever I feel like it and have everything run as it used to! :D Also having greater capabilities opens up all kinds of possibilities to see what knew things can be developed by the keyboard geniuses out there! I'd love it if the speed could be adjusted with software commands so otherwise good but impossibly slow basic and Xbasic games can be improved selectively without making game play too fast. Run super fast while booting or calculating something like the computer AI making a move in a game, loading the level, etc then slow it down a bit so moving characters aren't so fast it makes actually playing impossible.

 

Other hardware ideas? Me just shooting from the hip:

 

- Some kind of side port controller box to handle things like switching on and off motors and relays through software so the TI can be used to control devices like robot arms, etc, and be able to receive input from things like limit switches. Should be fairly easy and such a device might already exist and I just don't know it, I know I've seen at least one person somewhere on Youtube experimenting with a robot arm.  

 

- Some kind of upgraded joystick port to use more modern joysticks with analog output and multiple buttons. 

 

 

 

 

Edited by Tornadoboy

Share this post


Link to post
Share on other sites
12 hours ago, Shift838 said:

The Geneve 2021 is on the top of my list!

 

 

I'm sure in a quandary over the name.

 

In order to deliver something, I'm taking this video to heart. Also the Agile stuff I'm reading for work. 

 

My hardware wish list for 2021 is (to send some vers.1, and a vers.2 cpu, boards to the fab and) get pcbs back!

 

To manage expectations, the first deliverable will be a backplane with a cpu card, a memory card, and an I/O card. It will have a console serial port, and a lot of other connectors for things that aren't made/have no software (like keyboard/mouse/sd card.) This makes a running machine. Then bios software can commence (feel free to volunteer). This project is in the test-and-fix-all-the-tedious-details stage. 

 

Sometime later will come video card, DRAM card, a GPL compatibility card that extends the I/O card. Then a big software development/testing period for GPL/MDOS.

 

 

  • Like 5
  • Thanks 1

Share this post


Link to post
Share on other sites

And I just can't believe the price of this Geneve"forever" card, only 

$19.95, but wait! There's more....

Edited by GDMike

Share this post


Link to post
Share on other sites
On 1/11/2021 at 9:32 PM, FarmerPotato said:

I'm sure in a quandary over the name.

What about...

 

Geneve QL*

Geneve NT

Geneve NG

Geneve 10

Geneve 3k

🙂

 

(*Mind that a quantum leap is the least possible change of energy)

  • Haha 1

Share this post


Link to post
Share on other sites
On 1/8/2021 at 11:15 PM, acme said:

OK - here we go. Here's one more site in <99ml> format:

ti99-stuart.thumb.jpg.8d0d4a6af6eae7f116cdab4101c3a0d0.jpg

Now I got it up and running - I have to come up with an own plan for the content ;-)

Btw: Stuart's documentation is awesome. Thanks a lot!

I popped in today, same as above.  Let us know when you update.

 

  • Thanks 1

Share this post


Link to post
Share on other sites
On 1/13/2021 at 4:56 PM, Omega-TI said:

I popped in today, same as above.  Let us know when you update.

 

You made that? Very good. If I could get the time, I'd like to create pages showing all the carts made and have a lookup table as well. Showing the different colors of carts too.

Does the code allow downloading of files? 

Edited by GDMike

Share this post


Link to post
Share on other sites

Hardware for 2021:

I guess it would be cool to acquire an actual PEB. But being the tank that it is, probably not cheap to buy or get shipped. Also takes a fair amount of space.

On my own hardware projects, I'd want to find to time port icy99 to the MiSTer platform.

And finish off the ET-PEB, I've made pretty good progress with it.

 

  • Like 2

Share this post


Link to post
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.

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