Toshiba T1000

Post Reply
User avatar
JohnElliott
Posts: 113
Joined: Sun 31 Jan, 2016 7:29 pm

Toshiba T1000

Post by JohnElliott »

I'm currently working on the Toshiba T1000, the T3100e's little brother. This has a number of unique features, and I'd welcome some advice regarding a couple:

i) The T1000 has an optional 768k memory expansion, which is battery-backed and can be configured as a persistent RAMdisk. The question is how I should attempt to implement this in PCEM -- as a very small hard drive with a fixed format, or as a very big NVRAM?

ii) I'm experiencing lockups in screen repainting. Looking in the debugger, there appears to be a deadlock: the video blit thread is waiting for the wake_blit_thread event:

Code: Select all

thread_wait_event(blit_data.wake_blit_thread, -1);
while the main thread is waiting for the buffer_not_in_use event:

Code: Select all

thread_wait_event(blit_data.buffer_not_in_use, 1);
It only seems to happen when using my T1000 video output code, and I'm not sure why since it's pretty much the same as the T3100e video code, which doesn't lock up as far as I can see.

I've attached the T1000 patch as it stands, in case anyone wants to look over my code and point out what I'm doing wrong. This is definitely work in progress and not ready to merge yet, even if the project wasn't currently in feature freeze.
Attachments
t1000.patch
(53.32 KiB) Downloaded 386 times
Fenix77
Posts: 80
Joined: Fri 01 Sep, 2017 11:59 am

Re: Toshiba T1000

Post by Fenix77 »

Hello.

The Toshiba T1000 had 512kb of RAM as basic configuration and the 768kb expansion fills the remaining 128kb of conventional RAM and adds another 640kb.
That 640 kb can be used as LIM EMS 3.2 or Hard-RAM. In the original BIOS the user can choose the amount of memory needed for one or the two aforementioned options.
Even the EMS port can be chosen.

I found some info in minuszerodegree.

Unfortunately I'm not a programmer and i cannot help you with the bugs, may be Sarah can.

Thanks for your effort, it is a very interesting ptoject
User avatar
SarahWalker
Site Admin
Posts: 2054
Joined: Thu 24 Apr, 2014 4:18 pm

Re: Toshiba T1000

Post by SarahWalker »

JohnElliott wrote:i) The T1000 has an optional 768k memory expansion, which is battery-backed and can be configured as a persistent RAMdisk. The question is how I should attempt to implement this in PCEM -- as a very small hard drive with a fixed format, or as a very big NVRAM?
I'd suggest implementing this as an NVRAM - I'm guessing the sector-based interface for the hard drive code probably won't make much sense here.

I'll have a look to see if I can determine why you're getting deadlocks.
User avatar
JohnElliott
Posts: 113
Joined: Sun 31 Jan, 2016 7:29 pm

Re: Toshiba T1000

Post by JohnElliott »

Thanks! Let me know if you need the ROMs.
User avatar
JohnElliott
Posts: 113
Joined: Sun 31 Jan, 2016 7:29 pm

Re: Toshiba T1000

Post by JohnElliott »

I haven't got any further with the video lockups, but I think I've got the rest of the T1000 functionality nailed down now, so here's an updated patch.
Attachments
t1000_v2.patch
(55.33 KiB) Downloaded 379 times
User avatar
JohnElliott
Posts: 113
Joined: Sun 31 Jan, 2016 7:29 pm

Re: Toshiba T1000

Post by JohnElliott »

This patch has the same bug as the T3100e emulation (writing off the end of the normcols / blinkcols array) and needs the same fix.

Code: Select all

--- ../../387ac.t1k/src/vid_t1000.c     2017-11-18 21:52:37.408574610 +0000
+++ vid_t1000.c 2017-12-17 14:35:45.255963829 +0000
@@ -562,15 +562,11 @@
                {
                        blinkcols[n][0] = normcols[n][0] = blue;
                        blinkcols[n][1] = normcols[n][1] = grey;
-                       blinkcols[n+128][0] = normcols[n+128][0] = blue;
-                       blinkcols[n+128][1] = normcols[n+128][1] = grey;
                }
                else                            /* Normal */
                {
                        blinkcols[n][0] = normcols[n][0] = grey;
                        blinkcols[n][1] = normcols[n][1] = blue;
-                       blinkcols[n+128][0] = normcols[n+128][0] = grey;
-                       blinkcols[n+128][1] = normcols[n+128][1] = blue;
                }
                if (t1000->attrmap & 8) boldcols[n] = 1;        /* Bold */
        }
        
User avatar
SarahWalker
Site Admin
Posts: 2054
Joined: Thu 24 Apr, 2014 4:18 pm

Re: Toshiba T1000

Post by SarahWalker »

I'm not seeing any lockups here. I made some locking changes very late in v13 development (11th December), have you reproduced the lockups since then?
User avatar
JohnElliott
Posts: 113
Joined: Sun 31 Jan, 2016 7:29 pm

Re: Toshiba T1000

Post by JohnElliott »

I've applied the current patch to revision 8329a0b and it's run for over an hour without any lockups, so it looks like your changes fixed it.
User avatar
SarahWalker
Site Admin
Posts: 2054
Joined: Thu 24 Apr, 2014 4:18 pm

Re: Toshiba T1000

Post by SarahWalker »

Committed at rev 999.
Post Reply