Re: [NTLK] Writing new screen driver for NOS 2.1

From: Jim Witte (jswitte_at_bloomington.in.us)
Date: Sun Aug 22 2004 - 21:40:29 PDT


> I'm interested in knowing if a custom driver can be written for a new
> built-in Newton screen.
> Most of the developer tools/DDKs that I've looked at so far are
> dedicated to writing PCMCIA
> drivers or Ethernet drivers. In particular I'm curious if the
> Messagepad 2100 could drive a
> color screen (I know NOS 2.1 supports 8-bit color).

<cracks knuckles> Someone else might have already mentioned all this,
or be working on it.. The screen is handled by an OS class (C++)
called a TScreenDriver. It implementes the following functions:

AutoAdjustFeatures__13TScreenDriverFv 0x0038861c
Blit__13TScreenDriverFP8PixelMapP4RectT2l 0x003885f8
Delete__13TScreenDriverFv 0x003885a0
DoubleBlit__13TScreenDriverFP8PixelMapT1P4RectT3l 0x00388628
EnterIdleMode__13TScreenDriverFv 0x00388634
ExitIdleMode__13TScreenDriverFv 0x00388640
GetFeature__13TScreenDriverFl 0x00388604
GetScreenInfo__13TScreenDriverFP10ScreenInfo 0x003885c8
PowerInit__13TScreenDriverFv 0x003885d4
PowerOff__13TScreenDriverFv 0x003885ec
PowerOn__13TScreenDriverFv 0x003885e0
ScreenSetup__13TScreenDriverFv 0x003885bc
SetFeature__13TScreenDriverFlT1 0x00388610

   The hex addresses are the addresses in the ROM implementation of
TScreenDriver, which is a stub. The actual driver that drives the
screen itself is just an interface class, and there is an
implementation class in the 'high memory' image (a ROM Extension),
called TMainDisplayDriver. It has been disassembled, but doesn't say
much useful (It sets some things on the General Purpose IO (GPIO) pins,
and reads stuff out of that h contiguous memory block at $E0000000 used
for screen storage (as illustrated in Brian Parker's Bowels note), and
pushes it off to the LCD controller. There is another class in the ROM
called TReservedContiguousMemory, which I believe is used to allocate
this screen buffer.

   The EZVGA driver register's it's own TScreenDriver class
(TExternalVideoDriver) as well as it's own TCardHandler
(TEZShowHandlerthat the $E0000000 buffer, maybe process it some, and then passes it
to the TEZShowHandler class, which passes the data out tot he EZVGA
card. I don't know because I've never disassembled the EZShow package,
nor do I have a card to follow the code in Hammer.. There is a routine
in the ROM called SetVideoCardHandler which takes a TCardHandler class
pointer as a parameter. The Newton can handle up to two video drivers
at once.

   I *assume* that there may at one time have been a "Screen Driver DDK"
somewhere, considering that the SetVideoCardHandler routine exists
(although it is not difficult at all). There are apparently 6 more
DDKs that never made it out of Apple.. One is the Diagnostic DDK
(mentioned in the 'n2 documents' that have surfaced)

Jim

-- 
This is the NewtonTalk list - http://www.newtontalk.net/ for all inquiries
Official Newton FAQ: http://www.chuma.org/newton/faq/
WikiWikiNewt for all kinds of articles: http://tools.unna.org/wikiwikinewt/


This archive was generated by hypermail 2.1.5 : Sun Aug 22 2004 - 22:30:01 PDT