Back to home page

DOS ain't dead

Forum index page

Log in | Register

Back to the board
Thread view  Mix view  Order
rr

Homepage E-mail

Berlin, Germany,
14.03.2021, 21:42
 

NOKEYB Release 1 (Announce)

Hi!

I recently acquired two Highscreen Handy Organizer palmtop PCs and wondered, whether and how it would be possible to free some precious memory by replacing KEYB.COM. But on the Highscreen Handy Organizer, files C:\AUTOEXEC.BAT and D:\DOS\KEYB.COM are in read-only memory (ROM), which prevents modification.

I took my 2002 FIX8X14 device driver and created NOKEYB. It works by intercepting DOS function 4Bh 'load and execute'.

For those w/o a Highscreen Handy Organizer (a.k.a. Tidalwave PS-1000 or Zeos Pocket PC) there is probably little to no use, but maybe you can use the source code (for NASM) as another skeleton for your own drivers.

You can find NOKEYB at: https://www.bttr-software.de/products/nokeyb/

---
Forum admin

RayeR

Homepage

CZ,
15.03.2021, 23:05
(edited by RayeR, 15.03.2021, 23:17)

@ rr

NOKEYB Release 1

Nice toy, similar to my HP 200 LX but making RO config files is horrible idea. If I remember well HP has it on internal RAMDISK that is restored by default when batteries discharged and powered again. So I could disable automatic start of built in apps and I can launch e.g. DosNavigator instead :)
So good job you overcome that stupid obstacle. BTW does it have real (OTP)ROM or is it flashable? Maybe you could do a permanent mod by reflash, otherwise only by changing ROM chip by flashROM...

BTW I wondered why you not tried SHELL to point a different autoexec.bat but seems to be valid only for DOS 6.0 and newer (you had a luck that config.sys is editable).
The DOS 6.0 COMMAND.COM option /K= sets the name of the AUTOEXEC.BAT file. COMMAND.COM /K=mybat.bat is a handy way to set up a DOS session from Windows.
Maybe you could try make your device driver to patch a specific memory location with "autoexec.bat" string, of course in case that DOS kernel is loaded to RAM and not executed directly from ROM.

---
DOS gives me freedom to unlimited HW access.

rr

Homepage E-mail

Berlin, Germany,
16.03.2021, 22:41

@ RayeR

NOKEYB Release 1

> So good job you overcome that stupid obstacle. BTW does it have real
> (OTP)ROM or is it flashable? Maybe you could do a permanent mod by reflash,
> otherwise only by changing ROM chip by flashROM...

I have no idea. I didn't find tech specs at that level and haven't opened the housing of my Organizers so far.

> BTW I wondered why you not tried SHELL to point a different autoexec.bat
> but seems to be valid only for DOS 6.0 and newer (you had a luck that
> config.sys is editable).

There's a R/O C:\CONFIG.SYS and a R/W E:\CONFIG.SYS on a RAM disk.

Processing order on the Organizer is:
1) C:\config.sys,
2) E:\config.sys,
3) C:\autoexec.bat,
4) A:\autoexec.bat, (by C:\autoexec.bat)
5) E:\autoexec.bat. (by C:\autoexec.bat)

I had partial success now: I transferred COMMAND.COM from a German MS-DOS 5 installation disk to E:\. Then I added a line "SHELL=E:\COMMAND.COM E:\ /D /P" to E:\CONFIG.SYS. "/D" is an undocumented option in DOS 5, as I learned today. It skips processing C:\AUTOEXEC.BAT. Unfortunately that means, (A:|E:)\AUTOEXEC.BAT is also skipped. So on each boot you have to start E:\AUTOEXEC.BAT manually. Of course, you can rename E:\AUTOEXEC.BAT to something shorter, e.g., GO.BAT.

According to MEM maximum memory for executable program is 1,888 byte less than with my NOKEYB driver and built-in COMMAND.COM. COMMAND.COM from my installation disk takes more memory (4,832+256 bytes vs. 2,752+256 bytes). The ROM edition is a special build probably. And don't forget the 50K disk space on E:\ for COMMAND.COM...

> The DOS 6.0 COMMAND.COM option /K= sets the name of the AUTOEXEC.BAT
> file. COMMAND.COM /K=mybat.bat is a handy way to set up a DOS session from
> Windows.


I tried "/C" instead with DOS 5 COMMAND.COM and the Organizer is stuck in a boot loop now. :-| I have to restart from scratch. ;-) :-(

> Maybe you could try make your device driver to patch a specific memory
> location with "autoexec.bat" string, of course in case that DOS kernel is
> loaded to RAM and not executed directly from ROM.

"ver/r" says "DOS is in ROM".

My idea is a second device driver to kill fopen() for C:\AUTOEXEC.BAT. Or even better: redirect fopen() for C:\AUTOEXEC.BAT to E:\AUTOEXEC.BAT. This will render NOKEYB useless, but it's okay.

---
Forum admin

rr

Homepage E-mail

Berlin, Germany,
17.03.2021, 22:37

@ rr

NOKEYB Release 1

> > The DOS 6.0 COMMAND.COM option /K= sets the name of the AUTOEXEC.BAT
> > file. COMMAND.COM /K=mybat.bat is a handy way to set up a DOS session
> from
> > Windows.

>
> I tried "/C" instead with DOS 5 COMMAND.COM and the Organizer is stuck in a
> boot loop now. :-| I have to restart from scratch. ;-) :-(

Today I took COMMAND.COM from a German MS-DOS 6.22 and patched out the DOS version check first. Then I added "SHELL=E:\COMMAND.COM E:\ /P /K E:\AUTOEXEC.BAT" to E:\CONFIG.SYS. That worked fine and gives me 2K less available memory than with my NOKEYB solution. Of course, you need to have a valid MS-DOS 6.22 license...

So I tried FreeDOS FreeCOM COMMANDW.COM from com084b7-xmsswap.zip. Works with "SHELL=E:\COMMAND.COM E:\ /E:512 /P=E:\AUTOEXEC.BAT" in E:\CONFIG.SYS, but leaves me with ~65K less available memory. :-(

Without "/E:512" AUTOEXEC.BAT failed to set PROMPT (just the standard '$P$G') or PATH environment vars, because of insufficient space in environment. Wtf...

---
Forum admin

RayeR

Homepage

CZ,
19.03.2021, 04:49

@ rr

NOKEYB Release 1

This seems to be good solution. So SHELL in config even supports loading of alternate autoexec, resp. /K E:\AUTOEXEC.BAT is just passed to command.com that supports it.

---
DOS gives me freedom to unlimited HW access.

rr

Homepage E-mail

Berlin, Germany,
30.05.2021, 22:55

@ rr

NOKEYB Release 2

On 30 May 2021 I released a new version of NOKEYB for the Vobis Highscreen Handy Organizer.

Changes:
With the help of C. Masloch:
 -  Always report success, when `something' (= DOS) tries to run
    `d:\dos\KEYB.COM' for the first time
 -  Reduced RAM footprint from 96 to 80 bytes
 -  Reduced file size from 205 to 177 bytes

Own work:
 -  Made driver `self-disabling'
 -  Changed driver name to `NOKEYB2$' to reflect driver's release
    number and be closer to the DOS specs
 -  Rewrote most of the documentation


You can find NOKEYB at: https://www.bttr-software.de/products/nokeyb/

---
Forum admin

rr

Homepage E-mail

Berlin, Germany,
17.06.2021, 23:23

@ rr

NOKEYB Release 3

On 17 June 2021 I released a new version of NOKEYB for the Vobis Highscreen Handy Organizer.

Changes:
(File size: 206 bytes. RAM footprint: 80 bytes.)

 -  Improved robustness of `d:\dos\KEYB.COM' detection
 -  Added license name to driver banner message to be clear

With the help of C. Masloch:

 -  Fixed a bug overwriting wrong memory location in strategy
    routine

Thanks go to Frank Steinberg for testing!


You can find NOKEYB at: https://www.bttr-software.de/products/nokeyb/

---
Forum admin

rr

Homepage E-mail

Berlin, Germany,
18.06.2021, 18:44

@ rr

NOKEYB Release 3

> On 17 June 2021 I released a new version of NOKEYB for the Vobis Highscreen
> Handy Organizer.

I uploaded a "refresh" of Release 3, because it had one small error in one of the source code comments.

---
Forum admin

rr

Homepage E-mail

Berlin, Germany,
18.06.2021, 23:29
(edited by rr, 19.06.2021, 16:19)

@ rr

NOKEYB Release 3

> I uploaded a "refresh" of Release 3, because it had one small error
> in one of the source code comments.

Another tiny refresh. (Two incomplete filenames in the docs.) :crying:

---
Forum admin

Back to the board
Thread view  Mix view  Order
22632 Postings in 2109 Threads, 402 registered users, 318 users online (0 registered, 318 guests)
DOS ain't dead | Admin contact
RSS Feed
powered by my little forum