Pop Up Tools - Write-Hand-Man

This collection of tools — similar to the Borland tool Sidekick — is desigend as a RSX. After installation of Write-Hand-Man it will be activated by the control key [CTRL] ]. Now the following commands and tools are available:

ANotepadThis editor allows the handling of memorandums
BPhonebookThis editor allows the handling of phone numbers
CCalendarA calendar valid from January 1978 to December 2000
DDirPrint a disk directory
EViewDisplay a text file
FCalculateA calculator for the four basic calculating operations
GKeysA macro editor for keyboard assignment
RRestoreRestores keyboard assignment
OOtherSelect an extension. The following add-on are available:
DiaryAdministration of a diary up to two weeks
HexA calculator for integer numbers
ASCIIDisplay possible 256 characters
BigphoneThis editor allows the handling of phone numbers more than Phonebook does
FkeysAn editor to assign the function keys [f1] up to [f8]

Modules for Write-Hand-Man can be programmed easily. Write-Hand-Man supports .REL files only with a limited length of hexadecimal 0900 bytes.

Here the files:

[Download] Binary files containing the required .COM, REL. and DAT. files
Main fileThe program activates or deactivates the RSX
RSX This RSX must be combined with the main file
The applications
Notepad The editor for memorandums
Phonebook Editor for phone numbers
Calendar A calendar from January 1978 to December 2000
Dir Print a disk directory
View Display a text file
Calculate The calculator for the four basic calculating operations
Keys The macro editor for keyboard assignment
  Restore Restores keyboard assignment from file KEYS.DAT

Diary Administration of a diary of up to two weeks
Hex A calculator for integer numbers
ASCII Display possible 256 characters
Bigphone The editor allows the handling of phone numbers more than Phonebook does. (It is the same source as Phonebook but the value big is set to 1)
Fkeys Editor to assign the function keys [f1] up to [f8]

Hints for user written extensions

The keyboard macro and memory areas of WHM are available to all WHM applications. The addresses of these areas are stored in the first page (address 00 to 100h) of the application.

BASE+016h contains the address of the keyboard macro trigger character. BASE+018h contains the address of the keyboard macro table. 16 characters are reserved for each keyboard macro. BASE+01Ah contains the address of a 48-byte memory area that is not modified by WHM. Applications may communicate with each other using this area. The calculator stores its saved value in the first 8 bytes of this area.

WHM provides its application programs with a duplicate of the CP/M environment. All BDOS calls are allowed except calls that cause major modifications in the disc system (SYSTEM RESET, DISK RESET).

All addresses used by the application must be relative to the location in memory that WHM reserves for its programs. Thus to call the BDOS, the code is not CALL 5, but CALL BASE+5, where BASE is the origin of the program. BASE+05Ch has an FCB filled in for the file name.DAT where name is the name of the application. The DMA address is set to BASE+080h. The program is called at location CALL BASE+0100h. BASE+0 contains a JMP instruction to the return point of WHM. BASE+5 contains a JMP to the BDOS.

There are two additional JMP instructions in the first few bytes of the application memory. BASE+010h contains a JMP to a routine that will home the cursor, so a CALL BASE+010h causes a cursor home. Finally, BASE+013h contains a JMP to a chaining routine. If an application wishes to chain control to another application it puts the name of the new application in location BASE+05Dh (the file name portion of the default FCB, with trailing blanks and issues a JMP BASE+013h. The new application will be loaded and CALLed with the environment set up as described above.

Any assembler that produces Microsoft's .REL files can be used to assemble the applications such as Digital Research's RMAC 8080 macro assembler. WHM has a small loader built in which understands a subset of the LINK-80 facilities. To bear in mind: Some of the source code of Notepad is includes here as an example of how to code your application:

	org	0		; base of program
base	equ	$		; relative BASE for assembler
bdos	equ	base+5		; BDOS call (R)
home	equ	base+010h	; special HOME routine (R)
chain	equ	base+013h	; chaining return (R)
fcb	equ	base+05ch	; default FCB (R)
fcbcr	equ	fcb+32
fcbr0	equ	fcb+33
fcbr2	equ	fcb+35
fcbs2	equ	fcb+14
bdos	equ	base+5
buf	equ	base+080h	; default BUFFER (R)
open	equ	15
close	equ	16
ranread equ	33
ranwrit equ	34
pstring equ	9
setdma	equ	26
conio	equ	6
;
	org	0100h		; standard entry point
	jmp	go		; JUMP to start of the
				; code
				; this program uses the 256
				; bytes starting at BUF
				; (BASE+080h) as an I/O
				; buffer
	org	0180h		; end of second half of
				; buffer
go:
	xra	a		; first instruction of
				; program
	sta	fcbs2		; the stack is a good one
	sta	fcbr2		; clear FCB fields
	lxi	d,fcb
	mvi	c,open		; open NOTEBOOK.DAT file
	call	bdos
	inr	a
	jz	base		; return (just like
				; traditional ;JMP to 0,
				; warm boot)
	lxi	h,0		; continue with code