Jump to content

Recommended Posts

 

Is this a dedicated manual by TI or do you mean the known GPL Programmer's Guide? I would be very interested to read such a manual.

 

Now I think you mean the GPL Interface Specifications for the 99/4 Disk Peripheral. That can be read here:

 

ftp://ftp.whtech.com/datasheetsand manuals/Specifications/GPL Interface Specification for the 99_4 Disk Peripheral V2.0 03-28-1983.pdf

ftp://ftp.whtech.com/datasheetsand manuals/Specifications/gpl interfce specs for 99-4 disk peripheral.pdf

ftp://ftp.whtech.com/datasheetsand manuals/Datasheets - TI/TI99 TI GPL Interface Specs for Disk Peripheral.pdf

Cyc Users:

Y:\vendors\ti\internal\diskper\gpliface\gpliface.pdf

 

Link to comment
Share on other sites

  • 4 months later...

 

Thanks. I thought I remember some code examples floating around the forum. I am going to play with some chunked encoding and see what kind of output I can produce.

Correct. I typed that wrong. But that's what I meant.

 

Wrong quote. Stupid mobile site. Please delete since I can't.

Edited by cbmeeks
Link to comment
Share on other sites

Can we add a reference or a thread or two on RLE encoders/decoders? I have been trying to find something and turning up nothing (my search foo is weak.)

 

Tursi's Convert9918 program can encode the output in RLE is this simple format:

 

Count Byte:

- if high bit is set, remaining 7 bits indicate to copy the next byte that many times

- if high bit is clear, remaining 7 bits indicate how many data bytes (non-repeated) follow

 

Here's a Java program to encode a generic file in this format on the PC:

import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.io.*;

/**
 * Created by Rasmus on 12-06-2016.
 */
public class RLE {
    //
    // Count Byte:
    // - if high bit is set, remaining 7 bits indicate to copy the next byte that many times
    // - if high bit is clear, remaining 7 bits indicate how many data bytes (non-repeated) follow
    //

    public static String APPLICATION_NAME = "RLE v. 1.0";

    public static void main(String[] args) {
        new RLE();
    }

    public RLE() {
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setFileFilter(
                new FileNameExtensionFilter("Binary Files", "bin")
        );
        fileChooser.setMultiSelectionEnabled(false);
        fileChooser.setCurrentDirectory(new File("."));
        if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
            File file = fileChooser.getSelectedFile();
            String fileName = file.getName();
            int p = fileName.lastIndexOf(".");
            if (p != -1) {
                fileName = fileName.substring(0, p);
            }
            try {
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                FileInputStream in = new FileInputStream(file);
                int n = 0;
                int count;
                byte[] buffer = new byte[128];
                int i;
                int last = -1;
                int current = in.read();
                while (current != -1) {
                    if (last != -1) {
                        if (current == last) {
                            // Same byte
                            count = 1;
                            while (current == last && count < 127) {
                                count++;
                                last = current;
                                current = in.read();
                            }
                            // Output run of identical bytes
                            out.write(0x80 | count);
                            out.write(last);
                            n += 2;
                            last = current;
                            current = in.read();
                        }
                        else {
                            // Different bytes
                            count = 0;
                            i = 0;
                            buffer[i++] = (byte) last;
                            while (current != last && current != -1 && count < 127 ) {
                                count++;
                                buffer[i++] = (byte) current;
                                last = current;
                                current = in.read();
                            }
                            // Output different bytes
                            out.write(count);
                            out.write(buffer, 0, count);
                            n += 1 + count;
                        }
                    }
                    else {
                        last = current;
                        current = in.read();
                    }
                }
                out.write(0);
                fileChooser.setSelectedFile(new File(fileName + "-rle.bin"));
                fileChooser.setFileFilter(
                    new FileNameExtensionFilter("Binary Files", "bin")
                );
                fileChooser.setMultiSelectionEnabled(false);
                if (fileChooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
                    File outputFile = fileChooser.getSelectedFile();
                    try {
                        FileOutputStream fileOutputStream = new FileOutputStream(outputFile);
                        fileOutputStream.write(out.toByteArray());
                        fileOutputStream.close();
                    } catch (Exception e) {
                        JOptionPane.showMessageDialog(null, e.getMessage(), APPLICATION_NAME, JOptionPane.ERROR_MESSAGE);
                        e.printStackTrace();
                    }
                }
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, file.getName() + ": " + e.getMessage(), APPLICATION_NAME, JOptionPane.ERROR_MESSAGE);
                e.printStackTrace();
            }
        }
    }

}
 

And here's a TMS9900 assembly snippet to decode this format:

*      RLE decode from VDP RAM
       LI   R0,>2000                   ; VDP address of RLE encoded data
       BL   @VRAD                      ; Setup read address
       LI   R1,MAP                     ; Destination in CPU RAM
RLEDC1 MOVB @VDPRD,R2                  ; Get count byte
       JEQ  RLEDC5                     ; If zero we're done
       JLT  RLEDC3                     ; If negative it's a run
*      Different bytes
       SRL  R2,8                       ; Shift to LSB
RLEDC2 MOVB @VDPRD,*R1+                ; Get byte and write to destination
       DEC  R2                         ; Count down
       JNE  RLEDC2                     ; Loop
       JMP  RLEDC1                     ; Done with this sequence
*      Identical bytes
RLEDC3 ANDI R2,>7F00                   ; Reset high bit
       SRL  R2,8                       ; Shift to LSB
       MOVB @VDPRD,R0                  ; Get byte that should be repeated
RLEDC4 MOVB R0,*R1+                    ; Write byte to destination
       DEC  R2                         ; Count down
       JNE  RLEDC4                     ; Loop
       JMP  RLEDC1                     ; Done with this sequence
*      Return
RLEDC5 B    *R11                     

If you want to decode from CPU RAM instead that should be easy to change.

RLE.jar.zip

  • Like 1
Link to comment
Share on other sites

Now I have been looking for a LZ77 decoder. I found this in the Colecovision forum, and I'm considering porting the Z80 code to TMS9900. But what I really need is a "sliding window" format that can be used for streaming where you don't have to keep the entire decoded file in memory.

  • Like 2
Link to comment
Share on other sites

Now I have been looking for a LZ77 decoder. I found this in the Colecovision forum, and I'm considering porting the Z80 code to TMS9900. But what I really need is a "sliding window" format that can be used for streaming where you don't have to keep the entire decoded file in memory.

 

Ah, now here is something to sink your teeth into, thank you.

 

I need to be able to decode a stream which can repeat already-decoded frames without maintaining a lot in memory. I am playing with a few ideas with everything on paper right now in pseudo-code.

Link to comment
Share on other sites

  • 2 months later...

There is a resource somewhere on this forum that is a thread in which matthew180 describes his approach to assembly programming for games. Game loops, bypassing internal VDP routines, sub-routine call approach, etc... I cannot seem to find it anymore...

 

do threads expire?

does anyone know where it is? If so please reply with the link.

can it be pinned in post #1 under assembly resources?

 

-M@

Link to comment
Share on other sites

There is a resource somewhere on this forum that is a thread in which matthew180 describes his approach to assembly programming for games. Game loops, bypassing internal VDP routines, sub-routine call approach, etc... I cannot seem to find it anymore...

 

do threads expire?

does anyone know where it is? If so please reply with the link.

can it be pinned in post #1 under assembly resources?

 

-M@

 

http://atariage.com/forums/topic/162941-assembly-on-the-994a

  • Like 2
Link to comment
Share on other sites

Nice! Thank you... when I search matthew180's content, I get this message: (Search limited from 17-September 15)

 

Clearly that is why I could not find

 

http://atariage.com/forums/topic/162941-assembly-on-the-994a

 

Linking in the top of this thread would be really good. This is right up there, to me, with the Bruce Harrison - art of assembly work. And an important contrasting approach as well.

 

-M@

Link to comment
Share on other sites

  • 2 weeks later...

Fred Kaal has updated his ROM only Editor assembler cartridge suite. In addition to the recent 80/40 column changes he has added some editor key-presses for convenient line editing including an undo.

Also, there is a debugger included!

 

http://www.ti99-geek.nl/Modules/edas4/edas4.html

 

-M@

  • Like 6
Link to comment
Share on other sites

  • 2 weeks later...

Today I found a book with information about the TMS9900 family. It is recently uploaded on bitsavers' server (second July 2016).

I think that this book is not available on the whtech server, so I will leave a link to that resource:

MP702_TMS9900_Family_System_Development_Manual_1977.pdf

 

(It would be great if some of the Sysops can upload it on whtech.)

  • Like 1
Link to comment
Share on other sites

Fred Kaal has updated his ROM only Editor assembler cartridge suite. In addition to the recent 80/40 column changes he has added some editor key-presses for convenient line editing including an undo.

Also, there is a debugger included!

 

http://www.ti99-geek.nl/Modules/edas4/edas4.html

 

-M@

 

I wonder if these carts will be made available for sale on Arcadeshopper.com...

Link to comment
Share on other sites

Fred makes images available for a variety of hardware vehicles. This particular bundle EA-IV is only 32k, and works nicely from the Flashrom99.

 

Yes, thank you again for converting for FR99 use! It's awesome to be able to QUICKLY edit things like the FAVS file for Stuart's Internet browser. 80 columns ROCKS!

 

Other people love it too... << LOOK HERE >> it's been downloaded 50 times already!! :-o :thumbsup:

Link to comment
Share on other sites

 

Yes, thank you again for converting for FR99 use! It's awesome to be able to QUICKLY edit things like the FAVS file for Stuart's Internet browser. 80 columns ROCKS!

 

Other people love it too... << LOOK HERE >> it's been downloaded 50 times already!! :-o :thumbsup:

 

The one I converted was Fred's EA-II, with my hack of his 80 column EDIT 1... Fred has evolved things himself, and published EA-IV that has his 80 column support and improved editor keyboard shortcuts... I guess I'll fetch that and post it to the FR99 thread. Fred's changes since my hack are pretty cool.

 

-M@

Link to comment
Share on other sites

  • 1 month later...

Why does the data on RXB in TI Development Resources say 2012?

 

RXB 2015 has been out since Nov 2014?

 

I am working on RXB 2016 right now?

 

Even Classic99 has RXB 2015E installed in it for almost 6 months or more?

 

Hi Rich,

 

sorry about that. I've been neglecting the Development Resources thread for quite some time. Actually I requested a few folks if they want to take over this thread, but no interest so far.

So I guess, it's sticking to me. That being said, If I do keep doing this thread the plan for the future is to update it 2x to 3x a year and to simplify it.

Believe it or not, but there's quite an amount of BBcode behind, and that makes updating quite a task.

 

Would appreciate if people ping me with the details on what they want to have added, as I don't have the overview of all new things that happened lately.

I'll update the thread this weekend. Regarding RXB, can you point me to the relevant posts, so I can include it. Thanks.

 

Cheers

Filip

  • Like 3
Link to comment
Share on other sites

Thread updated:

 

1. Split sections into Software and Manuals/Tutorials.

Example: Renamed "Assembly Language" to "Assembly Language - Software" and added "Assembly Language - Manuals"

 

2. Some hyperlinks fixed and added

JS99er

* Member name adjusted

* Hyperlink to Github source code repository added

 

asm990

* Hyperlink was broken. Fixed that, new hyperlink added.

 

RXB

Removed link to RXB2012 on retroclouds site.

Waiting for link where latest version of RXB can be found. It probably is in some thread, but which one?

Would make sense to move this to GitHub ?

 

fbForth

Removed fbFort manual link to retroclouds page. Get latest version of fbForth in the thread instead.

 

3. Removed link to dropbox archive. The archive is no longer there, so.....

  • Like 3
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...