Dec 052017
Magic v1.23 - TSR to toggle normal/magnification view of text and/or graphics.
File MAGIC123.ZIP from The Programmer’s Corner in
Category Display Utilities
Magic v1.23 – TSR to toggle normal/magnification view of text and/or graphics.
File Name File Size Zip Size Zip Type
API.DOC 4397 1759 deflated
ASKYN.EXE 1362 773 deflated
CALLBBS.EXE 10548 7367 deflated
DEMO.BAT 232 150 deflated
DRAGFIX.COM 276 251 deflated
INSTALL.EXE 16314 9580 deflated
MAG-REG.EXE 10160 7135 deflated
MAG123.VER 2142 909 deflated
MAGHOOK.DLL 14244 5003 deflated
MAGIC.DOC 34749 10458 deflated
MAGIC.EXE 26470 18212 deflated
MAGIC.FNT 49152 6150 deflated
MAGIC2.EXE 20712 14272 deflated
MM.COM 5318 3602 deflated
PRICE.DOC 517 272 deflated
README.EXE 6822 4921 deflated
VREG.EXE 13210 8702 deflated
WIN2MAG.EXE 5088 2170 deflated
WINMAGIC.EXE 18975 6231 deflated

Download File MAGIC123.ZIP Here

Contents of the API.DOC file


This interface allows external programs to control MAGIC TSR.
The default interrupt number is changable via command line switch
/Inn, e.g. /I64 would set interrupt 64 hex.

In order for caller to identify whether MAGIC holds the interrupt 49h,
there is a 6 byte ID stored immediately preceeding the interrupt service.
The ID is: " MAGic" (case as shown, quotes are not part of the string).
For MAGic Deluxe the ID string is "xMAGic". The ID string will not wrap
around the segment boundaries, thus the offset of the interrupt vector
must be at least 6.

ID can be used to identify MAGIC and also to find which interrupt
vector is used - application can examine 256 interrupt vectors
and check 6 bytes preceeding the service routine. As an additional
check, in the same segment at offset 0 there will be standard
CodeRunneR ID: RT followed by 4 byte TSR ID: VMAG (for VGA MAGIC).


1. Caller's registers AX,BX,CX,DX are modified.
Registers DS,ES,SI,DI,BP,SS,SP and Flags are preserved.

2. Function number (1,2,..) is passed in AX register. Any other
arguments are passed in BX,CX,DX.

4. Operation status is returned in AX. Any other return values
are passed in BX,CX,DX.

5. The following return status values (AX) are common to all

-1TSR was busy, try same call later
-2Invalid function number
-3Function works only in magnified mode
-4 Function works only in unmagnified mode
-5 Function works only for MAGic Deluxe

6. Horizontal (X) and vertical (Y) coordinates or sizes are passed
(or returned) in registers DX for X and BX for Y.

7. The coordinates/sizes are measured in the same units as
those used by VGA hardware:

a) In graphics modes

X: 8 pixel units
Y: 1 pixel units

b) Text modes

X: character columns
Y: character lines

All coordinates are 0 based, sizes are 1 based.

8. Interrupts are enabled during command execution and any other
MAGIC operations are locked out.


--01-- Magnify ON

EXIT: AX = 0Cannot magnify in current video state
= 2Magnified in text mode
= 3Magnified in graphics mode

--02-- Magnify OFF

EXIT:AX = *Same as function 1

--03-- Capture screen point (e.g. mouse cursor)

DX = X
BX = Y


Specified X,Y point is made part of magnified window. No window
movement is done is the point is already within the window.

--04-- Reposition magnified window

DX = X of upper left corner
BX = Y of upper left corner


Sets upper left corner of the magnified window to requested
coordinates. If the coordinates are outside of valid screen
boundaries, the nearest position is set.

--05-- Get position of magnified window

EXIT:AX = 0Position in DX,BX is valid only if AX is 0.
DX = X
BX = Y

--06-- Get full screen size (valid only in magnified mode)

EXIT:AX = 0Sizes in DX,BX is valid only if AX is 0.
DX = Horizontal size
BX = Vertical size

--07-- Get magnified window size

EXIT:AX = 0Sizes in BX,DX is valid only if AX is 0.
DX = Horizontal size
BX = Vertical size

The sizes returned are always smaller or equal than those
of full screen (equal only in modes where no magnification
is possible).

--08-- Set text mode magnification size

BX = Scaling factor 1,2,4,6,8,9
Values 4,6,8,9 are available only for MAGic Deluxe

EXIT:AX = 0 Ok
= -4 MAGic is in magnified state, can't set size
= -5 Requested size works only for MAGic Deluxe

This function may be called only in unmagnified state to set
the size for subsequent magnify-on call (func AX=1).

Regular MAGic supports only BX=1 and 2 (magnifications 1.4 and
2 times). MAGic Deluxe supports additional values BX=4,6,8,9
(magnifications 4,6,8,12 times).

 December 5, 2017  Add comments

Leave a Reply